Commit 01a67289a96fafb076b0e84d97b11df77cca8c28
1 parent
e942b52a
mall: 订单中心新增运费模板功能
Showing
24 changed files
with
867 additions
and
8 deletions
sql/mysql/optional/mall.sql
| @@ -487,6 +487,12 @@ INSERT INTO `ruoyi-vue-pro`.`system_menu`(`id`, `name`, `permission`, `type`, `s | @@ -487,6 +487,12 @@ INSERT INTO `ruoyi-vue-pro`.`system_menu`(`id`, `name`, `permission`, `type`, `s | ||
| 487 | 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 (2170, '快递公司更新', 'trade:delivery:express:update', 3, 3, 2167, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-05-18 09:37:53', '', '2023-05-18 09:37:53', b'0'); | 487 | 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 (2170, '快递公司更新', 'trade:delivery:express:update', 3, 3, 2167, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-05-18 09:37:53', '', '2023-05-18 09:37:53', b'0'); |
| 488 | 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 (2171, '快递公司删除', 'trade:delivery:express:delete', 3, 4, 2167, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-05-18 09:37:53', '', '2023-05-18 09:37:53', b'0'); | 488 | 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 (2171, '快递公司删除', 'trade:delivery:express:delete', 3, 4, 2167, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-05-18 09:37:53', '', '2023-05-18 09:37:53', b'0'); |
| 489 | 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 (2172, '快递公司导出', 'trade:delivery:express:export', 3, 5, 2167, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-05-18 09:37:53', '', '2023-05-18 09:37:53', b'0'); | 489 | 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 (2172, '快递公司导出', 'trade:delivery:express:export', 3, 5, 2167, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-05-18 09:37:53', '', '2023-05-18 09:37:53', b'0'); |
| 490 | +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 (2178, '快递运费模板导出', 'trade:delivery:express-template:export', 3, 5, 2173, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-05-20 06:49:53', '', '2023-05-20 06:49:53', b'0'); | ||
| 491 | +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 (2177, '快递运费模板删除', 'trade:delivery:express-template:delete', 3, 4, 2173, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-05-20 06:49:53', '', '2023-05-20 06:49:53', b'0'); | ||
| 492 | +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 (2176, '快递运费模板更新', 'trade:delivery:express-template:update', 3, 3, 2173, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-05-20 06:49:53', '', '2023-05-20 06:49:53', b'0'); | ||
| 493 | +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 (2175, '快递运费模板创建', 'trade:delivery:express-template:create', 3, 2, 2173, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-05-20 06:49:53', '', '2023-05-20 06:49:53', b'0'); | ||
| 494 | +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 (2174, '快递运费模板查询', 'trade:delivery:express-template:query', 3, 1, 2173, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-05-20 06:49:53', '', '2023-05-20 06:49:53', b'0'); | ||
| 495 | +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 (2173, '运费模版', 'trade:delivery:express-template:query', 2, 1, 2165, 'express-template', '', 'mall/trade/delivery/expressTemplate/index', 'ExpressTemplate', 0, b'1', b'1', b'1', '1', '2023-05-20 06:48:10', '1', '2023-05-20 06:48:29', b'0'); | ||
| 490 | 496 | ||
| 491 | INSERT INTO `system_dict_data`(`sort`,`label`,`value`,`dict_type`,`status`,`color_type`,`css_class`,`remark`,`creator`,`create_time`,`updater`,`update_time`,`deleted`) VALUES | 497 | INSERT INTO `system_dict_data`(`sort`,`label`,`value`,`dict_type`,`status`,`color_type`,`css_class`,`remark`,`creator`,`create_time`,`updater`,`update_time`,`deleted`) VALUES |
| 492 | (1,'打',2,'product_unit',0,'','','',1, NOW(),1, NOW(),0), | 498 | (1,'打',2,'product_unit',0,'','','',1, NOW(),1, NOW(),0), |
| @@ -520,4 +526,12 @@ INSERT INTO `system_dict_data`(`sort`,`label`,`value`,`dict_type`,`status`,`colo | @@ -520,4 +526,12 @@ INSERT INTO `system_dict_data`(`sort`,`label`,`value`,`dict_type`,`status`,`colo | ||
| 520 | (1, '英寸', 30, 'product_unit', 0, '', '', '', 1, NOW(), 1, NOW(), 0), | 526 | (1, '英寸', 30, 'product_unit', 0, '', '', '', 1, NOW(), 1, NOW(), 0), |
| 521 | (1, '英尺', 31, 'product_unit', 0, '', '', '', 1, NOW(), 1, NOW(), 0), | 527 | (1, '英尺', 31, 'product_unit', 0, '', '', '', 1, NOW(), 1, NOW(), 0), |
| 522 | (1, '码', 32, 'product_unit', 0, '', '', '', 1, NOW(), 1, NOW(), 0), | 528 | (1, '码', 32, 'product_unit', 0, '', '', '', 1, NOW(), 1, NOW(), 0), |
| 523 | - (1,'个',1,'product_unit',0,'','','',1, NOW(),1, NOW(),0); | ||
| 524 | \ No newline at end of file | 529 | \ No newline at end of file |
| 530 | + (1,'个',1,'product_unit',0,'','','',1, NOW(),1, NOW(),0); | ||
| 531 | +-- ---------------------------- | ||
| 532 | +-- 数字字典,快递计费方式 | ||
| 533 | +-- ---------------------------- | ||
| 534 | +INSERT INTO `ruoyi-vue-pro`.`system_dict_type`(`id`, `name`, `type`, `status`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `deleted_time`) VALUES (169, '快递计费方式', 'trade_delivery_express_charge_mode', 0, '用于商城交易模块配送管理', '1', '2023-05-21 22:45:03', '1', '2023-05-21 22:45:03', b'0', '1970-01-01 00:00:00'); | ||
| 535 | + | ||
| 536 | +INSERT INTO `ruoyi-vue-pro`.`system_dict_data`(`id`, `sort`, `label`, `value`, `dict_type`, `status`, `color_type`, `css_class`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1237, 2, '按体积', '3', 'trade_delivery_express_charge_mode', 0, '', '', '', '1', '2023-05-21 22:47:18', '1', '2023-05-21 22:47:18', b'0'); | ||
| 537 | +INSERT INTO `ruoyi-vue-pro`.`system_dict_data`(`id`, `sort`, `label`, `value`, `dict_type`, `status`, `color_type`, `css_class`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1236, 1, '按重量', '2', 'trade_delivery_express_charge_mode', 0, '', '', '', '1', '2023-05-21 22:46:58', '1', '2023-05-21 22:46:58', b'0'); | ||
| 538 | +INSERT INTO `ruoyi-vue-pro`.`system_dict_data`(`id`, `sort`, `label`, `value`, `dict_type`, `status`, `color_type`, `css_class`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1235, 0, '按件', '1', 'trade_delivery_express_charge_mode', 0, '', '', '', '1', '2023-05-21 22:46:40', '1', '2023-05-21 22:46:40', b'0'); |
yudao-module-mall/yudao-module-trade-api/src/main/java/cn/iocoder/yudao/module/trade/enums/ErrorCodeConstants.java
| @@ -48,5 +48,6 @@ public interface ErrorCodeConstants { | @@ -48,5 +48,6 @@ public interface ErrorCodeConstants { | ||
| 48 | // ========== 物流配送模块 1-011-003-000 ========== | 48 | // ========== 物流配送模块 1-011-003-000 ========== |
| 49 | ErrorCode DELIVERY_EXPRESS_NOT_EXISTS = new ErrorCode(1011003000, "快递公司不存在"); | 49 | ErrorCode DELIVERY_EXPRESS_NOT_EXISTS = new ErrorCode(1011003000, "快递公司不存在"); |
| 50 | ErrorCode EXPRESS_CODE_DUPLICATE = new ErrorCode(1011003001, "已经存在该编码的快递公司"); | 50 | ErrorCode EXPRESS_CODE_DUPLICATE = new ErrorCode(1011003001, "已经存在该编码的快递公司"); |
| 51 | - | 51 | + ErrorCode EXPRESS_TEMPLATE_NOT_EXISTS = new ErrorCode(1011003002, "运费模板不存在"); |
| 52 | + ErrorCode EXPRESS_TEMPLATE_NAME_DUPLICATE = new ErrorCode(1011003002, "已经存在该运费模板名"); | ||
| 52 | } | 53 | } |
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/delivery/DeliveryExpressController.java
| @@ -71,7 +71,7 @@ public class DeliveryExpressController { | @@ -71,7 +71,7 @@ public class DeliveryExpressController { | ||
| 71 | 71 | ||
| 72 | @GetMapping("/page") | 72 | @GetMapping("/page") |
| 73 | @Operation(summary = "获得快递公司分页") | 73 | @Operation(summary = "获得快递公司分页") |
| 74 | - @PreAuthorize("@ss.hasPermission('trade:delivery-express:query')") | 74 | + @PreAuthorize("@ss.hasPermission('trade:delivery:express:query')") |
| 75 | public CommonResult<PageResult<DeliveryExpressRespVO>> getDeliveryExpressPage(@Valid DeliveryExpressPageReqVO pageVO) { | 75 | public CommonResult<PageResult<DeliveryExpressRespVO>> getDeliveryExpressPage(@Valid DeliveryExpressPageReqVO pageVO) { |
| 76 | PageResult<DeliveryExpressDO> pageResult = deliveryExpressService.getDeliveryExpressPage(pageVO); | 76 | PageResult<DeliveryExpressDO> pageResult = deliveryExpressService.getDeliveryExpressPage(pageVO); |
| 77 | return success(DeliveryExpressConvert.INSTANCE.convertPage(pageResult)); | 77 | return success(DeliveryExpressConvert.INSTANCE.convertPage(pageResult)); |
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/delivery/DeliveryExpressTemplateController.java
0 → 100644
| 1 | +package cn.iocoder.yudao.module.trade.controller.admin.delivery; | ||
| 2 | + | ||
| 3 | +import cn.iocoder.yudao.module.trade.controller.admin.delivery.vo.*; | ||
| 4 | +import cn.iocoder.yudao.module.trade.convert.delivery.DeliveryExpressTemplateConvert; | ||
| 5 | +import cn.iocoder.yudao.module.trade.dal.dataobject.delivery.DeliveryExpressTemplateDO; | ||
| 6 | +import cn.iocoder.yudao.module.trade.service.delivery.DeliveryExpressTemplateService; | ||
| 7 | +import org.springframework.web.bind.annotation.*; | ||
| 8 | +import javax.annotation.Resource; | ||
| 9 | +import org.springframework.validation.annotation.Validated; | ||
| 10 | +import org.springframework.security.access.prepost.PreAuthorize; | ||
| 11 | +import io.swagger.v3.oas.annotations.tags.Tag; | ||
| 12 | +import io.swagger.v3.oas.annotations.Parameter; | ||
| 13 | +import io.swagger.v3.oas.annotations.Operation; | ||
| 14 | + | ||
| 15 | +import javax.validation.*; | ||
| 16 | +import javax.servlet.http.*; | ||
| 17 | +import java.util.*; | ||
| 18 | +import java.io.IOException; | ||
| 19 | + | ||
| 20 | +import cn.iocoder.yudao.framework.common.pojo.PageResult; | ||
| 21 | +import cn.iocoder.yudao.framework.common.pojo.CommonResult; | ||
| 22 | +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; | ||
| 23 | + | ||
| 24 | +import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; | ||
| 25 | + | ||
| 26 | +import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; | ||
| 27 | +import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.*; | ||
| 28 | + | ||
| 29 | + | ||
| 30 | +@Tag(name = "管理后台 - 快递运费模板") | ||
| 31 | +@RestController | ||
| 32 | +@RequestMapping("/trade/delivery/express-template") | ||
| 33 | +@Validated | ||
| 34 | +public class DeliveryExpressTemplateController { | ||
| 35 | + | ||
| 36 | + @Resource | ||
| 37 | + private DeliveryExpressTemplateService deliveryExpressTemplateService; | ||
| 38 | + | ||
| 39 | + @PostMapping("/create") | ||
| 40 | + @Operation(summary = "创建快递运费模板") | ||
| 41 | + @PreAuthorize("@ss.hasPermission('trade:delivery:express-template:create')") | ||
| 42 | + public CommonResult<Long> createDeliveryExpressTemplate(@Valid @RequestBody DeliveryExpressTemplateCreateReqVO createReqVO) { | ||
| 43 | + return success(deliveryExpressTemplateService.createDeliveryExpressTemplate(createReqVO)); | ||
| 44 | + } | ||
| 45 | + | ||
| 46 | + @PutMapping("/update") | ||
| 47 | + @Operation(summary = "更新快递运费模板") | ||
| 48 | + @PreAuthorize("@ss.hasPermission('trade:delivery:express-template:update')") | ||
| 49 | + public CommonResult<Boolean> updateDeliveryExpressTemplate(@Valid @RequestBody DeliveryExpressTemplateUpdateReqVO updateReqVO) { | ||
| 50 | + deliveryExpressTemplateService.updateDeliveryExpressTemplate(updateReqVO); | ||
| 51 | + return success(true); | ||
| 52 | + } | ||
| 53 | + | ||
| 54 | + @DeleteMapping("/delete") | ||
| 55 | + @Operation(summary = "删除快递运费模板") | ||
| 56 | + @Parameter(name = "id", description = "编号", required = true) | ||
| 57 | + @PreAuthorize("@ss.hasPermission('trade:delivery:express-template:delete')") | ||
| 58 | + public CommonResult<Boolean> deleteDeliveryExpressTemplate(@RequestParam("id") Long id) { | ||
| 59 | + deliveryExpressTemplateService.deleteDeliveryExpressTemplate(id); | ||
| 60 | + return success(true); | ||
| 61 | + } | ||
| 62 | + | ||
| 63 | + @GetMapping("/get") | ||
| 64 | + @Operation(summary = "获得快递运费模板") | ||
| 65 | + @Parameter(name = "id", description = "编号", required = true, example = "1024") | ||
| 66 | + @PreAuthorize("@ss.hasPermission('trade:delivery:express-template:query')") | ||
| 67 | + public CommonResult<DeliveryExpressTemplateRespVO> getDeliveryExpressTemplate(@RequestParam("id") Long id) { | ||
| 68 | + return success(deliveryExpressTemplateService.getDeliveryExpressTemplate(id)); | ||
| 69 | + } | ||
| 70 | + | ||
| 71 | + @GetMapping("/list") | ||
| 72 | + @Operation(summary = "获得快递运费模板列表") | ||
| 73 | + @Parameter(name = "ids", description = "编号列表", required = true, example = "1024,2048") | ||
| 74 | + @PreAuthorize("@ss.hasPermission('trade:delivery:express-template:query')") | ||
| 75 | + public CommonResult<List<DeliveryExpressTemplateSimpleRespVO>> getDeliveryExpressTemplateList(@RequestParam("ids") Collection<Long> ids) { | ||
| 76 | + List<DeliveryExpressTemplateDO> list = deliveryExpressTemplateService.getDeliveryExpressTemplateList(ids); | ||
| 77 | + return success(DeliveryExpressTemplateConvert.INSTANCE.convertList(list)); | ||
| 78 | + } | ||
| 79 | + | ||
| 80 | + @GetMapping("/page") | ||
| 81 | + @Operation(summary = "获得快递运费模板分页") | ||
| 82 | + @PreAuthorize("@ss.hasPermission('trade:delivery:express-template:query')") | ||
| 83 | + public CommonResult<PageResult<DeliveryExpressTemplateSimpleRespVO>> getDeliveryExpressTemplatePage(@Valid DeliveryExpressTemplatePageReqVO pageVO) { | ||
| 84 | + PageResult<DeliveryExpressTemplateDO> pageResult = deliveryExpressTemplateService.getDeliveryExpressTemplatePage(pageVO); | ||
| 85 | + return success(DeliveryExpressTemplateConvert.INSTANCE.convertPage(pageResult)); | ||
| 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 | +} |
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/delivery/vo/DeliveryExpressTemplateBaseVO.java
0 → 100644
| 1 | +package cn.iocoder.yudao.module.trade.controller.admin.delivery.vo; | ||
| 2 | + | ||
| 3 | +import io.swagger.v3.oas.annotations.media.Schema; | ||
| 4 | +import lombok.Data; | ||
| 5 | + | ||
| 6 | +import javax.validation.constraints.NotNull; | ||
| 7 | + | ||
| 8 | +/** | ||
| 9 | +* 快递运费模板 Base VO,提供给添加、修改、详细的子 VO 使用 | ||
| 10 | +* 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成 | ||
| 11 | +*/ | ||
| 12 | +@Data | ||
| 13 | +public class DeliveryExpressTemplateBaseVO { | ||
| 14 | + | ||
| 15 | + @Schema(description = "模板名称", required = true, example = "王五") | ||
| 16 | + @NotNull(message = "模板名称不能为空") | ||
| 17 | + private String name; | ||
| 18 | + | ||
| 19 | + @Schema(description = "配送计费方式 1:按件 2:按重量 3:按体积", required = true) | ||
| 20 | + @NotNull(message = "配送计费方式 1:按件 2:按重量 3:按体积不能为空") | ||
| 21 | + private Integer chargeMode; | ||
| 22 | + | ||
| 23 | + @Schema(description = "排序", required = true) | ||
| 24 | + @NotNull(message = "排序不能为空") | ||
| 25 | + private Integer sort; | ||
| 26 | + | ||
| 27 | +} |
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/delivery/vo/DeliveryExpressTemplateCreateReqVO.java
0 → 100644
| 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 | + | ||
| 7 | +import javax.validation.Valid; | ||
| 8 | + | ||
| 9 | +@Schema(description = "管理后台 - 快递运费模板创建 Request VO") | ||
| 10 | +@Data | ||
| 11 | +@EqualsAndHashCode(callSuper = true) | ||
| 12 | +@ToString(callSuper = true) | ||
| 13 | +public class DeliveryExpressTemplateCreateReqVO extends DeliveryExpressTemplateBaseVO { | ||
| 14 | + | ||
| 15 | + @Schema(description = "区域运费列表") | ||
| 16 | + @Valid | ||
| 17 | + private List<ExpressTemplateChargeBaseVO> templateCharge = Collections.emptyList(); | ||
| 18 | + | ||
| 19 | + @Schema(description = "包邮区域列表") | ||
| 20 | + @Valid | ||
| 21 | + private List<ExpressTemplateFreeBaseVO> templateFree = Collections.emptyList(); | ||
| 22 | + | ||
| 23 | +} |
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/delivery/vo/DeliveryExpressTemplateExcelVO.java
0 → 100644
| 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
0 → 100644
| 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/DeliveryExpressTemplatePageReqVO.java
0 → 100644
| 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 org.springframework.format.annotation.DateTimeFormat; | ||
| 8 | +import java.time.LocalDateTime; | ||
| 9 | + | ||
| 10 | +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; | ||
| 11 | + | ||
| 12 | +@Schema(description = "管理后台 - 快递运费模板分页 Request VO") | ||
| 13 | +@Data | ||
| 14 | +@EqualsAndHashCode(callSuper = true) | ||
| 15 | +@ToString(callSuper = true) | ||
| 16 | +public class DeliveryExpressTemplatePageReqVO extends PageParam { | ||
| 17 | + | ||
| 18 | + @Schema(description = "模板名称", example = "王五") | ||
| 19 | + private String name; | ||
| 20 | + | ||
| 21 | + @Schema(description = "配送计费方式 1:按件 2:按重量 3:按体积") | ||
| 22 | + private Integer chargeMode; | ||
| 23 | + | ||
| 24 | + @Schema(description = "创建时间") | ||
| 25 | + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) | ||
| 26 | + private LocalDateTime[] createTime; | ||
| 27 | + | ||
| 28 | +} |
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/delivery/vo/DeliveryExpressTemplateRespVO.java
0 → 100644
| 1 | +package cn.iocoder.yudao.module.trade.controller.admin.delivery.vo; | ||
| 2 | + | ||
| 3 | +import io.swagger.v3.oas.annotations.media.Schema; | ||
| 4 | +import lombok.Data; | ||
| 5 | +import lombok.EqualsAndHashCode; | ||
| 6 | +import lombok.ToString; | ||
| 7 | + | ||
| 8 | +import java.util.List; | ||
| 9 | + | ||
| 10 | +/** | ||
| 11 | + * @author jason | ||
| 12 | + */ | ||
| 13 | +@Schema(description = "管理后台 - 快递运费模板 Response VO") | ||
| 14 | +@Data | ||
| 15 | +@EqualsAndHashCode(callSuper = true) | ||
| 16 | +@ToString(callSuper = true) | ||
| 17 | +public class DeliveryExpressTemplateRespVO extends DeliveryExpressTemplateBaseVO { | ||
| 18 | + | ||
| 19 | + @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "371") | ||
| 20 | + private Long id; | ||
| 21 | + | ||
| 22 | + @Schema(description = "运费模板运费设置", requiredMode = Schema.RequiredMode.REQUIRED) | ||
| 23 | + private List<ExpressTemplateChargeBaseVO> templateCharge; | ||
| 24 | + | ||
| 25 | + @Schema(description = "运费模板包邮区域", requiredMode = Schema.RequiredMode.REQUIRED) | ||
| 26 | + private List<ExpressTemplateFreeBaseVO> templateFree; | ||
| 27 | + | ||
| 28 | +} |
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/delivery/vo/DeliveryExpressTemplateSimpleRespVO.java
0 → 100644
| 1 | +package cn.iocoder.yudao.module.trade.controller.admin.delivery.vo; | ||
| 2 | + | ||
| 3 | +import io.swagger.v3.oas.annotations.media.Schema; | ||
| 4 | +import lombok.*; | ||
| 5 | +import java.time.LocalDateTime; | ||
| 6 | + | ||
| 7 | +@Schema(description = "管理后台 - 快递运费模板 精简 Response VO") | ||
| 8 | +@Data | ||
| 9 | +@EqualsAndHashCode(callSuper = true) | ||
| 10 | +@ToString(callSuper = true) | ||
| 11 | +public class DeliveryExpressTemplateSimpleRespVO extends DeliveryExpressTemplateBaseVO { | ||
| 12 | + | ||
| 13 | + @Schema(description = "编号,自增", required = true, example = "371") | ||
| 14 | + private Long id; | ||
| 15 | + | ||
| 16 | + @Schema(description = "创建时间", required = true) | ||
| 17 | + private LocalDateTime createTime; | ||
| 18 | + | ||
| 19 | +} |
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/delivery/vo/DeliveryExpressTemplateUpdateReqVO.java
0 → 100644
| 1 | +package cn.iocoder.yudao.module.trade.controller.admin.delivery.vo; | ||
| 2 | + | ||
| 3 | +import io.swagger.v3.oas.annotations.media.Schema; | ||
| 4 | +import lombok.*; | ||
| 5 | +import java.util.*; | ||
| 6 | +import javax.validation.Valid; | ||
| 7 | +import javax.validation.constraints.*; | ||
| 8 | + | ||
| 9 | +@Schema(description = "管理后台 - 快递运费模板更新 Request VO") | ||
| 10 | +@Data | ||
| 11 | +@EqualsAndHashCode(callSuper = true) | ||
| 12 | +@ToString(callSuper = true) | ||
| 13 | +public class DeliveryExpressTemplateUpdateReqVO extends DeliveryExpressTemplateBaseVO { | ||
| 14 | + | ||
| 15 | + @Schema(description = "编号", required = true, example = "371") | ||
| 16 | + @NotNull(message = "编号不能为空") | ||
| 17 | + private Long id; | ||
| 18 | + | ||
| 19 | + @Schema(description = "区域运费列表") | ||
| 20 | + @Valid | ||
| 21 | + private List<ExpressTemplateChargeUpdateVO> templateCharge = Collections.emptyList(); | ||
| 22 | + | ||
| 23 | + @Schema(description = "包邮区域列表") | ||
| 24 | + @Valid | ||
| 25 | + private List<ExpressTemplateFreeUpdateVO> templateFree = Collections.emptyList(); | ||
| 26 | + | ||
| 27 | +} |
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/delivery/vo/ExpressTemplateChargeBaseVO.java
0 → 100644
| 1 | +package cn.iocoder.yudao.module.trade.controller.admin.delivery.vo; | ||
| 2 | + | ||
| 3 | +import io.swagger.v3.oas.annotations.media.Schema; | ||
| 4 | +import lombok.Data; | ||
| 5 | + | ||
| 6 | +import javax.validation.constraints.NotNull; | ||
| 7 | + | ||
| 8 | +/** | ||
| 9 | + * 快递运费模板运费设置 Base VO,提供给添加运费模板使用 | ||
| 10 | + * | ||
| 11 | + * @author jason | ||
| 12 | + */ | ||
| 13 | +@Data | ||
| 14 | +public class ExpressTemplateChargeBaseVO { | ||
| 15 | + | ||
| 16 | + @Schema(description = "区域编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") | ||
| 17 | + @NotNull(message = "区域编号不能为空") | ||
| 18 | + private Integer areaId; | ||
| 19 | + | ||
| 20 | + @Schema(description = "首件数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "5") | ||
| 21 | + @NotNull(message = "首件数量不能为空") | ||
| 22 | + private Double startCount; | ||
| 23 | + | ||
| 24 | + @Schema(description = "起步价", requiredMode = Schema.RequiredMode.REQUIRED, example = "1000") | ||
| 25 | + @NotNull(message = "起步价不能为空") | ||
| 26 | + private Integer startPrice; | ||
| 27 | + | ||
| 28 | + @Schema(description = "续件数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "10") | ||
| 29 | + @NotNull(message = "续件数量不能为空") | ||
| 30 | + private Double extraCount; | ||
| 31 | + | ||
| 32 | + @Schema(description = "额外价", requiredMode = Schema.RequiredMode.REQUIRED, example = "2000") | ||
| 33 | + @NotNull(message = "额外价不能为空") | ||
| 34 | + private Integer extraPrice; | ||
| 35 | +} |
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/delivery/vo/ExpressTemplateChargeUpdateVO.java
0 → 100644
| 1 | +package cn.iocoder.yudao.module.trade.controller.admin.delivery.vo; | ||
| 2 | + | ||
| 3 | +import io.swagger.v3.oas.annotations.media.Schema; | ||
| 4 | +import lombok.Data; | ||
| 5 | + | ||
| 6 | +/** | ||
| 7 | + * @author jason | ||
| 8 | + */ | ||
| 9 | +@Data | ||
| 10 | +public class ExpressTemplateChargeUpdateVO extends ExpressTemplateChargeBaseVO { | ||
| 11 | + | ||
| 12 | + @Schema(description = "编号", example = "6592") | ||
| 13 | + private Long id; | ||
| 14 | + | ||
| 15 | + @Schema(description = "配送模板编号", example = "1") | ||
| 16 | + private Long templateId; | ||
| 17 | + | ||
| 18 | + @Schema(description = "配送计费方式", example = "1") | ||
| 19 | + private Integer chargeMode; | ||
| 20 | +} |
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/delivery/vo/ExpressTemplateFreeBaseVO.java
0 → 100644
| 1 | +package cn.iocoder.yudao.module.trade.controller.admin.delivery.vo; | ||
| 2 | + | ||
| 3 | +import io.swagger.v3.oas.annotations.media.Schema; | ||
| 4 | +import lombok.Data; | ||
| 5 | + | ||
| 6 | +import javax.validation.constraints.NotNull; | ||
| 7 | + | ||
| 8 | +/** | ||
| 9 | + * 快递运费模板包邮 Base VO,提供给添加运费模板使用 | ||
| 10 | + * | ||
| 11 | + * @author jason | ||
| 12 | + */ | ||
| 13 | +@Data | ||
| 14 | +public class ExpressTemplateFreeBaseVO { | ||
| 15 | + | ||
| 16 | + @Schema(description = "区域编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") | ||
| 17 | + @NotNull(message = "区域编号不能为空") | ||
| 18 | + private Integer areaId; | ||
| 19 | + | ||
| 20 | + @Schema(description = "包邮金额", requiredMode = Schema.RequiredMode.REQUIRED, example = "5000") | ||
| 21 | + @NotNull(message = "包邮金额不能为空") | ||
| 22 | + private Integer freePrice; | ||
| 23 | + | ||
| 24 | + @Schema(description = "包邮件数", requiredMode = Schema.RequiredMode.REQUIRED, example = "5") | ||
| 25 | + @NotNull(message = "包邮件数不能为空") | ||
| 26 | + private Integer freeCount; | ||
| 27 | +} |
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/delivery/vo/ExpressTemplateFreeUpdateVO.java
0 → 100644
| 1 | +package cn.iocoder.yudao.module.trade.controller.admin.delivery.vo; | ||
| 2 | + | ||
| 3 | +import io.swagger.v3.oas.annotations.media.Schema; | ||
| 4 | +import lombok.Data; | ||
| 5 | + | ||
| 6 | +/** | ||
| 7 | + * 快递运费模板包邮 更新 VO | ||
| 8 | + * | ||
| 9 | + * @author jason | ||
| 10 | + */ | ||
| 11 | +@Data | ||
| 12 | +public class ExpressTemplateFreeUpdateVO extends ExpressTemplateFreeBaseVO { | ||
| 13 | + | ||
| 14 | + @Schema(description = "编号", example = "6592") | ||
| 15 | + private Long id; | ||
| 16 | + | ||
| 17 | + @Schema(description = "配送模板编号", example = "1") | ||
| 18 | + private Long templateId; | ||
| 19 | +} |
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/convert/delivery/DeliveryExpressTemplateConvert.java
0 → 100644
| 1 | +package cn.iocoder.yudao.module.trade.convert.delivery; | ||
| 2 | + | ||
| 3 | +import java.util.*; | ||
| 4 | + | ||
| 5 | +import cn.hutool.core.collection.CollUtil; | ||
| 6 | +import cn.iocoder.yudao.framework.common.pojo.PageResult; | ||
| 7 | + | ||
| 8 | +import cn.iocoder.yudao.module.trade.controller.admin.delivery.vo.*; | ||
| 9 | +import cn.iocoder.yudao.module.trade.dal.dataobject.delivery.DeliveryExpressTemplateChargeDO; | ||
| 10 | +import cn.iocoder.yudao.module.trade.dal.dataobject.delivery.DeliveryExpressTemplateDO; | ||
| 11 | +import cn.iocoder.yudao.module.trade.dal.dataobject.delivery.DeliveryExpressTemplateFreeDO; | ||
| 12 | +import org.mapstruct.Mapper; | ||
| 13 | +import org.mapstruct.factory.Mappers; | ||
| 14 | + | ||
| 15 | +/** | ||
| 16 | + * 快递运费模板 Convert | ||
| 17 | + * | ||
| 18 | + * @author 芋道源码 | ||
| 19 | + */ | ||
| 20 | +@Mapper | ||
| 21 | +public interface DeliveryExpressTemplateConvert { | ||
| 22 | + | ||
| 23 | + DeliveryExpressTemplateConvert INSTANCE = Mappers.getMapper(DeliveryExpressTemplateConvert.class); | ||
| 24 | + | ||
| 25 | + DeliveryExpressTemplateDO convert(DeliveryExpressTemplateCreateReqVO bean); | ||
| 26 | + | ||
| 27 | + DeliveryExpressTemplateDO convert(DeliveryExpressTemplateUpdateReqVO bean); | ||
| 28 | + | ||
| 29 | + DeliveryExpressTemplateSimpleRespVO convert(DeliveryExpressTemplateDO bean); | ||
| 30 | + | ||
| 31 | + DeliveryExpressTemplateRespVO convert2(DeliveryExpressTemplateDO bean); | ||
| 32 | + | ||
| 33 | + List<DeliveryExpressTemplateSimpleRespVO> convertList(List<DeliveryExpressTemplateDO> list); | ||
| 34 | + | ||
| 35 | + PageResult<DeliveryExpressTemplateSimpleRespVO> convertPage(PageResult<DeliveryExpressTemplateDO> page); | ||
| 36 | + | ||
| 37 | + List<DeliveryExpressTemplateExcelVO> convertList02(List<DeliveryExpressTemplateDO> list); | ||
| 38 | + | ||
| 39 | + DeliveryExpressTemplateChargeDO convertTemplateCharge(Long templateId, Integer chargeMode, ExpressTemplateChargeBaseVO vo); | ||
| 40 | + | ||
| 41 | + DeliveryExpressTemplateChargeDO convertTemplateCharge(ExpressTemplateChargeUpdateVO vo); | ||
| 42 | + | ||
| 43 | + DeliveryExpressTemplateFreeDO convertTemplateFree(Long templateId, ExpressTemplateFreeBaseVO vo); | ||
| 44 | + | ||
| 45 | + DeliveryExpressTemplateFreeDO convertTemplateFree(ExpressTemplateFreeUpdateVO vo); | ||
| 46 | + | ||
| 47 | + List<ExpressTemplateChargeBaseVO> convertTemplateChargeList(List<DeliveryExpressTemplateChargeDO> list); | ||
| 48 | + | ||
| 49 | + List<ExpressTemplateFreeBaseVO> convertTemplateFreeList(List<DeliveryExpressTemplateFreeDO> list); | ||
| 50 | + | ||
| 51 | + default List<DeliveryExpressTemplateChargeDO> convertTemplateChargeList(Long templateId, Integer chargeMode, List<ExpressTemplateChargeBaseVO> list){ | ||
| 52 | + if(CollUtil.isEmpty(list)){ | ||
| 53 | + return Collections.emptyList(); | ||
| 54 | + } | ||
| 55 | + List<DeliveryExpressTemplateChargeDO> templateChargeList = new ArrayList<>( list.size() ); | ||
| 56 | + for (ExpressTemplateChargeBaseVO item : list) { | ||
| 57 | + templateChargeList.add(convertTemplateCharge(templateId, chargeMode, item)); | ||
| 58 | + } | ||
| 59 | + return templateChargeList; | ||
| 60 | + } | ||
| 61 | + | ||
| 62 | + | ||
| 63 | + | ||
| 64 | + default List<DeliveryExpressTemplateFreeDO> convertTemplateFreeList(Long templateId, List<ExpressTemplateFreeBaseVO> list) { | ||
| 65 | + if (CollUtil.isEmpty(list)) { | ||
| 66 | + return Collections.emptyList(); | ||
| 67 | + } | ||
| 68 | + List<DeliveryExpressTemplateFreeDO> templateFreeList = new ArrayList<>(list.size()); | ||
| 69 | + for (ExpressTemplateFreeBaseVO item : list) { | ||
| 70 | + templateFreeList.add(convertTemplateFree(templateId, item)); | ||
| 71 | + } | ||
| 72 | + return templateFreeList; | ||
| 73 | + } | ||
| 74 | + | ||
| 75 | + default DeliveryExpressTemplateRespVO convert(DeliveryExpressTemplateDO bean, | ||
| 76 | + List<DeliveryExpressTemplateChargeDO> chargeList, | ||
| 77 | + List<DeliveryExpressTemplateFreeDO> freeList){ | ||
| 78 | + DeliveryExpressTemplateRespVO respVO = convert2(bean); | ||
| 79 | + respVO.setTemplateCharge(convertTemplateChargeList(chargeList)); | ||
| 80 | + respVO.setTemplateFree(convertTemplateFreeList(freeList)); | ||
| 81 | + return respVO; | ||
| 82 | + } | ||
| 83 | +} |
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/dal/dataobject/delivery/DeliveryExpressTemplateFreeDO.java
| @@ -17,7 +17,7 @@ import lombok.Data; | @@ -17,7 +17,7 @@ import lombok.Data; | ||
| 17 | public class DeliveryExpressTemplateFreeDO extends BaseDO { | 17 | public class DeliveryExpressTemplateFreeDO extends BaseDO { |
| 18 | 18 | ||
| 19 | /** | 19 | /** |
| 20 | - * 编号,自增 | 20 | + * 编号 |
| 21 | */ | 21 | */ |
| 22 | @TableId | 22 | @TableId |
| 23 | private Long id; | 23 | private Long id; |
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/dal/mysql/delivery/DeliveryExpressTemplateChargeMapper.java
| @@ -2,12 +2,31 @@ package cn.iocoder.yudao.module.trade.dal.mysql.delivery; | @@ -2,12 +2,31 @@ package cn.iocoder.yudao.module.trade.dal.mysql.delivery; | ||
| 2 | 2 | ||
| 3 | 3 | ||
| 4 | import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; | 4 | import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; |
| 5 | +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; | ||
| 5 | import cn.iocoder.yudao.module.trade.dal.dataobject.delivery.DeliveryExpressTemplateChargeDO; | 6 | import cn.iocoder.yudao.module.trade.dal.dataobject.delivery.DeliveryExpressTemplateChargeDO; |
| 7 | +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | ||
| 8 | +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; | ||
| 6 | import org.apache.ibatis.annotations.Mapper; | 9 | import org.apache.ibatis.annotations.Mapper; |
| 10 | +import org.springframework.stereotype.Repository; | ||
| 11 | + | ||
| 12 | +import java.util.List; | ||
| 7 | 13 | ||
| 8 | @Mapper | 14 | @Mapper |
| 9 | public interface DeliveryExpressTemplateChargeMapper extends BaseMapperX<DeliveryExpressTemplateChargeDO> { | 15 | public interface DeliveryExpressTemplateChargeMapper extends BaseMapperX<DeliveryExpressTemplateChargeDO> { |
| 10 | 16 | ||
| 17 | + @Repository | ||
| 18 | + class BatchInsertMapper extends ServiceImpl<DeliveryExpressTemplateChargeMapper, DeliveryExpressTemplateChargeDO> { | ||
| 19 | + } | ||
| 20 | + | ||
| 21 | + default List<DeliveryExpressTemplateChargeDO> selectListByTemplateId(Long templateId){ | ||
| 22 | + return selectList(new LambdaQueryWrapper<DeliveryExpressTemplateChargeDO>() | ||
| 23 | + .eq(DeliveryExpressTemplateChargeDO::getTemplateId, templateId)); | ||
| 24 | + } | ||
| 25 | + | ||
| 26 | + default int deleteByTemplateId(Long templateId){ | ||
| 27 | + return delete(new LambdaQueryWrapper<DeliveryExpressTemplateChargeDO>() | ||
| 28 | + .eq(DeliveryExpressTemplateChargeDO::getTemplateId, templateId)); | ||
| 29 | + } | ||
| 11 | } | 30 | } |
| 12 | 31 | ||
| 13 | 32 |
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/dal/mysql/delivery/DeliveryExpressTemplateFreeMapper.java
| 1 | package cn.iocoder.yudao.module.trade.dal.mysql.delivery; | 1 | package cn.iocoder.yudao.module.trade.dal.mysql.delivery; |
| 2 | 2 | ||
| 3 | import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; | 3 | import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; |
| 4 | +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; | ||
| 5 | +import cn.iocoder.yudao.module.trade.dal.dataobject.delivery.DeliveryExpressTemplateChargeDO; | ||
| 4 | import cn.iocoder.yudao.module.trade.dal.dataobject.delivery.DeliveryExpressTemplateFreeDO; | 6 | import cn.iocoder.yudao.module.trade.dal.dataobject.delivery.DeliveryExpressTemplateFreeDO; |
| 7 | +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | ||
| 8 | +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; | ||
| 5 | import org.apache.ibatis.annotations.Mapper; | 9 | import org.apache.ibatis.annotations.Mapper; |
| 10 | +import org.springframework.stereotype.Repository; | ||
| 11 | + | ||
| 12 | +import java.util.List; | ||
| 6 | 13 | ||
| 7 | @Mapper | 14 | @Mapper |
| 8 | public interface DeliveryExpressTemplateFreeMapper extends BaseMapperX<DeliveryExpressTemplateFreeDO> { | 15 | public interface DeliveryExpressTemplateFreeMapper extends BaseMapperX<DeliveryExpressTemplateFreeDO> { |
| 9 | 16 | ||
| 17 | + @Repository | ||
| 18 | + class BatchInsertMapper extends ServiceImpl<DeliveryExpressTemplateFreeMapper, DeliveryExpressTemplateFreeDO> { | ||
| 19 | + } | ||
| 20 | + | ||
| 21 | + default List<DeliveryExpressTemplateFreeDO> selectListByTemplateId(Long templateId) { | ||
| 22 | + return selectList(new LambdaQueryWrapper<DeliveryExpressTemplateFreeDO>() | ||
| 23 | + .eq(DeliveryExpressTemplateFreeDO::getTemplateId, templateId)); | ||
| 24 | + } | ||
| 25 | + | ||
| 26 | + default int deleteByTemplateId(Long templateId) { | ||
| 27 | + return delete(new LambdaQueryWrapper<DeliveryExpressTemplateFreeDO>() | ||
| 28 | + .eq(DeliveryExpressTemplateFreeDO::getTemplateId, templateId)); | ||
| 29 | + } | ||
| 10 | } | 30 | } |
| 11 | 31 | ||
| 12 | 32 |
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/dal/mysql/delivery/DeliveryExpressTemplateMapper.java
| 1 | package cn.iocoder.yudao.module.trade.dal.mysql.delivery; | 1 | package cn.iocoder.yudao.module.trade.dal.mysql.delivery; |
| 2 | 2 | ||
| 3 | 3 | ||
| 4 | +import cn.iocoder.yudao.framework.common.pojo.PageResult; | ||
| 4 | import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; | 5 | import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; |
| 5 | 6 | ||
| 7 | +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; | ||
| 8 | +import cn.iocoder.yudao.module.trade.controller.admin.delivery.vo.DeliveryExpressTemplateExportReqVO; | ||
| 9 | +import cn.iocoder.yudao.module.trade.controller.admin.delivery.vo.DeliveryExpressTemplatePageReqVO; | ||
| 10 | +import cn.iocoder.yudao.module.trade.dal.dataobject.delivery.DeliveryExpressDO; | ||
| 6 | import cn.iocoder.yudao.module.trade.dal.dataobject.delivery.DeliveryExpressTemplateDO; | 11 | import cn.iocoder.yudao.module.trade.dal.dataobject.delivery.DeliveryExpressTemplateDO; |
| 12 | +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | ||
| 7 | import org.apache.ibatis.annotations.Mapper; | 13 | import org.apache.ibatis.annotations.Mapper; |
| 8 | 14 | ||
| 15 | +import java.util.List; | ||
| 16 | + | ||
| 9 | @Mapper | 17 | @Mapper |
| 10 | public interface DeliveryExpressTemplateMapper extends BaseMapperX<DeliveryExpressTemplateDO> { | 18 | public interface DeliveryExpressTemplateMapper extends BaseMapperX<DeliveryExpressTemplateDO> { |
| 19 | + | ||
| 20 | + default PageResult<DeliveryExpressTemplateDO> selectPage(DeliveryExpressTemplatePageReqVO reqVO) { | ||
| 21 | + return selectPage(reqVO, new LambdaQueryWrapperX<DeliveryExpressTemplateDO>() | ||
| 22 | + .likeIfPresent(DeliveryExpressTemplateDO::getName, reqVO.getName()) | ||
| 23 | + .eqIfPresent(DeliveryExpressTemplateDO::getChargeMode, reqVO.getChargeMode()) | ||
| 24 | + .betweenIfPresent(DeliveryExpressTemplateDO::getCreateTime, reqVO.getCreateTime()) | ||
| 25 | + .orderByAsc(DeliveryExpressTemplateDO::getSort)); | ||
| 26 | + } | ||
| 27 | + | ||
| 28 | + default List<DeliveryExpressTemplateDO> selectList(DeliveryExpressTemplateExportReqVO reqVO) { | ||
| 29 | + return selectList(new LambdaQueryWrapperX<DeliveryExpressTemplateDO>() | ||
| 30 | + .likeIfPresent(DeliveryExpressTemplateDO::getName, reqVO.getName()) | ||
| 31 | + .eqIfPresent(DeliveryExpressTemplateDO::getChargeMode, reqVO.getChargeMode()) | ||
| 32 | + .betweenIfPresent(DeliveryExpressTemplateDO::getCreateTime, reqVO.getCreateTime()) | ||
| 33 | + .orderByAsc(DeliveryExpressTemplateDO::getSort)); | ||
| 34 | + } | ||
| 35 | + | ||
| 36 | + default DeliveryExpressTemplateDO selectByName(String name) { | ||
| 37 | + return selectOne(new LambdaQueryWrapper<DeliveryExpressTemplateDO>() | ||
| 38 | + .eq(DeliveryExpressTemplateDO::getName, name)); | ||
| 39 | + } | ||
| 11 | } | 40 | } |
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/delivery/DeliveryExpressTemplateService.java
0 → 100644
| 1 | +package cn.iocoder.yudao.module.trade.service.delivery; | ||
| 2 | + | ||
| 3 | +import java.util.*; | ||
| 4 | +import javax.validation.*; | ||
| 5 | +import cn.iocoder.yudao.framework.common.pojo.PageResult; | ||
| 6 | +import cn.iocoder.yudao.module.trade.controller.admin.delivery.vo.*; | ||
| 7 | +import cn.iocoder.yudao.module.trade.dal.dataobject.delivery.DeliveryExpressTemplateDO; | ||
| 8 | + | ||
| 9 | +/** | ||
| 10 | + * 快递运费模板 Service 接口 | ||
| 11 | + * | ||
| 12 | + * @author jason | ||
| 13 | + */ | ||
| 14 | +public interface DeliveryExpressTemplateService { | ||
| 15 | + | ||
| 16 | + /** | ||
| 17 | + * 创建快递运费模板 | ||
| 18 | + * | ||
| 19 | + * @param createReqVO 创建信息 | ||
| 20 | + * @return 编号 | ||
| 21 | + */ | ||
| 22 | + Long createDeliveryExpressTemplate(@Valid DeliveryExpressTemplateCreateReqVO createReqVO); | ||
| 23 | + | ||
| 24 | + /** | ||
| 25 | + * 更新快递运费模板 | ||
| 26 | + * | ||
| 27 | + * @param updateReqVO 更新信息 | ||
| 28 | + */ | ||
| 29 | + void updateDeliveryExpressTemplate(@Valid DeliveryExpressTemplateUpdateReqVO updateReqVO); | ||
| 30 | + | ||
| 31 | + /** | ||
| 32 | + * 删除快递运费模板 | ||
| 33 | + * | ||
| 34 | + * @param id 编号 | ||
| 35 | + */ | ||
| 36 | + void deleteDeliveryExpressTemplate(Long id); | ||
| 37 | + | ||
| 38 | + /** | ||
| 39 | + * 获得快递运费模板 | ||
| 40 | + * | ||
| 41 | + * @param id 编号 | ||
| 42 | + * @return 快递运费模板详情 | ||
| 43 | + */ | ||
| 44 | + DeliveryExpressTemplateRespVO getDeliveryExpressTemplate(Long id); | ||
| 45 | + | ||
| 46 | + /** | ||
| 47 | + * 获得快递运费模板列表 | ||
| 48 | + * | ||
| 49 | + * @param ids 编号 | ||
| 50 | + * @return 快递运费模板列表 | ||
| 51 | + */ | ||
| 52 | + List<DeliveryExpressTemplateDO> getDeliveryExpressTemplateList(Collection<Long> ids); | ||
| 53 | + | ||
| 54 | + /** | ||
| 55 | + * 获得快递运费模板分页 | ||
| 56 | + * | ||
| 57 | + * @param pageReqVO 分页查询 | ||
| 58 | + * @return 快递运费模板分页 | ||
| 59 | + */ | ||
| 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 | +} |
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/delivery/DeliveryExpressTemplateServiceImpl.java
0 → 100644
| 1 | +package cn.iocoder.yudao.module.trade.service.delivery; | ||
| 2 | + | ||
| 3 | +import cn.hutool.core.collection.CollUtil; | ||
| 4 | +import cn.iocoder.yudao.framework.common.pojo.PageResult; | ||
| 5 | +import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; | ||
| 6 | +import cn.iocoder.yudao.module.trade.controller.admin.delivery.vo.*; | ||
| 7 | +import cn.iocoder.yudao.module.trade.dal.dataobject.delivery.DeliveryExpressTemplateChargeDO; | ||
| 8 | +import cn.iocoder.yudao.module.trade.dal.dataobject.delivery.DeliveryExpressTemplateDO; | ||
| 9 | +import cn.iocoder.yudao.module.trade.dal.dataobject.delivery.DeliveryExpressTemplateFreeDO; | ||
| 10 | +import cn.iocoder.yudao.module.trade.dal.mysql.delivery.DeliveryExpressTemplateChargeMapper; | ||
| 11 | +import cn.iocoder.yudao.module.trade.dal.mysql.delivery.DeliveryExpressTemplateFreeMapper; | ||
| 12 | +import cn.iocoder.yudao.module.trade.dal.mysql.delivery.DeliveryExpressTemplateMapper; | ||
| 13 | +import org.springframework.stereotype.Service; | ||
| 14 | +import org.springframework.transaction.annotation.Transactional; | ||
| 15 | +import org.springframework.validation.annotation.Validated; | ||
| 16 | + | ||
| 17 | +import javax.annotation.Resource; | ||
| 18 | +import java.util.*; | ||
| 19 | + | ||
| 20 | +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; | ||
| 21 | +import static cn.iocoder.yudao.module.trade.convert.delivery.DeliveryExpressTemplateConvert.INSTANCE; | ||
| 22 | +import static cn.iocoder.yudao.module.trade.enums.ErrorCodeConstants.*; | ||
| 23 | + | ||
| 24 | +/** | ||
| 25 | + * 快递运费模板 Service 实现类 | ||
| 26 | + * | ||
| 27 | + * @author jason | ||
| 28 | + */ | ||
| 29 | +@Service | ||
| 30 | +@Validated | ||
| 31 | +public class DeliveryExpressTemplateServiceImpl implements DeliveryExpressTemplateService { | ||
| 32 | + | ||
| 33 | + @Resource | ||
| 34 | + private DeliveryExpressTemplateMapper expressTemplateMapper; | ||
| 35 | + @Resource | ||
| 36 | + private DeliveryExpressTemplateChargeMapper expressTemplateChargeMapper; | ||
| 37 | + @Resource | ||
| 38 | + private DeliveryExpressTemplateFreeMapper expressTemplateFreeMapper; | ||
| 39 | + @Resource | ||
| 40 | + private DeliveryExpressTemplateChargeMapper.BatchInsertMapper expressTemplateChargeBatchMapper; | ||
| 41 | + @Resource | ||
| 42 | + private DeliveryExpressTemplateFreeMapper.BatchInsertMapper expressTemplateFreeBatchMapper; | ||
| 43 | + | ||
| 44 | + @Override | ||
| 45 | + @Transactional(rollbackFor = Exception.class) | ||
| 46 | + public Long createDeliveryExpressTemplate(DeliveryExpressTemplateCreateReqVO createReqVO) { | ||
| 47 | + //校验模板名是否唯一 | ||
| 48 | + validateTemplateNameUnique(createReqVO.getName(), null); | ||
| 49 | + // 插入 | ||
| 50 | + DeliveryExpressTemplateDO deliveryExpressTemplate = INSTANCE.convert(createReqVO); | ||
| 51 | + expressTemplateMapper.insert(deliveryExpressTemplate); | ||
| 52 | + //插入运费模板计费表 | ||
| 53 | + if(CollUtil.isNotEmpty(createReqVO.getTemplateCharge())) { | ||
| 54 | + expressTemplateChargeBatchMapper.saveBatch( | ||
| 55 | + INSTANCE.convertTemplateChargeList(deliveryExpressTemplate.getId(), createReqVO.getChargeMode(), createReqVO.getTemplateCharge()) | ||
| 56 | + ); | ||
| 57 | + } | ||
| 58 | + //插入运费模板包邮表 | ||
| 59 | + if(CollUtil.isNotEmpty(createReqVO.getTemplateFree())) { | ||
| 60 | + expressTemplateFreeBatchMapper.saveBatch( | ||
| 61 | + INSTANCE.convertTemplateFreeList(deliveryExpressTemplate.getId(), createReqVO.getTemplateFree()) | ||
| 62 | + ); | ||
| 63 | + } | ||
| 64 | + return deliveryExpressTemplate.getId(); | ||
| 65 | + } | ||
| 66 | + | ||
| 67 | + @Override | ||
| 68 | + @Transactional(rollbackFor = Exception.class) | ||
| 69 | + public void updateDeliveryExpressTemplate(DeliveryExpressTemplateUpdateReqVO updateReqVO) { | ||
| 70 | + // 校验存在 | ||
| 71 | + validateDeliveryExpressTemplateExists(updateReqVO.getId()); | ||
| 72 | + //校验模板名是否唯一 | ||
| 73 | + validateTemplateNameUnique(updateReqVO.getName(), updateReqVO.getId()); | ||
| 74 | + | ||
| 75 | + //更新运费从表 | ||
| 76 | + updateExpressTemplateCharge(updateReqVO); | ||
| 77 | + //更新包邮从表 | ||
| 78 | + updateExpressTemplateFree(updateReqVO); | ||
| 79 | + //更新模板主表 | ||
| 80 | + DeliveryExpressTemplateDO updateObj = INSTANCE.convert(updateReqVO); | ||
| 81 | + expressTemplateMapper.updateById(updateObj); | ||
| 82 | + } | ||
| 83 | + | ||
| 84 | + private void updateExpressTemplateFree(DeliveryExpressTemplateUpdateReqVO updateReqVO) { | ||
| 85 | + List<DeliveryExpressTemplateFreeDO> oldFreeList = expressTemplateFreeMapper.selectListByTemplateId(updateReqVO.getId()); | ||
| 86 | + List<ExpressTemplateFreeUpdateVO> newFreeList = updateReqVO.getTemplateFree(); | ||
| 87 | + //新增包邮区域列表 | ||
| 88 | + List<DeliveryExpressTemplateFreeDO> addFreeList = new ArrayList<>(newFreeList.size()); | ||
| 89 | + //更新包邮区域列表 | ||
| 90 | + List<DeliveryExpressTemplateFreeDO> updateFreeList = new ArrayList<>(newFreeList.size()); | ||
| 91 | + for (ExpressTemplateFreeUpdateVO item : newFreeList) { | ||
| 92 | + if (Objects.nonNull(item.getId())) { | ||
| 93 | + updateFreeList.add(INSTANCE.convertTemplateFree(item)); | ||
| 94 | + }else{ | ||
| 95 | + item.setTemplateId(updateReqVO.getId()); | ||
| 96 | + addFreeList.add(INSTANCE.convertTemplateFree(item)); | ||
| 97 | + } | ||
| 98 | + } | ||
| 99 | + //删除的包邮区域id | ||
| 100 | + Set<Long> deleteFreeIds = CollectionUtils.convertSet(oldFreeList, DeliveryExpressTemplateFreeDO::getId); | ||
| 101 | + deleteFreeIds.removeAll(CollectionUtils.convertSet(updateFreeList, DeliveryExpressTemplateFreeDO::getId)); | ||
| 102 | + //新增 | ||
| 103 | + if (CollUtil.isNotEmpty(addFreeList)) { | ||
| 104 | + expressTemplateFreeBatchMapper.saveBatch(addFreeList); | ||
| 105 | + } | ||
| 106 | + //修改 | ||
| 107 | + if (CollUtil.isNotEmpty(updateFreeList)) { | ||
| 108 | + expressTemplateFreeBatchMapper.saveOrUpdateBatch(updateFreeList); | ||
| 109 | + } | ||
| 110 | + //删除 | ||
| 111 | + if (CollUtil.isNotEmpty(deleteFreeIds)) { | ||
| 112 | + expressTemplateFreeMapper.deleteBatchIds(deleteFreeIds); | ||
| 113 | + } | ||
| 114 | + } | ||
| 115 | + | ||
| 116 | + private void updateExpressTemplateCharge(DeliveryExpressTemplateUpdateReqVO updateReqVO) { | ||
| 117 | + List<DeliveryExpressTemplateChargeDO> oldChargeList = expressTemplateChargeMapper.selectListByTemplateId(updateReqVO.getId()); | ||
| 118 | + List<ExpressTemplateChargeUpdateVO> newChargeList = updateReqVO.getTemplateCharge(); | ||
| 119 | + //新增运费区域列表 | ||
| 120 | + List<DeliveryExpressTemplateChargeDO> addList = new ArrayList<>(newChargeList.size()); | ||
| 121 | + //更新运费区域列表 | ||
| 122 | + List<DeliveryExpressTemplateChargeDO> updateList = new ArrayList<>(newChargeList.size()); | ||
| 123 | + for (ExpressTemplateChargeUpdateVO item : newChargeList) { | ||
| 124 | + if (Objects.nonNull(item.getId())) { | ||
| 125 | + //计费模式以主表为准 | ||
| 126 | + item.setChargeMode(updateReqVO.getChargeMode()); | ||
| 127 | + updateList.add(INSTANCE.convertTemplateCharge(item)); | ||
| 128 | + }else{ | ||
| 129 | + item.setTemplateId(updateReqVO.getId()); | ||
| 130 | + item.setChargeMode(updateReqVO.getChargeMode()); | ||
| 131 | + addList.add(INSTANCE.convertTemplateCharge(item)); | ||
| 132 | + } | ||
| 133 | + } | ||
| 134 | + //删除的运费区域id | ||
| 135 | + Set<Long> deleteChargeIds = CollectionUtils.convertSet(oldChargeList, DeliveryExpressTemplateChargeDO::getId); | ||
| 136 | + deleteChargeIds.removeAll(CollectionUtils.convertSet(updateList, DeliveryExpressTemplateChargeDO::getId)); | ||
| 137 | + //新增 | ||
| 138 | + if (CollUtil.isNotEmpty(addList)) { | ||
| 139 | + expressTemplateChargeBatchMapper.saveBatch(addList); | ||
| 140 | + } | ||
| 141 | + //修改 | ||
| 142 | + if (CollUtil.isNotEmpty(updateList)) { | ||
| 143 | + expressTemplateChargeBatchMapper.saveOrUpdateBatch(updateList); | ||
| 144 | + } | ||
| 145 | + //删除 | ||
| 146 | + if (CollUtil.isNotEmpty(deleteChargeIds)) { | ||
| 147 | + expressTemplateChargeMapper.deleteBatchIds(deleteChargeIds); | ||
| 148 | + } | ||
| 149 | + } | ||
| 150 | + | ||
| 151 | + @Override | ||
| 152 | + @Transactional(rollbackFor = Exception.class) | ||
| 153 | + public void deleteDeliveryExpressTemplate(Long id) { | ||
| 154 | + // 校验存在 | ||
| 155 | + validateDeliveryExpressTemplateExists(id); | ||
| 156 | + // 删除主表 | ||
| 157 | + expressTemplateMapper.deleteById(id); | ||
| 158 | + // 删除运费从表 | ||
| 159 | + expressTemplateChargeMapper.deleteByTemplateId(id); | ||
| 160 | + // 删除包邮从表 | ||
| 161 | + expressTemplateFreeMapper.deleteByTemplateId(id); | ||
| 162 | + } | ||
| 163 | + | ||
| 164 | + /** | ||
| 165 | + * 校验运费模板名是否唯一 | ||
| 166 | + * @param name 模板名称 | ||
| 167 | + * @param id 运费模板编号, 可以为null | ||
| 168 | + */ | ||
| 169 | + private void validateTemplateNameUnique(String name, Long id) { | ||
| 170 | + DeliveryExpressTemplateDO template = expressTemplateMapper.selectByName(name); | ||
| 171 | + if (template == null) { | ||
| 172 | + return; | ||
| 173 | + } | ||
| 174 | + // 如果 id 为空 | ||
| 175 | + if (id == null) { | ||
| 176 | + throw exception(EXPRESS_TEMPLATE_NAME_DUPLICATE); | ||
| 177 | + } | ||
| 178 | + if (!template.getId().equals(id)) { | ||
| 179 | + throw exception(EXPRESS_TEMPLATE_NAME_DUPLICATE); | ||
| 180 | + } | ||
| 181 | + } | ||
| 182 | + | ||
| 183 | + private void validateDeliveryExpressTemplateExists(Long id) { | ||
| 184 | + if (expressTemplateMapper.selectById(id) == null) { | ||
| 185 | + throw exception(EXPRESS_TEMPLATE_NOT_EXISTS); | ||
| 186 | + } | ||
| 187 | + } | ||
| 188 | + | ||
| 189 | + @Override | ||
| 190 | + public DeliveryExpressTemplateRespVO getDeliveryExpressTemplate(Long id) { | ||
| 191 | + List<DeliveryExpressTemplateChargeDO> chargeList = expressTemplateChargeMapper.selectListByTemplateId(id); | ||
| 192 | + List<DeliveryExpressTemplateFreeDO> freeList = expressTemplateFreeMapper.selectListByTemplateId(id); | ||
| 193 | + DeliveryExpressTemplateDO template = expressTemplateMapper.selectById(id); | ||
| 194 | + return INSTANCE.convert(template, chargeList,freeList); | ||
| 195 | + } | ||
| 196 | + | ||
| 197 | + @Override | ||
| 198 | + public List<DeliveryExpressTemplateDO> getDeliveryExpressTemplateList(Collection<Long> ids) { | ||
| 199 | + return expressTemplateMapper.selectBatchIds(ids); | ||
| 200 | + } | ||
| 201 | + | ||
| 202 | + @Override | ||
| 203 | + public PageResult<DeliveryExpressTemplateDO> getDeliveryExpressTemplatePage(DeliveryExpressTemplatePageReqVO pageReqVO) { | ||
| 204 | + return expressTemplateMapper.selectPage(pageReqVO); | ||
| 205 | + } | ||
| 206 | + | ||
| 207 | + @Override | ||
| 208 | + public List<DeliveryExpressTemplateDO> getDeliveryExpressTemplateList(DeliveryExpressTemplateExportReqVO exportReqVO) { | ||
| 209 | + return expressTemplateMapper.selectList(exportReqVO); | ||
| 210 | + } | ||
| 211 | + | ||
| 212 | +} |
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/ip/AreaController.java
| @@ -16,6 +16,7 @@ import org.springframework.web.bind.annotation.RequestMapping; | @@ -16,6 +16,7 @@ import org.springframework.web.bind.annotation.RequestMapping; | ||
| 16 | import org.springframework.web.bind.annotation.RequestParam; | 16 | import org.springframework.web.bind.annotation.RequestParam; |
| 17 | import org.springframework.web.bind.annotation.RestController; | 17 | import org.springframework.web.bind.annotation.RestController; |
| 18 | 18 | ||
| 19 | +import java.util.Arrays; | ||
| 19 | import java.util.List; | 20 | import java.util.List; |
| 20 | 21 | ||
| 21 | import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; | 22 | import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; |
| @@ -28,10 +29,10 @@ public class AreaController { | @@ -28,10 +29,10 @@ public class AreaController { | ||
| 28 | 29 | ||
| 29 | @GetMapping("/tree") | 30 | @GetMapping("/tree") |
| 30 | @Operation(summary = "获得地区树") | 31 | @Operation(summary = "获得地区树") |
| 31 | - public CommonResult<List<AreaNodeRespVO>> getAreaTree() { | ||
| 32 | - Area area = AreaUtils.getArea(Area.ID_CHINA); | ||
| 33 | - Assert.notNull(area, "获取不到中国"); | ||
| 34 | - return success(AreaConvert.INSTANCE.convertList(area.getChildren())); | 32 | + public CommonResult<List<AreaNodeRespVO>> getAreaTree(Integer id) { |
| 33 | + Area area = AreaUtils.getArea(id); | ||
| 34 | + Assert.notNull(area, String.format("获取不到 id : %d的区域", id)); | ||
| 35 | + return success(AreaConvert.INSTANCE.convertList(Arrays.asList(area))); | ||
| 35 | } | 36 | } |
| 36 | 37 | ||
| 37 | @GetMapping("/get-by-ip") | 38 | @GetMapping("/get-by-ip") |