industrial_management.go 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591
  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. // 修改标签状态
  13. func UpdateIndustrialManagementLabel(cont context.Context) (err error) {
  14. defer func() {
  15. if err != nil {
  16. fmt.Println("修改失败,Err:", err.Error())
  17. }
  18. }()
  19. fmt.Println("修改状态0000")
  20. go models.UpdateIndustrialIsNewLabel()
  21. list, err := models.GetIndustrialMorethan10()
  22. if err != nil {
  23. return err
  24. }
  25. if len(list) == 0 {
  26. return
  27. }
  28. var idStr string
  29. for _, v := range list {
  30. idStr += v.IndustrialManagementId + ","
  31. }
  32. idStr = strings.TrimRight(idStr, ",")
  33. go models.UpdateIndustrialIsDeepLabel(idStr)
  34. //fmt.Println(idStr)
  35. //go models.UpdateActivitySattusToComplete()
  36. fmt.Println("修改状态完成")
  37. return
  38. }
  39. // 修改活动状态
  40. func UpdateIndustrialManagementSubjectNnames() (err error) {
  41. defer func() {
  42. if err != nil {
  43. fmt.Println("修改失败,Err:", err.Error())
  44. }
  45. }()
  46. fmt.Println("修改产业关联标的")
  47. list, err := models.GetIndustrialManagementIds()
  48. if err != nil {
  49. return err
  50. }
  51. for _, v := range list {
  52. //fmt.Println(v.IndustrialManagementId)
  53. var nameSub string
  54. listSub, errdSub := models.GetcygxIndustrialSubject(v.IndustrialManagementId)
  55. if errdSub != nil {
  56. return errdSub
  57. }
  58. for _, v2 := range listSub {
  59. fmt.Println(v2.SubjectName)
  60. nameSub += v2.SubjectName + ","
  61. }
  62. nameSub += v.IndustryName
  63. go models.UpdateIndustrialManagementSubjectNames(nameSub, v.IndustrialManagementId)
  64. }
  65. if len(list) == 0 {
  66. return
  67. }
  68. fmt.Println("修改状态完成")
  69. return
  70. }
  71. func ChageIndustrialArticleNum(cont context.Context) (err error) {
  72. allList, err := models.IndustrialManagementAll()
  73. if err != nil {
  74. fmt.Println("GetArticleAll Err:", err.Error())
  75. return
  76. }
  77. for _, v := range allList {
  78. total, errTop := models.GetIndustrialManagementArtCount(v.IndustrialManagementId)
  79. if errTop != nil {
  80. fmt.Println("Top Err:", errTop.Error())
  81. return
  82. }
  83. if total > 0 {
  84. err = models.UpdateIndustrialManagementArtReadNum(total, v.IndustrialManagementId)
  85. if err != nil {
  86. fmt.Println("Update Err:", err.Error())
  87. return
  88. }
  89. }
  90. }
  91. return
  92. }
  93. func ReportBillboardUpdate(cont context.Context) (err error) {
  94. //修改产业关注数量
  95. go IndustryFllowCountUpdate()
  96. //修改文章收藏数量
  97. go ArticleCollectCountUpdate()
  98. return
  99. }
  100. // 修改产业关注数量
  101. func IndustryFllowCountUpdate() (err error) {
  102. defer func() {
  103. if err != nil {
  104. go utils.SendAlarmMsg("修改产业关注数量信息失败"+err.Error(), 2)
  105. go utils.SendEmail(utils.APPNAME+"【"+utils.RunMode+"】"+"失败提醒", "GetCeLueArticlePv ErrMsg:"+err.Error(), utils.EmailSendToUsers)
  106. }
  107. }()
  108. fllowList, err := models.GetUserFllowIndustrialCountList()
  109. if err != nil {
  110. return
  111. }
  112. for _, v := range fllowList {
  113. err = models.UpdateIndustrialManagementFllowNum(v.Num, v.IndustrialManagementId)
  114. if err != nil {
  115. return
  116. }
  117. }
  118. return err
  119. }
  120. // 修改文章收藏数量
  121. func ArticleCollectCountUpdate() (err error) {
  122. defer func() {
  123. if err != nil {
  124. go utils.SendAlarmMsg("修改文章收藏数量信息失败"+err.Error(), 2)
  125. go utils.SendEmail(utils.APPNAME+"【"+utils.RunMode+"】"+"失败提醒", "修改文章收藏数量信息失败 ErrMsg:"+err.Error(), utils.EmailSendToUsers)
  126. }
  127. }()
  128. collectList, err := models.GetUserArticleCollectList()
  129. if err != nil {
  130. return
  131. }
  132. for _, v := range collectList {
  133. err = models.UpdateArticleCollectCountNum(v.Num, v.ArticleId)
  134. if err != nil {
  135. return
  136. }
  137. }
  138. return err
  139. }
  140. // 根据行业处理所选的全部赛道字段
  141. func DoXzsChooseSend(chartPermissionName string) string {
  142. var allIn string
  143. if chartPermissionName == utils.YI_YAO_NAME {
  144. allIn = "all_in_yi_yao"
  145. } else if chartPermissionName == utils.XIAO_FEI_NAME {
  146. allIn = "all_in_xiao_fei"
  147. } else if chartPermissionName == utils.KE_JI_NAME {
  148. allIn = "all_in_ke_ji"
  149. } else if chartPermissionName == utils.ZHI_ZAO_NAME {
  150. allIn = "all_in_zhi_zao"
  151. } else if chartPermissionName == utils.CHART_PERMISSION_NAME_MF_YANXUAN {
  152. allIn = "all_in_yan_xuan"
  153. }
  154. return allIn
  155. }
  156. // 行业关注或者取消关注的时候,对于用户全部赛道的影响
  157. func IndustryFllowWithTrack(industrialManagementId, count, uid int) (err error) {
  158. defer func() {
  159. if err != nil {
  160. fmt.Println(err)
  161. go utils.SendAlarmMsg("修改行业关注或者取消关注的时候,对于用户全部赛道的影响信息失败"+err.Error(), 2)
  162. go utils.SendEmail(utils.APPNAME+"【"+utils.RunMode+"】"+"失败提醒", "修改行业关注或者取消关注的时候,对于用户全部赛道的影响信息失败 ErrMsg:"+err.Error(), utils.EmailSendToUsers)
  163. }
  164. }()
  165. detail, err := models.GetIndustrialManagementDetail(industrialManagementId)
  166. if err != nil {
  167. return err
  168. }
  169. categoryinfo, err := models.GetChartPermissionById(detail.ChartPermissionId)
  170. if err != nil {
  171. return err
  172. }
  173. var allIn string
  174. allIn = DoXzsChooseSend(categoryinfo.PermissionName)
  175. if allIn != "" {
  176. //如果取消关注就把该赛道设置为非全部赛道
  177. if count == 1 {
  178. err = models.UpdateCygxXzsChooseSendIsAllIn(allIn, 0, uid)
  179. if err != nil {
  180. return err
  181. }
  182. } else {
  183. //医药、消费、科技、智造、研选下的产业赛道
  184. mapIndustrial := make(map[int][]*models.IndustrialManagementRep)
  185. industrialList, err := models.GetindustrialManagement()
  186. if err != nil {
  187. return err
  188. }
  189. for _, v := range industrialList {
  190. mapIndustrial[v.ChartPermissionId] = append(mapIndustrial[v.ChartPermissionId], v)
  191. }
  192. fllowNum, err := models.GetCountCygxIndustryFllowByUidAndChartPermissionId(uid, detail.ChartPermissionId)
  193. if err != nil {
  194. return err
  195. }
  196. if fllowNum == len(mapIndustrial[detail.ChartPermissionId]) {
  197. err = models.UpdateCygxXzsChooseSendIsAllIn(allIn, 1, uid)
  198. if err != nil {
  199. return err
  200. }
  201. }
  202. }
  203. }
  204. return err
  205. }
  206. // GetIndustryNewLabelMap 获取产业【新】标签Map
  207. func GetIndustryNewLabelMap(industryIds []int) (labelMap map[int]bool, err error) {
  208. labelMap = make(map[int]bool, 0)
  209. industryIdLen := len(industryIds)
  210. if industryIdLen == 0 {
  211. return
  212. }
  213. // 获取产业关联的报告最早发布时间及最近的发布时间
  214. var timeCond string
  215. var timePars []interface{}
  216. timeCond += ` AND b.publish_status = 1`
  217. if industryIdLen > 0 {
  218. timeCond += ` AND a.industrial_management_id IN (` + utils.GetOrmInReplace(industryIdLen) + `)`
  219. timePars = append(timePars, industryIds)
  220. }
  221. //只要弘则报告,不要研选报告
  222. timeCond += ` AND b.article_id < ? `
  223. timePars = append(timePars, utils.SummaryArticleId)
  224. industryTimeList, e := models.GetIndustryArticleMinMaxPublishTime(timeCond, timePars)
  225. if e != nil {
  226. err = errors.New("获取产业文章最大最小发布时间失败, Err: " + e.Error())
  227. return
  228. }
  229. // 判断产业是否为新
  230. nowTime := time.Now().Local()
  231. threeMonthBefore := nowTime.AddDate(0, -3, 0)
  232. nullTime, _ := time.ParseInLocation(utils.FormatDateTime, "0001-01-01 00:00:00", time.Local)
  233. industryMap := make(map[int]*models.IndustryArticleMinMaxPublishTime, 0)
  234. for i := range industryTimeList {
  235. industryMap[industryTimeList[i].IndustrialManagementId] = industryTimeList[i]
  236. }
  237. for i := range industryIds {
  238. iid := industryIds[i]
  239. item := industryMap[iid]
  240. if item != nil {
  241. // 最早发布时间为空 / 最早发布时间在三个月前之后
  242. if item.MinPublishTime.Equal(nullTime) || (item.MinPublishTime.After(threeMonthBefore)) {
  243. labelMap[iid] = true
  244. }
  245. } else {
  246. // 产业无报告, 则为新产业
  247. labelMap[iid] = true
  248. }
  249. }
  250. return
  251. }
  252. //func init() {
  253. // GetIndustrialManagementArticleNewPublishData()
  254. //}
  255. // 批量修改获取产业关联文章的最新发布时间
  256. func GetIndustrialManagementArticleNewPublishData() (err error) {
  257. defer func() {
  258. if err != nil {
  259. go utils.SendAlarmMsg("批量修改获取产业关联文章的最新发布时间"+"GetIndustrialManagementArticleNewPublishData ErrMsg:"+err.Error(), 2)
  260. }
  261. }()
  262. articleNewPublishDataList, e := models.GetIndustrialManagementArticleNewPublishData()
  263. if e != nil {
  264. err = errors.New("获取客户剩余报名次数失败 GetIndustrialManagementArticleNewPublishData, Err: " + e.Error())
  265. return
  266. }
  267. mapUPdateTime := make(map[int]string)
  268. var industrialManagementIds []int
  269. for _, v := range articleNewPublishDataList {
  270. if v.IndustrialManagementId > 0 {
  271. industrialManagementIds = append(industrialManagementIds, v.IndustrialManagementId)
  272. }
  273. mapUPdateTime[v.IndustrialManagementId] = v.UpdateTime
  274. }
  275. //时间线的更新时间
  276. listtimelinePublishdate, err := models.GetTimeLineReportIndustrialPublishdateList(industrialManagementIds)
  277. if err != nil && err.Error() != utils.ErrNoRow() {
  278. return
  279. }
  280. for _, v := range listtimelinePublishdate {
  281. if mapUPdateTime[v.IndustrialManagementId] != "" {
  282. if utils.StrTimeToTime(v.PublishDate).After(utils.StrTimeToTime(mapUPdateTime[v.IndustrialManagementId])) {
  283. mapUPdateTime[v.IndustrialManagementId] = v.PublishDate
  284. }
  285. }
  286. }
  287. err = models.UpdateIndustrialManagementArticleNewPublishData(mapUPdateTime)
  288. return
  289. }
  290. // HandleIndustryList预处理产业列表字段
  291. func HandleIndustryList(list []*models.IndustrialManagement, user *models.WxUserItem) (items []*models.IndustrialManagement, err error) {
  292. userId := user.UserId
  293. fllowList, err := models.GetUserFllowIndustrialList(userId)
  294. if err != nil {
  295. return
  296. }
  297. fllowMap := make(map[int]int)
  298. if len(fllowList) > 0 {
  299. for _, v := range fllowList {
  300. fllowMap[v.IndustrialManagementId] = v.IndustrialManagementId
  301. }
  302. }
  303. mapindustrialId, e := GetMicroRoadshowVideoMap()
  304. if e != nil {
  305. err = e
  306. return
  307. }
  308. //合并产业关联的标的
  309. listSubjcet, err := models.GetThemeHeatSubjectList("")
  310. if err != nil {
  311. return
  312. }
  313. industrialIdArr := make([]int, 0)
  314. for k, v := range list {
  315. list[k].Source = 1
  316. if fllowMap[v.IndustrialManagementId] > 0 {
  317. list[k].IsFollow = 1
  318. }
  319. industrialIdArr = append(industrialIdArr, v.IndustrialManagementId)
  320. if _, ok := mapindustrialId[v.IndustrialManagementId]; !ok {
  321. continue
  322. }
  323. videoSimple, au, e := GetindustryVideo(user, v.IndustrialManagementId)
  324. if e != nil {
  325. err = errors.New("获取产业关联的视频失败,GetindustryVideo " + e.Error())
  326. return
  327. }
  328. if videoSimple != nil && videoSimple.Id > 0 {
  329. v.IndustryVideo = videoSimple
  330. }
  331. v.AuthInfo = au
  332. }
  333. if len(industrialIdArr) > 0 {
  334. //合并产业关联的标的
  335. listSubjcet, err = models.GetIndustrialSubjectAllByIndustrialId(industrialIdArr)
  336. if err != nil {
  337. return
  338. }
  339. mapIndustrial := make(map[string]int)
  340. for _, v := range listSubjcet {
  341. for k2, v2 := range list {
  342. if v2.IndustrialManagementId == v.IndustrialManagementId && mapIndustrial[fmt.Sprint(v2.IndustrialManagementId, "Hz", v.SubjectName)] == 0 {
  343. list[k2].IndustrialSubjectList = append(list[k2].IndustrialSubjectList, v)
  344. mapIndustrial[fmt.Sprint(v2.IndustrialManagementId, "Hz", v.SubjectName)] = v2.IndustrialManagementId
  345. }
  346. }
  347. }
  348. }
  349. mapUPdateTime := make(map[int]string)
  350. articleIdArr := make([]int, 0)
  351. //获取这些产业下最新更新的文章
  352. listUpdateTime, err := models.GetNewArticleDetailByIndustrialIds(industrialIdArr)
  353. if err != nil && err.Error() != utils.ErrNoRow() {
  354. return
  355. }
  356. for _, v := range listUpdateTime {
  357. mapUPdateTime[v.IndustrialManagementId] = v.PublishDate
  358. articleIdArr = append(articleIdArr, v.ArticleId)
  359. }
  360. //时间线的更新时间
  361. // maptimelineUPdateTime := make(map[int]string)
  362. listtimelinePublishdate, err := models.GetTimeLineReportIndustrialPublishdateList(industrialIdArr)
  363. if err != nil && err.Error() != utils.ErrNoRow() {
  364. return
  365. }
  366. for _, v := range listtimelinePublishdate {
  367. if mapUPdateTime[v.IndustrialManagementId] != "" {
  368. if utils.StrTimeToTime(v.PublishDate).After(utils.StrTimeToTime(mapUPdateTime[v.IndustrialManagementId])) {
  369. mapUPdateTime[v.IndustrialManagementId] = v.PublishDate
  370. }
  371. }
  372. }
  373. //mapHistroyArticleId := make(map[int]int)
  374. //if userId > 0 {
  375. // listArticleHistory, e := models.GetUserToArticleHistory(userId, articleIdArr)
  376. // if e != nil && e.Error() != utils.ErrNoRow() {
  377. // err = errors.New("获取产业关联的视频失败,GetindustryVideo " + e.Error())
  378. // return
  379. // }
  380. // for _, v := range listArticleHistory {
  381. // mapHistroyArticleId[v.ArticleId] = v.ArticleId
  382. // }
  383. //}
  384. var industrialIds string
  385. for _, id := range industrialIdArr {
  386. industrialIds += strconv.Itoa(id) + ","
  387. }
  388. industrialIds = strings.TrimRight(industrialIds, ",")
  389. articleList, err := models.GetReportIndustrialReadNumList(userId, industrialIds, user.CreatedTime)
  390. mapHistroyindustrialId := make(map[int]int)
  391. for _, v := range articleList {
  392. mapHistroyindustrialId[v.IndustrialManagementId] = v.Readnum
  393. }
  394. nowTime := time.Now().Local()
  395. threeMonBefore := nowTime.AddDate(0, -3, 0)
  396. //查询用户今天是否看过时间线
  397. //haveMorningMeeting := false
  398. //var morningMeetingTime string
  399. recrodList, err := models.GetTimeLineRecordAllCount(user.UserId, time.Now().Format(utils.FormatDate))
  400. if err != nil {
  401. return
  402. }
  403. var industrialManagementIdstr string
  404. industrialIdMap := make(map[string]time.Time)
  405. for _, v := range recrodList {
  406. industrialManagementIdstr = strings.TrimLeft(v.Parameter, "PageSize=10&CurrentIndex=1&CategoryId=99999&IndustrialManagementId=")
  407. if createTime, ok := industrialIdMap[industrialManagementIdstr]; ok {
  408. if createTime.Before(v.CreateTime) {
  409. industrialIdMap[industrialManagementIdstr] = v.CreateTime
  410. }
  411. } else {
  412. industrialIdMap[industrialManagementIdstr] = v.CreateTime
  413. }
  414. }
  415. mmList, err := models.GetCygxMorningMeetingReviewsListByIndustrialIds(industrialIds)
  416. if err != nil {
  417. return
  418. }
  419. morningMeetingTimeMap := make(map[int]time.Time)
  420. for _, v := range mmList {
  421. morningMeetingTimeMap[v.IndustryId] = v.CreateTime
  422. }
  423. timeLineRedMap := make(map[int]bool, 0)
  424. for _, industrialId := range industrialIdArr {
  425. if createTime, ok := industrialIdMap[strconv.Itoa(industrialId)]; ok {
  426. if createTime.Before(morningMeetingTimeMap[industrialId]) {
  427. timeLineRedMap[industrialId] = true
  428. }
  429. }
  430. }
  431. for k, v := range list {
  432. list[k].UpdateTime = utils.TimeRemoveHms(mapUPdateTime[v.IndustrialManagementId])
  433. if userId > 0 {
  434. //如果文章没有阅读,而且,文章的发布时间晚于项目的上线时间,而且文章的发布时间晚于用户的注册时间,就进行标红处理
  435. if mapHistroyindustrialId[v.IndustrialManagementId] == 0 || timeLineRedMap[v.IndustrialManagementId] {
  436. if user.CreatedTime.Before(utils.StrTimeToTime(mapUPdateTime[v.IndustrialManagementId])) && utils.StrTimeToTime(utils.OnlineTime).Before(utils.StrTimeToTime(mapUPdateTime[v.IndustrialManagementId])) {
  437. list[k].IsRed = true
  438. }
  439. }
  440. } else {
  441. if utils.StrTimeToTime(utils.OnlineTime).Before(utils.StrTimeToTime(mapUPdateTime[v.IndustrialManagementId])) {
  442. list[k].IsRed = true
  443. }
  444. list[k].IsFollow = 0
  445. }
  446. list[k].UpdateTime = utils.TimeRemoveHms(mapUPdateTime[v.IndustrialManagementId])
  447. if userId > 0 {
  448. //如果文章没有阅读,而且,文章的发布时间晚于项目的上线时间,而且文章的发布时间晚于用户的注册时间,就进行标红处理
  449. if mapHistroyindustrialId[v.IndustrialManagementId] == 0 || timeLineRedMap[v.IndustrialManagementId] {
  450. if user.CreatedTime.Before(utils.StrTimeToTime(mapUPdateTime[v.IndustrialManagementId])) && utils.StrTimeToTime(utils.OnlineTime).Before(utils.StrTimeToTime(mapUPdateTime[v.IndustrialManagementId])) {
  451. list[k].IsRed = true
  452. }
  453. }
  454. } else {
  455. if utils.StrTimeToTime(utils.OnlineTime).Before(utils.StrTimeToTime(mapUPdateTime[v.IndustrialManagementId])) {
  456. list[k].IsRed = true
  457. }
  458. list[k].IsFollow = 0
  459. }
  460. // 关联报告发布时间均在3个月内则标记New
  461. if v.MinReportTime != "" {
  462. t, e := time.Parse(utils.FormatDateTime, v.MinReportTime)
  463. if e != nil {
  464. err = errors.New("报告最早发布时间有误,GetindustryVideo " + e.Error())
  465. return
  466. }
  467. if t.After(threeMonBefore) {
  468. list[k].IsNew = true
  469. }
  470. }
  471. }
  472. items = list
  473. return
  474. }
  475. // 通过文章ID获取文章所关联的产业
  476. func GetArticleIndustrialByArticleId(articleIds []int) (itemMap map[int][]*models.IndustrialManagementResp, err error) {
  477. lenarticleIds := len(articleIds)
  478. if lenarticleIds == 0 {
  479. return
  480. }
  481. var condition string
  482. var pars []interface{}
  483. condition = ` AND mg.article_id IN (` + utils.GetOrmInReplace(lenarticleIds) + `)`
  484. pars = append(pars, articleIds)
  485. industrialList, err := models.GetIndustrialListByarticleId(pars, condition)
  486. if err != nil {
  487. return
  488. }
  489. industrialMap := make(map[int][]*models.IndustrialManagementResp)
  490. if len(industrialList) > 0 {
  491. for _, v := range industrialList {
  492. item := new(models.IndustrialManagementResp)
  493. item.IndustrialManagementId = v.IndustrialManagementId
  494. item.IndustryName = v.IndustryName
  495. item.ChartPermissionId = v.ChartPermissionId
  496. industrialMap[v.ArticleId] = append(industrialMap[v.ArticleId], item)
  497. }
  498. }
  499. itemMap = industrialMap
  500. return
  501. }
  502. func GetArticleTypeMap() (nameMapResp map[int]string, buttonStyleMapResp map[int]string, err error) {
  503. condition := " AND is_show_yanx = 1 "
  504. list, e := models.GetCygxArticleTypeListCondition(condition)
  505. if e != nil {
  506. err = errors.New("报告最早发布时间有误,GetindustryVideo " + e.Error())
  507. return
  508. }
  509. nameMap := make(map[int]string)
  510. buttonStyleMap := make(map[int]string)
  511. if len(list) > 0 {
  512. for _, v := range list {
  513. nameMap[v.ArticleTypeId] = v.ArticleTypeName
  514. buttonStyleMap[v.ArticleTypeId] = v.ButtonStyle
  515. }
  516. }
  517. nameMapResp = nameMap
  518. buttonStyleMapResp = buttonStyleMap
  519. return
  520. }
  521. // IndustrialManagementHotMapGropuPermission获取近一个月报告阅读数量最多的产业信息 根据行业分组
  522. func IndustrialManagementHotMapGropuPermission() (mapResp map[int]bool, err error) {
  523. var topCond string
  524. var topPars []interface{}
  525. toplist, err := models.GetTopOneMonthArtReadNumIndustryAll(topCond, topPars)
  526. if err != nil {
  527. return
  528. }
  529. mapPermission := make(map[int][]*models.IndustrialManagement)
  530. mapPermissionMax := make(map[int]int)
  531. for _, v := range toplist {
  532. item := new(models.IndustrialManagement)
  533. item.ChartPermissionId = v.ChartPermissionId
  534. item.IndustrialManagementId = v.IndustrialManagementId
  535. item.ArticleReadNum = v.ArticleReadNum
  536. mapPermission[v.ChartPermissionId] = append(mapPermission[v.ChartPermissionId], item)
  537. }
  538. for k, v := range mapPermission {
  539. for _, item := range v {
  540. //mapPermissionMax[k] = item.ArticleReadNum
  541. if item.ArticleReadNum > mapPermissionMax[k] {
  542. mapPermissionMax[k] = item.ArticleReadNum
  543. }
  544. }
  545. }
  546. mapResp = make(map[int]bool, 0)
  547. for _, v := range toplist {
  548. if v.ArticleReadNum == mapPermissionMax[v.ChartPermissionId] {
  549. mapResp[v.IndustrialManagementId] = true
  550. }
  551. }
  552. return
  553. }