Commit 55dbff7570caf069efe2495b6c048e90c12d51b0

Authored by jason
1 parent 02fa6fc5

运费模板 review 修改. 运费模块可以选择多个区域

Showing 25 changed files with 174 additions and 235 deletions
sql/mysql/optional/mall.sql
@@ -350,7 +350,7 @@ DROP TABLE IF EXISTS `trade_delivery_express_template_free`; @@ -350,7 +350,7 @@ DROP TABLE IF EXISTS `trade_delivery_express_template_free`;
350 CREATE TABLE `trade_delivery_express_template_free` ( 350 CREATE TABLE `trade_delivery_express_template_free` (
351 `id` bigint NOT NULL AUTO_INCREMENT COMMENT '编号', 351 `id` bigint NOT NULL AUTO_INCREMENT COMMENT '编号',
352 `template_id` bigint NOT NULL COMMENT '快递运费模板编号', 352 `template_id` bigint NOT NULL COMMENT '快递运费模板编号',
353 - `area_id` int NOT NULL COMMENT '包邮区域 id', 353 + `area_ids` varchar(100) NOT NULL COMMENT '包邮区域 ids',
354 `free_price` int NOT NULL COMMENT '包邮金额,单位:分', 354 `free_price` int NOT NULL COMMENT '包邮金额,单位:分',
355 `free_count` int NOT NULL DEFAULT 0 COMMENT '包邮件数,', 355 `free_count` int NOT NULL DEFAULT 0 COMMENT '包邮件数,',
356 `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '创建者', 356 `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '创建者',
@@ -369,7 +369,7 @@ DROP TABLE IF EXISTS `trade_delivery_express_template_charge`; @@ -369,7 +369,7 @@ DROP TABLE IF EXISTS `trade_delivery_express_template_charge`;
369 CREATE TABLE `trade_delivery_express_template_charge` ( 369 CREATE TABLE `trade_delivery_express_template_charge` (
370 `id` bigint NOT NULL AUTO_INCREMENT COMMENT '编号,自增', 370 `id` bigint NOT NULL AUTO_INCREMENT COMMENT '编号,自增',
371 `template_id` bigint NOT NULL COMMENT '快递运费模板编号', 371 `template_id` bigint NOT NULL COMMENT '快递运费模板编号',
372 - `area_id` int NOT NULL COMMENT '配送区域 id', 372 + `area_ids` varchar(100) NOT NULL COMMENT '配送区域 ids',
373 `charge_mode` tinyint NOT NULL COMMENT '配送计费方式', 373 `charge_mode` tinyint NOT NULL COMMENT '配送计费方式',
374 `start_count` double NOT NULL COMMENT '首件数量', 374 `start_count` double NOT NULL COMMENT '首件数量',
375 `start_price` int NOT NULL COMMENT '起步价,单位:分', 375 `start_price` int NOT NULL COMMENT '起步价,单位:分',
@@ -501,7 +501,7 @@ INSERT INTO `ruoyi-vue-pro`.`system_menu` (`id`, `name`, `permission`, `type`, ` @@ -501,7 +501,7 @@ INSERT INTO `ruoyi-vue-pro`.`system_menu` (`id`, `name`, `permission`, `type`, `
501 INSERT INTO `ruoyi-vue-pro`.`system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `status`, `visible`, `keep_alive`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (2029, 'Banner删除', 'market:banner:delete', 3, 4, 2025, '', '', '', 0, b'1', b'1', '', '2022-08-01 14:56:14', '', '2022-08-01 14:56:14', b'0'); 501 INSERT INTO `ruoyi-vue-pro`.`system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `status`, `visible`, `keep_alive`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (2029, 'Banner删除', 'market:banner:delete', 3, 4, 2025, '', '', '', 0, b'1', b'1', '', '2022-08-01 14:56:14', '', '2022-08-01 14:56:14', b'0');
502 INSERT INTO `ruoyi-vue-pro`.`system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (2164, '配送管理', '', 1, 0, 2072, 'delivery', '', '', '', 0, b'1', b'1', b'1', '1', '2023-05-18 09:18:02', '1', '2023-05-18 09:48:48', b'0'); 502 INSERT INTO `ruoyi-vue-pro`.`system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (2164, '配送管理', '', 1, 0, 2072, 'delivery', '', '', '', 0, b'1', b'1', b'1', '1', '2023-05-18 09:18:02', '1', '2023-05-18 09:48:48', b'0');
503 INSERT INTO `ruoyi-vue-pro`.`system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (2165, '快递发货', '', 1, 0, 2164, 'express', '', '', '', 0, b'1', b'1', b'1', '1', '2023-05-18 09:22:06', '1', '2023-05-18 09:22:06', b'0'); 503 INSERT INTO `ruoyi-vue-pro`.`system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (2165, '快递发货', '', 1, 0, 2164, 'express', '', '', '', 0, b'1', b'1', b'1', '1', '2023-05-18 09:22:06', '1', '2023-05-18 09:22:06', b'0');
504 -INSERT INTO `ruoyi-vue-pro`.`system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (2166, '门店自提', '', 1, 1, 2164, 'pick-up-store', '', '', '', 0, b'1', b'1', b'1', '1', '2023-05-18 09:23:14', '1', '2023-05-18 09:23:14', b'0'); 504 +INSERT INTO `ruoyi-vue-pro`.`system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (2166, '门店自提', '', 1, 1, 2164, 'pick-up', '', '', '', 0, b'1', b'1', b'1', '1', '2023-05-18 09:23:14', '1', '2023-05-18 09:23:14', b'0');
505 INSERT INTO `ruoyi-vue-pro`.`system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (2167, '快递公司', '', 2, 0, 2165, 'express', '', 'mall/trade/delivery/express/index', 'Express', 0, b'1', b'1', b'1', '1', '2023-05-18 09:27:21', '1', '2023-05-18 22:11:14', b'0'); 505 INSERT INTO `ruoyi-vue-pro`.`system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (2167, '快递公司', '', 2, 0, 2165, 'express', '', 'mall/trade/delivery/express/index', 'Express', 0, b'1', b'1', b'1', '1', '2023-05-18 09:27:21', '1', '2023-05-18 22:11:14', b'0');
506 INSERT INTO `ruoyi-vue-pro`.`system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (2168, '快递公司查询', 'trade:delivery:express:query', 3, 1, 2167, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-05-18 09:37:53', '', '2023-05-18 09:37:53', b'0'); 506 INSERT INTO `ruoyi-vue-pro`.`system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (2168, '快递公司查询', 'trade:delivery:express:query', 3, 1, 2167, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-05-18 09:37:53', '', '2023-05-18 09:37:53', b'0');
507 INSERT INTO `ruoyi-vue-pro`.`system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (2169, '快递公司创建', 'trade:delivery:express:create', 3, 2, 2167, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-05-18 09:37:53', '', '2023-05-18 09:37:53', b'0'); 507 INSERT INTO `ruoyi-vue-pro`.`system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (2169, '快递公司创建', 'trade:delivery:express:create', 3, 2, 2167, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-05-18 09:37:53', '', '2023-05-18 09:37:53', b'0');
yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/util/string/StrUtils.java
@@ -45,4 +45,10 @@ public class StrUtils { @@ -45,4 +45,10 @@ public class StrUtils {
45 return Arrays.stream(longs).boxed().collect(Collectors.toList()); 45 return Arrays.stream(longs).boxed().collect(Collectors.toList());
46 } 46 }
47 47
  48 + public static List<Integer> splitToInteger(String value, CharSequence separator) {
  49 + int[] integers = StrUtil.splitToInt(value, separator);
  50 + return Arrays.stream(integers).boxed().collect(Collectors.toList());
  51 + }
  52 +
  53 +
48 } 54 }
yudao-framework/yudao-spring-boot-starter-mybatis/src/main/java/cn/iocoder/yudao/framework/mybatis/core/mapper/BaseMapperX.java
@@ -113,10 +113,20 @@ public interface BaseMapperX&lt;T&gt; extends MPJBaseMapper&lt;T&gt; { @@ -113,10 +113,20 @@ public interface BaseMapperX&lt;T&gt; extends MPJBaseMapper&lt;T&gt; {
113 Db.saveBatch(entities, size); 113 Db.saveBatch(entities, size);
114 } 114 }
115 115
  116 + // @芋艿 是不是叫 updateByDo 或者 updateByEntity 更合适
116 default void updateBatch(T update) { 117 default void updateBatch(T update) {
117 update(update, new QueryWrapper<>()); 118 update(update, new QueryWrapper<>());
118 } 119 }
119 120
  121 + /**
  122 + * 根据ID 批量更新,适合大量数据更新
  123 + *
  124 + * @param entities 实体们
  125 + */
  126 + default void updateBatch(Collection<T> entities) {
  127 + Db.updateBatchById(entities);
  128 + }
  129 +
120 default void updateBatch(Collection<T> entities, int size) { 130 default void updateBatch(Collection<T> entities, int size) {
121 Db.updateBatchById(entities, size); 131 Db.updateBatchById(entities, size);
122 } 132 }
yudao-framework/yudao-spring-boot-starter-mybatis/src/main/java/cn/iocoder/yudao/framework/mybatis/core/type/IntegerListTypeHandler.java 0 → 100644
  1 +package cn.iocoder.yudao.framework.mybatis.core.type;
  2 +
  3 +import cn.hutool.core.collection.CollUtil;
  4 +import cn.iocoder.yudao.framework.common.util.string.StrUtils;
  5 +import org.apache.ibatis.type.JdbcType;
  6 +import org.apache.ibatis.type.MappedJdbcTypes;
  7 +import org.apache.ibatis.type.MappedTypes;
  8 +import org.apache.ibatis.type.TypeHandler;
  9 +
  10 +import java.sql.CallableStatement;
  11 +import java.sql.PreparedStatement;
  12 +import java.sql.ResultSet;
  13 +import java.sql.SQLException;
  14 +import java.util.List;
  15 +
  16 +/**
  17 + * List<Integer> 的类型转换器实现类,对应数据库的 varchar 类型
  18 + *
  19 + * @author jason
  20 + */
  21 +@MappedJdbcTypes(JdbcType.VARCHAR)
  22 +@MappedTypes(List.class)
  23 +public class IntegerListTypeHandler implements TypeHandler<List<Integer>> {
  24 +
  25 + private static final String COMMA = ",";
  26 +
  27 + @Override
  28 + public void setParameter(PreparedStatement ps, int i, List<Integer> strings, JdbcType jdbcType) throws SQLException {
  29 + ps.setString(i, CollUtil.join(strings, COMMA));
  30 + }
  31 +
  32 + @Override
  33 + public List<Integer> getResult(ResultSet rs, String columnName) throws SQLException {
  34 + String value = rs.getString(columnName);
  35 + return getResult(value);
  36 + }
  37 +
  38 + @Override
  39 + public List<Integer> getResult(ResultSet rs, int columnIndex) throws SQLException {
  40 + String value = rs.getString(columnIndex);
  41 + return getResult(value);
  42 + }
  43 +
  44 + @Override
  45 + public List<Integer> getResult(CallableStatement cs, int columnIndex) throws SQLException {
  46 + String value = cs.getString(columnIndex);
  47 + return getResult(value);
  48 + }
  49 +
  50 + private List<Integer> getResult(String value) {
  51 + if (value == null) {
  52 + return null;
  53 + }
  54 + return StrUtils.splitToInteger(value, COMMA);
  55 + }
  56 +}
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/delivery/DeliveryExpressController.java
@@ -74,7 +74,7 @@ public class DeliveryExpressController { @@ -74,7 +74,7 @@ public class DeliveryExpressController {
74 return success(DeliveryExpressConvert.INSTANCE.convertPage(pageResult)); 74 return success(DeliveryExpressConvert.INSTANCE.convertPage(pageResult));
75 } 75 }
76 76
77 - // TODO @jason:运费模版,可以去掉哈,没啥用; 77 + // TODO @jason:运费模版,@芋艿 你的意思是运费模板导出没有必要吧。已经去掉了。这个是快递公司导出
78 @GetMapping("/export-excel") 78 @GetMapping("/export-excel")
79 @Operation(summary = "导出快递公司 Excel") 79 @Operation(summary = "导出快递公司 Excel")
80 @PreAuthorize("@ss.hasPermission('trade:delivery:express:export')") 80 @PreAuthorize("@ss.hasPermission('trade:delivery:express:export')")
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/delivery/DeliveryExpressTemplateController.java
@@ -84,17 +84,4 @@ public class DeliveryExpressTemplateController { @@ -84,17 +84,4 @@ public class DeliveryExpressTemplateController {
84 PageResult<DeliveryExpressTemplateDO> pageResult = deliveryExpressTemplateService.getDeliveryExpressTemplatePage(pageVO); 84 PageResult<DeliveryExpressTemplateDO> pageResult = deliveryExpressTemplateService.getDeliveryExpressTemplatePage(pageVO);
85 return success(DeliveryExpressTemplateConvert.INSTANCE.convertPage(pageResult)); 85 return success(DeliveryExpressTemplateConvert.INSTANCE.convertPage(pageResult));
86 } 86 }
87 -  
88 - @GetMapping("/export-excel")  
89 - @Operation(summary = "导出快递运费模板 Excel")  
90 - @PreAuthorize("@ss.hasPermission('trade:delivery:express-template:export')")  
91 - @OperateLog(type = EXPORT)  
92 - public void exportDeliveryExpressTemplateExcel(@Valid DeliveryExpressTemplateExportReqVO exportReqVO,  
93 - HttpServletResponse response) throws IOException {  
94 - List<DeliveryExpressTemplateDO> list = deliveryExpressTemplateService.getDeliveryExpressTemplateList(exportReqVO);  
95 - // 导出 Excel  
96 - List<DeliveryExpressTemplateExcelVO> datas = DeliveryExpressTemplateConvert.INSTANCE.convertList02(list);  
97 - ExcelUtils.write(response, "快递运费模板.xls", "数据", DeliveryExpressTemplateExcelVO.class, datas);  
98 - }  
99 -  
100 } 87 }
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/delivery/vo/DeliveryExpressExcelVO.java
1 package cn.iocoder.yudao.module.trade.controller.admin.delivery.vo; 1 package cn.iocoder.yudao.module.trade.controller.admin.delivery.vo;
2 2
  3 +import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
  4 +import cn.iocoder.yudao.framework.excel.core.convert.DictConvert;
  5 +import cn.iocoder.yudao.module.system.enums.DictTypeConstants;
3 import com.alibaba.excel.annotation.ExcelProperty; 6 import com.alibaba.excel.annotation.ExcelProperty;
4 import lombok.Data; 7 import lombok.Data;
5 8
@@ -7,8 +10,6 @@ import java.time.LocalDateTime; @@ -7,8 +10,6 @@ import java.time.LocalDateTime;
7 10
8 /** 11 /**
9 * 快递公司 Excel VO 12 * 快递公司 Excel VO
10 - *  
11 - * @author jason  
12 */ 13 */
13 @Data 14 @Data
14 public class DeliveryExpressExcelVO { 15 public class DeliveryExpressExcelVO {
@@ -28,9 +29,9 @@ public class DeliveryExpressExcelVO { @@ -28,9 +29,9 @@ public class DeliveryExpressExcelVO {
28 @ExcelProperty("排序") 29 @ExcelProperty("排序")
29 private Integer sort; 30 private Integer sort;
30 31
31 - @ExcelProperty("状态")  
32 - // TODO @jason:可以使用 @DictFormat(DictTypeConstants.COMMON_STATUS)  
33 - private Byte status; 32 + @ExcelProperty(value = "状态", converter = DictConvert.class)
  33 + @DictFormat(DictTypeConstants.COMMON_STATUS)
  34 + private Integer status;
34 35
35 @ExcelProperty("创建时间") 36 @ExcelProperty("创建时间")
36 private LocalDateTime createTime; 37 private LocalDateTime createTime;
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/delivery/vo/DeliveryExpressTemplateExcelVO.java deleted
1 -package cn.iocoder.yudao.module.trade.controller.admin.delivery.vo;  
2 -  
3 -import com.alibaba.excel.annotation.ExcelProperty;  
4 -import lombok.Data;  
5 -  
6 -import java.time.LocalDateTime;  
7 -  
8 -/**  
9 - * 快递运费模板 Excel VO  
10 - *  
11 - * @author jason  
12 - */  
13 -@Data  
14 -public class DeliveryExpressTemplateExcelVO {  
15 -  
16 - @ExcelProperty("编号,自增")  
17 - private Long id;  
18 -  
19 - @ExcelProperty("模板名称")  
20 - private String name;  
21 -  
22 - @ExcelProperty("配送计费方式 1:按件 2:按重量 3:按体积")  
23 - private Integer chargeMode;  
24 -  
25 - @ExcelProperty("排序")  
26 - private Integer sort;  
27 -  
28 - @ExcelProperty("创建时间")  
29 - private LocalDateTime createTime;  
30 -  
31 -}  
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/delivery/vo/DeliveryExpressTemplateExportReqVO.java deleted
1 -package cn.iocoder.yudao.module.trade.controller.admin.delivery.vo;  
2 -  
3 -import lombok.*;  
4 -import java.util.*;  
5 -import io.swagger.v3.oas.annotations.media.Schema;  
6 -import cn.iocoder.yudao.framework.common.pojo.PageParam;  
7 -import java.time.LocalDateTime;  
8 -import org.springframework.format.annotation.DateTimeFormat;  
9 -  
10 -import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;  
11 -  
12 -@Schema(description = "管理后台 - 快递运费模板 Excel 导出 Request VO,参数和 DeliveryExpressTemplatePageReqVO 是一致的")  
13 -@Data  
14 -public class DeliveryExpressTemplateExportReqVO {  
15 -  
16 - @Schema(description = "模板名称", example = "王五")  
17 - private String name;  
18 -  
19 - @Schema(description = "配送计费方式 1:按件 2:按重量 3:按体积")  
20 - private Integer chargeMode;  
21 -  
22 - @Schema(description = "创建时间")  
23 - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)  
24 - private LocalDateTime[] createTime;  
25 -  
26 -}  
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/delivery/vo/ExpressTemplateChargeBaseVO.java
@@ -3,19 +3,19 @@ package cn.iocoder.yudao.module.trade.controller.admin.delivery.vo; @@ -3,19 +3,19 @@ package cn.iocoder.yudao.module.trade.controller.admin.delivery.vo;
3 import io.swagger.v3.oas.annotations.media.Schema; 3 import io.swagger.v3.oas.annotations.media.Schema;
4 import lombok.Data; 4 import lombok.Data;
5 5
  6 +import javax.validation.constraints.NotEmpty;
6 import javax.validation.constraints.NotNull; 7 import javax.validation.constraints.NotNull;
  8 +import java.util.List;
7 9
8 /** 10 /**
9 * 快递运费模板运费设置 Base VO,提供给添加运费模板使用 11 * 快递运费模板运费设置 Base VO,提供给添加运费模板使用
10 - *  
11 - * @author jason  
12 */ 12 */
13 @Data 13 @Data
14 public class ExpressTemplateChargeBaseVO { 14 public class ExpressTemplateChargeBaseVO {
15 15
16 - @Schema(description = "区域编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")  
17 - @NotNull(message = "区域编号不能为空")  
18 - private Integer areaId; 16 + @Schema(description = "区域编号列表", requiredMode = Schema.RequiredMode.REQUIRED, example = "[1,120000]")
  17 + @NotEmpty(message = "区域编号列表不能为空")
  18 + private List<Integer> areaIds;
19 19
20 @Schema(description = "首件数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "5") 20 @Schema(description = "首件数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "5")
21 @NotNull(message = "首件数量不能为空") 21 @NotNull(message = "首件数量不能为空")
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/delivery/vo/ExpressTemplateChargeUpdateVO.java
@@ -3,9 +3,7 @@ package cn.iocoder.yudao.module.trade.controller.admin.delivery.vo; @@ -3,9 +3,7 @@ package cn.iocoder.yudao.module.trade.controller.admin.delivery.vo;
3 import io.swagger.v3.oas.annotations.media.Schema; 3 import io.swagger.v3.oas.annotations.media.Schema;
4 import lombok.Data; 4 import lombok.Data;
5 5
6 -/**  
7 - * @author jason  
8 - */ 6 +
9 @Data 7 @Data
10 public class ExpressTemplateChargeUpdateVO extends ExpressTemplateChargeBaseVO { 8 public class ExpressTemplateChargeUpdateVO extends ExpressTemplateChargeBaseVO {
11 9
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/delivery/vo/ExpressTemplateFreeBaseVO.java
@@ -3,19 +3,19 @@ package cn.iocoder.yudao.module.trade.controller.admin.delivery.vo; @@ -3,19 +3,19 @@ package cn.iocoder.yudao.module.trade.controller.admin.delivery.vo;
3 import io.swagger.v3.oas.annotations.media.Schema; 3 import io.swagger.v3.oas.annotations.media.Schema;
4 import lombok.Data; 4 import lombok.Data;
5 5
  6 +import javax.validation.constraints.NotEmpty;
6 import javax.validation.constraints.NotNull; 7 import javax.validation.constraints.NotNull;
  8 +import java.util.List;
7 9
8 /** 10 /**
9 * 快递运费模板包邮 Base VO,提供给添加运费模板使用 11 * 快递运费模板包邮 Base VO,提供给添加运费模板使用
10 - *  
11 - * @author jason  
12 */ 12 */
13 @Data 13 @Data
14 public class ExpressTemplateFreeBaseVO { 14 public class ExpressTemplateFreeBaseVO {
15 15
16 - @Schema(description = "区域编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")  
17 - @NotNull(message = "区域编号不能为空")  
18 - private Integer areaId; 16 + @Schema(description = "区域编号列表", requiredMode = Schema.RequiredMode.REQUIRED, example = "[1,120000]")
  17 + @NotEmpty(message = "区域编号列表不能为空")
  18 + private List<Integer> areaIds;
19 19
20 @Schema(description = "包邮金额", requiredMode = Schema.RequiredMode.REQUIRED, example = "5000") 20 @Schema(description = "包邮金额", requiredMode = Schema.RequiredMode.REQUIRED, example = "5000")
21 @NotNull(message = "包邮金额不能为空") 21 @NotNull(message = "包邮金额不能为空")
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/delivery/vo/ExpressTemplateFreeUpdateVO.java
@@ -5,8 +5,6 @@ import lombok.Data; @@ -5,8 +5,6 @@ import lombok.Data;
5 5
6 /** 6 /**
7 * 快递运费模板包邮 更新 VO 7 * 快递运费模板包邮 更新 VO
8 - *  
9 - * @author jason  
10 */ 8 */
11 @Data 9 @Data
12 public class ExpressTemplateFreeUpdateVO extends ExpressTemplateFreeBaseVO { 10 public class ExpressTemplateFreeUpdateVO extends ExpressTemplateFreeBaseVO {
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/convert/delivery/DeliveryExpressConvert.java
@@ -16,7 +16,7 @@ import org.mapstruct.factory.Mappers; @@ -16,7 +16,7 @@ import org.mapstruct.factory.Mappers;
16 /** 16 /**
17 * 快递公司 Convert 17 * 快递公司 Convert
18 * 18 *
19 - * @author 芋道源码 19 + * @author jason
20 */ 20 */
21 @Mapper 21 @Mapper
22 public interface DeliveryExpressConvert { 22 public interface DeliveryExpressConvert {
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/convert/delivery/DeliveryExpressTemplateConvert.java
@@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.trade.convert.delivery; @@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.trade.convert.delivery;
2 2
3 import cn.hutool.core.collection.CollUtil; 3 import cn.hutool.core.collection.CollUtil;
4 import cn.iocoder.yudao.framework.common.pojo.PageResult; 4 import cn.iocoder.yudao.framework.common.pojo.PageResult;
  5 +import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
5 import cn.iocoder.yudao.module.trade.controller.admin.delivery.vo.*; 6 import cn.iocoder.yudao.module.trade.controller.admin.delivery.vo.*;
6 import cn.iocoder.yudao.module.trade.dal.dataobject.delivery.DeliveryExpressTemplateChargeDO; 7 import cn.iocoder.yudao.module.trade.dal.dataobject.delivery.DeliveryExpressTemplateChargeDO;
7 import cn.iocoder.yudao.module.trade.dal.dataobject.delivery.DeliveryExpressTemplateDO; 8 import cn.iocoder.yudao.module.trade.dal.dataobject.delivery.DeliveryExpressTemplateDO;
@@ -16,7 +17,7 @@ import java.util.List; @@ -16,7 +17,7 @@ import java.util.List;
16 /** 17 /**
17 * 快递运费模板 Convert 18 * 快递运费模板 Convert
18 * 19 *
19 - * @author 芋道源码 20 + * @author jason
20 */ 21 */
21 @Mapper 22 @Mapper
22 public interface DeliveryExpressTemplateConvert { 23 public interface DeliveryExpressTemplateConvert {
@@ -37,8 +38,6 @@ public interface DeliveryExpressTemplateConvert { @@ -37,8 +38,6 @@ public interface DeliveryExpressTemplateConvert {
37 38
38 PageResult<DeliveryExpressTemplateSimpleRespVO> convertPage(PageResult<DeliveryExpressTemplateDO> page); 39 PageResult<DeliveryExpressTemplateSimpleRespVO> convertPage(PageResult<DeliveryExpressTemplateDO> page);
39 40
40 - List<DeliveryExpressTemplateExcelVO> convertList02(List<DeliveryExpressTemplateDO> list);  
41 -  
42 default DeliveryExpressTemplateRespVO convert(DeliveryExpressTemplateDO bean, 41 default DeliveryExpressTemplateRespVO convert(DeliveryExpressTemplateDO bean,
43 List<DeliveryExpressTemplateChargeDO> chargeList, 42 List<DeliveryExpressTemplateChargeDO> chargeList,
44 List<DeliveryExpressTemplateFreeDO> freeList){ 43 List<DeliveryExpressTemplateFreeDO> freeList){
@@ -55,15 +54,7 @@ public interface DeliveryExpressTemplateConvert { @@ -55,15 +54,7 @@ public interface DeliveryExpressTemplateConvert {
55 DeliveryExpressTemplateChargeDO convertTemplateCharge(ExpressTemplateChargeUpdateVO vo); 54 DeliveryExpressTemplateChargeDO convertTemplateCharge(ExpressTemplateChargeUpdateVO vo);
56 55
57 default List<DeliveryExpressTemplateChargeDO> convertTemplateChargeList(Long templateId, Integer chargeMode, List<ExpressTemplateChargeBaseVO> list) { 56 default List<DeliveryExpressTemplateChargeDO> convertTemplateChargeList(Long templateId, Integer chargeMode, List<ExpressTemplateChargeBaseVO> list) {
58 - // TODO @jason:可以使用 CollectionUtils.convertList,本质上就是 stream convert list  
59 - if(CollUtil.isEmpty(list)){  
60 - return Collections.emptyList();  
61 - }  
62 - List<DeliveryExpressTemplateChargeDO> templateChargeList = new ArrayList<>(list.size());  
63 - for (ExpressTemplateChargeBaseVO item : list) {  
64 - templateChargeList.add(convertTemplateCharge(templateId, chargeMode, item));  
65 - }  
66 - return templateChargeList; 57 + return CollectionUtils.convertList(list, vo -> convertTemplateCharge(templateId, chargeMode, vo));
67 } 58 }
68 59
69 // ========== Template Free ========== 60 // ========== Template Free ==========
@@ -76,17 +67,8 @@ public interface DeliveryExpressTemplateConvert { @@ -76,17 +67,8 @@ public interface DeliveryExpressTemplateConvert {
76 67
77 List<ExpressTemplateFreeBaseVO> convertTemplateFreeList(List<DeliveryExpressTemplateFreeDO> list); 68 List<ExpressTemplateFreeBaseVO> convertTemplateFreeList(List<DeliveryExpressTemplateFreeDO> list);
78 69
79 - // TODO @jason:, List,中间一个空格哈。代码的空格和空行要注意,嘿嘿~  
80 - default List<DeliveryExpressTemplateFreeDO> convertTemplateFreeList(Long templateId, List<ExpressTemplateFreeBaseVO> list) {  
81 - // TODO @jason:可以使用 CollectionUtils.convertList,本质上就是 stream convert list  
82 - if (CollUtil.isEmpty(list)) {  
83 - return Collections.emptyList();  
84 - }  
85 - List<DeliveryExpressTemplateFreeDO> templateFreeList = new ArrayList<>(list.size());  
86 - for (ExpressTemplateFreeBaseVO item : list) {  
87 - templateFreeList.add(convertTemplateFree(templateId, item));  
88 - }  
89 - return templateFreeList; 70 + default List<DeliveryExpressTemplateFreeDO> convertTemplateFreeList(Long templateId, List<ExpressTemplateFreeBaseVO> list) {
  71 + return CollectionUtils.convertList(list, vo -> convertTemplateFree(templateId, vo));
90 } 72 }
91 73
92 } 74 }
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/dal/dataobject/delivery/DeliveryExpressTemplateChargeDO.java
1 package cn.iocoder.yudao.module.trade.dal.dataobject.delivery; 1 package cn.iocoder.yudao.module.trade.dal.dataobject.delivery;
2 2
3 import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; 3 import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
  4 +import cn.iocoder.yudao.framework.mybatis.core.type.IntegerListTypeHandler;
4 import com.baomidou.mybatisplus.annotation.KeySequence; 5 import com.baomidou.mybatisplus.annotation.KeySequence;
  6 +import com.baomidou.mybatisplus.annotation.TableField;
5 import com.baomidou.mybatisplus.annotation.TableId; 7 import com.baomidou.mybatisplus.annotation.TableId;
6 import com.baomidou.mybatisplus.annotation.TableName; 8 import com.baomidou.mybatisplus.annotation.TableName;
7 import lombok.Data; 9 import lombok.Data;
8 10
  11 +import java.util.List;
  12 +
9 /** 13 /**
10 * 快递运费模板计费配置 DO 14 * 快递运费模板计费配置 DO
11 * 15 *
12 * @author jason 16 * @author jason
13 */ 17 */
14 -@TableName(value ="trade_delivery_express_template_charge") 18 +@TableName(value ="trade_delivery_express_template_charge", autoResultMap = true)
15 @KeySequence("trade_delivery_express_template_charge_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 19 @KeySequence("trade_delivery_express_template_charge_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
16 @Data 20 @Data
17 public class DeliveryExpressTemplateChargeDO extends BaseDO { 21 public class DeliveryExpressTemplateChargeDO extends BaseDO {
@@ -30,9 +34,10 @@ public class DeliveryExpressTemplateChargeDO extends BaseDO { @@ -30,9 +34,10 @@ public class DeliveryExpressTemplateChargeDO extends BaseDO {
30 private Long templateId; 34 private Long templateId;
31 35
32 /** 36 /**
33 - * 配送区域 37 + * 配送区域编号列表
34 */ 38 */
35 - private Integer areaId; 39 + @TableField(typeHandler = IntegerListTypeHandler.class)
  40 + private List<Integer> areaIds;
36 41
37 /** 42 /**
38 * 配送计费方式 43 * 配送计费方式
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/dal/dataobject/delivery/DeliveryExpressTemplateFreeDO.java
1 package cn.iocoder.yudao.module.trade.dal.dataobject.delivery; 1 package cn.iocoder.yudao.module.trade.dal.dataobject.delivery;
2 2
3 import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; 3 import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
  4 +import cn.iocoder.yudao.framework.mybatis.core.type.IntegerListTypeHandler;
4 import com.baomidou.mybatisplus.annotation.KeySequence; 5 import com.baomidou.mybatisplus.annotation.KeySequence;
  6 +import com.baomidou.mybatisplus.annotation.TableField;
5 import com.baomidou.mybatisplus.annotation.TableId; 7 import com.baomidou.mybatisplus.annotation.TableId;
6 import com.baomidou.mybatisplus.annotation.TableName; 8 import com.baomidou.mybatisplus.annotation.TableName;
7 import lombok.Data; 9 import lombok.Data;
8 10
  11 +import java.util.List;
  12 +
9 /** 13 /**
10 * 快递运费模板包邮配置 DO 14 * 快递运费模板包邮配置 DO
11 * 15 *
12 * @author jason 16 * @author jason
13 */ 17 */
14 -@TableName(value ="trade_delivery_express_template_free") 18 +@TableName(value ="trade_delivery_express_template_free", autoResultMap = true)
15 @KeySequence("trade_delivery_express_template_free_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 19 @KeySequence("trade_delivery_express_template_free_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
16 @Data 20 @Data
17 public class DeliveryExpressTemplateFreeDO extends BaseDO { 21 public class DeliveryExpressTemplateFreeDO extends BaseDO {
@@ -29,10 +33,12 @@ public class DeliveryExpressTemplateFreeDO extends BaseDO { @@ -29,10 +33,12 @@ public class DeliveryExpressTemplateFreeDO extends BaseDO {
29 */ 33 */
30 private Long templateId; 34 private Long templateId;
31 35
  36 +
32 /** 37 /**
33 - * 包邮区域id 38 + * 配送区域编号列表
34 */ 39 */
35 - private Integer areaId; 40 + @TableField(typeHandler = IntegerListTypeHandler.class)
  41 + private List<Integer> areaIds;
36 42
37 /** 43 /**
38 * 包邮金额,单位:分 44 * 包邮金额,单位:分
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/dal/mysql/delivery/DeliveryExpressTemplateChargeMapper.java
@@ -14,10 +14,6 @@ import java.util.List; @@ -14,10 +14,6 @@ import java.util.List;
14 @Mapper 14 @Mapper
15 public interface DeliveryExpressTemplateChargeMapper extends BaseMapperX<DeliveryExpressTemplateChargeDO> { 15 public interface DeliveryExpressTemplateChargeMapper extends BaseMapperX<DeliveryExpressTemplateChargeDO> {
16 16
17 - @Repository  
18 - class BatchInsertMapper extends ServiceImpl<DeliveryExpressTemplateChargeMapper, DeliveryExpressTemplateChargeDO> {  
19 - }  
20 -  
21 default List<DeliveryExpressTemplateChargeDO> selectListByTemplateId(Long templateId){ 17 default List<DeliveryExpressTemplateChargeDO> selectListByTemplateId(Long templateId){
22 return selectList(new LambdaQueryWrapper<DeliveryExpressTemplateChargeDO>() 18 return selectList(new LambdaQueryWrapper<DeliveryExpressTemplateChargeDO>()
23 .eq(DeliveryExpressTemplateChargeDO::getTemplateId, templateId)); 19 .eq(DeliveryExpressTemplateChargeDO::getTemplateId, templateId));
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/dal/mysql/delivery/DeliveryExpressTemplateFreeMapper.java
@@ -14,10 +14,6 @@ import java.util.List; @@ -14,10 +14,6 @@ import java.util.List;
14 @Mapper 14 @Mapper
15 public interface DeliveryExpressTemplateFreeMapper extends BaseMapperX<DeliveryExpressTemplateFreeDO> { 15 public interface DeliveryExpressTemplateFreeMapper extends BaseMapperX<DeliveryExpressTemplateFreeDO> {
16 16
17 - @Repository  
18 - class BatchInsertMapper extends ServiceImpl<DeliveryExpressTemplateFreeMapper, DeliveryExpressTemplateFreeDO> {  
19 - }  
20 -  
21 default List<DeliveryExpressTemplateFreeDO> selectListByTemplateId(Long templateId) { 17 default List<DeliveryExpressTemplateFreeDO> selectListByTemplateId(Long templateId) {
22 return selectList(new LambdaQueryWrapper<DeliveryExpressTemplateFreeDO>() 18 return selectList(new LambdaQueryWrapper<DeliveryExpressTemplateFreeDO>()
23 .eq(DeliveryExpressTemplateFreeDO::getTemplateId, templateId)); 19 .eq(DeliveryExpressTemplateFreeDO::getTemplateId, templateId));
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/dal/mysql/delivery/DeliveryExpressTemplateMapper.java
@@ -4,14 +4,10 @@ package cn.iocoder.yudao.module.trade.dal.mysql.delivery; @@ -4,14 +4,10 @@ package cn.iocoder.yudao.module.trade.dal.mysql.delivery;
4 import cn.iocoder.yudao.framework.common.pojo.PageResult; 4 import cn.iocoder.yudao.framework.common.pojo.PageResult;
5 import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; 5 import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
6 import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; 6 import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
7 -import cn.iocoder.yudao.module.trade.controller.admin.delivery.vo.DeliveryExpressTemplateExportReqVO;  
8 import cn.iocoder.yudao.module.trade.controller.admin.delivery.vo.DeliveryExpressTemplatePageReqVO; 7 import cn.iocoder.yudao.module.trade.controller.admin.delivery.vo.DeliveryExpressTemplatePageReqVO;
9 import cn.iocoder.yudao.module.trade.dal.dataobject.delivery.DeliveryExpressTemplateDO; 8 import cn.iocoder.yudao.module.trade.dal.dataobject.delivery.DeliveryExpressTemplateDO;
10 -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;  
11 import org.apache.ibatis.annotations.Mapper; 9 import org.apache.ibatis.annotations.Mapper;
12 10
13 -import java.util.List;  
14 -  
15 @Mapper 11 @Mapper
16 public interface DeliveryExpressTemplateMapper extends BaseMapperX<DeliveryExpressTemplateDO> { 12 public interface DeliveryExpressTemplateMapper extends BaseMapperX<DeliveryExpressTemplateDO> {
17 13
@@ -23,18 +19,8 @@ public interface DeliveryExpressTemplateMapper extends BaseMapperX&lt;DeliveryExpre @@ -23,18 +19,8 @@ public interface DeliveryExpressTemplateMapper extends BaseMapperX&lt;DeliveryExpre
23 .orderByAsc(DeliveryExpressTemplateDO::getSort)); 19 .orderByAsc(DeliveryExpressTemplateDO::getSort));
24 } 20 }
25 21
26 - default List<DeliveryExpressTemplateDO> selectList(DeliveryExpressTemplateExportReqVO reqVO) {  
27 - return selectList(new LambdaQueryWrapperX<DeliveryExpressTemplateDO>()  
28 - .likeIfPresent(DeliveryExpressTemplateDO::getName, reqVO.getName())  
29 - .eqIfPresent(DeliveryExpressTemplateDO::getChargeMode, reqVO.getChargeMode())  
30 - .betweenIfPresent(DeliveryExpressTemplateDO::getCreateTime, reqVO.getCreateTime())  
31 - .orderByAsc(DeliveryExpressTemplateDO::getSort));  
32 - }  
33 -  
34 - // TODO @jason:可以用 selectOne(DeliveryExpressTemplateDO::getName, name),常用的我封装了哈。简洁一点~  
35 default DeliveryExpressTemplateDO selectByName(String name) { 22 default DeliveryExpressTemplateDO selectByName(String name) {
36 - return selectOne(new LambdaQueryWrapper<DeliveryExpressTemplateDO>()  
37 - .eq(DeliveryExpressTemplateDO::getName, name)); 23 + return selectOne(DeliveryExpressTemplateDO::getName,name);
38 } 24 }
39 25
40 } 26 }
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/delivery/DeliveryExpressTemplateService.java
@@ -58,13 +58,4 @@ public interface DeliveryExpressTemplateService { @@ -58,13 +58,4 @@ public interface DeliveryExpressTemplateService {
58 * @return 快递运费模板分页 58 * @return 快递运费模板分页
59 */ 59 */
60 PageResult<DeliveryExpressTemplateDO> getDeliveryExpressTemplatePage(DeliveryExpressTemplatePageReqVO pageReqVO); 60 PageResult<DeliveryExpressTemplateDO> getDeliveryExpressTemplatePage(DeliveryExpressTemplatePageReqVO pageReqVO);
61 -  
62 - /**  
63 - * 获得快递运费模板列表, 用于 Excel 导出  
64 - *  
65 - * @param exportReqVO 查询条件  
66 - * @return 快递运费模板列表  
67 - */  
68 - List<DeliveryExpressTemplateDO> getDeliveryExpressTemplateList(DeliveryExpressTemplateExportReqVO exportReqVO);  
69 -  
70 } 61 }
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/delivery/DeliveryExpressTemplateServiceImpl.java
@@ -36,32 +36,24 @@ public class DeliveryExpressTemplateServiceImpl implements DeliveryExpressTempla @@ -36,32 +36,24 @@ public class DeliveryExpressTemplateServiceImpl implements DeliveryExpressTempla
36 private DeliveryExpressTemplateChargeMapper expressTemplateChargeMapper; 36 private DeliveryExpressTemplateChargeMapper expressTemplateChargeMapper;
37 @Resource 37 @Resource
38 private DeliveryExpressTemplateFreeMapper expressTemplateFreeMapper; 38 private DeliveryExpressTemplateFreeMapper expressTemplateFreeMapper;
39 - // TODO @jason:应该不用 BatchInsertMapper 拉,直接走 expressTemplateChargeMapper.insertBatch  
40 - @Resource  
41 - private DeliveryExpressTemplateChargeMapper.BatchInsertMapper expressTemplateChargeBatchMapper;  
42 - @Resource  
43 - private DeliveryExpressTemplateFreeMapper.BatchInsertMapper expressTemplateFreeBatchMapper;  
44 39
45 @Override 40 @Override
46 @Transactional(rollbackFor = Exception.class) 41 @Transactional(rollbackFor = Exception.class)
47 public Long createDeliveryExpressTemplate(DeliveryExpressTemplateCreateReqVO createReqVO) { 42 public Long createDeliveryExpressTemplate(DeliveryExpressTemplateCreateReqVO createReqVO) {
48 - // TODO @jason:中英文之间,要有空格哈。例如说, // 校验模板名是否唯一  
49 - //校验模板名是否唯一 43 + // 校验模板名是否唯一
50 validateTemplateNameUnique(createReqVO.getName(), null); 44 validateTemplateNameUnique(createReqVO.getName(), null);
51 -  
52 // 插入 45 // 插入
53 DeliveryExpressTemplateDO deliveryExpressTemplate = INSTANCE.convert(createReqVO); 46 DeliveryExpressTemplateDO deliveryExpressTemplate = INSTANCE.convert(createReqVO);
54 expressTemplateMapper.insert(deliveryExpressTemplate); 47 expressTemplateMapper.insert(deliveryExpressTemplate);
55 - //插入运费模板计费表  
56 - // TODO @jason:if (,中间要有空格  
57 - if(CollUtil.isNotEmpty(createReqVO.getTemplateCharge())) {  
58 - expressTemplateChargeBatchMapper.saveBatch(  
59 - INSTANCE.convertTemplateChargeList(deliveryExpressTemplate.getId(), createReqVO.getChargeMode(), createReqVO.getTemplateCharge()) 48 + // 插入运费模板计费表
  49 + if (CollUtil.isNotEmpty(createReqVO.getTemplateCharge())) {
  50 + expressTemplateChargeMapper.insertBatch(
  51 + INSTANCE.convertTemplateChargeList(deliveryExpressTemplate.getId(), createReqVO.getChargeMode(), createReqVO.getTemplateCharge())
60 ); 52 );
61 } 53 }
62 - //插入运费模板包邮表  
63 - if(CollUtil.isNotEmpty(createReqVO.getTemplateFree())) {  
64 - expressTemplateFreeBatchMapper.saveBatch( 54 + // 插入运费模板包邮表
  55 + if (CollUtil.isNotEmpty(createReqVO.getTemplateFree())) {
  56 + expressTemplateFreeMapper.insertBatch(
65 INSTANCE.convertTemplateFreeList(deliveryExpressTemplate.getId(), createReqVO.getTemplateFree()) 57 INSTANCE.convertTemplateFreeList(deliveryExpressTemplate.getId(), createReqVO.getTemplateFree())
66 ); 58 );
67 } 59 }
@@ -73,14 +65,13 @@ public class DeliveryExpressTemplateServiceImpl implements DeliveryExpressTempla @@ -73,14 +65,13 @@ public class DeliveryExpressTemplateServiceImpl implements DeliveryExpressTempla
73 public void updateDeliveryExpressTemplate(DeliveryExpressTemplateUpdateReqVO updateReqVO) { 65 public void updateDeliveryExpressTemplate(DeliveryExpressTemplateUpdateReqVO updateReqVO) {
74 // 校验存在 66 // 校验存在
75 validateDeliveryExpressTemplateExists(updateReqVO.getId()); 67 validateDeliveryExpressTemplateExists(updateReqVO.getId());
76 - //校验模板名是否唯一 68 + // 校验模板名是否唯一
77 validateTemplateNameUnique(updateReqVO.getName(), updateReqVO.getId()); 69 validateTemplateNameUnique(updateReqVO.getName(), updateReqVO.getId());
78 -  
79 - //更新运费从表 70 + // 更新运费从表
80 updateExpressTemplateCharge(updateReqVO); 71 updateExpressTemplateCharge(updateReqVO);
81 - //更新包邮从表 72 + // 更新包邮从表
82 updateExpressTemplateFree(updateReqVO); 73 updateExpressTemplateFree(updateReqVO);
83 - //更新模板主表 74 + // 更新模板主表
84 DeliveryExpressTemplateDO updateObj = INSTANCE.convert(updateReqVO); 75 DeliveryExpressTemplateDO updateObj = INSTANCE.convert(updateReqVO);
85 expressTemplateMapper.updateById(updateObj); 76 expressTemplateMapper.updateById(updateObj);
86 } 77 }
@@ -88,29 +79,29 @@ public class DeliveryExpressTemplateServiceImpl implements DeliveryExpressTempla @@ -88,29 +79,29 @@ public class DeliveryExpressTemplateServiceImpl implements DeliveryExpressTempla
88 private void updateExpressTemplateFree(DeliveryExpressTemplateUpdateReqVO updateReqVO) { 79 private void updateExpressTemplateFree(DeliveryExpressTemplateUpdateReqVO updateReqVO) {
89 List<DeliveryExpressTemplateFreeDO> oldFreeList = expressTemplateFreeMapper.selectListByTemplateId(updateReqVO.getId()); 80 List<DeliveryExpressTemplateFreeDO> oldFreeList = expressTemplateFreeMapper.selectListByTemplateId(updateReqVO.getId());
90 List<ExpressTemplateFreeUpdateVO> newFreeList = updateReqVO.getTemplateFree(); 81 List<ExpressTemplateFreeUpdateVO> newFreeList = updateReqVO.getTemplateFree();
91 - //新增包邮区域列表 82 + // 新增包邮区域列表
92 List<DeliveryExpressTemplateFreeDO> addFreeList = new ArrayList<>(newFreeList.size()); 83 List<DeliveryExpressTemplateFreeDO> addFreeList = new ArrayList<>(newFreeList.size());
93 - //更新包邮区域列表 84 + // 更新包邮区域列表
94 List<DeliveryExpressTemplateFreeDO> updateFreeList = new ArrayList<>(newFreeList.size()); 85 List<DeliveryExpressTemplateFreeDO> updateFreeList = new ArrayList<>(newFreeList.size());
95 for (ExpressTemplateFreeUpdateVO item : newFreeList) { 86 for (ExpressTemplateFreeUpdateVO item : newFreeList) {
96 if (Objects.nonNull(item.getId())) { 87 if (Objects.nonNull(item.getId())) {
97 updateFreeList.add(INSTANCE.convertTemplateFree(item)); 88 updateFreeList.add(INSTANCE.convertTemplateFree(item));
98 - }else{ 89 + } else {
99 item.setTemplateId(updateReqVO.getId()); 90 item.setTemplateId(updateReqVO.getId());
100 addFreeList.add(INSTANCE.convertTemplateFree(item)); 91 addFreeList.add(INSTANCE.convertTemplateFree(item));
101 } 92 }
102 } 93 }
103 - //删除的包邮区域id  
104 - Set<Long> deleteFreeIds = CollectionUtils.convertSet(oldFreeList, DeliveryExpressTemplateFreeDO::getId);  
105 - deleteFreeIds.removeAll(CollectionUtils.convertSet(updateFreeList, DeliveryExpressTemplateFreeDO::getId));  
106 - //新增 94 + // 新增
107 if (CollUtil.isNotEmpty(addFreeList)) { 95 if (CollUtil.isNotEmpty(addFreeList)) {
108 - expressTemplateFreeBatchMapper.saveBatch(addFreeList); 96 + expressTemplateFreeMapper.insertBatch(addFreeList);
109 } 97 }
110 - //修改 98 + // 修改
111 if (CollUtil.isNotEmpty(updateFreeList)) { 99 if (CollUtil.isNotEmpty(updateFreeList)) {
112 - expressTemplateFreeBatchMapper.saveOrUpdateBatch(updateFreeList); 100 + expressTemplateFreeMapper.updateBatch(updateFreeList);
113 } 101 }
  102 + // 得到删除ids
  103 + Set<Long> deleteFreeIds = CollectionUtils.convertSet(oldFreeList, DeliveryExpressTemplateFreeDO::getId);
  104 + deleteFreeIds.removeAll(CollectionUtils.convertSet(updateFreeList, DeliveryExpressTemplateFreeDO::getId));
114 //删除 105 //删除
115 if (CollUtil.isNotEmpty(deleteFreeIds)) { 106 if (CollUtil.isNotEmpty(deleteFreeIds)) {
116 expressTemplateFreeMapper.deleteBatchIds(deleteFreeIds); 107 expressTemplateFreeMapper.deleteBatchIds(deleteFreeIds);
@@ -120,33 +111,33 @@ public class DeliveryExpressTemplateServiceImpl implements DeliveryExpressTempla @@ -120,33 +111,33 @@ public class DeliveryExpressTemplateServiceImpl implements DeliveryExpressTempla
120 private void updateExpressTemplateCharge(DeliveryExpressTemplateUpdateReqVO updateReqVO) { 111 private void updateExpressTemplateCharge(DeliveryExpressTemplateUpdateReqVO updateReqVO) {
121 List<DeliveryExpressTemplateChargeDO> oldChargeList = expressTemplateChargeMapper.selectListByTemplateId(updateReqVO.getId()); 112 List<DeliveryExpressTemplateChargeDO> oldChargeList = expressTemplateChargeMapper.selectListByTemplateId(updateReqVO.getId());
122 List<ExpressTemplateChargeUpdateVO> newChargeList = updateReqVO.getTemplateCharge(); 113 List<ExpressTemplateChargeUpdateVO> newChargeList = updateReqVO.getTemplateCharge();
123 - //新增运费区域列表 114 + // 新增运费区域列表
124 List<DeliveryExpressTemplateChargeDO> addList = new ArrayList<>(newChargeList.size()); 115 List<DeliveryExpressTemplateChargeDO> addList = new ArrayList<>(newChargeList.size());
125 - //更新运费区域列表 116 + // 更新运费区域列表
126 List<DeliveryExpressTemplateChargeDO> updateList = new ArrayList<>(newChargeList.size()); 117 List<DeliveryExpressTemplateChargeDO> updateList = new ArrayList<>(newChargeList.size());
127 for (ExpressTemplateChargeUpdateVO item : newChargeList) { 118 for (ExpressTemplateChargeUpdateVO item : newChargeList) {
128 - if (Objects.nonNull(item.getId())) { // TODO @jason:null 的判断,还是用 item.getId() != null 好一点。一般数组用方法,主要考虑 null + length = 0;  
129 - //计费模式以主表为准 119 + if (item.getId() != null) {
  120 + // 计费模式以主表为准
130 item.setChargeMode(updateReqVO.getChargeMode()); 121 item.setChargeMode(updateReqVO.getChargeMode());
131 updateList.add(INSTANCE.convertTemplateCharge(item)); 122 updateList.add(INSTANCE.convertTemplateCharge(item));
132 - }else{ 123 + } else {
133 item.setTemplateId(updateReqVO.getId()); 124 item.setTemplateId(updateReqVO.getId());
134 item.setChargeMode(updateReqVO.getChargeMode()); 125 item.setChargeMode(updateReqVO.getChargeMode());
135 addList.add(INSTANCE.convertTemplateCharge(item)); 126 addList.add(INSTANCE.convertTemplateCharge(item));
136 } 127 }
137 } 128 }
138 - //删除的运费区域id TODO @jason:这块放到删除部分的那块逻辑会好点(149 - 152 行),主要变量要贴相应的逻辑近一点哈。  
139 - Set<Long> deleteChargeIds = CollectionUtils.convertSet(oldChargeList, DeliveryExpressTemplateChargeDO::getId);  
140 - deleteChargeIds.removeAll(CollectionUtils.convertSet(updateList, DeliveryExpressTemplateChargeDO::getId));  
141 - //新增 129 + // 新增
142 if (CollUtil.isNotEmpty(addList)) { 130 if (CollUtil.isNotEmpty(addList)) {
143 - expressTemplateChargeBatchMapper.saveBatch(addList); 131 + expressTemplateChargeMapper.insertBatch(addList);
144 } 132 }
145 - //修改 133 + // 修改
146 if (CollUtil.isNotEmpty(updateList)) { 134 if (CollUtil.isNotEmpty(updateList)) {
147 - expressTemplateChargeBatchMapper.saveOrUpdateBatch(updateList); 135 + expressTemplateChargeMapper.updateBatch(updateList);
148 } 136 }
149 - //删除 137 + // 得到删除的ids
  138 + Set<Long> deleteChargeIds = CollectionUtils.convertSet(oldChargeList, DeliveryExpressTemplateChargeDO::getId);
  139 + deleteChargeIds.removeAll(CollectionUtils.convertSet(updateList, DeliveryExpressTemplateChargeDO::getId));
  140 + // 删除
150 if (CollUtil.isNotEmpty(deleteChargeIds)) { 141 if (CollUtil.isNotEmpty(deleteChargeIds)) {
151 expressTemplateChargeMapper.deleteBatchIds(deleteChargeIds); 142 expressTemplateChargeMapper.deleteBatchIds(deleteChargeIds);
152 } 143 }
@@ -157,7 +148,6 @@ public class DeliveryExpressTemplateServiceImpl implements DeliveryExpressTempla @@ -157,7 +148,6 @@ public class DeliveryExpressTemplateServiceImpl implements DeliveryExpressTempla
157 public void deleteDeliveryExpressTemplate(Long id) { 148 public void deleteDeliveryExpressTemplate(Long id) {
158 // 校验存在 149 // 校验存在
159 validateDeliveryExpressTemplateExists(id); 150 validateDeliveryExpressTemplateExists(id);
160 -  
161 // 删除主表 151 // 删除主表
162 expressTemplateMapper.deleteById(id); 152 expressTemplateMapper.deleteById(id);
163 // 删除运费从表 153 // 删除运费从表
@@ -167,9 +157,10 @@ public class DeliveryExpressTemplateServiceImpl implements DeliveryExpressTempla @@ -167,9 +157,10 @@ public class DeliveryExpressTemplateServiceImpl implements DeliveryExpressTempla
167 } 157 }
168 158
169 /** 159 /**
170 - * 校验运费模板名是否唯一 // TODO @jason:方法注释,和参数,要空一行。 160 + * 校验运费模板名是否唯一
  161 + *
171 * @param name 模板名称 162 * @param name 模板名称
172 - * @param id 运费模板编号, 可以为null // TODO @jason:中英文之间,要空一行;其它地方也看看哈 163 + * @param id 运费模板编号,可以为 null
173 */ 164 */
174 private void validateTemplateNameUnique(String name, Long id) { 165 private void validateTemplateNameUnique(String name, Long id) {
175 DeliveryExpressTemplateDO template = expressTemplateMapper.selectByName(name); 166 DeliveryExpressTemplateDO template = expressTemplateMapper.selectByName(name);
@@ -196,7 +187,7 @@ public class DeliveryExpressTemplateServiceImpl implements DeliveryExpressTempla @@ -196,7 +187,7 @@ public class DeliveryExpressTemplateServiceImpl implements DeliveryExpressTempla
196 List<DeliveryExpressTemplateChargeDO> chargeList = expressTemplateChargeMapper.selectListByTemplateId(id); 187 List<DeliveryExpressTemplateChargeDO> chargeList = expressTemplateChargeMapper.selectListByTemplateId(id);
197 List<DeliveryExpressTemplateFreeDO> freeList = expressTemplateFreeMapper.selectListByTemplateId(id); 188 List<DeliveryExpressTemplateFreeDO> freeList = expressTemplateFreeMapper.selectListByTemplateId(id);
198 DeliveryExpressTemplateDO template = expressTemplateMapper.selectById(id); 189 DeliveryExpressTemplateDO template = expressTemplateMapper.selectById(id);
199 - return INSTANCE.convert(template, chargeList,freeList); 190 + return INSTANCE.convert(template, chargeList, freeList);
200 } 191 }
201 192
202 @Override 193 @Override
@@ -208,10 +199,4 @@ public class DeliveryExpressTemplateServiceImpl implements DeliveryExpressTempla @@ -208,10 +199,4 @@ public class DeliveryExpressTemplateServiceImpl implements DeliveryExpressTempla
208 public PageResult<DeliveryExpressTemplateDO> getDeliveryExpressTemplatePage(DeliveryExpressTemplatePageReqVO pageReqVO) { 199 public PageResult<DeliveryExpressTemplateDO> getDeliveryExpressTemplatePage(DeliveryExpressTemplatePageReqVO pageReqVO) {
209 return expressTemplateMapper.selectPage(pageReqVO); 200 return expressTemplateMapper.selectPage(pageReqVO);
210 } 201 }
211 -  
212 - @Override  
213 - public List<DeliveryExpressTemplateDO> getDeliveryExpressTemplateList(DeliveryExpressTemplateExportReqVO exportReqVO) {  
214 - return expressTemplateMapper.selectList(exportReqVO);  
215 - }  
216 -  
217 } 202 }
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/ip/AreaController.java
@@ -6,7 +6,7 @@ import cn.iocoder.yudao.framework.ip.core.Area; @@ -6,7 +6,7 @@ import cn.iocoder.yudao.framework.ip.core.Area;
6 import cn.iocoder.yudao.framework.ip.core.utils.AreaUtils; 6 import cn.iocoder.yudao.framework.ip.core.utils.AreaUtils;
7 import cn.iocoder.yudao.framework.ip.core.utils.IPUtils; 7 import cn.iocoder.yudao.framework.ip.core.utils.IPUtils;
8 import cn.iocoder.yudao.module.system.controller.admin.ip.vo.AreaNodeRespVO; 8 import cn.iocoder.yudao.module.system.controller.admin.ip.vo.AreaNodeRespVO;
9 -import cn.iocoder.yudao.module.system.controller.admin.ip.vo.LazyAreaNodeRespVO; 9 +import cn.iocoder.yudao.module.system.controller.admin.ip.vo.AreaNodeSimpleRespVO;
10 import cn.iocoder.yudao.module.system.convert.ip.AreaConvert; 10 import cn.iocoder.yudao.module.system.convert.ip.AreaConvert;
11 import io.swagger.v3.oas.annotations.Operation; 11 import io.swagger.v3.oas.annotations.Operation;
12 import io.swagger.v3.oas.annotations.Parameter; 12 import io.swagger.v3.oas.annotations.Parameter;
@@ -34,23 +34,23 @@ public class AreaController { @@ -34,23 +34,23 @@ public class AreaController {
34 return success(AreaConvert.INSTANCE.convertList(area.getChildren())); 34 return success(AreaConvert.INSTANCE.convertList(area.getChildren()));
35 } 35 }
36 36
37 - // TODO @jason:1)url 使用中划线分隔哈,然后可以改成 children;2)id 需要添加 @RequestParam,因为可能会混淆编译;  
38 - // 3) swagger 注解要写下哈;  
39 - @GetMapping("/getChildrenArea") 37 + @GetMapping("/get-children")
40 @Operation(summary = "获得地区的下级区域") 38 @Operation(summary = "获得地区的下级区域")
41 - public CommonResult<List<LazyAreaNodeRespVO>> getChildrenArea(Integer id) { 39 + @Parameter(name = "id", description = "区域编号", required = true, example = "150000")
  40 + public CommonResult<List<AreaNodeSimpleRespVO>> getChildren(@RequestParam("id") Integer id) {
42 Area area = AreaUtils.getArea(id); 41 Area area = AreaUtils.getArea(id);
43 - Assert.notNull(area, String.format("获取不到 id : %d的区域", id)); 42 + Assert.notNull(area, String.format("获取不到 id : %d 的区域", id));
44 return success(AreaConvert.INSTANCE.convertList2(area.getChildren())); 43 return success(AreaConvert.INSTANCE.convertList2(area.getChildren()));
45 } 44 }
46 45
47 - // TODO @jason:1)读请求,使用 get 哈。2)然后参数不应该使用 @RequestBody;3)areaIds 改成 ids 更合适;  
48 // 4)方法改成 getAreaChildrenList 获得子节点们;5)url 可以已改成 children-list 46 // 4)方法改成 getAreaChildrenList 获得子节点们;5)url 可以已改成 children-list
49 - @PostMapping("/list") 47 + //@芋艿 是不是叫 getAreaListByIds 更合适。 因为不一定是子节点。 用于前端树选择获取缓存数据。 见 <el-tree-select :cache-data="areaCache">
  48 + @GetMapping("/get-by-ids")
50 @Operation(summary = "通过区域 ids 获得地区列表") 49 @Operation(summary = "通过区域 ids 获得地区列表")
51 - public CommonResult<List<LazyAreaNodeRespVO>> list(@RequestBody Set<Integer> areaIds) {  
52 - List<Area> areaList = new ArrayList<>(areaIds.size());  
53 - for (Integer areaId : areaIds) { 50 + @Parameter(name = "ids", description = "区域编号 ids", required = true, example = "1,150000")
  51 + public CommonResult<List<AreaNodeSimpleRespVO>> getAreaListByIds(@RequestParam("ids") Set<Integer> ids) {
  52 + List<Area> areaList = new ArrayList<>(ids.size());
  53 + for (Integer areaId : ids) {
54 areaList.add(AreaUtils.getArea(areaId)); 54 areaList.add(AreaUtils.getArea(areaId));
55 } 55 }
56 return success(AreaConvert.INSTANCE.convertList2(areaList)); 56 return success(AreaConvert.INSTANCE.convertList2(areaList));
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/ip/vo/LazyAreaNodeRespVO.java renamed to yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/ip/vo/AreaNodeSimpleRespVO.java
@@ -3,13 +3,9 @@ package cn.iocoder.yudao.module.system.controller.admin.ip.vo; @@ -3,13 +3,9 @@ package cn.iocoder.yudao.module.system.controller.admin.ip.vo;
3 import io.swagger.v3.oas.annotations.media.Schema; 3 import io.swagger.v3.oas.annotations.media.Schema;
4 import lombok.Data; 4 import lombok.Data;
5 5
6 -// TODO @jason:1)VO 不添加注释作者哈。2)是不是改成 AreaNodeSimpleRespVO,它其实是返回一个简洁的地区,懒加载只是它的使用场景;  
7 -/**  
8 - * @author jason  
9 - */  
10 -@Schema(description = "管理后台 - 懒加载地区节点 Response VO") 6 +@Schema(description = "管理后台 - 简洁的地区节点 Response VO")
11 @Data 7 @Data
12 -public class LazyAreaNodeRespVO { 8 +public class AreaNodeSimpleRespVO {
13 9
14 @Schema(description = "编号", required = true, example = "110000") 10 @Schema(description = "编号", required = true, example = "110000")
15 private Integer id; 11 private Integer id;
@@ -17,8 +13,7 @@ public class LazyAreaNodeRespVO { @@ -17,8 +13,7 @@ public class LazyAreaNodeRespVO {
17 @Schema(description = "名字", required = true, example = "北京") 13 @Schema(description = "名字", required = true, example = "北京")
18 private String name; 14 private String name;
19 15
20 - // TODO @jason:1)不设置默认值,交给业务逻辑那写入;2)这个字段必须返回哇?  
21 - @Schema(description = "是否叶子节点", required = true, example = "false")  
22 - private Boolean leaf = Boolean.FALSE; 16 + @Schema(description = "是否叶子节点", required = false, example = "false")
  17 + private Boolean leaf;
23 18
24 } 19 }
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/convert/ip/AreaConvert.java
@@ -3,12 +3,10 @@ package cn.iocoder.yudao.module.system.convert.ip; @@ -3,12 +3,10 @@ package cn.iocoder.yudao.module.system.convert.ip;
3 import cn.iocoder.yudao.framework.ip.core.Area; 3 import cn.iocoder.yudao.framework.ip.core.Area;
4 import cn.iocoder.yudao.framework.ip.core.enums.AreaTypeEnum; 4 import cn.iocoder.yudao.framework.ip.core.enums.AreaTypeEnum;
5 import cn.iocoder.yudao.module.system.controller.admin.ip.vo.AreaNodeRespVO; 5 import cn.iocoder.yudao.module.system.controller.admin.ip.vo.AreaNodeRespVO;
6 -import cn.iocoder.yudao.module.system.controller.admin.ip.vo.LazyAreaNodeRespVO; 6 +import cn.iocoder.yudao.module.system.controller.admin.ip.vo.AreaNodeSimpleRespVO;
7 import org.mapstruct.Mapper; 7 import org.mapstruct.Mapper;
8 import org.mapstruct.Mapping; 8 import org.mapstruct.Mapping;
9 -import org.mapstruct.Named;  
10 import org.mapstruct.factory.Mappers; 9 import org.mapstruct.factory.Mappers;
11 -import org.springframework.context.annotation.Lazy;  
12 10
13 import java.util.List; 11 import java.util.List;
14 import java.util.Objects; 12 import java.util.Objects;
@@ -20,10 +18,10 @@ public interface AreaConvert { @@ -20,10 +18,10 @@ public interface AreaConvert {
20 18
21 List<AreaNodeRespVO> convertList(List<Area> list); 19 List<AreaNodeRespVO> convertList(List<Area> list);
22 20
23 - List<LazyAreaNodeRespVO> convertList2(List<Area> list); 21 + List<AreaNodeSimpleRespVO> convertList2(List<Area> list);
24 22
25 @Mapping(source = "type", target = "leaf") 23 @Mapping(source = "type", target = "leaf")
26 - LazyAreaNodeRespVO convert(Area area); 24 + AreaNodeSimpleRespVO convert(Area area);
27 25
28 default Boolean convertAreaType(Integer type){ 26 default Boolean convertAreaType(Integer type){
29 return Objects.equals(AreaTypeEnum.DISTRICT.getType(),type); 27 return Objects.equals(AreaTypeEnum.DISTRICT.getType(),type);