Commit a159a983a2da801b654c84f74f34645e073902fd
1 parent
159c74ce
订单:
1. 拆分读写 OrderService,避免单 Service 逻辑过重。
Showing
11 changed files
with
252 additions
and
254 deletions
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/api/order/TradeOrderApiImpl.java
| 1 | 1 | package cn.iocoder.yudao.module.trade.api.order; |
| 2 | 2 | |
| 3 | 3 | import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderItemDO; |
| 4 | -import cn.iocoder.yudao.module.trade.service.order.TradeOrderService; | |
| 4 | +import cn.iocoder.yudao.module.trade.service.order.TradeOrderQueryService; | |
| 5 | 5 | import org.springframework.stereotype.Service; |
| 6 | 6 | import org.springframework.validation.annotation.Validated; |
| 7 | 7 | |
| ... | ... | @@ -20,12 +20,12 @@ import static cn.iocoder.yudao.module.trade.enums.ErrorCodeConstants.ORDER_ITEM_ |
| 20 | 20 | public class TradeOrderApiImpl implements TradeOrderApi { |
| 21 | 21 | |
| 22 | 22 | @Resource |
| 23 | - private TradeOrderService tradeOrderService; | |
| 23 | + private TradeOrderQueryService tradeOrderQueryService; | |
| 24 | 24 | |
| 25 | 25 | @Override |
| 26 | 26 | public Long validateOrder(Long userId, Long orderItemId) { |
| 27 | 27 | // 校验订单项,订单项存在订单就存在 |
| 28 | - TradeOrderItemDO item = tradeOrderService.getOrderItem(userId, orderItemId); | |
| 28 | + TradeOrderItemDO item = tradeOrderQueryService.getOrderItem(userId, orderItemId); | |
| 29 | 29 | if (item == null) { |
| 30 | 30 | throw exception(ORDER_ITEM_NOT_FOUND); |
| 31 | 31 | } | ... | ... |
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/order/TradeOrderController.java
| ... | ... | @@ -14,7 +14,8 @@ import cn.iocoder.yudao.module.trade.controller.admin.order.vo.TradeOrderPageReq |
| 14 | 14 | import cn.iocoder.yudao.module.trade.convert.order.TradeOrderConvert; |
| 15 | 15 | import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderDO; |
| 16 | 16 | import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderItemDO; |
| 17 | -import cn.iocoder.yudao.module.trade.service.order.TradeOrderService; | |
| 17 | +import cn.iocoder.yudao.module.trade.service.order.TradeOrderQueryService; | |
| 18 | +import cn.iocoder.yudao.module.trade.service.order.TradeOrderUpdateService; | |
| 18 | 19 | import io.swagger.v3.oas.annotations.Operation; |
| 19 | 20 | import io.swagger.v3.oas.annotations.Parameter; |
| 20 | 21 | import io.swagger.v3.oas.annotations.tags.Tag; |
| ... | ... | @@ -39,7 +40,9 @@ import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUti |
| 39 | 40 | public class TradeOrderController { |
| 40 | 41 | |
| 41 | 42 | @Resource |
| 42 | - private TradeOrderService tradeOrderService; | |
| 43 | + private TradeOrderUpdateService tradeOrderUpdateService; | |
| 44 | + @Resource | |
| 45 | + private TradeOrderQueryService tradeOrderQueryService; | |
| 43 | 46 | |
| 44 | 47 | @Resource |
| 45 | 48 | private ProductPropertyValueApi productPropertyValueApi; |
| ... | ... | @@ -51,7 +54,7 @@ public class TradeOrderController { |
| 51 | 54 | @PreAuthorize("@ss.hasPermission('trade:order:query')") |
| 52 | 55 | public CommonResult<PageResult<TradeOrderPageItemRespVO>> getOrderPage(TradeOrderPageReqVO reqVO) { |
| 53 | 56 | // 查询订单 |
| 54 | - PageResult<TradeOrderDO> pageResult = tradeOrderService.getOrderPage(reqVO); | |
| 57 | + PageResult<TradeOrderDO> pageResult = tradeOrderQueryService.getOrderPage(reqVO); | |
| 55 | 58 | if (CollUtil.isEmpty(pageResult.getList())) { |
| 56 | 59 | return success(PageResult.empty()); |
| 57 | 60 | } |
| ... | ... | @@ -59,7 +62,7 @@ public class TradeOrderController { |
| 59 | 62 | // 查询用户信息 |
| 60 | 63 | Map<Long, MemberUserRespDTO> userMap = memberUserApi.getUserMap(convertSet(pageResult.getList(), TradeOrderDO::getUserId));; |
| 61 | 64 | // 查询订单项 |
| 62 | - List<TradeOrderItemDO> orderItems = tradeOrderService.getOrderItemListByOrderId( | |
| 65 | + List<TradeOrderItemDO> orderItems = tradeOrderQueryService.getOrderItemListByOrderId( | |
| 63 | 66 | convertSet(pageResult.getList(), TradeOrderDO::getId)); |
| 64 | 67 | // 查询商品属性 |
| 65 | 68 | List<ProductPropertyValueDetailRespDTO> propertyValueDetails = productPropertyValueApi |
| ... | ... | @@ -74,9 +77,9 @@ public class TradeOrderController { |
| 74 | 77 | @PreAuthorize("@ss.hasPermission('trade:order:query')") |
| 75 | 78 | public CommonResult<TradeOrderDetailRespVO> getOrderDetail(@RequestParam("id") Long id) { |
| 76 | 79 | // 查询订单 |
| 77 | - TradeOrderDO order = tradeOrderService.getOrder(id); | |
| 80 | + TradeOrderDO order = tradeOrderQueryService.getOrder(id); | |
| 78 | 81 | // 查询订单项 |
| 79 | - List<TradeOrderItemDO> orderItems = tradeOrderService.getOrderItemListByOrderId(id); | |
| 82 | + List<TradeOrderItemDO> orderItems = tradeOrderQueryService.getOrderItemListByOrderId(id); | |
| 80 | 83 | // 查询商品属性 |
| 81 | 84 | List<ProductPropertyValueDetailRespDTO> propertyValueDetails = productPropertyValueApi |
| 82 | 85 | .getPropertyValueDetailList(TradeOrderConvert.INSTANCE.convertPropertyValueIds(orderItems)); |
| ... | ... | @@ -90,7 +93,7 @@ public class TradeOrderController { |
| 90 | 93 | @Operation(summary = "发货订单") |
| 91 | 94 | @PreAuthorize("@ss.hasPermission('trade:order:delivery')") |
| 92 | 95 | public CommonResult<Boolean> deliveryOrder(@RequestBody TradeOrderDeliveryReqVO deliveryReqVO) { |
| 93 | - tradeOrderService.deliveryOrder(getLoginUserId(), deliveryReqVO); | |
| 96 | + tradeOrderUpdateService.deliveryOrder(getLoginUserId(), deliveryReqVO); | |
| 94 | 97 | return success(true); |
| 95 | 98 | } |
| 96 | 99 | ... | ... |
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/app/order/AppTradeOrderController.java
| ... | ... | @@ -17,7 +17,7 @@ import cn.iocoder.yudao.module.trade.enums.order.TradeOrderStatusEnum; |
| 17 | 17 | import cn.iocoder.yudao.module.trade.framework.order.config.TradeOrderProperties; |
| 18 | 18 | import cn.iocoder.yudao.module.trade.service.delivery.DeliveryExpressService; |
| 19 | 19 | import cn.iocoder.yudao.module.trade.service.order.TradeOrderQueryService; |
| 20 | -import cn.iocoder.yudao.module.trade.service.order.TradeOrderService; | |
| 20 | +import cn.iocoder.yudao.module.trade.service.order.TradeOrderUpdateService; | |
| 21 | 21 | import com.google.common.collect.Maps; |
| 22 | 22 | import io.swagger.v3.oas.annotations.Operation; |
| 23 | 23 | import io.swagger.v3.oas.annotations.Parameter; |
| ... | ... | @@ -44,7 +44,7 @@ import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUti |
| 44 | 44 | public class AppTradeOrderController { |
| 45 | 45 | |
| 46 | 46 | @Resource |
| 47 | - private TradeOrderService tradeOrderService; | |
| 47 | + private TradeOrderUpdateService tradeOrderUpdateService; | |
| 48 | 48 | @Resource |
| 49 | 49 | private TradeOrderQueryService tradeOrderQueryService; |
| 50 | 50 | @Resource |
| ... | ... | @@ -60,21 +60,21 @@ public class AppTradeOrderController { |
| 60 | 60 | @Operation(summary = "获得订单结算信息") |
| 61 | 61 | @PreAuthenticated |
| 62 | 62 | public CommonResult<AppTradeOrderSettlementRespVO> settlementOrder(@Valid AppTradeOrderSettlementReqVO settlementReqVO) { |
| 63 | - return success(tradeOrderService.settlementOrder(getLoginUserId(), settlementReqVO)); | |
| 63 | + return success(tradeOrderUpdateService.settlementOrder(getLoginUserId(), settlementReqVO)); | |
| 64 | 64 | } |
| 65 | 65 | |
| 66 | 66 | @PostMapping("/create") |
| 67 | 67 | @Operation(summary = "创建订单") |
| 68 | 68 | @PreAuthenticated |
| 69 | 69 | public CommonResult<AppTradeOrderCreateRespVO> createOrder(@RequestBody AppTradeOrderCreateReqVO createReqVO) { |
| 70 | - TradeOrderDO order = tradeOrderService.createOrder(getLoginUserId(), getClientIP(), createReqVO); | |
| 70 | + TradeOrderDO order = tradeOrderUpdateService.createOrder(getLoginUserId(), getClientIP(), createReqVO); | |
| 71 | 71 | return success(new AppTradeOrderCreateRespVO().setId(order.getId()).setPayOrderId(order.getPayOrderId())); |
| 72 | 72 | } |
| 73 | 73 | |
| 74 | 74 | @PostMapping("/update-paid") |
| 75 | 75 | @Operation(summary = "更新订单为已支付") // 由 pay-module 支付服务,进行回调,可见 PayNotifyJob |
| 76 | 76 | public CommonResult<Boolean> updateOrderPaid(@RequestBody PayOrderNotifyReqDTO notifyReqDTO) { |
| 77 | - tradeOrderService.updateOrderPaid(Long.valueOf(notifyReqDTO.getMerchantOrderId()), | |
| 77 | + tradeOrderUpdateService.updateOrderPaid(Long.valueOf(notifyReqDTO.getMerchantOrderId()), | |
| 78 | 78 | notifyReqDTO.getPayOrderId()); |
| 79 | 79 | return success(true); |
| 80 | 80 | } |
| ... | ... | @@ -84,13 +84,13 @@ public class AppTradeOrderController { |
| 84 | 84 | @Parameter(name = "id", description = "交易订单编号") |
| 85 | 85 | public CommonResult<AppTradeOrderDetailRespVO> getOrder(@RequestParam("id") Long id) { |
| 86 | 86 | // 查询订单 |
| 87 | - TradeOrderDO order = tradeOrderService.getOrder(getLoginUserId(), id); | |
| 87 | + TradeOrderDO order = tradeOrderQueryService.getOrder(getLoginUserId(), id); | |
| 88 | 88 | if (order == null) { |
| 89 | 89 | return success(null); |
| 90 | 90 | } |
| 91 | 91 | |
| 92 | 92 | // 查询订单项 |
| 93 | - List<TradeOrderItemDO> orderItems = tradeOrderService.getOrderItemListByOrderId(order.getId()); | |
| 93 | + List<TradeOrderItemDO> orderItems = tradeOrderQueryService.getOrderItemListByOrderId(order.getId()); | |
| 94 | 94 | // 查询商品属性 |
| 95 | 95 | List<ProductPropertyValueDetailRespDTO> propertyValueDetails = productPropertyValueApi |
| 96 | 96 | .getPropertyValueDetailList(TradeOrderConvert.INSTANCE.convertPropertyValueIds(orderItems)); |
| ... | ... | @@ -114,9 +114,9 @@ public class AppTradeOrderController { |
| 114 | 114 | @Operation(summary = "获得交易订单分页") |
| 115 | 115 | public CommonResult<PageResult<AppTradeOrderPageItemRespVO>> getOrderPage(AppTradeOrderPageReqVO reqVO) { |
| 116 | 116 | // 查询订单 |
| 117 | - PageResult<TradeOrderDO> pageResult = tradeOrderService.getOrderPage(getLoginUserId(), reqVO); | |
| 117 | + PageResult<TradeOrderDO> pageResult = tradeOrderQueryService.getOrderPage(getLoginUserId(), reqVO); | |
| 118 | 118 | // 查询订单项 |
| 119 | - List<TradeOrderItemDO> orderItems = tradeOrderService.getOrderItemListByOrderId( | |
| 119 | + List<TradeOrderItemDO> orderItems = tradeOrderQueryService.getOrderItemListByOrderId( | |
| 120 | 120 | convertSet(pageResult.getList(), TradeOrderDO::getId)); |
| 121 | 121 | // 查询商品属性 |
| 122 | 122 | List<ProductPropertyValueDetailRespDTO> propertyValueDetails = productPropertyValueApi |
| ... | ... | @@ -130,18 +130,18 @@ public class AppTradeOrderController { |
| 130 | 130 | public CommonResult<Map<String, Long>> getOrderCount() { |
| 131 | 131 | Map<String, Long> orderCount = Maps.newLinkedHashMapWithExpectedSize(5); |
| 132 | 132 | // 全部 |
| 133 | - orderCount.put("allCount", tradeOrderService.getOrderCount(getLoginUserId(), null, null)); | |
| 133 | + orderCount.put("allCount", tradeOrderQueryService.getOrderCount(getLoginUserId(), null, null)); | |
| 134 | 134 | // 待付款(未支付) |
| 135 | - orderCount.put("unpaidCount", tradeOrderService.getOrderCount(getLoginUserId(), | |
| 135 | + orderCount.put("unpaidCount", tradeOrderQueryService.getOrderCount(getLoginUserId(), | |
| 136 | 136 | TradeOrderStatusEnum.UNPAID.getStatus(), null)); |
| 137 | 137 | // 待发货 |
| 138 | - orderCount.put("undeliveredCount", tradeOrderService.getOrderCount(getLoginUserId(), | |
| 138 | + orderCount.put("undeliveredCount", tradeOrderQueryService.getOrderCount(getLoginUserId(), | |
| 139 | 139 | TradeOrderStatusEnum.UNDELIVERED.getStatus(), null)); |
| 140 | 140 | // 待收货 |
| 141 | - orderCount.put("deliveredCount", tradeOrderService.getOrderCount(getLoginUserId(), | |
| 141 | + orderCount.put("deliveredCount", tradeOrderQueryService.getOrderCount(getLoginUserId(), | |
| 142 | 142 | TradeOrderStatusEnum.DELIVERED.getStatus(), null)); |
| 143 | 143 | // 待评价 |
| 144 | - orderCount.put("uncommentedCount", tradeOrderService.getOrderCount(getLoginUserId(), | |
| 144 | + orderCount.put("uncommentedCount", tradeOrderQueryService.getOrderCount(getLoginUserId(), | |
| 145 | 145 | TradeOrderStatusEnum.COMPLETED.getStatus(), false)); |
| 146 | 146 | return success(orderCount); |
| 147 | 147 | } |
| ... | ... | @@ -150,7 +150,7 @@ public class AppTradeOrderController { |
| 150 | 150 | @Operation(summary = "确认交易订单收货") |
| 151 | 151 | @Parameter(name = "id", description = "交易订单编号") |
| 152 | 152 | public CommonResult<Boolean> takeOrder(@RequestParam("id") Long id) { |
| 153 | - tradeOrderService.receiveOrder(getLoginUserId(), id); | |
| 153 | + tradeOrderUpdateService.receiveOrder(getLoginUserId(), id); | |
| 154 | 154 | return success(true); |
| 155 | 155 | } |
| 156 | 156 | |
| ... | ... | @@ -176,14 +176,14 @@ public class AppTradeOrderController { |
| 176 | 176 | @Operation(summary = "获得交易订单项") |
| 177 | 177 | @Parameter(name = "id", description = "交易订单项编号") |
| 178 | 178 | public CommonResult<AppTradeOrderItemRespVO> getOrderItem(@RequestParam("id") Long id) { |
| 179 | - TradeOrderItemDO item = tradeOrderService.getOrderItem(getLoginUserId(), id); | |
| 179 | + TradeOrderItemDO item = tradeOrderQueryService.getOrderItem(getLoginUserId(), id); | |
| 180 | 180 | return success(TradeOrderConvert.INSTANCE.convert03(item)); |
| 181 | 181 | } |
| 182 | 182 | |
| 183 | 183 | @PostMapping("/item/create-comment") |
| 184 | 184 | @Operation(summary = "创建交易订单项的评价") |
| 185 | 185 | public CommonResult<Long> createOrderItemComment(@RequestBody AppTradeOrderItemCommentCreateReqVO createReqVO) { |
| 186 | - return success(tradeOrderService.createOrderItemComment(createReqVO)); | |
| 186 | + return success(tradeOrderUpdateService.createOrderItemComment(getLoginUserId(), createReqVO)); | |
| 187 | 187 | } |
| 188 | 188 | |
| 189 | 189 | } | ... | ... |
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/dal/mysql/order/TradeOrderItemMapper.java
| ... | ... | @@ -31,9 +31,10 @@ public interface TradeOrderItemMapper extends BaseMapperX<TradeOrderItemDO> { |
| 31 | 31 | .eq(TradeOrderItemDO::getSkuId, skuIds)); |
| 32 | 32 | } |
| 33 | 33 | |
| 34 | - default TradeOrderItemDO selectOrderItemByIdAndUserId(Long orderItemId, Long loginUserId) { | |
| 34 | + default TradeOrderItemDO selectByIdAndUserId(Long orderItemId, Long loginUserId) { | |
| 35 | 35 | return selectOne(new LambdaQueryWrapperX<TradeOrderItemDO>() |
| 36 | 36 | .eq(TradeOrderItemDO::getId, orderItemId) |
| 37 | 37 | .eq(TradeOrderItemDO::getUserId, loginUserId)); |
| 38 | 38 | } |
| 39 | + | |
| 39 | 40 | } | ... | ... |
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/aftersale/TradeAfterSaleServiceImpl.java
| ... | ... | @@ -27,7 +27,8 @@ import cn.iocoder.yudao.module.trade.enums.order.TradeOrderStatusEnum; |
| 27 | 27 | import cn.iocoder.yudao.module.trade.framework.aftersalelog.core.dto.TradeAfterSaleLogCreateReqDTO; |
| 28 | 28 | import cn.iocoder.yudao.module.trade.framework.aftersalelog.core.service.AfterSaleLogService; |
| 29 | 29 | import cn.iocoder.yudao.module.trade.framework.order.config.TradeOrderProperties; |
| 30 | -import cn.iocoder.yudao.module.trade.service.order.TradeOrderService; | |
| 30 | +import cn.iocoder.yudao.module.trade.service.order.TradeOrderQueryService; | |
| 31 | +import cn.iocoder.yudao.module.trade.service.order.TradeOrderUpdateService; | |
| 31 | 32 | import lombok.extern.slf4j.Slf4j; |
| 32 | 33 | import org.springframework.scheduling.annotation.Async; |
| 33 | 34 | import org.springframework.stereotype.Service; |
| ... | ... | @@ -54,7 +55,9 @@ import static cn.iocoder.yudao.module.trade.enums.ErrorCodeConstants.*; |
| 54 | 55 | public class TradeAfterSaleServiceImpl implements TradeAfterSaleService, AfterSaleLogService { |
| 55 | 56 | |
| 56 | 57 | @Resource |
| 57 | - private TradeOrderService tradeOrderService; | |
| 58 | + private TradeOrderUpdateService tradeOrderUpdateService; | |
| 59 | + @Resource | |
| 60 | + private TradeOrderQueryService tradeOrderQueryService; | |
| 58 | 61 | |
| 59 | 62 | @Resource |
| 60 | 63 | private TradeAfterSaleMapper tradeAfterSaleMapper; |
| ... | ... | @@ -92,7 +95,7 @@ public class TradeAfterSaleServiceImpl implements TradeAfterSaleService, AfterSa |
| 92 | 95 | */ |
| 93 | 96 | private TradeOrderItemDO validateOrderItemApplicable(Long userId, AppTradeAfterSaleCreateReqVO createReqVO) { |
| 94 | 97 | // 校验订单项存在 |
| 95 | - TradeOrderItemDO orderItem = tradeOrderService.getOrderItem(userId, createReqVO.getOrderItemId()); | |
| 98 | + TradeOrderItemDO orderItem = tradeOrderQueryService.getOrderItem(userId, createReqVO.getOrderItemId()); | |
| 96 | 99 | if (orderItem == null) { |
| 97 | 100 | throw exception(ORDER_ITEM_NOT_FOUND); |
| 98 | 101 | } |
| ... | ... | @@ -108,7 +111,7 @@ public class TradeAfterSaleServiceImpl implements TradeAfterSaleService, AfterSa |
| 108 | 111 | } |
| 109 | 112 | |
| 110 | 113 | // 校验订单存在 |
| 111 | - TradeOrderDO order = tradeOrderService.getOrder(userId, orderItem.getOrderId()); | |
| 114 | + TradeOrderDO order = tradeOrderQueryService.getOrder(userId, orderItem.getOrderId()); | |
| 112 | 115 | if (order == null) { |
| 113 | 116 | throw exception(ORDER_NOT_FOUND); |
| 114 | 117 | } |
| ... | ... | @@ -136,7 +139,7 @@ public class TradeAfterSaleServiceImpl implements TradeAfterSaleService, AfterSa |
| 136 | 139 | afterSale.setNo(RandomUtil.randomString(10)); // TODO 芋艿:优化 no 生成逻辑 |
| 137 | 140 | afterSale.setStatus(TradeAfterSaleStatusEnum.APPLY.getStatus()); |
| 138 | 141 | // 标记是售中还是售后 |
| 139 | - TradeOrderDO order = tradeOrderService.getOrder(orderItem.getUserId(), orderItem.getOrderId()); | |
| 142 | + TradeOrderDO order = tradeOrderQueryService.getOrder(orderItem.getUserId(), orderItem.getOrderId()); | |
| 140 | 143 | afterSale.setOrderNo(order.getNo()); // 记录 orderNo 订单流水,方便后续检索 |
| 141 | 144 | afterSale.setType(TradeOrderStatusEnum.isCompleted(order.getStatus()) |
| 142 | 145 | ? TradeAfterSaleTypeEnum.AFTER_SALE.getType() : TradeAfterSaleTypeEnum.IN_SALE.getType()); |
| ... | ... | @@ -144,7 +147,7 @@ public class TradeAfterSaleServiceImpl implements TradeAfterSaleService, AfterSa |
| 144 | 147 | tradeAfterSaleMapper.insert(afterSale); |
| 145 | 148 | |
| 146 | 149 | // 更新交易订单项的售后状态 |
| 147 | - tradeOrderService.updateOrderItemAfterSaleStatus(orderItem.getId(), | |
| 150 | + tradeOrderUpdateService.updateOrderItemAfterSaleStatus(orderItem.getId(), | |
| 148 | 151 | TradeOrderItemAfterSaleStatusEnum.NONE.getStatus(), |
| 149 | 152 | TradeOrderItemAfterSaleStatusEnum.APPLY.getStatus(), null); |
| 150 | 153 | |
| ... | ... | @@ -196,7 +199,7 @@ public class TradeAfterSaleServiceImpl implements TradeAfterSaleService, AfterSa |
| 196 | 199 | // TODO 发送售后消息 |
| 197 | 200 | |
| 198 | 201 | // 更新交易订单项的售后状态为【未申请】 |
| 199 | - tradeOrderService.updateOrderItemAfterSaleStatus(afterSale.getOrderItemId(), | |
| 202 | + tradeOrderUpdateService.updateOrderItemAfterSaleStatus(afterSale.getOrderItemId(), | |
| 200 | 203 | TradeOrderItemAfterSaleStatusEnum.APPLY.getStatus(), |
| 201 | 204 | TradeOrderItemAfterSaleStatusEnum.NONE.getStatus(), null); |
| 202 | 205 | } |
| ... | ... | @@ -291,7 +294,7 @@ public class TradeAfterSaleServiceImpl implements TradeAfterSaleService, AfterSa |
| 291 | 294 | // TODO 发送售后消息 |
| 292 | 295 | |
| 293 | 296 | // 更新交易订单项的售后状态为【未申请】 |
| 294 | - tradeOrderService.updateOrderItemAfterSaleStatus(afterSale.getOrderItemId(), | |
| 297 | + tradeOrderUpdateService.updateOrderItemAfterSaleStatus(afterSale.getOrderItemId(), | |
| 295 | 298 | TradeOrderItemAfterSaleStatusEnum.APPLY.getStatus(), |
| 296 | 299 | TradeOrderItemAfterSaleStatusEnum.NONE.getStatus(), null); |
| 297 | 300 | } |
| ... | ... | @@ -339,7 +342,7 @@ public class TradeAfterSaleServiceImpl implements TradeAfterSaleService, AfterSa |
| 339 | 342 | // TODO 发送售后消息 |
| 340 | 343 | |
| 341 | 344 | // 更新交易订单项的售后状态为【已完成】 |
| 342 | - tradeOrderService.updateOrderItemAfterSaleStatus(afterSale.getOrderItemId(), | |
| 345 | + tradeOrderUpdateService.updateOrderItemAfterSaleStatus(afterSale.getOrderItemId(), | |
| 343 | 346 | TradeOrderItemAfterSaleStatusEnum.APPLY.getStatus(), |
| 344 | 347 | TradeOrderItemAfterSaleStatusEnum.SUCCESS.getStatus(), afterSale.getRefundPrice()); |
| 345 | 348 | } |
| ... | ... | @@ -381,7 +384,7 @@ public class TradeAfterSaleServiceImpl implements TradeAfterSaleService, AfterSa |
| 381 | 384 | // TODO 发送售后消息 |
| 382 | 385 | |
| 383 | 386 | // 更新交易订单项的售后状态为【未申请】 |
| 384 | - tradeOrderService.updateOrderItemAfterSaleStatus(afterSale.getOrderItemId(), | |
| 387 | + tradeOrderUpdateService.updateOrderItemAfterSaleStatus(afterSale.getOrderItemId(), | |
| 385 | 388 | TradeOrderItemAfterSaleStatusEnum.APPLY.getStatus(), |
| 386 | 389 | TradeOrderItemAfterSaleStatusEnum.NONE.getStatus(), null); |
| 387 | 390 | } | ... | ... |
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/order/TradeOrderQueryService.java
| 1 | 1 | package cn.iocoder.yudao.module.trade.service.order; |
| 2 | 2 | |
| 3 | +import cn.iocoder.yudao.framework.common.pojo.PageResult; | |
| 4 | +import cn.iocoder.yudao.module.trade.controller.admin.order.vo.TradeOrderPageReqVO; | |
| 5 | +import cn.iocoder.yudao.module.trade.controller.app.order.vo.AppTradeOrderPageReqVO; | |
| 6 | +import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderDO; | |
| 7 | +import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderItemDO; | |
| 3 | 8 | import cn.iocoder.yudao.module.trade.framework.delivery.core.client.dto.ExpressTrackRespDTO; |
| 4 | 9 | |
| 10 | +import java.util.Collection; | |
| 5 | 11 | import java.util.List; |
| 6 | 12 | |
| 13 | +import static java.util.Collections.singleton; | |
| 14 | + | |
| 7 | 15 | /** |
| 8 | 16 | * 交易订单【读】 Service 接口 |
| 9 | 17 | * |
| ... | ... | @@ -11,6 +19,52 @@ import java.util.List; |
| 11 | 19 | */ |
| 12 | 20 | public interface TradeOrderQueryService { |
| 13 | 21 | |
| 22 | + // =================== Order =================== | |
| 23 | + | |
| 24 | + /** | |
| 25 | + * 获得指定编号的交易订单 | |
| 26 | + * | |
| 27 | + * @param id 交易订单编号 | |
| 28 | + * @return 交易订单 | |
| 29 | + */ | |
| 30 | + TradeOrderDO getOrder(Long id); | |
| 31 | + | |
| 32 | + /** | |
| 33 | + * 获得指定用户,指定的交易订单 | |
| 34 | + * | |
| 35 | + * @param userId 用户编号 | |
| 36 | + * @param id 交易订单编号 | |
| 37 | + * @return 交易订单 | |
| 38 | + */ | |
| 39 | + TradeOrderDO getOrder(Long userId, Long id); | |
| 40 | + | |
| 41 | + /** | |
| 42 | + * 【管理员】获得交易订单分页 | |
| 43 | + * | |
| 44 | + * @param reqVO 分页请求 | |
| 45 | + * @return 交易订单 | |
| 46 | + */ | |
| 47 | + PageResult<TradeOrderDO> getOrderPage(TradeOrderPageReqVO reqVO); | |
| 48 | + | |
| 49 | + /** | |
| 50 | + * 【会员】获得交易订单分页 | |
| 51 | + * | |
| 52 | + * @param userId 用户编号 | |
| 53 | + * @param reqVO 分页请求 | |
| 54 | + * @return 交易订单 | |
| 55 | + */ | |
| 56 | + PageResult<TradeOrderDO> getOrderPage(Long userId, AppTradeOrderPageReqVO reqVO); | |
| 57 | + | |
| 58 | + /** | |
| 59 | + * 【会员】获得交易订单数量 | |
| 60 | + * | |
| 61 | + * @param userId 用户编号 | |
| 62 | + * @param status 订单状态。如果为空,则不进行筛选 | |
| 63 | + * @param commonStatus 评价状态。如果为空,则不进行筛选 | |
| 64 | + * @return 订单数量 | |
| 65 | + */ | |
| 66 | + Long getOrderCount(Long userId, Integer status, Boolean commonStatus); | |
| 67 | + | |
| 14 | 68 | /** |
| 15 | 69 | * 获得订单的物流轨迹 |
| 16 | 70 | * |
| ... | ... | @@ -20,4 +74,41 @@ public interface TradeOrderQueryService { |
| 20 | 74 | */ |
| 21 | 75 | List<ExpressTrackRespDTO> getExpressTrackList(Long id, Long userId); |
| 22 | 76 | |
| 77 | + // =================== Order Item =================== | |
| 78 | + | |
| 79 | + /** | |
| 80 | + * 获得指定用户,指定的交易订单项 | |
| 81 | + * | |
| 82 | + * @param userId 用户编号 | |
| 83 | + * @param itemId 交易订单项编号 | |
| 84 | + * @return 交易订单项 | |
| 85 | + */ | |
| 86 | + TradeOrderItemDO getOrderItem(Long userId, Long itemId); | |
| 87 | + | |
| 88 | + /** | |
| 89 | + * 根据交易订单项编号数组,查询交易订单项 | |
| 90 | + * | |
| 91 | + * @param ids 交易订单项编号数组 | |
| 92 | + * @return 交易订单项数组 | |
| 93 | + */ | |
| 94 | + List<TradeOrderItemDO> getOrderItemList(Collection<Long> ids); | |
| 95 | + | |
| 96 | + /** | |
| 97 | + * 根据交易订单编号,查询交易订单项 | |
| 98 | + * | |
| 99 | + * @param orderId 交易订单编号 | |
| 100 | + * @return 交易订单项数组 | |
| 101 | + */ | |
| 102 | + default List<TradeOrderItemDO> getOrderItemListByOrderId(Long orderId) { | |
| 103 | + return getOrderItemListByOrderId(singleton(orderId)); | |
| 104 | + } | |
| 105 | + | |
| 106 | + /** | |
| 107 | + * 根据交易订单编号数组,查询交易订单项 | |
| 108 | + * | |
| 109 | + * @param orderIds 交易订单编号数组 | |
| 110 | + * @return 交易订单项数组 | |
| 111 | + */ | |
| 112 | + List<TradeOrderItemDO> getOrderItemListByOrderId(Collection<Long> orderIds); | |
| 113 | + | |
| 23 | 114 | } | ... | ... |
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/order/TradeOrderQueryServiceImpl.java
| 1 | 1 | package cn.iocoder.yudao.module.trade.service.order; |
| 2 | 2 | |
| 3 | +import cn.hutool.core.collection.CollUtil; | |
| 4 | +import cn.hutool.core.util.ObjectUtil; | |
| 5 | +import cn.hutool.core.util.StrUtil; | |
| 6 | +import cn.iocoder.yudao.framework.common.pojo.PageResult; | |
| 7 | +import cn.iocoder.yudao.module.member.api.user.MemberUserApi; | |
| 8 | +import cn.iocoder.yudao.module.member.api.user.dto.MemberUserRespDTO; | |
| 9 | +import cn.iocoder.yudao.module.trade.controller.admin.order.vo.TradeOrderPageReqVO; | |
| 10 | +import cn.iocoder.yudao.module.trade.controller.app.order.vo.AppTradeOrderPageReqVO; | |
| 3 | 11 | import cn.iocoder.yudao.module.trade.dal.dataobject.delivery.DeliveryExpressDO; |
| 4 | 12 | import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderDO; |
| 13 | +import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderItemDO; | |
| 14 | +import cn.iocoder.yudao.module.trade.dal.mysql.order.TradeOrderItemMapper; | |
| 5 | 15 | import cn.iocoder.yudao.module.trade.dal.mysql.order.TradeOrderMapper; |
| 6 | 16 | import cn.iocoder.yudao.module.trade.framework.delivery.core.client.ExpressClientFactory; |
| 7 | 17 | import cn.iocoder.yudao.module.trade.framework.delivery.core.client.dto.ExpressTrackQueryReqDTO; |
| ... | ... | @@ -10,10 +20,10 @@ import cn.iocoder.yudao.module.trade.service.delivery.DeliveryExpressService; |
| 10 | 20 | import org.springframework.stereotype.Service; |
| 11 | 21 | |
| 12 | 22 | import javax.annotation.Resource; |
| 13 | -import java.util.Collections; | |
| 14 | -import java.util.List; | |
| 23 | +import java.util.*; | |
| 15 | 24 | |
| 16 | 25 | import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; |
| 26 | +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; | |
| 17 | 27 | import static cn.iocoder.yudao.module.trade.enums.ErrorCodeConstants.EXPRESS_NOT_EXISTS; |
| 18 | 28 | import static cn.iocoder.yudao.module.trade.enums.ErrorCodeConstants.ORDER_NOT_FOUND; |
| 19 | 29 | |
| ... | ... | @@ -30,10 +40,64 @@ public class TradeOrderQueryServiceImpl implements TradeOrderQueryService { |
| 30 | 40 | |
| 31 | 41 | @Resource |
| 32 | 42 | private TradeOrderMapper tradeOrderMapper; |
| 43 | + @Resource | |
| 44 | + private TradeOrderItemMapper tradeOrderItemMapper; | |
| 33 | 45 | |
| 34 | 46 | @Resource |
| 35 | 47 | private DeliveryExpressService deliveryExpressService; |
| 36 | 48 | |
| 49 | + @Resource | |
| 50 | + private MemberUserApi memberUserApi; | |
| 51 | + | |
| 52 | + // =================== Order =================== | |
| 53 | + | |
| 54 | + @Override | |
| 55 | + public TradeOrderDO getOrder(Long id) { | |
| 56 | + return tradeOrderMapper.selectById(id); | |
| 57 | + } | |
| 58 | + | |
| 59 | + @Override | |
| 60 | + public TradeOrderDO getOrder(Long userId, Long id) { | |
| 61 | + TradeOrderDO order = tradeOrderMapper.selectById(id); | |
| 62 | + if (order != null | |
| 63 | + && ObjectUtil.notEqual(order.getUserId(), userId)) { | |
| 64 | + return null; | |
| 65 | + } | |
| 66 | + return order; | |
| 67 | + } | |
| 68 | + | |
| 69 | + @Override | |
| 70 | + public PageResult<TradeOrderDO> getOrderPage(TradeOrderPageReqVO reqVO) { | |
| 71 | + // 获得 userId 相关的查询 | |
| 72 | + Set<Long> userIds = new HashSet<>(); | |
| 73 | + if (StrUtil.isNotEmpty(reqVO.getUserMobile())) { | |
| 74 | + MemberUserRespDTO user = memberUserApi.getUserByMobile(reqVO.getUserMobile()); | |
| 75 | + if (user == null) { // 没查询到用户,说明肯定也没他的订单 | |
| 76 | + return new PageResult<>(); | |
| 77 | + } | |
| 78 | + userIds.add(user.getId()); | |
| 79 | + } | |
| 80 | + if (StrUtil.isNotEmpty(reqVO.getUserNickname())) { | |
| 81 | + List<MemberUserRespDTO> users = memberUserApi.getUserListByNickname(reqVO.getUserNickname()); | |
| 82 | + if (CollUtil.isEmpty(users)) { // 没查询到用户,说明肯定也没他的订单 | |
| 83 | + return new PageResult<>(); | |
| 84 | + } | |
| 85 | + userIds.addAll(convertSet(users, MemberUserRespDTO::getId)); | |
| 86 | + } | |
| 87 | + // 分页查询 | |
| 88 | + return tradeOrderMapper.selectPage(reqVO, userIds); | |
| 89 | + } | |
| 90 | + | |
| 91 | + @Override | |
| 92 | + public PageResult<TradeOrderDO> getOrderPage(Long userId, AppTradeOrderPageReqVO reqVO) { | |
| 93 | + return tradeOrderMapper.selectPage(reqVO, userId); | |
| 94 | + } | |
| 95 | + | |
| 96 | + @Override | |
| 97 | + public Long getOrderCount(Long userId, Integer status, Boolean commentStatus) { | |
| 98 | + return tradeOrderMapper.selectCountByUserIdAndStatus(userId, status, commentStatus); | |
| 99 | + } | |
| 100 | + | |
| 37 | 101 | @Override |
| 38 | 102 | public List<ExpressTrackRespDTO> getExpressTrackList(Long id, Long userId) { |
| 39 | 103 | // 查询订单 |
| ... | ... | @@ -57,4 +121,29 @@ public class TradeOrderQueryServiceImpl implements TradeOrderQueryService { |
| 57 | 121 | .setPhone(order.getReceiverMobile())); |
| 58 | 122 | } |
| 59 | 123 | |
| 124 | + // =================== Order Item =================== | |
| 125 | + | |
| 126 | + @Override | |
| 127 | + public TradeOrderItemDO getOrderItem(Long userId, Long itemId) { | |
| 128 | + TradeOrderItemDO orderItem = tradeOrderItemMapper.selectById(itemId); | |
| 129 | + if (orderItem != null | |
| 130 | + && ObjectUtil.notEqual(orderItem.getUserId(), userId)) { | |
| 131 | + return null; | |
| 132 | + } | |
| 133 | + return orderItem; | |
| 134 | + } | |
| 135 | + | |
| 136 | + @Override | |
| 137 | + public List<TradeOrderItemDO> getOrderItemList(Collection<Long> ids) { | |
| 138 | + return tradeOrderItemMapper.selectBatchIds(ids); | |
| 139 | + } | |
| 140 | + | |
| 141 | + @Override | |
| 142 | + public List<TradeOrderItemDO> getOrderItemListByOrderId(Collection<Long> orderIds) { | |
| 143 | + if (CollUtil.isEmpty(orderIds)) { | |
| 144 | + return Collections.emptyList(); | |
| 145 | + } | |
| 146 | + return tradeOrderItemMapper.selectListByOrderId(orderIds); | |
| 147 | + } | |
| 148 | + | |
| 60 | 149 | } | ... | ... |
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/order/TradeOrderService.java renamed to 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.pojo.PageResult; | |
| 4 | 3 | import cn.iocoder.yudao.module.trade.controller.admin.order.vo.TradeOrderDeliveryReqVO; |
| 5 | -import cn.iocoder.yudao.module.trade.controller.admin.order.vo.TradeOrderPageReqVO; | |
| 6 | 4 | import cn.iocoder.yudao.module.trade.controller.app.order.vo.AppTradeOrderCreateReqVO; |
| 7 | -import cn.iocoder.yudao.module.trade.controller.app.order.vo.AppTradeOrderPageReqVO; | |
| 8 | 5 | import cn.iocoder.yudao.module.trade.controller.app.order.vo.AppTradeOrderSettlementReqVO; |
| 9 | 6 | import cn.iocoder.yudao.module.trade.controller.app.order.vo.AppTradeOrderSettlementRespVO; |
| 10 | 7 | import cn.iocoder.yudao.module.trade.controller.app.order.vo.item.AppTradeOrderItemCommentCreateReqVO; |
| 11 | 8 | import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderDO; |
| 12 | -import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderItemDO; | |
| 13 | - | |
| 14 | -import java.util.Collection; | |
| 15 | -import java.util.List; | |
| 16 | - | |
| 17 | -import static java.util.Collections.singleton; | |
| 18 | 9 | |
| 19 | 10 | /** |
| 20 | - * 交易订单 Service 接口 | |
| 11 | + * 交易订单【写】Service 接口 | |
| 21 | 12 | * |
| 22 | 13 | * @author LeeYan9 |
| 23 | 14 | * @since 2022-08-26 |
| 24 | 15 | */ |
| 25 | -public interface TradeOrderService { | |
| 16 | +public interface TradeOrderUpdateService { | |
| 26 | 17 | |
| 27 | 18 | // =================== Order =================== |
| 28 | 19 | |
| ... | ... | @@ -69,62 +60,9 @@ public interface TradeOrderService { |
| 69 | 60 | */ |
| 70 | 61 | void receiveOrder(Long userId, Long id); |
| 71 | 62 | |
| 72 | - /** | |
| 73 | - * 获得指定编号的交易订单 | |
| 74 | - * | |
| 75 | - * @param id 交易订单编号 | |
| 76 | - * @return 交易订单 | |
| 77 | - */ | |
| 78 | - TradeOrderDO getOrder(Long id); | |
| 79 | - | |
| 80 | - /** | |
| 81 | - * 获得指定用户,指定的交易订单 | |
| 82 | - * | |
| 83 | - * @param userId 用户编号 | |
| 84 | - * @param id 交易订单编号 | |
| 85 | - * @return 交易订单 | |
| 86 | - */ | |
| 87 | - TradeOrderDO getOrder(Long userId, Long id); | |
| 88 | - | |
| 89 | - /** | |
| 90 | - * 【管理员】获得交易订单分页 | |
| 91 | - * | |
| 92 | - * @param reqVO 分页请求 | |
| 93 | - * @return 交易订单 | |
| 94 | - */ | |
| 95 | - PageResult<TradeOrderDO> getOrderPage(TradeOrderPageReqVO reqVO); | |
| 96 | - | |
| 97 | - /** | |
| 98 | - * 【会员】获得交易订单分页 | |
| 99 | - * | |
| 100 | - * @param userId 用户编号 | |
| 101 | - * @param reqVO 分页请求 | |
| 102 | - * @return 交易订单 | |
| 103 | - */ | |
| 104 | - PageResult<TradeOrderDO> getOrderPage(Long userId, AppTradeOrderPageReqVO reqVO); | |
| 105 | - | |
| 106 | - /** | |
| 107 | - * 【会员】获得交易订单数量 | |
| 108 | - * | |
| 109 | - * @param userId 用户编号 | |
| 110 | - * @param status 订单状态。如果为空,则不进行筛选 | |
| 111 | - * @param commonStatus 评价状态。如果为空,则不进行筛选 | |
| 112 | - * @return 订单数量 | |
| 113 | - */ | |
| 114 | - Long getOrderCount(Long userId, Integer status, Boolean commonStatus); | |
| 115 | - | |
| 116 | 63 | // =================== Order Item =================== |
| 117 | 64 | |
| 118 | 65 | /** |
| 119 | - * 获得指定用户,指定的交易订单项 | |
| 120 | - * | |
| 121 | - * @param userId 用户编号 | |
| 122 | - * @param itemId 交易订单项编号 | |
| 123 | - * @return 交易订单项 | |
| 124 | - */ | |
| 125 | - TradeOrderItemDO getOrderItem(Long userId, Long itemId); | |
| 126 | - | |
| 127 | - /** | |
| 128 | 66 | * 更新交易订单项的售后状态 |
| 129 | 67 | * |
| 130 | 68 | * @param id 交易订单项编号 |
| ... | ... | @@ -136,55 +74,12 @@ public interface TradeOrderService { |
| 136 | 74 | Integer newAfterSaleStatus, Integer refundPrice); |
| 137 | 75 | |
| 138 | 76 | /** |
| 139 | - * 根据交易订单项编号数组,查询交易订单项 | |
| 140 | - * | |
| 141 | - * @param ids 交易订单项编号数组 | |
| 142 | - * @return 交易订单项数组 | |
| 143 | - */ | |
| 144 | - List<TradeOrderItemDO> getOrderItemList(Collection<Long> ids); | |
| 145 | - | |
| 146 | - /** | |
| 147 | - * 根据交易订单编号,查询交易订单项 | |
| 148 | - * | |
| 149 | - * @param orderId 交易订单编号 | |
| 150 | - * @return 交易订单项数组 | |
| 151 | - */ | |
| 152 | - default List<TradeOrderItemDO> getOrderItemListByOrderId(Long orderId) { | |
| 153 | - return getOrderItemListByOrderId(singleton(orderId)); | |
| 154 | - } | |
| 155 | - | |
| 156 | - /** | |
| 157 | - * 根据交易订单编号数组,查询交易订单项 | |
| 158 | - * | |
| 159 | - * @param orderIds 交易订单编号数组 | |
| 160 | - * @return 交易订单项数组 | |
| 161 | - */ | |
| 162 | - List<TradeOrderItemDO> getOrderItemListByOrderId(Collection<Long> orderIds); | |
| 163 | - | |
| 164 | - /** | |
| 165 | - * 得到订单项通过 订单项 id 和用户 id | |
| 166 | - * | |
| 167 | - * @param orderItemId 订单项 id | |
| 168 | - * @param loginUserId 登录用户 id | |
| 169 | - * @return 得到订单项 | |
| 170 | - */ | |
| 171 | - TradeOrderItemDO getOrderItemByIdAndUserId(Long orderItemId, Long loginUserId); | |
| 172 | - | |
| 173 | - /** | |
| 174 | - * 得到订单通过 id 和 用户 id | |
| 175 | - * | |
| 176 | - * @param orderId 订单 id | |
| 177 | - * @param loginUserId 登录用户 id | |
| 178 | - * @return 得到订单 | |
| 179 | - */ | |
| 180 | - TradeOrderDO getOrderByIdAndUserId(Long orderId, Long loginUserId); | |
| 181 | - | |
| 182 | - /** | |
| 183 | 77 | * 创建订单项的评论 |
| 184 | 78 | * |
| 79 | + * @param userId 用户编号 | |
| 185 | 80 | * @param createReqVO 创建请求 |
| 186 | 81 | * @return 得到评价 id |
| 187 | 82 | */ |
| 188 | - Long createOrderItemComment(AppTradeOrderItemCommentCreateReqVO createReqVO); | |
| 83 | + Long createOrderItemComment(Long userId, AppTradeOrderItemCommentCreateReqVO createReqVO); | |
| 189 | 84 | |
| 190 | 85 | } | ... | ... |
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/order/TradeOrderServiceImpl.java renamed to yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/order/TradeOrderUpdateServiceImpl.java
| ... | ... | @@ -8,7 +8,6 @@ import cn.hutool.core.util.StrUtil; |
| 8 | 8 | import cn.iocoder.yudao.framework.common.core.KeyValue; |
| 9 | 9 | import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; |
| 10 | 10 | import cn.iocoder.yudao.framework.common.enums.TerminalEnum; |
| 11 | -import cn.iocoder.yudao.framework.common.pojo.PageResult; | |
| 12 | 11 | import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; |
| 13 | 12 | import cn.iocoder.yudao.framework.common.util.json.JsonUtils; |
| 14 | 13 | import cn.iocoder.yudao.module.member.api.address.AddressApi; |
| ... | ... | @@ -31,9 +30,7 @@ import cn.iocoder.yudao.module.promotion.api.coupon.CouponApi; |
| 31 | 30 | import cn.iocoder.yudao.module.promotion.api.coupon.dto.CouponUseReqDTO; |
| 32 | 31 | import cn.iocoder.yudao.module.promotion.enums.combination.CombinationRecordStatusEnum; |
| 33 | 32 | import cn.iocoder.yudao.module.trade.controller.admin.order.vo.TradeOrderDeliveryReqVO; |
| 34 | -import cn.iocoder.yudao.module.trade.controller.admin.order.vo.TradeOrderPageReqVO; | |
| 35 | 33 | import cn.iocoder.yudao.module.trade.controller.app.order.vo.AppTradeOrderCreateReqVO; |
| 36 | -import cn.iocoder.yudao.module.trade.controller.app.order.vo.AppTradeOrderPageReqVO; | |
| 37 | 34 | import cn.iocoder.yudao.module.trade.controller.app.order.vo.AppTradeOrderSettlementReqVO; |
| 38 | 35 | import cn.iocoder.yudao.module.trade.controller.app.order.vo.AppTradeOrderSettlementRespVO; |
| 39 | 36 | import cn.iocoder.yudao.module.trade.controller.app.order.vo.item.AppTradeOrderItemCommentCreateReqVO; |
| ... | ... | @@ -61,23 +58,23 @@ import org.springframework.transaction.annotation.Transactional; |
| 61 | 58 | |
| 62 | 59 | import javax.annotation.Resource; |
| 63 | 60 | import java.time.LocalDateTime; |
| 64 | -import java.util.*; | |
| 61 | +import java.util.List; | |
| 62 | +import java.util.Objects; | |
| 65 | 63 | |
| 66 | 64 | import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; |
| 67 | 65 | import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.*; |
| 68 | -import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId; | |
| 69 | 66 | import static cn.iocoder.yudao.module.pay.enums.ErrorCodeConstants.ORDER_NOT_FOUND; |
| 70 | 67 | import static cn.iocoder.yudao.module.trade.enums.ErrorCodeConstants.*; |
| 71 | 68 | |
| 72 | 69 | /** |
| 73 | - * 交易订单 Service 实现类 | |
| 70 | + * 交易订单【写】Service 实现类 | |
| 74 | 71 | * |
| 75 | 72 | * @author LeeYan9 |
| 76 | 73 | * @since 2022-08-26 |
| 77 | 74 | */ |
| 78 | 75 | @Service |
| 79 | 76 | @Slf4j |
| 80 | -public class TradeOrderServiceImpl implements TradeOrderService { | |
| 77 | +public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService { | |
| 81 | 78 | |
| 82 | 79 | @Resource |
| 83 | 80 | private TradeOrderMapper tradeOrderMapper; |
| ... | ... | @@ -514,66 +511,9 @@ public class TradeOrderServiceImpl implements TradeOrderService { |
| 514 | 511 | return order; |
| 515 | 512 | } |
| 516 | 513 | |
| 517 | - @Override | |
| 518 | - public TradeOrderDO getOrder(Long id) { | |
| 519 | - return tradeOrderMapper.selectById(id); | |
| 520 | - } | |
| 521 | - | |
| 522 | - @Override | |
| 523 | - public TradeOrderDO getOrder(Long userId, Long id) { | |
| 524 | - TradeOrderDO order = tradeOrderMapper.selectById(id); | |
| 525 | - if (order != null | |
| 526 | - && ObjectUtil.notEqual(order.getUserId(), userId)) { | |
| 527 | - return null; | |
| 528 | - } | |
| 529 | - return order; | |
| 530 | - } | |
| 531 | - | |
| 532 | - @Override | |
| 533 | - public PageResult<TradeOrderDO> getOrderPage(TradeOrderPageReqVO reqVO) { | |
| 534 | - // 获得 userId 相关的查询 | |
| 535 | - Set<Long> userIds = new HashSet<>(); | |
| 536 | - if (StrUtil.isNotEmpty(reqVO.getUserMobile())) { | |
| 537 | - MemberUserRespDTO user = memberUserApi.getUserByMobile(reqVO.getUserMobile()); | |
| 538 | - if (user == null) { // 没查询到用户,说明肯定也没他的订单 | |
| 539 | - return new PageResult<>(); | |
| 540 | - } | |
| 541 | - userIds.add(user.getId()); | |
| 542 | - } | |
| 543 | - if (StrUtil.isNotEmpty(reqVO.getUserNickname())) { | |
| 544 | - List<MemberUserRespDTO> users = memberUserApi.getUserListByNickname(reqVO.getUserNickname()); | |
| 545 | - if (CollUtil.isEmpty(users)) { // 没查询到用户,说明肯定也没他的订单 | |
| 546 | - return new PageResult<>(); | |
| 547 | - } | |
| 548 | - userIds.addAll(convertSet(users, MemberUserRespDTO::getId)); | |
| 549 | - } | |
| 550 | - // 分页查询 | |
| 551 | - return tradeOrderMapper.selectPage(reqVO, userIds); | |
| 552 | - } | |
| 553 | - | |
| 554 | - @Override | |
| 555 | - public PageResult<TradeOrderDO> getOrderPage(Long userId, AppTradeOrderPageReqVO reqVO) { | |
| 556 | - return tradeOrderMapper.selectPage(reqVO, userId); | |
| 557 | - } | |
| 558 | - | |
| 559 | - @Override | |
| 560 | - public Long getOrderCount(Long userId, Integer status, Boolean commentStatus) { | |
| 561 | - return tradeOrderMapper.selectCountByUserIdAndStatus(userId, status, commentStatus); | |
| 562 | - } | |
| 563 | - | |
| 564 | 514 | // =================== Order Item =================== |
| 565 | 515 | |
| 566 | 516 | @Override |
| 567 | - public TradeOrderItemDO getOrderItem(Long userId, Long itemId) { | |
| 568 | - TradeOrderItemDO orderItem = tradeOrderItemMapper.selectById(itemId); | |
| 569 | - if (orderItem != null | |
| 570 | - && ObjectUtil.notEqual(orderItem.getUserId(), userId)) { | |
| 571 | - return null; | |
| 572 | - } | |
| 573 | - return orderItem; | |
| 574 | - } | |
| 575 | - | |
| 576 | - @Override | |
| 577 | 517 | public void updateOrderItemAfterSaleStatus(Long id, Integer oldAfterSaleStatus, Integer newAfterSaleStatus, Integer refundPrice) { |
| 578 | 518 | // 如果退款成功,则 refundPrice 非空 |
| 579 | 519 | if (Objects.equals(newAfterSaleStatus, TradeOrderItemAfterSaleStatusEnum.SUCCESS.getStatus()) |
| ... | ... | @@ -611,39 +551,15 @@ public class TradeOrderServiceImpl implements TradeOrderService { |
| 611 | 551 | } |
| 612 | 552 | |
| 613 | 553 | @Override |
| 614 | - public List<TradeOrderItemDO> getOrderItemList(Collection<Long> ids) { | |
| 615 | - return tradeOrderItemMapper.selectBatchIds(ids); | |
| 616 | - } | |
| 617 | - | |
| 618 | - @Override | |
| 619 | - public List<TradeOrderItemDO> getOrderItemListByOrderId(Collection<Long> orderIds) { | |
| 620 | - if (CollUtil.isEmpty(orderIds)) { | |
| 621 | - return Collections.emptyList(); | |
| 622 | - } | |
| 623 | - return tradeOrderItemMapper.selectListByOrderId(orderIds); | |
| 624 | - } | |
| 625 | - | |
| 626 | - @Override | |
| 627 | - public TradeOrderItemDO getOrderItemByIdAndUserId(Long orderItemId, Long loginUserId) { | |
| 628 | - return tradeOrderItemMapper.selectOrderItemByIdAndUserId(orderItemId, loginUserId); | |
| 629 | - } | |
| 630 | - | |
| 631 | - @Override | |
| 632 | - public TradeOrderDO getOrderByIdAndUserId(Long orderId, Long loginUserId) { | |
| 633 | - return tradeOrderMapper.selectOrderByIdAndUserId(orderId, loginUserId); | |
| 634 | - } | |
| 635 | - | |
| 636 | - @Override | |
| 637 | 554 | @Transactional(rollbackFor = Exception.class) |
| 638 | - public Long createOrderItemComment(AppTradeOrderItemCommentCreateReqVO createReqVO) { | |
| 639 | - Long loginUserId = getLoginUserId(); | |
| 555 | + public Long createOrderItemComment(Long userId, AppTradeOrderItemCommentCreateReqVO createReqVO) { | |
| 640 | 556 | // 先通过订单项 ID,查询订单项是否存在 |
| 641 | - TradeOrderItemDO orderItem = getOrderItemByIdAndUserId(createReqVO.getOrderItemId(), loginUserId); | |
| 557 | + TradeOrderItemDO orderItem = tradeOrderItemMapper.selectByIdAndUserId(createReqVO.getOrderItemId(), userId); | |
| 642 | 558 | if (orderItem == null) { |
| 643 | 559 | throw exception(ORDER_ITEM_NOT_FOUND); |
| 644 | 560 | } |
| 645 | 561 | // 校验订单相关状态 |
| 646 | - TradeOrderDO order = getOrderByIdAndUserId(orderItem.getOrderId(), loginUserId); | |
| 562 | + TradeOrderDO order = tradeOrderMapper.selectOrderByIdAndUserId(orderItem.getOrderId(), userId); | |
| 647 | 563 | if (order == null) { |
| 648 | 564 | throw exception(ORDER_NOT_FOUND); |
| 649 | 565 | } |
| ... | ... | @@ -654,14 +570,14 @@ public class TradeOrderServiceImpl implements TradeOrderService { |
| 654 | 570 | throw exception(ORDER_COMMENT_STATUS_NOT_FALSE); |
| 655 | 571 | } |
| 656 | 572 | |
| 657 | - // 创建评价 | |
| 573 | + // 1. 创建评价 | |
| 658 | 574 | ProductCommentCreateReqDTO productCommentCreateReqDTO = TradeOrderConvert.INSTANCE.convert04(createReqVO, orderItem); |
| 659 | 575 | Long comment = productCommentApi.createComment(productCommentCreateReqDTO); |
| 660 | - // 更新订单项评价状态 | |
| 576 | + | |
| 577 | + // 2. 更新订单项评价状态 | |
| 661 | 578 | tradeOrderItemMapper.updateById(new TradeOrderItemDO().setId(orderItem.getId()).setCommentStatus(Boolean.TRUE)); |
| 662 | - List<TradeOrderItemDO> orderItems = getOrderItemListByOrderId(CollUtil.newArrayList(order.getId())); | |
| 579 | + List<TradeOrderItemDO> orderItems = tradeOrderItemMapper.selectListByOrderId(order.getId()); | |
| 663 | 580 | if (!anyMatch(orderItems, item -> Objects.equals(item.getCommentStatus(), Boolean.FALSE))) { |
| 664 | - // 对于 order 来说,就是评论完,把 order 更新完合理的 status 等字段。 | |
| 665 | 581 | tradeOrderMapper.updateById(new TradeOrderDO().setId(order.getId()).setCommentStatus(Boolean.TRUE)); |
| 666 | 582 | } |
| 667 | 583 | return comment; | ... | ... |
yudao-module-mall/yudao-module-trade-biz/src/test/java/cn/iocoder/yudao/module/trade/service/aftersale/TradeAfterSaleServiceTest.java
| ... | ... | @@ -18,7 +18,7 @@ import cn.iocoder.yudao.module.trade.enums.aftersale.TradeAfterSaleWayEnum; |
| 18 | 18 | import cn.iocoder.yudao.module.trade.enums.order.TradeOrderItemAfterSaleStatusEnum; |
| 19 | 19 | import cn.iocoder.yudao.module.trade.enums.order.TradeOrderStatusEnum; |
| 20 | 20 | import cn.iocoder.yudao.module.trade.framework.order.config.TradeOrderProperties; |
| 21 | -import cn.iocoder.yudao.module.trade.service.order.TradeOrderService; | |
| 21 | +import cn.iocoder.yudao.module.trade.service.order.TradeOrderUpdateService; | |
| 22 | 22 | import org.junit.jupiter.api.Test; |
| 23 | 23 | import org.springframework.boot.test.mock.mockito.MockBean; |
| 24 | 24 | import org.springframework.context.annotation.Import; |
| ... | ... | @@ -52,7 +52,7 @@ public class TradeAfterSaleServiceTest extends BaseDbUnitTest { |
| 52 | 52 | private TradeAfterSaleLogMapper tradeAfterSaleLogMapper; |
| 53 | 53 | |
| 54 | 54 | @MockBean |
| 55 | - private TradeOrderService tradeOrderService; | |
| 55 | + private TradeOrderUpdateService tradeOrderService; | |
| 56 | 56 | @MockBean |
| 57 | 57 | private PayRefundApi payRefundApi; |
| 58 | 58 | ... | ... |
yudao-module-mall/yudao-module-trade-biz/src/test/java/cn/iocoder/yudao/module/trade/service/order/TradeOrderServiceTest.java renamed to yudao-module-mall/yudao-module-trade-biz/src/test/java/cn/iocoder/yudao/module/trade/service/order/TradeOrderUpdateServiceTest.java
| ... | ... | @@ -48,16 +48,16 @@ import static org.mockito.Mockito.verify; |
| 48 | 48 | import static org.mockito.Mockito.when; |
| 49 | 49 | |
| 50 | 50 | /** |
| 51 | - * {@link TradeOrderServiceImpl} 的单元测试类 | |
| 51 | + * {@link TradeOrderUpdateServiceImpl} 的单元测试类 | |
| 52 | 52 | * |
| 53 | 53 | * @author LeeYan9 |
| 54 | 54 | * @since 2022-09-07 |
| 55 | 55 | */ |
| 56 | -@Import({TradeOrderServiceImpl.class, TradeOrderConfig.class}) | |
| 57 | -public class TradeOrderServiceTest extends BaseDbUnitTest { | |
| 56 | +@Import({TradeOrderUpdateServiceImpl.class, TradeOrderConfig.class}) | |
| 57 | +public class TradeOrderUpdateServiceTest extends BaseDbUnitTest { | |
| 58 | 58 | |
| 59 | 59 | @Resource |
| 60 | - private TradeOrderServiceImpl tradeOrderService; | |
| 60 | + private TradeOrderUpdateServiceImpl tradeOrderUpdateService; | |
| 61 | 61 | |
| 62 | 62 | @Resource |
| 63 | 63 | private TradeOrderMapper tradeOrderMapper; |
| ... | ... | @@ -150,7 +150,7 @@ public class TradeOrderServiceTest extends BaseDbUnitTest { |
| 150 | 150 | }))).thenReturn(1000L); |
| 151 | 151 | |
| 152 | 152 | // 调用方法 |
| 153 | - TradeOrderDO order = tradeOrderService.createOrder(userId, userIp, reqVO); | |
| 153 | + TradeOrderDO order = tradeOrderUpdateService.createOrder(userId, userIp, reqVO); | |
| 154 | 154 | // 断言 TradeOrderDO 订单 |
| 155 | 155 | List<TradeOrderDO> tradeOrderDOs = tradeOrderMapper.selectList(); |
| 156 | 156 | assertEquals(tradeOrderDOs.size(), 1); |
| ... | ... | @@ -259,7 +259,7 @@ public class TradeOrderServiceTest extends BaseDbUnitTest { |
| 259 | 259 | .setMerchantOrderId("1")).setPrice(100)); |
| 260 | 260 | |
| 261 | 261 | // 调用 |
| 262 | - tradeOrderService.updateOrderPaid(id, payOrderId); | |
| 262 | + tradeOrderUpdateService.updateOrderPaid(id, payOrderId); | |
| 263 | 263 | // 断言 |
| 264 | 264 | TradeOrderDO dbOrder = tradeOrderMapper.selectById(id); |
| 265 | 265 | assertEquals(dbOrder.getStatus(), TradeOrderStatusEnum.UNDELIVERED.getStatus()); |
| ... | ... | @@ -282,7 +282,7 @@ public class TradeOrderServiceTest extends BaseDbUnitTest { |
| 282 | 282 | // mock 方法(支付单) |
| 283 | 283 | |
| 284 | 284 | // 调用 |
| 285 | - tradeOrderService.deliveryOrder(randomLongId(), deliveryReqVO); | |
| 285 | + tradeOrderUpdateService.deliveryOrder(randomLongId(), deliveryReqVO); | |
| 286 | 286 | // 断言 |
| 287 | 287 | TradeOrderDO dbOrder = tradeOrderMapper.selectById(1L); |
| 288 | 288 | assertEquals(dbOrder.getStatus(), TradeOrderStatusEnum.DELIVERED.getStatus()); |
| ... | ... | @@ -304,7 +304,7 @@ public class TradeOrderServiceTest extends BaseDbUnitTest { |
| 304 | 304 | // mock 方法(支付单) |
| 305 | 305 | |
| 306 | 306 | // 调用 |
| 307 | - tradeOrderService.receiveOrder(userId, id); | |
| 307 | + tradeOrderUpdateService.receiveOrder(userId, id); | |
| 308 | 308 | // 断言 |
| 309 | 309 | TradeOrderDO dbOrder = tradeOrderMapper.selectById(1L); |
| 310 | 310 | assertEquals(dbOrder.getStatus(), TradeOrderStatusEnum.COMPLETED.getStatus()); | ... | ... |