From bf41622eab6493db4136e4e9d49a7c2eb0397458 Mon Sep 17 00:00:00 2001 From: "jiaji.H" Date: Fri, 9 Jan 2026 16:48:33 +0800 Subject: [PATCH 1/2] =?UTF-8?q?Updata=EF=BC=9A=E6=9B=B4=E6=96=B0=E5=88=9B?= =?UTF-8?q?=E5=BB=BA=E6=AF=8F=E6=9C=88=E6=95=B0=E6=8D=AE=E7=9A=84=E6=97=B6?= =?UTF-8?q?=E9=97=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/dao/bundleExtend.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/internal/dao/bundleExtend.go b/internal/dao/bundleExtend.go index 98758ff..7754de8 100644 --- a/internal/dao/bundleExtend.go +++ b/internal/dao/bundleExtend.go @@ -805,6 +805,8 @@ inner join ( v.Month = month v.ID = 0 + v.CreatedAt = time.Time{} + v.UpdatedAt = time.Time{} app.ModuleClients.BundleDB.Create(&v) } return nil From 8536070eead1e7c5e4b54222c109a84c46983549 Mon Sep 17 00:00:00 2001 From: "jiaji.H" Date: Mon, 12 Jan 2026 15:07:23 +0800 Subject: [PATCH 2/2] =?UTF-8?q?Updata=EF=BC=9A=E5=A2=9E=E5=8A=A0=E6=AF=8F?= =?UTF-8?q?=E6=9C=88=E5=AD=A3=E5=BA=A6=E5=8F=91=E6=94=BE=E7=AB=9E=E5=93=81?= =?UTF-8?q?=E6=95=B0=E5=87=BD=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/dao/bundleExtend.go | 33 +++++++++++++++++++++++++++++---- 1 file changed, 29 insertions(+), 4 deletions(-) diff --git a/internal/dao/bundleExtend.go b/internal/dao/bundleExtend.go index 7754de8..3db056e 100644 --- a/internal/dao/bundleExtend.go +++ b/internal/dao/bundleExtend.go @@ -695,6 +695,31 @@ inner join ( return min(limit, remaining) } + //计算每个季度发放的数目 + qua := func(total, limit int) int { + var released int // 已释放的次数 + if v.StartAt.Month() == now.Month() && v.StartAt.Year() == now.Year() { + } else if v.StartAt.Day() >= 16 { //第一个月释放的 + released += (limit + 1) / 2 + } else { + released += limit + } + interval := max((now.Year()*12+int(now.Month())-(v.StartAt.Year()*12+int(v.StartAt.Month())))/3, 1) // 释放了多少个季度 + 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) + } + if v.ExpiredAt.Month() == now.Month() && v.ExpiredAt.Year() == now.Year() && v.ExpiredAt.Day() < 16 { // 本月为最后一个季度第一个月并且16号前到期只给一半(向下取整) + return min(limit/2, remaining) + } + monthDiff := now.Year()*12 + int(now.Month()) - (v.StartAt.Year()*12 + int(v.StartAt.Month())) + if monthDiff%3 == 0 && v.ExpiredAt.Month() != now.Month() { + return min(limit, remaining) + } + return 0 + } + // 当月过期的视频数 v.MonthlyInvalidBundleVideoNumber = v.MonthlyBundleLimitExpiredVideoNumber - v.MonthlyBundleLimitExpiredVideoConsumptionNumber // 历史失效的套餐权益视频总数 @@ -757,13 +782,13 @@ inner join ( v.MonthlyIncreaseLimitDataAnalysisNumber = v.MonthlyIncreaseLimitDataAnalysisNumber - v.MonthlyIncreaseLimitDataAnalysisConsumptionNumber + cal(v.IncreaseLimitDataAnalysisNumber, v.MonthlyLimitDataAnalysisQuotaNumber) // 当月套餐限制类会过期型竞品数可使用额度 - v.MonthlyBundleLimitExpiredCompetitiveNumber = cal(v.BundleLimitCompetitiveExpiredNumber, v.MonthlyLimitCompetitiveQuotaNumber) + v.MonthlyBundleLimitExpiredCompetitiveNumber = qua(v.BundleLimitCompetitiveExpiredNumber, v.MonthlyLimitCompetitiveQuotaNumber) // 当月增值限制类会过期型竞品数可使用额度 - v.MonthlyIncreaseLimitExpiredCompetitiveNumber = cal(v.IncreaseLimitCompetitiveExpiredNumber, v.MonthlyLimitCompetitiveQuotaNumber) + v.MonthlyIncreaseLimitExpiredCompetitiveNumber = qua(v.IncreaseLimitCompetitiveExpiredNumber, v.MonthlyLimitCompetitiveQuotaNumber) // 当月套餐限制类型竞品数可使用额度 - v.MonthlyBundleLimitCompetitiveNumber = v.MonthlyBundleLimitCompetitiveNumber - v.MonthlyBundleLimitCompetitiveConsumptionNumber + cal(v.BundleLimitCompetitiveNumber, v.MonthlyLimitCompetitiveQuotaNumber) + v.MonthlyBundleLimitCompetitiveNumber = v.MonthlyBundleLimitCompetitiveNumber - v.MonthlyBundleLimitCompetitiveConsumptionNumber + qua(v.BundleLimitCompetitiveNumber, v.MonthlyLimitCompetitiveQuotaNumber) // 当月增值限制类型竞品数可使用额度 - v.MonthlyIncreaseLimitCompetitiveNumber = v.MonthlyIncreaseLimitCompetitiveNumber - v.MonthlyIncreaseLimitCompetitiveConsumptionNumber + cal(v.IncreaseLimitCompetitiveNumber, v.MonthlyLimitCompetitiveQuotaNumber) + v.MonthlyIncreaseLimitCompetitiveNumber = v.MonthlyIncreaseLimitCompetitiveNumber - v.MonthlyIncreaseLimitCompetitiveConsumptionNumber + qua(v.IncreaseLimitCompetitiveNumber, v.MonthlyLimitCompetitiveQuotaNumber) // 重置单月消耗数量 //视频