user_controller.go 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182
  1. package user
  2. import (
  3. "eta_mini_ht_api/common/component/cache"
  4. logger "eta_mini_ht_api/common/component/log"
  5. "eta_mini_ht_api/common/exception"
  6. authUtils "eta_mini_ht_api/common/utils/auth"
  7. "eta_mini_ht_api/controllers"
  8. "eta_mini_ht_api/service/user"
  9. "fmt"
  10. )
  11. // UserController Operations about Users
  12. type UserController struct {
  13. controllers.BaseController
  14. redis *cache.RedisCache
  15. }
  16. func (u *UserController) Prepare() {
  17. u.redis = cache.GetInstance()
  18. }
  19. type LoginCode struct {
  20. Code int `json:"code"`
  21. Msg string `json:"msg"`
  22. }
  23. // Get @Title GetAll
  24. // @Description get all Users
  25. // @Success 200 {object} models.User
  26. // @router / [get]
  27. func (u *UserController) Get() {
  28. logger.Warn("查询用户列表:%s")
  29. fmt.Print("查询用户列表")
  30. u.ServeJSON()
  31. }
  32. type FeedbackReq struct {
  33. Mobile string `json:"mobile"`
  34. Message string `json:"message"`
  35. }
  36. type FollowAnalystReq struct {
  37. AnalystId int `json:"analystId"`
  38. FollowType string `json:"followType"`
  39. Mobile string `json:"mobile"`
  40. }
  41. // Feedback 用户意见反馈
  42. // @Summary 用户意见反馈
  43. // @Description 用户意见反馈
  44. // @Success 200 {object} controllers.BaseResponse
  45. // @router /feedback [post]
  46. func (u *UserController) Feedback() {
  47. controllers.Wrap(&u.BaseController, func() (result *controllers.WrapData, err error) {
  48. result = u.InitWrapData("提交反馈失败")
  49. feedback := new(FeedbackReq)
  50. u.GetPostParams(feedback)
  51. if !authUtils.IsValidMobile(feedback.Mobile) {
  52. u.FailedResult("手机号非法", result)
  53. err = exception.New(exception.IllegalPhoneNumber)
  54. return
  55. }
  56. var userInfo user.User
  57. userInfo = u.Data["user"].(user.User)
  58. if userInfo.Mobile != feedback.Mobile {
  59. u.FailedResult("非当前用户的手机号提交", result)
  60. err = exception.New(exception.NotCurrentUserError)
  61. return
  62. }
  63. if feedback.Message == "" {
  64. u.FailedResult("反馈信息不能为空", result)
  65. err = exception.New(exception.FeedBackMsgEmpty)
  66. return
  67. }
  68. err = user.FeedBack(userInfo.Id, feedback.Mobile, feedback.Message)
  69. if err != nil {
  70. err = exception.New(exception.FeedBackError)
  71. u.FailedResult("提交反馈失败", result)
  72. return
  73. }
  74. u.SuccessResult("提交反馈成功", nil, result)
  75. return
  76. })
  77. }
  78. type FollowResp struct {
  79. AnalystId int `json:"analystId"`
  80. FollowedType string `json:"FollowedType"`
  81. }
  82. // FollowAnalyst 关注研究员
  83. // @Summary 关注研究员
  84. // @Description 关注研究员
  85. // @Success 200 {object} controllers.BaseResponse
  86. // @router /followAnalyst [post]
  87. func (u *UserController) FollowAnalyst() {
  88. controllers.Wrap(&u.BaseController, func() (result *controllers.WrapData, err error) {
  89. result = u.InitWrapData("")
  90. followAnalyst := new(FollowAnalystReq)
  91. u.GetPostParams(followAnalyst)
  92. if !authUtils.IsValidMobile(followAnalyst.Mobile) {
  93. u.FailedResult("手机号非法", result)
  94. err = exception.New(exception.IllegalPhoneNumber)
  95. return
  96. }
  97. var userInfo user.User
  98. userInfo = u.Data["user"].(user.User)
  99. if userInfo.Mobile != followAnalyst.Mobile {
  100. u.FailedResult("非当前用户的手机号提交", result)
  101. err = exception.New(exception.NotCurrentUserError)
  102. return
  103. }
  104. if !checkFollowType(followAnalyst.FollowType) {
  105. u.FailedResult("关注状态非法", result)
  106. err = exception.New(exception.IllegalFollowType)
  107. return
  108. }
  109. var msg string
  110. switch followAnalyst.FollowType {
  111. case "following":
  112. msg = "关注研究员"
  113. case "unfollowed":
  114. msg = "取消关注研究员"
  115. }
  116. err = user.FollowAnalyst(userInfo.Id, followAnalyst.AnalystId, followAnalyst.FollowType)
  117. if err != nil {
  118. u.FailedResult(msg+"失败", result)
  119. return
  120. }
  121. resp := FollowResp{
  122. AnalystId: followAnalyst.AnalystId,
  123. FollowedType: followAnalyst.FollowType,
  124. }
  125. u.SuccessResult(msg+"成功", resp, result)
  126. return
  127. })
  128. }
  129. func checkFollowType(followType string) bool {
  130. return followType == "following" || followType == "unfollowed"
  131. }
  132. // AnalystDetail 研究员详情
  133. // @Summary 研究员详情
  134. // @Description 研究员详情
  135. // @Success 200 {object} controllers.BaseResponse
  136. // @router /analystDetail [get]
  137. func (u *UserController) AnalystDetail(analystId int) {
  138. controllers.Wrap(&u.BaseController, func() (result *controllers.WrapData, err error) {
  139. result = u.InitWrapData("获取研究员详情失败")
  140. fmt.Println(analystId)
  141. userInfo := u.Data["user"].(user.User)
  142. detail, err := user.GetAnalystDetail(userInfo.Id, analystId)
  143. if err != nil {
  144. u.FailedResult("获取研究员详情失败", result)
  145. return
  146. }
  147. u.SuccessResult("获取研究员详情成功", detail, result)
  148. return
  149. })
  150. }
  151. // FollowingAnalysts 关注研究员列表
  152. // @Summary 研究员详情
  153. // @Description 研究员详情
  154. // @Success 200 {object} controllers.BaseResponse
  155. // @router /followingAnalysts [get]
  156. func (u *UserController) FollowingAnalysts(analystId int) {
  157. controllers.Wrap(&u.BaseController, func() (result *controllers.WrapData, err error) {
  158. result = u.InitWrapData("获取研究员详情失败")
  159. fmt.Println(analystId)
  160. userInfo := u.Data["user"].(user.User)
  161. detail, err := user.GetAnalystDetail(userInfo.Id, analystId)
  162. if err != nil {
  163. u.FailedResult("获取研究员详情失败", result)
  164. return
  165. }
  166. u.SuccessResult("获取研究员详情成功", detail, result)
  167. return
  168. })
  169. }