From 1875242cb19f4aa612e8d2f5ad916e601d69fb86 Mon Sep 17 00:00:00 2001 From: yedejiamingshi <540057894@qq.com> Date: Fri, 27 Dec 2024 14:59:30 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E5=90=8C=E6=AD=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/uniTemplate/dto/UniTemplateDTO.java | 6 +++ .../configure/enums/ErrorCodeConstants.java | 3 ++ .../unitemplate/UniTemplateController.java | 8 ++++ .../unitemplate/vo/UniTemplateBaseVO.java | 8 ++++ .../unitemplate/vo/UniTemplateOptionVO.java | 23 +++++++++++ .../dataobject/unitemplate/UniTemplateDO.java | 8 ++++ .../unitemplate/UniTemplateService.java | 3 ++ .../unitemplate/UniTemplateServiceImpl.java | 20 ++++++++- .../product/enums/ErrorCodeConstants.java | 2 + .../vo/HarvestBatchConfigRespVO.java | 3 ++ .../vo/HarvestBatchConfigSaveReqVO.java | 8 +++- .../harvestbatch/vo/LinkConfigSaveReqVO.java | 1 - .../harvestbatch/HarvestBatchServiceImpl.java | 41 ++++++++++++++++--- 13 files changed, 125 insertions(+), 9 deletions(-) create mode 100644 yudao-module-configure/yudao-module-configure-biz/src/main/java/cn/iocoder/yudao/module/configure/controller/admin/unitemplate/vo/UniTemplateOptionVO.java diff --git a/yudao-module-configure/yudao-module-configure-api/src/main/java/cn/iocoder/yudao/module/configure/api/uniTemplate/dto/UniTemplateDTO.java b/yudao-module-configure/yudao-module-configure-api/src/main/java/cn/iocoder/yudao/module/configure/api/uniTemplate/dto/UniTemplateDTO.java index 552f15a..a8b9e46 100644 --- a/yudao-module-configure/yudao-module-configure-api/src/main/java/cn/iocoder/yudao/module/configure/api/uniTemplate/dto/UniTemplateDTO.java +++ b/yudao-module-configure/yudao-module-configure-api/src/main/java/cn/iocoder/yudao/module/configure/api/uniTemplate/dto/UniTemplateDTO.java @@ -54,6 +54,12 @@ public class UniTemplateDTO { @ApiModelProperty(value = "扫码记录图标") private String scanRecordIconUrl; + @ApiModelProperty(value = "显示切换语言") + private Boolean showChangeLanguage; + + @ApiModelProperty(value = "显示切换语言图标") + private String changeLanguageIconUrl; + @ApiModelProperty(value = "创建时间") private Date createTime; diff --git a/yudao-module-configure/yudao-module-configure-api/src/main/java/cn/iocoder/yudao/module/configure/enums/ErrorCodeConstants.java b/yudao-module-configure/yudao-module-configure-api/src/main/java/cn/iocoder/yudao/module/configure/enums/ErrorCodeConstants.java index 043564a..426a69f 100644 --- a/yudao-module-configure/yudao-module-configure-api/src/main/java/cn/iocoder/yudao/module/configure/enums/ErrorCodeConstants.java +++ b/yudao-module-configure/yudao-module-configure-api/src/main/java/cn/iocoder/yudao/module/configure/enums/ErrorCodeConstants.java @@ -57,6 +57,9 @@ public interface ErrorCodeConstants { ErrorCode UNI_TEMPLATE_GOODS_DETAIL_ICON_NOT_BE_NULL = new ErrorCode(1011003005, "商品详情图标不能为空"); ErrorCode UNI_TEMPLATE_AI_ICON_NOT_BE_NULL = new ErrorCode(1011003006, "AI图标不能为空"); ErrorCode UNI_TEMPLATE_SHOP_ICON_NOT_BE_NULL = new ErrorCode(1011003007, "商城图标不能为空"); + ErrorCode CAN_NOT_DELETE_DEFAULT_TEMPLATE = new ErrorCode(1011003008, "无法删除默认模板"); + ErrorCode MUST_BE_HAS_A_DEFAULT_TEMPLATE = new ErrorCode(1011003009, "至少需要有一个默认模板"); + ErrorCode UNI_TEMPLATE_LANGUAGE_ICON_NOT_BE_NULL = new ErrorCode(1011003010, "切换语言图标不能为空"); /** * 溯源模板管理相关异常 模块代码 004 diff --git a/yudao-module-configure/yudao-module-configure-biz/src/main/java/cn/iocoder/yudao/module/configure/controller/admin/unitemplate/UniTemplateController.java b/yudao-module-configure/yudao-module-configure-biz/src/main/java/cn/iocoder/yudao/module/configure/controller/admin/unitemplate/UniTemplateController.java index 3c68c29..b759651 100644 --- a/yudao-module-configure/yudao-module-configure-biz/src/main/java/cn/iocoder/yudao/module/configure/controller/admin/unitemplate/UniTemplateController.java +++ b/yudao-module-configure/yudao-module-configure-biz/src/main/java/cn/iocoder/yudao/module/configure/controller/admin/unitemplate/UniTemplateController.java @@ -13,6 +13,7 @@ import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import javax.validation.Valid; +import java.util.List; import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; @@ -80,4 +81,11 @@ public class UniTemplateController { return success(uniTemplateService.getUniTemplatePage(pageVO)); } + @GetMapping("/options") + @ApiOperation("获得小程序模板分页") + @PreAuthorize("@ss.hasPermission('configure:uni-template:query')") + public CommonResult> getOptions() { + return success(uniTemplateService.getOptions()); + } + } diff --git a/yudao-module-configure/yudao-module-configure-biz/src/main/java/cn/iocoder/yudao/module/configure/controller/admin/unitemplate/vo/UniTemplateBaseVO.java b/yudao-module-configure/yudao-module-configure-biz/src/main/java/cn/iocoder/yudao/module/configure/controller/admin/unitemplate/vo/UniTemplateBaseVO.java index 403db40..f1aa2fd 100644 --- a/yudao-module-configure/yudao-module-configure-biz/src/main/java/cn/iocoder/yudao/module/configure/controller/admin/unitemplate/vo/UniTemplateBaseVO.java +++ b/yudao-module-configure/yudao-module-configure-biz/src/main/java/cn/iocoder/yudao/module/configure/controller/admin/unitemplate/vo/UniTemplateBaseVO.java @@ -46,4 +46,12 @@ public class UniTemplateBaseVO { @Length(max = 256) private String scanRecordIconUrl; + @ApiModelProperty(value = "显示切换语言", required = true) + @NotNull(message = "显示切换语言不能为空") + private Boolean showChangeLanguage; + + @ApiModelProperty(value = "显示切换语言图标") + @Length(max = 256) + private String changeLanguageIconUrl; + } diff --git a/yudao-module-configure/yudao-module-configure-biz/src/main/java/cn/iocoder/yudao/module/configure/controller/admin/unitemplate/vo/UniTemplateOptionVO.java b/yudao-module-configure/yudao-module-configure-biz/src/main/java/cn/iocoder/yudao/module/configure/controller/admin/unitemplate/vo/UniTemplateOptionVO.java new file mode 100644 index 0000000..bbfe312 --- /dev/null +++ b/yudao-module-configure/yudao-module-configure-biz/src/main/java/cn/iocoder/yudao/module/configure/controller/admin/unitemplate/vo/UniTemplateOptionVO.java @@ -0,0 +1,23 @@ +package cn.iocoder.yudao.module.configure.controller.admin.unitemplate.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.ToString; + +@ApiModel("管理后台 - 小程序模板 Response VO") +@Data +@ToString(callSuper = true) +@AllArgsConstructor +@NoArgsConstructor +public class UniTemplateOptionVO { + + @ApiModelProperty(value = "编号") + private Long id; + + @ApiModelProperty(value = "模板名称") + private String templateName; + +} diff --git a/yudao-module-configure/yudao-module-configure-biz/src/main/java/cn/iocoder/yudao/module/configure/dal/dataobject/unitemplate/UniTemplateDO.java b/yudao-module-configure/yudao-module-configure-biz/src/main/java/cn/iocoder/yudao/module/configure/dal/dataobject/unitemplate/UniTemplateDO.java index 7dd0b26..6507988 100644 --- a/yudao-module-configure/yudao-module-configure-biz/src/main/java/cn/iocoder/yudao/module/configure/dal/dataobject/unitemplate/UniTemplateDO.java +++ b/yudao-module-configure/yudao-module-configure-biz/src/main/java/cn/iocoder/yudao/module/configure/dal/dataobject/unitemplate/UniTemplateDO.java @@ -86,5 +86,13 @@ public class UniTemplateDO extends BaseDO { * 商城图标 */ private String shopIconUrl; + /** + * 显示切换语言 + */ + private Boolean showChangeLanguage; + /** + * 显示切换语言图标 + */ + private String changeLanguageIconUrl; } diff --git a/yudao-module-configure/yudao-module-configure-biz/src/main/java/cn/iocoder/yudao/module/configure/service/unitemplate/UniTemplateService.java b/yudao-module-configure/yudao-module-configure-biz/src/main/java/cn/iocoder/yudao/module/configure/service/unitemplate/UniTemplateService.java index a0c69fa..5d903a8 100644 --- a/yudao-module-configure/yudao-module-configure-biz/src/main/java/cn/iocoder/yudao/module/configure/service/unitemplate/UniTemplateService.java +++ b/yudao-module-configure/yudao-module-configure-biz/src/main/java/cn/iocoder/yudao/module/configure/service/unitemplate/UniTemplateService.java @@ -5,6 +5,7 @@ import cn.iocoder.yudao.module.configure.controller.admin.unitemplate.vo.*; import cn.iocoder.yudao.module.configure.dal.dataobject.unitemplate.UniTemplateDO; import javax.validation.Valid; +import java.util.List; /** * 小程序模板 Service 接口 @@ -53,4 +54,6 @@ public interface UniTemplateService { UniTemplateDO getDefaultUniTemplate(); + List getOptions(); + } diff --git a/yudao-module-configure/yudao-module-configure-biz/src/main/java/cn/iocoder/yudao/module/configure/service/unitemplate/UniTemplateServiceImpl.java b/yudao-module-configure/yudao-module-configure-biz/src/main/java/cn/iocoder/yudao/module/configure/service/unitemplate/UniTemplateServiceImpl.java index 1e85751..e51bd9e 100644 --- a/yudao-module-configure/yudao-module-configure-biz/src/main/java/cn/iocoder/yudao/module/configure/service/unitemplate/UniTemplateServiceImpl.java +++ b/yudao-module-configure/yudao-module-configure-biz/src/main/java/cn/iocoder/yudao/module/configure/service/unitemplate/UniTemplateServiceImpl.java @@ -91,6 +91,9 @@ public class UniTemplateServiceImpl implements UniTemplateService { public void updateUniTemplate(T updateReqVO) { // 校验存在 UniTemplateDO templateDO = this.validateUniTemplateExists(updateReqVO.getId()); + if (templateDO.getDefaultTemplate() && !updateReqVO.getDefaultTemplate()) { + throw exception(ErrorCodeConstants.MUST_BE_HAS_A_DEFAULT_TEMPLATE); + } // 获取原本存在的环节信息 List itemDBList = uniTemplateItemMapper.selectList(new LambdaQueryWrapper() .eq(UniTemplateItemDO::getTemplateId, templateDO.getTemplateId())); @@ -168,6 +171,12 @@ public class UniTemplateServiceImpl implements UniTemplateService { templateDO.setScanRecordIconUrl(""); } + if (templateDO.getShowChangeLanguage() && StringUtils.isBlank(templateDO.getChangeLanguageIconUrl())) { + throw exception(ErrorCodeConstants.UNI_TEMPLATE_LANGUAGE_ICON_NOT_BE_NULL); + } else if (!templateDO.getShowChangeLanguage() || templateDO.getTemplateType().equals(UniTemplateTypeEnum.STANDARD.getType())) { + templateDO.setChangeLanguageIconUrl(""); + } + if (templateDO.getTemplateType().equals(UniTemplateTypeEnum.CUSTOMIZE.getType())) { if (templateDO.getShowGoodsDetail() && StringUtils.isBlank(templateDO.getGoodsDetailIconUrl())) { throw exception(ErrorCodeConstants.UNI_TEMPLATE_GOODS_DETAIL_ICON_NOT_BE_NULL); @@ -201,7 +210,10 @@ public class UniTemplateServiceImpl implements UniTemplateService { @Override public void deleteUniTemplate(Long id) { // 校验存在 - this.validateUniTemplateExists(id); + UniTemplateDO templateDO = this.validateUniTemplateExists(id); + if (templateDO.getDefaultTemplate()) { + throw exception(ErrorCodeConstants.CAN_NOT_DELETE_DEFAULT_TEMPLATE); + } // 删除 uniTemplateMapper.deleteById(id); } @@ -239,4 +251,10 @@ public class UniTemplateServiceImpl implements UniTemplateService { return uniTemplateMapper.selectOne(new LambdaQueryWrapperX().eq(UniTemplateDO::getDefaultTemplate, Boolean.TRUE)); } + @Override + public List getOptions() { + List list = uniTemplateMapper.selectList(new LambdaQueryWrapperX().select(UniTemplateDO::getId, UniTemplateDO::getTemplateName)); + return list.stream().map(item -> new UniTemplateOptionVO(item.getId(), item.getTemplateName())).collect(Collectors.toList()); + } + } diff --git a/yudao-module-product/yudao-module-product-api/src/main/java/cn/iocoder/yudao/module/product/enums/ErrorCodeConstants.java b/yudao-module-product/yudao-module-product-api/src/main/java/cn/iocoder/yudao/module/product/enums/ErrorCodeConstants.java index 35a167c..12df960 100644 --- a/yudao-module-product/yudao-module-product-api/src/main/java/cn/iocoder/yudao/module/product/enums/ErrorCodeConstants.java +++ b/yudao-module-product/yudao-module-product-api/src/main/java/cn/iocoder/yudao/module/product/enums/ErrorCodeConstants.java @@ -109,6 +109,8 @@ public interface ErrorCodeConstants { ErrorCode INSPECTION_ITEM_OPERATE_TYPE_CAN_NOT_BE_NULL = new ErrorCode(1013007015, "检测项目操作类型不能为空"); ErrorCode INSPECTION_CONFIG_NOT_EXISTS = new ErrorCode(1013007016, "检验检疫配置不存在"); ErrorCode EXISTS_THE_SAME_INSPECTION_CONFIG = new ErrorCode(1013007017, "存在相同的检验检疫配置"); + ErrorCode SELECTED_UNI_TEMPLATE_NOT_EXITS = new ErrorCode(1013007018, "所选小程序模板不存在或已删除"); + ErrorCode CAN_NOT_FIND__UNI_TEMPLATE = new ErrorCode(1013007019, "所配置的小程序模板不存在或已删除"); /** * 检验检疫相关异常 模块代码 008 diff --git a/yudao-module-product/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/harvestbatch/vo/HarvestBatchConfigRespVO.java b/yudao-module-product/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/harvestbatch/vo/HarvestBatchConfigRespVO.java index 100f6bb..8ed601a 100644 --- a/yudao-module-product/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/harvestbatch/vo/HarvestBatchConfigRespVO.java +++ b/yudao-module-product/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/harvestbatch/vo/HarvestBatchConfigRespVO.java @@ -24,6 +24,9 @@ public class HarvestBatchConfigRespVO { @ApiModelProperty(value = "商品名称") private String goodsName; + @ApiModelProperty(value = "模板ID") + private Long templateId; + @ApiModelProperty(value = "商户信息") private BlockCertificateSaveReqVO businessInfo; diff --git a/yudao-module-product/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/harvestbatch/vo/HarvestBatchConfigSaveReqVO.java b/yudao-module-product/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/harvestbatch/vo/HarvestBatchConfigSaveReqVO.java index 2e5ba07..dd94025 100644 --- a/yudao-module-product/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/harvestbatch/vo/HarvestBatchConfigSaveReqVO.java +++ b/yudao-module-product/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/harvestbatch/vo/HarvestBatchConfigSaveReqVO.java @@ -12,11 +12,15 @@ import java.util.List; @Data public class HarvestBatchConfigSaveReqVO { - @ApiModelProperty(value = "采收批次ID") + @ApiModelProperty(value = "采收批次ID", required = true) @NotNull(message = "采收批次ID不能为空") private Long id; - @ApiModelProperty(value = "语言类型ID") + @ApiModelProperty(value = "模板ID", required = true) + @NotNull(message = "模板ID不能为空") + private Long templateId; + + @ApiModelProperty(value = "语言类型ID", required = true) @NotNull(message = "语言类型ID不能为空") private Long languageTypeId; diff --git a/yudao-module-product/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/harvestbatch/vo/LinkConfigSaveReqVO.java b/yudao-module-product/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/harvestbatch/vo/LinkConfigSaveReqVO.java index e66769d..92001fd 100644 --- a/yudao-module-product/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/harvestbatch/vo/LinkConfigSaveReqVO.java +++ b/yudao-module-product/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/harvestbatch/vo/LinkConfigSaveReqVO.java @@ -5,7 +5,6 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; import javax.validation.Valid; -import javax.validation.constraints.NotEmpty; import javax.validation.constraints.NotNull; import java.util.List; diff --git a/yudao-module-product/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/harvestbatch/HarvestBatchServiceImpl.java b/yudao-module-product/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/harvestbatch/HarvestBatchServiceImpl.java index 7379c29..2a1a135 100644 --- a/yudao-module-product/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/harvestbatch/HarvestBatchServiceImpl.java +++ b/yudao-module-product/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/harvestbatch/HarvestBatchServiceImpl.java @@ -1185,12 +1185,21 @@ public class HarvestBatchServiceImpl implements HarvestBatchService { PreviewRespVO previewResp = new PreviewRespVO(); previewResp.setBlockState(harvestBatch.getBlockState()); - // 查询模板 - UniTemplateDTO uniTemplateDTO = uniTemplateApi.getTemplateById(harvestBatch.getTemplateId()).getData(); - if(uniTemplateDTO == null) { - throw ServiceExceptionUtil.exception(ErrorCodeConstants.CAN_NOT_FIND_DEFAULT_UNI_TEMPLATE); + if (harvestBatch.getTemplateId() != null) { + // 查询模板 + UniTemplateDTO uniTemplateDTO = uniTemplateApi.getTemplateById(harvestBatch.getTemplateId()).getData(); + if (uniTemplateDTO == null) { + throw ServiceExceptionUtil.exception(ErrorCodeConstants.CAN_NOT_FIND__UNI_TEMPLATE); + } + previewResp.setUniTemplate(uniTemplateDTO); + } else { + // 查询默认模板 + UniTemplateDTO uniTemplateDTO = uniTemplateApi.getDefaultTemplate().getData(); + if (uniTemplateDTO == null) { + throw ServiceExceptionUtil.exception(ErrorCodeConstants.CAN_NOT_FIND_DEFAULT_UNI_TEMPLATE); + } + previewResp.setUniTemplate(uniTemplateDTO); } - previewResp.setUniTemplate(uniTemplateDTO); this.getAndSetBlockCertificateData(harvestBatch, previewResp, Boolean.FALSE, languageTypeId); return previewResp; @@ -1388,11 +1397,21 @@ public class HarvestBatchServiceImpl implements HarvestBatchService { public void updateHarvestBatchConfig(HarvestBatchConfigSaveReqVO saveReqVO) { // 获得数据库已有的配置信息 HarvestBatchConfigRespVO configRespVO = this.getHarvestBatchConfig(saveReqVO.getId(), saveReqVO.getLanguageTypeId()); + // 校验所选的模板是否存在 + UniTemplateDTO templateDTO = uniTemplateApi.getTemplateById(saveReqVO.getTemplateId()).getData(); + if (templateDTO == null) { + throw ServiceExceptionUtil.exception(ErrorCodeConstants.SELECTED_UNI_TEMPLATE_NOT_EXITS); + } + // 获取数据库对应的批次配置 + HarvestBatchConfigDO harvestBatchConfig = harvestBatchConfigMapper.selectOne(new LambdaQueryWrapperX() + .eq(HarvestBatchConfigDO::getHarvestBatchId, configRespVO.getHarvestBatchId()).eq(HarvestBatchConfigDO::getLanguageTypeId, saveReqVO.getLanguageTypeId())); + HarvestBatchRespVO harvestBatch = new HarvestBatchRespVO(); BeanUtil.copyProperties(configRespVO, harvestBatch); // 获取环境配置 List envTypeConfigs = envTypeService.getEnvTypeConfigGroupByLandId(harvestBatch.getBelongBusinessId()); + List willUpdateVerifyIds = new ArrayList<>();// 将要更新的商品认证id集合 Map verifyDBMaps = new HashMap<>(); // 数据库中已有的商品认证信息配置 configRespVO.getGoodsVerifys().forEach(verify -> verifyDBMaps.put(verify.getId(), verify)); @@ -2059,6 +2078,18 @@ public class HarvestBatchServiceImpl implements HarvestBatchService { }); } + if (harvestBatchConfig != null) { + harvestBatchConfig.setTemplateId(saveReqVO.getTemplateId()); + // 插入批次配置表 + harvestBatchConfigMapper.updateById(harvestBatchConfig); + } else { + harvestBatchConfig = new HarvestBatchConfigDO(); + harvestBatchConfig.setTemplateId(saveReqVO.getTemplateId()); + harvestBatchConfig.setHarvestBatchId(configRespVO.getHarvestBatchId()); + harvestBatchConfig.setLanguageTypeId(saveReqVO.getLanguageTypeId()); + harvestBatchConfigMapper.insert(harvestBatchConfig); + } + if(!deleteCertificateIds.isEmpty()) { blockCertificateApi.deleteBlockCertificateBatch(deleteCertificateIds); }