diff --git a/_const/redis_key/mic_k/keys.go b/_const/redis_key/mic_k/keys.go index c0e8aa4e98dc50eafcc70696af84471c7b424c22..14ee6a5262d77ff6c20a84778150559b95c5c019 100644 --- a/_const/redis_key/mic_k/keys.go +++ b/_const/redis_key/mic_k/keys.go @@ -12,6 +12,7 @@ const ( MicDayInvite = MicPrefix + "day:invite:${userId}:${date}" // string 自动被邀请上麦,1天一次,TTL:24H MicGroupPowerOnMic = MicPrefix + "groupPower:${userId}:${date}" // 家族内群上麦分钟数 + MicUserOnMic = MicPrefix + "user:onMic:${tz}:${userId}:${date}" ) func GetUserMicDayInvite(userId mysql.ID) string { @@ -24,3 +25,9 @@ func GetMicGroupPowerOnMic(userId uint64) string { date := time.Now().Format("2006-01-02") return redis_key.ReplaceKey(MicGroupPowerOnMic, fmt.Sprintf("%d", userId), date) } + +// 获取用户上麦时间 +// 北京、沙特时间 +func GetUserOnMicKey(userId uint64, tz, date string) string { + return redis_key.ReplaceKey(MicUserOnMic, tz, fmt.Sprintf("%d", userId), date) +} diff --git a/cron/mic_cron/on_mic.go b/cron/mic_cron/on_mic.go index e160da6d1380d4981d81db11206c8be4e141bad6..e5d93560fddc2c4a0e9a232b3575af8ba95ca5cf 100644 --- a/cron/mic_cron/on_mic.go +++ b/cron/mic_cron/on_mic.go @@ -64,7 +64,8 @@ func OnMicQueue() { // 用户上麦 //if err := mic_m.IncrUserOnMic(model, onMic.UserId, onMic.Timestamp); err != nil { - if err := mic_m.IncrUserOnMicV2(model, onMic.UserId); err != nil { + //if err := mic_m.IncrUserOnMicV2(model, onMic.UserId); err != nil { + if err := mic_m.IncrUserOnMicV3(model, onMic.UserId); err != nil { model.Log.Errorf("cron micIn IncrUserOnMic err:%v", err) } else { model.Log.Infof("cron micIn IncrUserOnMic success,userId:%v,cost:%vs", onMic.UserId, time.Now().Sub(start).Seconds()) diff --git a/domain/model/mic_m/mic.go b/domain/model/mic_m/mic.go index a91dff6052c1d5e0de484ddc6e393b5f19220d74..2902100b1fb05c5b5f57ba04b88db6715fb2d195 100644 --- a/domain/model/mic_m/mic.go +++ b/domain/model/mic_m/mic.go @@ -7,6 +7,7 @@ import ( "git.hilo.cn/hilo-common/utils" "gorm.io/gorm" "gorm.io/gorm/clause" + "hilo-group/_const/redis_key/mic_k" "time" ) @@ -98,6 +99,22 @@ func IncrUserOnMicV2(model *domain.Model, userId mysql.ID) error { return nil } +// 增加用户上麦时长 +// Redis +func IncrUserOnMicV3(model *domain.Model, userId mysql.ID) error { + for _, tz := range timezone_e.Timezones { + day := time.Now().In(timezone_e.TimezoneLocMap[tz]).Format("2006-01-02") + tzStr := "bj" + if tz == timezone_e.TimezoneKSA { + tzStr = "ksa" + } + tzKey := mic_k.GetUserOnMicKey(userId, tzStr, day) + model.RedisCluster.IncrBy(model, tzKey, 60) + model.RedisCluster.Expire(model, tzKey, time.Hour*24*30) // 30天上麦时长 + } + return nil +} + // 批量获取用户上麦时长 // @return userId->seconds func MGetUserOnMicSeconds(model *domain.Model, day string, tz timezone_e.Timezone, userIds []uint64) (map[mysql.ID]mysql.Num, error) {