user_imp.go 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  1. package imp
  2. import (
  3. "Ic_ouath/app/e"
  4. "Ic_ouath/global"
  5. "Ic_ouath/models"
  6. "Ic_ouath/utils"
  7. "context"
  8. "fmt"
  9. "strconv"
  10. )
  11. type User struct{}
  12. func (u *User) UpdatePassword(user models.UserUpdate) e.Rescode {
  13. //TODO implement me
  14. var users models.User
  15. tx := global.DBLink.Where("phone=?", user.Phone).Find(&users)
  16. ctx := context.Background()
  17. result, err := global.Rdb.Get(ctx, user.Phone).Result()
  18. if err != nil {
  19. return e.CodeIsError
  20. } else if result != user.Code {
  21. return e.CodeIsError
  22. }
  23. if tx.RowsAffected > 0 {
  24. user.Password = utils.MD5(user.Password)
  25. tx = global.DBLink.Model(&users).Where("phone=?", user.Phone).Update("password", user.Password)
  26. if tx.RowsAffected > 0 {
  27. return e.SUCCESS
  28. }
  29. return e.ERROR
  30. }
  31. return e.TheSystemIsAbnormal
  32. }
  33. func (u *User) PhoneRegist(userRegist models.UserRegist) e.Rescode {
  34. //查找账号是否注册或者手机号已经注册,一个手机号只能注册一个账号
  35. tx := global.DBLink.Where("account = ?", userRegist.Account).Find(&models.User{})
  36. row := global.DBLink.Where("phone = ?", userRegist.Phone).Find(&models.User{})
  37. if row.RowsAffected > 0 {
  38. return e.AlreadyExists
  39. }
  40. if tx.RowsAffected > 0 {
  41. return e.AlreadyExists
  42. } else {
  43. ctx := context.Background()
  44. result, err := global.Rdb.Get(ctx, userRegist.Phone).Result()
  45. if err != nil {
  46. return e.TheVerificationCodeWasNotSent
  47. } else if result != userRegist.Code {
  48. return e.CodeIsError
  49. }
  50. var user = models.User{
  51. Phone: userRegist.Phone,
  52. Account: userRegist.Account,
  53. Password: utils.MD5(userRegist.Password),
  54. Username: userRegist.Username,
  55. State: true,
  56. }
  57. tx = global.DBLink.Create(&user)
  58. if tx.RowsAffected > 0 {
  59. return e.SUCCESS
  60. }
  61. }
  62. return e.ERROR
  63. }
  64. // Login 账号密码登录
  65. func (u *User) Login(userRegist models.UserRegist) (models.UserDto, e.Rescode) {
  66. var count int64
  67. var userdto models.UserDto
  68. var user models.User
  69. md5 := utils.MD5(userRegist.Password)
  70. global.DBLink.Where("account=?", userRegist.Account).Where("password=?", md5).Find(&user).Count(&count)
  71. if count > 0 {
  72. token, err := utils.CreateToken(user.ID, user.Username, user.Role)
  73. if err != nil {
  74. return userdto, e.TokenIsFaild
  75. } else {
  76. userdto.Token = token
  77. userdto.Username = user.Username
  78. userdto.Account = user.Account
  79. userdto.Avatar = user.Avatar
  80. userdto.ID = user.ID
  81. return userdto, e.SUCCESS
  82. }
  83. } else {
  84. return userdto, e.ThePasswordIsWrongOrThePhoneNumberIsIncorrect
  85. }
  86. }
  87. // CodeLogin 验证码登录
  88. func (u *User) CodeLogin(userRegist models.UserRegist) (models.UserDto, e.Rescode) {
  89. var user models.User
  90. var userdto models.UserDto
  91. tx := global.DBLink.Where("phone=?", userRegist.Phone).Find(&user)
  92. ctx := context.Background()
  93. result, err := global.Rdb.Get(ctx, userRegist.Phone).Result()
  94. if err != nil {
  95. return userdto, e.CodeIsError
  96. } else if result != userRegist.Code {
  97. return userdto, e.CodeIsError
  98. }
  99. token, err := utils.CreateToken(user.ID, user.Username, user.Role)
  100. userdto.Token = token
  101. if tx.RowsAffected > 0 {
  102. userdto.Username = user.Username
  103. userdto.Account = user.Account
  104. userdto.Avatar = user.Avatar
  105. userdto.ID = user.ID
  106. return userdto, e.SUCCESS
  107. } else {
  108. return models.UserDto{}, e.GoToRegister
  109. }
  110. }
  111. // GetUserAll 获取所有用户
  112. func (u *User) GetUserAll() ([]models.User, e.Rescode) {
  113. //TODO implement me
  114. var users []models.User
  115. tx := global.DBLink.Find(&users)
  116. if tx.RowsAffected > 0 {
  117. return users, e.SUCCESS
  118. }
  119. return users, e.TheUserIsEmpty
  120. }
  121. // UpdateUser 更新用户
  122. func (u *User) UpdateUser(id any, uservo models.UserVo) e.Rescode {
  123. var user models.User
  124. atoi, _ := strconv.Atoi(fmt.Sprint(id))
  125. tx := global.DBLink.Model(&user).
  126. Where("id=?", uservo.Id).
  127. Updates(models.User{
  128. Username: uservo.Username,
  129. State: uservo.State,
  130. Avatar: uservo.Avatar,
  131. Account: uservo.Account,
  132. Phone: uservo.Phone,
  133. Password: utils.MD5(uservo.Password),
  134. UpdateBy: atoi,
  135. })
  136. if tx.RowsAffected > 0 {
  137. return e.SUCCESS
  138. }
  139. return e.UPDATEFAIL
  140. }
  141. // DeleteUser 删除用户
  142. func (u *User) DeleteUser(ids []string) e.Rescode {
  143. for _, id := range ids {
  144. tx := global.DBLink.Where("id=?", id).Delete(&models.User{})
  145. if tx.RowsAffected > 0 {
  146. return e.SUCCESS
  147. }
  148. }
  149. return e.DELETEFAIL
  150. }