activity.go 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774
  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是,2否 默认为零"
  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. if signupStatus == "Success" {
  390. resp.ActivityId = activityId
  391. }
  392. if activityId%2 == 1 {
  393. resp.GoFollow = true
  394. }
  395. br.Ret = 200
  396. br.Success = true
  397. br.Msg = "操作成功"
  398. br.Data = resp
  399. }
  400. // @Title 活动取消报名
  401. // @Description 活动取消报名接口
  402. // @Param request body models.ActivitySingnupRep true "type json string"
  403. // @Success Ret=200 {object} models.SignupStatus
  404. // @router /signup/cancel [post]
  405. func (this *ActivityCoAntroller) SignupCancel() {
  406. br := new(models.BaseResponse).Init()
  407. defer func() {
  408. this.Data["json"] = br
  409. this.ServeJSON()
  410. }()
  411. user := this.User
  412. if user == nil {
  413. br.Msg = "请登录"
  414. br.ErrMsg = "请登录,用户信息为空"
  415. br.Ret = 408
  416. return
  417. }
  418. uid := user.UserId
  419. var req models.ActivitySingnupRep
  420. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  421. if err != nil {
  422. br.Msg = "参数解析异常!"
  423. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  424. return
  425. }
  426. activityId := req.ActivityId
  427. signupType := req.SignupType
  428. if signupType != 1 && signupType != 2 {
  429. br.Msg = "请选择正确的报名方式!"
  430. return
  431. }
  432. item := new(models.CygxActivitySignup)
  433. activityInfo, errInfo := models.GetAddActivityInfoById(activityId)
  434. if activityInfo == nil {
  435. br.Msg = "操作失败"
  436. br.ErrMsg = "活动ID错误,不存在activityId:" + strconv.Itoa(activityId)
  437. return
  438. }
  439. if errInfo != nil {
  440. br.Msg = "操作失败"
  441. br.ErrMsg = "操作失败,Err:" + errInfo.Error()
  442. return
  443. }
  444. resultTime := utils.StrTimeToTime(activityInfo.ActivityTime) //时间字符串格式转时间格式
  445. if time.Now().After(resultTime.Add(-time.Minute * 60)) {
  446. if signupType == 1 {
  447. br.Msg = "活动开始前1小时内无法取消预约外呼,请联系对口销售处理"
  448. } else {
  449. br.Msg = "活动开始前1小时内无法取消报名,请联系对口销售处理"
  450. }
  451. return
  452. }
  453. total, err := models.GetActivitySignupCount(uid, activityId)
  454. if err != nil {
  455. br.Msg = "获取失败"
  456. br.ErrMsg = "获取失败,Err:" + err.Error()
  457. return
  458. }
  459. if total == 0 {
  460. br.Msg = "您暂未报名这个活动"
  461. return
  462. }
  463. item.UserId = uid
  464. item.ActivityId = activityId
  465. item.CreateTime = time.Now()
  466. item.Mobile = user.Mobile
  467. item.Email = user.Email
  468. item.CompanyId = user.CompanyId
  469. item.CompanyName = user.CompanyName
  470. resp := new(models.SignupStatus)
  471. resp.ActivityId = activityId
  472. _, errSignup := models.CancelActivitySignup(item)
  473. if errSignup != nil {
  474. br.Msg = "操作失败"
  475. br.ErrMsg = "操作失败,Err:" + errSignup.Error()
  476. return
  477. }
  478. br.Ret = 200
  479. br.Success = true
  480. br.Msg = "操作成功"
  481. br.Data = resp
  482. }
  483. // @Title 用户搜索详情
  484. // @Description 获取用户搜索详情接口
  485. // @Param IsShowJurisdiction query int true "是否仅展示有权限的,默认为0,1是,2否 "
  486. // @Success Ret=200 {object} models.ActivityUserSearchContentList
  487. // @router /getUserSearchContent [get]
  488. func (this *ActivityCoAntroller) GetUserSearchContent() {
  489. br := new(models.BaseResponse).Init()
  490. defer func() {
  491. this.Data["json"] = br
  492. this.ServeJSON()
  493. }()
  494. user := this.User
  495. if user == nil {
  496. br.Msg = "请登录"
  497. br.ErrMsg = "请登录,用户信息为空"
  498. br.Ret = 408
  499. return
  500. }
  501. uid := user.UserId
  502. detail, err := models.GetUserSearchContentByUid(uid)
  503. if err != nil {
  504. br.Msg = "获取信息失败"
  505. br.ErrMsg = "获取信息失败,Err:" + err.Error()
  506. return
  507. }
  508. isShowJurisdiction, _ := this.GetInt("IsShowJurisdiction")
  509. chartPermissionidsSlice := strings.Split(detail.ChartPermissionids, ",")
  510. activityTypeidsSlice := strings.Split(detail.ActivityTypeids, ",")
  511. activeStateSlice := strings.Split(detail.ActiveState, ",") //"活动进行状态 未开始:1、进行中2、已结束3"`
  512. listActivityType, errActivityType := models.GetActivityTypeList()
  513. if errActivityType != nil {
  514. br.Msg = "获取失败"
  515. br.ErrMsg = "获取数据失败,Err:" + errActivityType.Error()
  516. return
  517. }
  518. for _, v := range activityTypeidsSlice {
  519. for k2, v2 := range listActivityType {
  520. if strconv.Itoa(v2.ActivityTypeId) == v {
  521. listActivityType[k2].IsChoose = true
  522. }
  523. }
  524. }
  525. var listChartPermissionid []*models.ActivityChartPermission
  526. var errChart error
  527. if isShowJurisdiction == 1 {
  528. listChartPermissionidAll, errChartAll := models.GetUserCompanyPermission(user.CompanyId)
  529. listChartPermissionid = listChartPermissionidAll
  530. errChart = errChartAll
  531. } else if isShowJurisdiction == 2 {
  532. listChartPermissionidAll, errChartAll := models.GetChartPermissionActivity()
  533. listChartPermissionid = listChartPermissionidAll
  534. errChart = errChartAll
  535. } else {
  536. if detail.IsShowJurisdiction == 1 {
  537. listChartPermissionidAll, errChartAll := models.GetUserCompanyPermission(user.CompanyId)
  538. listChartPermissionid = listChartPermissionidAll
  539. errChart = errChartAll
  540. } else {
  541. listChartPermissionidAll, errChartAll := models.GetChartPermissionActivity()
  542. listChartPermissionid = listChartPermissionidAll
  543. errChart = errChartAll
  544. }
  545. }
  546. if errChart != nil {
  547. br.Msg = "获取信息失败"
  548. br.ErrMsg = "获取品种信息失败,Err:" + errChart.Error()
  549. return
  550. }
  551. for _, v := range chartPermissionidsSlice {
  552. for k2, v2 := range listChartPermissionid {
  553. if strconv.Itoa(v2.ChartPermissionId) == v {
  554. listChartPermissionid[k2].IsChoose = true
  555. }
  556. }
  557. }
  558. resp := new(models.ActivityUserSearchContentList)
  559. resp.ListActivityType = listActivityType
  560. resp.ListChartPermission = listChartPermissionid
  561. if detail.IsShowJurisdiction == 1 {
  562. resp.IsShowJurisdiction = true
  563. }
  564. if isShowJurisdiction == 1 {
  565. resp.IsShowJurisdiction = true
  566. }
  567. activeStateList := []models.ActivityStaus{models.ActivityStaus{Id: 1, StatusName: "未开始"}, models.ActivityStaus{Id: 2, StatusName: "进行中"}, models.ActivityStaus{Id: 3, StatusName: "已结束"}}
  568. for _, v := range activeStateSlice {
  569. for k2, v2 := range activeStateList {
  570. if strconv.Itoa(v2.Id) == v {
  571. activeStateList[k2].IsChoose = true
  572. }
  573. }
  574. }
  575. if activeStateList[1].IsChoose == activeStateList[2].IsChoose == false {
  576. activeStateList[0].IsChoose = true
  577. }
  578. resp.ListActivityStaus = activeStateList
  579. br.Ret = 200
  580. br.Success = true
  581. br.Msg = "获取成功"
  582. br.Data = resp
  583. }
  584. // @Title 添加会议提醒
  585. // @Description 添加会议提醒接口
  586. // @Param request body models.ActivityIdRep true "type json string"
  587. // @Success Ret=200 {object} models.SignupStatus
  588. // @router /meetingReminder/add [post]
  589. func (this *ActivityCoAntroller) MeetingReminderAdd() {
  590. br := new(models.BaseResponse).Init()
  591. defer func() {
  592. this.Data["json"] = br
  593. this.ServeJSON()
  594. }()
  595. user := this.User
  596. if user == nil {
  597. br.Msg = "请登录"
  598. br.ErrMsg = "请登录,用户信息为空"
  599. br.Ret = 408
  600. return
  601. }
  602. uid := user.UserId
  603. //var signupStatus string
  604. signupStatus := "Success"
  605. var req models.ActivityIdRep
  606. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  607. if err != nil {
  608. br.Msg = "参数解析异常!"
  609. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  610. return
  611. }
  612. activityId := req.ActivityId
  613. //SignupStatus string `description:"报名状态:人数已满:FullStarffed、单机构超过两人:TwoPeople、爽约次数过多:BreakPromise、超时:Overtime 、成功:Success"`
  614. item := new(models.CygxActivityMeetingReminder)
  615. activityInfo, errInfo := models.GetAddActivityInfoById(activityId)
  616. if activityInfo == nil {
  617. br.Msg = "操作失败"
  618. br.ErrMsg = "活动ID错误,不存在activityId:" + strconv.Itoa(activityId)
  619. return
  620. }
  621. if errInfo != nil {
  622. br.Msg = "操作失败"
  623. br.ErrMsg = "操作失败,Err:" + errInfo.Error()
  624. return
  625. }
  626. resultTime := utils.StrTimeToTime(activityInfo.ActivityTime) //时间字符串格式转时间格式
  627. if time.Now().After(resultTime.Add(-time.Minute * 15)) {
  628. br.Msg = "活动开始前15分钟无法设置会议提醒"
  629. return
  630. }
  631. //if signupStatus == "Success" {
  632. total, err := models.GetActivitySignupCount(uid, activityId)
  633. if err != nil {
  634. br.Msg = "获取失败"
  635. br.ErrMsg = "获取失败,Err:" + err.Error()
  636. return
  637. }
  638. if total == 0 {
  639. br.Msg = "您暂未预约外呼这个活动"
  640. return
  641. }
  642. totalMeeting, errMeeting := models.GetActivityMeetingReminderCount(uid, activityId)
  643. if errMeeting != nil {
  644. br.Msg = "获取失败"
  645. br.ErrMsg = "获取失败,Err:" + err.Error()
  646. return
  647. }
  648. if totalMeeting > 0 {
  649. br.Msg = "您已预约,请勿重复预约"
  650. return
  651. }
  652. item.UserId = uid
  653. item.ActivityId = activityId
  654. item.CreateTime = time.Now()
  655. item.Mobile = user.Mobile
  656. item.Email = user.Email
  657. item.CompanyId = user.CompanyId
  658. item.CompanyName = user.CompanyName
  659. _, errSignup := models.AddActivityMeetingReminder(item)
  660. if errSignup != nil {
  661. br.Msg = "操作失败"
  662. br.ErrMsg = "操作失败,Err:" + errSignup.Error()
  663. return
  664. }
  665. //}
  666. resp := new(models.SignupStatus)
  667. resp.SignupStatus = signupStatus
  668. resp.ActivityId = activityId
  669. if activityId%2 == 1 {
  670. resp.GoFollow = true
  671. }
  672. br.Ret = 200
  673. br.Success = true
  674. br.Msg = "设置成功,会前15分钟会为您推送微信消息提醒"
  675. br.Data = resp
  676. }
  677. // @Title 取消会议提醒
  678. // @Description 取消会议提醒接口
  679. // @Param request body models.ActivityIdRep true "type json string"
  680. // @Success Ret=200 {object} models.SignupStatus
  681. // @router /meetingReminder/cancel [post]
  682. func (this *ActivityCoAntroller) MeetingReminderCancel() {
  683. br := new(models.BaseResponse).Init()
  684. defer func() {
  685. this.Data["json"] = br
  686. this.ServeJSON()
  687. }()
  688. user := this.User
  689. if user == nil {
  690. br.Msg = "请登录"
  691. br.ErrMsg = "请登录,用户信息为空"
  692. br.Ret = 408
  693. return
  694. }
  695. uid := user.UserId
  696. var req models.ActivityIdRep
  697. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  698. if err != nil {
  699. br.Msg = "参数解析异常!"
  700. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  701. return
  702. }
  703. activityId := req.ActivityId
  704. signupStatus := "Success"
  705. item := new(models.CygxActivityMeetingReminder)
  706. activityInfo, errInfo := models.GetAddActivityInfoById(activityId)
  707. if activityInfo == nil {
  708. br.Msg = "操作失败"
  709. br.ErrMsg = "活动ID错误,不存在activityId:" + strconv.Itoa(activityId)
  710. return
  711. }
  712. if errInfo != nil {
  713. br.Msg = "操作失败"
  714. br.ErrMsg = "操作失败,Err:" + errInfo.Error()
  715. return
  716. }
  717. //if signupStatus == "Success" {
  718. total, err := models.GetActivityMeetingReminderCount(uid, activityId)
  719. if err != nil {
  720. br.Msg = "获取失败"
  721. br.ErrMsg = "获取失败,Err:" + err.Error()
  722. return
  723. }
  724. if total == 0 {
  725. br.Msg = "您暂未添加该活动会议提醒"
  726. return
  727. }
  728. resultTime := utils.StrTimeToTime(activityInfo.ActivityTime) //时间字符串格式转时间格式
  729. if time.Now().After(resultTime.Add(-time.Minute * 15)) {
  730. br.Msg = "活动开始前15分钟无法取消会议提醒"
  731. return
  732. }
  733. item.UserId = uid
  734. item.ActivityId = activityId
  735. item.CreateTime = time.Now()
  736. item.Mobile = user.Mobile
  737. item.Email = user.Email
  738. item.CompanyId = user.CompanyId
  739. item.CompanyName = user.CompanyName
  740. _, errSignup := models.CancelActivityMeetingReminder(item)
  741. if errSignup != nil {
  742. br.Msg = "操作失败"
  743. br.ErrMsg = "操作失败,Err:" + errSignup.Error()
  744. return
  745. }
  746. //}
  747. resp := new(models.SignupStatus)
  748. resp.SignupStatus = signupStatus
  749. resp.ActivityId = activityId
  750. br.Ret = 200
  751. br.Success = true
  752. br.Msg = "操作成功"
  753. br.Data = resp
  754. }