user_dal.go 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. package dal
  2. import (
  3. "database/sql"
  4. "errors"
  5. "fmt"
  6. "xiaoniaokuaiyan.com/xiaoniao/entity"
  7. "xiaoniaokuaiyan.com/xiaoniao/util"
  8. )
  9. type User struct {
  10. }
  11. func (u *User) Get(account string) (*entity.UserDB, error) {
  12. db := util.GetSqlDB()
  13. strSql := "select id, mobile, password, password_salt, extra, account_type,avatar from t_custom where mobile = ? limit 1"
  14. var user entity.UserDB
  15. err := db.Get(&user, strSql, account)
  16. if err != nil {
  17. if err == sql.ErrNoRows {
  18. return nil, DBRECORD_NOT_EXISTS_ERROR
  19. }
  20. return nil, err
  21. }
  22. return &user, nil
  23. }
  24. func (u *User) Save(params map[string]interface{}) (interface{}, error) {
  25. db := util.GetWriteSqlDB()
  26. var sqlStr = util.GenerateInsertSql("t_custom", params)
  27. result, err := db.NamedExec(sqlStr, params)
  28. if err != nil {
  29. return nil, errors.New("db error")
  30. }
  31. aid, err := result.LastInsertId()
  32. if err != nil {
  33. if id, ok := params["id"]; ok {
  34. return id, nil
  35. } else {
  36. return nil, nil
  37. }
  38. }
  39. return aid, nil
  40. }
  41. func (u *User) Update(user *entity.User) (*entity.User, error) {
  42. if user.Id == 0 && user.Mobile == "" {
  43. return nil, errors.New("错误的请求")
  44. }
  45. db := util.GetWriteSqlDB()
  46. var whereStr string
  47. if user.Id == 0 {
  48. whereStr = " where mobile = :mobile"
  49. } else {
  50. whereStr = " where id = :id"
  51. }
  52. sqlStr, kvm := util.GenerateUpdateSqlFromStruct("t_custom", user, whereStr)
  53. result, err := db.NamedExec(sqlStr, kvm)
  54. if err != nil {
  55. return nil, err
  56. }
  57. _, err = result.RowsAffected()
  58. if err != nil {
  59. return nil, err
  60. }
  61. /*if ra <= 0 {
  62. return nil, errors.New("404::update failed(can not found user)")
  63. }*/
  64. return user, nil
  65. }
  66. func (u *User) GetNotice(mobile string) ([]entity.QueueNotice, error) {
  67. db := util.GetSqlDB()
  68. qlist := []entity.QueueNotice{}
  69. err := db.Select(&qlist, "select * from t_custom_queue where custom_mobile = ? and isallnotice = 'N'", mobile)
  70. return qlist, err
  71. }
  72. func (u *User) UpdateNotice(notice *entity.QueueNotice) (bool, error) {
  73. if notice.Id == 0 {
  74. return false, errors.New("can not find info")
  75. }
  76. db := util.GetWriteSqlDB()
  77. sqlStr, kvm := util.GenerateUpdateSqlFromStruct("t_custom_queue", notice, " where id = :id")
  78. result, err := db.NamedExec(sqlStr, kvm)
  79. if err != nil {
  80. return false, err
  81. }
  82. ra, err := result.RowsAffected()
  83. if err != nil {
  84. return false, err
  85. }
  86. if ra <= 0 {
  87. return false, errors.New("404::update failed(can not found info)")
  88. }
  89. return true, nil
  90. }
  91. // 根据openid 查询用户
  92. func (u *User) GetUserByOpenid(openid string) (*entity.UserDB, error) {
  93. db := util.GetSqlDB()
  94. strSql := "select id, mobile, password, password_salt, extra, account_type,avatar from t_custom where instr(extra,?)>0 limit 1"
  95. var user entity.UserDB
  96. err := db.Get(&user, strSql, openid)
  97. if err != nil {
  98. if err == sql.ErrNoRows {
  99. return nil, DBRECORD_NOT_EXISTS_ERROR
  100. }
  101. return nil, err
  102. }
  103. return &user, nil
  104. }
  105. func (u *User) GetUserByUnionid(unionid string) (*entity.UserDB, error) {
  106. if unionid == "" {
  107. return nil, fmt.Errorf("unionid is empty")
  108. }
  109. db := util.GetSqlDB()
  110. strSql := "select id, mobile, password, password_salt, extra, account_type,avatar from t_custom where unionid = ? limit 1"
  111. var user entity.UserDB
  112. err := db.Get(&user, strSql, unionid)
  113. if err != nil {
  114. if err == sql.ErrNoRows {
  115. return nil, DBRECORD_NOT_EXISTS_ERROR
  116. }
  117. return nil, err
  118. }
  119. return &user, nil
  120. }
  121. func (u *User) GetUserByUserId(zfbUserId string) (*entity.UserDB, error) {
  122. db := util.GetSqlDB()
  123. strSql := "select id, mobile, password, password_salt, extra, account_type,avatar from t_custom where extra like ? limit 1"
  124. var user entity.UserDB
  125. err := db.Get(&user, strSql, "%"+zfbUserId+"%")
  126. if err != nil {
  127. if err == sql.ErrNoRows {
  128. return nil, DBRECORD_NOT_EXISTS_ERROR
  129. }
  130. return nil, err
  131. }
  132. return &user, nil
  133. }
  134. var DefaultUserDal = &User{}