获取sku扩展服务配置信息
This commit is contained in:
@@ -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) {
|
||||
|
||||
@@ -32,6 +32,11 @@ public class SkuServicesFormDO extends BaseDO {
|
||||
*/
|
||||
private String name;
|
||||
|
||||
/**
|
||||
* 表单ID
|
||||
*/
|
||||
private Integer formId;
|
||||
|
||||
/**
|
||||
* 服务名称
|
||||
*/
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
@@ -32,6 +32,14 @@ public interface SkuService {
|
||||
*/
|
||||
void createSkuExtend(@Valid SkuExtendVO skuExtendVO);
|
||||
|
||||
/**
|
||||
* 创建sku扩展服务配置
|
||||
*
|
||||
* @param formId 更新信息
|
||||
*/
|
||||
SkuExtendVO getSkuExtend(Integer formId);
|
||||
|
||||
|
||||
/**
|
||||
* 更新单品SKU
|
||||
*
|
||||
|
||||
@@ -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) {
|
||||
// 校验存在
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
@@ -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>
|
||||
Reference in New Issue
Block a user