mirror of
				https://gitee.com/hhyykk/ipms-sjy.git
				synced 2025-11-04 12:18:42 +08:00 
			
		
		
		
	运费模板 review 修改. 运费模块可以选择多个区域
This commit is contained in:
		@@ -74,7 +74,7 @@ public class DeliveryExpressController {
 | 
			
		||||
        return success(DeliveryExpressConvert.INSTANCE.convertPage(pageResult));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // TODO @jason:运费模版,可以去掉哈,没啥用;
 | 
			
		||||
    // TODO @jason:运费模版,@芋艿 你的意思是运费模板导出没有必要吧。已经去掉了。这个是快递公司导出
 | 
			
		||||
    @GetMapping("/export-excel")
 | 
			
		||||
    @Operation(summary = "导出快递公司 Excel")
 | 
			
		||||
    @PreAuthorize("@ss.hasPermission('trade:delivery:express:export')")
 | 
			
		||||
 
 | 
			
		||||
@@ -84,17 +84,4 @@ public class DeliveryExpressTemplateController {
 | 
			
		||||
        PageResult<DeliveryExpressTemplateDO> pageResult = deliveryExpressTemplateService.getDeliveryExpressTemplatePage(pageVO);
 | 
			
		||||
        return success(DeliveryExpressTemplateConvert.INSTANCE.convertPage(pageResult));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @GetMapping("/export-excel")
 | 
			
		||||
    @Operation(summary = "导出快递运费模板 Excel")
 | 
			
		||||
    @PreAuthorize("@ss.hasPermission('trade:delivery:express-template:export')")
 | 
			
		||||
    @OperateLog(type = EXPORT)
 | 
			
		||||
    public void exportDeliveryExpressTemplateExcel(@Valid DeliveryExpressTemplateExportReqVO exportReqVO,
 | 
			
		||||
              HttpServletResponse response) throws IOException {
 | 
			
		||||
        List<DeliveryExpressTemplateDO> list = deliveryExpressTemplateService.getDeliveryExpressTemplateList(exportReqVO);
 | 
			
		||||
        // 导出 Excel
 | 
			
		||||
        List<DeliveryExpressTemplateExcelVO> datas = DeliveryExpressTemplateConvert.INSTANCE.convertList02(list);
 | 
			
		||||
        ExcelUtils.write(response, "快递运费模板.xls", "数据", DeliveryExpressTemplateExcelVO.class, datas);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,5 +1,8 @@
 | 
			
		||||
package cn.iocoder.yudao.module.trade.controller.admin.delivery.vo;
 | 
			
		||||
 | 
			
		||||
import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
 | 
			
		||||
import cn.iocoder.yudao.framework.excel.core.convert.DictConvert;
 | 
			
		||||
import cn.iocoder.yudao.module.system.enums.DictTypeConstants;
 | 
			
		||||
import com.alibaba.excel.annotation.ExcelProperty;
 | 
			
		||||
import lombok.Data;
 | 
			
		||||
 | 
			
		||||
@@ -7,8 +10,6 @@ import java.time.LocalDateTime;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * 快递公司 Excel VO
 | 
			
		||||
 *
 | 
			
		||||
 * @author jason
 | 
			
		||||
 */
 | 
			
		||||
@Data
 | 
			
		||||
public class DeliveryExpressExcelVO {
 | 
			
		||||
@@ -28,9 +29,9 @@ public class DeliveryExpressExcelVO {
 | 
			
		||||
    @ExcelProperty("排序")
 | 
			
		||||
    private Integer sort;
 | 
			
		||||
 | 
			
		||||
    @ExcelProperty("状态")
 | 
			
		||||
    // TODO @jason:可以使用     @DictFormat(DictTypeConstants.COMMON_STATUS)
 | 
			
		||||
    private Byte status;
 | 
			
		||||
    @ExcelProperty(value = "状态", converter = DictConvert.class)
 | 
			
		||||
    @DictFormat(DictTypeConstants.COMMON_STATUS)
 | 
			
		||||
    private Integer status;
 | 
			
		||||
 | 
			
		||||
    @ExcelProperty("创建时间")
 | 
			
		||||
    private LocalDateTime createTime;
 | 
			
		||||
 
 | 
			
		||||
@@ -1,31 +0,0 @@
 | 
			
		||||
package cn.iocoder.yudao.module.trade.controller.admin.delivery.vo;
 | 
			
		||||
 | 
			
		||||
import com.alibaba.excel.annotation.ExcelProperty;
 | 
			
		||||
import lombok.Data;
 | 
			
		||||
 | 
			
		||||
import java.time.LocalDateTime;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * 快递运费模板 Excel VO
 | 
			
		||||
 *
 | 
			
		||||
 * @author jason
 | 
			
		||||
 */
 | 
			
		||||
@Data
 | 
			
		||||
public class DeliveryExpressTemplateExcelVO {
 | 
			
		||||
 | 
			
		||||
    @ExcelProperty("编号,自增")
 | 
			
		||||
    private Long id;
 | 
			
		||||
 | 
			
		||||
    @ExcelProperty("模板名称")
 | 
			
		||||
    private String name;
 | 
			
		||||
 | 
			
		||||
    @ExcelProperty("配送计费方式 1:按件 2:按重量 3:按体积")
 | 
			
		||||
    private Integer chargeMode;
 | 
			
		||||
 | 
			
		||||
    @ExcelProperty("排序")
 | 
			
		||||
    private Integer sort;
 | 
			
		||||
 | 
			
		||||
    @ExcelProperty("创建时间")
 | 
			
		||||
    private LocalDateTime createTime;
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
@@ -1,26 +0,0 @@
 | 
			
		||||
package cn.iocoder.yudao.module.trade.controller.admin.delivery.vo;
 | 
			
		||||
 | 
			
		||||
import lombok.*;
 | 
			
		||||
import java.util.*;
 | 
			
		||||
import io.swagger.v3.oas.annotations.media.Schema;
 | 
			
		||||
import cn.iocoder.yudao.framework.common.pojo.PageParam;
 | 
			
		||||
import java.time.LocalDateTime;
 | 
			
		||||
import org.springframework.format.annotation.DateTimeFormat;
 | 
			
		||||
 | 
			
		||||
import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
 | 
			
		||||
 | 
			
		||||
@Schema(description = "管理后台 - 快递运费模板 Excel 导出 Request VO,参数和 DeliveryExpressTemplatePageReqVO 是一致的")
 | 
			
		||||
@Data
 | 
			
		||||
public class DeliveryExpressTemplateExportReqVO {
 | 
			
		||||
 | 
			
		||||
    @Schema(description = "模板名称", example = "王五")
 | 
			
		||||
    private String name;
 | 
			
		||||
 | 
			
		||||
    @Schema(description = "配送计费方式 1:按件 2:按重量 3:按体积")
 | 
			
		||||
    private Integer chargeMode;
 | 
			
		||||
 | 
			
		||||
    @Schema(description = "创建时间")
 | 
			
		||||
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
 | 
			
		||||
    private LocalDateTime[] createTime;
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
@@ -3,19 +3,19 @@ package cn.iocoder.yudao.module.trade.controller.admin.delivery.vo;
 | 
			
		||||
import io.swagger.v3.oas.annotations.media.Schema;
 | 
			
		||||
import lombok.Data;
 | 
			
		||||
 | 
			
		||||
import javax.validation.constraints.NotEmpty;
 | 
			
		||||
import javax.validation.constraints.NotNull;
 | 
			
		||||
import java.util.List;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * 快递运费模板运费设置 Base VO,提供给添加运费模板使用
 | 
			
		||||
 *
 | 
			
		||||
 * @author jason
 | 
			
		||||
 */
 | 
			
		||||
@Data
 | 
			
		||||
public class ExpressTemplateChargeBaseVO {
 | 
			
		||||
 | 
			
		||||
    @Schema(description = "区域编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
 | 
			
		||||
    @NotNull(message = "区域编号不能为空")
 | 
			
		||||
    private Integer areaId;
 | 
			
		||||
    @Schema(description = "区域编号列表", requiredMode = Schema.RequiredMode.REQUIRED, example = "[1,120000]")
 | 
			
		||||
    @NotEmpty(message = "区域编号列表不能为空")
 | 
			
		||||
    private List<Integer> areaIds;
 | 
			
		||||
 | 
			
		||||
    @Schema(description = "首件数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "5")
 | 
			
		||||
    @NotNull(message = "首件数量不能为空")
 | 
			
		||||
 
 | 
			
		||||
@@ -3,9 +3,7 @@ package cn.iocoder.yudao.module.trade.controller.admin.delivery.vo;
 | 
			
		||||
import io.swagger.v3.oas.annotations.media.Schema;
 | 
			
		||||
import lombok.Data;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @author jason
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
@Data
 | 
			
		||||
public class ExpressTemplateChargeUpdateVO extends ExpressTemplateChargeBaseVO {
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -3,19 +3,19 @@ package cn.iocoder.yudao.module.trade.controller.admin.delivery.vo;
 | 
			
		||||
import io.swagger.v3.oas.annotations.media.Schema;
 | 
			
		||||
import lombok.Data;
 | 
			
		||||
 | 
			
		||||
import javax.validation.constraints.NotEmpty;
 | 
			
		||||
import javax.validation.constraints.NotNull;
 | 
			
		||||
import java.util.List;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * 快递运费模板包邮 Base VO,提供给添加运费模板使用
 | 
			
		||||
 *
 | 
			
		||||
 * @author jason
 | 
			
		||||
 */
 | 
			
		||||
@Data
 | 
			
		||||
public class ExpressTemplateFreeBaseVO {
 | 
			
		||||
 | 
			
		||||
    @Schema(description = "区域编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
 | 
			
		||||
    @NotNull(message = "区域编号不能为空")
 | 
			
		||||
    private Integer areaId;
 | 
			
		||||
    @Schema(description = "区域编号列表", requiredMode = Schema.RequiredMode.REQUIRED, example = "[1,120000]")
 | 
			
		||||
    @NotEmpty(message = "区域编号列表不能为空")
 | 
			
		||||
    private List<Integer> areaIds;
 | 
			
		||||
 | 
			
		||||
    @Schema(description = "包邮金额", requiredMode = Schema.RequiredMode.REQUIRED, example = "5000")
 | 
			
		||||
    @NotNull(message = "包邮金额不能为空")
 | 
			
		||||
 
 | 
			
		||||
@@ -5,8 +5,6 @@ import lombok.Data;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * 快递运费模板包邮 更新 VO
 | 
			
		||||
 *
 | 
			
		||||
 * @author jason
 | 
			
		||||
 */
 | 
			
		||||
@Data
 | 
			
		||||
public class ExpressTemplateFreeUpdateVO extends ExpressTemplateFreeBaseVO {
 | 
			
		||||
 
 | 
			
		||||
@@ -16,7 +16,7 @@ import org.mapstruct.factory.Mappers;
 | 
			
		||||
/**
 | 
			
		||||
 * 快递公司 Convert
 | 
			
		||||
 *
 | 
			
		||||
 * @author 芋道源码
 | 
			
		||||
 * @author jason
 | 
			
		||||
 */
 | 
			
		||||
@Mapper
 | 
			
		||||
public interface DeliveryExpressConvert {
 | 
			
		||||
 
 | 
			
		||||
@@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.trade.convert.delivery;
 | 
			
		||||
 | 
			
		||||
import cn.hutool.core.collection.CollUtil;
 | 
			
		||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
 | 
			
		||||
import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
 | 
			
		||||
import cn.iocoder.yudao.module.trade.controller.admin.delivery.vo.*;
 | 
			
		||||
import cn.iocoder.yudao.module.trade.dal.dataobject.delivery.DeliveryExpressTemplateChargeDO;
 | 
			
		||||
import cn.iocoder.yudao.module.trade.dal.dataobject.delivery.DeliveryExpressTemplateDO;
 | 
			
		||||
@@ -16,7 +17,7 @@ import java.util.List;
 | 
			
		||||
/**
 | 
			
		||||
 * 快递运费模板 Convert
 | 
			
		||||
 *
 | 
			
		||||
 * @author 芋道源码
 | 
			
		||||
 * @author jason
 | 
			
		||||
 */
 | 
			
		||||
@Mapper
 | 
			
		||||
public interface DeliveryExpressTemplateConvert {
 | 
			
		||||
@@ -37,8 +38,6 @@ public interface DeliveryExpressTemplateConvert {
 | 
			
		||||
 | 
			
		||||
    PageResult<DeliveryExpressTemplateSimpleRespVO> convertPage(PageResult<DeliveryExpressTemplateDO> page);
 | 
			
		||||
 | 
			
		||||
    List<DeliveryExpressTemplateExcelVO> convertList02(List<DeliveryExpressTemplateDO> list);
 | 
			
		||||
 | 
			
		||||
    default DeliveryExpressTemplateRespVO convert(DeliveryExpressTemplateDO bean,
 | 
			
		||||
                                                  List<DeliveryExpressTemplateChargeDO> chargeList,
 | 
			
		||||
                                                  List<DeliveryExpressTemplateFreeDO> freeList){
 | 
			
		||||
@@ -55,15 +54,7 @@ public interface DeliveryExpressTemplateConvert {
 | 
			
		||||
    DeliveryExpressTemplateChargeDO convertTemplateCharge(ExpressTemplateChargeUpdateVO vo);
 | 
			
		||||
 | 
			
		||||
    default List<DeliveryExpressTemplateChargeDO> convertTemplateChargeList(Long templateId, Integer chargeMode, List<ExpressTemplateChargeBaseVO> list) {
 | 
			
		||||
        // TODO @jason:可以使用 CollectionUtils.convertList,本质上就是 stream convert list
 | 
			
		||||
        if(CollUtil.isEmpty(list)){
 | 
			
		||||
            return Collections.emptyList();
 | 
			
		||||
        }
 | 
			
		||||
        List<DeliveryExpressTemplateChargeDO> templateChargeList = new ArrayList<>(list.size());
 | 
			
		||||
        for (ExpressTemplateChargeBaseVO item : list) {
 | 
			
		||||
            templateChargeList.add(convertTemplateCharge(templateId, chargeMode, item));
 | 
			
		||||
        }
 | 
			
		||||
        return templateChargeList;
 | 
			
		||||
        return CollectionUtils.convertList(list, vo -> convertTemplateCharge(templateId, chargeMode, vo));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // ========== Template Free ==========
 | 
			
		||||
@@ -76,17 +67,8 @@ public interface DeliveryExpressTemplateConvert {
 | 
			
		||||
 | 
			
		||||
    List<ExpressTemplateFreeBaseVO> convertTemplateFreeList(List<DeliveryExpressTemplateFreeDO> list);
 | 
			
		||||
 | 
			
		||||
    // TODO @jason:, List,中间一个空格哈。代码的空格和空行要注意,嘿嘿~
 | 
			
		||||
    default List<DeliveryExpressTemplateFreeDO> convertTemplateFreeList(Long templateId,  List<ExpressTemplateFreeBaseVO> list) {
 | 
			
		||||
        // TODO @jason:可以使用 CollectionUtils.convertList,本质上就是 stream convert list
 | 
			
		||||
        if (CollUtil.isEmpty(list)) {
 | 
			
		||||
            return Collections.emptyList();
 | 
			
		||||
        }
 | 
			
		||||
        List<DeliveryExpressTemplateFreeDO> templateFreeList = new ArrayList<>(list.size());
 | 
			
		||||
        for (ExpressTemplateFreeBaseVO item : list) {
 | 
			
		||||
            templateFreeList.add(convertTemplateFree(templateId, item));
 | 
			
		||||
        }
 | 
			
		||||
        return templateFreeList;
 | 
			
		||||
    default List<DeliveryExpressTemplateFreeDO> convertTemplateFreeList(Long templateId, List<ExpressTemplateFreeBaseVO> list) {
 | 
			
		||||
        return CollectionUtils.convertList(list, vo -> convertTemplateFree(templateId, vo));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,17 +1,21 @@
 | 
			
		||||
package cn.iocoder.yudao.module.trade.dal.dataobject.delivery;
 | 
			
		||||
 | 
			
		||||
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
 | 
			
		||||
import cn.iocoder.yudao.framework.mybatis.core.type.IntegerListTypeHandler;
 | 
			
		||||
import com.baomidou.mybatisplus.annotation.KeySequence;
 | 
			
		||||
import com.baomidou.mybatisplus.annotation.TableField;
 | 
			
		||||
import com.baomidou.mybatisplus.annotation.TableId;
 | 
			
		||||
import com.baomidou.mybatisplus.annotation.TableName;
 | 
			
		||||
import lombok.Data;
 | 
			
		||||
 | 
			
		||||
import java.util.List;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * 快递运费模板计费配置 DO
 | 
			
		||||
 *
 | 
			
		||||
 * @author jason
 | 
			
		||||
 */
 | 
			
		||||
@TableName(value ="trade_delivery_express_template_charge")
 | 
			
		||||
@TableName(value ="trade_delivery_express_template_charge", autoResultMap = true)
 | 
			
		||||
@KeySequence("trade_delivery_express_template_charge_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
 | 
			
		||||
@Data
 | 
			
		||||
public class DeliveryExpressTemplateChargeDO extends BaseDO {
 | 
			
		||||
@@ -30,9 +34,10 @@ public class DeliveryExpressTemplateChargeDO extends BaseDO {
 | 
			
		||||
    private Long templateId;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 配送区域
 | 
			
		||||
     * 配送区域编号列表
 | 
			
		||||
     */
 | 
			
		||||
    private Integer areaId;
 | 
			
		||||
    @TableField(typeHandler = IntegerListTypeHandler.class)
 | 
			
		||||
    private List<Integer> areaIds;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 配送计费方式
 | 
			
		||||
 
 | 
			
		||||
@@ -1,17 +1,21 @@
 | 
			
		||||
package cn.iocoder.yudao.module.trade.dal.dataobject.delivery;
 | 
			
		||||
 | 
			
		||||
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
 | 
			
		||||
import cn.iocoder.yudao.framework.mybatis.core.type.IntegerListTypeHandler;
 | 
			
		||||
import com.baomidou.mybatisplus.annotation.KeySequence;
 | 
			
		||||
import com.baomidou.mybatisplus.annotation.TableField;
 | 
			
		||||
import com.baomidou.mybatisplus.annotation.TableId;
 | 
			
		||||
import com.baomidou.mybatisplus.annotation.TableName;
 | 
			
		||||
import lombok.Data;
 | 
			
		||||
 | 
			
		||||
import java.util.List;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * 快递运费模板包邮配置 DO
 | 
			
		||||
 *
 | 
			
		||||
 * @author jason
 | 
			
		||||
 */
 | 
			
		||||
@TableName(value ="trade_delivery_express_template_free")
 | 
			
		||||
@TableName(value ="trade_delivery_express_template_free", autoResultMap = true)
 | 
			
		||||
@KeySequence("trade_delivery_express_template_free_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
 | 
			
		||||
@Data
 | 
			
		||||
public class DeliveryExpressTemplateFreeDO extends BaseDO {
 | 
			
		||||
@@ -29,10 +33,12 @@ public class DeliveryExpressTemplateFreeDO extends BaseDO {
 | 
			
		||||
     */
 | 
			
		||||
    private Long templateId;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 包邮区域id
 | 
			
		||||
     * 配送区域编号列表
 | 
			
		||||
     */
 | 
			
		||||
    private Integer areaId;
 | 
			
		||||
    @TableField(typeHandler = IntegerListTypeHandler.class)
 | 
			
		||||
    private List<Integer> areaIds;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 包邮金额,单位:分
 | 
			
		||||
 
 | 
			
		||||
@@ -14,10 +14,6 @@ import java.util.List;
 | 
			
		||||
@Mapper
 | 
			
		||||
public interface DeliveryExpressTemplateChargeMapper extends BaseMapperX<DeliveryExpressTemplateChargeDO> {
 | 
			
		||||
 | 
			
		||||
    @Repository
 | 
			
		||||
    class BatchInsertMapper extends ServiceImpl<DeliveryExpressTemplateChargeMapper, DeliveryExpressTemplateChargeDO> {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    default List<DeliveryExpressTemplateChargeDO> selectListByTemplateId(Long templateId){
 | 
			
		||||
        return selectList(new LambdaQueryWrapper<DeliveryExpressTemplateChargeDO>()
 | 
			
		||||
                .eq(DeliveryExpressTemplateChargeDO::getTemplateId, templateId));
 | 
			
		||||
 
 | 
			
		||||
@@ -14,10 +14,6 @@ import java.util.List;
 | 
			
		||||
@Mapper
 | 
			
		||||
public interface DeliveryExpressTemplateFreeMapper extends BaseMapperX<DeliveryExpressTemplateFreeDO> {
 | 
			
		||||
 | 
			
		||||
    @Repository
 | 
			
		||||
    class BatchInsertMapper extends ServiceImpl<DeliveryExpressTemplateFreeMapper, DeliveryExpressTemplateFreeDO> {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    default List<DeliveryExpressTemplateFreeDO> selectListByTemplateId(Long templateId) {
 | 
			
		||||
        return selectList(new LambdaQueryWrapper<DeliveryExpressTemplateFreeDO>()
 | 
			
		||||
                .eq(DeliveryExpressTemplateFreeDO::getTemplateId, templateId));
 | 
			
		||||
 
 | 
			
		||||
@@ -4,14 +4,10 @@ package cn.iocoder.yudao.module.trade.dal.mysql.delivery;
 | 
			
		||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
 | 
			
		||||
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
 | 
			
		||||
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
 | 
			
		||||
import cn.iocoder.yudao.module.trade.controller.admin.delivery.vo.DeliveryExpressTemplateExportReqVO;
 | 
			
		||||
import cn.iocoder.yudao.module.trade.controller.admin.delivery.vo.DeliveryExpressTemplatePageReqVO;
 | 
			
		||||
import cn.iocoder.yudao.module.trade.dal.dataobject.delivery.DeliveryExpressTemplateDO;
 | 
			
		||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 | 
			
		||||
import org.apache.ibatis.annotations.Mapper;
 | 
			
		||||
 | 
			
		||||
import java.util.List;
 | 
			
		||||
 | 
			
		||||
@Mapper
 | 
			
		||||
public interface DeliveryExpressTemplateMapper extends BaseMapperX<DeliveryExpressTemplateDO> {
 | 
			
		||||
 | 
			
		||||
@@ -23,18 +19,8 @@ public interface DeliveryExpressTemplateMapper extends BaseMapperX<DeliveryExpre
 | 
			
		||||
                .orderByAsc(DeliveryExpressTemplateDO::getSort));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    default List<DeliveryExpressTemplateDO> selectList(DeliveryExpressTemplateExportReqVO reqVO) {
 | 
			
		||||
        return selectList(new LambdaQueryWrapperX<DeliveryExpressTemplateDO>()
 | 
			
		||||
                .likeIfPresent(DeliveryExpressTemplateDO::getName, reqVO.getName())
 | 
			
		||||
                .eqIfPresent(DeliveryExpressTemplateDO::getChargeMode, reqVO.getChargeMode())
 | 
			
		||||
                .betweenIfPresent(DeliveryExpressTemplateDO::getCreateTime, reqVO.getCreateTime())
 | 
			
		||||
                .orderByAsc(DeliveryExpressTemplateDO::getSort));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // TODO @jason:可以用 selectOne(DeliveryExpressTemplateDO::getName, name),常用的我封装了哈。简洁一点~
 | 
			
		||||
    default DeliveryExpressTemplateDO selectByName(String name) {
 | 
			
		||||
        return selectOne(new LambdaQueryWrapper<DeliveryExpressTemplateDO>()
 | 
			
		||||
                .eq(DeliveryExpressTemplateDO::getName, name));
 | 
			
		||||
        return selectOne(DeliveryExpressTemplateDO::getName,name);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -58,13 +58,4 @@ public interface DeliveryExpressTemplateService {
 | 
			
		||||
     * @return 快递运费模板分页
 | 
			
		||||
     */
 | 
			
		||||
    PageResult<DeliveryExpressTemplateDO> getDeliveryExpressTemplatePage(DeliveryExpressTemplatePageReqVO pageReqVO);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 获得快递运费模板列表, 用于 Excel 导出
 | 
			
		||||
     *
 | 
			
		||||
     * @param exportReqVO 查询条件
 | 
			
		||||
     * @return 快递运费模板列表
 | 
			
		||||
     */
 | 
			
		||||
    List<DeliveryExpressTemplateDO> getDeliveryExpressTemplateList(DeliveryExpressTemplateExportReqVO exportReqVO);
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -36,32 +36,24 @@ public class DeliveryExpressTemplateServiceImpl implements DeliveryExpressTempla
 | 
			
		||||
    private DeliveryExpressTemplateChargeMapper expressTemplateChargeMapper;
 | 
			
		||||
    @Resource
 | 
			
		||||
    private DeliveryExpressTemplateFreeMapper expressTemplateFreeMapper;
 | 
			
		||||
    // TODO  @jason:应该不用 BatchInsertMapper 拉,直接走 expressTemplateChargeMapper.insertBatch
 | 
			
		||||
    @Resource
 | 
			
		||||
    private DeliveryExpressTemplateChargeMapper.BatchInsertMapper  expressTemplateChargeBatchMapper;
 | 
			
		||||
    @Resource
 | 
			
		||||
    private DeliveryExpressTemplateFreeMapper.BatchInsertMapper expressTemplateFreeBatchMapper;
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    @Transactional(rollbackFor = Exception.class)
 | 
			
		||||
    public Long createDeliveryExpressTemplate(DeliveryExpressTemplateCreateReqVO createReqVO) {
 | 
			
		||||
        // TODO @jason:中英文之间,要有空格哈。例如说, // 校验模板名是否唯一
 | 
			
		||||
        //校验模板名是否唯一
 | 
			
		||||
        // 校验模板名是否唯一
 | 
			
		||||
        validateTemplateNameUnique(createReqVO.getName(), null);
 | 
			
		||||
 | 
			
		||||
        // 插入
 | 
			
		||||
        DeliveryExpressTemplateDO deliveryExpressTemplate = INSTANCE.convert(createReqVO);
 | 
			
		||||
        expressTemplateMapper.insert(deliveryExpressTemplate);
 | 
			
		||||
        //插入运费模板计费表
 | 
			
		||||
        // TODO @jason:if (,中间要有空格
 | 
			
		||||
        if(CollUtil.isNotEmpty(createReqVO.getTemplateCharge())) {
 | 
			
		||||
            expressTemplateChargeBatchMapper.saveBatch(
 | 
			
		||||
                INSTANCE.convertTemplateChargeList(deliveryExpressTemplate.getId(), createReqVO.getChargeMode(), createReqVO.getTemplateCharge())
 | 
			
		||||
        // 插入运费模板计费表
 | 
			
		||||
        if (CollUtil.isNotEmpty(createReqVO.getTemplateCharge())) {
 | 
			
		||||
            expressTemplateChargeMapper.insertBatch(
 | 
			
		||||
                    INSTANCE.convertTemplateChargeList(deliveryExpressTemplate.getId(), createReqVO.getChargeMode(), createReqVO.getTemplateCharge())
 | 
			
		||||
            );
 | 
			
		||||
        }
 | 
			
		||||
        //插入运费模板包邮表
 | 
			
		||||
        if(CollUtil.isNotEmpty(createReqVO.getTemplateFree())) {
 | 
			
		||||
            expressTemplateFreeBatchMapper.saveBatch(
 | 
			
		||||
        // 插入运费模板包邮表
 | 
			
		||||
        if (CollUtil.isNotEmpty(createReqVO.getTemplateFree())) {
 | 
			
		||||
            expressTemplateFreeMapper.insertBatch(
 | 
			
		||||
                    INSTANCE.convertTemplateFreeList(deliveryExpressTemplate.getId(), createReqVO.getTemplateFree())
 | 
			
		||||
            );
 | 
			
		||||
        }
 | 
			
		||||
@@ -73,14 +65,13 @@ public class DeliveryExpressTemplateServiceImpl implements DeliveryExpressTempla
 | 
			
		||||
    public void updateDeliveryExpressTemplate(DeliveryExpressTemplateUpdateReqVO updateReqVO) {
 | 
			
		||||
        // 校验存在
 | 
			
		||||
        validateDeliveryExpressTemplateExists(updateReqVO.getId());
 | 
			
		||||
        //校验模板名是否唯一
 | 
			
		||||
        // 校验模板名是否唯一
 | 
			
		||||
        validateTemplateNameUnique(updateReqVO.getName(), updateReqVO.getId());
 | 
			
		||||
 | 
			
		||||
        //更新运费从表
 | 
			
		||||
        // 更新运费从表
 | 
			
		||||
        updateExpressTemplateCharge(updateReqVO);
 | 
			
		||||
        //更新包邮从表
 | 
			
		||||
        // 更新包邮从表
 | 
			
		||||
        updateExpressTemplateFree(updateReqVO);
 | 
			
		||||
        //更新模板主表
 | 
			
		||||
        // 更新模板主表
 | 
			
		||||
        DeliveryExpressTemplateDO updateObj = INSTANCE.convert(updateReqVO);
 | 
			
		||||
        expressTemplateMapper.updateById(updateObj);
 | 
			
		||||
    }
 | 
			
		||||
@@ -88,29 +79,29 @@ public class DeliveryExpressTemplateServiceImpl implements DeliveryExpressTempla
 | 
			
		||||
    private void updateExpressTemplateFree(DeliveryExpressTemplateUpdateReqVO updateReqVO) {
 | 
			
		||||
        List<DeliveryExpressTemplateFreeDO> oldFreeList = expressTemplateFreeMapper.selectListByTemplateId(updateReqVO.getId());
 | 
			
		||||
        List<ExpressTemplateFreeUpdateVO> newFreeList = updateReqVO.getTemplateFree();
 | 
			
		||||
        //新增包邮区域列表
 | 
			
		||||
        // 新增包邮区域列表
 | 
			
		||||
        List<DeliveryExpressTemplateFreeDO> addFreeList = new ArrayList<>(newFreeList.size());
 | 
			
		||||
        //更新包邮区域列表
 | 
			
		||||
        // 更新包邮区域列表
 | 
			
		||||
        List<DeliveryExpressTemplateFreeDO> updateFreeList = new ArrayList<>(newFreeList.size());
 | 
			
		||||
        for (ExpressTemplateFreeUpdateVO item : newFreeList) {
 | 
			
		||||
            if (Objects.nonNull(item.getId())) {
 | 
			
		||||
                updateFreeList.add(INSTANCE.convertTemplateFree(item));
 | 
			
		||||
            }else{
 | 
			
		||||
            } else {
 | 
			
		||||
                item.setTemplateId(updateReqVO.getId());
 | 
			
		||||
                addFreeList.add(INSTANCE.convertTemplateFree(item));
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        //删除的包邮区域id
 | 
			
		||||
        // 新增
 | 
			
		||||
        if (CollUtil.isNotEmpty(addFreeList)) {
 | 
			
		||||
            expressTemplateFreeMapper.insertBatch(addFreeList);
 | 
			
		||||
        }
 | 
			
		||||
        // 修改
 | 
			
		||||
        if (CollUtil.isNotEmpty(updateFreeList)) {
 | 
			
		||||
            expressTemplateFreeMapper.updateBatch(updateFreeList);
 | 
			
		||||
        }
 | 
			
		||||
        // 得到删除ids
 | 
			
		||||
        Set<Long> deleteFreeIds = CollectionUtils.convertSet(oldFreeList, DeliveryExpressTemplateFreeDO::getId);
 | 
			
		||||
        deleteFreeIds.removeAll(CollectionUtils.convertSet(updateFreeList, DeliveryExpressTemplateFreeDO::getId));
 | 
			
		||||
        //新增
 | 
			
		||||
        if (CollUtil.isNotEmpty(addFreeList)) {
 | 
			
		||||
            expressTemplateFreeBatchMapper.saveBatch(addFreeList);
 | 
			
		||||
        }
 | 
			
		||||
        //修改
 | 
			
		||||
        if (CollUtil.isNotEmpty(updateFreeList)) {
 | 
			
		||||
            expressTemplateFreeBatchMapper.saveOrUpdateBatch(updateFreeList);
 | 
			
		||||
        }
 | 
			
		||||
        //删除
 | 
			
		||||
        if (CollUtil.isNotEmpty(deleteFreeIds)) {
 | 
			
		||||
            expressTemplateFreeMapper.deleteBatchIds(deleteFreeIds);
 | 
			
		||||
@@ -120,33 +111,33 @@ public class DeliveryExpressTemplateServiceImpl implements DeliveryExpressTempla
 | 
			
		||||
    private void updateExpressTemplateCharge(DeliveryExpressTemplateUpdateReqVO updateReqVO) {
 | 
			
		||||
        List<DeliveryExpressTemplateChargeDO> oldChargeList = expressTemplateChargeMapper.selectListByTemplateId(updateReqVO.getId());
 | 
			
		||||
        List<ExpressTemplateChargeUpdateVO> newChargeList = updateReqVO.getTemplateCharge();
 | 
			
		||||
        //新增运费区域列表
 | 
			
		||||
        // 新增运费区域列表
 | 
			
		||||
        List<DeliveryExpressTemplateChargeDO> addList = new ArrayList<>(newChargeList.size());
 | 
			
		||||
        //更新运费区域列表
 | 
			
		||||
        // 更新运费区域列表
 | 
			
		||||
        List<DeliveryExpressTemplateChargeDO> updateList = new ArrayList<>(newChargeList.size());
 | 
			
		||||
        for (ExpressTemplateChargeUpdateVO item : newChargeList) {
 | 
			
		||||
            if (Objects.nonNull(item.getId())) { // TODO @jason:null 的判断,还是用 item.getId() != null 好一点。一般数组用方法,主要考虑 null + length = 0;
 | 
			
		||||
                //计费模式以主表为准
 | 
			
		||||
            if (item.getId() != null) {
 | 
			
		||||
                // 计费模式以主表为准
 | 
			
		||||
                item.setChargeMode(updateReqVO.getChargeMode());
 | 
			
		||||
                updateList.add(INSTANCE.convertTemplateCharge(item));
 | 
			
		||||
            }else{
 | 
			
		||||
            } else {
 | 
			
		||||
                item.setTemplateId(updateReqVO.getId());
 | 
			
		||||
                item.setChargeMode(updateReqVO.getChargeMode());
 | 
			
		||||
                addList.add(INSTANCE.convertTemplateCharge(item));
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        //删除的运费区域id TODO @jason:这块放到删除部分的那块逻辑会好点(149  - 152 行),主要变量要贴相应的逻辑近一点哈。
 | 
			
		||||
        // 新增
 | 
			
		||||
        if (CollUtil.isNotEmpty(addList)) {
 | 
			
		||||
            expressTemplateChargeMapper.insertBatch(addList);
 | 
			
		||||
        }
 | 
			
		||||
        // 修改
 | 
			
		||||
        if (CollUtil.isNotEmpty(updateList)) {
 | 
			
		||||
            expressTemplateChargeMapper.updateBatch(updateList);
 | 
			
		||||
        }
 | 
			
		||||
        // 得到删除的ids
 | 
			
		||||
        Set<Long> deleteChargeIds = CollectionUtils.convertSet(oldChargeList, DeliveryExpressTemplateChargeDO::getId);
 | 
			
		||||
        deleteChargeIds.removeAll(CollectionUtils.convertSet(updateList, DeliveryExpressTemplateChargeDO::getId));
 | 
			
		||||
        //新增
 | 
			
		||||
        if (CollUtil.isNotEmpty(addList)) {
 | 
			
		||||
            expressTemplateChargeBatchMapper.saveBatch(addList);
 | 
			
		||||
        }
 | 
			
		||||
        //修改
 | 
			
		||||
        if (CollUtil.isNotEmpty(updateList)) {
 | 
			
		||||
            expressTemplateChargeBatchMapper.saveOrUpdateBatch(updateList);
 | 
			
		||||
        }
 | 
			
		||||
        //删除
 | 
			
		||||
        // 删除
 | 
			
		||||
        if (CollUtil.isNotEmpty(deleteChargeIds)) {
 | 
			
		||||
            expressTemplateChargeMapper.deleteBatchIds(deleteChargeIds);
 | 
			
		||||
        }
 | 
			
		||||
@@ -157,7 +148,6 @@ public class DeliveryExpressTemplateServiceImpl implements DeliveryExpressTempla
 | 
			
		||||
    public void deleteDeliveryExpressTemplate(Long id) {
 | 
			
		||||
        // 校验存在
 | 
			
		||||
        validateDeliveryExpressTemplateExists(id);
 | 
			
		||||
 | 
			
		||||
        // 删除主表
 | 
			
		||||
        expressTemplateMapper.deleteById(id);
 | 
			
		||||
        // 删除运费从表
 | 
			
		||||
@@ -167,9 +157,10 @@ public class DeliveryExpressTemplateServiceImpl implements DeliveryExpressTempla
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 校验运费模板名是否唯一 // TODO @jason:方法注释,和参数,要空一行。
 | 
			
		||||
     * 校验运费模板名是否唯一
 | 
			
		||||
     *
 | 
			
		||||
     * @param name 模板名称
 | 
			
		||||
     * @param id 运费模板编号, 可以为null // TODO @jason:中英文之间,要空一行;其它地方也看看哈
 | 
			
		||||
     * @param id   运费模板编号,可以为 null
 | 
			
		||||
     */
 | 
			
		||||
    private void validateTemplateNameUnique(String name, Long id) {
 | 
			
		||||
        DeliveryExpressTemplateDO template = expressTemplateMapper.selectByName(name);
 | 
			
		||||
@@ -196,7 +187,7 @@ public class DeliveryExpressTemplateServiceImpl implements DeliveryExpressTempla
 | 
			
		||||
        List<DeliveryExpressTemplateChargeDO> chargeList = expressTemplateChargeMapper.selectListByTemplateId(id);
 | 
			
		||||
        List<DeliveryExpressTemplateFreeDO> freeList = expressTemplateFreeMapper.selectListByTemplateId(id);
 | 
			
		||||
        DeliveryExpressTemplateDO template = expressTemplateMapper.selectById(id);
 | 
			
		||||
        return INSTANCE.convert(template, chargeList,freeList);
 | 
			
		||||
        return INSTANCE.convert(template, chargeList, freeList);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
@@ -208,10 +199,4 @@ public class DeliveryExpressTemplateServiceImpl implements DeliveryExpressTempla
 | 
			
		||||
    public PageResult<DeliveryExpressTemplateDO> getDeliveryExpressTemplatePage(DeliveryExpressTemplatePageReqVO pageReqVO) {
 | 
			
		||||
        return expressTemplateMapper.selectPage(pageReqVO);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public List<DeliveryExpressTemplateDO> getDeliveryExpressTemplateList(DeliveryExpressTemplateExportReqVO exportReqVO) {
 | 
			
		||||
        return expressTemplateMapper.selectList(exportReqVO);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user