Commit d29c5a556ca59c137ba0cded9ddb931313d92a92
1 parent
716f11e8
订单管理:添加修改备注、订单调价、修改地址接口
Showing
8 changed files
with
163 additions
and
41 deletions
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/order/TradeOrderController.java
| @@ -25,7 +25,6 @@ import java.util.Map; | @@ -25,7 +25,6 @@ import java.util.Map; | ||
| 25 | 25 | ||
| 26 | import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; | 26 | import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; |
| 27 | import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; | 27 | import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; |
| 28 | -import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId; | ||
| 29 | 28 | ||
| 30 | @Tag(name = "管理后台 - 交易订单") | 29 | @Tag(name = "管理后台 - 交易订单") |
| 31 | @RestController | 30 | @RestController |
| @@ -78,17 +77,33 @@ public class TradeOrderController { | @@ -78,17 +77,33 @@ public class TradeOrderController { | ||
| 78 | 77 | ||
| 79 | @PostMapping("/delivery") | 78 | @PostMapping("/delivery") |
| 80 | @Operation(summary = "发货订单") | 79 | @Operation(summary = "发货订单") |
| 81 | - @PreAuthorize("@ss.hasPermission('trade:order:delivery')") | 80 | + @PreAuthorize("@ss.hasPermission('trade:order:update')") |
| 82 | public CommonResult<Boolean> deliveryOrder(@RequestBody TradeOrderDeliveryReqVO deliveryReqVO) { | 81 | public CommonResult<Boolean> deliveryOrder(@RequestBody TradeOrderDeliveryReqVO deliveryReqVO) { |
| 83 | - tradeOrderUpdateService.deliveryOrder(getLoginUserId(), deliveryReqVO); | 82 | + tradeOrderUpdateService.deliveryOrder(deliveryReqVO); |
| 84 | return success(true); | 83 | return success(true); |
| 85 | } | 84 | } |
| 86 | 85 | ||
| 87 | @PostMapping("/remark") | 86 | @PostMapping("/remark") |
| 88 | @Operation(summary = "发货订单") | 87 | @Operation(summary = "发货订单") |
| 89 | - @PreAuthorize("@ss.hasPermission('trade:order:remark')") | ||
| 90 | - public CommonResult<Boolean> remarkOrder(@RequestBody TradeOrderRemarkReqVO remarkReqVO) { | ||
| 91 | - tradeOrderUpdateService.remarkOrder(getLoginUserId(), remarkReqVO); | 88 | + @PreAuthorize("@ss.hasPermission('trade:order:update')") |
| 89 | + public CommonResult<Boolean> remarkOrder(@RequestBody TradeOrderRemarkReqVO reqVO) { | ||
| 90 | + tradeOrderUpdateService.remarkOrder(reqVO); | ||
| 91 | + return success(true); | ||
| 92 | + } | ||
| 93 | + | ||
| 94 | + @PostMapping("/adjust-price") | ||
| 95 | + @Operation(summary = "发货订单") | ||
| 96 | + @PreAuthorize("@ss.hasPermission('trade:order:update')") | ||
| 97 | + public CommonResult<Boolean> adjustPrice(@RequestBody TradeOrderAdjustPriceReqVO reqVO) { | ||
| 98 | + tradeOrderUpdateService.adjustPrice(reqVO); | ||
| 99 | + return success(true); | ||
| 100 | + } | ||
| 101 | + | ||
| 102 | + @PostMapping("/adjust-address") | ||
| 103 | + @Operation(summary = "发货订单") | ||
| 104 | + @PreAuthorize("@ss.hasPermission('trade:order:update')") | ||
| 105 | + public CommonResult<Boolean> adjustAddress(@RequestBody TradeOrderAdjustAddressReqVO reqVO) { | ||
| 106 | + tradeOrderUpdateService.adjustAddress(reqVO); | ||
| 92 | return success(true); | 107 | return success(true); |
| 93 | } | 108 | } |
| 94 | 109 |
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/order/vo/TradeOrderAdjustAddressReqVO.java
0 → 100644
| 1 | +package cn.iocoder.yudao.module.trade.controller.admin.order.vo; | ||
| 2 | + | ||
| 3 | +import io.swagger.v3.oas.annotations.media.Schema; | ||
| 4 | +import lombok.Data; | ||
| 5 | + | ||
| 6 | +import javax.validation.constraints.NotEmpty; | ||
| 7 | +import javax.validation.constraints.NotNull; | ||
| 8 | + | ||
| 9 | +@Schema(description = "管理后台 - 订单修改地址 Request VO") | ||
| 10 | +@Data | ||
| 11 | +public class TradeOrderAdjustAddressReqVO { | ||
| 12 | + | ||
| 13 | + @Schema(description = "订单编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") | ||
| 14 | + @NotNull(message = "订单编号不能为空") | ||
| 15 | + private Long id; | ||
| 16 | + | ||
| 17 | + @Schema(description = "收件人名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "z张三") | ||
| 18 | + @NotEmpty(message = "收件人名称不能为空") | ||
| 19 | + private String receiverName; | ||
| 20 | + | ||
| 21 | + @Schema(description = "收件人手机", requiredMode = Schema.RequiredMode.REQUIRED, example = "19988188888") | ||
| 22 | + @NotEmpty(message = "收件人手机不能为空") | ||
| 23 | + private String receiverMobile; | ||
| 24 | + | ||
| 25 | + @Schema(description = "收件人地区编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "7310") | ||
| 26 | + @NotNull(message = "收件人地区编号不能为空") | ||
| 27 | + private Integer receiverAreaId; | ||
| 28 | + | ||
| 29 | + @Schema(description = "收件人详细地址", requiredMode = Schema.RequiredMode.REQUIRED, example = "昆明市五华区xxx小区xxx") | ||
| 30 | + @NotEmpty(message = "收件人详细地址不能为空") | ||
| 31 | + private String receiverDetailAddress; | ||
| 32 | + | ||
| 33 | +} |
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/order/vo/TradeOrderAdjustPriceReqVO.java
0 → 100644
| 1 | +package cn.iocoder.yudao.module.trade.controller.admin.order.vo; | ||
| 2 | + | ||
| 3 | +import io.swagger.v3.oas.annotations.media.Schema; | ||
| 4 | +import lombok.Data; | ||
| 5 | + | ||
| 6 | +import javax.validation.constraints.NotNull; | ||
| 7 | + | ||
| 8 | +@Schema(description = "管理后台 - 订单改价 Request VO") | ||
| 9 | +@Data | ||
| 10 | +public class TradeOrderAdjustPriceReqVO { | ||
| 11 | + | ||
| 12 | + @Schema(description = "订单编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") | ||
| 13 | + @NotNull(message = "订单编号不能为空") | ||
| 14 | + private Long id; | ||
| 15 | + | ||
| 16 | + @Schema(description = "订单调价,单位:分 正数,加价;负数,减价", requiredMode = Schema.RequiredMode.REQUIRED, example = "-100") | ||
| 17 | + @NotNull(message = "订单调价价格不能为空") | ||
| 18 | + private Integer adjustPrice; | ||
| 19 | + | ||
| 20 | +} |
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/convert/order/TradeOrderConvert.java
| @@ -17,8 +17,7 @@ import cn.iocoder.yudao.module.promotion.api.combination.dto.CombinationRecordCr | @@ -17,8 +17,7 @@ import cn.iocoder.yudao.module.promotion.api.combination.dto.CombinationRecordCr | ||
| 17 | import cn.iocoder.yudao.module.trade.api.order.dto.TradeOrderRespDTO; | 17 | import cn.iocoder.yudao.module.trade.api.order.dto.TradeOrderRespDTO; |
| 18 | import cn.iocoder.yudao.module.trade.controller.admin.base.member.user.MemberUserRespVO; | 18 | import cn.iocoder.yudao.module.trade.controller.admin.base.member.user.MemberUserRespVO; |
| 19 | import cn.iocoder.yudao.module.trade.controller.admin.base.product.property.ProductPropertyValueDetailRespVO; | 19 | import cn.iocoder.yudao.module.trade.controller.admin.base.product.property.ProductPropertyValueDetailRespVO; |
| 20 | -import cn.iocoder.yudao.module.trade.controller.admin.order.vo.TradeOrderDetailRespVO; | ||
| 21 | -import cn.iocoder.yudao.module.trade.controller.admin.order.vo.TradeOrderPageItemRespVO; | 20 | +import cn.iocoder.yudao.module.trade.controller.admin.order.vo.*; |
| 22 | import cn.iocoder.yudao.module.trade.controller.app.base.property.AppProductPropertyValueDetailRespVO; | 21 | import cn.iocoder.yudao.module.trade.controller.app.base.property.AppProductPropertyValueDetailRespVO; |
| 23 | import cn.iocoder.yudao.module.trade.controller.app.order.vo.*; | 22 | import cn.iocoder.yudao.module.trade.controller.app.order.vo.*; |
| 24 | import cn.iocoder.yudao.module.trade.controller.app.order.vo.item.AppTradeOrderItemCommentCreateReqVO; | 23 | import cn.iocoder.yudao.module.trade.controller.app.order.vo.item.AppTradeOrderItemCommentCreateReqVO; |
| @@ -278,4 +277,10 @@ public interface TradeOrderConvert { | @@ -278,4 +277,10 @@ public interface TradeOrderConvert { | ||
| 278 | 277 | ||
| 279 | List<AppOrderExpressTrackRespDTO> convertList02(List<ExpressTrackRespDTO> list); | 278 | List<AppOrderExpressTrackRespDTO> convertList02(List<ExpressTrackRespDTO> list); |
| 280 | 279 | ||
| 280 | + TradeOrderDO convert(TradeOrderAdjustAddressReqVO reqVO); | ||
| 281 | + | ||
| 282 | + TradeOrderDO convert(TradeOrderAdjustPriceReqVO reqVO); | ||
| 283 | + | ||
| 284 | + TradeOrderDO convert(TradeOrderRemarkReqVO reqVO); | ||
| 285 | + | ||
| 281 | } | 286 | } |
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/order/TradeOrderUpdateService.java
| 1 | package cn.iocoder.yudao.module.trade.service.order; | 1 | package cn.iocoder.yudao.module.trade.service.order; |
| 2 | 2 | ||
| 3 | +import cn.iocoder.yudao.module.trade.controller.admin.order.vo.TradeOrderAdjustAddressReqVO; | ||
| 4 | +import cn.iocoder.yudao.module.trade.controller.admin.order.vo.TradeOrderAdjustPriceReqVO; | ||
| 3 | import cn.iocoder.yudao.module.trade.controller.admin.order.vo.TradeOrderDeliveryReqVO; | 5 | import cn.iocoder.yudao.module.trade.controller.admin.order.vo.TradeOrderDeliveryReqVO; |
| 4 | import cn.iocoder.yudao.module.trade.controller.admin.order.vo.TradeOrderRemarkReqVO; | 6 | import cn.iocoder.yudao.module.trade.controller.admin.order.vo.TradeOrderRemarkReqVO; |
| 5 | import cn.iocoder.yudao.module.trade.controller.app.order.vo.AppTradeOrderCreateReqVO; | 7 | import cn.iocoder.yudao.module.trade.controller.app.order.vo.AppTradeOrderCreateReqVO; |
| @@ -21,7 +23,7 @@ public interface TradeOrderUpdateService { | @@ -21,7 +23,7 @@ public interface TradeOrderUpdateService { | ||
| 21 | /** | 23 | /** |
| 22 | * 获得订单结算信息 | 24 | * 获得订单结算信息 |
| 23 | * | 25 | * |
| 24 | - * @param userId 登录用户 | 26 | + * @param userId 登录用户 |
| 25 | * @param settlementReqVO 订单结算请求 | 27 | * @param settlementReqVO 订单结算请求 |
| 26 | * @return 订单结算结果 | 28 | * @return 订单结算结果 |
| 27 | */ | 29 | */ |
| @@ -30,8 +32,8 @@ public interface TradeOrderUpdateService { | @@ -30,8 +32,8 @@ public interface TradeOrderUpdateService { | ||
| 30 | /** | 32 | /** |
| 31 | * 【会员】创建交易订单 | 33 | * 【会员】创建交易订单 |
| 32 | * | 34 | * |
| 33 | - * @param userId 登录用户 | ||
| 34 | - * @param userIp 用户 IP 地址 | 35 | + * @param userId 登录用户 |
| 36 | + * @param userIp 用户 IP 地址 | ||
| 35 | * @param createReqVO 创建交易订单请求模型 | 37 | * @param createReqVO 创建交易订单请求模型 |
| 36 | * @return 交易订单的 | 38 | * @return 交易订单的 |
| 37 | */ | 39 | */ |
| @@ -40,7 +42,7 @@ public interface TradeOrderUpdateService { | @@ -40,7 +42,7 @@ public interface TradeOrderUpdateService { | ||
| 40 | /** | 42 | /** |
| 41 | * 更新交易订单已支付 | 43 | * 更新交易订单已支付 |
| 42 | * | 44 | * |
| 43 | - * @param id 交易订单编号 | 45 | + * @param id 交易订单编号 |
| 44 | * @param payOrderId 支付订单编号 | 46 | * @param payOrderId 支付订单编号 |
| 45 | */ | 47 | */ |
| 46 | void updateOrderPaid(Long id, Long payOrderId); | 48 | void updateOrderPaid(Long id, Long payOrderId); |
| @@ -48,10 +50,9 @@ public interface TradeOrderUpdateService { | @@ -48,10 +50,9 @@ public interface TradeOrderUpdateService { | ||
| 48 | /** | 50 | /** |
| 49 | * 【管理员】发货交易订单 | 51 | * 【管理员】发货交易订单 |
| 50 | * | 52 | * |
| 51 | - * @param userId 管理员编号 | ||
| 52 | * @param deliveryReqVO 发货请求 | 53 | * @param deliveryReqVO 发货请求 |
| 53 | */ | 54 | */ |
| 54 | - void deliveryOrder(Long userId, TradeOrderDeliveryReqVO deliveryReqVO); | 55 | + void deliveryOrder(TradeOrderDeliveryReqVO deliveryReqVO); |
| 55 | 56 | ||
| 56 | /** | 57 | /** |
| 57 | * 【会员】收货交易订单 | 58 | * 【会员】收货交易订单 |
| @@ -64,17 +65,30 @@ public interface TradeOrderUpdateService { | @@ -64,17 +65,30 @@ public interface TradeOrderUpdateService { | ||
| 64 | /** | 65 | /** |
| 65 | * 【管理员】交易订单备注 | 66 | * 【管理员】交易订单备注 |
| 66 | * | 67 | * |
| 67 | - * @param loginUserId 管理员编号 | ||
| 68 | - * @param remarkReqVO 备注请求 | 68 | + * @param reqVO 请求 |
| 69 | */ | 69 | */ |
| 70 | - void remarkOrder(Long loginUserId, TradeOrderRemarkReqVO remarkReqVO); | 70 | + void remarkOrder(TradeOrderRemarkReqVO reqVO); |
| 71 | + | ||
| 72 | + /** | ||
| 73 | + * 调整价格 | ||
| 74 | + * | ||
| 75 | + * @param reqVO 请求 | ||
| 76 | + */ | ||
| 77 | + void adjustPrice(TradeOrderAdjustPriceReqVO reqVO); | ||
| 78 | + | ||
| 79 | + /** | ||
| 80 | + * 调整地址 | ||
| 81 | + * | ||
| 82 | + * @param reqVO 请求 | ||
| 83 | + */ | ||
| 84 | + void adjustAddress(TradeOrderAdjustAddressReqVO reqVO); | ||
| 71 | 85 | ||
| 72 | // =================== Order Item =================== | 86 | // =================== Order Item =================== |
| 73 | 87 | ||
| 74 | /** | 88 | /** |
| 75 | * 更新交易订单项的售后状态 | 89 | * 更新交易订单项的售后状态 |
| 76 | * | 90 | * |
| 77 | - * @param id 交易订单项编号 | 91 | + * @param id 交易订单项编号 |
| 78 | * @param oldAfterSaleStatus 当前售后状态;如果不符,更新后会抛出异常 | 92 | * @param oldAfterSaleStatus 当前售后状态;如果不符,更新后会抛出异常 |
| 79 | * @param newAfterSaleStatus 目标售后状态 | 93 | * @param newAfterSaleStatus 目标售后状态 |
| 80 | */ | 94 | */ |
| @@ -85,11 +99,11 @@ public interface TradeOrderUpdateService { | @@ -85,11 +99,11 @@ public interface TradeOrderUpdateService { | ||
| 85 | /** | 99 | /** |
| 86 | * 更新交易订单项的售后状态 | 100 | * 更新交易订单项的售后状态 |
| 87 | * | 101 | * |
| 88 | - * @param id 交易订单项编号 | 102 | + * @param id 交易订单项编号 |
| 89 | * @param oldAfterSaleStatus 当前售后状态;如果不符,更新后会抛出异常 | 103 | * @param oldAfterSaleStatus 当前售后状态;如果不符,更新后会抛出异常 |
| 90 | * @param newAfterSaleStatus 目标售后状态 | 104 | * @param newAfterSaleStatus 目标售后状态 |
| 91 | - * @param afterSaleId 售后单编号;当订单项发起售后时,必须传递该字段 | ||
| 92 | - * @param refundPrice 退款金额;当订单项退款成功时,必须传递该值 | 105 | + * @param afterSaleId 售后单编号;当订单项发起售后时,必须传递该字段 |
| 106 | + * @param refundPrice 退款金额;当订单项退款成功时,必须传递该值 | ||
| 93 | */ | 107 | */ |
| 94 | void updateOrderItemAfterSaleStatus(Long id, Integer oldAfterSaleStatus, Integer newAfterSaleStatus, | 108 | void updateOrderItemAfterSaleStatus(Long id, Integer oldAfterSaleStatus, Integer newAfterSaleStatus, |
| 95 | Long afterSaleId, Integer refundPrice); | 109 | Long afterSaleId, Integer refundPrice); |
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/order/TradeOrderUpdateServiceImpl.java
| @@ -29,6 +29,8 @@ import cn.iocoder.yudao.module.promotion.api.combination.dto.CombinationRecordUp | @@ -29,6 +29,8 @@ import cn.iocoder.yudao.module.promotion.api.combination.dto.CombinationRecordUp | ||
| 29 | import cn.iocoder.yudao.module.promotion.api.coupon.CouponApi; | 29 | import cn.iocoder.yudao.module.promotion.api.coupon.CouponApi; |
| 30 | import cn.iocoder.yudao.module.promotion.api.coupon.dto.CouponUseReqDTO; | 30 | import cn.iocoder.yudao.module.promotion.api.coupon.dto.CouponUseReqDTO; |
| 31 | import cn.iocoder.yudao.module.promotion.enums.combination.CombinationRecordStatusEnum; | 31 | import cn.iocoder.yudao.module.promotion.enums.combination.CombinationRecordStatusEnum; |
| 32 | +import cn.iocoder.yudao.module.trade.controller.admin.order.vo.TradeOrderAdjustAddressReqVO; | ||
| 33 | +import cn.iocoder.yudao.module.trade.controller.admin.order.vo.TradeOrderAdjustPriceReqVO; | ||
| 32 | import cn.iocoder.yudao.module.trade.controller.admin.order.vo.TradeOrderDeliveryReqVO; | 34 | import cn.iocoder.yudao.module.trade.controller.admin.order.vo.TradeOrderDeliveryReqVO; |
| 33 | import cn.iocoder.yudao.module.trade.controller.admin.order.vo.TradeOrderRemarkReqVO; | 35 | import cn.iocoder.yudao.module.trade.controller.admin.order.vo.TradeOrderRemarkReqVO; |
| 34 | import cn.iocoder.yudao.module.trade.controller.app.order.vo.AppTradeOrderCreateReqVO; | 36 | import cn.iocoder.yudao.module.trade.controller.app.order.vo.AppTradeOrderCreateReqVO; |
| @@ -54,6 +56,7 @@ import cn.iocoder.yudao.module.trade.service.price.TradePriceService; | @@ -54,6 +56,7 @@ import cn.iocoder.yudao.module.trade.service.price.TradePriceService; | ||
| 54 | import cn.iocoder.yudao.module.trade.service.price.bo.TradePriceCalculateReqBO; | 56 | import cn.iocoder.yudao.module.trade.service.price.bo.TradePriceCalculateReqBO; |
| 55 | import cn.iocoder.yudao.module.trade.service.price.bo.TradePriceCalculateRespBO; | 57 | import cn.iocoder.yudao.module.trade.service.price.bo.TradePriceCalculateRespBO; |
| 56 | import lombok.extern.slf4j.Slf4j; | 58 | import lombok.extern.slf4j.Slf4j; |
| 59 | +import org.jetbrains.annotations.NotNull; | ||
| 57 | import org.springframework.stereotype.Service; | 60 | import org.springframework.stereotype.Service; |
| 58 | import org.springframework.transaction.annotation.Transactional; | 61 | import org.springframework.transaction.annotation.Transactional; |
| 59 | 62 | ||
| @@ -65,6 +68,7 @@ import java.util.Objects; | @@ -65,6 +68,7 @@ import java.util.Objects; | ||
| 65 | import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; | 68 | import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; |
| 66 | import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.*; | 69 | import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.*; |
| 67 | import static cn.iocoder.yudao.module.pay.enums.ErrorCodeConstants.ORDER_NOT_FOUND; | 70 | import static cn.iocoder.yudao.module.pay.enums.ErrorCodeConstants.ORDER_NOT_FOUND; |
| 71 | +import static cn.iocoder.yudao.module.pay.enums.ErrorCodeConstants.ORDER_PAID_NO_ADJUST_PRICE; | ||
| 68 | import static cn.iocoder.yudao.module.trade.enums.ErrorCodeConstants.*; | 72 | import static cn.iocoder.yudao.module.trade.enums.ErrorCodeConstants.*; |
| 69 | 73 | ||
| 70 | /** | 74 | /** |
| @@ -346,10 +350,7 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService { | @@ -346,10 +350,7 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService { | ||
| 346 | */ | 350 | */ |
| 347 | private KeyValue<TradeOrderDO, PayOrderRespDTO> validateOrderPayable(Long id, Long payOrderId) { | 351 | private KeyValue<TradeOrderDO, PayOrderRespDTO> validateOrderPayable(Long id, Long payOrderId) { |
| 348 | // 校验订单是否存在 | 352 | // 校验订单是否存在 |
| 349 | - TradeOrderDO order = tradeOrderMapper.selectById(id); | ||
| 350 | - if (order == null) { | ||
| 351 | - throw exception(ORDER_NOT_FOUND); | ||
| 352 | - } | 353 | + TradeOrderDO order = validateOrder(id); |
| 353 | // 校验订单未支付 | 354 | // 校验订单未支付 |
| 354 | if (!TradeOrderStatusEnum.isUnpaid(order.getStatus()) || order.getPayStatus()) { | 355 | if (!TradeOrderStatusEnum.isUnpaid(order.getStatus()) || order.getPayStatus()) { |
| 355 | log.error("[validateOrderPaid][order({}) 不处于待支付状态,请进行处理!order 数据是:{}]", | 356 | log.error("[validateOrderPaid][order({}) 不处于待支付状态,请进行处理!order 数据是:{}]", |
| @@ -392,7 +393,7 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService { | @@ -392,7 +393,7 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService { | ||
| 392 | 393 | ||
| 393 | @Override | 394 | @Override |
| 394 | @Transactional(rollbackFor = Exception.class) | 395 | @Transactional(rollbackFor = Exception.class) |
| 395 | - public void deliveryOrder(Long userId, TradeOrderDeliveryReqVO deliveryReqVO) { | 396 | + public void deliveryOrder(TradeOrderDeliveryReqVO deliveryReqVO) { |
| 396 | // TODO @puhui999:只有选择快递的,才可以发货 | 397 | // TODO @puhui999:只有选择快递的,才可以发货 |
| 397 | // 1.1 校验并获得交易订单(可发货) | 398 | // 1.1 校验并获得交易订单(可发货) |
| 398 | TradeOrderDO order = validateOrderDeliverable(deliveryReqVO.getId()); | 399 | TradeOrderDO order = validateOrderDeliverable(deliveryReqVO.getId()); |
| @@ -424,7 +425,7 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService { | @@ -424,7 +425,7 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService { | ||
| 424 | 425 | ||
| 425 | // 发送站内信 | 426 | // 发送站内信 |
| 426 | tradeMessageService.sendMessageWhenDeliveryOrder(new TradeOrderMessageWhenDeliveryOrderReqBO().setOrderId(order.getId()) | 427 | tradeMessageService.sendMessageWhenDeliveryOrder(new TradeOrderMessageWhenDeliveryOrderReqBO().setOrderId(order.getId()) |
| 427 | - .setUserId(userId).setMessage(null)); | 428 | + .setUserId(order.getUserId()).setMessage(null)); |
| 428 | 429 | ||
| 429 | // TODO 芋艿:OrderLog | 430 | // TODO 芋艿:OrderLog |
| 430 | // TODO 设计:lili:是不是发货后,才支持售后? | 431 | // TODO 设计:lili:是不是发货后,才支持售后? |
| @@ -439,11 +440,7 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService { | @@ -439,11 +440,7 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService { | ||
| 439 | * @return 交易订单 | 440 | * @return 交易订单 |
| 440 | */ | 441 | */ |
| 441 | private TradeOrderDO validateOrderDeliverable(Long id) { | 442 | private TradeOrderDO validateOrderDeliverable(Long id) { |
| 442 | - // 校验订单是否存在 | ||
| 443 | - TradeOrderDO order = tradeOrderMapper.selectById(id); | ||
| 444 | - if (order == null) { | ||
| 445 | - throw exception(ORDER_NOT_FOUND); | ||
| 446 | - } | 443 | + TradeOrderDO order = validateOrder(id); |
| 447 | // 校验订单是否是待发货状态 | 444 | // 校验订单是否是待发货状态 |
| 448 | if (!TradeOrderStatusEnum.isUndelivered(order.getStatus())) { | 445 | if (!TradeOrderStatusEnum.isUndelivered(order.getStatus())) { |
| 449 | throw exception(ORDER_DELIVERY_FAIL_STATUS_NOT_UNDELIVERED); | 446 | throw exception(ORDER_DELIVERY_FAIL_STATUS_NOT_UNDELIVERED); |
| @@ -469,6 +466,16 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService { | @@ -469,6 +466,16 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService { | ||
| 469 | return order; | 466 | return order; |
| 470 | } | 467 | } |
| 471 | 468 | ||
| 469 | + @NotNull | ||
| 470 | + private TradeOrderDO validateOrder(Long id) { | ||
| 471 | + // 校验订单是否存在 | ||
| 472 | + TradeOrderDO order = tradeOrderMapper.selectById(id); | ||
| 473 | + if (order == null) { | ||
| 474 | + throw exception(ORDER_NOT_FOUND); | ||
| 475 | + } | ||
| 476 | + return order; | ||
| 477 | + } | ||
| 478 | + | ||
| 472 | @Override | 479 | @Override |
| 473 | @Transactional(rollbackFor = Exception.class) | 480 | @Transactional(rollbackFor = Exception.class) |
| 474 | public void receiveOrder(Long userId, Long id) { | 481 | public void receiveOrder(Long userId, Long id) { |
| @@ -489,14 +496,39 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService { | @@ -489,14 +496,39 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService { | ||
| 489 | } | 496 | } |
| 490 | 497 | ||
| 491 | @Override | 498 | @Override |
| 492 | - public void remarkOrder(Long loginUserId, TradeOrderRemarkReqVO remarkReqVO) { | 499 | + public void remarkOrder(TradeOrderRemarkReqVO reqVO) { |
| 493 | // 校验并获得交易订单 | 500 | // 校验并获得交易订单 |
| 494 | - validateOrderDeliverable(remarkReqVO.getId()); | 501 | + validateOrder(reqVO.getId()); |
| 495 | 502 | ||
| 496 | - TradeOrderDO updateOrderObj = new TradeOrderDO(); | ||
| 497 | - updateOrderObj.setId(remarkReqVO.getId()); | ||
| 498 | - updateOrderObj.setRemark(remarkReqVO.getRemark()); | ||
| 499 | - tradeOrderMapper.updateById(updateOrderObj); | 503 | + // 更新 |
| 504 | + TradeOrderDO order = TradeOrderConvert.INSTANCE.convert(reqVO); | ||
| 505 | + tradeOrderMapper.updateById(order); | ||
| 506 | + } | ||
| 507 | + | ||
| 508 | + @Override | ||
| 509 | + public void adjustPrice(TradeOrderAdjustPriceReqVO reqVO) { | ||
| 510 | + // 校验交易订单 | ||
| 511 | + TradeOrderDO order = validateOrder(reqVO.getId()); | ||
| 512 | + if (order.getPayStatus()) { | ||
| 513 | + throw exception(ORDER_PAID_NO_ADJUST_PRICE); | ||
| 514 | + } | ||
| 515 | + | ||
| 516 | + // 更新 | ||
| 517 | + TradeOrderDO update = TradeOrderConvert.INSTANCE.convert(reqVO); | ||
| 518 | + update.setPayPrice(update.getPayPrice() + update.getAdjustPrice()); | ||
| 519 | + tradeOrderMapper.updateById(update); | ||
| 520 | + } | ||
| 521 | + | ||
| 522 | + @Override | ||
| 523 | + public void adjustAddress(TradeOrderAdjustAddressReqVO reqVO) { | ||
| 524 | + // 校验交易订单 | ||
| 525 | + validateOrder(reqVO.getId()); | ||
| 526 | + // TODO 是否需要校验订单是否发货 | ||
| 527 | + // TODO 发货后是否支持修改收货地址 | ||
| 528 | + | ||
| 529 | + // 更新 | ||
| 530 | + TradeOrderDO update = TradeOrderConvert.INSTANCE.convert(reqVO); | ||
| 531 | + tradeOrderMapper.updateById(update); | ||
| 500 | } | 532 | } |
| 501 | 533 | ||
| 502 | /** | 534 | /** |
yudao-module-mall/yudao-module-trade-biz/src/test/java/cn/iocoder/yudao/module/trade/service/order/TradeOrderUpdateServiceTest.java
| @@ -23,7 +23,10 @@ import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderDO; | @@ -23,7 +23,10 @@ import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderDO; | ||
| 23 | import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderItemDO; | 23 | import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderItemDO; |
| 24 | import cn.iocoder.yudao.module.trade.dal.mysql.order.TradeOrderItemMapper; | 24 | import cn.iocoder.yudao.module.trade.dal.mysql.order.TradeOrderItemMapper; |
| 25 | import cn.iocoder.yudao.module.trade.dal.mysql.order.TradeOrderMapper; | 25 | import cn.iocoder.yudao.module.trade.dal.mysql.order.TradeOrderMapper; |
| 26 | -import cn.iocoder.yudao.module.trade.enums.order.*; | 26 | +import cn.iocoder.yudao.module.trade.enums.order.TradeOrderItemAfterSaleStatusEnum; |
| 27 | +import cn.iocoder.yudao.module.trade.enums.order.TradeOrderRefundStatusEnum; | ||
| 28 | +import cn.iocoder.yudao.module.trade.enums.order.TradeOrderStatusEnum; | ||
| 29 | +import cn.iocoder.yudao.module.trade.enums.order.TradeOrderTypeEnum; | ||
| 27 | import cn.iocoder.yudao.module.trade.framework.order.config.TradeOrderConfig; | 30 | import cn.iocoder.yudao.module.trade.framework.order.config.TradeOrderConfig; |
| 28 | import cn.iocoder.yudao.module.trade.framework.order.config.TradeOrderProperties; | 31 | import cn.iocoder.yudao.module.trade.framework.order.config.TradeOrderProperties; |
| 29 | import org.junit.jupiter.api.BeforeEach; | 32 | import org.junit.jupiter.api.BeforeEach; |
| @@ -38,7 +41,6 @@ import java.util.List; | @@ -38,7 +41,6 @@ import java.util.List; | ||
| 38 | 41 | ||
| 39 | import static cn.iocoder.yudao.framework.common.util.collection.SetUtils.asSet; | 42 | import static cn.iocoder.yudao.framework.common.util.collection.SetUtils.asSet; |
| 40 | import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals; | 43 | import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals; |
| 41 | -import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomLongId; | ||
| 42 | import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomPojo; | 44 | import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomPojo; |
| 43 | import static java.util.Collections.singletonList; | 45 | import static java.util.Collections.singletonList; |
| 44 | import static org.junit.jupiter.api.Assertions.*; | 46 | import static org.junit.jupiter.api.Assertions.*; |
| @@ -282,7 +284,7 @@ public class TradeOrderUpdateServiceTest extends BaseDbUnitTest { | @@ -282,7 +284,7 @@ public class TradeOrderUpdateServiceTest extends BaseDbUnitTest { | ||
| 282 | // mock 方法(支付单) | 284 | // mock 方法(支付单) |
| 283 | 285 | ||
| 284 | // 调用 | 286 | // 调用 |
| 285 | - tradeOrderUpdateService.deliveryOrder(randomLongId(), deliveryReqVO); | 287 | + tradeOrderUpdateService.deliveryOrder(deliveryReqVO); |
| 286 | // 断言 | 288 | // 断言 |
| 287 | TradeOrderDO dbOrder = tradeOrderMapper.selectById(1L); | 289 | TradeOrderDO dbOrder = tradeOrderMapper.selectById(1L); |
| 288 | assertEquals(dbOrder.getStatus(), TradeOrderStatusEnum.DELIVERED.getStatus()); | 290 | assertEquals(dbOrder.getStatus(), TradeOrderStatusEnum.DELIVERED.getStatus()); |
yudao-module-pay/yudao-module-pay-api/src/main/java/cn/iocoder/yudao/module/pay/enums/ErrorCodeConstants.java
| @@ -27,6 +27,7 @@ public interface ErrorCodeConstants { | @@ -27,6 +27,7 @@ public interface ErrorCodeConstants { | ||
| 27 | ErrorCode ORDER_IS_EXPIRED = new ErrorCode(1007002003, "支付订单已经过期"); | 27 | ErrorCode ORDER_IS_EXPIRED = new ErrorCode(1007002003, "支付订单已经过期"); |
| 28 | ErrorCode ORDER_SUBMIT_CHANNEL_ERROR = new ErrorCode(1007002004, "发起支付报错,错误码:{},错误提示:{}"); | 28 | ErrorCode ORDER_SUBMIT_CHANNEL_ERROR = new ErrorCode(1007002004, "发起支付报错,错误码:{},错误提示:{}"); |
| 29 | ErrorCode ORDER_REFUND_FAIL_STATUS_ERROR = new ErrorCode(1007002005, "支付订单退款失败,原因:状态不是已支付或已退款"); | 29 | ErrorCode ORDER_REFUND_FAIL_STATUS_ERROR = new ErrorCode(1007002005, "支付订单退款失败,原因:状态不是已支付或已退款"); |
| 30 | + ErrorCode ORDER_PAID_NO_ADJUST_PRICE = new ErrorCode(1007002006, "支付订单调价失败,原因:支付订单已付款,不能调价"); | ||
| 30 | 31 | ||
| 31 | // ========== ORDER 模块(拓展单) 1007003000 ========== | 32 | // ========== ORDER 模块(拓展单) 1007003000 ========== |
| 32 | ErrorCode ORDER_EXTENSION_NOT_FOUND = new ErrorCode(1007003000, "支付交易拓展单不存在"); | 33 | ErrorCode ORDER_EXTENSION_NOT_FOUND = new ErrorCode(1007003000, "支付交易拓展单不存在"); |