Commit 3da2eb89b2a05ae6741495e0e23ae756cf0ff8a2

Authored by jason
1 parent f129eab3

新增快递公司功能

Showing 15 changed files with 535 additions and 4 deletions
sql/mysql/optional/mall.sql
... ... @@ -433,7 +433,7 @@ CREATE TABLE `trade_delivery_pick_up_store_staff` (
433 433 DROP TABLE IF EXISTS `trade_delivery_express`;
434 434 CREATE TABLE `trade_delivery_express` (
435 435 `id` bigint NOT NULL AUTO_INCREMENT COMMENT '编号,自增',
436   - `code` varchar(64) NOT NULL COMMENT '快递公司 code',
  436 + `code` varchar(64) NOT NULL COMMENT '快递公司编号',
437 437 `name` varchar(64) NOT NULL COMMENT '快递公司名称',
438 438 `logo` varchar(256) COMMENT '快递公司logo',
439 439 `sort` int NOT NULL DEFAULT 0 COMMENT '排序',
... ... @@ -445,7 +445,7 @@ CREATE TABLE `trade_delivery_express` (
445 445 `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
446 446 `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号',
447 447 PRIMARY KEY (`id`) USING BTREE
448   -) ENGINE=InnoDB COMMENT='配送快递公司';
  448 +) ENGINE=InnoDB COMMENT='快递公司';
449 449  
450 450 SET FOREIGN_KEY_CHECKS = 1;
451 451  
... ... @@ -478,6 +478,15 @@ INSERT INTO `ruoyi-vue-pro`.`system_menu` (`id`, `name`, `permission`, `type`, `
478 478 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 (2027, 'Banner创建', 'market:banner:create', 3, 2, 2025, '', '', '', 0, b'1', b'1', '', '2022-08-01 14:56:14', '', '2022-08-01 14:56:14', b'0');
479 479 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 (2028, 'Banner更新', 'market:banner:update', 3, 3, 2025, '', '', '', 0, b'1', b'1', '', '2022-08-01 14:56:14', '', '2022-08-01 14:56:14', b'0');
480 480 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');
  481 +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');
  482 +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');
  483 +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');
  484 +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');
  485 +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');
  486 +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');
  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');
  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');
481 490  
482 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
483 492 (1,'打',2,'product_unit',0,'','','',1, NOW(),1, NOW(),0),
... ...
yudao-module-mall/yudao-module-trade-api/src/main/java/cn/iocoder/yudao/module/trade/enums/ErrorCodeConstants.java
... ... @@ -42,7 +42,11 @@ public interface ErrorCodeConstants {
42 42 ErrorCode AFTER_SALE_REFUND_FAIL_STATUS_NOT_WAIT_REFUND = new ErrorCode(1011000110, "退款失败,售后单状态不是【待退款】");
43 43 ErrorCode AFTER_SALE_CANCEL_FAIL_STATUS_NOT_APPLY_OR_AGREE = new ErrorCode(1011000111, "取消售后单失败,售后单状态不是【待审核】或【卖家同意】");
44 44  
45   - // ========== Cart 模块 1-011-001-000 ==========
  45 + // ========== Cart 模块 1-011-002-000 ==========
46 46 ErrorCode CARD_ITEM_NOT_FOUND = new ErrorCode(1011002000, "购物车项不存在");
47 47  
  48 + // ========== 物流配送模块 1-011-003-000 ==========
  49 + ErrorCode DELIVERY_EXPRESS_NOT_EXISTS = new ErrorCode(1011003000, "快递公司不存在");
  50 + ErrorCode EXPRESS_CODE_DUPLICATE = new ErrorCode(1011003001, "已经存在该编码的快递公司");
  51 +
48 52 }
... ...
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/delivery/DeliveryExpressController.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.DeliveryExpressConvert;
  5 +import cn.iocoder.yudao.module.trade.dal.dataobject.delivery.DeliveryExpressDO;
  6 +import cn.iocoder.yudao.module.trade.service.delivery.DeliveryExpressService;
  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.constraints.*;
  16 +import javax.validation.*;
  17 +import javax.servlet.http.*;
  18 +import java.util.*;
  19 +import java.io.IOException;
  20 +
  21 +import cn.iocoder.yudao.framework.common.pojo.PageResult;
  22 +import cn.iocoder.yudao.framework.common.pojo.CommonResult;
  23 +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
  24 +
  25 +import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
  26 +
  27 +import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog;
  28 +import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.*;
  29 +
  30 +@Tag(name = "管理后台 - 快递公司")
  31 +@RestController
  32 +@RequestMapping("/trade/delivery/express")
  33 +@Validated
  34 +public class DeliveryExpressController {
  35 +
  36 + @Resource
  37 + private DeliveryExpressService deliveryExpressService;
  38 +
  39 + @PostMapping("/create")
  40 + @Operation(summary = "创建快递公司")
  41 + @PreAuthorize("@ss.hasPermission('trade:delivery:express:create')")
  42 + public CommonResult<Long> createDeliveryExpress(@Valid @RequestBody DeliveryExpressCreateReqVO createReqVO) {
  43 + return success(deliveryExpressService.createDeliveryExpress(createReqVO));
  44 + }
  45 +
  46 + @PutMapping("/update")
  47 + @Operation(summary = "更新快递公司")
  48 + @PreAuthorize("@ss.hasPermission('trade:delivery:express:update')")
  49 + public CommonResult<Boolean> updateDeliveryExpress(@Valid @RequestBody DeliveryExpressUpdateReqVO updateReqVO) {
  50 + deliveryExpressService.updateDeliveryExpress(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:delete')")
  58 + public CommonResult<Boolean> deleteDeliveryExpress(@RequestParam("id") Long id) {
  59 + deliveryExpressService.deleteDeliveryExpress(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:query')")
  67 + public CommonResult<DeliveryExpressRespVO> getDeliveryExpress(@RequestParam("id") Long id) {
  68 + DeliveryExpressDO deliveryExpress = deliveryExpressService.getDeliveryExpress(id);
  69 + return success(DeliveryExpressConvert.INSTANCE.convert(deliveryExpress));
  70 + }
  71 +
  72 + @GetMapping("/page")
  73 + @Operation(summary = "获得快递公司分页")
  74 + @PreAuthorize("@ss.hasPermission('trade:delivery-express:query')")
  75 + public CommonResult<PageResult<DeliveryExpressRespVO>> getDeliveryExpressPage(@Valid DeliveryExpressPageReqVO pageVO) {
  76 + PageResult<DeliveryExpressDO> pageResult = deliveryExpressService.getDeliveryExpressPage(pageVO);
  77 + return success(DeliveryExpressConvert.INSTANCE.convertPage(pageResult));
  78 + }
  79 +
  80 + @GetMapping("/export-excel")
  81 + @Operation(summary = "导出快递公司 Excel")
  82 + @PreAuthorize("@ss.hasPermission('trade:delivery:express:export')")
  83 + @OperateLog(type = EXPORT)
  84 + public void exportDeliveryExpressExcel(@Valid DeliveryExpressExportReqVO exportReqVO,
  85 + HttpServletResponse response) throws IOException {
  86 + List<DeliveryExpressDO> list = deliveryExpressService.getDeliveryExpressList(exportReqVO);
  87 + // 导出 Excel
  88 + List<DeliveryExpressExcelVO> dataList = DeliveryExpressConvert.INSTANCE.convertList02(list);
  89 + ExcelUtils.write(response, "快递公司.xls", "数据", DeliveryExpressExcelVO.class, dataList);
  90 + }
  91 +
  92 +}
... ...
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/delivery/vo/DeliveryExpressBaseVO.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 java.time.LocalDateTime;
  7 +import java.time.LocalDateTime;
  8 +import javax.validation.constraints.*;
  9 +
  10 +/**
  11 +* 快递公司 Base VO,提供给添加、修改、详细的子 VO 使用
  12 +* 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成
  13 +*/
  14 +@Data
  15 +public class DeliveryExpressBaseVO {
  16 +
  17 + @Schema(description = "快递公司编号", required = true)
  18 + @NotNull(message = "快递公司编号不能为空")
  19 + private String code;
  20 +
  21 + @Schema(description = "快递公司名称", required = true, example = "李四")
  22 + @NotNull(message = "快递公司名称不能为空")
  23 + private String name;
  24 +
  25 + @Schema(description = "快递公司logo")
  26 + private String logo;
  27 +
  28 + @Schema(description = "排序", required = true)
  29 + @NotNull(message = "排序不能为空")
  30 + private Integer sort;
  31 +
  32 + @Schema(description = "状态(0正常 1停用)", required = true, example = "1")
  33 + @NotNull(message = "状态(0正常 1停用)不能为空")
  34 + private Integer status;
  35 +
  36 +}
... ...
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/delivery/vo/DeliveryExpressCreateReqVO.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 javax.validation.constraints.*;
  7 +
  8 +@Schema(description = "管理后台 - 快递公司创建 Request VO")
  9 +@Data
  10 +@EqualsAndHashCode(callSuper = true)
  11 +@ToString(callSuper = true)
  12 +public class DeliveryExpressCreateReqVO extends DeliveryExpressBaseVO {
  13 +
  14 +}
... ...
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/delivery/vo/DeliveryExpressExcelVO.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 DeliveryExpressExcelVO {
  15 +
  16 + @ExcelProperty("编号")
  17 + private Long id;
  18 +
  19 + @ExcelProperty("快递公司编号")
  20 + private String code;
  21 +
  22 + @ExcelProperty("快递公司名称")
  23 + private String name;
  24 +
  25 + @ExcelProperty("快递公司logo")
  26 + private String logo;
  27 +
  28 + @ExcelProperty("排序")
  29 + private Integer sort;
  30 +
  31 + @ExcelProperty("状态(0正常 1停用)")
  32 + private Byte status;
  33 +
  34 + @ExcelProperty("创建时间")
  35 + private LocalDateTime createTime;
  36 +
  37 +}
... ...
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/delivery/vo/DeliveryExpressExportReqVO.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 org.springframework.format.annotation.DateTimeFormat;
  6 +
  7 +import java.time.LocalDateTime;
  8 +
  9 +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
  10 +
  11 +@Schema(description = "管理后台 - 快递公司 Excel 导出 Request VO")
  12 +@Data
  13 +public class DeliveryExpressExportReqVO {
  14 +
  15 + @Schema(description = "快递公司编号")
  16 + private String code;
  17 +
  18 + @Schema(description = "快递公司名称", example = "李四")
  19 + private String name;
  20 +
  21 + @Schema(description = "状态(0正常 1停用)", example = "1")
  22 + private Integer status;
  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/DeliveryExpressPageReqVO.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 DeliveryExpressPageReqVO extends PageParam {
  17 +
  18 + @Schema(description = "快递公司编号")
  19 + private String code;
  20 +
  21 + @Schema(description = "快递公司名称", example = "李四")
  22 + private String name;
  23 +
  24 + @Schema(description = "状态(0正常 1停用)", example = "1")
  25 + private Integer status;
  26 +
  27 + @Schema(description = "创建时间")
  28 + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
  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/DeliveryExpressRespVO.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 DeliveryExpressRespVO extends DeliveryExpressBaseVO {
  12 +
  13 + @Schema(description = "编号", required = true, example = "6592")
  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/DeliveryExpressUpdateReqVO.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.constraints.*;
  7 +
  8 +@Schema(description = "管理后台 - 快递公司更新 Request VO")
  9 +@Data
  10 +@EqualsAndHashCode(callSuper = true)
  11 +@ToString(callSuper = true)
  12 +public class DeliveryExpressUpdateReqVO extends DeliveryExpressBaseVO {
  13 +
  14 + @Schema(description = "编号", required = true, example = "6592")
  15 + @NotNull(message = "编号不能为空")
  16 + private Long id;
  17 +
  18 +}
... ...
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/convert/delivery/DeliveryExpressConvert.java 0 → 100644
  1 +package cn.iocoder.yudao.module.trade.convert.delivery;
  2 +
  3 +import java.util.*;
  4 +
  5 +import cn.iocoder.yudao.framework.common.pojo.PageResult;
  6 +
  7 +import cn.iocoder.yudao.module.trade.controller.admin.delivery.vo.DeliveryExpressCreateReqVO;
  8 +import cn.iocoder.yudao.module.trade.controller.admin.delivery.vo.DeliveryExpressExcelVO;
  9 +import cn.iocoder.yudao.module.trade.controller.admin.delivery.vo.DeliveryExpressRespVO;
  10 +import cn.iocoder.yudao.module.trade.controller.admin.delivery.vo.DeliveryExpressUpdateReqVO;
  11 +import cn.iocoder.yudao.module.trade.dal.dataobject.delivery.DeliveryExpressDO;
  12 +import org.mapstruct.Mapper;
  13 +import org.mapstruct.factory.Mappers;
  14 +
  15 +
  16 +/**
  17 + * 快递公司 Convert
  18 + *
  19 + * @author 芋道源码
  20 + */
  21 +@Mapper
  22 +public interface DeliveryExpressConvert {
  23 +
  24 + DeliveryExpressConvert INSTANCE = Mappers.getMapper(DeliveryExpressConvert.class);
  25 +
  26 + DeliveryExpressDO convert(DeliveryExpressCreateReqVO bean);
  27 +
  28 + DeliveryExpressDO convert(DeliveryExpressUpdateReqVO bean);
  29 +
  30 + DeliveryExpressRespVO convert(DeliveryExpressDO bean);
  31 +
  32 + List<DeliveryExpressRespVO> convertList(List<DeliveryExpressDO> list);
  33 +
  34 + PageResult<DeliveryExpressRespVO> convertPage(PageResult<DeliveryExpressDO> page);
  35 +
  36 + List<DeliveryExpressExcelVO> convertList02(List<DeliveryExpressDO> list);
  37 +
  38 +}
... ...
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/dal/dataobject/delivery/DeliveryExpressDO.java
... ... @@ -8,7 +8,7 @@ import com.baomidou.mybatisplus.annotation.TableName;
8 8 import lombok.Data;
9 9  
10 10 /**
11   - * 配送快递公司 DO
  11 + * 快递公司 DO
12 12 *
13 13 * @author jason
14 14 */
... ...
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/dal/mysql/delivery/DeliveryExpressMapper.java
1 1 package cn.iocoder.yudao.module.trade.dal.mysql.delivery;
2 2  
  3 +import cn.iocoder.yudao.framework.common.pojo.PageResult;
3 4 import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
  5 +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
  6 +import cn.iocoder.yudao.module.trade.controller.admin.delivery.vo.DeliveryExpressExportReqVO;
  7 +import cn.iocoder.yudao.module.trade.controller.admin.delivery.vo.DeliveryExpressPageReqVO;
4 8 import cn.iocoder.yudao.module.trade.dal.dataobject.delivery.DeliveryExpressDO;
  9 +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
5 10 import org.apache.ibatis.annotations.Mapper;
6 11  
  12 +import java.util.List;
  13 +
7 14 @Mapper
8 15 public interface DeliveryExpressMapper extends BaseMapperX<DeliveryExpressDO> {
9 16  
  17 + default PageResult<DeliveryExpressDO> selectPage(DeliveryExpressPageReqVO reqVO) {
  18 + return selectPage(reqVO, new LambdaQueryWrapperX<DeliveryExpressDO>()
  19 + .likeIfPresent(DeliveryExpressDO::getCode, reqVO.getCode())
  20 + .likeIfPresent(DeliveryExpressDO::getName, reqVO.getName())
  21 + .eqIfPresent(DeliveryExpressDO::getStatus, reqVO.getStatus())
  22 + .betweenIfPresent(DeliveryExpressDO::getCreateTime, reqVO.getCreateTime())
  23 + .orderByAsc(DeliveryExpressDO::getSort));
  24 + }
  25 +
  26 + default List<DeliveryExpressDO> selectList(DeliveryExpressExportReqVO reqVO) {
  27 + return selectList(new LambdaQueryWrapperX<DeliveryExpressDO>()
  28 + .likeIfPresent(DeliveryExpressDO::getCode, reqVO.getCode())
  29 + .likeIfPresent(DeliveryExpressDO::getName, reqVO.getName())
  30 + .eqIfPresent(DeliveryExpressDO::getStatus, reqVO.getStatus())
  31 + .betweenIfPresent(DeliveryExpressDO::getCreateTime, reqVO.getCreateTime())
  32 + .orderByAsc(DeliveryExpressDO::getSort));
  33 + }
  34 +
  35 + default DeliveryExpressDO selectByCode(String code) {
  36 + return selectOne(new LambdaQueryWrapper<DeliveryExpressDO>()
  37 + .eq(DeliveryExpressDO::getCode, code));
  38 + }
10 39 }
11 40  
12 41  
... ...
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/delivery/DeliveryExpressService.java 0 → 100644
  1 +package cn.iocoder.yudao.module.trade.service.delivery;
  2 +
  3 +import java.util.*;
  4 +import javax.validation.*;
  5 +
  6 +import cn.iocoder.yudao.framework.common.pojo.PageResult;
  7 +import cn.iocoder.yudao.module.trade.controller.admin.delivery.vo.DeliveryExpressCreateReqVO;
  8 +import cn.iocoder.yudao.module.trade.controller.admin.delivery.vo.DeliveryExpressExportReqVO;
  9 +import cn.iocoder.yudao.module.trade.controller.admin.delivery.vo.DeliveryExpressPageReqVO;
  10 +import cn.iocoder.yudao.module.trade.controller.admin.delivery.vo.DeliveryExpressUpdateReqVO;
  11 +import cn.iocoder.yudao.module.trade.dal.dataobject.delivery.DeliveryExpressDO;
  12 +
  13 +/**
  14 + * 快递公司 Service 接口
  15 + *
  16 + * @author jason
  17 + */
  18 +public interface DeliveryExpressService {
  19 +
  20 + /**
  21 + * 创建快递公司
  22 + *
  23 + * @param createReqVO 创建信息
  24 + * @return 编号
  25 + */
  26 + Long createDeliveryExpress(@Valid DeliveryExpressCreateReqVO createReqVO);
  27 +
  28 + /**
  29 + * 更新快递公司
  30 + *
  31 + * @param updateReqVO 更新信息
  32 + */
  33 + void updateDeliveryExpress(@Valid DeliveryExpressUpdateReqVO updateReqVO);
  34 +
  35 + /**
  36 + * 删除快递公司
  37 + *
  38 + * @param id 编号
  39 + */
  40 + void deleteDeliveryExpress(Long id);
  41 +
  42 + /**
  43 + * 获得快递公司
  44 + *
  45 + * @param id 编号
  46 + * @return 快递公司
  47 + */
  48 + DeliveryExpressDO getDeliveryExpress(Long id);
  49 +
  50 + /**
  51 + * 获得快递公司列表
  52 + *
  53 + * @param ids 编号
  54 + * @return 快递公司列表
  55 + */
  56 + List<DeliveryExpressDO> getDeliveryExpressList(Collection<Long> ids);
  57 +
  58 + /**
  59 + * 获得快递公司分页
  60 + *
  61 + * @param pageReqVO 分页查询
  62 + * @return 快递公司分页
  63 + */
  64 + PageResult<DeliveryExpressDO> getDeliveryExpressPage(DeliveryExpressPageReqVO pageReqVO);
  65 +
  66 + /**
  67 + * 获得快递公司列表, 用于 Excel 导出
  68 + *
  69 + * @param exportReqVO 查询条件
  70 + * @return 快递公司列表
  71 + */
  72 + List<DeliveryExpressDO> getDeliveryExpressList(DeliveryExpressExportReqVO exportReqVO);
  73 +
  74 +}
... ...
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/delivery/DeliveryExpressServiceImpl.java 0 → 100644
  1 +package cn.iocoder.yudao.module.trade.service.delivery;
  2 +
  3 +import cn.iocoder.yudao.framework.common.pojo.PageResult;
  4 +import cn.iocoder.yudao.module.trade.controller.admin.delivery.vo.DeliveryExpressCreateReqVO;
  5 +import cn.iocoder.yudao.module.trade.controller.admin.delivery.vo.DeliveryExpressExportReqVO;
  6 +import cn.iocoder.yudao.module.trade.controller.admin.delivery.vo.DeliveryExpressPageReqVO;
  7 +import cn.iocoder.yudao.module.trade.controller.admin.delivery.vo.DeliveryExpressUpdateReqVO;
  8 +import cn.iocoder.yudao.module.trade.convert.delivery.DeliveryExpressConvert;
  9 +import cn.iocoder.yudao.module.trade.dal.dataobject.delivery.DeliveryExpressDO;
  10 +import cn.iocoder.yudao.module.trade.dal.mysql.delivery.DeliveryExpressMapper;
  11 +import org.springframework.stereotype.Service;
  12 +import javax.annotation.Resource;
  13 +import org.springframework.validation.annotation.Validated;
  14 +
  15 +import java.util.*;
  16 +
  17 +
  18 +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
  19 +import static cn.iocoder.yudao.module.trade.enums.ErrorCodeConstants.*;
  20 +
  21 +/**
  22 + * 快递公司 Service 实现类
  23 + *
  24 + * @author jason
  25 + */
  26 +@Service
  27 +@Validated
  28 +public class DeliveryExpressServiceImpl implements DeliveryExpressService {
  29 +
  30 + @Resource
  31 + private DeliveryExpressMapper deliveryExpressMapper;
  32 +
  33 + @Override
  34 + public Long createDeliveryExpress(DeliveryExpressCreateReqVO createReqVO) {
  35 + //校验编码是否唯一
  36 + validateExpressCodeUnique(createReqVO.getCode(), null);
  37 + // 插入
  38 + DeliveryExpressDO deliveryExpress = DeliveryExpressConvert.INSTANCE.convert(createReqVO);
  39 + deliveryExpressMapper.insert(deliveryExpress);
  40 + // 返回
  41 + return deliveryExpress.getId();
  42 + }
  43 +
  44 + @Override
  45 + public void updateDeliveryExpress(DeliveryExpressUpdateReqVO updateReqVO) {
  46 + // 校验存在
  47 + validateDeliveryExpressExists(updateReqVO.getId());
  48 + //校验编码是否唯一
  49 + validateExpressCodeUnique(updateReqVO.getCode(), updateReqVO.getId());
  50 + // 更新
  51 + DeliveryExpressDO updateObj = DeliveryExpressConvert.INSTANCE.convert(updateReqVO);
  52 + deliveryExpressMapper.updateById(updateObj);
  53 + }
  54 +
  55 + @Override
  56 + public void deleteDeliveryExpress(Long id) {
  57 + // 校验存在
  58 + validateDeliveryExpressExists(id);
  59 + // 删除
  60 + deliveryExpressMapper.deleteById(id);
  61 + }
  62 +
  63 + private void validateExpressCodeUnique(String code, Long id) {
  64 + DeliveryExpressDO express = deliveryExpressMapper.selectByCode(code);
  65 + if (express == null) {
  66 + return;
  67 + }
  68 + // 如果 id 为空,说明不用比较是否为相同 id 的快递公司
  69 + if (id == null) {
  70 + throw exception(EXPRESS_CODE_DUPLICATE);
  71 + }
  72 + if (!express.getId().equals(id)) {
  73 + throw exception(EXPRESS_CODE_DUPLICATE);
  74 + }
  75 + }
  76 + private void validateDeliveryExpressExists(Long id) {
  77 + if (deliveryExpressMapper.selectById(id) == null) {
  78 + throw exception(DELIVERY_EXPRESS_NOT_EXISTS);
  79 + }
  80 + }
  81 +
  82 + @Override
  83 + public DeliveryExpressDO getDeliveryExpress(Long id) {
  84 + return deliveryExpressMapper.selectById(id);
  85 + }
  86 +
  87 + @Override
  88 + public List<DeliveryExpressDO> getDeliveryExpressList(Collection<Long> ids) {
  89 + return deliveryExpressMapper.selectBatchIds(ids);
  90 + }
  91 +
  92 + @Override
  93 + public PageResult<DeliveryExpressDO> getDeliveryExpressPage(DeliveryExpressPageReqVO pageReqVO) {
  94 + return deliveryExpressMapper.selectPage(pageReqVO);
  95 + }
  96 +
  97 + @Override
  98 + public List<DeliveryExpressDO> getDeliveryExpressList(DeliveryExpressExportReqVO exportReqVO) {
  99 + return deliveryExpressMapper.selectList(exportReqVO);
  100 + }
  101 +
  102 +}
... ...