rai_company_user_bill.go 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630
  1. package services
  2. import (
  3. "context"
  4. "errors"
  5. "fmt"
  6. "hongze/hongze_cygx/models"
  7. "hongze/hongze_cygx/models/company"
  8. "hongze/hongze_cygx/models/rai_serve"
  9. "hongze/hongze_cygx/models/roadshow"
  10. "hongze/hongze_cygx/utils"
  11. "strings"
  12. "time"
  13. )
  14. //func init() {
  15. // UpdateCygxRaiCompanyUserBillDate()
  16. //}
  17. // 权益正式,试用客户近四周互动记录
  18. func UpdateCygxRaiCompanyUserBillDate(cont context.Context) (err error) {
  19. //func UpdateCygxRaiCompanyUserBillDate() (err error) {
  20. defer func() {
  21. if err != nil {
  22. fmt.Println(err)
  23. go utils.SendAlarmMsg(fmt.Sprint("定时任务处理权权益正式,试用客户近四周互动记录 失败 UpdateCygxRaiCompanyUserBillDate ,err:", err.Error()), 2)
  24. }
  25. }()
  26. err = UpdateCygxRaiCompanyUserBill() // 处理共享机构信息
  27. if err != nil {
  28. return
  29. }
  30. err = UpdateCompanyProductIsUserMaker() // 处理个人流水记录
  31. if err != nil {
  32. return
  33. }
  34. return
  35. }
  36. // 批量更新权益正式,试用客户近四周互动记录
  37. func UpdateCygxRaiCompanyUserBill() (err error) {
  38. defer func() {
  39. if err != nil {
  40. fmt.Println(err)
  41. go utils.SendAlarmMsg("批量更新权益正式,试用客户近四周互动记录 失败: UpdateCygxRaiCompanyUserBill Err"+err.Error(), 2)
  42. }
  43. }()
  44. var delBillIds []int
  45. var startWeekDate = time.Now().AddDate(0, 0, -28).Format(utils.FormatDate) + " 23:59:59"
  46. fmt.Println("UpdateCygxRaiCompanyUserBill start")
  47. companyList, e := company.GetRaiCompanyProductCompanyids()
  48. if e != nil {
  49. err = errors.New("GetCygxRaiServeCompanyAllList, Err: " + e.Error())
  50. return
  51. }
  52. var companyIds []int
  53. var items []*rai_serve.CygxRaiCompanyUserBill
  54. for _, v := range companyList {
  55. companyIds = append(companyIds, v.CompanyId)
  56. }
  57. lencompanyId := len(companyIds)
  58. listisMakeruser, e := models.GetWxUserisMakerByCompanyIds(companyIds)
  59. if e != nil {
  60. err = errors.New("GetWxUserisMakerByCompanyIds, Err: " + e.Error())
  61. return
  62. }
  63. mapUserMaker := make(map[int]bool)
  64. mapUserMobileUserId := make(map[string]int)
  65. for _, v := range listisMakeruser {
  66. mapUserMaker[v.UserId] = true
  67. mapUserMobileUserId[v.Mobile] = v.UserId
  68. }
  69. var condition string
  70. var pars []interface{}
  71. condition = " AND company_id IN (" + utils.GetOrmInReplace(lencompanyId) + ") AND create_time > ? "
  72. pars = append(pars, companyIds, startWeekDate)
  73. fmt.Println("startWeekDate", startWeekDate)
  74. //研选专栏阅读记录内容
  75. {
  76. listYanxuanSpecialRecord, e := models.GetCygxYanxuanSpecialRecordRespListAll(condition+" GROUP BY user_id, yanxuan_special_id ORDER BY create_time ASC ", pars)
  77. if e != nil {
  78. err = errors.New("GetCygxYanxuanSpecialRecordRespListAll, Err: " + e.Error())
  79. return
  80. }
  81. var yanxuanspecialIds []int
  82. for _, v := range listYanxuanSpecialRecord {
  83. yanxuanspecialIds = append(yanxuanspecialIds, v.YanxuanSpecialId)
  84. }
  85. var conditionYanxuanSpecial string
  86. var parsYanxuanSpecial []interface{}
  87. conditionYanxuanSpecial += ` AND id IN (` + utils.GetOrmInReplace(len(yanxuanspecialIds)) + `) `
  88. parsYanxuanSpecial = append(parsYanxuanSpecial, yanxuanspecialIds)
  89. listYanxuanSpecial, e := models.GetYanxuanSpecialListBycondition(conditionYanxuanSpecial, parsYanxuanSpecial, 0, len(yanxuanspecialIds))
  90. if e != nil && e.Error() != utils.ErrNoRow() {
  91. err = errors.New("GetYanxuanSpecialListBycondition, Err: " + e.Error())
  92. return
  93. }
  94. mapYanxuanSpecialTitle := make(map[int]string)
  95. for _, v := range listYanxuanSpecial {
  96. mapYanxuanSpecialTitle[v.Id] = v.Title
  97. }
  98. //研选阅读明细
  99. var conditionBill string
  100. var parsBill []interface{}
  101. conditionBill = " AND source = 'yanxuanspecial' AND company_id IN (" + utils.GetOrmInReplace(lencompanyId) + ") AND view_time > ? "
  102. parsBill = append(parsBill, companyIds, startWeekDate)
  103. listBillByYanxuanspecial, e := rai_serve.GetCygxRaiCompanyUserBillListAll(conditionBill, parsBill)
  104. if e != nil {
  105. err = errors.New("GetCygxRaiCompanyUserBillListAll, Err: " + e.Error())
  106. return
  107. }
  108. mapYanxuanspecialBill := make(map[string]bool)
  109. for _, v := range listBillByYanxuanspecial {
  110. mapYanxuanspecialBill[fmt.Sprint("UID_", v.UserId, "SID_", v.SourceId)] = true
  111. }
  112. for _, v := range listYanxuanSpecialRecord {
  113. if mapYanxuanspecialBill[fmt.Sprint("UID_", v.UserId, "SID_", v.YanxuanSpecialId)] { // 如果内容存在就不插入
  114. continue
  115. }
  116. item := new(rai_serve.CygxRaiCompanyUserBill)
  117. item.Content = mapYanxuanSpecialTitle[v.YanxuanSpecialId]
  118. item.ServeTypeId = 5
  119. item.ServeTypeName = "阅读uv"
  120. item.UserId = v.UserId
  121. item.Mobile = v.Mobile
  122. item.Email = v.Email
  123. item.CompanyId = v.CompanyId
  124. item.CompanyName = v.CompanyName
  125. item.RealName = v.RealName
  126. item.RegisterPlatform = v.RegisterPlatform
  127. item.ServeCount = 0.5
  128. if mapUserMaker[v.UserId] {
  129. item.IsKp = 1
  130. item.ServeCount = item.ServeCount * 3
  131. }
  132. item.SourceId = v.YanxuanSpecialId
  133. item.Source = utils.CYGX_OBJ_YANXUANSPECIAL
  134. item.CreateTime = time.Now()
  135. item.ViewTime = v.CreateTime
  136. item.WeekStartDate, item.WeekEndDate = utils.GetMondayAndSundayByTimeString(item.ViewTime)
  137. items = append(items, item)
  138. }
  139. }
  140. //研选专栏阅读记录内容end
  141. //文章阅读记录内容
  142. {
  143. listArticleRecord, e := models.GetCygxArticleHistoryRecordAllListNoLimit(condition+" GROUP BY user_id, article_id ORDER BY create_time ASC ", pars)
  144. if e != nil {
  145. err = errors.New("GetCygxArticleHistoryRecordAllListNoLimit, Err: " + e.Error())
  146. return
  147. }
  148. //文章阅读明细
  149. var conditionBill string
  150. var parsBill []interface{}
  151. conditionBill = " AND source = 'article' AND company_id IN (" + utils.GetOrmInReplace(lencompanyId) + ") AND view_time > ? "
  152. parsBill = append(parsBill, companyIds, startWeekDate)
  153. listBillByArticle, e := rai_serve.GetCygxRaiCompanyUserBillListAll(conditionBill, parsBill)
  154. if e != nil {
  155. err = errors.New("GetCygxRaiServeBillListAll, Err: " + e.Error())
  156. return
  157. }
  158. mapArticleBill := make(map[string]bool)
  159. for _, v := range listBillByArticle {
  160. mapArticleBill[fmt.Sprint("UID_", v.UserId, "SID_", v.SourceId)] = true
  161. }
  162. //部分数据来源没有存用户姓名,重新查一下
  163. var userIds []int
  164. for _, v := range listArticleRecord {
  165. userIds = append(userIds, v.UserId)
  166. }
  167. ListUser, e := models.GetWxUserListByUserIdsArr(userIds)
  168. if e != nil {
  169. err = errors.New("GetWxUserListByUserIdsArr, Err: " + e.Error())
  170. return
  171. }
  172. mapUserName := make(map[int]string)
  173. for _, v := range ListUser {
  174. mapUserName[v.UserId] = v.RealName
  175. }
  176. for _, v := range listArticleRecord {
  177. if mapArticleBill[fmt.Sprint("UID_", v.UserId, "SID_", v.ArticleId)] { // 如果内容存在就不插入
  178. continue
  179. }
  180. item := new(rai_serve.CygxRaiCompanyUserBill)
  181. item.Content = v.Title
  182. item.ServeTypeId = 5
  183. item.ServeTypeName = "阅读uv"
  184. item.UserId = v.UserId
  185. item.Mobile = v.Mobile
  186. item.Email = v.Email
  187. item.CompanyId = v.CompanyId
  188. item.CompanyName = v.CompanyName
  189. item.RealName = mapUserName[v.UserId]
  190. item.RegisterPlatform = v.RegisterPlatform
  191. item.ServeCount = 0.5
  192. if mapUserMaker[v.UserId] {
  193. item.IsKp = 1
  194. item.ServeCount = item.ServeCount * 3
  195. }
  196. item.SourceId = v.ArticleId
  197. item.Source = utils.CYGX_OBJ_ARTICLE
  198. item.CreateTime = time.Now()
  199. item.ViewTime = v.CreateTime
  200. item.WeekStartDate, item.WeekEndDate = utils.GetMondayAndSundayByTimeString(item.ViewTime)
  201. if strings.Contains(v.CategoryName, "固收") {
  202. item.ChartPermissionName = utils.GU_SHOU_NAME
  203. item.ChartPermissionId = utils.GU_SHOU_ID_CHART
  204. }
  205. if strings.Contains(v.CategoryName, "策略") {
  206. item.ChartPermissionName = utils.CE_LUE_NAME
  207. item.ChartPermissionId = utils.CE_LUE_ID
  208. }
  209. items = append(items, item)
  210. }
  211. }
  212. //文章阅读记录内容 end
  213. //活动记录内容
  214. {
  215. condition = " AND art.company_id IN (" + utils.GetOrmInReplace(lencompanyId) + ") AND a.activity_time > ? "
  216. signUpDetailList, e := models.GetSignupDetailBySignupjoinactivity(condition+" ORDER BY a.activity_time ASC ", pars)
  217. if e != nil {
  218. err = errors.New("GetSignupDetailBySignupjoinactivity, Err: " + e.Error())
  219. return
  220. }
  221. //文章阅读明细
  222. var conditionBill string
  223. var parsBill []interface{}
  224. conditionBill = " AND source = 'activity' AND company_id IN (" + utils.GetOrmInReplace(lencompanyId) + ") AND view_time > ? "
  225. parsBill = append(parsBill, companyIds, startWeekDate)
  226. listBillByActivity, e := rai_serve.GetCygxRaiCompanyUserBillListAll(conditionBill, parsBill)
  227. if e != nil {
  228. err = errors.New("GetCygxRaiCompanyUserBillListAll, Err: " + e.Error())
  229. return
  230. }
  231. mapActivityeBill := make(map[string]bool)
  232. for _, v := range listBillByActivity {
  233. mapActivityeBill[fmt.Sprint("UID_", v.UserId, "SID_", v.SourceId)] = true
  234. }
  235. mapArticleBillDel := make(map[string]bool)
  236. for _, v := range signUpDetailList {
  237. mapArticleBillDel[fmt.Sprint("UID_", v.UserId, "SID_", v.ActivityId)] = true
  238. }
  239. mapDelActivityBillDel := make(map[string]bool)
  240. for _, v := range signUpDetailList {
  241. mapDelActivityBillDel[fmt.Sprint("UID_", v.UserId, "SID_", v.ActivityId)] = true
  242. }
  243. for _, v := range listBillByActivity {
  244. if !mapDelActivityBillDel[fmt.Sprint("UID_", v.UserId, "SID_", v.SourceId)] { // 如果内容存在就插入删除ID中
  245. delBillIds = append(delBillIds, v.BillId)
  246. }
  247. }
  248. for _, v := range signUpDetailList {
  249. if mapActivityeBill[fmt.Sprint("UID_", v.UserId, "SID_", v.ActivityId)] { // 如果内容存在就不插入
  250. continue
  251. }
  252. item := new(rai_serve.CygxRaiCompanyUserBill)
  253. item.Content = v.ActivityName
  254. if v.ActivityType == 1 {
  255. item.ServeTypeId = 1
  256. item.ServeTypeName = "线上活动"
  257. } else {
  258. item.ServeTypeId = 2
  259. item.ServeTypeName = "线下活动"
  260. }
  261. if v.UserId == 0 && v.Mobile != "" {
  262. v.UserId = mapUserMobileUserId[v.Mobile] // 空降的部分联系人 userid 为0这里做一下修复
  263. }
  264. item.UserId = v.UserId
  265. item.Mobile = v.Mobile
  266. item.Email = v.Email
  267. item.CompanyId = v.CompanyId
  268. item.CompanyName = v.CompanyName
  269. item.RealName = v.RealName
  270. //item.RegisterPlatform = v.RegisterPlatform
  271. item.ServeCount = 1
  272. if mapUserMaker[v.UserId] {
  273. item.IsKp = 1
  274. item.ServeCount = item.ServeCount * 3
  275. }
  276. item.SourceId = v.ActivityId
  277. item.Source = utils.CYGX_OBJ_ACTIVITY
  278. item.CreateTime = time.Now()
  279. item.ViewTime = v.ActivityTime
  280. item.ChartPermissionName = v.ChartPermissionName
  281. item.ChartPermissionId = v.ChartPermissionId
  282. item.WeekStartDate, item.WeekEndDate = utils.GetMondayAndSundayByTimeString(item.ViewTime)
  283. items = append(items, item)
  284. }
  285. }
  286. //活动记录内容 end
  287. //专项调研活动记录内容
  288. {
  289. condition = " AND art.company_id IN (" + utils.GetOrmInReplace(lencompanyId) + ") AND a.activity_time > ? "
  290. activitySpecialList, e := models.GetCygxActivitySpecialMeetingDetailList(condition+" ORDER BY a.activity_time ASC ", pars)
  291. if e != nil {
  292. err = errors.New("GetCygxActivitySpecialMeetingDetailList, Err: " + e.Error())
  293. return
  294. }
  295. //专项调研活动明细
  296. var conditionBill string
  297. var parsBill []interface{}
  298. conditionBill = " AND source = 'activityspecial' AND company_id IN (" + utils.GetOrmInReplace(lencompanyId) + ") AND view_time > ? "
  299. parsBill = append(parsBill, companyIds, startWeekDate)
  300. listBillByActivitySpecial, e := rai_serve.GetCygxRaiCompanyUserBillListAll(conditionBill, parsBill)
  301. if e != nil {
  302. err = errors.New("GetCygxRaiCompanyUserBillListAll, Err: " + e.Error())
  303. return
  304. }
  305. mapActivitySpecial := make(map[string]bool)
  306. for _, v := range listBillByActivitySpecial {
  307. mapActivitySpecial[fmt.Sprint("UID_", v.UserId, "SID_", v.SourceId)] = true
  308. }
  309. mapDelActivitySpecial := make(map[string]bool)
  310. for _, v := range activitySpecialList {
  311. mapDelActivitySpecial[fmt.Sprint("UID_", v.UserId, "SID_", v.ActivityId)] = true
  312. }
  313. for _, v := range listBillByActivitySpecial {
  314. if !mapDelActivitySpecial[fmt.Sprint("UID_", v.UserId, "SID_", v.SourceId)] { // 如果内容存在就插入删除ID中
  315. delBillIds = append(delBillIds, v.BillId)
  316. }
  317. }
  318. for _, v := range activitySpecialList {
  319. if mapActivitySpecial[fmt.Sprint("UID_", v.UserId, "SID_", v.ActivityId)] { // 如果内容存在就不插入
  320. continue
  321. }
  322. item := new(rai_serve.CygxRaiCompanyUserBill)
  323. item.Content = v.ResearchTheme
  324. item.ServeTypeId = 3
  325. item.ServeTypeName = "专项调研"
  326. item.UserId = v.UserId
  327. item.Mobile = v.Mobile
  328. item.Email = v.Email
  329. item.CompanyId = v.CompanyId
  330. item.CompanyName = v.CompanyName
  331. item.RealName = v.RealName
  332. //item.RegisterPlatform = v.RegisterPlatform
  333. item.ServeCount = 1
  334. if mapUserMaker[v.UserId] {
  335. item.IsKp = 1
  336. item.ServeCount = item.ServeCount * 3
  337. }
  338. item.SourceId = v.ActivityId
  339. item.Source = utils.CYGX_OBJ_ACTIVITYSPECIAL
  340. item.CreateTime = time.Now()
  341. item.ViewTime = v.ActivityTime
  342. item.ChartPermissionName = v.ChartPermissionName
  343. item.ChartPermissionId = v.ChartPermissionId
  344. item.WeekStartDate, item.WeekEndDate = utils.GetMondayAndSundayByTimeString(item.ViewTime)
  345. items = append(items, item)
  346. }
  347. }
  348. //专项调研活动记录内容 end
  349. //1v1路演
  350. {
  351. condition = " AND art.company_id IN (" + utils.GetOrmInReplace(lencompanyId) + ") AND rs.start_date > ? "
  352. calendarMeetingUserList, e := roadshow.GetRsCalendarMeetingUserList(condition+" ORDER BY rs.start_date ASC ", pars)
  353. if e != nil {
  354. err = errors.New("GetRsCalendarMeetingUserList, Err: " + e.Error())
  355. return
  356. }
  357. var rsCalendarIds []int
  358. for _, v := range calendarMeetingUserList {
  359. rsCalendarIds = append(rsCalendarIds, v.RsCalendarId)
  360. }
  361. //获取研究员信息
  362. researchers, e := roadshow.GetRsCalendarResearcherListByIds(rsCalendarIds)
  363. if e != nil {
  364. err = errors.New("GetRsCalendarResearcherListByIds, Err: " + e.Error())
  365. return
  366. }
  367. mapResearcherName := make(map[int][]string)
  368. for _, v := range researchers {
  369. mapResearcherName[v.RsCalendarId] = append(mapResearcherName[v.RsCalendarId], v.ResearcherName)
  370. }
  371. listEmail, e := models.GetAskEmail()
  372. if e != nil {
  373. err = errors.New("GetAskEmail, Err: " + e.Error())
  374. return
  375. }
  376. var ceLueResearcherName []string
  377. var guShouResearcherName []string
  378. for _, v := range listEmail {
  379. if v.ChartPermissionName == utils.CE_LUE_NAME {
  380. ceLueResearcherName = append(ceLueResearcherName, v.Name)
  381. }
  382. if v.ChartPermissionName == utils.GU_SHOU_NAME {
  383. guShouResearcherName = append(guShouResearcherName, v.Name)
  384. }
  385. }
  386. //专项调研活动明细
  387. var conditionBill string
  388. var parsBill []interface{}
  389. conditionBill = " AND source = 'rscalendar' AND company_id IN (" + utils.GetOrmInReplace(lencompanyId) + ") AND view_time > ? "
  390. parsBill = append(parsBill, companyIds, startWeekDate)
  391. listBillByRscalendar, e := rai_serve.GetCygxRaiCompanyUserBillListAll(conditionBill, parsBill)
  392. if e != nil {
  393. err = errors.New("GetCygxRaiCompanyUserBillListAll, Err: " + e.Error())
  394. return
  395. }
  396. mapRscalendarBill := make(map[string]bool)
  397. for _, v := range listBillByRscalendar {
  398. mapRscalendarBill[fmt.Sprint("UID_", v.UserId, "SID_", v.SourceId)] = true
  399. }
  400. mapDelRscalendarBill := make(map[string]bool)
  401. for _, v := range calendarMeetingUserList {
  402. mapDelRscalendarBill[fmt.Sprint("UID_", v.UserId, "SID_", v.RsCalendarId)] = true
  403. }
  404. for _, v := range listBillByRscalendar {
  405. if !mapDelRscalendarBill[fmt.Sprint("UID_", v.UserId, "SID_", v.SourceId)] { // 如果内容存在就插入删除ID中
  406. delBillIds = append(delBillIds, v.BillId)
  407. }
  408. }
  409. for _, v := range calendarMeetingUserList {
  410. if mapRscalendarBill[fmt.Sprint("UID_", v.UserId, "SID_", v.RsCalendarId)] { // 如果内容存在就不插入
  411. continue
  412. }
  413. item := new(rai_serve.CygxRaiCompanyUserBill)
  414. item.Content = strings.Join(mapResearcherName[v.RsCalendarId], ",")
  415. item.ServeTypeId = 4
  416. item.ServeTypeName = "一对一路演"
  417. item.UserId = v.UserId
  418. item.Mobile = v.Mobile
  419. item.Email = v.Email
  420. item.CompanyId = v.CompanyId
  421. item.CompanyName = v.CompanyName
  422. item.RealName = v.RealName
  423. //item.RegisterPlatform = v.RegisterPlatform
  424. item.ServeCount = 1.5
  425. if mapUserMaker[v.UserId] {
  426. item.IsKp = 1
  427. item.ServeCount = item.ServeCount * 3
  428. }
  429. item.SourceId = v.RsCalendarId
  430. item.Source = utils.CYGX_OBJ_RS_CALENDAR
  431. item.CreateTime = time.Now()
  432. item.ViewTime = v.StartDate + " " + v.StartTime
  433. item.WeekStartDate, item.WeekEndDate = utils.GetMondayAndSundayByTimeString(item.ViewTime)
  434. if utils.InArrayByStr(guShouResearcherName, item.Content) {
  435. item.ChartPermissionName = utils.GU_SHOU_NAME
  436. item.ChartPermissionId = utils.GU_SHOU_ID_CHART
  437. }
  438. if utils.InArrayByStr(ceLueResearcherName, item.Content) {
  439. item.ChartPermissionName = utils.CE_LUE_NAME
  440. item.ChartPermissionId = utils.CE_LUE_ID
  441. }
  442. items = append(items, item)
  443. }
  444. }
  445. //1v1路演 end
  446. //交流反馈
  447. {
  448. condition = " AND company_id IN (" + utils.GetOrmInReplace(lencompanyId) + ") AND create_time > ? "
  449. userFeedbackList, e := rai_serve.GetCygxUserFeedbackList(condition+" ORDER BY user_feedback_id ASC ", pars)
  450. if e != nil {
  451. err = errors.New("GetCygxUserFeedbackList, Err: " + e.Error())
  452. return
  453. }
  454. //交流反馈明细
  455. var conditionBill string
  456. var parsBill []interface{}
  457. conditionBill = " AND source = 'userfeedback' AND company_id IN (" + utils.GetOrmInReplace(lencompanyId) + ") AND view_time > ? "
  458. parsBill = append(parsBill, companyIds, startWeekDate)
  459. listBillByuserFeedback, e := rai_serve.GetCygxRaiCompanyUserBillListAll(conditionBill, parsBill)
  460. if e != nil {
  461. err = errors.New("GetCygxRaiServeBillListAll, Err: " + e.Error())
  462. return
  463. }
  464. mapRscalendarBill := make(map[string]bool)
  465. for _, v := range listBillByuserFeedback {
  466. mapRscalendarBill[fmt.Sprint("UID_", v.UserId, "SID_", v.SourceId)] = true
  467. }
  468. mapDelRscalendarBill := make(map[string]bool)
  469. for _, v := range userFeedbackList {
  470. mapDelRscalendarBill[fmt.Sprint("UID_", v.UserId, "SID_", v.UserFeedbackId)] = true
  471. }
  472. for _, v := range listBillByuserFeedback {
  473. if !mapDelRscalendarBill[fmt.Sprint("UID_", v.UserId, "SID_", v.SourceId)] { // 如果内容存在就插入删除ID中
  474. delBillIds = append(delBillIds, v.BillId)
  475. }
  476. }
  477. for _, v := range userFeedbackList {
  478. if mapRscalendarBill[fmt.Sprint("UID_", v.UserId, "SID_", v.UserFeedbackId)] { // 如果内容存在就不插入
  479. continue
  480. }
  481. item := new(rai_serve.CygxRaiCompanyUserBill)
  482. item.Content = v.Content
  483. item.ServeTypeId = 6
  484. item.ServeTypeName = "交流反馈"
  485. item.UserId = v.UserId
  486. item.Mobile = v.Mobile
  487. item.Email = v.Email
  488. item.CompanyId = v.CompanyId
  489. item.CompanyName = v.CompanyName
  490. item.RealName = v.RealName
  491. item.ServeCount = 1
  492. if mapUserMaker[v.UserId] {
  493. item.IsKp = 1
  494. item.ServeCount = item.ServeCount * 3
  495. }
  496. item.SourceId = v.UserFeedbackId
  497. item.Source = utils.CYGX_OBJ_USER_FEEDBACK
  498. item.CreateTime = time.Now()
  499. item.ViewTime = v.CreateTime
  500. item.WeekStartDate, item.WeekEndDate = utils.GetMondayAndSundayByTimeString(item.ViewTime)
  501. items = append(items, item)
  502. }
  503. }
  504. //交流反馈 end
  505. //fmt.Println("items", len(items))
  506. //return
  507. if len(items) > 0 {
  508. var itemsAdd []*rai_serve.CygxRaiCompanyUserBill
  509. for k, v := range items {
  510. itemsAdd = append(itemsAdd, v)
  511. if len(itemsAdd)%2000 == 0 {
  512. fmt.Println(k)
  513. e = rai_serve.AddCygxRaiCompanyUserBilllMulti(itemsAdd)
  514. if e != nil {
  515. err = errors.New("AddCygxRaiServeBillMulti, Err: " + e.Error())
  516. return
  517. }
  518. itemsAdd = make([]*rai_serve.CygxRaiCompanyUserBill, 0)
  519. }
  520. }
  521. e = rai_serve.AddCygxRaiCompanyUserBilllMulti(itemsAdd)
  522. if e != nil {
  523. err = errors.New("AddCygxRaiCompanyUserBilllMulti, Err: " + e.Error())
  524. return
  525. }
  526. }
  527. fmt.Println("delBillIds", (delBillIds))
  528. fmt.Println("UpdateCygxRaiCompanyUserBill end")
  529. return
  530. }
  531. // 更新权益客户最近四周是否有决策人互动记录
  532. func UpdateCompanyProductIsUserMaker() (err error) {
  533. defer func() {
  534. if err != nil {
  535. fmt.Println(err)
  536. go utils.SendAlarmMsg("更新权益客户最近四周是否有决策人互动记录 失败: UpdateCompanyProductIsUserMaker Err"+err.Error(), 2)
  537. }
  538. }()
  539. fmt.Println(" UpdateCompanyProductIsUserMaker start")
  540. now := time.Now()
  541. weeks := 3
  542. monday := now.AddDate(0, 0, -int(now.Weekday()-time.Monday)-weeks*7)
  543. startDate := monday.Format(utils.FormatDate)
  544. var condition string
  545. var pars []interface{}
  546. condition = ` AND week_start_date >= ? AND is_kp = 1 GROUP BY company_id `
  547. pars = append(pars, startDate)
  548. //获取近四周之内含有KP的公司
  549. listKpCompanyId, e := rai_serve.GetCygxRaiCompanyUserBillListAll(condition, pars)
  550. if e != nil {
  551. err = errors.New("GetCygxRaiCompanyUserBillListAll, Err: " + e.Error())
  552. return
  553. }
  554. var companyIds []int
  555. for _, v := range listKpCompanyId {
  556. companyIds = append(companyIds, v.CompanyId)
  557. }
  558. companyIds = append(companyIds, 0)
  559. //if len(companyIds) == 0 {
  560. // return
  561. //}
  562. //fmt.Println(len(companyIds))
  563. e = company.UpdateRaiCompanyProductIsUserMakerByCompanyids(companyIds)
  564. if e != nil {
  565. err = errors.New("UpdateRaiCompanyProductIsUserMakerByCompanyids, Err: " + e.Error())
  566. return
  567. }
  568. fmt.Println(" UpdateCompanyProductIsUserMaker end")
  569. return
  570. }