更新
This commit is contained in:
parent
bcc418a55f
commit
3324129ed2
@ -216,25 +216,27 @@ func AddBundleBalanceByUserId(data model.BundleBalanceUsePo) error {
|
||||
}
|
||||
}
|
||||
for range data.VideoNumber {
|
||||
if oldData.MonthlyLimitVideoConsumptionNumber < oldData.MonthlyLimitVideoNumber { // 限制类型视频可用额度充足
|
||||
if oldData.MonthlyLimitVideoExpireNumber > oldData.MonthlyLimitVideoExpireConsumptionNumber { // 当月可使用的会过期的限制类型充足
|
||||
if oldData.BundleLimitVideoExpiredConsumptionNumber < oldData.BundleLimitVideoExpiredNumber { // 套餐内会过期的限制类型视频充足
|
||||
oldData.MonthlyLimitVideoExpireConsumptionNumber++
|
||||
oldData.BundleLimitVideoExpiredConsumptionNumber++
|
||||
oldData.MonthlyLimitVideoConsumptionNumber++
|
||||
continue
|
||||
}
|
||||
if oldData.IncreaseLimitVideoExpiredConsumptionNumber < oldData.IncreaseLimitVideoExpiredNumber { // 增值服务会过期的限制类型视频充足
|
||||
oldData.MonthlyLimitVideoExpireConsumptionNumber++
|
||||
oldData.IncreaseLimitVideoExpiredConsumptionNumber++
|
||||
oldData.MonthlyLimitVideoConsumptionNumber++
|
||||
continue
|
||||
}
|
||||
if oldData.BundleLimitVideoConsumptionNumber < oldData.BundleLimitVideoNumber { // 套餐内不会过期的限制类型视频充足
|
||||
}
|
||||
if oldData.MonthlyLimitVideoExpireNumber > oldData.MonthlyLimitVideoExpireConsumptionNumber { // 当月可使用的不过期的限制类型充足
|
||||
if oldData.BundleLimitVideoConsumptionNumber < oldData.BundleLimitVideoNumber { // 套餐内不过期的限制类型视频充足
|
||||
oldData.MonthlyLimitVideoExpireConsumptionNumber++
|
||||
oldData.BundleLimitVideoConsumptionNumber++
|
||||
oldData.MonthlyLimitVideoConsumptionNumber++
|
||||
continue
|
||||
}
|
||||
if oldData.IncreaseLimitVideoConsumptionNumber < oldData.IncreaseLimitVideoNumber { // 增值服务不会过期的限制类型视频充足
|
||||
if oldData.IncreaseLimitVideoConsumptionNumber < oldData.IncreaseLimitVideoNumber { // 增值服务不过期的限制类型视频充足
|
||||
oldData.MonthlyLimitVideoExpireConsumptionNumber++
|
||||
oldData.IncreaseLimitVideoConsumptionNumber++
|
||||
oldData.MonthlyLimitVideoConsumptionNumber++
|
||||
continue
|
||||
}
|
||||
}
|
||||
@ -500,13 +502,43 @@ inner join (
|
||||
and bb.user_id = newest.user_id`).Find(&bl).Error; err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
now := time.Now()
|
||||
month := time.Now().Format("2006-01")
|
||||
for _, v := range bl {
|
||||
|
||||
cal := 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/2 + 1
|
||||
} 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) // 还剩余多少次没有发放
|
||||
|
||||
if v.StartAt.Month() == now.Month() && v.StartAt.Year() == now.Year() && v.StartAt.Day() >= 16 { // 本月为第一个月并且16号后购买只给一半(向上取整)
|
||||
return min(limit/2+1, remaining)
|
||||
}
|
||||
if v.ExpiredAt.Month() == now.Month() && v.ExpiredAt.Year() == now.Year() && v.ExpiredAt.Day() < 16 { // 本月为最后一个月并且16号前到期只给一半(向下取整)
|
||||
return min(limit/2, remaining)
|
||||
}
|
||||
return min(limit, remaining)
|
||||
}
|
||||
|
||||
// 当月可用的限制类型数等于本月方法的套餐和增值两种类型的总和
|
||||
v.MonthlyLimitVideoExpireNumber = cal(v.BundleLimitVideoExpiredNumber, v.MonthlyLimitVideoQuotaNumber) + cal(v.IncreaseLimitVideoExpiredNumber, v.MonthlyLimitVideoQuotaNumber)
|
||||
v.MonthlyLimitVideoNumber = cal(v.BundleLimitVideoNumber, v.MonthlyLimitVideoQuotaNumber) + cal(v.IncreaseLimitVideoNumber, v.MonthlyLimitVideoQuotaNumber)
|
||||
|
||||
v.MonthlyInvalidBundleVideoNumber = v.MonthlyLimitVideoExpireNumber - v.MonthlyLimitVideoExpireConsumptionNumber // 当月过期的视频数
|
||||
v.InvalidBundleVideoNumber += v.MonthlyInvalidBundleVideoNumber
|
||||
|
||||
v.MonthlyLimitVideoConsumptionNumber = 0
|
||||
v.MonthlyLimitImageConsumptionNumber = 0
|
||||
v.MonthlyLimitDataAnalysisConsumptionNumber = 0
|
||||
// v.MonthlyInvalidBundleVideoNumber
|
||||
v.MonthlyLimitVideoExpireConsumptionNumber = 0
|
||||
v.MonthlyManualVideoConsumptionNumber = 0
|
||||
|
||||
v.Month = month
|
||||
}
|
||||
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
@ -191,8 +191,8 @@ type BundleBalance struct {
|
||||
UserId int `gorm:"column:user_id;not null"`
|
||||
Month string `gorm:"column:month;type:varchar(32);not null"`
|
||||
OrderUUID string `gorm:"column:order_uuid;type:varchar(1024);not null"`
|
||||
ExpiredAt time.Time `gorm:"column:expired_at;type:datetime;not null;comment:套餐过期时间"`
|
||||
StartAt time.Time `gorm:"column:start_at;type:datetime;not null;comment:套餐开始时间"`
|
||||
ExpiredAt time.Time `gorm:"column:expired_at;type:datetime;comment:套餐过期时间"`
|
||||
StartAt time.Time `gorm:"column:start_at;type:datetime;comment:套餐开始时间"`
|
||||
BundleAccountNumber int `gorm:"column:bundle_account_number;not null;comment:套餐账号总数"`
|
||||
IncreaseAccountNumber int `gorm:"column:increase_account_number;not null;comment:增值账号总数"`
|
||||
BundleAccountConsumptionNumber int `gorm:"column:bundle_account_number;not null;comment:套餐账号使用数"`
|
||||
@ -214,8 +214,11 @@ type BundleBalance struct {
|
||||
IncreaseLimitVideoConsumptionNumber int `gorm:"column:increase_limit_video_consumption_number;not null;comment:增值权益限制类型非过期使用数"`
|
||||
BundleLimitVideoExpiredConsumptionNumber int `gorm:"column:bundle_limit_video_expired_consumption_number;not null;comment:套餐权益限制类型会过期使用数"`
|
||||
IncreaseLimitVideoExpiredConsumptionNumber int `gorm:"column:increase_limit_video_expired_consumption_number;not null;comment:增值权益限制类型会过期使用数"`
|
||||
MonthlyLimitVideoNumber int `gorm:"column:monthly_limit_video_number;not null;comment:当月限制类型视频可使用额度"`
|
||||
MonthlyLimitVideoNumber int `gorm:"column:monthly_limit_video_number;not null;comment:当月限制类型视频可用数"`
|
||||
MonthlyLimitVideoConsumptionNumber int `gorm:"column:monthly_limit_video_consumption_number;not null;comment:当月限制类型视频已使用额度"`
|
||||
MonthlyLimitVideoExpireNumber int `gorm:"column:monthly_limit_video_expired_number;not null;comment:当月限制类型视频会过期可用数"`
|
||||
MonthlyLimitVideoExpireConsumptionNumber int `gorm:"column:monthly_limit_video_expired_consumption_number;not null;comment:当月限制类型视频会过期已使用额度"`
|
||||
MonthlyLimitVideoQuotaNumber int `gorm:"column:monthly_limit_video_quota_number;not null;comment:当月限制类型视频额度"`
|
||||
ManualVideoNumber int `gorm:"column:manual_video_number;comment:手动扩展视频总数"`
|
||||
ManualVideoConsumptionNumber int `gorm:"column:manual_video_consumption_number;comment:手动扩展视频使用数"`
|
||||
MonthlyNewManualVideoNumber int `gorm:"column:monthly_new_manual_video_number;comment:当月手动扩展视频新增数"`
|
||||
|
Loading…
Reference in New Issue
Block a user