diff --git a/internal/dao/bundleDao.go b/internal/dao/bundleDao.go index f6bfddd..16879cb 100644 --- a/internal/dao/bundleDao.go +++ b/internal/dao/bundleDao.go @@ -289,7 +289,17 @@ func TxUpdateBundleLang(tx *gorm.DB, uuid string, language string, columns map[s func CreateBundleToValueAddService(tx *gorm.DB, records []*model.BundleToValueAddService) error { return tx.Model(&model.BundleToValueAddService{}).Create(&records).Error } - +func UpdateBundleToValueAddService(tx *gorm.DB, records []*model.BundleToValueAddService) error { + columns := make(map[string]interface{}) + for _, record := range records { + columns["is_display"] = record.IsDisplay + err := tx.Model(&model.BundleToValueAddService{}).Where("bundle_uuid = ? AND value_uid = ?", record.BundleUuid, record.ValueUid).Updates(columns).Error + if err != nil { + return commonErr.ReturnError(err, msg.ErrorUpdateBundleInfo, "更新套餐信息失败: ") + } + } + return nil +} func DeleteBundleToValueAddService(tx *gorm.DB, bundleUuid, valueUid string) error { return tx.Where("bundle_uuid = ? AND value_uid = ?", bundleUuid, valueUid).Delete(&model.BundleToValueAddService{}).Error } diff --git a/internal/logic/bundleLogic.go b/internal/logic/bundleLogic.go index 6d51b70..fcdc17b 100644 --- a/internal/logic/bundleLogic.go +++ b/internal/logic/bundleLogic.go @@ -332,9 +332,14 @@ func BundleDetailV2(req *bundle.BundleDetailRequest) (res *bundle.BundleDetailRe bundleProfile.Contract = detail.Contract if detail.BundleToValueAddService != nil && len(detail.BundleToValueAddService) > 0 { for _, valueAddService := range detail.BundleToValueAddService { + valueAddDetail, err := dao.ValueAddServiceDetailByUuidAndLanguage(valueAddService.ValueUid, req.Language) + if err != nil { + return res, errors.New("查询增值服务失败") + } selectValueAddService := &bundle.SelectValueAddService{ ValueAddUuid: valueAddService.ValueUid, IsDisplay: valueAddService.IsDisplay, + ServiceName: valueAddDetail.ServiceName, } selectValueAddServices = append(selectValueAddServices, selectValueAddService) } @@ -424,14 +429,18 @@ func diffUpdateBundleToValueAddService(tx *gorm.DB, bundleUuid string, selectSer } // 需要新增的 toAdd := make([]*model.BundleToValueAddService, 0) + toDel := make([]string, 0) + toUpdate := make([]*model.BundleToValueAddService, 0) for uid, s := range newUuids { if _, exist := oldSet[uid]; !exist { s.BundleUuid = bundleUuid toAdd = append(toAdd, s) + } else { + s.BundleUuid = bundleUuid + toUpdate = append(toUpdate, s) } } // 需要删除的 - toDel := make([]string, 0) for _, uid := range oldUuids { if _, exist := newUuids[uid]; !exist { toDel = append(toDel, uid) @@ -447,6 +456,17 @@ func diffUpdateBundleToValueAddService(tx *gorm.DB, bundleUuid string, selectSer return errors.New("保存套餐与增值服务关联失败") } } + if len(toUpdate) > 0 { + updates := make(map[string]interface{}) + var uids []string + for _, record := range toUpdate { + uids = append(uids, record.ValueUid) + updates["is_display"] = record.IsDisplay + } + if err = dao.UpdateBundleToValueAddService(tx, toUpdate); err != nil { + return errors.New("保存套餐与增值服务关联失败") + } + } return nil } func saveBundleHistory(tx *gorm.DB, bundleUuid string, operator string, operatorId uint64) error {