user_controller.go 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219
  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. AnalystName string `json:"analystName"`
  39. FollowType string `json:"followType"`
  40. Mobile string `json:"mobile"`
  41. ByName bool `json:"byName"`
  42. }
  43. // Feedback 用户意见反馈
  44. // @Summary 用户意见反馈
  45. // @Description 用户意见反馈
  46. // @Success 200 {object} controllers.BaseResponse
  47. // @router /feedback [post]
  48. func (u *UserController) Feedback() {
  49. controllers.Wrap(&u.BaseController, func() (result *controllers.WrapData, err error) {
  50. result = u.InitWrapData("提交反馈失败")
  51. feedback := new(FeedbackReq)
  52. u.GetPostParams(feedback)
  53. if !authUtils.IsValidMobile(feedback.Mobile) {
  54. u.FailedResult("手机号非法", result)
  55. err = exception.New(exception.IllegalPhoneNumber)
  56. return
  57. }
  58. var userInfo user.User
  59. userInfo = u.Data["user"].(user.User)
  60. if userInfo.Mobile != feedback.Mobile {
  61. u.FailedResult("非当前用户的手机号提交", result)
  62. err = exception.New(exception.NotCurrentUserError)
  63. return
  64. }
  65. if feedback.Message == "" {
  66. u.FailedResult("反馈信息不能为空", result)
  67. err = exception.New(exception.FeedBackMsgEmpty)
  68. return
  69. }
  70. err = user.FeedBack(userInfo.Id, feedback.Mobile, feedback.Message)
  71. if err != nil {
  72. err = exception.New(exception.FeedBackError)
  73. u.FailedResult("提交反馈失败", result)
  74. return
  75. }
  76. u.SuccessResult("提交反馈成功", nil, result)
  77. return
  78. })
  79. }
  80. type FollowResp struct {
  81. AnalystId int `json:"analystId"`
  82. FollowedType string `json:"FollowedType"`
  83. }
  84. // FollowAnalyst 关注研究员
  85. // @Summary 关注研究员
  86. // @Description 关注研究员
  87. // @Success 200 {object} controllers.BaseResponse
  88. // @router /followAnalyst [post]
  89. func (u *UserController) FollowAnalyst() {
  90. controllers.Wrap(&u.BaseController, func() (result *controllers.WrapData, err error) {
  91. result = u.InitWrapData("")
  92. followAnalyst := new(FollowAnalystReq)
  93. u.GetPostParams(followAnalyst)
  94. if !authUtils.IsValidMobile(followAnalyst.Mobile) {
  95. u.FailedResult("手机号非法", result)
  96. err = exception.New(exception.IllegalPhoneNumber)
  97. return
  98. }
  99. var userInfo user.User
  100. userInfo = u.Data["user"].(user.User)
  101. if userInfo.Mobile != followAnalyst.Mobile {
  102. u.FailedResult("非当前用户的手机号提交", result)
  103. err = exception.New(exception.NotCurrentUserError)
  104. return
  105. }
  106. if !checkFollowType(followAnalyst.FollowType) {
  107. u.FailedResult("关注状态非法", result)
  108. err = exception.New(exception.IllegalFollowType)
  109. return
  110. }
  111. var msg string
  112. switch followAnalyst.FollowType {
  113. case "following":
  114. msg = "关注研究员"
  115. case "unfollowed":
  116. msg = "取消关注研究员"
  117. }
  118. if followAnalyst.ByName {
  119. logger.Info("通过研究员姓名关注")
  120. if followAnalyst.AnalystName == "" {
  121. u.FailedResult("通过研究员姓名关注失败", result)
  122. err = exception.New(exception.AnalystNameEmptyError)
  123. return
  124. }
  125. err = user.FollowAnalystByName(userInfo.Id, followAnalyst.AnalystName, followAnalyst.FollowType)
  126. } else {
  127. err = user.FollowAnalyst(userInfo.Id, followAnalyst.AnalystId, followAnalyst.FollowType)
  128. }
  129. if err != nil {
  130. u.FailedResult(msg+"失败", result)
  131. return
  132. }
  133. resp := FollowResp{
  134. AnalystId: followAnalyst.AnalystId,
  135. FollowedType: followAnalyst.FollowType,
  136. }
  137. u.SuccessResult(msg+"成功", resp, result)
  138. return
  139. })
  140. }
  141. func checkFollowType(followType string) bool {
  142. return followType == "following" || followType == "unfollowed"
  143. }
  144. // FollowingAnalysts 关注研究员列表
  145. // @Summary 研究员详情
  146. // @Description 研究员详情
  147. // @Success 200 {object} controllers.BaseResponse
  148. // @router /followingAnalysts [get]
  149. func (u *UserController) FollowingAnalysts(analystId int) {
  150. controllers.Wrap(&u.BaseController, func() (result *controllers.WrapData, err error) {
  151. result = u.InitWrapData("获取研究员详情失败")
  152. fmt.Println(analystId)
  153. userInfo := u.Data["user"].(user.User)
  154. detail, err := user.GetAnalystDetail(userInfo.Id, analystId)
  155. if err != nil {
  156. u.FailedResult("获取研究员详情失败", result)
  157. return
  158. }
  159. u.SuccessResult("获取研究员详情成功", detail, result)
  160. return
  161. })
  162. }
  163. type UserProfileReq struct {
  164. UserName string `json:"userName"`
  165. Mobile string `json:"mobile"`
  166. }
  167. // Profile 获取用户信息
  168. // @Summary 获取用户信息
  169. // @Description 获取用户信息
  170. // @Success 200 {object} controllers.BaseResponse
  171. // @router /profile [get]
  172. func (u *UserController) Profile() {
  173. controllers.Wrap(&u.BaseController, func() (result *controllers.WrapData, err error) {
  174. result = u.InitWrapData("获取用户信息详情失败")
  175. userInfo := u.Data["user"].(user.User)
  176. u.SuccessResult("获取研究员详情成功", covertToUserProfile(userInfo), result)
  177. return
  178. })
  179. }
  180. // FollowingAnalystList 获取关注动态列表
  181. // @Summary 获取关注动态列表
  182. // @Description 获取关注动态列表
  183. // @Success 200 {object} controllers.BaseResponse
  184. // @router /followingAnalystList [get]
  185. func (u *UserController) FollowingAnalystList() {
  186. controllers.Wrap(&u.BaseController, func() (result *controllers.WrapData, err error) {
  187. result = u.InitWrapData("获取研究员详情失败")
  188. userInfo := u.Data["user"].(user.User)
  189. detail, err := user.GetFollowingAnalystList(userInfo.Id)
  190. if err != nil {
  191. u.FailedResult("获取研究员详情失败", result)
  192. return
  193. }
  194. u.SuccessResult("获取研究员详情成功", detail, result)
  195. return
  196. })
  197. }
  198. func covertToUserProfile(user user.User) UserProfileReq {
  199. return UserProfileReq{
  200. UserName: user.Username,
  201. Mobile: user.Mobile,
  202. }
  203. }