修改套餐与服务取消逻辑
This commit is contained in:
parent
7a065f487d
commit
e8dd695efd
@ -276,6 +276,7 @@ func BundleDetailV2(req *bundle.BundleDetailRequest) (res *bundle.BundleDetailRe
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return res, commonErr.ReturnError(err, msg.ErrorGetBundleInfo, "获取增值服务信息失败: ")
|
return res, commonErr.ReturnError(err, msg.ErrorGetBundleInfo, "获取增值服务信息失败: ")
|
||||||
}
|
}
|
||||||
|
//if valueAddService.IsDisplay{}
|
||||||
ValueAddServiceLang := &bundle.ValueAddServiceLang{
|
ValueAddServiceLang := &bundle.ValueAddServiceLang{
|
||||||
Uuid: valueAddDeatilData.UUID,
|
Uuid: valueAddDeatilData.UUID,
|
||||||
ServiceName: valueAddDeatilData.ServiceName,
|
ServiceName: valueAddDeatilData.ServiceName,
|
||||||
|
@ -80,7 +80,6 @@ func SaveBundle(req *bundle.BundleProfile) (res *bundle.SaveResponse, err error)
|
|||||||
Language: req.Language,
|
Language: req.Language,
|
||||||
}
|
}
|
||||||
if req.Uuid == "" && req.Language != msg.ZH_CN {
|
if req.Uuid == "" && req.Language != msg.ZH_CN {
|
||||||
res.Msg = "请先创建中文版本套餐"
|
|
||||||
return res, errors.New("请先创建中文版本套餐")
|
return res, errors.New("请先创建中文版本套餐")
|
||||||
}
|
}
|
||||||
var existValueService = make(map[string]string)
|
var existValueService = make(map[string]string)
|
||||||
@ -100,7 +99,6 @@ func SaveBundle(req *bundle.BundleProfile) (res *bundle.SaveResponse, err error)
|
|||||||
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)
|
||||||
fmt.Println("detail", detail)
|
|
||||||
if checkErr != nil {
|
if checkErr != nil {
|
||||||
if checkErr == gorm.ErrRecordNotFound {
|
if checkErr == gorm.ErrRecordNotFound {
|
||||||
return res, errors.New(fmt.Sprintf("所选增值服务[%s]%s版不存在,请先创建对应增值套餐", v.ServiceName, req.Language))
|
return res, errors.New(fmt.Sprintf("所选增值服务[%s]%s版不存在,请先创建对应增值套餐", v.ServiceName, req.Language))
|
||||||
@ -110,13 +108,16 @@ func SaveBundle(req *bundle.BundleProfile) (res *bundle.SaveResponse, err error)
|
|||||||
}
|
}
|
||||||
if detail.PriceType != req.PriceType {
|
if detail.PriceType != req.PriceType {
|
||||||
if req.Uuid == "" {
|
if req.Uuid == "" {
|
||||||
|
//中文套餐创建时,币种不一致直接返回错误
|
||||||
return res, errors.New(fmt.Sprintf("所选增值服务[%s]%s币种与套餐币种不一致", detail.ServiceName, req.Language))
|
return res, errors.New(fmt.Sprintf("所选增值服务[%s]%s币种与套餐币种不一致", detail.ServiceName, req.Language))
|
||||||
} else {
|
} else {
|
||||||
|
//更新时,判断是否已存在,存在则取消关联
|
||||||
_, ok := existValueService[v.ValueAddUuid]
|
_, ok := existValueService[v.ValueAddUuid]
|
||||||
if ok {
|
if ok {
|
||||||
cancelValueAddService[v.ValueAddUuid] = detail.ServiceName
|
cancelValueAddService[v.ValueAddUuid] = detail.ServiceName
|
||||||
continue
|
continue
|
||||||
} else {
|
} else {
|
||||||
|
//币种不一致,新加币种时返回错误
|
||||||
return res, errors.New(fmt.Sprintf("所选增值服务[%s]%s币种与套餐币种不一致", detail.ServiceName, req.Language))
|
return res, errors.New(fmt.Sprintf("所选增值服务[%s]%s币种与套餐币种不一致", detail.ServiceName, req.Language))
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -151,14 +152,6 @@ func SaveBundle(req *bundle.BundleProfile) (res *bundle.SaveResponse, err error)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if req.Language == msg.ZH_CN {
|
if req.Language == msg.ZH_CN {
|
||||||
if len(cancelValueAddService) > 0 {
|
|
||||||
cancel := "以下增值服务:"
|
|
||||||
for _, v := range cancelValueAddService {
|
|
||||||
cancel += fmt.Sprintf("[%s]%s", v, req.Language)
|
|
||||||
}
|
|
||||||
cancel += "版币种与套餐币种不一致"
|
|
||||||
return res, errors.New(cancel)
|
|
||||||
}
|
|
||||||
bundleProfile.UUID = utils.GetUUID()
|
bundleProfile.UUID = utils.GetUUID()
|
||||||
if err = dao.TxCreateBundle(tx, bundleProfile); err != nil {
|
if err = dao.TxCreateBundle(tx, bundleProfile); err != nil {
|
||||||
return res, errors.New("保存中文语言套餐失败: " + err.Error())
|
return res, errors.New("保存中文语言套餐失败: " + err.Error())
|
||||||
@ -184,6 +177,7 @@ func SaveBundle(req *bundle.BundleProfile) (res *bundle.SaveResponse, err error)
|
|||||||
count := 0
|
count := 0
|
||||||
if valueUuid != nil && len(valueUuid) > 0 {
|
if valueUuid != nil && len(valueUuid) > 0 {
|
||||||
for _, v := range valueUuid {
|
for _, v := range valueUuid {
|
||||||
|
//可以改成批量获取
|
||||||
valueDetail, err2 := dao.ValueAddServiceDetailByUuidAndLanguage(v, req.Language)
|
valueDetail, err2 := dao.ValueAddServiceDetailByUuidAndLanguage(v, req.Language)
|
||||||
if err2 != nil {
|
if err2 != nil {
|
||||||
return res, err2
|
return res, err2
|
||||||
@ -206,8 +200,13 @@ func SaveBundle(req *bundle.BundleProfile) (res *bundle.SaveResponse, err error)
|
|||||||
} else {
|
} else {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
} else {
|
} else { // 已存在,进行更新
|
||||||
// 已存在,进行更新
|
|
||||||
|
// 更新前保存历史记录
|
||||||
|
// if err = dao.CreateBundleProfileHistory(tx,req.Uuid); err != nil {
|
||||||
|
// return res, errors.New("保存套餐历史记录失败: " + err.Error())
|
||||||
|
// }
|
||||||
|
|
||||||
if req.Language == msg.ZH_CN {
|
if req.Language == msg.ZH_CN {
|
||||||
if len(cancelValueAddService) > 0 {
|
if len(cancelValueAddService) > 0 {
|
||||||
cancel := "以下增值服务:"
|
cancel := "以下增值服务:"
|
||||||
@ -238,17 +237,8 @@ func SaveBundle(req *bundle.BundleProfile) (res *bundle.SaveResponse, err error)
|
|||||||
tx.Rollback()
|
tx.Rollback()
|
||||||
return res, err
|
return res, err
|
||||||
}
|
}
|
||||||
}
|
} else {
|
||||||
updateBundleLang := map[string]interface{}{
|
//更新其他语言时 先获取所有关联增值服务,判断币种是否一致,不一致则取消关联
|
||||||
"name": req.Name,
|
|
||||||
"content": req.Content,
|
|
||||||
"price": req.Price,
|
|
||||||
"price_type": req.PriceType,
|
|
||||||
}
|
|
||||||
if err = dao.TxUpdateBundleLang(tx, req.Uuid, req.Language, updateBundleLang); err != nil {
|
|
||||||
return res, err
|
|
||||||
}
|
|
||||||
//更新时 先获取所有关联增值服务,判断币种是否一致,不一致则取消关联
|
|
||||||
valueAddService, err := dao.GetBundleToValueAddServiceByBundleUuid(req.Uuid)
|
valueAddService, err := dao.GetBundleToValueAddServiceByBundleUuid(req.Uuid)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return res, err
|
return res, err
|
||||||
@ -279,8 +269,18 @@ func SaveBundle(req *bundle.BundleProfile) (res *bundle.SaveResponse, err error)
|
|||||||
cancel += "版币种与套餐币种不一致,已取消相关关联"
|
cancel += "版币种与套餐币种不一致,已取消相关关联"
|
||||||
res.Msg = "保存成功 " + cancel
|
res.Msg = "保存成功 " + cancel
|
||||||
res.CancelNum = int64(len(cancelValueService))
|
res.CancelNum = int64(len(cancelValueService))
|
||||||
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
updateBundleLang := map[string]interface{}{
|
||||||
|
"name": req.Name,
|
||||||
|
"content": req.Content,
|
||||||
|
"price": req.Price,
|
||||||
|
"price_type": req.PriceType,
|
||||||
|
}
|
||||||
|
if err = dao.TxUpdateBundleLang(tx, req.Uuid, req.Language, updateBundleLang); err != nil {
|
||||||
|
return res, err
|
||||||
|
}
|
||||||
|
|
||||||
res.Uuid = req.Uuid
|
res.Uuid = req.Uuid
|
||||||
if res.Msg == "" {
|
if res.Msg == "" {
|
||||||
res.Msg = "保存成功"
|
res.Msg = "保存成功"
|
||||||
@ -297,11 +297,11 @@ func BundleListV2(req *bundle.BundleListRequest) (res *bundle.BundleListResponse
|
|||||||
func BundleDetailV2(req *bundle.BundleDetailRequest) (res *bundle.BundleDetailResponseV2, err error) {
|
func BundleDetailV2(req *bundle.BundleDetailRequest) (res *bundle.BundleDetailResponseV2, err error) {
|
||||||
res = new(bundle.BundleDetailResponseV2)
|
res = new(bundle.BundleDetailResponseV2)
|
||||||
if req.Uuid == "" {
|
if req.Uuid == "" {
|
||||||
res.Msg = "uuid不能为空"
|
res.Msg = ""
|
||||||
return res, errors.New("uuid不能为空")
|
return res, errors.New("uuid不能为空")
|
||||||
}
|
}
|
||||||
if req.Language == "" {
|
if req.Language == "" {
|
||||||
res.Msg = "language不能为空"
|
res.Msg = ""
|
||||||
return res, errors.New("language不能为空")
|
return res, errors.New("language不能为空")
|
||||||
}
|
}
|
||||||
res, err = dao.BundleDetailV2(req)
|
res, err = dao.BundleDetailV2(req)
|
||||||
@ -314,8 +314,8 @@ func BundleDetailV2(req *bundle.BundleDetailRequest) (res *bundle.BundleDetailRe
|
|||||||
func HandShelf(req *bundle.HandShelfRequest) (res *bundle.CommonResponse, err error) {
|
func HandShelf(req *bundle.HandShelfRequest) (res *bundle.CommonResponse, err error) {
|
||||||
res = new(bundle.CommonResponse)
|
res = new(bundle.CommonResponse)
|
||||||
if req.ShelfStatus != 1 && req.ShelfStatus != 2 {
|
if req.ShelfStatus != 1 && req.ShelfStatus != 2 {
|
||||||
res.Msg = "非法的上下架状态"
|
res.Msg = ""
|
||||||
return res, errors.New("非法的上下架状态")
|
return res, errors.New("无效的上下架状态")
|
||||||
}
|
}
|
||||||
res, err = dao.HandShelf(req.Uuid, req.ShelfStatus)
|
res, err = dao.HandShelf(req.Uuid, req.ShelfStatus)
|
||||||
return
|
return
|
||||||
|
@ -10,7 +10,7 @@ type BundleProfile struct {
|
|||||||
UUID string `json:"uuid" gorm:"column:uuid;type:varchar(1024);comment:套餐UUID"`
|
UUID string `json:"uuid" gorm:"column:uuid;type:varchar(1024);comment:套餐UUID"`
|
||||||
Name string `json:"name" gorm:"column:name;type:varchar(2048);comment:套餐名称"`
|
Name string `json:"name" gorm:"column:name;type:varchar(2048);comment:套餐名称"`
|
||||||
Price float32 `json:"price" gorm:"column:price;type:decimal(12,2);comment:套餐价格"`
|
Price float32 `json:"price" gorm:"column:price;type:decimal(12,2);comment:套餐价格"`
|
||||||
PriceType int64 `json:"priceType" gorm:"column:price_type;type:int;comment:套餐价格类型 1:人民币 2:美元"`
|
PriceType int64 `json:"priceType" gorm:"column:price_type;type:int;comment:套餐类型 1:人民币 2:美元"`
|
||||||
Contract string `json:"contract" gorm:"type:varchar(1024);comment:合同"`
|
Contract string `json:"contract" gorm:"type:varchar(1024);comment:合同"`
|
||||||
ContractDuration int `json:"contractDuration" gorm:"column:contract_duration;type:int;comment:合同有效时长"`
|
ContractDuration int `json:"contractDuration" gorm:"column:contract_duration;type:int;comment:合同有效时长"`
|
||||||
Content string `json:"content" gorm:"column:content;type:text;comment:套餐内容"`
|
Content string `json:"content" gorm:"column:content;type:text;comment:套餐内容"`
|
||||||
@ -22,7 +22,7 @@ type BundleProfile struct {
|
|||||||
ShelfStatus int64 `json:"shelfStatus" gorm:"column:shelf_status;type:int;default:2;comment:上架状态 1:上架 2:下架"`
|
ShelfStatus int64 `json:"shelfStatus" gorm:"column:shelf_status;type:int;default:2;comment:上架状态 1:上架 2:下架"`
|
||||||
BgImg1 string `json:"bgImg1" gorm:"column:bg_img1;type:varchar(1024);comment:背景图-首页"`
|
BgImg1 string `json:"bgImg1" gorm:"column:bg_img1;type:varchar(1024);comment:背景图-首页"`
|
||||||
BgImg2 string `json:"bgImg2" gorm:"column:bg_img2;type:varchar(1024);comment:背景图-我的"`
|
BgImg2 string `json:"bgImg2" gorm:"column:bg_img2;type:varchar(1024);comment:背景图-我的"`
|
||||||
//SelectAddService BundleSelectAddServicess `json:"selectAddService" gorm:"column:select_add_service;type:json;comment:已选增值服务"`
|
BundleToValueAddService []BundleToValueAddService `gorm:"foreignKey:BundleUuid;references:UUID" json:"bundleToValueAddService"`
|
||||||
BundleProfileLang []BundleProfileLang `gorm:"foreignKey:UUID;references:UUID" json:"bundleProfileLang"`
|
BundleProfileLang []BundleProfileLang `gorm:"foreignKey:UUID;references:UUID" json:"bundleProfileLang"`
|
||||||
}
|
}
|
||||||
type BundleProfileLang struct {
|
type BundleProfileLang struct {
|
||||||
@ -30,7 +30,7 @@ type BundleProfileLang struct {
|
|||||||
UUID string `json:"uuid" gorm:"column:uuid;type:varchar(1024);comment:套餐UUID"`
|
UUID string `json:"uuid" gorm:"column:uuid;type:varchar(1024);comment:套餐UUID"`
|
||||||
Name string `json:"name" gorm:"column:name;type:varchar(2048);comment:套餐名称"`
|
Name string `json:"name" gorm:"column:name;type:varchar(2048);comment:套餐名称"`
|
||||||
Price float32 `json:"price" gorm:"column:price;type:decimal(12,2);comment:套餐价格"`
|
Price float32 `json:"price" gorm:"column:price;type:decimal(12,2);comment:套餐价格"`
|
||||||
PriceType int64 `json:"priceType" gorm:"column:price_type;type:int;comment:套餐价格类型 1:人民币 2:美元"`
|
PriceType int64 `json:"priceType" gorm:"column:price_type;type:int;comment:套餐类型 1:人民币 2:美元"`
|
||||||
Content string `json:"content" gorm:"column:content;type:text;comment:套餐内容"`
|
Content string `json:"content" gorm:"column:content;type:text;comment:套餐内容"`
|
||||||
Language string `json:"language" gorm:"column:language;type:varchar(32);comment:套餐语言 zh-CN zh-TW EN de-DE js-JP(中繁英德日)"`
|
Language string `json:"language" gorm:"column:language;type:varchar(32);comment:套餐语言 zh-CN zh-TW EN de-DE js-JP(中繁英德日)"`
|
||||||
CreatedAt int64 `gorm:"column:created_at;autoCreateTime"`
|
CreatedAt int64 `gorm:"column:created_at;autoCreateTime"`
|
||||||
@ -49,27 +49,16 @@ type BundleToValueAddService struct {
|
|||||||
DeletedAt soft_delete.DeletedAt
|
DeletedAt soft_delete.DeletedAt
|
||||||
}
|
}
|
||||||
|
|
||||||
// type BundleSelectAddServicess []*BundleSelectAddService
|
// todo套餐修改历史
|
||||||
// type BundleSelectAddService struct {
|
type BundleProfileHistory struct {
|
||||||
// ValueUid string `json:"valueUid" gorm:"column:value_uid;type:varchar(1024);comment:增值服务UUID"`
|
Id int32 `gorm:"column:id;type:int(11);primary_key;AUTO_INCREMENT" json:"id"`
|
||||||
// ServiceName string `json:"serviceName" gorm:"column:service_name;type:varchar(1024);comment:增值服务名称"`
|
Uuid string `json:"uuid" gorm:"column:uuid;type:varchar(1024);comment:UUID"`
|
||||||
// IsDisplay bool `json:"isDisplay" gorm:"column:is_display;type:tinyint(1);comment:是否显示 0:不显示 1:显示"`
|
BundleProfile BundleProfile `gorm:"foreignKey:Uuid;references:UUID" json:"bundleProfile"`
|
||||||
// }
|
CreatedAt int64 `gorm:"column:created_at;autoCreateTime"`
|
||||||
|
UpdatedAt int64 `gorm:"column:updated_at;autoCreateTime"`
|
||||||
|
DeletedAt soft_delete.DeletedAt
|
||||||
|
}
|
||||||
|
|
||||||
// // 实现 driver.Valuer 接口
|
|
||||||
// func (o BundleSelectAddServicess) Value() (driver.Value, error) {
|
|
||||||
// return json.Marshal(o)
|
|
||||||
// }
|
|
||||||
|
|
||||||
// // 实现 sql.Scanner 接口
|
|
||||||
//
|
|
||||||
// func (o *BundleSelectAddServicess) Scan(value interface{}) error {
|
|
||||||
// bytes, ok := value.([]byte)
|
|
||||||
// if !ok {
|
|
||||||
// return errors.New("type assertion to []byte failed")
|
|
||||||
// }
|
|
||||||
// return json.Unmarshal(bytes, o)
|
|
||||||
// }
|
|
||||||
func (m *BundleProfile) TableName() string {
|
func (m *BundleProfile) TableName() string {
|
||||||
return "bundle_profile"
|
return "bundle_profile"
|
||||||
}
|
}
|
||||||
@ -79,3 +68,6 @@ func (m *BundleProfileLang) TableName() string {
|
|||||||
func (m *BundleToValueAddService) TableName() string {
|
func (m *BundleToValueAddService) TableName() string {
|
||||||
return "bundle_to_value_add_service"
|
return "bundle_to_value_add_service"
|
||||||
}
|
}
|
||||||
|
func (m *BundleProfileHistory) TableName() string {
|
||||||
|
return "bundle_profile_history"
|
||||||
|
}
|
||||||
|
@ -35,6 +35,7 @@ type ValueAddService struct {
|
|||||||
ServiceName string `json:"serviceName" gorm:"column:service_name;type:varchar(1024);comment:增值服务名称"`
|
ServiceName string `json:"serviceName" gorm:"column:service_name;type:varchar(1024);comment:增值服务名称"`
|
||||||
ServiceType int32 `json:"serviceType" gorm:"column:service_type;type:int;comment:服务类型 1:视频 2:图文 3:数据报表 4:账号数 5:可用时长"`
|
ServiceType int32 `json:"serviceType" gorm:"column:service_type;type:int;comment:服务类型 1:视频 2:图文 3:数据报表 4:账号数 5:可用时长"`
|
||||||
ValueAddServiceLang []ValueAddServiceLang `gorm:"foreignKey:UUID;references:UUID"`
|
ValueAddServiceLang []ValueAddServiceLang `gorm:"foreignKey:UUID;references:UUID"`
|
||||||
|
BundleToValueAddService []BundleToValueAddService `gorm:"foreignKey:ValueUid;references:UUID"`
|
||||||
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
|
||||||
|
Loading…
Reference in New Issue
Block a user