123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300 |
- 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)
- }
|