activity_special.go 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647
  1. package services
  2. import (
  3. "context"
  4. "errors"
  5. "fmt"
  6. "hongze/hongze_cygx/models"
  7. "hongze/hongze_cygx/utils"
  8. "strconv"
  9. "strings"
  10. "time"
  11. )
  12. //func init() {
  13. // UpdateCygxActivitySpecialSignupNum()
  14. //}
  15. //修改专项调研,用户与公司的参与数量
  16. func UpdateCygxActivitySpecialSignupNum(cont context.Context) (err error) {
  17. defer func() {
  18. if err != nil {
  19. fmt.Println(err)
  20. go utils.SendAlarmMsg("修改活动状态至进行中失败"+err.Error(), 2)
  21. go utils.SendEmail(utils.APPNAME+"【"+utils.RunMode+"】"+"失败提醒", "修改活动状态至进行中失败 ErrMsg:"+err.Error(), utils.EmailSendToUsers)
  22. }
  23. }()
  24. //根据手机号分组获取列表以及数量
  25. var condition string
  26. var pars []interface{}
  27. condition += ` AND s.create_time < ? `
  28. pars = append(pars, time.Now().Format(utils.FormatDate))
  29. listSpecial, err := models.GetActivityListSpecialGroupByMobile(condition, pars)
  30. if err != nil {
  31. return err
  32. }
  33. var mapMobile []string
  34. for _, v := range listSpecial {
  35. mapMobile = append(mapMobile, v.Mobile)
  36. }
  37. //根据手机号获取这些用户的信息
  38. userList, err := models.GetWxUserByMobiles(mapMobile)
  39. if err != nil {
  40. return err
  41. }
  42. //更改这些手机对应的关注关注数量
  43. err = models.UpdateActivitySpecialSignupNumMulti(listSpecial)
  44. if err != nil {
  45. return err
  46. }
  47. //更改这些手机对应的公司ID
  48. err = models.UpdateActivitySpecialSignupCompanyIdMulti(userList)
  49. if err != nil {
  50. return err
  51. }
  52. //根据CompanyId分组获取列表以及数量
  53. listSpecialByCompanyId, err := models.GetActivityListSpecialGroupByCompanyId(condition, pars)
  54. if err != nil {
  55. return err
  56. }
  57. //更改这些公司对应的关注关注数量
  58. err = models.UpdateActivitySpecialSignupCompanyNumMulti(listSpecialByCompanyId)
  59. if err != nil {
  60. return err
  61. }
  62. fmt.Println("UpdateCygxActivitySpecialSignupNum end")
  63. return
  64. }
  65. //处理专项调研的展示
  66. func GetActivityLabelSpecialList(user *models.WxUserItem, isPower int, chartPermissionIds, permissionNameStr string) (item *models.ActivityTypeHome, err error) {
  67. itemList := new(models.ActivityTypeHome)
  68. userType, e := GetSpecialUserType(user)
  69. if e != nil {
  70. err = errors.New("GetSpecialUserType, Err: " + e.Error())
  71. return
  72. }
  73. if userType == 0 {
  74. itemList.List = make([]*models.CygxActivityLabelList, 0)
  75. item = itemList
  76. return
  77. }
  78. companyDetail, e := models.GetCompanyDetailByIdGroupTrip(user.CompanyId)
  79. if e != nil {
  80. err = errors.New("GetCompanyDetailByIdGroupTrip, Err: " + e.Error())
  81. return
  82. }
  83. //如果是永续的就按照普通的权限逻辑来查,如果不是就按照升级的逻辑来查
  84. var condition string
  85. if companyDetail.Status == "永续" {
  86. condition, e = HandleActivityLabelSpecialPermission(user)
  87. if e != nil {
  88. err = errors.New("HandleActivityLabelSpecialPermission, Err: " + e.Error())
  89. return
  90. }
  91. } else {
  92. condition, e = HandleActivityLabelSpecialTripPermission(user)
  93. if e != nil {
  94. err = errors.New("HandleActivityLabelSpecialPermission, Err: " + e.Error())
  95. return
  96. }
  97. }
  98. var pars []interface{}
  99. condition = ` AND art.publish_status = 1 AND art.label != '' `
  100. //行业名称
  101. if isPower == 1 {
  102. condition += ` AND art.chart_permission_name IN (` + permissionNameStr + `) `
  103. }
  104. if chartPermissionIds != "" {
  105. condition += ` AND art.chart_permission_id IN (` + chartPermissionIds + `) `
  106. }
  107. specialList, err := models.GetActivityLabelSpecialListAll(condition, pars, 0, 8)
  108. if err != nil {
  109. return
  110. }
  111. for k2, v2 := range specialList {
  112. specialList[k2].KeyWord = LabelStrV5(v2.KeyWord, v2.IsShowSubjectName, v2.TemporaryLabel)
  113. specialList[k2].ImgUrlBg = "https://hzstatic.hzinsights.com/static/temp/20220426202204/20220426/XDLLsjC9XAAy8LIzQr7GsjrBbtX6.png"
  114. specialList[k2].ImgUrlBg = utils.ACTIVITY_ZXDY_ImgUrl3
  115. }
  116. itemList.ActivityTypeName = "专项产业调研"
  117. itemList.Resource = 2
  118. itemList.List = specialList
  119. itemList.ActivityTypeId = 7
  120. itemList.ImgUrl = utils.ACTIVITY_ZXDY_ImgUrl1
  121. itemList.ImgUrlBg = utils.ACTIVITY_ZXDY_ImgUrl2
  122. item = itemList
  123. return
  124. }
  125. //HandleActivityLabelSpecialPermission 处理专项产业调研的查询权限sql 永续
  126. func HandleActivityLabelSpecialPermission(user *models.WxUserItem) (condition string, err error) {
  127. permissionStr, e := GetCompanyPermission(user.CompanyId)
  128. if e != nil {
  129. err = errors.New("GetCompanyPermission, Err: " + e.Error())
  130. return
  131. }
  132. userType, e := GetSpecialUserType(user)
  133. if e != nil {
  134. err = errors.New("GetSpecialUserType, Err: " + e.Error())
  135. return
  136. }
  137. slicePer := strings.Split(permissionStr, ",")
  138. var permissionSqlStr string
  139. for _, v := range slicePer {
  140. if userType == 1 {
  141. if !strings.Contains(v, "研选") {
  142. permissionSqlStr += "'" + v + "',"
  143. }
  144. } else {
  145. permissionSqlStr += "'" + v + "',"
  146. }
  147. }
  148. permissionSqlStr = strings.TrimRight(permissionSqlStr, ",")
  149. condition = ` AND art.publish_status = 1 AND art.label != '' AND art.is_offline = 0 `
  150. if permissionSqlStr != "" {
  151. condition += ` AND art.chart_permission_name IN (` + permissionSqlStr + `) `
  152. }
  153. condition += ` AND art.customer_type_ids LIKE '%` + strconv.Itoa(userType) + `%' `
  154. return
  155. }
  156. //HandleActivityLabelSpecialPermisseion 处理专项产业调研的查询权限sql
  157. func HandleActivityLabelSpecialTripPermission(user *models.WxUserItem) (condition string, err error) {
  158. permissionStr, e := GetCompanyPermission(user.CompanyId)
  159. if e != nil {
  160. err = errors.New("GetCompanyPermission, Err: " + e.Error())
  161. return
  162. }
  163. userType, e := GetSpecialUserType(user)
  164. if e != nil {
  165. err = errors.New("GetSpecialUserType, Err: " + e.Error())
  166. return
  167. }
  168. slicePer := strings.Split(permissionStr, ",")
  169. var permissionSqlStr string
  170. for _, v := range slicePer {
  171. if userType == 1 {
  172. if !strings.Contains(v, "研选") {
  173. permissionSqlStr += "'" + v + "',"
  174. }
  175. } else {
  176. permissionSqlStr += "'" + v + "',"
  177. }
  178. }
  179. permissionSqlStr = strings.TrimRight(permissionSqlStr, ",")
  180. condition = ` AND art.publish_status = 1 AND art.label != '' AND art.is_offline = 0 `
  181. if permissionSqlStr != "" {
  182. condition += ` AND art.chart_permission_name IN (` + permissionSqlStr + `) `
  183. }
  184. condition += ` AND art.customer_type_ids LIKE '%` + strconv.Itoa(userType) + `%' `
  185. return
  186. }
  187. //获取预报名列表
  188. func GetActivitySpecialPrepareList(user *models.WxUserItem, startSize, pageSize int, keywords string) (list []*models.CygxActivitySpecialDetail, totalPrepare int, err error) {
  189. companyDetail, e := models.GetCompanyDetailByIdGroupTrip(user.CompanyId)
  190. if e != nil {
  191. err = errors.New("GetCompanyDetailByIdGroupTrip, Err: " + e.Error())
  192. return
  193. }
  194. //如果是永续的就按照普通的权限逻辑来查,如果不是就按照升级的逻辑来查
  195. var condition string
  196. if companyDetail.Status == "永续" {
  197. condition, e = HandleActivityLabelSpecialPermission(user)
  198. if e != nil {
  199. err = errors.New("HandleActivityLabelSpecialPermission, Err: " + e.Error())
  200. return
  201. }
  202. } else {
  203. condition, e = HandleActivityLabelSpecialTripPermission(user)
  204. if e != nil {
  205. err = errors.New("HandleActivityLabelSpecialPermission, Err: " + e.Error())
  206. return
  207. }
  208. }
  209. var pars []interface{}
  210. condition += ` AND art.days = 0 AND art.publish_status = 1 AND art.is_offline = 0 `
  211. if keywords != "" {
  212. keywords = "%" + keywords + "%"
  213. condition += ` AND art.research_theme LIKE ? `
  214. pars = append(pars, keywords)
  215. }
  216. totalPrepare, e = models.GetActivitySpecialCount(condition, pars)
  217. if e != nil {
  218. err = errors.New("GetActivitySpecialCount, Err: " + e.Error())
  219. return
  220. }
  221. condition += ` ORDER BY art.last_updated_time DESC `
  222. list, e = models.GetCygxActivitySpecialDetailList(condition, pars, user.UserId, startSize, pageSize)
  223. if e != nil {
  224. err = errors.New("GetCygxActivitySpecialDetailList, Err: " + e.Error())
  225. return
  226. }
  227. return
  228. }
  229. /*
  230. 确定行程的查询 GetActivityLabelSpecialConfirmList
  231. state 进行状态 1:未开始,2:进行中,3:已结束 不传默认查询全部items []*CygxActivitySpecialDetail
  232. */
  233. func GetActivityLabelSpecialConfirmList(user *models.WxUserItem, startSize, pageSize, state int, keywords string) (list []*models.CygxActivitySpecialDetail, totalConfirm int, err error) {
  234. //var condition string
  235. companyDetail, e := models.GetCompanyDetailByIdGroupTrip(user.CompanyId)
  236. if e != nil {
  237. err = errors.New("GetCompanyDetailByIdGroupTrip, Err: " + e.Error())
  238. return
  239. }
  240. //如果是永续的就按照普通的权限逻辑来查,如果不是就按照升级的逻辑来查
  241. var condition string
  242. if companyDetail.Status == "永续" {
  243. condition, e = HandleActivityLabelSpecialPermission(user)
  244. if e != nil {
  245. err = errors.New("HandleActivityLabelSpecialPermission, Err: " + e.Error())
  246. return
  247. }
  248. } else {
  249. condition, e = HandleActivityLabelSpecialTripPermission(user)
  250. if e != nil {
  251. err = errors.New("HandleActivityLabelSpecialPermission, Err: " + e.Error())
  252. return
  253. }
  254. }
  255. var pars []interface{}
  256. condition += ` AND art.days >0 `
  257. if state == 1 {
  258. condition += ` AND art.activity_time > ? `
  259. pars = append(pars, time.Now())
  260. }
  261. if state == 2 {
  262. condition += ` AND art.activity_time < ? `
  263. pars = append(pars, time.Now())
  264. condition += ` AND art.activity_time_end > ? `
  265. pars = append(pars, time.Now())
  266. }
  267. if state == 3 {
  268. condition += ` AND art.activity_time_end < ? `
  269. pars = append(pars, time.Now())
  270. }
  271. if keywords != "" {
  272. keywords = "%" + keywords + "%"
  273. condition += ` AND art.research_theme LIKE ? `
  274. pars = append(pars, keywords)
  275. }
  276. totalConfirm, e = models.GetActivitySpecialCount(condition, pars)
  277. if e != nil {
  278. err = errors.New("GetActivitySpecialCount, Err: " + e.Error())
  279. return
  280. }
  281. condition += ` ORDER BY art.activity_time DESC `
  282. list, e = models.GetCygxActivitySpecialDetailList(condition, pars, user.UserId, startSize, pageSize)
  283. if e != nil {
  284. err = errors.New("GetCygxActivitySpecialDetailList, Err: " + e.Error())
  285. return
  286. }
  287. var activityIds []int
  288. for k, v := range list {
  289. resultTimeStart := utils.StrTimeToTime(v.ActivityTime) //时间字符串格式转时间格式
  290. resultTimeEnd := utils.StrTimeToTime(v.ActivityTimeEnd) //时间字符串格式转时间格式
  291. if resultTimeStart.After(time.Now()) {
  292. list[k].ActiveState = 1
  293. } else if time.Now().After(resultTimeEnd) {
  294. list[k].ActiveState = 3
  295. } else {
  296. list[k].ActiveState = 2
  297. }
  298. if list[k].Days == 0 {
  299. list[k].TripStatus = 1
  300. } else {
  301. list[k].TripStatus = 2
  302. }
  303. activityIds = append(activityIds, v.ActivityId)
  304. }
  305. //处理用户已经报名了的行程
  306. UserMap, e := GetSpecialTripUserMap(activityIds, user.UserId)
  307. if e != nil {
  308. err = errors.New("GetSpecialTripUserMap, Err: " + e.Error())
  309. return
  310. }
  311. for k, v := range list {
  312. if _, ok := UserMap[v.ActivityId]; ok {
  313. list[k].IsTrip = 1
  314. }
  315. }
  316. return
  317. }
  318. //获取用户已经报名的活动
  319. func GetSpecialTripUserMap(activityIds []int, userId int) (mapUserId map[int]int, err error) {
  320. var condition string
  321. var pars []interface{}
  322. activityIdsLen := len(activityIds)
  323. if activityIdsLen > 0 {
  324. condition += ` AND activity_id IN (` + utils.GetOrmInReplace(activityIdsLen) + `)`
  325. pars = append(pars, activityIds)
  326. }
  327. condition += ` AND user_id = ? AND is_cancel = 0 `
  328. pars = append(pars, userId)
  329. list, e := models.GetCygxActivitySpecialTripList(condition, pars)
  330. if e != nil {
  331. err = errors.New("GetCygxActivitySpecialTripList, Err: " + e.Error())
  332. return
  333. }
  334. mapUid := make(map[int]int)
  335. for _, v := range list {
  336. mapUid[v.ActivityId] = v.UserId
  337. }
  338. mapUserId = mapUid
  339. return
  340. }
  341. //GetActivitySpecialList 获取专项调研列表
  342. func GetActivitySpecialList(user *models.WxUserItem, currentIndex, pageSize int, keywords string) (list []*models.CygxActivitySpecialDetail, total int, err error) {
  343. listConfirm, totalConfirm, e := GetActivityLabelSpecialConfirmList(user, (currentIndex-1)*pageSize, pageSize, 0, keywords)
  344. if e != nil {
  345. err = errors.New("GetActivityLabelSpecialConfirmList, Err: " + e.Error())
  346. return
  347. }
  348. if currentIndex == 1 && len(listConfirm) > 0 {
  349. listConfirm[0].Explain = "此类调研时间安排已经确定,点击报名后按人次扣除对应机构的服务点数。由于每场活动人数有限,如果不能参加请提前48小时取消,未及时取消导致影响其他客户报名将会维持扣点。"
  350. }
  351. list = listConfirm
  352. total = totalConfirm
  353. var startSizePrepare, pageSizePrepare int
  354. //全是确定行程的查询数据
  355. if totalConfirm >= currentIndex*pageSize {
  356. total = totalConfirm
  357. startSizePrepare = 0
  358. pageSizePrepare = 0
  359. return
  360. } else if totalConfirm > (currentIndex-1)*pageSize && totalConfirm < currentIndex*pageSize {
  361. //一半确认行程一半预报名
  362. startSizePrepare = 0
  363. pageSizePrepare = pageSize - len(listConfirm)
  364. } else {
  365. //全是预报名
  366. startSizePrepare = (currentIndex-1)*pageSize - totalConfirm
  367. pageSizePrepare = pageSize - len(listConfirm)
  368. }
  369. listPrepare, totalPrepare, e := GetActivitySpecialPrepareList(user, startSizePrepare, pageSizePrepare, keywords)
  370. if e != nil {
  371. err = errors.New("GetActivityLabelSpecialConfirmList, Err: " + e.Error())
  372. return
  373. }
  374. if len(listPrepare) > 0 {
  375. for _, v := range listPrepare {
  376. list = append(list, v)
  377. }
  378. if startSizePrepare == 0 {
  379. listPrepare[0].Explain = "此类调研具体行程尚未确认,待预报名人数满10人后弘则会确定行程并推送给您活动日期,只有在确认行程中再次报名才完成占位。"
  380. }
  381. }
  382. total = totalConfirm + totalPrepare
  383. //处理封面图片
  384. detail, e := models.GetConfigByCode("city_img_url")
  385. if e != nil {
  386. err = errors.New("GetConfigByCode, Err: " + e.Error())
  387. return
  388. }
  389. detailChart, e := models.GetConfigByCode("chart_img_url")
  390. if e != nil {
  391. err = errors.New("GetConfigByCode, Err: " + e.Error())
  392. return
  393. }
  394. addressList := strings.Split(detail.ConfigValue, "{|}")
  395. mapAddress := make(map[string]string)
  396. chartList := strings.Split(detailChart.ConfigValue, "{|}")
  397. mapChart := make(map[string]string)
  398. var cityName string
  399. var chartName string
  400. var imgUrl string
  401. var imgUrlChart string
  402. for _, v := range addressList {
  403. vslice := strings.Split(v, "_")
  404. cityName = vslice[0]
  405. imgUrl = vslice[len(vslice)-1]
  406. mapAddress[cityName] = imgUrl
  407. }
  408. for _, v := range chartList {
  409. vslice := strings.Split(v, "_")
  410. chartName = vslice[0]
  411. imgUrlChart = vslice[len(vslice)-1]
  412. mapChart[chartName] = imgUrlChart
  413. }
  414. for k, v := range list {
  415. //list[k].ImgUrlText = "https://hongze.oss-cn-shanghai.aliyuncs.com/static/images/202112/20211221/bIdfv8t86xrFRpDOeGGHXOmKEuKl.png"
  416. if mapChart[v.ChartPermissionName] != "" {
  417. list[k].ImgUrl = mapChart[v.ChartPermissionName]
  418. }
  419. list[k].ActivityTypeName = "专项调研"
  420. if list[k].Days == 0 {
  421. list[k].TripStatus = 1
  422. } else {
  423. list[k].TripStatus = 2
  424. }
  425. }
  426. return
  427. }
  428. //HandleActivitySpecialShow 处理活动的状态
  429. func HandleActivitySpecialShow(activityDetail *models.CygxActivitySpecialDetail, user *models.WxUserItem) (item *models.CygxActivitySpecialDetail, err error) {
  430. var activityIds []int
  431. resultTimeStart := utils.StrTimeToTime(activityDetail.ActivityTime) //时间字符串格式转时间格式
  432. resultTimeEnd := utils.StrTimeToTime(activityDetail.ActivityTimeEnd) //时间字符串格式转时间格式
  433. if resultTimeStart.After(time.Now()) {
  434. activityDetail.ActiveState = 1
  435. } else if time.Now().After(resultTimeEnd) {
  436. activityDetail.ActiveState = 3
  437. } else {
  438. activityDetail.ActiveState = 2
  439. }
  440. activityIds = append(activityIds, activityDetail.ActivityId)
  441. //处理用户已经报名了的行程
  442. UserMap, e := GetSpecialTripUserMap(activityIds, user.UserId)
  443. if e != nil {
  444. err = errors.New("GetSpecialTripUserMap, Err: " + e.Error())
  445. return
  446. }
  447. if activityDetail.Days == 0 {
  448. activityDetail.TripStatus = 1
  449. } else {
  450. activityDetail.TripStatus = 2
  451. }
  452. if _, ok := UserMap[activityDetail.ActivityId]; ok {
  453. activityDetail.IsTrip = 1
  454. }
  455. item = activityDetail
  456. return
  457. }
  458. //活动与专项调研搜索 GetActivitySpecialSearcheList
  459. func GetActivitySpecialSearcheList(user *models.WxUserItem, condition string, startSize, pageSize int, keywords string) (items []*models.ActivityDetail, total int, err error) {
  460. var conditionSpecil string
  461. var pars, parsSpecil []interface{}
  462. if keywords != "" {
  463. keywords = "%" + keywords + "%"
  464. conditionSpecil += ` AND art.research_theme LIKE ?`
  465. parsSpecil = append(parsSpecil, keywords)
  466. }
  467. list, totalSearche, e := models.GetActivitySpecialSearcheList(condition, pars, conditionSpecil, parsSpecil, startSize, pageSize)
  468. if e != nil {
  469. err = errors.New("GetActivitySpecialSearcheList, Err: " + e.Error())
  470. return
  471. }
  472. items, e = HandleActivityListButton(list, user)
  473. if e != nil {
  474. err = errors.New("HandleActivityListButton, Err: " + e.Error())
  475. return
  476. }
  477. total = totalSearche
  478. return
  479. }
  480. //获取 专项调研客户类型 //1、永续客户 //2、大套餐客户(4个行业全开通的正式客户) //8、行业升级套餐客户 //9、其余正式客户;5、试用客户
  481. func GetActivitySpecialUserType(companyId int) (userType int, permissionStrnew string, err error) {
  482. var permissionStr, permissionZhengShiStr string
  483. if companyId <= 1 {
  484. userType = 0
  485. } else {
  486. total, e := models.GetCountCompanyDetailByIdGroupTrip(companyId)
  487. if e != nil {
  488. err = errors.New("GetCountCompanyDetailByIdGroupTrip, Err: " + e.Error())
  489. return
  490. }
  491. if total == 0 {
  492. userType = 0
  493. } else {
  494. companyDetail, e := models.GetCompanyDetailByIdGroupTrip(companyId)
  495. if e != nil {
  496. err = errors.New("GetCompanyDetailByIdGroupTrip, Err: " + e.Error())
  497. return
  498. }
  499. permissionStr, e = models.GetCompanyPermissionByUserTrip(companyId)
  500. if e != nil {
  501. err = errors.New("GetCompanyPermissionByUserTrip, Err: " + e.Error())
  502. return
  503. }
  504. permissionZhengShiStr, e = models.GetCompanyPermissionByUserZhengShiTrip(companyId)
  505. if e != nil {
  506. err = errors.New("GetCompanyPermissionByUserZhengShiTrip, Err: " + e.Error())
  507. return
  508. }
  509. //大套餐客户定义:医药、消费、科技、智造。4个行业中为升级,策略是正式,属于大套餐客户
  510. if companyDetail.Status == "永续" {
  511. userType = 1
  512. } else if companyDetail.Status == "试用" {
  513. userType = 5
  514. } else if companyDetail.Status == "正式" {
  515. if permissionStr == "专家" {
  516. userType = 4
  517. } else if strings.Count(permissionZhengShiStr, "医药") == 2 && strings.Count(permissionZhengShiStr, "消费") == 2 && strings.Count(permissionZhengShiStr, "科技") == 2 && strings.Count(permissionZhengShiStr, "智造") == 2 && strings.Count(permissionZhengShiStr, "策略") == 1 {
  518. userType = 2
  519. } else {
  520. userType = 3
  521. }
  522. if userType == 3 {
  523. if !strings.Contains(permissionStr, "医药") && !strings.Contains(permissionStr, "消费") && !strings.Contains(permissionStr, "科技") && !strings.Contains(permissionStr, "智造") {
  524. userType = 4
  525. }
  526. }
  527. } else if companyDetail.Status == "冻结" {
  528. userType = 6
  529. } else if companyDetail.Status == "流失" {
  530. userType = 7
  531. }
  532. }
  533. }
  534. permissionStrnew = permissionStr
  535. return
  536. }
  537. //GetSpecialUserType 获取专项产业调研的用户身份类型
  538. //获取 专项调研客户类型 //1、永续客户 //2、大套餐客户(4个行业全开通的正式客户) //8、行业升级套餐客户 //9、其余正式客户;5、试用客户
  539. func GetSpecialUserType(user *models.WxUserItem) (userType int, err error) {
  540. companyId := user.CompanyId
  541. companyDetail, e := models.GetCompanyDetailByIdGroupTrip(companyId)
  542. if e != nil {
  543. err = errors.New("GetCompanyDetailByIdGroupTrip, Err: " + e.Error())
  544. return
  545. }
  546. if companyId <= 1 {
  547. userType = 0
  548. } else {
  549. if companyDetail.Status == "永续" {
  550. userType = 1
  551. } else {
  552. if companyDetail.Status == "正式" {
  553. list, e := models.GetCompanyReportPermissionUpgrade(companyId, 2)
  554. if e != nil && e.Error() != utils.ErrNoRow() {
  555. err = errors.New("GetCompanyReportPermissionUpgrade, Err: " + e.Error())
  556. }
  557. if len(list) == 0 {
  558. userType = 9
  559. }
  560. if len(list) == 4 {
  561. totalName, e := models.GetCompanyPermissionNameCheck(companyId, 2, "策略")
  562. if e != nil {
  563. err = errors.New("获取品种信息失败, Err:" + e.Error())
  564. return
  565. }
  566. if totalName > 0 {
  567. userType = 2
  568. } else {
  569. userType = 8
  570. }
  571. } else {
  572. userType = 8
  573. }
  574. } else if companyDetail.Status == "试用" {
  575. userType = 5
  576. }
  577. }
  578. }
  579. return
  580. }
  581. //GetSpecialDetailUserPower 处理用户查看专项调研详情的权限
  582. func GetSpecialDetailUserPower(user *models.WxUserItem, activityInfo *models.CygxActivitySpecialDetail) (havePower bool, err error) {
  583. permissionStr, e := GetCompanyPermissionUpgrade(user.CompanyId)
  584. if e != nil {
  585. err = errors.New("GetCompanyPermissionUpgrade, Err: " + e.Error())
  586. return
  587. }
  588. fmt.Println(permissionStr)
  589. //如果没有对应的升级权限,则返回
  590. if !strings.Contains(permissionStr, activityInfo.ChartPermissionName) {
  591. return
  592. }
  593. userType, e := GetSpecialUserType(user)
  594. if e != nil {
  595. err = errors.New("GetSpecialUserType, Err: " + e.Error())
  596. return
  597. }
  598. if userType == 0 {
  599. return
  600. }
  601. var pars []interface{}
  602. var condition string
  603. var userTypes string
  604. condition += ` AND art.publish_status = 1 AND art.is_offline = 0 `
  605. userTypes = "%" + strconv.Itoa(userType) + "%"
  606. condition += ` AND art.customer_type_ids LIKE ? `
  607. pars = append(pars, userTypes)
  608. condition += ` AND art.activity_id = ? `
  609. pars = append(pars, activityInfo.ActivityId)
  610. total, e := models.GetActivitySpecialCount(condition, pars)
  611. if e != nil {
  612. err = errors.New("GetSpecialUserType, Err: " + e.Error())
  613. return
  614. }
  615. if total == 1 {
  616. havePower = true
  617. }
  618. fmt.Println(havePower)
  619. fmt.Println(userType)
  620. return
  621. }