From ea19ee5c555fe79b7f1f5fbf5da13f186ede8b22 Mon Sep 17 00:00:00 2001 From: chenweijian <820961417@qq.com> Date: Tue, 29 Aug 2023 10:19:01 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BE=A4=E7=BB=84=E6=89=B6=E6=8C=81=E6=97=A7?= =?UTF-8?q?=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cron/cron.go | 2 +- cron/gift_cron/send_gift_redis.go | 2 +- cron/group_cron/group_support.go | 151 +++++++++++++++--------------- domain/model/gift_m/gift.go | 4 +- 4 files changed, 82 insertions(+), 77 deletions(-) diff --git a/cron/cron.go b/cron/cron.go index 985e303..3363b4b 100644 --- a/cron/cron.go +++ b/cron/cron.go @@ -21,6 +21,6 @@ func Init() { //group_cron.GroupInEventInit() // 进房事件 //group_cron.CreateGroup() // group_cron.CalcGroupSupport() // 群组扶持计算 - //group_cron.CalcGroupSupport_OldData() + group_cron.CalcGroupSupport_OldData() group_cron.GroupCountryListSort() } diff --git a/cron/gift_cron/send_gift_redis.go b/cron/gift_cron/send_gift_redis.go index 35f6c55..eca0712 100644 --- a/cron/gift_cron/send_gift_redis.go +++ b/cron/gift_cron/send_gift_redis.go @@ -95,7 +95,7 @@ func groupPowerStar(model *domain.Model, sendGiftEvent *gift_ev.SendGiftEvent) { // 群组扶持增加流水数据 func groupSupportAddConsume(model *domain.Model, sendGiftEvent *gift_ev.SendGiftEvent) { - if time.Now().Unix() <= 1692843600 { + if time.Now().Unix() <= 1693275900 { return } model.Log.Infof("groupSupportAddConsume UserId:%d, sendGiftEvent:%+v", sendGiftEvent.SendUserId, sendGiftEvent) diff --git a/cron/group_cron/group_support.go b/cron/group_cron/group_support.go index 933e58e..96515c6 100644 --- a/cron/group_cron/group_support.go +++ b/cron/group_cron/group_support.go @@ -1,13 +1,18 @@ package group_cron import ( + "context" "encoding/json" + "git.hilo.cn/hilo-common/_const/rediskey" "git.hilo.cn/hilo-common/domain" "git.hilo.cn/hilo-common/resource/config" + "git.hilo.cn/hilo-common/resource/redisCli" "git.hilo.cn/hilo-common/sdk/tencentyun" "git.hilo.cn/hilo-common/utils" "github.com/robfig/cron" + "hilo-group/_const/enum/gift_e" "hilo-group/_const/enum/group_e" + "hilo-group/domain/model/gift_m" "hilo-group/domain/model/group_m" "hilo-group/domain/service/group_s" "time" @@ -87,76 +92,76 @@ func sendGroupSupportH5(model *domain.Model) error { } // 群组扶持计算-旧数据 -//func CalcGroupSupport_OldData() { -// if !config.IsMaster() { -// return -// } -// c := cron.New() -// spec := "0 20 11 25 8 ?" -// _ = c.AddFunc(spec, func() { -// defer utils.CheckGoPanic() -// var model = domain.CreateModelNil() -// //开始 -// model.Log.Infof("CalcGroupSupport_OldData start") -// -// beginTime, endTime, period := group_m.GetSupportLevelTime(time.Now().AddDate(0, 0, -group_e.SUPPORT_LEVEL_PERIOD_DAY)) -// //beginTime, _, period := group_m.GetSupportLevelTime(time.Now()) -// //endTime := time.Unix(1692843600, 0) -// -// g := gift_m.GiftOperate{SceneType: gift_e.GroupSceneType, Model: model} -// records, err := g.BatchGetConsumeByRange(beginTime, endTime) -// if err != nil { -// model.Log.Errorf("CalcGroupSupport_OldData beginTime:%v, endTime:%v, err:%v", beginTime, endTime, err) -// return -// } -// // 流水写入redis -// keyDiamond := rediskey.GetGroupSupportConsumeSummary(period) -// for _, r := range records { -// if r.SceneUid == "" || r.Consume <= 0 { -// continue -// } -// _, err = model.RedisCluster.ZIncrBy(context.Background(), keyDiamond, float64(r.Consume), r.SceneUid).Result() -// if err != nil { -// model.Log.Errorf("CalcGroupSupport_OldData groupSupport key:%s, val:%d, member:%s, err:%v", -// keyDiamond, r.Consume, r.SceneUid, err) -// } -// } -// err = redisCli.SetExpire(model.RedisCluster, keyDiamond, time.Hour*24*14) // 保留两周 -// if err != nil { -// model.Log.Errorf("CalcGroupSupport_OldData groupSupport key:%s, err:%v", keyDiamond, err) -// return -// } -// // 支持者写入redis -// for _, r := range records { -// if r.SceneUid == "" || r.C <= 0 { -// continue -// } -// // 支持者列表 -// support := gift_m.GiftOperate{SceneType: gift_e.GroupSceneType, SceneUid: r.SceneUid, Model: model} -// uids, err := support.BatchGetSupportList(beginTime, endTime) -// if err != nil { -// model.Log.Errorf("CalcGroupSupport_OldData beginTime:%v, endTime:%v, imGroupId:%v, err:%v", beginTime, endTime, r.SceneUid, err) -// continue -// } -// if len(uids) <= 0 { -// continue -// } -// // 支持者数量 -// keySupportNum := rediskey.GetGroupSupportCountSupporter(period, r.SceneUid) -// for _, uid := range uids { -// err = model.RedisCluster.SAdd(context.Background(), keySupportNum, uid).Err() -// if err != nil { -// model.Log.Errorf("CalcGroupSupport_OldData groupSupport key:%s, UserId:%d, err:%v", keySupportNum, uid, err) -// } -// } -// err = redisCli.SetExpire(model.RedisCluster, keySupportNum, time.Hour*24*14) // 保留两周 -// if err != nil { -// model.Log.Errorf("AddSendGiftEventAsync groupSupport key:%s, err:%v", keySupportNum, err) -// } -// } -// -// model.Log.Infof("CalcGroupSupport_OldData end") -// }) -// -// c.Start() -//} +func CalcGroupSupport_OldData() { + if !config.IsMaster() { + return + } + c := cron.New() + spec := "0 27 10 29 8 ?" + _ = c.AddFunc(spec, func() { + defer utils.CheckGoPanic() + var model = domain.CreateModelNil() + //开始 + model.Log.Infof("CalcGroupSupport_OldData start") + + //beginTime, endTime, period := group_m.GetSupportLevelTime(time.Now().AddDate(0, 0, -group_e.SUPPORT_LEVEL_PERIOD_DAY)) + beginTime, _, period := group_m.GetSupportLevelTime(time.Now()) + endTime := time.Unix(1693275900, 0) + + g := gift_m.GiftOperate{SceneType: gift_e.GroupSceneType, Model: model} + records, err := g.BatchGetConsumeByRange(beginTime, endTime) + if err != nil { + model.Log.Errorf("CalcGroupSupport_OldData beginTime:%v, endTime:%v, err:%v", beginTime, endTime, err) + return + } + // 流水写入redis + keyDiamond := rediskey.GetGroupSupportConsumeSummary(period) + for _, r := range records { + if r.SceneUid == "" || r.Consume <= 0 { + continue + } + _, err = model.RedisCluster.ZIncrBy(context.Background(), keyDiamond, float64(r.Consume), r.SceneUid).Result() + if err != nil { + model.Log.Errorf("CalcGroupSupport_OldData groupSupport key:%s, val:%d, member:%s, err:%v", + keyDiamond, r.Consume, r.SceneUid, err) + } + } + err = redisCli.SetExpire(model.RedisCluster, keyDiamond, time.Hour*24*14) // 保留两周 + if err != nil { + model.Log.Errorf("CalcGroupSupport_OldData groupSupport key:%s, err:%v", keyDiamond, err) + return + } + // 支持者写入redis + for _, r := range records { + if r.SceneUid == "" || r.C <= 0 { + continue + } + // 支持者列表 + support := gift_m.GiftOperate{SceneType: gift_e.GroupSceneType, SceneUid: r.SceneUid, Model: model} + uids, err := support.BatchGetSupportList(model, beginTime, endTime) + if err != nil { + model.Log.Errorf("CalcGroupSupport_OldData beginTime:%v, endTime:%v, imGroupId:%v, err:%v", beginTime, endTime, r.SceneUid, err) + continue + } + if len(uids) <= 0 { + continue + } + // 支持者数量 + keySupportNum := rediskey.GetGroupSupportCountSupporter(period, r.SceneUid) + for _, uid := range uids { + err = model.RedisCluster.SAdd(context.Background(), keySupportNum, uid).Err() + if err != nil { + model.Log.Errorf("CalcGroupSupport_OldData groupSupport key:%s, UserId:%d, err:%v", keySupportNum, uid, err) + } + } + err = redisCli.SetExpire(model.RedisCluster, keySupportNum, time.Hour*24*14) // 保留两周 + if err != nil { + model.Log.Errorf("AddSendGiftEventAsync groupSupport key:%s, err:%v", keySupportNum, err) + } + } + + model.Log.Infof("CalcGroupSupport_OldData end") + }) + + c.Start() +} diff --git a/domain/model/gift_m/gift.go b/domain/model/gift_m/gift.go index f3e5192..c97725f 100644 --- a/domain/model/gift_m/gift.go +++ b/domain/model/gift_m/gift.go @@ -182,9 +182,9 @@ func (g *GiftOperate) BatchGetConsumeByRange(beginTime, endTime time.Time) ([]Sc return rows, nil } -func (g *GiftOperate) BatchGetSupportList(beginTime, endTime time.Time) ([]uint64, error) { +func (g *GiftOperate) BatchGetSupportList(model *domain.Model, beginTime, endTime time.Time) ([]uint64, error) { userIds := make([]uint64, 0) - err := g.DB().Model(g). + err := model.DB().Model(g). Select("DISTINCT(send_user_id) AS user_id"). Where(g).Where("created_time BETWEEN ? AND ?", beginTime, endTime).Pluck("user_id", &userIds).Error if err != nil { -- 2.22.0