user_imp.go 3.7 KB

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