activity.go 43 KB

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