activity.go 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251
  1. package activity
  2. import (
  3. "github.com/gin-gonic/gin"
  4. "hongze/hongze_yb/controller/response"
  5. "hongze/hongze_yb/services/activity"
  6. "hongze/hongze_yb/services/user"
  7. "hongze/hongze_yb/utils"
  8. "strconv"
  9. "time"
  10. )
  11. // GetPageList 活动列表
  12. // @Tags 活动模块
  13. // @Summary 活动列表
  14. // @Description 获取活动列表
  15. // @Security ApiKeyAuth
  16. // @Param Authorization header string true "Bearer 31a165baebe6dec616b1f8f3207b4273"
  17. // @Accept json
  18. // @Product json
  19. // @Param activity_name query string false "活动名称"
  20. // @Param activity_type_name query string false "活动类别"
  21. // @Param active_state query int false "活动状态 1-本周预告 2-进行中 3-已结束"
  22. // @Param activity_type query int false "活动类型 1-线上会议 3-线下沙龙"
  23. // @Param page query int false "当前页码"
  24. // @Param limit query int false "每页数量"
  25. // @Success 200 {object} []yb_activity.ActivityItem
  26. // @Router /activity/getPageList [get]
  27. func GetPageList(c *gin.Context) {
  28. where, order := _handleListQuery(c)
  29. page, limit := _handlePageParam(c)
  30. userInfo := user.GetInfoByClaims(c)
  31. listData, err := activity.PageList(where, page, limit, order, userInfo)
  32. if err != nil {
  33. response.Fail("活动获取失败", c)
  34. return
  35. }
  36. response.OkData("获取成功", listData, c)
  37. }
  38. func _handleListQuery(c *gin.Context) (map[string]interface{}, string) {
  39. where := make(map[string]interface{})
  40. where["is_delete ="] = 0
  41. title := c.DefaultQuery("activity_name", "")
  42. if title != "" {
  43. where["activity_name like"] = "%" + c.Query("activity_name") + "%"
  44. }
  45. typeName := c.DefaultQuery("activity_type_name", "")
  46. if typeName != "" {
  47. where["activity_type_name like"] = "%" + c.Query("activity_type_name") + "%"
  48. }
  49. order := ""
  50. reqState := c.DefaultQuery("active_state", "0")
  51. if reqState != "0" {
  52. state, _ := strconv.Atoi(reqState)
  53. nowTime := time.Now().Format("2006-01-02 15:04:05")
  54. weekStart := utils.GetNowWeekMonday()
  55. weekEnd := utils.GetNowWeekLastDay()
  56. // 比对本周开始时间和当前时间
  57. timeNow, _ := time.Parse("2006-01-02 15:04:05", nowTime)
  58. queryStart := timeNow
  59. if timeNow.Before(weekStart) {
  60. queryStart = weekStart
  61. }
  62. switch state {
  63. case 1:
  64. // 时间在本周内且未开始
  65. where["start_time >="] = queryStart
  66. where["end_time <"] = weekEnd
  67. case 2:
  68. where["start_time <="] = nowTime
  69. where["end_time >"] = nowTime
  70. case 3:
  71. where["end_time <"] = nowTime
  72. order = "start_time desc"
  73. }
  74. }
  75. reqType := c.DefaultQuery("activity_type", "0")
  76. if reqType != "0" {
  77. activityType, _ := strconv.Atoi(reqType)
  78. where["activity_type_id ="] = activityType
  79. }
  80. return where, order
  81. }
  82. func _handlePageParam(c *gin.Context) (page, limit int) {
  83. page, _ = strconv.Atoi(c.Query("page"))
  84. limit, _ = strconv.Atoi(c.Query("limit"))
  85. return
  86. }
  87. // AddRemind 添加提醒
  88. // @Tags 活动模块
  89. // @Summary 添加提醒
  90. // @Description 添加提醒
  91. // @Security ApiKeyAuth
  92. // @Param Authorization header string true "Bearer 31a165baebe6dec616b1f8f3207b4273"
  93. // @Accept json
  94. // @Product json
  95. // @Param activity_id query int true "活动ID"
  96. // @Success 200 ""
  97. // @Router /activity/addRemind [post]
  98. func AddRemind(c *gin.Context) {
  99. reqActivityId := c.DefaultPostForm("activity_id", "0")
  100. if reqActivityId == "0" {
  101. response.Fail("参数异常", c)
  102. return
  103. }
  104. activityId, _ := strconv.Atoi(reqActivityId)
  105. userInfo := user.GetInfoByClaims(c)
  106. err := activity.CreateRemind(activityId, userInfo)
  107. if err != nil {
  108. response.Fail(err.Error(), c)
  109. return
  110. }
  111. response.OkData("操作成功", "", c)
  112. }
  113. // CancelRemind 取消提醒
  114. // @Tags 活动模块
  115. // @Summary 取消提醒
  116. // @Description 取消提醒
  117. // @Security ApiKeyAuth
  118. // @Param Authorization header string true "Bearer 31a165baebe6dec616b1f8f3207b4273"
  119. // @Accept json
  120. // @Product json
  121. // @Param activity_id query int true "活动ID"
  122. // @Success 200 ""
  123. // @Router /activity/cancelRemind [post]
  124. func CancelRemind(c *gin.Context) {
  125. reqActivityId := c.DefaultPostForm("activity_id", "0")
  126. if reqActivityId == "0" {
  127. response.Fail("参数异常", c)
  128. return
  129. }
  130. activityId, _ := strconv.Atoi(reqActivityId)
  131. userInfo := user.GetInfoByClaims(c)
  132. err := activity.CancelRemind(activityId, userInfo)
  133. if err != nil {
  134. response.Fail(err.Error(), c)
  135. return
  136. }
  137. response.OkData("操作成功", "", c)
  138. }
  139. // RegisterActivity 报名活动
  140. // @Tags 活动模块
  141. // @Summary 报名活动
  142. // @Description 报名活动
  143. // @Security ApiKeyAuth
  144. // @Param Authorization header string true "Bearer 31a165baebe6dec616b1f8f3207b4273"
  145. // @Accept json
  146. // @Product json
  147. // @Param activity_id query int true "活动ID"
  148. // @Success 200 ""
  149. // @Router /activity/registerActivity [post]
  150. func RegisterActivity(c *gin.Context) {
  151. reqActivityId := c.DefaultPostForm("activity_id", "0")
  152. if reqActivityId == "0" {
  153. response.Fail("参数异常", c)
  154. return
  155. }
  156. activityId, _ := strconv.Atoi(reqActivityId)
  157. userInfo := user.GetInfoByClaims(c)
  158. err := activity.CreateRegister(activityId, userInfo)
  159. if err != nil {
  160. response.Fail(err.Error(), c)
  161. return
  162. }
  163. response.OkData("操作成功", "", c)
  164. }
  165. // CancelRegister 取消报名
  166. // @Tags 活动模块
  167. // @Summary 取消报名
  168. // @Description 取消报名
  169. // @Security ApiKeyAuth
  170. // @Param Authorization header string true "Bearer 31a165baebe6dec616b1f8f3207b4273"
  171. // @Accept json
  172. // @Product json
  173. // @Param activity_id query int true "活动ID"
  174. // @Success 200 ""
  175. // @Router /activity/cancelRegister [post]
  176. func CancelRegister(c *gin.Context) {
  177. reqActivityId := c.DefaultPostForm("activity_id", "0")
  178. if reqActivityId == "0" {
  179. response.Fail("参数异常", c)
  180. return
  181. }
  182. activityId, _ := strconv.Atoi(reqActivityId)
  183. userInfo := user.GetInfoByClaims(c)
  184. err := activity.CancelRegister(activityId, userInfo)
  185. if err != nil {
  186. response.Fail(err.Error(), c)
  187. return
  188. }
  189. response.OkData("操作成功", "", c)
  190. }
  191. // GetActivityDetail 获取活动详情
  192. // @Tags 活动模块
  193. // @Summary 获取活动详情
  194. // @Description 获取活动详情
  195. // @Security ApiKeyAuth
  196. // @Param Authorization header string true "Bearer 31a165baebe6dec616b1f8f3207b4273"
  197. // @Accept json
  198. // @Product json
  199. // @Param activity_id query int true "活动ID"
  200. // @Success 200 ""
  201. // @Router /activity/getActivityDetail [get]
  202. func GetActivityDetail(c *gin.Context) {
  203. reqActivityId := c.DefaultQuery("activity_id", "0")
  204. if reqActivityId == "0" {
  205. response.Fail("参数异常", c)
  206. return
  207. }
  208. activityId, _ := strconv.Atoi(reqActivityId)
  209. userInfo := user.GetInfoByClaims(c)
  210. data, err := activity.GetActivityDetail(activityId, int(userInfo.UserID))
  211. if err != nil {
  212. response.Fail("未找到记录", c)
  213. return
  214. }
  215. response.OkData("获取成功", data, c)
  216. }
  217. // GetActivityVoices 获取活动录音
  218. // @Tags 活动模块
  219. // @Summary 获取活动录音
  220. // @Description 获取活动录音
  221. // @Security ApiKeyAuth
  222. // @Param Authorization header string true "Bearer 31a165baebe6dec616b1f8f3207b4273"
  223. // @Accept json
  224. // @Product json
  225. // @Param activity_id query int true "活动ID"
  226. // @Success 200 ""
  227. // @Router /activity/getActivityVoices [get]
  228. func GetActivityVoices(c *gin.Context) {
  229. reqActivityId := c.DefaultQuery("activity_id", "0")
  230. if reqActivityId == "0" {
  231. response.Fail("参数异常", c)
  232. return
  233. }
  234. activityId, _ := strconv.Atoi(reqActivityId)
  235. listData, err := activity.GetVoicesByActivity(activityId)
  236. if err != nil {
  237. response.Fail("录音获取失败", c)
  238. return
  239. }
  240. response.OkData("获取成功", listData, c)
  241. }