activity.go 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414
  1. package controllers
  2. import (
  3. "encoding/json"
  4. "hongze/hongze_cygx/models"
  5. "hongze/hongze_cygx/utils"
  6. "rdluck_tools/paging"
  7. "strconv"
  8. "strings"
  9. "time"
  10. )
  11. //活动
  12. type ActivityCoAntroller struct {
  13. BaseAuthController
  14. }
  15. // @Title 活动类型列表
  16. // @Description活动类型列表接口
  17. // @Success 200 {object} models.ActivityTypeListResp
  18. // @router /activityTypelist [get]
  19. func (this *ActivityCoAntroller) List() {
  20. br := new(models.BaseResponse).Init()
  21. defer func() {
  22. this.Data["json"] = br
  23. this.ServeJSON()
  24. }()
  25. user := this.User
  26. if user == nil {
  27. br.Msg = "请登录"
  28. br.ErrMsg = "请登录,SysUser Is Empty"
  29. br.Ret = 408
  30. return
  31. }
  32. resp := new(models.ActivityTypeListResp)
  33. list, err := models.GetActivityTypeList()
  34. if err != nil {
  35. br.Msg = "获取失败"
  36. br.ErrMsg = "获取数据失败,Err:" + err.Error()
  37. return
  38. }
  39. resp.List = list
  40. br.Ret = 200
  41. br.Success = true
  42. br.Msg = "获取成功"
  43. br.Data = resp
  44. }
  45. // @Title 活动列表
  46. // @Description 获取活动列表接口
  47. // @Param PageSize query int true "每页数据条数"
  48. // @Param CurrentIndex query int true "当前页页码,从1开始"
  49. // @Param ChartPermissionIds query string false "行业id 多个用 , 隔开"
  50. // @Param ActivityTypeIds query string false "活动类型id 多个用 , 隔开"
  51. // @Param KeyWord query string false "搜索关键词"
  52. // @Param ActiveState query string false "活动进行状态 未开始:1、进行中2、已结束3"
  53. // @Param IsShowJurisdiction query int false "是否仅展示有权限的,1是,0否 默认为零"
  54. // @Success 200 {object} models.GetCygxActivityListRep
  55. // @router /list [get]
  56. func (this *ActivityCoAntroller) ActivityList() {
  57. br := new(models.BaseResponse).Init()
  58. defer func() {
  59. this.Data["json"] = br
  60. this.ServeJSON()
  61. }()
  62. user := this.User
  63. if user == nil {
  64. br.Msg = "请登录"
  65. br.ErrMsg = "请登录,SysUser Is Empty"
  66. return
  67. }
  68. uid := user.UserId
  69. pageSize, _ := this.GetInt("PageSize")
  70. currentIndex, _ := this.GetInt("CurrentIndex")
  71. chartPermissionIds := this.GetString("ChartPermissionIds")
  72. activityTypeIds := this.GetString("ActivityTypeIds")
  73. isShowJurisdiction, _ := this.GetInt("IsShowJurisdiction")
  74. keyWord := this.GetString("KeyWord")
  75. activeState := this.GetString("ActiveState")
  76. if activeState != "2" && activeState != "3" {
  77. activeState = "1"
  78. }
  79. if isShowJurisdiction != 1 {
  80. isShowJurisdiction = 0
  81. }
  82. itemSearch := new(models.CygxActivityUserSearchContent)
  83. itemSearch.UserId = uid
  84. itemSearch.CreateTime = time.Now()
  85. itemSearch.Mobile = user.Mobile
  86. itemSearch.Email = user.Email
  87. itemSearch.CompanyId = user.CompanyId
  88. itemSearch.CompanyName = user.CompanyName
  89. itemSearch.ModifyTime = time.Now()
  90. itemSearch.ChartPermissionids = chartPermissionIds
  91. itemSearch.ActivityTypeids = activityTypeIds
  92. itemSearch.ActiveState = activeState
  93. itemSearch.IsShowJurisdiction = isShowJurisdiction
  94. _, errSearch := models.AddUserSearchContent(itemSearch)
  95. if errSearch != nil {
  96. br.Msg = "操作失败"
  97. br.ErrMsg = "操作失败,Err:" + errSearch.Error()
  98. return
  99. }
  100. var startSize int
  101. if pageSize <= 0 {
  102. pageSize = utils.PageSize20
  103. }
  104. if currentIndex <= 0 {
  105. currentIndex = 1
  106. }
  107. startSize = utils.StartIndex(currentIndex, pageSize)
  108. var condition string
  109. var pars []interface{}
  110. if keyWord != "" {
  111. condition += ` AND (art.activity_name LIKE '%` + keyWord + `%' ) `
  112. }
  113. //行业名称
  114. if len(chartPermissionIds) > 0 {
  115. condition += ` AND art.chart_permission_id IN (` + chartPermissionIds + `)`
  116. }
  117. condition += ` AND art.publish_status = 1 `
  118. //1专家电话会、2分析师电话会、3公司调研电话会、4公司线下调研、5专家线下沙龙、6分析师线下沙龙
  119. resultTimeNow := time.Now().Format("2006-01-02 15:04:05")
  120. resultTime30 := time.Now().Add(+time.Minute * 30).Format("2006-01-02 15:04:05")
  121. resultTime_30 := time.Now().Add(-time.Minute * 30).Format("2006-01-02 15:04:05")
  122. resultTime60 := time.Now().Add(+time.Minute * 60).Format("2006-01-02 15:04:05")
  123. resultTime_60 := time.Now().Add(-time.Minute * 60).Format("2006-01-02 15:04:05")
  124. if activeState == "1" {
  125. if len(activityTypeIds) > 0 {
  126. condition += ` AND art.activity_type_id IN (` + activityTypeIds + `)`
  127. }
  128. condition += ` AND art.activity_time > ` + "'" + resultTimeNow + "'"
  129. } else if activeState == "2" {
  130. condition += ` AND art.activity_time > ` + "'" + resultTimeNow + "'"
  131. if len(activityTypeIds) > 0 {
  132. condition += ` AND art.activity_type_id IN (` + activityTypeIds + `)`
  133. condition += ` AND art.activity_time < ` + "'" + resultTime30 + "'"
  134. } else {
  135. var sqlOr string
  136. sqlOr = condition
  137. condition += ` AND (art.activity_type_id IN ( 1, 2, 3 ) AND art.activity_time < ` + "'" + resultTime30 + "'" + ")"
  138. condition += ` OR(art.activity_type_id IN ( 4, 5, 6 ) AND art.activity_time < ` + "'" + resultTime60 + "'" + sqlOr + ")"
  139. }
  140. } else {
  141. if len(activityTypeIds) > 0 {
  142. condition += ` AND art.activity_type_id IN (` + activityTypeIds + `)`
  143. condition += ` AND art.activity_time > ` + "'" + resultTime_30 + "'"
  144. } else {
  145. var sqlOr string
  146. sqlOr = condition
  147. condition += ` AND (art.activity_type_id IN ( 1, 2, 3 ) AND art.activity_time <` + "'" + resultTime_30 + "'" + ")"
  148. condition += ` OR(art.activity_type_id IN ( 4, 5, 6 ) AND art.activity_time < ` + "'" + resultTime_60 + "'" + sqlOr + ")"
  149. }
  150. }
  151. total, err := models.GetActivityCount(condition, pars)
  152. if err != nil {
  153. br.Msg = "获取失败"
  154. br.ErrMsg = "获取失败,Err:" + err.Error()
  155. return
  156. }
  157. if activeState != "1" {
  158. condition += ` ORDER BY art.activity_time DESC `
  159. }
  160. //condition += ` ORDER BY art.activity_time DESC `
  161. list, errList := models.GetActivityListAll(condition, pars, uid, startSize, pageSize)
  162. srt30min := "1,2,3"
  163. srt60min := "4,5,6"
  164. for k, v := range list {
  165. if strings.Contains(srt30min, strconv.Itoa(v.ActivityTypeId)) {
  166. resultTime := utils.StrTimeToTime(v.ActivityTime) //时间字符串格式转时间格式
  167. if resultTime.After(time.Now()) {
  168. list[k].ActiveState = "1"
  169. } else if time.Now().After(resultTime) && resultTime.After(time.Now().Add(+time.Minute*30)) {
  170. list[k].ActiveState = "2"
  171. } else {
  172. list[k].ActiveState = "3"
  173. }
  174. }
  175. if strings.Contains(srt60min, strconv.Itoa(v.ActivityTypeId)) {
  176. resultTime := utils.StrTimeToTime(v.ActivityTime) //时间字符串格式转时间格式
  177. if resultTime.After(time.Now()) {
  178. list[k].ActiveState = "1"
  179. } else if time.Now().After(resultTime) && resultTime.After(time.Now().Add(+time.Minute*60)) {
  180. list[k].ActiveState = "2"
  181. } else {
  182. list[k].ActiveState = "3"
  183. }
  184. }
  185. }
  186. if errList != nil {
  187. br.Msg = "获取失败"
  188. br.ErrMsg = "获取失败,Err:" + errList.Error()
  189. return
  190. }
  191. page := paging.GetPaging(currentIndex, pageSize, total)
  192. resp := new(models.GetCygxActivityListRep)
  193. resp.List = list
  194. resp.Paging = page
  195. br.Ret = 200
  196. br.Success = true
  197. br.Msg = "获取成功"
  198. br.Data = resp
  199. }
  200. // @Title 活动详情
  201. // @Description 获取活动详情接口
  202. // @Param ActivityId query int true "活动ID"
  203. // @Success Ret=200 {object} models.ActivityDetail
  204. // @router /detail [get]
  205. func (this *ActivityCoAntroller) Detail() {
  206. br := new(models.BaseResponse).Init()
  207. defer func() {
  208. this.Data["json"] = br
  209. this.ServeJSON()
  210. }()
  211. user := this.User
  212. if user == nil {
  213. br.Msg = "请登录"
  214. br.ErrMsg = "请登录,用户信息为空"
  215. br.Ret = 408
  216. return
  217. }
  218. activityId, _ := this.GetInt("ActivityId")
  219. if activityId < 1 {
  220. br.Msg = "请输入活动ID"
  221. return
  222. }
  223. activityInfo, err := models.GetAddActivityInfoById(activityId)
  224. if activityInfo == nil {
  225. br.Msg = "活动不存在"
  226. br.ErrMsg = "活动ID错误,Err:" + err.Error() + "activityId:" + strconv.Itoa(activityId)
  227. return
  228. }
  229. detail, errDetail := models.GetActivityTypeDetailById(activityInfo.ActivityTypeId)
  230. if errDetail != nil {
  231. br.Msg = "获取信息失败"
  232. br.ErrMsg = "获取信息失败,Err:" + errDetail.Error()
  233. return
  234. }
  235. activityInfo.ShowType = detail.ShowType
  236. br.Ret = 200
  237. br.Success = true
  238. br.Msg = "获取成功"
  239. br.Data = activityInfo
  240. }
  241. // @Title 活动的报名
  242. // @Description 活动的报名接口
  243. // @Param request body models.ActivityIdRep true "type json string"
  244. // @Success 200 操作成功
  245. // @router /signup/add [post]
  246. func (this *ActivityCoAntroller) PublishAndCancel() {
  247. br := new(models.BaseResponse).Init()
  248. defer func() {
  249. this.Data["json"] = br
  250. this.ServeJSON()
  251. }()
  252. user := this.User
  253. if user == nil {
  254. br.Msg = "请登录"
  255. br.ErrMsg = "请登录,用户信息为空"
  256. br.Ret = 408
  257. return
  258. }
  259. uid := user.UserId
  260. var req models.ActivityIdRep
  261. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  262. if err != nil {
  263. br.Msg = "参数解析异常!"
  264. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  265. return
  266. }
  267. activityId := req.ActivityId
  268. item := new(models.CygxActivitySignup)
  269. activityInfo, errInfo := models.GetAddActivityInfoById(activityId)
  270. if activityInfo == nil {
  271. br.Msg = "操作失败"
  272. br.ErrMsg = "活动ID错误,不存在activityId:" + strconv.Itoa(activityId)
  273. return
  274. }
  275. if errInfo != nil {
  276. br.Msg = "操作失败"
  277. br.ErrMsg = "操作失败,Err:" + errInfo.Error()
  278. return
  279. }
  280. item.UserId = uid
  281. item.ActivityId = activityId
  282. item.CreateTime = time.Now()
  283. item.Mobile = user.Mobile
  284. item.Email = user.Email
  285. item.CompanyId = user.CompanyId
  286. item.CompanyName = user.CompanyName
  287. _, errSignup := models.AddActivitySignup(item)
  288. if errSignup != nil {
  289. br.Msg = "操作失败"
  290. br.ErrMsg = "操作失败,Err:" + errSignup.Error()
  291. return
  292. }
  293. br.Ret = 200
  294. br.Success = true
  295. br.Msg = "操作成功"
  296. }
  297. // @Title 用户搜索详情
  298. // @Description 获取活动详情接口
  299. // @Param ActivityId query int true "活动ID"
  300. // @Param IsShowJurisdiction query int true "是否仅展示有权限的,1是,0否 默认为0"
  301. // @Success Ret=200 {object} models.ActivityDetail
  302. // @router /getUserSearchContent [get]
  303. func (this *ActivityCoAntroller) GetUserSearchContent() {
  304. br := new(models.BaseResponse).Init()
  305. defer func() {
  306. this.Data["json"] = br
  307. this.ServeJSON()
  308. }()
  309. user := this.User
  310. if user == nil {
  311. br.Msg = "请登录"
  312. br.ErrMsg = "请登录,用户信息为空"
  313. br.Ret = 408
  314. return
  315. }
  316. uid := user.UserId
  317. detail, err := models.GetUserSearchContentByUid(uid)
  318. if err != nil {
  319. br.Msg = "获取信息失败"
  320. br.ErrMsg = "获取信息失败,Err:" + err.Error()
  321. return
  322. }
  323. //ChartPermissionids string `description:"行业id"`
  324. //ActivityTypeids string `description:"活动类型id"`
  325. //ActiveState string `description:
  326. //IsShowJurisdiction int `description:"是否仅展示有权限的,1是,0否"`
  327. chartPermissionidsSlice := strings.Split(detail.ChartPermissionids, ",")
  328. activityTypeidsSlice := strings.Split(detail.ActivityTypeids, ",")
  329. activeStateSlice := strings.Split(detail.ActiveState, ",")
  330. //activeStateSlice := [3]int{1, 2, 3} //"活动进行状态 未开始:1、进行中2、已结束3"`
  331. listActivityType, errActivityType := models.GetActivityTypeList()
  332. if errActivityType != nil {
  333. br.Msg = "获取失败"
  334. br.ErrMsg = "获取数据失败,Err:" + errActivityType.Error()
  335. return
  336. }
  337. for _, v := range activityTypeidsSlice {
  338. for k2, v2 := range listActivityType {
  339. if strconv.Itoa(v2.ActivityTypeId) == v {
  340. listActivityType[k2].IsChoose = true
  341. }
  342. }
  343. }
  344. listChartPermissionid, errChart := models.GetChartPermissionActivity()
  345. if errChart != nil {
  346. br.Msg = "获取信息失败"
  347. br.ErrMsg = "获取品种信息失败,Err:" + errChart.Error()
  348. return
  349. }
  350. for _, v := range chartPermissionidsSlice {
  351. for k2, v2 := range listChartPermissionid {
  352. if strconv.Itoa(v2.ChartPermissionId) == v {
  353. listChartPermissionid[k2].IsChoose = true
  354. }
  355. }
  356. }
  357. resp := new(models.ActivityUserSearchContentList)
  358. resp.ListActivityType = listActivityType
  359. resp.ListChartPermission = listChartPermissionid
  360. if detail.IsShowJurisdiction == 1 {
  361. resp.IsShowJurisdiction = true
  362. }
  363. activeStateList := []models.ActivityStaus{models.ActivityStaus{Id: 1, StatusName: "未开始"}, models.ActivityStaus{Id: 2, StatusName: "进行中"}, models.ActivityStaus{Id: 3, StatusName: "已结束"}}
  364. for _, v := range activeStateSlice {
  365. for k2, v2 := range activeStateList {
  366. if strconv.Itoa(v2.Id) == v {
  367. activeStateList[k2].IsChoose = true
  368. }
  369. }
  370. }
  371. if activeStateList[1].IsChoose == activeStateList[2].IsChoose == false {
  372. activeStateList[0].IsChoose = true
  373. }
  374. resp.ListActivityStaus = activeStateList
  375. br.Ret = 200
  376. br.Success = true
  377. br.Msg = "获取成功"
  378. br.Data = resp
  379. }
  380. type Arrayse struct {
  381. Id int
  382. IsChoose bool
  383. Name string
  384. }
  385. //"list" : [
  386. // {
  387. // "id" :1,
  388. // "IsChoose": bool
  389. // },
  390. // {
  391. // "id" :2,
  392. // "IsChoose": bool
  393. // },
  394. // {
  395. // "id" :3,
  396. // "IsChoose": bool
  397. // }
  398. //]