activity.go 39 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215
  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是,2否 默认为零"
  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. itemSearch := new(models.CygxActivityUserSearchContent)
  78. itemSearch.UserId = uid
  79. itemSearch.CreateTime = time.Now()
  80. itemSearch.Mobile = user.Mobile
  81. itemSearch.Email = user.Email
  82. itemSearch.CompanyId = user.CompanyId
  83. itemSearch.CompanyName = user.CompanyName
  84. itemSearch.ModifyTime = time.Now()
  85. itemSearch.ChartPermissionids = chartPermissionIds
  86. itemSearch.ActivityTypeids = activityTypeIds
  87. itemSearch.ActiveState = activeState
  88. itemSearch.IsShowJurisdiction = isShowJurisdiction
  89. _, errSearch := models.AddUserSearchContent(itemSearch)
  90. if errSearch != nil {
  91. br.Msg = "操作失败"
  92. br.ErrMsg = "操作失败,Err:" + errSearch.Error()
  93. return
  94. }
  95. if isShowJurisdiction == 1 && chartPermissionIds == "" {
  96. resp := new(models.GetCygxActivityListRep)
  97. br.Ret = 200
  98. br.Success = true
  99. br.Msg = "获取成功"
  100. br.Data = resp
  101. return
  102. }
  103. var userType int
  104. if user.CompanyId <= 1 {
  105. userType = 0
  106. } else {
  107. companyDetail, err := models.GetCompanyDetailById(user.CompanyId)
  108. if err != nil {
  109. br.Msg = "获取信息失败!"
  110. br.ErrMsg = "获取客户详情失败,Err:" + err.Error()
  111. return
  112. }
  113. if companyDetail == nil {
  114. br.Msg = "获取信息失败!"
  115. br.ErrMsg = "客户不存在,uid:" + strconv.Itoa(user.UserId) + "CompanyId:" + strconv.Itoa(user.CompanyId)
  116. return
  117. }
  118. //1、永续客户
  119. //2、大套餐客户(4个行业全开通的正式客户)
  120. //3、分行业套餐客户(开通对应行业的正式客户)
  121. //4、仅开通专家套餐的正式客户
  122. //5、开通对应行业套餐或专家套餐的试用客户
  123. if companyDetail.Status == "永续" {
  124. userType = 1
  125. } else if companyDetail.Status == "试用" {
  126. userType = 5
  127. } else if companyDetail.Status == "正式" {
  128. permissionStr, err := models.GetCompanyPermission(user.CompanyId)
  129. if err != nil {
  130. br.Msg = "获取信息失败"
  131. br.ErrMsg = "获取客户信息失败,Err:" + err.Error()
  132. return
  133. }
  134. if permissionStr == "专家" {
  135. userType = 4
  136. }
  137. if strings.Contains(permissionStr, "医药") && strings.Contains(permissionStr, "消费") && strings.Contains(permissionStr, "科技") && strings.Contains(permissionStr, "智造") {
  138. userType = 2
  139. } else {
  140. userType = 3
  141. }
  142. }
  143. }
  144. var startSize int
  145. if pageSize <= 0 {
  146. pageSize = utils.PageSize20
  147. }
  148. if currentIndex <= 0 {
  149. currentIndex = 1
  150. }
  151. startSize = utils.StartIndex(currentIndex, pageSize)
  152. var condition string
  153. var pars []interface{}
  154. //活动可见限制
  155. condition += ` AND (is_limit_people = 0 OR(is_limit_people = 1 AND customer_type_ids LIKE'%` + strconv.Itoa(userType) + `%')) `
  156. if keyWord != "" {
  157. condition += ` AND (art.activity_name LIKE '%` + keyWord + `%' )`
  158. }
  159. //行业名称
  160. if len(chartPermissionIds) > 0 {
  161. condition += ` AND art.chart_permission_id IN (` + chartPermissionIds + `)`
  162. }
  163. if activityTypeIds != "" {
  164. condition += ` AND art.activity_type_id IN (` + activityTypeIds + `)`
  165. }
  166. condition += ` AND art.publish_status = 1 `
  167. if activeState != "" {
  168. condition += ` AND art.active_state IN (` + activeState + `)`
  169. }
  170. total, err := models.GetActivityCount(condition, pars)
  171. if err != nil {
  172. br.Msg = "获取失败"
  173. br.ErrMsg = "获取失败,Err:" + err.Error()
  174. return
  175. }
  176. condition += ` ORDER BY art.active_state ASC, art.activity_time ASC `
  177. list, errList := models.GetActivityListAll(condition, pars, uid, startSize, pageSize)
  178. if errList != nil {
  179. br.Msg = "获取失败"
  180. br.ErrMsg = "获取失败,Err:" + errList.Error()
  181. return
  182. }
  183. for k, v := range list {
  184. if strings.Contains(v.ActivityName, "【") {
  185. list[k].IsBrackets = 1
  186. }
  187. if v.SignupNum > v.LimitPeopleNum {
  188. list[k].SignupNum = v.LimitPeopleNum
  189. }
  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. condition += ` AND art.publish_status = 1 AND art.active_state IN(1,2) `
  233. total, err := models.GetScheduleCount(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. for k, v := range list {
  246. if strings.Contains(v.ActivityName, "【") {
  247. list[k].IsBrackets = 1
  248. }
  249. if v.SignupNum > v.LimitPeopleNum {
  250. list[k].SignupNum = v.LimitPeopleNum
  251. }
  252. }
  253. page := paging.GetPaging(currentIndex, pageSize, total)
  254. resp := new(models.GetCygxActivityListRep)
  255. resp.List = list
  256. resp.Paging = page
  257. br.Ret = 200
  258. br.Success = true
  259. br.Msg = "获取成功"
  260. br.Data = resp
  261. }
  262. // @Title 活动详情
  263. // @Description 获取活动详情接口
  264. // @Param ActivityId query int true "活动ID"
  265. // @Success Ret=200 {object} models.CygxActivityResp
  266. // @router /detail [get]
  267. func (this *ActivityCoAntroller) Detail() {
  268. br := new(models.BaseResponse).Init()
  269. defer func() {
  270. this.Data["json"] = br
  271. this.ServeJSON()
  272. }()
  273. user := this.User
  274. if user == nil {
  275. br.Msg = "请登录"
  276. br.ErrMsg = "请登录,用户信息为空"
  277. br.Ret = 408
  278. return
  279. }
  280. uid := user.UserId
  281. activityId, _ := this.GetInt("ActivityId")
  282. if activityId < 1 {
  283. br.Msg = "请输入活动ID"
  284. return
  285. }
  286. var companyDetailStatus string
  287. if user.CompanyId <= 1 {
  288. companyDetailStatus = ""
  289. } else {
  290. companyDetail, err := models.GetCompanyDetailById(user.CompanyId)
  291. if err != nil {
  292. br.Msg = "获取信息失败!"
  293. br.ErrMsg = "获取客户详情失败,Err:" + err.Error()
  294. return
  295. }
  296. if companyDetail == nil {
  297. br.Msg = "获取信息失败!"
  298. br.ErrMsg = "客户不存在,uid:" + strconv.Itoa(user.UserId) + "CompanyId:" + strconv.Itoa(user.CompanyId)
  299. return
  300. }
  301. companyDetailStatus = companyDetail.Status
  302. }
  303. activityInfo, err := models.GetAddActivityInfoByIdShow(uid, activityId)
  304. if activityInfo == nil {
  305. br.Msg = "活动不存在"
  306. br.ErrMsg = "活动ID错误,Err:" + "activityId:" + strconv.Itoa(activityId)
  307. return
  308. }
  309. var userType int
  310. if user.CompanyId <= 1 {
  311. userType = 0
  312. } else {
  313. companyDetail, err := models.GetCompanyDetailById(user.CompanyId)
  314. if err != nil {
  315. br.Msg = "获取信息失败!"
  316. br.ErrMsg = "获取客户详情失败,Err:" + err.Error()
  317. return
  318. }
  319. if companyDetail == nil {
  320. br.Msg = "获取信息失败!"
  321. br.ErrMsg = "客户不存在,uid:" + strconv.Itoa(user.UserId) + "CompanyId:" + strconv.Itoa(user.CompanyId)
  322. return
  323. }
  324. //1、永续客户
  325. //2、大套餐客户(4个行业全开通的正式客户)
  326. //3、分行业套餐客户(开通对应行业的正式客户)
  327. //4、仅开通专家套餐的正式客户
  328. //5、开通对应行业套餐或专家套餐的试用客户
  329. if companyDetail.Status == "永续" {
  330. userType = 1
  331. } else if companyDetail.Status == "试用" {
  332. userType = 5
  333. } else if companyDetail.Status == "正式" {
  334. permissionStr, err := models.GetCompanyPermission(user.CompanyId)
  335. if err != nil {
  336. br.Msg = "获取信息失败"
  337. br.ErrMsg = "获取客户信息失败,Err:" + err.Error()
  338. return
  339. }
  340. if permissionStr == "专家" {
  341. userType = 4
  342. }
  343. if strings.Contains(permissionStr, "医药") && strings.Contains(permissionStr, "消费") && strings.Contains(permissionStr, "科技") && strings.Contains(permissionStr, "智造") {
  344. userType = 2
  345. } else {
  346. userType = 3
  347. }
  348. }
  349. }
  350. if !strings.Contains(activityInfo.CustomerTypeIds, strconv.Itoa(userType)) {
  351. br.Msg = "您暂无权限查看该活动"
  352. return
  353. }
  354. detail, errDetail := models.GetActivityTypeDetailById(activityInfo.ActivityTypeId)
  355. if errDetail != nil {
  356. br.Msg = "获取信息失败"
  357. br.ErrMsg = "获取信息失败,Err:" + errDetail.Error()
  358. return
  359. }
  360. if activityInfo.IsSignup > 0 {
  361. detail, errDetail := models.GetActivitySignupDetail(activityId, uid)
  362. if errDetail != nil {
  363. br.Msg = "获取信息失败"
  364. br.ErrMsg = "获取信息失败,Err:" + errDetail.Error()
  365. return
  366. }
  367. activityInfo.SignupType = detail.SignupType
  368. }
  369. activityInfo.ShowType = detail.ShowType
  370. resp := new(models.CygxActivityResp)
  371. hasPermission := 0
  372. //判断是否已经申请过
  373. applyCount, err := models.GetApplyRecordCount(uid)
  374. if err != nil && err.Error() != utils.ErrNoRow() {
  375. br.Msg = "获取信息失败"
  376. br.ErrMsg = "判断是否已申请过试用失败,Err:" + err.Error()
  377. return
  378. }
  379. if user.CompanyId > 1 {
  380. permissionStr, err := models.GetCompanyPermission(user.CompanyId)
  381. if err != nil {
  382. br.Msg = "获取信息失败"
  383. br.ErrMsg = "获取客户权限信息失败,Err:" + err.Error()
  384. return
  385. }
  386. companyItem, err := models.GetCompanyDetailAllById(user.CompanyId)
  387. //冻结客户
  388. if err != nil {
  389. if err.Error() == utils.ErrNoRow() {
  390. resp.HasPermission = 4
  391. resp.OperationMode = "Apply"
  392. resp.PopupMsg = "您暂无权限参加 【" + activityInfo.ChartPermissionName + "】行业活动"
  393. br.Ret = 200
  394. br.Success = true
  395. br.Msg = "获取成功"
  396. br.Data = resp
  397. return
  398. } else {
  399. br.Msg = "获取信息失败"
  400. br.ErrMsg = "获取客户公司信息失败,Err:" + err.Error()
  401. return
  402. }
  403. }
  404. //1专家电话会、2分析师电话会、3公司调研电话会、4公司线下调研、5专家线下沙龙、6分析师线下沙龙
  405. //OperationMode string `description:"操作方式 Apply:立即申请、Call:拨号 为空则为有权限"`
  406. if (activityInfo.ActivityTypeId == 1 || activityInfo.ActivityTypeId == 3) && strings.Contains(permissionStr, "专家") && companyDetailStatus == "正式" {
  407. hasPermission = 1
  408. resp.HaqveJurisdiction = true
  409. } else {
  410. if activityInfo.ActivityTypeId != 1 && activityInfo.ActivityTypeId != 3 && permissionStr == "专家" {
  411. resp.PopupMsg = "您暂无权限参加" + activityInfo.ActivityTypeName + "类型活动"
  412. resp.SellerMobile = companyItem.Mobile
  413. resp.SellerName = companyItem.SellerName
  414. resp.MsgType = "Type"
  415. resp.OperationMode = "Call"
  416. hasPermission = 2
  417. } else {
  418. if strings.Contains(permissionStr, activityInfo.ChartPermissionName) {
  419. hasPermission = 1
  420. resp.HaqveJurisdiction = true
  421. } else {
  422. resp.PopupMsg = "您暂无权限参加【" + activityInfo.ChartPermissionName + "】行业活动"
  423. resp.SellerMobile = companyItem.Mobile
  424. resp.SellerName = companyItem.SellerName
  425. resp.MsgType = "Industry"
  426. resp.OperationMode = "Call"
  427. hasPermission = 2
  428. }
  429. }
  430. }
  431. } else { //潜在客户
  432. if applyCount > 0 {
  433. hasPermission = 4
  434. } else {
  435. hasPermission = 3
  436. }
  437. resp.OperationMode = "Apply"
  438. resp.PopupMsg = "您暂无权限参加 【" + activityInfo.ChartPermissionName + "】行业活动,若想参加可以申请开通哦"
  439. }
  440. if hasPermission == 1 {
  441. if activityInfo.SignupNum > activityInfo.LimitPeopleNum {
  442. activityInfo.SignupNum = activityInfo.LimitPeopleNum
  443. }
  444. resp.Detail = activityInfo
  445. }
  446. resp.HasPermission = hasPermission
  447. br.Ret = 200
  448. br.Success = true
  449. br.Msg = "获取成功"
  450. br.Data = resp
  451. }
  452. // @Title 活动报名
  453. // @Description 活动报名接口
  454. // @Param request body models.ActivitySingnupRep true "type json string"
  455. // @Success Ret=200 {object} models.SignupStatus
  456. // @router /signup/add [post]
  457. func (this *ActivityCoAntroller) SignupAdd() {
  458. br := new(models.BaseResponse).Init()
  459. defer func() {
  460. this.Data["json"] = br
  461. this.ServeJSON()
  462. }()
  463. user := this.User
  464. if user == nil {
  465. br.Msg = "请登录"
  466. br.ErrMsg = "请登录,用户信息为空"
  467. br.Ret = 408
  468. return
  469. }
  470. uid := user.UserId
  471. //var signupStatus string
  472. signupStatus := ""
  473. var req models.ActivitySingnupRep
  474. var total int
  475. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  476. if err != nil {
  477. br.Msg = "参数解析异常!"
  478. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  479. return
  480. }
  481. activityId := req.ActivityId
  482. signupType := req.SignupType
  483. //SignupStatus "报名状态:人数已满:FullStarffed、单机构超过两人:TwoPeople、爽约次数过多:BreakPromise、超时:Overtime 、成功:Success"`
  484. //HasPermission "1:有该行业权限,正常展示,2:无该行业权限,3:潜在客户,未提交过申请,4:潜在客户,已提交过申请"`
  485. var companyDetailStatus string
  486. if user.CompanyId <= 1 {
  487. companyDetailStatus = ""
  488. } else {
  489. companyDetail, err := models.GetCompanyDetailById(user.CompanyId)
  490. if err != nil {
  491. br.Msg = "获取信息失败!"
  492. br.ErrMsg = "获取客户详情失败,Err:" + err.Error()
  493. return
  494. }
  495. if companyDetail == nil {
  496. br.Msg = "获取信息失败!"
  497. br.ErrMsg = "客户不存在,uid:" + strconv.Itoa(user.UserId) + "CompanyId:" + strconv.Itoa(user.CompanyId)
  498. return
  499. }
  500. companyDetailStatus = companyDetail.Status
  501. }
  502. item := new(models.CygxActivitySignup)
  503. resp := new(models.SignupStatus)
  504. hasPermission := 0
  505. //判断是否已经申请过
  506. applyCount, err := models.GetApplyRecordCount(uid)
  507. if err != nil && err.Error() != utils.ErrNoRow() {
  508. br.Msg = "获取信息失败"
  509. br.ErrMsg = "判断是否已申请过试用失败,Err:" + err.Error()
  510. return
  511. }
  512. activityInfo, errInfo := models.GetAddActivityInfoById(activityId)
  513. if activityInfo == nil {
  514. br.Msg = "操作失败"
  515. br.ErrMsg = "活动ID错误,不存在activityId:" + strconv.Itoa(activityId)
  516. return
  517. }
  518. if errInfo != nil {
  519. br.Msg = "操作失败"
  520. br.ErrMsg = "操作失败,Err:" + errInfo.Error()
  521. return
  522. }
  523. if user.CompanyId > 1 {
  524. permissionStr, err := models.GetCompanyPermission(user.CompanyId)
  525. if err != nil {
  526. br.Msg = "获取信息失败"
  527. br.ErrMsg = "获取客户信息失败,Err:" + err.Error()
  528. return
  529. }
  530. companyItem, err := models.GetCompanyDetailAllById(user.CompanyId)
  531. //冻结客户
  532. if err != nil {
  533. if err.Error() == utils.ErrNoRow() {
  534. resp.HasPermission = 4
  535. resp.OperationMode = "Apply"
  536. resp.PopupMsg = "您暂无权限参加 【" + activityInfo.ChartPermissionName + "】行业活动,若想参加可以申请开通哦"
  537. br.Ret = 200
  538. br.Success = true
  539. br.Msg = "获取成功"
  540. br.Data = resp
  541. return
  542. } else {
  543. br.Msg = "获取信息失败"
  544. br.ErrMsg = "获取客户公司信息失败,Err:" + err.Error()
  545. return
  546. }
  547. }
  548. //1专家电话会、2分析师电话会、3公司调研电话会、4公司线下调研、5专家线下沙龙、6分析师线下沙龙
  549. //OperationMode string `description:"操作方式 Apply:立即申请、Call:拨号 为空则为有权限"`
  550. if activityInfo.ActivityTypeId != 1 && activityInfo.ActivityTypeId != 3 && permissionStr == "专家" {
  551. resp.PopupMsg = "您暂无权限参加" + activityInfo.ActivityTypeName + "类型活动,若想参加请联系对口销售--" + companyItem.SellerName + ":" + companyItem.Mobile
  552. resp.SellerMobile = companyItem.Mobile
  553. resp.SellerName = companyItem.SellerName
  554. resp.MsgType = "Type"
  555. resp.OperationMode = "Call"
  556. hasPermission = 2
  557. } else {
  558. if strings.Contains(permissionStr, activityInfo.ChartPermissionName) || ((activityInfo.ActivityTypeId == 1 || activityInfo.ActivityTypeId == 3) && strings.Contains(permissionStr, "专家") && companyDetailStatus == "正式") {
  559. hasPermission = 1
  560. signupStatus = "Success"
  561. resultTime := utils.StrTimeToTime(activityInfo.ActivityTime) //时间字符串格式转时间格式
  562. if time.Now().After(resultTime.Add(-time.Minute * 60)) {
  563. signupStatus = "Overtime"
  564. resp.SignupType = signupType
  565. resp.SignupStatus = signupStatus
  566. resp.HasPermission = hasPermission
  567. br.Ret = 200
  568. br.Success = true
  569. br.Msg = ""
  570. br.Data = resp
  571. return
  572. }
  573. //人数已满:FullStarffed、单机构超过两人:TwoPeople、爽约次数过多:BreakPromise、超时:Overtime 、成功:Success"`
  574. //如果是下面几种情况则对报名信息做判断限制 (公司调研电话会(限制人数)、公司线下调研、专家/分析师线下沙龙)
  575. if (activityInfo.ActivityTypeId == 3 && activityInfo.IsLimitPeople == 1) || activityInfo.ActivityTypeId > 3 {
  576. //判断优先级:总人数限制→单机构2人限制→爽约3次限制
  577. totalRestrict, err := models.GetUserRestrictCount(user.Mobile)
  578. if err != nil {
  579. br.Msg = "获取信息失败"
  580. br.ErrMsg = "获取客户信息失败,Err:" + err.Error()
  581. return
  582. }
  583. if totalRestrict >= 1 {
  584. signupStatus = "BreakPromise"
  585. item.FailType = 3
  586. }
  587. totalSignupCompany, err := models.GetActivitySignupCompanyCount(activityId, user.CompanyId)
  588. if err != nil {
  589. br.Msg = "获取信息失败"
  590. br.ErrMsg = "获取客户信息失败,Err:" + err.Error()
  591. return
  592. }
  593. if totalSignupCompany >= 2 {
  594. signupStatus = "TwoPeople"
  595. item.FailType = 2
  596. }
  597. totaSignupPeopleNum, err := models.GetActivitySignupSuccessCount(activityId)
  598. if err != nil {
  599. br.Msg = "获取信息失败"
  600. br.ErrMsg = "获取客户信息失败,Err:" + err.Error()
  601. return
  602. }
  603. if totaSignupPeopleNum >= activityInfo.LimitPeopleNum {
  604. signupStatus = "FullStarffed"
  605. item.FailType = 1
  606. }
  607. totalUserRestrictCount, err := models.GetActivitySignupByUserRestrictCount(uid, activityId)
  608. if err != nil {
  609. br.Msg = "获取失败"
  610. br.ErrMsg = "获取失败,Err:" + err.Error()
  611. return
  612. }
  613. //解除报名限制之后二次报名相同活动
  614. if totalUserRestrictCount > 0 && totalRestrict == 0 {
  615. item.UserId = uid
  616. item.ActivityId = activityId
  617. item.CreateTime = time.Now()
  618. item.Mobile = user.Mobile
  619. item.Email = user.Email
  620. item.CompanyId = user.CompanyId
  621. item.CompanyName = user.CompanyName
  622. item.SignupType = signupType
  623. item.FailType = 0
  624. item.DoFailType = 0
  625. _, errSignup := models.AddActivitySignupByRestrict(item)
  626. if errSignup != nil {
  627. br.Msg = "操作失败"
  628. br.ErrMsg = "操作失败,Err:" + errSignup.Error()
  629. return
  630. }
  631. resp.HaqveJurisdiction = true
  632. resp.SignupType = signupType
  633. resp.SignupStatus = "Success"
  634. resp.HasPermission = hasPermission
  635. resp.ActivityId = activityId
  636. total, err = models.GetUserMeetingReminderCount(user.UserId)
  637. if err != nil {
  638. br.Msg = "获取信息失败"
  639. br.ErrMsg = "获取日程数量信息失败,Err:" + err.Error()
  640. return
  641. }
  642. if total == 0 {
  643. resp.GoFollow = true
  644. }
  645. br.Ret = 200
  646. br.Success = true
  647. br.Msg = "操作成功"
  648. br.Data = resp
  649. return
  650. }
  651. totalMy, err := models.GetActivitySignupByUserCount(uid, activityId)
  652. if err != nil {
  653. br.Msg = "获取失败"
  654. br.ErrMsg = "获取失败,Err:" + err.Error()
  655. return
  656. }
  657. if signupStatus != "Success" && totalMy == 0 {
  658. item.UserId = uid
  659. item.ActivityId = activityId
  660. item.CreateTime = time.Now()
  661. item.Mobile = user.Mobile
  662. item.Email = user.Email
  663. item.CompanyId = user.CompanyId
  664. item.CompanyName = user.CompanyName
  665. item.SignupType = signupType
  666. item.DoFailType = item.FailType
  667. //添加报名信息,但是不加入日程
  668. _, errSignup := models.AddActivitySignupNoSchedule(item)
  669. if errSignup != nil {
  670. br.Msg = "操作失败"
  671. br.ErrMsg = "操作失败,Err:" + errSignup.Error()
  672. return
  673. }
  674. }
  675. }
  676. totalMySuccess, err := models.GetActivitySignupCount(uid, activityId)
  677. if err != nil {
  678. br.Msg = "获取失败"
  679. br.ErrMsg = "获取失败,Err:" + err.Error()
  680. return
  681. }
  682. if totalMySuccess > 0 {
  683. br.Msg = "您已报名这个活动"
  684. return
  685. }
  686. if signupStatus == "Success" {
  687. item.UserId = uid
  688. item.ActivityId = activityId
  689. item.CreateTime = time.Now()
  690. item.Mobile = user.Mobile
  691. item.Email = user.Email
  692. item.CompanyId = user.CompanyId
  693. item.CompanyName = user.CompanyName
  694. item.SignupType = signupType
  695. item.FailType = 0
  696. item.DoFailType = 0
  697. _, errSignup := models.AddActivitySignup(item)
  698. if errSignup != nil {
  699. br.Msg = "操作失败"
  700. br.ErrMsg = "操作失败,Err:" + errSignup.Error()
  701. return
  702. }
  703. resp.HaqveJurisdiction = true
  704. }
  705. } else {
  706. resp.PopupMsg = "您暂无权限参加【" + activityInfo.ChartPermissionName + "】行业活动,若想参加请联系对口销售--" + companyItem.SellerName + ":" + companyItem.Mobile
  707. resp.SellerMobile = companyItem.Mobile
  708. resp.SellerName = companyItem.SellerName
  709. resp.MsgType = "Industry"
  710. resp.OperationMode = "Call"
  711. hasPermission = 2
  712. }
  713. }
  714. } else { //潜在客户
  715. if applyCount > 0 {
  716. hasPermission = 4
  717. } else {
  718. hasPermission = 3
  719. }
  720. resp.OperationMode = "Apply"
  721. resp.PopupMsg = "您暂无权限参加 【" + activityInfo.ChartPermissionName + "】行业活动,若想参加可以申请开通哦"
  722. }
  723. resp.SignupType = signupType
  724. resp.SignupStatus = signupStatus
  725. resp.HasPermission = hasPermission
  726. if signupStatus == "Success" {
  727. resp.ActivityId = activityId
  728. }
  729. total, err = models.GetUserMeetingReminderCount(user.UserId)
  730. if err != nil {
  731. br.Msg = "获取信息失败"
  732. br.ErrMsg = "获取日程数量信息失败,Err:" + err.Error()
  733. return
  734. }
  735. if total == 0 {
  736. resp.GoFollow = true
  737. }
  738. br.Ret = 200
  739. br.Success = true
  740. br.Msg = "操作成功"
  741. br.Data = resp
  742. }
  743. // @Title 活动取消报名
  744. // @Description 活动取消报名接口
  745. // @Param request body models.ActivitySingnupRep true "type json string"
  746. // @Success Ret=200 {object} models.SignupStatus
  747. // @router /signup/cancel [post]
  748. func (this *ActivityCoAntroller) SignupCancel() {
  749. br := new(models.BaseResponse).Init()
  750. defer func() {
  751. this.Data["json"] = br
  752. this.ServeJSON()
  753. }()
  754. user := this.User
  755. if user == nil {
  756. br.Msg = "请登录"
  757. br.ErrMsg = "请登录,用户信息为空"
  758. br.Ret = 408
  759. return
  760. }
  761. uid := user.UserId
  762. var req models.ActivitySingnupRep
  763. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  764. if err != nil {
  765. br.Msg = "参数解析异常!"
  766. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  767. return
  768. }
  769. activityId := req.ActivityId
  770. signupType := req.SignupType
  771. //if signupType != 1 && signupType != 2 {
  772. // br.Msg = "请选择正确的报名方式!"
  773. // return
  774. //}
  775. item := new(models.CygxActivitySignup)
  776. activityInfo, errInfo := models.GetAddActivityInfoById(activityId)
  777. if activityInfo == nil {
  778. br.Msg = "操作失败"
  779. br.ErrMsg = "活动ID错误,不存在activityId:" + strconv.Itoa(activityId)
  780. return
  781. }
  782. if errInfo != nil {
  783. br.Msg = "操作失败"
  784. br.ErrMsg = "操作失败,Err:" + errInfo.Error()
  785. return
  786. }
  787. resultTime := utils.StrTimeToTime(activityInfo.ActivityTime) //时间字符串格式转时间格式
  788. if time.Now().After(resultTime.Add(-time.Minute * 60)) {
  789. if signupType == 1 {
  790. br.Msg = "活动开始前1小时内无法取消预约外呼,请联系对口销售处理"
  791. } else {
  792. br.Msg = "活动开始前1小时内无法取消报名,请联系对口销售处理"
  793. }
  794. return
  795. }
  796. total, err := models.GetActivitySignupCount(uid, activityId)
  797. if err != nil {
  798. br.Msg = "获取失败"
  799. br.ErrMsg = "获取失败,Err:" + err.Error()
  800. return
  801. }
  802. if total == 0 {
  803. br.Msg = "您暂未报名这个活动"
  804. return
  805. }
  806. item.UserId = uid
  807. item.ActivityId = activityId
  808. item.CreateTime = time.Now()
  809. item.Mobile = user.Mobile
  810. item.Email = user.Email
  811. item.CompanyId = user.CompanyId
  812. item.CompanyName = user.CompanyName
  813. resp := new(models.SignupStatus)
  814. resp.ActivityId = activityId
  815. _, errSignup := models.CancelActivitySignup(item)
  816. if errSignup != nil {
  817. br.Msg = "操作失败"
  818. br.ErrMsg = "操作失败,Err:" + errSignup.Error()
  819. return
  820. }
  821. br.Ret = 200
  822. br.Success = true
  823. br.Msg = "操作成功"
  824. br.Data = resp
  825. }
  826. // @Title 用户搜索详情
  827. // @Description 获取用户搜索详情接口
  828. // @Param IsShowJurisdiction query int true "是否仅展示有权限的,默认为0,1是,2否 "
  829. // @Success Ret=200 {object} models.ActivityUserSearchContentList
  830. // @router /getUserSearchContent [get]
  831. func (this *ActivityCoAntroller) GetUserSearchContent() {
  832. br := new(models.BaseResponse).Init()
  833. defer func() {
  834. this.Data["json"] = br
  835. this.ServeJSON()
  836. }()
  837. user := this.User
  838. if user == nil {
  839. br.Msg = "请登录"
  840. br.ErrMsg = "请登录,用户信息为空"
  841. br.Ret = 408
  842. return
  843. }
  844. uid := user.UserId
  845. detailSeearch := new(models.CygxActivityUserSearchContent)
  846. detailSeearch.IsShowJurisdiction = 0
  847. detailSeearch.ChartPermissionids = ""
  848. detailSeearch.ActiveState = ""
  849. detail, _ := models.GetUserSearchContentByUid(uid)
  850. if detail == nil {
  851. detail = detailSeearch
  852. }
  853. //if err != nil {
  854. // br.Msg = "获取信息失败"
  855. // br.ErrMsg = "获取信息失败,Err:" + err.Error()
  856. // return
  857. //}
  858. isShowJurisdiction, _ := this.GetInt("IsShowJurisdiction")
  859. //chartPermissionidsSlice := strings.Split(detail.ChartPermissionids, ",")
  860. //activityTypeidsSlice := strings.Split(detail.ActivityTypeids, ",")
  861. //activeStateSlice := strings.Split(detail.ActiveState, ",") //"活动进行状态 未开始:1、进行中2、已结束3"`
  862. listActivityType, errActivityType := models.GetActivityTypeList()
  863. if errActivityType != nil {
  864. br.Msg = "获取失败"
  865. br.ErrMsg = "获取数据失败,Err:" + errActivityType.Error()
  866. return
  867. }
  868. //for _, v := range activityTypeidsSlice {
  869. // for k2, v2 := range listActivityType {
  870. // if strconv.Itoa(v2.ActivityTypeId) == v {
  871. // listActivityType[k2].IsChoose = true
  872. // }
  873. // }
  874. //}
  875. var listChartPermissionid []*models.ActivityChartPermission
  876. var errChart error
  877. if isShowJurisdiction == 1 {
  878. listChartPermissionidAll, errChartAll := models.GetUserCompanyPermission(user.CompanyId)
  879. listChartPermissionid = listChartPermissionidAll
  880. errChart = errChartAll
  881. } else if isShowJurisdiction == 2 {
  882. listChartPermissionidAll, errChartAll := models.GetChartPermissionActivity()
  883. listChartPermissionid = listChartPermissionidAll
  884. errChart = errChartAll
  885. } else {
  886. if detail.IsShowJurisdiction == 1 {
  887. listChartPermissionidAll, errChartAll := models.GetUserCompanyPermission(user.CompanyId)
  888. listChartPermissionid = listChartPermissionidAll
  889. errChart = errChartAll
  890. } else {
  891. listChartPermissionidAll, errChartAll := models.GetChartPermissionActivity()
  892. listChartPermissionid = listChartPermissionidAll
  893. errChart = errChartAll
  894. }
  895. }
  896. if errChart != nil {
  897. br.Msg = "获取信息失败"
  898. br.ErrMsg = "获取品种信息失败,Err:" + errChart.Error()
  899. return
  900. }
  901. //for _, v := range chartPermissionidsSlice {
  902. // for k2, v2 := range listChartPermissionid {
  903. // if strconv.Itoa(v2.ChartPermissionId) == v {
  904. // listChartPermissionid[k2].IsChoose = true
  905. // }
  906. // }
  907. //}
  908. resp := new(models.ActivityUserSearchContentList)
  909. if detail.IsShowJurisdiction == 1 {
  910. resp.IsShowJurisdiction = true
  911. }
  912. fmt.Println(isShowJurisdiction)
  913. if isShowJurisdiction == 1 || detail.IsShowJurisdiction == 1 {
  914. resp.IsShowJurisdiction = true
  915. for k, _ := range listChartPermissionid {
  916. listChartPermissionid[k].IsChoose = true
  917. }
  918. }
  919. if isShowJurisdiction == 2 {
  920. resp.IsShowJurisdiction = false
  921. }
  922. activeStateList := []models.ActivityStaus{models.ActivityStaus{Id: 1, StatusName: "未开始", IsChoose: true}, models.ActivityStaus{Id: 2, StatusName: "进行中"}, models.ActivityStaus{Id: 3, StatusName: "已结束"}}
  923. //for _, v := range activeStateSlice {
  924. // for k2, v2 := range activeStateList {
  925. // if strconv.Itoa(v2.Id) == v {
  926. // //activeStateList[k2].IsChoose = true
  927. // }
  928. // }
  929. //}
  930. if activeStateList[1].IsChoose == activeStateList[2].IsChoose == false {
  931. activeStateList[0].IsChoose = true
  932. }
  933. resp.ListActivityType = listActivityType
  934. resp.ListChartPermission = listChartPermissionid
  935. resp.ListActivityStaus = activeStateList
  936. br.Ret = 200
  937. br.Success = true
  938. br.Msg = "获取成功"
  939. br.Data = resp
  940. }
  941. // @Title 添加会议提醒
  942. // @Description 添加会议提醒接口
  943. // @Param request body models.ActivityIdRep true "type json string"
  944. // @Success Ret=200 {object} models.SignupStatus
  945. // @router /meetingReminder/add [post]
  946. func (this *ActivityCoAntroller) MeetingReminderAdd() {
  947. br := new(models.BaseResponse).Init()
  948. defer func() {
  949. this.Data["json"] = br
  950. this.ServeJSON()
  951. }()
  952. user := this.User
  953. if user == nil {
  954. br.Msg = "请登录"
  955. br.ErrMsg = "请登录,用户信息为空"
  956. br.Ret = 408
  957. return
  958. }
  959. uid := user.UserId
  960. //var signupStatus string
  961. signupStatus := "Success"
  962. var req models.ActivityIdRep
  963. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  964. if err != nil {
  965. br.Msg = "参数解析异常!"
  966. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  967. return
  968. }
  969. activityId := req.ActivityId
  970. //SignupStatus string `description:"报名状态:人数已满:FullStarffed、单机构超过两人:TwoPeople、爽约次数过多:BreakPromise、超时:Overtime 、成功:Success"`
  971. item := new(models.CygxActivityMeetingReminder)
  972. resp := new(models.SignupStatus)
  973. hasPermission := 0
  974. var companyDetailStatus string
  975. if user.CompanyId <= 1 {
  976. companyDetailStatus = ""
  977. } else {
  978. companyDetail, err := models.GetCompanyDetailById(user.CompanyId)
  979. if err != nil {
  980. br.Msg = "获取信息失败!"
  981. br.ErrMsg = "获取客户详情失败,Err:" + err.Error()
  982. return
  983. }
  984. if companyDetail == nil {
  985. br.Msg = "获取信息失败!"
  986. br.ErrMsg = "客户不存在,uid:" + strconv.Itoa(user.UserId) + "CompanyId:" + strconv.Itoa(user.CompanyId)
  987. return
  988. }
  989. companyDetailStatus = companyDetail.Status
  990. }
  991. fmt.Println(companyDetailStatus)
  992. //判断是否已经申请过
  993. applyCount, err := models.GetApplyRecordCount(uid)
  994. if err != nil && err.Error() != utils.ErrNoRow() {
  995. br.Msg = "获取信息失败"
  996. br.ErrMsg = "判断是否已申请过试用失败,Err:" + err.Error()
  997. return
  998. }
  999. activityInfo, errInfo := models.GetAddActivityInfoById(activityId)
  1000. if activityInfo == nil {
  1001. br.Msg = "操作失败"
  1002. br.ErrMsg = "活动ID错误,不存在activityId:" + strconv.Itoa(activityId)
  1003. return
  1004. }
  1005. if errInfo != nil {
  1006. br.Msg = "操作失败"
  1007. br.ErrMsg = "操作失败,Err:" + errInfo.Error()
  1008. return
  1009. }
  1010. resultTime := utils.StrTimeToTime(activityInfo.ActivityTime) //时间字符串格式转时间格式
  1011. if time.Now().After(resultTime.Add(-time.Minute * 15)) {
  1012. br.Msg = "活动开始前15分钟无法设置会议提醒"
  1013. return
  1014. }
  1015. if user.CompanyId > 1 {
  1016. permissionStr, err := models.GetCompanyPermission(user.CompanyId)
  1017. if err != nil {
  1018. br.Msg = "获取信息失败"
  1019. br.ErrMsg = "获取客户信息失败,Err:" + err.Error()
  1020. return
  1021. }
  1022. companyItem, err := models.GetCompanyDetailAllById(user.CompanyId)
  1023. //冻结客户
  1024. if err != nil {
  1025. if err.Error() == utils.ErrNoRow() {
  1026. resp.HasPermission = 4
  1027. resp.OperationMode = "Apply"
  1028. resp.PopupMsg = "您暂无权限参加 【" + activityInfo.ChartPermissionName + "】行业活动,若想参加可以申请开通哦"
  1029. br.Ret = 200
  1030. br.Success = true
  1031. br.Msg = "获取成功"
  1032. br.Data = resp
  1033. return
  1034. } else {
  1035. br.Msg = "获取信息失败"
  1036. br.ErrMsg = "获取客户公司信息失败,Err:" + err.Error()
  1037. return
  1038. }
  1039. }
  1040. if activityInfo.ActivityTypeId != 1 && activityInfo.ActivityTypeId != 3 && permissionStr == "专家" {
  1041. resp.PopupMsg = "您暂无权限参加" + activityInfo.ActivityName + "类型活动,若想参加请联系对口销售--" + companyItem.SellerName + ":" + companyItem.Mobile
  1042. resp.SellerMobile = companyItem.Mobile
  1043. resp.SellerName = companyItem.SellerName
  1044. resp.MsgType = "Type"
  1045. resp.OperationMode = "Call"
  1046. hasPermission = 2
  1047. } else {
  1048. if strings.Contains(permissionStr, activityInfo.ChartPermissionName) || ((activityInfo.ActivityTypeId == 1 || activityInfo.ActivityTypeId == 3) && strings.Contains(permissionStr, "专家") && companyDetailStatus == "正式") {
  1049. hasPermission = 1
  1050. signupStatus = "Success"
  1051. totalMeeting, errMeeting := models.GetActivityMeetingReminderCount(uid, activityId)
  1052. if errMeeting != nil {
  1053. br.Msg = "获取失败"
  1054. br.ErrMsg = "获取失败,Err:" + errMeeting.Error()
  1055. return
  1056. }
  1057. if totalMeeting > 0 {
  1058. br.Msg = "您已预约,请勿重复预约"
  1059. return
  1060. }
  1061. item.UserId = uid
  1062. item.ActivityId = activityId
  1063. item.CreateTime = time.Now()
  1064. item.Mobile = user.Mobile
  1065. item.Email = user.Email
  1066. item.CompanyId = user.CompanyId
  1067. item.CompanyName = user.CompanyName
  1068. _, errSignup := models.AddActivityMeetingReminder(item)
  1069. if errSignup != nil {
  1070. br.Msg = "操作失败"
  1071. br.ErrMsg = "操作失败,Err:" + errSignup.Error()
  1072. return
  1073. }
  1074. resp.HaqveJurisdiction = true
  1075. } else {
  1076. resp.PopupMsg = "您暂无权限参加【" + activityInfo.ChartPermissionName + "】行业活动,若想参加请联系对口销售--" + companyItem.SellerName + ":" + companyItem.Mobile
  1077. resp.SellerMobile = companyItem.Mobile
  1078. resp.SellerName = companyItem.SellerName
  1079. resp.MsgType = "Industry"
  1080. resp.OperationMode = "Call"
  1081. hasPermission = 2
  1082. }
  1083. }
  1084. } else { //潜在客户
  1085. if applyCount > 0 {
  1086. hasPermission = 4
  1087. } else {
  1088. hasPermission = 3
  1089. }
  1090. resp.OperationMode = "Apply"
  1091. resp.PopupMsg = "您暂无权限参加 【" + activityInfo.ChartPermissionName + "】行业活动,若想参加可以申请开通哦"
  1092. }
  1093. resp.HasPermission = hasPermission
  1094. resp.SignupStatus = signupStatus
  1095. resp.ActivityId = activityId
  1096. var total int
  1097. total, err = models.GetUserMeetingReminderCount(user.UserId)
  1098. if err != nil {
  1099. br.Msg = "获取信息失败"
  1100. br.ErrMsg = "获取日程数量信息失败,Err:" + err.Error()
  1101. return
  1102. }
  1103. if total == 0 {
  1104. resp.GoFollow = true
  1105. }
  1106. br.Ret = 200
  1107. br.Success = true
  1108. if hasPermission == 1 {
  1109. br.Msg = "设置成功,会前15分钟会为您推送微信消息提醒"
  1110. }
  1111. br.Data = resp
  1112. }
  1113. // @Title 取消会议提醒
  1114. // @Description 取消会议提醒接口
  1115. // @Param request body models.ActivityIdRep true "type json string"
  1116. // @Success Ret=200 {object} models.SignupStatus
  1117. // @router /meetingReminder/cancel [post]
  1118. func (this *ActivityCoAntroller) MeetingReminderCancel() {
  1119. br := new(models.BaseResponse).Init()
  1120. defer func() {
  1121. this.Data["json"] = br
  1122. this.ServeJSON()
  1123. }()
  1124. user := this.User
  1125. if user == nil {
  1126. br.Msg = "请登录"
  1127. br.ErrMsg = "请登录,用户信息为空"
  1128. br.Ret = 408
  1129. return
  1130. }
  1131. uid := user.UserId
  1132. var req models.ActivityIdRep
  1133. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  1134. if err != nil {
  1135. br.Msg = "参数解析异常!"
  1136. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  1137. return
  1138. }
  1139. activityId := req.ActivityId
  1140. signupStatus := "Success"
  1141. item := new(models.CygxActivityMeetingReminder)
  1142. activityInfo, errInfo := models.GetAddActivityInfoById(activityId)
  1143. if activityInfo == nil {
  1144. br.Msg = "操作失败"
  1145. br.ErrMsg = "活动ID错误,不存在activityId:" + strconv.Itoa(activityId)
  1146. return
  1147. }
  1148. if errInfo != nil {
  1149. br.Msg = "操作失败"
  1150. br.ErrMsg = "操作失败,Err:" + errInfo.Error()
  1151. return
  1152. }
  1153. //if signupStatus == "Success" {
  1154. total, err := models.GetActivityMeetingReminderCount(uid, activityId)
  1155. if err != nil {
  1156. br.Msg = "获取失败"
  1157. br.ErrMsg = "获取失败,Err:" + err.Error()
  1158. return
  1159. }
  1160. if total == 0 {
  1161. br.Msg = "您暂未添加该活动会议提醒"
  1162. return
  1163. }
  1164. resultTime := utils.StrTimeToTime(activityInfo.ActivityTime) //时间字符串格式转时间格式
  1165. if time.Now().After(resultTime.Add(-time.Minute * 15)) {
  1166. br.Msg = "活动开始前15分钟无法取消会议提醒"
  1167. return
  1168. }
  1169. item.UserId = uid
  1170. item.ActivityId = activityId
  1171. item.CreateTime = time.Now()
  1172. item.Mobile = user.Mobile
  1173. item.Email = user.Email
  1174. item.CompanyId = user.CompanyId
  1175. item.CompanyName = user.CompanyName
  1176. _, errSignup := models.CancelActivityMeetingReminder(item)
  1177. if errSignup != nil {
  1178. br.Msg = "操作失败"
  1179. br.ErrMsg = "操作失败,Err:" + errSignup.Error()
  1180. return
  1181. }
  1182. //}
  1183. resp := new(models.SignupStatus)
  1184. resp.SignupStatus = signupStatus
  1185. resp.ActivityId = activityId
  1186. br.Ret = 200
  1187. br.Success = true
  1188. br.Msg = "会议提醒已取消"
  1189. br.Data = resp
  1190. }