package services import ( "encoding/json" "fmt" "hongze/hz_eta_api/models" "hongze/hz_eta_api/models/company" "hongze/hz_eta_api/services/alarm_msg" "hongze/hz_eta_api/utils" "time" ) func GetProductId(roleTypeCode string) (productId int) { if roleTypeCode == utils.ROLE_TYPE_CODE_FICC_SELLER || roleTypeCode == utils.ROLE_TYPE_CODE_FICC_ADMIN || roleTypeCode == utils.ROLE_TYPE_CODE_FICC_TEAM || roleTypeCode == utils.ROLE_TYPE_CODE_FICC_GROUP || roleTypeCode == utils.ROLE_TYPE_CODE_FICC_DEPARTMENT { productId = 1 } else if roleTypeCode == utils.ROLE_TYPE_CODE_RAI_SELLER || roleTypeCode == utils.ROLE_TYPE_CODE_RAI_ADMIN || roleTypeCode == utils.ROLE_TYPE_CODE_RAI_GROUP || roleTypeCode == utils.ROLE_TYPE_CODE_RAI_DEPARTMENT { productId = 2 } else { productId = 0 } return } // GetFiccLastUserViewHistoryByCompanyIds 根据客户id集合map获取ficc最后一次阅读时间 func GetFiccLastUserViewHistoryByCompanyIds(companyIdStr string) (companyViewTime map[int]time.Time, err error) { //user_view_record mobile companyViewTime = make(map[int]time.Time) userViewList, err := models.GetLastUserViewHistoryByCompanyIdsMobile(companyIdStr) if err != nil { return } for _, userView := range userViewList { companyViewTime[userView.CompanyId] = userView.ViewTime } //user_view_record email userViewList, err = models.GetLastUserViewHistoryByCompanyIdsEmail(companyIdStr) if err != nil { return } checkLastTime(companyViewTime, userViewList) //AdvisoryArticleViewRecord mobile userViewList, err = models.GetLastAdvisoryArticleViewRecordByCompanyIdsMobile(companyIdStr) if err != nil { return } checkLastTime(companyViewTime, userViewList) //AdvisoryArticleViewRecord email userViewList, err = models.GetLastAdvisoryArticleViewRecordByCompanyIdsEmail(companyIdStr) if err != nil { return } checkLastTime(companyViewTime, userViewList) //ReportViewRecord mobile userViewList, err = models.GetLastReportViewRecordByCompanyIdsMobile(companyIdStr) if err != nil { return } checkLastTime(companyViewTime, userViewList) //ReportViewRecord email userViewList, err = models.GetLastReportViewRecordByCompanyIdsEmail(companyIdStr) if err != nil { return } checkLastTime(companyViewTime, userViewList) //UserViewStatistics mobile userViewList, err = models.GetLastUserViewStatisticsByCompanyIdsMobile(companyIdStr) if err != nil { return } checkLastTime(companyViewTime, userViewList) //UserViewStatistics email userViewList, err = models.GetLastUserViewStatisticsByCompanyIdsEmail(companyIdStr) if err != nil { return } checkLastTime(companyViewTime, userViewList) return } // GetRaiLastUserViewHistoryByCompanyIds 根据客户id集合map获取权益最后一次阅读时间 func GetRaiLastUserViewHistoryByCompanyIds(companyIdStr string) (companyViewTime map[int]time.Time, err error) { //CygxArticleViewRecord mobile companyViewTime = make(map[int]time.Time) userViewList, err := models.GetLastCygxArticleViewRecordByCompanyIdsMobile(companyIdStr) if err != nil { return } for _, userView := range userViewList { companyViewTime[userView.CompanyId] = userView.ViewTime } //CygxArticleViewRecord email userViewList, err = models.GetLastCygxArticleViewRecordByCompanyIdsEmail(companyIdStr) if err != nil { return } checkLastTime(companyViewTime, userViewList) return } // checkLastTime 检测最后的时间并重新赋值 func checkLastTime(companyViewTime map[int]time.Time, userViewList []*models.CompanyLastViewSlice) { for _, userView := range userViewList { if viewTime, ok := companyViewTime[userView.CompanyId]; ok { if userView.ViewTime.After(viewTime) { //如果当前时间晚于 map中的时间,那么重新赋值 companyViewTime[userView.CompanyId] = userView.ViewTime } } else { //如果没有数据,那么直接赋值 companyViewTime[userView.CompanyId] = userView.ViewTime } } return } // GetFiccCountUserViewHistoryByCompanyIds 根据客户id集合map获取ficc的阅读次数 func GetFiccCountUserViewHistoryByCompanyIds(companyIdStr string) (companyViewTotal map[int]int, err error) { //user_view_record mobile companyViewTotal = make(map[int]int) userViewList, err := models.GetCountUserViewHistoryByCompanyIdsMobile(companyIdStr) if err != nil { return } for _, userView := range userViewList { companyViewTotal[userView.CompanyId] = userView.ViewTotal } userViewList, err = models.GetCountUserViewHistoryByCompanyIdsEmail(companyIdStr) if err != nil { return } checkCount(companyViewTotal, userViewList) //AdvisoryArticleViewRecord mobile userViewList, err = models.GetCountAdvisoryArticleViewRecordByCompanyIdsMobile(companyIdStr) if err != nil { return } checkCount(companyViewTotal, userViewList) //AdvisoryArticleViewRecord email userViewList, err = models.GetCountAdvisoryArticleViewRecordByCompanyIdsEmail(companyIdStr) if err != nil { return } checkCount(companyViewTotal, userViewList) //ReportViewRecord mobile userViewList, err = models.GetCountReportViewRecordByCompanyIdsMobile(companyIdStr) if err != nil { return } checkCount(companyViewTotal, userViewList) //ReportViewRecord email userViewList, err = models.GetCountReportViewRecordByCompanyIdsEmail(companyIdStr) if err != nil { return } checkCount(companyViewTotal, userViewList) //UserViewStatistics mobile userViewList, err = models.GetUserViewStatisticsByCompanyIdsMobile(companyIdStr) if err != nil { return } checkCount(companyViewTotal, userViewList) //UserViewStatistics email userViewList, err = models.GetUserViewStatisticsByCompanyIdsEmail(companyIdStr) if err != nil { return } checkCount(companyViewTotal, userViewList) return } // GetRaiCountUserViewHistoryByCompanyIds 根据客户id集合map获取权益的阅读次数 func GetRaiCountUserViewHistoryByCompanyIds(companyIdStr string) (companyViewTotal map[int]int, err error) { //CygxArticleViewRecord mobile companyViewTotal = make(map[int]int) userViewList, err := models.GetCountCygxArticleViewRecordByCompanyIdsMobile(companyIdStr) if err != nil { return } for _, userView := range userViewList { companyViewTotal[userView.CompanyId] = userView.ViewTotal } //CygxArticleViewRecord email userViewList, err = models.GetCountCygxArticleViewRecordByCompanyIdsEmail(companyIdStr) if err != nil { return } checkCount(companyViewTotal, userViewList) return } func checkCount(companyViewTotal map[int]int, userViewList []*models.CompanyViewTotalSlice) { for _, userView := range userViewList { if viewTotal, ok := companyViewTotal[userView.CompanyId]; ok { companyViewTotal[userView.CompanyId] = viewTotal + userView.ViewTotal } else { //如果没有数据,那么直接赋值 companyViewTotal[userView.CompanyId] = userView.ViewTotal } } return } // ModifyCompanyProductLastViewData 修改客户产品的总共阅读次数以及最近阅读时间 func ModifyCompanyProductLastViewData(companyIdList []int) (err error) { defer func() { if err != nil { go alarm_msg.SendAlarmMsg("修改客户产品的总共阅读次数以及最近阅读时间失败,"+fmt.Sprint("companyIdList:", companyIdList, ";err:", err), 3) //go utils.SendEmail("修改客户产品的总共阅读次数以及最近阅读时间失败", fmt.Sprint("companyIdList:", companyIdList, ";err:", err), utils.EmailSendToUsers) } }() companyIdStr := `` for _, companyId := range companyIdList { companyIdStr += fmt.Sprint(companyId, ",") } companyIdStr = companyIdStr[:len(companyIdStr)-1] companyFiccViewTotalMap, err := GetFiccCountUserViewHistoryByCompanyIds(companyIdStr) if err != nil { return } companyFiccLastViewMap, err := GetFiccLastUserViewHistoryByCompanyIds(companyIdStr) if err != nil { return } companyRaiViewTotalMap, err := GetRaiCountUserViewHistoryByCompanyIds(companyIdStr) if err != nil { return } companyRaiLastViewMap, err := GetRaiLastUserViewHistoryByCompanyIds(companyIdStr) if err != nil { return } for _, companyId := range companyIdList { //ficc var companyFiccViewTotal int var companyFiccLastView time.Time var companyFiccLastViewStr string companyFiccViewTotal, _ = companyFiccViewTotalMap[companyId] companyFiccLastView, _ = companyFiccLastViewMap[companyId] if companyFiccLastView.IsZero() { companyFiccLastViewStr = "0000-00-00 00:00:00" } else { companyFiccLastViewStr = companyFiccLastView.Format(utils.FormatDateTime) } company.ModifyCompanyProductLastViewData(companyId, 1, companyFiccViewTotal, companyFiccLastViewStr) //权益 var companyRaiViewTotal int var companyRaiLastView time.Time var companyRaiLastViewStr string companyRaiViewTotal, _ = companyRaiViewTotalMap[companyId] companyRaiLastView, _ = companyRaiLastViewMap[companyId] if companyRaiLastView.IsZero() { companyRaiLastViewStr = "0000-00-00 00:00:00" } else { companyRaiLastViewStr = companyRaiLastView.Format(utils.FormatDateTime) } company.ModifyCompanyProductLastViewData(companyId, 2, companyRaiViewTotal, companyRaiLastViewStr) } return } // AddWxUserOpLog 记录新增用户的日志 func AddWxUserOpLog(wxUserOpLog company.WxUserOpLog) { userSellerRelationList, err := models.GetUserSellerRelationList(wxUserOpLog.UserId) if err != nil { return } userSellerRelationInfo, _ := json.Marshal(userSellerRelationList) wxUserOpLog.UserSellerInfo = string(userSellerRelationInfo) company.AddWxUserOpLog(&wxUserOpLog) }