activity.go 49 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594
  1. package controllers
  2. import (
  3. "encoding/json"
  4. "fmt"
  5. "github.com/rdlucklib/rdluck_tools/paging"
  6. "hongze/hongze_clpt/models"
  7. "hongze/hongze_clpt/services"
  8. "hongze/hongze_clpt/utils"
  9. "strconv"
  10. "strings"
  11. "time"
  12. )
  13. type ActivityController struct {
  14. BaseAuthController
  15. }
  16. // @Title 活动类型下的主题列表
  17. // @Description 获取活动类型下的主题列表接口
  18. // @Param ChartPermissionIds query string false "行业id 多个用 , 隔开"
  19. // @Param ActivityTypeIds query string false "活动类型id 多个用 , 隔开"
  20. // @Param ActiveState query string false "活动进行状态 未开始:1、进行中2、已结束3 多个用 , 隔开"
  21. // @Param WhichDay query string false "哪一天 今天:1、明天:2,多个用 , 隔开"
  22. // @Param IsPower query int false "是否选择有权限行业 ,1是 0 否 默认0"
  23. // @Success 200 {object} models.ActivityTypeListHomeResp
  24. // @router /labelTypeList [get]
  25. func (this *ActivityController) LabelTypeList() {
  26. br := new(models.BaseResponse).Init()
  27. defer func() {
  28. this.Data["json"] = br
  29. this.ServeJSON()
  30. }()
  31. user := this.User
  32. if user == nil {
  33. br.Msg = "请登录"
  34. br.ErrMsg = "请登录,SysUser Is Empty"
  35. return
  36. }
  37. chartPermissionIds := this.GetString("ChartPermissionIds")
  38. isPower, _ := this.GetInt("IsPower")
  39. whichDay := this.GetString("WhichDay")
  40. activeState := this.GetString("ActiveState")
  41. var condition string
  42. var pars []interface{}
  43. // 查研观向7.4-始终查询宏观的活动
  44. if chartPermissionIds != "" {
  45. chartPermissionIds += ",1"
  46. }
  47. condition += `AND art.activity_time > ? `
  48. pars = append(pars, time.Now().AddDate(0, -3, 0).Format(utils.FormatDate))
  49. conditionActivity, err := services.GetActivityonditionList(user, "", chartPermissionIds, whichDay, activeState, "", isPower, 0, "", 0)
  50. if err != nil && err.Error() != utils.ErrNoRow() {
  51. br.Msg = "获取失败"
  52. br.ErrMsg = "获取活动权限数据失败,Err:" + err.Error()
  53. return
  54. }
  55. condition += `AND art.is_limit_people = 1 ` + conditionActivity
  56. sortTime := ` mintimesort ASC `
  57. activityList, err := models.GetCygxActivityList(condition, pars, sortTime, 0, 1000)
  58. if err != nil {
  59. br.Msg = "获取失败"
  60. br.ErrMsg = "获取数据失败,Err:" + err.Error()
  61. return
  62. }
  63. list, err := models.GetActivityTypeHomeList()
  64. if err != nil {
  65. br.Msg = "获取失败"
  66. br.ErrMsg = "获取数据失败,Err:" + err.Error()
  67. return
  68. }
  69. list, err = services.HandleActivityTypeHomeList(list, activityList, user)
  70. speciaItem, err := services.GetActivityLabelSpecialList(user, chartPermissionIds)
  71. if err != nil {
  72. br.Msg = "获取失败"
  73. br.ErrMsg = "获取失败,Err:" + err.Error()
  74. return
  75. }
  76. if len(speciaItem.List) > 0 {
  77. list = append(list, speciaItem)
  78. } else {
  79. speciaItem.List = make([]*models.CygxActivityLabelList, 0)
  80. }
  81. resp := new(models.ActivityTypeListHomeResp)
  82. resp.List = list
  83. br.Ret = 200
  84. br.Success = true
  85. br.Msg = "获取成功"
  86. br.Data = resp
  87. }
  88. // @Title 活动列表
  89. // @Description 获取活动列表接口
  90. // @Param PageSize query int true "每页数据条数"
  91. // @Param CurrentIndex query int true "当前页页码,从1开始"
  92. // @Param Label query string false "搜索主题 多个用 , 隔开"
  93. // @Param ChartPermissionIds query string false "行业id 多个用 , 隔开"
  94. // @Param WhichDay query string false "哪一天 今天:1、明天:2, 本周:3 上周:4,本月:5上月:6多个用 , 隔开"
  95. // @Param ActiveState query string false "活动进行状态 未开始:1、进行中2、已结束3"
  96. // @Param ActivityTypeId query string false "活动类型id 多个用 , 隔开"
  97. // @Param Source query int false "来源 0手机 ,1Pc 默认0"
  98. // @Param IsPower query int false "是否选择有权限行业 ,1是 0 否 默认0"
  99. // @Param PlayBack query int false "是否仅展示回放 1:是、0:否 默认0"
  100. // @Param KeyWord query string false "搜索关键词 多个用 , 隔开"
  101. // @Param ActivityId query int false "活动列表传过来的活动ID"
  102. // @Param Filter query int false "筛选条件 0:全部 1:视频 2:音频"
  103. // @Success 200 {object} models.GetCygxActivityListRep
  104. // @router /list [get]
  105. func (this *ActivityController) ActivityListNew() {
  106. br := new(models.BaseResponse).Init()
  107. defer func() {
  108. this.Data["json"] = br
  109. this.ServeJSON()
  110. }()
  111. user := this.User
  112. if user == nil {
  113. br.Msg = "请登录"
  114. br.ErrMsg = "请登录,SysUser Is Empty"
  115. return
  116. }
  117. uid := user.UserId
  118. pageSize, _ := this.GetInt("PageSize")
  119. currentIndex, _ := this.GetInt("CurrentIndex")
  120. source, _ := this.GetInt("Source")
  121. label := this.GetString("Label")
  122. chartPermissionIds := this.GetString("ChartPermissionIds")
  123. whichDay := this.GetString("WhichDay")
  124. //whichTime := this.GetString("WhichTime")
  125. activeState := this.GetString("ActiveState")
  126. activityTypeId := this.GetString("ActivityTypeId")
  127. keyWord := this.GetString("KeyWord")
  128. playBack, _ := this.GetInt("PlayBack")
  129. filter, _ := this.GetInt("Filter")
  130. activityId, _ := this.GetInt("ActivityId") // 仅用于判断【新】标签
  131. var startSize int
  132. if pageSize <= 0 {
  133. pageSize = utils.PageSize20
  134. }
  135. if currentIndex <= 0 {
  136. currentIndex = 1
  137. }
  138. startSize = utils.StartIndex(currentIndex, pageSize)
  139. var condition string
  140. var pars []interface{}
  141. //var activityList []*models.ActivityDetail
  142. //mapDingActivityId := make(map[int]int)
  143. condition = ""
  144. //活动可见限制
  145. conditionActivity, err := services.GetActivityonditionList(user, activityTypeId, chartPermissionIds, whichDay, activeState, label, 0, source, keyWord, playBack)
  146. if err != nil && err.Error() != utils.ErrNoRow() {
  147. br.Msg = "获取失败"
  148. br.ErrMsg = "获取活动权限数据失败,Err:" + err.Error()
  149. return
  150. }
  151. if source == 1 {
  152. condition += ` AND art.yidong_activity_id = '' `
  153. }
  154. condition += ` AND art.is_limit_people = 1 AND art.publish_status = 1 ` + conditionActivity
  155. total, err := models.GetActivityCount(condition, playBack, pars, filter)
  156. if err != nil {
  157. br.Msg = "获取失败"
  158. br.ErrMsg = "获取失败,Err:" + err.Error()
  159. return
  160. }
  161. var conditionOrder string
  162. if activeState == "2" || activeState == "3" {
  163. conditionOrder = ` ORDER BY art.activity_time DESC `
  164. } else if activeState == "2,3" {
  165. conditionOrder = ` ORDER BY art.active_state ASC, art.activity_time DESC `
  166. } else {
  167. conditionOrder = ` ORDER BY art.activity_time DESC , art.active_state ASC `
  168. }
  169. if label != "" && activeState == "1" {
  170. conditionOrder = ` ORDER BY art.activity_time ASC `
  171. }
  172. if activeState == "1" {
  173. conditionOrder = ` ORDER BY art.activity_time ASC `
  174. }
  175. condition += conditionOrder
  176. list, errList := models.GetActivityListNew(condition, pars, uid, startSize, pageSize, playBack, filter)
  177. if errList != nil {
  178. br.Msg = "获取失败"
  179. br.ErrMsg = "获取失败,Err:" + errList.Error()
  180. return
  181. }
  182. var isShow bool
  183. isShow = services.GetShowSustainable()
  184. detail, err := models.GetConfigByCode("city_img_url")
  185. if err != nil {
  186. br.Msg = "获取数据失败"
  187. br.ErrMsg = "城市配置信息失败,Err:" + err.Error()
  188. return
  189. }
  190. detailChart, err := models.GetConfigByCode("chart_img_url")
  191. if err != nil {
  192. br.Msg = "获取数据失败"
  193. br.ErrMsg = "行业配置信息失败,Err:" + err.Error()
  194. return
  195. }
  196. addressList := strings.Split(detail.ConfigValue, "{|}")
  197. mapAddress := make(map[string]string)
  198. chartList := strings.Split(detailChart.ConfigValue, "{|}")
  199. mapChart := make(map[string]string)
  200. var cityName string
  201. var chartName string
  202. var imgUrl string
  203. var imgUrlChart string
  204. var mapActivityId []int
  205. for _, v := range addressList {
  206. vslice := strings.Split(v, "_")
  207. cityName = vslice[0]
  208. imgUrl = vslice[len(vslice)-1]
  209. mapAddress[cityName] = imgUrl
  210. }
  211. for _, v := range chartList {
  212. vslice := strings.Split(v, "_")
  213. chartName = vslice[0]
  214. imgUrlChart = vslice[len(vslice)-1]
  215. mapChart[chartName] = imgUrlChart
  216. }
  217. for k, v := range list {
  218. if strings.Contains(v.ActivityName, "【") {
  219. list[k].IsBrackets = 1
  220. }
  221. if v.SignupNum > v.LimitPeopleNum {
  222. list[k].SignupNum = v.LimitPeopleNum
  223. }
  224. if isShow && strings.Contains(v.ChartPermissionName, "研选") {
  225. list[k].IsShowSustainable = true
  226. }
  227. if strings.Contains(v.ChartPermissionName, "研选") && v.ActivityTypeId == 1 {
  228. list[k].ActivityTypeName = "买方研选电话会"
  229. list[k].ImgUrlText = utils.YAN_XUAN_IMG
  230. }
  231. if v.ActivityType == 0 {
  232. if mapAddress[v.City] != "" {
  233. list[k].ImgUrl = mapAddress[v.City]
  234. } else {
  235. list[k].ImgUrl = mapAddress["其它"]
  236. }
  237. } else {
  238. if mapChart[v.ChartPermissionName] != "" {
  239. list[k].ImgUrl = mapChart[v.ChartPermissionName]
  240. }
  241. }
  242. expertTxt, _ := services.GetReportContentTextSub(v.Expert)
  243. list[k].Expert = expertTxt
  244. if v.ActivityTypeId == utils.C_CLASS_ACTIVITY_TYPE_ID {
  245. list[k].IsCClassMeeting = true
  246. }
  247. mapActivityId = append(mapActivityId, v.ActivityId)
  248. }
  249. page := paging.GetPaging(currentIndex, pageSize, total)
  250. resp := new(models.GetCygxActivityListRep)
  251. var activityList []*models.ActivityListResp
  252. resp.Label = label
  253. if activityTypeId != "" && label == "" {
  254. activityTypeIdint, err := strconv.Atoi(activityTypeId)
  255. if err == nil {
  256. detail, errDetail := models.GetActivityTypeDetailById(activityTypeIdint)
  257. if errDetail != nil {
  258. br.Msg = "获取信息失败"
  259. br.ErrMsg = "获取信息失败,Err:" + errDetail.Error()
  260. return
  261. }
  262. resp.ImgUrl = detail.OnlineIco
  263. resp.Label = detail.ActivityTypeName
  264. }
  265. }
  266. //处理音频回放
  267. mapActivityVoice, err := services.GetActivityVoiceResp(mapActivityId)
  268. if err != nil {
  269. br.Msg = "获取信息失败"
  270. br.ErrMsg = "GetActivityVoiceResp,Err:" + err.Error()
  271. return
  272. }
  273. //处理视频回放
  274. mapActivityVideo, err := services.GetActivityVideoResp(mapActivityId)
  275. if err != nil {
  276. br.Msg = "获取信息失败"
  277. br.ErrMsg = "GetActivityVideoResp,Err:" + err.Error()
  278. return
  279. }
  280. for k, v := range list {
  281. if mapActivityVoice[v.ActivityId] != nil {
  282. list[k].FileType = 1
  283. list[k].AudioLink = true
  284. list[k].VoiceList = mapActivityVoice[v.ActivityId]
  285. }
  286. if mapActivityVideo[v.ActivityId] != nil {
  287. list[k].FileType = 2
  288. list[k].AudioLink = true
  289. list[k].VideoDetail = mapActivityVideo[v.ActivityId]
  290. }
  291. //fmt.Println(v)
  292. activityList = append(activityList, services.ActivityButtonShow(v, user))
  293. }
  294. // 查研观向7.4-判断标签是否为产业, 为产业时是否跳转资源包
  295. if label != "" {
  296. industry, e := models.GetIndustryByName(label)
  297. if e != nil && e.Error() != utils.ErrNoRow() {
  298. br.Msg = "获取信息失败"
  299. br.ErrMsg = "获取标签产业失败, Err:" + e.Error()
  300. return
  301. }
  302. if industry != nil {
  303. sourceIndustry, e := models.GetSourceIndustryByName(label)
  304. if e != nil && e.Error() != utils.ErrNoRow() {
  305. br.Msg = "获取信息失败"
  306. br.ErrMsg = "获取标签产业资源包失败, Err:" + e.Error()
  307. return
  308. }
  309. if sourceIndustry != nil {
  310. resp.IndustrialManagementId = sourceIndustry.IndustrialManagementId
  311. resp.ChartPermissionId = sourceIndustry.ChartPermissionId
  312. resp.IsJump = true
  313. // 研选产业不跳资源包
  314. if sourceIndustry.ChartPermissionId == utils.CHART_PERMISSION_ID_YANXUAN {
  315. resp.IsJump = false
  316. }
  317. }
  318. }
  319. // 新标签
  320. if activityId > 0 {
  321. activityIds := []int{activityId}
  322. activityNewMap, _, e := services.GetActivityNewLabelMap(activityIds)
  323. if e != nil {
  324. br.Msg = "获取信息失败"
  325. br.ErrMsg = "获取活动新标签失败, Err: " + e.Error()
  326. return
  327. }
  328. resp.IndustryNewLabel = activityNewMap[activityId]
  329. }
  330. }
  331. //添加活动搜索记录
  332. //if keyWord != "" {
  333. // go services.AddActivitykeyWordSearch(keyWord, user)
  334. //}
  335. fmt.Println(resp.Label)
  336. //预处理返给前端的字段
  337. resp.List = activityList
  338. fmt.Println(len(resp.List))
  339. resp.Paging = page
  340. br.Ret = 200
  341. br.Success = true
  342. br.Msg = "获取成功"
  343. br.Data = resp
  344. }
  345. // @Title 活动详情
  346. // @Description 获取活动详情接口
  347. // @Param ActivityId query int true "活动ID"
  348. // @Success Ret=200 {object} models.CygxActivityResp
  349. // @router /detail [get]
  350. func (this *ActivityController) Detail() {
  351. br := new(models.BaseResponse).Init()
  352. defer func() {
  353. this.Data["json"] = br
  354. this.ServeJSON()
  355. }()
  356. user := this.User
  357. if user == nil {
  358. br.Msg = "请登录"
  359. br.ErrMsg = "请登录,用户信息为空"
  360. br.Ret = 408
  361. return
  362. }
  363. uid := user.UserId
  364. activityId, _ := this.GetInt("ActivityId")
  365. if activityId < 1 {
  366. br.Msg = "请输入活动ID"
  367. return
  368. }
  369. resp := new(models.CygxActivityResp)
  370. activityInfo, err := models.GetAddActivityInfoByIdShow(uid, activityId)
  371. if err != nil && err.Error() != utils.ErrNoRow() {
  372. br.Msg = "获取信息失败"
  373. br.ErrMsg = "获取活动详情信息失败,Err:" + err.Error()
  374. return
  375. }
  376. if activityInfo == nil {
  377. br.Msg = "活动不存在"
  378. br.ErrMsg = "活动ID错误,Err:" + "activityId:" + strconv.Itoa(activityId)
  379. return
  380. }
  381. if activityInfo.ActivityTypeId == utils.C_CLASS_ACTIVITY_TYPE_ID {
  382. activityInfo.IsCClassMeeting = true
  383. }
  384. havePower, err := services.GetActivityDetailUserPower(user, activityInfo)
  385. if err != nil {
  386. br.Msg = "获取信息失败"
  387. br.ErrMsg = "校验用户权限失败,Err:" + err.Error()
  388. return
  389. }
  390. if havePower {
  391. resp.HasPermission = 1
  392. detailResp := services.ActivityButtonShow(activityInfo, user)
  393. detailResp, err = services.ActivityDetaailShow(detailResp)
  394. if err != nil {
  395. br.Msg = "获取信息失败"
  396. br.ErrMsg = "ActivityDetaailShow Err:" + err.Error() + "activityId:" + strconv.Itoa(activityId)
  397. return
  398. }
  399. //处理活动关联的产业
  400. industrialList, err := models.GetIndustrialActivityGroupManagementList(activityId)
  401. if err != nil && err.Error() != utils.ErrNoRow() {
  402. br.Msg = "获取信息失败"
  403. br.ErrMsg = "获取活动关联的产业列表信息失败,Err:" + err.Error() + "activityId:" + strconv.Itoa(activityId)
  404. return
  405. }
  406. if activityInfo.TemporaryLabel != "" {
  407. industrialList = make([]*models.IndustrialManagementRep, 0)
  408. item := new(models.IndustrialManagementRep)
  409. item.IndustryName = activityInfo.Label
  410. industrialList = append(industrialList, item)
  411. } else {
  412. industryIds := make([]int, 0)
  413. var industrialManagementId string
  414. for k, v := range industrialList {
  415. if v.ChartPermissionId == utils.CHART_PERMISSION_ID_YANXUAN {
  416. industrialList[k].IsResearch = true
  417. }
  418. industryIds = append(industryIds, v.IndustrialManagementId)
  419. industrialManagementId += strconv.Itoa(v.IndustrialManagementId) + ","
  420. }
  421. // 查研观向7.4-行业新标签
  422. industryNewMap, e := services.GetIndustryNewLabelMap(industryIds)
  423. if e != nil {
  424. br.Msg = "获取信息失败"
  425. br.ErrMsg = "获取产业新标签失败, Err: " + e.Error()
  426. return
  427. }
  428. //判断产业下是否有关联的报告,并处理是否跳转
  429. industrialManagementId = strings.TrimRight(industrialManagementId, ",")
  430. if industrialManagementId != "" {
  431. var condition string
  432. condition = ` AND m.industrial_management_id IN (` + industrialManagementId + `)`
  433. condition += ` AND a.article_id < ` + strconv.Itoa(utils.SummaryArticleId)
  434. listIndustrialGrop, err := models.GetSearchResourceList(condition)
  435. if err != nil && err.Error() != utils.ErrNoRow() {
  436. br.Msg = "获取信息失败"
  437. br.ErrMsg = "GetSearchResourceList,Err:" + err.Error() + "activityId:" + strconv.Itoa(activityId)
  438. return
  439. }
  440. mapIndustrial := make(map[int]int)
  441. if len(listIndustrialGrop) > 0 {
  442. for _, v := range listIndustrialGrop {
  443. mapIndustrial[v.IndustrialManagementId] = v.IndustrialManagementId
  444. }
  445. }
  446. for k, v := range industrialList {
  447. if mapIndustrial[v.IndustrialManagementId] > 0 && !industrialList[k].IsResearch {
  448. industrialList[k].IsJump = true
  449. }
  450. if activityInfo.ActivityTypeId == 1 {
  451. industrialList[k].IndustryNewLabel = industryNewMap[v.IndustrialManagementId]
  452. }
  453. }
  454. }
  455. }
  456. //if activityInfo.YidongActivityId != "" {
  457. // ydTgc, _ := services.GetYiDongCreateUserInfo(user)
  458. // yidongLongLink, err := services.GetYiDongOriginalLink(activityInfo)
  459. // if err != nil {
  460. // br.Msg = "获取信息失败"
  461. // br.ErrMsg = "GetYiDongOriginalLink,Err:" + err.Error() + "activityId:" + strconv.Itoa(activityId)
  462. // return
  463. // }
  464. // detailResp.YidongActivityUrl = yidongLongLink + "%26source=11%26fromHz=true%26tgc=" + ydTgc
  465. //}
  466. if len(industrialList) > 0 {
  467. detailResp.Label = ""
  468. }
  469. detailResp.Listndustrial = industrialList
  470. //处理音频回放
  471. var mapActivityId []int
  472. mapActivityId = append(mapActivityId, activityId)
  473. mapActivityVoice, err := services.GetActivityVoiceResp(mapActivityId)
  474. if err != nil {
  475. br.Msg = "获取信息失败"
  476. br.ErrMsg = "GetActivityVoiceResp,Err:" + err.Error() + "activityId:" + strconv.Itoa(activityId)
  477. return
  478. }
  479. if mapActivityVoice[activityId] != nil {
  480. detailResp.FileType = 1
  481. detailResp.AudioLink = true
  482. detailResp.VoiceDetail = mapActivityVoice[activityId]
  483. }
  484. //处理视频回放
  485. mapActivityVideo, err := services.GetActivityVideoResp(mapActivityId)
  486. if err != nil {
  487. br.Msg = "获取信息失败"
  488. br.ErrMsg = "GetActivityVideoResp,Err:" + err.Error()
  489. return
  490. }
  491. if mapActivityVideo[activityId] != nil {
  492. detailResp.FileType = 2
  493. detailResp.AudioLink = true
  494. detailResp.VideoDetail = mapActivityVideo[activityId]
  495. }
  496. resp.Detail = detailResp
  497. } else {
  498. hasPermission, sellerName, sellerMobile, popupMsg, err := services.GetUserHasPermission(user)
  499. if err != nil {
  500. br.Msg = "获取信息失败"
  501. br.ErrMsg = "判断是否已申请过试用失败,Err:" + err.Error()
  502. return
  503. }
  504. popupMsg = "暂无查看权限"
  505. resp.PopupMsg = popupMsg
  506. resp.HasPermission = hasPermission
  507. resp.SellerName = sellerName
  508. resp.SellerMobile = sellerMobile
  509. }
  510. br.Ret = 200
  511. br.Success = true
  512. br.Msg = "获取成功"
  513. br.Data = resp
  514. }
  515. // @Title 活动报名
  516. // @Description 活动报名接口
  517. // @Param request body models.ActivitySingnupRep true "type json string"
  518. // @Success Ret=200 {object} models.SignupStatus
  519. // @router /signup/add [post]
  520. func (this *ActivityController) SignupAdd() {
  521. br := new(models.BaseResponse).Init()
  522. defer func() {
  523. this.Data["json"] = br
  524. this.ServeJSON()
  525. }()
  526. user := this.User
  527. if user == nil {
  528. br.Msg = "请登录"
  529. br.ErrMsg = "请登录,用户信息为空"
  530. br.Ret = 408
  531. return
  532. }
  533. uid := user.UserId
  534. signupStatus := ""
  535. var req models.ActivitySingnupRep
  536. resp := new(models.SignupStatus)
  537. var total int
  538. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  539. if err != nil {
  540. br.Msg = "参数解析异常!"
  541. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  542. return
  543. }
  544. activityId := req.ActivityId
  545. signupType := req.SignupType
  546. hasPermission := 0
  547. if signupType == 1 && user.Mobile == "" && user.OutboundMobile == "" {
  548. resp.GoBindEmail = true
  549. }
  550. activityInfo, errInfo := models.GetAddActivityInfoById(activityId)
  551. if activityInfo == nil {
  552. br.Msg = "操作失败"
  553. br.ErrMsg = "活动ID错误,不存在activityId:" + strconv.Itoa(activityId)
  554. return
  555. }
  556. if errInfo != nil {
  557. br.Msg = "操作失败"
  558. br.ErrMsg = "操作失败,Err:" + errInfo.Error()
  559. return
  560. }
  561. havePower, err := services.GetActivityDetailUserPower(user, activityInfo)
  562. if err != nil {
  563. br.Msg = "获取信息失败"
  564. br.ErrMsg = "校验用户权限失败,Err:" + err.Error()
  565. return
  566. }
  567. if havePower {
  568. item := new(models.CygxActivitySignup)
  569. resp.HasPermission = 1
  570. hasPermission = 1
  571. signupStatus = "Success"
  572. resultTime := utils.StrTimeToTime(activityInfo.ActivityTime) //时间字符串格式转时间格式
  573. if time.Now().After(resultTime.Add(-time.Minute * 60)) {
  574. signupStatus = "Overtime"
  575. resp.SignupType = signupType
  576. resp.SignupStatus = signupStatus
  577. resp.HasPermission = hasPermission
  578. resp.PopupMsg = "活动开始前1小时内无法预约,请联系对口销售处理"
  579. br.Ret = 200
  580. br.Success = true
  581. br.Msg = ""
  582. br.Data = resp
  583. return
  584. }
  585. var sellerName string
  586. sellerName, err = models.GetCompanySellerName(user.CompanyId)
  587. if err != nil {
  588. br.Msg = "报名失败!"
  589. br.ErrMsg = "获取对应销售失败,Err:" + err.Error()
  590. return
  591. }
  592. //人数已满:FullStarffed、单机构超过两人:TwoPeople、爽约次数过多:BreakPromise、超时:Overtime 、成功:Success"`
  593. //如果是下面几种情况则对报名信息做判断限制 (公司调研电话会(限制人数)、公司线下调研、专家/分析师线下沙龙)
  594. //if (activityInfo.ActivityTypeId == 3 && activityInfo.IsLimitPeople == 1) || activityInfo.ActivityTypeId > 3 {
  595. if activityInfo.IsLimitPeople == 1 {
  596. //判断优先级:总人数限制→单机构2人限制→爽约3次限制
  597. totalRestrict, err := models.GetUserRestrictCount(user.Mobile)
  598. if err != nil {
  599. br.Msg = "获取信息失败"
  600. br.ErrMsg = "获取客户信息失败,Err:" + err.Error()
  601. return
  602. }
  603. if totalRestrict >= 1 {
  604. signupStatus = "BreakPromise"
  605. resp.PopupMsg = "由于爽约次数过多,您暂时被限制报名资格"
  606. item.FailType = 3
  607. }
  608. totalSignupCompany, err := models.GetActivitySignupCompanyCount(activityId, user.CompanyId)
  609. if err != nil {
  610. br.Msg = "获取信息失败"
  611. br.ErrMsg = "获取客户信息失败,Err:" + err.Error()
  612. return
  613. }
  614. if totalSignupCompany >= 2 {
  615. signupStatus = "TwoPeople"
  616. resp.PopupMsg = "单机构最多2人报名同一活动,您所在机构报名人数已满"
  617. item.FailType = 2
  618. }
  619. totaSignupPeopleNum, err := models.GetActivitySignupSuccessCount(activityId)
  620. if err != nil {
  621. br.Msg = "获取信息失败"
  622. br.ErrMsg = "获取客户信息失败,Err:" + err.Error()
  623. return
  624. }
  625. if totaSignupPeopleNum >= activityInfo.LimitPeopleNum {
  626. signupStatus = "FullStarffed"
  627. resp.PopupMsg = "此活动报名人数已满,请留意下期活动"
  628. item.FailType = 1
  629. }
  630. totalUserRestrictCount, err := models.GetActivitySignupByUserRestrictCount(uid, activityId)
  631. if err != nil {
  632. br.Msg = "获取失败"
  633. br.ErrMsg = "获取失败,Err:" + err.Error()
  634. return
  635. }
  636. //解除报名限制之后二次报名相同活动
  637. if totalUserRestrictCount > 0 && totalRestrict == 0 && resp.GoBindEmail != true {
  638. item.UserId = uid
  639. item.RealName = user.RealName
  640. item.SellerName = sellerName
  641. item.ActivityId = activityId
  642. item.CreateTime = time.Now()
  643. item.Mobile = user.Mobile
  644. item.Email = user.Email
  645. item.CompanyId = user.CompanyId
  646. item.CompanyName = user.CompanyName
  647. item.SignupType = signupType
  648. item.FailType = 0
  649. item.DoFailType = 0
  650. _, errSignup := models.AddActivitySignupByRestrict(item)
  651. if errSignup != nil {
  652. br.Msg = "操作失败"
  653. br.ErrMsg = "操作失败,Err:" + errSignup.Error()
  654. return
  655. }
  656. resp.HaqveJurisdiction = true
  657. resp.SignupType = signupType
  658. resp.SignupStatus = "Success"
  659. resp.HasPermission = hasPermission
  660. resp.ActivityId = activityId
  661. total, err = models.GetUserMeetingReminderCount(user.UserId)
  662. if err != nil {
  663. br.Msg = "获取信息失败"
  664. br.ErrMsg = "获取日程数量信息失败,Err:" + err.Error()
  665. return
  666. }
  667. if total == 0 {
  668. resp.GoFollow = true
  669. }
  670. br.Ret = 200
  671. br.Success = true
  672. br.Msg = "操作成功"
  673. br.Data = resp
  674. return
  675. }
  676. totalMy, err := models.GetActivitySignupByUserCount(uid, activityId)
  677. if err != nil {
  678. br.Msg = "获取失败"
  679. br.ErrMsg = "获取失败,Err:" + err.Error()
  680. return
  681. }
  682. if signupStatus != "Success" && totalMy == 0 && resp.GoBindEmail != true {
  683. item.UserId = uid
  684. item.RealName = user.RealName
  685. item.SellerName = sellerName
  686. item.ActivityId = activityId
  687. item.CreateTime = time.Now()
  688. item.Mobile = user.Mobile
  689. item.Email = user.Email
  690. item.CompanyId = user.CompanyId
  691. item.CompanyName = user.CompanyName
  692. item.SignupType = signupType
  693. item.DoFailType = item.FailType
  694. if user.OutboundMobile != "" {
  695. item.OutboundMobile = user.OutboundMobile
  696. if user.OutboundCountryCode == "" {
  697. item.CountryCode = "86"
  698. } else {
  699. item.CountryCode = user.OutboundCountryCode
  700. }
  701. } else {
  702. item.OutboundMobile = user.Mobile
  703. if user.CountryCode == "" {
  704. item.CountryCode = "86"
  705. } else {
  706. item.CountryCode = user.CountryCode
  707. }
  708. }
  709. //添加报名信息,但是不加入日程
  710. _, errSignup := models.AddActivitySignupNoSchedule(item)
  711. if errSignup != nil {
  712. br.Msg = "操作失败"
  713. br.ErrMsg = "操作失败,Err:" + errSignup.Error()
  714. return
  715. }
  716. }
  717. }
  718. totalMySuccess, err := models.GetActivitySignupCount(uid, activityId)
  719. if err != nil {
  720. br.Msg = "获取失败"
  721. br.ErrMsg = "获取失败,Err:" + err.Error()
  722. return
  723. }
  724. if totalMySuccess > 0 {
  725. br.Msg = "您已报名这个活动"
  726. return
  727. }
  728. if signupStatus == "Success" && resp.GoBindEmail != true {
  729. item.UserId = uid
  730. item.RealName = user.RealName
  731. item.SellerName = sellerName
  732. item.ActivityId = activityId
  733. item.CreateTime = time.Now()
  734. item.Mobile = user.Mobile
  735. item.Email = user.Email
  736. item.CompanyId = user.CompanyId
  737. item.CompanyName = user.CompanyName
  738. item.SignupType = signupType
  739. item.FailType = 0
  740. item.DoFailType = 0
  741. item.OutboundMobile = user.Mobile
  742. if user.OutboundMobile != "" {
  743. item.OutboundMobile = user.OutboundMobile
  744. if user.OutboundCountryCode == "" {
  745. item.CountryCode = "86"
  746. } else {
  747. item.CountryCode = user.OutboundCountryCode
  748. }
  749. } else {
  750. item.OutboundMobile = user.Mobile
  751. if user.CountryCode == "" {
  752. item.CountryCode = "86"
  753. } else {
  754. item.CountryCode = user.CountryCode
  755. }
  756. }
  757. _, errSignup := models.AddActivitySignup(item)
  758. if errSignup != nil {
  759. br.Msg = "操作失败"
  760. br.ErrMsg = "操作失败,Err:" + errSignup.Error()
  761. return
  762. }
  763. resp.HaqveJurisdiction = true
  764. //1:预约外呼 、2:设置会议提醒 、 3:预约纪要 、4:活动报名
  765. if signupType == 1 {
  766. //go services.ActivityUserRemind(user, activityInfo, 1)
  767. resp.PopupMsg = item.CountryCode + "-" + item.Mobile + "<br/>预约成功,已加入您的活动日程<br/><br/>想要及时获取活动时间变更通知,请关注【查研观向小助手】公众号"
  768. } else {
  769. //go services.ActivityUserRemind(user, activityInfo, 4)
  770. resp.PopupMsg = "报名成功,已加入您的活动日程<br/><br/>想要及时获取活动时间变更通知,请关注【查研观向小助手】公众号"
  771. }
  772. }
  773. } else {
  774. hasPermission, sellerName, sellerMobile, popupMsg, err := services.GetUserHasPermission(user)
  775. if err != nil {
  776. br.Msg = "获取信息失败"
  777. br.ErrMsg = "判断是否已申请过试用失败,Err:" + err.Error()
  778. return
  779. }
  780. popupMsg = "暂无查看权限"
  781. resp.PopupMsg = popupMsg
  782. resp.HasPermission = hasPermission
  783. resp.SellerName = sellerName
  784. resp.SellerMobile = sellerMobile
  785. }
  786. if signupType == 1 && user.IsMsgOutboundMobile == 0 {
  787. resp.GoOutboundMobile = true
  788. if user.Mobile != "" || user.OutboundMobile != "" {
  789. go models.ModifyWxUserIsMsgOutboundMobile(user.UserId)
  790. }
  791. }
  792. if user.OutboundMobile == "" {
  793. resp.Mobile = user.Mobile
  794. if user.CountryCode == "" && len(user.Mobile) == 11 {
  795. resp.CountryCode = "86"
  796. } else {
  797. resp.CountryCode = user.CountryCode
  798. }
  799. } else {
  800. resp.Mobile = user.OutboundMobile
  801. resp.CountryCode = user.OutboundCountryCode
  802. }
  803. //如果用户有绑定手机号,但是没有绑定外呼手机号
  804. if signupType == 1 && user.Mobile != "" && user.OutboundMobile == "" {
  805. var countryCode string
  806. if len(user.Mobile) == 8 {
  807. countryCode = "852"
  808. } else if len(user.Mobile) == 9 {
  809. countryCode = "886"
  810. } else if len(user.Mobile) == 10 {
  811. countryCode = "1"
  812. } else if len(user.Mobile) >= 11 {
  813. countryCode = "86"
  814. }
  815. models.BindUserOutboundMobileByMobile(user.Mobile, countryCode, uid)
  816. }
  817. resp.SignupType = signupType
  818. resp.SignupStatus = signupStatus
  819. //resp.HasPermission = hasPermission
  820. //if signupStatus == "Success" {
  821. resp.ActivityId = activityId
  822. //}
  823. total, err = models.GetUserSignupCount(user.UserId)
  824. if err != nil {
  825. br.Msg = "获取信息失败"
  826. br.ErrMsg = "获取日程数量信息失败,Err:" + err.Error()
  827. return
  828. }
  829. if total <= 1 {
  830. resp.GoFollow = true
  831. }
  832. br.Ret = 200
  833. br.Success = true
  834. br.Msg = "操作成功"
  835. br.Data = resp
  836. }
  837. // @Title 活动取消报名
  838. // @Description 活动取消报名接口
  839. // @Param request body models.ActivitySingnupRep true "type json string"
  840. // @Success Ret=200 {object} models.SignupStatus
  841. // @router /signup/cancel [post]
  842. func (this *ActivityController) SignupCancel() {
  843. br := new(models.BaseResponse).Init()
  844. defer func() {
  845. this.Data["json"] = br
  846. this.ServeJSON()
  847. }()
  848. user := this.User
  849. if user == nil {
  850. br.Msg = "请登录"
  851. br.ErrMsg = "请登录,用户信息为空"
  852. br.Ret = 408
  853. return
  854. }
  855. uid := user.UserId
  856. var req models.ActivitySingnupRep
  857. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  858. if err != nil {
  859. br.Msg = "参数解析异常!"
  860. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  861. return
  862. }
  863. activityId := req.ActivityId
  864. signupType := req.SignupType
  865. item := new(models.CygxActivitySignup)
  866. activityInfo, errInfo := models.GetAddActivityInfoById(activityId)
  867. if activityInfo == nil {
  868. br.Msg = "操作失败"
  869. br.ErrMsg = "活动ID错误,不存在activityId:" + strconv.Itoa(activityId)
  870. return
  871. }
  872. if errInfo != nil {
  873. br.Msg = "操作失败"
  874. br.ErrMsg = "操作失败,Err:" + errInfo.Error()
  875. return
  876. }
  877. resultTime := utils.StrTimeToTime(activityInfo.ActivityTime) //时间字符串格式转时间格式
  878. if time.Now().After(resultTime.Add(-time.Minute * 60)) {
  879. if signupType == 1 {
  880. br.Msg = "活动开始前1小时内无法取消预约外呼,请联系对口销售处理"
  881. } else {
  882. br.Msg = "活动开始前1小时内无法取消报名,请联系对口销售处理"
  883. }
  884. return
  885. }
  886. total, err := models.GetActivitySignupCount(uid, activityId)
  887. if err != nil {
  888. br.Msg = "获取失败"
  889. br.ErrMsg = "获取失败,Err:" + err.Error()
  890. return
  891. }
  892. if total == 0 {
  893. br.Msg = "您暂未报名这个活动"
  894. return
  895. }
  896. item.UserId = uid
  897. item.ActivityId = activityId
  898. item.CreateTime = time.Now()
  899. item.Mobile = user.Mobile
  900. item.Email = user.Email
  901. item.CompanyId = user.CompanyId
  902. item.CompanyName = user.CompanyName
  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. }
  913. // @Title 添加会议提醒
  914. // @Description 添加会议提醒接口
  915. // @Param request body models.ActivityIdRep true "type json string"
  916. // @Success Ret=200 {object} models.SignupStatus
  917. // @router /meetingReminder/add [post]
  918. func (this *ActivityController) MeetingReminderAdd() {
  919. br := new(models.BaseResponse).Init()
  920. defer func() {
  921. this.Data["json"] = br
  922. this.ServeJSON()
  923. }()
  924. user := this.User
  925. if user == nil {
  926. br.Msg = "请登录"
  927. br.ErrMsg = "请登录,用户信息为空"
  928. br.Ret = 408
  929. return
  930. }
  931. uid := user.UserId
  932. signupStatus := ""
  933. var req models.ActivitySingnupRep
  934. resp := new(models.SignupStatus)
  935. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  936. if err != nil {
  937. br.Msg = "参数解析异常!"
  938. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  939. return
  940. }
  941. activityId := req.ActivityId
  942. signupType := req.SignupType
  943. hasPermission := 0
  944. if signupType == 1 && user.Mobile == "" && user.OutboundMobile == "" {
  945. resp.GoBindEmail = true
  946. }
  947. activityInfo, errInfo := models.GetAddActivityInfoById(activityId)
  948. if activityInfo == nil {
  949. br.Msg = "操作失败"
  950. br.ErrMsg = "活动ID错误,不存在activityId:" + strconv.Itoa(activityId)
  951. return
  952. }
  953. if errInfo != nil {
  954. br.Msg = "操作失败"
  955. br.ErrMsg = "操作失败,Err:" + errInfo.Error()
  956. return
  957. }
  958. havePower, err := services.GetActivityDetailUserPower(user, activityInfo)
  959. if err != nil {
  960. br.Msg = "获取信息失败"
  961. br.ErrMsg = "校验用户权限失败,Err:" + err.Error()
  962. return
  963. }
  964. if havePower {
  965. item := new(models.CygxActivityMeetingReminder)
  966. resp.HasPermission = 1
  967. hasPermission = 1
  968. signupStatus = "Success"
  969. resultTime := utils.StrTimeToTime(activityInfo.ActivityTime) //时间字符串格式转时间格式
  970. if time.Now().After(resultTime.Add(-time.Minute * 15)) {
  971. signupStatus = "Overtime"
  972. resp.SignupType = signupType
  973. resp.SignupStatus = signupStatus
  974. resp.HasPermission = hasPermission
  975. resp.PopupMsg = "活动开始前15分钟无法设置会议提醒"
  976. br.Ret = 200
  977. br.Success = true
  978. br.Msg = ""
  979. br.Data = resp
  980. return
  981. }
  982. hasPermission = 1
  983. signupStatus = "Success"
  984. totalMeeting, errMeeting := models.GetActivityMeetingReminderCount(uid, activityId)
  985. if errMeeting != nil {
  986. br.Msg = "获取失败"
  987. br.ErrMsg = "获取失败,Err:" + errMeeting.Error()
  988. return
  989. }
  990. if totalMeeting > 0 {
  991. br.Msg = "您已预约,请勿重复预约"
  992. return
  993. }
  994. item.UserId = uid
  995. item.ActivityId = activityId
  996. item.CreateTime = time.Now()
  997. item.Mobile = user.Mobile
  998. item.Email = user.Email
  999. item.CompanyId = user.CompanyId
  1000. item.CompanyName = user.CompanyName
  1001. _, errSignup := models.AddActivityMeetingReminder(item)
  1002. if errSignup != nil {
  1003. br.Msg = "操作失败"
  1004. br.ErrMsg = "操作失败,Err:" + errSignup.Error()
  1005. return
  1006. }
  1007. br.Msg = "设置成功,会前15分钟会为您推送微信消息提醒"
  1008. resp.PopupMsg = "设置成功,会前15分钟会为您推送微信消息提醒<br/><br/>请关注【查研观向小助手】公众号,以获取微信消息提醒"
  1009. } else {
  1010. hasPermission, sellerName, sellerMobile, popupMsg, err := services.GetUserHasPermission(user)
  1011. if err != nil {
  1012. br.Msg = "获取信息失败"
  1013. br.ErrMsg = "判断是否已申请过试用失败,Err:" + err.Error()
  1014. return
  1015. }
  1016. popupMsg = "暂无查看权限"
  1017. resp.PopupMsg = popupMsg
  1018. resp.HasPermission = hasPermission
  1019. resp.SellerName = sellerName
  1020. resp.SellerMobile = sellerMobile
  1021. }
  1022. br.Ret = 200
  1023. br.Success = true
  1024. br.Msg = "操作成功"
  1025. br.Data = resp
  1026. }
  1027. // @Title 取消会议提醒
  1028. // @Description 取消会议提醒接口
  1029. // @Param request body models.ActivityIdRep true "type json string"
  1030. // @Success Ret=200 {object} models.SignupStatus
  1031. // @router /meetingReminder/cancel [post]
  1032. func (this *ActivityController) MeetingReminderCancel() {
  1033. br := new(models.BaseResponse).Init()
  1034. defer func() {
  1035. this.Data["json"] = br
  1036. this.ServeJSON()
  1037. }()
  1038. user := this.User
  1039. if user == nil {
  1040. br.Msg = "请登录"
  1041. br.ErrMsg = "请登录,用户信息为空"
  1042. br.Ret = 408
  1043. return
  1044. }
  1045. uid := user.UserId
  1046. var req models.ActivityIdRep
  1047. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  1048. if err != nil {
  1049. br.Msg = "参数解析异常!"
  1050. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  1051. return
  1052. }
  1053. activityId := req.ActivityId
  1054. signupStatus := "Success"
  1055. item := new(models.CygxActivityMeetingReminder)
  1056. activityInfo, errInfo := models.GetAddActivityInfoById(activityId)
  1057. if activityInfo == nil {
  1058. br.Msg = "操作失败"
  1059. br.ErrMsg = "活动ID错误,不存在activityId:" + strconv.Itoa(activityId)
  1060. return
  1061. }
  1062. if errInfo != nil {
  1063. br.Msg = "操作失败"
  1064. br.ErrMsg = "操作失败,Err:" + errInfo.Error()
  1065. return
  1066. }
  1067. total, err := models.GetActivityMeetingReminderCount(uid, activityId)
  1068. if err != nil {
  1069. br.Msg = "获取失败"
  1070. br.ErrMsg = "获取失败,Err:" + err.Error()
  1071. return
  1072. }
  1073. if total == 0 {
  1074. br.Msg = "您暂未添加该活动会议提醒"
  1075. return
  1076. }
  1077. item.UserId = uid
  1078. item.ActivityId = activityId
  1079. item.CreateTime = time.Now()
  1080. item.Mobile = user.Mobile
  1081. item.Email = user.Email
  1082. item.CompanyId = user.CompanyId
  1083. item.CompanyName = user.CompanyName
  1084. _, errSignup := models.CancelActivityMeetingReminder(item)
  1085. if errSignup != nil {
  1086. br.Msg = "操作失败"
  1087. br.ErrMsg = "操作失败,Err:" + errSignup.Error()
  1088. return
  1089. }
  1090. resp := new(models.SignupStatus)
  1091. resp.SignupStatus = signupStatus
  1092. resp.HasPermission = 1
  1093. resp.ActivityId = activityId
  1094. br.Ret = 200
  1095. br.Success = true
  1096. br.Msg = "会议提醒已取消"
  1097. br.Data = resp
  1098. }
  1099. // @Title 预约纪要
  1100. // @Description 预约纪要接口
  1101. // @Param request body models.ActivityIdRep true "type json string"
  1102. // @Success Ret=200 {object} models.AppointmentResp
  1103. // @router /appointment/add [post]
  1104. func (this *ActivityController) ActivityAppointmentAdd() {
  1105. br := new(models.BaseResponse).Init()
  1106. defer func() {
  1107. this.Data["json"] = br
  1108. this.ServeJSON()
  1109. }()
  1110. user := this.User
  1111. if user == nil {
  1112. br.Msg = "请登录"
  1113. br.ErrMsg = "请登录,用户信息为空"
  1114. br.Ret = 408
  1115. return
  1116. }
  1117. uid := user.UserId
  1118. var req models.ActivitySingnupRep
  1119. resp := new(models.SignupStatus)
  1120. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  1121. if err != nil {
  1122. br.Msg = "参数解析异常!"
  1123. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  1124. return
  1125. }
  1126. activityId := req.ActivityId
  1127. signupType := req.SignupType
  1128. if signupType == 1 && user.Mobile == "" && user.OutboundMobile == "" {
  1129. resp.GoBindEmail = true
  1130. }
  1131. activityInfo, errInfo := models.GetAddActivityInfoById(activityId)
  1132. if activityInfo == nil {
  1133. br.Msg = "操作失败"
  1134. br.ErrMsg = "活动ID错误,不存在activityId:" + strconv.Itoa(activityId)
  1135. return
  1136. }
  1137. if errInfo != nil {
  1138. br.Msg = "操作失败"
  1139. br.ErrMsg = "操作失败,Err:" + errInfo.Error()
  1140. return
  1141. }
  1142. havePower, err := services.GetActivityDetailUserPower(user, activityInfo)
  1143. if err != nil {
  1144. br.Msg = "获取信息失败"
  1145. br.ErrMsg = "校验用户权限失败,Err:" + err.Error()
  1146. return
  1147. }
  1148. if havePower {
  1149. item := new(models.CygxActivityAppointment)
  1150. resp.HasPermission = 1
  1151. totalMeeting, errMeeting := models.GetUserCygxActivityAppointmentCount(uid, activityId)
  1152. if errMeeting != nil {
  1153. br.Msg = "获取失败"
  1154. br.ErrMsg = "获取失败,Err:" + errMeeting.Error()
  1155. return
  1156. }
  1157. if totalMeeting > 0 {
  1158. br.Msg = "您已预约,请勿重复预约"
  1159. return
  1160. }
  1161. var sellerName string
  1162. sellerName, err = models.GetCompanySellerName(user.CompanyId)
  1163. if err != nil {
  1164. br.Msg = "报名失败!"
  1165. br.ErrMsg = "获取对应销售失败,Err:" + err.Error()
  1166. return
  1167. }
  1168. item.UserId = uid
  1169. item.ActivityId = activityId
  1170. item.CreateTime = time.Now()
  1171. item.Mobile = user.Mobile
  1172. item.Email = user.Email
  1173. item.CompanyId = user.CompanyId
  1174. item.CompanyName = user.CompanyName
  1175. item.SellerName = sellerName
  1176. item.RealName = user.RealName
  1177. err = models.AddCygxActivityAppointment(item)
  1178. if err != nil {
  1179. br.Msg = "操作失败"
  1180. br.ErrMsg = "操作失败,Err:" + err.Error()
  1181. return
  1182. }
  1183. resp.SignupStatus = "Success"
  1184. //1:预约外呼 、2:设置会议提醒 、 3:预约纪要 、4:活动报名
  1185. //go services.ActivityUserRemind(user, activityInfo, 3)
  1186. } else {
  1187. hasPermission, sellerName, sellerMobile, popupMsg, err := services.GetUserHasPermission(user)
  1188. if err != nil {
  1189. br.Msg = "获取信息失败"
  1190. br.ErrMsg = "判断是否已申请过试用失败,Err:" + err.Error()
  1191. return
  1192. }
  1193. popupMsg = "暂无查看权限"
  1194. resp.PopupMsg = popupMsg
  1195. resp.HasPermission = hasPermission
  1196. resp.SellerName = sellerName
  1197. resp.SellerMobile = sellerMobile
  1198. }
  1199. br.Ret = 200
  1200. br.Success = true
  1201. br.Msg = "操作成功"
  1202. br.Data = resp
  1203. }
  1204. // @Title 取消预约纪要
  1205. // @Description 取消预约纪要接口
  1206. // @Param request body models.ActivityIdRep true "type json string"
  1207. // @Success Ret=200 {object} models.SignupStatus
  1208. // @router /appointment/cancel [post]
  1209. func (this *ActivityController) ActivityAppointmentCancel() {
  1210. br := new(models.BaseResponse).Init()
  1211. defer func() {
  1212. this.Data["json"] = br
  1213. this.ServeJSON()
  1214. }()
  1215. user := this.User
  1216. if user == nil {
  1217. br.Msg = "请登录"
  1218. br.ErrMsg = "请登录,用户信息为空"
  1219. br.Ret = 408
  1220. return
  1221. }
  1222. uid := user.UserId
  1223. var req models.ActivityIdRep
  1224. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  1225. if err != nil {
  1226. br.Msg = "参数解析异常!"
  1227. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  1228. return
  1229. }
  1230. activityId := req.ActivityId
  1231. signupStatus := "Success"
  1232. item := new(models.CygxActivityAppointment)
  1233. activityInfo, errInfo := models.GetAddActivityInfoById(activityId)
  1234. if activityInfo == nil {
  1235. br.Msg = "操作失败"
  1236. br.ErrMsg = "活动ID错误,不存在activityId:" + strconv.Itoa(activityId)
  1237. return
  1238. }
  1239. if errInfo != nil {
  1240. br.Msg = "操作失败"
  1241. br.ErrMsg = "操作失败,Err:" + errInfo.Error()
  1242. return
  1243. }
  1244. total, err := models.GetUserCygxActivityAppointmentCount(uid, activityId)
  1245. if err != nil {
  1246. br.Msg = "获取失败"
  1247. br.ErrMsg = "获取失败,Err:" + err.Error()
  1248. return
  1249. }
  1250. if total == 0 {
  1251. br.Msg = "您暂未预约该纪要"
  1252. return
  1253. }
  1254. item.UserId = uid
  1255. item.ActivityId = activityId
  1256. item.CreateTime = time.Now()
  1257. item.Mobile = user.Mobile
  1258. item.Email = user.Email
  1259. item.CompanyId = user.CompanyId
  1260. item.CompanyName = user.CompanyName
  1261. _, errSignup := models.CancelcygxActivityAppointment(item)
  1262. if errSignup != nil {
  1263. br.Msg = "操作失败"
  1264. br.ErrMsg = "操作失败,Err:" + errSignup.Error()
  1265. return
  1266. }
  1267. resp := new(models.SignupStatus)
  1268. resp.SignupStatus = signupStatus
  1269. resp.ActivityId = activityId
  1270. resp.HasPermission = 1
  1271. br.Ret = 200
  1272. br.Success = true
  1273. br.Msg = "已取消"
  1274. br.Data = resp
  1275. }
  1276. // @Title 活动带问
  1277. // @Description 新增活动带问接口
  1278. // @Param request body models.AddCygxActivityHelpAsk true "type json string"
  1279. // @Success Ret=200 新增成功
  1280. // @router /askAdd [post]
  1281. func (this *ActivityController) AskAdd() {
  1282. br := new(models.BaseResponse).Init()
  1283. defer func() {
  1284. this.Data["json"] = br
  1285. this.ServeJSON()
  1286. }()
  1287. user := this.User
  1288. if user == nil {
  1289. br.Msg = "请登录"
  1290. br.ErrMsg = "请登录,SysUser Is Empty"
  1291. br.Ret = 408
  1292. return
  1293. }
  1294. var req models.CygxActivityHelpAsk
  1295. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  1296. if err != nil {
  1297. br.Msg = "参数解析异常!"
  1298. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  1299. return
  1300. }
  1301. if req.Content == "" {
  1302. br.Msg = "建议内容不可为空"
  1303. return
  1304. }
  1305. content := req.Content
  1306. //itemToken, err := services.WxGetToken()
  1307. //if err != nil {
  1308. // br.Msg = "GetWxAccessToken Err:" + err.Error()
  1309. // return
  1310. //}
  1311. //if itemToken.AccessToken == "" {
  1312. // br.Msg = "accessToken is empty"
  1313. // return
  1314. //}
  1315. //commerr, err := weapp.MSGSecCheck(itemToken.AccessToken, content)
  1316. //if err != nil {
  1317. // br.Msg = "内容校验失败!"
  1318. // br.ErrMsg = "内容校验失败,Err:" + err.Error()
  1319. // return
  1320. //}
  1321. //if commerr.ErrCode != 0 {
  1322. // br.Msg = "内容违规,请重新提交!"
  1323. // br.ErrMsg = "颜文字内容违规,Err:" + commerr.ErrMSG
  1324. // return
  1325. //}
  1326. activityId := req.ActivityId
  1327. activityInfo, errInfo := models.GetAddActivityInfoById(activityId)
  1328. if activityInfo == nil {
  1329. br.Msg = "操作失败"
  1330. br.ErrMsg = "活动ID错误,不存在activityId:" + strconv.Itoa(activityId)
  1331. return
  1332. }
  1333. if errInfo != nil {
  1334. br.Msg = "操作失败"
  1335. br.ErrMsg = "操作失败,Err:" + errInfo.Error()
  1336. return
  1337. }
  1338. resp := new(models.SignupStatus)
  1339. havePower, err := services.GetActivityDetailUserPower(user, activityInfo)
  1340. if err != nil {
  1341. br.Msg = "获取信息失败"
  1342. br.ErrMsg = "校验用户权限失败,Err:" + err.Error()
  1343. return
  1344. }
  1345. if havePower {
  1346. companyDetail, err := models.GetCompanyDetailById(user.CompanyId)
  1347. if err != nil {
  1348. br.Msg = "提交失败!"
  1349. br.ErrMsg = "获取客户详情失败,Err:" + err.Error()
  1350. return
  1351. }
  1352. if companyDetail == nil {
  1353. br.Msg = "提交失败!"
  1354. br.ErrMsg = "客户不存在,uid:" + strconv.Itoa(user.UserId)
  1355. return
  1356. }
  1357. resp.SignupStatus = "Success"
  1358. resp.HasPermission = 1
  1359. item := new(models.CygxActivityHelpAsk)
  1360. item.UserId = user.UserId
  1361. item.ActivityId = req.ActivityId
  1362. item.CompanyId = user.CompanyId
  1363. item.CompanyName = companyDetail.CompanyName
  1364. item.CreateTime = time.Now()
  1365. item.Mobile = user.Mobile
  1366. item.Email = user.Email
  1367. item.Content = content
  1368. _, err = models.AddActivityHelpAsk(item)
  1369. if err != nil {
  1370. br.Msg = "提交失败"
  1371. br.ErrMsg = "提交带问失败,Err:" + err.Error()
  1372. return
  1373. }
  1374. var isSendMsg bool
  1375. resultTime := utils.StrTimeToTime(activityInfo.ActivityTime) //时间字符串格式转时间格式
  1376. if activityInfo.ActivityTypeId == 1 && activityInfo.ChartPermissionId != 31 {
  1377. if time.Now().After(resultTime.Add(-time.Minute * 15)) {
  1378. isSendMsg = true
  1379. }
  1380. } else {
  1381. if time.Now().After(resultTime.Add(-time.Minute * 60)) {
  1382. isSendMsg = true
  1383. }
  1384. }
  1385. if isSendMsg {
  1386. listEmail, err := models.GetAskEmail()
  1387. if err != nil {
  1388. br.Msg = "提交失败"
  1389. br.ErrMsg = "提交带问失败,Err:" + err.Error()
  1390. return
  1391. }
  1392. var sendMobile string
  1393. for _, v := range listEmail {
  1394. if strings.Index(activityInfo.Host, v.Name) > 0 {
  1395. sendMobile = v.Mobile
  1396. }
  1397. }
  1398. if activityInfo.ChartPermissionId == 31 {
  1399. sendMobile = utils.ActSendMsgMobile
  1400. }
  1401. //获取销售信息
  1402. sellerItem, err := models.GetSellerByCompanyIdCheckFicc(user.CompanyId, 2)
  1403. if err != nil && err.Error() != utils.ErrNoRow() {
  1404. br.Msg = "提交失败"
  1405. br.ErrMsg = "获取销售信息失败,Err:" + err.Error()
  1406. return
  1407. }
  1408. //给研究员发送消息
  1409. if sendMobile != "" {
  1410. openIpItem, _ := models.GetUserRecordByMobile(4, sendMobile)
  1411. if openIpItem != nil && openIpItem.OpenId != "" {
  1412. if sellerItem != nil {
  1413. //services.SendActivityAskApplyTemplateMsgV2(user.RealName+"——"+user.CompanyName, "所属销售:"+sellerItem.RealName, time.Now().Format(utils.FormatDateTime), req.Content, activityInfo.ActivityName, openIpItem, activityInfo)
  1414. }
  1415. }
  1416. }
  1417. // 给所属销售发送消息
  1418. if sellerItem != nil {
  1419. openIpItem, _ := models.GetUserRecordByMobile(4, sellerItem.Mobile)
  1420. if openIpItem != nil && openIpItem.OpenId != "" {
  1421. //services.SendActivityAskApplyTemplateMsgV2(user.RealName+"——"+user.CompanyName, "所属销售:"+sellerItem.RealName, time.Now().Format(utils.FormatDateTime), req.Content, activityInfo.ActivityName, openIpItem, activityInfo)
  1422. }
  1423. }
  1424. }
  1425. } else {
  1426. hasPermission, sellerName, sellerMobile, popupMsg, err := services.GetUserHasPermission(user)
  1427. if err != nil {
  1428. br.Msg = "获取信息失败"
  1429. br.ErrMsg = "判断是否已申请过试用失败,Err:" + err.Error()
  1430. return
  1431. }
  1432. popupMsg = "暂无查看权限"
  1433. resp.PopupMsg = popupMsg
  1434. resp.HasPermission = hasPermission
  1435. resp.SellerName = sellerName
  1436. resp.SellerMobile = sellerMobile
  1437. }
  1438. br.Ret = 200
  1439. br.Success = true
  1440. br.Data = resp
  1441. br.Msg = "提交成功"
  1442. }
  1443. // @Title 视频详情
  1444. // @Description 时间线接口
  1445. // @Param VideoId query int true "视频ID"
  1446. // @Success 200 {object} models.IndustryVideoDetailResp
  1447. // @router /detailVideo [get]
  1448. func (this *ActivityController) DetailVideo() {
  1449. br := new(models.BaseResponse).Init()
  1450. defer func() {
  1451. this.Data["json"] = br
  1452. this.ServeJSON()
  1453. }()
  1454. user := this.User
  1455. if user == nil {
  1456. br.Msg = "请重新登录"
  1457. br.Ret = 408
  1458. return
  1459. }
  1460. videoId, _ := this.GetInt("VideoId")
  1461. videoSimple, au, err := services.GetActivityVideoDetailById(user, videoId)
  1462. if err != nil {
  1463. br.Msg = "获取失败"
  1464. br.ErrMsg = "获取用户权限失败, Err: " + err.Error()
  1465. return
  1466. }
  1467. resp := new(models.ActivityVideoDetailResp)
  1468. resp.VideoDetail = videoSimple
  1469. resp.AuthInfo = au
  1470. br.Ret = 200
  1471. br.Success = true
  1472. br.Msg = "获取成功"
  1473. br.Data = resp
  1474. }
  1475. // @Title 活动、专项调研搜索
  1476. // @Description 活动、专项调研搜索接口
  1477. // @Param PageSize query int true "每页数据条数"
  1478. // @Param CurrentIndex query int true "当前页页码,从1开始"
  1479. // @Param KeyWord query string false "搜索关键词 多个用 , 隔开"
  1480. // @Param PlayBack query int false "是否仅展示回放 1:是、0:否 默认0"
  1481. // @Success 200 {object} models.GetCygxActivityListRep
  1482. // @router /listSearch [get]
  1483. func (this *ActivityController) ActivityListSearch() {
  1484. br := new(models.BaseResponse).Init()
  1485. defer func() {
  1486. this.Data["json"] = br
  1487. this.ServeJSON()
  1488. }()
  1489. user := this.User
  1490. if user == nil {
  1491. br.Msg = "请登录"
  1492. br.ErrMsg = "请登录,SysUser Is Empty"
  1493. return
  1494. }
  1495. pageSize, _ := this.GetInt("PageSize")
  1496. currentIndex, _ := this.GetInt("CurrentIndex")
  1497. source, _ := this.GetInt("Source")
  1498. keyWord := this.GetString("KeyWord")
  1499. playBack, _ := this.GetInt("PlayBack")
  1500. var startSize int
  1501. if pageSize <= 0 {
  1502. pageSize = utils.PageSize20
  1503. }
  1504. if currentIndex <= 0 {
  1505. currentIndex = 1
  1506. }
  1507. startSize = utils.StartIndex(currentIndex, pageSize)
  1508. var condition string
  1509. //活动可见限制
  1510. conditionActivity, err := services.GetActivityonditionList(user, "", "", "", "3", "", 0, 1, keyWord, playBack)
  1511. if err != nil && err.Error() != utils.ErrNoRow() {
  1512. br.Msg = "获取失败"
  1513. br.ErrMsg = "获取活动权限数据失败,Err:" + err.Error()
  1514. return
  1515. }
  1516. if source == 1 {
  1517. condition += ` AND art.yidong_activity_id = '' `
  1518. }
  1519. condition += ` AND art.is_limit_people = 1 AND art.publish_status = 1 ` + conditionActivity
  1520. list, total, err := services.GetActivitySpecialSearcheList(user, condition, startSize, pageSize, keyWord, playBack)
  1521. if err != nil {
  1522. br.Msg = "获取失败"
  1523. br.ErrMsg = "获取失败,Err:" + err.Error()
  1524. return
  1525. }
  1526. page := paging.GetPaging(currentIndex, pageSize, total)
  1527. resp := new(models.GetCygxActivityListSearchResp)
  1528. //添加活动搜索记录
  1529. if keyWord != "" {
  1530. //go services.AddActivitykeyWordSearch(keyWord, user)
  1531. }
  1532. resp.Paging = page
  1533. resp.List = list
  1534. br.Ret = 200
  1535. br.Success = true
  1536. br.Msg = "获取成功"
  1537. br.Data = resp
  1538. }