修改套餐详情

This commit is contained in:
孙肖扬 2025-06-11 14:25:15 +08:00
parent 6f1a46fa07
commit 082cee499a
4 changed files with 58 additions and 21 deletions

View File

@ -1,6 +1,7 @@
package dao
import (
"fmt"
"micro-bundle/internal/model"
"micro-bundle/pb/bundle"
"micro-bundle/pkg/app"
@ -157,9 +158,9 @@ func GetBundleToValueAddServiceByValueUid(valueUid string) ([]model.BundleToValu
Find(&rels).Error
return rels, err
}
func GetValueAddServiceDetailByUuid(uuid string) (*model.ValueAddService, error) {
func GetValueAddServiceDetailByUuid(tx *gorm.DB, uuid string) (*model.ValueAddService, error) {
result := &model.ValueAddService{}
err := app.ModuleClients.BundleDB.Model(&model.ValueAddService{}).
err := tx.Model(&model.ValueAddService{}).
Preload("ValueAddServiceLang", "deleted_at = 0").
Where("uuid =? and deleted_at=0", uuid).
First(&result).Error
@ -168,3 +169,21 @@ func GetValueAddServiceDetailByUuid(uuid string) (*model.ValueAddService, error)
func CreateValueAddServiceHistory(tx *gorm.DB, req *model.ValueAddServiceHistory) error {
return tx.Model(&model.ValueAddServiceHistory{}).Create(req).Error
}
func BatchValueAddServiceDetailTx(tx *gorm.DB, uids []string) (map[string]*model.ValueAddService, error) {
if len(uids) == 0 {
return map[string]*model.ValueAddService{}, nil // 返回空 map避免 nil panic
}
var results []*model.ValueAddService
err := tx.Model(&model.ValueAddService{}).
Where("value_uid IN ? AND deleted_at = 0", uids).
Preload("ValueAddServiceLang", "deleted_at = 0").
Find(&results).Error
if err != nil {
return nil, fmt.Errorf("批量查询增值服务失败: %w", err)
}
resultMap := make(map[string]*model.ValueAddService, len(results))
for _, detail := range results {
resultMap[detail.UUID] = detail
}
return resultMap, nil
}

View File

@ -459,15 +459,32 @@ func saveBundleHistory(tx *gorm.DB, bundleUuid string, operator string, operator
if err != nil {
return errors.New("查询套餐详情失败: " + err.Error())
}
j, err := json.MarshalIndent(data, "", " ")
bundleToValueAddService := data.BundleToValueAddService
data.BundleToValueAddService = nil
var valueUuid []string
if bundleToValueAddService != nil && len(bundleToValueAddService) > 0 {
for _, v := range bundleToValueAddService {
valueUuid = append(valueUuid, v.ValueUid)
}
}
valueData, err := dao.BatchValueAddServiceDetailTx(tx, valueUuid)
if err != nil {
return errors.New("json转换失败: " + err.Error())
return errors.New("查询增值服务详情失败: " + err.Error())
}
j, err := json.Marshal(data)
if err != nil {
return errors.New("套餐json转换失败: " + err.Error())
}
vJ, err := json.Marshal(valueData)
if err != nil {
return errors.New("增值服务json转换失败: " + err.Error())
}
history := &model.BundleProfileHistory{
Uuid: bundleUuid,
BundleProfile: datatypes.JSON(j),
Operator: operator,
OperatorId: operatorId,
Uuid: bundleUuid,
BundleProfile: datatypes.JSON(j),
ValueAddService: datatypes.JSON(vJ),
Operator: operator,
OperatorId: operatorId,
}
if err := tx.Create(history).Error; err != nil {
return errors.New("保存套餐历史记录失败: " + err.Error())

View File

@ -258,6 +258,9 @@ func SaveValueAddService(in *bundle.ValueAddServiceLang) (res *bundle.SaveRespon
}
} else {
// 已存在,进行更新
if err := saveValueAddServiceHistory(tx, in.Uuid); err != nil {
return res, err
}
//中文状态下,更新主表和语言表
if in.Language == msg.ZH_CN {
updateService := map[string]interface{}{
@ -294,9 +297,6 @@ func SaveValueAddService(in *bundle.ValueAddServiceLang) (res *bundle.SaveRespon
if err := dao.UpdateValueAddServiceLang(tx, updateLangService); err != nil {
return res, err
}
if err := saveValueAddServiceHistory(tx, in.Uuid); err != nil {
return res, err
}
res.Uuid = in.Uuid
res.Msg = "保存成功"
res.CancelNum = cancelNum
@ -412,11 +412,11 @@ func ValueAddServiceDetail(req *bundle.ValueAddServiceDetailRequest) (res *bundl
func saveValueAddServiceHistory(tx *gorm.DB, uuid string) (err error) {
// 保存历史记录
data, err := dao.GetBundleDetailByUuid(uuid)
data, err := dao.GetValueAddServiceDetailByUuid(tx, uuid)
if err != nil {
return errors.New("查询增值服务详情失败: " + err.Error())
}
j, err := json.MarshalIndent(data, "", " ")
j, err := json.Marshal(data)
if err != nil {
return errors.New("json转换失败: " + err.Error())
}

View File

@ -52,14 +52,15 @@ type BundleToValueAddService struct {
// todo套餐修改历史
type BundleProfileHistory struct {
Id int32 `gorm:"column:id;type:int(11);primary_key;AUTO_INCREMENT" json:"id"`
Uuid string `json:"uuid" gorm:"column:uuid;type:varchar(1024);comment:UUID"`
BundleProfile datatypes.JSON `json:"bundleProfile" gorm:"column:bundle_profile;type:json;comment:套餐信息"`
Operator string `json:"operator" gorm:"column:operator;type:varchar(1024);comment:操作人"`
OperatorId uint64 `json:"operatorId" gorm:"column:operator_id;type:int;comment:操作人ID"`
CreatedAt int64 `gorm:"column:created_at;autoCreateTime"`
UpdatedAt int64 `gorm:"column:updated_at;autoCreateTime"`
DeletedAt soft_delete.DeletedAt
Id int32 `gorm:"column:id;type:int(11);primary_key;AUTO_INCREMENT" json:"id"`
Uuid string `json:"uuid" gorm:"column:uuid;type:varchar(1024);comment:UUID"`
BundleProfile datatypes.JSON `json:"bundleProfile" gorm:"column:bundle_profile;type:json;comment:套餐信息"`
ValueAddService datatypes.JSON `json:"valueAddService" gorm:"column:value_add_service;type:json;comment:增值服务信息"`
Operator string `json:"operator" gorm:"column:operator;type:varchar(1024);comment:操作人"`
OperatorId uint64 `json:"operatorId" gorm:"column:operator_id;type:int;comment:操作人ID"`
CreatedAt int64 `gorm:"column:created_at;autoCreateTime"`
UpdatedAt int64 `gorm:"column:updated_at;autoCreateTime"`
DeletedAt soft_delete.DeletedAt
}
func (m *BundleProfile) TableName() string {