activity.go 37 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049
  1. package services
  2. import (
  3. "errors"
  4. "fmt"
  5. "hongze/hongze_clpt/models"
  6. "hongze/hongze_clpt/utils"
  7. "strconv"
  8. "strings"
  9. "time"
  10. "unicode/utf8"
  11. )
  12. // 获取活动列表查询权限的SQL
  13. // @Param ChartPermissionIds query string false "行业id 多个用 , 隔开"
  14. // @Param ActivityTypeIds query string false "活动类型id 多个用 , 隔开"
  15. // @Param ActiveState query string false "活动进行状态 未开始:1、进行中2、已结束3"
  16. // @Param WhichDay query string false "哪一天 今天:1、明天:2,多个用 , 隔开"
  17. // @Param WhichTime query string false "已结束的时间筛选项 本周:1、上周:2 、本月:3、上月:4"
  18. // @Param Label query string false "搜索主题 多个用 , 隔开"
  19. // @Param PlayBack query int false "是否仅展示回放 1:是、0:否 默认0"
  20. // @Param KeyWord query string false "搜索关键词"
  21. // @Param ikType query int false "联想词类型 , 1不做联想,2,做除初始词的联想,3所有联想"
  22. func GetActivityonditionList(user *models.WxUserItem, activityTypeId, chartPermissionIds, whichDay, activeState, label string, isPower, source int, keyWord string, playBack, ikType int) (conditionActivity string, err error) {
  23. keyWordNoIk := keyWord
  24. adminIds, err := models.GetSelleridWhichGroup(user.CompanyId, 2)
  25. if err != nil {
  26. return
  27. }
  28. userType, permissionStr, err := GetUserType(user.CompanyId)
  29. if err != nil {
  30. return
  31. }
  32. //判断客户规模是否属于可见范围的活动
  33. companyProduct, err := models.GetCompanyProductDetail(user.CompanyId, 2)
  34. if err != nil && err.Error() != utils.ErrNoRow() {
  35. return
  36. }
  37. isMaker := user.IsMaker
  38. slicePer := strings.Split(permissionStr, ",")
  39. var permissionSqlStr string
  40. var permissionNameStr string
  41. for _, v := range slicePer {
  42. if userType == 1 {
  43. //研选权限处理
  44. if !strings.Contains(v, utils.CHART_PERMISSION_NAME_YANXUAN) {
  45. permissionNameStr += "'" + v + "',"
  46. }
  47. } else {
  48. permissionNameStr += "'" + v + "',"
  49. }
  50. }
  51. permissionNameStr = strings.Replace(permissionNameStr, "(主观)", "", -1)
  52. permissionNameStr = strings.Replace(permissionNameStr, "(客观)", "", -1)
  53. permissionNameStr = strings.TrimRight(permissionNameStr, ",")
  54. mapUserType, e := GetActivityCcustomerTypeList()
  55. if e != nil {
  56. err = e
  57. return
  58. }
  59. var userTypeStr string
  60. userTypeStr = mapUserType[userType]
  61. // 查研观向7.4-始终查询宏观的权限(无论是否有权限)
  62. if permissionNameStr == `` {
  63. permissionNameStr = `'宏观'`
  64. } else {
  65. permissionNameStr += `, '宏观'`
  66. }
  67. var condition string
  68. var conditionAdmin string
  69. var conditionHz string // 弘则权限处理
  70. var sqlExport string // 专家权限处理
  71. //permissionSqlStr = ` AND art.chart_permission_name IN (` + permissionNameStr + `)`
  72. sqlExport = ` AND (art.customer_type_ids LIKE '%` + userTypeStr + `%' `
  73. //if userType == 2 {
  74. // sqlExport += ` OR art.customer_type_ids LIKE '%3%' `
  75. //}
  76. if (userType == 2 || userType == 3) && strings.Contains(permissionStr, "专家") {
  77. sqlExport += ` OR art.customer_type_ids LIKE '%4%' `
  78. }
  79. sqlExport += `) `
  80. // 如果是C类电话会就不展示内容,且合并到分析师电话会
  81. if activityTypeId != "" {
  82. if activityTypeId == strconv.Itoa(utils.ANALYST_TELL_ACTIVITY_TYPE_ID) {
  83. condition = ` AND art.publish_status = 1 AND art.label != '' AND art.activity_type_id IN (` + activityTypeId + "," + strconv.Itoa(utils.C_CLASS_ACTIVITY_TYPE_ID) + `)`
  84. } else {
  85. condition = ` AND art.publish_status = 1 AND art.label != '' AND art.activity_type_id IN (` + activityTypeId + `)`
  86. }
  87. }
  88. //主题
  89. if label != "" {
  90. condition = ` AND art.label LIKE '%` + label + `%' `
  91. }
  92. if isPower == 1 {
  93. condition += permissionSqlStr
  94. }
  95. //行业名称
  96. if len(chartPermissionIds) > 0 {
  97. condition += ` AND art.chart_permission_id IN (` + chartPermissionIds + `)`
  98. }
  99. //如果是PC的,则不看易董的
  100. if source == 1 {
  101. condition += ` AND art.yidong_activity_id = '' `
  102. }
  103. var conditionOr string
  104. if whichDay != "" {
  105. var startDate string
  106. var endDate string
  107. if whichDay == "1" {
  108. startDate = time.Now().Format(utils.FormatDate)
  109. endDate = startDate
  110. } else if whichDay == "2" {
  111. startDate = time.Now().AddDate(0, 0, +1).Format(utils.FormatDate)
  112. endDate = startDate
  113. } else if whichDay == "3" {
  114. startDate = utils.GetNowWeekMonday().Format(utils.FormatDate)
  115. endDate = utils.GetNowWeekSunday().Format(utils.FormatDate)
  116. } else if whichDay == "4" {
  117. startDate = utils.GetLastWeekMonday().Format(utils.FormatDate)
  118. endDate = utils.GetLastWeekSunday().Format(utils.FormatDate)
  119. } else if whichDay == "5" {
  120. startDate = utils.GetNowMonthFirstDay().Format(utils.FormatDate)
  121. endDate = utils.GetNowMonthLastDay().Format(utils.FormatDate)
  122. } else if whichDay == "6" {
  123. startDate = utils.GetLastMonthFirstDay().Format(utils.FormatDate)
  124. endDate = utils.GetLastMonthLastDay().Format(utils.FormatDate)
  125. } else if whichDay == "1,2" {
  126. startDate = time.Now().Format(utils.FormatDate)
  127. endDate = time.Now().AddDate(0, 0, +1).Format(utils.FormatDate)
  128. } else if whichDay == "3,4" {
  129. startDate = utils.GetLastWeekMonday().Format(utils.FormatDate)
  130. endDate = utils.GetNowWeekSunday().Format(utils.FormatDate)
  131. } else if whichDay == "5,6" {
  132. startDate = utils.GetLastMonthFirstDay().Format(utils.FormatDate)
  133. endDate = utils.GetNowMonthLastDay().Format(utils.FormatDate)
  134. } else {
  135. startDate = time.Now().Format(utils.FormatDate)
  136. endDate = time.Now().AddDate(0, 0, +1).Format(utils.FormatDate)
  137. }
  138. condition += ` AND art.activity_time >= ` + "'" + startDate + " 00:00:00'"
  139. condition += ` AND art.activity_time <= ` + "'" + endDate + " 23:59:59'"
  140. }
  141. //有搜索条件传过来时,不判进行状态条件
  142. if keyWord != "" {
  143. if ikType == 2 || ikType == 3 {
  144. keyWordArr, e := GetIndustryMapNameSliceV3(keyWord)
  145. if e != nil {
  146. err = errors.New("获取分词失败,GetIndustryMapNameSliceV3, Err: " + keyWord + e.Error())
  147. return
  148. }
  149. keyWordArr = RemoveDuplicatesAndEmpty(keyWordArr)
  150. //var keywords string
  151. if len(keyWordArr) > 1 {
  152. if ikType == 2 {
  153. keyWord = KeyWordArrSqlRegexp(keyWordArr)
  154. condition += ` AND (art.label NOT LIKE '%` + keyWordNoIk + `%' AND art.activity_name NOT LIKE '%` + keyWordNoIk + `%' ) `
  155. } else if ikType == 3 {
  156. keyWord = KeyWordArrSqlRegexpAll(keyWordArr)
  157. }
  158. }
  159. }
  160. condition += ` AND (art.label REGEXP '` + keyWord + `' OR art.activity_name REGEXP '` + keyWord + `' ) `
  161. } else {
  162. if activeState != "" {
  163. // 默认查看未开始跟进行中
  164. if activeState == "1" {
  165. condition += ` AND art.active_state IN (1,2)`
  166. } else {
  167. condition += ` AND art.active_state IN (` + activeState + `)`
  168. }
  169. } else {
  170. condition += ` AND art.active_state IN (1,2)`
  171. }
  172. }
  173. if playBack == 1 {
  174. var pars []interface{}
  175. ativityVIdArry := make([]string, 0)
  176. voiceList, e := models.GetActivityVoiceListAll("", pars, 0, 1000)
  177. if e != nil && e.Error() != utils.ErrNoRow() {
  178. err = e
  179. return
  180. }
  181. for _, v := range voiceList {
  182. ativityVIdArry = append(ativityVIdArry, strconv.Itoa(v.ActivityId))
  183. }
  184. videoList, e := models.GetActivityVideoListAll("", pars, 0, 1000)
  185. if e != nil && e.Error() != utils.ErrNoRow() {
  186. err = e
  187. return
  188. }
  189. for _, v := range videoList {
  190. ativityVIdArry = append(ativityVIdArry, strconv.Itoa(v.ActivityId))
  191. }
  192. //活动音频,设置有效时间为30天,失效后该活动就不再支持音频回放。有效期起始时间为活动的开始时间
  193. //endTime := time.Now().AddDate(0, 0, -30).Format("2006-01-02 15:04:05")
  194. //condition += ` AND art.activity_time > '` + endTime + `' `
  195. if len(ativityVIdArry) > 0 {
  196. ativityVIdstr := strings.Join(ativityVIdArry, ",")
  197. condition += ` AND art.activity_id IN (` + ativityVIdstr + `) `
  198. } else {
  199. condition += ` AND art.activity_id = 0 `
  200. }
  201. }
  202. //查询全部可见的数据(是否全部客户可见)
  203. //condition += ` AND art.visible_range != 1 AND art.publish_status = 1 `
  204. condition += ` AND art.publish_status = 1 `
  205. //if adminIds == "" {
  206. // //condition += ` AND art.visible_range != 1 `
  207. //} else {
  208. // condition += ` AND ( art.visible_range != 1 OR ( art.admin_id IN ( ` + adminIds + ` ) AND art.visible_range = 1 )) `
  209. //}
  210. condition += ` AND ( art.visible_range != 1 OR ( art.admin_id IN ( ` + adminIds + ` ) AND art.visible_range = 1 )) `
  211. conditionHz = condition
  212. //活动仅决策人可见
  213. if isMaker == 0 {
  214. condition += ` AND art.is_maker_show = 0 `
  215. }
  216. conditionAdmin = condition + ` AND art.visible_range = 1 `
  217. //condition += ` AND art.visible_range != 1 `
  218. if (userType == 2 || userType == 3 || userType == 4) && strings.Contains(permissionStr, "专家") {
  219. conditionOr += ` OR ( art.is_limit_people = 1 AND art.customer_type_ids LIKE '%4%' ` + condition + `) `
  220. }
  221. if (userType == 5) && strings.Contains(permissionStr, "专家") {
  222. conditionOr += ` OR ( art.is_limit_people = 1 AND art.customer_type_ids LIKE '%5%' ` + condition + `) `
  223. }
  224. if userType == 1 {
  225. conditionOr += ` OR ( art.is_limit_people = 0 ` + condition + permissionSqlStr + `) `
  226. } else {
  227. conditionOr += ` OR ( art.is_limit_people = 0 ` + condition + `) `
  228. }
  229. if userType == 6 || userType == 7 {
  230. conditionOr += ` OR ( art.customer_type_ids LIKE '%` + strconv.Itoa(userType) + `%' ` + condition + `) `
  231. }
  232. if companyProduct != nil {
  233. if companyProduct.Scale != "" {
  234. conditionOr += ` OR ( art.scale LIKE '%` + companyProduct.Scale + `%' ` + condition + `) `
  235. }
  236. }
  237. if adminIds != "" {
  238. if userType == 3 {
  239. conditionAdmin += ` AND art.chart_permission_name IN (` + permissionNameStr + `) `
  240. }
  241. conditionOr += ` OR ( art.customer_type_ids LIKE '%` + userTypeStr + `%' ` + ` AND art.admin_id IN (` + adminIds + `) ` + conditionAdmin + `) `
  242. if companyProduct != nil {
  243. if companyProduct.Scale != "" {
  244. conditionOr += ` OR ( art.scale LIKE '%` + companyProduct.Scale + `%'` + ` AND art.admin_id IN (` + adminIds + `) ` + conditionAdmin + `) `
  245. }
  246. }
  247. }
  248. conditionShengji, conditionZhengshi, conditionHangYe, e := ActivityLabelSpecialUserSql(user)
  249. if e != nil {
  250. err = errors.New("ActivityLabelSpecialUserSql, Err: " + e.Error())
  251. return
  252. }
  253. if conditionShengji != "" {
  254. conditionOr += ` OR ( art.is_limit_people = 1 AND ` + conditionShengji + condition + ` ) `
  255. }
  256. if conditionZhengshi != "" {
  257. conditionOr += ` OR ( art.is_limit_people = 1 AND ` + conditionZhengshi + condition + ` ) `
  258. }
  259. if conditionHangYe != "" {
  260. conditionOr += ` OR ( art.is_limit_people = 1 AND ` + conditionHangYe + condition + ` ) `
  261. }
  262. //弘则研究下的客户不做权限,限制,C类电话会,仅本组销售、部门管理员、admin、权益研究员账号能看到
  263. if user.CompanyId == utils.HZ_COMPANY_ID {
  264. mapMobile, e := GetAdminMobileMap()
  265. if e != nil {
  266. err = e
  267. return
  268. }
  269. if _, ok := mapMobile[user.Mobile]; ok {
  270. conditionOr += ` OR ( art.publish_status = 1 ` + conditionHz + `) `
  271. }
  272. }
  273. if userType == 3 {
  274. condition += ` AND art.chart_permission_name IN (` + permissionNameStr + `) `
  275. }
  276. conditionActivity = condition + permissionSqlStr + sqlExport + conditionOr
  277. return
  278. }
  279. // 获取可见的活动
  280. func HandleActivityPowerList(listActivity []*models.CygxActivity, user *models.WxUserItem) (items []*models.CygxActivity, err error) {
  281. return
  282. }
  283. // 5.3版本活动标签字符串处理
  284. func LabelStr(label string, isShowSubjectName int, temporaryLabel string) (labelNew string) {
  285. slicebr := strings.Split(label, "-")
  286. if len(slicebr) > 1 {
  287. if isShowSubjectName == 1 {
  288. labelNew = slicebr[1]
  289. } else {
  290. labelNew = slicebr[0]
  291. }
  292. } else {
  293. labelNew = label
  294. }
  295. if temporaryLabel != "" {
  296. labelNew = temporaryLabel
  297. }
  298. return labelNew
  299. }
  300. // 列表
  301. func HandleActivityTypeHomeList(listType []*models.ActivityTypeHome, listActivity []*models.CygxActivity, user *models.WxUserItem) (items []*models.ActivityTypeHome, err error) {
  302. mapActivity := make(map[int][]*models.CygxActivityLabelList)
  303. activityIds := make([]int, 0) // 用于查询活动【新】标签Map
  304. for _, v := range listActivity {
  305. // 如果是C类电话会就不展示内容,且合并到分析师电话会
  306. if v.ActivityTypeId == 7 {
  307. v.ActivityTypeId = 2
  308. }
  309. if v.ActivityTypeId == 1 {
  310. activityIds = append(activityIds, v.ActivityId)
  311. }
  312. }
  313. // 活动【新】标签Map
  314. newLabelMap, _, e := GetActivityNewLabelMap(activityIds)
  315. if e != nil {
  316. err = errors.New("获取产业新标签Map失败,GetActivityNewLabelMap Err: " + e.Error())
  317. return
  318. }
  319. mapkeyWord := make(map[string]string)
  320. for _, v := range listActivity {
  321. if v.Label == "" {
  322. continue
  323. }
  324. // 如果是C类电话会就不展示内容,且合并到分析师电话会
  325. if v.ActivityTypeId == 7 {
  326. v.ActivityTypeId = 2
  327. }
  328. item := new(models.CygxActivityLabelList)
  329. item.KeyWord = LabelStr(v.Label, v.IsShowSubjectName, v.TemporaryLabel)
  330. if _, ok := mapkeyWord[fmt.Sprint(v.ActivityTypeId, "-", item.KeyWord)]; ok {
  331. continue
  332. }
  333. item.Resource = 1
  334. item.ActivityId = v.ActivityId
  335. if v.YidongActivityId != "" {
  336. item.IsExternalLabel = true
  337. }
  338. item.City = v.City
  339. if utf8.RuneCountInString(v.City) != 2 {
  340. item.City = ""
  341. }
  342. item.IsNew = newLabelMap[v.ActivityId]
  343. mapActivity[v.ActivityTypeId] = append(mapActivity[v.ActivityTypeId], item)
  344. mapkeyWord[fmt.Sprint(v.ActivityTypeId, "-", item.KeyWord)] = item.KeyWord
  345. }
  346. for _, v := range listType {
  347. v.Resource = 1
  348. if len(mapActivity[v.ActivityTypeId]) > 0 {
  349. v.List = mapActivity[v.ActivityTypeId]
  350. } else {
  351. v.List = make([]*models.CygxActivityLabelList, 0)
  352. }
  353. }
  354. items = listType
  355. return
  356. }
  357. // GetActivityVoiceResp 处理活动音频回放
  358. func GetActivityVoiceResp(mapActivityId []int) (mapItem map[int]*models.CygxActivityVoiceReq, err error) {
  359. activityVoiceList, err := models.GetCygxActivityVoiceReqList(mapActivityId)
  360. if err != nil && err.Error() != utils.ErrNoRow() {
  361. return
  362. }
  363. mapActivityVoice := make(map[int]*models.CygxActivityVoiceReq)
  364. if len(activityVoiceList) > 0 {
  365. for _, v := range activityVoiceList {
  366. mapActivityVoice[v.ActivityId] = v
  367. }
  368. }
  369. mapItem = mapActivityVoice
  370. return
  371. }
  372. // GetActivityVideoResp 处理活动视频频回放
  373. func GetActivityVideoResp(mapActivityId []int) (mapItem map[int]*models.CygxActivityVideoListResp, err error) {
  374. var condition string
  375. var ativityVIdstr string
  376. for _, v := range mapActivityId {
  377. ativityVIdstr += strconv.Itoa(v) + ","
  378. }
  379. if ativityVIdstr == "" {
  380. return
  381. }
  382. ativityVIdstr = strings.TrimRight(ativityVIdstr, ",")
  383. condition += ` AND art.activity_id IN (` + ativityVIdstr + `) `
  384. var pars []interface{}
  385. //endTime := time.Now().AddDate(0, 0, -30).Format("2006-01-02 15:04:05")
  386. //condition += ` AND art.activity_time > ? `
  387. //pars = append(pars, endTime)
  388. videoList, e := models.GetActivityVideoListAll(condition, pars, 0, 1000)
  389. if e != nil && e.Error() != utils.ErrNoRow() {
  390. err = e
  391. return
  392. }
  393. mapActivityVideo := make(map[int]*models.CygxActivityVideoListResp)
  394. if len(videoList) > 0 {
  395. for _, v := range videoList {
  396. mapActivityVideo[v.ActivityId] = v
  397. }
  398. }
  399. mapItem = mapActivityVideo
  400. return
  401. }
  402. func ActivityButtonShow(item *models.ActivityDetail, user *models.WxUserItem) (itemActivity *models.ActivityListResp) {
  403. articleDetail := item
  404. //IsShowAppointment bool `description:"是否展示预约纪要"`
  405. //IsShowOutboundCall bool `description:"是否展示预约外呼"`
  406. //IsShowMeetingReminder bool `description:"是否展示会议提醒"`
  407. //IsShowHelpSsk bool `description:"是否展示帮我带问"`
  408. //IsShowSignup bool `description:"是否展示我要报名"`
  409. activityTimeText := articleDetail.ActivityTimeText
  410. activityTimeText = strings.Replace(activityTimeText, "(", "(", -1)
  411. activityTimeText = strings.Replace(activityTimeText, ")", ")", -1)
  412. articleDetail.ActivityTimeText = activityTimeText
  413. var yidongActivityUrl string
  414. articleDetail.IsShowAppointment = false
  415. //易董的操作按钮都隐藏
  416. if articleDetail.YidongActivityId != "" {
  417. articleDetail.IsShowSignup = false
  418. articleDetail.IsShowDetails = true
  419. if articleDetail.YidongActivityId != "" {
  420. ydTgc, _ := GetYiDongCreateUserInfo(user)
  421. yidongLongLink, _ := GetYiDongOriginalLink(articleDetail)
  422. if yidongLongLink != "" {
  423. yidongActivityUrl = yidongLongLink + "%26source=11%26fromHz=true%26tgc=" + ydTgc
  424. }
  425. }
  426. } else {
  427. //专家电话会 1
  428. if articleDetail.ActivityTypeId == 1 && articleDetail.IsLimitPeople == 0 && (articleDetail.ActiveState == "1" || articleDetail.ActiveState == "2") {
  429. articleDetail.IsShowHelpSsk = true
  430. }
  431. if articleDetail.ActiveState == "1" {
  432. //新的是否展示规则
  433. if articleDetail.IsCanAppointmentMinutes == 1 {
  434. articleDetail.IsShowAppointment = true
  435. }
  436. //专家电话会 1
  437. if articleDetail.ActivityTypeId == 1 {
  438. if articleDetail.LimitPeopleNum == 0 {
  439. articleDetail.IsShowOutboundCall = true
  440. } else {
  441. articleDetail.IsShowSignup = true
  442. }
  443. articleDetail.IsShowMeetingReminder = true
  444. articleDetail.IsShowHelpSsk = true
  445. }
  446. //分析师电话会 2
  447. if articleDetail.ActivityTypeId == 2 {
  448. if articleDetail.LimitPeopleNum == 0 {
  449. articleDetail.IsShowOutboundCall = true
  450. } else {
  451. articleDetail.IsShowSignup = true
  452. }
  453. articleDetail.IsShowMeetingReminder = true
  454. }
  455. //公司调研电话会 3
  456. if articleDetail.ActivityTypeId == 3 {
  457. if articleDetail.LimitPeopleNum == 0 {
  458. articleDetail.IsShowMeetingReminder = true
  459. articleDetail.IsShowOutboundCall = true
  460. } else {
  461. articleDetail.IsShowSignup = true
  462. }
  463. }
  464. //公司线下调研 4
  465. if articleDetail.ActivityTypeId == 4 {
  466. articleDetail.IsShowSignup = true
  467. }
  468. //专家线下沙龙 5
  469. if articleDetail.ActivityTypeId == 5 {
  470. articleDetail.IsShowSignup = true
  471. }
  472. //分析师线下沙龙 6
  473. if articleDetail.ActivityTypeId == 6 {
  474. articleDetail.IsShowSignup = true
  475. }
  476. //分析师电话会(C类) 7
  477. if articleDetail.ActivityTypeId == 7 {
  478. articleDetail.IsShowSignup = true
  479. articleDetail.IsShowMeetingReminder = true
  480. }
  481. }
  482. }
  483. authInfo, permissionArr, e := GetUserRaiPermissionInfo(user.UserId, user.CompanyId)
  484. if e != nil {
  485. e = errors.New("获取用户权限失败, Err: " + e.Error())
  486. return
  487. }
  488. v := articleDetail
  489. itemActivity = &models.ActivityListResp{
  490. ActivityId: v.ActivityId,
  491. ActivityTypeId: v.ActivityTypeId,
  492. ActivityTypeName: v.ActivityTypeName,
  493. ChartPermissionId: v.ChartPermissionId,
  494. ChartPermissionName: v.ChartPermissionName,
  495. IsLimitPeople: v.IsLimitPeople,
  496. LimitPeopleNum: v.LimitPeopleNum,
  497. LastUpdatedTime: v.LastUpdatedTime,
  498. ActivityTime: v.ActivityTime,
  499. ActivityTimeText: v.ActivityTimeText,
  500. DistinguishedGuest: v.DistinguishedGuest,
  501. Host: v.Host,
  502. Speaker: v.Speaker,
  503. MainlandTell: v.MainlandTell,
  504. HongKongTell: v.HongKongTell,
  505. TaiwanTell: v.TaiwanTell,
  506. AmericaTell: v.AmericaTell,
  507. ParticipationCode: v.ParticipationCode,
  508. Theme: v.Theme,
  509. Expert: v.Expert,
  510. ActivityName: v.ActivityName,
  511. OnlineParticipation: v.OnlineParticipation,
  512. ReportLink: v.ReportLink,
  513. City: v.City,
  514. Address: v.Address,
  515. Highlights: v.Highlights,
  516. Remarks: v.Remarks,
  517. IsSignup: v.IsSignup,
  518. IsCancelMeetingReminder: v.IsCancelMeetingReminder,
  519. IsAppointment: v.IsAppointment,
  520. ActiveState: v.ActiveState,
  521. IsShowSustainable: v.IsShowSustainable,
  522. Description: v.Description,
  523. IsResearch: v.IsResearch,
  524. IsHideAppointment: v.IsHideAppointment,
  525. IsCClassMeeting: v.IsCClassMeeting,
  526. Label: v.Label,
  527. ImgUrl: v.ImgUrl,
  528. ImgUrlText: v.ImgUrlText,
  529. ActivityType: v.ActivityType,
  530. IsShowOutboundCall: v.IsShowOutboundCall,
  531. IsShowMeetingReminder: v.IsShowMeetingReminder,
  532. IsShowHelpSsk: v.IsShowHelpSsk,
  533. IsShowSignup: v.IsShowSignup,
  534. IsShowAppointment: v.IsShowAppointment,
  535. IsShowDetails: v.IsShowDetails,
  536. AudioLink: v.AudioLink,
  537. VoiceDetail: v.VoiceList,
  538. VideoDetail: v.VideoDetail,
  539. FileType: v.FileType,
  540. SourceType: v.SourceType,
  541. SignupNum: v.SignupNum,
  542. YidongActivityUrl: yidongActivityUrl,
  543. Explain: utils.ACtIVITY_SPECIAL_EXPLAIN,
  544. TripImgLink: v.TripImgLink,
  545. Days: v.Days,
  546. SignupType: v.SignupType,
  547. }
  548. au := new(models.UserPermissionAuthInfo)
  549. au.SellerName = authInfo.SellerName
  550. au.SellerMobile = authInfo.SellerMobile
  551. au.HasPermission = authInfo.HasPermission
  552. au.OperationMode = authInfo.OperationMode
  553. if au.HasPermission == 1 {
  554. // 非宏观权限进一步判断是否有权限
  555. if v.ChartPermissionId != utils.HONG_GUAN_ID && !utils.InArrayByStr(permissionArr, v.ChartPermissionName) {
  556. au.HasPermission = 2
  557. }
  558. }
  559. // 无权限的弹框提示
  560. if au.HasPermission != 1 {
  561. if au.OperationMode == UserPermissionOperationModeCall {
  562. if v.FileType == 1 {
  563. au.PopupMsg = UserPermissionPopupMsgCallMicroVoice
  564. } else {
  565. au.PopupMsg = UserPermissionPopupMsgCallMicroVideo
  566. }
  567. } else {
  568. if v.FileType == 1 {
  569. au.PopupMsg = UserPermissionPopupMsgApplyMicroVoice
  570. } else {
  571. au.PopupMsg = UserPermissionPopupMsgApplyMicroVideo
  572. }
  573. }
  574. }
  575. itemActivity.AuthInfo = au
  576. //处理用户已经报名了的行程
  577. var activityIds []int
  578. activityIds = append(activityIds, v.ActivityId)
  579. UserMap, e := GetSpecialTripUserMap(activityIds, user.UserId)
  580. if e != nil {
  581. e = errors.New("GetSpecialTripUserMap, Err: " + e.Error())
  582. return
  583. }
  584. if _, ok := UserMap[v.ActivityId]; ok {
  585. itemActivity.IsTrip = 1
  586. }
  587. if itemActivity.Days == 0 {
  588. itemActivity.TripStatus = 1
  589. //activityDetail.Explain = utils.ACtIVITY_SPECIAL_EXPLAIN
  590. } else {
  591. itemActivity.TripStatus = 2
  592. //itemActivity.TripImgLink = itemActivity.TripImgLinkFix
  593. //activityDetail.Explain = utils.ACtIVITY_SPECIAL_TRIP_EXPLAIN
  594. }
  595. return
  596. }
  597. func ActivityDetaailShow(activityInfo *models.ActivityListResp) (itemActivity *models.ActivityListResp, err error) {
  598. itemActivity = activityInfo
  599. if GetShowSustainable() && strings.Contains(itemActivity.ChartPermissionName, "研选") {
  600. itemActivity.IsShowSustainable = true
  601. }
  602. if activityInfo.SignupNum > activityInfo.LimitPeopleNum {
  603. activityInfo.SignupNum = activityInfo.LimitPeopleNum
  604. }
  605. //if activityInfo.ReportLink != "" {
  606. // artList := strings.Split(activityInfo.ReportLink, "{|}")
  607. // if len(artList) > 0 {
  608. // for _, v := range artList {
  609. // artitem := new(models.ActivityArticleResp)
  610. // artitem.ReportLink = v
  611. // artIdSlice := strings.Split(v, "/")
  612. // if len(artIdSlice) > 0 {
  613. // articleId, _ := strconv.Atoi(artIdSlice[len(artIdSlice)-1])
  614. // artitem.ArticleId = articleId
  615. // }
  616. // activityInfo.ArticleList = append(activityInfo.ArticleList, artitem)
  617. // }
  618. // }
  619. //} else {
  620. // activityInfo.ArticleList = make([]*models.ActivityArticleResp, 0)
  621. //}
  622. if activityInfo.ReportLink != "" {
  623. artList, e := GetActivityReportLinkToArticleList(activityInfo)
  624. if e != nil && e.Error() != utils.ErrNoRow() {
  625. err = e
  626. return
  627. }
  628. if len(artList) == 0 {
  629. activityInfo.ArticleList = make([]*models.ActivityArticleResp, 0)
  630. } else {
  631. activityInfo.ArticleList = artList
  632. }
  633. } else {
  634. activityInfo.ArticleList = make([]*models.ActivityArticleResp, 0)
  635. }
  636. activityInfo.ActivityTypeName = strings.Replace(activityInfo.ActivityTypeName, "(C类)", "", -1)
  637. return
  638. }
  639. // GetActivityNewLabelMap 获取活动【新】标签Map
  640. func GetActivityNewLabelMap(activityIds []int) (labelMap map[int]bool, industryNewMap map[int]bool, err error) {
  641. labelMap = make(map[int]bool, 0)
  642. industryNewMap = make(map[int]bool, 0)
  643. if len(activityIds) == 0 {
  644. return
  645. }
  646. // 获取活动关联的产业
  647. var groupCond string
  648. var groupPars []interface{}
  649. groupCond += ` AND a.activity_id IN (` + utils.GetOrmInReplace(len(activityIds)) + `) AND b.source = 1 AND a.active_state != 3 `
  650. groupPars = append(groupPars, activityIds)
  651. groups, e := models.GetActivityIndustryRelationList(groupCond, groupPars)
  652. if e != nil {
  653. err = errors.New("获取活动产业关联列表失败, Err: " + e.Error())
  654. return
  655. }
  656. activityIndustryMap := make(map[int][]int, 0)
  657. industryIds := make([]int, 0)
  658. for i := range groups {
  659. industryIds = append(industryIds, groups[i].IndustrialManagementId)
  660. activityIndustryMap[groups[i].ActivityId] = append(activityIndustryMap[groups[i].ActivityId], groups[i].IndustrialManagementId)
  661. }
  662. // 获取新产业Map
  663. industryLabelMap, e := GetIndustryNewLabelMap(industryIds)
  664. if e != nil {
  665. err = errors.New("获取产业新标签Map失败, Err: " + e.Error())
  666. return
  667. }
  668. // 判断活动是否为新
  669. for k := range industryLabelMap {
  670. for k2, v2 := range activityIndustryMap {
  671. if labelMap[k2] {
  672. continue
  673. }
  674. // 活动的产业ID中存在一个新产业即为新活动
  675. if utils.InArrayByInt(v2, k) {
  676. labelMap[k2] = true
  677. }
  678. }
  679. }
  680. //for _, v := range activityIds {
  681. // labelMap[v] = true
  682. //}
  683. //fmt.Println(labelMap)
  684. ////产业关联的弘则报告发布日期在三个月以内的活动、产业显示 NEW标签
  685. articNewLabel, e := GetArticNewLabelWhithActivity3Month()
  686. if e != nil {
  687. err = errors.New("获取产业新标签Map失败, Err: " + e.Error())
  688. return
  689. }
  690. for k := range articNewLabel {
  691. labelMap[k] = false
  692. }
  693. return
  694. }
  695. // GetIndustryNewLabelMap 获取产业【新】标签Map
  696. func GetIndustryNewLabelMap(industryIds []int) (labelMap map[int]bool, err error) {
  697. labelMap = make(map[int]bool, 0)
  698. industryIdLen := len(industryIds)
  699. if industryIdLen == 0 {
  700. return
  701. }
  702. // 获取产业关联的报告最早发布时间及最近的发布时间
  703. var timeCond string
  704. var timePars []interface{}
  705. timeCond += ` AND b.publish_status = 1`
  706. if industryIdLen > 0 {
  707. timeCond += ` AND a.industrial_management_id IN (` + utils.GetOrmInReplace(industryIdLen) + `)`
  708. timePars = append(timePars, industryIds)
  709. }
  710. industryTimeList, e := models.GetIndustryArticleMinMaxPublishTime(timeCond, timePars)
  711. if e != nil {
  712. err = errors.New("获取产业文章最大最小发布时间失败, Err: " + e.Error())
  713. return
  714. }
  715. // 判断产业是否为新
  716. nowTime := time.Now().Local()
  717. threeMonthBefore := nowTime.AddDate(0, -3, 0)
  718. nullTime, _ := time.ParseInLocation(utils.FormatDateTime, "0001-01-01 00:00:00", time.Local)
  719. industryMap := make(map[int]*models.IndustryArticleMinMaxPublishTime, 0)
  720. for i := range industryTimeList {
  721. industryMap[industryTimeList[i].IndustrialManagementId] = industryTimeList[i]
  722. }
  723. for i := range industryIds {
  724. iid := industryIds[i]
  725. item := industryMap[iid]
  726. if item != nil {
  727. // 最早发布时间为空 / 最早发布时间在三个月前之后
  728. if item.MinPublishTime.Equal(nullTime) || (item.MinPublishTime.After(threeMonthBefore)) {
  729. labelMap[iid] = true
  730. }
  731. } else {
  732. // 产业无报告, 则为新产业
  733. labelMap[iid] = true
  734. }
  735. }
  736. return
  737. }
  738. // GetSpecialDetailUserPower 处理用户查看详情的权限
  739. func GetActivityDetailUserPower(user *models.WxUserItem, activityInfo *models.ActivityDetail) (havePower bool, err error) {
  740. var companyDetailStatus string
  741. var userTypeStr string
  742. if user.CompanyId == utils.HZ_COMPANY_ID {
  743. havePower = true
  744. return
  745. }
  746. userType, permissionStr, e := GetUserType(user.CompanyId)
  747. if e != nil {
  748. err = errors.New("GetCompanyPermissionUpgrade, Err: " + e.Error())
  749. return
  750. }
  751. if activityInfo.LimitPeopleNum > 0 {
  752. mapUserType, e := GetActivityCcustomerTypeList()
  753. if e != nil {
  754. err = e
  755. return
  756. }
  757. userTypeStr = mapUserType[userType]
  758. // 永续客户、大套餐客户、30W套餐客户可以查看行业升级套餐客户 权限
  759. if userTypeStr == "1" || userTypeStr == "2" || userTypeStr == "AA" {
  760. if strings.Contains(activityInfo.CustomerTypeIds, userTypeStr) && strings.Contains(activityInfo.CustomerTypeIds, "8") {
  761. havePower = true
  762. //return
  763. }
  764. }
  765. }
  766. //判断管理规模是否满足
  767. companyProduct, e := models.GetCompanyProductDetail(user.CompanyId, 2)
  768. if e != nil {
  769. err = e
  770. return
  771. }
  772. if companyProduct != nil && activityInfo.Scale != "" {
  773. if strings.Contains(activityInfo.Scale, companyProduct.Scale) {
  774. havePower = true
  775. }
  776. }
  777. if user.CompanyId <= 1 {
  778. return
  779. } else {
  780. if permissionStr == "" {
  781. return
  782. } else {
  783. companyDetail, e := models.GetCompanyDetailById(user.CompanyId)
  784. if e != nil {
  785. err = errors.New("GetCompanyPermissionUpgrade, Err: " + e.Error())
  786. return
  787. }
  788. if companyDetail == nil {
  789. err = errors.New("客户不存在,uid:" + strconv.Itoa(user.UserId) + "CompanyId:" + strconv.Itoa(user.CompanyId))
  790. return
  791. }
  792. companyDetailStatus = companyDetail.Status
  793. }
  794. }
  795. if activityInfo.ChartPermissionId == 1 {
  796. havePower = true
  797. return
  798. }
  799. if (activityInfo.ActivityTypeId == 1 || activityInfo.ActivityTypeId == 3) && strings.Contains(permissionStr, "专家") && activityInfo.LimitPeopleNum == 0 {
  800. havePower = true
  801. } else if activityInfo.ActivityTypeId == 3 && strings.Contains(permissionStr, "专家") && companyDetailStatus == "正式" && strings.Contains(activityInfo.CustomerTypeIds, "4") {
  802. havePower = true
  803. } else if activityInfo.ActivityTypeId == 3 && strings.Contains(permissionStr, "专家") && companyDetailStatus == "试用" && strings.Contains(activityInfo.CustomerTypeIds, "5") {
  804. havePower = true
  805. } else if (activityInfo.ActivityTypeId == 1 || activityInfo.ActivityTypeId == 3 || activityInfo.ActivityTypeId == 4 || activityInfo.ActivityTypeId == 5) && strings.Contains(permissionStr, "专家") {
  806. havePower = true
  807. }
  808. if activityInfo.ActivityTypeId == 2 || activityInfo.ActivityTypeId == 6 || activityInfo.ActivityTypeId == 7 {
  809. if strings.Contains(permissionStr, activityInfo.ChartPermissionName+"(主观)") && strings.Contains(activityInfo.CustomerTypeIds, userTypeStr) {
  810. havePower = true
  811. }
  812. } else {
  813. if strings.Contains(permissionStr, activityInfo.ChartPermissionName+"(客观)") && strings.Contains(activityInfo.CustomerTypeIds, userTypeStr) {
  814. havePower = true
  815. }
  816. }
  817. if (strings.Contains(activityInfo.ChartPermissionName, "研选") || activityInfo.ChartPermissionName == "策略") && strings.Contains(permissionStr, activityInfo.ChartPermissionName) {
  818. havePower = true
  819. }
  820. //如果是易董的活动且属于研选类型,只要开通任何权限就可以查看详情
  821. if activityInfo.YidongActivityId != "" && permissionStr != "" && strings.Contains(activityInfo.ChartPermissionName, utils.CHART_PERMISSION_NAME_YANXUAN) {
  822. havePower = true
  823. }
  824. permissionShengji, errs := models.GetCompanyPermissionByUserTrip(user.CompanyId)
  825. if errs != nil {
  826. err = errs
  827. return
  828. }
  829. if strings.Contains(permissionShengji, activityInfo.ChartPermissionName) && strings.Contains(activityInfo.CustomerTypeIds, "8") {
  830. havePower = true
  831. }
  832. fmt.Println("主客观2", havePower)
  833. //if strings.Contains(permissionStr, activityInfo.ChartPermissionName) && strings.Contains(activityInfo.CustomerTypeIds, userTypeStr) {
  834. // havePower = true
  835. //}
  836. fmt.Println("主客观3", havePower)
  837. if havePower && activityInfo.LimitPeopleNum > 0 {
  838. //对于一些特殊的活动,即使权限满足也不给产看
  839. noPower, e := GetShareNoPowe(activityInfo, permissionStr, userType, user)
  840. if e != nil {
  841. err = errors.New("GetShareNoPowe, Err: " + e.Error())
  842. return
  843. }
  844. if noPower {
  845. havePower = false
  846. }
  847. }
  848. return
  849. }
  850. // 校验被分享的用户是否有查看详情的权限
  851. func GetShareNoPowe(activityInfo *models.ActivityDetail, permissionStr string, userType int, user *models.WxUserItem) (noPower bool, err error) {
  852. //如果是弘则的就不进行可见权限校验
  853. if user.CompanyId == utils.HZ_COMPANY_ID {
  854. return
  855. }
  856. //var noPower bool
  857. //if !strings.Contains(activityInfo.CustomerTypeIds, strconv.Itoa(userType)) {
  858. // noPower = true
  859. //}
  860. //1、永续客户 //2、大套餐客户(4个行业全开通的正式客户) //3、分行业套餐客户(开通对应行业的正式客户) //4、仅开通专家套餐的正式客户 //5、开通对应行业套餐或专家套餐的试用客户
  861. //if userType == 2 && strings.Contains(permissionStr, "专家") && !strings.Contains(activityInfo.CustomerTypeIds, strconv.Itoa(2)) && !strings.Contains(activityInfo.CustomerTypeIds, strconv.Itoa(3)) && !strings.Contains(activityInfo.CustomerTypeIds, strconv.Itoa(4)) {
  862. // noPower = true
  863. //}
  864. //if userType == 2 && !strings.Contains(permissionStr, "专家") && !strings.Contains(activityInfo.CustomerTypeIds, strconv.Itoa(2)) && !strings.Contains(activityInfo.CustomerTypeIds, strconv.Itoa(3)) {
  865. // noPower = true
  866. //}
  867. //if userType == 3 && strings.Contains(permissionStr, "专家") && !strings.Contains(activityInfo.CustomerTypeIds, strconv.Itoa(3)) && !strings.Contains(activityInfo.CustomerTypeIds, strconv.Itoa(4)) {
  868. // noPower = true
  869. //}
  870. //if userType == 3 && !strings.Contains(permissionStr, "专家") && !strings.Contains(activityInfo.CustomerTypeIds, strconv.Itoa(3)) {
  871. // noPower = true
  872. //}
  873. if userType == 8 {
  874. permissionShengji, errs := models.GetCompanyPermissionByUserZhengShiTrip(user.CompanyId)
  875. if errs != nil {
  876. err = errs
  877. return
  878. }
  879. if !strings.Contains(permissionShengji, activityInfo.ChartPermissionName) {
  880. noPower = true
  881. return
  882. }
  883. }
  884. if !noPower {
  885. noPower, err = CheckUserPowerByActivityChoose(user, activityInfo)
  886. }
  887. return
  888. }
  889. // 处理活动本组们是否决策人权限
  890. func CheckUserPowerByActivityChoose(user *models.WxUserItem, activityInfo *models.ActivityDetail) (noPower bool, err error) {
  891. //处理 见范围 1,仅本组可见 、2,全部客户可见
  892. if activityInfo.VisibleRange == 1 {
  893. adminIds, errAdmin := models.GetSelleridWhichGroup(user.CompanyId, 2)
  894. if errAdmin != nil {
  895. err = errAdmin
  896. return
  897. }
  898. sliceAdminIds := strings.Split(adminIds, ",")
  899. var haveAdminId bool
  900. for _, v := range sliceAdminIds {
  901. if v == strconv.Itoa(activityInfo.AdminId) {
  902. haveAdminId = true
  903. }
  904. }
  905. if !haveAdminId {
  906. noPower = true
  907. }
  908. }
  909. //处理 是否仅决策人可见 0,否 、1,是
  910. if activityInfo.IsMakerShow == 1 {
  911. if user.IsMaker == 0 {
  912. noPower = true
  913. }
  914. }
  915. return
  916. }
  917. // 判断预约纪要按钮是否显示
  918. func IsShowAppointment(activityTypeId int, chartPermissionName string) (isShowAppointment bool) {
  919. if activityTypeId == 1 || activityTypeId == 2 || activityTypeId == 3 || activityTypeId == 4 {
  920. isShowAppointment = true
  921. }
  922. if activityTypeId == 5 && chartPermissionName == "医药" {
  923. isShowAppointment = true
  924. }
  925. return
  926. }
  927. // GetindustryVideoDetailById 通过视频ID获取视频详情
  928. func GetActivityVideoDetailById(user *models.WxUserItem, videoId int) (industryVideo *models.CygxActivityVideoDetailResp, AuthInfo *models.UserPermissionAuthInfo, err error) {
  929. total, e := models.GetActivityVideoByVideoIdCount(videoId)
  930. if e != nil {
  931. err = errors.New("获取活动的视频失败,GetActivityVideoByVideoIdCount " + e.Error())
  932. return
  933. }
  934. if total == 0 {
  935. err = errors.New("视频不存在,或已取消发布")
  936. return
  937. }
  938. // 用户权限
  939. authInfo, permissionArr, e := GetUserRaiPermissionInfo(user.UserId, user.CompanyId)
  940. if e != nil {
  941. err = errors.New("获取用户权限失败,GetUserRaiPermissionInfo " + e.Error())
  942. return
  943. }
  944. videoSimple := new(models.CygxActivityVideoDetailResp)
  945. // 权限
  946. var au *models.UserPermissionAuthInfo
  947. videoSimple, e = models.GetCygxActivityVideoById(videoId)
  948. if e != nil {
  949. err = errors.New("获取产业关联的视频失败,GetMicroRoadshowVideoByIndustryId " + e.Error())
  950. return
  951. } else {
  952. //videoSimple.Id = video.Id
  953. //videoSimple.Title = video.Title
  954. //videoSimple.ResourceUrl = video.ResourceUrl
  955. //videoSimple.PlaySeconds = video.PlaySeconds
  956. //videoSimple.ActivityId = video.ActivityId
  957. //videoSimple.ChartPermissionId = video.ChartPermissionId
  958. if videoSimple.BackgroundImg == "" {
  959. // 获取默认图配置
  960. _, videoMap, _, _, e := GetMicroRoadShowDefaultImgConfig()
  961. if e != nil {
  962. err = errors.New("获取视频默认配置图失败,GetMicroRoadshowVideoByIndustryId " + e.Error())
  963. return
  964. }
  965. videoSimple.BackgroundImg = videoMap[videoSimple.ChartPermissionId]
  966. }
  967. au = new(models.UserPermissionAuthInfo)
  968. au.SellerName = authInfo.SellerName
  969. au.SellerMobile = authInfo.SellerMobile
  970. au.HasPermission = authInfo.HasPermission
  971. au.OperationMode = authInfo.OperationMode
  972. if au.HasPermission == 1 {
  973. // 非宏观权限进一步判断是否有权限
  974. if videoSimple.ChartPermissionId != utils.HONG_GUAN_ID && !utils.InArrayByStr(permissionArr, videoSimple.ChartPermissionName) {
  975. au.HasPermission = 2
  976. }
  977. }
  978. // 无权限的弹框提示
  979. if au.HasPermission != 1 {
  980. if au.OperationMode == UserPermissionOperationModeCall {
  981. au.PopupMsg = UserPermissionPopupMsgCallMicroVideo
  982. } else {
  983. au.PopupMsg = UserPermissionPopupMsgApplyMicroVideo
  984. }
  985. videoSimple.ResourceUrl = ""
  986. }
  987. }
  988. industryVideo = videoSimple
  989. AuthInfo = au
  990. return
  991. }