Browse Source

no message

FengChaoYu 3 weeks ago
parent
commit
9f2577846c

+ 24 - 0
mall-miniapp-service/src/main/java/com/gree/mall/miniapp/enums/DeliveryStatusEnum.java

@@ -0,0 +1,24 @@
+package com.gree.mall.miniapp.enums;
+
+import com.baomidou.mybatisplus.annotation.EnumValue;
+import com.fasterxml.jackson.annotation.JsonValue;
+import com.gree.mall.miniapp.enums.base.BaseEnum;
+import lombok.AccessLevel;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+@Getter
+@AllArgsConstructor(access = AccessLevel.PRIVATE)
+public enum DeliveryStatusEnum implements BaseEnum {
+
+    SEND("SEND","已发货"),
+    REFUND("REFUND","已退货"),
+    PART_REFUND("PART_REFUND","部分退货"),
+    REFUND_PRICE("REFUND_PRICE","仅退款"),
+    ;
+
+    @EnumValue
+    @JsonValue
+    private final String key;
+    private final String remark;
+}

+ 73 - 2
mall-miniapp-service/src/main/java/com/gree/mall/miniapp/logic/order/OrderDeliverLogic.java

@@ -1,7 +1,9 @@
 package com.gree.mall.miniapp.logic.order;
 
+import cn.hutool.core.date.DateTime;
 import cn.hutool.core.date.DateUtil;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.IdWorker;
 import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.gree.mall.miniapp.bean.order.OrderDeliverBean;
@@ -9,17 +11,33 @@ import com.gree.mall.miniapp.bean.user.CurrentCompanyWechat;
 import com.gree.mall.miniapp.bean.workorder.CountOrderStatusBean;
 import com.gree.mall.miniapp.commonmapper.CommonMapper;
 import com.gree.mall.miniapp.commonmapper.workorder.OrderBaseCMapper;
+import com.gree.mall.miniapp.enums.DeliveryStatusEnum;
+import com.gree.mall.miniapp.enums.IsYesNoEnum;
 import com.gree.mall.miniapp.enums.OrderStatusEnum;
 import com.gree.mall.miniapp.exception.RemoteServiceException;
 import com.gree.mall.miniapp.logic.common.CommonLogic;
+import com.gree.mall.miniapp.plus.entity.OrderDelivery;
+import com.gree.mall.miniapp.plus.entity.OrderDeliveryDetail;
+import com.gree.mall.miniapp.plus.entity.OrderDetail;
 import com.gree.mall.miniapp.plus.entity.OrderInfo;
+import com.gree.mall.miniapp.plus.service.OrderDeliveryDetailService;
+import com.gree.mall.miniapp.plus.service.OrderDeliveryService;
+import com.gree.mall.miniapp.plus.service.OrderDetailService;
 import com.gree.mall.miniapp.plus.service.OrderInfoService;
+import io.swagger.models.auth.In;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
 import java.util.Objects;
+import java.util.stream.Collectors;
 
 @Service
 @Slf4j
