From 038a09f286692ffa9a61e85e9306a1f2fcbb7298 Mon Sep 17 00:00:00 2001 From: xuelijun <977662702@qq.com> Date: Sat, 2 Aug 2025 17:00:48 +0800 Subject: [PATCH] =?UTF-8?q?=E8=8E=B7=E5=8F=96sku=E6=89=A9=E5=B1=95?= =?UTF-8?q?=E6=9C=8D=E5=8A=A1=E9=85=8D=E7=BD=AE=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../product/controller/SkuController.java | 38 ++++-- .../cloud/product/dto/SkuServicesFormDO.java | 5 + .../product/mapper/SkuServicesFormMapper.java | 4 +- .../cloud/product/service/SkuService.java | 8 ++ .../product/service/impl/SkuServiceImpl.java | 111 ++++++++++++++++++ .../product/vo/sku/SkuServiceExtendVO.java | 41 +++++++ .../mapper/product/SkuServicesFormMapper.xml | 68 +++++++++++ 7 files changed, 266 insertions(+), 9 deletions(-) create mode 100644 tashow-module/tashow-module-product/src/main/java/com/tashow/cloud/product/vo/sku/SkuServiceExtendVO.java diff --git a/tashow-module/tashow-module-product/src/main/java/com/tashow/cloud/product/controller/SkuController.java b/tashow-module/tashow-module-product/src/main/java/com/tashow/cloud/product/controller/SkuController.java index acfc332..f444df8 100644 --- a/tashow-module/tashow-module-product/src/main/java/com/tashow/cloud/product/controller/SkuController.java +++ b/tashow-module/tashow-module-product/src/main/java/com/tashow/cloud/product/controller/SkuController.java @@ -1,6 +1,7 @@ package com.tashow.cloud.product.controller; import com.tashow.cloud.product.dto.SkuDO; +import com.tashow.cloud.product.dto.SkuServiceDetailsDO; import com.tashow.cloud.product.service.SkuService; import com.tashow.cloud.product.vo.prod.ProdServiceVO; import com.tashow.cloud.product.vo.sku.SkuExtendVO; @@ -49,14 +50,6 @@ public class SkuController { return success(skuService.createSku(createReqVO)); }*/ - @PostMapping("/createSkuExtend") - @Operation(summary = "创建sku扩展服务配置") - @PermitAll - public CommonResult createSkuExtend(@Valid @RequestBody SkuExtendVO skuExtendVO) { - skuService.createSkuExtend(skuExtendVO); - return success(true); - } - @PutMapping("/update") @Operation(summary = "更新单品SKU") public CommonResult updateSku(@Valid @RequestBody SkuSaveReqVO updateReqVO) { @@ -80,6 +73,35 @@ public class SkuController { return success(BeanUtils.toBean(sku, SkuRespVO.class)); } + + + @PostMapping("/createSkuExtend") + @Operation(summary = "创建sku扩展服务配置") + @PermitAll + public CommonResult createSkuExtend(@Valid @RequestBody SkuExtendVO skuExtendVO) { + skuService.createSkuExtend(skuExtendVO); + return success(true); + } + + + @PostMapping("/getSkuExtend") + @Operation(summary = "获取sku扩展服务配置信息") + @Parameter(name = "formId", description = "表单id", required = true, example = "1") + @PermitAll + public CommonResult getSkuExtend(@RequestParam("formId") Integer formId) { + SkuExtendVO skuExtendVO =skuService.getSkuExtend(formId); + return success(skuExtendVO); + } + + /* @PostMapping("/updateTransportCar") + @Operation(summary = "修改遗体接运车辆配置") + @PermitAll + public CommonResult createSkuExtend(@RequestBody List transportCarList) { + skuService.createSkuExtend(skuExtendVO); + return success(true); + } +*/ + /* @GetMapping("/page") @Operation(summary = "获得单品SKU分页") public CommonResult> getSkuPage(@Valid SkuPageReqVO pageReqVO) { diff --git a/tashow-module/tashow-module-product/src/main/java/com/tashow/cloud/product/dto/SkuServicesFormDO.java b/tashow-module/tashow-module-product/src/main/java/com/tashow/cloud/product/dto/SkuServicesFormDO.java index 68e4154..adcb89e 100644 --- a/tashow-module/tashow-module-product/src/main/java/com/tashow/cloud/product/dto/SkuServicesFormDO.java +++ b/tashow-module/tashow-module-product/src/main/java/com/tashow/cloud/product/dto/SkuServicesFormDO.java @@ -32,6 +32,11 @@ public class SkuServicesFormDO extends BaseDO { */ private String name; + /** + * 表单ID + */ + private Integer formId; + /** * 服务名称 */ diff --git a/tashow-module/tashow-module-product/src/main/java/com/tashow/cloud/product/mapper/SkuServicesFormMapper.java b/tashow-module/tashow-module-product/src/main/java/com/tashow/cloud/product/mapper/SkuServicesFormMapper.java index 8ab0e02..6213bd0 100644 --- a/tashow-module/tashow-module-product/src/main/java/com/tashow/cloud/product/mapper/SkuServicesFormMapper.java +++ b/tashow-module/tashow-module-product/src/main/java/com/tashow/cloud/product/mapper/SkuServicesFormMapper.java @@ -5,7 +5,9 @@ import java.util.*; import com.tashow.cloud.common.pojo.PageResult; import com.tashow.cloud.mybatis.mybatis.core.query.LambdaQueryWrapperX; import com.tashow.cloud.mybatis.mybatis.core.mapper.BaseMapperX; +import com.tashow.cloud.product.dto.SkuDO; import com.tashow.cloud.product.dto.SkuServicesFormDO; +import com.tashow.cloud.product.vo.sku.SkuServiceExtendVO; import org.apache.ibatis.annotations.Mapper; /** @@ -16,5 +18,5 @@ import org.apache.ibatis.annotations.Mapper; @Mapper public interface SkuServicesFormMapper extends BaseMapperX { - + List selectSkuServiceExtendWithDetails(Integer formId); } \ No newline at end of file diff --git a/tashow-module/tashow-module-product/src/main/java/com/tashow/cloud/product/service/SkuService.java b/tashow-module/tashow-module-product/src/main/java/com/tashow/cloud/product/service/SkuService.java index c2c8b86..28770ee 100644 --- a/tashow-module/tashow-module-product/src/main/java/com/tashow/cloud/product/service/SkuService.java +++ b/tashow-module/tashow-module-product/src/main/java/com/tashow/cloud/product/service/SkuService.java @@ -32,6 +32,14 @@ public interface SkuService { */ void createSkuExtend(@Valid SkuExtendVO skuExtendVO); + /** + * 创建sku扩展服务配置 + * + * @param formId 更新信息 + */ + SkuExtendVO getSkuExtend(Integer formId); + + /** * 更新单品SKU * diff --git a/tashow-module/tashow-module-product/src/main/java/com/tashow/cloud/product/service/impl/SkuServiceImpl.java b/tashow-module/tashow-module-product/src/main/java/com/tashow/cloud/product/service/impl/SkuServiceImpl.java index 9772121..a2ef06b 100644 --- a/tashow-module/tashow-module-product/src/main/java/com/tashow/cloud/product/service/impl/SkuServiceImpl.java +++ b/tashow-module/tashow-module-product/src/main/java/com/tashow/cloud/product/service/impl/SkuServiceImpl.java @@ -6,9 +6,11 @@ import com.tashow.cloud.product.service.SkuService; import com.tashow.cloud.product.vo.sku.SkuExtendVO; import com.tashow.cloud.product.vo.sku.SkuPageReqVO; import com.tashow.cloud.product.vo.sku.SkuSaveReqVO; +import com.tashow.cloud.product.vo.sku.SkuServiceExtendVO; import com.tashow.cloud.productapi.enums.BaseEnum; import com.tashow.cloud.productapi.enums.ErrorCodeConstants; import com.tashow.cloud.productapi.enums.ServiceTypeEnum; +import org.apache.commons.lang3.ObjectUtils; import org.springframework.stereotype.Service; import jakarta.annotation.Resource; import org.springframework.validation.annotation.Validated; @@ -246,6 +248,115 @@ public class SkuServiceImpl implements SkuService { } } + @Override + public SkuExtendVO getSkuExtend(Integer formId) { + // 1. 查询所有与 formId 相关的扩展服务配置(已包含详情、物料等关联数据) + List skuServiceExtendVOList = skuServicesFormMapper.selectSkuServiceExtendWithDetails(formId); + + // 2. 创建返回对象 + SkuExtendVO skuExtendVO = new SkuExtendVO(); + // 可以设置 skuFormName,如果 formId 能关联到表单名称的话 + // skuExtendVO.setSkuFormName(...); + + // 3. 遍历查询结果,按类型分类赋值 + for (SkuServiceExtendVO skuServiceExtendVO : skuServiceExtendVOList) { + // 注意:数据库中 type 是 tinyint,但 VO 中定义为 String,需要转换或比较字符串 + // 枚举中 code 是 int,所以最好将 VO 的 type 转为 Integer 进行比较 + Integer typeCode; + try { + typeCode = Integer.valueOf(skuServiceExtendVO.getType()); + } catch (NumberFormatException e) { + // 如果 type 无法转为数字,跳过这条记录或记录日志 + continue; + } + + // 使用 switch 或 if-else 根据 typeCode 赋值 + if (ServiceTypeEnum.TRANSPORT_CAR_CONFIG.getCode() == typeCode) { + // 接运车辆配置 + skuExtendVO.setTransportCarSwitch(skuServiceExtendVO.getIsEnabled()); + skuExtendVO.setTransportCarList(skuServiceExtendVO.getSkuServiceDetailsDOList()); + + } else if (ServiceTypeEnum.TRANSPORT_CAR_MATERIAL.getCode() == typeCode) { + if (ObjectUtils.isEmpty(skuExtendVO.getTransportCarMaterialList())) { + skuExtendVO.setTransportCarMaterialList(skuServiceExtendVO.getSkuServiceMaterialDOList()); + } + } else if (ServiceTypeEnum.BODY_TRANSPORT_CONFIG.getCode() == typeCode) { + // 遗体运输目的地配置 + skuExtendVO.setTrafficSwitch(skuServiceExtendVO.getIsEnabled()); + skuExtendVO.setTrafficList(skuServiceExtendVO.getSkuServiceTransportDOList()); // 注意:这里用 TransportDO + + } else if (ServiceTypeEnum.BODY_TRANSPORT_MATERIAL.getCode() == typeCode) { + // 遗体运输目的地物料 + if (ObjectUtils.isEmpty(skuExtendVO.getTrafficMaterialList())) { + skuExtendVO.setTrafficMaterialList(skuServiceExtendVO.getSkuServiceMaterialDOList()); + } + + } else if (ServiceTypeEnum.BODY_CLEAN_CONFIG.getCode() == typeCode) { + // 遗体清洁配置 + skuExtendVO.setCleanSwitch(skuServiceExtendVO.getIsEnabled()); + skuExtendVO.setCleanList(skuServiceExtendVO.getSkuServiceDetailsDOList()); + + } else if (ServiceTypeEnum.BODY_CLEAN_MATERIAL.getCode() == typeCode) { + // 遗体清洁物料 + if (ObjectUtils.isEmpty(skuExtendVO.getCleanMaterialList())) { + skuExtendVO.setCleanMaterialList(skuServiceExtendVO.getSkuServiceMaterialDOList()); + } + } else if (ServiceTypeEnum.MEMORIAL_CONFIG.getCode() == typeCode) { + // 追思告别配置 + skuExtendVO.setReflectionSwitch(skuServiceExtendVO.getIsEnabled()); + skuExtendVO.setReflectionList(skuServiceExtendVO.getSkuServiceDetailsDOList()); + } else if (ServiceTypeEnum.MEMORIAL_MATERIAL.getCode() == typeCode) { + // 追思告别物料 + if (ObjectUtils.isEmpty(skuExtendVO.getReflectionMaterialList())) { + skuExtendVO.setReflectionMaterialList(skuServiceExtendVO.getSkuServiceMaterialDOList()); + } + } else if (ServiceTypeEnum.CREMATION_CONFIG.getCode() == typeCode) { + // 遗体火化配置 + skuExtendVO.setCremationSwitch(skuServiceExtendVO.getIsEnabled()); + skuExtendVO.setCremationList(skuServiceExtendVO.getSkuServiceDetailsDOList()); + } else if (ServiceTypeEnum.CREMATION_MATERIAL.getCode() == typeCode) { + // 遗体火化物料 + if (ObjectUtils.isEmpty(skuExtendVO.getCremationMaterialList())) { + skuExtendVO.setCremationMaterialList(skuServiceExtendVO.getSkuServiceMaterialDOList()); + } + + } else if (ServiceTypeEnum.ASH_PROCESSING_CONFIG.getCode() == typeCode) { + // 骨灰处理配置 + skuExtendVO.setAshProcessingSwitch(skuServiceExtendVO.getIsEnabled()); + skuExtendVO.setAshProcessingList(skuServiceExtendVO.getSkuServiceDetailsDOList()); + + } else if (ServiceTypeEnum.ASH_PROCESSING_DELIVERY.getCode() == typeCode) { + // 骨灰处理配送方式 (补充) + if (ObjectUtils.isEmpty(skuExtendVO.getAshProcessingDeliverList())) { + skuExtendVO.setAshProcessingDeliverList(skuServiceExtendVO.getSkuServiceDeliverDOList()); + } + } else if (ServiceTypeEnum.ASH_PROCESSING_MATERIAL.getCode() == typeCode) { + // 骨灰处理物料 + if (ObjectUtils.isEmpty(skuExtendVO.getAshProcessingMaterialList())) { + skuExtendVO.setAshProcessingMaterialList(skuServiceExtendVO.getSkuServiceMaterialDOList()); + } + } else if (ServiceTypeEnum.BONE_ASH_CONFIG.getCode() == typeCode) { + // 骨灰装殓配置 + skuExtendVO.setBoneashSwitch(skuServiceExtendVO.getIsEnabled()); + skuExtendVO.setBoneashList(skuServiceExtendVO.getSkuServiceDetailsDOList()); + // 注意:骨灰装殓是否有物料?根据你的 DO 列表,没有 material 字段 + + } else if (ServiceTypeEnum.SOUVENIR_CONFIG.getCode() == typeCode) { + // 纪念品配置 + skuExtendVO.setSouvenirSwitch(skuServiceExtendVO.getIsEnabled()); + skuExtendVO.setSouvenirList(skuServiceExtendVO.getSkuServiceDetailsDOList()); + } else if (ServiceTypeEnum.SOUVENIR_DELIVERY.getCode() == typeCode) { + // 纪念品配送方式 (补充) + if (ObjectUtils.isEmpty(skuExtendVO.getSouvenirDeliverList())) { + skuExtendVO.setSouvenirDeliverList(skuServiceExtendVO.getSkuServiceDeliverDOList()); + } + } + // 可以添加 default 处理未知类型 + } + + // 4. 返回组装好的对象 + return skuExtendVO; + } @Override public void updateSku(SkuSaveReqVO updateReqVO) { // 校验存在 diff --git a/tashow-module/tashow-module-product/src/main/java/com/tashow/cloud/product/vo/sku/SkuServiceExtendVO.java b/tashow-module/tashow-module-product/src/main/java/com/tashow/cloud/product/vo/sku/SkuServiceExtendVO.java new file mode 100644 index 0000000..3ad2a8c --- /dev/null +++ b/tashow-module/tashow-module-product/src/main/java/com/tashow/cloud/product/vo/sku/SkuServiceExtendVO.java @@ -0,0 +1,41 @@ +package com.tashow.cloud.product.vo.sku; + +import com.tashow.cloud.product.dto.SkuServiceDeliverDO; +import com.tashow.cloud.product.dto.SkuServiceDetailsDO; +import com.tashow.cloud.product.dto.SkuServiceMaterialDO; +import com.tashow.cloud.product.dto.SkuServiceTransportDO; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.util.List; + +@Schema(description = "sku扩展服务表单 VO") +@Data +public class SkuServiceExtendVO { + + @Schema(description = "id") + private Long id; + + @Schema(description = "表单名称") + private String name; + + @Schema(description = "服务名称") + private String serviceName; + + @Schema(description = "类型0:遗体运输1:遗体运输物料") + private String type; + + @Schema(description = "服务名称") + private Integer isEnabled; + + @Schema(description = "服务详情") + public List skuServiceDetailsDOList; + @Schema(description = "服务物料") + public List skuServiceMaterialDOList; + + @Schema(description = "服务遗体运输") + public List skuServiceTransportDOList; + + @Schema(description = "服务交付方式") + public List skuServiceDeliverDOList; +} \ No newline at end of file diff --git a/tashow-module/tashow-module-product/src/main/resources/mapper/product/SkuServicesFormMapper.xml b/tashow-module/tashow-module-product/src/main/resources/mapper/product/SkuServicesFormMapper.xml index 0137281..a2ba040 100644 --- a/tashow-module/tashow-module-product/src/main/resources/mapper/product/SkuServicesFormMapper.xml +++ b/tashow-module/tashow-module-product/src/main/resources/mapper/product/SkuServicesFormMapper.xml @@ -9,4 +9,72 @@ 文档可见:https://www.iocoder.cn/MyBatis/x-plugins/ --> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file