From 6363907b582f57a467fedf7334902b7a00e7188a Mon Sep 17 00:00:00 2001 From: hujiebin Date: Thu, 16 Mar 2023 11:30:32 +0800 Subject: [PATCH] =?UTF-8?q?fix=EF=BC=9A=E5=85=BC=E5=AE=B9=E8=B7=A8?= =?UTF-8?q?=E5=A4=A9=E7=9A=84=E6=83=85=E5=86=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- domain/model/groupPower_m/group_grade.go | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/domain/model/groupPower_m/group_grade.go b/domain/model/groupPower_m/group_grade.go index 3721a77..b1d0241 100644 --- a/domain/model/groupPower_m/group_grade.go +++ b/domain/model/groupPower_m/group_grade.go @@ -178,10 +178,17 @@ func IncrGroupPowerExpOnMic(model *domain.Model, groupPowerId, userId mysql.ID, if err != nil { return err } - onMicSeconds := time.Now().Unix() - joinMicTimestamp - if onMic.LastCalTs == joinMicTimestamp { - onMicSeconds = onMicSeconds - int64(numDetails*600) // 扣除之前加过的时间 + nowTs := time.Now().Unix() + curTs := joinMicTimestamp + day0Ts := utils.GetZeroTime(time.Now()).Unix() + if joinMicTimestamp < onMic.LastCalTs { + curTs = onMic.LastCalTs } + // 跨天 + if curTs < day0Ts { + curTs = day0Ts + } + onMicSeconds := nowTs - curTs var moreDetails []*GroupPowerOnMicDetail totalMinuteTimes := int((onMic.Seconds + onMicSeconds) / 600) // 今天实际能加经验次数 if totalMinuteTimes >= MaxMinuteTimes { @@ -212,12 +219,12 @@ func IncrGroupPowerExpOnMic(model *domain.Model, groupPowerId, userId mysql.ID, } // 更新micExp信息 onMic.Seconds = onMic.Seconds + onMicSeconds - onMic.LastCalTs = joinMicTimestamp + onMic.LastCalTs = nowTs if err := model.DB().Model(GroupPowerOnMic{}).Clauses(clause.OnConflict{Columns: []clause.Column{{Name: "date"}, {Name: "group_power_id"}}, DoUpdates: clause.Assignments( map[string]interface{}{ "seconds": onMic.Seconds, - "last_cal_ts": joinMicTimestamp, + "last_cal_ts": nowTs, }, )}). Create(onMic).Error; err != nil { @@ -232,15 +239,21 @@ func IncrGroupPowerExpOnMic(model *domain.Model, groupPowerId, userId mysql.ID, // 事务操作 func IncrGroupPowerStarOnMic(model *domain.Model, groupPowerId, userId mysql.ID, joinMicTimestamp int64) error { return model.Transaction(func(model *domain.Model) error { + // 月统计 star, err := GetGroupPowerMonthStar(model, groupPowerId, userId, groupPower_e.GroupPowerStarTypeActive) curTs := joinMicTimestamp nowTs := time.Now().Unix() + month0Ts := now.BeginningOfMonth().Unix() if err != nil && err != gorm.ErrRecordNotFound { return err } if star != nil && joinMicTimestamp < star.LastCalTs { // 加入的时间比上次计算时间小 curTs = star.LastCalTs } + // 跨月 + if curTs < month0Ts { + curTs = month0Ts + } score := nowTs - curTs return IncrGroupPowerMonthStarScore(model, groupPowerId, userId, groupPower_e.GroupPowerStarTypeActive, mysql.Num(score), nowTs) }) -- 2.22.0