wx_user_rai_label.go 33 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141
  1. package services
  2. import (
  3. "encoding/json"
  4. "errors"
  5. "fmt"
  6. "hongze/hongze_cygx/models"
  7. "hongze/hongze_cygx/models/roadshow"
  8. "hongze/hongze_cygx/utils"
  9. "strconv"
  10. "time"
  11. )
  12. // 添加用户搜索标签到Redis
  13. func KeyWordsWxUserRaiLabelRedisAdd(sourceId, uid int, label string) (err error) {
  14. defer func() {
  15. if err != nil {
  16. fmt.Println(err)
  17. msg := fmt.Sprint("sourceId:", sourceId, "userId:", uid)
  18. go utils.SendAlarmMsg("用户关注产业更新相关标签,写入Redis队列消息失败:"+err.Error()+msg, 2)
  19. }
  20. }()
  21. log := &models.WxUserRaiLabelRedis{UserId: uid, SourceId: sourceId, SourceType: 1, Label: label, CreateTime: time.Now(), RegisterPlatform: utils.REGISTER_PLATFORM}
  22. if utils.Re == nil {
  23. err := utils.Rc.LPush(utils.WX_USER_RAI_LABEL_KEY, log)
  24. if err != nil {
  25. fmt.Println("WxUserRaiLabelRedis LPush Err:" + err.Error())
  26. }
  27. }
  28. return
  29. }
  30. // 添加用户阅读文章标签到Redis
  31. func ArticleWxUserRaiLabelRedisAdd(sourceId, uid int, createTime time.Time) (err error) {
  32. defer func() {
  33. if err != nil {
  34. fmt.Println(err)
  35. msg := fmt.Sprint("sourceId:", sourceId, "userId:", uid)
  36. go utils.SendAlarmMsg("用户关注产业更新相关标签,写入Redis队列消息失败:"+err.Error()+msg, 2)
  37. }
  38. }()
  39. log := &models.WxUserRaiLabelRedis{UserId: uid, SourceId: sourceId, SourceType: 1, TableName: utils.CYGX_OBJ_ARTICLE, CreateTime: createTime, RegisterPlatform: utils.REGISTER_PLATFORM}
  40. if utils.Re == nil {
  41. err := utils.Rc.LPush(utils.WX_USER_RAI_LABEL_KEY, log)
  42. if err != nil {
  43. fmt.Println("WxUserRaiLabelRedis LPush Err:" + err.Error())
  44. }
  45. }
  46. return
  47. }
  48. // 添加用户阅读本周研究汇总,与重点公司标签到Redis
  49. func ReportSelectionWxUserRaiLabelRedisAdd(sourceId, uid int, createTime time.Time, tableName, label string) (err error) {
  50. defer func() {
  51. if err != nil {
  52. fmt.Println(err)
  53. msg := fmt.Sprint("sourceId:", sourceId, "userId:", uid)
  54. go utils.SendAlarmMsg("用户关注产业更新相关标签,写入Redis队列消息失败:"+err.Error()+msg, 2)
  55. }
  56. }()
  57. log := &models.WxUserRaiLabelRedis{UserId: uid, SourceId: sourceId, SourceType: 1, TableName: tableName, Label: label, CreateTime: createTime, RegisterPlatform: utils.REGISTER_PLATFORM}
  58. if utils.Re == nil {
  59. err := utils.Rc.LPush(utils.WX_USER_RAI_LABEL_KEY, log)
  60. if err != nil {
  61. fmt.Println("ReportSelectionWxUserRaiLabelRedisAdd LPush Err:" + err.Error())
  62. }
  63. }
  64. return
  65. }
  66. // 添加用户参加活动标签到Redis
  67. func ActivityWxUserRaiLabelRedisAdd(sourceId, uid int, createTime time.Time) (err error) {
  68. defer func() {
  69. if err != nil {
  70. fmt.Println(err)
  71. msg := fmt.Sprint("sourceId:", sourceId, "userId:", uid)
  72. go utils.SendAlarmMsg("添加用户参加活动标签,写入Redis队列消息失败:"+err.Error()+msg, 2)
  73. }
  74. }()
  75. log := &models.WxUserRaiLabelRedis{UserId: uid, SourceId: sourceId, SourceType: 2, CreateTime: createTime, RegisterPlatform: utils.REGISTER_PLATFORM}
  76. if utils.Re == nil {
  77. err := utils.Rc.LPush(utils.WX_USER_RAI_LABEL_KEY, log)
  78. if err != nil {
  79. fmt.Println("ActivityWxUserRaiLabelRedisAdd LPush Err:" + err.Error())
  80. }
  81. }
  82. return
  83. }
  84. func UpdateWxUserRaiLabelRedis() (err error) {
  85. for {
  86. // SourceType int `description:"来源1:搜索关键字标签、2:产业/个股标签(线下活动)、3:产业/个股标签(线下路演)、4:产业/个股标签(线上活动)、5:产业/个股标签(线上路演)、6:销售输入标签、7:产业/个股标签(报告)、8:报告类型标签"`
  87. utils.Rc.Brpop(utils.WX_USER_RAI_LABEL_KEY, func(b []byte) {
  88. var log models.WxUserRaiLabelRedis
  89. if err := json.Unmarshal(b, &log); err != nil {
  90. fmt.Println("json unmarshal wrong!")
  91. go utils.SendAlarmMsg("用户更新相关标签处理Redis队列消息失败:"+err.Error()+string(b), 2)
  92. }
  93. if log.TableName == "" {
  94. switch log.SourceType {
  95. case 1:
  96. go KeyWordsWxUserRaiLabelRedisAddReduce(log)
  97. fmt.Println("搜索关键词")
  98. break
  99. case 2, 4:
  100. go ActivityWxUserRaiLabelRedisAddReduce(log)
  101. fmt.Println("活动到会")
  102. break
  103. case 3, 5:
  104. go RoadshowWxUserRaiLabelRedisAddReduce(log)
  105. fmt.Println("活动到会")
  106. break
  107. default:
  108. fmt.Println(string(b))
  109. go utils.SendAlarmMsg("用户更新相关标签处理Redis队列消息失败:"+string(b), 2)
  110. }
  111. } else {
  112. switch log.TableName {
  113. case utils.CYGX_OBJ_ARTICLE:
  114. go ArticleWxUserRaiLabelRedisAddReduce(log)
  115. fmt.Println("阅读文章")
  116. case "cygx_research_summary":
  117. go ReportSelectionWxUserRaiLabelRedisAddReduce(log)
  118. fmt.Println("阅读本周研究汇总")
  119. case "cygx_report_selection":
  120. go ReportSelectionWxUserRaiLabelRedisAddReduce(log)
  121. fmt.Println("阅读报告精选(重点公司)")
  122. }
  123. }
  124. })
  125. }
  126. }
  127. // 1:搜索关键词
  128. func KeyWordsWxUserRaiLabelRedisAddReduce(log models.WxUserRaiLabelRedis) (err error) {
  129. defer func() {
  130. if err != nil {
  131. fmt.Println(err)
  132. go utils.SendAlarmMsg("用户文章阅读更新相关标签,处理Redis队列消息失败:"+err.Error()+fmt.Sprint("articleId", log.SourceId, "userId", log.UserId), 2)
  133. }
  134. }()
  135. userId := log.UserId
  136. label := log.Label
  137. if userId == 0 {
  138. return
  139. }
  140. wxUser, e := models.GetWxUserItemByUserId(userId)
  141. if e != nil {
  142. err = errors.New("GetWxUserItemByUserId" + e.Error())
  143. return
  144. }
  145. item := new(models.WxUserRaiLabel)
  146. item.UserId = wxUser.UserId
  147. item.RealName = wxUser.RealName
  148. item.Mobile = wxUser.Mobile
  149. item.Email = wxUser.Email
  150. item.CompanyId = wxUser.CompanyId
  151. item.CompanyName = wxUser.CompanyName
  152. item.Label = label
  153. item.SourceType = log.SourceType
  154. item.CreateTime = log.CreateTime
  155. item.ModifyTime = time.Now()
  156. item.RegisterPlatform = log.RegisterPlatform
  157. err = models.AddWxUserRaiLabel(item)
  158. if e != nil {
  159. err = errors.New("AddWxUserRaiLabel" + e.Error())
  160. return
  161. }
  162. return
  163. }
  164. //func init() {
  165. // log := models.WxUserRaiLabelRedis{UserId: 53840, SourceId: 1753, SourceType: 3, TableName: "", Label: "", CreateTime: time.Now(), RegisterPlatform: utils.REGISTER_PLATFORM}
  166. // RoadshowWxUserRaiLabelRedisAddReduce(log)
  167. //}
  168. // 2:产业/个股标签(线下活动)、 4:产业/个股标签(线上活动)
  169. // 用户参加活动,相关标签
  170. func ActivityWxUserRaiLabelRedisAddReduce(log models.WxUserRaiLabelRedis) (err error) {
  171. defer func() {
  172. if err != nil {
  173. fmt.Println(err)
  174. go utils.SendAlarmMsg("用户参加活动,相关标签,处理Redis队列消息失败:ActivityWxUserRaiLabelRedisAddReduce"+err.Error()+fmt.Sprint("SourceId", log.SourceId, "userId", log.UserId), 2)
  175. }
  176. }()
  177. userId := log.UserId
  178. sourceId := log.SourceId
  179. wxUser, e := models.GetWxUserItemByUserId(userId)
  180. if e != nil {
  181. err = errors.New("GetWxUserItemByUserId" + e.Error())
  182. return
  183. }
  184. activityDetail, e := models.GetAddActivityDetailByActivityId(sourceId)
  185. if e != nil {
  186. err = errors.New("GetArticleDetailTestById" + e.Error())
  187. return
  188. }
  189. var sourceType int
  190. if activityDetail.ActivityType == 1 {
  191. sourceType = 4
  192. } else {
  193. sourceType = 2
  194. }
  195. //正常的有产业报告
  196. var labelArr []string
  197. //建立首页资源表,与产业的关系
  198. industrialList, e := models.GetIndustrialActivityGroupManagementListByArticleId(sourceId)
  199. if e != nil && e.Error() != utils.ErrNoRow() {
  200. err = errors.New("GetIndustrialArticleGroupManagementListByArticleId, Err: " + e.Error() + "sourceId:" + strconv.Itoa(sourceId))
  201. return
  202. }
  203. var items []*models.WxUserRaiLabel
  204. for _, v := range industrialList {
  205. item := new(models.WxUserRaiLabel)
  206. item.UserId = wxUser.UserId
  207. item.RealName = wxUser.RealName
  208. item.Mobile = wxUser.Mobile
  209. item.Email = wxUser.Email
  210. item.CompanyId = wxUser.CompanyId
  211. item.CompanyName = wxUser.CompanyName
  212. item.Label = v.IndustryName
  213. item.SourceType = sourceType
  214. item.SourceId = sourceId
  215. item.CreateTime = log.CreateTime
  216. item.ModifyTime = time.Now()
  217. item.RegisterPlatform = log.RegisterPlatform
  218. item.TableName = ""
  219. items = append(items, item)
  220. labelArr = append(labelArr, v.IndustryName)
  221. }
  222. //建立首页资源表,与标的 的关系
  223. subjectList, e := models.GetSubjectActivityGroupManagementListByActivityId(sourceId)
  224. if e != nil && e.Error() != utils.ErrNoRow() {
  225. err = errors.New("GetSubjectArticleGroupManagementListByArtcileId, Err: " + e.Error() + "sourceId:" + strconv.Itoa(sourceId))
  226. return
  227. }
  228. //fmt.Println("subjectList", subjectList)
  229. for _, v := range subjectList {
  230. item := new(models.WxUserRaiLabel)
  231. item.UserId = wxUser.UserId
  232. item.RealName = wxUser.RealName
  233. item.Mobile = wxUser.Mobile
  234. item.Email = wxUser.Email
  235. item.CompanyId = wxUser.CompanyId
  236. item.CompanyName = wxUser.CompanyName
  237. item.Label = v.SubjectName
  238. item.SourceType = sourceType
  239. item.SourceId = sourceId
  240. item.CreateTime = log.CreateTime
  241. item.ModifyTime = time.Now()
  242. item.RegisterPlatform = log.RegisterPlatform
  243. item.TableName = ""
  244. items = append(items, item)
  245. labelArr = append(labelArr, v.SubjectName)
  246. }
  247. //如果两个标签都没有,就添加临时标签
  248. if len(labelArr) == 0 {
  249. item := new(models.WxUserRaiLabel)
  250. item.UserId = wxUser.UserId
  251. item.RealName = wxUser.RealName
  252. item.Mobile = wxUser.Mobile
  253. item.Email = wxUser.Email
  254. item.CompanyId = wxUser.CompanyId
  255. item.CompanyName = wxUser.CompanyName
  256. item.Label = activityDetail.Label
  257. item.SourceType = sourceType
  258. item.SourceId = sourceId
  259. item.CreateTime = log.CreateTime
  260. item.ModifyTime = time.Now()
  261. item.RegisterPlatform = log.RegisterPlatform
  262. item.TableName = ""
  263. items = append(items, item)
  264. labelArr = append(labelArr, activityDetail.Label)
  265. }
  266. e = models.AddWxUserRaiLabelMulti(items, labelArr, userId)
  267. if e != nil {
  268. err = errors.New("AddWxUserRaiLabelMulti" + e.Error())
  269. return
  270. }
  271. return
  272. }
  273. // 3:产业/个股标签(路演线下活动)、 5:产业/个股标签(路演线上活动)
  274. // 用户参加路演,相关标签
  275. func RoadshowWxUserRaiLabelRedisAddReduce(log models.WxUserRaiLabelRedis) (err error) {
  276. defer func() {
  277. if err != nil {
  278. fmt.Println(err)
  279. go utils.SendAlarmMsg("用户参加路演,相关标签,处理Redis队列消息失败:RoadshowWxUserRaiLabelRedisAddReduce"+err.Error()+fmt.Sprint("SourceId", log.SourceId, "userId", log.UserId), 2)
  280. }
  281. }()
  282. userId := log.UserId
  283. sourceId := log.SourceId
  284. wxUser, e := models.GetWxUserItemByUserId(userId)
  285. if e != nil {
  286. err = errors.New("GetWxUserItemByUserId" + e.Error())
  287. return
  288. }
  289. rsCalendar, e := roadshow.GetRsCalendarById(sourceId)
  290. if e != nil {
  291. err = errors.New("GetRsCalendarById" + e.Error())
  292. return
  293. }
  294. var sourceType int
  295. if rsCalendar.RoadshowType == "线下" {
  296. sourceType = 3
  297. } else {
  298. sourceType = 5
  299. }
  300. totalGroup, e := roadshow.GetRsCalendarMeetingLabelGroupByRsCalendarId(sourceId)
  301. if e != nil {
  302. err = errors.New("GetRsCalendarMeetingLabelGroupByRsCalendarId" + e.Error())
  303. return
  304. }
  305. //var lebelDetail []*cygx.RaiServeTagResp
  306. var label string
  307. var labelArr []string
  308. var items []*models.WxUserRaiLabel
  309. if totalGroup > 0 {
  310. listGroup, e := roadshow.GetRsCalendarMeetingLabelGroupListByRsCalendarId(sourceId)
  311. if e != nil {
  312. err = errors.New("GetRsCalendarMeetingLabelGroupByRsCalendarId" + e.Error())
  313. return
  314. }
  315. var industrialManagementIds []int
  316. var industrialSubjectIds []int
  317. mapindustrialManagementName := make(map[int]string)
  318. mapindustrialSubjectName := make(map[int]string)
  319. mapCelueName := make(map[int]string)
  320. for _, v := range listGroup {
  321. switch v.TagType {
  322. case 1:
  323. industrialManagementIds = append(industrialManagementIds, v.TagId)
  324. case 2:
  325. industrialSubjectIds = append(industrialSubjectIds, v.TagId)
  326. case 3:
  327. mapCelueName[v.TagId] = "策略"
  328. }
  329. }
  330. if len(industrialManagementIds) > 0 {
  331. IndustryList, e := models.GetIndustryListByConditionByIds(industrialManagementIds)
  332. if e != nil {
  333. err = errors.New("GetRsCalendarMeetingLabelGroupByRsCalendarId" + e.Error())
  334. return
  335. }
  336. for _, v := range IndustryList {
  337. mapindustrialManagementName[v.IndustrialManagementId] = v.IndustryName
  338. }
  339. }
  340. if len(industrialSubjectIds) > 0 {
  341. SubjectList, e := models.GetIndustrialSubjectDetailByIds(industrialSubjectIds)
  342. if e != nil {
  343. err = errors.New("GetIndustrialSubjectDetailByIds" + e.Error())
  344. return
  345. }
  346. for _, v := range SubjectList {
  347. mapindustrialSubjectName[v.IndustrialSubjectId] = v.SubjectName
  348. }
  349. }
  350. for _, v := range listGroup {
  351. switch v.TagType {
  352. case 1:
  353. label = mapindustrialManagementName[v.TagId]
  354. case 2:
  355. label = mapindustrialSubjectName[v.TagId]
  356. case 3:
  357. label = mapCelueName[v.TagId]
  358. }
  359. item := new(models.WxUserRaiLabel)
  360. item.UserId = wxUser.UserId
  361. item.RealName = wxUser.RealName
  362. item.Mobile = wxUser.Mobile
  363. item.Email = wxUser.Email
  364. item.CompanyId = wxUser.CompanyId
  365. item.CompanyName = wxUser.CompanyName
  366. item.Label = label
  367. item.SourceType = sourceType
  368. item.SourceId = sourceId
  369. item.CreateTime = log.CreateTime
  370. item.ModifyTime = time.Now()
  371. item.RegisterPlatform = log.RegisterPlatform
  372. item.TableName = ""
  373. items = append(items, item)
  374. labelArr = append(labelArr, label)
  375. }
  376. }
  377. e = models.AddWxUserRaiLabelMulti(items, labelArr, userId)
  378. if e != nil {
  379. err = errors.New("AddWxUserRaiLabelMulti" + e.Error())
  380. return
  381. }
  382. return
  383. }
  384. // 7:产业/个股标签(报告)、8:报告类型标签
  385. func ArticleWxUserRaiLabelRedisAddReduce(log models.WxUserRaiLabelRedis) (err error) {
  386. defer func() {
  387. if err != nil {
  388. fmt.Println(err)
  389. go utils.SendAlarmMsg("用户文章阅读更新相关标签,处理Redis队列消息失败:"+err.Error()+fmt.Sprint("articleId", log.SourceId, "userId", log.UserId), 2)
  390. }
  391. }()
  392. userId := log.UserId
  393. sourceId := log.SourceId
  394. wxUser, e := models.GetWxUserItemByUserId(userId)
  395. if e != nil {
  396. err = errors.New("GetWxUserItemByUserId" + e.Error())
  397. return
  398. }
  399. articleDetail, e := models.GetArticleDetailTestById(sourceId)
  400. if e != nil {
  401. err = errors.New("GetArticleDetailTestById" + e.Error())
  402. return
  403. }
  404. articlePermission, e := models.GetArticlePermission(articleDetail.CategoryId)
  405. if e != nil {
  406. err = errors.New("GetArticlePermission" + e.Error())
  407. return
  408. }
  409. if articlePermission == nil {
  410. err = errors.New("报告权限不存在" + e.Error())
  411. return
  412. }
  413. articlePermissionName := articlePermission.PermissionName
  414. matchTypeName := articlePermission.MatchTypeName
  415. matchTypeNameArr := []string{"季度策略", "科技前沿(周报)", "本周荟", "智造精粹"}
  416. //1;四大行业汇总类报告:季度策略、科技前沿(周报)、本周荟、智造精粹以报告类型做标签
  417. //2:策略、固收的所有报告,以报告类型做标签
  418. if articlePermissionName == utils.CE_LUE_NAME || articlePermissionName == utils.GU_SHOU_NAME || utils.InArrayByStr(matchTypeNameArr, matchTypeName) { // 策略、固收的所有报告,以报告类型做标签
  419. if matchTypeName == "季度策略" {
  420. matchTypeName = articlePermissionName + matchTypeName //其中季度策略以:xx行业季度策略 呈现
  421. }
  422. item := new(models.WxUserRaiLabel)
  423. item.UserId = wxUser.UserId
  424. item.RealName = wxUser.RealName
  425. item.Mobile = wxUser.Mobile
  426. item.Email = wxUser.Email
  427. item.CompanyId = wxUser.CompanyId
  428. item.CompanyName = wxUser.CompanyName
  429. item.Label = matchTypeName
  430. item.SourceType = 8
  431. item.SourceId = sourceId
  432. item.CreateTime = log.CreateTime
  433. item.ModifyTime = time.Now()
  434. item.RegisterPlatform = log.RegisterPlatform
  435. item.TableName = "cygx_article"
  436. err = models.AddWxUserRaiLabel(item)
  437. if e != nil {
  438. err = errors.New("AddWxUserRaiLabel" + e.Error())
  439. return
  440. }
  441. } else if articlePermissionName == utils.ZHOU_QI_NAME {
  442. //周期的行业深度、调研纪要、产业跟踪这些系列的报告用领域做标签,其余的周期报告,都用报告类型(也就是ficc定义的类型)做标签
  443. //其中周期的周度观点,以 周期周度观点 呈现
  444. matchTypeNameArrZhouqi := []string{"行业深度", "调研纪要", "产业跟踪"}
  445. if utils.InArrayByStr(matchTypeNameArrZhouqi, matchTypeName) {
  446. matchTypeName = articleDetail.FieldName
  447. }
  448. item := new(models.WxUserRaiLabel)
  449. item.UserId = wxUser.UserId
  450. item.RealName = wxUser.RealName
  451. item.Mobile = wxUser.Mobile
  452. item.Email = wxUser.Email
  453. item.CompanyId = wxUser.CompanyId
  454. item.CompanyName = wxUser.CompanyName
  455. item.Label = matchTypeName
  456. item.SourceType = 8
  457. item.SourceId = sourceId
  458. item.CreateTime = log.CreateTime
  459. item.ModifyTime = time.Now()
  460. item.RegisterPlatform = log.RegisterPlatform
  461. item.TableName = "cygx_article"
  462. e = models.AddWxUserRaiLabel(item)
  463. if e != nil {
  464. err = errors.New("AddWxUserRaiLabel" + e.Error())
  465. return
  466. }
  467. } else {
  468. //正常的有产业报告
  469. var labelArr []string
  470. //建立首页资源表,与产业的关系
  471. industrialList, e := models.GetIndustrialArticleGroupManagementListByArticleId(sourceId)
  472. if e != nil && e.Error() != utils.ErrNoRow() {
  473. err = errors.New("GetIndustrialArticleGroupManagementListByArticleId, Err: " + e.Error() + "sourceId:" + strconv.Itoa(sourceId))
  474. return
  475. }
  476. var items []*models.WxUserRaiLabel
  477. for _, v := range industrialList {
  478. item := new(models.WxUserRaiLabel)
  479. item.UserId = wxUser.UserId
  480. item.RealName = wxUser.RealName
  481. item.Mobile = wxUser.Mobile
  482. item.Email = wxUser.Email
  483. item.CompanyId = wxUser.CompanyId
  484. item.CompanyName = wxUser.CompanyName
  485. item.Label = v.IndustryName
  486. item.SourceType = 7
  487. item.SourceId = sourceId
  488. item.CreateTime = log.CreateTime
  489. item.ModifyTime = time.Now()
  490. item.RegisterPlatform = log.RegisterPlatform
  491. item.TableName = "cygx_article"
  492. items = append(items, item)
  493. labelArr = append(labelArr, v.IndustryName)
  494. }
  495. //建立首页资源表,与标的 的关系
  496. subjectList, e := models.GetSubjectArticleGroupManagementListByArtcileId(sourceId)
  497. if e != nil && e.Error() != utils.ErrNoRow() {
  498. err = errors.New("GetSubjectArticleGroupManagementListByArtcileId, Err: " + e.Error() + "sourceId:" + strconv.Itoa(sourceId))
  499. return
  500. }
  501. for _, v := range subjectList {
  502. item := new(models.WxUserRaiLabel)
  503. item.UserId = wxUser.UserId
  504. item.RealName = wxUser.RealName
  505. item.Mobile = wxUser.Mobile
  506. item.Email = wxUser.Email
  507. item.CompanyId = wxUser.CompanyId
  508. item.CompanyName = wxUser.CompanyName
  509. item.Label = v.SubjectName
  510. item.SourceType = 7
  511. item.SourceId = sourceId
  512. item.CreateTime = log.CreateTime
  513. item.ModifyTime = time.Now()
  514. item.RegisterPlatform = log.RegisterPlatform
  515. item.TableName = "cygx_article"
  516. items = append(items, item)
  517. labelArr = append(labelArr, v.SubjectName)
  518. }
  519. e = models.AddWxUserRaiLabelMulti(items, labelArr, userId)
  520. if e != nil {
  521. err = errors.New("AddWxUserRaiLabelMulti" + e.Error())
  522. return
  523. }
  524. }
  525. return
  526. }
  527. // 8:报告类型标签 (本周研究汇总,与重点公司)
  528. func ReportSelectionWxUserRaiLabelRedisAddReduce(log models.WxUserRaiLabelRedis) (err error) {
  529. defer func() {
  530. if err != nil {
  531. fmt.Println(err)
  532. go utils.SendAlarmMsg("报告类型标签 (本周研究汇总,与重点公司),处理Redis队列消息失败:ReportSelectionWxUserRaiLabelRedisAddReduce"+err.Error()+fmt.Sprint("SourceId", log.SourceId, "userId", log.UserId), 2)
  533. }
  534. }()
  535. userId := log.UserId
  536. sourceId := log.SourceId
  537. wxUser, e := models.GetWxUserItemByUserId(userId)
  538. if e != nil {
  539. err = errors.New("GetWxUserItemByUserId" + e.Error())
  540. return
  541. }
  542. item := new(models.WxUserRaiLabel)
  543. item.UserId = wxUser.UserId
  544. item.RealName = wxUser.RealName
  545. item.Mobile = wxUser.Mobile
  546. item.Email = wxUser.Email
  547. item.CompanyId = wxUser.CompanyId
  548. item.CompanyName = wxUser.CompanyName
  549. item.Label = log.Label
  550. item.SourceType = 8
  551. item.SourceId = sourceId
  552. item.CreateTime = log.CreateTime
  553. item.ModifyTime = time.Now()
  554. item.RegisterPlatform = log.RegisterPlatform
  555. item.TableName = log.TableName
  556. err = models.AddWxUserRaiLabel(item)
  557. if e != nil {
  558. err = errors.New("AddWxUserRaiLabel" + e.Error())
  559. return
  560. }
  561. return
  562. }
  563. func GetArticlelabelArrByArticleId(articleId int) (labelArr []string, sourceType int) {
  564. articleDetail, e := models.GetArticleDetailTestById(articleId)
  565. if e != nil {
  566. fmt.Println(e)
  567. return
  568. }
  569. if articleDetail.ArticleTypeId > 0 {
  570. //正常的有产业报告
  571. //建立首页资源表,与产业的关系
  572. industrialList, e := models.GetIndustrialArticleGroupManagementListByArticleId(articleId)
  573. if e != nil && e.Error() != utils.ErrNoRow() {
  574. fmt.Println(e)
  575. return
  576. }
  577. for _, v := range industrialList {
  578. labelArr = append(labelArr, v.IndustryName)
  579. }
  580. //建立首页资源表,与标的 的关系
  581. subjectList, e := models.GetSubjectArticleGroupManagementListByArtcileId(articleId)
  582. if e != nil && e.Error() != utils.ErrNoRow() {
  583. fmt.Println(e)
  584. return
  585. }
  586. for _, v := range subjectList {
  587. labelArr = append(labelArr, v.SubjectName)
  588. }
  589. sourceType = 7
  590. return
  591. }
  592. articlePermission, e := models.GetArticlePermission(articleDetail.CategoryId)
  593. if e != nil {
  594. fmt.Println(e)
  595. return
  596. }
  597. if articlePermission == nil {
  598. fmt.Println(e)
  599. return
  600. }
  601. articlePermissionName := articlePermission.PermissionName
  602. matchTypeName := articlePermission.MatchTypeName
  603. matchTypeNameArr := []string{"季度策略", "科技前沿(周报)", "本周荟", "智造精粹"}
  604. //1;四大行业汇总类报告:季度策略、科技前沿(周报)、本周荟、智造精粹以报告类型做标签
  605. //2:策略、固收的所有报告,以报告类型做标签
  606. //var labelArr []string
  607. if articlePermissionName == utils.CE_LUE_NAME || articlePermissionName == utils.GU_SHOU_NAME || utils.InArrayByStr(matchTypeNameArr, matchTypeName) { // 策略、固收的所有报告,以报告类型做标签
  608. if matchTypeName == "季度策略" {
  609. matchTypeName = articlePermissionName + matchTypeName //其中季度策略以:xx行业季度策略 呈现
  610. }
  611. labelArr = append(labelArr, matchTypeName)
  612. sourceType = 8
  613. } else if articlePermissionName == utils.ZHOU_QI_NAME {
  614. //周期的行业深度、调研纪要、产业跟踪这些系列的报告用领域做标签,其余的周期报告,都用报告类型(也就是ficc定义的类型)做标签
  615. //其中周期的周度观点,以 周期周度观点 呈现
  616. matchTypeNameArrZhouqi := []string{"行业深度", "调研纪要", "产业跟踪"}
  617. if utils.InArrayByStr(matchTypeNameArrZhouqi, matchTypeName) {
  618. matchTypeName = articleDetail.FieldName
  619. }
  620. labelArr = append(labelArr, matchTypeName)
  621. sourceType = 8
  622. } else {
  623. //正常的有产业报告
  624. //建立首页资源表,与产业的关系
  625. industrialList, e := models.GetIndustrialArticleGroupManagementListByArticleId(articleId)
  626. if e != nil && e.Error() != utils.ErrNoRow() {
  627. fmt.Println(e)
  628. return
  629. }
  630. for _, v := range industrialList {
  631. labelArr = append(labelArr, v.IndustryName)
  632. }
  633. //建立首页资源表,与标的 的关系
  634. subjectList, e := models.GetSubjectArticleGroupManagementListByArtcileId(articleId)
  635. if e != nil && e.Error() != utils.ErrNoRow() {
  636. fmt.Println(e)
  637. return
  638. }
  639. for _, v := range subjectList {
  640. labelArr = append(labelArr, v.SubjectName)
  641. }
  642. sourceType = 7
  643. }
  644. return
  645. }
  646. //func init() {
  647. // //fmt.Println(GetArticlelabelArrByArticleId(11037))
  648. // //initCrm16_5Article2()
  649. //}
  650. func initCrm16_5keyWord() {
  651. listKeyWords, err := models.GetSearchKeyWordinitCrm16_5()
  652. if err != nil {
  653. fmt.Println(err)
  654. return
  655. }
  656. var mobiles []string
  657. mapMobile := make(map[string]bool)
  658. for _, v := range listKeyWords {
  659. if mapMobile[v.Mobile] || v.Mobile == "" {
  660. continue
  661. }
  662. mapMobile[v.Mobile] = true
  663. mobiles = append(mobiles, v.Mobile)
  664. }
  665. listUser, err := models.GetWxUserListByMobileArr(mobiles)
  666. if err != nil {
  667. fmt.Println(err)
  668. return
  669. }
  670. mapUser := make(map[string]*models.WxUserItem)
  671. for _, v := range listUser {
  672. mapUser[v.Mobile] = v
  673. }
  674. var items []*models.WxUserRaiLabelLog
  675. for _, v := range listKeyWords {
  676. if mapUser[v.Mobile] == nil || v.Mobile == "" {
  677. continue
  678. }
  679. wxUser := mapUser[v.Mobile]
  680. item := new(models.WxUserRaiLabelLog)
  681. item.UserId = wxUser.UserId
  682. item.RealName = wxUser.RealName
  683. item.Mobile = wxUser.Mobile
  684. item.Email = wxUser.Email
  685. item.CompanyId = wxUser.CompanyId
  686. item.CompanyName = wxUser.CompanyName
  687. item.Label = v.KeyWord
  688. item.SourceType = 1
  689. item.CreateTime = v.CreateTime
  690. item.ModifyTime = time.Now()
  691. item.RegisterPlatform = v.RegisterPlatform
  692. items = append(items, item)
  693. }
  694. fmt.Println(len(items))
  695. var itemsAdd []*models.WxUserRaiLabelLog
  696. if len(items) > 0 {
  697. for _, v := range items {
  698. itemsAdd = append(itemsAdd, v)
  699. if len(items)%2000 == 0 {
  700. err = models.AddWxUserRaiLabelLogMultiInit(items)
  701. if err != nil {
  702. return
  703. }
  704. itemsAdd = make([]*models.WxUserRaiLabelLog, 0)
  705. }
  706. }
  707. }
  708. if len(itemsAdd) > 0 {
  709. err = models.AddWxUserRaiLabelLogMultiInit(itemsAdd)
  710. if err != nil {
  711. return
  712. }
  713. }
  714. fmt.Println("endAddWxUserRaiLabelLogMultiInit")
  715. }
  716. func initCrm16_5Activity() {
  717. var condition string
  718. var pars []interface{}
  719. condition += ` AND create_time > '2024-09-01' AND (is_meeting =1 OR duration != '') `
  720. pars = append(pars)
  721. //获取提交到会的人员信息
  722. signUpDetailList, err := models.GetSignupDetailList(condition, pars)
  723. if err != nil {
  724. fmt.Println(err)
  725. return
  726. }
  727. var mobiles []string
  728. mapMobile := make(map[string]bool)
  729. for _, v := range signUpDetailList {
  730. if mapMobile[v.Mobile] || v.Mobile == "" {
  731. continue
  732. }
  733. mapMobile[v.Mobile] = true
  734. mobiles = append(mobiles, v.Mobile)
  735. }
  736. var activityIds []int
  737. mapactivityId := make(map[int]bool)
  738. for _, v := range signUpDetailList {
  739. if mapactivityId[v.ActivityId] {
  740. continue
  741. }
  742. mapactivityId[v.ActivityId] = true
  743. activityIds = append(activityIds, v.ActivityId)
  744. }
  745. listUser, err := models.GetWxUserListByMobileArr(mobiles)
  746. if err != nil {
  747. fmt.Println(err)
  748. return
  749. }
  750. mapUser := make(map[string]*models.WxUserItem)
  751. for _, v := range listUser {
  752. mapUser[v.Mobile] = v
  753. }
  754. activityDetailList, e := models.GetAddActivityDetailByActivityIdinitCrm16_5(activityIds)
  755. if e != nil {
  756. fmt.Println(e)
  757. return
  758. }
  759. sourceTypemap := make(map[int]int)
  760. for _, v := range activityDetailList {
  761. if v.ActivityType == 1 {
  762. sourceTypemap[v.ActivityId] = 4
  763. } else {
  764. sourceTypemap[v.ActivityId] = 2
  765. }
  766. }
  767. //正常的有产业报告
  768. //建立首页资源表,与产业的关系
  769. industrialList, e := models.GetIndustrialActivityGroupManagementListByArticleIds(activityIds)
  770. if e != nil && e.Error() != utils.ErrNoRow() {
  771. fmt.Println(e)
  772. return
  773. }
  774. //建立首页资源表,与标的 的关系
  775. subjectList, e := models.GetSubjectActivityGroupManagementListByActivityIds(activityIds)
  776. if e != nil && e.Error() != utils.ErrNoRow() {
  777. fmt.Println(e)
  778. return
  779. }
  780. var items []*models.WxUserRaiLabelLog
  781. for _, v := range signUpDetailList {
  782. if mapUser[v.Mobile] == nil || v.Mobile == "" {
  783. continue
  784. }
  785. wxUser := mapUser[v.Mobile]
  786. for _, vI := range industrialList {
  787. if vI.ActivityId != v.ActivityId {
  788. continue
  789. }
  790. item := new(models.WxUserRaiLabelLog)
  791. item.UserId = wxUser.UserId
  792. item.RealName = wxUser.RealName
  793. item.Mobile = wxUser.Mobile
  794. item.Email = wxUser.Email
  795. item.CompanyId = wxUser.CompanyId
  796. item.CompanyName = wxUser.CompanyName
  797. item.Label = vI.IndustryName
  798. item.SourceType = sourceTypemap[v.ActivityId]
  799. item.SourceId = v.ActivityId
  800. item.CreateTime = v.CreateTime
  801. item.ModifyTime = time.Now()
  802. item.TableName = ""
  803. //item.RegisterPlatform = v.RegisterPlatform
  804. items = append(items, item)
  805. }
  806. for _, vs := range subjectList {
  807. if vs.ActivityId != v.ActivityId {
  808. continue
  809. }
  810. item := new(models.WxUserRaiLabelLog)
  811. item.UserId = wxUser.UserId
  812. item.RealName = wxUser.RealName
  813. item.Mobile = wxUser.Mobile
  814. item.Email = wxUser.Email
  815. item.CompanyId = wxUser.CompanyId
  816. item.CompanyName = wxUser.CompanyName
  817. item.Label = vs.SubjectName
  818. item.SourceType = sourceTypemap[v.ActivityId]
  819. item.SourceId = v.ActivityId
  820. item.CreateTime = v.CreateTime
  821. item.ModifyTime = time.Now()
  822. //item.RegisterPlatform = v.RegisterPlatform
  823. items = append(items, item)
  824. }
  825. }
  826. fmt.Println(len(items))
  827. var itemsAdd []*models.WxUserRaiLabelLog
  828. if len(items) > 0 {
  829. for _, v := range items {
  830. itemsAdd = append(itemsAdd, v)
  831. if len(itemsAdd)%2000 == 0 {
  832. err = models.AddWxUserRaiLabelLogMultiInit(itemsAdd)
  833. if err != nil {
  834. return
  835. }
  836. itemsAdd = make([]*models.WxUserRaiLabelLog, 0)
  837. }
  838. }
  839. }
  840. if len(itemsAdd) > 0 {
  841. err = models.AddWxUserRaiLabelLogMultiInit(itemsAdd)
  842. if err != nil {
  843. return
  844. }
  845. }
  846. fmt.Println("endAddWxUserRaiLabelLogMultiInit")
  847. }
  848. func initCrm16_5Article() {
  849. var condition string
  850. var pars []interface{}
  851. condition += ` `
  852. pars = append(pars)
  853. //获取提交到会的人员信息
  854. listArticleIds, err := models.GetCygxArticleHistoryRecordAllListArticleIdCrm16_5()
  855. if err != nil {
  856. fmt.Println(err)
  857. return
  858. }
  859. fmt.Println("listArticleIds", len(listArticleIds))
  860. listHave, err := models.GetWxUserRaiArticleLabelCrm16_5()
  861. if err != nil {
  862. fmt.Println(err)
  863. return
  864. }
  865. mapArticleId := make(map[int]bool)
  866. for _, v := range listHave {
  867. mapArticleId[v.ArticleId] = true
  868. }
  869. for k, v := range listArticleIds {
  870. fmt.Println(k)
  871. labelArr, sourceType := GetArticlelabelArrByArticleId(v.ArticleId)
  872. if len(labelArr) == 0 {
  873. continue
  874. }
  875. var items []*models.WxUserRaiArticleLabel
  876. for _, v2 := range labelArr {
  877. item := new(models.WxUserRaiArticleLabel)
  878. item.ArticleId = v.ArticleId
  879. item.Label = v2
  880. item.SourceType = sourceType
  881. item.CreateTime = time.Now()
  882. items = append(items, item)
  883. }
  884. err = models.AddWxUserRaiArticleLabelMultiInit(items)
  885. time.Sleep(time.Millisecond * 100)
  886. fmt.Println(err)
  887. }
  888. }
  889. func initCrm16_5Article2() {
  890. var condition string
  891. var pars []interface{}
  892. condition += ` `
  893. pars = append(pars)
  894. //获取提交到会的人员信息
  895. listArticleIds, err := models.GetCygxArticleHistoryRecordAllListUserIdCrm16_5()
  896. if err != nil {
  897. fmt.Println(err)
  898. return
  899. }
  900. fmt.Println("listArticleIds", len(listArticleIds))
  901. mapUserId := make(map[string]bool)
  902. var mobiles []string
  903. for _, v := range listArticleIds {
  904. if mapUserId[v.Mobile] {
  905. continue
  906. }
  907. mobiles = append(mobiles, v.Mobile)
  908. mapUserId[v.Mobile] = true
  909. }
  910. listUser, err := models.GetWxUserListByMobileArr(mobiles)
  911. if err != nil {
  912. fmt.Println(err)
  913. return
  914. }
  915. mapUser := make(map[string]*models.WxUserItem)
  916. for _, v := range listUser {
  917. mapUser[v.Mobile] = v
  918. }
  919. listArticleLabel, err := models.GetWxUserRaiArticleLabelAllCrm16_5()
  920. if err != nil {
  921. fmt.Println(err)
  922. return
  923. }
  924. mapArticleLabel := make(map[int][]string)
  925. mapArticleType := make(map[int]int)
  926. for _, v := range listArticleLabel {
  927. mapArticleLabel[v.ArticleId] = append(mapArticleLabel[v.ArticleId], v.Label)
  928. mapArticleType[v.ArticleId] = v.SourceType
  929. }
  930. var items []*models.WxUserRaiLabelLog
  931. for _, v := range listArticleIds {
  932. if mapUser[v.Mobile] == nil || v.Mobile == "" {
  933. continue
  934. }
  935. if len(mapArticleLabel[v.ArticleId]) == 0 {
  936. continue
  937. }
  938. wxUser := mapUser[v.Mobile]
  939. for _, vI := range mapArticleLabel[v.ArticleId] {
  940. item := new(models.WxUserRaiLabelLog)
  941. item.UserId = wxUser.UserId
  942. item.RealName = wxUser.RealName
  943. item.Mobile = wxUser.Mobile
  944. item.Email = wxUser.Email
  945. item.CompanyId = wxUser.CompanyId
  946. item.CompanyName = wxUser.CompanyName
  947. item.Label = vI
  948. item.SourceType = mapArticleType[v.ArticleId]
  949. item.SourceId = v.ArticleId
  950. item.CreateTime = utils.StrTimeToTime(v.CreateTime)
  951. item.ModifyTime = time.Now()
  952. item.TableName = "cygx_article"
  953. //item.RegisterPlatform = v.RegisterPlatform
  954. items = append(items, item)
  955. }
  956. }
  957. fmt.Println("items", len(items))
  958. var itemsAdd []*models.WxUserRaiLabelLog
  959. if len(items) > 0 {
  960. for _, v := range items {
  961. itemsAdd = append(itemsAdd, v)
  962. if len(itemsAdd)%2000 == 0 {
  963. err = models.AddWxUserRaiLabelLogMultiInit(itemsAdd)
  964. if err != nil {
  965. fmt.Println(err)
  966. return
  967. }
  968. itemsAdd = make([]*models.WxUserRaiLabelLog, 0)
  969. }
  970. }
  971. }
  972. if len(itemsAdd) > 0 {
  973. err = models.AddWxUserRaiLabelLogMultiInit(itemsAdd)
  974. if err != nil {
  975. fmt.Println(err)
  976. return
  977. }
  978. }
  979. fmt.Println("endAddWxUserRaiLabelLogMultiInit")
  980. }
  981. func initCrm16_5ReportHistory() {
  982. listReportHistory, err := models.GetWxUserRaiCygxReportHistoryRecordCrm16_5()
  983. if err != nil {
  984. fmt.Println(err)
  985. return
  986. }
  987. var mobiles []string
  988. mapMobile := make(map[string]bool)
  989. for _, v := range listReportHistory {
  990. if mapMobile[v.Mobile] || v.Mobile == "" {
  991. continue
  992. }
  993. mapMobile[v.Mobile] = true
  994. mobiles = append(mobiles, v.Mobile)
  995. }
  996. listUser, err := models.GetWxUserListByMobileArr(mobiles)
  997. if err != nil {
  998. fmt.Println(err)
  999. return
  1000. }
  1001. mapUser := make(map[string]*models.WxUserItem)
  1002. for _, v := range listUser {
  1003. mapUser[v.Mobile] = v
  1004. }
  1005. var items []*models.WxUserRaiLabelLog
  1006. for _, v := range listReportHistory {
  1007. if mapUser[v.Mobile] == nil || v.Mobile == "" {
  1008. continue
  1009. }
  1010. wxUser := mapUser[v.Mobile]
  1011. item := new(models.WxUserRaiLabelLog)
  1012. item.UserId = wxUser.UserId
  1013. item.RealName = wxUser.RealName
  1014. item.Mobile = wxUser.Mobile
  1015. item.Email = wxUser.Email
  1016. item.CompanyId = wxUser.CompanyId
  1017. item.CompanyName = wxUser.CompanyName
  1018. if v.ReportType == "" {
  1019. item.Label = "重点推荐"
  1020. } else {
  1021. item.Label = "本周研究汇总"
  1022. }
  1023. item.SourceType = 8
  1024. item.CreateTime = v.CreateTime
  1025. item.ModifyTime = time.Now()
  1026. item.RegisterPlatform = v.RegisterPlatform
  1027. items = append(items, item)
  1028. }
  1029. fmt.Println(len(items))
  1030. var itemsAdd []*models.WxUserRaiLabelLog
  1031. if len(items) > 0 {
  1032. for _, v := range items {
  1033. itemsAdd = append(itemsAdd, v)
  1034. if len(items)%2000 == 0 {
  1035. err = models.AddWxUserRaiLabelLogMultiInit(items)
  1036. if err != nil {
  1037. return
  1038. }
  1039. itemsAdd = make([]*models.WxUserRaiLabelLog, 0)
  1040. }
  1041. }
  1042. }
  1043. if len(itemsAdd) > 0 {
  1044. err = models.AddWxUserRaiLabelLogMultiInit(itemsAdd)
  1045. if err != nil {
  1046. return
  1047. }
  1048. }
  1049. fmt.Println("endAddWxUserRaiLabelLogMultiInit")
  1050. }