wx_user.go 65 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564
  1. package services
  2. import (
  3. "context"
  4. "errors"
  5. "fmt"
  6. "hongze/hongze_cygx/models"
  7. "hongze/hongze_cygx/models/company"
  8. "hongze/hongze_cygx/models/wx_user"
  9. "hongze/hongze_cygx/utils"
  10. "strconv"
  11. "strings"
  12. "time"
  13. )
  14. func UpdateWxUserLabelOLd(cont context.Context) (err error) {
  15. defer func() {
  16. if err != nil {
  17. go utils.SendAlarmMsg("更新用户标签失败;Err:"+err.Error(), 2)
  18. }
  19. }()
  20. //获取需要处理的权益客户
  21. listUser, err := models.GetUserRegisterList()
  22. if err != nil {
  23. fmt.Println("GetUserRegisterList Err", err)
  24. return err
  25. }
  26. mapChartCollect := make(map[string]int)
  27. //获取已经处理记录的用户并记录切片
  28. listChartCollectL, err := models.GetCygxChartCollectList()
  29. if err != nil && err.Error() != utils.ErrNoRow() {
  30. fmt.Println("GetCygxUserInteractionNumList Err", err)
  31. return err
  32. }
  33. for _, v := range listChartCollectL {
  34. mapChartCollect[fmt.Sprint("m:", v.Mobile, "u:", v.ChartId)] = v.UserId
  35. }
  36. var interactionNum int // 互动量
  37. mapComapnyInteractionNum := make(map[int]int)
  38. //拉取策略平台用户同步的图表信息
  39. {
  40. var chartMobile string
  41. var chartItems []*models.CygxChartCollect
  42. if utils.RunMode == "release" {
  43. for k, vUser := range listUser {
  44. if vUser.Mobile != "" {
  45. mobile := vUser.Mobile
  46. fmt.Println(vUser.Mobile, "_", k)
  47. chartMobile += mobile + ","
  48. listChart, _, _ := GetChartCollectionByApi(mobile, 9999, 0)
  49. if len(listChart) > 0 {
  50. for _, vChart := range listChart {
  51. if mapChartCollect[fmt.Sprint("m:", mobile, "u:", vChart.ChartId)] == 0 {
  52. item := new(models.CygxChartCollect)
  53. item.ChartId = vChart.ChartId
  54. t1, _ := time.Parse("2006-01-02T15:04:05Z", vChart.CreateDate)
  55. item.CreateTime = t1
  56. item.Mobile = mobile
  57. chartItems = append(chartItems, item)
  58. }
  59. }
  60. }
  61. }
  62. }
  63. }
  64. //如果有数据就添加
  65. if len(chartItems) > 0 {
  66. _, err = models.AddCygxChartCollectList(chartItems)
  67. if err != nil {
  68. fmt.Println(" RemoveChartCollectByMobile Err", err)
  69. }
  70. }
  71. //处理图表关注后的用户
  72. {
  73. if utils.RunMode == "release" {
  74. listChartCollect, err := models.GetCygxChartCollectByMobileList()
  75. if err != nil {
  76. fmt.Println("GetCygxChartCollectByMobileList ,Err" + err.Error())
  77. }
  78. for k, v := range listChartCollect {
  79. if v.Mobile != "" {
  80. user, err := models.GetWxUserItemByMobile(v.Mobile)
  81. if err != nil && err.Error() != utils.ErrNoRow() {
  82. fmt.Println("GetWxUserItemByUserId ,Err" + err.Error())
  83. }
  84. if user != nil {
  85. fmt.Println(user.RealName, k)
  86. err = models.UpdateCygxChartCollect(user)
  87. if err != nil {
  88. fmt.Println("UpdateCygxChartCollect ,Err" + err.Error())
  89. }
  90. }
  91. }
  92. }
  93. }
  94. }
  95. }
  96. //处理 前一天移动之后的用户的公司记录信息
  97. //{
  98. // startDate := time.Now().AddDate(0, 0, -1).Format(utils.FormatDate)
  99. // endDate := time.Now().Format(utils.FormatDate)
  100. // listUpdateUser, err := models.GetWxUserOpLogList(startDate, endDate)
  101. // if err != nil && err.Error() != utils.ErrNoRow() {
  102. // return err
  103. // }
  104. // var userIds string
  105. // var mobiles string
  106. // if len(listUpdateUser) > 0 {
  107. // for _, v := range listUpdateUser {
  108. // userIds += strconv.Itoa(v.UserId) + ","
  109. // mobiles += "'" + v.Mobile + "',"
  110. // }
  111. // }
  112. // userIds = strings.TrimRight(userIds, ",")
  113. // mobiles = strings.TrimRight(mobiles, ",")
  114. //
  115. // //如果用户ID不为空那么就处理这些用户的记录信息
  116. // if userIds != "" {
  117. // var condition string
  118. // //condition = ` AND user_id IN (` + userIds + `)`
  119. // condition = ` AND mobile IN (` + mobiles + `)`
  120. // //处理用户的文章收藏
  121. // listCollect, err := models.GetCygxArticleCollectList(condition)
  122. // if err != nil && err.Error() != utils.ErrNoRow() {
  123. // fmt.Println("GetAddCygxArticleCollectList ,Err" + err.Error())
  124. // }
  125. // if len(listCollect) > 0 {
  126. // for _, v := range listCollect {
  127. // user, err := models.GetWxUserItemByUserId(v.UserId)
  128. // if err != nil && err.Error() != utils.ErrNoRow() {
  129. // fmt.Println("GetWxUserItemByUserId ,Err" + err.Error())
  130. // }
  131. // if user != nil {
  132. // fmt.Println(user.RealName)
  133. // err = models.UpdateCygxArticleCollect(user)
  134. // if err != nil {
  135. // fmt.Println("UpdateCygxArticleCollect ,Err" + err.Error())
  136. // }
  137. // }
  138. // }
  139. // }
  140. // //处理用户的文章收藏 end
  141. //
  142. // //修改用户关注的产业
  143. // listIndustryFllow, err := models.GetCygxIndustryFllowList(condition)
  144. // if err != nil {
  145. // fmt.Println("GetCygxIndustryFllowList ,Err" + err.Error())
  146. // }
  147. // for k, v := range listIndustryFllow {
  148. // if v.Mobile != "" {
  149. // user, err := models.GetWxUserItemByUserId(v.UserId)
  150. // if err != nil && err.Error() != utils.ErrNoRow() {
  151. // fmt.Println("GetWxUserItemByUserId ,Err" + err.Error())
  152. // }
  153. // if user != nil {
  154. // fmt.Println(user.RealName, k)
  155. // err = models.UpdateCygxIndustryFllow(user)
  156. // if err != nil {
  157. // fmt.Println("UpdateCygxIndustryFllow ,Err" + err.Error())
  158. // }
  159. // }
  160. // }
  161. // }
  162. //
  163. // //修改用户产业关注的产业end
  164. //
  165. // //修改用户的阅读记录
  166. // listArticlePv, err := models.GetArticleHistoryRecordAllByMobileList(condition)
  167. // if err != nil {
  168. // fmt.Println("GetArticleHistoryRecordAllByMobileList ,Err" + err.Error())
  169. // }
  170. // for k, v := range listArticlePv {
  171. // if v.Mobile != "" {
  172. // user, err := models.GetWxUserItemByMobile(v.Mobile)
  173. // if err != nil && err.Error() != utils.ErrNoRow() {
  174. // fmt.Println("GetWxUserItemByUserId ,Err" + err.Error())
  175. // }
  176. // if user != nil {
  177. // fmt.Println(user.RealName, k)
  178. // err = models.UpdateCygxArticleHistoryRecordAll(user)
  179. // if err != nil {
  180. // fmt.Println("UpdateCygxArticleCollect ,Err" + err.Error())
  181. // }
  182. // }
  183. // }
  184. // }
  185. // //修改用户的阅读记录end
  186. //
  187. // //处理用户的搜索记录
  188. // listSearch, err := models.GetCygxSearchKeyWordList(condition)
  189. // if err != nil {
  190. // fmt.Println("GetArticleHistoryRecordAllByMobileList ,Err" + err.Error())
  191. // }
  192. //
  193. // for k, v := range listSearch {
  194. // if v.Mobile != "" {
  195. // user, err := models.GetWxUserItemByUserId(v.UserId)
  196. // if err != nil && err.Error() != utils.ErrNoRow() {
  197. // fmt.Println("GetWxUserItemByUserId ,Err" + err.Error())
  198. // }
  199. // if user != nil {
  200. // fmt.Println(user.RealName, k)
  201. // err = models.UpdateCygxSearchKeyWord(user)
  202. // if err != nil {
  203. // fmt.Println("UpdateCygxSearchKeyWord ,Err" + err.Error())
  204. // }
  205. // }
  206. // }
  207. // }
  208. //
  209. // // 处理用户的作者关注
  210. // lisDepartmentF, err := models.GetArticleDepartmentFollowByMobileList(condition)
  211. // if err != nil {
  212. // fmt.Println("GetArticleDepartmentFollowByMobileList ,Err" + err.Error())
  213. // return err
  214. // }
  215. // for k, v := range lisDepartmentF {
  216. // if v.Mobile != "" {
  217. // user, err := models.GetWxUserItemByUserId(v.UserId)
  218. // if err != nil && err.Error() != utils.ErrNoRow() {
  219. // fmt.Println("GetWxUserItemByUserId ,Err" + err.Error())
  220. // }
  221. // if user != nil {
  222. // fmt.Println(user.RealName, k)
  223. // err = models.UpdateCygxArticleDepartmentFollow(user)
  224. // if err != nil {
  225. // fmt.Println("UpdateCygxArticleDepartmentFollow ,Err" + err.Error())
  226. // }
  227. // }
  228. // }
  229. // }
  230. // // 处理用户的作者关注end
  231. //
  232. // // 处理用户的活动视频播放
  233. // listActivityVideo, err := models.GetActivityVideoHistoryByMobileList(condition)
  234. // if err != nil {
  235. // fmt.Println("GetArticleDepartmentFollowByMobileList ,Err" + err.Error())
  236. // return err
  237. // }
  238. // for k, v := range listActivityVideo {
  239. // if v.Mobile != "" {
  240. // user, err := models.GetWxUserItemByUserId(v.UserId)
  241. // if err != nil && err.Error() != utils.ErrNoRow() {
  242. // fmt.Println("GetWxUserItemByUserId ,Err" + err.Error())
  243. // }
  244. // if user != nil {
  245. // fmt.Println(user.RealName, k)
  246. // err = models.UpdateCygxActivityVideoHistory(user)
  247. // if err != nil {
  248. // fmt.Println("UpdateCygxActivityVideoHistory ,Err" + err.Error())
  249. // }
  250. // }
  251. // }
  252. // }
  253. // // 处理用户的活动视频播放end
  254. //
  255. // // 处理用户的活动音频播放
  256. // listActivityVoice, err := models.GetActivityVoiceHistoryByMobileList(condition)
  257. // if err != nil {
  258. // fmt.Println("GetActivityVoiceHistoryByMobileList ,Err" + err.Error())
  259. // return err
  260. // }
  261. // for k, v := range listActivityVoice {
  262. // if v.Mobile != "" {
  263. // user, err := models.GetWxUserItemByUserId(v.UserId)
  264. // if err != nil && err.Error() != utils.ErrNoRow() {
  265. // fmt.Println("GetWxUserItemByUserId ,Err" + err.Error())
  266. // }
  267. // if user != nil {
  268. // fmt.Println(user.RealName, k)
  269. // err = models.UpdateCygxActivityVoiceHistory(user)
  270. // if err != nil {
  271. // fmt.Println("UpdateCygxActivityVoiceHistory ,Err" + err.Error())
  272. // }
  273. // }
  274. // }
  275. // }
  276. // // 处理用户的活动音频播放end
  277. //
  278. // // 处理用户产业视频的播放记录
  279. // listMicroRoadshow, err := models.GetMicroRoadshowVideoHistoryByMobileList(condition)
  280. // if err != nil {
  281. // fmt.Println("GetMicroRoadshowVideoHistoryByMobileList ,Err" + err.Error())
  282. // return err
  283. // }
  284. // for k, v := range listMicroRoadshow {
  285. // if v.Mobile != "" {
  286. // user, err := models.GetWxUserItemByUserId(v.UserId)
  287. // if err != nil && err.Error() != utils.ErrNoRow() {
  288. // fmt.Println("GetWxUserItemByUserId ,Err" + err.Error())
  289. // }
  290. // if user != nil {
  291. // fmt.Println(user.RealName, k)
  292. // err = models.UpdateCygxMicroRoadshowVideoHistory(user)
  293. // if err != nil {
  294. // fmt.Println("UpdateCygxMicroRoadshowVideoHistory ,Err" + err.Error())
  295. // }
  296. // }
  297. // }
  298. // }
  299. // // 处理用户产业视频的播放记录 end
  300. //
  301. // //如果手机号不为空,则更新用户的报名信息
  302. // if mobiles != "" {
  303. // condition = ` AND mobile IN (` + mobiles + `)`
  304. // listSingUp, err := models.GetCygxActivitySignupByMobileList(condition)
  305. // if err != nil {
  306. // fmt.Println("GetCygxChartCollectByMobileList ,Err" + err.Error())
  307. // }
  308. // //fmt.Println("更新用户的报名信息长度", len(listSingUp))
  309. // for _, v := range listSingUp {
  310. // if v.Mobile != "" {
  311. // user, err := models.GetWxUserItemByMobile(v.Mobile)
  312. // if err != nil && err.Error() != utils.ErrNoRow() {
  313. // fmt.Println("GetWxUserItemByUserId ,Err" + err.Error())
  314. // }
  315. // if user != nil {
  316. // err = models.UpdateCygxActivitySignup(user)
  317. // if err != nil {
  318. // fmt.Println("UpdateCygxActivitySignup ,Err" + err.Error())
  319. // //return err
  320. // }
  321. // }
  322. // }
  323. // }
  324. // }
  325. //
  326. // }
  327. //}
  328. //处理用户标签
  329. //for _, vUser := range listUser {
  330. // labels, err := models.GetCygxCompanyUserListSplit(strconv.Itoa(vUser.UserId))
  331. // if err != nil {
  332. // fmt.Println("GetCygxCompanyUserListSplit Err", err)
  333. // return err
  334. // }
  335. // mapLabels := make(map[string]string)
  336. // var labelsListStr []*models.UserLabel
  337. // mapActivityLabels := make(map[string]string)
  338. // labelsList := strings.Split(labels, ",")
  339. // for _, vL := range labelsList {
  340. // if mapLabels[vL] == "" && vL != "" {
  341. // mapLabels[vL] = vL
  342. // item := new(models.UserLabel)
  343. // item.Label = vL
  344. // labelsListStr = append(labelsListStr, item)
  345. // }
  346. // }
  347. // dateTime := time.Now().AddDate(0, -3, 0).Format(utils.FormatDate)
  348. // listArticlePv, err := models.GetArticlePvCount(vUser.Mobile, vUser.Email, dateTime)
  349. // if err != nil && err.Error() != utils.ErrNoRow() {
  350. // fmt.Println("GetArticlePvCount Err", err)
  351. // return err
  352. // }
  353. // var articleIds string
  354. // mapArticleIdLabelTotal := make(map[string]int)
  355. // mapArticleIdPv := make(map[int]int)
  356. // if len(listArticlePv) > 0 {
  357. // for _, v := range listArticlePv {
  358. // articleIds += strconv.Itoa(v.ArticleId) + ","
  359. // mapArticleIdPv[v.ArticleId] = v.Pv
  360. // }
  361. // articleIds = strings.TrimRight(articleIds, ",")
  362. // //产业、标的标签
  363. // listLabelName, err := models.GetArticleGroupyIndustryName(articleIds)
  364. // if err != nil && err.Error() != utils.ErrNoRow() {
  365. // fmt.Println("GetArticleGroupyIndustryName Err", err)
  366. // return err
  367. // }
  368. // if len(listLabelName) > 0 {
  369. // for _, v := range listLabelName {
  370. // labelsIndustryList := strings.Split(v.IndustryName, "/")
  371. // labelsSubjectList := strings.Split(v.SubjectName, "/")
  372. // //添加产业统计
  373. // if len(labelsIndustryList) > 0 {
  374. // for _, vIn := range labelsIndustryList {
  375. // if mapActivityLabels[vIn] != "" {
  376. // mapArticleIdLabelTotal[vIn] += mapArticleIdPv[v.ArticleId]
  377. // } else {
  378. // mapArticleIdLabelTotal[vIn] = mapArticleIdPv[v.ArticleId]
  379. // mapActivityLabels[vIn] = vIn
  380. // }
  381. // }
  382. // }
  383. // if len(labelsSubjectList) > 0 {
  384. // //添加标的统计
  385. // for _, vIn := range labelsSubjectList {
  386. // if mapActivityLabels[vIn] != "" {
  387. // mapArticleIdLabelTotal[vIn] += mapArticleIdPv[v.ArticleId]
  388. // } else {
  389. // mapArticleIdLabelTotal[vIn] = mapArticleIdPv[v.ArticleId]
  390. // mapActivityLabels[vIn] = vIn
  391. // }
  392. // }
  393. // }
  394. // }
  395. // }
  396. // }
  397. // articleIds, err = models.GetCygxArticleCollectId(vUser.UserId, dateTime)
  398. // if err != nil && err.Error() != utils.ErrNoRow() {
  399. // fmt.Println("GetCygxArticleCollectId Err", err)
  400. // return err
  401. // }
  402. // if articleIds != "" {
  403. // //产业、标的标签
  404. // listLabelName, err := models.GetArticleGroupyIndustryName(articleIds)
  405. // if err != nil && err.Error() != utils.ErrNoRow() {
  406. // fmt.Println("GetArticleGroupyIndustryName Err", err)
  407. // return err
  408. // }
  409. // if len(listLabelName) > 0 {
  410. // for _, v := range listLabelName {
  411. // labelsIndustryList := strings.Split(v.IndustryName, "/")
  412. // labelsSubjectList := strings.Split(v.SubjectName, "/")
  413. // //添加产业统计
  414. // if len(labelsIndustryList) > 0 {
  415. // for _, vIn := range labelsIndustryList {
  416. // if mapActivityLabels[vIn] != "" {
  417. // mapArticleIdLabelTotal[vIn] += 1
  418. // } else {
  419. // mapArticleIdLabelTotal[vIn] = 1
  420. // mapActivityLabels[vIn] = vIn
  421. // }
  422. // }
  423. // }
  424. // if len(labelsSubjectList) > 0 {
  425. // //添加标的统计
  426. // for _, vIn := range labelsSubjectList {
  427. // if mapActivityLabels[vIn] != "" {
  428. // mapArticleIdLabelTotal[vIn] += 1
  429. // } else {
  430. // mapArticleIdLabelTotal[vIn] = 1
  431. // mapActivityLabels[vIn] = vIn
  432. // }
  433. // }
  434. // }
  435. // }
  436. // }
  437. // }
  438. // //活动标签计算
  439. // listActivityPv, err := models.GetActivitySignCount(vUser.Mobile, dateTime)
  440. // if err != nil && err.Error() != utils.ErrNoRow() {
  441. // fmt.Println("GetActivitySignCount Err", err)
  442. // return err
  443. // }
  444. // if len(listActivityPv) > 0 {
  445. // for _, v := range listActivityPv {
  446. // labelsList := strings.Split(v.Label, "-")
  447. // for _, v2 := range labelsList {
  448. // labelsListSon := strings.Split(v2, "/")
  449. // for _, v3 := range labelsListSon {
  450. // if mapActivityLabels[v3] != "" {
  451. // mapArticleIdLabelTotal[v3] += 1
  452. // } else {
  453. // mapArticleIdLabelTotal[v3] = 1
  454. // mapActivityLabels[v3] = v3
  455. // }
  456. // }
  457. // }
  458. // }
  459. // }
  460. // //对标签数量进行排序
  461. // type KvPair struct {
  462. // Key string
  463. // Val int
  464. // }
  465. // tmpList := make([]KvPair, 0)
  466. // for k, v := range mapArticleIdLabelTotal {
  467. // tmpList = append(tmpList, KvPair{Key: k, Val: v})
  468. // }
  469. // sort.Slice(tmpList, func(i, j int) bool {
  470. // return tmpList[i].Val > tmpList[j].Val // 降序
  471. // })
  472. // for _, v := range tmpList {
  473. // if v.Key != "" {
  474. // mapLabels[v.Key] = v.Key
  475. // item := new(models.UserLabel)
  476. // item.Label = v.Key
  477. // labelsListStr = append(labelsListStr, item)
  478. // }
  479. // }
  480. // var labelNew string
  481. // for _, v := range labelsListStr {
  482. // labelNew += v.Label + ","
  483. // }
  484. // labelNew = strings.TrimRight(labelNew, ",")
  485. // if labelNew != "" {
  486. // err = models.UpdateUserLabel(labelNew, vUser.UserId)
  487. // if err != nil {
  488. // fmt.Println("UpdateUserLabel Err", err)
  489. // return err
  490. // }
  491. // }
  492. //}
  493. //处理用户、机构互动量数据
  494. {
  495. var userIds string
  496. var itemsInteraction []*models.CygxUserInteractionNum
  497. mapUserInteraction := make(map[int]int)
  498. mapCompanyInteraction := make(map[int]int)
  499. mapCompanyInteractionItem := make(map[int]*models.CygxCompanyInteractionNum)
  500. mapComapnyInteractionSeller := make(map[int]int)
  501. mapComapnyInteractionNumSeller := make(map[int]int) // 销售可查看的互动量
  502. //获取已经处理记录的用户并记录切片
  503. listUserInteractionNum, err := models.GetCygxUserInteractionNumList()
  504. if err != nil && err.Error() != utils.ErrNoRow() {
  505. fmt.Println("GetCygxUserInteractionNumList Err", err)
  506. return err
  507. }
  508. for _, v := range listUserInteractionNum {
  509. mapUserInteraction[v.UserId] = v.UserId
  510. }
  511. //获取跟销售建立绑定关系的用户并记录切片
  512. listUserSeller, err := models.GetUserSellerRelationUserList()
  513. if err != nil && err.Error() != utils.ErrNoRow() {
  514. fmt.Println("GetUserSellerRelationUserList Err", err)
  515. return err
  516. }
  517. for _, v := range listUserSeller {
  518. mapComapnyInteractionSeller[v.UserId] = v.UserId
  519. }
  520. listCompanyInteractionNum, err := models.GetCygxCompanyInteractionNumList()
  521. if err != nil && err.Error() != utils.ErrNoRow() {
  522. fmt.Println("GetCygxUserInteractionNumList Err", err)
  523. return err
  524. }
  525. for _, v := range listCompanyInteractionNum {
  526. mapCompanyInteraction[v.CompanyId] = v.CompanyId
  527. }
  528. //处理用户互动量数据
  529. for kUser, vUser := range listUser {
  530. userIds += strconv.Itoa(vUser.UserId) + ","
  531. //一次查询一百个避免用户过多
  532. if kUser%100 == 0 {
  533. userIds = strings.TrimRight(userIds, ",")
  534. userUserInteractionList, err := models.GetCygxCompanyUserUserInteraction(userIds)
  535. if err != nil {
  536. fmt.Println("GetCygxCompanyUserUserInteraction Err", err)
  537. return err
  538. }
  539. //处理用户的互动量
  540. if len(userUserInteractionList) > 0 {
  541. for _, vsplit := range userUserInteractionList {
  542. interactionNum = vsplit.HistoryNum + vsplit.CountNum + vsplit.IndustryFllowNum + vsplit.DepartmentFollowNum + vsplit.KeyWordNum + vsplit.OnLineNum + vsplit.OfficeNum + vsplit.ChartCountNum + vsplit.TripNum + vsplit.RoadshowVideoNum + vsplit.ActivityVideoNum + vsplit.ActivityVoiceNum + vsplit.TagNum
  543. if interactionNum > 0 {
  544. //更改用户的互动量
  545. err = models.UpdateUserInteractionNum(interactionNum, int(vsplit.UserId))
  546. if err != nil {
  547. fmt.Println("UpdateUserInteractionNum Err", err)
  548. return err
  549. }
  550. mapComapnyInteractionNum[vsplit.CompanyId] += interactionNum
  551. itemInteraction := new(models.CygxUserInteractionNum)
  552. itemInteraction.UserId = int(vsplit.UserId)
  553. itemInteraction.ArticleHistoryNum = vsplit.HistoryNum
  554. itemInteraction.ArticleCountNum = vsplit.CountNum
  555. itemInteraction.ChartCountNum = vsplit.ChartCountNum
  556. itemInteraction.IndustryFllowNum = vsplit.IndustryFllowNum
  557. itemInteraction.DepartmentFollowNum = vsplit.DepartmentFollowNum
  558. itemInteraction.KeyWordNum = vsplit.KeyWordNum
  559. itemInteraction.ActivityOnLineNum = vsplit.OnLineNum
  560. itemInteraction.ActivityOfficeNum = vsplit.OfficeNum
  561. itemInteraction.ActivityNum = vsplit.OnLineNum + vsplit.OfficeNum
  562. itemInteraction.TripNum = vsplit.TripNum
  563. itemInteraction.RoadshowVideoNum = vsplit.RoadshowVideoNum
  564. itemInteraction.ActivityVideoNum = vsplit.ActivityVideoNum
  565. itemInteraction.ActivityVoiceNum = vsplit.ActivityVoiceNum
  566. itemInteraction.TagNum = vsplit.TagNum
  567. itemInteraction.RoadshowNum = vsplit.RoadshowVideoNum + vsplit.ActivityVideoNum + vsplit.ActivityVoiceNum
  568. itemInteraction.CreateTime = time.Now()
  569. itemInteraction.ModifyTime = time.Now()
  570. //如果这个切片下的结构体没有值就给他初始值,如果有就跟后面的相加
  571. if mapCompanyInteractionItem[vsplit.CompanyId] == nil {
  572. itemCompanyInteraction := new(models.CygxCompanyInteractionNum)
  573. itemCompanyInteraction.CompanyId = vsplit.CompanyId
  574. itemCompanyInteraction.ArticleHistoryNum = vsplit.HistoryNum
  575. itemCompanyInteraction.ArticleCountNum = vsplit.CountNum
  576. itemCompanyInteraction.ChartCountNum = vsplit.ChartCountNum
  577. itemCompanyInteraction.IndustryFllowNum = vsplit.IndustryFllowNum
  578. itemCompanyInteraction.DepartmentFollowNum = vsplit.DepartmentFollowNum
  579. itemCompanyInteraction.KeyWordNum = vsplit.KeyWordNum
  580. itemCompanyInteraction.ActivityOnLineNum = vsplit.OnLineNum
  581. itemCompanyInteraction.ActivityOfficeNum = vsplit.OfficeNum
  582. itemCompanyInteraction.ActivityNum = vsplit.OnLineNum + vsplit.OfficeNum
  583. itemCompanyInteraction.TripNum = vsplit.TripNum
  584. itemCompanyInteraction.RoadshowVideoNum = vsplit.RoadshowVideoNum
  585. itemCompanyInteraction.ActivityVideoNum = vsplit.ActivityVideoNum
  586. itemCompanyInteraction.ActivityVoiceNum = vsplit.ActivityVoiceNum
  587. itemCompanyInteraction.TagNum = vsplit.TagNum
  588. itemCompanyInteraction.RoadshowNum = vsplit.RoadshowVideoNum + vsplit.ActivityVideoNum + vsplit.ActivityVoiceNum
  589. mapCompanyInteractionItem[vsplit.CompanyId] = itemCompanyInteraction
  590. mapCompanyInteractionItem[vsplit.CompanyId].CreateTime = time.Now()
  591. mapCompanyInteractionItem[vsplit.CompanyId].ModifyTime = time.Now()
  592. } else {
  593. fmt.Println("公司ID", vsplit.CompanyId)
  594. mapCompanyInteractionItem[vsplit.CompanyId].CompanyId = vsplit.CompanyId
  595. mapCompanyInteractionItem[vsplit.CompanyId].ArticleHistoryNum += vsplit.HistoryNum
  596. mapCompanyInteractionItem[vsplit.CompanyId].ArticleCountNum += vsplit.CountNum
  597. mapCompanyInteractionItem[vsplit.CompanyId].ChartCountNum += vsplit.ChartCountNum
  598. mapCompanyInteractionItem[vsplit.CompanyId].IndustryFllowNum += vsplit.IndustryFllowNum
  599. mapCompanyInteractionItem[vsplit.CompanyId].DepartmentFollowNum += vsplit.DepartmentFollowNum
  600. mapCompanyInteractionItem[vsplit.CompanyId].KeyWordNum += vsplit.KeyWordNum
  601. mapCompanyInteractionItem[vsplit.CompanyId].ActivityOnLineNum += vsplit.OnLineNum
  602. mapCompanyInteractionItem[vsplit.CompanyId].ActivityOfficeNum += vsplit.OfficeNum
  603. mapCompanyInteractionItem[vsplit.CompanyId].ActivityNum += vsplit.OnLineNum + vsplit.OfficeNum
  604. mapCompanyInteractionItem[vsplit.CompanyId].TripNum += vsplit.TripNum
  605. mapCompanyInteractionItem[vsplit.CompanyId].RoadshowVideoNum += vsplit.RoadshowVideoNum
  606. mapCompanyInteractionItem[vsplit.CompanyId].ActivityVideoNum += vsplit.ActivityVideoNum
  607. mapCompanyInteractionItem[vsplit.CompanyId].ActivityVoiceNum += vsplit.ActivityVoiceNum
  608. mapCompanyInteractionItem[vsplit.CompanyId].TagNum += vsplit.TagNum
  609. mapCompanyInteractionItem[vsplit.CompanyId].RoadshowNum += vsplit.RoadshowVideoNum + vsplit.ActivityVideoNum + vsplit.ActivityVoiceNum
  610. }
  611. //如果存在就修改不存在就新增
  612. if mapUserInteraction[int(vsplit.UserId)] == 0 {
  613. itemsInteraction = append(itemsInteraction, itemInteraction)
  614. } else {
  615. err = models.UpdateCygxUserInteractionNum(itemInteraction)
  616. if err != nil {
  617. fmt.Println("UpdateCygxUserInteractionNum Err", err)
  618. return err
  619. }
  620. }
  621. }
  622. }
  623. }
  624. userIds = ""
  625. }
  626. }
  627. userIds = strings.TrimRight(userIds, ",")
  628. if userIds != "" {
  629. userUserInteractionList, err := models.GetCygxCompanyUserUserInteraction(userIds)
  630. if err != nil {
  631. fmt.Println("GetCygxCompanyUserUserInteraction Err", err)
  632. return err
  633. }
  634. //fmt.Println("处理用户剩余的")
  635. //处理用户的互动量
  636. if len(userUserInteractionList) > 0 {
  637. for _, vsplit := range userUserInteractionList {
  638. interactionNum = vsplit.HistoryNum + vsplit.CountNum + vsplit.IndustryFllowNum + vsplit.DepartmentFollowNum + vsplit.KeyWordNum + vsplit.OnLineNum + vsplit.OfficeNum + vsplit.ChartCountNum + vsplit.TripNum + vsplit.RoadshowVideoNum + vsplit.ActivityVideoNum + vsplit.ActivityVoiceNum + vsplit.TagNum
  639. if interactionNum > 0 {
  640. err = models.UpdateUserInteractionNum(interactionNum, int(vsplit.UserId))
  641. if err != nil {
  642. fmt.Println("UpdateUserInteractionNum Err", err)
  643. return err
  644. }
  645. mapComapnyInteractionNum[vsplit.CompanyId] += interactionNum
  646. if mapComapnyInteractionSeller[int(vsplit.UserId)] > 0 {
  647. mapComapnyInteractionNumSeller[vsplit.CompanyId] += interactionNum //如果销售可以看到这个人,那么就对销售可见的数量进行添加
  648. }
  649. itemInteraction := new(models.CygxUserInteractionNum)
  650. itemInteraction.UserId = int(vsplit.UserId)
  651. itemInteraction.ArticleHistoryNum = vsplit.HistoryNum
  652. itemInteraction.ArticleCountNum = vsplit.CountNum
  653. itemInteraction.ChartCountNum = vsplit.ChartCountNum
  654. itemInteraction.IndustryFllowNum = vsplit.IndustryFllowNum
  655. itemInteraction.DepartmentFollowNum = vsplit.DepartmentFollowNum
  656. itemInteraction.KeyWordNum = vsplit.KeyWordNum
  657. itemInteraction.ActivityOnLineNum = vsplit.OnLineNum
  658. itemInteraction.ActivityOfficeNum = vsplit.OfficeNum
  659. itemInteraction.ActivityNum = vsplit.OnLineNum + vsplit.OfficeNum
  660. itemInteraction.TripNum = vsplit.TripNum
  661. itemInteraction.RoadshowVideoNum = vsplit.RoadshowVideoNum
  662. itemInteraction.ActivityVideoNum = vsplit.ActivityVideoNum
  663. itemInteraction.ActivityVoiceNum = vsplit.ActivityVoiceNum
  664. itemInteraction.TagNum = vsplit.TagNum
  665. itemInteraction.RoadshowNum = vsplit.RoadshowVideoNum + vsplit.ActivityVideoNum + vsplit.ActivityVoiceNum
  666. //如果这个切片下的结构体没有值就给他初始值,如果有就跟后面的相加
  667. if mapCompanyInteractionItem[vsplit.CompanyId] == nil {
  668. itemCompanyInteraction := new(models.CygxCompanyInteractionNum)
  669. itemCompanyInteraction.CompanyId = vsplit.CompanyId
  670. itemCompanyInteraction.ArticleHistoryNum = vsplit.HistoryNum
  671. itemCompanyInteraction.ArticleCountNum = vsplit.CountNum
  672. itemCompanyInteraction.ChartCountNum = vsplit.ChartCountNum
  673. itemCompanyInteraction.IndustryFllowNum = vsplit.IndustryFllowNum
  674. itemCompanyInteraction.DepartmentFollowNum = vsplit.DepartmentFollowNum
  675. itemCompanyInteraction.KeyWordNum = vsplit.KeyWordNum
  676. itemCompanyInteraction.ActivityOnLineNum = vsplit.OnLineNum
  677. itemCompanyInteraction.ActivityOfficeNum = vsplit.OfficeNum
  678. itemCompanyInteraction.ActivityNum = vsplit.OnLineNum + vsplit.OfficeNum
  679. itemCompanyInteraction.TripNum = vsplit.TripNum
  680. itemCompanyInteraction.RoadshowVideoNum = vsplit.RoadshowVideoNum
  681. itemCompanyInteraction.ActivityVideoNum = vsplit.ActivityVideoNum
  682. itemCompanyInteraction.ActivityVoiceNum = vsplit.ActivityVoiceNum
  683. itemCompanyInteraction.TagNum = vsplit.TagNum
  684. itemCompanyInteraction.RoadshowNum = vsplit.RoadshowVideoNum + vsplit.ActivityVideoNum + vsplit.ActivityVoiceNum
  685. mapCompanyInteractionItem[vsplit.CompanyId] = itemCompanyInteraction
  686. mapCompanyInteractionItem[vsplit.CompanyId].CreateTime = time.Now()
  687. mapCompanyInteractionItem[vsplit.CompanyId].ModifyTime = time.Now()
  688. } else {
  689. mapCompanyInteractionItem[vsplit.CompanyId].CompanyId = vsplit.CompanyId
  690. mapCompanyInteractionItem[vsplit.CompanyId].ArticleHistoryNum += vsplit.HistoryNum
  691. mapCompanyInteractionItem[vsplit.CompanyId].ArticleCountNum += vsplit.CountNum
  692. mapCompanyInteractionItem[vsplit.CompanyId].ChartCountNum += vsplit.ChartCountNum
  693. mapCompanyInteractionItem[vsplit.CompanyId].IndustryFllowNum += vsplit.IndustryFllowNum
  694. mapCompanyInteractionItem[vsplit.CompanyId].DepartmentFollowNum += vsplit.DepartmentFollowNum
  695. mapCompanyInteractionItem[vsplit.CompanyId].KeyWordNum += vsplit.KeyWordNum
  696. mapCompanyInteractionItem[vsplit.CompanyId].ActivityOnLineNum += vsplit.OnLineNum
  697. mapCompanyInteractionItem[vsplit.CompanyId].ActivityOfficeNum += vsplit.OfficeNum
  698. mapCompanyInteractionItem[vsplit.CompanyId].ActivityNum += vsplit.OnLineNum + vsplit.OfficeNum
  699. mapCompanyInteractionItem[vsplit.CompanyId].TripNum += vsplit.TripNum
  700. mapCompanyInteractionItem[vsplit.CompanyId].RoadshowVideoNum += vsplit.RoadshowVideoNum
  701. mapCompanyInteractionItem[vsplit.CompanyId].ActivityVideoNum += vsplit.ActivityVideoNum
  702. mapCompanyInteractionItem[vsplit.CompanyId].ActivityVoiceNum += vsplit.ActivityVoiceNum
  703. mapCompanyInteractionItem[vsplit.CompanyId].TagNum += vsplit.TagNum
  704. mapCompanyInteractionItem[vsplit.CompanyId].RoadshowNum += vsplit.RoadshowVideoNum + vsplit.ActivityVideoNum + vsplit.ActivityVoiceNum
  705. }
  706. //如果存在就修改不存在就新增
  707. if mapUserInteraction[int(vsplit.UserId)] == 0 {
  708. itemsInteraction = append(itemsInteraction, itemInteraction)
  709. } else {
  710. err = models.UpdateCygxUserInteractionNum(itemInteraction)
  711. if err != nil {
  712. fmt.Println("UpdateCygxUserInteractionNum Err", err)
  713. return err
  714. }
  715. //fmt.Println(itemInteraction.UserId)
  716. //err = models.UpdateCygxUserInteractionNum(itemInteraction)
  717. }
  718. }
  719. }
  720. }
  721. }
  722. fmt.Println("修改机构互动量信息")
  723. ////修改机构互动量信息
  724. if len(mapComapnyInteractionNum) > 0 {
  725. for k, v := range mapComapnyInteractionNum {
  726. companyId := k
  727. err = models.UpdateComapanyInteractionNum(v, mapComapnyInteractionNumSeller[companyId], companyId)
  728. if err != nil {
  729. fmt.Println(" AddCygxUserInteractionNumList Err", err)
  730. }
  731. }
  732. }
  733. // 批量添加用户互动量信息
  734. if len(itemsInteraction) > 0 {
  735. _, err = models.AddCygxUserInteractionNumList(itemsInteraction)
  736. if err != nil {
  737. fmt.Println(" AddCygxUserInteractionNumList Err", err)
  738. }
  739. }
  740. // 批量添加用户互动量信息
  741. if len(mapCompanyInteractionItem) > 0 {
  742. fmt.Println("添加机构互动信息")
  743. for _, v := range mapCompanyInteractionItem {
  744. fmt.Println(v.CompanyId)
  745. if mapCompanyInteraction[v.CompanyId] > 0 {
  746. err = models.UpdateCygxCompanyInteractionNum(v)
  747. if err != nil {
  748. fmt.Println(" UpdateCygxCompanyInteractionNum Err", err)
  749. }
  750. } else {
  751. _, err = models.AddCygxCompanyInteractionNum(v)
  752. if err != nil {
  753. fmt.Println(" AddCygxCompanyInteractionNum Err", err)
  754. }
  755. }
  756. }
  757. }
  758. }
  759. //更新用户标签以及权重
  760. //go UpdateUserLabelWeight()
  761. return
  762. }
  763. func init123123() {
  764. var err error
  765. defer func() {
  766. if err != nil {
  767. go utils.SendAlarmMsg("更新用户标签失败;Err:"+err.Error(), 2)
  768. }
  769. }()
  770. var interactionNum int
  771. mapComapnyInteractionNum := make(map[int]int)
  772. listUser, err := models.GetUserRegisterListinit()
  773. if err != nil && err.Error() != utils.ErrNoRow() {
  774. fmt.Println("GetUserSellerRelationUserList Err", err)
  775. return
  776. }
  777. fmt.Println(len(listUser))
  778. //return
  779. //处理用户、机构互动量数据
  780. {
  781. var userIds string
  782. var itemsInteraction []*models.CygxUserInteractionNum
  783. mapUserInteraction := make(map[int]int)
  784. mapCompanyInteraction := make(map[int]int)
  785. mapCompanyInteractionItem := make(map[int]*models.CygxCompanyInteractionNum)
  786. mapComapnyInteractionSeller := make(map[int]int)
  787. mapComapnyInteractionNumSeller := make(map[int]int) // 销售可查看的互动量
  788. //获取已经处理记录的用户并记录切片
  789. listUserInteractionNum, err := models.GetCygxUserInteractionNumList()
  790. if err != nil && err.Error() != utils.ErrNoRow() {
  791. fmt.Println("GetCygxUserInteractionNumList Err", err)
  792. return
  793. }
  794. for _, v := range listUserInteractionNum {
  795. mapUserInteraction[v.UserId] = v.UserId
  796. }
  797. //获取跟销售建立绑定关系的用户并记录切片
  798. listUserSeller, err := models.GetUserSellerRelationUserList()
  799. if err != nil && err.Error() != utils.ErrNoRow() {
  800. fmt.Println("GetUserSellerRelationUserList Err", err)
  801. return
  802. }
  803. for _, v := range listUserSeller {
  804. mapComapnyInteractionSeller[v.UserId] = v.UserId
  805. }
  806. listCompanyInteractionNum, err := models.GetCygxCompanyInteractionNumList()
  807. if err != nil && err.Error() != utils.ErrNoRow() {
  808. fmt.Println("GetCygxUserInteractionNumList Err", err)
  809. return
  810. }
  811. for _, v := range listCompanyInteractionNum {
  812. mapCompanyInteraction[v.CompanyId] = v.CompanyId
  813. }
  814. //处理用户互动量数据
  815. for kUser, vUser := range listUser {
  816. userIds += strconv.Itoa(vUser.UserId) + ","
  817. //一次查询一百个避免用户过多
  818. if kUser%100 == 0 {
  819. userIds = strings.TrimRight(userIds, ",")
  820. userUserInteractionList, err := models.GetCygxCompanyUserUserInteraction(userIds)
  821. if err != nil {
  822. fmt.Println("GetCygxCompanyUserUserInteraction Err", err)
  823. return
  824. }
  825. //处理用户的互动量
  826. if len(userUserInteractionList) > 0 {
  827. for _, vsplit := range userUserInteractionList {
  828. interactionNum = vsplit.HistoryNum + vsplit.CountNum + vsplit.IndustryFllowNum + vsplit.DepartmentFollowNum + vsplit.KeyWordNum + vsplit.OnLineNum + vsplit.OfficeNum + vsplit.ChartCountNum + vsplit.TripNum + vsplit.RoadshowVideoNum + vsplit.ActivityVideoNum + vsplit.ActivityVoiceNum + vsplit.TagNum
  829. if interactionNum > 0 {
  830. //更改用户的互动量
  831. err = models.UpdateUserInteractionNum(interactionNum, int(vsplit.UserId))
  832. if err != nil {
  833. fmt.Println("UpdateUserInteractionNum Err", err)
  834. return
  835. }
  836. mapComapnyInteractionNum[vsplit.CompanyId] += interactionNum
  837. itemInteraction := new(models.CygxUserInteractionNum)
  838. itemInteraction.UserId = int(vsplit.UserId)
  839. itemInteraction.ArticleHistoryNum = vsplit.HistoryNum
  840. itemInteraction.ArticleCountNum = vsplit.CountNum
  841. itemInteraction.ChartCountNum = vsplit.ChartCountNum
  842. itemInteraction.IndustryFllowNum = vsplit.IndustryFllowNum
  843. itemInteraction.DepartmentFollowNum = vsplit.DepartmentFollowNum
  844. itemInteraction.KeyWordNum = vsplit.KeyWordNum
  845. itemInteraction.ActivityOnLineNum = vsplit.OnLineNum
  846. itemInteraction.ActivityOfficeNum = vsplit.OfficeNum
  847. itemInteraction.ActivityNum = vsplit.OnLineNum + vsplit.OfficeNum
  848. itemInteraction.TripNum = vsplit.TripNum
  849. itemInteraction.RoadshowVideoNum = vsplit.RoadshowVideoNum
  850. itemInteraction.ActivityVideoNum = vsplit.ActivityVideoNum
  851. itemInteraction.ActivityVoiceNum = vsplit.ActivityVoiceNum
  852. itemInteraction.TagNum = vsplit.TagNum
  853. itemInteraction.RoadshowNum = vsplit.RoadshowVideoNum + vsplit.ActivityVideoNum + vsplit.ActivityVoiceNum
  854. itemInteraction.CreateTime = time.Now()
  855. itemInteraction.ModifyTime = time.Now()
  856. //如果这个切片下的结构体没有值就给他初始值,如果有就跟后面的相加
  857. if mapCompanyInteractionItem[vsplit.CompanyId] == nil {
  858. itemCompanyInteraction := new(models.CygxCompanyInteractionNum)
  859. itemCompanyInteraction.CompanyId = vsplit.CompanyId
  860. itemCompanyInteraction.ArticleHistoryNum = vsplit.HistoryNum
  861. itemCompanyInteraction.ArticleCountNum = vsplit.CountNum
  862. itemCompanyInteraction.ChartCountNum = vsplit.ChartCountNum
  863. itemCompanyInteraction.IndustryFllowNum = vsplit.IndustryFllowNum
  864. itemCompanyInteraction.DepartmentFollowNum = vsplit.DepartmentFollowNum
  865. itemCompanyInteraction.KeyWordNum = vsplit.KeyWordNum
  866. itemCompanyInteraction.ActivityOnLineNum = vsplit.OnLineNum
  867. itemCompanyInteraction.ActivityOfficeNum = vsplit.OfficeNum
  868. itemCompanyInteraction.ActivityNum = vsplit.OnLineNum + vsplit.OfficeNum
  869. itemCompanyInteraction.TripNum = vsplit.TripNum
  870. itemCompanyInteraction.RoadshowVideoNum = vsplit.RoadshowVideoNum
  871. itemCompanyInteraction.ActivityVideoNum = vsplit.ActivityVideoNum
  872. itemCompanyInteraction.ActivityVoiceNum = vsplit.ActivityVoiceNum
  873. itemCompanyInteraction.TagNum = vsplit.TagNum
  874. itemCompanyInteraction.RoadshowNum = vsplit.RoadshowVideoNum + vsplit.ActivityVideoNum + vsplit.ActivityVoiceNum
  875. mapCompanyInteractionItem[vsplit.CompanyId] = itemCompanyInteraction
  876. mapCompanyInteractionItem[vsplit.CompanyId].CreateTime = time.Now()
  877. mapCompanyInteractionItem[vsplit.CompanyId].ModifyTime = time.Now()
  878. } else {
  879. fmt.Println("公司ID", vsplit.CompanyId)
  880. mapCompanyInteractionItem[vsplit.CompanyId].CompanyId = vsplit.CompanyId
  881. mapCompanyInteractionItem[vsplit.CompanyId].ArticleHistoryNum += vsplit.HistoryNum
  882. mapCompanyInteractionItem[vsplit.CompanyId].ArticleCountNum += vsplit.CountNum
  883. mapCompanyInteractionItem[vsplit.CompanyId].ChartCountNum += vsplit.ChartCountNum
  884. mapCompanyInteractionItem[vsplit.CompanyId].IndustryFllowNum += vsplit.IndustryFllowNum
  885. mapCompanyInteractionItem[vsplit.CompanyId].DepartmentFollowNum += vsplit.DepartmentFollowNum
  886. mapCompanyInteractionItem[vsplit.CompanyId].KeyWordNum += vsplit.KeyWordNum
  887. mapCompanyInteractionItem[vsplit.CompanyId].ActivityOnLineNum += vsplit.OnLineNum
  888. mapCompanyInteractionItem[vsplit.CompanyId].ActivityOfficeNum += vsplit.OfficeNum
  889. mapCompanyInteractionItem[vsplit.CompanyId].ActivityNum += vsplit.OnLineNum + vsplit.OfficeNum
  890. mapCompanyInteractionItem[vsplit.CompanyId].TripNum += vsplit.TripNum
  891. mapCompanyInteractionItem[vsplit.CompanyId].RoadshowVideoNum += vsplit.RoadshowVideoNum
  892. mapCompanyInteractionItem[vsplit.CompanyId].ActivityVideoNum += vsplit.ActivityVideoNum
  893. mapCompanyInteractionItem[vsplit.CompanyId].ActivityVoiceNum += vsplit.ActivityVoiceNum
  894. mapCompanyInteractionItem[vsplit.CompanyId].TagNum += vsplit.TagNum
  895. mapCompanyInteractionItem[vsplit.CompanyId].RoadshowNum += vsplit.RoadshowVideoNum + vsplit.ActivityVideoNum + vsplit.ActivityVoiceNum
  896. }
  897. //如果存在就修改不存在就新增
  898. if mapUserInteraction[int(vsplit.UserId)] == 0 {
  899. itemsInteraction = append(itemsInteraction, itemInteraction)
  900. } else {
  901. err = models.UpdateCygxUserInteractionNum(itemInteraction)
  902. if err != nil {
  903. fmt.Println("UpdateCygxUserInteractionNum Err", err)
  904. return
  905. }
  906. fmt.Println(itemInteraction.UserId)
  907. }
  908. }
  909. }
  910. }
  911. userIds = ""
  912. }
  913. }
  914. userIds = strings.TrimRight(userIds, ",")
  915. if userIds != "" {
  916. userUserInteractionList, err := models.GetCygxCompanyUserUserInteraction(userIds)
  917. if err != nil {
  918. fmt.Println("GetCygxCompanyUserUserInteraction Err", err)
  919. return
  920. }
  921. //fmt.Println("处理用户剩余的")
  922. //处理用户的互动量
  923. if len(userUserInteractionList) > 0 {
  924. for _, vsplit := range userUserInteractionList {
  925. interactionNum = vsplit.HistoryNum + vsplit.CountNum + vsplit.IndustryFllowNum + vsplit.DepartmentFollowNum + vsplit.KeyWordNum + vsplit.OnLineNum + vsplit.OfficeNum + vsplit.ChartCountNum + vsplit.TripNum + vsplit.RoadshowVideoNum + vsplit.ActivityVideoNum + vsplit.ActivityVoiceNum + vsplit.TagNum
  926. if interactionNum > 0 {
  927. err = models.UpdateUserInteractionNum(interactionNum, int(vsplit.UserId))
  928. if err != nil {
  929. fmt.Println("UpdateUserInteractionNum Err", err)
  930. return
  931. }
  932. mapComapnyInteractionNum[vsplit.CompanyId] += interactionNum
  933. if mapComapnyInteractionSeller[int(vsplit.UserId)] > 0 {
  934. mapComapnyInteractionNumSeller[vsplit.CompanyId] += interactionNum //如果销售可以看到这个人,那么就对销售可见的数量进行添加
  935. }
  936. itemInteraction := new(models.CygxUserInteractionNum)
  937. itemInteraction.UserId = int(vsplit.UserId)
  938. itemInteraction.ArticleHistoryNum = vsplit.HistoryNum
  939. itemInteraction.ArticleCountNum = vsplit.CountNum
  940. itemInteraction.ChartCountNum = vsplit.ChartCountNum
  941. itemInteraction.IndustryFllowNum = vsplit.IndustryFllowNum
  942. itemInteraction.DepartmentFollowNum = vsplit.DepartmentFollowNum
  943. itemInteraction.KeyWordNum = vsplit.KeyWordNum
  944. itemInteraction.ActivityOnLineNum = vsplit.OnLineNum
  945. itemInteraction.ActivityOfficeNum = vsplit.OfficeNum
  946. itemInteraction.ActivityNum = vsplit.OnLineNum + vsplit.OfficeNum
  947. itemInteraction.TripNum = vsplit.TripNum
  948. itemInteraction.RoadshowVideoNum = vsplit.RoadshowVideoNum
  949. itemInteraction.ActivityVideoNum = vsplit.ActivityVideoNum
  950. itemInteraction.ActivityVoiceNum = vsplit.ActivityVoiceNum
  951. itemInteraction.TagNum = vsplit.TagNum
  952. itemInteraction.RoadshowNum = vsplit.RoadshowVideoNum + vsplit.ActivityVideoNum + vsplit.ActivityVoiceNum
  953. //如果这个切片下的结构体没有值就给他初始值,如果有就跟后面的相加
  954. if mapCompanyInteractionItem[vsplit.CompanyId] == nil {
  955. itemCompanyInteraction := new(models.CygxCompanyInteractionNum)
  956. itemCompanyInteraction.CompanyId = vsplit.CompanyId
  957. itemCompanyInteraction.ArticleHistoryNum = vsplit.HistoryNum
  958. itemCompanyInteraction.ArticleCountNum = vsplit.CountNum
  959. itemCompanyInteraction.ChartCountNum = vsplit.ChartCountNum
  960. itemCompanyInteraction.IndustryFllowNum = vsplit.IndustryFllowNum
  961. itemCompanyInteraction.DepartmentFollowNum = vsplit.DepartmentFollowNum
  962. itemCompanyInteraction.KeyWordNum = vsplit.KeyWordNum
  963. itemCompanyInteraction.ActivityOnLineNum = vsplit.OnLineNum
  964. itemCompanyInteraction.ActivityOfficeNum = vsplit.OfficeNum
  965. itemCompanyInteraction.ActivityNum = vsplit.OnLineNum + vsplit.OfficeNum
  966. itemCompanyInteraction.TripNum = vsplit.TripNum
  967. itemCompanyInteraction.RoadshowVideoNum = vsplit.RoadshowVideoNum
  968. itemCompanyInteraction.ActivityVideoNum = vsplit.ActivityVideoNum
  969. itemCompanyInteraction.ActivityVoiceNum = vsplit.ActivityVoiceNum
  970. itemCompanyInteraction.TagNum = vsplit.TagNum
  971. itemCompanyInteraction.RoadshowNum = vsplit.RoadshowVideoNum + vsplit.ActivityVideoNum + vsplit.ActivityVoiceNum
  972. mapCompanyInteractionItem[vsplit.CompanyId] = itemCompanyInteraction
  973. mapCompanyInteractionItem[vsplit.CompanyId].CreateTime = time.Now()
  974. mapCompanyInteractionItem[vsplit.CompanyId].ModifyTime = time.Now()
  975. } else {
  976. mapCompanyInteractionItem[vsplit.CompanyId].CompanyId = vsplit.CompanyId
  977. mapCompanyInteractionItem[vsplit.CompanyId].ArticleHistoryNum += vsplit.HistoryNum
  978. mapCompanyInteractionItem[vsplit.CompanyId].ArticleCountNum += vsplit.CountNum
  979. mapCompanyInteractionItem[vsplit.CompanyId].ChartCountNum += vsplit.ChartCountNum
  980. mapCompanyInteractionItem[vsplit.CompanyId].IndustryFllowNum += vsplit.IndustryFllowNum
  981. mapCompanyInteractionItem[vsplit.CompanyId].DepartmentFollowNum += vsplit.DepartmentFollowNum
  982. mapCompanyInteractionItem[vsplit.CompanyId].KeyWordNum += vsplit.KeyWordNum
  983. mapCompanyInteractionItem[vsplit.CompanyId].ActivityOnLineNum += vsplit.OnLineNum
  984. mapCompanyInteractionItem[vsplit.CompanyId].ActivityOfficeNum += vsplit.OfficeNum
  985. mapCompanyInteractionItem[vsplit.CompanyId].ActivityNum += vsplit.OnLineNum + vsplit.OfficeNum
  986. mapCompanyInteractionItem[vsplit.CompanyId].TripNum += vsplit.TripNum
  987. mapCompanyInteractionItem[vsplit.CompanyId].RoadshowVideoNum += vsplit.RoadshowVideoNum
  988. mapCompanyInteractionItem[vsplit.CompanyId].ActivityVideoNum += vsplit.ActivityVideoNum
  989. mapCompanyInteractionItem[vsplit.CompanyId].ActivityVoiceNum += vsplit.ActivityVoiceNum
  990. mapCompanyInteractionItem[vsplit.CompanyId].TagNum += vsplit.TagNum
  991. mapCompanyInteractionItem[vsplit.CompanyId].RoadshowNum += vsplit.RoadshowVideoNum + vsplit.ActivityVideoNum + vsplit.ActivityVoiceNum
  992. }
  993. ////如果存在就修改不存在就新增
  994. //if mapUserInteraction[int(vsplit.UserId)] == 0 {
  995. // itemsInteraction = append(itemsInteraction, itemInteraction)
  996. //} else {
  997. // err = models.UpdateCygxUserInteractionNum(itemInteraction)
  998. // if err != nil {
  999. // fmt.Println("UpdateCygxUserInteractionNum Err", err)
  1000. // return
  1001. // }
  1002. // fmt.Println(itemInteraction.UserId)
  1003. // err = models.UpdateCygxUserInteractionNum(itemInteraction)
  1004. //}
  1005. }
  1006. }
  1007. }
  1008. }
  1009. fmt.Println("修改机构互动量信息")
  1010. ////修改机构互动量信息
  1011. if len(mapComapnyInteractionNum) > 0 {
  1012. for k, v := range mapComapnyInteractionNum {
  1013. companyId := k
  1014. err = models.UpdateComapanyInteractionNum(v, mapComapnyInteractionNumSeller[companyId], companyId)
  1015. if err != nil {
  1016. fmt.Println(" AddCygxUserInteractionNumList Err", err)
  1017. }
  1018. }
  1019. }
  1020. }
  1021. }
  1022. //func init() {
  1023. // UpdateWxUserLabelNew()
  1024. //}
  1025. func UpdateWxUserLabel(cont context.Context) (err error) {
  1026. //func UpdateWxUserLabel() (err error) {
  1027. defer func() {
  1028. if err != nil {
  1029. fmt.Println(err)
  1030. go utils.SendAlarmMsg(fmt.Sprint("更新用户标签失败UpdateWxUserLabel, err:", err.Error()), 2)
  1031. }
  1032. }()
  1033. mapComapnyInteractionNum := make(map[int]int) // 机构互动数量
  1034. mapComapnyInteractionNumSeller := make(map[int]int) // 销售可查看的机构互动数量
  1035. mapComapnyInteractionSeller := make(map[int]bool) // 跟销售建立绑定关系的用户
  1036. mapComapnyInteractionNumItem := make(map[int]*models.CygxCompanyInteractionNum) // 公司互动详情结构体
  1037. var comapnyInteractionNumItemAdd []*models.CygxCompanyInteractionNum // 公司互动详情结构体新增
  1038. var comapnyInteractionNumItemUpdate []*models.CygxCompanyInteractionNum // 公司互动详情结构体修改
  1039. //获取跟销售建立绑定关系的用户并记录切片
  1040. listUserSeller, e := models.GetUserSellerRelationUserList()
  1041. if e != nil && e.Error() != utils.ErrNoRow() {
  1042. err = errors.New("GetUserSellerRelationUserList, Err: " + e.Error())
  1043. return
  1044. }
  1045. for _, v := range listUserSeller {
  1046. mapComapnyInteractionSeller[v.UserId] = true
  1047. }
  1048. var condition string
  1049. //condition = ` AND h.create_time < '%s' AND h.company_id IN ( 398,17773) `
  1050. condition = ` AND h.create_time < '%s' `
  1051. condition = fmt.Sprintf(condition, time.Now().Format(utils.FormatDate)) // 截止昨天的所有数据
  1052. //fmt.Println(condition)
  1053. //报告阅读记录1
  1054. {
  1055. listArticleHistoryRecord, e := models.GetCygxArticleHistoryRecordInteractionNum(condition)
  1056. if e != nil {
  1057. err = errors.New("GetCygxArticleHistoryRecordInteractionNum, Err: " + e.Error())
  1058. return
  1059. }
  1060. for _, v := range listArticleHistoryRecord {
  1061. mapComapnyInteractionNum[v.CompanyId] += v.InteractionNum
  1062. if mapComapnyInteractionSeller[v.UserId] { //如果用户跟销售建立绑定关系,就对互动量进行累加
  1063. mapComapnyInteractionNumSeller[v.CompanyId] += v.InteractionNum
  1064. }
  1065. if mapComapnyInteractionNumItem[v.CompanyId] == nil {
  1066. mapComapnyInteractionNumItem[v.CompanyId] = new(models.CygxCompanyInteractionNum)
  1067. }
  1068. mapComapnyInteractionNumItem[v.CompanyId].ArticleHistoryNum += v.InteractionNum
  1069. }
  1070. }
  1071. //报告收藏记录2
  1072. {
  1073. listArticleCollect, e := models.GetCygxArticleCollectInteractionNum(condition)
  1074. if e != nil {
  1075. err = errors.New("GetCygxArticleCollectInteractionNum, Err: " + e.Error())
  1076. return
  1077. }
  1078. for _, v := range listArticleCollect {
  1079. mapComapnyInteractionNum[v.CompanyId] += v.InteractionNum
  1080. if mapComapnyInteractionSeller[v.UserId] { //如果用户跟销售建立绑定关系,就对互动量进行累加
  1081. mapComapnyInteractionNumSeller[v.CompanyId] += v.InteractionNum
  1082. }
  1083. if mapComapnyInteractionNumItem[v.CompanyId] == nil {
  1084. mapComapnyInteractionNumItem[v.CompanyId] = new(models.CygxCompanyInteractionNum)
  1085. }
  1086. mapComapnyInteractionNumItem[v.CompanyId].ArticleCountNum += v.InteractionNum
  1087. }
  1088. }
  1089. //图表收藏记录3
  1090. {
  1091. listChartCollect, e := models.GetCygxChartCollectInteractionNum(condition)
  1092. if e != nil {
  1093. err = errors.New("GetCygxChartCollectInteractionNum, Err: " + e.Error())
  1094. return
  1095. }
  1096. for _, v := range listChartCollect {
  1097. mapComapnyInteractionNum[v.CompanyId] += v.InteractionNum
  1098. if mapComapnyInteractionSeller[v.UserId] { //如果用户跟销售建立绑定关系,就对互动量进行累加
  1099. mapComapnyInteractionNumSeller[v.CompanyId] += v.InteractionNum
  1100. }
  1101. if mapComapnyInteractionNumItem[v.CompanyId] == nil {
  1102. mapComapnyInteractionNumItem[v.CompanyId] = new(models.CygxCompanyInteractionNum)
  1103. }
  1104. mapComapnyInteractionNumItem[v.CompanyId].ChartCountNum += v.InteractionNum
  1105. }
  1106. }
  1107. //用户关注产业数量4
  1108. {
  1109. listIndustryFllow, e := models.GetCygxIndustryFllowInteractionNum(condition)
  1110. if e != nil {
  1111. err = errors.New("GetCygxIndustryFllowInteractionNum, Err: " + e.Error())
  1112. return
  1113. }
  1114. for _, v := range listIndustryFllow {
  1115. mapComapnyInteractionNum[v.CompanyId] += v.InteractionNum
  1116. if mapComapnyInteractionSeller[v.UserId] { //如果用户跟销售建立绑定关系,就对互动量进行累加
  1117. mapComapnyInteractionNumSeller[v.CompanyId] += v.InteractionNum
  1118. }
  1119. if mapComapnyInteractionNumItem[v.CompanyId] == nil {
  1120. mapComapnyInteractionNumItem[v.CompanyId] = new(models.CygxCompanyInteractionNum)
  1121. }
  1122. mapComapnyInteractionNumItem[v.CompanyId].IndustryFllowNum += v.InteractionNum
  1123. }
  1124. }
  1125. //用户搜索关键词数量5
  1126. {
  1127. listSearchKeyWord, e := models.GetCygxSearchKeyWordInteractionNum(condition)
  1128. if e != nil {
  1129. err = errors.New("GetCygxSearchKeyWordInteractionNum, Err: " + e.Error())
  1130. return
  1131. }
  1132. for _, v := range listSearchKeyWord {
  1133. mapComapnyInteractionNum[v.CompanyId] += v.InteractionNum
  1134. if mapComapnyInteractionSeller[v.UserId] { //如果用户跟销售建立绑定关系,就对互动量进行累加
  1135. mapComapnyInteractionNumSeller[v.CompanyId] += v.InteractionNum
  1136. }
  1137. if mapComapnyInteractionNumItem[v.CompanyId] == nil {
  1138. mapComapnyInteractionNumItem[v.CompanyId] = new(models.CygxCompanyInteractionNum)
  1139. }
  1140. mapComapnyInteractionNumItem[v.CompanyId].KeyWordNum += v.InteractionNum
  1141. }
  1142. }
  1143. //用户活动报名参会数量6
  1144. {
  1145. listActivitySignup, e := models.GetCygxActivitySignupInteractionNum(condition)
  1146. if e != nil {
  1147. err = errors.New("GetCygxActivitySignupInteractionNum, Err: " + e.Error())
  1148. return
  1149. }
  1150. for _, v := range listActivitySignup {
  1151. mapComapnyInteractionNum[v.CompanyId] += v.InteractionNum
  1152. if mapComapnyInteractionSeller[v.UserId] { //如果用户跟销售建立绑定关系,就对互动量进行累加
  1153. mapComapnyInteractionNumSeller[v.CompanyId] += v.InteractionNum
  1154. }
  1155. if mapComapnyInteractionNumItem[v.CompanyId] == nil {
  1156. mapComapnyInteractionNumItem[v.CompanyId] = new(models.CygxCompanyInteractionNum)
  1157. }
  1158. mapComapnyInteractionNumItem[v.CompanyId].ActivityNum += v.InteractionNum
  1159. }
  1160. }
  1161. //用户专项调研活动报名参会数量7
  1162. {
  1163. listActivitySpecialSignup, e := models.GetCygxActivitySpecialSignupInteractionNum(condition)
  1164. if e != nil {
  1165. err = errors.New("GetCygxActivitySpecialSignupInteractionNum, Err: " + e.Error())
  1166. return
  1167. }
  1168. for _, v := range listActivitySpecialSignup {
  1169. mapComapnyInteractionNum[v.CompanyId] += v.InteractionNum
  1170. if mapComapnyInteractionSeller[v.UserId] { //如果用户跟销售建立绑定关系,就对互动量进行累加
  1171. mapComapnyInteractionNumSeller[v.CompanyId] += v.InteractionNum
  1172. }
  1173. if mapComapnyInteractionNumItem[v.CompanyId] == nil {
  1174. mapComapnyInteractionNumItem[v.CompanyId] = new(models.CygxCompanyInteractionNum)
  1175. }
  1176. mapComapnyInteractionNumItem[v.CompanyId].TripNum += v.InteractionNum
  1177. }
  1178. }
  1179. //用户路演精华播放数量8
  1180. {
  1181. listMicroRoadshowVideoHistory, e := models.GetCygxMicroRoadshowVideoHistoryInteractionNum(condition)
  1182. if e != nil {
  1183. err = errors.New("GetCygxMicroRoadshowVideoHistoryInteractionNum, Err: " + e.Error())
  1184. return
  1185. }
  1186. for _, v := range listMicroRoadshowVideoHistory {
  1187. mapComapnyInteractionNum[v.CompanyId] += v.InteractionNum
  1188. if mapComapnyInteractionSeller[v.UserId] { //如果用户跟销售建立绑定关系,就对互动量进行累加
  1189. mapComapnyInteractionNumSeller[v.CompanyId] += v.InteractionNum
  1190. }
  1191. if mapComapnyInteractionNumItem[v.CompanyId] == nil {
  1192. mapComapnyInteractionNumItem[v.CompanyId] = new(models.CygxCompanyInteractionNum)
  1193. }
  1194. mapComapnyInteractionNumItem[v.CompanyId].RoadshowNum += v.InteractionNum
  1195. }
  1196. }
  1197. //用户活动视频播放数量9
  1198. {
  1199. listActivityVideoHistory, e := models.GetCygxActivityVideoHistoryInteractionNum(condition)
  1200. if e != nil {
  1201. err = errors.New("GetCygxActivityVideoHistoryInteractionNum, Err: " + e.Error())
  1202. return
  1203. }
  1204. for _, v := range listActivityVideoHistory {
  1205. mapComapnyInteractionNum[v.CompanyId] += v.InteractionNum
  1206. if mapComapnyInteractionSeller[v.UserId] { //如果用户跟销售建立绑定关系,就对互动量进行累加
  1207. mapComapnyInteractionNumSeller[v.CompanyId] += v.InteractionNum
  1208. }
  1209. if mapComapnyInteractionNumItem[v.CompanyId] == nil {
  1210. mapComapnyInteractionNumItem[v.CompanyId] = new(models.CygxCompanyInteractionNum)
  1211. }
  1212. mapComapnyInteractionNumItem[v.CompanyId].ActivityVideoNum += v.InteractionNum
  1213. }
  1214. }
  1215. //用户活动音频播放数量10
  1216. {
  1217. listActivityVoiceHistory, e := models.GetCygxActivityVoiceHistoryInteractionNum(condition)
  1218. if e != nil {
  1219. err = errors.New("GetCygxActivityVoiceHistoryInteractionNum, Err: " + e.Error())
  1220. return
  1221. }
  1222. for _, v := range listActivityVoiceHistory {
  1223. mapComapnyInteractionNum[v.CompanyId] += v.InteractionNum
  1224. if mapComapnyInteractionSeller[v.UserId] { //如果用户跟销售建立绑定关系,就对互动量进行累加
  1225. mapComapnyInteractionNumSeller[v.CompanyId] += v.InteractionNum
  1226. }
  1227. if mapComapnyInteractionNumItem[v.CompanyId] == nil {
  1228. mapComapnyInteractionNumItem[v.CompanyId] = new(models.CygxCompanyInteractionNum)
  1229. }
  1230. mapComapnyInteractionNumItem[v.CompanyId].ActivityVoiceNum += v.InteractionNum
  1231. }
  1232. }
  1233. //用户首页标签点击量数量11
  1234. {
  1235. listTagHistory, e := models.GetCygxTagHistoryInteractionNum(condition)
  1236. if e != nil {
  1237. err = errors.New("GetCygxTagHistoryInteractionNum, Err: " + e.Error())
  1238. return
  1239. }
  1240. for _, v := range listTagHistory {
  1241. mapComapnyInteractionNum[v.CompanyId] += v.InteractionNum
  1242. if mapComapnyInteractionSeller[v.UserId] { //如果用户跟销售建立绑定关系,就对互动量进行累加
  1243. mapComapnyInteractionNumSeller[v.CompanyId] += v.InteractionNum
  1244. }
  1245. if mapComapnyInteractionNumItem[v.CompanyId] == nil {
  1246. mapComapnyInteractionNumItem[v.CompanyId] = new(models.CygxCompanyInteractionNum)
  1247. }
  1248. mapComapnyInteractionNumItem[v.CompanyId].TagNum += v.InteractionNum
  1249. }
  1250. }
  1251. //用户关注文章作者数量12
  1252. {
  1253. listArticleDepartmentFollow, e := models.GetCygxArticleDepartmentFollowInteractionNum(condition)
  1254. if e != nil {
  1255. err = errors.New("GetCygxArticleDepartmentFollowInteractionNum, Err: " + e.Error())
  1256. return
  1257. }
  1258. for _, v := range listArticleDepartmentFollow {
  1259. mapComapnyInteractionNum[v.CompanyId] += v.InteractionNum
  1260. if mapComapnyInteractionSeller[v.UserId] { //如果用户跟销售建立绑定关系,就对互动量进行累加
  1261. mapComapnyInteractionNumSeller[v.CompanyId] += v.InteractionNum
  1262. }
  1263. if mapComapnyInteractionNumItem[v.CompanyId] == nil {
  1264. mapComapnyInteractionNumItem[v.CompanyId] = new(models.CygxCompanyInteractionNum)
  1265. }
  1266. mapComapnyInteractionNumItem[v.CompanyId].DepartmentFollowNum += v.InteractionNum
  1267. }
  1268. }
  1269. //用户收藏研选专栏数量13
  1270. //{
  1271. // listYanxuanSpecialCollect, e := models.GetCygxYanxuanSpecialCollectInteractionNum(condition)
  1272. // if e != nil {
  1273. // err = errors.New("GetCygxYanxuanSpecialCollectInteractionNum, Err: " + e.Error())
  1274. // return
  1275. // }
  1276. // for _, v := range listYanxuanSpecialCollect {
  1277. // mapComapnyInteractionNum[v.CompanyId] += v.InteractionNum
  1278. // if mapComapnyInteractionSeller[v.UserId] { //如果用户跟销售建立绑定关系,就对互动量进行累加
  1279. // mapComapnyInteractionNumSeller[v.CompanyId] += v.InteractionNum
  1280. // }
  1281. //
  1282. // if mapComapnyInteractionNumItem[v.CompanyId] == nil {
  1283. // mapComapnyInteractionNumItem[v.CompanyId] = new(models.CygxCompanyInteractionNum)
  1284. // }
  1285. // mapComapnyInteractionNumItem[v.CompanyId].YanxuanSpecialCollectNum += v.InteractionNum
  1286. // }
  1287. //}
  1288. //用户关注研选专栏作者数量统计14
  1289. //{
  1290. // listYanxuanSpecialFollow, e := models.GetCygxYanxuanSpecialFollowInteractionNum(condition)
  1291. // if e != nil {
  1292. // err = errors.New("GetCygxYanxuanSpecialFollowInteractionNum, Err: " + e.Error())
  1293. // return
  1294. // }
  1295. // for _, v := range listYanxuanSpecialFollow {
  1296. // mapComapnyInteractionNum[v.CompanyId] += v.InteractionNum
  1297. // if mapComapnyInteractionSeller[v.UserId] { //如果用户跟销售建立绑定关系,就对互动量进行累加
  1298. // mapComapnyInteractionNumSeller[v.CompanyId] += v.InteractionNum
  1299. // }
  1300. // if mapComapnyInteractionNumItem[v.CompanyId] == nil {
  1301. // mapComapnyInteractionNumItem[v.CompanyId] = new(models.CygxCompanyInteractionNum)
  1302. // }
  1303. // mapComapnyInteractionNumItem[v.CompanyId].YanxuanSpecialFollowNum += v.InteractionNum
  1304. // }
  1305. //}
  1306. //用户研选专栏阅读数量数量15
  1307. {
  1308. listYanxuanSpecialFollow, e := models.GetCygxYanxuanSpecialRecordInteractionNum(condition)
  1309. if e != nil {
  1310. err = errors.New("GetCygxYanxuanSpecialRecordInteractionNum, Err: " + e.Error())
  1311. return
  1312. }
  1313. for _, v := range listYanxuanSpecialFollow {
  1314. mapComapnyInteractionNum[v.CompanyId] += v.InteractionNum
  1315. if mapComapnyInteractionSeller[v.UserId] { //如果用户跟销售建立绑定关系,就对互动量进行累加
  1316. mapComapnyInteractionNumSeller[v.CompanyId] += v.InteractionNum
  1317. }
  1318. if mapComapnyInteractionNumItem[v.CompanyId] == nil {
  1319. mapComapnyInteractionNumItem[v.CompanyId] = new(models.CygxCompanyInteractionNum)
  1320. }
  1321. mapComapnyInteractionNumItem[v.CompanyId].YanxuanSpecialNum += v.InteractionNum
  1322. }
  1323. }
  1324. mapCompanyInteraction := make(map[int]bool)
  1325. mapCompanyInteractionItem := make(map[int]*models.CygxCompanyInteractionNum)
  1326. listCompanyInteractionNum, e := models.GetCygxCompanyInteractionNumList() // 有过互动记录的公司
  1327. if e != nil && e.Error() != utils.ErrNoRow() {
  1328. err = errors.New("GetCygxCompanyInteractionNumList, Err: " + e.Error())
  1329. return
  1330. }
  1331. for _, v := range listCompanyInteractionNum {
  1332. mapCompanyInteraction[v.CompanyId] = true
  1333. mapCompanyInteractionItem[v.CompanyId] = v
  1334. }
  1335. var itemsCompanyInteractionNums []*models.CompanyInteractionNumReq // 公司总的互动量结构体
  1336. companyInteractionNumList, e := models.GetCompanyInteractionNumList() // 获取有机构互动的公司
  1337. mapInteractionNumOld := make(map[int]int) //历史公司总的互动量
  1338. mapInteractionNumSellerOld := make(map[int]int) //历史公司关联销售所能查看的互动量
  1339. for _, v := range companyInteractionNumList {
  1340. mapInteractionNumOld[v.CompanyId] = v.InteractionNum
  1341. mapInteractionNumSellerOld[v.CompanyId] = v.InteractionNumSeller
  1342. }
  1343. for k, v := range mapComapnyInteractionNumItem {
  1344. v.CompanyId = k
  1345. if mapCompanyInteraction[k] {
  1346. itemOld := mapCompanyInteractionItem[v.CompanyId]
  1347. //ArticleHistoryNum int `description:"文章浏览数量"`
  1348. //ArticleCountNum int `description:"文章收藏数量"`
  1349. //ChartCountNum int `description:"图表收藏"`
  1350. //IndustryFllowNum int `description:"产业关注数量"`
  1351. //DepartmentFollowNum int `description:"作者关注数量"`
  1352. //KeyWordNum int `description:"关键词搜索次数"`
  1353. //ActivityOnLineNum int `description:"线上活动报名次数"`
  1354. //ActivityOfficeNum int `description:"线下活动报名次数"`
  1355. //ActivityNum int `description:"活动报名次数"`
  1356. //TripNum int `description:"专项产业调研数量"`
  1357. //RoadshowVideoNum int `description:"产业视频播放量"`
  1358. //ActivityVideoNum int `description:"活动视频播放量"`
  1359. //ActivityVoiceNum int `description:"活动音频播放量"`
  1360. //RoadshowNum int `description:"路演播放总数量"`
  1361. //TagNum int `description:"标签点击次数"`
  1362. //YanxuanSpecialNum int `description:"研选专栏阅读数量"`
  1363. //YanxuanSpecialCollectNum int `description:"研选专栏收藏数量"`
  1364. //YanxuanSpecialFollowNum int `description:"研选专栏作者关注数量"`
  1365. //如果这些数据对比不一样,那么就对这条数据进行更新
  1366. //if itemOld != nil && (itemOld.ArticleHistoryNum != v.ArticleHistoryNum || itemOld.ArticleCountNum != v.ArticleCountNum || itemOld.ChartCountNum != v.ChartCountNum || itemOld.IndustryFllowNum != v.IndustryFllowNum || itemOld.DepartmentFollowNum != v.DepartmentFollowNum || itemOld.KeyWordNum != v.KeyWordNum || itemOld.ActivityNum != v.ActivityNum || itemOld.TripNum != v.TripNum || itemOld.RoadshowVideoNum != v.RoadshowVideoNum || itemOld.ActivityVideoNum != v.ActivityVideoNum || itemOld.ActivityVoiceNum != v.ActivityVoiceNum || itemOld.RoadshowNum != v.RoadshowNum || itemOld.TagNum != v.TagNum || itemOld.YanxuanSpecialNum != v.YanxuanSpecialNum || itemOld.YanxuanSpecialCollectNum != v.YanxuanSpecialCollectNum || itemOld.YanxuanSpecialFollowNum != v.YanxuanSpecialFollowNum) {
  1367. if itemOld != nil && (itemOld.ArticleHistoryNum != v.ArticleHistoryNum || itemOld.ArticleCountNum != v.ArticleCountNum || itemOld.ChartCountNum != v.ChartCountNum || itemOld.IndustryFllowNum != v.IndustryFllowNum || itemOld.DepartmentFollowNum != v.DepartmentFollowNum || itemOld.KeyWordNum != v.KeyWordNum || itemOld.ActivityNum != v.ActivityNum || itemOld.TripNum != v.TripNum || itemOld.RoadshowVideoNum != v.RoadshowVideoNum || itemOld.ActivityVideoNum != v.ActivityVideoNum || itemOld.ActivityVoiceNum != v.ActivityVoiceNum || itemOld.RoadshowNum != v.RoadshowNum || itemOld.TagNum != v.TagNum) {
  1368. comapnyInteractionNumItemUpdate = append(comapnyInteractionNumItemUpdate, v)
  1369. }
  1370. } else {
  1371. v.CreateTime = time.Now()
  1372. v.ModifyTime = time.Now()
  1373. comapnyInteractionNumItemAdd = append(comapnyInteractionNumItemAdd, v)
  1374. }
  1375. //对比历史数据如果不一样就进行修改
  1376. if mapInteractionNumOld[v.CompanyId] != mapComapnyInteractionNum[v.CompanyId] || mapInteractionNumSellerOld[v.CompanyId] != mapComapnyInteractionNumSeller[v.CompanyId] {
  1377. itemCompanyInteractionNums := new(models.CompanyInteractionNumReq)
  1378. itemCompanyInteractionNums.CompanyId = k
  1379. itemCompanyInteractionNums.InteractionNum = mapComapnyInteractionNum[v.CompanyId]
  1380. itemCompanyInteractionNums.InteractionNumSeller = mapComapnyInteractionNumSeller[v.CompanyId]
  1381. itemsCompanyInteractionNums = append(itemsCompanyInteractionNums, itemCompanyInteractionNums)
  1382. }
  1383. }
  1384. //for _, v := range comapnyInteractionNumItemUpdate {
  1385. // fmt.Println(v)
  1386. //}
  1387. //return
  1388. //批量插入公司互动详情
  1389. if len(comapnyInteractionNumItemAdd) > 0 {
  1390. _, e = models.AddCygxCompanyInteractionNumList(comapnyInteractionNumItemAdd)
  1391. if e != nil {
  1392. err = errors.New("AddCygxCompanyInteractionNumList, Err: " + e.Error())
  1393. return
  1394. }
  1395. }
  1396. // 批量修改公司互动详情
  1397. if len(comapnyInteractionNumItemUpdate) > 0 {
  1398. e = models.UpdateCygxCompanyInteractionNumMulti(comapnyInteractionNumItemUpdate)
  1399. if e != nil {
  1400. err = errors.New("UpdateCygxCompanyInteractionNumMulti, Err: " + e.Error())
  1401. return
  1402. }
  1403. }
  1404. // 批量修改公司互动总量
  1405. if len(itemsCompanyInteractionNums) > 0 {
  1406. e = models.UpdateCompanyInteractionNumMulti(itemsCompanyInteractionNums)
  1407. if e != nil {
  1408. err = errors.New("UpdateCompanyInteractionNumMulti, Err: " + e.Error())
  1409. return
  1410. }
  1411. }
  1412. //CompanyInteractionNumReq
  1413. fmt.Println("add", len(comapnyInteractionNumItemAdd))
  1414. fmt.Println("edit", len(comapnyInteractionNumItemUpdate))
  1415. fmt.Println("Update", len(itemsCompanyInteractionNums))
  1416. //fmt.Println(mapComapnyInteractionNum)
  1417. return
  1418. }
  1419. func GetWxUserEndDate(user *models.WxUserItem) (isShowTerminateButton bool, endDataButton string) {
  1420. companyId := user.CompanyId
  1421. userId := user.UserId
  1422. //添加一个key拦截
  1423. key := "CYGX_WX_USER_END_DATE_KEY" + fmt.Sprint("C_", companyId, "U_", userId)
  1424. if utils.Rc.IsExist(key) {
  1425. return
  1426. }
  1427. utils.Rc.Put(key, 1, 3*time.Second)
  1428. var err error
  1429. defer func() {
  1430. if err != nil {
  1431. fmt.Println(err)
  1432. go utils.SendAlarmMsg(fmt.Sprint("权益正式客户到期前30天弹窗消息提醒 失败GetWxUserEndDate, err:", err.Error()), 2)
  1433. }
  1434. }()
  1435. productDetail, e := company.GetCompanyProductDetailByCompanyId(companyId, 2)
  1436. if e != nil {
  1437. err = errors.New("GetCompanyProductDetailByCompanyId, Err: " + e.Error())
  1438. return
  1439. }
  1440. if productDetail.Status != utils.COMPANY_STATUS_FORMAL { // 不是正式状态不做处理
  1441. return
  1442. }
  1443. endDate := utils.StrDateToTime(productDetail.EndDate)
  1444. diff := endDate.Sub(time.Now())
  1445. // 将差值转换为天数
  1446. diffDay := int(diff.Hours() / 24)
  1447. if endDate.After(time.Now()) {
  1448. diffDay += 1 //不足一天的按照一天计算
  1449. }
  1450. if diffDay <= 30 {
  1451. total, e := wx_user.GeWxUserEndDateLogCount(userId, productDetail.EndDate)
  1452. if e != nil {
  1453. err = errors.New("GetCompanyProductDetailByCompanyId, Err: " + e.Error())
  1454. return
  1455. }
  1456. if total == 0 {
  1457. isShowTerminateButton = true
  1458. endDataButton = productDetail.EndDate
  1459. item := wx_user.WxUserEndDateLog{
  1460. UserId: user.UserId,
  1461. Mobile: user.Mobile,
  1462. Email: user.Email,
  1463. CompanyId: user.CompanyId,
  1464. CompanyName: user.CompanyName,
  1465. RealName: user.RealName,
  1466. EndDate: endDataButton,
  1467. CreateTime: time.Now(),
  1468. ModifyTime: time.Now(),
  1469. }
  1470. _, e = wx_user.AddWxUserEndDateLog(&item)
  1471. if e != nil {
  1472. err = errors.New("AddWxUserEndDateLog, Err: " + e.Error())
  1473. return
  1474. }
  1475. return
  1476. }
  1477. }
  1478. return
  1479. }