1
0
Quellcode durchsuchen

第三方商户库存共享schedule模块修改

hyq vor 6 Jahren
Ursprung
Commit
1f172b5f7f

+ 2 - 0
kmall-schedule/src/main/java/com/kmall/schedule/dao/QzOrderMapper.java

@@ -34,6 +34,8 @@ public interface QzOrderMapper {
 
     void updateStockNum(Map param);
 
+    void updateGoodsStockNum(Map param);
+
     List<Map> queryRefundOrderList();
 
     void updateOrderRefund(Map param);

+ 38 - 32
kmall-schedule/src/main/java/com/kmall/schedule/service/QzOrderService.java

@@ -215,17 +215,43 @@ public class QzOrderService {
         List<Map> pastOrderList = qzOrderMapper.queryPastOrderList();
         if (null != pastOrderList && pastOrderList.size() > 0) {
             for (Map map : pastOrderList) {
-                Integer number = MapUtils.getInteger("number", map);
-                Integer stock_num = MapUtils.getInteger("stock_num", map);
-                Long storeRelaId = MapUtils.getLong("storeRelaId", map);
+                restStockNum(map);
+            }
+            qzOrderMapper.unpayPastUpdate();
+        }
+        logger.info(">>>>>>>>>>>>>>>>>>>>unpayPastUpdate is end ");
+    }
+
+    /**
+     * 还原库存
+     * @param map
+     */
+    private void restStockNum(Map map){
+        Integer number = MapUtils.getInteger("number", map);
+        Integer stock_num = MapUtils.getInteger("stock_num", map);
+        Long storeRelaId = MapUtils.getLong("storeRelaId", map);
+        String isStockShare = MapUtils.getString("is_stock_share", map);
+        Integer goods_number = MapUtils.getInteger("goods_number", map);
+        Long goods_id = MapUtils.getLong("goods_id", map);
+        String goods_biz_type = MapUtils.getString("goods_biz_type", map);
+        if(goods_biz_type.equalsIgnoreCase(Dict.orderBizType.item_00.getItem())){
+            if(goods_biz_type.equalsIgnoreCase(Dict.orderBizType.item_00.getItem()) && isStockShare.equalsIgnoreCase(Dict.isStockShare.item_1.getItem())) {//共享
+                Map param = Maps.newHashMap();
+                param.put("id", goods_id);
+                param.put("goods_number", goods_number + number);
+                qzOrderMapper.updateGoodsStockNum(param);//商户商品库存还原
+            }else{
                 Map param = Maps.newHashMap();
                 param.put("id", storeRelaId);
                 param.put("stock_num", stock_num + number);
-                qzOrderMapper.updateStockNum(param);
+                qzOrderMapper.updateStockNum(param);//门店库存还原
             }
-            qzOrderMapper.unpayPastUpdate();
+        }else{
+            Map param = Maps.newHashMap();
+            param.put("id", storeRelaId);
+            param.put("stock_num", stock_num + number);
+            qzOrderMapper.updateStockNum(param);//门店库存还原
         }
-        logger.info(">>>>>>>>>>>>>>>>>>>>unpayPastUpdate is end ");
     }
 
     /**
@@ -616,9 +642,7 @@ public class QzOrderService {
         String orderId = MapUtils.getString("order_id", map);
         String orderSn = MapUtils.getString("order_sn", map);
         String add_time = MapUtils.getString("add_time", map);
-        Integer number = MapUtils.getInteger("number", map);
-        Integer stock_num = MapUtils.getInteger("stock_num", map);
-        Long storeRelaId = MapUtils.getLong("storeRelaId", map);
+
         Date addTime = DateUtils.strToDate(add_time);
         Date nowDate = new Date();
 
@@ -642,10 +666,7 @@ public class QzOrderService {
                 } else if (result.getTrade_state().equalsIgnoreCase(Dict.tradeState.item_NOTPAY.getItem())) {//订单未支付
                     Map orderRaram = Maps.newHashMap();
                     if (getDateBetween(addTime, nowDate) >= 15) {//订单下单时间超过15分钟直接取消订单
-                        Map param = Maps.newHashMap();
-                        param.put("id", storeRelaId);
-                        param.put("stock_num", stock_num + number);
-                        qzOrderMapper.updateStockNum(param);//库存还原
+                        restStockNum(map);//库存还原
                         orderRaram.put("orderStatus", Dict.orderStatus.item_101.getItem());//订单状态已取消
                         orderRaram.put("payStatus", Dict.payStatus.item_0.getItem());//支付状态未支付
                     } else {
@@ -660,10 +681,7 @@ public class QzOrderService {
                     orderRaram.put("orderStatus", Dict.orderStatus.item_500.getItem());
                     orderRaram.put("orderId", orderId);
                     qzOrderMapper.updateOrderInfo(orderRaram);
-                    Map param = Maps.newHashMap();
-                    param.put("id", storeRelaId);
-                    param.put("stock_num", stock_num + number);
-                    qzOrderMapper.updateStockNum(param);//库存还原
+                    restStockNum(map);//库存还原
                     logger.info(">>>>>>>>>>>>>>>>>>>>wxOrderByTransactionIdQueryUpdFail 根据支付单查询微信接口返回信息:state 【" + result.getTrade_state() +
                             "】,des【" + result.getTrade_state_desc() + "】");
                 } else if (result.getTrade_state().equalsIgnoreCase(Dict.tradeState.item_PAYERROR.getItem())) {
@@ -736,10 +754,7 @@ public class QzOrderService {
                 } else if (result.getTrade_state().equalsIgnoreCase(Dict.tradeState.item_NOTPAY.getItem())) {//订单未支付
                     Map orderRaram = Maps.newHashMap();
                     if (getDateBetween(addTime, nowDate) >= 15) {//订单下单时间超过15分钟直接取消订单
-                        Map param = Maps.newHashMap();
-                        param.put("id", storeRelaId);
-                        param.put("stock_num", stock_num + number);
-                        qzOrderMapper.updateStockNum(param);//库存还原
+                        restStockNum(map);//库存还原
                         orderRaram.put("orderStatus", Dict.orderStatus.item_101.getItem());//订单状态已取消
                         orderRaram.put("payStatus", Dict.payStatus.item_0.getItem());//支付状态未支付
                     } else {
@@ -754,10 +769,7 @@ public class QzOrderService {
                     orderRaram.put("orderStatus", Dict.orderStatus.item_500.getItem());
                     orderRaram.put("orderId", orderId);
                     qzOrderMapper.updateOrderInfo(orderRaram);
-                    Map param = Maps.newHashMap();
-                    param.put("id", storeRelaId);
-                    param.put("stock_num", stock_num + number);
-                    qzOrderMapper.updateStockNum(param);//库存还原
+                    restStockNum(map);//库存还原
                     logger.info(">>>>>>>>>>>>>>>>>>>>wxGlobalOrderByTransactionIdQueryUpdFail 根据支付单查询微信国际接口返回信息:state 【" + result.getTrade_state() +
                             "】,des【" + Dict.tradeState.item_CLOSED.getItemName() + "】");
                 } else if (result.getTrade_state().equalsIgnoreCase(Dict.tradeState.item_PAYERROR.getItem())) {
@@ -804,9 +816,6 @@ public class QzOrderService {
                 String orderId = MapUtils.getString("order_id", map);
                 String orderSn = MapUtils.getString("order_sn", map);
                 String add_time = MapUtils.getString("add_time", map);
-                Integer number = MapUtils.getInteger("number", map);
-                Integer stockNum = MapUtils.getInteger("stock_num", map);
-                Long storeRelaId = MapUtils.getLong("storeRelaId", map);
 
                 PinganResponseDto response = PinganUtil.pinganPaystatus(outNo);
 
@@ -839,10 +848,7 @@ public class QzOrderService {
                             if (getDateBetween(addTime, nowDate) >= 15) {//订单下单时间超过15分钟直接取消订单
                                 orderRaram.put("payStatus", 0);//支付状态未支付
                                 orderRaram.put("orderStatus", 101);//订单状态已取消
-                                Map param = Maps.newHashMap();
-                                param.put("id", storeRelaId);
-                                param.put("stock_num", stockNum + number);
-                                qzOrderMapper.updateStockNum(param);
+                                restStockNum(map);//库存还原
                             } else {
                                 orderRaram.put("payStatus", 0);//支付状态未支付
                                 orderRaram.put("orderStatus", 0);//订单状态未支付

+ 3 - 0
kmall-schedule/src/main/resources/kmall-scheduler.xml

@@ -35,6 +35,9 @@
                 <prop key="org.quartz.jobStore.misfireThreshold">12000</prop>
                 <!-- 表前缀 -->
                 <prop key="org.quartz.jobStore.tablePrefix">QRTZ_</prop>
+                <prop key="org.quartz.plugin.shutdownhook.class">org.quartz.plugins.management.ShutdownHookPlugin</prop>
+                <prop key="org.quartz.plugin.shutdownhook.cleanShutdown">true</prop>
+                <prop key="org.quartz.threadPool.threadsInheritContextClassLoaderOfInitializingThread">true</prop>
             </props>
         </property>
 

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

@@ -21,15 +21,18 @@
     </select>
 
     <select id="queryPastOrderList" resultType="map">
-        SELECT b.product_id,b.number,c.stock_num,c.id as storeRelaId
+        SELECT b.product_id,b.number,c.stock_num,c.id as storeRelaId,mb.is_stock_share,mb.third_party_merch_code,g.goods_number,g.id goods_id,g.goods_biz_type
         FROM mall_order a
         LEFT JOIN mall_order_goods b ON a.id = b.order_id
-        LEFT JOIN mall_product_store_rela c ON b.product_id = c.product_id
+        LEFT JOIN mall_product_store_rela c ON b.goods_id = c.goods_id
         AND c.store_id = a.store_id
+				left join mall_goods g on g.id=c.goods_id and g.merch_sn=c.merch_sn
+        left join third_merchant_biz mb on mb.third_party_merch_code=g.third_party_merch_code and mb.merch_sn=g.merch_sn
         WHERE 1 = 1
         AND a.add_time <![CDATA[ < ]]> DATE_ADD(now(),INTERVAL -15 MINUTE)
         AND a.order_status in (0,100) and a.order_type = 1 AND a.is_onffline_order = 0
     </select>
+
     <update id="unpayPastUpdate">
         UPDATE mall_order a
         SET order_status=101,shipping_status=0,pay_status=0
@@ -45,6 +48,13 @@
         </set>
         where a.id = #{id}
     </update>
+    <update id="updateGoodsStockNum" parameterType="map">
+        update mall_goods a
+        <set>
+            <if test="stock_num != null">a.`goods_number` = #{goods_number},</if>
+        </set>
+        where a.id = #{id}
+    </update>
 
 
     <select id="queryRefundOrderList" resultType="map">
@@ -58,22 +68,28 @@
 
     <select id="queryPayingOrderList" 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,
-        b.product_id,b.number,c.stock_num,c.id as storeRelaId,a.pay_flag
+        b.product_id,b.number,c.stock_num,c.id as storeRelaId,a.pay_flag,mb.is_stock_share,mb.third_party_merch_code,g.goods_number,g.id goods_id,g.goods_biz_type
         from mall_order a
         LEFT JOIN mall_order_goods b ON a.id = b.order_id
-        LEFT JOIN mall_product_store_rela c ON b.product_id = c.product_id
-        AND c.store_id = a.store_id  where (a.order_status in ('0','100','201') and a.pay_status in (0,1,2)) and pay_id is not null
+        LEFT JOIN mall_product_store_rela c ON b.goods_id = c.goods_id
+        AND c.store_id = a.store_id
+		left join mall_goods g on g.id=c.goods_id and g.merch_sn=c.merch_sn
+        left join third_merchant_biz mb on mb.third_party_merch_code=g.third_party_merch_code and mb.merch_sn=g.merch_sn
+		where (a.order_status in ('0','100','201') and a.pay_status in (0,1,2)) and pay_id is not null
         and (a.pay_transaction_id = '' or a.pay_transaction_id is null or a.pay_time is null or a.pay_time = '')
         AND a.is_onffline_order = 0 and a.pay_flag = 'weixin'
     </select>
 
     <select id="queryPinganPayingOrderList" 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,
-        b.product_id,b.number,c.stock_num,c.id as storeRelaId,a.pay_flag
+        b.product_id,b.number,c.stock_num,c.id as storeRelaId,a.pay_flag,mb.is_stock_share,mb.third_party_merch_code,g.goods_number,g.id goods_id,g.goods_biz_type
         from mall_order a
         LEFT JOIN mall_order_goods b ON a.id = b.order_id
-        LEFT JOIN mall_product_store_rela c ON b.product_id = c.product_id
-        AND c.store_id = a.store_id  where (a.order_status in ('0','100','201') and a.pay_status in (0,1,2)) and pay_id is not null
+        LEFT JOIN mall_product_store_rela c ON b.goods_id = c.goods_id
+        AND c.store_id = a.store_id
+		left join mall_goods g on g.id=c.goods_id and g.merch_sn=c.merch_sn
+        left join third_merchant_biz mb on mb.third_party_merch_code=g.third_party_merch_code and mb.merch_sn=g.merch_sn
+        where (a.order_status in ('0','100','201') and a.pay_status in (0,1,2)) and pay_id is not null
         and (a.pay_transaction_id = '' or a.pay_transaction_id is null or a.pay_time is null or a.pay_time = '')
         AND a.is_onffline_order = 0 and a.pay_flag = 'pingan'
     </select>