user_controller.go 8.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298
  1. package user
  2. import (
  3. "eta/eta_mini_ht_api/common/component/cache"
  4. logger "eta/eta_mini_ht_api/common/component/log"
  5. "eta/eta_mini_ht_api/common/exception"
  6. authUtils "eta/eta_mini_ht_api/common/utils/auth"
  7. "eta/eta_mini_ht_api/controllers"
  8. "eta/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. // UnReadMessageList 获取未读消息
  199. // @Summary 获取未读消息
  200. // @Description 获取未读消息
  201. // @Success 200 {object} controllers.BaseResponse
  202. // @router /message [get]
  203. func (u *UserController) UnReadMessageList() {
  204. controllers.Wrap(&u.BaseController, func() (result *controllers.WrapData, err error) {
  205. result = u.InitWrapData("获取我的未读消息失败")
  206. userInfo := u.Data["user"].(user.User)
  207. messages, err := user.GetUnReadMessageList(userInfo.Id)
  208. if err != nil {
  209. u.FailedResult("获取我的未读消息失败", result)
  210. return
  211. }
  212. u.SuccessResult("获取我的未读消息成功", messages, result)
  213. return
  214. })
  215. }
  216. type ReadMessageReq struct {
  217. AnalystId int `json:"analystId"`
  218. MessageId int `json:"MessageId"`
  219. }
  220. // ReadMessage 获取未读消息
  221. // @Summary 获取未读消息
  222. // @Description 获取未读消息
  223. // @Success 200 {object} controllers.BaseResponse
  224. // @router /readMessage [post]
  225. func (u *UserController) ReadMessage() {
  226. controllers.Wrap(&u.BaseController, func() (result *controllers.WrapData, err error) {
  227. result = u.InitWrapData("获取我的未读消息失败")
  228. readMessageReq := new(ReadMessageReq)
  229. u.GetPostParams(readMessageReq)
  230. if readMessageReq.MessageId <= 0 {
  231. logger.Error("消息Id非法")
  232. err = exception.New(exception.IllegalMessageId)
  233. u.FailedResult("已读消息失败", result)
  234. return
  235. }
  236. userInfo := u.Data["user"].(user.User)
  237. if user.ReadMessage(userInfo.Id, readMessageReq.MessageId) {
  238. u.SuccessResult("已读消息成功", nil, result)
  239. return
  240. } else {
  241. err = exception.New(exception.ReadMessageFailed)
  242. u.FailedResult("已读消息失败", result)
  243. return
  244. }
  245. })
  246. }
  247. // ReadMessages 获取未读消息
  248. // @Summary 获取未读消息
  249. // @Description 获取未读消息
  250. // @Success 200 {object} controllers.BaseResponse
  251. // @router /readMessages [post]
  252. func (u *UserController) ReadMessages() {
  253. controllers.Wrap(&u.BaseController, func() (result *controllers.WrapData, err error) {
  254. result = u.InitWrapData("获取我的未读消息失败")
  255. readMessageReq := new(ReadMessageReq)
  256. u.GetPostParams(readMessageReq)
  257. if readMessageReq.AnalystId <= 0 {
  258. logger.Error("研究员Id非法")
  259. err = exception.New(exception.IllegalAnalystId)
  260. u.FailedResult("已读消息失败", result)
  261. return
  262. }
  263. userInfo := u.Data["user"].(user.User)
  264. if user.ReadMessages(userInfo.Id, readMessageReq.AnalystId) {
  265. u.SuccessResult("已读消息成功", nil, result)
  266. return
  267. } else {
  268. err = exception.New(exception.ReadMessageFailed)
  269. u.FailedResult("已读消息失败", result)
  270. return
  271. }
  272. })
  273. }
  274. func covertToUserProfile(user user.User) UserProfileReq {
  275. return UserProfileReq{
  276. UserName: user.Username,
  277. Mobile: user.Mobile,
  278. }
  279. }