industrial_management.go 37 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172
  1. package services
  2. import (
  3. "context"
  4. "encoding/json"
  5. "errors"
  6. "fmt"
  7. "hongze/hongze_cygx/models"
  8. "hongze/hongze_cygx/utils"
  9. "strconv"
  10. "strings"
  11. "time"
  12. )
  13. // 修改标签状态
  14. func UpdateIndustrialManagementLabel(cont context.Context) (err error) {
  15. defer func() {
  16. if err != nil {
  17. fmt.Println("修改失败,Err:", err.Error())
  18. }
  19. }()
  20. fmt.Println("修改状态0000")
  21. go models.UpdateIndustrialIsNewLabel()
  22. list, err := models.GetIndustrialMorethan10()
  23. if err != nil {
  24. return err
  25. }
  26. if len(list) == 0 {
  27. return
  28. }
  29. var idStr string
  30. for _, v := range list {
  31. idStr += v.IndustrialManagementId + ","
  32. }
  33. idStr = strings.TrimRight(idStr, ",")
  34. go models.UpdateIndustrialIsDeepLabel(idStr)
  35. //fmt.Println(idStr)
  36. //go models.UpdateActivitySattusToComplete()
  37. fmt.Println("修改状态完成")
  38. return
  39. }
  40. // 修改状态
  41. func UpdateIndustrialManagementSubjectNnames() (err error) {
  42. defer func() {
  43. if err != nil {
  44. fmt.Println("修改失败,Err:", err.Error())
  45. }
  46. }()
  47. fmt.Println("修改产业关联标的")
  48. list, err := models.GetIndustrialManagementIds()
  49. if err != nil {
  50. return err
  51. }
  52. for _, v := range list {
  53. //fmt.Println(v.IndustrialManagementId)
  54. var nameSub string
  55. listSub, errdSub := models.GetcygxIndustrialSubject(v.IndustrialManagementId)
  56. if errdSub != nil {
  57. return errdSub
  58. }
  59. for _, v2 := range listSub {
  60. fmt.Println(v2.SubjectName)
  61. nameSub += v2.SubjectName + ","
  62. }
  63. nameSub += v.IndustryName
  64. go models.UpdateIndustrialManagementSubjectNames(nameSub, v.IndustrialManagementId)
  65. }
  66. if len(list) == 0 {
  67. return
  68. }
  69. fmt.Println("修改状态完成")
  70. return
  71. }
  72. func ChageIndustrialArticleNum(cont context.Context) (err error) {
  73. IndustrialHzArticleNumUpdate()
  74. IndustrialYxArticleNumUpdate()
  75. IndustrialActivityNumUpdate()
  76. return
  77. }
  78. //func init() {
  79. // IndustrialHzArticleNumUpdate()
  80. // IndustrialYxArticleNumUpdate()
  81. // IndustrialActivityNumUpdate()
  82. //}
  83. // 更改弘则对应的报告关联产业近一个月的阅读量
  84. func IndustrialHzArticleNumUpdate() (err error) {
  85. defer func() {
  86. if err != nil {
  87. //fmt.Println(err)
  88. go utils.SendAlarmMsg("更改弘则对应的报告关联产业近一个月的阅读量失败"+err.Error(), 2)
  89. go utils.SendEmail(utils.APPNAME+"【"+utils.RunMode+"】"+"更改弘则对应的报告关联产业近一个月的阅读量失败失败提醒", err.Error(), utils.EmailSendToUsers)
  90. }
  91. }()
  92. err = models.UpdateIndustrialManagementArtticleReadNum()
  93. if err != nil {
  94. return
  95. }
  96. articleTypeIds, err := GetYanXuanArticleTypeIds()
  97. if err != nil {
  98. return
  99. }
  100. var condition string
  101. if articleTypeIds == "" {
  102. return
  103. }
  104. condition = ` AND a.article_type_id NOT IN (` + articleTypeIds + `) `
  105. list, err := models.GetIndustrialManagementArtHistoryCount(condition)
  106. if err != nil {
  107. return
  108. }
  109. for _, v := range list {
  110. err = models.UpdateIndustrialManagementArtReadNum(v.Count, v.IndustrialManagementId)
  111. if err != nil {
  112. return
  113. }
  114. }
  115. return err
  116. }
  117. // 更改研选对应的报告关联产业近一个月的阅读量
  118. func IndustrialYxArticleNumUpdate() (err error) {
  119. defer func() {
  120. if err != nil {
  121. //fmt.Println(err)
  122. go utils.SendAlarmMsg("更改研选对应的报告关联产业近一个月的阅读量失败"+err.Error(), 2)
  123. go utils.SendEmail(utils.APPNAME+"【"+utils.RunMode+"】"+"更改研选对应的报告关联产业近一个月的阅读量失败提醒", err.Error(), utils.EmailSendToUsers)
  124. }
  125. }()
  126. articleTypeIds, err := GetYanXuanArticleTypeIds()
  127. if err != nil {
  128. return
  129. }
  130. var condition string
  131. if articleTypeIds == "" {
  132. return
  133. }
  134. condition = ` AND a.article_type_id IN (` + articleTypeIds + `) `
  135. list, err := models.GetIndustrialManagementArtHistoryCount(condition)
  136. if err != nil {
  137. return
  138. }
  139. for _, v := range list {
  140. err = models.UpdateIndustrialManagementArtYanXuanReadNum(v.Count, v.IndustrialManagementId)
  141. if err != nil {
  142. return
  143. }
  144. }
  145. return err
  146. }
  147. // 更改活动关联产业近一个月的到会量
  148. func IndustrialActivityNumUpdate() (err error) {
  149. defer func() {
  150. if err != nil {
  151. //fmt.Println(err)
  152. go utils.SendAlarmMsg("更改活动关联产业近一个月的到会量失败"+err.Error(), 2)
  153. go utils.SendEmail(utils.APPNAME+"【"+utils.RunMode+"】"+"更改活动关联产业近一个月的到会量失败", err.Error(), utils.EmailSendToUsers)
  154. }
  155. }()
  156. list, err := models.GetIndustrialManagementActivityHistoryCount()
  157. if err != nil {
  158. return
  159. }
  160. for _, v := range list {
  161. err = models.UpdateIndustrialManagementActivityNum(v.Count, v.IndustrialManagementId)
  162. if err != nil {
  163. return
  164. }
  165. }
  166. return err
  167. }
  168. func ReportBillboardUpdate(cont context.Context) (err error) {
  169. //修改产业关注数量
  170. go IndustryFllowCountUpdate()
  171. //修改文章收藏数量
  172. go ArticleCollectCountUpdate()
  173. return
  174. }
  175. // 修改产业关注数量
  176. func IndustryFllowCountUpdate() (err error) {
  177. defer func() {
  178. if err != nil {
  179. go utils.SendAlarmMsg("修改产业关注数量信息失败"+err.Error(), 2)
  180. go utils.SendEmail(utils.APPNAME+"【"+utils.RunMode+"】"+"失败提醒", "GetCeLueArticlePv ErrMsg:"+err.Error(), utils.EmailSendToUsers)
  181. }
  182. }()
  183. fllowList, err := models.GetUserFllowIndustrialCountList()
  184. if err != nil {
  185. return
  186. }
  187. for _, v := range fllowList {
  188. err = models.UpdateIndustrialManagementFllowNum(v.Num, v.IndustrialManagementId)
  189. if err != nil {
  190. return
  191. }
  192. }
  193. return err
  194. }
  195. // 修改文章收藏数量
  196. func ArticleCollectCountUpdate() (err error) {
  197. defer func() {
  198. if err != nil {
  199. go utils.SendAlarmMsg("修改文章收藏数量信息失败"+err.Error(), 2)
  200. go utils.SendEmail(utils.APPNAME+"【"+utils.RunMode+"】"+"失败提醒", "修改文章收藏数量信息失败 ErrMsg:"+err.Error(), utils.EmailSendToUsers)
  201. }
  202. }()
  203. collectList, err := models.GetUserArticleCollectList()
  204. if err != nil {
  205. return
  206. }
  207. for _, v := range collectList {
  208. err = models.UpdateArticleCollectCountNum(v.Num, v.ArticleId)
  209. if err != nil {
  210. return
  211. }
  212. }
  213. return err
  214. }
  215. // 根据行业处理所选的全部赛道字段
  216. func DoXzsChooseSend(chartPermissionName string) string {
  217. var allIn string
  218. if chartPermissionName == utils.YI_YAO_NAME {
  219. allIn = "all_in_yi_yao"
  220. } else if chartPermissionName == utils.XIAO_FEI_NAME {
  221. allIn = "all_in_xiao_fei"
  222. } else if chartPermissionName == utils.KE_JI_NAME {
  223. allIn = "all_in_ke_ji"
  224. } else if chartPermissionName == utils.ZHI_ZAO_NAME {
  225. allIn = "all_in_zhi_zao"
  226. } else if chartPermissionName == utils.CHART_PERMISSION_NAME_MF_YANXUAN {
  227. allIn = "all_in_yan_xuan"
  228. }
  229. return allIn
  230. }
  231. // 行业关注或者取消关注的时候,对于用户全部赛道的影响
  232. func IndustryFllowWithTrack(industrialManagementId, count, uid int) (err error) {
  233. defer func() {
  234. if err != nil {
  235. fmt.Println(err)
  236. go utils.SendAlarmMsg("修改行业关注或者取消关注的时候,对于用户全部赛道的影响信息失败"+err.Error(), 2)
  237. go utils.SendEmail(utils.APPNAME+"【"+utils.RunMode+"】"+"失败提醒", "修改行业关注或者取消关注的时候,对于用户全部赛道的影响信息失败 ErrMsg:"+err.Error(), utils.EmailSendToUsers)
  238. }
  239. }()
  240. detail, err := models.GetIndustrialManagementDetail(industrialManagementId)
  241. if err != nil {
  242. return err
  243. }
  244. categoryinfo, err := models.GetChartPermissionById(detail.ChartPermissionId)
  245. if err != nil {
  246. return err
  247. }
  248. var allIn string
  249. allIn = DoXzsChooseSend(categoryinfo.PermissionName)
  250. if allIn != "" {
  251. //如果取消关注就把该赛道设置为非全部赛道
  252. if count == 1 {
  253. err = models.UpdateCygxXzsChooseSendIsAllIn(allIn, 0, uid)
  254. if err != nil {
  255. return err
  256. }
  257. } else {
  258. //医药、消费、科技、智造、研选下的产业赛道
  259. mapIndustrial := make(map[int][]*models.IndustrialManagementRep)
  260. industrialList, err := models.GetindustrialManagement()
  261. if err != nil {
  262. return err
  263. }
  264. for _, v := range industrialList {
  265. mapIndustrial[v.ChartPermissionId] = append(mapIndustrial[v.ChartPermissionId], v)
  266. }
  267. fllowNum, err := models.GetCountCygxIndustryFllowByUidAndChartPermissionId(uid, detail.ChartPermissionId)
  268. if err != nil {
  269. return err
  270. }
  271. if fllowNum == len(mapIndustrial[detail.ChartPermissionId]) {
  272. err = models.UpdateCygxXzsChooseSendIsAllIn(allIn, 1, uid)
  273. if err != nil {
  274. return err
  275. }
  276. }
  277. }
  278. }
  279. return err
  280. }
  281. //func init() {
  282. //IndustryFllowUserLabel(136, 16, 5660)
  283. //UserLabelLogReduce()
  284. //}
  285. // GetIndustryNewLabelMap 获取产业【新】标签Map
  286. func GetIndustryNewLabelMap(industryIds []int) (labelMap map[int]bool, err error) {
  287. labelMap = make(map[int]bool, 0)
  288. industryIdLen := len(industryIds)
  289. if industryIdLen == 0 {
  290. return
  291. }
  292. // 获取产业关联的报告最早发布时间及最近的发布时间
  293. var timeCond string
  294. var timePars []interface{}
  295. timeCond += ` AND b.publish_status = 1`
  296. if industryIdLen > 0 {
  297. timeCond += ` AND a.industrial_management_id IN (` + utils.GetOrmInReplace(industryIdLen) + `)`
  298. timePars = append(timePars, industryIds)
  299. }
  300. //只要弘则报告,不要研选报告
  301. timeCond += ` AND b.article_id < ? `
  302. timePars = append(timePars, utils.SummaryArticleId)
  303. industryTimeList, e := models.GetIndustryArticleMinMaxPublishTime(timeCond, timePars)
  304. if e != nil {
  305. err = errors.New("获取产业文章最大最小发布时间失败, Err: " + e.Error())
  306. return
  307. }
  308. // 判断产业是否为新
  309. nowTime := time.Now().Local()
  310. threeMonthBefore := nowTime.AddDate(0, -3, 0)
  311. nullTime, _ := time.ParseInLocation(utils.FormatDateTime, "0001-01-01 00:00:00", time.Local)
  312. industryMap := make(map[int]*models.IndustryArticleMinMaxPublishTime, 0)
  313. for i := range industryTimeList {
  314. industryMap[industryTimeList[i].IndustrialManagementId] = industryTimeList[i]
  315. }
  316. for i := range industryIds {
  317. iid := industryIds[i]
  318. item := industryMap[iid]
  319. if item != nil {
  320. // 最早发布时间为空 / 最早发布时间在三个月前之后
  321. if item.MinPublishTime.Equal(nullTime) || (item.MinPublishTime.After(threeMonthBefore)) {
  322. labelMap[iid] = true
  323. }
  324. } else {
  325. // 产业无报告, 则为新产业
  326. labelMap[iid] = true
  327. }
  328. }
  329. return
  330. }
  331. //func init() {
  332. // GetIndustrialManagementArticleNewPublishData()
  333. //}
  334. // 批量修改获取产业关联文章的最新发布时间
  335. func GetIndustrialManagementArticleNewPublishData() (err error) {
  336. defer func() {
  337. if err != nil {
  338. go utils.SendAlarmMsg("批量修改获取产业关联文章的最新发布时间"+"GetIndustrialManagementArticleNewPublishData ErrMsg:"+err.Error(), 2)
  339. }
  340. }()
  341. articleNewPublishDataList, e := models.GetIndustrialManagementArticleNewPublishData()
  342. if e != nil {
  343. err = errors.New("获取客户剩余报名次数失败 GetIndustrialManagementArticleNewPublishData, Err: " + e.Error())
  344. return
  345. }
  346. mapUPdateTime := make(map[int]string)
  347. var industrialManagementIds []int
  348. for _, v := range articleNewPublishDataList {
  349. if v.IndustrialManagementId > 0 {
  350. industrialManagementIds = append(industrialManagementIds, v.IndustrialManagementId)
  351. }
  352. mapUPdateTime[v.IndustrialManagementId] = v.UpdateTime
  353. }
  354. //时间线的更新时间
  355. listtimelinePublishdate, err := models.GetTimeLineReportIndustrialPublishdateList(industrialManagementIds)
  356. if err != nil && err.Error() != utils.ErrNoRow() {
  357. return
  358. }
  359. for _, v := range listtimelinePublishdate {
  360. if mapUPdateTime[v.IndustrialManagementId] != "" {
  361. if utils.StrTimeToTime(v.PublishDate).After(utils.StrTimeToTime(mapUPdateTime[v.IndustrialManagementId])) {
  362. mapUPdateTime[v.IndustrialManagementId] = v.PublishDate
  363. }
  364. }
  365. }
  366. err = models.UpdateIndustrialManagementArticleNewPublishData(mapUPdateTime)
  367. return
  368. }
  369. // HandleIndustryList预处理产业列表字段
  370. func HandleIndustryList(list []*models.IndustrialManagement, user *models.WxUserItem) (items []*models.IndustrialManagement, err error) {
  371. userId := user.UserId
  372. fllowList, err := models.GetUserFllowIndustrialList(userId)
  373. if err != nil {
  374. return
  375. }
  376. fllowMap := make(map[int]int)
  377. if len(fllowList) > 0 {
  378. for _, v := range fllowList {
  379. fllowMap[v.IndustrialManagementId] = v.IndustrialManagementId
  380. }
  381. }
  382. mapindustrialId, e := GetMicroRoadshowVideoMap()
  383. if e != nil {
  384. err = e
  385. return
  386. }
  387. followTypeMap := GetCygxIndustryFllowListTypeMapByMobile(user.Mobile) // 关注的对应状态
  388. //合并产业关联的标的
  389. listSubjcet, err := models.GetThemeHeatSubjectList("")
  390. if err != nil {
  391. return
  392. }
  393. industrialIdArr := make([]int, 0)
  394. for k, v := range list {
  395. list[k].Source = 1
  396. if fllowMap[v.IndustrialManagementId] > 0 {
  397. list[k].IsFollow = 1
  398. }
  399. list[k].FollowType = followTypeMap[v.IndustrialManagementId]
  400. industrialIdArr = append(industrialIdArr, v.IndustrialManagementId)
  401. if _, ok := mapindustrialId[v.IndustrialManagementId]; !ok {
  402. continue
  403. }
  404. videoSimple, au, e := GetindustryVideo(user, v.IndustrialManagementId)
  405. if e != nil {
  406. err = errors.New("获取产业关联的视频失败,GetindustryVideo " + e.Error())
  407. return
  408. }
  409. if videoSimple != nil && videoSimple.Id > 0 {
  410. v.IndustryVideo = videoSimple
  411. }
  412. v.AuthInfo = au
  413. }
  414. if len(industrialIdArr) > 0 {
  415. //合并产业关联的标的
  416. listSubjcet, err = models.GetIndustrialSubjectAllByIndustrialId(industrialIdArr)
  417. if err != nil {
  418. return
  419. }
  420. mapIndustrial := make(map[string]int)
  421. for _, v := range listSubjcet {
  422. for k2, v2 := range list {
  423. if v2.IndustrialManagementId == v.IndustrialManagementId && mapIndustrial[fmt.Sprint(v2.IndustrialManagementId, "Hz", v.SubjectName)] == 0 {
  424. list[k2].IndustrialSubjectList = append(list[k2].IndustrialSubjectList, v)
  425. mapIndustrial[fmt.Sprint(v2.IndustrialManagementId, "Hz", v.SubjectName)] = v2.IndustrialManagementId
  426. }
  427. }
  428. }
  429. }
  430. mapUPdateTime := make(map[int]string)
  431. articleIdArr := make([]int, 0)
  432. //获取这些产业下最新更新的文章
  433. listUpdateTime, err := models.GetNewArticleDetailByIndustrialIds(industrialIdArr)
  434. if err != nil && err.Error() != utils.ErrNoRow() {
  435. return
  436. }
  437. for _, v := range listUpdateTime {
  438. mapUPdateTime[v.IndustrialManagementId] = v.PublishDate
  439. articleIdArr = append(articleIdArr, v.ArticleId)
  440. }
  441. //时间线的更新时间
  442. // maptimelineUPdateTime := make(map[int]string)
  443. listtimelinePublishdate, err := models.GetTimeLineReportIndustrialPublishdateList(industrialIdArr)
  444. if err != nil && err.Error() != utils.ErrNoRow() {
  445. return
  446. }
  447. for _, v := range listtimelinePublishdate {
  448. if mapUPdateTime[v.IndustrialManagementId] != "" {
  449. if utils.StrTimeToTime(v.PublishDate).After(utils.StrTimeToTime(mapUPdateTime[v.IndustrialManagementId])) {
  450. mapUPdateTime[v.IndustrialManagementId] = v.PublishDate
  451. }
  452. }
  453. }
  454. //产品内测的更新时间线
  455. listtProductInterior, err := models.GetNewProductInteriorByIndustrialIds(industrialIdArr)
  456. if err != nil && err.Error() != utils.ErrNoRow() {
  457. return
  458. }
  459. for _, v := range listtProductInterior {
  460. if mapUPdateTime[v.IndustrialManagementId] != "" {
  461. if utils.StrTimeToTime(v.PublishDate).After(utils.StrTimeToTime(mapUPdateTime[v.IndustrialManagementId])) {
  462. mapUPdateTime[v.IndustrialManagementId] = v.PublishDate
  463. }
  464. }
  465. }
  466. //mapHistroyArticleId := make(map[int]int)
  467. //if userId > 0 {
  468. // listArticleHistory, e := models.GetUserToArticleHistory(userId, articleIdArr)
  469. // if e != nil && e.Error() != utils.ErrNoRow() {
  470. // err = errors.New("获取产业关联的视频失败,GetindustryVideo " + e.Error())
  471. // return
  472. // }
  473. // for _, v := range listArticleHistory {
  474. // mapHistroyArticleId[v.ArticleId] = v.ArticleId
  475. // }
  476. //}
  477. var industrialIds string
  478. for _, id := range industrialIdArr {
  479. industrialIds += strconv.Itoa(id) + ","
  480. }
  481. industrialIds = strings.TrimRight(industrialIds, ",")
  482. articleList, err := models.GetReportIndustrialReadNumList(userId, industrialIds, user.CreatedTime)
  483. mapHistroyindustrialId := make(map[int]int)
  484. for _, v := range articleList {
  485. mapHistroyindustrialId[v.IndustrialManagementId] = v.Readnum
  486. }
  487. nowTime := time.Now().Local()
  488. threeMonBefore := nowTime.AddDate(0, -3, 0)
  489. //查询用户今天是否看过时间线
  490. //haveMorningMeeting := false
  491. //var morningMeetingTime string
  492. recrodList, err := models.GetCygxTimelineLogCount(user.UserId, industrialIdArr)
  493. if err != nil && err.Error() != utils.ErrNoRow() {
  494. return
  495. }
  496. var industrialManagementIdstr string
  497. industrialIdMap := make(map[string]time.Time)
  498. for _, v := range recrodList {
  499. industrialManagementIdstr = strconv.Itoa(v.IndustrialManagementId)
  500. industrialIdMap[industrialManagementIdstr] = v.ModifyTime
  501. //industrialManagementIdstr = strings.TrimLeft(v.Parameter, "PageSize=10&CurrentIndex=1&CategoryId=99999&IndustrialManagementId=")
  502. //if createTime, ok := industrialIdMap[industrialManagementIdstr]; ok {
  503. // if createTime.Before(v.CreateTime) {
  504. // industrialIdMap[industrialManagementIdstr] = v.CreateTime
  505. // }
  506. //} else {
  507. // industrialIdMap[industrialManagementIdstr] = v.CreateTime
  508. //}
  509. }
  510. mmList, err := models.GetCygxMorningMeetingReviewsListByIndustrialIds(industrialIds)
  511. if err != nil {
  512. return
  513. }
  514. morningMeetingTimeMap := make(map[int]time.Time)
  515. for _, v := range mmList {
  516. morningMeetingTimeMap[v.IndustryId] = v.CreateTime
  517. }
  518. timeLineRedMap := make(map[int]bool, 0)
  519. for _, industrialId := range industrialIdArr {
  520. if createTime, ok := industrialIdMap[strconv.Itoa(industrialId)]; ok {
  521. if createTime.Before(morningMeetingTimeMap[industrialId]) {
  522. timeLineRedMap[industrialId] = true
  523. }
  524. }
  525. }
  526. hotMapindustrial, err := IndustrialManagementHotMapGropuPermission()
  527. if err != nil {
  528. return
  529. }
  530. for k, v := range list {
  531. list[k].UpdateTime = utils.TimeRemoveHms(mapUPdateTime[v.IndustrialManagementId])
  532. list[k].IsHot = hotMapindustrial[v.IndustrialManagementId]
  533. if userId > 0 {
  534. //如果文章没有阅读,而且,文章的发布时间晚于项目的上线时间,而且文章的发布时间晚于用户的注册时间,就进行标红处理
  535. if mapHistroyindustrialId[v.IndustrialManagementId] == 0 || timeLineRedMap[v.IndustrialManagementId] {
  536. if user.CreatedTime.Before(utils.StrTimeToTime(mapUPdateTime[v.IndustrialManagementId])) && utils.StrTimeToTime(utils.OnlineTime).Before(utils.StrTimeToTime(mapUPdateTime[v.IndustrialManagementId])) {
  537. list[k].IsRed = true
  538. }
  539. }
  540. } else {
  541. if utils.StrTimeToTime(utils.OnlineTime).Before(utils.StrTimeToTime(mapUPdateTime[v.IndustrialManagementId])) {
  542. list[k].IsRed = true
  543. }
  544. list[k].IsFollow = 0
  545. }
  546. list[k].UpdateTime = utils.TimeRemoveHms(mapUPdateTime[v.IndustrialManagementId])
  547. if userId > 0 {
  548. //如果文章没有阅读,而且,文章的发布时间晚于项目的上线时间,而且文章的发布时间晚于用户的注册时间,就进行标红处理
  549. if mapHistroyindustrialId[v.IndustrialManagementId] == 0 || timeLineRedMap[v.IndustrialManagementId] {
  550. if user.CreatedTime.Before(utils.StrTimeToTime(mapUPdateTime[v.IndustrialManagementId])) && utils.StrTimeToTime(utils.OnlineTime).Before(utils.StrTimeToTime(mapUPdateTime[v.IndustrialManagementId])) {
  551. list[k].IsRed = true
  552. }
  553. }
  554. } else {
  555. if utils.StrTimeToTime(utils.OnlineTime).Before(utils.StrTimeToTime(mapUPdateTime[v.IndustrialManagementId])) {
  556. list[k].IsRed = true
  557. }
  558. list[k].IsFollow = 0
  559. }
  560. // 关联报告发布时间均在3个月内则标记New
  561. if v.MinReportTime != "" {
  562. t, e := time.Parse(utils.FormatDateTime, v.MinReportTime)
  563. if e != nil {
  564. err = errors.New("报告最早发布时间有误,GetindustryVideo " + e.Error())
  565. return
  566. }
  567. if t.After(threeMonBefore) {
  568. list[k].IsNew = true
  569. }
  570. }
  571. }
  572. items = list
  573. return
  574. }
  575. // HandleIndustryList预处理产业列表字段
  576. func HandleIndustryListResource(list []*models.IndustrialManagement, user *models.WxUserItem, resource string) (items []*models.IndustrialManagement, err error) {
  577. userId := user.UserId
  578. fllowList, err := models.GetUserFllowIndustrialList(userId)
  579. if err != nil {
  580. return
  581. }
  582. fllowMap := make(map[int]int)
  583. if len(fllowList) > 0 {
  584. for _, v := range fllowList {
  585. fllowMap[v.IndustrialManagementId] = v.IndustrialManagementId
  586. }
  587. }
  588. hotMap, e := IndustrialManagementHotMapGropuPermission()
  589. if e != nil {
  590. err = errors.New("获取hot标签失败,IndustrialManagementHotMapGropuPermission " + e.Error())
  591. return
  592. }
  593. var condition string
  594. var pars []interface{}
  595. articleTypeIds, _ := GetYanXuanArticleTypeIds()
  596. //给默认值
  597. if resource != "Yx" {
  598. resource = "Hz"
  599. }
  600. if articleTypeIds != "" {
  601. if resource == "Yx" {
  602. condition = ` AND a.publish_status = 1 AND a.article_type_id IN (` + articleTypeIds + `) `
  603. } else {
  604. condition = ` AND a.article_type_id NOT IN (` + articleTypeIds + `) `
  605. }
  606. }
  607. mapindustrialId, e := GetMicroRoadshowVideoMap()
  608. if e != nil {
  609. err = e
  610. return
  611. }
  612. //合并产业关联的标的
  613. listSubjcet, err := models.GetThemeHeatSubjectList("")
  614. if err != nil {
  615. return
  616. }
  617. industrialIdArr := make([]int, 0)
  618. for k, v := range list {
  619. list[k].Source = 1
  620. if fllowMap[v.IndustrialManagementId] > 0 {
  621. list[k].IsFollow = 1
  622. }
  623. v.IsHot = hotMap[v.IndustrialManagementId]
  624. industrialIdArr = append(industrialIdArr, v.IndustrialManagementId)
  625. if _, ok := mapindustrialId[v.IndustrialManagementId]; !ok {
  626. continue
  627. }
  628. videoSimple, au, e := GetindustryVideo(user, v.IndustrialManagementId)
  629. if e != nil {
  630. err = errors.New("获取产业关联的视频失败,GetindustryVideo " + e.Error())
  631. return
  632. }
  633. if videoSimple != nil && videoSimple.Id > 0 {
  634. v.IndustryVideo = videoSimple
  635. }
  636. v.AuthInfo = au
  637. }
  638. if len(industrialIdArr) > 0 {
  639. //合并产业关联的标的
  640. conditionSubject := condition + ` AND m.industrial_management_id IN (` + utils.GetOrmInReplace(len(industrialIdArr)) + `)`
  641. pars = append(pars, industrialIdArr)
  642. listSubjcet, err = models.GetIndustrialSubjectAllByIndustrialIdcondition(pars, conditionSubject)
  643. if err != nil {
  644. return
  645. }
  646. mapIndustrial := make(map[string]int)
  647. for _, v := range listSubjcet {
  648. for k2, v2 := range list {
  649. if v2.IndustrialManagementId == v.IndustrialManagementId && mapIndustrial[fmt.Sprint(v2.IndustrialManagementId, "Hz", v.SubjectName)] == 0 {
  650. list[k2].IndustrialSubjectList = append(list[k2].IndustrialSubjectList, v)
  651. mapIndustrial[fmt.Sprint(v2.IndustrialManagementId, "Hz", v.SubjectName)] = v2.IndustrialManagementId
  652. }
  653. }
  654. }
  655. }
  656. //获取产业关联的的文章用户是否阅读
  657. mapIndustrialArticleHistory, err := GetUserArticleHistoryIndustrialNewPublishDate(user, industrialIdArr, articleTypeIds, resource)
  658. if err != nil {
  659. err = errors.New("获取产业关联的的文章用户是否阅读失败 " + err.Error())
  660. return
  661. }
  662. mapUPdateTime := make(map[int]string)
  663. articleIdArr := make([]int, 0)
  664. //获取这些产业下最新更新的文章
  665. var conditionindustrial string
  666. var parsindustrial []interface{}
  667. var industrialIds string
  668. if len(industrialIdArr) > 0 {
  669. conditionindustrial = condition + ` AND mg.industrial_management_id IN (` + utils.GetOrmInReplace(len(industrialIdArr)) + `)`
  670. parsindustrial = append(parsindustrial, industrialIdArr)
  671. listUpdateTime, e := models.GetNewArticleDetailByIndustrialIdscondition(parsindustrial, conditionindustrial)
  672. if e != nil && e.Error() != utils.ErrNoRow() {
  673. err = errors.New("GetNewArticleDetailByIndustrialIds Err " + e.Error())
  674. return
  675. }
  676. for _, v := range listUpdateTime {
  677. mapUPdateTime[v.IndustrialManagementId] = v.PublishDate
  678. articleIdArr = append(articleIdArr, v.ArticleId)
  679. }
  680. //时间线的更新时间
  681. // maptimelineUPdateTime := make(map[int]string)
  682. listtimelinePublishdate, e := models.GetTimeLineReportIndustrialPublishdateList(industrialIdArr)
  683. if e != nil && e.Error() != utils.ErrNoRow() {
  684. err = e
  685. return
  686. }
  687. for _, v := range listtimelinePublishdate {
  688. if mapUPdateTime[v.IndustrialManagementId] != "" {
  689. if utils.StrTimeToTime(v.PublishDate).After(utils.StrTimeToTime(mapUPdateTime[v.IndustrialManagementId])) {
  690. mapUPdateTime[v.IndustrialManagementId] = v.PublishDate
  691. }
  692. }
  693. }
  694. //产品内测的更新时间线
  695. listtProductInterior, e := models.GetNewProductInteriorByIndustrialIds(industrialIdArr)
  696. if e != nil && e.Error() != utils.ErrNoRow() {
  697. err = e
  698. return
  699. }
  700. for _, v := range listtProductInterior {
  701. if mapUPdateTime[v.IndustrialManagementId] != "" {
  702. if utils.StrTimeToTime(v.PublishDate).After(utils.StrTimeToTime(mapUPdateTime[v.IndustrialManagementId])) {
  703. mapUPdateTime[v.IndustrialManagementId] = v.PublishDate
  704. }
  705. }
  706. }
  707. for _, id := range industrialIdArr {
  708. industrialIds += strconv.Itoa(id) + ","
  709. }
  710. industrialIds = strings.TrimRight(industrialIds, ",")
  711. articleList, e := models.GetReportIndustrialReadNumList(userId, industrialIds, user.CreatedTime)
  712. if e != nil && e.Error() != utils.ErrNoRow() {
  713. err = e
  714. return
  715. }
  716. mapHistroyindustrialId := make(map[int]int)
  717. for _, v := range articleList {
  718. mapHistroyindustrialId[v.IndustrialManagementId] = v.Readnum
  719. }
  720. }
  721. nowTime := time.Now().Local()
  722. threeMonBefore := nowTime.AddDate(0, -3, 0)
  723. //查询用户今天是否看过时间线
  724. //haveMorningMeeting := false
  725. //var morningMeetingTime string
  726. recrodList, err := models.GetCygxTimelineLogCount(user.UserId, industrialIdArr)
  727. if err != nil && err.Error() != utils.ErrNoRow() {
  728. return
  729. }
  730. var industrialManagementIdstr string
  731. industrialIdMap := make(map[string]time.Time)
  732. for _, v := range recrodList {
  733. //fmt.Println(v.Router)
  734. //sliceindustrial := strings.Split(v.Router, "=")
  735. //industrialManagementIdstr = strings.TrimLeft(v.Router, utils.TIME_LINE_ROUTE)
  736. industrialManagementIdstr = strconv.Itoa(v.IndustrialManagementId)
  737. industrialIdMap[industrialManagementIdstr] = v.ModifyTime
  738. //fmt.Println(industrialManagementIdstr)
  739. //if createTime, ok := industrialIdMap[industrialManagementIdstr]; ok {
  740. // if createTime.Before(v.CreateTime) {
  741. // industrialIdMap[industrialManagementIdstr] = v.CreateTime
  742. // }
  743. //} else {
  744. // industrialIdMap[industrialManagementIdstr] = v.CreateTime
  745. //}
  746. }
  747. morningMeetingTimeMap := make(map[int]time.Time)
  748. if industrialIds != "" {
  749. mmList, e := models.GetCygxMorningMeetingReviewsListByIndustrialIds(industrialIds)
  750. if e != nil {
  751. err = e
  752. return
  753. }
  754. for _, v := range mmList {
  755. morningMeetingTimeMap[v.IndustryId] = v.CreateTime
  756. }
  757. }
  758. timeLineRedMap := make(map[int]bool, 0)
  759. for _, industrialId := range industrialIdArr {
  760. //if createTime, ok := industrialIdMap[strconv.Itoa(industrialId)]; ok {
  761. // if createTime.Before(morningMeetingTimeMap[industrialId]) {
  762. // timeLineRedMap[industrialId] = true
  763. // }
  764. //}
  765. if industrialIdMap[strconv.Itoa(industrialId)].Before(morningMeetingTimeMap[industrialId]) {
  766. timeLineRedMap[industrialId] = true
  767. }
  768. }
  769. //fmt.Println(industrialIdMap["90"])
  770. //fmt.Println(timeLineRedMap[90])
  771. //fmt.Println(mapIndustrialArticleHistory[90])
  772. for k, v := range list {
  773. list[k].UpdateTime = utils.TimeRemoveHms(mapUPdateTime[v.IndustrialManagementId])
  774. if userId > 0 {
  775. //如果文章没有阅读,而且,文章的发布时间晚于项目的上线时间,而且文章的发布时间晚于用户的注册时间,就进行标红处理
  776. if mapIndustrialArticleHistory[v.IndustrialManagementId] || timeLineRedMap[v.IndustrialManagementId] {
  777. //if mapHistroyindustrialId[v.IndustrialManagementId] == 0 || timeLineRedMap[v.IndustrialManagementId] {
  778. if user.CreatedTime.Before(utils.StrTimeToTime(mapUPdateTime[v.IndustrialManagementId])) && utils.StrTimeToTime(utils.OnlineTime).Before(utils.StrTimeToTime(mapUPdateTime[v.IndustrialManagementId])) {
  779. list[k].IsRed = true
  780. }
  781. }
  782. } else {
  783. if utils.StrTimeToTime(utils.OnlineTime).Before(utils.StrTimeToTime(mapUPdateTime[v.IndustrialManagementId])) {
  784. list[k].IsRed = true
  785. }
  786. list[k].IsFollow = 1
  787. }
  788. list[k].UpdateTime = utils.TimeRemoveHms(mapUPdateTime[v.IndustrialManagementId])
  789. if resource == "Yx" {
  790. list[k].IsRed = false
  791. }
  792. // 关联报告发布时间均在3个月内则标记New
  793. if v.MinReportTime != "" {
  794. t, e := time.Parse(utils.FormatDateTime, v.MinReportTime)
  795. if e != nil {
  796. err = errors.New("报告最早发布时间有误,GetindustryVideo " + e.Error())
  797. return
  798. }
  799. if t.After(threeMonBefore) {
  800. list[k].IsNew = true
  801. }
  802. }
  803. if v.ChartPermissionId == utils.CHART_PERMISSION_ID_YANXUAN {
  804. v.Source = 2
  805. } else {
  806. v.Source = 1
  807. }
  808. if v.TimeLineData == "" {
  809. v.ListTimeLine = make([]models.TimeLineReportResp, 0)
  810. } else {
  811. if err = json.Unmarshal([]byte(v.TimeLineData), &v.ListTimeLine); err != nil {
  812. e = errors.New("Unmarshal, Err: " + e.Error())
  813. return
  814. }
  815. }
  816. }
  817. items = list
  818. return
  819. }
  820. func HandleIndustryListHzAndYx(list []*models.IndustrialManagement, user *models.WxUserItem, resource string) (items []*models.IndustrialManagement, err error) {
  821. var listHz []*models.IndustrialManagement
  822. var lisYx []*models.IndustrialManagement
  823. for _, v := range list {
  824. if v.ChartPermissionId == utils.CHART_PERMISSION_ID_YANXUAN {
  825. lisYx = append(lisYx, v)
  826. } else {
  827. listHz = append(listHz, v)
  828. }
  829. }
  830. listHz, err = HandleIndustryListResource(listHz, user, "Hz")
  831. if err != nil {
  832. return
  833. }
  834. lisYx, err = HandleIndustryListResource(lisYx, user, "Yx")
  835. if err != nil {
  836. return
  837. }
  838. maplistHz := make(map[int]*models.IndustrialManagement)
  839. maplistYx := make(map[int]*models.IndustrialManagement)
  840. for _, v := range listHz {
  841. maplistHz[v.IndustrialManagementId] = v
  842. }
  843. for _, v := range lisYx {
  844. maplistYx[v.IndustrialManagementId] = v
  845. }
  846. for _, v := range list {
  847. if maplistHz[v.IndustrialManagementId] != nil {
  848. items = append(items, maplistHz[v.IndustrialManagementId])
  849. }
  850. if maplistYx[v.IndustrialManagementId] != nil {
  851. items = append(items, maplistYx[v.IndustrialManagementId])
  852. }
  853. }
  854. return
  855. }
  856. // 通过文章ID获取文章所关联的产业
  857. func GetArticleIndustrialByArticleId(articleIds []int) (itemMap map[int][]*models.IndustrialManagementResp, err error) {
  858. lenarticleIds := len(articleIds)
  859. if lenarticleIds == 0 {
  860. return
  861. }
  862. var condition string
  863. var pars []interface{}
  864. condition = ` AND mg.article_id IN (` + utils.GetOrmInReplace(lenarticleIds) + `)`
  865. pars = append(pars, articleIds)
  866. industrialList, err := models.GetIndustrialListByarticleId(pars, condition)
  867. if err != nil {
  868. return
  869. }
  870. industrialMap := make(map[int][]*models.IndustrialManagementResp)
  871. if len(industrialList) > 0 {
  872. for _, v := range industrialList {
  873. item := new(models.IndustrialManagementResp)
  874. item.IndustrialManagementId = v.IndustrialManagementId
  875. item.IndustryName = v.IndustryName
  876. item.ChartPermissionId = v.ChartPermissionId
  877. industrialMap[v.ArticleId] = append(industrialMap[v.ArticleId], item)
  878. }
  879. }
  880. itemMap = industrialMap
  881. return
  882. }
  883. func GetArticleTypeMap() (nameMapResp map[int]string, buttonStyleMapResp map[int]string, err error) {
  884. condition := " AND is_show_yanx = 1 "
  885. list, e := models.GetCygxArticleTypeListCondition(condition)
  886. if e != nil {
  887. err = errors.New("报告最早发布时间有误,GetindustryVideo " + e.Error())
  888. return
  889. }
  890. nameMap := make(map[int]string)
  891. buttonStyleMap := make(map[int]string)
  892. if len(list) > 0 {
  893. for _, v := range list {
  894. nameMap[v.ArticleTypeId] = v.ArticleTypeName
  895. buttonStyleMap[v.ArticleTypeId] = v.ButtonStyle
  896. }
  897. }
  898. nameMapResp = nameMap
  899. buttonStyleMapResp = buttonStyleMap
  900. return
  901. }
  902. // IndustrialManagementHotMapGropuPermission获取近一个月报告阅读数量最多的产业信息 根据行业分组
  903. func IndustrialManagementHotMapGropuPermission() (mapResp map[int]bool, err error) {
  904. var topCond string
  905. var topPars []interface{}
  906. toplist, err := models.GetTopOneMonthArtReadNumIndustryAll(topCond, topPars)
  907. if err != nil {
  908. return
  909. }
  910. mapPermission := make(map[int][]*models.IndustrialManagement)
  911. mapPermissionMax := make(map[int]int)
  912. for _, v := range toplist {
  913. item := new(models.IndustrialManagement)
  914. item.ChartPermissionId = v.ChartPermissionId
  915. item.IndustrialManagementId = v.IndustrialManagementId
  916. item.ArticleReadNum = v.ArticleReadNum
  917. mapPermission[v.ChartPermissionId] = append(mapPermission[v.ChartPermissionId], item)
  918. }
  919. for k, v := range mapPermission {
  920. for _, item := range v {
  921. //mapPermissionMax[k] = item.ArticleReadNum
  922. if item.ArticleReadNum > mapPermissionMax[k] {
  923. mapPermissionMax[k] = item.ArticleReadNum
  924. }
  925. }
  926. }
  927. mapResp = make(map[int]bool, 0)
  928. for _, v := range toplist {
  929. if v.ArticleReadNum == mapPermissionMax[v.ChartPermissionId] {
  930. mapResp[v.IndustrialManagementId] = true
  931. }
  932. }
  933. return
  934. }
  935. // GetLyjhTypeMap 获取路演精华对应分类ID
  936. func GetLyjhTypeMap() (mapResp map[int]int, err error) {
  937. defer func() {
  938. if err != nil {
  939. go utils.SendAlarmMsg("获取路演精华对应分类ID失败 ErrMsg:"+err.Error(), 2)
  940. }
  941. }()
  942. condition := " AND match_type_name = '路演精华' "
  943. var pars []interface{}
  944. list, e := models.GetReportMappingList(condition, pars)
  945. if e != nil && e.Error() != utils.ErrNoRow() {
  946. err = errors.New("报告最早发布时间有误,GetindustryVideo " + e.Error())
  947. return
  948. }
  949. mapResp = make(map[int]int, 0)
  950. if len(list) > 0 {
  951. for _, v := range list {
  952. mapResp[v.CategoryId] = v.CategoryId
  953. }
  954. }
  955. return
  956. }
  957. // GetLyjhArticleMap 获取路演精华对应文章ID
  958. func GetLyjhArticleMap() (mapResp map[int]bool, err error) {
  959. defer func() {
  960. if err != nil {
  961. go utils.SendAlarmMsg("获取路演精华对应文章ID失败 ErrMsg:"+err.Error(), 2)
  962. }
  963. }()
  964. condition := " AND match_type_name = '路演精华' "
  965. var pars []interface{}
  966. list, e := models.GetReportMappingList(condition, pars)
  967. if e != nil && e.Error() != utils.ErrNoRow() {
  968. err = errors.New("报告最早发布时间有误,GetindustryVideo " + e.Error())
  969. return
  970. }
  971. var categoryId []int
  972. mapResp = make(map[int]bool, 0)
  973. if len(list) > 0 {
  974. for _, v := range list {
  975. categoryId = append(categoryId, v.CategoryId)
  976. }
  977. }
  978. lencategoryId := len(categoryId)
  979. if lencategoryId > 0 {
  980. pars = make([]interface{}, 0)
  981. condition = ` AND a.category_id IN (` + utils.GetOrmInReplace(lencategoryId) + `)`
  982. pars = append(pars, categoryId)
  983. listArticle, e := models.GetHomeList(condition, pars, 0, 1000)
  984. if e != nil && e.Error() != utils.ErrNoRow() {
  985. err = errors.New("GetResourceDataList, Err: " + e.Error())
  986. return
  987. }
  988. for _, v := range listArticle {
  989. mapResp[v.ArticleId] = true
  990. }
  991. }
  992. return
  993. }
  994. // 获取所有的产业id与名称的map关联
  995. func GetIndustrialManagementRespMap() (itemMap map[int]string, err error) {
  996. defer func() {
  997. if err != nil {
  998. go utils.SendAlarmMsg("GetIndustrialManagementRespMap ErrMsg:"+err.Error(), 2)
  999. }
  1000. }()
  1001. var condition string
  1002. var pars []interface{}
  1003. itemMap = make(map[int]string, 0)
  1004. industrialList, e := models.GetIndustrialManagementRepList(condition, pars, 0, 999999)
  1005. if e != nil {
  1006. err = errors.New("GetIndustrialManagementRepList, Err: " + e.Error())
  1007. return
  1008. }
  1009. if len(industrialList) > 0 {
  1010. for _, v := range industrialList {
  1011. itemMap[v.IndustrialManagementId] = v.IndustryName
  1012. }
  1013. }
  1014. return
  1015. }
  1016. // 获取所有的标的id与名称的map关联
  1017. func GetCygxIndustrialSubjectMap() (itemMap map[int]string, err error) {
  1018. defer func() {
  1019. if err != nil {
  1020. go utils.SendAlarmMsg("GetCygxIndustrialSubjectMap ErrMsg:"+err.Error(), 2)
  1021. }
  1022. }()
  1023. var condition string
  1024. var pars []interface{}
  1025. itemMap = make(map[int]string, 0)
  1026. list, e := models.GetCygxIndustrialSubjectListCondition(condition, pars)
  1027. if e != nil {
  1028. err = errors.New("GetIndustrialManagementRepList, Err: " + e.Error())
  1029. return
  1030. }
  1031. if len(list) > 0 {
  1032. for _, v := range list {
  1033. itemMap[v.IndustrialSubjectId] = v.SubjectName
  1034. }
  1035. }
  1036. return
  1037. }
  1038. //func init() {
  1039. // UpdateIndustrialManagementOneMonthFollowNum()
  1040. //}
  1041. // UpdateIndustrialManagementOneMonthFollowNum 更新产业近一个月被关注的数量
  1042. func UpdateIndustrialManagementOneMonthFollowNum(cont context.Context) (err error) {
  1043. //var err error
  1044. defer func() {
  1045. if err != nil {
  1046. fmt.Println(err)
  1047. go utils.SendAlarmMsg("UpdateIndustrialManagementOneMonthFollowNum ErrMsg:"+err.Error(), 2)
  1048. }
  1049. }()
  1050. listNum, e := models.GetIndustrialManagementOneMonthFollowNum()
  1051. if e != nil {
  1052. err = errors.New("GetIndustrialManagementOneMonthFollowNum, Err: " + e.Error())
  1053. return
  1054. }
  1055. e = models.UpdateIndustrialManagementInit() //初始化每月产业用户关注数量
  1056. if e != nil {
  1057. err = errors.New("UpdateIndustrialManagementInit, Err: " + e.Error())
  1058. return
  1059. }
  1060. var items []*models.CygxIndustryFllowNumResp
  1061. for _, v := range listNum {
  1062. item := new(models.CygxIndustryFllowNumResp)
  1063. item.IndustrialManagementId = v.IndustrialManagementId
  1064. item.Total = v.Total
  1065. items = append(items, item)
  1066. //一次最多插入五百条
  1067. if len(items)%500 == 0 {
  1068. e = models.UpdateIndustrialManagementOneMonthFollowNumMulti(items)
  1069. if e != nil {
  1070. err = errors.New("UpdateIndustrialManagementOneMonthFollowNumMulti, Err: " + e.Error())
  1071. return
  1072. }
  1073. }
  1074. }
  1075. if len(items) > 0 {
  1076. e = models.UpdateIndustrialManagementOneMonthFollowNumMulti(items)
  1077. if e != nil {
  1078. err = errors.New("UpdateIndustrialManagementOneMonthFollowNumMulti, Err: " + e.Error())
  1079. return
  1080. }
  1081. }
  1082. return
  1083. }
  1084. // GetCygxIndustryFllowListTypeMapByMobile 根据手机号获取产业关注的信息
  1085. func GetCygxIndustryFllowListTypeMapByMobile(mobile string) (mapFollowTypeResp map[int]int) {
  1086. if mobile == "" {
  1087. return
  1088. }
  1089. var err error
  1090. defer func() {
  1091. if err != nil {
  1092. fmt.Println("err:", err)
  1093. go utils.SendAlarmMsg(fmt.Sprint("根据手机号获取产业关注的信息 失败,GetCygxIndustryFllowListTypeMapByMobile Err:"+err.Error()+"mobile", mobile), 3)
  1094. }
  1095. }()
  1096. mapFollowTypeResp = make(map[int]int, 0)
  1097. fllowList, e := models.GetCygxIndustryFllowListByMobile(mobile)
  1098. //策略的处理
  1099. if e != nil {
  1100. err = errors.New("GetUserFllowIndustrialList, Err: " + e.Error())
  1101. return
  1102. }
  1103. for _, v := range fllowList {
  1104. mapFollowTypeResp[v.IndustrialManagementId] = v.FollowType
  1105. }
  1106. return
  1107. }