ソースを参照

订单物流轨迹逻辑修改

hyq 6 年 前
コミット
e2c6c84841

+ 4 - 1
kmall-admin/src/main/java/com/kmall/admin/service/impl/OrderServiceImpl.java

@@ -371,7 +371,10 @@ public class OrderServiceImpl implements OrderService {
         OrderEntity orderEntity = queryObject(id);
         if (orderEntity == null) {
             throw new RRException("此订单不存在!");
-        } else if (orderEntity.getShippingStatus() == 0 || StringUtils.isNullOrEmpty(orderEntity.getShippingNo())) {
+        } else if (orderEntity.getShippingStatus() == 0 ||
+                (StringUtils.isNullOrEmpty(orderEntity.getShippingNo()) &&
+                        !(orderEntity.getOrderBizType().equalsIgnoreCase(Dict.orderBizType.item_00.getItem())
+                                || orderEntity.getOrderBizType().equalsIgnoreCase(Dict.orderBizType.item_02.getItem())))) {
             throw new RRException("此订单还未发货!");
         }
 

+ 3 - 3
kmall-admin/src/main/resources/conf/express-kdn.properties

@@ -1,7 +1,7 @@
 ########## 快递-快递鸟配置 ##########
 
 # [dev, prod]
-express.kdn.env = dev
+express.kdn.env=prod
 
 #========== 开发环境 ==========
 #电商ID
@@ -15,9 +15,9 @@ kdn.dev.url=http://api.kdniao.cc/Ebusiness/EbusinessOrderHandle.aspx
 
 #========== 生产环境 ==========
 #电商ID
-kdn.prod.businessId=1302764
+kdn.prod.businessId=1396325
 #电商加密私钥,快递鸟提供
-kdn.prod.appKey=d7e59ac9-88f4-4ba3-a391-b95076cfc622
+kdn.prod.appKey=928c373d-9481-4ce2-817a-a28863766a4f
 #快递鸟请求url
 kdn.prod.url=http://api.kdniao.cc/Ebusiness/EbusinessOrderHandle.aspx
 

+ 59 - 52
kmall-api/src/main/java/com/kmall/api/api/ApiOrderController.java

@@ -135,15 +135,28 @@ public class ApiOrderController extends ApiBaseAction {
 
         //查询物流轨迹
         List<Map> mapList = new ArrayList<>();
-
-        if((orderInfo.getOrderBizType().equalsIgnoreCase(Dict.orderBizType.item_10.getItem()) ||
-                orderInfo.getOrderBizType().equalsIgnoreCase(Dict.orderBizType.item_02.getItem()))){
-            Map map = new HashMap();
-            map.put("AcceptStation", "交易完成,用户已提走");
-            mapList.add(map);
-        }
         OrderProcessRecordEntity entity = orderProcessRecordService.queryObjectByOrderSn(orderInfo.getOrder_sn());
         if (entity != null) {
+            if((orderInfo.getOrderBizType().equalsIgnoreCase(Dict.orderBizType.item_10.getItem()) ||
+                    orderInfo.getOrderBizType().equalsIgnoreCase(Dict.orderBizType.item_02.getItem()))){
+                Map map = new HashMap();
+                map.put("AcceptStation", "交易完成,用户已提走");
+                mapList.add(map);
+            }else{
+                if (!StringUtils.isEmpty(orderInfo.getShipping_code()) && !StringUtils.isEmpty(orderInfo.getShipping_no()) &&entity.getShipmentSuccTime()!=null) {
+                    JSONObject Traces = apiKdniaoService.getOrderTracesByJson(orderInfo.getShipping_code(), orderInfo.getShipping_no());
+                    if (Traces != null) {
+                        mapList = (List<Map>) Traces.get("Traces");
+                        String State = (String) Traces.get("State"); //物流状态:2-在途中,3-签收,4-问题件
+                        if (Dict.logisticsStatus.item_0.getItem().equalsIgnoreCase(State)) {
+                            Map noDataMap = new HashMap();
+                            noDataMap.put("AcceptTime", "");
+                            noDataMap.put("AcceptStation", Traces.get("Reason"));
+                            mapList.add(noDataMap);
+                        }
+                    }
+                }
+            }
             if (Dict.isSend.item_1.getItem().equalsIgnoreCase(entity.getIsCustomsSend()) && entity.getShipmentSuccTime() != null) {
                 Map map = new HashMap();
                 map.put("AcceptTime", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(entity.getShipmentSuccTime()));
@@ -174,22 +187,6 @@ public class ApiOrderController extends ApiBaseAction {
                 map.put("AcceptStation", "订单提交成功");
                 mapList.add(map);
             }
-
-            if(!orderInfo.getOrderBizType().equalsIgnoreCase(Dict.orderBizType.item_10.getItem())){
-                if (!StringUtils.isEmpty(orderInfo.getShipping_code()) && !StringUtils.isEmpty(orderInfo.getShipping_no()) &&entity.getShipmentSuccTime()!=null) {
-                    JSONObject Traces = apiKdniaoService.getOrderTracesByJson(orderInfo.getShipping_code(), orderInfo.getShipping_no());
-                    if (Traces != null) {
-                        mapList = (List<Map>) Traces.get("Traces");
-                        String State = (String) Traces.get("State"); //物流状态:2-在途中,3-签收,4-问题件
-                        if (Dict.logisticsStatus.item_0.getItem().equalsIgnoreCase(State)) {
-                            Map noDataMap = new HashMap();
-                            noDataMap.put("AcceptTime", "");
-                            noDataMap.put("AcceptStation", Traces.get("Reason"));
-                            mapList.add(noDataMap);
-                        }
-                    }
-                }
-            }
         }
         resultObj.put("wuliu", mapList != null && mapList.size() > 0 ? mapList.get(0) : null);
 
@@ -321,38 +318,48 @@ public class ApiOrderController extends ApiBaseAction {
         }
         List<WuliuVo> wuliuList = new ArrayList<WuliuVo>();
 
-        if((orderInfo.getOrderBizType().equalsIgnoreCase(Dict.orderBizType.item_10.getItem())
-                || orderInfo.getOrderBizType().equalsIgnoreCase(Dict.orderBizType.item_02.getItem()))
-                && orderInfo.getOrder_status() == Integer.parseInt(Dict.orderStatus.item_301.getItem())){
-            WuliuVo vo = new WuliuVo();
-            vo.setAcceptStation("交易完成,用户已提走");
-            wuliuList.add(vo);
-        }
-        if(!orderInfo.getOrderBizType().equalsIgnoreCase(Dict.orderBizType.item_10.getItem())) {
-            if (!StringUtils.isEmpty(orderInfo.getShipping_code()) && !StringUtils.isEmpty(orderInfo.getShipping_no())) {
-                // 快递
-                JSONObject Traces = apiKdniaoService.getOrderTracesByJson(orderInfo.getShipping_code(), orderInfo.getShipping_no());
-                List<Map> mapList = (List<Map>) Traces.get("Traces");
-                for (int i = 0; i < mapList.size(); i++) {
-                    WuliuVo vo = new WuliuVo();
-                    vo.setAcceptTime((String) mapList.get(i).get("AcceptTime"));
-                    vo.setAcceptStation((String) mapList.get(i).get("AcceptStation"));
-                    wuliuList.add(vo);
-                }
+        OrderProcessRecordEntity entity = orderProcessRecordService.queryObjectByOrderSn(orderInfo.getOrder_sn());
+        if(entity !=null){
+            if(orderInfo.getOrderBizType().equalsIgnoreCase(Dict.orderBizType.item_10.getItem())
+                    || orderInfo.getOrderBizType().equalsIgnoreCase(Dict.orderBizType.item_02.getItem())){
+                WuliuVo vo = new WuliuVo();
+                vo.setAcceptStation("交易完成,用户已提走");
+                wuliuList.add(vo);
+            }else {
+                if (!StringUtils.isEmpty(orderInfo.getShipping_code()) && !StringUtils.isEmpty(orderInfo.getShipping_no()) && entity.getShipmentSuccTime() != null) {
+                    // 快递
+                    JSONObject Traces = apiKdniaoService.getOrderTracesByJson(orderInfo.getShipping_code(), orderInfo.getShipping_no());
+                    List<Map> mapList = (List<Map>) Traces.get("Traces");
+                    for (int i = 0; i < mapList.size(); i++) {
+                        WuliuVo vo = new WuliuVo();
+                        vo.setAcceptTime((String) mapList.get(i).get("AcceptTime"));
+                        vo.setAcceptStation((String) mapList.get(i).get("AcceptStation"));
+                        wuliuList.add(vo);
+                    }
 
-                String State = (String) Traces.get("State"); //物流状态:2-在途中,3-签收,4-问题件
-                String Reason = (String) Traces.get("Reason");
-                if (Dict.logisticsStatus.item_0.getItem().equalsIgnoreCase(State)) {
-                    WuliuVo wuliuVo = new WuliuVo();
-                    wuliuVo.setAcceptStation(Reason);
-                    wuliuList.add(wuliuVo);
+                    String State = (String) Traces.get("State"); //物流状态:2-在途中,3-签收,4-问题件
+                    String Reason = (String) Traces.get("Reason");
+                    if (Dict.logisticsStatus.item_0.getItem().equalsIgnoreCase(State)) {
+                        WuliuVo wuliuVo = new WuliuVo();
+                        wuliuVo.setAcceptStation(Reason);
+                        wuliuList.add(wuliuVo);
+                    }
+                    map.put("State", Traces.get("State")); //物流状态:2-在途中,3-签收,4-问题件
+                    map.put("Reason", Traces.get("Reason"));
                 }
-                map.put("State", Traces.get("State")); //物流状态:2-在途中,3-签收,4-问题件
-                map.put("Reason", Traces.get("Reason"));
             }
-        }
-        OrderProcessRecordEntity entity = orderProcessRecordService.queryObjectByOrderSn(orderInfo.getOrder_sn());
-        if(entity !=null){
+            if (Dict.isSend.item_1.getItem().equalsIgnoreCase(entity.getIsCustomsSend()) && entity.getShipmentSuccTime() != null) {
+                WuliuVo wuliuVo = new WuliuVo();
+                wuliuVo.setAcceptStation("订单已出库");
+                wuliuVo.setAcceptTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(entity.getShipmentSuccTime()));
+                wuliuList.add(wuliuVo);
+            }
+            if (Dict.isSend.item_1.getItem().equalsIgnoreCase(entity.getIsCustomsSend()) && entity.getShipmentStartTime() != null) {
+                WuliuVo wuliuVo = new WuliuVo();
+                wuliuVo.setAcceptStation("订单正在打包中");
+                wuliuVo.setAcceptTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(entity.getShipmentStartTime()));
+                wuliuList.add(wuliuVo);
+            }
             if(Dict.isSend.item_1.getItem().equalsIgnoreCase(entity.getIsCustomsSend())){
                 WuliuVo wuliuVo = new WuliuVo();
                 wuliuVo.setAcceptStation("订单清关完成,等待仓库发货");

+ 3 - 1
kmall-schedule/src/main/java/com/kmall/schedule/dao/QzOrderMapper.java

@@ -44,7 +44,9 @@ public interface QzOrderMapper {
 
     List<Map> queryShipmentOrderList();
 
-    void updateShipmentOrder();
+    List<Map> queryShipmentBondedOrderList();
+
+    void updateShipmentOrder(Map param);
 
     List<Map> queryReceiptOrderList();
 

+ 15 - 2
kmall-schedule/src/main/java/com/kmall/schedule/service/QzOrderService.java

@@ -350,10 +350,23 @@ public class QzOrderService {
     public void shipmentOrderAutoTakeGoods() {
         logger.info(">>>>>>>>>>>>>>>>>>>>shipmentOrderAutoTakeGoods is start ");
         logger.info(">>>>>>>>>>>>>>>>>>>>商品发货后7天自动确认收货 ");
-        // 获取发货后7天的订单
+        // 查询门店业务发货后7天的订单
         List<Map> shipmentOrderList = qzOrderMapper.queryShipmentOrderList();
         if (null != shipmentOrderList && shipmentOrderList.size() > 0) {
-            qzOrderMapper.updateShipmentOrder();
+            for (Map map:shipmentOrderList) {
+                Map orderMap = new HashMap();
+                orderMap.put("orderId",MapUtils.getLong("orderId",map));
+                qzOrderMapper.updateShipmentOrder(orderMap);
+            }
+        }
+        //查询保税备货发货后7天的订单
+        List<Map> shipmentBondedOrderList = qzOrderMapper.queryShipmentBondedOrderList();
+        if (null != shipmentBondedOrderList && shipmentBondedOrderList.size() > 0) {
+            for (Map map:shipmentBondedOrderList) {
+                Map orderMap = new HashMap();
+                orderMap.put("orderId",MapUtils.getLong("orderId",map));
+                qzOrderMapper.updateShipmentOrder(orderMap);
+            }
         }
         logger.info(">>>>>>>>>>>>>>>>>>>>shipmentOrderAutoTakeGoods is end ");
     }

+ 13 - 8
kmall-schedule/src/main/resources/mybatis/mapper/QzOrderMapper.xml

@@ -93,24 +93,29 @@
     </update>
 
     <select id="queryShipmentOrderList" resultType="map">
-        SELECT a.pay_transaction_id,a.order_sn,a.order_status,a.pay_status,a.id 'order_id',a.merch_order_sn,date_format(a.add_time,'%Y-%m-%d %H:%i:%s') as add_time
-        FROM `mall_order` a where order_status='300' and shipping_status ='1' AND add_time <![CDATA[ <  ]]> DATE_ADD(now(),INTERVAL -7 DAY)
+        SELECT a.order_sn,a.order_status,a.pay_status,a.id 'orderId',a.merch_order_sn,date_format(r.customs_succ_time,'%Y-%m-%d %H:%i:%s') as customs_succ_time
+        FROM `mall_order` a inner join mall_order_process_record r on a.order_sn=r.order_sn where order_status='300'
+        and shipping_status ='1' and a.order_biz_type in(10,02) AND r.customs_succ_time <![CDATA[ <  ]]>  DATE_ADD(now(),INTERVAL -7 DAY)
+    </select>
+    <select id="queryShipmentBondedOrderList" resultType="map">
+        SELECT a.order_sn,a.order_status,a.pay_status,a.id 'orderId',a.merch_order_sn,date_format(r.shipment_succ_time,'%Y-%m-%d %H:%i:%s') as shipment_succ_time
+        FROM `mall_order` a inner join mall_order_process_record r on a.order_sn=r.order_sn where order_status='300' and shipping_status ='1'
+        and a.order_biz_type in(00,11) AND r.shipment_succ_time <![CDATA[ <  ]]>  DATE_ADD(now(),INTERVAL -7 DAY)
     </select>
 
-    <update id="updateShipmentOrder">
-        update mall_order set order_status ='301', shipping_status='2' where
-        order_status='300' and shipping_status ='1' AND add_time <![CDATA[ < ]]> DATE_ADD(now(),INTERVAL -7 DAY)
+    <update id="updateShipmentOrder" parameterType="map">
+        update mall_order set order_status ='301', shipping_status='2',confirm_time=now() where id=#{orderId}
     </update>
 
     <select id="queryReceiptOrderList" resultType="map">
         select o.user_id 'userId',o.id 'orderId',g.product_id'productId',g.goods_specification_name_value 'goodsSpecificationNameValue', g.goods_id 'goodsId',
-        g.goods_name 'goodsName' FROM `mall_order` o inner join mall_order_goods g on o.id = g.order_id
-        where order_status='301' and shipping_status ='2' and comment_count=1 AND add_time <![CDATA[ < ]]> DATE_ADD(now(),INTERVAL -20 DAY)
+        g.goods_name 'goodsName',confirm_time FROM `mall_order` o inner join mall_order_goods g on o.id = g.order_id
+        where order_status='301' and shipping_status ='2' and comment_count=0 AND confirm_time <![CDATA[ < ]]> DATE_ADD(now(),INTERVAL -30 DAY)
     </select>
 
     <update id="updateReceiptOrderByCommentCount">
         update mall_order set comment_count = 1 where
-        order_status='301' and shipping_status ='2' and comment_count=0 AND add_time <![CDATA[ <  ]]> DATE_ADD(now(),INTERVAL -20 DAY)
+        order_status='301' and shipping_status ='2' and comment_count=0 AND confirm_time <![CDATA[ < ]]> DATE_ADD(now(),INTERVAL -30 DAY)
     </update>
 
     <update id="insertComment" parameterType="map">