wx_user_rai_label.go 54 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899
  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. // 添加用户播放活动音视频标签到Redis
  85. func ActivityVivoWxUserRaiLabelRedisAdd(sourceId, uid int, createTime time.Time) (err error) {
  86. defer func() {
  87. if err != nil {
  88. fmt.Println(err)
  89. msg := fmt.Sprint("sourceId:", sourceId, "userId:", uid)
  90. go utils.SendAlarmMsg("添加用户参加活动标签,写入Redis队列消息失败:"+err.Error()+msg, 2)
  91. }
  92. }()
  93. log := &models.WxUserRaiLabelRedis{UserId: uid, SourceId: sourceId, SourceType: 9, CreateTime: createTime, RegisterPlatform: utils.REGISTER_PLATFORM}
  94. if utils.Re == nil {
  95. err := utils.Rc.LPush(utils.WX_USER_RAI_LABEL_KEY, log)
  96. if err != nil {
  97. fmt.Println("ActivityWxUserRaiLabelRedisAdd LPush Err:" + err.Error())
  98. }
  99. }
  100. return
  101. }
  102. // 添加用户阅读图表标签到Redis
  103. func KeyChartWxUserRaiLabelRedisAdd(sourceId, uid int, label string) (err error) {
  104. defer func() {
  105. if err != nil {
  106. fmt.Println(err)
  107. msg := fmt.Sprint("sourceId:", sourceId, "userId:", uid)
  108. go utils.SendAlarmMsg("用户关注产业更新相关标签,写入Redis队列消息失败:"+err.Error()+msg, 2)
  109. }
  110. }()
  111. log := &models.WxUserRaiLabelRedis{UserId: uid, SourceId: sourceId, SourceType: 10, Label: label, CreateTime: time.Now(), RegisterPlatform: utils.REGISTER_PLATFORM}
  112. if utils.Re == nil {
  113. err := utils.Rc.LPush(utils.WX_USER_RAI_LABEL_KEY, log)
  114. if err != nil {
  115. fmt.Println("WxUserRaiLabelRedis LPush Err:" + err.Error())
  116. }
  117. }
  118. return
  119. }
  120. func UpdateWxUserRaiLabelRedis() (err error) {
  121. for {
  122. // SourceType int `description:"来源1:搜索关键字标签、2:产业/个股标签(线下活动)、3:产业/个股标签(线下路演)、4:产业/个股标签(线上活动)、5:产业/个股标签(线上路演)、6:销售输入标签、7:产业/个股标签(报告)、8:报告类型标签"`
  123. utils.Rc.Brpop(utils.WX_USER_RAI_LABEL_KEY, func(b []byte) {
  124. var log models.WxUserRaiLabelRedis
  125. if err := json.Unmarshal(b, &log); err != nil {
  126. fmt.Println("json unmarshal wrong!")
  127. go utils.SendAlarmMsg("用户更新相关标签处理Redis队列消息失败:"+err.Error()+string(b), 2)
  128. }
  129. go SendCygxTemplateRecordSource(log)
  130. if log.TableName == "" {
  131. switch log.SourceType {
  132. case 1:
  133. go KeyWordsWxUserRaiLabelRedisAddReduce(log)
  134. fmt.Println("搜索关键词")
  135. break
  136. case 2, 4:
  137. go ActivityWxUserRaiLabelRedisAddReduce(log)
  138. fmt.Println("活动到会")
  139. break
  140. case 3, 5:
  141. go RoadshowWxUserRaiLabelRedisAddReduce(log)
  142. fmt.Println("活动到会")
  143. break
  144. case 9:
  145. go ActivityVivoWxUserRaiLabelRedisAddReduce(log)
  146. fmt.Println("活动音视频播放")
  147. break
  148. default:
  149. fmt.Println(string(b))
  150. go utils.SendAlarmMsg("用户更新相关标签处理Redis队列消息失败:"+string(b), 2)
  151. }
  152. } else {
  153. switch log.TableName {
  154. case utils.CYGX_OBJ_ARTICLE:
  155. go ArticleWxUserRaiLabelRedisAddReduce(log)
  156. fmt.Println("阅读文章")
  157. case "cygx_research_summary":
  158. go ReportSelectionWxUserRaiLabelRedisAddReduce(log)
  159. fmt.Println("阅读本周研究汇总")
  160. case "cygx_report_selection":
  161. go ReportSelectionWxUserRaiLabelRedisAddReduce(log)
  162. fmt.Println("阅读报告精选(重点公司)")
  163. }
  164. }
  165. })
  166. }
  167. }
  168. // 1:搜索关键词
  169. func KeyWordsWxUserRaiLabelRedisAddReduce(log models.WxUserRaiLabelRedis) (err error) {
  170. defer func() {
  171. if err != nil {
  172. fmt.Println(err)
  173. go utils.SendAlarmMsg("用户文章阅读更新相关标签,处理Redis队列消息失败:"+err.Error()+fmt.Sprint("articleId", log.SourceId, "userId", log.UserId), 2)
  174. }
  175. }()
  176. userId := log.UserId
  177. label := log.Label
  178. if userId == 0 {
  179. return
  180. }
  181. wxUser, e := models.GetWxUserItemByUserId(userId)
  182. if e != nil {
  183. err = errors.New("GetWxUserItemByUserId" + e.Error())
  184. return
  185. }
  186. item := new(models.WxUserRaiLabel)
  187. item.UserId = wxUser.UserId
  188. item.RealName = wxUser.RealName
  189. item.Mobile = wxUser.Mobile
  190. item.Email = wxUser.Email
  191. item.CompanyId = wxUser.CompanyId
  192. item.CompanyName = wxUser.CompanyName
  193. item.Label = label
  194. item.SourceType = log.SourceType
  195. item.CreateTime = log.CreateTime
  196. item.ModifyTime = time.Now()
  197. item.RegisterPlatform = log.RegisterPlatform
  198. err = models.AddWxUserRaiLabel(item)
  199. if e != nil {
  200. err = errors.New("AddWxUserRaiLabel" + e.Error())
  201. return
  202. }
  203. return
  204. }
  205. //func init() {
  206. // log := models.WxUserRaiLabelRedis{UserId: 53840, SourceId: 1753, SourceType: 3, TableName: "", Label: "", CreateTime: time.Now(), RegisterPlatform: utils.REGISTER_PLATFORM}
  207. // RoadshowWxUserRaiLabelRedisAddReduce(log)
  208. //}
  209. // 2:产业/个股标签(线下活动)、 4:产业/个股标签(线上活动)
  210. // 用户参加活动,相关标签
  211. func ActivityWxUserRaiLabelRedisAddReduce(log models.WxUserRaiLabelRedis) (err error) {
  212. defer func() {
  213. if err != nil {
  214. fmt.Println(err)
  215. go utils.SendAlarmMsg("用户参加活动,相关标签,处理Redis队列消息失败:ActivityWxUserRaiLabelRedisAddReduce"+err.Error()+fmt.Sprint("SourceId", log.SourceId, "userId", log.UserId), 2)
  216. }
  217. }()
  218. userId := log.UserId
  219. sourceId := log.SourceId
  220. wxUser, e := models.GetWxUserItemByUserId(userId)
  221. if e != nil {
  222. err = errors.New("GetWxUserItemByUserId" + e.Error())
  223. return
  224. }
  225. activityDetail, e := models.GetAddActivityDetailByActivityId(sourceId)
  226. if e != nil {
  227. err = errors.New("GetArticleDetailTestById" + e.Error())
  228. return
  229. }
  230. var sourceType int
  231. if activityDetail.ActivityType == 1 {
  232. sourceType = 4
  233. } else {
  234. sourceType = 2
  235. }
  236. //正常的有产业报告
  237. var labelArr []string
  238. //建立首页资源表,与产业的关系
  239. industrialList, e := models.GetIndustrialActivityGroupManagementListByActivityId(sourceId)
  240. if e != nil && e.Error() != utils.ErrNoRow() {
  241. err = errors.New("GetIndustrialArticleGroupManagementListByArticleId, Err: " + e.Error() + "sourceId:" + strconv.Itoa(sourceId))
  242. return
  243. }
  244. var items []*models.WxUserRaiLabel
  245. for _, v := range industrialList {
  246. item := new(models.WxUserRaiLabel)
  247. item.UserId = wxUser.UserId
  248. item.RealName = wxUser.RealName
  249. item.Mobile = wxUser.Mobile
  250. item.Email = wxUser.Email
  251. item.CompanyId = wxUser.CompanyId
  252. item.CompanyName = wxUser.CompanyName
  253. item.Label = v.IndustryName
  254. item.SourceType = sourceType
  255. item.SourceId = sourceId
  256. item.CreateTime = log.CreateTime
  257. item.ModifyTime = time.Now()
  258. item.RegisterPlatform = log.RegisterPlatform
  259. item.TableName = ""
  260. items = append(items, item)
  261. labelArr = append(labelArr, v.IndustryName)
  262. }
  263. //建立首页资源表,与标的 的关系
  264. subjectList, e := models.GetSubjectActivityGroupManagementListByActivityId(sourceId)
  265. if e != nil && e.Error() != utils.ErrNoRow() {
  266. err = errors.New("GetSubjectArticleGroupManagementListByArtcileId, Err: " + e.Error() + "sourceId:" + strconv.Itoa(sourceId))
  267. return
  268. }
  269. //fmt.Println("subjectList", subjectList)
  270. for _, v := range subjectList {
  271. item := new(models.WxUserRaiLabel)
  272. item.UserId = wxUser.UserId
  273. item.RealName = wxUser.RealName
  274. item.Mobile = wxUser.Mobile
  275. item.Email = wxUser.Email
  276. item.CompanyId = wxUser.CompanyId
  277. item.CompanyName = wxUser.CompanyName
  278. item.Label = v.SubjectName
  279. item.SourceType = sourceType
  280. item.SourceId = sourceId
  281. item.CreateTime = log.CreateTime
  282. item.ModifyTime = time.Now()
  283. item.RegisterPlatform = log.RegisterPlatform
  284. item.TableName = ""
  285. items = append(items, item)
  286. labelArr = append(labelArr, v.SubjectName)
  287. }
  288. //如果两个标签都没有,就添加临时标签
  289. if len(labelArr) == 0 {
  290. item := new(models.WxUserRaiLabel)
  291. item.UserId = wxUser.UserId
  292. item.RealName = wxUser.RealName
  293. item.Mobile = wxUser.Mobile
  294. item.Email = wxUser.Email
  295. item.CompanyId = wxUser.CompanyId
  296. item.CompanyName = wxUser.CompanyName
  297. item.Label = activityDetail.Label
  298. item.SourceType = sourceType
  299. item.SourceId = sourceId
  300. item.CreateTime = log.CreateTime
  301. item.ModifyTime = time.Now()
  302. item.RegisterPlatform = log.RegisterPlatform
  303. item.TableName = ""
  304. items = append(items, item)
  305. labelArr = append(labelArr, activityDetail.Label)
  306. }
  307. e = models.AddWxUserRaiLabelMulti(items, labelArr, userId)
  308. if e != nil {
  309. err = errors.New("AddWxUserRaiLabelMulti" + e.Error())
  310. return
  311. }
  312. return
  313. }
  314. // 3:产业/个股标签(路演线下活动)、 5:产业/个股标签(路演线上活动)
  315. // 用户参加路演,相关标签
  316. func RoadshowWxUserRaiLabelRedisAddReduce(log models.WxUserRaiLabelRedis) (err error) {
  317. defer func() {
  318. if err != nil {
  319. fmt.Println(err)
  320. go utils.SendAlarmMsg("用户参加路演,相关标签,处理Redis队列消息失败:RoadshowWxUserRaiLabelRedisAddReduce"+err.Error()+fmt.Sprint("SourceId", log.SourceId, "userId", log.UserId), 2)
  321. }
  322. }()
  323. userId := log.UserId
  324. sourceId := log.SourceId
  325. wxUser, e := models.GetWxUserItemByUserId(userId)
  326. if e != nil {
  327. err = errors.New("GetWxUserItemByUserId" + e.Error())
  328. return
  329. }
  330. rsCalendar, e := roadshow.GetRsCalendarById(sourceId)
  331. if e != nil {
  332. err = errors.New("GetRsCalendarById" + e.Error())
  333. return
  334. }
  335. var sourceType int
  336. if rsCalendar.RoadshowType == "线下" {
  337. sourceType = 3
  338. } else {
  339. sourceType = 5
  340. }
  341. totalGroup, e := roadshow.GetRsCalendarMeetingLabelGroupByRsCalendarId(sourceId)
  342. if e != nil {
  343. err = errors.New("GetRsCalendarMeetingLabelGroupByRsCalendarId" + e.Error())
  344. return
  345. }
  346. //var lebelDetail []*cygx.RaiServeTagResp
  347. var label string
  348. var labelArr []string
  349. var items []*models.WxUserRaiLabel
  350. if totalGroup > 0 {
  351. listGroup, e := roadshow.GetRsCalendarMeetingLabelGroupListByRsCalendarId(sourceId)
  352. if e != nil {
  353. err = errors.New("GetRsCalendarMeetingLabelGroupByRsCalendarId" + e.Error())
  354. return
  355. }
  356. var industrialManagementIds []int
  357. var industrialSubjectIds []int
  358. mapindustrialManagementName := make(map[int]string)
  359. mapindustrialSubjectName := make(map[int]string)
  360. mapCelueName := make(map[int]string)
  361. for _, v := range listGroup {
  362. switch v.TagType {
  363. case 1:
  364. industrialManagementIds = append(industrialManagementIds, v.TagId)
  365. case 2:
  366. industrialSubjectIds = append(industrialSubjectIds, v.TagId)
  367. case 3:
  368. mapCelueName[v.TagId] = "策略"
  369. }
  370. }
  371. if len(industrialManagementIds) > 0 {
  372. IndustryList, e := models.GetIndustryListByConditionByIds(industrialManagementIds)
  373. if e != nil {
  374. err = errors.New("GetRsCalendarMeetingLabelGroupByRsCalendarId" + e.Error())
  375. return
  376. }
  377. for _, v := range IndustryList {
  378. mapindustrialManagementName[v.IndustrialManagementId] = v.IndustryName
  379. }
  380. }
  381. if len(industrialSubjectIds) > 0 {
  382. SubjectList, e := models.GetIndustrialSubjectDetailByIds(industrialSubjectIds)
  383. if e != nil {
  384. err = errors.New("GetIndustrialSubjectDetailByIds" + e.Error())
  385. return
  386. }
  387. for _, v := range SubjectList {
  388. mapindustrialSubjectName[v.IndustrialSubjectId] = v.SubjectName
  389. }
  390. }
  391. for _, v := range listGroup {
  392. switch v.TagType {
  393. case 1:
  394. label = mapindustrialManagementName[v.TagId]
  395. case 2:
  396. label = mapindustrialSubjectName[v.TagId]
  397. case 3:
  398. label = mapCelueName[v.TagId]
  399. }
  400. item := new(models.WxUserRaiLabel)
  401. item.UserId = wxUser.UserId
  402. item.RealName = wxUser.RealName
  403. item.Mobile = wxUser.Mobile
  404. item.Email = wxUser.Email
  405. item.CompanyId = wxUser.CompanyId
  406. item.CompanyName = wxUser.CompanyName
  407. item.Label = label
  408. item.SourceType = sourceType
  409. item.SourceId = sourceId
  410. item.CreateTime = log.CreateTime
  411. item.ModifyTime = time.Now()
  412. item.RegisterPlatform = log.RegisterPlatform
  413. item.TableName = ""
  414. items = append(items, item)
  415. labelArr = append(labelArr, label)
  416. }
  417. }
  418. e = models.AddWxUserRaiLabelMulti(items, labelArr, userId)
  419. if e != nil {
  420. err = errors.New("AddWxUserRaiLabelMulti" + e.Error())
  421. return
  422. }
  423. return
  424. }
  425. // 7:产业/个股标签(报告)、8:报告类型标签
  426. func ArticleWxUserRaiLabelRedisAddReduce(log models.WxUserRaiLabelRedis) (err error) {
  427. defer func() {
  428. if err != nil {
  429. fmt.Println(err)
  430. go utils.SendAlarmMsg("用户文章阅读更新相关标签,处理Redis队列消息失败:"+err.Error()+fmt.Sprint("articleId", log.SourceId, "userId", log.UserId), 2)
  431. }
  432. }()
  433. userId := log.UserId
  434. sourceId := log.SourceId
  435. wxUser, e := models.GetWxUserItemByUserId(userId)
  436. if e != nil {
  437. err = errors.New("GetWxUserItemByUserId" + e.Error())
  438. return
  439. }
  440. //articleDetail, e := models.GetArticleDetailTestById(sourceId)
  441. //if e != nil {
  442. // err = errors.New("GetArticleDetailTestById" + e.Error())
  443. // return
  444. //}
  445. labelArr, sourceType := GetArticlelabelArrByArticleId(sourceId)
  446. if len(labelArr) == 0 {
  447. return
  448. }
  449. var items []*models.WxUserRaiLabel
  450. for _, v := range labelArr {
  451. item := new(models.WxUserRaiLabel)
  452. item.UserId = wxUser.UserId
  453. item.RealName = wxUser.RealName
  454. item.Mobile = wxUser.Mobile
  455. item.Email = wxUser.Email
  456. item.CompanyId = wxUser.CompanyId
  457. item.CompanyName = wxUser.CompanyName
  458. item.Label = v
  459. item.SourceType = sourceType
  460. item.SourceId = sourceId
  461. item.CreateTime = log.CreateTime
  462. item.ModifyTime = time.Now()
  463. item.RegisterPlatform = log.RegisterPlatform
  464. item.TableName = "cygx_article"
  465. items = append(items, item)
  466. //labelArr = append(labelArr, v.IndustryName)
  467. }
  468. //articlePermission, e := models.GetArticlePermission(articleDetail.CategoryId)
  469. //if e != nil {
  470. // err = errors.New("GetArticlePermission" + e.Error())
  471. // return
  472. //}
  473. //if articlePermission == nil {
  474. // err = errors.New("报告权限不存在" + e.Error())
  475. // return
  476. //}
  477. //articlePermissionName := articlePermission.PermissionName
  478. //matchTypeName := articlePermission.MatchTypeName
  479. //matchTypeNameArr := []string{"季度策略", "科技前沿(周报)", "本周荟", "智造精粹"}
  480. //
  481. ////1;四大行业汇总类报告:季度策略、科技前沿(周报)、本周荟、智造精粹以报告类型做标签
  482. ////2:策略、固收的所有报告,以报告类型做标签
  483. //if articlePermissionName == utils.CE_LUE_NAME || articlePermissionName == utils.GU_SHOU_NAME || utils.InArrayByStr(matchTypeNameArr, matchTypeName) { // 策略、固收的所有报告,以报告类型做标签
  484. // if matchTypeName == "季度策略" {
  485. // matchTypeName = articlePermissionName + matchTypeName //其中季度策略以:xx行业季度策略 呈现
  486. // }
  487. // item := new(models.WxUserRaiLabel)
  488. // item.UserId = wxUser.UserId
  489. // item.RealName = wxUser.RealName
  490. // item.Mobile = wxUser.Mobile
  491. // item.Email = wxUser.Email
  492. // item.CompanyId = wxUser.CompanyId
  493. // item.CompanyName = wxUser.CompanyName
  494. // item.Label = matchTypeName
  495. // item.SourceType = 8
  496. // item.SourceId = sourceId
  497. // item.CreateTime = log.CreateTime
  498. // item.ModifyTime = time.Now()
  499. // item.RegisterPlatform = log.RegisterPlatform
  500. // item.TableName = "cygx_article"
  501. // err = models.AddWxUserRaiLabel(item)
  502. // if e != nil {
  503. // err = errors.New("AddWxUserRaiLabel" + e.Error())
  504. // return
  505. // }
  506. //} else if articlePermissionName == utils.ZHOU_QI_NAME {
  507. // //周期的行业深度、调研纪要、产业跟踪这些系列的报告用领域做标签,其余的周期报告,都用报告类型(也就是ficc定义的类型)做标签
  508. // //其中周期的周度观点,以 周期周度观点 呈现
  509. // matchTypeNameArrZhouqi := []string{"行业深度", "调研纪要", "产业跟踪"}
  510. // if utils.InArrayByStr(matchTypeNameArrZhouqi, matchTypeName) {
  511. // matchTypeName = articleDetail.FieldName
  512. // }
  513. // item := new(models.WxUserRaiLabel)
  514. // item.UserId = wxUser.UserId
  515. // item.RealName = wxUser.RealName
  516. // item.Mobile = wxUser.Mobile
  517. // item.Email = wxUser.Email
  518. // item.CompanyId = wxUser.CompanyId
  519. // item.CompanyName = wxUser.CompanyName
  520. // item.Label = matchTypeName
  521. // item.SourceType = 8
  522. // item.SourceId = sourceId
  523. // item.CreateTime = log.CreateTime
  524. // item.ModifyTime = time.Now()
  525. // item.RegisterPlatform = log.RegisterPlatform
  526. // item.TableName = "cygx_article"
  527. // e = models.AddWxUserRaiLabel(item)
  528. // if e != nil {
  529. // err = errors.New("AddWxUserRaiLabel" + e.Error())
  530. // return
  531. // }
  532. //} else {
  533. // //正常的有产业报告
  534. // var labelArr []string
  535. // //建立首页资源表,与产业的关系
  536. // industrialList, e := models.GetIndustrialArticleGroupManagementListByArticleId(sourceId)
  537. // if e != nil && e.Error() != utils.ErrNoRow() {
  538. // err = errors.New("GetIndustrialArticleGroupManagementListByArticleId, Err: " + e.Error() + "sourceId:" + strconv.Itoa(sourceId))
  539. // return
  540. // }
  541. //
  542. // var items []*models.WxUserRaiLabel
  543. // for _, v := range industrialList {
  544. // item := new(models.WxUserRaiLabel)
  545. // item.UserId = wxUser.UserId
  546. // item.RealName = wxUser.RealName
  547. // item.Mobile = wxUser.Mobile
  548. // item.Email = wxUser.Email
  549. // item.CompanyId = wxUser.CompanyId
  550. // item.CompanyName = wxUser.CompanyName
  551. // item.Label = v.IndustryName
  552. // item.SourceType = 7
  553. // item.SourceId = sourceId
  554. // item.CreateTime = log.CreateTime
  555. // item.ModifyTime = time.Now()
  556. // item.RegisterPlatform = log.RegisterPlatform
  557. // item.TableName = "cygx_article"
  558. // items = append(items, item)
  559. // labelArr = append(labelArr, v.IndustryName)
  560. // }
  561. //
  562. // //建立首页资源表,与标的 的关系
  563. // subjectList, e := models.GetSubjectArticleGroupManagementListByArtcileId(sourceId)
  564. // if e != nil && e.Error() != utils.ErrNoRow() {
  565. // err = errors.New("GetSubjectArticleGroupManagementListByArtcileId, Err: " + e.Error() + "sourceId:" + strconv.Itoa(sourceId))
  566. // return
  567. // }
  568. //
  569. // for _, v := range subjectList {
  570. // item := new(models.WxUserRaiLabel)
  571. // item.UserId = wxUser.UserId
  572. // item.RealName = wxUser.RealName
  573. // item.Mobile = wxUser.Mobile
  574. // item.Email = wxUser.Email
  575. // item.CompanyId = wxUser.CompanyId
  576. // item.CompanyName = wxUser.CompanyName
  577. // item.Label = v.SubjectName
  578. // item.SourceType = 7
  579. // item.SourceId = sourceId
  580. // item.CreateTime = log.CreateTime
  581. // item.ModifyTime = time.Now()
  582. // item.RegisterPlatform = log.RegisterPlatform
  583. // item.TableName = "cygx_article"
  584. // items = append(items, item)
  585. // labelArr = append(labelArr, v.SubjectName)
  586. // }
  587. // e = models.AddWxUserRaiLabelMulti(items, labelArr, userId)
  588. // if e != nil {
  589. // err = errors.New("AddWxUserRaiLabelMulti" + e.Error())
  590. // return
  591. // }
  592. //}
  593. e = models.AddWxUserRaiLabelMulti(items, labelArr, userId)
  594. if e != nil {
  595. err = errors.New("AddWxUserRaiLabelMulti" + e.Error())
  596. return
  597. }
  598. return
  599. }
  600. // 8:报告类型标签 (本周研究汇总,与重点公司)
  601. func ReportSelectionWxUserRaiLabelRedisAddReduce(log models.WxUserRaiLabelRedis) (err error) {
  602. defer func() {
  603. if err != nil {
  604. fmt.Println(err)
  605. go utils.SendAlarmMsg("报告类型标签 (本周研究汇总,与重点公司),处理Redis队列消息失败:ReportSelectionWxUserRaiLabelRedisAddReduce"+err.Error()+fmt.Sprint("SourceId", log.SourceId, "userId", log.UserId), 2)
  606. }
  607. }()
  608. userId := log.UserId
  609. sourceId := log.SourceId
  610. wxUser, e := models.GetWxUserItemByUserId(userId)
  611. if e != nil {
  612. err = errors.New("GetWxUserItemByUserId" + e.Error())
  613. return
  614. }
  615. item := new(models.WxUserRaiLabel)
  616. item.UserId = wxUser.UserId
  617. item.RealName = wxUser.RealName
  618. item.Mobile = wxUser.Mobile
  619. item.Email = wxUser.Email
  620. item.CompanyId = wxUser.CompanyId
  621. item.CompanyName = wxUser.CompanyName
  622. item.Label = log.Label
  623. item.SourceType = 8
  624. item.SourceId = sourceId
  625. item.CreateTime = log.CreateTime
  626. item.ModifyTime = time.Now()
  627. item.RegisterPlatform = log.RegisterPlatform
  628. item.TableName = log.TableName
  629. err = models.AddWxUserRaiLabel(item)
  630. if e != nil {
  631. err = errors.New("AddWxUserRaiLabel" + e.Error())
  632. return
  633. }
  634. return
  635. }
  636. // 9:活动音视频回放标签处理
  637. func ActivityVivoWxUserRaiLabelRedisAddReduce(log models.WxUserRaiLabelRedis) (err error) {
  638. defer func() {
  639. if err != nil {
  640. fmt.Println(err)
  641. go utils.SendAlarmMsg("用户查看活动音视频回放,相关标签,处理Redis队列消息失败:ActivityVivoWxUserRaiLabelRedisAddReduce"+err.Error()+fmt.Sprint("SourceId", log.SourceId, "userId", log.UserId), 2)
  642. }
  643. }()
  644. userId := log.UserId
  645. sourceId := log.SourceId
  646. wxUser, e := models.GetWxUserItemByUserId(userId)
  647. if e != nil {
  648. err = errors.New("GetWxUserItemByUserId" + e.Error())
  649. return
  650. }
  651. activityDetail, e := models.GetAddActivityDetailByActivityId(sourceId)
  652. if e != nil {
  653. err = errors.New("GetAddActivityDetailByActivityId" + e.Error())
  654. return
  655. }
  656. var sourceType int
  657. sourceType = 9
  658. //正常的有产业报告
  659. var labelArr []string
  660. //建立首页资源表,与产业的关系
  661. industrialList, e := models.GetIndustrialActivityGroupManagementListByActivityId(sourceId)
  662. if e != nil && e.Error() != utils.ErrNoRow() {
  663. err = errors.New("GetIndustrialActivityGroupManagementListByActivityId, Err: " + e.Error() + "sourceId:" + strconv.Itoa(sourceId))
  664. return
  665. }
  666. var items []*models.WxUserRaiLabel
  667. for _, v := range industrialList {
  668. item := new(models.WxUserRaiLabel)
  669. item.UserId = wxUser.UserId
  670. item.RealName = wxUser.RealName
  671. item.Mobile = wxUser.Mobile
  672. item.Email = wxUser.Email
  673. item.CompanyId = wxUser.CompanyId
  674. item.CompanyName = wxUser.CompanyName
  675. item.Label = v.IndustryName
  676. item.SourceType = sourceType
  677. item.SourceId = sourceId
  678. item.CreateTime = log.CreateTime
  679. item.ModifyTime = time.Now()
  680. item.RegisterPlatform = log.RegisterPlatform
  681. item.TableName = ""
  682. items = append(items, item)
  683. labelArr = append(labelArr, v.IndustryName)
  684. }
  685. //建立首页资源表,与标的 的关系
  686. subjectList, e := models.GetSubjectActivityGroupManagementListByActivityId(sourceId)
  687. if e != nil && e.Error() != utils.ErrNoRow() {
  688. err = errors.New("GetSubjectActivityGroupManagementListByActivityId, Err: " + e.Error() + "sourceId:" + strconv.Itoa(sourceId))
  689. return
  690. }
  691. //fmt.Println("subjectList", subjectList)
  692. for _, v := range subjectList {
  693. item := new(models.WxUserRaiLabel)
  694. item.UserId = wxUser.UserId
  695. item.RealName = wxUser.RealName
  696. item.Mobile = wxUser.Mobile
  697. item.Email = wxUser.Email
  698. item.CompanyId = wxUser.CompanyId
  699. item.CompanyName = wxUser.CompanyName
  700. item.Label = v.SubjectName
  701. item.SourceType = sourceType
  702. item.SourceId = sourceId
  703. item.CreateTime = log.CreateTime
  704. item.ModifyTime = time.Now()
  705. item.RegisterPlatform = log.RegisterPlatform
  706. item.TableName = ""
  707. items = append(items, item)
  708. labelArr = append(labelArr, v.SubjectName)
  709. }
  710. //如果两个标签都没有,就添加临时标签
  711. if len(labelArr) == 0 {
  712. item := new(models.WxUserRaiLabel)
  713. item.UserId = wxUser.UserId
  714. item.RealName = wxUser.RealName
  715. item.Mobile = wxUser.Mobile
  716. item.Email = wxUser.Email
  717. item.CompanyId = wxUser.CompanyId
  718. item.CompanyName = wxUser.CompanyName
  719. item.Label = activityDetail.Label
  720. item.SourceType = sourceType
  721. item.SourceId = sourceId
  722. item.CreateTime = log.CreateTime
  723. item.ModifyTime = time.Now()
  724. item.RegisterPlatform = log.RegisterPlatform
  725. item.TableName = ""
  726. items = append(items, item)
  727. labelArr = append(labelArr, activityDetail.Label)
  728. }
  729. e = models.AddWxUserRaiLabelMulti(items, labelArr, userId)
  730. if e != nil {
  731. err = errors.New("AddWxUserRaiLabelMulti" + e.Error())
  732. return
  733. }
  734. return
  735. }
  736. //func init() {
  737. // fmt.Println(GetArticlelabelArrByArticleId(11796))
  738. //}
  739. func GetArticlelabelArrByArticleId(articleId int) (labelArr []string, sourceType int) {
  740. articleDetail, e := models.GetArticleDetailTestById(articleId)
  741. if e != nil {
  742. fmt.Println(e)
  743. return
  744. }
  745. if articleDetail.ArticleTypeId > 0 {
  746. //正常的有产业报告
  747. //建立首页资源表,与产业的关系
  748. industrialList, e := models.GetIndustrialArticleGroupManagementListByArticleId(articleId)
  749. if e != nil && e.Error() != utils.ErrNoRow() {
  750. fmt.Println(e)
  751. return
  752. }
  753. for _, v := range industrialList {
  754. labelArr = append(labelArr, v.IndustryName)
  755. }
  756. //建立首页资源表,与标的 的关系
  757. subjectList, e := models.GetSubjectArticleGroupManagementListByArtcileId(articleId)
  758. if e != nil && e.Error() != utils.ErrNoRow() {
  759. fmt.Println(e)
  760. return
  761. }
  762. for _, v := range subjectList {
  763. labelArr = append(labelArr, v.SubjectName)
  764. }
  765. sourceType = 7
  766. return
  767. }
  768. articlePermission, e := models.GetArticlePermission(articleDetail.CategoryId)
  769. if e != nil {
  770. fmt.Println(e)
  771. return
  772. }
  773. if articlePermission == nil {
  774. fmt.Println(e)
  775. return
  776. }
  777. articlePermissionName := articlePermission.PermissionName
  778. subCategoryName := articleDetail.SubCategoryName
  779. matchTypeNameArr := []string{"季度策略", "科技前言(周报)", "本周荟", "智造精粹"}
  780. //fmt.Println(subCategoryName)
  781. //1;四大行业汇总类报告:季度策略、科技前沿(周报)、本周荟、智造精粹以报告类型做标签
  782. //2:策略、固收的所有报告,以报告类型做标签
  783. //var labelArr []string
  784. if articlePermissionName == utils.CE_LUE_NAME || articlePermissionName == utils.GU_SHOU_NAME || utils.InArrayByStr(matchTypeNameArr, subCategoryName) { // 策略、固收的所有报告,以报告类型做标签
  785. if subCategoryName == "季度策略" {
  786. subCategoryName = articlePermissionName + subCategoryName //其中季度策略以:xx行业季度策略 呈现
  787. }
  788. labelArr = append(labelArr, subCategoryName)
  789. sourceType = 8
  790. } else if articlePermissionName == utils.ZHOU_QI_NAME {
  791. //周期的行业深度、调研纪要、产业跟踪这些系列的报告用领域做标签,其余的周期报告,都用报告类型(也就是ficc定义的类型)做标签
  792. //其中周期的周度观点,以 周期周度观点 呈现
  793. matchTypeNameArrZhouqi := []string{"行业深度", "调研纪要", "产业跟踪"}
  794. if utils.InArrayByStr(matchTypeNameArrZhouqi, subCategoryName) {
  795. subCategoryName = articleDetail.FieldName
  796. }
  797. labelArr = append(labelArr, subCategoryName)
  798. sourceType = 8
  799. } else {
  800. //正常的有产业报告
  801. //建立首页资源表,与产业的关系
  802. industrialList, e := models.GetIndustrialArticleGroupManagementListByArticleId(articleId)
  803. if e != nil && e.Error() != utils.ErrNoRow() {
  804. fmt.Println(e)
  805. return
  806. }
  807. for _, v := range industrialList {
  808. labelArr = append(labelArr, v.IndustryName)
  809. }
  810. //建立首页资源表,与标的 的关系
  811. subjectList, e := models.GetSubjectArticleGroupManagementListByArtcileId(articleId)
  812. if e != nil && e.Error() != utils.ErrNoRow() {
  813. fmt.Println(e)
  814. return
  815. }
  816. for _, v := range subjectList {
  817. labelArr = append(labelArr, v.SubjectName)
  818. }
  819. sourceType = 7
  820. }
  821. return
  822. }
  823. //func init() {
  824. // //fmt.Println(GetArticlelabelArrByArticleId(11037))
  825. // initCrm16_5ActivityVivo()
  826. //}
  827. func initCrm16_5keyWord() {
  828. listKeyWords, err := models.GetSearchKeyWordinitCrm16_5()
  829. if err != nil {
  830. fmt.Println(err)
  831. return
  832. }
  833. var mobiles []string
  834. mapMobile := make(map[string]bool)
  835. for _, v := range listKeyWords {
  836. if mapMobile[v.Mobile] || v.Mobile == "" {
  837. continue
  838. }
  839. mapMobile[v.Mobile] = true
  840. mobiles = append(mobiles, v.Mobile)
  841. }
  842. listUser, err := models.GetWxUserListByMobileArr(mobiles)
  843. if err != nil {
  844. fmt.Println(err)
  845. return
  846. }
  847. mapUser := make(map[string]*models.WxUserItem)
  848. for _, v := range listUser {
  849. mapUser[v.Mobile] = v
  850. }
  851. var items []*models.WxUserRaiLabelLog
  852. for _, v := range listKeyWords {
  853. if mapUser[v.Mobile] == nil || v.Mobile == "" {
  854. continue
  855. }
  856. wxUser := mapUser[v.Mobile]
  857. item := new(models.WxUserRaiLabelLog)
  858. item.UserId = wxUser.UserId
  859. item.RealName = wxUser.RealName
  860. item.Mobile = wxUser.Mobile
  861. item.Email = wxUser.Email
  862. item.CompanyId = wxUser.CompanyId
  863. item.CompanyName = wxUser.CompanyName
  864. item.Label = v.KeyWord
  865. item.SourceType = 1
  866. item.CreateTime = v.CreateTime
  867. item.ModifyTime = time.Now()
  868. item.RegisterPlatform = v.RegisterPlatform
  869. items = append(items, item)
  870. }
  871. fmt.Println(len(items))
  872. var itemsAdd []*models.WxUserRaiLabelLog
  873. if len(items) > 0 {
  874. for _, v := range items {
  875. itemsAdd = append(itemsAdd, v)
  876. if len(itemsAdd)%2000 == 0 {
  877. err = models.AddWxUserRaiLabelLogMultiInit(itemsAdd)
  878. if err != nil {
  879. fmt.Println(err)
  880. return
  881. }
  882. itemsAdd = make([]*models.WxUserRaiLabelLog, 0)
  883. }
  884. }
  885. }
  886. if len(itemsAdd) > 0 {
  887. err = models.AddWxUserRaiLabelLogMultiInit(itemsAdd)
  888. if err != nil {
  889. fmt.Println(err)
  890. return
  891. }
  892. }
  893. fmt.Println("endAddWxUserRaiLabelLogMultiInit")
  894. }
  895. func initCrm16_5Activity() {
  896. var condition string
  897. var pars []interface{}
  898. condition += ` AND create_time > '2024-09-01' AND (is_meeting =1 OR duration != '') `
  899. pars = append(pars)
  900. //获取提交到会的人员信息
  901. signUpDetailList, err := models.GetSignupDetailList(condition, pars)
  902. if err != nil {
  903. fmt.Println(err)
  904. return
  905. }
  906. var mobiles []string
  907. mapMobile := make(map[string]bool)
  908. for _, v := range signUpDetailList {
  909. if mapMobile[v.Mobile] || v.Mobile == "" {
  910. continue
  911. }
  912. mapMobile[v.Mobile] = true
  913. mobiles = append(mobiles, v.Mobile)
  914. }
  915. var activityIds []int
  916. mapactivityId := make(map[int]bool)
  917. for _, v := range signUpDetailList {
  918. if mapactivityId[v.ActivityId] {
  919. continue
  920. }
  921. mapactivityId[v.ActivityId] = true
  922. activityIds = append(activityIds, v.ActivityId)
  923. }
  924. listUser, err := models.GetWxUserListByMobileArr(mobiles)
  925. if err != nil {
  926. fmt.Println(err)
  927. return
  928. }
  929. mapUser := make(map[string]*models.WxUserItem)
  930. for _, v := range listUser {
  931. mapUser[v.Mobile] = v
  932. }
  933. activityDetailList, e := models.GetAddActivityDetailByActivityIdinitCrm16_5(activityIds)
  934. if e != nil {
  935. fmt.Println(e)
  936. return
  937. }
  938. sourceTypemap := make(map[int]int)
  939. mapLabel := make(map[int]string)
  940. for _, v := range activityDetailList {
  941. if v.ActivityType == 1 {
  942. sourceTypemap[v.ActivityId] = 4
  943. } else {
  944. sourceTypemap[v.ActivityId] = 2
  945. }
  946. mapLabel[v.ActivityId] = v.Label
  947. }
  948. //正常的有产业报告
  949. //建立首页资源表,与产业的关系
  950. industrialList, e := models.GetIndustrialActivityGroupManagementListByArticleIds(activityIds)
  951. if e != nil && e.Error() != utils.ErrNoRow() {
  952. fmt.Println(e)
  953. return
  954. }
  955. //建立首页资源表,与标的 的关系
  956. subjectList, e := models.GetSubjectActivityGroupManagementListByActivityIds(activityIds)
  957. if e != nil && e.Error() != utils.ErrNoRow() {
  958. fmt.Println(e)
  959. return
  960. }
  961. var items []*models.WxUserRaiLabelLog
  962. for _, v := range signUpDetailList {
  963. if mapUser[v.Mobile] == nil || v.Mobile == "" {
  964. continue
  965. }
  966. var haseName bool
  967. wxUser := mapUser[v.Mobile]
  968. for _, vI := range industrialList {
  969. if vI.ActivityId != v.ActivityId {
  970. continue
  971. }
  972. haseName = true
  973. item := new(models.WxUserRaiLabelLog)
  974. item.UserId = wxUser.UserId
  975. item.RealName = wxUser.RealName
  976. item.Mobile = wxUser.Mobile
  977. item.Email = wxUser.Email
  978. item.CompanyId = wxUser.CompanyId
  979. item.CompanyName = wxUser.CompanyName
  980. item.Label = vI.IndustryName
  981. item.SourceType = sourceTypemap[v.ActivityId]
  982. item.SourceId = v.ActivityId
  983. item.CreateTime = v.CreateTime
  984. item.ModifyTime = time.Now()
  985. item.TableName = ""
  986. //item.RegisterPlatform = v.RegisterPlatform
  987. items = append(items, item)
  988. }
  989. for _, vs := range subjectList {
  990. if vs.ActivityId != v.ActivityId {
  991. continue
  992. }
  993. haseName = true
  994. item := new(models.WxUserRaiLabelLog)
  995. item.UserId = wxUser.UserId
  996. item.RealName = wxUser.RealName
  997. item.Mobile = wxUser.Mobile
  998. item.Email = wxUser.Email
  999. item.CompanyId = wxUser.CompanyId
  1000. item.CompanyName = wxUser.CompanyName
  1001. item.Label = vs.SubjectName
  1002. item.SourceType = sourceTypemap[v.ActivityId]
  1003. item.SourceId = v.ActivityId
  1004. item.CreateTime = v.CreateTime
  1005. item.ModifyTime = time.Now()
  1006. //item.RegisterPlatform = v.RegisterPlatform
  1007. items = append(items, item)
  1008. }
  1009. //如果两个标签都没有,就添加临时标签
  1010. if !haseName {
  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. item.Label = mapLabel[v.ActivityId]
  1019. item.SourceType = sourceTypemap[v.ActivityId]
  1020. item.SourceId = v.ActivityId
  1021. item.CreateTime = v.CreateTime
  1022. item.ModifyTime = time.Now()
  1023. //item.RegisterPlatform = v.RegisterPlatform
  1024. item.TableName = ""
  1025. items = append(items, item)
  1026. }
  1027. }
  1028. //fmt.Println("initCrm16_5Activity", len(items))
  1029. //return
  1030. var itemsAdd []*models.WxUserRaiLabelLog
  1031. if len(items) > 0 {
  1032. for _, v := range items {
  1033. itemsAdd = append(itemsAdd, v)
  1034. if len(itemsAdd)%2000 == 0 {
  1035. err = models.AddWxUserRaiLabelLogMultiInit(itemsAdd)
  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. }
  1051. func initCrm16_5ActivityVivo() {
  1052. var condition string
  1053. var pars []interface{}
  1054. condition += ` AND create_time > '2024-09-01' `
  1055. pars = append(pars)
  1056. //获取提交到会的人员信息
  1057. ActivityVoiceList, err := models.GetActivityVoiceHistoryByMobileListCRM_16_5Init(condition)
  1058. if err != nil {
  1059. fmt.Println(err)
  1060. return
  1061. }
  1062. ActivityVideoList, err := models.GetActivityVideoHistoryByMobileListCRM_16_5Init(condition)
  1063. if err != nil {
  1064. fmt.Println(err)
  1065. return
  1066. }
  1067. var mobiles []string
  1068. mapMobile := make(map[string]bool)
  1069. for _, v := range ActivityVoiceList {
  1070. if mapMobile[v.Mobile] || v.Mobile == "" {
  1071. continue
  1072. }
  1073. mapMobile[v.Mobile] = true
  1074. mobiles = append(mobiles, v.Mobile)
  1075. }
  1076. for _, v := range ActivityVideoList {
  1077. if mapMobile[v.Mobile] || v.Mobile == "" {
  1078. continue
  1079. }
  1080. mapMobile[v.Mobile] = true
  1081. mobiles = append(mobiles, v.Mobile)
  1082. }
  1083. var activityIds []int
  1084. mapactivityId := make(map[int]bool)
  1085. for _, v := range ActivityVoiceList {
  1086. if mapactivityId[v.ActivityId] {
  1087. continue
  1088. }
  1089. mapactivityId[v.ActivityId] = true
  1090. activityIds = append(activityIds, v.ActivityId)
  1091. }
  1092. for _, v := range ActivityVideoList {
  1093. if mapactivityId[v.ActivityId] {
  1094. continue
  1095. }
  1096. mapactivityId[v.ActivityId] = true
  1097. activityIds = append(activityIds, v.ActivityId)
  1098. }
  1099. listUser, err := models.GetWxUserListByMobileArr(mobiles)
  1100. if err != nil {
  1101. fmt.Println(err)
  1102. return
  1103. }
  1104. mapUser := make(map[string]*models.WxUserItem)
  1105. for _, v := range listUser {
  1106. mapUser[v.Mobile] = v
  1107. }
  1108. activityDetailList, e := models.GetAddActivityDetailByActivityIdinitCrm16_5(activityIds)
  1109. if e != nil {
  1110. fmt.Println(e)
  1111. return
  1112. }
  1113. //sourceTypemap := make(map[int]int)
  1114. mapLabel := make(map[int]string)
  1115. for _, v := range activityDetailList {
  1116. //if v.ActivityType == 1 {
  1117. // sourceTypemap[v.ActivityId] = 4
  1118. //} else {
  1119. // sourceTypemap[v.ActivityId] = 2
  1120. //}
  1121. mapLabel[v.ActivityId] = v.Label
  1122. }
  1123. //正常的有产业报告
  1124. //建立首页资源表,与产业的关系
  1125. industrialList, e := models.GetIndustrialActivityGroupManagementListByArticleIds(activityIds)
  1126. if e != nil && e.Error() != utils.ErrNoRow() {
  1127. fmt.Println(e)
  1128. return
  1129. }
  1130. //建立首页资源表,与标的 的关系
  1131. subjectList, e := models.GetSubjectActivityGroupManagementListByActivityIds(activityIds)
  1132. if e != nil && e.Error() != utils.ErrNoRow() {
  1133. fmt.Println(e)
  1134. return
  1135. }
  1136. var items []*models.WxUserRaiLabelLog
  1137. for _, v := range ActivityVoiceList {
  1138. if mapUser[v.Mobile] == nil || v.Mobile == "" {
  1139. continue
  1140. }
  1141. var haseName bool
  1142. wxUser := mapUser[v.Mobile]
  1143. for _, vI := range industrialList {
  1144. if vI.ActivityId != v.ActivityId {
  1145. continue
  1146. }
  1147. haseName = true
  1148. item := new(models.WxUserRaiLabelLog)
  1149. item.UserId = wxUser.UserId
  1150. item.RealName = wxUser.RealName
  1151. item.Mobile = wxUser.Mobile
  1152. item.Email = wxUser.Email
  1153. item.CompanyId = wxUser.CompanyId
  1154. item.CompanyName = wxUser.CompanyName
  1155. item.Label = vI.IndustryName
  1156. item.SourceType = 9
  1157. item.SourceId = v.ActivityId
  1158. item.CreateTime = v.CreateTime
  1159. item.ModifyTime = time.Now()
  1160. item.TableName = ""
  1161. //item.RegisterPlatform = v.RegisterPlatform
  1162. items = append(items, item)
  1163. }
  1164. for _, vs := range subjectList {
  1165. if vs.ActivityId != v.ActivityId {
  1166. continue
  1167. }
  1168. haseName = true
  1169. item := new(models.WxUserRaiLabelLog)
  1170. item.UserId = wxUser.UserId
  1171. item.RealName = wxUser.RealName
  1172. item.Mobile = wxUser.Mobile
  1173. item.Email = wxUser.Email
  1174. item.CompanyId = wxUser.CompanyId
  1175. item.CompanyName = wxUser.CompanyName
  1176. item.Label = vs.SubjectName
  1177. item.SourceType = 9
  1178. item.SourceId = v.ActivityId
  1179. item.CreateTime = v.CreateTime
  1180. item.ModifyTime = time.Now()
  1181. //item.RegisterPlatform = v.RegisterPlatform
  1182. items = append(items, item)
  1183. }
  1184. //如果两个标签都没有,就添加临时标签
  1185. if !haseName {
  1186. item := new(models.WxUserRaiLabelLog)
  1187. item.UserId = wxUser.UserId
  1188. item.RealName = wxUser.RealName
  1189. item.Mobile = wxUser.Mobile
  1190. item.Email = wxUser.Email
  1191. item.CompanyId = wxUser.CompanyId
  1192. item.CompanyName = wxUser.CompanyName
  1193. item.Label = mapLabel[v.ActivityId]
  1194. item.SourceType = 9
  1195. item.SourceId = v.ActivityId
  1196. item.CreateTime = v.CreateTime
  1197. item.ModifyTime = time.Now()
  1198. //item.RegisterPlatform = v.RegisterPlatform
  1199. item.TableName = ""
  1200. items = append(items, item)
  1201. }
  1202. }
  1203. for _, v := range ActivityVideoList {
  1204. if mapUser[v.Mobile] == nil || v.Mobile == "" {
  1205. continue
  1206. }
  1207. var haseName bool
  1208. wxUser := mapUser[v.Mobile]
  1209. for _, vI := range industrialList {
  1210. if vI.ActivityId != v.ActivityId {
  1211. continue
  1212. }
  1213. haseName = true
  1214. item := new(models.WxUserRaiLabelLog)
  1215. item.UserId = wxUser.UserId
  1216. item.RealName = wxUser.RealName
  1217. item.Mobile = wxUser.Mobile
  1218. item.Email = wxUser.Email
  1219. item.CompanyId = wxUser.CompanyId
  1220. item.CompanyName = wxUser.CompanyName
  1221. item.Label = vI.IndustryName
  1222. item.SourceType = 9
  1223. item.SourceId = v.ActivityId
  1224. item.CreateTime = v.CreateTime
  1225. item.ModifyTime = time.Now()
  1226. item.TableName = ""
  1227. //item.RegisterPlatform = v.RegisterPlatform
  1228. items = append(items, item)
  1229. }
  1230. for _, vs := range subjectList {
  1231. if vs.ActivityId != v.ActivityId {
  1232. continue
  1233. }
  1234. haseName = true
  1235. item := new(models.WxUserRaiLabelLog)
  1236. item.UserId = wxUser.UserId
  1237. item.RealName = wxUser.RealName
  1238. item.Mobile = wxUser.Mobile
  1239. item.Email = wxUser.Email
  1240. item.CompanyId = wxUser.CompanyId
  1241. item.CompanyName = wxUser.CompanyName
  1242. item.Label = vs.SubjectName
  1243. item.SourceType = 9
  1244. item.SourceId = v.ActivityId
  1245. item.CreateTime = v.CreateTime
  1246. item.ModifyTime = time.Now()
  1247. //item.RegisterPlatform = v.RegisterPlatform
  1248. items = append(items, item)
  1249. }
  1250. //如果两个标签都没有,就添加临时标签
  1251. if !haseName {
  1252. item := new(models.WxUserRaiLabelLog)
  1253. item.UserId = wxUser.UserId
  1254. item.RealName = wxUser.RealName
  1255. item.Mobile = wxUser.Mobile
  1256. item.Email = wxUser.Email
  1257. item.CompanyId = wxUser.CompanyId
  1258. item.CompanyName = wxUser.CompanyName
  1259. item.Label = mapLabel[v.ActivityId]
  1260. item.SourceType = 9
  1261. item.SourceId = v.ActivityId
  1262. item.CreateTime = v.CreateTime
  1263. item.ModifyTime = time.Now()
  1264. //item.RegisterPlatform = v.RegisterPlatform
  1265. item.TableName = ""
  1266. items = append(items, item)
  1267. }
  1268. }
  1269. fmt.Println("initCrm16_5Activity", len(items))
  1270. //return
  1271. var itemsAdd []*models.WxUserRaiLabelLog
  1272. if len(items) > 0 {
  1273. for _, v := range items {
  1274. itemsAdd = append(itemsAdd, v)
  1275. if len(itemsAdd)%2000 == 0 {
  1276. err = models.AddWxUserRaiLabelLogMultiInit(itemsAdd)
  1277. if err != nil {
  1278. return
  1279. }
  1280. itemsAdd = make([]*models.WxUserRaiLabelLog, 0)
  1281. }
  1282. }
  1283. }
  1284. if len(itemsAdd) > 0 {
  1285. err = models.AddWxUserRaiLabelLogMultiInit(itemsAdd)
  1286. if err != nil {
  1287. return
  1288. }
  1289. }
  1290. fmt.Println("endAddWxUserRaiLabelLogMultiInit")
  1291. }
  1292. func initCrm16_5Article() {
  1293. var condition string
  1294. var pars []interface{}
  1295. condition += ` `
  1296. pars = append(pars)
  1297. listArticleIds, err := models.GetCygxArticleHistoryRecordAllListArticleIdCrm16_5()
  1298. if err != nil {
  1299. fmt.Println(err)
  1300. return
  1301. }
  1302. fmt.Println("listArticleIds", len(listArticleIds))
  1303. listHave, err := models.GetWxUserRaiArticleLabelCrm16_5()
  1304. if err != nil {
  1305. fmt.Println(err)
  1306. return
  1307. }
  1308. mapArticleId := make(map[int]bool)
  1309. for _, v := range listHave {
  1310. mapArticleId[v.ArticleId] = true
  1311. }
  1312. for k, v := range listArticleIds {
  1313. fmt.Println(k)
  1314. labelArr, sourceType := GetArticlelabelArrByArticleId(v.ArticleId)
  1315. if len(labelArr) == 0 {
  1316. continue
  1317. }
  1318. var items []*models.WxUserRaiArticleLabel
  1319. for _, v2 := range labelArr {
  1320. item := new(models.WxUserRaiArticleLabel)
  1321. item.ArticleId = v.ArticleId
  1322. item.Label = v2
  1323. item.SourceType = sourceType
  1324. item.CreateTime = time.Now()
  1325. items = append(items, item)
  1326. }
  1327. err = models.AddWxUserRaiArticleLabelMultiInit(items)
  1328. time.Sleep(time.Millisecond * 100)
  1329. fmt.Println(err)
  1330. }
  1331. }
  1332. func initCrm16_5Article2() {
  1333. var condition string
  1334. var pars []interface{}
  1335. condition += ` `
  1336. pars = append(pars)
  1337. //获取提交到会的人员信息
  1338. listArticleIds, err := models.GetCygxArticleHistoryRecordAllListUserIdCrm16_5()
  1339. if err != nil {
  1340. fmt.Println(err)
  1341. return
  1342. }
  1343. fmt.Println("listArticleIds", len(listArticleIds))
  1344. mapUserId := make(map[string]bool)
  1345. var mobiles []string
  1346. for _, v := range listArticleIds {
  1347. if mapUserId[v.Mobile] {
  1348. continue
  1349. }
  1350. mobiles = append(mobiles, v.Mobile)
  1351. mapUserId[v.Mobile] = true
  1352. }
  1353. listUser, err := models.GetWxUserListByMobileArr(mobiles)
  1354. if err != nil {
  1355. fmt.Println(err)
  1356. return
  1357. }
  1358. mapUser := make(map[string]*models.WxUserItem)
  1359. for _, v := range listUser {
  1360. mapUser[v.Mobile] = v
  1361. }
  1362. listArticleLabel, err := models.GetWxUserRaiArticleLabelAllCrm16_5()
  1363. if err != nil {
  1364. fmt.Println(err)
  1365. return
  1366. }
  1367. mapArticleLabel := make(map[int][]string)
  1368. mapArticleType := make(map[int]int)
  1369. for _, v := range listArticleLabel {
  1370. mapArticleLabel[v.ArticleId] = append(mapArticleLabel[v.ArticleId], v.Label)
  1371. mapArticleType[v.ArticleId] = v.SourceType
  1372. }
  1373. var items []*models.WxUserRaiLabelLog
  1374. for _, v := range listArticleIds {
  1375. if mapUser[v.Mobile] == nil || v.Mobile == "" {
  1376. continue
  1377. }
  1378. if len(mapArticleLabel[v.ArticleId]) == 0 {
  1379. continue
  1380. }
  1381. wxUser := mapUser[v.Mobile]
  1382. for _, vI := range mapArticleLabel[v.ArticleId] {
  1383. item := new(models.WxUserRaiLabelLog)
  1384. item.UserId = wxUser.UserId
  1385. item.RealName = wxUser.RealName
  1386. item.Mobile = wxUser.Mobile
  1387. item.Email = wxUser.Email
  1388. item.CompanyId = wxUser.CompanyId
  1389. item.CompanyName = wxUser.CompanyName
  1390. item.Label = vI
  1391. item.SourceType = mapArticleType[v.ArticleId]
  1392. item.SourceId = v.ArticleId
  1393. item.CreateTime = utils.StrTimeToTime(v.CreateTime)
  1394. item.ModifyTime = time.Now()
  1395. item.TableName = "cygx_article"
  1396. //item.RegisterPlatform = v.RegisterPlatform
  1397. items = append(items, item)
  1398. }
  1399. }
  1400. fmt.Println("items", len(items))
  1401. var itemsAdd []*models.WxUserRaiLabelLog
  1402. if len(items) > 0 {
  1403. for _, v := range items {
  1404. itemsAdd = append(itemsAdd, v)
  1405. if len(itemsAdd)%2000 == 0 {
  1406. err = models.AddWxUserRaiLabelLogMultiInit(itemsAdd)
  1407. if err != nil {
  1408. fmt.Println(err)
  1409. return
  1410. }
  1411. itemsAdd = make([]*models.WxUserRaiLabelLog, 0)
  1412. }
  1413. }
  1414. }
  1415. if len(itemsAdd) > 0 {
  1416. err = models.AddWxUserRaiLabelLogMultiInit(itemsAdd)
  1417. if err != nil {
  1418. fmt.Println(err)
  1419. return
  1420. }
  1421. }
  1422. fmt.Println("endAddWxUserRaiLabelLogMultiInit")
  1423. }
  1424. //func init() {
  1425. // //initCrm16_5keyWord()
  1426. // //initCrm16_5Activity()
  1427. // ////initCrm16_5Article()
  1428. // //initCrm16_5Article2()
  1429. // //initCrm16_5ReportHistory()
  1430. // //initCrm16_5ReportHistory_2()
  1431. // //initCrm16_5Roadshow()
  1432. // //initCrm16_5ActivityVivo()
  1433. // fmt.Println("end RO")
  1434. //
  1435. // initCrm16_5wx_user_rai_label()
  1436. //
  1437. // fmt.Println("end RO2")
  1438. //}
  1439. // 记录用户在重点公司单独点了某一个标签
  1440. func initCrm16_5ReportHistory_0() {
  1441. var err error
  1442. defer func() {
  1443. if err != nil {
  1444. go utils.SendAlarmMsg("SendCygxReportSelectionLogApplyTemplateMsg Err"+err.Error(), 2)
  1445. }
  1446. }()
  1447. var condition string
  1448. var pars []interface{}
  1449. listhistory, err := models.GetCygxReportSelectionSubjectHistory()
  1450. if err != nil {
  1451. fmt.Println(err)
  1452. return
  1453. }
  1454. for kH, vH := range listhistory {
  1455. fmt.Println(kH)
  1456. pars = make([]interface{}, 0)
  1457. condition = ` AND article_id = ? AND industrial_subject_id = ? AND industrial_management_id = ? AND third_id = ? `
  1458. pars = append(pars, vH.ArticleId, vH.IndustrialSubjectId, vH.IndustrialManagementId, vH.ThirdId)
  1459. listLog, e := models.GetCygxReportSelectionLog(condition, pars, 0, 9999)
  1460. if e != nil {
  1461. err = errors.New("GetCygxReportSelectionLog, Err: " + e.Error())
  1462. fmt.Println(err)
  1463. return
  1464. }
  1465. var labelName string
  1466. for _, v2 := range listLog {
  1467. if v2.ThirdId > 0 {
  1468. labelName = v2.ThirdName
  1469. } else if v2.IndustrialSubjectId == 0 && v2.IndustrialManagementId != "" {
  1470. labelName = v2.IndustrialManagementNames
  1471. } else {
  1472. labelName = v2.SubjectName
  1473. }
  1474. }
  1475. err = models.UpdateCygxReportSelectionSubjectHistoryName(labelName, vH.Id)
  1476. if err != nil {
  1477. fmt.Println(err)
  1478. return
  1479. }
  1480. }
  1481. fmt.Println("end")
  1482. return
  1483. }
  1484. func initCrm16_5ReportHistory() {
  1485. listReportHistory, err := models.GetWxUserRaiCygxReportHistoryRecordCrm16_5()
  1486. if err != nil {
  1487. fmt.Println(err)
  1488. return
  1489. }
  1490. var mobiles []string
  1491. mapMobile := make(map[string]bool)
  1492. for _, v := range listReportHistory {
  1493. if mapMobile[v.Mobile] || v.Mobile == "" {
  1494. continue
  1495. }
  1496. mapMobile[v.Mobile] = true
  1497. mobiles = append(mobiles, v.Mobile)
  1498. }
  1499. listUser, err := models.GetWxUserListByMobileArr(mobiles)
  1500. if err != nil {
  1501. fmt.Println(err)
  1502. return
  1503. }
  1504. mapUser := make(map[string]*models.WxUserItem)
  1505. for _, v := range listUser {
  1506. mapUser[v.Mobile] = v
  1507. }
  1508. var items []*models.WxUserRaiLabelLog
  1509. for _, v := range listReportHistory {
  1510. if mapUser[v.Mobile] == nil || v.Mobile == "" {
  1511. continue
  1512. }
  1513. wxUser := mapUser[v.Mobile]
  1514. item := new(models.WxUserRaiLabelLog)
  1515. item.UserId = wxUser.UserId
  1516. item.RealName = wxUser.RealName
  1517. item.Mobile = wxUser.Mobile
  1518. item.Email = wxUser.Email
  1519. item.CompanyId = wxUser.CompanyId
  1520. item.CompanyName = wxUser.CompanyName
  1521. if v.ReportType == "bgjx" {
  1522. item.Label = "重点推荐"
  1523. item.TableName = "cygx_report_selection"
  1524. } else {
  1525. item.Label = "本周研究汇总"
  1526. item.TableName = "cygx_research_summary"
  1527. }
  1528. item.SourceId = v.ArticleId
  1529. item.SourceType = 8
  1530. item.CreateTime = v.CreateTime
  1531. item.ModifyTime = time.Now()
  1532. item.RegisterPlatform = v.RegisterPlatform
  1533. items = append(items, item)
  1534. }
  1535. fmt.Println("items", len(items))
  1536. var itemsAdd []*models.WxUserRaiLabelLog
  1537. if len(items) > 0 {
  1538. for _, v := range items {
  1539. itemsAdd = append(itemsAdd, v)
  1540. if len(items)%2000 == 0 {
  1541. err = models.AddWxUserRaiLabelLogMultiInit(itemsAdd)
  1542. if err != nil {
  1543. return
  1544. }
  1545. itemsAdd = make([]*models.WxUserRaiLabelLog, 0)
  1546. }
  1547. }
  1548. }
  1549. if len(itemsAdd) > 0 {
  1550. err = models.AddWxUserRaiLabelLogMultiInit(itemsAdd)
  1551. if err != nil {
  1552. return
  1553. }
  1554. }
  1555. fmt.Println("endAddWxUserRaiLabelLogMultiInit")
  1556. }
  1557. func initCrm16_5Roadshow() {
  1558. var condition string
  1559. var pars []interface{}
  1560. condition = " "
  1561. calendarMeetingUserList, e := roadshow.GetRsCalendarMeetingUserList(condition+" ORDER BY rs.start_date ASC ", pars)
  1562. if e != nil {
  1563. fmt.Println(e)
  1564. return
  1565. }
  1566. var rsCalendarIds []int
  1567. for _, v := range calendarMeetingUserList {
  1568. rsCalendarIds = append(rsCalendarIds, v.RsCalendarId)
  1569. }
  1570. var mobiles []string
  1571. mapMobile := make(map[string]bool)
  1572. for _, v := range calendarMeetingUserList {
  1573. if mapMobile[v.Mobile] || v.Mobile == "" {
  1574. continue
  1575. }
  1576. mapMobile[v.Mobile] = true
  1577. mobiles = append(mobiles, v.Mobile)
  1578. }
  1579. RsCalendarListInit, e := roadshow.GetRsCalendarListInit(rsCalendarIds)
  1580. if e != nil {
  1581. fmt.Println(e)
  1582. return
  1583. }
  1584. mapRoadshowType := make(map[int]int)
  1585. for _, v := range RsCalendarListInit {
  1586. if v.RoadshowType == "线下" {
  1587. mapRoadshowType[v.RsCalendarId] = 3
  1588. } else {
  1589. mapRoadshowType[v.RsCalendarId] = 5
  1590. }
  1591. }
  1592. listUser, err := models.GetWxUserListByMobileArr(mobiles)
  1593. if err != nil {
  1594. fmt.Println(err)
  1595. return
  1596. }
  1597. mapUser := make(map[string]*models.WxUserItem)
  1598. for _, v := range listUser {
  1599. mapUser[v.Mobile] = v
  1600. }
  1601. var items []*models.WxUserRaiLabelLog
  1602. for _, v := range calendarMeetingUserList {
  1603. if mapUser[v.Mobile] == nil || v.Mobile == "" {
  1604. continue
  1605. }
  1606. wxUser := mapUser[v.Mobile]
  1607. var sourceType int
  1608. sourceType = mapRoadshowType[v.RsCalendarId]
  1609. totalGroup, e := roadshow.GetRsCalendarMeetingLabelGroupByRsCalendarId(v.RsCalendarId)
  1610. if e != nil {
  1611. err = errors.New("GetRsCalendarMeetingLabelGroupByRsCalendarId" + e.Error())
  1612. return
  1613. }
  1614. //var lebelDetail []*cygx.RaiServeTagResp
  1615. var label string
  1616. var labelArr []string
  1617. if totalGroup > 0 {
  1618. listGroup, e := roadshow.GetRsCalendarMeetingLabelGroupListByRsCalendarId(v.RsCalendarId)
  1619. if e != nil {
  1620. err = errors.New("GetRsCalendarMeetingLabelGroupByRsCalendarId" + e.Error())
  1621. return
  1622. }
  1623. var industrialManagementIds []int
  1624. var industrialSubjectIds []int
  1625. mapindustrialManagementName := make(map[int]string)
  1626. mapindustrialSubjectName := make(map[int]string)
  1627. mapCelueName := make(map[int]string)
  1628. for _, vG := range listGroup {
  1629. switch vG.TagType {
  1630. case 1:
  1631. industrialManagementIds = append(industrialManagementIds, vG.TagId)
  1632. case 2:
  1633. industrialSubjectIds = append(industrialSubjectIds, vG.TagId)
  1634. case 3:
  1635. mapCelueName[vG.TagId] = "策略"
  1636. }
  1637. }
  1638. if len(industrialManagementIds) > 0 {
  1639. IndustryList, e := models.GetIndustryListByConditionByIds(industrialManagementIds)
  1640. if e != nil {
  1641. err = errors.New("GetRsCalendarMeetingLabelGroupByRsCalendarId" + e.Error())
  1642. return
  1643. }
  1644. for _, vI := range IndustryList {
  1645. mapindustrialManagementName[vI.IndustrialManagementId] = vI.IndustryName
  1646. }
  1647. }
  1648. if len(industrialSubjectIds) > 0 {
  1649. SubjectList, e := models.GetIndustrialSubjectDetailByIds(industrialSubjectIds)
  1650. if e != nil {
  1651. err = errors.New("GetIndustrialSubjectDetailByIds" + e.Error())
  1652. return
  1653. }
  1654. for _, vS := range SubjectList {
  1655. mapindustrialSubjectName[vS.IndustrialSubjectId] = vS.SubjectName
  1656. }
  1657. }
  1658. for _, vG := range listGroup {
  1659. switch vG.TagType {
  1660. case 1:
  1661. label = mapindustrialManagementName[vG.TagId]
  1662. case 2:
  1663. label = mapindustrialSubjectName[vG.TagId]
  1664. case 3:
  1665. label = mapCelueName[vG.TagId]
  1666. }
  1667. item := new(models.WxUserRaiLabelLog)
  1668. item.UserId = wxUser.UserId
  1669. item.RealName = wxUser.RealName
  1670. item.Mobile = wxUser.Mobile
  1671. item.Email = wxUser.Email
  1672. item.CompanyId = wxUser.CompanyId
  1673. item.CompanyName = wxUser.CompanyName
  1674. item.Label = label
  1675. item.SourceType = sourceType
  1676. item.SourceId = v.RsCalendarId
  1677. item.CreateTime = v.CreateTime
  1678. item.ModifyTime = time.Now()
  1679. //item.RegisterPlatform = log.RegisterPlatform
  1680. item.TableName = ""
  1681. items = append(items, item)
  1682. labelArr = append(labelArr, label)
  1683. }
  1684. }
  1685. }
  1686. fmt.Println("items", len(items))
  1687. var itemsAdd []*models.WxUserRaiLabelLog
  1688. if len(items) > 0 {
  1689. for _, v := range items {
  1690. itemsAdd = append(itemsAdd, v)
  1691. if len(items)%2000 == 0 {
  1692. err = models.AddWxUserRaiLabelLogMultiInit(items)
  1693. if err != nil {
  1694. return
  1695. }
  1696. itemsAdd = make([]*models.WxUserRaiLabelLog, 0)
  1697. }
  1698. }
  1699. }
  1700. if len(itemsAdd) > 0 {
  1701. err = models.AddWxUserRaiLabelLogMultiInit(itemsAdd)
  1702. if err != nil {
  1703. return
  1704. }
  1705. }
  1706. fmt.Println("endAddWxUserRaiLabelLogMultiInit")
  1707. }
  1708. func initCrm16_5wx_user_rai_label() {
  1709. listAll, err := models.GetWxUserRaiLabelLogAll()
  1710. if err != nil {
  1711. fmt.Println(err)
  1712. return
  1713. }
  1714. mapMobileLabel := make(map[string]bool)
  1715. var items []*models.WxUserRaiLabel
  1716. for _, v := range listAll {
  1717. if mapMobileLabel[fmt.Sprint(v.Mobile, "__", v.Label)] {
  1718. continue
  1719. }
  1720. item := new(models.WxUserRaiLabel)
  1721. item.UserId = v.UserId
  1722. item.RealName = v.RealName
  1723. item.Mobile = v.Mobile
  1724. item.Email = v.Email
  1725. item.CompanyId = v.CompanyId
  1726. item.CompanyName = v.CompanyName
  1727. item.Label = v.Label
  1728. item.SourceId = v.SourceId
  1729. item.SourceType = v.SourceType
  1730. item.CreateTime = v.CreateTime
  1731. item.ModifyTime = v.ModifyTime
  1732. item.RegisterPlatform = v.RegisterPlatform
  1733. item.TableName = v.TableName
  1734. items = append(items, item)
  1735. mapMobileLabel[fmt.Sprint(v.Mobile, "__", v.Label)] = true
  1736. }
  1737. var itemsAdd []*models.WxUserRaiLabel
  1738. if len(items) > 0 {
  1739. for _, v := range items {
  1740. itemsAdd = append(itemsAdd, v)
  1741. if len(itemsAdd)%2000 == 0 {
  1742. err = models.AddWxUserRaiLabelMultiInit(itemsAdd)
  1743. if err != nil {
  1744. return
  1745. }
  1746. itemsAdd = make([]*models.WxUserRaiLabel, 0)
  1747. }
  1748. }
  1749. }
  1750. if len(itemsAdd) > 0 {
  1751. err = models.AddWxUserRaiLabelMultiInit(itemsAdd)
  1752. if err != nil {
  1753. return
  1754. }
  1755. }
  1756. fmt.Println("end initCrm16_5wx_user_rai_label")
  1757. }