Commit f217ba0807a29102febfcb140ce5e2cb0bc17adf
1 parent
97fc4027
售后:
1、完善整个流程的实现
Showing
18 changed files
with
232 additions
and
158 deletions
yudao-module-mall/yudao-module-trade-api/src/main/java/cn/iocoder/yudao/module/trade/enums/ErrorCodeConstants.java
| @@ -45,7 +45,8 @@ public interface ErrorCodeConstants { | @@ -45,7 +45,8 @@ public interface ErrorCodeConstants { | ||
| 45 | ErrorCode AFTER_SALE_DELIVERY_FAIL_STATUS_NOT_SELLER_AGREE = new ErrorCode(1011000108, "退货失败,售后单状态不处于【待买家退货】"); | 45 | ErrorCode AFTER_SALE_DELIVERY_FAIL_STATUS_NOT_SELLER_AGREE = new ErrorCode(1011000108, "退货失败,售后单状态不处于【待买家退货】"); |
| 46 | ErrorCode AFTER_SALE_CONFIRM_FAIL_STATUS_NOT_BUYER_DELIVERY = new ErrorCode(1011000109, "确认收货失败,售后单状态不处于【待确认收货】"); | 46 | ErrorCode AFTER_SALE_CONFIRM_FAIL_STATUS_NOT_BUYER_DELIVERY = new ErrorCode(1011000109, "确认收货失败,售后单状态不处于【待确认收货】"); |
| 47 | ErrorCode AFTER_SALE_REFUND_FAIL_STATUS_NOT_WAIT_REFUND = new ErrorCode(1011000110, "退款失败,售后单状态不是【待退款】"); | 47 | ErrorCode AFTER_SALE_REFUND_FAIL_STATUS_NOT_WAIT_REFUND = new ErrorCode(1011000110, "退款失败,售后单状态不是【待退款】"); |
| 48 | - ErrorCode AFTER_SALE_CANCEL_FAIL_STATUS_NOT_APPLY_OR_AGREE = new ErrorCode(1011000111, "取消售后单失败,售后单状态不是【待审核】或【卖家同意】"); | 48 | + ErrorCode AFTER_SALE_CANCEL_FAIL_STATUS_NOT_APPLY_OR_AGREE_OR_BUYER_DELIVERY = |
| 49 | + new ErrorCode(1011000111, "取消售后单失败,售后单状态不是【待审核】或【卖家同意】或【商家待收货】"); | ||
| 49 | 50 | ||
| 50 | // ========== Cart 模块 1011002000 ========== | 51 | // ========== Cart 模块 1011002000 ========== |
| 51 | ErrorCode CARD_ITEM_NOT_FOUND = new ErrorCode(1011002000, "购物车项不存在"); | 52 | ErrorCode CARD_ITEM_NOT_FOUND = new ErrorCode(1011002000, "购物车项不存在"); |
yudao-module-mall/yudao-module-trade-api/src/main/java/cn/iocoder/yudao/module/trade/enums/aftersale/TradeAfterSaleStatusEnum.java
| @@ -22,35 +22,35 @@ public enum TradeAfterSaleStatusEnum implements IntArrayValuable { | @@ -22,35 +22,35 @@ public enum TradeAfterSaleStatusEnum implements IntArrayValuable { | ||
| 22 | /** | 22 | /** |
| 23 | * 【申请售后】 | 23 | * 【申请售后】 |
| 24 | */ | 24 | */ |
| 25 | - APPLY(10,"申请中", "会员申请退款"), | 25 | + APPLY(10,"申请中", "会员申请退款"), // 有赞的状态提示:退款申请待商家处理 |
| 26 | /** | 26 | /** |
| 27 | * 卖家通过售后;【商品待退货】 | 27 | * 卖家通过售后;【商品待退货】 |
| 28 | */ | 28 | */ |
| 29 | - SELLER_AGREE(20, "卖家通过", "商家同意退款"), | 29 | + SELLER_AGREE(20, "卖家通过", "商家同意退款"), // 有赞的状态提示:请退货并填写物流信息 |
| 30 | /** | 30 | /** |
| 31 | * 买家已退货,等待卖家收货;【商家待收货】 | 31 | * 买家已退货,等待卖家收货;【商家待收货】 |
| 32 | */ | 32 | */ |
| 33 | - BUYER_DELIVERY(30,"待卖家收货", "会员填写退货物流信息"), | 33 | + BUYER_DELIVERY(30,"待卖家收货", "会员填写退货物流信息"), // 有赞的状态提示:退货退款申请待商家处理 |
| 34 | /** | 34 | /** |
| 35 | * 卖家已收货,等待平台退款;等待退款【等待退款】 | 35 | * 卖家已收货,等待平台退款;等待退款【等待退款】 |
| 36 | */ | 36 | */ |
| 37 | - WAIT_REFUND(40, "等待平台退款", "商家收货"), | 37 | + WAIT_REFUND(40, "等待平台退款", "商家收货"), // 有赞的状态提示:无(有赞无该状态) |
| 38 | /** | 38 | /** |
| 39 | * 完成退款【退款成功】 | 39 | * 完成退款【退款成功】 |
| 40 | */ | 40 | */ |
| 41 | - COMPLETE(50, "完成", "商家确认退款"), | 41 | + COMPLETE(50, "完成", "商家确认退款"), // 有赞的状态提示:退款成功 |
| 42 | /** | 42 | /** |
| 43 | * 【买家取消】 | 43 | * 【买家取消】 |
| 44 | */ | 44 | */ |
| 45 | - BUYER_CANCEL(61, "买家取消售后", "会员取消退款"), | 45 | + BUYER_CANCEL(61, "买家取消售后", "会员取消退款"), // 有赞的状态提示:退款关闭 |
| 46 | /** | 46 | /** |
| 47 | * 卖家拒绝售后;商家拒绝【商家拒绝】 | 47 | * 卖家拒绝售后;商家拒绝【商家拒绝】 |
| 48 | */ | 48 | */ |
| 49 | - SELLER_DISAGREE(62,"卖家拒绝", "商家拒绝退款"), | 49 | + SELLER_DISAGREE(62,"卖家拒绝", "商家拒绝退款"), // 有赞的状态提示:商家不同意退款申请 |
| 50 | /** | 50 | /** |
| 51 | * 卖家拒绝收货,终止售后;【商家拒收货】 | 51 | * 卖家拒绝收货,终止售后;【商家拒收货】 |
| 52 | */ | 52 | */ |
| 53 | - SELLER_REFUSE(63,"卖家拒绝收货", "商家拒绝收货"), | 53 | + SELLER_REFUSE(63,"卖家拒绝收货", "商家拒绝收货"), // 有赞的状态提示:商家拒绝收货,不同意退款 |
| 54 | ; | 54 | ; |
| 55 | 55 | ||
| 56 | public static final int[] ARRAYS = Arrays.stream(values()).mapToInt(TradeAfterSaleStatusEnum::getStatus).toArray(); | 56 | public static final int[] ARRAYS = Arrays.stream(values()).mapToInt(TradeAfterSaleStatusEnum::getStatus).toArray(); |
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/aftersale/TradeAfterSaleController.http
| @@ -2,3 +2,32 @@ | @@ -2,3 +2,32 @@ | ||
| 2 | GET {{baseUrl}}/trade/after-sale/page?pageNo=1&pageSize=10 | 2 | GET {{baseUrl}}/trade/after-sale/page?pageNo=1&pageSize=10 |
| 3 | Authorization: Bearer {{token}} | 3 | Authorization: Bearer {{token}} |
| 4 | tenant-id: {{adminTenentId}} | 4 | tenant-id: {{adminTenentId}} |
| 5 | + | ||
| 6 | +### 同意售后 => 成功 | ||
| 7 | +PUT {{baseUrl}}/trade/after-sale/agree?id=7 | ||
| 8 | +Authorization: Bearer {{token}} | ||
| 9 | +tenant-id: {{adminTenentId}} | ||
| 10 | +Content-Type: application/json | ||
| 11 | + | ||
| 12 | +### 拒绝售后 => 成功 | ||
| 13 | +PUT {{baseUrl}}/trade/after-sale/disagree | ||
| 14 | +Authorization: Bearer {{token}} | ||
| 15 | +tenant-id: {{adminTenentId}} | ||
| 16 | +Content-Type: application/json | ||
| 17 | + | ||
| 18 | +{ | ||
| 19 | + "id": 6, | ||
| 20 | + "auditReason": "阿巴巴" | ||
| 21 | +} | ||
| 22 | + | ||
| 23 | +### 确认退款 => 成功 | ||
| 24 | +PUT {{baseUrl}}/trade/after-sale/refund?id=6 | ||
| 25 | +Authorization: Bearer {{token}} | ||
| 26 | +tenant-id: {{adminTenentId}} | ||
| 27 | +Content-Type: application/json | ||
| 28 | + | ||
| 29 | +### 确认收货 => 成功 | ||
| 30 | +PUT {{baseUrl}}/trade/after-sale/receive?id=7 | ||
| 31 | +Authorization: Bearer {{token}} | ||
| 32 | +tenant-id: {{adminTenentId}} | ||
| 33 | +Content-Type: application/json |
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/aftersale/TradeAfterSaleController.java
| @@ -3,10 +3,10 @@ package cn.iocoder.yudao.module.trade.controller.admin.aftersale; | @@ -3,10 +3,10 @@ package cn.iocoder.yudao.module.trade.controller.admin.aftersale; | ||
| 3 | import cn.hutool.core.collection.CollUtil; | 3 | import cn.hutool.core.collection.CollUtil; |
| 4 | import cn.iocoder.yudao.framework.common.pojo.CommonResult; | 4 | import cn.iocoder.yudao.framework.common.pojo.CommonResult; |
| 5 | import cn.iocoder.yudao.framework.common.pojo.PageResult; | 5 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 6 | +import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; | ||
| 6 | import cn.iocoder.yudao.module.member.api.user.MemberUserApi; | 7 | import cn.iocoder.yudao.module.member.api.user.MemberUserApi; |
| 7 | import cn.iocoder.yudao.module.member.api.user.dto.MemberUserRespDTO; | 8 | import cn.iocoder.yudao.module.member.api.user.dto.MemberUserRespDTO; |
| 8 | -import cn.iocoder.yudao.module.product.api.property.ProductPropertyValueApi; | ||
| 9 | -import cn.iocoder.yudao.module.product.api.property.dto.ProductPropertyValueDetailRespDTO; | 9 | +import cn.iocoder.yudao.module.pay.api.notify.dto.PayRefundNotifyReqDTO; |
| 10 | import cn.iocoder.yudao.module.trade.controller.admin.aftersale.vo.TradeAfterSaleDisagreeReqVO; | 10 | import cn.iocoder.yudao.module.trade.controller.admin.aftersale.vo.TradeAfterSaleDisagreeReqVO; |
| 11 | import cn.iocoder.yudao.module.trade.controller.admin.aftersale.vo.TradeAfterSalePageReqVO; | 11 | import cn.iocoder.yudao.module.trade.controller.admin.aftersale.vo.TradeAfterSalePageReqVO; |
| 12 | import cn.iocoder.yudao.module.trade.controller.admin.aftersale.vo.TradeAfterSaleRefuseReqVO; | 12 | import cn.iocoder.yudao.module.trade.controller.admin.aftersale.vo.TradeAfterSaleRefuseReqVO; |
| @@ -23,8 +23,8 @@ import org.springframework.validation.annotation.Validated; | @@ -23,8 +23,8 @@ import org.springframework.validation.annotation.Validated; | ||
| 23 | import org.springframework.web.bind.annotation.*; | 23 | import org.springframework.web.bind.annotation.*; |
| 24 | 24 | ||
| 25 | import javax.annotation.Resource; | 25 | import javax.annotation.Resource; |
| 26 | +import javax.annotation.security.PermitAll; | ||
| 26 | import javax.validation.Valid; | 27 | import javax.validation.Valid; |
| 27 | -import java.util.List; | ||
| 28 | import java.util.Map; | 28 | import java.util.Map; |
| 29 | 29 | ||
| 30 | import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; | 30 | import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; |
| @@ -32,7 +32,7 @@ import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils. | @@ -32,7 +32,7 @@ import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils. | ||
| 32 | import static cn.iocoder.yudao.framework.common.util.servlet.ServletUtils.getClientIP; | 32 | import static cn.iocoder.yudao.framework.common.util.servlet.ServletUtils.getClientIP; |
| 33 | import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId; | 33 | import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId; |
| 34 | 34 | ||
| 35 | -@Tag(name = "管理后台 - 交易售后") | 35 | +@Tag(name = "管理后台 - 售后订单") |
| 36 | @RestController | 36 | @RestController |
| 37 | @RequestMapping("/trade/after-sale") | 37 | @RequestMapping("/trade/after-sale") |
| 38 | @Validated | 38 | @Validated |
| @@ -44,11 +44,9 @@ public class TradeAfterSaleController { | @@ -44,11 +44,9 @@ public class TradeAfterSaleController { | ||
| 44 | 44 | ||
| 45 | @Resource | 45 | @Resource |
| 46 | private MemberUserApi memberUserApi; | 46 | private MemberUserApi memberUserApi; |
| 47 | - @Resource | ||
| 48 | - private ProductPropertyValueApi productPropertyValueApi; | ||
| 49 | 47 | ||
| 50 | @GetMapping("/page") | 48 | @GetMapping("/page") |
| 51 | - @Operation(summary = "获得交易售后分页") | 49 | + @Operation(summary = "获得售后订单分页") |
| 52 | @PreAuthorize("@ss.hasPermission('trade:after-sale:query')") | 50 | @PreAuthorize("@ss.hasPermission('trade:after-sale:query')") |
| 53 | public CommonResult<PageResult<TradeAfterSaleRespPageItemVO>> getAfterSalePage(@Valid TradeAfterSalePageReqVO pageVO) { | 51 | public CommonResult<PageResult<TradeAfterSaleRespPageItemVO>> getAfterSalePage(@Valid TradeAfterSalePageReqVO pageVO) { |
| 54 | // 查询售后 | 52 | // 查询售后 |
| @@ -57,13 +55,10 @@ public class TradeAfterSaleController { | @@ -57,13 +55,10 @@ public class TradeAfterSaleController { | ||
| 57 | return success(PageResult.empty()); | 55 | return success(PageResult.empty()); |
| 58 | } | 56 | } |
| 59 | 57 | ||
| 60 | - // 查询商品属性 | ||
| 61 | - List<ProductPropertyValueDetailRespDTO> propertyValueDetails = productPropertyValueApi | ||
| 62 | - .getPropertyValueDetailList(TradeAfterSaleConvert.INSTANCE.convertPropertyValueIds(pageResult.getList())); | ||
| 63 | // 查询会员 | 58 | // 查询会员 |
| 64 | Map<Long, MemberUserRespDTO> memberUsers = memberUserApi.getUserMap( | 59 | Map<Long, MemberUserRespDTO> memberUsers = memberUserApi.getUserMap( |
| 65 | convertSet(pageResult.getList(), TradeAfterSaleDO::getUserId)); | 60 | convertSet(pageResult.getList(), TradeAfterSaleDO::getUserId)); |
| 66 | - return success(TradeAfterSaleConvert.INSTANCE.convertPage(pageResult, memberUsers, propertyValueDetails)); | 61 | + return success(TradeAfterSaleConvert.INSTANCE.convertPage(pageResult, memberUsers)); |
| 67 | } | 62 | } |
| 68 | 63 | ||
| 69 | @PutMapping("/agree") | 64 | @PutMapping("/agree") |
| @@ -101,7 +96,7 @@ public class TradeAfterSaleController { | @@ -101,7 +96,7 @@ public class TradeAfterSaleController { | ||
| 101 | return success(true); | 96 | return success(true); |
| 102 | } | 97 | } |
| 103 | 98 | ||
| 104 | - @PostMapping("/refund") | 99 | + @PutMapping("/refund") |
| 105 | @Operation(summary = "确认退款") | 100 | @Operation(summary = "确认退款") |
| 106 | @Parameter(name = "id", description = "售后编号", required = true, example = "1") | 101 | @Parameter(name = "id", description = "售后编号", required = true, example = "1") |
| 107 | @PreAuthorize("@ss.hasPermission('trade:after-sale:refund')") | 102 | @PreAuthorize("@ss.hasPermission('trade:after-sale:refund')") |
| @@ -110,4 +105,15 @@ public class TradeAfterSaleController { | @@ -110,4 +105,15 @@ public class TradeAfterSaleController { | ||
| 110 | return success(true); | 105 | return success(true); |
| 111 | } | 106 | } |
| 112 | 107 | ||
| 108 | + @PostMapping("/update-refunded") | ||
| 109 | + @Operation(summary = "更新售后订单为已退款") // 由 pay-module 支付服务,进行回调,可见 PayNotifyJob | ||
| 110 | + @PermitAll // 无需登录,安全由 PayDemoOrderService 内部校验实现 | ||
| 111 | + @OperateLog(enable = false) // 禁用操作日志,因为没有操作人 | ||
| 112 | + public CommonResult<Boolean> updateAfterRefund(@RequestBody PayRefundNotifyReqDTO notifyReqDTO) { | ||
| 113 | + // 目前业务逻辑,不需要做任何事情 | ||
| 114 | + // 当然,退款会有小概率会失败的情况,可以监控失败状态,进行告警 | ||
| 115 | + log.info("[updateAfterRefund][notifyReqDTO({})]", notifyReqDTO); | ||
| 116 | + return success(true); | ||
| 117 | + } | ||
| 118 | + | ||
| 113 | } | 119 | } |
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/app/aftersale/AppTradeAfterSaleController.java
| 1 | package cn.iocoder.yudao.module.trade.controller.app.aftersale; | 1 | package cn.iocoder.yudao.module.trade.controller.app.aftersale; |
| 2 | 2 | ||
| 3 | import cn.iocoder.yudao.framework.common.pojo.CommonResult; | 3 | import cn.iocoder.yudao.framework.common.pojo.CommonResult; |
| 4 | +import cn.iocoder.yudao.framework.common.pojo.PageParam; | ||
| 4 | import cn.iocoder.yudao.framework.common.pojo.PageResult; | 5 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 5 | import cn.iocoder.yudao.module.trade.controller.app.aftersale.vo.AppTradeAfterSaleCreateReqVO; | 6 | import cn.iocoder.yudao.module.trade.controller.app.aftersale.vo.AppTradeAfterSaleCreateReqVO; |
| 6 | import cn.iocoder.yudao.module.trade.controller.app.aftersale.vo.AppTradeAfterSaleDeliveryReqVO; | 7 | import cn.iocoder.yudao.module.trade.controller.app.aftersale.vo.AppTradeAfterSaleDeliveryReqVO; |
| 7 | -import cn.iocoder.yudao.module.trade.controller.app.aftersale.vo.AppTradeAfterSalePageItemRespVO; | ||
| 8 | -import cn.iocoder.yudao.module.trade.controller.app.base.property.AppProductPropertyValueDetailRespVO; | 8 | +import cn.iocoder.yudao.module.trade.controller.app.aftersale.vo.AppTradeAfterSaleRespVO; |
| 9 | +import cn.iocoder.yudao.module.trade.convert.aftersale.TradeAfterSaleConvert; | ||
| 9 | import cn.iocoder.yudao.module.trade.enums.aftersale.AfterSaleOperateTypeEnum; | 10 | import cn.iocoder.yudao.module.trade.enums.aftersale.AfterSaleOperateTypeEnum; |
| 10 | import cn.iocoder.yudao.module.trade.enums.aftersale.TradeAfterSaleWayEnum; | 11 | import cn.iocoder.yudao.module.trade.enums.aftersale.TradeAfterSaleWayEnum; |
| 11 | import cn.iocoder.yudao.module.trade.framework.aftersalelog.core.annotations.AfterSaleLog; | 12 | import cn.iocoder.yudao.module.trade.framework.aftersalelog.core.annotations.AfterSaleLog; |
| @@ -18,7 +19,6 @@ import org.springframework.validation.annotation.Validated; | @@ -18,7 +19,6 @@ import org.springframework.validation.annotation.Validated; | ||
| 18 | import org.springframework.web.bind.annotation.*; | 19 | import org.springframework.web.bind.annotation.*; |
| 19 | 20 | ||
| 20 | import javax.annotation.Resource; | 21 | import javax.annotation.Resource; |
| 21 | -import java.time.LocalDateTime; | ||
| 22 | import java.util.Arrays; | 22 | import java.util.Arrays; |
| 23 | import java.util.List; | 23 | import java.util.List; |
| 24 | import java.util.Objects; | 24 | import java.util.Objects; |
| @@ -36,49 +36,18 @@ public class AppTradeAfterSaleController { | @@ -36,49 +36,18 @@ public class AppTradeAfterSaleController { | ||
| 36 | @Resource | 36 | @Resource |
| 37 | private TradeAfterSaleService afterSaleService; | 37 | private TradeAfterSaleService afterSaleService; |
| 38 | 38 | ||
| 39 | - // TODO 芋艿:待实现 | ||
| 40 | @GetMapping(value = "/page") | 39 | @GetMapping(value = "/page") |
| 41 | @Operation(summary = "获得售后分页") | 40 | @Operation(summary = "获得售后分页") |
| 42 | - public CommonResult<PageResult<AppTradeAfterSalePageItemRespVO>> getAfterSalePage() { | ||
| 43 | - AppTradeAfterSalePageItemRespVO vo = new AppTradeAfterSalePageItemRespVO(); | ||
| 44 | - vo.setId(1L); | ||
| 45 | - vo.setNo("1146347329394184195"); | ||
| 46 | - vo.setStatus(61); | ||
| 47 | - vo.setWay(10); | ||
| 48 | - vo.setType(10); | ||
| 49 | - vo.setApplyReason("不想要了"); | ||
| 50 | - vo.setApplyDescription("这个商品我不喜欢,想退款"); | ||
| 51 | - vo.setApplyPicUrls(Arrays.asList("pic_url_1", "pic_url_2", "pic_url_3")); | ||
| 52 | - | ||
| 53 | - // 设置订单相关信息 | ||
| 54 | - vo.setOrderId(2001L); | ||
| 55 | - vo.setOrderNo("23456789009876"); | ||
| 56 | - vo.setOrderItemId(3001L); | ||
| 57 | - vo.setSpuId(4001L); | ||
| 58 | - vo.setSpuName("商品名"); | ||
| 59 | - vo.setSkuId(5001L); | ||
| 60 | - vo.setProperties(Arrays.asList( | ||
| 61 | - new AppProductPropertyValueDetailRespVO().setPropertyId(6001L).setPropertyName("颜色").setValueId(7001L).setValueName("红色"), | ||
| 62 | - new AppProductPropertyValueDetailRespVO().setPropertyId(6002L).setPropertyName("尺寸").setValueId(7002L).setValueName("XL"))); | ||
| 63 | - vo.setPicUrl("https://cdn.pixabay.com/photo/2022/12/06/06/21/lavender-7638368_1280.jpg"); | ||
| 64 | - vo.setCount(2); | ||
| 65 | - | ||
| 66 | - // 设置审批相关信息 | ||
| 67 | - vo.setAuditReason("审核通过"); | ||
| 68 | - | ||
| 69 | - // 设置退款相关信息 | ||
| 70 | - vo.setRefundPrice(1000); | ||
| 71 | - vo.setRefundTime(LocalDateTime.now()); | ||
| 72 | - | ||
| 73 | - // 设置退货相关信息 | ||
| 74 | - vo.setLogisticsId(7001L); | ||
| 75 | - vo.setLogisticsNo("LAGN101010101001"); | ||
| 76 | - vo.setDeliveryTime(LocalDateTime.now()); | ||
| 77 | - vo.setReceiveTime(LocalDateTime.now()); | ||
| 78 | - vo.setReceiveReason("收货正常"); | 41 | + public CommonResult<PageResult<AppTradeAfterSaleRespVO>> getAfterSalePage(PageParam pageParam) { |
| 42 | + return success(TradeAfterSaleConvert.INSTANCE.convertPage02( | ||
| 43 | + afterSaleService.getAfterSalePage(getLoginUserId(), pageParam))); | ||
| 44 | + } | ||
| 79 | 45 | ||
| 80 | - return success(new PageResult<>(Arrays.asList(vo), 1L)); | ||
| 81 | -// return success(afterSaleService.getAfterSalePage(getLoginUserId())); | 46 | + @GetMapping(value = "/get") |
| 47 | + @Operation(summary = "获得售后订单") | ||
| 48 | + @Parameter(name = "id", description = "售后编号", required = true, example = "1") | ||
| 49 | + public CommonResult<AppTradeAfterSaleRespVO> getAfterSale(@RequestParam("id") Long id) { | ||
| 50 | + return success(TradeAfterSaleConvert.INSTANCE.convert(afterSaleService.getAfterSale(getLoginUserId(), id))); | ||
| 82 | } | 51 | } |
| 83 | 52 | ||
| 84 | // TODO 芋艿:待实现 | 53 | // TODO 芋艿:待实现 |
| @@ -99,7 +68,7 @@ public class AppTradeAfterSaleController { | @@ -99,7 +68,7 @@ public class AppTradeAfterSaleController { | ||
| 99 | return success(afterSaleService.createAfterSale(getLoginUserId(), createReqVO)); | 68 | return success(afterSaleService.createAfterSale(getLoginUserId(), createReqVO)); |
| 100 | } | 69 | } |
| 101 | 70 | ||
| 102 | - @PostMapping(value = "/delivery") | 71 | + @PutMapping(value = "/delivery") |
| 103 | @Operation(summary = "退回货物") | 72 | @Operation(summary = "退回货物") |
| 104 | public CommonResult<Boolean> deliveryAfterSale(@RequestBody AppTradeAfterSaleDeliveryReqVO deliveryReqVO) { | 73 | public CommonResult<Boolean> deliveryAfterSale(@RequestBody AppTradeAfterSaleDeliveryReqVO deliveryReqVO) { |
| 105 | afterSaleService.deliveryAfterSale(getLoginUserId(), deliveryReqVO); | 74 | afterSaleService.deliveryAfterSale(getLoginUserId(), deliveryReqVO); |
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/app/aftersale/vo/AppTradeAfterSaleDeliveryReqVO.java
| @@ -3,9 +3,7 @@ package cn.iocoder.yudao.module.trade.controller.app.aftersale.vo; | @@ -3,9 +3,7 @@ package cn.iocoder.yudao.module.trade.controller.app.aftersale.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; | ||
| 7 | import javax.validation.constraints.NotNull; | 6 | import javax.validation.constraints.NotNull; |
| 8 | -import java.time.LocalDateTime; | ||
| 9 | 7 | ||
| 10 | @Schema(description = "用户 App - 交易售后退回货物 Request VO") | 8 | @Schema(description = "用户 App - 交易售后退回货物 Request VO") |
| 11 | @Data | 9 | @Data |
| @@ -23,8 +21,4 @@ public class AppTradeAfterSaleDeliveryReqVO { | @@ -23,8 +21,4 @@ public class AppTradeAfterSaleDeliveryReqVO { | ||
| 23 | @NotNull(message = "退货物流单号不能为空") | 21 | @NotNull(message = "退货物流单号不能为空") |
| 24 | private String logisticsNo; | 22 | private String logisticsNo; |
| 25 | 23 | ||
| 26 | - @Schema(description = "退货时间", requiredMode = Schema.RequiredMode.REQUIRED) | ||
| 27 | - @NotEmpty(message = "退货时间不能为空") | ||
| 28 | - private LocalDateTime deliveryTime; | ||
| 29 | - | ||
| 30 | } | 24 | } |
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/app/aftersale/vo/AppTradeAfterSalePageItemRespVO.java renamed to yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/app/aftersale/vo/AppTradeAfterSaleRespVO.java
| @@ -7,9 +7,9 @@ import lombok.Data; | @@ -7,9 +7,9 @@ import lombok.Data; | ||
| 7 | import java.time.LocalDateTime; | 7 | import java.time.LocalDateTime; |
| 8 | import java.util.List; | 8 | import java.util.List; |
| 9 | 9 | ||
| 10 | -@Schema(description = "用户 App - 交易售后的分页项 Request VO") | 10 | +@Schema(description = "用户 App - 交易售后 Response VO") |
| 11 | @Data | 11 | @Data |
| 12 | -public class AppTradeAfterSalePageItemRespVO { | 12 | +public class AppTradeAfterSaleRespVO { |
| 13 | 13 | ||
| 14 | @Schema(description = "售后编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") | 14 | @Schema(description = "售后编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") |
| 15 | private Long id; | 15 | private Long id; |
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/app/delivery/AppDeliverExpressController.java
0 → 100644
| 1 | +package cn.iocoder.yudao.module.trade.controller.app.delivery; | ||
| 2 | + | ||
| 3 | +import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; | ||
| 4 | +import cn.iocoder.yudao.framework.common.pojo.CommonResult; | ||
| 5 | +import cn.iocoder.yudao.module.trade.controller.app.delivery.vo.express.AppDeliveryExpressRespVO; | ||
| 6 | +import cn.iocoder.yudao.module.trade.convert.delivery.DeliveryExpressConvert; | ||
| 7 | +import cn.iocoder.yudao.module.trade.dal.dataobject.delivery.DeliveryExpressDO; | ||
| 8 | +import cn.iocoder.yudao.module.trade.service.delivery.DeliveryExpressService; | ||
| 9 | +import io.swagger.v3.oas.annotations.Operation; | ||
| 10 | +import io.swagger.v3.oas.annotations.tags.Tag; | ||
| 11 | +import org.springframework.validation.annotation.Validated; | ||
| 12 | +import org.springframework.web.bind.annotation.GetMapping; | ||
| 13 | +import org.springframework.web.bind.annotation.RequestMapping; | ||
| 14 | +import org.springframework.web.bind.annotation.RestController; | ||
| 15 | + | ||
| 16 | +import javax.annotation.Resource; | ||
| 17 | +import java.util.Comparator; | ||
| 18 | +import java.util.List; | ||
| 19 | + | ||
| 20 | +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; | ||
| 21 | + | ||
| 22 | +@Tag(name = "用户 App - 快递公司") | ||
| 23 | +@RestController | ||
| 24 | +@RequestMapping("/trade/delivery/express") | ||
| 25 | +@Validated | ||
| 26 | +public class AppDeliverExpressController { | ||
| 27 | + | ||
| 28 | + @Resource | ||
| 29 | + private DeliveryExpressService deliveryExpressService; | ||
| 30 | + | ||
| 31 | + @GetMapping("/list") | ||
| 32 | + @Operation(summary = "获得快递公司列表") | ||
| 33 | + public CommonResult<List<AppDeliveryExpressRespVO>> getDeliveryExpressList() { | ||
| 34 | + List<DeliveryExpressDO> list = deliveryExpressService.getDeliveryExpressList(CommonStatusEnum.ENABLE.getStatus()); | ||
| 35 | + list.sort(Comparator.comparing(DeliveryExpressDO::getSort)); | ||
| 36 | + return success(DeliveryExpressConvert.INSTANCE.convertList03(list)); | ||
| 37 | + } | ||
| 38 | + | ||
| 39 | +} |
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/app/delivery/vo/express/AppDeliveryExpressRespVO.java
0 → 100644
| 1 | +package cn.iocoder.yudao.module.trade.controller.app.delivery.vo.express; | ||
| 2 | + | ||
| 3 | +import io.swagger.v3.oas.annotations.media.Schema; | ||
| 4 | +import lombok.Data; | ||
| 5 | + | ||
| 6 | +@Schema(description = "用户 App - 快递公司 Response VO") | ||
| 7 | +@Data | ||
| 8 | +public class AppDeliveryExpressRespVO { | ||
| 9 | + | ||
| 10 | + @Schema(description = "编号", required = true, example = "1") | ||
| 11 | + private Long id; | ||
| 12 | + | ||
| 13 | + @Schema(description = "门店名称", required = true, example = "顺丰") | ||
| 14 | + private String name; | ||
| 15 | + | ||
| 16 | +} |
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/convert/aftersale/TradeAfterSaleConvert.java
| 1 | package cn.iocoder.yudao.module.trade.convert.aftersale; | 1 | package cn.iocoder.yudao.module.trade.convert.aftersale; |
| 2 | 2 | ||
| 3 | -import cn.hutool.core.collection.CollUtil; | ||
| 4 | import cn.iocoder.yudao.framework.common.pojo.PageResult; | 3 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 5 | import cn.iocoder.yudao.module.member.api.user.dto.MemberUserRespDTO; | 4 | import cn.iocoder.yudao.module.member.api.user.dto.MemberUserRespDTO; |
| 6 | import cn.iocoder.yudao.module.pay.api.refund.dto.PayRefundCreateReqDTO; | 5 | import cn.iocoder.yudao.module.pay.api.refund.dto.PayRefundCreateReqDTO; |
| @@ -9,6 +8,7 @@ import cn.iocoder.yudao.module.trade.controller.admin.aftersale.vo.TradeAfterSal | @@ -9,6 +8,7 @@ import cn.iocoder.yudao.module.trade.controller.admin.aftersale.vo.TradeAfterSal | ||
| 9 | import cn.iocoder.yudao.module.trade.controller.admin.base.member.user.MemberUserRespVO; | 8 | import cn.iocoder.yudao.module.trade.controller.admin.base.member.user.MemberUserRespVO; |
| 10 | import cn.iocoder.yudao.module.trade.controller.admin.base.product.property.ProductPropertyValueDetailRespVO; | 9 | import cn.iocoder.yudao.module.trade.controller.admin.base.product.property.ProductPropertyValueDetailRespVO; |
| 11 | import cn.iocoder.yudao.module.trade.controller.app.aftersale.vo.AppTradeAfterSaleCreateReqVO; | 10 | import cn.iocoder.yudao.module.trade.controller.app.aftersale.vo.AppTradeAfterSaleCreateReqVO; |
| 11 | +import cn.iocoder.yudao.module.trade.controller.app.aftersale.vo.AppTradeAfterSaleRespVO; | ||
| 12 | import cn.iocoder.yudao.module.trade.dal.dataobject.aftersale.TradeAfterSaleDO; | 12 | import cn.iocoder.yudao.module.trade.dal.dataobject.aftersale.TradeAfterSaleDO; |
| 13 | import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderItemDO; | 13 | import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderItemDO; |
| 14 | import cn.iocoder.yudao.module.trade.framework.order.config.TradeOrderProperties; | 14 | import cn.iocoder.yudao.module.trade.framework.order.config.TradeOrderProperties; |
| @@ -17,10 +17,7 @@ import org.mapstruct.Mapping; | @@ -17,10 +17,7 @@ import org.mapstruct.Mapping; | ||
| 17 | import org.mapstruct.Mappings; | 17 | import org.mapstruct.Mappings; |
| 18 | import org.mapstruct.factory.Mappers; | 18 | import org.mapstruct.factory.Mappers; |
| 19 | 19 | ||
| 20 | -import java.util.*; | ||
| 21 | -import java.util.stream.Collectors; | ||
| 22 | - | ||
| 23 | -import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMap; | 20 | +import java.util.Map; |
| 24 | 21 | ||
| 25 | @Mapper | 22 | @Mapper |
| 26 | public interface TradeAfterSaleConvert { | 23 | public interface TradeAfterSaleConvert { |
| @@ -37,6 +34,8 @@ public interface TradeAfterSaleConvert { | @@ -37,6 +34,8 @@ public interface TradeAfterSaleConvert { | ||
| 37 | TradeAfterSaleDO convert(AppTradeAfterSaleCreateReqVO createReqVO, TradeOrderItemDO tradeOrderItem); | 34 | TradeAfterSaleDO convert(AppTradeAfterSaleCreateReqVO createReqVO, TradeOrderItemDO tradeOrderItem); |
| 38 | 35 | ||
| 39 | @Mappings({ | 36 | @Mappings({ |
| 37 | + @Mapping(source = "afterSale.orderId", target = "merchantOrderId"), | ||
| 38 | + @Mapping(source = "afterSale.id", target = "merchantRefundId"), | ||
| 40 | @Mapping(source = "afterSale.applyReason", target = "reason"), | 39 | @Mapping(source = "afterSale.applyReason", target = "reason"), |
| 41 | @Mapping(source = "afterSale.refundPrice", target = "price") | 40 | @Mapping(source = "afterSale.refundPrice", target = "price") |
| 42 | }) | 41 | }) |
| @@ -48,41 +47,18 @@ public interface TradeAfterSaleConvert { | @@ -48,41 +47,18 @@ public interface TradeAfterSaleConvert { | ||
| 48 | PageResult<TradeAfterSaleRespPageItemVO> convertPage(PageResult<TradeAfterSaleDO> page); | 47 | PageResult<TradeAfterSaleRespPageItemVO> convertPage(PageResult<TradeAfterSaleDO> page); |
| 49 | 48 | ||
| 50 | default PageResult<TradeAfterSaleRespPageItemVO> convertPage(PageResult<TradeAfterSaleDO> pageResult, | 49 | default PageResult<TradeAfterSaleRespPageItemVO> convertPage(PageResult<TradeAfterSaleDO> pageResult, |
| 51 | - Map<Long, MemberUserRespDTO> memberUsers, List<ProductPropertyValueDetailRespDTO> propertyValueDetails) { | ||
| 52 | - PageResult<TradeAfterSaleRespPageItemVO> pageVOResult = convertPage(pageResult); | ||
| 53 | - // 处理会员 + 商品属性等关联信息 | ||
| 54 | - Map<Long, ProductPropertyValueDetailRespDTO> propertyValueDetailMap = convertMap(propertyValueDetails, ProductPropertyValueDetailRespDTO::getValueId); | ||
| 55 | - for (int i = 0; i < pageResult.getList().size(); i++) { | ||
| 56 | - TradeAfterSaleRespPageItemVO afterSaleVO = pageVOResult.getList().get(i); | ||
| 57 | - TradeAfterSaleDO afterSaleDO = pageResult.getList().get(i); | ||
| 58 | - // 会员 | ||
| 59 | - afterSaleVO.setUser(convert(memberUsers.get(afterSaleDO.getUserId()))); | ||
| 60 | - // 商品属性 | ||
| 61 | - if (CollUtil.isNotEmpty(afterSaleDO.getProperties())) { | ||
| 62 | - afterSaleVO.setProperties(new ArrayList<>(afterSaleDO.getProperties().size())); | ||
| 63 | - // 遍历每个 properties,设置到 TradeOrderPageItemRespVO.Item 中 | ||
| 64 | - afterSaleDO.getProperties().forEach(property -> { | ||
| 65 | - ProductPropertyValueDetailRespDTO propertyValueDetail = propertyValueDetailMap.get(property.getValueId()); | ||
| 66 | - if (propertyValueDetail == null) { | ||
| 67 | - return; | ||
| 68 | - } | ||
| 69 | - afterSaleVO.getProperties().add(convert(propertyValueDetail)); | ||
| 70 | - }); | ||
| 71 | - } | ||
| 72 | - } | ||
| 73 | - return pageVOResult; | 50 | + Map<Long, MemberUserRespDTO> memberUsers) { |
| 51 | + PageResult<TradeAfterSaleRespPageItemVO> voPageResult = convertPage(pageResult); | ||
| 52 | + // 处理会员 | ||
| 53 | + voPageResult.getList().forEach(afterSale -> afterSale.setUser( | ||
| 54 | + convert(memberUsers.get(afterSale.getUserId())))); | ||
| 55 | + return voPageResult; | ||
| 74 | } | 56 | } |
| 75 | 57 | ||
| 76 | ProductPropertyValueDetailRespVO convert(ProductPropertyValueDetailRespDTO bean); | 58 | ProductPropertyValueDetailRespVO convert(ProductPropertyValueDetailRespDTO bean); |
| 77 | 59 | ||
| 78 | - default Set<Long> convertPropertyValueIds(List<TradeAfterSaleDO> list) { | ||
| 79 | - if (CollUtil.isEmpty(list)) { | ||
| 80 | - return new HashSet<>(); | ||
| 81 | - } | ||
| 82 | - return list.stream().filter(item -> item.getProperties() != null) | ||
| 83 | - .flatMap(p -> p.getProperties().stream()) // 遍历多个 Property 属性 | ||
| 84 | - .map(TradeOrderItemDO.Property::getValueId) // 将每个 Property 转换成对应的 propertyId,最后形成集合 | ||
| 85 | - .collect(Collectors.toSet()); | ||
| 86 | - } | 60 | + AppTradeAfterSaleRespVO convert(TradeAfterSaleDO bean); |
| 61 | + | ||
| 62 | + PageResult<AppTradeAfterSaleRespVO> convertPage02(PageResult<TradeAfterSaleDO> page); | ||
| 87 | 63 | ||
| 88 | } | 64 | } |
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/convert/delivery/DeliveryExpressConvert.java
| 1 | package cn.iocoder.yudao.module.trade.convert.delivery; | 1 | package cn.iocoder.yudao.module.trade.convert.delivery; |
| 2 | 2 | ||
| 3 | -import java.util.*; | ||
| 4 | - | ||
| 5 | import cn.iocoder.yudao.framework.common.pojo.PageResult; | 3 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 6 | - | ||
| 7 | import cn.iocoder.yudao.module.trade.controller.admin.delivery.vo.express.DeliveryExpressCreateReqVO; | 4 | import cn.iocoder.yudao.module.trade.controller.admin.delivery.vo.express.DeliveryExpressCreateReqVO; |
| 8 | import cn.iocoder.yudao.module.trade.controller.admin.delivery.vo.express.DeliveryExpressExcelVO; | 5 | import cn.iocoder.yudao.module.trade.controller.admin.delivery.vo.express.DeliveryExpressExcelVO; |
| 9 | import cn.iocoder.yudao.module.trade.controller.admin.delivery.vo.express.DeliveryExpressRespVO; | 6 | import cn.iocoder.yudao.module.trade.controller.admin.delivery.vo.express.DeliveryExpressRespVO; |
| 10 | import cn.iocoder.yudao.module.trade.controller.admin.delivery.vo.express.DeliveryExpressUpdateReqVO; | 7 | import cn.iocoder.yudao.module.trade.controller.admin.delivery.vo.express.DeliveryExpressUpdateReqVO; |
| 8 | +import cn.iocoder.yudao.module.trade.controller.app.delivery.vo.express.AppDeliveryExpressRespVO; | ||
| 11 | import cn.iocoder.yudao.module.trade.dal.dataobject.delivery.DeliveryExpressDO; | 9 | import cn.iocoder.yudao.module.trade.dal.dataobject.delivery.DeliveryExpressDO; |
| 12 | import org.mapstruct.Mapper; | 10 | import org.mapstruct.Mapper; |
| 13 | import org.mapstruct.factory.Mappers; | 11 | import org.mapstruct.factory.Mappers; |
| 14 | 12 | ||
| 13 | +import java.util.List; | ||
| 14 | + | ||
| 15 | @Mapper | 15 | @Mapper |
| 16 | public interface DeliveryExpressConvert { | 16 | public interface DeliveryExpressConvert { |
| 17 | 17 | ||
| @@ -29,4 +29,6 @@ public interface DeliveryExpressConvert { | @@ -29,4 +29,6 @@ public interface DeliveryExpressConvert { | ||
| 29 | 29 | ||
| 30 | List<DeliveryExpressExcelVO> convertList02(List<DeliveryExpressDO> list); | 30 | List<DeliveryExpressExcelVO> convertList02(List<DeliveryExpressDO> list); |
| 31 | 31 | ||
| 32 | + List<AppDeliveryExpressRespVO> convertList03(List<DeliveryExpressDO> list); | ||
| 33 | + | ||
| 32 | } | 34 | } |
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/dal/dataobject/aftersale/TradeAfterSaleDO.java
| @@ -17,7 +17,7 @@ import java.time.LocalDateTime; | @@ -17,7 +17,7 @@ import java.time.LocalDateTime; | ||
| 17 | import java.util.List; | 17 | import java.util.List; |
| 18 | 18 | ||
| 19 | /** | 19 | /** |
| 20 | - * 交易售后,用于处理 {@link TradeOrderDO} 交易订单的退款退货流程 | 20 | + * 售后订单,用于处理 {@link TradeOrderDO} 交易订单的退款退货流程 |
| 21 | * | 21 | * |
| 22 | * @author 芋道源码 | 22 | * @author 芋道源码 |
| 23 | */ | 23 | */ |
| @@ -32,7 +32,7 @@ public class TradeAfterSaleDO extends BaseDO { | @@ -32,7 +32,7 @@ public class TradeAfterSaleDO extends BaseDO { | ||
| 32 | */ | 32 | */ |
| 33 | private Long id; | 33 | private Long id; |
| 34 | /** | 34 | /** |
| 35 | - * 售后流水号 | 35 | + * 售后单号 |
| 36 | * | 36 | * |
| 37 | * 例如说,1146347329394184195 | 37 | * 例如说,1146347329394184195 |
| 38 | */ | 38 | */ |
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/dal/mysql/aftersale/TradeAfterSaleMapper.java
| 1 | package cn.iocoder.yudao.module.trade.dal.mysql.aftersale; | 1 | package cn.iocoder.yudao.module.trade.dal.mysql.aftersale; |
| 2 | 2 | ||
| 3 | +import cn.iocoder.yudao.framework.common.pojo.PageParam; | ||
| 3 | import cn.iocoder.yudao.framework.common.pojo.PageResult; | 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 | import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; | 6 | import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; |
| @@ -23,13 +24,20 @@ public interface TradeAfterSaleMapper extends BaseMapperX<TradeAfterSaleDO> { | @@ -23,13 +24,20 @@ public interface TradeAfterSaleMapper extends BaseMapperX<TradeAfterSaleDO> { | ||
| 23 | .orderByDesc(TradeAfterSaleDO::getId)); | 24 | .orderByDesc(TradeAfterSaleDO::getId)); |
| 24 | } | 25 | } |
| 25 | 26 | ||
| 27 | + default PageResult<TradeAfterSaleDO> selectPage(Long userId, PageParam pageParam) { | ||
| 28 | + return selectPage(pageParam, new LambdaQueryWrapperX<TradeAfterSaleDO>() | ||
| 29 | + .eqIfPresent(TradeAfterSaleDO::getUserId, userId) | ||
| 30 | + .orderByDesc(TradeAfterSaleDO::getId)); | ||
| 31 | + } | ||
| 32 | + | ||
| 26 | default int updateByIdAndStatus(Long id, Integer status, TradeAfterSaleDO update) { | 33 | default int updateByIdAndStatus(Long id, Integer status, TradeAfterSaleDO update) { |
| 27 | return update(update, new LambdaUpdateWrapper<TradeAfterSaleDO>() | 34 | return update(update, new LambdaUpdateWrapper<TradeAfterSaleDO>() |
| 28 | .eq(TradeAfterSaleDO::getId, id).eq(TradeAfterSaleDO::getStatus, status)); | 35 | .eq(TradeAfterSaleDO::getId, id).eq(TradeAfterSaleDO::getStatus, status)); |
| 29 | } | 36 | } |
| 30 | 37 | ||
| 31 | - default TradeAfterSaleDO selectByPayRefundId(Long payRefundId) { | ||
| 32 | - return selectOne(TradeAfterSaleDO::getPayRefundId, payRefundId); | 38 | + default TradeAfterSaleDO selectByIdAndUserId(Long id, Long userId) { |
| 39 | + return selectOne(TradeAfterSaleDO::getId, id, | ||
| 40 | + TradeAfterSaleDO::getUserId, userId); | ||
| 33 | } | 41 | } |
| 34 | 42 | ||
| 35 | } | 43 | } |
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/dal/mysql/delivery/DeliveryExpressMapper.java
| @@ -36,6 +36,11 @@ public interface DeliveryExpressMapper extends BaseMapperX<DeliveryExpressDO> { | @@ -36,6 +36,11 @@ public interface DeliveryExpressMapper extends BaseMapperX<DeliveryExpressDO> { | ||
| 36 | return selectOne(new LambdaQueryWrapper<DeliveryExpressDO>() | 36 | return selectOne(new LambdaQueryWrapper<DeliveryExpressDO>() |
| 37 | .eq(DeliveryExpressDO::getCode, code)); | 37 | .eq(DeliveryExpressDO::getCode, code)); |
| 38 | } | 38 | } |
| 39 | + | ||
| 40 | + default List<DeliveryExpressDO> selectListByStatus(Integer status) { | ||
| 41 | + return selectList(DeliveryExpressDO::getStatus, status); | ||
| 42 | + } | ||
| 43 | + | ||
| 39 | } | 44 | } |
| 40 | 45 | ||
| 41 | 46 |
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/aftersale/TradeAfterSaleService.java
| 1 | package cn.iocoder.yudao.module.trade.service.aftersale; | 1 | package cn.iocoder.yudao.module.trade.service.aftersale; |
| 2 | 2 | ||
| 3 | +import cn.iocoder.yudao.framework.common.pojo.PageParam; | ||
| 3 | import cn.iocoder.yudao.framework.common.pojo.PageResult; | 4 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 4 | import cn.iocoder.yudao.module.trade.controller.admin.aftersale.vo.TradeAfterSaleDisagreeReqVO; | 5 | import cn.iocoder.yudao.module.trade.controller.admin.aftersale.vo.TradeAfterSaleDisagreeReqVO; |
| 5 | import cn.iocoder.yudao.module.trade.controller.admin.aftersale.vo.TradeAfterSalePageReqVO; | 6 | import cn.iocoder.yudao.module.trade.controller.admin.aftersale.vo.TradeAfterSalePageReqVO; |
| @@ -9,41 +10,57 @@ import cn.iocoder.yudao.module.trade.controller.app.aftersale.vo.AppTradeAfterSa | @@ -9,41 +10,57 @@ import cn.iocoder.yudao.module.trade.controller.app.aftersale.vo.AppTradeAfterSa | ||
| 9 | import cn.iocoder.yudao.module.trade.dal.dataobject.aftersale.TradeAfterSaleDO; | 10 | import cn.iocoder.yudao.module.trade.dal.dataobject.aftersale.TradeAfterSaleDO; |
| 10 | 11 | ||
| 11 | /** | 12 | /** |
| 12 | - * 交易售后 Service 接口 | 13 | + * 售后订单 Service 接口 |
| 13 | * | 14 | * |
| 14 | * @author 芋道源码 | 15 | * @author 芋道源码 |
| 15 | */ | 16 | */ |
| 16 | public interface TradeAfterSaleService { | 17 | public interface TradeAfterSaleService { |
| 17 | 18 | ||
| 18 | /** | 19 | /** |
| 19 | - * 获得交易售后分页 | 20 | + * 【管理员】获得售后订单分页 |
| 20 | * | 21 | * |
| 21 | * @param pageReqVO 分页查询 | 22 | * @param pageReqVO 分页查询 |
| 22 | - * @return 交易售后分页 | 23 | + * @return 售后订单分页 |
| 23 | */ | 24 | */ |
| 24 | PageResult<TradeAfterSaleDO> getAfterSalePage(TradeAfterSalePageReqVO pageReqVO); | 25 | PageResult<TradeAfterSaleDO> getAfterSalePage(TradeAfterSalePageReqVO pageReqVO); |
| 25 | 26 | ||
| 26 | /** | 27 | /** |
| 27 | - * 【会员】创建交易售后 | ||
| 28 | - * <p> | ||
| 29 | - * 一般是用户发起售后请求 | 28 | + * 【会员】获得售后订单分页 |
| 29 | + * | ||
| 30 | + * @param userId 用户编号 | ||
| 31 | + * @param pageParam 分页参数 | ||
| 32 | + * @return 售后订单分页 | ||
| 33 | + */ | ||
| 34 | + PageResult<TradeAfterSaleDO> getAfterSalePage(Long userId, PageParam pageParam); | ||
| 35 | + | ||
| 36 | + /** | ||
| 37 | + * 【会员】获得售后单 | ||
| 38 | + * | ||
| 39 | + * @param userId 用户编号 | ||
| 40 | + * @param id 售后编号 | ||
| 41 | + * @return 售后订单 | ||
| 42 | + */ | ||
| 43 | + TradeAfterSaleDO getAfterSale(Long userId, Long id); | ||
| 44 | + | ||
| 45 | + /** | ||
| 46 | + * 【会员】创建售后订单 | ||
| 30 | * | 47 | * |
| 31 | * @param userId 会员用户编号 | 48 | * @param userId 会员用户编号 |
| 32 | * @param createReqVO 创建 Request 信息 | 49 | * @param createReqVO 创建 Request 信息 |
| 33 | - * @return 交易售后编号 | 50 | + * @return 售后编号 |
| 34 | */ | 51 | */ |
| 35 | Long createAfterSale(Long userId, AppTradeAfterSaleCreateReqVO createReqVO); | 52 | Long createAfterSale(Long userId, AppTradeAfterSaleCreateReqVO createReqVO); |
| 36 | 53 | ||
| 37 | /** | 54 | /** |
| 38 | - * 【管理员】同意交易售后 | 55 | + * 【管理员】同意售后订单 |
| 39 | * | 56 | * |
| 40 | * @param userId 管理员用户编号 | 57 | * @param userId 管理员用户编号 |
| 41 | - * @param id 交易售后编号 | 58 | + * @param id 售后编号 |
| 42 | */ | 59 | */ |
| 43 | void agreeAfterSale(Long userId, Long id); | 60 | void agreeAfterSale(Long userId, Long id); |
| 44 | 61 | ||
| 45 | /** | 62 | /** |
| 46 | - * 【管理员】拒绝交易售后 | 63 | + * 【管理员】拒绝售后订单 |
| 47 | * | 64 | * |
| 48 | * @param userId 管理员用户编号 | 65 | * @param userId 管理员用户编号 |
| 49 | * @param auditReqVO 审批 Request 信息 | 66 | * @param auditReqVO 审批 Request 信息 |
| @@ -62,7 +79,7 @@ public interface TradeAfterSaleService { | @@ -62,7 +79,7 @@ public interface TradeAfterSaleService { | ||
| 62 | * 【管理员】确认收货 | 79 | * 【管理员】确认收货 |
| 63 | * | 80 | * |
| 64 | * @param userId 管理员编号 | 81 | * @param userId 管理员编号 |
| 65 | - * @param id 交易售后编号 | 82 | + * @param id 售后编号 |
| 66 | */ | 83 | */ |
| 67 | void receiveAfterSale(Long userId, Long id); | 84 | void receiveAfterSale(Long userId, Long id); |
| 68 | 85 | ||
| @@ -87,7 +104,7 @@ public interface TradeAfterSaleService { | @@ -87,7 +104,7 @@ public interface TradeAfterSaleService { | ||
| 87 | * 【会员】取消售后 | 104 | * 【会员】取消售后 |
| 88 | * | 105 | * |
| 89 | * @param userId 会员用户编号 | 106 | * @param userId 会员用户编号 |
| 90 | - * @param id 交易售后编号 | 107 | + * @param id 售后编号 |
| 91 | */ | 108 | */ |
| 92 | void cancelAfterSale(Long userId, Long id); | 109 | void cancelAfterSale(Long userId, Long id); |
| 93 | 110 |
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/aftersale/TradeAfterSaleServiceImpl.java
| @@ -3,6 +3,7 @@ package cn.iocoder.yudao.module.trade.service.aftersale; | @@ -3,6 +3,7 @@ package cn.iocoder.yudao.module.trade.service.aftersale; | ||
| 3 | import cn.hutool.core.util.ObjectUtil; | 3 | import cn.hutool.core.util.ObjectUtil; |
| 4 | import cn.hutool.core.util.RandomUtil; | 4 | import cn.hutool.core.util.RandomUtil; |
| 5 | import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; | 5 | import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; |
| 6 | +import cn.iocoder.yudao.framework.common.pojo.PageParam; | ||
| 6 | import cn.iocoder.yudao.framework.common.pojo.PageResult; | 7 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 7 | import cn.iocoder.yudao.framework.common.util.object.ObjectUtils; | 8 | import cn.iocoder.yudao.framework.common.util.object.ObjectUtils; |
| 8 | import cn.iocoder.yudao.module.pay.api.refund.PayRefundApi; | 9 | import cn.iocoder.yudao.module.pay.api.refund.PayRefundApi; |
| @@ -45,7 +46,7 @@ import static cn.iocoder.yudao.framework.common.util.json.JsonUtils.toJsonString | @@ -45,7 +46,7 @@ import static cn.iocoder.yudao.framework.common.util.json.JsonUtils.toJsonString | ||
| 45 | import static cn.iocoder.yudao.module.trade.enums.ErrorCodeConstants.*; | 46 | import static cn.iocoder.yudao.module.trade.enums.ErrorCodeConstants.*; |
| 46 | 47 | ||
| 47 | /** | 48 | /** |
| 48 | - * 交易售后 Service 实现类 | 49 | + * 售后订单 Service 实现类 |
| 49 | * | 50 | * |
| 50 | * @author 芋道源码 | 51 | * @author 芋道源码 |
| 51 | */ | 52 | */ |
| @@ -76,12 +77,22 @@ public class TradeAfterSaleServiceImpl implements TradeAfterSaleService, AfterSa | @@ -76,12 +77,22 @@ public class TradeAfterSaleServiceImpl implements TradeAfterSaleService, AfterSa | ||
| 76 | } | 77 | } |
| 77 | 78 | ||
| 78 | @Override | 79 | @Override |
| 80 | + public PageResult<TradeAfterSaleDO> getAfterSalePage(Long userId, PageParam pageParam) { | ||
| 81 | + return tradeAfterSaleMapper.selectPage(userId, pageParam); | ||
| 82 | + } | ||
| 83 | + | ||
| 84 | + @Override | ||
| 85 | + public TradeAfterSaleDO getAfterSale(Long userId, Long id) { | ||
| 86 | + return tradeAfterSaleMapper.selectByIdAndUserId(id, userId); | ||
| 87 | + } | ||
| 88 | + | ||
| 89 | + @Override | ||
| 79 | @Transactional(rollbackFor = Exception.class) | 90 | @Transactional(rollbackFor = Exception.class) |
| 80 | public Long createAfterSale(Long userId, AppTradeAfterSaleCreateReqVO createReqVO) { | 91 | public Long createAfterSale(Long userId, AppTradeAfterSaleCreateReqVO createReqVO) { |
| 81 | // 第一步,前置校验 | 92 | // 第一步,前置校验 |
| 82 | TradeOrderItemDO tradeOrderItem = validateOrderItemApplicable(userId, createReqVO); | 93 | TradeOrderItemDO tradeOrderItem = validateOrderItemApplicable(userId, createReqVO); |
| 83 | 94 | ||
| 84 | - // 第二步,存储交易售后 | 95 | + // 第二步,存储售后订单 |
| 85 | TradeAfterSaleDO afterSale = createAfterSale(createReqVO, tradeOrderItem); | 96 | TradeAfterSaleDO afterSale = createAfterSale(createReqVO, tradeOrderItem); |
| 86 | return afterSale.getId(); | 97 | return afterSale.getId(); |
| 87 | } | 98 | } |
| @@ -168,7 +179,7 @@ public class TradeAfterSaleServiceImpl implements TradeAfterSaleService, AfterSa | @@ -168,7 +179,7 @@ public class TradeAfterSaleServiceImpl implements TradeAfterSaleService, AfterSa | ||
| 168 | // 更新售后单的状态 | 179 | // 更新售后单的状态 |
| 169 | // 情况一:退款:标记为 WAIT_REFUND 状态。后续等退款发起成功后,在标记为 COMPLETE 状态 | 180 | // 情况一:退款:标记为 WAIT_REFUND 状态。后续等退款发起成功后,在标记为 COMPLETE 状态 |
| 170 | // 情况二:退货退款:需要等用户退货后,才能发起退款 | 181 | // 情况二:退货退款:需要等用户退货后,才能发起退款 |
| 171 | - Integer newStatus = afterSale.getType().equals(TradeAfterSaleWayEnum.REFUND.getWay()) ? | 182 | + Integer newStatus = afterSale.getWay().equals(TradeAfterSaleWayEnum.REFUND.getWay()) ? |
| 172 | TradeAfterSaleStatusEnum.WAIT_REFUND.getStatus() : TradeAfterSaleStatusEnum.SELLER_AGREE.getStatus(); | 183 | TradeAfterSaleStatusEnum.WAIT_REFUND.getStatus() : TradeAfterSaleStatusEnum.SELLER_AGREE.getStatus(); |
| 173 | updateAfterSaleStatus(afterSale.getId(), TradeAfterSaleStatusEnum.APPLY.getStatus(), new TradeAfterSaleDO() | 184 | updateAfterSaleStatus(afterSale.getId(), TradeAfterSaleStatusEnum.APPLY.getStatus(), new TradeAfterSaleDO() |
| 174 | .setStatus(newStatus).setAuditUserId(userId).setAuditTime(LocalDateTime.now())); | 185 | .setStatus(newStatus).setAuditUserId(userId).setAuditTime(LocalDateTime.now())); |
| @@ -243,7 +254,7 @@ public class TradeAfterSaleServiceImpl implements TradeAfterSaleService, AfterSa | @@ -243,7 +254,7 @@ public class TradeAfterSaleServiceImpl implements TradeAfterSaleService, AfterSa | ||
| 243 | updateAfterSaleStatus(afterSale.getId(), TradeAfterSaleStatusEnum.SELLER_AGREE.getStatus(), new TradeAfterSaleDO() | 254 | updateAfterSaleStatus(afterSale.getId(), TradeAfterSaleStatusEnum.SELLER_AGREE.getStatus(), new TradeAfterSaleDO() |
| 244 | .setStatus(TradeAfterSaleStatusEnum.BUYER_DELIVERY.getStatus()) | 255 | .setStatus(TradeAfterSaleStatusEnum.BUYER_DELIVERY.getStatus()) |
| 245 | .setLogisticsId(deliveryReqVO.getLogisticsId()).setLogisticsNo(deliveryReqVO.getLogisticsNo()) | 256 | .setLogisticsId(deliveryReqVO.getLogisticsId()).setLogisticsNo(deliveryReqVO.getLogisticsNo()) |
| 246 | - .setDeliveryTime(deliveryReqVO.getDeliveryTime())); | 257 | + .setDeliveryTime(LocalDateTime.now())); |
| 247 | 258 | ||
| 248 | // 记录售后日志 | 259 | // 记录售后日志 |
| 249 | createAfterSaleLog(userId, UserTypeEnum.MEMBER.getValue(), | 260 | createAfterSaleLog(userId, UserTypeEnum.MEMBER.getValue(), |
| @@ -318,7 +329,7 @@ public class TradeAfterSaleServiceImpl implements TradeAfterSaleService, AfterSa | @@ -318,7 +329,7 @@ public class TradeAfterSaleServiceImpl implements TradeAfterSaleService, AfterSa | ||
| 318 | @Transactional(rollbackFor = Exception.class) | 329 | @Transactional(rollbackFor = Exception.class) |
| 319 | public void refundAfterSale(Long userId, String userIp, Long id) { | 330 | public void refundAfterSale(Long userId, String userIp, Long id) { |
| 320 | // 校验售后单的状态,并状态待退款 | 331 | // 校验售后单的状态,并状态待退款 |
| 321 | - TradeAfterSaleDO afterSale = tradeAfterSaleMapper.selectByPayRefundId(id); | 332 | + TradeAfterSaleDO afterSale = tradeAfterSaleMapper.selectById(id); |
| 322 | if (afterSale == null) { | 333 | if (afterSale == null) { |
| 323 | throw exception(AFTER_SALE_NOT_FOUND); | 334 | throw exception(AFTER_SALE_NOT_FOUND); |
| 324 | } | 335 | } |
| @@ -362,13 +373,14 @@ public class TradeAfterSaleServiceImpl implements TradeAfterSaleService, AfterSa | @@ -362,13 +373,14 @@ public class TradeAfterSaleServiceImpl implements TradeAfterSaleService, AfterSa | ||
| 362 | @Override | 373 | @Override |
| 363 | public void cancelAfterSale(Long userId, Long id) { | 374 | public void cancelAfterSale(Long userId, Long id) { |
| 364 | // 校验售后单的状态,并状态待退款 | 375 | // 校验售后单的状态,并状态待退款 |
| 365 | - TradeAfterSaleDO afterSale = tradeAfterSaleMapper.selectByPayRefundId(id); | 376 | + TradeAfterSaleDO afterSale = tradeAfterSaleMapper.selectById(id); |
| 366 | if (afterSale == null) { | 377 | if (afterSale == null) { |
| 367 | throw exception(AFTER_SALE_NOT_FOUND); | 378 | throw exception(AFTER_SALE_NOT_FOUND); |
| 368 | } | 379 | } |
| 369 | - if (ObjectUtils.equalsAny(afterSale.getStatus(), TradeAfterSaleStatusEnum.APPLY.getStatus(), | ||
| 370 | - TradeAfterSaleStatusEnum.SELLER_AGREE.getStatus())) { | ||
| 371 | - throw exception(AFTER_SALE_CANCEL_FAIL_STATUS_NOT_APPLY_OR_AGREE); | 380 | + if (!ObjectUtils.equalsAny(afterSale.getStatus(), TradeAfterSaleStatusEnum.APPLY.getStatus(), |
| 381 | + TradeAfterSaleStatusEnum.SELLER_AGREE.getStatus(), | ||
| 382 | + TradeAfterSaleStatusEnum.BUYER_DELIVERY.getStatus())) { | ||
| 383 | + throw exception(AFTER_SALE_CANCEL_FAIL_STATUS_NOT_APPLY_OR_AGREE_OR_BUYER_DELIVERY); | ||
| 372 | } | 384 | } |
| 373 | 385 | ||
| 374 | // 更新售后单的状态为【已取消】 | 386 | // 更新售后单的状态为【已取消】 |
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/delivery/DeliveryExpressService.java
| 1 | package cn.iocoder.yudao.module.trade.service.delivery; | 1 | package cn.iocoder.yudao.module.trade.service.delivery; |
| 2 | 2 | ||
| 3 | -import java.util.*; | ||
| 4 | -import javax.validation.*; | ||
| 5 | - | ||
| 6 | import cn.iocoder.yudao.framework.common.pojo.PageResult; | 3 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 7 | import cn.iocoder.yudao.module.trade.controller.admin.delivery.vo.express.DeliveryExpressCreateReqVO; | 4 | import cn.iocoder.yudao.module.trade.controller.admin.delivery.vo.express.DeliveryExpressCreateReqVO; |
| 8 | import cn.iocoder.yudao.module.trade.controller.admin.delivery.vo.express.DeliveryExpressExportReqVO; | 5 | import cn.iocoder.yudao.module.trade.controller.admin.delivery.vo.express.DeliveryExpressExportReqVO; |
| @@ -10,6 +7,9 @@ import cn.iocoder.yudao.module.trade.controller.admin.delivery.vo.express.Delive | @@ -10,6 +7,9 @@ import cn.iocoder.yudao.module.trade.controller.admin.delivery.vo.express.Delive | ||
| 10 | import cn.iocoder.yudao.module.trade.controller.admin.delivery.vo.express.DeliveryExpressUpdateReqVO; | 7 | import cn.iocoder.yudao.module.trade.controller.admin.delivery.vo.express.DeliveryExpressUpdateReqVO; |
| 11 | import cn.iocoder.yudao.module.trade.dal.dataobject.delivery.DeliveryExpressDO; | 8 | import cn.iocoder.yudao.module.trade.dal.dataobject.delivery.DeliveryExpressDO; |
| 12 | 9 | ||
| 10 | +import javax.validation.Valid; | ||
| 11 | +import java.util.List; | ||
| 12 | + | ||
| 13 | /** | 13 | /** |
| 14 | * 快递公司 Service 接口 | 14 | * 快递公司 Service 接口 |
| 15 | * | 15 | * |
| @@ -48,14 +48,6 @@ public interface DeliveryExpressService { | @@ -48,14 +48,6 @@ public interface DeliveryExpressService { | ||
| 48 | DeliveryExpressDO getDeliveryExpress(Long id); | 48 | DeliveryExpressDO getDeliveryExpress(Long id); |
| 49 | 49 | ||
| 50 | /** | 50 | /** |
| 51 | - * 获得快递公司列表 | ||
| 52 | - * | ||
| 53 | - * @param ids 编号 | ||
| 54 | - * @return 快递公司列表 | ||
| 55 | - */ | ||
| 56 | - List<DeliveryExpressDO> getDeliveryExpressList(Collection<Long> ids); | ||
| 57 | - | ||
| 58 | - /** | ||
| 59 | * 获得快递公司分页 | 51 | * 获得快递公司分页 |
| 60 | * | 52 | * |
| 61 | * @param pageReqVO 分页查询 | 53 | * @param pageReqVO 分页查询 |
| @@ -71,4 +63,12 @@ public interface DeliveryExpressService { | @@ -71,4 +63,12 @@ public interface DeliveryExpressService { | ||
| 71 | */ | 63 | */ |
| 72 | List<DeliveryExpressDO> getDeliveryExpressList(DeliveryExpressExportReqVO exportReqVO); | 64 | List<DeliveryExpressDO> getDeliveryExpressList(DeliveryExpressExportReqVO exportReqVO); |
| 73 | 65 | ||
| 66 | + /** | ||
| 67 | + * 获得快递公司列表 | ||
| 68 | + * | ||
| 69 | + * @param status 状态 | ||
| 70 | + * @return 快递公司列表 | ||
| 71 | + */ | ||
| 72 | + List<DeliveryExpressDO> getDeliveryExpressList(Integer status); | ||
| 73 | + | ||
| 74 | } | 74 | } |
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/delivery/DeliveryExpressServiceImpl.java
| @@ -9,14 +9,14 @@ import cn.iocoder.yudao.module.trade.convert.delivery.DeliveryExpressConvert; | @@ -9,14 +9,14 @@ import cn.iocoder.yudao.module.trade.convert.delivery.DeliveryExpressConvert; | ||
| 9 | import cn.iocoder.yudao.module.trade.dal.dataobject.delivery.DeliveryExpressDO; | 9 | import cn.iocoder.yudao.module.trade.dal.dataobject.delivery.DeliveryExpressDO; |
| 10 | import cn.iocoder.yudao.module.trade.dal.mysql.delivery.DeliveryExpressMapper; | 10 | import cn.iocoder.yudao.module.trade.dal.mysql.delivery.DeliveryExpressMapper; |
| 11 | import org.springframework.stereotype.Service; | 11 | import org.springframework.stereotype.Service; |
| 12 | -import javax.annotation.Resource; | ||
| 13 | import org.springframework.validation.annotation.Validated; | 12 | import org.springframework.validation.annotation.Validated; |
| 14 | 13 | ||
| 15 | -import java.util.*; | ||
| 16 | - | 14 | +import javax.annotation.Resource; |
| 15 | +import java.util.List; | ||
| 17 | 16 | ||
| 18 | import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; | 17 | import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; |
| 19 | -import static cn.iocoder.yudao.module.trade.enums.ErrorCodeConstants.*; | 18 | +import static cn.iocoder.yudao.module.trade.enums.ErrorCodeConstants.EXPRESS_CODE_DUPLICATE; |
| 19 | +import static cn.iocoder.yudao.module.trade.enums.ErrorCodeConstants.EXPRESS_NOT_EXISTS; | ||
| 20 | 20 | ||
| 21 | /** | 21 | /** |
| 22 | * 快递公司 Service 实现类 | 22 | * 快递公司 Service 实现类 |
| @@ -85,11 +85,6 @@ public class DeliveryExpressServiceImpl implements DeliveryExpressService { | @@ -85,11 +85,6 @@ public class DeliveryExpressServiceImpl implements DeliveryExpressService { | ||
| 85 | } | 85 | } |
| 86 | 86 | ||
| 87 | @Override | 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) { | 88 | public PageResult<DeliveryExpressDO> getDeliveryExpressPage(DeliveryExpressPageReqVO pageReqVO) { |
| 94 | return deliveryExpressMapper.selectPage(pageReqVO); | 89 | return deliveryExpressMapper.selectPage(pageReqVO); |
| 95 | } | 90 | } |
| @@ -99,4 +94,9 @@ public class DeliveryExpressServiceImpl implements DeliveryExpressService { | @@ -99,4 +94,9 @@ public class DeliveryExpressServiceImpl implements DeliveryExpressService { | ||
| 99 | return deliveryExpressMapper.selectList(exportReqVO); | 94 | return deliveryExpressMapper.selectList(exportReqVO); |
| 100 | } | 95 | } |
| 101 | 96 | ||
| 97 | + @Override | ||
| 98 | + public List<DeliveryExpressDO> getDeliveryExpressList(Integer status) { | ||
| 99 | + return deliveryExpressMapper.selectListByStatus(status); | ||
| 100 | + } | ||
| 101 | + | ||
| 102 | } | 102 | } |