activity.go 28 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912
  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. //if activeState == "" {
  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. if isShowJurisdiction == 1 && chartPermissionIds == "" {
  102. resp := new(models.GetCygxActivityListRep)
  103. br.Ret = 200
  104. br.Success = true
  105. br.Msg = "获取成功"
  106. br.Data = resp
  107. return
  108. }
  109. var startSize int
  110. if pageSize <= 0 {
  111. pageSize = utils.PageSize20
  112. }
  113. if currentIndex <= 0 {
  114. currentIndex = 1
  115. }
  116. startSize = utils.StartIndex(currentIndex, pageSize)
  117. var condition string
  118. var pars []interface{}
  119. if keyWord != "" {
  120. condition += ` AND (art.activity_name LIKE '%` + keyWord + `%' ) `
  121. }
  122. //行业名称
  123. if len(chartPermissionIds) > 0 {
  124. condition += ` AND art.chart_permission_id IN (` + chartPermissionIds + `)`
  125. }
  126. if activityTypeIds != "" {
  127. condition += ` AND art.activity_type_id IN (` + activityTypeIds + `)`
  128. }
  129. condition += ` AND art.publish_status = 1 `
  130. if activeState != "" {
  131. condition += ` AND art.active_state IN (` + activeState + `)`
  132. }
  133. total, err := models.GetActivityCount(condition, pars)
  134. if err != nil {
  135. br.Msg = "获取失败"
  136. br.ErrMsg = "获取失败,Err:" + err.Error()
  137. return
  138. }
  139. if activeState == "2" || activeState == "3" || activeState == "2,3" {
  140. condition += ` ORDER BY art.activity_time DESC `
  141. }
  142. list, errList := models.GetActivityListAll(condition, pars, uid, startSize, pageSize)
  143. if errList != nil {
  144. br.Msg = "获取失败"
  145. br.ErrMsg = "获取失败,Err:" + errList.Error()
  146. return
  147. }
  148. for k, v := range list {
  149. if strings.Contains(v.ActivityName, "【") {
  150. list[k].IsBrackets = 1
  151. }
  152. }
  153. page := paging.GetPaging(currentIndex, pageSize, total)
  154. resp := new(models.GetCygxActivityListRep)
  155. resp.List = list
  156. resp.Paging = page
  157. br.Ret = 200
  158. br.Success = true
  159. br.Msg = "获取成功"
  160. br.Data = resp
  161. }
  162. // @Title 我的日程
  163. // @Description 我的日程列表接口
  164. // @Param PageSize query int true "每页数据条数"
  165. // @Param CurrentIndex query int true "当前页页码,从1开始"
  166. // @Success 200 {object} models.GetCygxActivityListRep
  167. // @router /scheduleList [get]
  168. func (this *ActivityCoAntroller) ScheduleList() {
  169. br := new(models.BaseResponse).Init()
  170. defer func() {
  171. this.Data["json"] = br
  172. this.ServeJSON()
  173. }()
  174. user := this.User
  175. if user == nil {
  176. br.Msg = "请登录"
  177. br.ErrMsg = "请登录,SysUser Is Empty"
  178. return
  179. }
  180. uid := user.UserId
  181. pageSize, _ := this.GetInt("PageSize")
  182. currentIndex, _ := this.GetInt("CurrentIndex")
  183. var startSize int
  184. if pageSize <= 0 {
  185. pageSize = utils.PageSize20
  186. }
  187. if currentIndex <= 0 {
  188. currentIndex = 1
  189. }
  190. startSize = utils.StartIndex(currentIndex, pageSize)
  191. var condition string
  192. var pars []interface{}
  193. //condition += ` AND art.publish_status = 1 AND art.active_state IN(1,2) AND s.is_cancel = 0 AND s.fail_type = 0 `
  194. condition += ` AND art.publish_status = 1 AND art.active_state IN(1,2) `
  195. total, err := models.GetScheduleCount(uid)
  196. if err != nil {
  197. br.Msg = "获取失败"
  198. br.ErrMsg = "获取失败,Err:" + err.Error()
  199. return
  200. }
  201. list, errList := models.GetScheduleList(condition, pars, uid, startSize, pageSize)
  202. if errList != nil {
  203. br.Msg = "获取失败"
  204. br.ErrMsg = "获取失败,Err:" + errList.Error()
  205. return
  206. }
  207. for k, v := range list {
  208. if strings.Contains(v.ActivityName, "【") {
  209. list[k].IsBrackets = 1
  210. }
  211. }
  212. page := paging.GetPaging(currentIndex, pageSize, total)
  213. resp := new(models.GetCygxActivityListRep)
  214. resp.List = list
  215. resp.Paging = page
  216. br.Ret = 200
  217. br.Success = true
  218. br.Msg = "获取成功"
  219. br.Data = resp
  220. }
  221. // @Title 活动详情
  222. // @Description 获取活动详情接口
  223. // @Param ActivityId query int true "活动ID"
  224. // @Success Ret=200 {object} models.CygxActivityResp
  225. // @router /detail [get]
  226. func (this *ActivityCoAntroller) Detail() {
  227. br := new(models.BaseResponse).Init()
  228. defer func() {
  229. this.Data["json"] = br
  230. this.ServeJSON()
  231. }()
  232. user := this.User
  233. if user == nil {
  234. br.Msg = "请登录"
  235. br.ErrMsg = "请登录,用户信息为空"
  236. br.Ret = 408
  237. return
  238. }
  239. uid := user.UserId
  240. activityId, _ := this.GetInt("ActivityId")
  241. if activityId < 1 {
  242. br.Msg = "请输入活动ID"
  243. return
  244. }
  245. activityInfo, err := models.GetAddActivityInfoByIdShow(uid, activityId)
  246. if activityInfo == nil {
  247. br.Msg = "活动不存在"
  248. br.ErrMsg = "活动ID错误,Err:" + "activityId:" + strconv.Itoa(activityId)
  249. return
  250. }
  251. detail, errDetail := models.GetActivityTypeDetailById(activityInfo.ActivityTypeId)
  252. if errDetail != nil {
  253. br.Msg = "获取信息失败"
  254. br.ErrMsg = "获取信息失败,Err:" + errDetail.Error()
  255. return
  256. }
  257. if activityInfo.IsSignup > 0 {
  258. detail, errDetail := models.GetActivitySignupDetail(activityId, uid)
  259. if errDetail != nil {
  260. br.Msg = "获取信息失败"
  261. br.ErrMsg = "获取信息失败,Err:" + errDetail.Error()
  262. return
  263. }
  264. activityInfo.SignupType = detail.SignupType
  265. }
  266. activityInfo.ShowType = detail.ShowType
  267. resp := new(models.CygxActivityResp)
  268. hasPermission := 0
  269. //判断是否已经申请过
  270. applyCount, err := models.GetApplyRecordCount(uid)
  271. if err != nil && err.Error() != utils.ErrNoRow() {
  272. br.Msg = "获取信息失败"
  273. br.ErrMsg = "判断是否已申请过试用失败,Err:" + err.Error()
  274. return
  275. }
  276. if user.CompanyId > 1 {
  277. permissionStr, err := models.GetCompanyPermission(user.CompanyId)
  278. if err != nil {
  279. br.Msg = "获取信息失败"
  280. br.ErrMsg = "获取客户权限信息失败,Err:" + err.Error()
  281. return
  282. }
  283. companyItem, err := models.GetCompanyDetailAllById(user.CompanyId)
  284. if err != nil {
  285. if err.Error() == utils.ErrNoRow() {
  286. resp.HasPermission = 4
  287. br.Ret = 200
  288. br.Success = true
  289. br.Msg = "获取成功"
  290. br.Data = resp
  291. return
  292. } else {
  293. br.Msg = "获取信息失败"
  294. br.ErrMsg = "获取客户公司信息失败,Err:" + err.Error()
  295. return
  296. }
  297. }
  298. //if errcompanyItem.Error() == utils.ErrNoRow() {
  299. // br.Msg = "获取信息失败"
  300. // br.ErrMsg = "判断是否已申请过试用失败,Err:" + errcompanyItem.Error()
  301. // return
  302. //}
  303. //1专家电话会、2分析师电话会、3公司调研电话会、4公司线下调研、5专家线下沙龙、6分析师线下沙龙
  304. //OperationMode string `description:"操作方式 Apply:立即申请、Call:拨号 为空则为有权限"`
  305. if activityInfo.ActivityTypeId != 1 && activityInfo.ActivityTypeId != 4 && permissionStr == "专家" {
  306. resp.PopupMsg = "您暂无权限参加" + activityInfo.ActivityName + "类型活动,若想参加请联系对口销售--" + companyItem.SellerName + ":" + companyItem.Mobile
  307. resp.SellerMobile = companyItem.Mobile
  308. resp.OperationMode = "Call"
  309. hasPermission = 2
  310. } else {
  311. if strings.Contains(permissionStr, activityInfo.ChartPermissionName) {
  312. hasPermission = 1
  313. resp.HaqveJurisdiction = true
  314. } else {
  315. resp.PopupMsg = "您暂无权限参加【" + activityInfo.ChartPermissionName + "】行业活动,若想参加请联系对口销售--" + companyItem.SellerName + ":" + companyItem.Mobile
  316. resp.SellerMobile = companyItem.Mobile
  317. resp.OperationMode = "Call"
  318. hasPermission = 2
  319. }
  320. }
  321. } else { //潜在客户
  322. if applyCount > 0 {
  323. hasPermission = 4
  324. } else {
  325. hasPermission = 3
  326. }
  327. resp.OperationMode = "Apply"
  328. resp.PopupMsg = "您暂无权限参加 【" + activityInfo.ChartPermissionName + "】行业活动,若想参加可以申请开通哦"
  329. }
  330. if hasPermission == 1 {
  331. resp.Detail = activityInfo
  332. }
  333. resp.HasPermission = hasPermission
  334. br.Ret = 200
  335. br.Success = true
  336. br.Msg = "获取成功"
  337. br.Data = resp
  338. }
  339. // @Title 活动报名
  340. // @Description 活动报名接口
  341. // @Param request body models.ActivitySingnupRep true "type json string"
  342. // @Success Ret=200 {object} models.SignupStatus
  343. // @router /signup/add [post]
  344. func (this *ActivityCoAntroller) SignupAdd() {
  345. br := new(models.BaseResponse).Init()
  346. defer func() {
  347. this.Data["json"] = br
  348. this.ServeJSON()
  349. }()
  350. user := this.User
  351. if user == nil {
  352. br.Msg = "请登录"
  353. br.ErrMsg = "请登录,用户信息为空"
  354. br.Ret = 408
  355. return
  356. }
  357. uid := user.UserId
  358. //var signupStatus string
  359. signupStatus := ""
  360. var req models.ActivitySingnupRep
  361. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  362. if err != nil {
  363. br.Msg = "参数解析异常!"
  364. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  365. return
  366. }
  367. activityId := req.ActivityId
  368. signupType := req.SignupType
  369. //if signupType != 1 && signupType != 2 {
  370. // br.Msg = "请选择正确的报名方式!"
  371. // return
  372. //}
  373. //SignupStatus string `description:"报名状态:人数已满:FullStarffed、单机构超过两人:TwoPeople、爽约次数过多:BreakPromise、超时:Overtime 、成功:Success"`
  374. //HasPermission int `description:"1:有该行业权限,正常展示,2:无该行业权限,3:潜在客户,未提交过申请,4:潜在客户,已提交过申请"`
  375. item := new(models.CygxActivitySignup)
  376. resp := new(models.SignupStatus)
  377. hasPermission := 0
  378. //判断是否已经申请过
  379. applyCount, err := models.GetApplyRecordCount(uid)
  380. if err != nil && err.Error() != utils.ErrNoRow() {
  381. br.Msg = "获取信息失败"
  382. br.ErrMsg = "判断是否已申请过试用失败,Err:" + err.Error()
  383. return
  384. }
  385. activityInfo, errInfo := models.GetAddActivityInfoById(activityId)
  386. if activityInfo == nil {
  387. br.Msg = "操作失败"
  388. br.ErrMsg = "活动ID错误,不存在activityId:" + strconv.Itoa(activityId)
  389. return
  390. }
  391. if errInfo != nil {
  392. br.Msg = "操作失败"
  393. br.ErrMsg = "操作失败,Err:" + errInfo.Error()
  394. return
  395. }
  396. if user.CompanyId > 1 {
  397. permissionStr, err := models.GetCompanyPermission(user.CompanyId)
  398. if err != nil {
  399. br.Msg = "获取信息失败"
  400. br.ErrMsg = "获取客户信息失败,Err:" + err.Error()
  401. return
  402. }
  403. companyItem, err := models.GetCompanyDetailAllById(user.CompanyId)
  404. if err != nil {
  405. br.Msg = "获取信息失败"
  406. br.ErrMsg = "获取客户信息失败,Err:" + err.Error()
  407. return
  408. }
  409. //1专家电话会、2分析师电话会、3公司调研电话会、4公司线下调研、5专家线下沙龙、6分析师线下沙龙
  410. //OperationMode string `description:"操作方式 Apply:立即申请、Call:拨号 为空则为有权限"`
  411. if activityInfo.ActivityTypeId != 1 && activityInfo.ActivityTypeId != 4 && permissionStr == "专家" {
  412. resp.PopupMsg = "您暂无权限参加" + activityInfo.ActivityName + "类型活动,若想参加请联系对口销售--" + companyItem.SellerName + ":" + companyItem.Mobile
  413. resp.SellerMobile = companyItem.Mobile
  414. resp.OperationMode = "Call"
  415. hasPermission = 2
  416. } else {
  417. fmt.Println(activityInfo.ChartPermissionName)
  418. fmt.Println(permissionStr)
  419. if strings.Contains(permissionStr, activityInfo.ChartPermissionName) {
  420. hasPermission = 1
  421. signupStatus = "Success"
  422. resultTime := utils.StrTimeToTime(activityInfo.ActivityTime) //时间字符串格式转时间格式
  423. if time.Now().After(resultTime.Add(-time.Minute * 60)) {
  424. signupStatus = "Overtime"
  425. }
  426. total, errtotal := models.GetActivitySignupCount(uid, activityId)
  427. if errtotal != nil {
  428. br.Msg = "获取失败"
  429. br.ErrMsg = "获取失败,Err:" + errtotal.Error()
  430. return
  431. }
  432. if total > 0 {
  433. br.Msg = "您已报名这个活动"
  434. return
  435. }
  436. if signupStatus == "Success" {
  437. item.UserId = uid
  438. item.ActivityId = activityId
  439. item.CreateTime = time.Now()
  440. item.Mobile = user.Mobile
  441. item.Email = user.Email
  442. item.CompanyId = user.CompanyId
  443. item.CompanyName = user.CompanyName
  444. item.SignupType = signupType
  445. _, errSignup := models.AddActivitySignup(item)
  446. if errSignup != nil {
  447. br.Msg = "操作失败"
  448. br.ErrMsg = "操作失败,Err:" + errSignup.Error()
  449. return
  450. }
  451. }
  452. resp.HaqveJurisdiction = true
  453. } else {
  454. resp.PopupMsg = "您暂无权限参加【" + activityInfo.ChartPermissionName + "】行业活动,若想参加请联系对口销售--" + companyItem.SellerName + ":" + companyItem.Mobile
  455. resp.SellerMobile = companyItem.Mobile
  456. resp.OperationMode = "Call"
  457. hasPermission = 2
  458. }
  459. }
  460. } else { //潜在客户
  461. if applyCount > 0 {
  462. hasPermission = 4
  463. } else {
  464. hasPermission = 3
  465. }
  466. resp.OperationMode = "Apply"
  467. resp.PopupMsg = "您暂无权限参加 【" + activityInfo.ChartPermissionName + "】行业活动,若想参加可以申请开通哦"
  468. }
  469. resp.SignupType = signupType
  470. resp.SignupStatus = signupStatus
  471. resp.HasPermission = hasPermission
  472. if signupStatus == "Success" {
  473. resp.ActivityId = activityId
  474. }
  475. if activityId%2 == 1 {
  476. resp.GoFollow = true
  477. }
  478. br.Ret = 200
  479. br.Success = true
  480. br.Msg = "操作成功"
  481. br.Data = resp
  482. }
  483. // @Title 活动取消报名
  484. // @Description 活动取消报名接口
  485. // @Param request body models.ActivitySingnupRep true "type json string"
  486. // @Success Ret=200 {object} models.SignupStatus
  487. // @router /signup/cancel [post]
  488. func (this *ActivityCoAntroller) SignupCancel() {
  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. var req models.ActivitySingnupRep
  503. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  504. if err != nil {
  505. br.Msg = "参数解析异常!"
  506. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  507. return
  508. }
  509. activityId := req.ActivityId
  510. signupType := req.SignupType
  511. //if signupType != 1 && signupType != 2 {
  512. // br.Msg = "请选择正确的报名方式!"
  513. // return
  514. //}
  515. item := new(models.CygxActivitySignup)
  516. activityInfo, errInfo := models.GetAddActivityInfoById(activityId)
  517. if activityInfo == nil {
  518. br.Msg = "操作失败"
  519. br.ErrMsg = "活动ID错误,不存在activityId:" + strconv.Itoa(activityId)
  520. return
  521. }
  522. if errInfo != nil {
  523. br.Msg = "操作失败"
  524. br.ErrMsg = "操作失败,Err:" + errInfo.Error()
  525. return
  526. }
  527. resultTime := utils.StrTimeToTime(activityInfo.ActivityTime) //时间字符串格式转时间格式
  528. if time.Now().After(resultTime.Add(-time.Minute * 60)) {
  529. if signupType == 1 {
  530. br.Msg = "活动开始前1小时内无法取消预约外呼,请联系对口销售处理"
  531. } else {
  532. br.Msg = "活动开始前1小时内无法取消报名,请联系对口销售处理"
  533. }
  534. return
  535. }
  536. total, err := models.GetActivitySignupCount(uid, activityId)
  537. if err != nil {
  538. br.Msg = "获取失败"
  539. br.ErrMsg = "获取失败,Err:" + err.Error()
  540. return
  541. }
  542. if total == 0 {
  543. br.Msg = "您暂未报名这个活动"
  544. return
  545. }
  546. item.UserId = uid
  547. item.ActivityId = activityId
  548. item.CreateTime = time.Now()
  549. item.Mobile = user.Mobile
  550. item.Email = user.Email
  551. item.CompanyId = user.CompanyId
  552. item.CompanyName = user.CompanyName
  553. resp := new(models.SignupStatus)
  554. resp.ActivityId = activityId
  555. _, errSignup := models.CancelActivitySignup(item)
  556. if errSignup != nil {
  557. br.Msg = "操作失败"
  558. br.ErrMsg = "操作失败,Err:" + errSignup.Error()
  559. return
  560. }
  561. br.Ret = 200
  562. br.Success = true
  563. br.Msg = "操作成功"
  564. br.Data = resp
  565. }
  566. // @Title 用户搜索详情
  567. // @Description 获取用户搜索详情接口
  568. // @Param IsShowJurisdiction query int true "是否仅展示有权限的,默认为0,1是,2否 "
  569. // @Success Ret=200 {object} models.ActivityUserSearchContentList
  570. // @router /getUserSearchContent [get]
  571. func (this *ActivityCoAntroller) GetUserSearchContent() {
  572. br := new(models.BaseResponse).Init()
  573. defer func() {
  574. this.Data["json"] = br
  575. this.ServeJSON()
  576. }()
  577. user := this.User
  578. if user == nil {
  579. br.Msg = "请登录"
  580. br.ErrMsg = "请登录,用户信息为空"
  581. br.Ret = 408
  582. return
  583. }
  584. uid := user.UserId
  585. detailSeearch := new(models.CygxActivityUserSearchContent)
  586. detailSeearch.IsShowJurisdiction = 0
  587. detailSeearch.ChartPermissionids = ""
  588. detailSeearch.ActiveState = ""
  589. detail, _ := models.GetUserSearchContentByUid(uid)
  590. if detail == nil {
  591. detail = detailSeearch
  592. }
  593. //if err != nil {
  594. // br.Msg = "获取信息失败"
  595. // br.ErrMsg = "获取信息失败,Err:" + err.Error()
  596. // return
  597. //}
  598. isShowJurisdiction, _ := this.GetInt("IsShowJurisdiction")
  599. //chartPermissionidsSlice := strings.Split(detail.ChartPermissionids, ",")
  600. //activityTypeidsSlice := strings.Split(detail.ActivityTypeids, ",")
  601. //activeStateSlice := strings.Split(detail.ActiveState, ",") //"活动进行状态 未开始:1、进行中2、已结束3"`
  602. listActivityType, errActivityType := models.GetActivityTypeList()
  603. if errActivityType != nil {
  604. br.Msg = "获取失败"
  605. br.ErrMsg = "获取数据失败,Err:" + errActivityType.Error()
  606. return
  607. }
  608. //for _, v := range activityTypeidsSlice {
  609. // for k2, v2 := range listActivityType {
  610. // if strconv.Itoa(v2.ActivityTypeId) == v {
  611. // listActivityType[k2].IsChoose = true
  612. // }
  613. // }
  614. //}
  615. var listChartPermissionid []*models.ActivityChartPermission
  616. var errChart error
  617. if isShowJurisdiction == 1 {
  618. listChartPermissionidAll, errChartAll := models.GetUserCompanyPermission(user.CompanyId)
  619. listChartPermissionid = listChartPermissionidAll
  620. errChart = errChartAll
  621. } else if isShowJurisdiction == 2 {
  622. listChartPermissionidAll, errChartAll := models.GetChartPermissionActivity()
  623. listChartPermissionid = listChartPermissionidAll
  624. errChart = errChartAll
  625. } else {
  626. if detail.IsShowJurisdiction == 1 {
  627. listChartPermissionidAll, errChartAll := models.GetUserCompanyPermission(user.CompanyId)
  628. listChartPermissionid = listChartPermissionidAll
  629. errChart = errChartAll
  630. } else {
  631. listChartPermissionidAll, errChartAll := models.GetChartPermissionActivity()
  632. listChartPermissionid = listChartPermissionidAll
  633. errChart = errChartAll
  634. }
  635. }
  636. if errChart != nil {
  637. br.Msg = "获取信息失败"
  638. br.ErrMsg = "获取品种信息失败,Err:" + errChart.Error()
  639. return
  640. }
  641. //for _, v := range chartPermissionidsSlice {
  642. // for k2, v2 := range listChartPermissionid {
  643. // if strconv.Itoa(v2.ChartPermissionId) == v {
  644. // listChartPermissionid[k2].IsChoose = true
  645. // }
  646. // }
  647. //}
  648. resp := new(models.ActivityUserSearchContentList)
  649. if detail.IsShowJurisdiction == 1 {
  650. resp.IsShowJurisdiction = true
  651. }
  652. fmt.Println(isShowJurisdiction)
  653. if isShowJurisdiction == 1 || detail.IsShowJurisdiction == 1 {
  654. resp.IsShowJurisdiction = true
  655. for k, _ := range listChartPermissionid {
  656. listChartPermissionid[k].IsChoose = true
  657. }
  658. }
  659. if isShowJurisdiction == 2 {
  660. resp.IsShowJurisdiction = false
  661. }
  662. activeStateList := []models.ActivityStaus{models.ActivityStaus{Id: 1, StatusName: "未开始", IsChoose: true}, models.ActivityStaus{Id: 2, StatusName: "进行中"}, models.ActivityStaus{Id: 3, StatusName: "已结束"}}
  663. //for _, v := range activeStateSlice {
  664. // for k2, v2 := range activeStateList {
  665. // if strconv.Itoa(v2.Id) == v {
  666. // //activeStateList[k2].IsChoose = true
  667. // }
  668. // }
  669. //}
  670. if activeStateList[1].IsChoose == activeStateList[2].IsChoose == false {
  671. activeStateList[0].IsChoose = true
  672. }
  673. resp.ListActivityType = listActivityType
  674. resp.ListChartPermission = listChartPermissionid
  675. resp.ListActivityStaus = activeStateList
  676. br.Ret = 200
  677. br.Success = true
  678. br.Msg = "获取成功"
  679. br.Data = resp
  680. }
  681. // @Title 添加会议提醒
  682. // @Description 添加会议提醒接口
  683. // @Param request body models.ActivityIdRep true "type json string"
  684. // @Success Ret=200 {object} models.SignupStatus
  685. // @router /meetingReminder/add [post]
  686. func (this *ActivityCoAntroller) MeetingReminderAdd() {
  687. br := new(models.BaseResponse).Init()
  688. defer func() {
  689. this.Data["json"] = br
  690. this.ServeJSON()
  691. }()
  692. user := this.User
  693. if user == nil {
  694. br.Msg = "请登录"
  695. br.ErrMsg = "请登录,用户信息为空"
  696. br.Ret = 408
  697. return
  698. }
  699. uid := user.UserId
  700. //var signupStatus string
  701. signupStatus := "Success"
  702. var req models.ActivityIdRep
  703. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  704. if err != nil {
  705. br.Msg = "参数解析异常!"
  706. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  707. return
  708. }
  709. activityId := req.ActivityId
  710. //SignupStatus string `description:"报名状态:人数已满:FullStarffed、单机构超过两人:TwoPeople、爽约次数过多:BreakPromise、超时:Overtime 、成功:Success"`
  711. item := new(models.CygxActivityMeetingReminder)
  712. resp := new(models.SignupStatus)
  713. hasPermission := 0
  714. //判断是否已经申请过
  715. applyCount, err := models.GetApplyRecordCount(uid)
  716. if err != nil && err.Error() != utils.ErrNoRow() {
  717. br.Msg = "获取信息失败"
  718. br.ErrMsg = "判断是否已申请过试用失败,Err:" + err.Error()
  719. return
  720. }
  721. activityInfo, errInfo := models.GetAddActivityInfoById(activityId)
  722. if activityInfo == nil {
  723. br.Msg = "操作失败"
  724. br.ErrMsg = "活动ID错误,不存在activityId:" + strconv.Itoa(activityId)
  725. return
  726. }
  727. if errInfo != nil {
  728. br.Msg = "操作失败"
  729. br.ErrMsg = "操作失败,Err:" + errInfo.Error()
  730. return
  731. }
  732. resultTime := utils.StrTimeToTime(activityInfo.ActivityTime) //时间字符串格式转时间格式
  733. if time.Now().After(resultTime.Add(-time.Minute * 15)) {
  734. br.Msg = "活动开始前15分钟无法设置会议提醒"
  735. return
  736. }
  737. if user.CompanyId > 1 {
  738. permissionStr, err := models.GetCompanyPermission(user.CompanyId)
  739. if err != nil {
  740. br.Msg = "获取信息失败"
  741. br.ErrMsg = "获取客户信息失败,Err:" + err.Error()
  742. return
  743. }
  744. companyItem, err := models.GetCompanyDetailAllById(user.CompanyId)
  745. if err != nil {
  746. br.Msg = "获取信息失败"
  747. br.ErrMsg = "获取客户信息失败,Err:" + err.Error()
  748. return
  749. }
  750. if activityInfo.ActivityTypeId != 1 && activityInfo.ActivityTypeId != 4 && permissionStr == "专家" {
  751. resp.PopupMsg = "您暂无权限参加" + activityInfo.ActivityName + "类型活动,若想参加请联系对口销售--" + companyItem.SellerName + ":" + companyItem.Mobile
  752. resp.SellerMobile = companyItem.Mobile
  753. resp.OperationMode = "Call"
  754. hasPermission = 2
  755. } else {
  756. if strings.Contains(permissionStr, activityInfo.ChartPermissionName) {
  757. hasPermission = 1
  758. signupStatus = "Success"
  759. totalMeeting, errMeeting := models.GetActivityMeetingReminderCount(uid, activityId)
  760. if errMeeting != nil {
  761. br.Msg = "获取失败"
  762. br.ErrMsg = "获取失败,Err:" + errMeeting.Error()
  763. return
  764. }
  765. if totalMeeting > 0 {
  766. br.Msg = "您已预约,请勿重复预约"
  767. return
  768. }
  769. item.UserId = uid
  770. item.ActivityId = activityId
  771. item.CreateTime = time.Now()
  772. item.Mobile = user.Mobile
  773. item.Email = user.Email
  774. item.CompanyId = user.CompanyId
  775. item.CompanyName = user.CompanyName
  776. _, errSignup := models.AddActivityMeetingReminder(item)
  777. if errSignup != nil {
  778. br.Msg = "操作失败"
  779. br.ErrMsg = "操作失败,Err:" + errSignup.Error()
  780. return
  781. }
  782. resp.HaqveJurisdiction = true
  783. } else {
  784. resp.PopupMsg = "您暂无权限参加【" + activityInfo.ChartPermissionName + "】行业活动,若想参加请联系对口销售--" + companyItem.SellerName + ":" + companyItem.Mobile
  785. resp.SellerMobile = companyItem.Mobile
  786. resp.OperationMode = "Call"
  787. hasPermission = 2
  788. }
  789. }
  790. } else { //潜在客户
  791. if applyCount > 0 {
  792. hasPermission = 4
  793. } else {
  794. hasPermission = 3
  795. }
  796. resp.OperationMode = "Apply"
  797. resp.PopupMsg = "您暂无权限参加 【" + activityInfo.ChartPermissionName + "】行业活动,若想参加可以申请开通哦"
  798. }
  799. resp.HasPermission = hasPermission
  800. resp.SignupStatus = signupStatus
  801. resp.ActivityId = activityId
  802. if activityId%2 == 1 {
  803. resp.GoFollow = true
  804. }
  805. br.Ret = 200
  806. br.Success = true
  807. if hasPermission == 1 {
  808. br.Msg = "设置成功,会前15分钟会为您推送微信消息提醒"
  809. }
  810. br.Data = resp
  811. }
  812. // @Title 取消会议提醒
  813. // @Description 取消会议提醒接口
  814. // @Param request body models.ActivityIdRep true "type json string"
  815. // @Success Ret=200 {object} models.SignupStatus
  816. // @router /meetingReminder/cancel [post]
  817. func (this *ActivityCoAntroller) MeetingReminderCancel() {
  818. br := new(models.BaseResponse).Init()
  819. defer func() {
  820. this.Data["json"] = br
  821. this.ServeJSON()
  822. }()
  823. user := this.User
  824. if user == nil {
  825. br.Msg = "请登录"
  826. br.ErrMsg = "请登录,用户信息为空"
  827. br.Ret = 408
  828. return
  829. }
  830. uid := user.UserId
  831. var req models.ActivityIdRep
  832. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  833. if err != nil {
  834. br.Msg = "参数解析异常!"
  835. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  836. return
  837. }
  838. activityId := req.ActivityId
  839. signupStatus := "Success"
  840. item := new(models.CygxActivityMeetingReminder)
  841. activityInfo, errInfo := models.GetAddActivityInfoById(activityId)
  842. if activityInfo == nil {
  843. br.Msg = "操作失败"
  844. br.ErrMsg = "活动ID错误,不存在activityId:" + strconv.Itoa(activityId)
  845. return
  846. }
  847. if errInfo != nil {
  848. br.Msg = "操作失败"
  849. br.ErrMsg = "操作失败,Err:" + errInfo.Error()
  850. return
  851. }
  852. //if signupStatus == "Success" {
  853. total, err := models.GetActivityMeetingReminderCount(uid, activityId)
  854. if err != nil {
  855. br.Msg = "获取失败"
  856. br.ErrMsg = "获取失败,Err:" + err.Error()
  857. return
  858. }
  859. if total == 0 {
  860. br.Msg = "您暂未添加该活动会议提醒"
  861. return
  862. }
  863. resultTime := utils.StrTimeToTime(activityInfo.ActivityTime) //时间字符串格式转时间格式
  864. if time.Now().After(resultTime.Add(-time.Minute * 15)) {
  865. br.Msg = "活动开始前15分钟无法取消会议提醒"
  866. return
  867. }
  868. item.UserId = uid
  869. item.ActivityId = activityId
  870. item.CreateTime = time.Now()
  871. item.Mobile = user.Mobile
  872. item.Email = user.Email
  873. item.CompanyId = user.CompanyId
  874. item.CompanyName = user.CompanyName
  875. _, errSignup := models.CancelActivityMeetingReminder(item)
  876. if errSignup != nil {
  877. br.Msg = "操作失败"
  878. br.ErrMsg = "操作失败,Err:" + errSignup.Error()
  879. return
  880. }
  881. //}
  882. resp := new(models.SignupStatus)
  883. resp.SignupStatus = signupStatus
  884. resp.ActivityId = activityId
  885. br.Ret = 200
  886. br.Success = true
  887. br.Msg = "会议提醒已取消"
  888. br.Data = resp
  889. }