获取sku扩展服务配置信息

This commit is contained in:
xuelijun
2025-08-02 17:00:48 +08:00
parent bd9c07313f
commit 038a09f286
7 changed files with 266 additions and 9 deletions

View File

@@ -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<Boolean> createSkuExtend(@Valid @RequestBody SkuExtendVO skuExtendVO) {
skuService.createSkuExtend(skuExtendVO);
return success(true);
}
@PutMapping("/update")
@Operation(summary = "更新单品SKU")
public CommonResult<Boolean> 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<Boolean> 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<SkuExtendVO> getSkuExtend(@RequestParam("formId") Integer formId) {
SkuExtendVO skuExtendVO =skuService.getSkuExtend(formId);
return success(skuExtendVO);
}
/* @PostMapping("/updateTransportCar")
@Operation(summary = "修改遗体接运车辆配置")
@PermitAll
public CommonResult<Boolean> createSkuExtend(@RequestBody List<SkuServiceDetailsDO> transportCarList) {
skuService.createSkuExtend(skuExtendVO);
return success(true);
}
*/
/* @GetMapping("/page")
@Operation(summary = "获得单品SKU分页")
public CommonResult<PageResult<SkuRespVO>> getSkuPage(@Valid SkuPageReqVO pageReqVO) {

View File

@@ -32,6 +32,11 @@ public class SkuServicesFormDO extends BaseDO {
*/
private String name;
/**
* 表单ID
*/
private Integer formId;
/**
* 服务名称
*/

View File

@@ -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<SkuServicesFormDO> {
List<SkuServiceExtendVO> selectSkuServiceExtendWithDetails(Integer formId);
}

View File

@@ -32,6 +32,14 @@ public interface SkuService {
*/
void createSkuExtend(@Valid SkuExtendVO skuExtendVO);
/**
* 创建sku扩展服务配置
*
* @param formId 更新信息
*/
SkuExtendVO getSkuExtend(Integer formId);
/**
* 更新单品SKU
*

View File

@@ -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<SkuServiceExtendVO> 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) {
// 校验存在

View File

@@ -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<SkuServiceDetailsDO> skuServiceDetailsDOList;
@Schema(description = "服务物料")
public List<SkuServiceMaterialDO> skuServiceMaterialDOList;
@Schema(description = "服务遗体运输")
public List<SkuServiceTransportDO> skuServiceTransportDOList;
@Schema(description = "服务交付方式")
public List<SkuServiceDeliverDO> skuServiceDeliverDOList;
}

View File

@@ -9,4 +9,72 @@
文档可见https://www.iocoder.cn/MyBatis/x-plugins/
-->
<!-- 结果映射:将多表查询结果映射到 SkuServiceExtendVO -->
<resultMap id="SkuServiceExtendResultMap" type="com.tashow.cloud.product.vo.sku.SkuServiceExtendVO">
<!-- 主表字段 -->
<id property="id" column="id"/>
<result property="name" column="name"/>
<result property="serviceName" column="service_name"/>
<result property="isEnabled" column="is_enabled"/>
<!-- 嵌套集合:服务详情 -->
<collection property="skuServiceDetailsDOList" ofType="com.tashow.cloud.product.dto.SkuServiceDetailsDO"
column="id" select="selectDetailsByServiceId" />
<!-- 嵌套集合:服务物料 -->
<collection property="skuServiceMaterialDOList" ofType="com.tashow.cloud.product.dto.SkuServiceMaterialDO"
column="id" select="selectMaterialByServiceId" />
<!-- 嵌套集合:服务遗体运输 -->
<collection property="skuServiceTransportDOList" ofType="com.tashow.cloud.product.dto.SkuServiceTransportDO"
column="id" select="selectTransportByServiceId" />
<!-- 嵌套集合:服务交付方式 -->
<collection property="skuServiceDeliverDOList" ofType="com.tashow.cloud.product.dto.SkuServiceDeliverDO"
column="id" select="selectDeliverByServiceId" />
</resultMap>
<!-- 查询主表及关联数据 -->
<select id="selectSkuServiceExtendWithDetails" resultMap="SkuServiceExtendResultMap">
SELECT DISTINCT tssf.*
FROM `tz_sku_services_form` tssf
LEFT JOIN tz_sku_service_details tssd ON tssf.id = tssd.service_id
LEFT JOIN tz_sku_service_transport tstr ON tssf.id = tstr.service_id
LEFT JOIN tz_sku_service_material tsm ON tssf.id = tsm.service_id
WHERE form_id = #{formId}
<!-- 可加 WHERE 条件 -->
</select>
<!-- 子查询:根据 service_id 查询服务详情 -->
<select id="selectDetailsByServiceId" resultType="com.tashow.cloud.product.dto.SkuServiceDetailsDO">
SELECT id, service_id, pic, name, price, is_charge, is_default, type, adress,
trigger_name, trigger_id, is_parallel, describe_content,
create_time, update_time, creator, updater, deleted
FROM tz_sku_service_details
WHERE service_id = #{id} AND deleted = 0
</select>
<!-- 子查询:根据 service_id 查询服务物料 -->
<select id="selectMaterialByServiceId" resultType="com.tashow.cloud.product.dto.SkuServiceMaterialDO">
SELECT id, service_id, name, describe_content,
create_time, update_time, creator, updater, deleted
FROM tz_sku_service_material
WHERE service_id = #{id} AND deleted = 0
</select>
<!-- 子查询:根据 service_id 查询服务遗体运输 -->
<select id="selectTransportByServiceId" resultType="com.tashow.cloud.product.dto.SkuServiceTransportDO">
SELECT id, service_id, contacts, address, province, city, area, tel,
create_time, update_time, creator, updater, deleted
FROM tz_sku_service_transport
WHERE service_id = #{id} AND deleted = 0
</select>
<!-- 子查询:根据 service_id 查询服务交付方式 -->
<select id="selectDeliverByServiceId" resultType="com.tashow.cloud.product.dto.SkuServiceDeliverDO">
SELECT id, service_id, type, price, is_charge, address, province, city, area, tel,
create_time, update_time, creator, updater, deleted
FROM tz_sku_service_deliver
WHERE service_id = #{id} AND deleted = 0
</select>
</mapper>