Commit 63fcc699306f40270ed3ffe048b9b4bcbb3226e6
1 parent
710f29d9
【代码优化】商城: 取消支付订单
Showing
6 changed files
with
28 additions
and
18 deletions
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/service/combination/CombinationRecordServiceImpl.java
| ... | ... | @@ -27,6 +27,7 @@ import cn.iocoder.yudao.module.promotion.enums.combination.CombinationRecordStat |
| 27 | 27 | import cn.iocoder.yudao.module.system.api.social.SocialClientApi; |
| 28 | 28 | import cn.iocoder.yudao.module.system.api.social.dto.SocialWxaSubscribeMessageSendReqDTO; |
| 29 | 29 | import cn.iocoder.yudao.module.trade.api.order.TradeOrderApi; |
| 30 | +import cn.iocoder.yudao.module.trade.enums.order.TradeOrderCancelTypeEnum; | |
| 30 | 31 | import jakarta.annotation.Nullable; |
| 31 | 32 | import jakarta.annotation.Resource; |
| 32 | 33 | import lombok.extern.slf4j.Slf4j; |
| ... | ... | @@ -37,7 +38,10 @@ import org.springframework.transaction.annotation.Transactional; |
| 37 | 38 | import org.springframework.validation.annotation.Validated; |
| 38 | 39 | |
| 39 | 40 | import java.time.LocalDateTime; |
| 40 | -import java.util.*; | |
| 41 | +import java.util.ArrayList; | |
| 42 | +import java.util.Collection; | |
| 43 | +import java.util.List; | |
| 44 | +import java.util.Map; | |
| 41 | 45 | |
| 42 | 46 | import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; |
| 43 | 47 | import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.*; |
| ... | ... | @@ -335,7 +339,8 @@ public class CombinationRecordServiceImpl implements CombinationRecordService { |
| 335 | 339 | List<CombinationRecordDO> headAndRecords = updateBatchCombinationRecords(headRecord, |
| 336 | 340 | CombinationRecordStatusEnum.FAILED); |
| 337 | 341 | // 2. 订单取消 |
| 338 | - headAndRecords.forEach(item -> tradeOrderApi.cancelPaidOrder(item.getUserId(), item.getOrderId())); | |
| 342 | + headAndRecords.forEach(item -> tradeOrderApi.cancelPaidOrder(item.getUserId(), item.getOrderId(), | |
| 343 | + TradeOrderCancelTypeEnum.COMBINATION_CLOSE)); | |
| 339 | 344 | } |
| 340 | 345 | |
| 341 | 346 | /** | ... | ... |
yudao-module-mall/yudao-module-trade-api/src/main/java/cn/iocoder/yudao/module/trade/api/order/TradeOrderApi.java
| 1 | 1 | package cn.iocoder.yudao.module.trade.api.order; |
| 2 | 2 | |
| 3 | 3 | import cn.iocoder.yudao.module.trade.api.order.dto.TradeOrderRespDTO; |
| 4 | +import cn.iocoder.yudao.module.trade.enums.order.TradeOrderCancelTypeEnum; | |
| 4 | 5 | |
| 5 | 6 | import java.util.Collection; |
| 6 | 7 | import java.util.List; |
| ... | ... | @@ -31,9 +32,10 @@ public interface TradeOrderApi { |
| 31 | 32 | /** |
| 32 | 33 | * 取消支付订单 |
| 33 | 34 | * |
| 34 | - * @param userId 用户编号 | |
| 35 | - * @param orderId 订单编号 | |
| 35 | + * @param userId 用户编号 | |
| 36 | + * @param orderId 订单编号 | |
| 37 | + * @param cancelTypeEnum 取消类型 | |
| 36 | 38 | */ |
| 37 | - void cancelPaidOrder(Long userId, Long orderId); | |
| 39 | + void cancelPaidOrder(Long userId, Long orderId, TradeOrderCancelTypeEnum cancelTypeEnum); | |
| 38 | 40 | |
| 39 | 41 | } | ... | ... |
yudao-module-mall/yudao-module-trade-api/src/main/java/cn/iocoder/yudao/module/trade/enums/order/TradeOrderCancelTypeEnum.java
| ... | ... | @@ -17,7 +17,8 @@ public enum TradeOrderCancelTypeEnum implements IntArrayValuable { |
| 17 | 17 | |
| 18 | 18 | PAY_TIMEOUT(10, "超时未支付"), |
| 19 | 19 | AFTER_SALE_CLOSE(20, "退款关闭"), |
| 20 | - MEMBER_CANCEL(30, "买家取消"); | |
| 20 | + MEMBER_CANCEL(30, "买家取消"), | |
| 21 | + COMBINATION_CLOSE(40, "拼团关闭"); | |
| 21 | 22 | |
| 22 | 23 | public static final int[] ARRAYS = Arrays.stream(values()).mapToInt(TradeOrderCancelTypeEnum::getType).toArray(); |
| 23 | 24 | ... | ... |
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/api/order/TradeOrderApiImpl.java
| ... | ... | @@ -2,12 +2,13 @@ package cn.iocoder.yudao.module.trade.api.order; |
| 2 | 2 | |
| 3 | 3 | import cn.iocoder.yudao.module.trade.api.order.dto.TradeOrderRespDTO; |
| 4 | 4 | import cn.iocoder.yudao.module.trade.convert.order.TradeOrderConvert; |
| 5 | +import cn.iocoder.yudao.module.trade.enums.order.TradeOrderCancelTypeEnum; | |
| 5 | 6 | import cn.iocoder.yudao.module.trade.service.order.TradeOrderQueryService; |
| 6 | 7 | import cn.iocoder.yudao.module.trade.service.order.TradeOrderUpdateService; |
| 8 | +import jakarta.annotation.Resource; | |
| 7 | 9 | import org.springframework.stereotype.Service; |
| 8 | 10 | import org.springframework.validation.annotation.Validated; |
| 9 | 11 | |
| 10 | -import jakarta.annotation.Resource; | |
| 11 | 12 | import java.util.Collection; |
| 12 | 13 | import java.util.List; |
| 13 | 14 | |
| ... | ... | @@ -36,8 +37,8 @@ public class TradeOrderApiImpl implements TradeOrderApi { |
| 36 | 37 | } |
| 37 | 38 | |
| 38 | 39 | @Override |
| 39 | - public void cancelPaidOrder(Long userId, Long orderId) { | |
| 40 | - tradeOrderUpdateService.cancelPaidOrder(userId, orderId); | |
| 40 | + public void cancelPaidOrder(Long userId, Long orderId, TradeOrderCancelTypeEnum cancelTypeEnum) { | |
| 41 | + tradeOrderUpdateService.cancelPaidOrder(userId, orderId, cancelTypeEnum); | |
| 41 | 42 | } |
| 42 | 43 | |
| 43 | 44 | } | ... | ... |
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/order/TradeOrderUpdateService.java
| 1 | 1 | package cn.iocoder.yudao.module.trade.service.order; |
| 2 | 2 | |
| 3 | -import cn.iocoder.yudao.framework.common.enums.TerminalEnum; | |
| 4 | 3 | import cn.iocoder.yudao.module.trade.controller.admin.order.vo.TradeOrderDeliveryReqVO; |
| 5 | 4 | import cn.iocoder.yudao.module.trade.controller.admin.order.vo.TradeOrderRemarkReqVO; |
| 6 | 5 | import cn.iocoder.yudao.module.trade.controller.admin.order.vo.TradeOrderUpdateAddressReqVO; |
| ... | ... | @@ -10,7 +9,7 @@ import cn.iocoder.yudao.module.trade.controller.app.order.vo.AppTradeOrderSettle |
| 10 | 9 | import cn.iocoder.yudao.module.trade.controller.app.order.vo.AppTradeOrderSettlementRespVO; |
| 11 | 10 | import cn.iocoder.yudao.module.trade.controller.app.order.vo.item.AppTradeOrderItemCommentCreateReqVO; |
| 12 | 11 | import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderDO; |
| 13 | - | |
| 12 | +import cn.iocoder.yudao.module.trade.enums.order.TradeOrderCancelTypeEnum; | |
| 14 | 13 | import jakarta.validation.constraints.NotNull; |
| 15 | 14 | |
| 16 | 15 | /** |
| ... | ... | @@ -188,12 +187,14 @@ public interface TradeOrderUpdateService { |
| 188 | 187 | void updateOrderCombinationInfo(Long orderId, Long activityId, Long combinationRecordId, Long headId); |
| 189 | 188 | |
| 190 | 189 | // TODO 芋艿:拼团取消,不调这个接口哈; |
| 190 | + | |
| 191 | 191 | /** |
| 192 | 192 | * 取消支付订单 |
| 193 | 193 | * |
| 194 | - * @param userId 用户编号 | |
| 195 | - * @param orderId 订单编号 | |
| 194 | + * @param userId 用户编号 | |
| 195 | + * @param orderId 订单编号 | |
| 196 | + * @param cancelTypeEnum 取消类型 | |
| 196 | 197 | */ |
| 197 | - void cancelPaidOrder(Long userId, Long orderId); | |
| 198 | + void cancelPaidOrder(Long userId, Long orderId, TradeOrderCancelTypeEnum cancelTypeEnum); | |
| 198 | 199 | |
| 199 | 200 | } | ... | ... |
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/order/TradeOrderUpdateServiceImpl.java
| ... | ... | @@ -858,13 +858,13 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService { |
| 858 | 858 | |
| 859 | 859 | @Override |
| 860 | 860 | @Transactional(rollbackFor = Exception.class) |
| 861 | - public void cancelPaidOrder(Long userId, Long orderId) { | |
| 862 | - // TODO @puhui999:可能要加一个拼团取消;TradeOrderCancelTypeEnum.AFTER_SALE_CLOSE;然后参数传入下; | |
| 861 | + public void cancelPaidOrder(Long userId, Long orderId, TradeOrderCancelTypeEnum cancelTypeEnum) { | |
| 863 | 862 | // 1.1 检验订单存在 |
| 864 | 863 | TradeOrderDO order = tradeOrderMapper.selectOrderByIdAndUserId(orderId, userId); |
| 865 | 864 | if (order == null) { |
| 866 | 865 | throw exception(ORDER_NOT_FOUND); |
| 867 | 866 | } |
| 867 | + | |
| 868 | 868 | // 1.2 校验订单是否支付 |
| 869 | 869 | if (!order.getPayStatus()) { |
| 870 | 870 | throw exception(ORDER_CANCEL_PAID_FAIL, "已支付"); |
| ... | ... | @@ -875,13 +875,13 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService { |
| 875 | 875 | } |
| 876 | 876 | |
| 877 | 877 | // 2.1 取消订单 |
| 878 | - cancelOrder0(order, TradeOrderCancelTypeEnum.AFTER_SALE_CLOSE); | |
| 878 | + cancelOrder0(order, cancelTypeEnum); | |
| 879 | 879 | // 2.2 创建退款单 |
| 880 | 880 | payRefundApi.createRefund(new PayRefundCreateReqDTO() |
| 881 | 881 | .setAppKey(tradeOrderProperties.getPayAppKey()).setUserIp(getClientIP()) // 支付应用 |
| 882 | 882 | .setMerchantOrderId(String.valueOf(order.getId())) // 支付单号 |
| 883 | 883 | .setMerchantRefundId(String.valueOf(order.getId())) |
| 884 | - .setReason("取消支付订单").setPrice(order.getPayPrice()));// 价格信息 | |
| 884 | + .setReason(cancelTypeEnum.getName()).setPrice(order.getPayPrice()));// 价格信息 | |
| 885 | 885 | } |
| 886 | 886 | |
| 887 | 887 | /** | ... | ... |