|
@@ -1,6 +1,7 @@
|
|
|
package services
|
|
|
|
|
|
import (
|
|
|
+ "context"
|
|
|
"encoding/json"
|
|
|
"errors"
|
|
|
"fmt"
|
|
@@ -15,10 +16,60 @@ import (
|
|
|
|
|
|
//权益服务统计
|
|
|
|
|
|
+//上线跑的脚本
|
|
|
+//func initJob() {
|
|
|
+// UpdateRaiServeCompany() //1
|
|
|
+// UpdateCygxRaiServeBillByCompanyIds() //2
|
|
|
+// UpdateCygxRaiServeBillWeek() // 3
|
|
|
+// UpdateWeekAvg() // 4
|
|
|
+//}
|
|
|
+
|
|
|
+//func init() {
|
|
|
+// UpdateWeekAvg() //1
|
|
|
+//}
|
|
|
+
|
|
|
//func init() {
|
|
|
-// UpdateRaiServeCompany()
|
|
|
+// //UpdateRaiServeCompany() //1
|
|
|
+// //UpdateCygxRaiServeBillByCompanyIds() //2
|
|
|
+// //UpdateCygxRaiServeBillWeekTask() // 3
|
|
|
+// //UpdateWeekAvg() // 4
|
|
|
//}
|
|
|
|
|
|
+// 定时任务处理权益服务公司
|
|
|
+func UpdateRaiServeCompanyDate(cont context.Context) (err error) {
|
|
|
+ defer func() {
|
|
|
+ if err != nil {
|
|
|
+ fmt.Println(err)
|
|
|
+ go utils.SendAlarmMsg(fmt.Sprint("定时任务处理权益服务公司 失败 UpdateRaiServeCompanyDate ,err:", err.Error()), 2)
|
|
|
+ }
|
|
|
+ }()
|
|
|
+ err = UpdateRaiServeCompany()
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+// 定时任务处理权益服务记录明细
|
|
|
+func UpdateRaiServeBillDate(cont context.Context) (err error) {
|
|
|
+ defer func() {
|
|
|
+ if err != nil {
|
|
|
+ fmt.Println(err)
|
|
|
+ go utils.SendAlarmMsg(fmt.Sprint("定时任务处理权益服务公司 失败 UpdateRaiServeBillDate ,err:", err.Error()), 2)
|
|
|
+ }
|
|
|
+ }()
|
|
|
+ err = UpdateCygxRaiServeBillByCompanyIds() // 处理个人流水记录
|
|
|
+ if err != nil {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ err = UpdateCygxRaiServeBillWeekTask() // 更新周度服务明细
|
|
|
+ if err != nil {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ err = UpdateWeekAvg() //更新最近四周平均覆盖率,是否标红,权限,时间,金额
|
|
|
+ if err != nil {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
// 更新现有的权益服务客户数据
|
|
|
func UpdateRaiServeCompany() (err error) {
|
|
|
defer func() {
|
|
@@ -328,111 +379,6 @@ type RaiServeBillRedis struct {
|
|
|
ViewTime time.Time `comment:"浏览时间"`
|
|
|
}
|
|
|
|
|
|
-// 权益服务统计添加到Redis队列中
|
|
|
-func CygxRaiServeBillRedisAdd(content, source string, userId, comapnyId, sourceId, registerPlatform int, viewTime time.Time) (err error) {
|
|
|
- defer func() {
|
|
|
- if err != nil {
|
|
|
- fmt.Println(err)
|
|
|
- msg := fmt.Sprint("source:", source, "userId:", userId, "sourceId", sourceId)
|
|
|
- go utils.SendAlarmMsg("权益服务统计添加到Redis队列中,写入Redis队列消息失败 CygxRaiServeBillRedisAdd:"+err.Error()+msg, 2)
|
|
|
- }
|
|
|
- }()
|
|
|
- log := &rai_serve.RaiServeBillRedis{Content: content, Source: source, UserId: userId, ComapnyId: comapnyId, SourceId: sourceId, RegisterPlatform: registerPlatform, ViewTime: viewTime}
|
|
|
- if utils.Re == nil {
|
|
|
- err := utils.Rc.LPush(utils.CYGX_RAI_SERVE_BILL_KEY, log)
|
|
|
- if err != nil {
|
|
|
- fmt.Println("RaiServeBillRedis LPush Err:" + err.Error())
|
|
|
- }
|
|
|
- }
|
|
|
- return
|
|
|
-}
|
|
|
-
|
|
|
-// CygxRaiServeBillRedisAddReduce 处理权益服务统计
|
|
|
-func CygxRaiServeBillRedisAddReduce() (err error) {
|
|
|
- for {
|
|
|
- //SourceType int `description:"1:报名、 2:取消报名、3:活动编辑、4:活动发布,取消发布、5:活动到会。"`
|
|
|
- utils.Rc.Brpop(utils.CYGX_RAI_SERVE_BILL_KEY, func(b []byte) {
|
|
|
- var log rai_serve.RaiServeBillRedis
|
|
|
- if err := json.Unmarshal(b, &log); err != nil {
|
|
|
- fmt.Println("json unmarshal wrong!")
|
|
|
- go utils.SendAlarmMsg("处理权益服务统计Redis队列消息失败:"+err.Error()+string(b), 2)
|
|
|
- }
|
|
|
- //如果不是共享给 权益服务组的,则不处理
|
|
|
- taotalRaiServe, err := company.GetCompanyProductAaiServeCount(log.ComapnyId, utils.RAI_SERVE_GROUP_ID)
|
|
|
- if err != nil {
|
|
|
- go utils.SendAlarmMsg("处理权益服务统计Redis队列消息失败:GetCompanyProductAaiServeCount"+err.Error()+string(b), 2)
|
|
|
- }
|
|
|
- fmt.Println("taotaRaiServe", taotalRaiServe)
|
|
|
- if taotalRaiServe == 0 {
|
|
|
- return
|
|
|
- }
|
|
|
-
|
|
|
- //如果已经有记录了就不处理
|
|
|
- taotalSource, err := rai_serve.GetCygxRaiServeBillCountByUserAndSource(log.UserId, log.SourceId, log.Source)
|
|
|
- if err != nil {
|
|
|
- go utils.SendAlarmMsg("处理权益服务统计Redis队列消息失败:GetCygxRaiServeBillCountByUserAndSource"+err.Error()+string(b), 2)
|
|
|
- }
|
|
|
- if taotalSource > 0 {
|
|
|
- return
|
|
|
- }
|
|
|
- switch log.Source {
|
|
|
- case utils.CYGX_OBJ_YANXUANSPECIAL: //研选专栏阅读记录处理
|
|
|
- go RaiServeBillRedisAddReduceByYanxuanspecial(log)
|
|
|
- fmt.Println("研选专栏阅读记录处理")
|
|
|
- break
|
|
|
-
|
|
|
- default:
|
|
|
- fmt.Println(string(b))
|
|
|
- go utils.SendAlarmMsg("处理研选活动扣点处理Redis队列消息失败:"+string(b), 2)
|
|
|
- }
|
|
|
- })
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-// 处理权益服务统计->研选阅读记录
|
|
|
-func RaiServeBillRedisAddReduceByYanxuanspecial(log rai_serve.RaiServeBillRedis) (err error) {
|
|
|
- source := log.Source
|
|
|
- userId := log.UserId
|
|
|
- sourceId := log.SourceId
|
|
|
- defer func() {
|
|
|
- if err != nil {
|
|
|
- go utils.SendAlarmMsg("用户报名活动扣点,处理Redis队列消息失败:"+err.Error()+fmt.Sprint("source:", source, "userId:", userId, "sourceId", sourceId), 2)
|
|
|
- }
|
|
|
- }()
|
|
|
- wxUser, e := models.GetWxUserItemByUserId(userId)
|
|
|
- if e != nil {
|
|
|
- err = errors.New("GetWxUserItemByUserId, Err: " + e.Error())
|
|
|
- return
|
|
|
- }
|
|
|
- item := new(rai_serve.CygxRaiServeBill)
|
|
|
- item.Content = log.Content
|
|
|
- item.ServeTypeId = 5
|
|
|
- item.ServeTypeName = "阅读uv"
|
|
|
- item.UserId = wxUser.UserId
|
|
|
- item.Mobile = wxUser.Mobile
|
|
|
- item.Email = wxUser.Email
|
|
|
- item.CompanyId = wxUser.CompanyId
|
|
|
- item.CompanyName = wxUser.CompanyName
|
|
|
- item.RealName = wxUser.RealName
|
|
|
- item.RegisterPlatform = log.RegisterPlatform
|
|
|
- item.ServeCount = 0.5
|
|
|
-
|
|
|
- if wxUser.IsMaker == 1 {
|
|
|
- item.IsKp = wxUser.IsMaker
|
|
|
- item.ServeCount = item.ServeCount * 3
|
|
|
- }
|
|
|
- item.SourceId = log.SourceId
|
|
|
- item.Source = log.Source
|
|
|
- item.CreateTime = time.Now()
|
|
|
- item.ViewTime = log.ViewTime.Format(utils.FormatDateTime)
|
|
|
- err = rai_serve.AddCygxRaiServeBill(item)
|
|
|
- return
|
|
|
-}
|
|
|
-
|
|
|
-//func init() {
|
|
|
-// UpdateWeekAvg()
|
|
|
-//}
|
|
|
-
|
|
|
// 批量更新企业服务明细记录
|
|
|
func UpdateCygxRaiServeBillByCompanyIds() (err error) {
|
|
|
defer func() {
|
|
@@ -441,6 +387,7 @@ func UpdateCygxRaiServeBillByCompanyIds() (err error) {
|
|
|
go utils.SendAlarmMsg("批量更新企业服务明细记录失败: UpdateCygxRaiServeBillByCompanyIds Err"+err.Error(), 2)
|
|
|
}
|
|
|
}()
|
|
|
+ fmt.Println("UpdateCygxRaiServeBillByCompanyIds start")
|
|
|
companyList, e := rai_serve.GetCygxRaiServeCompanyAllList()
|
|
|
if e != nil {
|
|
|
err = errors.New("GetCygxRaiServeCompanyAllList, Err: " + e.Error())
|
|
@@ -453,7 +400,6 @@ func UpdateCygxRaiServeBillByCompanyIds() (err error) {
|
|
|
}
|
|
|
|
|
|
lencompanyId := len(companyIds)
|
|
|
-
|
|
|
listisMakeruser, e := models.GetWxUserisMakerByCompanyIds(companyIds)
|
|
|
if e != nil {
|
|
|
err = errors.New("GetWxUserisMakerByCompanyIds, Err: " + e.Error())
|
|
@@ -463,7 +409,6 @@ func UpdateCygxRaiServeBillByCompanyIds() (err error) {
|
|
|
for _, v := range listisMakeruser {
|
|
|
mapUserMaker[v.UserId] = true
|
|
|
}
|
|
|
- fmt.Println(mapUserMaker)
|
|
|
|
|
|
var condition string
|
|
|
var pars []interface{}
|
|
@@ -554,29 +499,6 @@ func UpdateCygxRaiServeBillByCompanyIds() (err error) {
|
|
|
err = errors.New("GetCygxArticleHistoryRecordAllListNoLimit, Err: " + e.Error())
|
|
|
return
|
|
|
}
|
|
|
- //return
|
|
|
- //var articleIds []int
|
|
|
- //for _, v := range listArticleRecord {
|
|
|
- // articleIds = append(articleIds, v.ArticleId)
|
|
|
- //}
|
|
|
- //
|
|
|
- //var conditionArticle string
|
|
|
- //var parsArticle []interface{}
|
|
|
- //conditionArticle += ` AND article_id IN (` + utils.GetOrmInReplace(len(articleIds)) + `) `
|
|
|
- //parsArticle = append(parsArticle, articleIds)
|
|
|
- //listArticle, e := models.GetCygxCygxArticleList(conditionArticle, parsArticle, 0, len(articleIds))
|
|
|
- //if e != nil && e.Error() != utils.ErrNoRow() {
|
|
|
- // err = errors.New("GetCygxCygxArticleList, Err: " + e.Error())
|
|
|
- // return
|
|
|
- //}
|
|
|
- //mapArticleTitle := make(map[int]string)
|
|
|
- //
|
|
|
- //for _, v := range listArticle {
|
|
|
- // mapArticleTitle[v.ArticleId] = v.Title
|
|
|
- //}
|
|
|
- //fmt.Println(mapArticleTitle[10080])
|
|
|
- //return
|
|
|
-
|
|
|
//文章阅读明细
|
|
|
var conditionBill string
|
|
|
var parsBill []interface{}
|
|
@@ -903,16 +825,16 @@ func UpdateCygxRaiServeBillByCompanyIds() (err error) {
|
|
|
}
|
|
|
//交流反馈 end
|
|
|
|
|
|
- fmt.Println(len(items))
|
|
|
e = rai_serve.AddCygxRaiServeBillMulti(items)
|
|
|
if e != nil {
|
|
|
err = errors.New("AddCygxRaiServeBillMulti, Err: " + e.Error())
|
|
|
return
|
|
|
}
|
|
|
-
|
|
|
+ fmt.Println("UpdateCygxRaiServeBillByCompanyIds end")
|
|
|
return
|
|
|
}
|
|
|
|
|
|
+// 更新周度服务明细
|
|
|
func UpdateCygxRaiServeBillWeek() (err error) {
|
|
|
defer func() {
|
|
|
if err != nil {
|
|
@@ -977,7 +899,7 @@ func UpdateCygxRaiServeBillWeek() (err error) {
|
|
|
item.UserTotal = mapCompanyUserNum[v.CompanyId]
|
|
|
item.WeekServeCount = mapWeekServeCount[fmt.Sprintf("CID_", v.CompanyId, "WEEK_", item.WeekStartDate)]
|
|
|
if mapCompanyUserNum[v.CompanyId] > 0 {
|
|
|
- item.CoverageRate = item.WeekServeCount / float64(mapCompanyUserNum[v.CompanyId])
|
|
|
+ item.CoverageRate = item.WeekServeCount / float64(mapCompanyUserNum[v.CompanyId]) * 100
|
|
|
}
|
|
|
item.CreateTime = time.Now()
|
|
|
item.ModifyTime = time.Now()
|
|
@@ -992,6 +914,136 @@ func UpdateCygxRaiServeBillWeek() (err error) {
|
|
|
return
|
|
|
}
|
|
|
|
|
|
+func UpdateCygxRaiServeBillWeekTask() (err error) {
|
|
|
+ defer func() {
|
|
|
+ if err != nil {
|
|
|
+ fmt.Println(err)
|
|
|
+ go utils.SendAlarmMsg("批量更新企业服务明细记录失败: UpdateCygxRaiServeBillByCompanyIds Err"+err.Error(), 2)
|
|
|
+ }
|
|
|
+ }()
|
|
|
+ fmt.Println("UpdateCygxRaiServeBillWeekTask start")
|
|
|
+ now := time.Now()
|
|
|
+ weeks := 12
|
|
|
+
|
|
|
+ companyList, e := rai_serve.GetCygxRaiServeCompanyAllList()
|
|
|
+ if e != nil {
|
|
|
+ err = errors.New("GetCygxRaiServeCompanyAllList, Err: " + e.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ var companyIds []int
|
|
|
+
|
|
|
+ for _, v := range companyList {
|
|
|
+ companyIds = append(companyIds, v.CompanyId)
|
|
|
+ }
|
|
|
+
|
|
|
+ listCompanyUserNum, e := models.GetWxUserNumByCompanyIds(companyIds)
|
|
|
+ if e != nil {
|
|
|
+ err = errors.New("GetWxUserisMakerByCompanyIds, Err: " + e.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ mapCompanyUserNum := make(map[int]int) //企业对应的用户数量
|
|
|
+ for _, v := range listCompanyUserNum {
|
|
|
+ mapCompanyUserNum[v.CompanyId] = v.UserNum
|
|
|
+ }
|
|
|
+ lencompanyId := len(companyIds)
|
|
|
+ if lencompanyId == 0 {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ //明细
|
|
|
+ startDate := time.Now().AddDate(0, 0, -80)
|
|
|
+ var conditionBill string
|
|
|
+ var parsBill []interface{}
|
|
|
+ conditionBill = " AND company_id IN (" + utils.GetOrmInReplace(lencompanyId) + ") AND view_time > ? "
|
|
|
+ parsBill = append(parsBill, companyIds, startDate)
|
|
|
+ listBill, e := rai_serve.GetCygxRaiServeBillListAll(conditionBill, parsBill)
|
|
|
+ if e != nil {
|
|
|
+ err = errors.New("GetCygxRaiServeBillListAll, Err: " + e.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ mapWeekServeCount := make(map[string]float64)
|
|
|
+ for _, v := range listBill {
|
|
|
+ mapWeekServeCount[fmt.Sprintf("CID_", v.CompanyId, "WEEK_", v.WeekStartDate)] += v.ServeCount
|
|
|
+ }
|
|
|
+
|
|
|
+ var conditionWeek string
|
|
|
+ var parsWeek []interface{}
|
|
|
+
|
|
|
+ conditionWeek = ` AND week_start_date >= ? `
|
|
|
+ parsWeek = append(parsWeek, startDate)
|
|
|
+
|
|
|
+ listWeekBill, e := rai_serve.GetCygxRaiServeWeekBillListAll(conditionWeek, parsWeek)
|
|
|
+ if e != nil {
|
|
|
+ err = errors.New("GetCygxRaiServeWeekBillListAll, Err: " + e.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ mapWeekbill := make(map[string]bool)
|
|
|
+ mapWeekbillUserTotal := make(map[string]int)
|
|
|
+ mapWeekbillWeekServeCount := make(map[string]float64)
|
|
|
+ for _, v := range listWeekBill {
|
|
|
+ mapWeekbill[fmt.Sprintf("CID_", v.CompanyId, "WEEK_", v.WeekStartDate)] = true
|
|
|
+ mapWeekbillUserTotal[fmt.Sprintf("CID_", v.CompanyId, "WEEK_", v.WeekStartDate)] = v.UserTotal
|
|
|
+ mapWeekbillWeekServeCount[fmt.Sprintf("CID_", v.CompanyId, "WEEK_", v.WeekStartDate)] = v.WeekServeCount
|
|
|
+ }
|
|
|
+
|
|
|
+ var items []*rai_serve.CygxRaiServeWeekBill
|
|
|
+ var itemsUpdate []*rai_serve.CygxRaiServeWeekBill
|
|
|
+ for _, v := range companyList {
|
|
|
+ for i := 0; i < weeks; i++ {
|
|
|
+ item := new(rai_serve.CygxRaiServeWeekBill)
|
|
|
+ // 计算当前周的周一
|
|
|
+ monday := now.AddDate(0, 0, -int(now.Weekday()-time.Monday)-i*7)
|
|
|
+ // 计算当前周的周日
|
|
|
+ sunday := monday.AddDate(0, 0, 6)
|
|
|
+ item.WeekStartDate = monday.Format(utils.FormatDate)
|
|
|
+ item.WeekEndDate = sunday.Format(utils.FormatDate)
|
|
|
+ item.CompanyId = v.CompanyId
|
|
|
+ item.CompanyName = v.CompanyName
|
|
|
+ //超过本周的,互动总人数不做修改
|
|
|
+ if i > 0 && mapWeekbillUserTotal[fmt.Sprintf("CID_", v.CompanyId, "WEEK_", item.WeekStartDate)] > 0 {
|
|
|
+ item.UserTotal = mapWeekbillUserTotal[fmt.Sprintf("CID_", v.CompanyId, "WEEK_", item.WeekStartDate)]
|
|
|
+ } else {
|
|
|
+ item.UserTotal = mapCompanyUserNum[v.CompanyId]
|
|
|
+ }
|
|
|
+ item.WeekServeCount = mapWeekServeCount[fmt.Sprintf("CID_", v.CompanyId, "WEEK_", item.WeekStartDate)]
|
|
|
+ if mapCompanyUserNum[v.CompanyId] > 0 {
|
|
|
+ item.CoverageRate = item.WeekServeCount / float64(mapCompanyUserNum[v.CompanyId]) * 100
|
|
|
+ }
|
|
|
+ item.CreateTime = time.Now()
|
|
|
+ item.ModifyTime = time.Now()
|
|
|
+ if mapWeekbill[fmt.Sprintf("CID_", v.CompanyId, "WEEK_", item.WeekStartDate)] {
|
|
|
+ if mapWeekbillUserTotal[fmt.Sprintf("CID_", v.CompanyId, "WEEK_", item.WeekStartDate)] == item.UserTotal && mapWeekbillWeekServeCount[fmt.Sprintf("CID_", v.CompanyId, "WEEK_", item.WeekStartDate)] == item.WeekServeCount {
|
|
|
+ continue // 如果互动量相等,且人数相等,就不修改
|
|
|
+ }
|
|
|
+ itemsUpdate = append(itemsUpdate, item)
|
|
|
+ } else {
|
|
|
+ items = append(items, item)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if len(items) > 0 {
|
|
|
+ e = rai_serve.AddCygxRaiServeWeekBillMulti(items)
|
|
|
+ if e != nil {
|
|
|
+ err = errors.New("AddCygxRaiServeWeekBillMulti, Err: " + e.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if len(itemsUpdate) > 0 {
|
|
|
+ e = rai_serve.UpdateCygxRaiServeWeekBillMulti(itemsUpdate)
|
|
|
+ if e != nil {
|
|
|
+ err = errors.New("AddCygxRaiServeWeekBillMulti, Err: " + e.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ fmt.Println("UpdateCygxRaiServeBillWeekTask end")
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+// 更新最近四周平均覆盖率,是否标红,权限,时间,金额
|
|
|
func UpdateWeekAvg() (err error) {
|
|
|
defer func() {
|
|
|
if err != nil {
|
|
@@ -999,6 +1051,7 @@ func UpdateWeekAvg() (err error) {
|
|
|
go utils.SendAlarmMsg("批量更新企业服务明细记录失败: UpdateCygxRaiServeBillByCompanyIds Err"+err.Error(), 2)
|
|
|
}
|
|
|
}()
|
|
|
+ fmt.Println(" UpdateWeekAvg start")
|
|
|
now := time.Now()
|
|
|
weeks := 3
|
|
|
monday := now.AddDate(0, 0, -int(now.Weekday()-time.Monday)-weeks*7)
|
|
@@ -1019,7 +1072,7 @@ func UpdateWeekAvg() (err error) {
|
|
|
|
|
|
mapWeekServeCount := make(map[int]float64) //四周平均率总合
|
|
|
for _, v := range listWeekBill {
|
|
|
- mapWeekServeCount[v.CompanyId] += v.WeekServeCount * 100
|
|
|
+ mapWeekServeCount[v.CompanyId] += v.CoverageRate
|
|
|
}
|
|
|
|
|
|
//获取近四周含有Kp 的公司
|
|
@@ -1149,3 +1202,104 @@ func UpdateWeekAvg() (err error) {
|
|
|
fmt.Println(" UpdateWeekAvg end")
|
|
|
return
|
|
|
}
|
|
|
+
|
|
|
+// 权益服务统计添加到Redis队列中
|
|
|
+func CygxRaiServeBillRedisAdd(content, source string, userId, comapnyId, sourceId, registerPlatform int, viewTime time.Time) (err error) {
|
|
|
+ defer func() {
|
|
|
+ if err != nil {
|
|
|
+ fmt.Println(err)
|
|
|
+ msg := fmt.Sprint("source:", source, "userId:", userId, "sourceId", sourceId)
|
|
|
+ go utils.SendAlarmMsg("权益服务统计添加到Redis队列中,写入Redis队列消息失败 CygxRaiServeBillRedisAdd:"+err.Error()+msg, 2)
|
|
|
+ }
|
|
|
+ }()
|
|
|
+ log := &rai_serve.RaiServeBillRedis{Content: content, Source: source, UserId: userId, ComapnyId: comapnyId, SourceId: sourceId, RegisterPlatform: registerPlatform, ViewTime: viewTime}
|
|
|
+ if utils.Re == nil {
|
|
|
+ err := utils.Rc.LPush(utils.CYGX_RAI_SERVE_BILL_KEY, log)
|
|
|
+ if err != nil {
|
|
|
+ fmt.Println("RaiServeBillRedis LPush Err:" + err.Error())
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+// CygxRaiServeBillRedisAddReduce 处理权益服务统计
|
|
|
+func CygxRaiServeBillRedisAddReduce() (err error) {
|
|
|
+ for {
|
|
|
+ //SourceType int `description:"1:报名、 2:取消报名、3:活动编辑、4:活动发布,取消发布、5:活动到会。"`
|
|
|
+ utils.Rc.Brpop(utils.CYGX_RAI_SERVE_BILL_KEY, func(b []byte) {
|
|
|
+ var log rai_serve.RaiServeBillRedis
|
|
|
+ if err := json.Unmarshal(b, &log); err != nil {
|
|
|
+ fmt.Println("json unmarshal wrong!")
|
|
|
+ go utils.SendAlarmMsg("处理权益服务统计Redis队列消息失败:"+err.Error()+string(b), 2)
|
|
|
+ }
|
|
|
+ //如果不是共享给 权益服务组的,则不处理
|
|
|
+ taotalRaiServe, err := company.GetCompanyProductAaiServeCount(log.ComapnyId, utils.RAI_SERVE_GROUP_ID)
|
|
|
+ if err != nil {
|
|
|
+ go utils.SendAlarmMsg("处理权益服务统计Redis队列消息失败:GetCompanyProductAaiServeCount"+err.Error()+string(b), 2)
|
|
|
+ }
|
|
|
+ fmt.Println("taotaRaiServe", taotalRaiServe)
|
|
|
+ if taotalRaiServe == 0 {
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ //如果已经有记录了就不处理
|
|
|
+ taotalSource, err := rai_serve.GetCygxRaiServeBillCountByUserAndSource(log.UserId, log.SourceId, log.Source)
|
|
|
+ if err != nil {
|
|
|
+ go utils.SendAlarmMsg("处理权益服务统计Redis队列消息失败:GetCygxRaiServeBillCountByUserAndSource"+err.Error()+string(b), 2)
|
|
|
+ }
|
|
|
+ if taotalSource > 0 {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ switch log.Source {
|
|
|
+ case utils.CYGX_OBJ_YANXUANSPECIAL: //研选专栏阅读记录处理
|
|
|
+ go RaiServeBillRedisAddReduceByYanxuanspecial(log)
|
|
|
+ fmt.Println("研选专栏阅读记录处理")
|
|
|
+ break
|
|
|
+
|
|
|
+ default:
|
|
|
+ fmt.Println(string(b))
|
|
|
+ go utils.SendAlarmMsg("处理研选活动扣点处理Redis队列消息失败:"+string(b), 2)
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+// 处理权益服务统计->研选阅读记录
|
|
|
+func RaiServeBillRedisAddReduceByYanxuanspecial(log rai_serve.RaiServeBillRedis) (err error) {
|
|
|
+ source := log.Source
|
|
|
+ userId := log.UserId
|
|
|
+ sourceId := log.SourceId
|
|
|
+ defer func() {
|
|
|
+ if err != nil {
|
|
|
+ go utils.SendAlarmMsg("用户报名活动扣点,处理Redis队列消息失败:"+err.Error()+fmt.Sprint("source:", source, "userId:", userId, "sourceId", sourceId), 2)
|
|
|
+ }
|
|
|
+ }()
|
|
|
+ wxUser, e := models.GetWxUserItemByUserId(userId)
|
|
|
+ if e != nil {
|
|
|
+ err = errors.New("GetWxUserItemByUserId, Err: " + e.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ item := new(rai_serve.CygxRaiServeBill)
|
|
|
+ item.Content = log.Content
|
|
|
+ item.ServeTypeId = 5
|
|
|
+ item.ServeTypeName = "阅读uv"
|
|
|
+ item.UserId = wxUser.UserId
|
|
|
+ item.Mobile = wxUser.Mobile
|
|
|
+ item.Email = wxUser.Email
|
|
|
+ item.CompanyId = wxUser.CompanyId
|
|
|
+ item.CompanyName = wxUser.CompanyName
|
|
|
+ item.RealName = wxUser.RealName
|
|
|
+ item.RegisterPlatform = log.RegisterPlatform
|
|
|
+ item.ServeCount = 0.5
|
|
|
+
|
|
|
+ if wxUser.IsMaker == 1 {
|
|
|
+ item.IsKp = wxUser.IsMaker
|
|
|
+ item.ServeCount = item.ServeCount * 3
|
|
|
+ }
|
|
|
+ item.SourceId = log.SourceId
|
|
|
+ item.Source = log.Source
|
|
|
+ item.CreateTime = time.Now()
|
|
|
+ item.ViewTime = log.ViewTime.Format(utils.FormatDateTime)
|
|
|
+ err = rai_serve.AddCygxRaiServeBill(item)
|
|
|
+ return
|
|
|
+}
|