activity.go 46 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433
  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. type ActivityABaseController struct {
  17. BaseCommonController
  18. }
  19. // @Title 活动类型列表
  20. // @Description活动类型列表接口
  21. // @Success 200 {object} models.ActivityTypeListResp
  22. // @router /activityTypelist [get]
  23. func (this *ActivityCoAntroller) List() {
  24. br := new(models.BaseResponse).Init()
  25. defer func() {
  26. this.Data["json"] = br
  27. this.ServeJSON()
  28. }()
  29. user := this.User
  30. if user == nil {
  31. br.Msg = "请登录"
  32. br.ErrMsg = "请登录,SysUser Is Empty"
  33. br.Ret = 408
  34. return
  35. }
  36. resp := new(models.ActivityTypeListResp)
  37. list, err := models.GetActivityTypeList()
  38. if err != nil {
  39. br.Msg = "获取失败"
  40. br.ErrMsg = "获取数据失败,Err:" + err.Error()
  41. return
  42. }
  43. resp.List = list
  44. br.Ret = 200
  45. br.Success = true
  46. br.Msg = "获取成功"
  47. br.Data = resp
  48. }
  49. // @Title 活动列表
  50. // @Description 获取活动列表接口
  51. // @Param PageSize query int true "每页数据条数"
  52. // @Param CurrentIndex query int true "当前页页码,从1开始"
  53. // @Param ChartPermissionIds query string false "行业id 多个用 , 隔开"
  54. // @Param ActivityTypeIds query string false "活动类型id 多个用 , 隔开"
  55. // @Param KeyWord query string false "搜索关键词 多个用 , 隔开"
  56. // @Param ActiveState query string false "活动进行状态 未开始:1、进行中2、已结束3"
  57. // @Param WhichDay query string false "哪一天 今天:1、明天:2,多个用 , 隔开"
  58. // @Param IsShowJurisdiction query int false "是否仅展示有权限的,1是,2否 默认为零"
  59. // @Success 200 {object} models.GetCygxActivityListRep
  60. // @router /list [get]
  61. func (this *ActivityCoAntroller) ActivityList() {
  62. br := new(models.BaseResponse).Init()
  63. defer func() {
  64. this.Data["json"] = br
  65. this.ServeJSON()
  66. }()
  67. user := this.User
  68. if user == nil {
  69. br.Msg = "请登录"
  70. br.ErrMsg = "请登录,SysUser Is Empty"
  71. return
  72. }
  73. fmt.Println(user.Mobile)
  74. uid := user.UserId
  75. pageSize, _ := this.GetInt("PageSize")
  76. currentIndex, _ := this.GetInt("CurrentIndex")
  77. chartPermissionIds := this.GetString("ChartPermissionIds")
  78. activityTypeIds := this.GetString("ActivityTypeIds")
  79. whichDay := this.GetString("WhichDay")
  80. isShowJurisdiction, _ := this.GetInt("IsShowJurisdiction")
  81. keyWord := this.GetString("KeyWord")
  82. activeState := this.GetString("ActiveState")
  83. itemSearch := new(models.CygxActivityUserSearchContent)
  84. itemSearch.UserId = uid
  85. itemSearch.CreateTime = time.Now()
  86. itemSearch.Mobile = user.Mobile
  87. itemSearch.Email = user.Email
  88. itemSearch.CompanyId = user.CompanyId
  89. itemSearch.CompanyName = user.CompanyName
  90. itemSearch.ModifyTime = time.Now()
  91. itemSearch.ChartPermissionids = chartPermissionIds
  92. itemSearch.ActivityTypeids = activityTypeIds
  93. itemSearch.ActiveState = activeState
  94. itemSearch.IsShowJurisdiction = isShowJurisdiction
  95. _, errSearch := models.AddUserSearchContent(itemSearch)
  96. if errSearch != nil {
  97. br.Msg = "操作失败"
  98. br.ErrMsg = "操作失败,Err:" + errSearch.Error()
  99. return
  100. }
  101. var userType int
  102. var permissionStr string
  103. if user.CompanyId <= 1 {
  104. userType = 0
  105. } else {
  106. companyDetail, err := models.GetCompanyDetailByIdGroup(user.CompanyId)
  107. if err != nil {
  108. br.Msg = "获取信息失败!"
  109. br.ErrMsg = "获取客户详情失败,Err:" + err.Error()
  110. return
  111. }
  112. if companyDetail == nil {
  113. br.Msg = "获取信息失败!"
  114. br.ErrMsg = "客户不存在,uid:" + strconv.Itoa(user.UserId) + "CompanyId:" + strconv.Itoa(user.CompanyId)
  115. return
  116. }
  117. //1、永续客户
  118. //2、大套餐客户(4个行业全开通的正式客户)
  119. //3、分行业套餐客户(开通对应行业的正式客户)
  120. //4、仅开通专家套餐的正式客户
  121. //5、开通对应行业套餐或专家套餐的试用客户
  122. if companyDetail.Status == "永续" {
  123. permissionStr, err = models.GetCompanyPermission(user.CompanyId)
  124. if err != nil {
  125. br.Msg = "获取信息失败"
  126. br.ErrMsg = "获取客户信息失败,Err:" + err.Error()
  127. return
  128. }
  129. userType = 1
  130. } else if companyDetail.Status == "试用" {
  131. userType = 5
  132. } else if companyDetail.Status == "正式" {
  133. permissionStr, err = models.GetCompanyPermission(user.CompanyId)
  134. if err != nil {
  135. br.Msg = "获取信息失败"
  136. br.ErrMsg = "获取客户信息失败,Err:" + err.Error()
  137. return
  138. }
  139. if permissionStr == "专家" {
  140. userType = 4
  141. } else if strings.Contains(permissionStr, "医药") && strings.Contains(permissionStr, "消费") && strings.Contains(permissionStr, "科技") && strings.Contains(permissionStr, "智造") {
  142. userType = 2
  143. } else {
  144. userType = 3
  145. }
  146. }
  147. }
  148. if isShowJurisdiction == 1 && chartPermissionIds == "" && userType == 4 {
  149. activityTypeIds = "1,3"
  150. }
  151. var startSize int
  152. if pageSize <= 0 {
  153. pageSize = utils.PageSize20
  154. }
  155. if currentIndex <= 0 {
  156. currentIndex = 1
  157. }
  158. startSize = utils.StartIndex(currentIndex, pageSize)
  159. var condition string
  160. var pars []interface{}
  161. //活动可见限制
  162. var sqlExport string
  163. slicePer := strings.Split(permissionStr, ",")
  164. var permissionSqlStr string
  165. for _, v := range slicePer {
  166. permissionSqlStr += "'" + v + "',"
  167. }
  168. permissionSqlStr = strings.TrimRight(permissionSqlStr, ",")
  169. fmt.Println(permissionSqlStr)
  170. permissionSqlStr = ` AND art.chart_permission_name IN (` + permissionSqlStr + `)`
  171. if userType == 3 && strings.Contains(permissionStr, "专家") {
  172. sqlExport = ` OR ( art.is_limit_people = 1 AND art.customer_type_ids LIKE '%4%' ` + permissionSqlStr + `) `
  173. }
  174. if keyWord != "" {
  175. slicekeyWord := strings.Split(keyWord, ",")
  176. var sqlOr string
  177. if len(slicekeyWord) >= 2 {
  178. for _, v := range slicekeyWord {
  179. sqlOr += ` OR art.activity_name LIKE '%` + v + `%' `
  180. }
  181. condition += ` AND (art.activity_name LIKE '%` + keyWord + `%' ` + sqlOr + ` )`
  182. } else {
  183. condition += ` AND (art.activity_name LIKE '%` + keyWord + `%' )`
  184. }
  185. }
  186. //if userType == 3 {
  187. //}
  188. //行业名称
  189. if len(chartPermissionIds) > 0 {
  190. condition += ` AND art.chart_permission_id IN (` + chartPermissionIds + `)`
  191. }
  192. if activityTypeIds != "" {
  193. condition += ` AND art.activity_type_id IN (` + activityTypeIds + `)`
  194. }
  195. if whichDay != "" {
  196. var startDate string
  197. var endDate string
  198. if whichDay == "1" {
  199. startDate = time.Now().Format(utils.FormatDate)
  200. endDate = startDate
  201. } else if whichDay == "2" {
  202. startDate = time.Now().AddDate(0, 0, +1).Format(utils.FormatDate)
  203. endDate = startDate
  204. } else {
  205. startDate = time.Now().Format(utils.FormatDate)
  206. endDate = time.Now().AddDate(0, 0, +1).Format(utils.FormatDate)
  207. }
  208. condition += ` AND art.activity_time >= ` + "'" + startDate + " 00:00:00'"
  209. condition += ` AND art.activity_time <= ` + "'" + endDate + " 23:59:59'"
  210. }
  211. condition += ` AND (art.is_limit_people = 0 OR(art.is_limit_people = 1 AND art.customer_type_ids LIKE'%` + strconv.Itoa(userType) + `%') ` + sqlExport + permissionSqlStr + `) `
  212. if activeState != "" {
  213. condition += ` AND art.active_state IN (` + activeState + `)`
  214. }
  215. var conditionOr string
  216. if strings.Contains(permissionStr, "专家") {
  217. conditionOr = ` OR ( art.activity_type_id IN ( 1,2,3 ) AND art.publish_status = 1 ` + condition + `) `
  218. }
  219. condition += ` AND art.publish_status = 1 `
  220. condition += ` AND art.chart_permission_name ` + permissionSqlStr + conditionOr
  221. total, err := models.GetActivityCount(condition, pars)
  222. if err != nil {
  223. br.Msg = "获取失败"
  224. br.ErrMsg = "获取失败,Err:" + err.Error()
  225. return
  226. }
  227. condition += ` ORDER BY art.active_state ASC, art.activity_time ASC `
  228. list, errList := models.GetActivityListAll(condition, pars, uid, startSize, pageSize)
  229. if errList != nil {
  230. br.Msg = "获取失败"
  231. br.ErrMsg = "获取失败,Err:" + errList.Error()
  232. return
  233. }
  234. for k, v := range list {
  235. if strings.Contains(v.ActivityName, "【") {
  236. list[k].IsBrackets = 1
  237. }
  238. if v.SignupNum > v.LimitPeopleNum {
  239. list[k].SignupNum = v.LimitPeopleNum
  240. }
  241. }
  242. page := paging.GetPaging(currentIndex, pageSize, total)
  243. resp := new(models.GetCygxActivityListRep)
  244. resp.List = list
  245. resp.Paging = page
  246. br.Ret = 200
  247. br.Success = true
  248. br.Msg = "获取成功"
  249. br.Data = resp
  250. }
  251. // @Title 我的日程
  252. // @Description 我的日程列表接口
  253. // @Param PageSize query int true "每页数据条数"
  254. // @Param CurrentIndex query int true "当前页页码,从1开始"
  255. // @Success 200 {object} models.GetCygxActivityListRep
  256. // @router /scheduleList [get]
  257. func (this *ActivityCoAntroller) ScheduleList() {
  258. br := new(models.BaseResponse).Init()
  259. defer func() {
  260. this.Data["json"] = br
  261. this.ServeJSON()
  262. }()
  263. user := this.User
  264. if user == nil {
  265. br.Msg = "请登录"
  266. br.ErrMsg = "请登录,SysUser Is Empty"
  267. return
  268. }
  269. uid := user.UserId
  270. pageSize, _ := this.GetInt("PageSize")
  271. currentIndex, _ := this.GetInt("CurrentIndex")
  272. var startSize int
  273. if pageSize <= 0 {
  274. pageSize = utils.PageSize20
  275. }
  276. if currentIndex <= 0 {
  277. currentIndex = 1
  278. }
  279. startSize = utils.StartIndex(currentIndex, pageSize)
  280. var condition string
  281. var pars []interface{}
  282. //condition += ` AND art.publish_status = 1 AND art.active_state IN(1,2) AND s.is_cancel = 0 AND s.fail_type = 0 `
  283. condition += ` AND art.publish_status = 1 AND art.active_state IN(1,2) `
  284. total, err := models.GetScheduleCount(uid)
  285. if err != nil {
  286. br.Msg = "获取失败"
  287. br.ErrMsg = "获取失败,Err:" + err.Error()
  288. return
  289. }
  290. list, errList := models.GetScheduleList(condition, pars, uid, startSize, pageSize)
  291. if errList != nil {
  292. br.Msg = "获取失败"
  293. br.ErrMsg = "获取失败,Err:" + errList.Error()
  294. return
  295. }
  296. for k, v := range list {
  297. if strings.Contains(v.ActivityName, "【") {
  298. list[k].IsBrackets = 1
  299. }
  300. if v.SignupNum > v.LimitPeopleNum {
  301. list[k].SignupNum = v.LimitPeopleNum
  302. }
  303. }
  304. page := paging.GetPaging(currentIndex, pageSize, total)
  305. resp := new(models.GetCygxActivityListRep)
  306. resp.List = list
  307. resp.Paging = page
  308. br.Ret = 200
  309. br.Success = true
  310. br.Msg = "获取成功"
  311. br.Data = resp
  312. }
  313. // @Title 活动详情
  314. // @Description 获取活动详情接口
  315. // @Param ActivityId query int true "活动ID"
  316. // @Success Ret=200 {object} models.CygxActivityResp
  317. // @router /detail [get]
  318. func (this *ActivityCoAntroller) Detail() {
  319. br := new(models.BaseResponse).Init()
  320. defer func() {
  321. this.Data["json"] = br
  322. this.ServeJSON()
  323. }()
  324. user := this.User
  325. if user == nil {
  326. br.Msg = "请登录"
  327. br.ErrMsg = "请登录,用户信息为空"
  328. br.Ret = 408
  329. return
  330. }
  331. uid := user.UserId
  332. activityId, _ := this.GetInt("ActivityId")
  333. if activityId < 1 {
  334. br.Msg = "请输入活动ID"
  335. return
  336. }
  337. resp := new(models.CygxActivityResp)
  338. hasPermission := 0
  339. var companyDetailStatus string
  340. activityInfo, err := models.GetAddActivityInfoByIdShow(uid, activityId)
  341. if err != nil && err.Error() != utils.ErrNoRow() {
  342. br.Msg = "获取信息失败"
  343. br.ErrMsg = "判断是否已申请过试用失败,Err:" + err.Error()
  344. return
  345. }
  346. if activityInfo == nil {
  347. br.Msg = "活动不存在"
  348. br.ErrMsg = "活动ID错误,Err:" + "activityId:" + strconv.Itoa(activityId)
  349. return
  350. }
  351. applyCount, err := models.GetApplyRecordCount(uid)
  352. if err != nil && err.Error() != utils.ErrNoRow() {
  353. br.Msg = "获取信息失败"
  354. br.ErrMsg = "判断是否已申请过试用失败,Err:" + err.Error()
  355. return
  356. }
  357. if user.CompanyId <= 1 {
  358. companyDetailStatus = ""
  359. } else {
  360. companyPermission, err := models.GetCompanyPermission(user.CompanyId)
  361. if err != nil {
  362. br.Msg = "获取信息失败"
  363. br.ErrMsg = "获取客户详情失败,Err:" + err.Error()
  364. return
  365. }
  366. if companyPermission == "" {
  367. if applyCount > 0 {
  368. hasPermission = 4
  369. } else {
  370. hasPermission = 3
  371. }
  372. resp.HasPermission = hasPermission
  373. resp.OperationMode = "Apply"
  374. resp.PopupMsg = "您暂无权限参加 【" + activityInfo.ChartPermissionName + "】行业活动,若想参加可以申请开通哦"
  375. br.Ret = 200
  376. br.Success = true
  377. br.Msg = "获取成功"
  378. br.Data = resp
  379. return
  380. }
  381. companyDetail, err := models.GetCompanyDetailById(user.CompanyId)
  382. if err != nil {
  383. br.Msg = "获取信息失败!"
  384. br.ErrMsg = "获取客户详情失败,Err:" + err.Error()
  385. return
  386. }
  387. if companyDetail == nil {
  388. br.Msg = "获取信息失败!"
  389. br.ErrMsg = "客户不存在,uid:" + strconv.Itoa(user.UserId) + "CompanyId:" + strconv.Itoa(user.CompanyId)
  390. return
  391. }
  392. companyDetailStatus = companyDetail.Status
  393. }
  394. var userType int
  395. var permissionStr string
  396. if user.CompanyId <= 1 {
  397. userType = 0
  398. } else {
  399. companyDetail, err := models.GetCompanyDetailById(user.CompanyId)
  400. if err != nil {
  401. br.Msg = "获取信息失败!"
  402. br.ErrMsg = "获取客户详情失败,Err:" + err.Error()
  403. return
  404. }
  405. if companyDetail == nil {
  406. br.Msg = "获取信息失败!"
  407. br.ErrMsg = "客户不存在,uid:" + strconv.Itoa(user.UserId) + "CompanyId:" + strconv.Itoa(user.CompanyId)
  408. return
  409. }
  410. //1、永续客户
  411. //2、大套餐客户(4个行业全开通的正式客户)
  412. //3、分行业套餐客户(开通对应行业的正式客户)
  413. //4、仅开通专家套餐的正式客户
  414. //5、开通对应行业套餐或专家套餐的试用客户
  415. if companyDetail.Status == "永续" {
  416. userType = 1
  417. } else if companyDetail.Status == "试用" {
  418. userType = 5
  419. } else if companyDetail.Status == "正式" {
  420. permissionStr, err = models.GetCompanyPermission(user.CompanyId)
  421. if err != nil {
  422. br.Msg = "获取信息失败"
  423. br.ErrMsg = "获取客户信息失败,Err:" + err.Error()
  424. return
  425. }
  426. if permissionStr == "专家" {
  427. userType = 4
  428. } else if strings.Contains(permissionStr, "医药") && strings.Contains(permissionStr, "消费") && strings.Contains(permissionStr, "科技") && strings.Contains(permissionStr, "智造") {
  429. userType = 2
  430. } else {
  431. userType = 3
  432. }
  433. }
  434. }
  435. detail, errDetail := models.GetActivityTypeDetailById(activityInfo.ActivityTypeId)
  436. if errDetail != nil {
  437. br.Msg = "获取信息失败"
  438. br.ErrMsg = "获取信息失败,Err:" + errDetail.Error()
  439. return
  440. }
  441. if activityInfo.IsSignup > 0 {
  442. detail, errDetail := models.GetActivitySignupDetail(activityId, uid)
  443. if errDetail != nil {
  444. br.Msg = "获取信息失败"
  445. br.ErrMsg = "获取信息失败,Err:" + errDetail.Error()
  446. return
  447. }
  448. activityInfo.SignupType = detail.SignupType
  449. }
  450. activityInfo.ShowType = detail.ShowType
  451. //判断是否已经申请过
  452. if user.CompanyId > 1 {
  453. permissionStr, err := models.GetCompanyPermission(user.CompanyId)
  454. if err != nil {
  455. br.Msg = "获取信息失败"
  456. br.ErrMsg = "获取客户权限信息失败,Err:" + err.Error()
  457. return
  458. }
  459. companyItem, err := models.GetCompanyDetailAllById(user.CompanyId)
  460. //冻结客户
  461. if err != nil {
  462. if err.Error() == utils.ErrNoRow() {
  463. resp.HasPermission = 4
  464. resp.OperationMode = "Apply"
  465. resp.PopupMsg = "您暂无权限参加 【" + activityInfo.ChartPermissionName + "】行业活动"
  466. br.Ret = 200
  467. br.Success = true
  468. br.Msg = "获取成功"
  469. br.Data = resp
  470. return
  471. } else {
  472. br.Msg = "获取信息失败"
  473. br.ErrMsg = "获取客户公司信息失败,Err:" + err.Error()
  474. return
  475. }
  476. }
  477. //1专家电话会、2分析师电话会、3公司调研电话会、4公司线下调研、5专家线下沙龙、6分析师线下沙龙
  478. //OperationMode string `description:"操作方式 Apply:立即申请、Call:拨号 为空则为有权限"`
  479. var havePower bool
  480. if (activityInfo.ActivityTypeId == 1 || activityInfo.ActivityTypeId == 3) && strings.Contains(permissionStr, "专家") && activityInfo.LimitPeopleNum == 0 {
  481. havePower = true
  482. } else if activityInfo.ActivityTypeId == 3 && strings.Contains(permissionStr, "专家") && companyDetailStatus == "正式" && strings.Contains(activityInfo.CustomerTypeIds, "4") {
  483. havePower = true
  484. } else if activityInfo.ActivityTypeId == 3 && strings.Contains(permissionStr, "专家") && companyDetailStatus == "试用" && strings.Contains(activityInfo.CustomerTypeIds, "5") {
  485. havePower = true
  486. } else if strings.Contains(permissionStr, activityInfo.ChartPermissionName) && strings.Contains(activityInfo.CustomerTypeIds, strconv.Itoa(userType)) {
  487. havePower = true
  488. } else if strings.Contains(permissionStr, activityInfo.ChartPermissionName) && activityInfo.LimitPeopleNum == 0 {
  489. havePower = true
  490. }
  491. if havePower {
  492. hasPermission = 1
  493. resp.HaqveJurisdiction = true
  494. } else {
  495. if permissionStr == "专家" {
  496. resp.PopupMsg = "您暂无权限参加【" + activityInfo.ActivityTypeName + "】类型活动"
  497. resp.MsgType = "Type"
  498. } else {
  499. resp.PopupMsg = "您暂无权限参加【" + activityInfo.ChartPermissionName + "】行业活动"
  500. resp.MsgType = "Industry"
  501. }
  502. resp.SellerMobile = companyItem.Mobile
  503. resp.SellerName = companyItem.SellerName
  504. resp.OperationMode = "Call"
  505. hasPermission = 2
  506. }
  507. } else { //潜在客户
  508. if applyCount > 0 {
  509. hasPermission = 4
  510. } else {
  511. hasPermission = 3
  512. }
  513. resp.OperationMode = "Apply"
  514. resp.PopupMsg = "您暂无权限参加 【" + activityInfo.ChartPermissionName + "】行业活动,若想参加可以申请开通哦"
  515. }
  516. if hasPermission == 1 {
  517. if activityInfo.SignupNum > activityInfo.LimitPeopleNum {
  518. activityInfo.SignupNum = activityInfo.LimitPeopleNum
  519. }
  520. resp.Detail = activityInfo
  521. }
  522. resp.HasPermission = hasPermission
  523. br.Ret = 200
  524. br.Success = true
  525. br.Msg = "获取成功"
  526. br.Data = resp
  527. }
  528. // @Title 活动报名
  529. // @Description 活动报名接口
  530. // @Param request body models.ActivitySingnupRep true "type json string"
  531. // @Success Ret=200 {object} models.SignupStatus
  532. // @router /signup/add [post]
  533. func (this *ActivityCoAntroller) SignupAdd() {
  534. br := new(models.BaseResponse).Init()
  535. defer func() {
  536. this.Data["json"] = br
  537. this.ServeJSON()
  538. }()
  539. user := this.User
  540. if user == nil {
  541. br.Msg = "请登录"
  542. br.ErrMsg = "请登录,用户信息为空"
  543. br.Ret = 408
  544. return
  545. }
  546. fmt.Println(user.Mobile)
  547. uid := user.UserId
  548. //var signupStatus string
  549. signupStatus := ""
  550. var req models.ActivitySingnupRep
  551. resp := new(models.SignupStatus)
  552. var total int
  553. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  554. if err != nil {
  555. br.Msg = "参数解析异常!"
  556. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  557. return
  558. }
  559. activityId := req.ActivityId
  560. signupType := req.SignupType
  561. hasPermission := 0
  562. //判断是否已经申请过
  563. applyCount, err := models.GetApplyRecordCount(uid)
  564. if err != nil && err.Error() != utils.ErrNoRow() {
  565. br.Msg = "获取信息失败"
  566. br.ErrMsg = "判断是否已申请过试用失败,Err:" + err.Error()
  567. return
  568. }
  569. activityInfo, errInfo := models.GetAddActivityInfoById(activityId)
  570. if activityInfo == nil {
  571. br.Msg = "操作失败"
  572. br.ErrMsg = "活动ID错误,不存在activityId:" + strconv.Itoa(activityId)
  573. return
  574. }
  575. if errInfo != nil {
  576. br.Msg = "操作失败"
  577. br.ErrMsg = "操作失败,Err:" + errInfo.Error()
  578. return
  579. }
  580. //SignupStatus "报名状态:人数已满:FullStarffed、单机构超过两人:TwoPeople、爽约次数过多:BreakPromise、超时:Overtime 、成功:Success"`
  581. //HasPermission "1:有该行业权限,正常展示,2:无该行业权限,3:潜在客户,未提交过申请,4:潜在客户,已提交过申请"`
  582. var companyDetailStatus string
  583. if user.CompanyId <= 1 {
  584. companyDetailStatus = ""
  585. } else {
  586. companyPermission, err := models.GetCompanyPermission(user.CompanyId)
  587. if err != nil {
  588. br.Msg = "获取信息失败"
  589. br.ErrMsg = "获取客户详情失败,Err:" + err.Error()
  590. return
  591. }
  592. if companyPermission == "" {
  593. if applyCount > 0 {
  594. hasPermission = 4
  595. } else {
  596. hasPermission = 3
  597. }
  598. resp.HasPermission = hasPermission
  599. resp.OperationMode = "Apply"
  600. resp.PopupMsg = "您暂无权限参加 【" + activityInfo.ChartPermissionName + "】行业活动,若想参加可以申请开通哦"
  601. br.Ret = 200
  602. br.Success = true
  603. br.Msg = "获取成功"
  604. br.Data = resp
  605. return
  606. }
  607. companyDetail, err := models.GetCompanyDetailById(user.CompanyId)
  608. if err != nil {
  609. br.Msg = "获取信息失败!"
  610. br.ErrMsg = "获取客户详情失败,Err:" + err.Error()
  611. return
  612. }
  613. if companyDetail == nil {
  614. br.Msg = "获取信息失败!"
  615. br.ErrMsg = "客户不存在,uid:" + strconv.Itoa(user.UserId) + "CompanyId:" + strconv.Itoa(user.CompanyId)
  616. return
  617. }
  618. companyDetailStatus = companyDetail.Status
  619. }
  620. var userType int
  621. var permissionStr string
  622. if user.CompanyId <= 1 {
  623. userType = 0
  624. } else {
  625. companyDetail, err := models.GetCompanyDetailById(user.CompanyId)
  626. if err != nil {
  627. br.Msg = "获取信息失败!"
  628. br.ErrMsg = "获取客户详情失败,Err:" + err.Error()
  629. return
  630. }
  631. if companyDetail == nil {
  632. br.Msg = "获取信息失败!"
  633. br.ErrMsg = "客户不存在,uid:" + strconv.Itoa(user.UserId) + "CompanyId:" + strconv.Itoa(user.CompanyId)
  634. return
  635. }
  636. if companyDetail.Status == "永续" {
  637. userType = 1
  638. } else if companyDetail.Status == "试用" {
  639. userType = 5
  640. } else if companyDetail.Status == "正式" {
  641. permissionStr, err = models.GetCompanyPermission(user.CompanyId)
  642. if err != nil {
  643. br.Msg = "获取信息失败"
  644. br.ErrMsg = "获取客户信息失败,Err:" + err.Error()
  645. return
  646. }
  647. if permissionStr == "专家" {
  648. userType = 4
  649. } else if strings.Contains(permissionStr, "医药") && strings.Contains(permissionStr, "消费") && strings.Contains(permissionStr, "科技") && strings.Contains(permissionStr, "智造") {
  650. userType = 2
  651. } else {
  652. userType = 3
  653. }
  654. }
  655. }
  656. item := new(models.CygxActivitySignup)
  657. if user.CompanyId > 1 {
  658. permissionStr, err := models.GetCompanyPermission(user.CompanyId)
  659. if err != nil {
  660. br.Msg = "获取信息失败"
  661. br.ErrMsg = "获取客户信息失败,Err:" + err.Error()
  662. return
  663. }
  664. companyItem, err := models.GetCompanyDetailAllById(user.CompanyId)
  665. //冻结客户
  666. if err != nil {
  667. if err.Error() == utils.ErrNoRow() {
  668. resp.HasPermission = 4
  669. resp.OperationMode = "Apply"
  670. resp.PopupMsg = "您暂无权限参加 【" + activityInfo.ChartPermissionName + "】行业活动,若想参加可以申请开通哦"
  671. br.Ret = 200
  672. br.Success = true
  673. br.Msg = "获取成功"
  674. br.Data = resp
  675. return
  676. } else {
  677. br.Msg = "获取信息失败"
  678. br.ErrMsg = "获取客户公司信息失败,Err:" + err.Error()
  679. return
  680. }
  681. }
  682. //1专家电话会、2分析师电话会、3公司调研电话会、4公司线下调研、5专家线下沙龙、6分析师线下沙龙
  683. //OperationMode string `description:"操作方式 Apply:立即申请、Call:拨号 为空则为有权限"`
  684. var havePower bool
  685. if (activityInfo.ActivityTypeId == 1 || activityInfo.ActivityTypeId == 3) && strings.Contains(permissionStr, "专家") && activityInfo.LimitPeopleNum == 0 {
  686. havePower = true
  687. } else if activityInfo.ActivityTypeId == 3 && strings.Contains(permissionStr, "专家") && companyDetailStatus == "正式" && strings.Contains(activityInfo.CustomerTypeIds, "4") {
  688. havePower = true
  689. } else if activityInfo.ActivityTypeId == 3 && strings.Contains(permissionStr, "专家") && companyDetailStatus == "试用" && strings.Contains(activityInfo.CustomerTypeIds, "5") {
  690. havePower = true
  691. } else if strings.Contains(permissionStr, activityInfo.ChartPermissionName) && strings.Contains(activityInfo.CustomerTypeIds, strconv.Itoa(userType)) {
  692. havePower = true
  693. } else if strings.Contains(permissionStr, activityInfo.ChartPermissionName) && activityInfo.LimitPeopleNum == 0 {
  694. havePower = true
  695. }
  696. if havePower {
  697. hasPermission = 1
  698. signupStatus = "Success"
  699. resultTime := utils.StrTimeToTime(activityInfo.ActivityTime) //时间字符串格式转时间格式
  700. if time.Now().After(resultTime.Add(-time.Minute * 60)) {
  701. signupStatus = "Overtime"
  702. resp.SignupType = signupType
  703. resp.SignupStatus = signupStatus
  704. resp.HasPermission = hasPermission
  705. br.Ret = 200
  706. br.Success = true
  707. br.Msg = ""
  708. br.Data = resp
  709. return
  710. }
  711. //人数已满:FullStarffed、单机构超过两人:TwoPeople、爽约次数过多:BreakPromise、超时:Overtime 、成功:Success"`
  712. //如果是下面几种情况则对报名信息做判断限制 (公司调研电话会(限制人数)、公司线下调研、专家/分析师线下沙龙)
  713. if (activityInfo.ActivityTypeId == 3 && activityInfo.IsLimitPeople == 1) || activityInfo.ActivityTypeId > 3 {
  714. //判断优先级:总人数限制→单机构2人限制→爽约3次限制
  715. totalRestrict, err := models.GetUserRestrictCount(user.Mobile)
  716. if err != nil {
  717. br.Msg = "获取信息失败"
  718. br.ErrMsg = "获取客户信息失败,Err:" + err.Error()
  719. return
  720. }
  721. if totalRestrict >= 1 {
  722. signupStatus = "BreakPromise"
  723. item.FailType = 3
  724. }
  725. totalSignupCompany, err := models.GetActivitySignupCompanyCount(activityId, user.CompanyId)
  726. if err != nil {
  727. br.Msg = "获取信息失败"
  728. br.ErrMsg = "获取客户信息失败,Err:" + err.Error()
  729. return
  730. }
  731. if totalSignupCompany >= 2 {
  732. signupStatus = "TwoPeople"
  733. item.FailType = 2
  734. }
  735. totaSignupPeopleNum, err := models.GetActivitySignupSuccessCount(activityId)
  736. if err != nil {
  737. br.Msg = "获取信息失败"
  738. br.ErrMsg = "获取客户信息失败,Err:" + err.Error()
  739. return
  740. }
  741. if totaSignupPeopleNum >= activityInfo.LimitPeopleNum {
  742. signupStatus = "FullStarffed"
  743. item.FailType = 1
  744. }
  745. totalUserRestrictCount, err := models.GetActivitySignupByUserRestrictCount(uid, activityId)
  746. if err != nil {
  747. br.Msg = "获取失败"
  748. br.ErrMsg = "获取失败,Err:" + err.Error()
  749. return
  750. }
  751. //解除报名限制之后二次报名相同活动
  752. if totalUserRestrictCount > 0 && totalRestrict == 0 {
  753. item.UserId = uid
  754. item.ActivityId = activityId
  755. item.CreateTime = time.Now()
  756. item.Mobile = user.Mobile
  757. item.Email = user.Email
  758. item.CompanyId = user.CompanyId
  759. item.CompanyName = user.CompanyName
  760. item.SignupType = signupType
  761. item.FailType = 0
  762. item.DoFailType = 0
  763. _, errSignup := models.AddActivitySignupByRestrict(item)
  764. if errSignup != nil {
  765. br.Msg = "操作失败"
  766. br.ErrMsg = "操作失败,Err:" + errSignup.Error()
  767. return
  768. }
  769. resp.HaqveJurisdiction = true
  770. resp.SignupType = signupType
  771. resp.SignupStatus = "Success"
  772. resp.HasPermission = hasPermission
  773. resp.ActivityId = activityId
  774. total, err = models.GetUserMeetingReminderCount(user.UserId)
  775. if err != nil {
  776. br.Msg = "获取信息失败"
  777. br.ErrMsg = "获取日程数量信息失败,Err:" + err.Error()
  778. return
  779. }
  780. if total == 0 {
  781. resp.GoFollow = true
  782. }
  783. br.Ret = 200
  784. br.Success = true
  785. br.Msg = "操作成功"
  786. br.Data = resp
  787. return
  788. }
  789. totalMy, err := models.GetActivitySignupByUserCount(uid, activityId)
  790. if err != nil {
  791. br.Msg = "获取失败"
  792. br.ErrMsg = "获取失败,Err:" + err.Error()
  793. return
  794. }
  795. if signupStatus != "Success" && totalMy == 0 {
  796. item.UserId = uid
  797. item.ActivityId = activityId
  798. item.CreateTime = time.Now()
  799. item.Mobile = user.Mobile
  800. item.Email = user.Email
  801. item.CompanyId = user.CompanyId
  802. item.CompanyName = user.CompanyName
  803. item.SignupType = signupType
  804. item.DoFailType = item.FailType
  805. //添加报名信息,但是不加入日程
  806. _, errSignup := models.AddActivitySignupNoSchedule(item)
  807. if errSignup != nil {
  808. br.Msg = "操作失败"
  809. br.ErrMsg = "操作失败,Err:" + errSignup.Error()
  810. return
  811. }
  812. }
  813. }
  814. totalMySuccess, err := models.GetActivitySignupCount(uid, activityId)
  815. fmt.Println(totalMySuccess)
  816. fmt.Println(signupStatus)
  817. if err != nil {
  818. br.Msg = "获取失败"
  819. br.ErrMsg = "获取失败,Err:" + err.Error()
  820. return
  821. }
  822. if totalMySuccess > 0 {
  823. br.Msg = "您已报名这个活动"
  824. return
  825. }
  826. if signupStatus == "Success" {
  827. item.UserId = uid
  828. item.ActivityId = activityId
  829. item.CreateTime = time.Now()
  830. item.Mobile = user.Mobile
  831. item.Email = user.Email
  832. item.CompanyId = user.CompanyId
  833. item.CompanyName = user.CompanyName
  834. item.SignupType = signupType
  835. item.FailType = 0
  836. item.DoFailType = 0
  837. _, errSignup := models.AddActivitySignup(item)
  838. if errSignup != nil {
  839. br.Msg = "操作失败"
  840. br.ErrMsg = "操作失败,Err:" + errSignup.Error()
  841. return
  842. }
  843. resp.HaqveJurisdiction = true
  844. }
  845. } else {
  846. hasPermission = 2
  847. resp.SellerMobile = companyItem.Mobile
  848. resp.SellerName = companyItem.SellerName
  849. resp.MsgType = "Type"
  850. resp.OperationMode = "Call"
  851. if permissionStr == "专家" {
  852. resp.PopupMsg = "您暂无权限参加【" + activityInfo.ActivityTypeName + "】类型活动,若想参加请联系对口销售--" + companyItem.SellerName + ":" + companyItem.Mobile
  853. resp.MsgType = "Type"
  854. } else {
  855. resp.PopupMsg = "您暂无权限参加【" + activityInfo.ChartPermissionName + "】行业活动,若想参加请联系对口销售--" + companyItem.SellerName + ":" + companyItem.Mobile
  856. resp.MsgType = "Industry"
  857. }
  858. }
  859. } else { //潜在客户
  860. if applyCount > 0 {
  861. hasPermission = 4
  862. } else {
  863. hasPermission = 3
  864. }
  865. resp.OperationMode = "Apply"
  866. resp.PopupMsg = "您暂无权限参加 【" + activityInfo.ChartPermissionName + "】行业活动,若想参加可以申请开通哦"
  867. }
  868. resp.SignupType = signupType
  869. resp.SignupStatus = signupStatus
  870. resp.HasPermission = hasPermission
  871. if signupStatus == "Success" {
  872. resp.ActivityId = activityId
  873. }
  874. total, err = models.GetUserSignupCount(user.UserId)
  875. if err != nil {
  876. br.Msg = "获取信息失败"
  877. br.ErrMsg = "获取日程数量信息失败,Err:" + err.Error()
  878. return
  879. }
  880. if total <= 1 {
  881. resp.GoFollow = true
  882. }
  883. br.Ret = 200
  884. br.Success = true
  885. br.Msg = "操作成功"
  886. br.Data = resp
  887. }
  888. // @Title 活动取消报名
  889. // @Description 活动取消报名接口
  890. // @Param request body models.ActivitySingnupRep true "type json string"
  891. // @Success Ret=200 {object} models.SignupStatus
  892. // @router /signup/cancel [post]
  893. func (this *ActivityCoAntroller) SignupCancel() {
  894. br := new(models.BaseResponse).Init()
  895. defer func() {
  896. this.Data["json"] = br
  897. this.ServeJSON()
  898. }()
  899. user := this.User
  900. if user == nil {
  901. br.Msg = "请登录"
  902. br.ErrMsg = "请登录,用户信息为空"
  903. br.Ret = 408
  904. return
  905. }
  906. uid := user.UserId
  907. var req models.ActivitySingnupRep
  908. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  909. if err != nil {
  910. br.Msg = "参数解析异常!"
  911. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  912. return
  913. }
  914. activityId := req.ActivityId
  915. signupType := req.SignupType
  916. item := new(models.CygxActivitySignup)
  917. activityInfo, errInfo := models.GetAddActivityInfoById(activityId)
  918. if activityInfo == nil {
  919. br.Msg = "操作失败"
  920. br.ErrMsg = "活动ID错误,不存在activityId:" + strconv.Itoa(activityId)
  921. return
  922. }
  923. if errInfo != nil {
  924. br.Msg = "操作失败"
  925. br.ErrMsg = "操作失败,Err:" + errInfo.Error()
  926. return
  927. }
  928. resultTime := utils.StrTimeToTime(activityInfo.ActivityTime) //时间字符串格式转时间格式
  929. if time.Now().After(resultTime.Add(-time.Minute * 60)) {
  930. if signupType == 1 {
  931. br.Msg = "活动开始前1小时内无法取消预约外呼,请联系对口销售处理"
  932. } else {
  933. br.Msg = "活动开始前1小时内无法取消报名,请联系对口销售处理"
  934. }
  935. return
  936. }
  937. total, err := models.GetActivitySignupCount(uid, activityId)
  938. if err != nil {
  939. br.Msg = "获取失败"
  940. br.ErrMsg = "获取失败,Err:" + err.Error()
  941. return
  942. }
  943. if total == 0 {
  944. br.Msg = "您暂未报名这个活动"
  945. return
  946. }
  947. item.UserId = uid
  948. item.ActivityId = activityId
  949. item.CreateTime = time.Now()
  950. item.Mobile = user.Mobile
  951. item.Email = user.Email
  952. item.CompanyId = user.CompanyId
  953. item.CompanyName = user.CompanyName
  954. resp := new(models.SignupStatus)
  955. resp.ActivityId = activityId
  956. _, errSignup := models.CancelActivitySignup(item)
  957. if errSignup != nil {
  958. br.Msg = "操作失败"
  959. br.ErrMsg = "操作失败,Err:" + errSignup.Error()
  960. return
  961. }
  962. br.Ret = 200
  963. br.Success = true
  964. br.Msg = "操作成功"
  965. br.Data = resp
  966. }
  967. // @Title 用户搜索详情
  968. // @Description 获取用户搜索详情接口
  969. // @Param IsShowJurisdiction query int true "是否仅展示有权限的,默认为0,1是,2否 "
  970. // @Success Ret=200 {object} models.ActivityUserSearchContentList
  971. // @router /getUserSearchContent [get]
  972. func (this *ActivityCoAntroller) GetUserSearchContent() {
  973. br := new(models.BaseResponse).Init()
  974. defer func() {
  975. this.Data["json"] = br
  976. this.ServeJSON()
  977. }()
  978. user := this.User
  979. if user == nil {
  980. br.Msg = "请登录"
  981. br.ErrMsg = "请登录,用户信息为空"
  982. br.Ret = 408
  983. return
  984. }
  985. uid := user.UserId
  986. detailSeearch := new(models.CygxActivityUserSearchContent)
  987. detailSeearch.IsShowJurisdiction = 0
  988. detailSeearch.ChartPermissionids = ""
  989. detailSeearch.ActiveState = ""
  990. resp := new(models.ActivityUserSearchContentList)
  991. detail, _ := models.GetUserSearchContentByUid(uid)
  992. if detail == nil {
  993. detail = detailSeearch
  994. }
  995. isShowJurisdiction, _ := this.GetInt("IsShowJurisdiction")
  996. listActivityType, errActivityType := models.GetActivityTypeList()
  997. if errActivityType != nil {
  998. br.Msg = "获取失败"
  999. br.ErrMsg = "获取数据失败,Err:" + errActivityType.Error()
  1000. return
  1001. }
  1002. var listChartPermissionid []*models.ActivityChartPermission
  1003. var errChart error
  1004. if isShowJurisdiction == 1 {
  1005. listChartPermissionidAll, errChartAll := models.GetUserCompanyPermission(user.CompanyId)
  1006. listChartPermissionid = listChartPermissionidAll
  1007. errChart = errChartAll
  1008. } else if isShowJurisdiction == 2 {
  1009. listChartPermissionidAll, errChartAll := models.GetChartPermissionActivity()
  1010. listChartPermissionid = listChartPermissionidAll
  1011. errChart = errChartAll
  1012. } else {
  1013. if detail.IsShowJurisdiction == 1 {
  1014. listChartPermissionidAll, errChartAll := models.GetUserCompanyPermission(user.CompanyId)
  1015. listChartPermissionid = listChartPermissionidAll
  1016. errChart = errChartAll
  1017. } else {
  1018. listChartPermissionidAll, errChartAll := models.GetChartPermissionActivity()
  1019. listChartPermissionid = listChartPermissionidAll
  1020. errChart = errChartAll
  1021. }
  1022. }
  1023. if errChart != nil {
  1024. br.Msg = "获取信息失败"
  1025. br.ErrMsg = "获取品种信息失败,Err:" + errChart.Error()
  1026. return
  1027. }
  1028. if detail.IsShowJurisdiction == 1 {
  1029. resp.IsShowJurisdiction = true
  1030. }
  1031. fmt.Println(isShowJurisdiction)
  1032. if isShowJurisdiction == 1 || detail.IsShowJurisdiction == 1 {
  1033. resp.IsShowJurisdiction = true
  1034. for k, _ := range listChartPermissionid {
  1035. listChartPermissionid[k].IsChoose = true
  1036. }
  1037. }
  1038. if isShowJurisdiction == 2 {
  1039. resp.IsShowJurisdiction = false
  1040. }
  1041. activeStateList := []models.ActivityStaus{models.ActivityStaus{Id: 1, StatusName: "未开始", IsChoose: true}, models.ActivityStaus{Id: 2, StatusName: "进行中"}, models.ActivityStaus{Id: 3, StatusName: "已结束"}}
  1042. list2, err := models.GetChartPermissionActivity()
  1043. if err != nil {
  1044. br.Msg = "获取信息失败"
  1045. br.ErrMsg = "获取品种信息失败,Err:" + err.Error()
  1046. return
  1047. }
  1048. resp.ListChartPermission2 = list2
  1049. if activeStateList[1].IsChoose == activeStateList[2].IsChoose == false {
  1050. activeStateList[0].IsChoose = true
  1051. }
  1052. resp.ListActivityType = listActivityType
  1053. resp.ListChartPermission = listChartPermissionid
  1054. resp.ListActivityStaus = activeStateList
  1055. br.Ret = 200
  1056. br.Success = true
  1057. br.Msg = "获取成功"
  1058. br.Data = resp
  1059. }
  1060. // @Title 添加会议提醒
  1061. // @Description 添加会议提醒接口
  1062. // @Param request body models.ActivityIdRep true "type json string"
  1063. // @Success Ret=200 {object} models.SignupStatus
  1064. // @router /meetingReminder/add [post]
  1065. func (this *ActivityCoAntroller) MeetingReminderAdd() {
  1066. br := new(models.BaseResponse).Init()
  1067. defer func() {
  1068. this.Data["json"] = br
  1069. this.ServeJSON()
  1070. }()
  1071. user := this.User
  1072. if user == nil {
  1073. br.Msg = "请登录"
  1074. br.ErrMsg = "请登录,用户信息为空"
  1075. br.Ret = 408
  1076. return
  1077. }
  1078. uid := user.UserId
  1079. //var signupStatus string
  1080. signupStatus := "Success"
  1081. var req models.ActivityIdRep
  1082. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  1083. if err != nil {
  1084. br.Msg = "参数解析异常!"
  1085. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  1086. return
  1087. }
  1088. activityId := req.ActivityId
  1089. activityInfo, errInfo := models.GetAddActivityInfoById(activityId)
  1090. if activityInfo == nil {
  1091. br.Msg = "操作失败"
  1092. br.ErrMsg = "活动ID错误,不存在activityId:" + strconv.Itoa(activityId)
  1093. return
  1094. }
  1095. if errInfo != nil {
  1096. br.Msg = "操作失败"
  1097. br.ErrMsg = "操作失败,Err:" + errInfo.Error()
  1098. return
  1099. }
  1100. //判断是否已经申请过
  1101. applyCount, err := models.GetApplyRecordCount(uid)
  1102. if err != nil && err.Error() != utils.ErrNoRow() {
  1103. br.Msg = "获取信息失败"
  1104. br.ErrMsg = "判断是否已申请过试用失败,Err:" + err.Error()
  1105. return
  1106. }
  1107. //SignupStatus string `description:"报名状态:人数已满:FullStarffed、单机构超过两人:TwoPeople、爽约次数过多:BreakPromise、超时:Overtime 、成功:Success"`
  1108. item := new(models.CygxActivityMeetingReminder)
  1109. resp := new(models.SignupStatus)
  1110. hasPermission := 0
  1111. var companyDetailStatus string
  1112. if user.CompanyId <= 1 {
  1113. companyDetailStatus = ""
  1114. } else {
  1115. companyPermission, err := models.GetCompanyPermission(user.CompanyId)
  1116. if err != nil {
  1117. br.Msg = "获取信息失败"
  1118. br.ErrMsg = "获取客户详情失败,Err:" + err.Error()
  1119. return
  1120. }
  1121. if companyPermission == "" {
  1122. if applyCount > 0 {
  1123. hasPermission = 4
  1124. } else {
  1125. hasPermission = 3
  1126. }
  1127. resp.HasPermission = hasPermission
  1128. resp.OperationMode = "Apply"
  1129. resp.PopupMsg = "您暂无权限参加 【" + activityInfo.ChartPermissionName + "】行业活动,若想参加可以申请开通哦"
  1130. br.Ret = 200
  1131. br.Success = true
  1132. br.Msg = "获取成功"
  1133. br.Data = resp
  1134. return
  1135. }
  1136. companyDetail, err := models.GetCompanyDetailById(user.CompanyId)
  1137. if err != nil {
  1138. br.Msg = "获取信息失败!"
  1139. br.ErrMsg = "获取客户详情失败,Err:" + err.Error()
  1140. return
  1141. }
  1142. if companyDetail == nil {
  1143. br.Msg = "获取信息失败!"
  1144. br.ErrMsg = "客户不存在,uid:" + strconv.Itoa(user.UserId) + "CompanyId:" + strconv.Itoa(user.CompanyId)
  1145. return
  1146. }
  1147. companyDetailStatus = companyDetail.Status
  1148. }
  1149. var userType int
  1150. var permissionStr string
  1151. if user.CompanyId <= 1 {
  1152. userType = 0
  1153. } else {
  1154. companyDetail, err := models.GetCompanyDetailById(user.CompanyId)
  1155. if err != nil {
  1156. br.Msg = "获取信息失败!"
  1157. br.ErrMsg = "获取客户详情失败,Err:" + err.Error()
  1158. return
  1159. }
  1160. if companyDetail == nil {
  1161. br.Msg = "获取信息失败!"
  1162. br.ErrMsg = "客户不存在,uid:" + strconv.Itoa(user.UserId) + "CompanyId:" + strconv.Itoa(user.CompanyId)
  1163. return
  1164. }
  1165. if companyDetail.Status == "永续" {
  1166. userType = 1
  1167. } else if companyDetail.Status == "试用" {
  1168. userType = 5
  1169. } else if companyDetail.Status == "正式" {
  1170. permissionStr, err = models.GetCompanyPermission(user.CompanyId)
  1171. if err != nil {
  1172. br.Msg = "获取信息失败"
  1173. br.ErrMsg = "获取客户信息失败,Err:" + err.Error()
  1174. return
  1175. }
  1176. if permissionStr == "专家" {
  1177. userType = 4
  1178. } else if strings.Contains(permissionStr, "医药") && strings.Contains(permissionStr, "消费") && strings.Contains(permissionStr, "科技") && strings.Contains(permissionStr, "智造") {
  1179. userType = 2
  1180. } else {
  1181. userType = 3
  1182. }
  1183. }
  1184. }
  1185. resultTime := utils.StrTimeToTime(activityInfo.ActivityTime) //时间字符串格式转时间格式
  1186. if time.Now().After(resultTime.Add(-time.Minute * 15)) {
  1187. br.Msg = "活动开始前15分钟无法设置会议提醒"
  1188. return
  1189. }
  1190. if user.CompanyId > 1 {
  1191. permissionStr, err := models.GetCompanyPermission(user.CompanyId)
  1192. if err != nil {
  1193. br.Msg = "获取信息失败"
  1194. br.ErrMsg = "获取客户信息失败,Err:" + err.Error()
  1195. return
  1196. }
  1197. companyItem, err := models.GetCompanyDetailAllById(user.CompanyId)
  1198. //冻结客户
  1199. if err != nil {
  1200. if err.Error() == utils.ErrNoRow() {
  1201. resp.HasPermission = 4
  1202. resp.OperationMode = "Apply"
  1203. resp.PopupMsg = "您暂无权限参加 【" + activityInfo.ChartPermissionName + "】行业活动,若想参加可以申请开通哦"
  1204. br.Ret = 200
  1205. br.Success = true
  1206. br.Msg = "获取成功"
  1207. br.Data = resp
  1208. return
  1209. } else {
  1210. br.Msg = "获取信息失败"
  1211. br.ErrMsg = "获取客户公司信息失败,Err:" + err.Error()
  1212. return
  1213. }
  1214. }
  1215. var havePower bool
  1216. if (activityInfo.ActivityTypeId == 1 || activityInfo.ActivityTypeId == 3) && strings.Contains(permissionStr, "专家") && activityInfo.LimitPeopleNum == 0 {
  1217. havePower = true
  1218. } else if activityInfo.ActivityTypeId == 3 && strings.Contains(permissionStr, "专家") && companyDetailStatus == "正式" && strings.Contains(activityInfo.CustomerTypeIds, "4") {
  1219. havePower = true
  1220. } else if activityInfo.ActivityTypeId == 3 && strings.Contains(permissionStr, "专家") && companyDetailStatus == "试用" && strings.Contains(activityInfo.CustomerTypeIds, "5") {
  1221. havePower = true
  1222. } else if strings.Contains(permissionStr, activityInfo.ChartPermissionName) && strings.Contains(activityInfo.CustomerTypeIds, strconv.Itoa(userType)) {
  1223. havePower = true
  1224. } else if strings.Contains(permissionStr, activityInfo.ChartPermissionName) && activityInfo.LimitPeopleNum == 0 {
  1225. havePower = true
  1226. }
  1227. if havePower {
  1228. hasPermission = 1
  1229. signupStatus = "Success"
  1230. totalMeeting, errMeeting := models.GetActivityMeetingReminderCount(uid, activityId)
  1231. if errMeeting != nil {
  1232. br.Msg = "获取失败"
  1233. br.ErrMsg = "获取失败,Err:" + errMeeting.Error()
  1234. return
  1235. }
  1236. if totalMeeting > 0 {
  1237. br.Msg = "您已预约,请勿重复预约"
  1238. return
  1239. }
  1240. item.UserId = uid
  1241. item.ActivityId = activityId
  1242. item.CreateTime = time.Now()
  1243. item.Mobile = user.Mobile
  1244. item.Email = user.Email
  1245. item.CompanyId = user.CompanyId
  1246. item.CompanyName = user.CompanyName
  1247. _, errSignup := models.AddActivityMeetingReminder(item)
  1248. if errSignup != nil {
  1249. br.Msg = "操作失败"
  1250. br.ErrMsg = "操作失败,Err:" + errSignup.Error()
  1251. return
  1252. }
  1253. resp.HaqveJurisdiction = true
  1254. } else {
  1255. hasPermission = 2
  1256. resp.SellerMobile = companyItem.Mobile
  1257. resp.SellerName = companyItem.SellerName
  1258. resp.MsgType = "Type"
  1259. resp.OperationMode = "Call"
  1260. if permissionStr == "专家" {
  1261. resp.PopupMsg = "您暂无权限参加【" + activityInfo.ActivityTypeName + "】类型活动,若想参加请联系对口销售--" + companyItem.SellerName + ":" + companyItem.Mobile
  1262. resp.MsgType = "Type"
  1263. } else {
  1264. resp.PopupMsg = "您暂无权限参加【" + activityInfo.ChartPermissionName + "】行业活动,若想参加请联系对口销售--" + companyItem.SellerName + ":" + companyItem.Mobile
  1265. resp.MsgType = "Industry"
  1266. }
  1267. }
  1268. } else { //潜在客户
  1269. if applyCount > 0 {
  1270. hasPermission = 4
  1271. } else {
  1272. hasPermission = 3
  1273. }
  1274. resp.OperationMode = "Apply"
  1275. resp.PopupMsg = "您暂无权限参加 【" + activityInfo.ChartPermissionName + "】行业活动,若想参加可以申请开通哦"
  1276. }
  1277. resp.HasPermission = hasPermission
  1278. resp.SignupStatus = signupStatus
  1279. resp.ActivityId = activityId
  1280. var total int
  1281. total, err = models.GetUserActivityMeetingReminderCount(user.UserId)
  1282. if err != nil {
  1283. br.Msg = "获取信息失败"
  1284. br.ErrMsg = "获取日程数量信息失败,Err:" + err.Error()
  1285. return
  1286. }
  1287. if total <= 1 {
  1288. resp.GoFollow = true
  1289. }
  1290. br.Ret = 200
  1291. br.Success = true
  1292. if hasPermission == 1 {
  1293. br.Msg = "设置成功,会前15分钟会为您推送微信消息提醒"
  1294. }
  1295. br.Data = resp
  1296. }
  1297. // @Title 取消会议提醒
  1298. // @Description 取消会议提醒接口
  1299. // @Param request body models.ActivityIdRep true "type json string"
  1300. // @Success Ret=200 {object} models.SignupStatus
  1301. // @router /meetingReminder/cancel [post]
  1302. func (this *ActivityCoAntroller) MeetingReminderCancel() {
  1303. br := new(models.BaseResponse).Init()
  1304. defer func() {
  1305. this.Data["json"] = br
  1306. this.ServeJSON()
  1307. }()
  1308. user := this.User
  1309. if user == nil {
  1310. br.Msg = "请登录"
  1311. br.ErrMsg = "请登录,用户信息为空"
  1312. br.Ret = 408
  1313. return
  1314. }
  1315. uid := user.UserId
  1316. var req models.ActivityIdRep
  1317. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  1318. if err != nil {
  1319. br.Msg = "参数解析异常!"
  1320. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  1321. return
  1322. }
  1323. activityId := req.ActivityId
  1324. signupStatus := "Success"
  1325. item := new(models.CygxActivityMeetingReminder)
  1326. activityInfo, errInfo := models.GetAddActivityInfoById(activityId)
  1327. if activityInfo == nil {
  1328. br.Msg = "操作失败"
  1329. br.ErrMsg = "活动ID错误,不存在activityId:" + strconv.Itoa(activityId)
  1330. return
  1331. }
  1332. if errInfo != nil {
  1333. br.Msg = "操作失败"
  1334. br.ErrMsg = "操作失败,Err:" + errInfo.Error()
  1335. return
  1336. }
  1337. //if signupStatus == "Success" {
  1338. total, err := models.GetActivityMeetingReminderCount(uid, activityId)
  1339. if err != nil {
  1340. br.Msg = "获取失败"
  1341. br.ErrMsg = "获取失败,Err:" + err.Error()
  1342. return
  1343. }
  1344. if total == 0 {
  1345. br.Msg = "您暂未添加该活动会议提醒"
  1346. return
  1347. }
  1348. resultTime := utils.StrTimeToTime(activityInfo.ActivityTime) //时间字符串格式转时间格式
  1349. if time.Now().After(resultTime.Add(-time.Minute * 15)) {
  1350. br.Msg = "活动开始前15分钟无法取消会议提醒"
  1351. return
  1352. }
  1353. item.UserId = uid
  1354. item.ActivityId = activityId
  1355. item.CreateTime = time.Now()
  1356. item.Mobile = user.Mobile
  1357. item.Email = user.Email
  1358. item.CompanyId = user.CompanyId
  1359. item.CompanyName = user.CompanyName
  1360. _, errSignup := models.CancelActivityMeetingReminder(item)
  1361. if errSignup != nil {
  1362. br.Msg = "操作失败"
  1363. br.ErrMsg = "操作失败,Err:" + errSignup.Error()
  1364. return
  1365. }
  1366. //}
  1367. resp := new(models.SignupStatus)
  1368. resp.SignupStatus = signupStatus
  1369. resp.ActivityId = activityId
  1370. br.Ret = 200
  1371. br.Success = true
  1372. br.Msg = "会议提醒已取消"
  1373. br.Data = resp
  1374. }
  1375. // @Title 敏捷搜索关键词的列表
  1376. // @Description 获取敏捷搜索关键词的列表接口
  1377. // @Success 200 {object} models.ActivityFastsearchKeywordsListResp
  1378. // @router /fastSearchKeWord [get]
  1379. func (this *ActivityABaseController) FastSearch() {
  1380. br := new(models.BaseResponse).Init()
  1381. defer func() {
  1382. this.Data["json"] = br
  1383. this.ServeJSON()
  1384. }()
  1385. resp := new(models.ActivityFastsearchKeywordsListResp)
  1386. list, err := models.GetActivityFastsearchKeywordsList()
  1387. if err != nil {
  1388. br.Msg = "获取失败"
  1389. br.ErrMsg = "获取数据失败,Err:" + err.Error()
  1390. return
  1391. }
  1392. resp.List = list
  1393. br.Ret = 200
  1394. br.Success = true
  1395. br.Msg = "获取成功"
  1396. br.Data = resp
  1397. }