Updata:增加每月季度发放竞品数函数

This commit is contained in:
jiaji.H 2026-01-12 15:07:23 +08:00
parent bf41622eab
commit 8536070eea

View File

@ -695,6 +695,31 @@ inner join (
return min(limit, remaining) 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 v.MonthlyInvalidBundleVideoNumber = v.MonthlyBundleLimitExpiredVideoNumber - v.MonthlyBundleLimitExpiredVideoConsumptionNumber
// 历史失效的套餐权益视频总数 // 历史失效的套餐权益视频总数
@ -757,13 +782,13 @@ inner join (
v.MonthlyIncreaseLimitDataAnalysisNumber = v.MonthlyIncreaseLimitDataAnalysisNumber - v.MonthlyIncreaseLimitDataAnalysisConsumptionNumber + cal(v.IncreaseLimitDataAnalysisNumber, v.MonthlyLimitDataAnalysisQuotaNumber) 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)
// 重置单月消耗数量 // 重置单月消耗数量
//视频 //视频