1
This commit is contained in:
parent
bbd69e32b3
commit
84e78bc808
@ -203,7 +203,7 @@ func AddBundleBalanceByUserId(data model.BundleBalanceUsePo) error {
|
|||||||
return errors.New("账号数不足")
|
return errors.New("账号数不足")
|
||||||
}
|
}
|
||||||
} else { // 减少账号消耗数,用于解绑账号
|
} else { // 减少账号消耗数,用于解绑账号
|
||||||
for range data.AccountNumber {
|
for range -data.AccountNumber {
|
||||||
if oldData.IncreaseAccountConsumptionNumber > 0 {
|
if oldData.IncreaseAccountConsumptionNumber > 0 {
|
||||||
oldData.IncreaseAccountConsumptionNumber--
|
oldData.IncreaseAccountConsumptionNumber--
|
||||||
continue
|
continue
|
||||||
@ -215,7 +215,6 @@ func AddBundleBalanceByUserId(data model.BundleBalanceUsePo) error {
|
|||||||
return errors.New("当前未绑定账号")
|
return errors.New("当前未绑定账号")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for range data.VideoNumber {
|
for range data.VideoNumber {
|
||||||
if oldData.MonthlyLimitVideoConsumptionNumber < oldData.MonthlyLimitVideoNumber { // 限制类型视频可用额度充足
|
if oldData.MonthlyLimitVideoConsumptionNumber < oldData.MonthlyLimitVideoNumber { // 限制类型视频可用额度充足
|
||||||
if oldData.BundleLimitVideoExpiredConsumptionNumber < oldData.BundleLimitVideoExpiredNumber { // 套餐内会过期的限制类型视频充足
|
if oldData.BundleLimitVideoExpiredConsumptionNumber < oldData.BundleLimitVideoExpiredNumber { // 套餐内会过期的限制类型视频充足
|
||||||
@ -239,8 +238,8 @@ func AddBundleBalanceByUserId(data model.BundleBalanceUsePo) error {
|
|||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if oldData.BundleLimitVideoNumber < oldData.BundleVideoNumber { //套餐内非限制类型的视频充足
|
if oldData.BundleVideoConsumptionNumber < oldData.BundleVideoNumber { //套餐内非限制类型的视频充足
|
||||||
oldData.BundleLimitVideoNumber++
|
oldData.BundleVideoConsumptionNumber++
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
if oldData.IncreaseVideoConsumptionNumber < oldData.IncreaseVideoNumber { //增值服务非限制类型的视频充足
|
if oldData.IncreaseVideoConsumptionNumber < oldData.IncreaseVideoNumber { //增值服务非限制类型的视频充足
|
||||||
@ -278,8 +277,8 @@ func AddBundleBalanceByUserId(data model.BundleBalanceUsePo) error {
|
|||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if oldData.BundleLimitImageNumber < oldData.BundleImageNumber { //套餐内非限制类型的图文充足
|
if oldData.BundleImageConsumptionNumber < oldData.BundleImageNumber { //套餐内非限制类型的图文充足
|
||||||
oldData.BundleLimitImageNumber++
|
oldData.BundleImageConsumptionNumber++
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
if oldData.IncreaseImageConsumptionNumber < oldData.IncreaseImageNumber { //增值服务非限制类型的图文充足
|
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 {
|
func ExtendBundleBalanceByUserId(data model.BundleBalanceExtendPo) error {
|
||||||
return app.ModuleClients.BundleDB.Transaction(func(tx *gorm.DB) error {
|
return app.ModuleClients.BundleDB.Transaction(func(tx *gorm.DB) error {
|
||||||
oldData := model.BundleBalance{}
|
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
|
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/dao"
|
||||||
"micro-bundle/internal/model"
|
"micro-bundle/internal/model"
|
||||||
"micro-bundle/pb/bundle"
|
"micro-bundle/pb/bundle"
|
||||||
|
"strconv"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"dubbo.apache.org/dubbo-go/v3/common/logger"
|
"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) {
|
func AddBundleBalance(req *bundle.AddBundleBalanceReq) (*bundle.AddBundleBalanceResp, error) {
|
||||||
data := model.BundleBalanceUsePo{
|
data := model.BundleBalanceUsePo{
|
||||||
|
UserId: int(req.UserId),
|
||||||
AccountNumber: int(req.AccountConsumptionNumber),
|
AccountNumber: int(req.AccountConsumptionNumber),
|
||||||
ImageNumber: int(req.ImageConsumptionNumber),
|
ImageNumber: int(req.ImageConsumptionNumber),
|
||||||
VideoNumber: int(req.VideoConsumptionNumber),
|
VideoNumber: int(req.VideoConsumptionNumber),
|
||||||
DataAnalysisNumber: int(req.DataAnalysisConsumptionNumber),
|
DataAnalysisNumber: int(req.DataAnalysisConsumptionNumber),
|
||||||
}
|
}
|
||||||
if err := copier.Copy(&data, req); err != nil {
|
|
||||||
logger.Error(err)
|
|
||||||
return nil, errors.New("操作失败")
|
|
||||||
}
|
|
||||||
return nil, dao.AddBundleBalanceByUserId(data)
|
return nil, dao.AddBundleBalanceByUserId(data)
|
||||||
}
|
}
|
||||||
|
|
||||||
func CreateBundleBalance(req *bundle.CreateBundleBalanceReq) (*bundle.CreateBundleBalanceResp, error) {
|
func CreateBundleBalance(req *bundle.CreateBundleBalanceReq) (*bundle.CreateBundleBalanceResp, error) {
|
||||||
var data model.BundleBalance
|
var data model.BundleBalance
|
||||||
if err := copier.Copy(&data, req); err != nil {
|
|
||||||
logger.Error(err)
|
addValues, err := dao.GetValueAddByOrderUUID(req.OrderUUID)
|
||||||
return nil, errors.New("操作失败")
|
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 {
|
if err != nil {
|
||||||
logger.Error(err)
|
logger.Error(err)
|
||||||
return nil, errors.New("创建余量信息失败")
|
return nil, errors.New("创建余量信息失败")
|
||||||
@ -186,3 +288,7 @@ func ConfirmWork(req *bundle.ConfirmWorkReq) (*bundle.ConfirmWorkResp, error) {
|
|||||||
func BundleActivate(req *bundle.BundleActivateReq) error {
|
func BundleActivate(req *bundle.BundleActivateReq) error {
|
||||||
return dao.BundleActivate(req.Ids)
|
return dao.BundleActivate(req.Ids)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func UpdateBundleBalance() {
|
||||||
|
|
||||||
|
}
|
||||||
|
@ -303,3 +303,17 @@ type BundleBalanceExtendPo struct {
|
|||||||
DataAnalysisNumber int
|
DataAnalysisNumber int
|
||||||
DurationNumber 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