1
This commit is contained in:
parent
bbd69e32b3
commit
84e78bc808
@ -203,7 +203,7 @@ func AddBundleBalanceByUserId(data model.BundleBalanceUsePo) error {
|
||||
return errors.New("账号数不足")
|
||||
}
|
||||
} else { // 减少账号消耗数,用于解绑账号
|
||||
for range data.AccountNumber {
|
||||
for range -data.AccountNumber {
|
||||
if oldData.IncreaseAccountConsumptionNumber > 0 {
|
||||
oldData.IncreaseAccountConsumptionNumber--
|
||||
continue
|
||||
@ -215,7 +215,6 @@ func AddBundleBalanceByUserId(data model.BundleBalanceUsePo) error {
|
||||
return errors.New("当前未绑定账号")
|
||||
}
|
||||
}
|
||||
|
||||
for range data.VideoNumber {
|
||||
if oldData.MonthlyLimitVideoConsumptionNumber < oldData.MonthlyLimitVideoNumber { // 限制类型视频可用额度充足
|
||||
if oldData.BundleLimitVideoExpiredConsumptionNumber < oldData.BundleLimitVideoExpiredNumber { // 套餐内会过期的限制类型视频充足
|
||||
@ -239,8 +238,8 @@ func AddBundleBalanceByUserId(data model.BundleBalanceUsePo) error {
|
||||
continue
|
||||
}
|
||||
}
|
||||
if oldData.BundleLimitVideoNumber < oldData.BundleVideoNumber { //套餐内非限制类型的视频充足
|
||||
oldData.BundleLimitVideoNumber++
|
||||
if oldData.BundleVideoConsumptionNumber < oldData.BundleVideoNumber { //套餐内非限制类型的视频充足
|
||||
oldData.BundleVideoConsumptionNumber++
|
||||
continue
|
||||
}
|
||||
if oldData.IncreaseVideoConsumptionNumber < oldData.IncreaseVideoNumber { //增值服务非限制类型的视频充足
|
||||
@ -278,8 +277,8 @@ func AddBundleBalanceByUserId(data model.BundleBalanceUsePo) error {
|
||||
continue
|
||||
}
|
||||
}
|
||||
if oldData.BundleLimitImageNumber < oldData.BundleImageNumber { //套餐内非限制类型的图文充足
|
||||
oldData.BundleLimitImageNumber++
|
||||
if oldData.BundleImageConsumptionNumber < oldData.BundleImageNumber { //套餐内非限制类型的图文充足
|
||||
oldData.BundleImageConsumptionNumber++
|
||||
continue
|
||||
}
|
||||
if oldData.IncreaseImageConsumptionNumber < oldData.IncreaseImageNumber { //增值服务非限制类型的图文充足
|
||||
@ -336,6 +335,10 @@ func AddBundleBalanceByUserId(data model.BundleBalanceUsePo) error {
|
||||
})
|
||||
}
|
||||
|
||||
func CreateUsedRecord(tx *gorm.DB, data model.BundleUsedRecord) error {
|
||||
return tx.Create(&data).Error
|
||||
}
|
||||
|
||||
func ExtendBundleBalanceByUserId(data model.BundleBalanceExtendPo) error {
|
||||
return app.ModuleClients.BundleDB.Transaction(func(tx *gorm.DB) error {
|
||||
oldData := model.BundleBalance{}
|
||||
@ -454,3 +457,8 @@ func BundleActivate(ids []uint32) error {
|
||||
}
|
||||
return app.ModuleClients.BundleDB.Model(&model.BundleActivate{}).Where("user_id = ?").Save(batch).Error
|
||||
}
|
||||
|
||||
func GetValueAddByOrderUUID(orderUUID string) (data []model.BundleOrderValueAdd, err error) {
|
||||
err = app.ModuleClients.BundleDB.Model(&model.BundleOrderValueAdd{}).Where("order_uuid = ?", orderUUID).Find(&data).Error
|
||||
return
|
||||
}
|
||||
|
@ -5,6 +5,7 @@ import (
|
||||
"micro-bundle/internal/dao"
|
||||
"micro-bundle/internal/model"
|
||||
"micro-bundle/pb/bundle"
|
||||
"strconv"
|
||||
"time"
|
||||
|
||||
"dubbo.apache.org/dubbo-go/v3/common/logger"
|
||||
@ -94,25 +95,126 @@ func GetBundleBalanceByUserId(req *bundle.GetBundleBalanceByUserIdReq) (*bundle.
|
||||
|
||||
func AddBundleBalance(req *bundle.AddBundleBalanceReq) (*bundle.AddBundleBalanceResp, error) {
|
||||
data := model.BundleBalanceUsePo{
|
||||
UserId: int(req.UserId),
|
||||
AccountNumber: int(req.AccountConsumptionNumber),
|
||||
ImageNumber: int(req.ImageConsumptionNumber),
|
||||
VideoNumber: int(req.VideoConsumptionNumber),
|
||||
DataAnalysisNumber: int(req.DataAnalysisConsumptionNumber),
|
||||
}
|
||||
if err := copier.Copy(&data, req); err != nil {
|
||||
logger.Error(err)
|
||||
return nil, errors.New("操作失败")
|
||||
}
|
||||
return nil, dao.AddBundleBalanceByUserId(data)
|
||||
}
|
||||
|
||||
func CreateBundleBalance(req *bundle.CreateBundleBalanceReq) (*bundle.CreateBundleBalanceResp, error) {
|
||||
var data model.BundleBalance
|
||||
if err := copier.Copy(&data, req); err != nil {
|
||||
logger.Error(err)
|
||||
return nil, errors.New("操作失败")
|
||||
|
||||
addValues, err := dao.GetValueAddByOrderUUID(req.OrderUUID)
|
||||
if err != nil || len(addValues) == 0 {
|
||||
return nil, errors.New("获取增值服务失败")
|
||||
}
|
||||
err := dao.CreateBundleBalance(data)
|
||||
data.StartAt = time.Now()
|
||||
data.ExpiredAt = time.Now()
|
||||
userId, err := strconv.Atoi(addValues[0].CustomerID)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
data.Month = time.Now().Format("2006-01")
|
||||
data.UserId = userId
|
||||
data.OrderUUID = req.OrderUUID
|
||||
for _, v := range addValues {
|
||||
switch v.ServiceType {
|
||||
case 1: // 视频类型
|
||||
if v.EquityType == 1 { // 套餐权益
|
||||
if v.QuotaType == 2 { // 限制额度
|
||||
data.MonthlyLimitVideoNumber = int(v.QuotaValue)
|
||||
if v.IsExpired { // 会过期的限制类型
|
||||
data.BundleLimitVideoExpiredNumber += int(v.Num)
|
||||
} else {
|
||||
data.BundleLimitVideoNumber += int(v.Num)
|
||||
}
|
||||
} else {
|
||||
data.BundleVideoNumber += int(v.Num)
|
||||
}
|
||||
} else {
|
||||
if v.QuotaType == 2 { // 限制额度
|
||||
data.MonthlyLimitVideoNumber = int(v.QuotaValue)
|
||||
if v.IsExpired { // 会过期的限制类型
|
||||
data.IncreaseLimitVideoExpiredNumber += int(v.Num)
|
||||
} else {
|
||||
data.IncreaseLimitVideoNumber += int(v.Num)
|
||||
}
|
||||
} else {
|
||||
data.IncreaseVideoNumber += int(v.Num)
|
||||
}
|
||||
}
|
||||
case 2: // 图文类型
|
||||
if v.EquityType == 1 { // 套餐权益
|
||||
if v.QuotaType == 2 { // 限制额度
|
||||
data.MonthlyLimitImageNumber = int(v.QuotaValue)
|
||||
if v.IsExpired { // 会过期的限制类型
|
||||
data.BundleLimitImageExpiredNumber += int(v.Num)
|
||||
} else {
|
||||
data.BundleLimitImageNumber += int(v.Num)
|
||||
}
|
||||
} else {
|
||||
data.BundleImageNumber += int(v.Num)
|
||||
}
|
||||
} else {
|
||||
if v.QuotaType == 2 { // 限制额度
|
||||
data.MonthlyLimitImageNumber = int(v.QuotaValue)
|
||||
if v.IsExpired { // 会过期的限制类型
|
||||
data.IncreaseLimitImageExpiredNumber += int(v.Num)
|
||||
} else {
|
||||
data.IncreaseLimitImageNumber += int(v.Num)
|
||||
}
|
||||
} else {
|
||||
|
||||
data.IncreaseImageNumber += int(v.Num)
|
||||
}
|
||||
}
|
||||
case 3: // 数据分析
|
||||
if v.EquityType == 1 { // 套餐权益
|
||||
if v.QuotaType == 2 { // 限制额度
|
||||
data.MonthlyLimitDataAnalysisNumber = int(v.QuotaValue)
|
||||
if v.IsExpired { // 会过期的限制类型
|
||||
data.BundleLimitDataAnalysisExpiredNumber += int(v.Num)
|
||||
} else {
|
||||
data.BundleLimitDataAnalysisNumber += int(v.Num)
|
||||
}
|
||||
} else {
|
||||
data.BundleDataAnalysisNumber += int(v.Num)
|
||||
}
|
||||
} else {
|
||||
if v.QuotaType == 2 { // 限制额度
|
||||
data.MonthlyLimitDataAnalysisNumber = int(v.QuotaValue)
|
||||
if v.IsExpired { // 会过期的限制类型
|
||||
data.IncreaseLimitDataAnalysisExpiredNumber += int(v.Num)
|
||||
} else {
|
||||
data.IncreaseLimitDataAnalysisNumber += int(v.Num)
|
||||
}
|
||||
} else {
|
||||
|
||||
data.IncreaseDataAnalysisNumber += int(v.Num)
|
||||
}
|
||||
}
|
||||
case 4: // 账号数
|
||||
if v.EquityType == 1 { // 套餐权益
|
||||
data.BundleAccountNumber += int(v.Num)
|
||||
} else {
|
||||
data.IncreaseAccountNumber += int(v.Num)
|
||||
}
|
||||
case 5: // 可用时长
|
||||
switch v.Unit {
|
||||
case "天":
|
||||
data.ExpiredAt = data.ExpiredAt.Add(time.Hour * 24 * time.Duration(v.Num))
|
||||
case "月":
|
||||
data.ExpiredAt = data.ExpiredAt.Add(time.Hour * 24 * 30 * time.Duration(v.Num))
|
||||
case "年":
|
||||
data.ExpiredAt = data.ExpiredAt.Add(time.Hour * 24 * 365 * time.Duration(v.Num))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
err = dao.CreateBundleBalance(data)
|
||||
if err != nil {
|
||||
logger.Error(err)
|
||||
return nil, errors.New("创建余量信息失败")
|
||||
@ -186,3 +288,7 @@ func ConfirmWork(req *bundle.ConfirmWorkReq) (*bundle.ConfirmWorkResp, error) {
|
||||
func BundleActivate(req *bundle.BundleActivateReq) error {
|
||||
return dao.BundleActivate(req.Ids)
|
||||
}
|
||||
|
||||
func UpdateBundleBalance() {
|
||||
|
||||
}
|
||||
|
@ -303,3 +303,17 @@ type BundleBalanceExtendPo struct {
|
||||
DataAnalysisNumber int
|
||||
DurationNumber int
|
||||
}
|
||||
|
||||
type BundleUsedRecord struct {
|
||||
gorm.Model
|
||||
UserID uint64 `gorm:"column:user_id;not null"`
|
||||
Type string `gorm:"column:type;size:100"`
|
||||
OrderUUID string `gorm:"column:order_uuid;size:100"`
|
||||
IsIncrement int `gorm:"column:is_increment"`
|
||||
ConsumptionType int `gorm:"column:consumption_type"`
|
||||
}
|
||||
|
||||
// TableName 设置表名
|
||||
func (BundleUsedRecord) TableName() string {
|
||||
return "bundle_used_record"
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user