activity.go 33 KB

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