userlinker_dal.go 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. package dal
  2. import (
  3. "errors"
  4. "time"
  5. "xiaoniaokuaiyan.com/xiaoniao/entity"
  6. "xiaoniaokuaiyan.com/xiaoniao/util"
  7. )
  8. type UserLinker struct{}
  9. func (ul *UserLinker) Save(linker *entity.UserLinker) (*entity.UserLinker, error) {
  10. db := util.GetWriteSqlDB()
  11. linker.CreatedAt = time.Now().Format("2006-01-02 15:04:05")
  12. strSql, kvm := util.GenerateInsertSqlFromStruct("t_custom_linker", linker)
  13. result, err := db.NamedExec(strSql, kvm)
  14. if err != nil {
  15. return nil, err
  16. }
  17. ar, _ := result.RowsAffected()
  18. if ar > 0 && linker.IsDefault == 1 {
  19. _, err = db.Exec("update t_custom_linker set is_default = 0 where custom_id = ? and id <> ?")
  20. if err != nil {
  21. return nil, err
  22. }
  23. }
  24. aid, _ := result.LastInsertId()
  25. linker.Id = int(aid)
  26. return linker, nil
  27. }
  28. func (ul *UserLinker) List(customId int, isDefault bool) ([]entity.UserLinkerDB, error) {
  29. db := util.GetSqlDB()
  30. var linkerList = []entity.UserLinkerDB{}
  31. strSql := "select * from t_custom_linker where custom_id = ?"
  32. if isDefault {
  33. strSql += " order by is_default desc limit 1"
  34. }
  35. err := db.Select(&linkerList, strSql, customId)
  36. if err != nil {
  37. return nil, err
  38. }
  39. return linkerList, nil
  40. }
  41. func (ul *UserLinker) Get(id, cid int) (*entity.UserLinkerDB, error) {
  42. db := util.GetSqlDB()
  43. var userLinker = &entity.UserLinkerDB{}
  44. err := db.Get(userLinker, "select * from t_custom_linker where id = ? and custom_id = ?", id, cid)
  45. if err != nil {
  46. return nil, err
  47. }
  48. return userLinker, nil
  49. }
  50. func (ul *UserLinker) Update(linker *entity.UserLinker) (*entity.UserLinker, error) {
  51. db := util.GetWriteSqlDB()
  52. if linker.County != "" {
  53. var countyId int
  54. db.Get(&countyId, "select id from t_county where name = ?;", linker.County)
  55. if countyId <= 0 {
  56. return nil, errors.New("can not find county: " + linker.County)
  57. }
  58. //linker.CountyId = countyId
  59. }
  60. strSql, kvm := util.GenerateUpdateSqlFromStruct("t_custom_linker", linker, " where id = :id")
  61. _, err := db.NamedExec(strSql, kvm)
  62. if err != nil {
  63. return nil, err
  64. }
  65. /*ra, _ := result.RowsAffected()
  66. if ra <= 0 {
  67. return nil, errors.New("update failed")
  68. }*/
  69. if linker.IsDefault == 1 {
  70. _, err = db.Exec("update t_custom_linker set is_default = 0 where custom_id = ? and id <> ?", linker.CustomId, linker.Id)
  71. if err != nil {
  72. return nil, err
  73. }
  74. }
  75. return linker, nil
  76. }
  77. func (ul *UserLinker) Remove(linker *entity.UserLinker) (interface{}, error) {
  78. db := util.GetWriteSqlDB()
  79. strSql := "delete from t_custom_linker where id = ? and custom_id = ?"
  80. result, err := db.Exec(strSql, linker.Id, linker.CustomId)
  81. if err != nil {
  82. return nil, err
  83. }
  84. ra, _ := result.RowsAffected()
  85. if ra <= 0 {
  86. return nil, errors.New("remove failed(can not find record)")
  87. }
  88. return true, nil
  89. }
  90. var DefaultUserLinkerDal = &UserLinker{}