From fb60682c4479c8597711f55be737e05b5ee6cc44 Mon Sep 17 00:00:00 2001 From: sin <2943460818@qq.com> Date: Fri, 5 Apr 2019 14:27:10 +0800 Subject: [PATCH] =?UTF-8?q?-=20=E6=B7=BB=E5=8A=A0=E8=AE=A2=E5=8D=95=20item?= =?UTF-8?q?s=20=E6=9F=A5=E8=AF=A2api?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admins/AdminsOrderController.java | 9 +++++ .../iocoder/mall/order/api/OrderService.java | 12 +++++++ .../api/constant/OrderErrorCodeEnum.java | 3 +- .../order/biz/convert/OrderItemConvert.java | 3 ++ .../biz/convert/OrderLogisticsConvert.java | 3 +- .../mall/order/biz/dao/OrderItemMapper.java | 8 +++++ .../mall/order/biz/dataobject/OrderDO.java | 14 -------- .../order/biz/dataobject/OrderItemDO.java | 18 ++++++++-- .../biz/dataobject/OrderLogisticsDO.java | 14 ++++++++ .../order/biz/service/OrderServiceImpl.java | 33 +++++++++++++++++-- .../main/resources/mapper/OrderItemMapper.xml | 13 ++++++++ .../src/main/resources/mapper/OrderMapper.xml | 5 +-- 12 files changed, 113 insertions(+), 22 deletions(-) diff --git a/order/order-application/src/main/java/cn/iocoder/mall/order/application/controller/admins/AdminsOrderController.java b/order/order-application/src/main/java/cn/iocoder/mall/order/application/controller/admins/AdminsOrderController.java index 340a37ae6..99e0b7507 100644 --- a/order/order-application/src/main/java/cn/iocoder/mall/order/application/controller/admins/AdminsOrderController.java +++ b/order/order-application/src/main/java/cn/iocoder/mall/order/application/controller/admins/AdminsOrderController.java @@ -2,6 +2,7 @@ package cn.iocoder.mall.order.application.controller.admins; import cn.iocoder.common.framework.vo.CommonResult; import cn.iocoder.mall.order.api.OrderService; +import cn.iocoder.mall.order.api.bo.OrderItemBO; import cn.iocoder.mall.order.api.bo.OrderPageBO; import cn.iocoder.mall.order.api.dto.*; import cn.iocoder.mall.order.application.convert.OrderConvertAPP; @@ -15,6 +16,8 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; +import java.util.List; + /** * 订单API(admins) * @@ -36,6 +39,12 @@ public class AdminsOrderController { return orderService.getOrderPage(orderQueryDTO); } + @GetMapping("order_items") + @ApiOperation("订单列表") + public CommonResult> getOrderItems(@RequestParam("orderId") Integer orderId) { + return orderService.getOrderItems(orderId); + } + @PutMapping("update_remark") @ApiOperation("更新-更新订单备注") public CommonResult updateRemark(@RequestParam("orderId") Integer orderId, diff --git a/order/order-service-api/src/main/java/cn/iocoder/mall/order/api/OrderService.java b/order/order-service-api/src/main/java/cn/iocoder/mall/order/api/OrderService.java index e3075366f..354fbe2af 100644 --- a/order/order-service-api/src/main/java/cn/iocoder/mall/order/api/OrderService.java +++ b/order/order-service-api/src/main/java/cn/iocoder/mall/order/api/OrderService.java @@ -2,9 +2,12 @@ package cn.iocoder.mall.order.api; import cn.iocoder.common.framework.vo.CommonResult; import cn.iocoder.mall.order.api.bo.OrderCreateBO; +import cn.iocoder.mall.order.api.bo.OrderItemBO; import cn.iocoder.mall.order.api.bo.OrderPageBO; import cn.iocoder.mall.order.api.dto.*; +import java.util.List; + /** * 订单 service * @@ -21,6 +24,14 @@ public interface OrderService { */ CommonResult getOrderPage(OrderQueryDTO orderQueryDTO); + /** + * 获取订单items + * + * @param orderId + * @return + */ + CommonResult> getOrderItems(Integer orderId); + /** * 订单 - 创建 * @@ -119,4 +130,5 @@ public interface OrderService { * mq 更新 status */ CommonResult listenerExchangeGoods(); + } diff --git a/order/order-service-api/src/main/java/cn/iocoder/mall/order/api/constant/OrderErrorCodeEnum.java b/order/order-service-api/src/main/java/cn/iocoder/mall/order/api/constant/OrderErrorCodeEnum.java index 5d90b102d..0e5a3df9f 100644 --- a/order/order-service-api/src/main/java/cn/iocoder/mall/order/api/constant/OrderErrorCodeEnum.java +++ b/order/order-service-api/src/main/java/cn/iocoder/mall/order/api/constant/OrderErrorCodeEnum.java @@ -15,7 +15,8 @@ public enum OrderErrorCodeEnum { ORDER_GET_SKU_FAIL(1008000001, "获取商品失败!"), ORDER_GET_SKU_NOT_EXISTENT(1008000002, "获取的商品不存在!"), ORDER_PAY_AMOUNT_NOT_NEGATIVE(1008000003, "支付金额不能为负数!"), - ORDER_STATUS_NOT_CANCEL(1008000004, "订单状态不能取消"), + ORDER_STATUS_NOT_CANCEL(1008000004, "订单状态不能取消!"), + ORDER_DELIVERY_INCORRECT_DATA(1008000005, "订单发货数据不正确!"), // order item ORDER_ITEM_ONLY_ONE(1008000004, "订单Item只有一个!"), diff --git a/order/order-service-impl/src/main/java/cn/iocoder/mall/order/biz/convert/OrderItemConvert.java b/order/order-service-impl/src/main/java/cn/iocoder/mall/order/biz/convert/OrderItemConvert.java index 9f88cf205..1a8591d69 100644 --- a/order/order-service-impl/src/main/java/cn/iocoder/mall/order/biz/convert/OrderItemConvert.java +++ b/order/order-service-impl/src/main/java/cn/iocoder/mall/order/biz/convert/OrderItemConvert.java @@ -24,6 +24,9 @@ public interface OrderItemConvert { @Mappings({}) OrderItemDO convert(OrderItemUpdateDTO orderItemUpdateDTO); + @Mappings({}) + List convertOrderItemBO(List orderItemDOList); + @Mappings({}) List convert(List orderCreateItemDTOList); diff --git a/order/order-service-impl/src/main/java/cn/iocoder/mall/order/biz/convert/OrderLogisticsConvert.java b/order/order-service-impl/src/main/java/cn/iocoder/mall/order/biz/convert/OrderLogisticsConvert.java index 712b540a5..a06a5af59 100644 --- a/order/order-service-impl/src/main/java/cn/iocoder/mall/order/biz/convert/OrderLogisticsConvert.java +++ b/order/order-service-impl/src/main/java/cn/iocoder/mall/order/biz/convert/OrderLogisticsConvert.java @@ -2,6 +2,7 @@ package cn.iocoder.mall.order.biz.convert; import cn.iocoder.mall.order.api.bo.OrderLogisticsBO; import cn.iocoder.mall.order.api.dto.OrderCreateDTO; +import cn.iocoder.mall.order.api.dto.OrderDeliveryDTO; import cn.iocoder.mall.order.api.dto.OrderLogisticsUpdateDTO; import cn.iocoder.mall.order.biz.dataobject.OrderLogisticsDO; import org.mapstruct.Mapper; @@ -22,7 +23,7 @@ public interface OrderLogisticsConvert { OrderLogisticsConvert INSTANCE = Mappers.getMapper(OrderLogisticsConvert.class); @Mappings({}) - OrderLogisticsDO convert(OrderCreateDTO orderCreateDTO); + OrderLogisticsDO convert(OrderDeliveryDTO orderDelivery); @Mappings({}) OrderLogisticsDO convert(OrderLogisticsUpdateDTO orderLogisticsDTO); diff --git a/order/order-service-impl/src/main/java/cn/iocoder/mall/order/biz/dao/OrderItemMapper.java b/order/order-service-impl/src/main/java/cn/iocoder/mall/order/biz/dao/OrderItemMapper.java index e60cace4d..e5b3321d4 100644 --- a/order/order-service-impl/src/main/java/cn/iocoder/mall/order/biz/dao/OrderItemMapper.java +++ b/order/order-service-impl/src/main/java/cn/iocoder/mall/order/biz/dao/OrderItemMapper.java @@ -48,6 +48,14 @@ public interface OrderItemMapper { OrderItemDO orderItemDO ); + /** + * 获取 - 根据 ids 查询 + * + * @param ids + * @return + */ + List selectByIds(Collection ids); + /** * 查询 - 根据 orderIds 和 status * diff --git a/order/order-service-impl/src/main/java/cn/iocoder/mall/order/biz/dataobject/OrderDO.java b/order/order-service-impl/src/main/java/cn/iocoder/mall/order/biz/dataobject/OrderDO.java index 59440115e..83a956e2a 100644 --- a/order/order-service-impl/src/main/java/cn/iocoder/mall/order/biz/dataobject/OrderDO.java +++ b/order/order-service-impl/src/main/java/cn/iocoder/mall/order/biz/dataobject/OrderDO.java @@ -20,10 +20,6 @@ public class OrderDO extends DeletableDO { * 用户编号 */ private Integer userId; - /** - * 物流id - */ - private Integer orderLogisticsId; /** * 订单编号 */ @@ -85,7 +81,6 @@ public class OrderDO extends DeletableDO { return "OrderDO{" + "id=" + id + ", userId=" + userId + - ", orderLogisticsId=" + orderLogisticsId + ", orderNo='" + orderNo + '\'' + ", payAmount=" + payAmount + ", paymentTime=" + paymentTime + @@ -116,15 +111,6 @@ public class OrderDO extends DeletableDO { return this; } - public Integer getOrderLogisticsId() { - return orderLogisticsId; - } - - public OrderDO setOrderLogisticsId(Integer orderLogisticsId) { - this.orderLogisticsId = orderLogisticsId; - return this; - } - public String getOrderNo() { return orderNo; } diff --git a/order/order-service-impl/src/main/java/cn/iocoder/mall/order/biz/dataobject/OrderItemDO.java b/order/order-service-impl/src/main/java/cn/iocoder/mall/order/biz/dataobject/OrderItemDO.java index e1a9cd354..043b1947d 100644 --- a/order/order-service-impl/src/main/java/cn/iocoder/mall/order/biz/dataobject/OrderItemDO.java +++ b/order/order-service-impl/src/main/java/cn/iocoder/mall/order/biz/dataobject/OrderItemDO.java @@ -48,6 +48,10 @@ public class OrderItemDO extends DeletableDO { * 支付金额(实付金额) */ private Integer payAmount; + /** + * 物流id + */ + private Integer orderLogisticsId; /// /// 时间信息 @@ -99,11 +103,12 @@ public class OrderItemDO extends DeletableDO { ", orderId=" + orderId + ", orderNo='" + orderNo + '\'' + ", skuId=" + skuId + - ", skuName=" + skuName + - ", skuImage=" + skuImage + + ", skuName='" + skuName + '\'' + + ", skuImage='" + skuImage + '\'' + ", quantity=" + quantity + ", price=" + price + ", payAmount=" + payAmount + + ", orderLogisticsId=" + orderLogisticsId + ", paymentTime=" + paymentTime + ", deliveryTime=" + deliveryTime + ", receiverTime=" + receiverTime + @@ -194,6 +199,15 @@ public class OrderItemDO extends DeletableDO { return this; } + public Integer getOrderLogisticsId() { + return orderLogisticsId; + } + + public OrderItemDO setOrderLogisticsId(Integer orderLogisticsId) { + this.orderLogisticsId = orderLogisticsId; + return this; + } + public Date getPaymentTime() { return paymentTime; } diff --git a/order/order-service-impl/src/main/java/cn/iocoder/mall/order/biz/dataobject/OrderLogisticsDO.java b/order/order-service-impl/src/main/java/cn/iocoder/mall/order/biz/dataobject/OrderLogisticsDO.java index e5485e650..c7199d8d8 100644 --- a/order/order-service-impl/src/main/java/cn/iocoder/mall/order/biz/dataobject/OrderLogisticsDO.java +++ b/order/order-service-impl/src/main/java/cn/iocoder/mall/order/biz/dataobject/OrderLogisticsDO.java @@ -34,6 +34,10 @@ public class OrderLogisticsDO extends BaseDO { * 收件详细地址 */ private String address; + /** + * 物流 (字典) + */ + private Integer logistics; /** * 物流编号 */ @@ -48,6 +52,7 @@ public class OrderLogisticsDO extends BaseDO { ", name='" + name + '\'' + ", mobile='" + mobile + '\'' + ", address='" + address + '\'' + + ", logistics=" + logistics + ", logisticsNo='" + logisticsNo + '\'' + '}'; } @@ -106,6 +111,15 @@ public class OrderLogisticsDO extends BaseDO { return this; } + public Integer getLogistics() { + return logistics; + } + + public OrderLogisticsDO setLogistics(Integer logistics) { + this.logistics = logistics; + return this; + } + public String getLogisticsNo() { return logisticsNo; } diff --git a/order/order-service-impl/src/main/java/cn/iocoder/mall/order/biz/service/OrderServiceImpl.java b/order/order-service-impl/src/main/java/cn/iocoder/mall/order/biz/service/OrderServiceImpl.java index 909b3471e..8fee739f9 100644 --- a/order/order-service-impl/src/main/java/cn/iocoder/mall/order/biz/service/OrderServiceImpl.java +++ b/order/order-service-impl/src/main/java/cn/iocoder/mall/order/biz/service/OrderServiceImpl.java @@ -105,6 +105,19 @@ public class OrderServiceImpl implements OrderService { ); } + @Override + public CommonResult> getOrderItems(Integer orderId) { + if (orderMapper.selectById(orderId) == null) { + return ServiceExceptionUtil.error(OrderErrorCodeEnum.ORDER_NOT_EXISTENT.getCode()); + } + + List orderItemDOList = orderItemMapper + .selectByOrderIdAndDeleted(orderId, DeletedStatusEnum.DELETED_NO.getValue()); + + List orderItemBOList = OrderItemConvert.INSTANCE.convertOrderItemBO(orderItemDOList); + return CommonResult.success(orderItemBOList); + } + @Override @Transactional public CommonResult createOrder(Integer userId, OrderCreateDTO orderCreateDTO) { @@ -132,7 +145,6 @@ public class OrderServiceImpl implements OrderService { // order OrderDO orderDO = new OrderDO() .setUserId(userId) - .setOrderLogisticsId(null) .setOrderNo(UUID.randomUUID().toString().replace("-", "")) .setPayAmount(-1) // 先设置一个默认值,金额在下面计算 .setClosingTime(null) @@ -265,8 +277,25 @@ public class OrderServiceImpl implements OrderService { } @Override + @Transactional public CommonResult orderDelivery(OrderDeliveryDTO orderDelivery) { - return null; + List orderItemIds = orderDelivery.getOrderItemIds(); + List orderItemDOList = orderItemMapper.selectByIds(orderItemIds); + if (orderItemDOList.size() != orderItemIds.size()) { + return ServiceExceptionUtil.error(OrderErrorCodeEnum.ORDER_DELIVERY_INCORRECT_DATA.getCode()); + } + + // 保存物流信息 + OrderLogisticsDO orderLogisticsDO = OrderLogisticsConvert.INSTANCE.convert(orderDelivery); + orderLogisticsDO + .setCreateTime(new Date()) + .setUpdateTime(null); + + orderLogisticsMapper.insert(orderLogisticsDO); + + // 关联订单item 和 物流信息 + orderItemMapper.updateByIds(orderItemIds, new OrderItemDO().setOrderLogisticsId(orderLogisticsDO.getId())); + return CommonResult.success(null); } @Override diff --git a/order/order-service-impl/src/main/resources/mapper/OrderItemMapper.xml b/order/order-service-impl/src/main/resources/mapper/OrderItemMapper.xml index e1c3a0a33..fcc19143d 100644 --- a/order/order-service-impl/src/main/resources/mapper/OrderItemMapper.xml +++ b/order/order-service-impl/src/main/resources/mapper/OrderItemMapper.xml @@ -115,6 +115,19 @@ WHERE order_id = #{orderId} + + + diff --git a/order/order-service-impl/src/main/resources/mapper/OrderMapper.xml b/order/order-service-impl/src/main/resources/mapper/OrderMapper.xml index d1b8e51c6..03eb79168 100644 --- a/order/order-service-impl/src/main/resources/mapper/OrderMapper.xml +++ b/order/order-service-impl/src/main/resources/mapper/OrderMapper.xml @@ -3,8 +3,9 @@ - id, user_id, order_logistics_id, order_no, pay_amount, payment_time, - delivery_time, receiver_time, closing_time, has_return_exchange, + id, user_id, order_no, pay_amount, payment_time, + delivery_time, receiver_time, closing_time, + has_return_exchange, status, remark, create_time, update_time, `deleted`