@@ -29,6 +47,8 @@ public class OrderDeliverLogic {
     private final CommonLogic commonLogic;
     private final OrderInfoService orderInfoService;
     private final OrderBaseCMapper orderBaseCMapper;
+    private final OrderDetailService orderDetailService;
+    private final OrderDeliveryDetailService orderDeliveryDetailService;
 
     public IPage<OrderInfo> orderList(String orderStatus, Integer pageNum, Integer pageSize) {
         CurrentCompanyWechat currentCompanyWechat = commonLogic.getCurrentCompanyWechat();
@@ -49,20 +69,71 @@ public class OrderDeliverLogic {
         return orderBaseCMapper.countDeliverOrder(currentCompanyWechat.getUserId());
     }
 
+    @Transactional
     public void finish(String orderId, String url, String finishRemark, String lng, String lat) {
         CurrentCompanyWechat currentCompanyWechat = commonLogic.getCurrentCompanyWechat();
-        // TODO 完成配送逻辑
+
         final OrderInfo orderInfo = orderInfoService.getById(orderId);
         if (!orderInfo.getOrderStatus().equals(OrderStatusEnum.PSZ.toString())) {
             throw new RemoteServiceException("订单状态非“配送中”,不能操作完成配送");
         }
 
+        final DateTime curDate = DateUtil.date();
         orderInfoService.lambdaUpdate()
                 .set(OrderInfo::getOrderStatus, OrderStatusEnum.OVER.toString())
                 .set(OrderInfo::getLastOrderStatus, OrderStatusEnum.PSZ.toString())
-                .set(OrderInfo::getOverTime, DateUtil.date())
+                .set(OrderInfo::getOverTime, curDate)
                 .eq(OrderInfo::getOrderId, orderId)
                 .eq(OrderInfo::getDeliveryUserId, currentCompanyWechat.getUserId())
                 .update();
+
+        orderInfo.setOverTime(curDate);
+        this.updateDeliverItem(orderInfo, url, finishRemark, lng, lat);
+    }
+
+    private void updateDeliverItem(OrderInfo orderInfo, String url, String finishRemark, String lng, String lat) {
+        List<OrderDetail> orderDetails = orderDetailService.lambdaQuery()
+                .eq(OrderDetail::getOrderId, orderInfo.getOrderId()).list();
+
+        int totalNum = 0;
+        final String orderDeliveryId = IdWorker.getIdStr();
+
+        List<OrderDeliveryDetail> orderDeliveryDetailList = new ArrayList<>();
+        for (OrderDetail orderDetail : orderDetails) {
+            OrderDeliveryDetail orderDeliveryDetail = new OrderDeliveryDetail();
+
+            totalNum = totalNum + orderDetail.getNum();
+
+            orderDeliveryDetail.setDeliveryId(orderDeliveryId)
+                    .setOrderDetailId(orderDetail.getOrderDetailId())
+                    .setSendNum(orderDetail.getNum());
+            orderDeliveryDetailList.add(orderDeliveryDetail);
+        }
+
+        OrderDelivery orderDelivery = new OrderDelivery();
+
+        orderDelivery.setDeliveryId(orderDeliveryId);
+        orderDelivery.setOrderId(orderInfo.getOrderId());
+        orderDelivery.setStatus(DeliveryStatusEnum.SEND.getKey());
+        orderDelivery.setDeliverTime(new Date());
+        orderDelivery.setPickType(IsYesNoEnum.NO.getKey());
+        orderDelivery.setCompanyName(orderInfo.getCompanyName());
+        orderDelivery.setCompanyWechatId(orderInfo.getCompanyWechatId());
+        orderDelivery.setCompanyWechatName(orderInfo.getCompanyWechatName());
+
+        orderDelivery.setStorageStockId(orderInfo.getPickStorageId());
+        orderDelivery.setStorageStockName(orderInfo.getPickStorageName());
+        orderDelivery.setCompanyWechatId(orderInfo.getCompanyWechatId());
+
+        orderDelivery.setSendNum(totalNum);
+        orderDelivery.setNum(totalNum);
+        orderDelivery.setFinishImgUrl(url)
+                .setFinishRemark(finishRemark)
+                .setFinishLng(lng)
+                .setFinishLat(lat);
+
+        orderDelivery.insert();
+
+        orderDeliveryDetailService.saveBatch(orderDeliveryDetailList);
     }
 }

+ 2 - 18
mall-server-api/src/main/java/com/gree/mall/manager/logic/order/OrderDeliveryLogic.java

@@ -120,13 +120,10 @@ public class OrderDeliveryLogic {
         sendOrderBody.setOrderDeliveryDetailList(orderDeliveryDetails);
 
         //最后调用发货
-        String delivery = this.deliverGoods(sendOrderBody.getOrderDeliveryDetailList(), sendOrderBody.getOrderId(), sendOrderBody.getLogisticsNo(),
+        this.deliverGoods(sendOrderBody.getOrderDeliveryDetailList(), sendOrderBody.getOrderId(), sendOrderBody.getLogisticsNo(),
                 sendOrderBody.getCompanyCode(), sendOrderBody.getStorageId(),
                 sendOrderBody.getWorkOrder(), sendOrderBody.getExchange()
                 , sendOrderBody.getPickName(), sendOrderBody.getPickPhone(), sendOrderBody.getPickType());
-
-        //减少库存+减去条码
-//        this.subStock(sendOrderBody, delivery);
     }
 
     /**
@@ -214,14 +211,6 @@ public class OrderDeliveryLogic {
 
         Storage detail = storageLogic.detailByName(orderInfo.getCompanyWechatId(), deliverGoodsBean.getWarehouse());
 
-//        if (!StringUtils.isEmpty(deliverGoodsBean.getLogisticsNo())) {
-//            ExpressCompany company = expressLogic.expressCompany(deliverGoodsBean.getExpressCorp());
-//            if (company == null) {
-//                throw new RemoteServiceException(String.format("订单号:%s物流公司出错,请检查", deliverGoodsBean.getOrderId()));
-//            }
-//            orderInfo.setCompanyCode(company.getCode());
-//            orderInfo.setCompanyName(company.getName());
-//        }
         orderInfo.setLogisticsNo(deliverGoodsBean.getLogisticsNo());
 
         if (isOver) {
@@ -355,12 +344,7 @@ public class OrderDeliveryLogic {
                 throw new RemoteServiceException("仓库不正确,订单号:" + orderId);
             }
         }
-//        if (!StringUtil.isEmpty(deliverGoodsBean.getLogisticsNo())) {
-//            ExpressCompany company = expressLogic.expressCompany(deliverGoodsBean.getExpressCorp().trim());
-//            if (company == null) {
-//                throw new RemoteServiceException("物流公司出错,订单号:" + orderId);
-//            }
-//        }
+
     }