activity.go 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741
  1. package controllers
  2. import (
  3. "encoding/json"
  4. "fmt"
  5. "hongze/hongze_cygx/models"
  6. "hongze/hongze_cygx/utils"
  7. "rdluck_tools/paging"
  8. "strconv"
  9. "strings"
  10. "time"
  11. )
  12. //活动
  13. type ActivityCoAntroller struct {
  14. BaseAuthController
  15. }
  16. // @Title 活动类型列表
  17. // @Description活动类型列表接口
  18. // @Success 200 {object} models.ActivityTypeListResp
  19. // @router /activityTypelist [get]
  20. func (this *ActivityCoAntroller) List() {
  21. br := new(models.BaseResponse).Init()
  22. defer func() {
  23. this.Data["json"] = br
  24. this.ServeJSON()
  25. }()
  26. user := this.User
  27. if user == nil {
  28. br.Msg = "请登录"
  29. br.ErrMsg = "请登录,SysUser Is Empty"
  30. br.Ret = 408
  31. return
  32. }
  33. resp := new(models.ActivityTypeListResp)
  34. list, err := models.GetActivityTypeList()
  35. if err != nil {
  36. br.Msg = "获取失败"
  37. br.ErrMsg = "获取数据失败,Err:" + err.Error()
  38. return
  39. }
  40. resp.List = list
  41. br.Ret = 200
  42. br.Success = true
  43. br.Msg = "获取成功"
  44. br.Data = resp
  45. }
  46. // @Title 活动列表
  47. // @Description 获取活动列表接口
  48. // @Param PageSize query int true "每页数据条数"
  49. // @Param CurrentIndex query int true "当前页页码,从1开始"
  50. // @Param ChartPermissionIds query string false "行业id 多个用 , 隔开"
  51. // @Param ActivityTypeIds query string false "活动类型id 多个用 , 隔开"
  52. // @Param KeyWord query string false "搜索关键词"
  53. // @Param ActiveState query string false "活动进行状态 未开始:1、进行中2、已结束3"
  54. // @Param IsShowJurisdiction query int false "是否仅展示有权限的,1是,0否 默认为零"
  55. // @Success 200 {object} models.GetCygxActivityListRep
  56. // @router /list [get]
  57. func (this *ActivityCoAntroller) ActivityList() {
  58. br := new(models.BaseResponse).Init()
  59. defer func() {
  60. this.Data["json"] = br
  61. this.ServeJSON()
  62. }()
  63. user := this.User
  64. if user == nil {
  65. br.Msg = "请登录"
  66. br.ErrMsg = "请登录,SysUser Is Empty"
  67. return
  68. }
  69. uid := user.UserId
  70. pageSize, _ := this.GetInt("PageSize")
  71. currentIndex, _ := this.GetInt("CurrentIndex")
  72. chartPermissionIds := this.GetString("ChartPermissionIds")
  73. activityTypeIds := this.GetString("ActivityTypeIds")
  74. isShowJurisdiction, _ := this.GetInt("IsShowJurisdiction")
  75. keyWord := this.GetString("KeyWord")
  76. activeState := this.GetString("ActiveState")
  77. if activeState != "2" && activeState != "3" {
  78. activeState = "1"
  79. }
  80. if isShowJurisdiction != 1 {
  81. isShowJurisdiction = 0
  82. }
  83. itemSearch := new(models.CygxActivityUserSearchContent)
  84. itemSearch.UserId = uid
  85. itemSearch.CreateTime = time.Now()
  86. itemSearch.Mobile = user.Mobile
  87. itemSearch.Email = user.Email
  88. itemSearch.CompanyId = user.CompanyId
  89. itemSearch.CompanyName = user.CompanyName
  90. itemSearch.ModifyTime = time.Now()
  91. itemSearch.ChartPermissionids = chartPermissionIds
  92. itemSearch.ActivityTypeids = activityTypeIds
  93. itemSearch.ActiveState = activeState
  94. itemSearch.IsShowJurisdiction = isShowJurisdiction
  95. _, errSearch := models.AddUserSearchContent(itemSearch)
  96. if errSearch != nil {
  97. br.Msg = "操作失败"
  98. br.ErrMsg = "操作失败,Err:" + errSearch.Error()
  99. return
  100. }
  101. var startSize int
  102. if pageSize <= 0 {
  103. pageSize = utils.PageSize20
  104. }
  105. if currentIndex <= 0 {
  106. currentIndex = 1
  107. }
  108. startSize = utils.StartIndex(currentIndex, pageSize)
  109. var condition string
  110. var pars []interface{}
  111. if keyWord != "" {
  112. condition += ` AND (art.activity_name LIKE '%` + keyWord + `%' ) `
  113. }
  114. //行业名称
  115. if len(chartPermissionIds) > 0 {
  116. condition += ` AND art.chart_permission_id IN (` + chartPermissionIds + `)`
  117. }
  118. condition += ` AND art.publish_status = 1 `
  119. //1专家电话会、2分析师电话会、3公司调研电话会、4公司线下调研、5专家线下沙龙、6分析师线下沙龙
  120. resultTimeNow := time.Now().Format("2006-01-02 15:04:05")
  121. resultTime30 := time.Now().Add(+time.Minute * 30).Format("2006-01-02 15:04:05")
  122. resultTime_30 := time.Now().Add(-time.Minute * 30).Format("2006-01-02 15:04:05")
  123. resultTime60 := time.Now().Add(+time.Minute * 60).Format("2006-01-02 15:04:05")
  124. resultTime_60 := time.Now().Add(-time.Minute * 60).Format("2006-01-02 15:04:05")
  125. if activeState == "1" {
  126. if len(activityTypeIds) > 0 {
  127. condition += ` AND art.activity_type_id IN (` + activityTypeIds + `)`
  128. }
  129. condition += ` AND art.activity_time > ` + "'" + resultTimeNow + "'"
  130. } else if activeState == "2" {
  131. condition += ` AND art.activity_time > ` + "'" + resultTimeNow + "'"
  132. if len(activityTypeIds) > 0 {
  133. condition += ` AND art.activity_type_id IN (` + activityTypeIds + `)`
  134. condition += ` AND art.activity_time < ` + "'" + resultTime30 + "'"
  135. } else {
  136. var sqlOr string
  137. sqlOr = condition
  138. condition += ` AND (art.activity_type_id IN ( 1, 2, 3 ) AND art.activity_time < ` + "'" + resultTime30 + "'" + ")"
  139. condition += ` OR(art.activity_type_id IN ( 4, 5, 6 ) AND art.activity_time < ` + "'" + resultTime60 + "'" + sqlOr + ")"
  140. }
  141. } else {
  142. if len(activityTypeIds) > 0 {
  143. condition += ` AND art.activity_type_id IN (` + activityTypeIds + `)`
  144. condition += ` AND art.activity_time > ` + "'" + resultTime_30 + "'"
  145. } else {
  146. var sqlOr string
  147. sqlOr = condition
  148. condition += ` AND (art.activity_type_id IN ( 1, 2, 3 ) AND art.activity_time <` + "'" + resultTime_30 + "'" + ")"
  149. condition += ` OR(art.activity_type_id IN ( 4, 5, 6 ) AND art.activity_time < ` + "'" + resultTime_60 + "'" + sqlOr + ")"
  150. }
  151. }
  152. total, err := models.GetActivityCount(condition, pars)
  153. if err != nil {
  154. br.Msg = "获取失败"
  155. br.ErrMsg = "获取失败,Err:" + err.Error()
  156. return
  157. }
  158. if activeState != "1" {
  159. condition += ` ORDER BY art.activity_time DESC `
  160. }
  161. //condition += ` ORDER BY art.activity_time DESC `
  162. list, errList := models.GetActivityListAll(condition, pars, uid, startSize, pageSize)
  163. srt30min := "1,2,3"
  164. srt60min := "4,5,6"
  165. for k, v := range list {
  166. if strings.Contains(srt30min, strconv.Itoa(v.ActivityTypeId)) {
  167. resultTime := utils.StrTimeToTime(v.ActivityTime) //时间字符串格式转时间格式
  168. if resultTime.After(time.Now()) {
  169. list[k].ActiveState = "1"
  170. } else if time.Now().After(resultTime) && resultTime.After(time.Now().Add(+time.Minute*30)) {
  171. list[k].ActiveState = "2"
  172. } else {
  173. list[k].ActiveState = "3"
  174. }
  175. }
  176. if strings.Contains(srt60min, strconv.Itoa(v.ActivityTypeId)) {
  177. resultTime := utils.StrTimeToTime(v.ActivityTime) //时间字符串格式转时间格式
  178. if resultTime.After(time.Now()) {
  179. list[k].ActiveState = "1"
  180. } else if time.Now().After(resultTime) && resultTime.After(time.Now().Add(+time.Minute*60)) {
  181. list[k].ActiveState = "2"
  182. } else {
  183. list[k].ActiveState = "3"
  184. }
  185. }
  186. }
  187. if errList != nil {
  188. br.Msg = "获取失败"
  189. br.ErrMsg = "获取失败,Err:" + errList.Error()
  190. return
  191. }
  192. page := paging.GetPaging(currentIndex, pageSize, total)
  193. resp := new(models.GetCygxActivityListRep)
  194. resp.List = list
  195. resp.Paging = page
  196. br.Ret = 200
  197. br.Success = true
  198. br.Msg = "获取成功"
  199. br.Data = resp
  200. }
  201. // @Title 我的日程
  202. // @Description 我的日程列表接口
  203. // @Param PageSize query int true "每页数据条数"
  204. // @Param CurrentIndex query int true "当前页页码,从1开始"
  205. // @Success 200 {object} models.GetCygxActivityListRep
  206. // @router /scheduleList [get]
  207. func (this *ActivityCoAntroller) ScheduleList() {
  208. br := new(models.BaseResponse).Init()
  209. defer func() {
  210. this.Data["json"] = br
  211. this.ServeJSON()
  212. }()
  213. user := this.User
  214. if user == nil {
  215. br.Msg = "请登录"
  216. br.ErrMsg = "请登录,SysUser Is Empty"
  217. return
  218. }
  219. uid := user.UserId
  220. pageSize, _ := this.GetInt("PageSize")
  221. currentIndex, _ := this.GetInt("CurrentIndex")
  222. var startSize int
  223. if pageSize <= 0 {
  224. pageSize = utils.PageSize20
  225. }
  226. if currentIndex <= 0 {
  227. currentIndex = 1
  228. }
  229. startSize = utils.StartIndex(currentIndex, pageSize)
  230. var condition string
  231. var pars []interface{}
  232. condition += ` AND art.publish_status = 1 AND art.active_state IN(1,2) AND s.is_cancel = 0 AND s.fail_type = 0 `
  233. total, err := models.GetScheduleCount(condition, uid)
  234. if err != nil {
  235. br.Msg = "获取失败"
  236. br.ErrMsg = "获取失败,Err:" + err.Error()
  237. return
  238. }
  239. list, errList := models.GetScheduleList(condition, pars, uid, startSize, pageSize)
  240. if errList != nil {
  241. br.Msg = "获取失败"
  242. br.ErrMsg = "获取失败,Err:" + errList.Error()
  243. return
  244. }
  245. page := paging.GetPaging(currentIndex, pageSize, total)
  246. resp := new(models.GetCygxActivityListRep)
  247. resp.List = list
  248. resp.Paging = page
  249. br.Ret = 200
  250. br.Success = true
  251. br.Msg = "获取成功"
  252. br.Data = resp
  253. }
  254. // @Title 活动详情
  255. // @Description 获取活动详情接口
  256. // @Param ActivityId query int true "活动ID"
  257. // @Success Ret=200 {object} models.ActivityDetail
  258. // @router /detail [get]
  259. func (this *ActivityCoAntroller) Detail() {
  260. br := new(models.BaseResponse).Init()
  261. defer func() {
  262. this.Data["json"] = br
  263. this.ServeJSON()
  264. }()
  265. user := this.User
  266. if user == nil {
  267. br.Msg = "请登录"
  268. br.ErrMsg = "请登录,用户信息为空"
  269. br.Ret = 408
  270. return
  271. }
  272. activityId, _ := this.GetInt("ActivityId")
  273. if activityId < 1 {
  274. br.Msg = "请输入活动ID"
  275. return
  276. }
  277. activityInfo, err := models.GetAddActivityInfoById(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. fmt.Println(signupStatus)
  347. activityInfo, errInfo := models.GetAddActivityInfoById(activityId)
  348. if activityInfo == nil {
  349. br.Msg = "操作失败"
  350. br.ErrMsg = "活动ID错误,不存在activityId:" + strconv.Itoa(activityId)
  351. return
  352. }
  353. if errInfo != nil {
  354. br.Msg = "操作失败"
  355. br.ErrMsg = "操作失败,Err:" + errInfo.Error()
  356. return
  357. }
  358. resultTime := utils.StrTimeToTime(activityInfo.ActivityTime) //时间字符串格式转时间格式
  359. if time.Now().After(resultTime.Add(-time.Minute * 60)) {
  360. signupStatus = "Overtime"
  361. return
  362. }
  363. total, err := models.GetActivitySignupCount(uid, activityId)
  364. if err != nil {
  365. br.Msg = "获取失败"
  366. br.ErrMsg = "获取失败,Err:" + err.Error()
  367. return
  368. }
  369. if total > 0 {
  370. br.Msg = "您已报名这个活动"
  371. return
  372. }
  373. if signupStatus == "Success" {
  374. item.UserId = uid
  375. item.ActivityId = activityId
  376. item.CreateTime = time.Now()
  377. item.Mobile = user.Mobile
  378. item.Email = user.Email
  379. item.CompanyId = user.CompanyId
  380. item.CompanyName = user.CompanyName
  381. _, errSignup := models.AddActivitySignup(item)
  382. if errSignup != nil {
  383. br.Msg = "操作失败"
  384. br.ErrMsg = "操作失败,Err:" + errSignup.Error()
  385. return
  386. }
  387. }
  388. resp := new(models.SignupStatus)
  389. resp.SignupType = signupType
  390. resp.SignupStatus = signupStatus
  391. if activityId%2 == 1 {
  392. resp.GoFollow = true
  393. }
  394. br.Ret = 200
  395. br.Success = true
  396. br.Msg = "操作成功"
  397. br.Data = resp
  398. }
  399. // @Title 活动取消报名
  400. // @Description 活动取消报名接口
  401. // @Param request body models.ActivitySingnupRep true "type json string"
  402. // @Success 200 操作成功
  403. // @router /signup/cancel [post]
  404. func (this *ActivityCoAntroller) SignupCancel() {
  405. br := new(models.BaseResponse).Init()
  406. defer func() {
  407. this.Data["json"] = br
  408. this.ServeJSON()
  409. }()
  410. user := this.User
  411. if user == nil {
  412. br.Msg = "请登录"
  413. br.ErrMsg = "请登录,用户信息为空"
  414. br.Ret = 408
  415. return
  416. }
  417. uid := user.UserId
  418. var req models.ActivitySingnupRep
  419. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  420. if err != nil {
  421. br.Msg = "参数解析异常!"
  422. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  423. return
  424. }
  425. activityId := req.ActivityId
  426. signupType := req.SignupType
  427. if signupType != 1 && signupType != 2 {
  428. br.Msg = "请选择正确的报名方式!"
  429. return
  430. }
  431. item := new(models.CygxActivitySignup)
  432. activityInfo, errInfo := models.GetAddActivityInfoById(activityId)
  433. if activityInfo == nil {
  434. br.Msg = "操作失败"
  435. br.ErrMsg = "活动ID错误,不存在activityId:" + strconv.Itoa(activityId)
  436. return
  437. }
  438. if errInfo != nil {
  439. br.Msg = "操作失败"
  440. br.ErrMsg = "操作失败,Err:" + errInfo.Error()
  441. return
  442. }
  443. resultTime := utils.StrTimeToTime(activityInfo.ActivityTime) //时间字符串格式转时间格式
  444. if time.Now().After(resultTime.Add(-time.Minute * 60)) {
  445. if signupType == 1 {
  446. br.Msg = "活动开始前1小时内无法取消预约外呼,请联系对口销售处理"
  447. } else {
  448. br.Msg = "活动开始前1小时内无法取消报名,请联系对口销售处理"
  449. }
  450. return
  451. }
  452. total, err := models.GetActivitySignupCount(uid, activityId)
  453. if err != nil {
  454. br.Msg = "获取失败"
  455. br.ErrMsg = "获取失败,Err:" + err.Error()
  456. return
  457. }
  458. if total == 0 {
  459. br.Msg = "您暂未报名这个活动"
  460. return
  461. }
  462. item.UserId = uid
  463. item.ActivityId = activityId
  464. item.CreateTime = time.Now()
  465. item.Mobile = user.Mobile
  466. item.Email = user.Email
  467. item.CompanyId = user.CompanyId
  468. item.CompanyName = user.CompanyName
  469. _, errSignup := models.CancelActivitySignup(item)
  470. if errSignup != nil {
  471. br.Msg = "操作失败"
  472. br.ErrMsg = "操作失败,Err:" + errSignup.Error()
  473. return
  474. }
  475. br.Ret = 200
  476. br.Success = true
  477. br.Msg = "操作成功"
  478. }
  479. // @Title 用户搜索详情
  480. // @Description 获取用户搜索详情接口
  481. // @Param IsShowJurisdiction query int true "是否仅展示有权限的,1是,0否 默认为0"
  482. // @Success Ret=200 {object} models.ActivityUserSearchContentList
  483. // @router /getUserSearchContent [get]
  484. func (this *ActivityCoAntroller) GetUserSearchContent() {
  485. br := new(models.BaseResponse).Init()
  486. defer func() {
  487. this.Data["json"] = br
  488. this.ServeJSON()
  489. }()
  490. user := this.User
  491. if user == nil {
  492. br.Msg = "请登录"
  493. br.ErrMsg = "请登录,用户信息为空"
  494. br.Ret = 408
  495. return
  496. }
  497. uid := user.UserId
  498. detail, err := models.GetUserSearchContentByUid(uid)
  499. if err != nil {
  500. br.Msg = "获取信息失败"
  501. br.ErrMsg = "获取信息失败,Err:" + err.Error()
  502. return
  503. }
  504. chartPermissionidsSlice := strings.Split(detail.ChartPermissionids, ",")
  505. activityTypeidsSlice := strings.Split(detail.ActivityTypeids, ",")
  506. activeStateSlice := strings.Split(detail.ActiveState, ",") //"活动进行状态 未开始:1、进行中2、已结束3"`
  507. listActivityType, errActivityType := models.GetActivityTypeList()
  508. if errActivityType != nil {
  509. br.Msg = "获取失败"
  510. br.ErrMsg = "获取数据失败,Err:" + errActivityType.Error()
  511. return
  512. }
  513. for _, v := range activityTypeidsSlice {
  514. for k2, v2 := range listActivityType {
  515. if strconv.Itoa(v2.ActivityTypeId) == v {
  516. listActivityType[k2].IsChoose = true
  517. }
  518. }
  519. }
  520. listChartPermissionid, errChart := models.GetChartPermissionActivity()
  521. if errChart != nil {
  522. br.Msg = "获取信息失败"
  523. br.ErrMsg = "获取品种信息失败,Err:" + errChart.Error()
  524. return
  525. }
  526. for _, v := range chartPermissionidsSlice {
  527. for k2, v2 := range listChartPermissionid {
  528. if strconv.Itoa(v2.ChartPermissionId) == v {
  529. listChartPermissionid[k2].IsChoose = true
  530. }
  531. }
  532. }
  533. resp := new(models.ActivityUserSearchContentList)
  534. resp.ListActivityType = listActivityType
  535. resp.ListChartPermission = listChartPermissionid
  536. if detail.IsShowJurisdiction == 1 {
  537. resp.IsShowJurisdiction = true
  538. }
  539. activeStateList := []models.ActivityStaus{models.ActivityStaus{Id: 1, StatusName: "未开始"}, models.ActivityStaus{Id: 2, StatusName: "进行中"}, models.ActivityStaus{Id: 3, StatusName: "已结束"}}
  540. for _, v := range activeStateSlice {
  541. for k2, v2 := range activeStateList {
  542. if strconv.Itoa(v2.Id) == v {
  543. activeStateList[k2].IsChoose = true
  544. }
  545. }
  546. }
  547. if activeStateList[1].IsChoose == activeStateList[2].IsChoose == false {
  548. activeStateList[0].IsChoose = true
  549. }
  550. resp.ListActivityStaus = activeStateList
  551. br.Ret = 200
  552. br.Success = true
  553. br.Msg = "获取成功"
  554. br.Data = resp
  555. }
  556. // @Title 添加会议提醒
  557. // @Description 添加会议提醒接口
  558. // @Param request body models.ActivityIdRep true "type json string"
  559. // @Success Ret=200 {object} models.SignupStatus
  560. // @router /meetingReminder/add [post]
  561. func (this *ActivityCoAntroller) MeetingReminderAdd() {
  562. br := new(models.BaseResponse).Init()
  563. defer func() {
  564. this.Data["json"] = br
  565. this.ServeJSON()
  566. }()
  567. user := this.User
  568. if user == nil {
  569. br.Msg = "请登录"
  570. br.ErrMsg = "请登录,用户信息为空"
  571. br.Ret = 408
  572. return
  573. }
  574. uid := user.UserId
  575. //var signupStatus string
  576. signupStatus := "Success"
  577. var req models.ActivityIdRep
  578. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  579. if err != nil {
  580. br.Msg = "参数解析异常!"
  581. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  582. return
  583. }
  584. activityId := req.ActivityId
  585. //SignupStatus string `description:"报名状态:人数已满:FullStarffed、单机构超过两人:TwoPeople、爽约次数过多:BreakPromise、超时:Overtime 、成功:Success"`
  586. item := new(models.CygxActivityMeetingReminder)
  587. activityInfo, errInfo := models.GetAddActivityInfoById(activityId)
  588. if activityInfo == nil {
  589. br.Msg = "操作失败"
  590. br.ErrMsg = "活动ID错误,不存在activityId:" + strconv.Itoa(activityId)
  591. return
  592. }
  593. if errInfo != nil {
  594. br.Msg = "操作失败"
  595. br.ErrMsg = "操作失败,Err:" + errInfo.Error()
  596. return
  597. }
  598. resultTime := utils.StrTimeToTime(activityInfo.ActivityTime) //时间字符串格式转时间格式
  599. if time.Now().After(resultTime.Add(-time.Minute * 15)) {
  600. signupStatus = "Overtime"
  601. return
  602. }
  603. if signupStatus == "Success" {
  604. total, err := models.GetActivitySignupCount(uid, activityId)
  605. if err != nil {
  606. br.Msg = "获取失败"
  607. br.ErrMsg = "获取失败,Err:" + err.Error()
  608. return
  609. }
  610. if total == 0 {
  611. br.Msg = "您暂未预约外呼这个活动"
  612. return
  613. }
  614. totalMeeting, errMeeting := models.GetActivityMeetingReminderCount(uid, activityId)
  615. if errMeeting != nil {
  616. br.Msg = "获取失败"
  617. br.ErrMsg = "获取失败,Err:" + err.Error()
  618. return
  619. }
  620. if totalMeeting > 0 {
  621. br.Msg = "您已预约,请勿重复预约"
  622. return
  623. }
  624. item.UserId = uid
  625. item.ActivityId = activityId
  626. item.CreateTime = time.Now()
  627. item.Mobile = user.Mobile
  628. item.Email = user.Email
  629. item.CompanyId = user.CompanyId
  630. item.CompanyName = user.CompanyName
  631. _, errSignup := models.AddActivityMeetingReminder(item)
  632. if errSignup != nil {
  633. br.Msg = "操作失败"
  634. br.ErrMsg = "操作失败,Err:" + errSignup.Error()
  635. return
  636. }
  637. }
  638. resp := new(models.SignupStatus)
  639. resp.SignupStatus = signupStatus
  640. if activityId%2 == 1 {
  641. resp.GoFollow = true
  642. }
  643. br.Ret = 200
  644. br.Success = true
  645. br.Msg = "操作成功"
  646. br.Data = resp
  647. }
  648. // @Title 取消会议提醒
  649. // @Description 取消会议提醒接口
  650. // @Param request body models.ActivityIdRep true "type json string"
  651. // @Success 200 操作成功
  652. // @router /meetingReminder/cancel [post]
  653. func (this *ActivityCoAntroller) MeetingReminderCancel() {
  654. br := new(models.BaseResponse).Init()
  655. defer func() {
  656. this.Data["json"] = br
  657. this.ServeJSON()
  658. }()
  659. user := this.User
  660. if user == nil {
  661. br.Msg = "请登录"
  662. br.ErrMsg = "请登录,用户信息为空"
  663. br.Ret = 408
  664. return
  665. }
  666. uid := user.UserId
  667. var req models.ActivityIdRep
  668. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  669. if err != nil {
  670. br.Msg = "参数解析异常!"
  671. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  672. return
  673. }
  674. activityId := req.ActivityId
  675. signupStatus := "Success"
  676. item := new(models.CygxActivityMeetingReminder)
  677. activityInfo, errInfo := models.GetAddActivityInfoById(activityId)
  678. if activityInfo == nil {
  679. br.Msg = "操作失败"
  680. br.ErrMsg = "活动ID错误,不存在activityId:" + strconv.Itoa(activityId)
  681. return
  682. }
  683. if errInfo != nil {
  684. br.Msg = "操作失败"
  685. br.ErrMsg = "操作失败,Err:" + errInfo.Error()
  686. return
  687. }
  688. resultTime := utils.StrTimeToTime(activityInfo.ActivityTime) //时间字符串格式转时间格式
  689. if time.Now().After(resultTime.Add(-time.Minute * 15)) {
  690. signupStatus = "Overtime"
  691. return
  692. }
  693. if signupStatus == "Success" {
  694. total, err := models.GetActivityMeetingReminderCount(uid, activityId)
  695. if err != nil {
  696. br.Msg = "获取失败"
  697. br.ErrMsg = "获取失败,Err:" + err.Error()
  698. return
  699. }
  700. if total == 0 {
  701. br.Msg = "您暂未添加该活动会议提醒"
  702. return
  703. }
  704. item.UserId = uid
  705. item.ActivityId = activityId
  706. item.CreateTime = time.Now()
  707. item.Mobile = user.Mobile
  708. item.Email = user.Email
  709. item.CompanyId = user.CompanyId
  710. item.CompanyName = user.CompanyName
  711. _, errSignup := models.CancelActivityMeetingReminder(item)
  712. if errSignup != nil {
  713. br.Msg = "操作失败"
  714. br.ErrMsg = "操作失败,Err:" + errSignup.Error()
  715. return
  716. }
  717. }
  718. resp := new(models.SignupStatus)
  719. resp.SignupStatus = signupStatus
  720. br.Ret = 200
  721. br.Success = true
  722. br.Msg = "操作成功"
  723. br.Data = resp
  724. }