activity.go 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751
  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 == "" {
  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 AND art.active_state IN (` + activeState + `)`
  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 PageSize query int true "每页数据条数"
  203. // @Param CurrentIndex query int true "当前页页码,从1开始"
  204. // @Success 200 {object} models.GetCygxActivityListRep
  205. // @router /scheduleList [get]
  206. func (this *ActivityCoAntroller) ScheduleList() {
  207. br := new(models.BaseResponse).Init()
  208. defer func() {
  209. this.Data["json"] = br
  210. this.ServeJSON()
  211. }()
  212. user := this.User
  213. if user == nil {
  214. br.Msg = "请登录"
  215. br.ErrMsg = "请登录,SysUser Is Empty"
  216. return
  217. }
  218. uid := user.UserId
  219. pageSize, _ := this.GetInt("PageSize")
  220. currentIndex, _ := this.GetInt("CurrentIndex")
  221. var startSize int
  222. if pageSize <= 0 {
  223. pageSize = utils.PageSize20
  224. }
  225. if currentIndex <= 0 {
  226. currentIndex = 1
  227. }
  228. startSize = utils.StartIndex(currentIndex, pageSize)
  229. var condition string
  230. var pars []interface{}
  231. condition += ` AND art.publish_status = 1 AND art.active_state IN(1,2) AND s.is_cancel = 0 AND s.fail_type = 0 `
  232. total, err := models.GetScheduleCount(condition, uid)
  233. if err != nil {
  234. br.Msg = "获取失败"
  235. br.ErrMsg = "获取失败,Err:" + err.Error()
  236. return
  237. }
  238. list, errList := models.GetScheduleList(condition, pars, uid, startSize, pageSize)
  239. if errList != nil {
  240. br.Msg = "获取失败"
  241. br.ErrMsg = "获取失败,Err:" + errList.Error()
  242. return
  243. }
  244. page := paging.GetPaging(currentIndex, pageSize, total)
  245. resp := new(models.GetCygxActivityListRep)
  246. resp.List = list
  247. resp.Paging = page
  248. br.Ret = 200
  249. br.Success = true
  250. br.Msg = "获取成功"
  251. br.Data = resp
  252. }
  253. // @Title 活动详情
  254. // @Description 获取活动详情接口
  255. // @Param ActivityId query int true "活动ID"
  256. // @Success Ret=200 {object} models.ActivityDetail
  257. // @router /detail [get]
  258. func (this *ActivityCoAntroller) Detail() {
  259. br := new(models.BaseResponse).Init()
  260. defer func() {
  261. this.Data["json"] = br
  262. this.ServeJSON()
  263. }()
  264. user := this.User
  265. if user == nil {
  266. br.Msg = "请登录"
  267. br.ErrMsg = "请登录,用户信息为空"
  268. br.Ret = 408
  269. return
  270. }
  271. uid := user.UserId
  272. activityId, _ := this.GetInt("ActivityId")
  273. if activityId < 1 {
  274. br.Msg = "请输入活动ID"
  275. return
  276. }
  277. activityInfo, err := models.GetAddActivityInfoByIdShow(uid, activityId)
  278. if activityInfo == nil {
  279. br.Msg = "活动不存在"
  280. br.ErrMsg = "活动ID错误,Err:" + err.Error() + "activityId:" + strconv.Itoa(activityId)
  281. return
  282. }
  283. detail, errDetail := models.GetActivityTypeDetailById(activityInfo.ActivityTypeId)
  284. if errDetail != nil {
  285. br.Msg = "获取信息失败"
  286. br.ErrMsg = "获取信息失败,Err:" + errDetail.Error()
  287. return
  288. }
  289. activityInfo.ShowType = detail.ShowType
  290. br.Ret = 200
  291. br.Success = true
  292. br.Msg = "获取成功"
  293. br.Data = activityInfo
  294. }
  295. // @Title 活动报名
  296. // @Description 活动报名接口
  297. // @Param request body models.ActivitySingnupRep true "type json string"
  298. // @Success Ret=200 {object} models.SignupStatus
  299. // @router /signup/add [post]
  300. func (this *ActivityCoAntroller) SignupAdd() {
  301. br := new(models.BaseResponse).Init()
  302. defer func() {
  303. this.Data["json"] = br
  304. this.ServeJSON()
  305. }()
  306. user := this.User
  307. if user == nil {
  308. br.Msg = "请登录"
  309. br.ErrMsg = "请登录,用户信息为空"
  310. br.Ret = 408
  311. return
  312. }
  313. uid := user.UserId
  314. //var signupStatus string
  315. signupStatus := ""
  316. var req models.ActivitySingnupRep
  317. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  318. if err != nil {
  319. br.Msg = "参数解析异常!"
  320. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  321. return
  322. }
  323. activityId := req.ActivityId
  324. signupType := req.SignupType
  325. if signupType != 1 && signupType != 2 {
  326. br.Msg = "请选择正确的报名方式!"
  327. return
  328. }
  329. //SignupStatus string `description:"报名状态:人数已满:FullStarffed、单机构超过两人:TwoPeople、爽约次数过多:BreakPromise、超时:Overtime 、成功:Success"`
  330. item := new(models.CygxActivitySignup)
  331. //if activityId%5 == 1 {
  332. // signupStatus = "FullStarffed"
  333. // item.FailType = 1
  334. //} else if activityId%5 == 2 {
  335. // signupStatus = "TwoPeople"
  336. // item.FailType = 2
  337. //} else if activityId%5 == 3 {
  338. // signupStatus = "BreakPromise"
  339. // item.FailType = 3
  340. //} else if activityId%5 == 4 {
  341. // signupStatus = "Overtime"
  342. //} else if activityId%5 == 5 {
  343. // signupStatus = "Success"
  344. //}
  345. signupStatus = "Success"
  346. activityInfo, errInfo := models.GetAddActivityInfoById(activityId)
  347. if activityInfo == nil {
  348. br.Msg = "操作失败"
  349. br.ErrMsg = "活动ID错误,不存在activityId:" + strconv.Itoa(activityId)
  350. return
  351. }
  352. if errInfo != nil {
  353. br.Msg = "操作失败"
  354. br.ErrMsg = "操作失败,Err:" + errInfo.Error()
  355. return
  356. }
  357. resultTime := utils.StrTimeToTime(activityInfo.ActivityTime) //时间字符串格式转时间格式
  358. if time.Now().After(resultTime.Add(-time.Minute * 60)) {
  359. signupStatus = "Overtime"
  360. }
  361. total, errtotal := models.GetActivitySignupCount(uid, activityId)
  362. if errtotal != nil {
  363. br.Msg = "获取失败"
  364. br.ErrMsg = "获取失败,Err:" + errtotal.Error()
  365. return
  366. }
  367. if total > 0 {
  368. br.Msg = "您已报名这个活动"
  369. return
  370. }
  371. if signupStatus == "Success" {
  372. item.UserId = uid
  373. item.ActivityId = activityId
  374. item.CreateTime = time.Now()
  375. item.Mobile = user.Mobile
  376. item.Email = user.Email
  377. item.CompanyId = user.CompanyId
  378. item.CompanyName = user.CompanyName
  379. _, errSignup := models.AddActivitySignup(item)
  380. if errSignup != nil {
  381. br.Msg = "操作失败"
  382. br.ErrMsg = "操作失败,Err:" + errSignup.Error()
  383. return
  384. }
  385. }
  386. resp := new(models.SignupStatus)
  387. resp.SignupType = signupType
  388. resp.SignupStatus = signupStatus
  389. resp.ActivityId = activityId
  390. if activityId%2 == 1 {
  391. resp.GoFollow = true
  392. }
  393. br.Ret = 200
  394. br.Success = true
  395. br.Msg = "操作成功"
  396. br.Data = resp
  397. }
  398. // @Title 活动取消报名
  399. // @Description 活动取消报名接口
  400. // @Param request body models.ActivitySingnupRep true "type json string"
  401. // @Success 200 操作成功
  402. // @router /signup/cancel [post]
  403. func (this *ActivityCoAntroller) SignupCancel() {
  404. br := new(models.BaseResponse).Init()
  405. defer func() {
  406. this.Data["json"] = br
  407. this.ServeJSON()
  408. }()
  409. user := this.User
  410. if user == nil {
  411. br.Msg = "请登录"
  412. br.ErrMsg = "请登录,用户信息为空"
  413. br.Ret = 408
  414. return
  415. }
  416. uid := user.UserId
  417. var req models.ActivitySingnupRep
  418. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  419. if err != nil {
  420. br.Msg = "参数解析异常!"
  421. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  422. return
  423. }
  424. activityId := req.ActivityId
  425. signupType := req.SignupType
  426. if signupType != 1 && signupType != 2 {
  427. br.Msg = "请选择正确的报名方式!"
  428. return
  429. }
  430. item := new(models.CygxActivitySignup)
  431. activityInfo, errInfo := models.GetAddActivityInfoById(activityId)
  432. if activityInfo == nil {
  433. br.Msg = "操作失败"
  434. br.ErrMsg = "活动ID错误,不存在activityId:" + strconv.Itoa(activityId)
  435. return
  436. }
  437. if errInfo != nil {
  438. br.Msg = "操作失败"
  439. br.ErrMsg = "操作失败,Err:" + errInfo.Error()
  440. return
  441. }
  442. resultTime := utils.StrTimeToTime(activityInfo.ActivityTime) //时间字符串格式转时间格式
  443. if time.Now().After(resultTime.Add(-time.Minute * 60)) {
  444. if signupType == 1 {
  445. br.Msg = "活动开始前1小时内无法取消预约外呼,请联系对口销售处理"
  446. } else {
  447. br.Msg = "活动开始前1小时内无法取消报名,请联系对口销售处理"
  448. }
  449. return
  450. }
  451. total, err := models.GetActivitySignupCount(uid, activityId)
  452. if err != nil {
  453. br.Msg = "获取失败"
  454. br.ErrMsg = "获取失败,Err:" + err.Error()
  455. return
  456. }
  457. if total == 0 {
  458. br.Msg = "您暂未报名这个活动"
  459. return
  460. }
  461. item.UserId = uid
  462. item.ActivityId = activityId
  463. item.CreateTime = time.Now()
  464. item.Mobile = user.Mobile
  465. item.Email = user.Email
  466. item.CompanyId = user.CompanyId
  467. item.CompanyName = user.CompanyName
  468. resp := new(models.SignupStatus)
  469. resp.ActivityId = activityId
  470. _, errSignup := models.CancelActivitySignup(item)
  471. if errSignup != nil {
  472. br.Msg = "操作失败"
  473. br.ErrMsg = "操作失败,Err:" + errSignup.Error()
  474. return
  475. }
  476. br.Ret = 200
  477. br.Success = true
  478. br.Msg = "操作成功"
  479. br.Data = resp
  480. }
  481. // @Title 用户搜索详情
  482. // @Description 获取用户搜索详情接口
  483. // @Param IsShowJurisdiction query int true "是否仅展示有权限的,1是,0否 默认为0"
  484. // @Success Ret=200 {object} models.ActivityUserSearchContentList
  485. // @router /getUserSearchContent [get]
  486. func (this *ActivityCoAntroller) GetUserSearchContent() {
  487. br := new(models.BaseResponse).Init()
  488. defer func() {
  489. this.Data["json"] = br
  490. this.ServeJSON()
  491. }()
  492. user := this.User
  493. if user == nil {
  494. br.Msg = "请登录"
  495. br.ErrMsg = "请登录,用户信息为空"
  496. br.Ret = 408
  497. return
  498. }
  499. uid := user.UserId
  500. detail, err := models.GetUserSearchContentByUid(uid)
  501. if err != nil {
  502. br.Msg = "获取信息失败"
  503. br.ErrMsg = "获取信息失败,Err:" + err.Error()
  504. return
  505. }
  506. isShowJurisdiction, _ := this.GetInt("IsShowJurisdiction")
  507. chartPermissionidsSlice := strings.Split(detail.ChartPermissionids, ",")
  508. activityTypeidsSlice := strings.Split(detail.ActivityTypeids, ",")
  509. activeStateSlice := strings.Split(detail.ActiveState, ",") //"活动进行状态 未开始:1、进行中2、已结束3"`
  510. listActivityType, errActivityType := models.GetActivityTypeList()
  511. if errActivityType != nil {
  512. br.Msg = "获取失败"
  513. br.ErrMsg = "获取数据失败,Err:" + errActivityType.Error()
  514. return
  515. }
  516. for _, v := range activityTypeidsSlice {
  517. for k2, v2 := range listActivityType {
  518. if strconv.Itoa(v2.ActivityTypeId) == v {
  519. listActivityType[k2].IsChoose = true
  520. }
  521. }
  522. }
  523. listChartPermissionid, errChart := models.GetChartPermissionActivity()
  524. if errChart != nil {
  525. br.Msg = "获取信息失败"
  526. br.ErrMsg = "获取品种信息失败,Err:" + errChart.Error()
  527. return
  528. }
  529. for _, v := range chartPermissionidsSlice {
  530. for k2, v2 := range listChartPermissionid {
  531. if strconv.Itoa(v2.ChartPermissionId) == v {
  532. listChartPermissionid[k2].IsChoose = true
  533. }
  534. }
  535. }
  536. resp := new(models.ActivityUserSearchContentList)
  537. resp.ListActivityType = listActivityType
  538. resp.ListChartPermission = listChartPermissionid
  539. if detail.IsShowJurisdiction == 1 {
  540. resp.IsShowJurisdiction = true
  541. }
  542. if isShowJurisdiction == 1 {
  543. resp.IsShowJurisdiction = true
  544. }
  545. activeStateList := []models.ActivityStaus{models.ActivityStaus{Id: 1, StatusName: "未开始"}, models.ActivityStaus{Id: 2, StatusName: "进行中"}, models.ActivityStaus{Id: 3, StatusName: "已结束"}}
  546. for _, v := range activeStateSlice {
  547. for k2, v2 := range activeStateList {
  548. if strconv.Itoa(v2.Id) == v {
  549. activeStateList[k2].IsChoose = true
  550. }
  551. }
  552. }
  553. if activeStateList[1].IsChoose == activeStateList[2].IsChoose == false {
  554. activeStateList[0].IsChoose = true
  555. }
  556. resp.ListActivityStaus = activeStateList
  557. br.Ret = 200
  558. br.Success = true
  559. br.Msg = "获取成功"
  560. br.Data = resp
  561. }
  562. // @Title 添加会议提醒
  563. // @Description 添加会议提醒接口
  564. // @Param request body models.ActivityIdRep true "type json string"
  565. // @Success Ret=200 {object} models.SignupStatus
  566. // @router /meetingReminder/add [post]
  567. func (this *ActivityCoAntroller) MeetingReminderAdd() {
  568. br := new(models.BaseResponse).Init()
  569. defer func() {
  570. this.Data["json"] = br
  571. this.ServeJSON()
  572. }()
  573. user := this.User
  574. if user == nil {
  575. br.Msg = "请登录"
  576. br.ErrMsg = "请登录,用户信息为空"
  577. br.Ret = 408
  578. return
  579. }
  580. uid := user.UserId
  581. //var signupStatus string
  582. signupStatus := "Success"
  583. var req models.ActivityIdRep
  584. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  585. if err != nil {
  586. br.Msg = "参数解析异常!"
  587. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  588. return
  589. }
  590. activityId := req.ActivityId
  591. //SignupStatus string `description:"报名状态:人数已满:FullStarffed、单机构超过两人:TwoPeople、爽约次数过多:BreakPromise、超时:Overtime 、成功:Success"`
  592. item := new(models.CygxActivityMeetingReminder)
  593. activityInfo, errInfo := models.GetAddActivityInfoById(activityId)
  594. if activityInfo == nil {
  595. br.Msg = "操作失败"
  596. br.ErrMsg = "活动ID错误,不存在activityId:" + strconv.Itoa(activityId)
  597. return
  598. }
  599. if errInfo != nil {
  600. br.Msg = "操作失败"
  601. br.ErrMsg = "操作失败,Err:" + errInfo.Error()
  602. return
  603. }
  604. resultTime := utils.StrTimeToTime(activityInfo.ActivityTime) //时间字符串格式转时间格式
  605. if time.Now().After(resultTime.Add(-time.Minute * 15)) {
  606. br.Msg = "活动开始前15分钟无法设置会议提醒"
  607. return
  608. }
  609. //if signupStatus == "Success" {
  610. total, err := models.GetActivitySignupCount(uid, activityId)
  611. if err != nil {
  612. br.Msg = "获取失败"
  613. br.ErrMsg = "获取失败,Err:" + err.Error()
  614. return
  615. }
  616. if total == 0 {
  617. br.Msg = "您暂未预约外呼这个活动"
  618. return
  619. }
  620. totalMeeting, errMeeting := models.GetActivityMeetingReminderCount(uid, activityId)
  621. if errMeeting != nil {
  622. br.Msg = "获取失败"
  623. br.ErrMsg = "获取失败,Err:" + err.Error()
  624. return
  625. }
  626. if totalMeeting > 0 {
  627. br.Msg = "您已预约,请勿重复预约"
  628. return
  629. }
  630. item.UserId = uid
  631. item.ActivityId = activityId
  632. item.CreateTime = time.Now()
  633. item.Mobile = user.Mobile
  634. item.Email = user.Email
  635. item.CompanyId = user.CompanyId
  636. item.CompanyName = user.CompanyName
  637. _, errSignup := models.AddActivityMeetingReminder(item)
  638. if errSignup != nil {
  639. br.Msg = "操作失败"
  640. br.ErrMsg = "操作失败,Err:" + errSignup.Error()
  641. return
  642. }
  643. //}
  644. resp := new(models.SignupStatus)
  645. resp.SignupStatus = signupStatus
  646. resp.ActivityId = activityId
  647. if activityId%2 == 1 {
  648. resp.GoFollow = true
  649. }
  650. br.Ret = 200
  651. br.Success = true
  652. br.Msg = "设置成功,会前15分钟会为您推送微信消息提醒"
  653. br.Data = resp
  654. }
  655. // @Title 取消会议提醒
  656. // @Description 取消会议提醒接口
  657. // @Param request body models.ActivityIdRep true "type json string"
  658. // @Success 200 操作成功
  659. // @router /meetingReminder/cancel [post]
  660. func (this *ActivityCoAntroller) MeetingReminderCancel() {
  661. br := new(models.BaseResponse).Init()
  662. defer func() {
  663. this.Data["json"] = br
  664. this.ServeJSON()
  665. }()
  666. user := this.User
  667. if user == nil {
  668. br.Msg = "请登录"
  669. br.ErrMsg = "请登录,用户信息为空"
  670. br.Ret = 408
  671. return
  672. }
  673. uid := user.UserId
  674. var req models.ActivityIdRep
  675. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  676. if err != nil {
  677. br.Msg = "参数解析异常!"
  678. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  679. return
  680. }
  681. activityId := req.ActivityId
  682. signupStatus := "Success"
  683. item := new(models.CygxActivityMeetingReminder)
  684. activityInfo, errInfo := models.GetAddActivityInfoById(activityId)
  685. if activityInfo == nil {
  686. br.Msg = "操作失败"
  687. br.ErrMsg = "活动ID错误,不存在activityId:" + strconv.Itoa(activityId)
  688. return
  689. }
  690. if errInfo != nil {
  691. br.Msg = "操作失败"
  692. br.ErrMsg = "操作失败,Err:" + errInfo.Error()
  693. return
  694. }
  695. //if signupStatus == "Success" {
  696. total, err := models.GetActivityMeetingReminderCount(uid, activityId)
  697. if err != nil {
  698. br.Msg = "获取失败"
  699. br.ErrMsg = "获取失败,Err:" + err.Error()
  700. return
  701. }
  702. if total == 0 {
  703. br.Msg = "您暂未添加该活动会议提醒"
  704. return
  705. }
  706. resultTime := utils.StrTimeToTime(activityInfo.ActivityTime) //时间字符串格式转时间格式
  707. if time.Now().After(resultTime.Add(-time.Minute * 15)) {
  708. br.Msg = "活动开始前15分钟无法取消会议提醒"
  709. return
  710. }
  711. item.UserId = uid
  712. item.ActivityId = activityId
  713. item.CreateTime = time.Now()
  714. item.Mobile = user.Mobile
  715. item.Email = user.Email
  716. item.CompanyId = user.CompanyId
  717. item.CompanyName = user.CompanyName
  718. _, errSignup := models.CancelActivityMeetingReminder(item)
  719. if errSignup != nil {
  720. br.Msg = "操作失败"
  721. br.ErrMsg = "操作失败,Err:" + errSignup.Error()
  722. return
  723. }
  724. //}
  725. resp := new(models.SignupStatus)
  726. resp.SignupStatus = signupStatus
  727. resp.ActivityId = activityId
  728. br.Ret = 200
  729. br.Success = true
  730. br.Msg = "操作成功"
  731. br.Data = resp
  732. }