activity.go 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223
  1. package controllers
  2. import (
  3. "hongze/hongze_cygx/models"
  4. "hongze/hongze_cygx/utils"
  5. "rdluck_tools/paging"
  6. "strconv"
  7. "strings"
  8. "time"
  9. )
  10. //活动
  11. type ActivityCoAntroller struct {
  12. BaseAuthController
  13. }
  14. // @Title 活动类型列表
  15. // @Description活动类型列表接口
  16. // @Success 200 {object} models.ActivityTypeListResp
  17. // @router /activityTypelist [get]
  18. func (this *ActivityCoAntroller) List() {
  19. br := new(models.BaseResponse).Init()
  20. defer func() {
  21. this.Data["json"] = br
  22. this.ServeJSON()
  23. }()
  24. user := this.User
  25. if user == nil {
  26. br.Msg = "请登录"
  27. br.ErrMsg = "请登录,SysUser Is Empty"
  28. br.Ret = 408
  29. return
  30. }
  31. resp := new(models.ActivityTypeListResp)
  32. list, err := models.GetActivityTypeList()
  33. if err != nil {
  34. br.Msg = "获取失败"
  35. br.ErrMsg = "获取数据失败,Err:" + err.Error()
  36. return
  37. }
  38. resp.List = list
  39. br.Ret = 200
  40. br.Success = true
  41. br.Msg = "获取成功"
  42. br.Data = resp
  43. }
  44. // @Title 活动列表
  45. // @Description 获取活动列表接口
  46. // @Param PageSize query int true "每页数据条数"
  47. // @Param CurrentIndex query int true "当前页页码,从1开始"
  48. // @Param ChartPermissionIds query string false "行业id 多个用 , 隔开"
  49. // @Param ActivityTypeIds query string false "活动类型id 多个用 , 隔开"
  50. // @Param KeyWord query string false "搜索关键词"
  51. // @Param ActiveState query string false "活动进行状态 未开始:1、进行中2、已结束3"
  52. // @Success 200 {object} models.GetCygxActivityListRep
  53. // @router /list [get]
  54. func (this *ActivityCoAntroller) ActivityList() {
  55. br := new(models.BaseResponse).Init()
  56. defer func() {
  57. this.Data["json"] = br
  58. this.ServeJSON()
  59. }()
  60. user := this.User
  61. if user == nil {
  62. br.Msg = "请登录"
  63. br.ErrMsg = "请登录,SysUser Is Empty"
  64. return
  65. }
  66. uid := user.UserId
  67. pageSize, _ := this.GetInt("PageSize")
  68. currentIndex, _ := this.GetInt("CurrentIndex")
  69. chartPermissionIds := this.GetString("ChartPermissionIds")
  70. activityTypeIds := this.GetString("ActivityTypeIds")
  71. keyWord := this.GetString("KeyWord")
  72. activeState := this.GetString("ActiveState")
  73. if activeState != "2" && activeState != "3" {
  74. activeState = "1"
  75. }
  76. var startSize int
  77. if pageSize <= 0 {
  78. pageSize = utils.PageSize20
  79. }
  80. if currentIndex <= 0 {
  81. currentIndex = 1
  82. }
  83. startSize = utils.StartIndex(currentIndex, pageSize)
  84. var condition string
  85. var pars []interface{}
  86. if keyWord != "" {
  87. condition += ` AND (art.activity_name LIKE '%` + keyWord + `%' ) `
  88. }
  89. //行业名称
  90. if len(chartPermissionIds) > 0 {
  91. condition += ` AND art.chart_permission_id IN (` + chartPermissionIds + `)`
  92. }
  93. condition += ` AND art.publish_status = 1 `
  94. //1专家电话会、2分析师电话会、3公司调研电话会、4公司线下调研、5专家线下沙龙、6分析师线下沙龙
  95. resultTimeNow := time.Now().Format("2006-01-02 15:04:05")
  96. resultTime30 := time.Now().Add(+time.Minute * 30).Format("2006-01-02 15:04:05")
  97. resultTime_30 := time.Now().Add(-time.Minute * 30).Format("2006-01-02 15:04:05")
  98. resultTime60 := time.Now().Add(+time.Minute * 60).Format("2006-01-02 15:04:05")
  99. resultTime_60 := time.Now().Add(-time.Minute * 60).Format("2006-01-02 15:04:05")
  100. if activeState == "1" {
  101. if len(activityTypeIds) > 0 {
  102. condition += ` AND art.activity_type_id IN (` + activityTypeIds + `)`
  103. }
  104. condition += ` AND art.activity_time > ` + "'" + resultTimeNow + "'"
  105. } else if activeState == "2" {
  106. condition += ` AND art.activity_time > ` + "'" + resultTimeNow + "'"
  107. if len(activityTypeIds) > 0 {
  108. condition += ` AND art.activity_type_id IN (` + activityTypeIds + `)`
  109. condition += ` AND art.activity_time < ` + "'" + resultTime30 + "'"
  110. } else {
  111. var sqlOr string
  112. sqlOr = condition
  113. condition += ` AND (art.activity_type_id IN ( 1, 2, 3 ) AND art.activity_time < ` + "'" + resultTime30 + "'" + ")"
  114. condition += ` OR(art.activity_type_id IN ( 4, 5, 6 ) AND art.activity_time < ` + "'" + resultTime60 + "'" + sqlOr + ")"
  115. }
  116. } else {
  117. if len(activityTypeIds) > 0 {
  118. condition += ` AND art.activity_type_id IN (` + activityTypeIds + `)`
  119. condition += ` AND art.activity_time > ` + "'" + resultTime_30 + "'"
  120. } else {
  121. var sqlOr string
  122. sqlOr = condition
  123. condition += ` AND (art.activity_type_id IN ( 1, 2, 3 ) AND art.activity_time <` + "'" + resultTime_30 + "'" + ")"
  124. condition += ` OR(art.activity_type_id IN ( 4, 5, 6 ) AND art.activity_time < ` + "'" + resultTime_60 + "'" + sqlOr + ")"
  125. }
  126. }
  127. total, err := models.GetActivityCount(condition, pars)
  128. if err != nil {
  129. br.Msg = "获取失败"
  130. br.ErrMsg = "获取失败,Err:" + err.Error()
  131. return
  132. }
  133. if activeState != "1" {
  134. condition += ` ORDER BY art.activity_time DESC `
  135. }
  136. //condition += ` ORDER BY art.activity_time DESC `
  137. list, errList := models.GetActivityListAll(condition, pars, uid, startSize, pageSize)
  138. srt30min := "1,2,3"
  139. srt60min := "4,5,6"
  140. for k, v := range list {
  141. if strings.Contains(srt30min, strconv.Itoa(v.ActivityTypeId)) {
  142. resultTime := utils.StrTimeToTime(v.ActivityTime) //时间字符串格式转时间格式
  143. if resultTime.After(time.Now()) {
  144. list[k].ActiveState = "1"
  145. } else if time.Now().After(resultTime) && resultTime.After(time.Now().Add(+time.Minute*30)) {
  146. list[k].ActiveState = "2"
  147. } else {
  148. list[k].ActiveState = "3"
  149. }
  150. }
  151. if strings.Contains(srt60min, strconv.Itoa(v.ActivityTypeId)) {
  152. resultTime := utils.StrTimeToTime(v.ActivityTime) //时间字符串格式转时间格式
  153. if resultTime.After(time.Now()) {
  154. list[k].ActiveState = "1"
  155. } else if time.Now().After(resultTime) && resultTime.After(time.Now().Add(+time.Minute*60)) {
  156. list[k].ActiveState = "2"
  157. } else {
  158. list[k].ActiveState = "3"
  159. }
  160. }
  161. }
  162. if errList != nil {
  163. br.Msg = "获取失败"
  164. br.ErrMsg = "获取失败,Err:" + errList.Error()
  165. return
  166. }
  167. page := paging.GetPaging(currentIndex, pageSize, total)
  168. resp := new(models.GetCygxActivityListRep)
  169. resp.List = list
  170. resp.Paging = page
  171. br.Ret = 200
  172. br.Success = true
  173. br.Msg = "获取成功"
  174. br.Data = resp
  175. }
  176. // @Title 活动详情
  177. // @Description 获取活动详情接口
  178. // @Param ActivityId query int true "活动ID"
  179. // @Success Ret=200 {object} models.ActivityDetail
  180. // @router /detail [get]
  181. func (this *ActivityCoAntroller) Detail() {
  182. br := new(models.BaseResponse).Init()
  183. defer func() {
  184. this.Data["json"] = br
  185. this.ServeJSON()
  186. }()
  187. user := this.User
  188. if user == nil {
  189. br.Msg = "请登录"
  190. br.ErrMsg = "请登录,用户信息为空"
  191. br.Ret = 408
  192. return
  193. }
  194. activityId, _ := this.GetInt("ActivityId")
  195. if activityId < 1 {
  196. br.Msg = "请输入活动ID"
  197. return
  198. }
  199. activityInfo, err := models.GetAddActivityInfoById(activityId)
  200. if activityInfo == nil {
  201. br.Msg = "活动不存在"
  202. br.ErrMsg = "活动ID错误,Err:" + err.Error() + "activityId:" + strconv.Itoa(activityId)
  203. return
  204. }
  205. detail, errDetail := models.GetActivityTypeDetailById(activityInfo.ActivityTypeId)
  206. if errDetail != nil {
  207. br.Msg = "获取信息失败"
  208. br.ErrMsg = "获取信息失败,Err:" + errDetail.Error()
  209. return
  210. }
  211. activityInfo.ShowType = detail.ShowType
  212. br.Ret = 200
  213. br.Success = true
  214. br.Msg = "获取成功"
  215. br.Data = activityInfo
  216. }