user.go 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184
  1. package model
  2. import (
  3. "fmt"
  4. "github.com/jmoiron/sqlx"
  5. "strconv"
  6. "trading-go/common"
  7. "trading-go/response"
  8. "trading-go/util"
  9. )
  10. type User struct {
  11. Uid uint `db:"uid" json:"uid,string"`
  12. Vid string `db:"vid" json:"vid"`
  13. Name string `db:"name" json:"name"`
  14. Avatar string `db:"avatar" json:"avatar"`
  15. Phone string `db:"phone" json:"phone"`
  16. Sign string `db:"sign" json:"sign"`
  17. }
  18. type UserJson struct {
  19. Uid string `json:"uid,string"`
  20. Vid string `json:"vid"`
  21. Name string `json:"name"`
  22. Avatar string `json:"avatar"`
  23. Phone string `json:"phone"`
  24. Sign string `json:"sign"`
  25. }
  26. func (u UserJson) Change() User {
  27. uid, _ := strconv.Atoi(u.Uid)
  28. return User{
  29. Uid: uint(uid),
  30. Vid: u.Vid,
  31. Name: u.Name,
  32. Avatar: u.Avatar,
  33. Phone: u.Phone,
  34. Sign: u.Sign,
  35. }
  36. }
  37. func (u User) Register() error {
  38. db := common.DB
  39. sqlStr := "INSERT INTO users(uid, vid,name, avatar, phone, sign) values (:uid, :vid, :name, :avatar, :phone, :sign)"
  40. exec, err := db.NamedExec(sqlStr, u)
  41. if err != nil {
  42. return err
  43. }
  44. affected, err := exec.RowsAffected()
  45. if err != nil {
  46. return err
  47. }
  48. if affected != 1 {
  49. return util.InsertFailError
  50. }
  51. return nil
  52. }
  53. func (u User) Login() (err error, nu User) {
  54. db := common.DB
  55. sqlStr := "SELECT * FROM users WHERE vid = ?"
  56. err = db.Get(&nu, sqlStr, u.Vid)
  57. return
  58. }
  59. // SPhone 查找电话号码
  60. func (u User) SPhone() error {
  61. var nu User
  62. db := common.DB
  63. fmt.Println(u.Phone)
  64. sqlStr := "SELECT * FROM users WHERE phone = ?"
  65. err := db.Get(&nu, sqlStr, u.Phone)
  66. if err != nil && err.Error() == "sql: no rows in result set" {
  67. return nil
  68. } else if err != nil {
  69. return err
  70. }
  71. return util.PhoneBeUsed
  72. }
  73. // Modify 修改信息
  74. func (u User) Modify(old *User) (User, error) {
  75. var user User
  76. db := common.DB
  77. if u.Name == "" {
  78. u.Name = old.Name
  79. }
  80. if u.Avatar == "" {
  81. u.Avatar = old.Avatar
  82. }
  83. if u.Phone == "" {
  84. u.Phone = old.Phone
  85. }
  86. if u.Sign == "" {
  87. u.Sign = old.Sign
  88. }
  89. sqlStr := "UPDATE users set name = ?,avatar = ?, phone = ?, sign = ? WHERE uid = ?"
  90. exec, err := db.Exec(sqlStr, u.Name, u.Avatar, u.Phone, u.Sign, u.Uid)
  91. if err != nil {
  92. return User{}, err
  93. }
  94. affected, err := exec.RowsAffected()
  95. if err != nil {
  96. return User{}, err
  97. }
  98. if affected != 1 {
  99. return User{}, util.UpdateFailError
  100. }
  101. sqlStr = "SELECT * FROM users WHERE uid = ?"
  102. err = db.Get(&user, sqlStr, u.Uid)
  103. if err != nil {
  104. return User{}, err
  105. }
  106. return user, nil
  107. }
  108. func (u User) FindByIds(ids []uint) (users []User, err error) {
  109. db := common.DB
  110. sqlStr := "SELECT * FROM users WHERE uid = ?"
  111. for i := 0; i < len(ids); i++ {
  112. err := db.Get(&users[i], sqlStr, ids[i])
  113. if err != nil {
  114. return nil, err
  115. }
  116. }
  117. return
  118. }
  119. // Info 获取用户信息
  120. func (u User) Info() (nu User, err error) {
  121. db := common.DB
  122. sqlStr := "SELECT * FROM users WHERE uid = ?"
  123. err = db.Get(&nu, sqlStr, u.Uid)
  124. return
  125. }
  126. func (u User) GetPaged(page, pageSize int) (rsp response.PageResponse, err error) {
  127. var users []User
  128. db := common.DB
  129. sqlStr := "SELECT * FROM users LIMIT ?,?"
  130. rsp.Page = page
  131. rsp.PageSize = pageSize
  132. err = db.Select(&users, sqlStr, (page-1)*pageSize, pageSize)
  133. rsp.Data = users
  134. return
  135. }
  136. func (u User) GetCnt() (cnt int, err error) {
  137. db := common.DB
  138. sqlStr := "SELECT COUNT(1) FROM users"
  139. err = db.Get(&cnt, sqlStr)
  140. return
  141. }
  142. func (u User) CheckVid() bool {
  143. db := common.DB
  144. sqlStr := "SELECT COUNT(1) FROM users WHERE vid = ?"
  145. cnt := 0
  146. _ = db.Get(&cnt, sqlStr, u.Vid)
  147. return cnt == 0
  148. }
  149. func (u User) GetUser() (user User) {
  150. db := common.DB
  151. sqlStr := "SELECT * FROM users WHERE uid = ?"
  152. _ = db.Get(&user, sqlStr, u.Uid)
  153. return
  154. }
  155. func (u User) GetUserList(uid []string) (users []User, err error) {
  156. db := common.DB
  157. sqlStr := "SELECT * FROM users WHERE uid IN (?)"
  158. query, args, err := sqlx.In(sqlStr, uid)
  159. if err != nil {
  160. return nil, err
  161. }
  162. err = db.Select(&users, query, args...)
  163. return
  164. }