diff --git a/internal/logic/bundleExtendLogic.go b/internal/logic/bundleExtendLogic.go index 471032b..5ffe757 100644 --- a/internal/logic/bundleExtendLogic.go +++ b/internal/logic/bundleExtendLogic.go @@ -300,11 +300,40 @@ func cal(data model.BundleBalance, total, limit int, date time.Time) int { func CreateBundleBalance(req *bundle.CreateBundleBalanceReq) (*bundle.CreateBundleBalanceResp, error) { var data model.BundleBalance + var orderReq *bundle.OrderRecordsDetailRequest + var addValues []model.BundleOrderValueAdd + var oldValues []model.BundleOrderValueAdd + var oldAccountInfo model.RenewalInfo - addValues, err := dao.GetValueAddByOrderUUID(req.OrderUUID) - if err != nil || len(addValues) == 0 { - return nil, errors.New("获取增值服务失败") + orderReq.Uuid = req.OrderUUID + orderInfo, err := dao.OrderRecordDetail(orderReq) + if orderInfo.PurchaseType == 1 { + //新购 + addValues, err = dao.GetValueAddByOrderUUID(req.OrderUUID) + if err != nil || len(addValues) == 0 { + return nil, errors.New("获取增值服务失败") + } + } else if orderInfo.PurchaseType == 2 { + //续费 + addValues, err = dao.GetValueAddByOrderUUID(req.OrderUUID) + if err != nil || len(addValues) == 0 { + return nil, errors.New("获取增值服务失败") + } + oldValues, err = dao.GetValueAddByOrderUUID(orderInfo.RenewalOrderUUID) + if err != nil || len(addValues) == 0 { + return nil, errors.New("获取增值服务失败") + } + for _, od := range oldValues { + if od.ServiceType == 4 { + if od.EquityType == 1 { // 套餐权益 + oldAccountInfo.AccountBundleNumber += int(od.Num) + } else { + oldAccountInfo.AccountIncreaseNumber += int(od.Num) + } + } + } } + data.StartAt = time.Now() data.ExpiredAt = time.Now() userId, err := strconv.Atoi(addValues[0].CustomerID) @@ -389,10 +418,31 @@ func CreateBundleBalance(req *bundle.CreateBundleBalanceReq) (*bundle.CreateBund } } case 4: // 账号数 - if v.EquityType == 1 { // 套餐权益 - data.BundleAccountNumber += int(v.Num) + if orderInfo.PurchaseType == 1 { + //新购 + if v.EquityType == 1 { // 套餐权益 + data.BundleAccountNumber += int(v.Num) + } else { + data.IncreaseAccountNumber += int(v.Num) + } } else { - data.IncreaseAccountNumber += int(v.Num) + //续费 + if v.EquityType == 1 { // 套餐权益 + data.BundleAccountNumber += int(v.Num) + if int(v.Num) >= oldAccountInfo.AccountBundleNumber { + data.BundleAccountConsumptionNumber += oldAccountInfo.AccountBundleNumber + } else { + data.BundleAccountConsumptionNumber += int(v.Num) + } + + } else { + data.IncreaseAccountNumber += int(v.Num) + if int(v.Num) >= oldAccountInfo.AccountIncreaseNumber { + data.IncreaseAccountConsumptionNumber += oldAccountInfo.AccountIncreaseNumber + } else { + data.IncreaseAccountConsumptionNumber += int(v.Num) + } + } } case 5: // 可用时长 switch v.Unit { diff --git a/internal/model/bundle.go b/internal/model/bundle.go index 36c1c0e..b6dab0d 100644 --- a/internal/model/bundle.go +++ b/internal/model/bundle.go @@ -433,3 +433,9 @@ type PurchaseItem struct { FinalAmount float32 `gorm:"column:finalAmount"` FeeAmount float32 `gorm:"column:feeAmount"` } + +// 续费账号数信息 +type RenewalInfo struct { + AccountBundleNumber int + AccountIncreaseNumber int +}