user_serivce.go 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205
  1. package user
  2. import (
  3. "errors"
  4. logger "eta/eta_mini_ht_api/common/component/log"
  5. userDao "eta/eta_mini_ht_api/models/user"
  6. "gorm.io/gorm"
  7. )
  8. type userStatus string
  9. const (
  10. UnBind userStatus = "unBind"
  11. Login userStatus = "login"
  12. Logout userStatus = "logout"
  13. )
  14. type UserDTO struct {
  15. Id int
  16. Username string
  17. Mobile string
  18. OpenId string
  19. UnionId string
  20. RiskLevel string
  21. RiskValidEndDate string
  22. LoginStatus userDao.LogType
  23. FollowingGzh int
  24. GzhOpenId string
  25. }
  26. type FeedbackDTO struct {
  27. Mobile string `json:"mobile"`
  28. UserId int `json:"userId"`
  29. Message string `json:"message"`
  30. }
  31. func convertUserDTO(user userDao.TemplateUser) UserDTO {
  32. return UserDTO{
  33. Id: user.Id,
  34. Username: user.Username,
  35. Mobile: user.Mobile,
  36. OpenId: user.OpenId,
  37. LoginStatus: user.LoginStatus,
  38. RiskLevel: user.RiskLevel,
  39. RiskValidEndDate: user.RiskValidEndDate,
  40. FollowingGzh: user.FollowingGzh,
  41. }
  42. }
  43. func GetUserByMobile(mobile string) (dto UserDTO, err error) {
  44. templateUser, err := userDao.GetUserByMobile(mobile)
  45. if err != nil {
  46. if !errors.Is(err, gorm.ErrRecordNotFound) {
  47. logger.Error("查询用户失败:%v", err)
  48. }
  49. return
  50. }
  51. dto = convertUserDTO(templateUser)
  52. return
  53. }
  54. func GetUserAndCountReadTimes(userId int) (err error) {
  55. err = userDao.GetUserByIdAndCountReadTimes(userId)
  56. if err != nil {
  57. logger.Error("更新用户阅读次数失败:%v", err)
  58. }
  59. return
  60. }
  61. func UserLogout(userId int) (err error) {
  62. err = userDao.UserLogout(userId)
  63. if err != nil {
  64. logger.Error("用户退出登录失败:%v", err)
  65. }
  66. return
  67. }
  68. func UserLogin(userId int) (err error) {
  69. err = userDao.UserLogin(userId)
  70. if err != nil {
  71. logger.Error("用户登录失败:%v", err)
  72. }
  73. return
  74. }
  75. func RegisterTemplateUser(dto *UserDTO) (err error) {
  76. templateUser := convertToTemplateUser(dto)
  77. err = userDao.RegisterTemplateUser(&templateUser)
  78. if err != nil {
  79. logger.Error("创建临时用户失败:%v", err)
  80. return
  81. }
  82. convertToUserDTO(templateUser, dto)
  83. return
  84. }
  85. func GetTemplateUserByOpenId(openId string) (user UserDTO, err error) {
  86. templateUser, err := userDao.GetUserByOpenId(openId)
  87. if err != nil {
  88. logger.Error("获取用户信息失败:%v", err)
  89. return
  90. }
  91. user = convertUserDTO(templateUser)
  92. return
  93. }
  94. func FeedBack(dto FeedbackDTO) (err error) {
  95. feedBackEntity := userDao.FeedBack{
  96. Message: dto.Message,
  97. Mobile: dto.Mobile,
  98. UserID: dto.UserId,
  99. }
  100. return userDao.InsertFeedBack(feedBackEntity)
  101. }
  102. func convertToTemplateUser(dto *UserDTO) userDao.TemplateUser {
  103. return userDao.TemplateUser{
  104. Username: dto.Username,
  105. Mobile: dto.Mobile,
  106. OpenId: dto.OpenId,
  107. UnionId: dto.UnionId,
  108. GzhOpenId: dto.GzhOpenId,
  109. FollowingGzh: dto.FollowingGzh,
  110. }
  111. }
  112. func convertToUserDTO(templateUser userDao.TemplateUser, dto *UserDTO) {
  113. dto.Id = templateUser.Id
  114. dto.Username = templateUser.Username
  115. dto.Mobile = templateUser.Mobile
  116. dto.OpenId = templateUser.OpenId
  117. dto.UnionId = templateUser.UnionId
  118. dto.FollowingGzh = templateUser.FollowingGzh
  119. }
  120. func BindUserMobile(userId int, mobile string) (err error) {
  121. err = userDao.BindMobile(userId, mobile)
  122. if err != nil {
  123. logger.Error("绑定手机号失败:%v", err)
  124. }
  125. return
  126. }
  127. func GetUserById(userId int) (userDto UserDTO, err error) {
  128. templateUser, err := userDao.GetUserById(userId)
  129. if err != nil {
  130. logger.Error("查询用户失败:%v", err)
  131. return
  132. }
  133. if templateUser.IsDeleted == 1 {
  134. logger.Error("用户已删除:%v", err)
  135. err = errors.New("用户已删除")
  136. return
  137. }
  138. userDto = convertUserDTO(templateUser)
  139. return
  140. }
  141. func GetUserByOpenId(openId string) (userDto UserDTO, err error) {
  142. templateUser, err := userDao.GetUserByOpenId(openId)
  143. if err != nil {
  144. logger.Error("查询用户失败:%v", err)
  145. return
  146. }
  147. if templateUser.IsDeleted == 1 {
  148. logger.Error("用户已删除:%v", err)
  149. err = errors.New("用户已删除")
  150. return
  151. }
  152. userDto = convertUserDTO(templateUser)
  153. return
  154. }
  155. func GetTemplateUserByUnionId(unionId string) (user UserDTO, err error) {
  156. templateUser, err := userDao.GetUserByUnionId(unionId)
  157. if err != nil {
  158. logger.Error("获取用户信息失败:%v", err)
  159. return
  160. }
  161. user = convertUserDTO(templateUser)
  162. return
  163. }
  164. // 绑定小程序OpenId
  165. func BindUserXcxOpenId(userId int, openId string) (err error) {
  166. err = userDao.BindXcxOpenId(userId, openId)
  167. if err != nil {
  168. if !errors.Is(err, gorm.ErrRecordNotFound) {
  169. logger.Error("绑定小程序openId失败:%v", err)
  170. }
  171. return
  172. }
  173. return
  174. }
  175. // 绑定公众号OpenId
  176. func BindUserGzhOpenId(userId int, openId string, followingGzh int) (err error) {
  177. err = userDao.BindGzhOpenId(userId, openId, followingGzh)
  178. if err != nil {
  179. if !errors.Is(err, gorm.ErrRecordNotFound) {
  180. logger.Error("绑定公众号openId失败:%v", err)
  181. }
  182. return
  183. }
  184. return
  185. }
  186. func GetTemplateUserByGzhOpenId(openId string) (user UserDTO, err error) {
  187. templateUser, err := userDao.GetUserByGzhOpenId(openId)
  188. user = convertUserDTO(templateUser)
  189. return
  190. }