Commit 503c996acdf6c4a4e6ef13aaa243445df7586f16
1 parent
e159b2e5
订单:
1、移除 deliverStatus 发货状态,暂时没作用 2、无需发货时,使用 logisticsId 进行实现 3、订单详情,增加 logisticsId 和 logisticsName 返回
Showing
9 changed files
with
42 additions
and
64 deletions
yudao-module-mall/yudao-module-promotion-biz/src/test/java/cn/iocoder/yudao/module/promotion/service/combination/CombinationActivityServiceImplTest.java
| ... | ... | @@ -152,19 +152,9 @@ public class CombinationActivityServiceImplTest extends BaseDbUnitTest { |
| 152 | 152 | // 准备参数 |
| 153 | 153 | CombinationActivityPageReqVO reqVO = new CombinationActivityPageReqVO(); |
| 154 | 154 | reqVO.setName(null); |
| 155 | - reqVO.setSpuId(null); | |
| 156 | - reqVO.setTotalLimitCount(null); | |
| 157 | - reqVO.setSingleLimitCount(null); | |
| 158 | 155 | reqVO.setStartTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28)); |
| 159 | 156 | reqVO.setEndTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28)); |
| 160 | - reqVO.setUserSize(null); | |
| 161 | - reqVO.setTotalNum(null); | |
| 162 | - reqVO.setSuccessNum(null); | |
| 163 | - reqVO.setOrderUserCount(null); | |
| 164 | - reqVO.setVirtualGroup(null); | |
| 165 | 157 | reqVO.setStatus(null); |
| 166 | - reqVO.setLimitDuration(null); | |
| 167 | - reqVO.setCreateTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28)); | |
| 168 | 158 | |
| 169 | 159 | // 调用 |
| 170 | 160 | PageResult<CombinationActivityDO> pageResult = combinationActivityService.getCombinationActivityPage(reqVO); | ... | ... |
yudao-module-mall/yudao-module-trade-api/src/main/java/cn/iocoder/yudao/module/trade/enums/order/TradeOrderDeliveryStatusEnum.java deleted
| 1 | -package cn.iocoder.yudao.module.trade.enums.order; | |
| 2 | - | |
| 3 | -import lombok.Getter; | |
| 4 | -import lombok.RequiredArgsConstructor; | |
| 5 | - | |
| 6 | -/** | |
| 7 | - * 交易订单 - 发货状态 | |
| 8 | - * | |
| 9 | - * @author 芋道源码 | |
| 10 | - */ | |
| 11 | -@RequiredArgsConstructor | |
| 12 | -@Getter | |
| 13 | -public enum TradeOrderDeliveryStatusEnum { | |
| 14 | - | |
| 15 | - UNDELIVERED(0, "未发货"), | |
| 16 | - DELIVERED(1, "已发货"), | |
| 17 | - RECEIVED(2, "已收货"); | |
| 18 | - | |
| 19 | - /** | |
| 20 | - * 状态值 | |
| 21 | - */ | |
| 22 | - private final Integer status; | |
| 23 | - /** | |
| 24 | - * 状态名 | |
| 25 | - */ | |
| 26 | - private final String name; | |
| 27 | - | |
| 28 | -} |
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/app/order/AppTradeOrderController.java
| ... | ... | @@ -10,10 +10,12 @@ import cn.iocoder.yudao.module.trade.controller.app.order.vo.*; |
| 10 | 10 | import cn.iocoder.yudao.module.trade.controller.app.order.vo.item.AppTradeOrderItemCommentCreateReqVO; |
| 11 | 11 | import cn.iocoder.yudao.module.trade.controller.app.order.vo.item.AppTradeOrderItemRespVO; |
| 12 | 12 | import cn.iocoder.yudao.module.trade.convert.order.TradeOrderConvert; |
| 13 | +import cn.iocoder.yudao.module.trade.dal.dataobject.delivery.DeliveryExpressDO; | |
| 13 | 14 | import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderDO; |
| 14 | 15 | import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderItemDO; |
| 15 | 16 | import cn.iocoder.yudao.module.trade.enums.order.TradeOrderStatusEnum; |
| 16 | 17 | import cn.iocoder.yudao.module.trade.framework.order.config.TradeOrderProperties; |
| 18 | +import cn.iocoder.yudao.module.trade.service.delivery.DeliveryExpressService; | |
| 17 | 19 | import cn.iocoder.yudao.module.trade.service.order.TradeOrderService; |
| 18 | 20 | import com.google.common.collect.Maps; |
| 19 | 21 | import io.swagger.v3.oas.annotations.Operation; |
| ... | ... | @@ -43,7 +45,11 @@ public class AppTradeOrderController { |
| 43 | 45 | @Resource |
| 44 | 46 | private TradeOrderService tradeOrderService; |
| 45 | 47 | @Resource |
| 48 | + private DeliveryExpressService deliveryExpressService; | |
| 49 | + | |
| 50 | + @Resource | |
| 46 | 51 | private ProductPropertyValueApi productPropertyValueApi; |
| 52 | + | |
| 47 | 53 | @Resource |
| 48 | 54 | private TradeOrderProperties tradeOrderProperties; |
| 49 | 55 | |
| ... | ... | @@ -76,14 +82,21 @@ public class AppTradeOrderController { |
| 76 | 82 | public CommonResult<AppTradeOrderDetailRespVO> getOrder(@RequestParam("id") Long id) { |
| 77 | 83 | // 查询订单 |
| 78 | 84 | TradeOrderDO order = tradeOrderService.getOrder(getLoginUserId(), id); |
| 85 | + if (order == null) { | |
| 86 | + return success(null); | |
| 87 | + } | |
| 88 | + | |
| 79 | 89 | // 查询订单项 |
| 80 | 90 | List<TradeOrderItemDO> orderItems = tradeOrderService.getOrderItemListByOrderId(order.getId()); |
| 81 | 91 | // 查询商品属性 |
| 82 | 92 | List<ProductPropertyValueDetailRespDTO> propertyValueDetails = productPropertyValueApi |
| 83 | 93 | .getPropertyValueDetailList(TradeOrderConvert.INSTANCE.convertPropertyValueIds(orderItems)); |
| 94 | + // 查询物流公司 | |
| 95 | + DeliveryExpressDO express = order.getLogisticsId() != null && order.getLogisticsId() > 0 ? | |
| 96 | + deliveryExpressService.getDeliveryExpress(order.getLogisticsId()) : null; | |
| 84 | 97 | // 最终组合 |
| 85 | 98 | return success(TradeOrderConvert.INSTANCE.convert02(order, orderItems, |
| 86 | - propertyValueDetails, tradeOrderProperties)); | |
| 99 | + propertyValueDetails, tradeOrderProperties, express)); | |
| 87 | 100 | } |
| 88 | 101 | |
| 89 | 102 | @GetMapping("/page") | ... | ... |
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/app/order/vo/AppTradeOrderDetailRespVO.java
| ... | ... | @@ -80,6 +80,12 @@ public class AppTradeOrderDetailRespVO { |
| 80 | 80 | @Schema(description = "配送方式", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") |
| 81 | 81 | private Integer deliveryType; |
| 82 | 82 | |
| 83 | + @Schema(description = "发货物流公司编号", example = "10") | |
| 84 | + private Long logisticsId; | |
| 85 | + | |
| 86 | + @Schema(description = "发货物流名称", example = "顺丰快递") | |
| 87 | + private String logisticsName; | |
| 88 | + | |
| 83 | 89 | @Schema(description = "发货物流单号", example = "1024") |
| 84 | 90 | private String logisticsNo; |
| 85 | 91 | ... | ... |
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/convert/order/TradeOrderConvert.java
| ... | ... | @@ -25,6 +25,7 @@ import cn.iocoder.yudao.module.trade.controller.app.order.vo.*; |
| 25 | 25 | import cn.iocoder.yudao.module.trade.controller.app.order.vo.item.AppTradeOrderItemCommentCreateReqVO; |
| 26 | 26 | import cn.iocoder.yudao.module.trade.controller.app.order.vo.item.AppTradeOrderItemRespVO; |
| 27 | 27 | import cn.iocoder.yudao.module.trade.dal.dataobject.cart.TradeCartDO; |
| 28 | +import cn.iocoder.yudao.module.trade.dal.dataobject.delivery.DeliveryExpressDO; | |
| 28 | 29 | import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderDO; |
| 29 | 30 | import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderItemDO; |
| 30 | 31 | import cn.iocoder.yudao.module.trade.enums.order.TradeOrderItemAfterSaleStatusEnum; |
| ... | ... | @@ -234,7 +235,8 @@ public interface TradeOrderConvert { |
| 234 | 235 | |
| 235 | 236 | // TODO 芋艿:可简化 |
| 236 | 237 | default AppTradeOrderDetailRespVO convert02(TradeOrderDO order, List<TradeOrderItemDO> orderItems, |
| 237 | - List<ProductPropertyValueDetailRespDTO> propertyValueDetails, TradeOrderProperties tradeOrderProperties) { | |
| 238 | + List<ProductPropertyValueDetailRespDTO> propertyValueDetails, TradeOrderProperties tradeOrderProperties, | |
| 239 | + DeliveryExpressDO express) { | |
| 238 | 240 | AppTradeOrderDetailRespVO orderVO = convert3(order, orderItems); |
| 239 | 241 | orderVO.setPayExpireTime(addTime(tradeOrderProperties.getExpireTime())); |
| 240 | 242 | if (StrUtil.isNotEmpty(order.getPayChannelCode())) { |
| ... | ... | @@ -260,6 +262,9 @@ public interface TradeOrderConvert { |
| 260 | 262 | } |
| 261 | 263 | // 处理收货地址 |
| 262 | 264 | orderVO.setReceiverAreaName(AreaUtils.format(order.getReceiverAreaId())); |
| 265 | + if (express != null) { | |
| 266 | + orderVO.setLogisticsId(express.getId()).setLogisticsName(express.getName()); | |
| 267 | + } | |
| 263 | 268 | return orderVO; |
| 264 | 269 | } |
| 265 | 270 | ... | ... |
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/dal/dataobject/order/TradeOrderDO.java
| ... | ... | @@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.trade.dal.dataobject.order; |
| 2 | 2 | |
| 3 | 3 | import cn.iocoder.yudao.framework.common.enums.TerminalEnum; |
| 4 | 4 | import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; |
| 5 | +import cn.iocoder.yudao.module.trade.dal.dataobject.delivery.DeliveryExpressDO; | |
| 5 | 6 | import cn.iocoder.yudao.module.trade.dal.dataobject.delivery.DeliveryPickUpStoreDO; |
| 6 | 7 | import cn.iocoder.yudao.module.trade.enums.delivery.DeliveryTypeEnum; |
| 7 | 8 | import cn.iocoder.yudao.module.trade.enums.order.*; |
| ... | ... | @@ -174,18 +175,18 @@ public class TradeOrderDO extends BaseDO { |
| 174 | 175 | private Integer deliveryType; |
| 175 | 176 | /** |
| 176 | 177 | * 发货物流公司编号 |
| 178 | + * | |
| 179 | + * 如果无需发货,则 logisticsId 设置为 0。原因是,不想再添加额外字段 | |
| 180 | + * | |
| 181 | + * 关联 {@link DeliveryExpressDO#getId()} | |
| 177 | 182 | */ |
| 178 | 183 | private Long logisticsId; |
| 179 | 184 | /** |
| 180 | 185 | * 发货物流单号 |
| 181 | - */ | |
| 182 | - private String logisticsNo; | |
| 183 | - /** | |
| 184 | - * 发货状态 | |
| 185 | 186 | * |
| 186 | - * 枚举 {@link TradeOrderDeliveryStatusEnum} | |
| 187 | + * 如果无需发货,则 logisticsNo 设置 ""。原因是,不想再添加额外字段 | |
| 187 | 188 | */ |
| 188 | - private Integer deliveryStatus; | |
| 189 | + private String logisticsNo; | |
| 189 | 190 | /** |
| 190 | 191 | * 发货时间 |
| 191 | 192 | */ | ... | ... |
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/order/TradeOrderServiceImpl.java
| ... | ... | @@ -217,8 +217,8 @@ public class TradeOrderServiceImpl implements TradeOrderService { |
| 217 | 217 | order.setTerminal(TerminalEnum.H5.getTerminal()); // todo 数据来源? |
| 218 | 218 | // 支付信息 |
| 219 | 219 | order.setAdjustPrice(0).setPayStatus(false); |
| 220 | - // 物流信息 TODO 芋艿:暂时写死物流方式;应该是前端选择的 | |
| 221 | - order.setDeliveryType(createReqVO.getDeliveryType()).setDeliveryStatus(TradeOrderDeliveryStatusEnum.UNDELIVERED.getStatus()); | |
| 220 | + // 物流信息 | |
| 221 | + order.setDeliveryType(createReqVO.getDeliveryType()); | |
| 222 | 222 | // 退款信息 |
| 223 | 223 | order.setRefundStatus(TradeOrderRefundStatusEnum.NONE.getStatus()).setRefundPrice(0); |
| 224 | 224 | tradeOrderMapper.insert(order); |
| ... | ... | @@ -412,8 +412,7 @@ public class TradeOrderServiceImpl implements TradeOrderService { |
| 412 | 412 | } |
| 413 | 413 | |
| 414 | 414 | // 更新 TradeOrderDO 状态为已发货,等待收货 |
| 415 | - updateOrderObj.setStatus(TradeOrderStatusEnum.DELIVERED.getStatus()) | |
| 416 | - .setDeliveryStatus(TradeOrderDeliveryStatusEnum.DELIVERED.getStatus()).setDeliveryTime(LocalDateTime.now()); | |
| 415 | + updateOrderObj.setStatus(TradeOrderStatusEnum.DELIVERED.getStatus()).setDeliveryTime(LocalDateTime.now()); | |
| 417 | 416 | int updateCount = tradeOrderMapper.updateByIdAndStatus(order.getId(), order.getStatus(), updateOrderObj); |
| 418 | 417 | if (updateCount == 0) { |
| 419 | 418 | throw exception(ORDER_DELIVERY_FAIL_STATUS_NOT_UNDELIVERED); |
| ... | ... | @@ -422,7 +421,7 @@ public class TradeOrderServiceImpl implements TradeOrderService { |
| 422 | 421 | |
| 423 | 422 | // 发送站内信 |
| 424 | 423 | tradeMessageService.sendMessageWhenDeliveryOrder(new TradeOrderMessageWhenDeliveryOrderReqBO().setOrderId(order.getId()) |
| 425 | - .setUserId(userId).setMessage(TradeOrderDeliveryStatusEnum.DELIVERED.getName())); | |
| 424 | + .setUserId(userId).setMessage(null)); | |
| 426 | 425 | |
| 427 | 426 | // TODO 芋艿:OrderLog |
| 428 | 427 | // TODO 设计:lili:是不是发货后,才支持售后? |
| ... | ... | @@ -453,8 +452,7 @@ public class TradeOrderServiceImpl implements TradeOrderService { |
| 453 | 452 | throw exception(ORDER_NOT_FOUND); |
| 454 | 453 | } |
| 455 | 454 | // 校验订单是否是待发货状态 |
| 456 | - if (!TradeOrderStatusEnum.isUndelivered(order.getStatus()) | |
| 457 | - || ObjectUtil.notEqual(order.getDeliveryStatus(), TradeOrderDeliveryStatusEnum.UNDELIVERED.getStatus())) { | |
| 455 | + if (!TradeOrderStatusEnum.isUndelivered(order.getStatus())) { | |
| 458 | 456 | throw exception(ORDER_DELIVERY_FAIL_STATUS_NOT_UNDELIVERED); |
| 459 | 457 | } |
| 460 | 458 | // 校验订单是否退款 |
| ... | ... | @@ -480,8 +478,7 @@ public class TradeOrderServiceImpl implements TradeOrderService { |
| 480 | 478 | |
| 481 | 479 | // 更新 TradeOrderDO 状态为已完成 |
| 482 | 480 | int updateCount = tradeOrderMapper.updateByIdAndStatus(order.getId(), order.getStatus(), |
| 483 | - new TradeOrderDO().setStatus(TradeOrderStatusEnum.COMPLETED.getStatus()) | |
| 484 | - .setDeliveryStatus(TradeOrderDeliveryStatusEnum.RECEIVED.getStatus()).setReceiveTime(LocalDateTime.now())); | |
| 481 | + new TradeOrderDO().setStatus(TradeOrderStatusEnum.COMPLETED.getStatus()).setReceiveTime(LocalDateTime.now())); | |
| 485 | 482 | if (updateCount == 0) { |
| 486 | 483 | throw exception(ORDER_RECEIVE_FAIL_STATUS_NOT_DELIVERED); |
| 487 | 484 | } |
| ... | ... | @@ -513,8 +510,7 @@ public class TradeOrderServiceImpl implements TradeOrderService { |
| 513 | 510 | throw exception(ORDER_NOT_FOUND); |
| 514 | 511 | } |
| 515 | 512 | // 校验订单是否是待收货状态 |
| 516 | - if (!TradeOrderStatusEnum.isDelivered(order.getStatus()) | |
| 517 | - || ObjectUtil.notEqual(order.getDeliveryStatus(), TradeOrderDeliveryStatusEnum.DELIVERED.getStatus())) { | |
| 513 | + if (!TradeOrderStatusEnum.isDelivered(order.getStatus())) { | |
| 518 | 514 | throw exception(ORDER_RECEIVE_FAIL_STATUS_NOT_DELIVERED); |
| 519 | 515 | } |
| 520 | 516 | return order; | ... | ... |
yudao-module-mall/yudao-module-trade-biz/src/test/java/cn/iocoder/yudao/module/trade/service/order/TradeOrderServiceTest.java
| ... | ... | @@ -177,7 +177,6 @@ public class TradeOrderServiceTest extends BaseDbUnitTest { |
| 177 | 177 | assertEquals(tradeOrderDO.getPayOrderId(), 1000L); |
| 178 | 178 | assertNull(tradeOrderDO.getPayChannelCode()); |
| 179 | 179 | assertNull(tradeOrderDO.getLogisticsId()); |
| 180 | - assertEquals(tradeOrderDO.getDeliveryStatus(), TradeOrderDeliveryStatusEnum.UNDELIVERED.getStatus()); | |
| 181 | 180 | assertNull(tradeOrderDO.getDeliveryTime()); |
| 182 | 181 | assertNull(tradeOrderDO.getReceiveTime()); |
| 183 | 182 | assertEquals(tradeOrderDO.getReceiverName(), "芋艿"); |
| ... | ... | @@ -274,8 +273,7 @@ public class TradeOrderServiceTest extends BaseDbUnitTest { |
| 274 | 273 | // mock 数据(TradeOrder) |
| 275 | 274 | TradeOrderDO order = randomPojo(TradeOrderDO.class, o -> { |
| 276 | 275 | o.setId(1L).setStatus(TradeOrderStatusEnum.UNDELIVERED.getStatus()); |
| 277 | - o.setLogisticsId(null).setLogisticsNo(null).setDeliveryTime(null) | |
| 278 | - .setDeliveryStatus(TradeOrderDeliveryStatusEnum.UNDELIVERED.getStatus()); | |
| 276 | + o.setLogisticsId(null).setLogisticsNo(null).setDeliveryTime(null); | |
| 279 | 277 | }); |
| 280 | 278 | tradeOrderMapper.insert(order); |
| 281 | 279 | // 准备参数 |
| ... | ... | @@ -288,7 +286,6 @@ public class TradeOrderServiceTest extends BaseDbUnitTest { |
| 288 | 286 | // 断言 |
| 289 | 287 | TradeOrderDO dbOrder = tradeOrderMapper.selectById(1L); |
| 290 | 288 | assertEquals(dbOrder.getStatus(), TradeOrderStatusEnum.DELIVERED.getStatus()); |
| 291 | - assertEquals(dbOrder.getDeliveryStatus(), TradeOrderDeliveryStatusEnum.DELIVERED.getStatus()); | |
| 292 | 289 | assertPojoEquals(dbOrder, deliveryReqVO); |
| 293 | 290 | assertNotNull(dbOrder.getDeliveryTime()); |
| 294 | 291 | } |
| ... | ... | @@ -298,7 +295,7 @@ public class TradeOrderServiceTest extends BaseDbUnitTest { |
| 298 | 295 | // mock 数据(TradeOrder) |
| 299 | 296 | TradeOrderDO order = randomPojo(TradeOrderDO.class, o -> { |
| 300 | 297 | o.setId(1L).setUserId(10L).setStatus(TradeOrderStatusEnum.DELIVERED.getStatus()); |
| 301 | - o.setDeliveryStatus(TradeOrderDeliveryStatusEnum.DELIVERED.getStatus()).setReceiveTime(null); | |
| 298 | + o.setReceiveTime(null); | |
| 302 | 299 | }); |
| 303 | 300 | tradeOrderMapper.insert(order); |
| 304 | 301 | // 准备参数 |
| ... | ... | @@ -311,7 +308,6 @@ public class TradeOrderServiceTest extends BaseDbUnitTest { |
| 311 | 308 | // 断言 |
| 312 | 309 | TradeOrderDO dbOrder = tradeOrderMapper.selectById(1L); |
| 313 | 310 | assertEquals(dbOrder.getStatus(), TradeOrderStatusEnum.COMPLETED.getStatus()); |
| 314 | - assertEquals(dbOrder.getDeliveryStatus(), TradeOrderDeliveryStatusEnum.RECEIVED.getStatus()); | |
| 315 | 311 | assertNotNull(dbOrder.getReceiveTime()); |
| 316 | 312 | } |
| 317 | 313 | ... | ... |
yudao-module-mall/yudao-module-trade-biz/src/test/resources/sql/create_tables.sql
| ... | ... | @@ -25,7 +25,6 @@ CREATE TABLE IF NOT EXISTS "trade_order" ( |
| 25 | 25 | "delivery_template_id" bigint, |
| 26 | 26 | "logistics_id" bigint, |
| 27 | 27 | "logistics_no" varchar, |
| 28 | - "delivery_status" smallint NOT NULL, | |
| 29 | 28 | "delivery_time" datetime, |
| 30 | 29 | "receive_time" datetime, |
| 31 | 30 | "receiver_name" varchar NOT NULL, | ... | ... |