From 3461c75c040283eef371909219d5d7f826d5444c Mon Sep 17 00:00:00 2001 From: lzh <1625167628@qq.com> Date: Fri, 24 Oct 2025 11:53:45 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BD=99=E9=87=8F=E7=BB=9F=E8=AE=A1=E9=97=AE?= =?UTF-8?q?=E9=A2=98=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/dao/bundleExtend.go | 37 +++++++++++++---------------- internal/logic/bundleExtendLogic.go | 7 +++--- 2 files changed, 20 insertions(+), 24 deletions(-) diff --git a/internal/dao/bundleExtend.go b/internal/dao/bundleExtend.go index 138fc54..06f05f3 100644 --- a/internal/dao/bundleExtend.go +++ b/internal/dao/bundleExtend.go @@ -204,7 +204,7 @@ func AddBundleBalanceByUserId(data model.BundleBalanceUsePo) (usedType int, err usedType = 1 goto Over } - if oldData.MonthlyIncreaseLimitExpiredVideoConsumptionNumber < oldData.MonthlyBundleLimitExpiredVideoNumber { // 增值服务会过期的限制类型视频充足 + if oldData.MonthlyIncreaseLimitExpiredVideoConsumptionNumber < oldData.MonthlyIncreaseLimitExpiredVideoNumber { // 增值服务会过期的限制类型视频充足 oldData.MonthlyIncreaseLimitExpiredVideoConsumptionNumber++ oldData.IncreaseLimitVideoExpiredConsumptionNumber++ usedType = 2 @@ -218,7 +218,7 @@ func AddBundleBalanceByUserId(data model.BundleBalanceUsePo) (usedType int, err usedType = 1 goto Over } - if oldData.MonthlyIncreaseLimitVideoConsumptionNumber < oldData.MonthlyBundleLimitVideoNumber { // 增值服务会过期的限制类型视频充足 + if oldData.MonthlyIncreaseLimitVideoConsumptionNumber < oldData.MonthlyIncreaseLimitVideoNumber { // 增值服务会过期的限制类型视频充足 oldData.MonthlyIncreaseLimitVideoConsumptionNumber++ oldData.IncreaseLimitVideoConsumptionNumber++ usedType = 2 @@ -255,7 +255,7 @@ func AddBundleBalanceByUserId(data model.BundleBalanceUsePo) (usedType int, err usedType = 1 goto Over } - if oldData.MonthlyIncreaseLimitExpiredImageConsumptionNumber < oldData.MonthlyBundleLimitExpiredImageNumber { // 增值服务会过期的限制类型图片充足 + if oldData.MonthlyIncreaseLimitExpiredImageConsumptionNumber < oldData.MonthlyIncreaseLimitExpiredImageNumber { // 增值服务会过期的限制类型图片充足 oldData.MonthlyIncreaseLimitExpiredImageConsumptionNumber++ oldData.IncreaseLimitImageExpiredConsumptionNumber++ usedType = 2 @@ -269,7 +269,7 @@ func AddBundleBalanceByUserId(data model.BundleBalanceUsePo) (usedType int, err usedType = 1 goto Over } - if oldData.MonthlyIncreaseLimitImageConsumptionNumber < oldData.MonthlyBundleLimitImageNumber { // 增值服务限制类型图片充足 + if oldData.MonthlyIncreaseLimitImageConsumptionNumber < oldData.MonthlyIncreaseLimitImageNumber { // 增值服务限制类型图片充足 oldData.MonthlyIncreaseLimitImageConsumptionNumber++ oldData.IncreaseLimitImageConsumptionNumber++ usedType = 2 @@ -306,7 +306,7 @@ func AddBundleBalanceByUserId(data model.BundleBalanceUsePo) (usedType int, err usedType = 1 goto Over } - if oldData.MonthlyIncreaseLimitExpiredDataAnalysisConsumptionNumber < oldData.MonthlyBundleLimitExpiredDataAnalysisNumber { // 增值服务会过期的限制类型数据分析充足 + if oldData.MonthlyIncreaseLimitExpiredDataAnalysisConsumptionNumber < oldData.MonthlyIncreaseLimitExpiredDataAnalysisNumber { // 增值服务会过期的限制类型数据分析充足 oldData.MonthlyIncreaseLimitExpiredDataAnalysisConsumptionNumber++ oldData.IncreaseLimitDataAnalysisExpiredConsumptionNumber++ usedType = 2 @@ -320,7 +320,7 @@ func AddBundleBalanceByUserId(data model.BundleBalanceUsePo) (usedType int, err usedType = 1 goto Over } - if oldData.MonthlyIncreaseLimitDataAnalysisConsumptionNumber < oldData.MonthlyBundleLimitDataAnalysisNumber { // 增值服务限制类型数据分析充足 + if oldData.MonthlyIncreaseLimitDataAnalysisConsumptionNumber < oldData.MonthlyIncreaseLimitDataAnalysisNumber { // 增值服务限制类型数据分析充足 oldData.MonthlyIncreaseLimitDataAnalysisConsumptionNumber++ oldData.IncreaseLimitDataAnalysisConsumptionNumber++ usedType = 2 @@ -546,9 +546,9 @@ inner join ( } else { released += limit } - interval := now.Year()*12 + int(now.Month()) - (v.StartAt.Year()*12 + int(v.StartAt.Month())) // 后续月份释放的 - released += interval * limit - remaining := max(total-released, 0) // 还剩余多少次没有发放 + interval := now.Year()*12 + int(now.Month()) - (v.StartAt.Year()*12 + int(v.StartAt.Month())) // 释放了多少个月 + released += max(interval-1, 0) * limit // 后续月份释放的 + remaining := max(total-released, 0) // 还剩余多少次没有发放 if v.StartAt.Month() == now.Month() && v.StartAt.Year() == now.Year() && v.StartAt.Day() >= 16 { // 本月为第一个月并且16号后购买只给一半(向上取整) return min((limit+1)/2, remaining) @@ -580,22 +580,20 @@ inner join ( v.MonthlyBundleLimitDataAnalysisNumber = v.MonthlyBundleLimitDataAnalysisNumber - v.MonthlyBundleLimitDataAnalysisConsumptionNumber + cal(v.BundleLimitImageNumber, v.MonthlyLimitImageQuotaNumber) v.MonthlyIncreaseLimitDataAnalysisNumber = v.MonthlyIncreaseLimitDataAnalysisNumber - v.MonthlyIncreaseLimitDataAnalysisConsumptionNumber + cal(v.IncreaseLimitImageNumber, v.MonthlyLimitImageQuotaNumber) // 重置单月消耗数量 + v.MonthlyBundleVideoConsumptionNumber = 0 + v.MonthlyIncreaseVideoConsumptionNumber = 0 + v.MonthlyBundleLimitVideoConsumptionNumber = 0 + v.MonthlyIncreaseLimitVideoConsumptionNumber = 0 + v.MonthlyBundleLimitExpiredVideoConsumptionNumber = 0 + v.MonthlyIncreaseLimitExpiredVideoConsumptionNumber = 0 + v.MonthlyNewManualVideoNumber = 0 + v.MonthlyManualVideoConsumptionNumber = 0 v.MonthlyBundleImageConsumptionNumber = 0 v.MonthlyIncreaseImageConsumptionNumber = 0 v.MonthlyBundleLimitImageConsumptionNumber = 0 v.MonthlyIncreaseLimitImageConsumptionNumber = 0 v.MonthlyBundleLimitExpiredImageConsumptionNumber = 0 v.MonthlyIncreaseLimitExpiredImageConsumptionNumber = 0 - v.ManualImageConsumptionNumber = 0 - v.MonthlyNewManualImageNumber = 0 - v.MonthlyManualImageConsumptionNumber = 0 - v.MonthlyBundleImageConsumptionNumber = 0 - v.MonthlyIncreaseImageConsumptionNumber = 0 - v.MonthlyBundleLimitImageConsumptionNumber = 0 - v.MonthlyIncreaseLimitImageConsumptionNumber = 0 - v.MonthlyBundleLimitExpiredImageConsumptionNumber = 0 - v.MonthlyIncreaseLimitExpiredImageConsumptionNumber = 0 - v.ManualImageConsumptionNumber = 0 v.MonthlyNewManualImageNumber = 0 v.MonthlyManualImageConsumptionNumber = 0 v.MonthlyBundleDataAnalysisConsumptionNumber = 0 @@ -604,7 +602,6 @@ inner join ( v.MonthlyIncreaseLimitDataAnalysisConsumptionNumber = 0 v.MonthlyBundleLimitExpiredDataAnalysisConsumptionNumber = 0 v.MonthlyIncreaseLimitExpiredDataAnalysisConsumptionNumber = 0 - v.ManualDataAnalysisConsumptionNumber = 0 v.MonthlyNewManualDataAnalysisNumber = 0 v.MonthlyManualDataAnalysisConsumptionNumber = 0 diff --git a/internal/logic/bundleExtendLogic.go b/internal/logic/bundleExtendLogic.go index 2f0dce3..a95c360 100644 --- a/internal/logic/bundleExtendLogic.go +++ b/internal/logic/bundleExtendLogic.go @@ -225,9 +225,9 @@ func cal(data model.BundleBalance, total, limit int, date time.Time) int { released += limit } - interval := date.Year()*12 + int(date.Month()) - (data.StartAt.Year()*12 + int(data.StartAt.Month())) // 后续月份释放的 - released += interval * limit - remaining := max(total-released, 0) // 还剩余多少次没有发放 + interval := date.Year()*12 + int(date.Month()) - (data.StartAt.Year()*12 + int(data.StartAt.Month())) + released += max(interval-1, 0) * limit // 后续月份释放的 + remaining := max(total-released, 0) // 还剩余多少次没有发放 if data.StartAt.Month() == date.Month() && data.StartAt.Year() == date.Year() && data.StartAt.Day() >= 16 { // 本月为第一个月并且16号后购买只给一半(向上取整) return min((limit+1)/2, remaining) @@ -347,7 +347,6 @@ func CreateBundleBalance(req *bundle.CreateBundleBalanceReq) (*bundle.CreateBund } } now := time.Now() - // 当月可用的限制类型数等于本月方法的套餐和增值两种类型的总和 data.MonthlyBundleLimitExpiredVideoNumber = cal(data, data.BundleLimitVideoExpiredNumber, data.MonthlyLimitVideoQuotaNumber, now) data.MonthlyIncreaseLimitExpiredVideoNumber = cal(data, data.IncreaseLimitVideoExpiredNumber, data.MonthlyLimitVideoQuotaNumber, now) data.MonthlyBundleLimitVideoNumber = cal(data, data.BundleLimitVideoNumber, data.MonthlyLimitVideoQuotaNumber, now)