feat:分类权益

This commit is contained in:
jiaji.H 2025-09-10 13:55:41 +08:00
parent 2461bb8a93
commit 4d42019882
5 changed files with 1221 additions and 1195 deletions

View File

@ -64,6 +64,7 @@ func SaveBundle(req *bundle.BundleProfile) (res *bundle.SaveResponse, err error)
if req.Sort <= 0 { if req.Sort <= 0 {
return res, errors.New("排序参数需为正整数") return res, errors.New("排序参数需为正整数")
} }
//套餐主表数据
bundleProfile := &model.BundleProfile{ bundleProfile := &model.BundleProfile{
Name: req.Name, Name: req.Name,
Sort: req.Sort, Sort: req.Sort,
@ -84,6 +85,7 @@ func SaveBundle(req *bundle.BundleProfile) (res *bundle.SaveResponse, err error)
PriceType: req.PriceType, PriceType: req.PriceType,
Language: req.Language, Language: req.Language,
} }
//必须先创建中文版本
if req.Uuid == "" && req.Language != msg.ZH_CN { if req.Uuid == "" && req.Language != msg.ZH_CN {
return res, errors.New("请先创建中文版本套餐") return res, errors.New("请先创建中文版本套餐")
} }
@ -99,10 +101,13 @@ func SaveBundle(req *bundle.BundleProfile) (res *bundle.SaveResponse, err error)
// } // }
// } // }
// } // }
//现需要区分类型 分为 1套餐权益该类型必须关联一个可用时长类型的权益 2套餐可选附加权益非必选可为空
selectService := make([]*model.BundleToValueAddService, 0) selectService := make([]*model.BundleToValueAddService, 0)
var selectValueAddServiceCount = make(map[int]struct{}) //增值服务类型数量 var pkgBenefitsValueAddServiceCount = make(map[int]struct{}) //套餐权益增值服务类型数量
var pkgOptionalValueAddServiceCount = make(map[int]struct{}) //套餐可选附加权益增值服务类型数量
if req.Language == msg.ZH_CN && req.SelectValueAddService != nil && len(req.SelectValueAddService) > 0 { if req.Language == msg.ZH_CN && req.SelectValueAddService != nil && len(req.SelectValueAddService) > 0 {
for _, v := range req.SelectValueAddService { for _, v := range req.SelectValueAddService {
detail, checkErr := dao.ValueAddServiceDetailByUuidAndLanguage(v.ValueAddUuid, req.Language) detail, checkErr := dao.ValueAddServiceDetailByUuidAndLanguage(v.ValueAddUuid, req.Language)
if checkErr != nil { if checkErr != nil {
if checkErr == gorm.ErrRecordNotFound { if checkErr == gorm.ErrRecordNotFound {
@ -111,13 +116,22 @@ func SaveBundle(req *bundle.BundleProfile) (res *bundle.SaveResponse, err error)
return res, errors.New("查询增值服务失败") return res, errors.New("查询增值服务失败")
} }
} }
if _, exists := selectValueAddServiceCount[int(detail.ServiceType)]; exists { switch v.BenefitsType {
case 1:
if _, exists := pkgBenefitsValueAddServiceCount[int(detail.ServiceType)]; exists {
return res, errors.New("每种增值服务类型只可选择一个") return res, errors.New("每种增值服务类型只可选择一个")
} }
selectValueAddServiceCount[int(detail.ServiceType)] = struct{}{} pkgBenefitsValueAddServiceCount[int(detail.ServiceType)] = struct{}{}
case 2:
if _, exists := pkgOptionalValueAddServiceCount[int(detail.ServiceType)]; exists {
return res, errors.New("每种增值服务类型只可选择一个")
}
pkgOptionalValueAddServiceCount[int(detail.ServiceType)] = struct{}{}
}
selectService = append(selectService, &model.BundleToValueAddService{ selectService = append(selectService, &model.BundleToValueAddService{
ValueUid: v.ValueAddUuid, ValueUid: v.ValueAddUuid,
IsDisplay: v.IsDisplay, IsDisplay: v.IsDisplay,
BenefitsType: v.BenefitsType,
}) })
} }
} }

View File

@ -49,6 +49,7 @@ type BundleToValueAddService struct {
ValueUid string `json:"valueUid" gorm:"column:value_uid;type:varchar(1024);comment:增值服务UUID"` ValueUid string `json:"valueUid" gorm:"column:value_uid;type:varchar(1024);comment:增值服务UUID"`
ValueAddService ValueAddService `gorm:"foreignKey:ValueUid;references:UUID" json:"valueAddService"` ValueAddService ValueAddService `gorm:"foreignKey:ValueUid;references:UUID" json:"valueAddService"`
IsDisplay bool `json:"isDisplay" gorm:"column:is_display;type:tinyint(1);comment:是否显示"` IsDisplay bool `json:"isDisplay" gorm:"column:is_display;type:tinyint(1);comment:是否显示"`
BenefitsType int32 `json:"benefitsType" gorm:"column:benefits_type;type:int;comment:套餐权益类型 1:套餐权益 2:套餐可选附加权益"`
CreatedAt int64 `gorm:"column:created_at;autoCreateTime"` CreatedAt int64 `gorm:"column:created_at;autoCreateTime"`
UpdatedAt int64 `gorm:"column:updated_at;autoCreateTime"` UpdatedAt int64 `gorm:"column:updated_at;autoCreateTime"`
DeletedAt soft_delete.DeletedAt DeletedAt soft_delete.DeletedAt

View File

@ -285,9 +285,10 @@ message SaveResponse {
} }
message SelectValueAddService { message SelectValueAddService {
string valueAddUuid = 1 [json_name = "valueAddUuid"]; string valueAddUuid = 1 [json_name = "valueAddUuid"];
string serviceName= 2 [json_name = "serviceName"]; string serviceName= 2 [json_name = "serviceName"];//
bool isDisplay = 3 [json_name = "isDisplay"]; bool isDisplay = 3 [json_name = "isDisplay"];//
int32 serviceType = 4 [json_name = "serviceType"]; int32 serviceType = 4 [json_name = "serviceType"];//
int32 benefitsType = 5 [json_name = "benefitsType"]; // 1: 2:
} }
message DelBundleRequest { message DelBundleRequest {

File diff suppressed because it is too large Load Diff

View File

@ -1,7 +1,7 @@
// Code generated by protoc-gen-go-triple. DO NOT EDIT. // Code generated by protoc-gen-go-triple. DO NOT EDIT.
// versions: // versions:
// - protoc-gen-go-triple v1.0.5 // - protoc-gen-go-triple v1.0.5
// - protoc v4.22.0 // - protoc v5.26.0
// source: pb/bundle.proto // source: pb/bundle.proto
package bundle package bundle