使用余量修改
This commit is contained in:
parent
60d56109fe
commit
ef1a9ab5de
@ -210,38 +210,38 @@ func AddBundleBalanceByUserId(data model.BundleBalanceUsePo) (usedType int, err
|
||||
return errors.New("当前未绑定账号")
|
||||
}
|
||||
if data.VideoNumber > 0 {
|
||||
if oldData.MonthlyLimitVideoExpireNumber > oldData.MonthlyLimitVideoExpireConsumptionNumber { // 当月可使用的会过期的限制类型充足
|
||||
if oldData.BundleLimitVideoExpiredConsumptionNumber < oldData.BundleLimitVideoExpiredNumber { // 套餐内会过期的限制类型视频充足
|
||||
oldData.MonthlyLimitVideoExpireConsumptionNumber++
|
||||
oldData.BundleLimitVideoExpiredConsumptionNumber++
|
||||
oldData.MonthlyBundleVideoConsumptionNumber++
|
||||
usedType = 1
|
||||
goto Over
|
||||
}
|
||||
if oldData.IncreaseLimitVideoExpiredConsumptionNumber < oldData.IncreaseLimitVideoExpiredNumber { // 增值服务会过期的限制类型视频充足
|
||||
oldData.MonthlyLimitVideoExpireConsumptionNumber++
|
||||
oldData.IncreaseLimitVideoExpiredConsumptionNumber++
|
||||
oldData.MonthlyIncreaseVideoConsumptionNumber++
|
||||
usedType = 2
|
||||
goto Over
|
||||
}
|
||||
// 当月可使用的会过期的限制类型充足
|
||||
if oldData.BundleLimitVideoExpiredConsumptionNumber < cal(oldData, oldData.BundleLimitVideoExpiredNumber, oldData.MonthlyLimitVideoQuotaNumber, time.Now()) { // 套餐内会过期的限制类型视频充足
|
||||
oldData.MonthlyLimitVideoExpireConsumptionNumber++
|
||||
oldData.BundleLimitVideoExpiredConsumptionNumber++
|
||||
oldData.MonthlyBundleVideoConsumptionNumber++
|
||||
usedType = 1
|
||||
goto Over
|
||||
}
|
||||
if oldData.MonthlyLimitVideoNumber > oldData.MonthlyLimitVideoConsumptionNumber { // 当月可使用的不过期的限制类型充足
|
||||
if oldData.BundleLimitVideoConsumptionNumber < oldData.BundleLimitVideoNumber { // 套餐内不过期的限制类型视频充足
|
||||
oldData.MonthlyLimitVideoConsumptionNumber++
|
||||
oldData.BundleLimitVideoConsumptionNumber++
|
||||
oldData.MonthlyBundleVideoConsumptionNumber++
|
||||
usedType = 1
|
||||
goto Over
|
||||
}
|
||||
if oldData.IncreaseLimitVideoConsumptionNumber < oldData.IncreaseLimitVideoNumber { // 增值服务不过期的限制类型视频充足
|
||||
oldData.MonthlyLimitVideoConsumptionNumber++
|
||||
oldData.IncreaseLimitVideoConsumptionNumber++
|
||||
oldData.MonthlyIncreaseVideoConsumptionNumber++
|
||||
usedType = 2
|
||||
goto Over
|
||||
}
|
||||
if oldData.IncreaseLimitVideoExpiredConsumptionNumber < cal(oldData, oldData.IncreaseLimitVideoExpiredNumber, oldData.MonthlyLimitVideoQuotaNumber, time.Now()) { // 增值服务会过期的限制类型视频充足
|
||||
oldData.MonthlyLimitVideoExpireConsumptionNumber++
|
||||
oldData.IncreaseLimitVideoExpiredConsumptionNumber++
|
||||
oldData.MonthlyIncreaseVideoConsumptionNumber++
|
||||
usedType = 2
|
||||
goto Over
|
||||
}
|
||||
|
||||
// 当月可使用的不过期的限制类型充足
|
||||
if oldData.BundleLimitVideoConsumptionNumber < cal(oldData, oldData.BundleLimitVideoNumber, oldData.MonthlyLimitVideoQuotaNumber, time.Now()) { // 套餐内不过期的限制类型视频充足
|
||||
oldData.MonthlyLimitVideoConsumptionNumber++
|
||||
oldData.BundleLimitVideoConsumptionNumber++
|
||||
oldData.MonthlyBundleVideoConsumptionNumber++
|
||||
usedType = 1
|
||||
goto Over
|
||||
}
|
||||
if oldData.IncreaseLimitVideoConsumptionNumber < cal(oldData, oldData.IncreaseLimitVideoNumber, oldData.MonthlyLimitVideoQuotaNumber, time.Now()) { // 增值服务不过期的限制类型视频充足
|
||||
oldData.MonthlyLimitVideoConsumptionNumber++
|
||||
oldData.IncreaseLimitVideoConsumptionNumber++
|
||||
oldData.MonthlyIncreaseVideoConsumptionNumber++
|
||||
usedType = 2
|
||||
goto Over
|
||||
}
|
||||
|
||||
if oldData.BundleVideoConsumptionNumber < oldData.BundleVideoNumber { //套餐内非限制类型的视频充足
|
||||
oldData.BundleVideoConsumptionNumber++
|
||||
oldData.MonthlyBundleVideoConsumptionNumber++
|
||||
@ -264,34 +264,34 @@ func AddBundleBalanceByUserId(data model.BundleBalanceUsePo) (usedType int, err
|
||||
}
|
||||
|
||||
if data.ImageNumber > 0 {
|
||||
if oldData.MonthlyLimitImageExpireNumber > oldData.MonthlyLimitImageExpireConsumptionNumber { // 当月可使用的会过期的限制类型充足
|
||||
if oldData.BundleLimitImageExpiredConsumptionNumber < oldData.BundleLimitImageExpiredNumber { // 套餐内会过期的限制类型图文充足
|
||||
oldData.MonthlyLimitImageExpireConsumptionNumber++
|
||||
oldData.BundleLimitImageExpiredConsumptionNumber++
|
||||
oldData.MonthlyBundleImageConsumptionNumber++
|
||||
goto Over
|
||||
}
|
||||
if oldData.IncreaseLimitImageExpiredConsumptionNumber < oldData.IncreaseLimitImageExpiredNumber { // 增值服务会过期的限制类型图文充足
|
||||
oldData.MonthlyLimitImageExpireConsumptionNumber++
|
||||
oldData.IncreaseLimitImageExpiredConsumptionNumber++
|
||||
oldData.MonthlyIncreaseImageConsumptionNumber++
|
||||
goto Over
|
||||
}
|
||||
// 当月可使用的会过期的限制类型充足
|
||||
if oldData.BundleLimitImageExpiredConsumptionNumber < cal(oldData, oldData.BundleLimitImageExpiredNumber, oldData.MonthlyLimitImageQuotaNumber, time.Now()) { // 套餐内会过期的限制类型图文充足
|
||||
oldData.MonthlyLimitImageExpireConsumptionNumber++
|
||||
oldData.BundleLimitImageExpiredConsumptionNumber++
|
||||
oldData.MonthlyBundleImageConsumptionNumber++
|
||||
goto Over
|
||||
}
|
||||
if oldData.MonthlyLimitImageNumber > oldData.MonthlyLimitImageConsumptionNumber { // 当月可使用的不过期的限制类型充足
|
||||
if oldData.BundleLimitImageConsumptionNumber < oldData.BundleLimitImageNumber { // 套餐内不过期的限制类型图文充足
|
||||
oldData.MonthlyLimitImageConsumptionNumber++
|
||||
oldData.BundleLimitImageConsumptionNumber++
|
||||
oldData.MonthlyBundleImageConsumptionNumber++
|
||||
goto Over
|
||||
}
|
||||
if oldData.IncreaseLimitImageConsumptionNumber < oldData.IncreaseLimitImageNumber { // 增值服务不过期的限制类型图文充足
|
||||
oldData.MonthlyLimitImageConsumptionNumber++
|
||||
oldData.IncreaseLimitImageConsumptionNumber++
|
||||
oldData.MonthlyIncreaseImageConsumptionNumber++
|
||||
goto Over
|
||||
}
|
||||
if oldData.IncreaseLimitImageExpiredConsumptionNumber < cal(oldData, oldData.IncreaseLimitImageExpiredNumber, oldData.MonthlyLimitImageQuotaNumber, time.Now()) { // 增值服务会过期的限制类型图文充足
|
||||
oldData.MonthlyLimitImageExpireConsumptionNumber++
|
||||
oldData.IncreaseLimitImageExpiredConsumptionNumber++
|
||||
oldData.MonthlyIncreaseImageConsumptionNumber++
|
||||
goto Over
|
||||
}
|
||||
|
||||
// 当月可使用的不过期的限制类型充足
|
||||
if oldData.BundleLimitImageConsumptionNumber < cal(oldData, oldData.BundleLimitImageNumber, oldData.MonthlyLimitImageQuotaNumber, time.Now()) { // 套餐内不过期的限制类型图文充足
|
||||
oldData.MonthlyLimitImageConsumptionNumber++
|
||||
oldData.BundleLimitImageConsumptionNumber++
|
||||
oldData.MonthlyBundleImageConsumptionNumber++
|
||||
goto Over
|
||||
}
|
||||
if oldData.IncreaseLimitImageConsumptionNumber < cal(oldData, oldData.IncreaseLimitImageNumber, oldData.MonthlyLimitImageQuotaNumber, time.Now()) { // 增值服务不过期的限制类型图文充足
|
||||
oldData.MonthlyLimitImageConsumptionNumber++
|
||||
oldData.IncreaseLimitImageConsumptionNumber++
|
||||
oldData.MonthlyIncreaseImageConsumptionNumber++
|
||||
goto Over
|
||||
}
|
||||
|
||||
if oldData.BundleImageConsumptionNumber < oldData.BundleImageNumber { //套餐内非限制类型的图文充足
|
||||
oldData.BundleImageConsumptionNumber++
|
||||
oldData.MonthlyBundleImageConsumptionNumber++
|
||||
@ -311,34 +311,33 @@ func AddBundleBalanceByUserId(data model.BundleBalanceUsePo) (usedType int, err
|
||||
}
|
||||
|
||||
if data.DataAnalysisNumber > 0 {
|
||||
if oldData.MonthlyLimitDataAnalysisExpireNumber > oldData.MonthlyLimitDataAnalysisExpireConsumptionNumber { // 当月可使用的会过期的限制类型充足
|
||||
if oldData.BundleLimitDataAnalysisExpiredConsumptionNumber < oldData.BundleLimitDataAnalysisExpiredNumber { // 套餐内会过期的限制类型数据分析充足
|
||||
oldData.MonthlyLimitDataAnalysisExpireConsumptionNumber++
|
||||
oldData.BundleLimitDataAnalysisExpiredConsumptionNumber++
|
||||
oldData.MonthlyBundleDataAnalysisConsumptionNumber++
|
||||
goto Over
|
||||
}
|
||||
if oldData.IncreaseLimitDataAnalysisExpiredConsumptionNumber < oldData.IncreaseLimitDataAnalysisExpiredNumber { // 增值服务会过期的限制类型数据分析充足
|
||||
oldData.MonthlyLimitDataAnalysisExpireConsumptionNumber++
|
||||
oldData.IncreaseLimitDataAnalysisExpiredConsumptionNumber++
|
||||
oldData.MonthlyIncreaseDataAnalysisConsumptionNumber++
|
||||
goto Over
|
||||
}
|
||||
// 当月可使用的会过期的限制类型充足
|
||||
if oldData.BundleLimitDataAnalysisExpiredConsumptionNumber < cal(oldData, oldData.BundleLimitDataAnalysisExpiredNumber, oldData.MonthlyLimitDataAnalysisQuotaNumber, time.Now()) { // 套餐内会过期的限制类型数据分析充足
|
||||
oldData.MonthlyLimitDataAnalysisExpireConsumptionNumber++
|
||||
oldData.BundleLimitDataAnalysisExpiredConsumptionNumber++
|
||||
oldData.MonthlyBundleDataAnalysisConsumptionNumber++
|
||||
goto Over
|
||||
}
|
||||
if oldData.MonthlyLimitDataAnalysisNumber > oldData.MonthlyLimitDataAnalysisConsumptionNumber { // 当月可使用的不过期的限制类型充足
|
||||
if oldData.BundleLimitDataAnalysisConsumptionNumber < oldData.BundleLimitDataAnalysisNumber { // 套餐内不过期的限制类型数据分析充足
|
||||
oldData.MonthlyLimitDataAnalysisConsumptionNumber++
|
||||
oldData.BundleLimitDataAnalysisConsumptionNumber++
|
||||
oldData.MonthlyBundleDataAnalysisConsumptionNumber++
|
||||
goto Over
|
||||
}
|
||||
if oldData.IncreaseLimitDataAnalysisConsumptionNumber < oldData.IncreaseLimitDataAnalysisNumber { // 增值服务不过期的限制类型数据分析充足
|
||||
oldData.MonthlyLimitDataAnalysisConsumptionNumber++
|
||||
oldData.IncreaseLimitDataAnalysisConsumptionNumber++
|
||||
oldData.MonthlyIncreaseDataAnalysisConsumptionNumber++
|
||||
goto Over
|
||||
}
|
||||
if oldData.IncreaseLimitDataAnalysisExpiredConsumptionNumber < cal(oldData, oldData.IncreaseLimitDataAnalysisExpiredNumber, oldData.MonthlyLimitDataAnalysisQuotaNumber, time.Now()) { // 增值服务会过期的限制类型数据分析充足
|
||||
oldData.MonthlyLimitDataAnalysisExpireConsumptionNumber++
|
||||
oldData.IncreaseLimitDataAnalysisExpiredConsumptionNumber++
|
||||
oldData.MonthlyIncreaseDataAnalysisConsumptionNumber++
|
||||
goto Over
|
||||
}
|
||||
// 当月可使用的不过期的限制类型充足
|
||||
if oldData.BundleLimitDataAnalysisConsumptionNumber < cal(oldData, oldData.BundleLimitDataAnalysisNumber, oldData.MonthlyLimitDataAnalysisQuotaNumber, time.Now()) { // 套餐内不过期的限制类型数据分析充足
|
||||
oldData.MonthlyLimitDataAnalysisConsumptionNumber++
|
||||
oldData.BundleLimitDataAnalysisConsumptionNumber++
|
||||
oldData.MonthlyBundleDataAnalysisConsumptionNumber++
|
||||
goto Over
|
||||
}
|
||||
if oldData.IncreaseLimitDataAnalysisConsumptionNumber < cal(oldData, oldData.IncreaseLimitDataAnalysisNumber, oldData.MonthlyLimitDataAnalysisQuotaNumber, time.Now()) { // 增值服务不过期的限制类型数据分析充足
|
||||
oldData.MonthlyLimitDataAnalysisConsumptionNumber++
|
||||
oldData.IncreaseLimitDataAnalysisConsumptionNumber++
|
||||
oldData.MonthlyIncreaseDataAnalysisConsumptionNumber++
|
||||
goto Over
|
||||
}
|
||||
|
||||
if oldData.BundleLimitDataAnalysisNumber < oldData.BundleDataAnalysisNumber { //套餐内非限制类型的数据分析充足
|
||||
oldData.BundleLimitDataAnalysisNumber++
|
||||
oldData.MonthlyBundleDataAnalysisConsumptionNumber++
|
||||
@ -648,3 +647,25 @@ func SetBundleBalanceLayout(req *bundle.SetBundleBalanceLayoutReq) error {
|
||||
DoUpdates: clause.AssignmentColumns([]string{"data"}),
|
||||
}).Create(&model.BundleBalanceLayout{Data: req.Data, UserId: uint64(req.UserId)}).Error
|
||||
}
|
||||
|
||||
// 计算本月发放的限制类型数量
|
||||
func cal(data model.BundleBalance, total, limit int, date time.Time) int {
|
||||
var released int // 已释放的次数
|
||||
|
||||
if data.StartAt.Month() == date.Month() && data.StartAt.Year() == date.Year() { //第一个月释放的
|
||||
} else if data.StartAt.Day() >= 16 {
|
||||
released += (limit + 1) / 2
|
||||
} else {
|
||||
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) // 还剩余多少次没有发放
|
||||
if data.StartAt.Month() == date.Month() && data.StartAt.Year() == date.Year() && data.StartAt.Day() >= 16 { // 本月为第一个月并且16号后购买只给一半(向上取整)
|
||||
return min((limit+1)/2, remaining)
|
||||
}
|
||||
if data.ExpiredAt.Month() == date.Month() && data.ExpiredAt.Year() == date.Year() && data.ExpiredAt.Day() < 16 { // 本月为最后一个月并且16号前到期只给一半(向下取整)
|
||||
return min(limit/2, remaining)
|
||||
}
|
||||
return min(limit, remaining)
|
||||
}
|
||||
|
@ -144,7 +144,9 @@ func GetBundleBalanceList(req *bundle.GetBundleBalanceListReq) (*bundle.GetBundl
|
||||
ManualDataAnalysisNumber: int32(m.ManualDataAnalysisNumber),
|
||||
Activate: int32(m.Activate),
|
||||
}
|
||||
|
||||
if result.Activate != 2 { // 除了等于0的情况
|
||||
result.Activate = 1
|
||||
}
|
||||
if m.OrderUUID != "" {
|
||||
result.Bought = 2
|
||||
} else {
|
||||
|
Loading…
Reference in New Issue
Block a user