1
0
فهرست منبع

新增定时任务端满减满折逻辑,以及修改门店商品库存逻辑

hyq 5 سال پیش
والد
کامیت
59db969a3c
19فایلهای تغییر یافته به همراه849 افزوده شده و 304 حذف شده
  1. 8 0
      kmall-schedule/src/main/java/com/kmall/schedule/dao/QzOrderMapper.java
  2. 44 0
      kmall-schedule/src/main/java/com/kmall/schedule/dao/QzStoreCampMinusMapper.java
  3. 5 0
      kmall-schedule/src/main/java/com/kmall/schedule/dao/QzStorePromMapper.java
  4. 2 0
      kmall-schedule/src/main/java/com/kmall/schedule/dao/QzStoreTicketDiscountMapper.java
  5. 7 0
      kmall-schedule/src/main/java/com/kmall/schedule/dao/QzStoreTopicStatisMapper.java
  6. 47 7
      kmall-schedule/src/main/java/com/kmall/schedule/quartz/OrderTask.java
  7. 214 187
      kmall-schedule/src/main/java/com/kmall/schedule/service/QzOrderService.java
  8. 80 0
      kmall-schedule/src/main/java/com/kmall/schedule/service/QzStoreCampMinusService.java
  9. 20 2
      kmall-schedule/src/main/java/com/kmall/schedule/service/QzStorePromService.java
  10. 6 3
      kmall-schedule/src/main/java/com/kmall/schedule/service/QzStoreTicketDiscountService.java
  11. 138 68
      kmall-schedule/src/main/java/com/kmall/schedule/service/QzStoreTopicStatisService.java
  12. 192 30
      kmall-schedule/src/main/resources/mybatis/mapper/QzOrderMapper.xml
  13. 42 0
      kmall-schedule/src/main/resources/mybatis/mapper/QzStoreCampMinusMapper.xml
  14. 11 1
      kmall-schedule/src/main/resources/mybatis/mapper/QzStorePromMapper.xml
  15. 6 3
      kmall-schedule/src/main/resources/mybatis/mapper/QzStoreTicketDiscountMapper.xml
  16. 24 0
      kmall-schedule/src/main/resources/mybatis/mapper/QzStoreTopicStatisMapper.xml
  17. 1 1
      kmall-schedule/src/main/webapp/js/sys/schedule.js
  18. 1 1
      kmall-schedule/src/main/webapp/js/sys/schedule_log.js
  19. 1 1
      kmall-schedule/src/main/webapp/statics/libs/jquery-extend.js

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

@@ -86,4 +86,12 @@ public interface QzOrderMapper {
     Map queryUserCouponByOrderId(@Param("orderId") Long orderId);
 
     void cancelUserCouponOrder(Map fromObject);
+
+    Map queryUserCampByOrderId(@Param("orderId") Long orderId);
+
+    void cancelUserCampOrder(Map fromObject);
+
+    List<Map> queryOrderIdByOrderGoodsList();
+
+    Map queryOrderCountByIdAndPayStatus(@Param("storeRelaId") Integer storeRelaId);
 }

+ 44 - 0
kmall-schedule/src/main/java/com/kmall/schedule/dao/QzStoreCampMinusMapper.java

@@ -0,0 +1,44 @@
+package com.kmall.schedule.dao;
+
+import org.apache.ibatis.annotations.Param;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author huangyq
+ * @date 2019/6/10.
+ */
+@Component
+public interface QzStoreCampMinusMapper {
+
+    /**
+     * 查询进行中且超时的满减满折数据
+     *
+     * @return
+     */
+    List<Map> queryCampMinusListByPasting();
+
+    /**
+     * 查询状态为未开始,且开始时间已小于或等于当前时间的满减满折活动数据
+     * @return
+     */
+    List<Map> queryCampMinusListByPastNotStart();
+    /**
+     * 更新过期状态
+     *
+     * @param fromObject
+     */
+    void updateStoreCampMinus(Map fromObject);
+
+    Map selectAdIdByTopicId(@Param("storeTopicId") Integer storeTopicId);
+
+    /**
+     * 将失效优惠券广告位设置为失效
+     * @param fromObject
+     */
+    void updateAd(Map fromObject);
+
+    void updateStoreTopic(@Param("storeTopicId") Integer storeTopicId);
+}

+ 5 - 0
kmall-schedule/src/main/java/com/kmall/schedule/dao/QzStorePromMapper.java

@@ -20,6 +20,11 @@ public interface QzStorePromMapper {
     List<Map> queryStorePromList();
 
     /**
+     * 查询未开始的推广数据
+     * @return
+     */
+    List<Map> queryStorePromByNotStartList();
+    /**
      * 更新过期时间
      * @param fromObject
      */

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

@@ -53,4 +53,6 @@ public interface QzStoreTicketDiscountMapper {
      * @param fromObject
      */
     void updateAd(Map fromObject);
+
+    void updateStoreTopic(@Param("storeTopicId")Integer storeTopicId);
 }

+ 7 - 0
kmall-schedule/src/main/java/com/kmall/schedule/dao/QzStoreTopicStatisMapper.java

@@ -32,4 +32,11 @@ public interface QzStoreTopicStatisMapper {
      * @return
      */
     Map getStatDataByStoreTopicId(Map queryMap);
+
+    /**
+     * 查询支付成功或退款成功的门店活动订单
+     * @return
+     */
+    List<Map> queryCampStoreTopicByPaySuccess(@Param("statusList")Integer[] statusList);
+
 }

+ 47 - 7
kmall-schedule/src/main/java/com/kmall/schedule/quartz/OrderTask.java

@@ -1,9 +1,6 @@
 package com.kmall.schedule.quartz;
 
-import com.kmall.schedule.service.QzOrderService;
-import com.kmall.schedule.service.QzStorePromService;
-import com.kmall.schedule.service.QzStoreTicketDiscountService;
-import com.kmall.schedule.service.QzStoreTopicStatisService;
+import com.kmall.schedule.service.*;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -22,6 +19,8 @@ public class OrderTask {
     QzStoreTicketDiscountService qzStoreTicketDiscountService;
     @Autowired
     QzStoreTopicStatisService qzStoreTopicStatisService;
+    @Autowired
+    QzStoreCampMinusService qzStoreCampMinusService;
 
     /**
      * 方法描述:拼团进度通知
@@ -161,7 +160,7 @@ public class OrderTask {
         logger.info(">>>>>>>>>>>>>>>>>>>>updatePromStatByRefundSuccess is end ");
     }
     /**
-     * 方法描述:查询优惠券有效时间是否过期,过期则修改结束状态为无效
+     * 方法描述:查询优惠券有效时间是否过期,修改过期优惠券数据结束状态为无效,修改过期用户优惠券状态为无效
      * 1分钟更新
      */
     @Scheduled(fixedRate = 1000 * 60 * 1)
@@ -172,7 +171,7 @@ public class OrderTask {
     }
 
     /**
-     * 方法描述:支付成功且是门店活动订单统计支付数据
+     * 方法描述:支付成功且是门店优惠券活动订单统计支付数据
      * 1分钟更新
      */
     @Scheduled(fixedRate = 1000 * 60 * 1)
@@ -181,8 +180,9 @@ public class OrderTask {
         qzStoreTopicStatisService.updateTopicStatByPaySuccess();
         logger.info(">>>>>>>>>>>>>>>>>>>>updateTopicStatByPaySuccess is end ");
     }
+
     /**
-     * 方法描述:退款成功且是门店活动订单统计支付数据
+     * 方法描述:退款成功且是门店优惠券活动订单统计支付数据
      * 1分钟更新
      */
     @Scheduled(fixedRate = 1000 * 60 * 1)
@@ -191,4 +191,44 @@ public class OrderTask {
         qzStoreTopicStatisService.updateTopicStatByRefundSuccess();
         logger.info(">>>>>>>>>>>>>>>>>>>>updateTopicStatByRefundSuccess is end ");
     }
+
+    /**
+     * 方法描述:修改过期满减满折数据结束状态为无效,修改未开始且开始时间已小于或等于当前时间的满减满折结束状态为进行中
+     * 1分钟更新
+     */
+    @Scheduled(fixedRate = 1000 * 60 * 1)
+    public void updateQueryStoreCampMinus() {
+        logger.info(">>>>>>>>>>>>>>>>>>>>updateQueryStoreCampMinus is start ");
+        qzStoreCampMinusService.updateQueryStoreCampMinus();
+        logger.info(">>>>>>>>>>>>>>>>>>>>updateQueryStoreCampMinus is end ");
+    }
+
+    /**
+     * 方法描述:支付成功且是门店促销满减活动订单统计支付数据
+     * 1分钟更新
+     */
+    @Scheduled(fixedRate = 1000 * 60 * 1)
+    public void updateCampTopicStatByPaySuccess() {
+        logger.info(">>>>>>>>>>>>>>>>>>>>updateCampTopicStatByPaySuccess is start ");
+        qzStoreTopicStatisService.updateCampTopicStatByPaySuccess();
+        logger.info(">>>>>>>>>>>>>>>>>>>>updateCampTopicStatByPaySuccess is end ");
+    }
+
+    /**
+     * 方法描述:退款成功且是门店促销满减活动订单统计支付数据
+     * 1分钟更新
+     */
+    @Scheduled(fixedRate = 1000 * 60 * 1)
+    public void updateCampTopicStatByRefundSuccess() {
+        logger.info(">>>>>>>>>>>>>>>>>>>>updateCampTopicStatByRefundSuccess is start ");
+        qzStoreTopicStatisService.updateCampTopicStatByRefundSuccess();
+        logger.info(">>>>>>>>>>>>>>>>>>>>updateCampTopicStatByRefundSuccess is end ");
+    }
+
+    /*@Scheduled(fixedRate = 1000 * 60 * 1)
+    public void updateSellVolume() {
+        logger.info(">>>>>>>>>>>>>>>>>>>>updateSellVolume is start ");
+        qzOrderService.updateSellVolume();
+        logger.info(">>>>>>>>>>>>>>>>>>>>updateSellVolume is end ");
+    }*/
 }

+ 214 - 187
kmall-schedule/src/main/java/com/kmall/schedule/service/QzOrderService.java

@@ -214,8 +214,8 @@ public class QzOrderService {
         if (null != pastOrderList && pastOrderList.size() > 0) {
             for (Map map : pastOrderList) {
                 restStockNum(map,"更新过期未支付订单");
-                // 判断是否有优惠券,修改为可使用
-                restUserCoupon(map);
+                restUserCoupon(map);// 判断是否有优惠券,修改为可使用
+                restUserCamp(map);// 判断是否使用促销满减活动,修改为可使用
             }
             qzOrderMapper.unpayPastUpdate();
 
@@ -224,119 +224,6 @@ public class QzOrderService {
     }
 
     /**
-     * 取消订单修改优惠券信息
-     * @param map
-     */
-    private void restUserCoupon(Map map){
-        Long orderId = MapUtils.getLong("orderId", map);
-        Map couponMap = qzOrderMapper.queryUserCouponByOrderId(orderId);
-        if (null != couponMap) {
-            Long couponId = MapUtils.getLong("couponId", couponMap);
-            Map updateCouponMap = new HashMap();
-            updateCouponMap.put("id", couponId);
-            qzOrderMapper.cancelUserCouponOrder(updateCouponMap);
-        }
-    }
-
-    /**
-     * 还原库存
-     * @param map
-     */
-    private void restStockNum(Map map, String changeReason){
-        Integer goods_number = MapUtils.getInteger("goods_number", 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);
-        Long goods_id = MapUtils.getLong("goods_id", map);
-        String goods_biz_type = MapUtils.getString("goods_biz_type", map);
-        Long store_id = MapUtils.getLong("store_id", map);
-        String merch_sn = MapUtils.getString("merch_sn", map);
-        String third_party_merch_code = MapUtils.getString("third_party_merch_code", 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())) {//共享
-//                Integer sell_volume = MapUtils.getInteger("goods_sell_volume", map);//销量
-                Map param = Maps.newHashMap();
-                param.put("id", goods_id);
-                param.put("goods_number", goods_number + number);
-                qzOrderMapper.updateGoodsStockNum(param);//商户商品库存还原
-
-                Integer sell_volume = MapUtils.getInteger("store_sell_volume", map);//销量
-                if(sell_volume >= number){
-                    param.put("sell_volume", sell_volume - number);
-                }
-                param.put("id", storeRelaId);
-                qzOrderMapper.updateStockNum(param);//门店库存还原
-
-                MngChangeJobEntity mngChangeJobEntity = new MngChangeJobEntity();
-                mngChangeJobEntity.setGoodsId(Integer.parseInt(String.valueOf(goods_id)));
-                mngChangeJobEntity.setThirdPartyMerchCode(third_party_merch_code);
-                mngChangeJobEntity.setChangeReason(changeReason);
-                mngChangeJobEntity.setChangeType(Dict.changeType.item_0.getItem());
-                mngChangeJobEntity.setChangeNum(number);//变化数
-                mngChangeJobEntity.setOriginalNum(goods_number);//原库存数
-                mngChangeJobEntity.setValidNum(goods_number + number);//可用数
-                mngChangeJobEntity.setCreateTime(new Date());
-                mngChangeJobEntity.setModTime(new Date());
-                mngChangeJobEntity.setCreaterSn("定时任务");
-                mngChangeJobEntity.setModerSn("定时任务");
-                mngChangeJobEntity.setIsValid(0);
-                mngChangeJobEntity.setMerchSn(merch_sn);
-                qzOrderMapper.saveMngChange(mngChangeJobEntity);
-
-            }else{
-                Map param = Maps.newHashMap();
-                param.put("id", storeRelaId);
-                param.put("stock_num", stock_num + number);
-                Integer sell_volume = MapUtils.getInteger("store_sell_volume", map);//销量
-                if(sell_volume >= number){
-                    param.put("sell_volume", sell_volume - number);
-                }
-                qzOrderMapper.updateStockNum(param);//门店库存还原
-                StoreMngChangeJobEntity storeMngChangeJobEntity = new StoreMngChangeJobEntity();
-                storeMngChangeJobEntity.setChangeType(Dict.changeType.item_0.getItem());
-                storeMngChangeJobEntity.setChangeReason(changeReason);
-                storeMngChangeJobEntity.setGoodsId(Integer.parseInt(String.valueOf(goods_id)));
-                storeMngChangeJobEntity.setStoreId(Integer.parseInt(String.valueOf(store_id)));
-                storeMngChangeJobEntity.setMerchSn(merch_sn);
-                storeMngChangeJobEntity.setCreateTime(new Date());
-                storeMngChangeJobEntity.setModTime(new Date());
-                storeMngChangeJobEntity.setStoreChangeNum(number);
-                storeMngChangeJobEntity.setStoreOriginalNum(stock_num);
-                storeMngChangeJobEntity.setStoreValidNum(stock_num + number);
-                storeMngChangeJobEntity.setCreaterSn("定时任务");
-                storeMngChangeJobEntity.setModerSn("定时任务");
-                storeMngChangeJobEntity.setIsValid(0);
-                qzOrderMapper.saveStoreMngChange(storeMngChangeJobEntity);
-            }
-        }else{
-            Map param = Maps.newHashMap();
-            param.put("id", storeRelaId);
-            param.put("stock_num", stock_num + number);
-            Integer sell_volume = MapUtils.getInteger("store_sell_volume", map);//销量
-            if(sell_volume >= number){
-                param.put("sell_volume", sell_volume - number);
-            }
-            qzOrderMapper.updateStockNum(param);//门店库存还原
-            StoreMngChangeJobEntity storeMngChangeJobEntity = new StoreMngChangeJobEntity();
-            storeMngChangeJobEntity.setChangeType(Dict.changeType.item_0.getItem());
-            storeMngChangeJobEntity.setChangeReason(changeReason);
-            storeMngChangeJobEntity.setStoreId(Integer.parseInt(String.valueOf(store_id)));
-            storeMngChangeJobEntity.setGoodsId(Integer.parseInt(String.valueOf(goods_id)));
-            storeMngChangeJobEntity.setMerchSn(merch_sn);
-            storeMngChangeJobEntity.setCreateTime(new Date());
-            storeMngChangeJobEntity.setModTime(new Date());
-            storeMngChangeJobEntity.setStoreChangeNum(number);
-            storeMngChangeJobEntity.setStoreOriginalNum(stock_num);
-            storeMngChangeJobEntity.setStoreValidNum(stock_num + number);
-            storeMngChangeJobEntity.setCreaterSn("定时任务");
-            storeMngChangeJobEntity.setModerSn("定时任务");
-            storeMngChangeJobEntity.setIsValid(0);
-            qzOrderMapper.saveStoreMngChange(storeMngChangeJobEntity);
-        }
-    }
-
-    /**
      * 更新退款中的,或小程序更新退款信息异常订单
      */
     @Transactional
@@ -348,7 +235,7 @@ public class QzOrderService {
         if (null != refundOrderList && refundOrderList.size() > 0) {
             for (Map map : refundOrderList) {
                 String pay_flag = MapUtils.getString("pay_flag", map);
-                String orderId = MapUtils.getString("order_id", map);
+                String orderId = MapUtils.getString("orderId", map);
                 if(org.apache.commons.lang.StringUtils.isNotEmpty(pay_flag)) {
                     if (pay_flag.equalsIgnoreCase("wxglobalpay")) {//微信国际支付
                         wxGlobalRefundQuery(map);
@@ -374,7 +261,7 @@ public class QzOrderService {
     private void  wxRefundquery(Map map){
         logger.info(">>>>>>>>>>>>>>>>>>>>wxRefundquery 微信退款查询接口调用");
         String out_trade_no = MapUtils.getString("merch_order_sn", map);
-        String order_id = MapUtils.getString("order_id", map);
+        String order_id = MapUtils.getString("orderId", map);
         String order_sn_wx = MapUtils.getString("order_sn_wx", map);
         String out_refund_no = MapUtils.getString("out_refund_no", map);
         Integer is_onffline_order = MapUtils.getInteger("is_onffline_order", map);
@@ -413,6 +300,10 @@ public class QzOrderService {
                             refundRaram.put("refundStatus", Dict.RefundStatus.item_2.getItem());
                             refundRaram.put("wechat_refund_status_des", "退款成功");
                             orderRaram.put("payStatus", Dict.payStatus.item_4.getItem());
+                            //退款成功释放库存、释放优惠券、释放促销满减
+                             restStockNum(map,"定时任务更新退款成功订单");//库存还原
+                            restUserCoupon(map);// 判断是否使用优惠券,修改为可使用
+                            restUserCamp(map);// 判断是否使用促销满减活动,修改为可使用
                         } else if (result.getRefund_status().equalsIgnoreCase("REFUNDCLOSE")) {
                             logger.info(">>>>>>>>>>>>>>>>>>>>wxRefundquery 微信退款查询接口调用,返回退款关闭");
                             refundRaram.put("refundStatus", Dict.RefundStatus.item_4.getItem());
@@ -455,7 +346,7 @@ public class QzOrderService {
         logger.info(">>>>>>>>>>>>>>>>>>>>pinganRefundquery 平安退款查询接口调用");
         String outNo = MapUtils.getString("merch_order_sn", map);
         String outRefundNo = MapUtils.getString("out_refund_no", map);
-        String orderId = MapUtils.getString("order_id", map);
+        String orderId = MapUtils.getString("orderId", map);
 
         PinganResponseDto response = PinganUtil.pinganQueryRefund(null, outRefundNo);
         if (!Objects.isNull(response)) {
@@ -477,67 +368,11 @@ public class QzOrderService {
                     for (int i = 0; i < msgCount; i++) {
                         WechatRefundQueryResult refundQueryResult = PinganUtil.buildWechatRefundQueryResult(result, i);
                         logger.info(">>>>>>>>>>>>>>>>>>>>wxRefundquery 平安退款查询接口调用,返回退款单号"+refundQueryResult.getOut_refund_no());
-                        if (outRefundNo.equalsIgnoreCase(refundQueryResult.getOut_refund_no())) {
-                            Date successTime = DateUtils.strToDate(refundQueryResult.getRefund_success_time());
-                            refundParam.put("refundTime", successTime);
-                            refundParam.put("outRefundNo", refundQueryResult.getOut_refund_no());
-                            refundParam.put("refundId", refundQueryResult.getRefund_id());
-                            refundParam.put("refundMoney",
-                                    BigDecimal.valueOf(Long.valueOf(refundQueryResult.getRefund_fee()))
-                                            .divide(Constant.ONE_HUNDRED));
-                            if (refundQueryResult.getRefund_status().equalsIgnoreCase(WechatUtil.WXTradeState.SUCCESS.getCode())) {
-                                refundParam.put("refundStatus", Dict.RefundStatus.item_2.getItem());
-                                refundParam.put("wechat_refund_status_des", "退款成功");
-                                orderParam.put("payStatus", Dict.payStatus.item_4.getItem());
-                            } else if (refundQueryResult.getRefund_status().equalsIgnoreCase("REFUNDCLOSE")) {
-                                refundParam.put("refundStatus", Dict.RefundStatus.item_4.getItem());
-                                refundParam.put("wechat_refund_status_des", "退款关闭");
-                                orderParam.put("payStatus", Dict.payStatus.item_5.getItem());
-                            } else if (refundQueryResult.getRefund_status().equalsIgnoreCase("CHANGE")) {
-                                refundParam.put("refundStatus", Dict.RefundStatus.item_4.getItem());
-                                refundParam.put("wechat_refund_status_des", "退款异常");
-                                orderParam.put("payStatus", Dict.payStatus.item_6.getItem());
-                            } else if (refundQueryResult.getRefund_status().equalsIgnoreCase("PROCESSING")) {
-                                refundParam.put("refundStatus", Dict.RefundStatus.item_5.getItem());
-                                refundParam.put("wechat_refund_status_des", "退款处理中");
-                                orderParam.put("payStatus", Dict.payStatus.item_3.getItem());
-                            }
-                            refundParam.put("refundRecvAccout", refundQueryResult.getRefund_recv_accout());
-                            refundParam.put("orderRefundId", refundQueryResult.getOut_refund_no());
-                            qzOrderMapper.updateOrderRefund(refundParam);//更新订单退款信息
-                        }
+                        updateOrderRefund(outRefundNo,refundQueryResult,refundParam,orderParam,map);
                     }
                 } else {
                     WechatRefundQueryResult refundQueryResult = PinganUtil.buildWechatRefundQueryResult(result);
-                    if (outRefundNo.equalsIgnoreCase(refundQueryResult.getOut_refund_no())) {
-                        Date successTime = DateUtils.strToDate(refundQueryResult.getRefund_success_time());
-                        refundParam.put("refundTime", successTime);
-                        refundParam.put("outRefundNo", refundQueryResult.getOut_refund_no());
-                        refundParam.put("refundId", refundQueryResult.getRefund_id());
-                        refundParam.put("refundMoney",
-                                BigDecimal.valueOf(Long.valueOf(refundQueryResult.getRefund_fee()))
-                                        .divide(Constant.ONE_HUNDRED));
-                        if (refundQueryResult.getRefund_status().equalsIgnoreCase(WechatUtil.WXTradeState.SUCCESS.getCode())) {
-                            refundParam.put("refundStatus", Dict.RefundStatus.item_2.getItem());
-                            refundParam.put("wechat_refund_status_des", "退款成功");
-                            orderParam.put("payStatus", Dict.payStatus.item_4.getItem());
-                        } else if (refundQueryResult.getRefund_status().equalsIgnoreCase("REFUNDCLOSE")) {
-                            refundParam.put("refundStatus", Dict.RefundStatus.item_4.getItem());
-                            refundParam.put("wechat_refund_status_des", "退款关闭");
-                            orderParam.put("payStatus", Dict.payStatus.item_5.getItem());
-                        } else if (refundQueryResult.getRefund_status().equalsIgnoreCase("CHANGE")) {
-                            refundParam.put("refundStatus", Dict.RefundStatus.item_4.getItem());
-                            refundParam.put("wechat_refund_status_des", "退款异常");
-                            orderParam.put("payStatus", Dict.payStatus.item_6.getItem());
-                        } else if (refundQueryResult.getRefund_status().equalsIgnoreCase("PROCESSING")) {
-                            refundParam.put("refundStatus", Dict.RefundStatus.item_5.getItem());
-                            refundParam.put("wechat_refund_status_des", "退款处理中");
-                            orderParam.put("payStatus", Dict.payStatus.item_3.getItem());
-                        }
-                        refundParam.put("refundRecvAccout", refundQueryResult.getRefund_recv_accout());
-                        refundParam.put("orderRefundId", refundQueryResult.getOut_refund_no());
-                        qzOrderMapper.updateOrderRefund(refundParam);//更新订单退款信息
-                    }
+                    updateOrderRefund(outRefundNo,refundQueryResult,refundParam,orderParam,map);
                 }
                 orderParam.put("orderStatus", Dict.orderStatus.item_401.getItem());
                 orderParam.put("orderId", orderId);
@@ -609,6 +444,42 @@ public class QzOrderService {
         }*/
     }
 
+    private void updateOrderRefund(String outRefundNo,WechatRefundQueryResult refundQueryResult,Map refundParam,Map orderParam,Map map){
+        if (outRefundNo.equalsIgnoreCase(refundQueryResult.getOut_refund_no())) {
+            Date successTime = DateUtils.strToDate(refundQueryResult.getRefund_success_time());
+            refundParam.put("refundTime", successTime);
+            refundParam.put("outRefundNo", refundQueryResult.getOut_refund_no());
+            refundParam.put("refundId", refundQueryResult.getRefund_id());
+            refundParam.put("refundMoney",
+                    BigDecimal.valueOf(Long.valueOf(refundQueryResult.getRefund_fee()))
+                            .divide(Constant.ONE_HUNDRED));
+            if (refundQueryResult.getRefund_status().equalsIgnoreCase(WechatUtil.WXTradeState.SUCCESS.getCode())) {
+                refundParam.put("refundStatus", Dict.RefundStatus.item_2.getItem());
+                refundParam.put("wechat_refund_status_des", "退款成功");
+                orderParam.put("payStatus", Dict.payStatus.item_4.getItem());
+                //退款成功释放库存、释放优惠券、释放促销满减
+                restStockNum(map,"定时任务更新退款成功订单");//库存还原
+                restUserCoupon(map);// 判断是否有优惠券,修改为可使用
+                restUserCamp(map);// 判断是否使用促销满减活动,修改为可使用
+            } else if (refundQueryResult.getRefund_status().equalsIgnoreCase("REFUNDCLOSE")) {
+                refundParam.put("refundStatus", Dict.RefundStatus.item_4.getItem());
+                refundParam.put("wechat_refund_status_des", "退款关闭");
+                orderParam.put("payStatus", Dict.payStatus.item_5.getItem());
+            } else if (refundQueryResult.getRefund_status().equalsIgnoreCase("CHANGE")) {
+                refundParam.put("refundStatus", Dict.RefundStatus.item_4.getItem());
+                refundParam.put("wechat_refund_status_des", "退款异常");
+                orderParam.put("payStatus", Dict.payStatus.item_6.getItem());
+            } else if (refundQueryResult.getRefund_status().equalsIgnoreCase("PROCESSING")) {
+                refundParam.put("refundStatus", Dict.RefundStatus.item_5.getItem());
+                refundParam.put("wechat_refund_status_des", "退款处理中");
+                orderParam.put("payStatus", Dict.payStatus.item_3.getItem());
+            }
+            refundParam.put("refundRecvAccout", refundQueryResult.getRefund_recv_accout());
+            refundParam.put("orderRefundId", refundQueryResult.getOut_refund_no());
+            qzOrderMapper.updateOrderRefund(refundParam);//更新订单退款信息
+        }
+    }
+
     /**
      * 微信国际支付微信查询订单api
      * @param map
@@ -616,7 +487,7 @@ public class QzOrderService {
     private void  wxGlobalRefundQuery(Map map){
         logger.info(">>>>>>>>>>>>>>>>>>>>wxGlobalRefundQuery 微信国际退款查询接口调用");
         String out_trade_no = MapUtils.getString("merch_order_sn", map);
-        String order_id = MapUtils.getString("order_id", map);
+        String order_id = MapUtils.getString("orderId", map);
         String out_refund_no = MapUtils.getString("out_refund_no", map);
         WechatGlobalRefundQueryResult result = WechatGlobalUtil.wxRefundquery(out_trade_no);
         if (result.getReturn_code().equalsIgnoreCase(WechatUtil.WXTradeState.SUCCESS.getCode())) {
@@ -660,6 +531,10 @@ public class QzOrderService {
                             refundRaram.put("refundStatus", Dict.RefundStatus.item_2.getItem());
                             refundRaram.put("wechat_refund_status_des", "退款成功");
                             orderRaram.put("payStatus", Dict.payStatus.item_4.getItem());
+                            //退款成功释放库存、释放优惠券、释放促销满减
+                            restStockNum(map,"定时任务更新退款成功订单");//库存还原
+                            restUserCoupon(map);// 判断是否有优惠券,修改为可使用
+                            restUserCamp(map);// 判断是否使用促销满减活动,修改为可使用
                         } else if (result.getRefund_status().equalsIgnoreCase("PROCESSING")) {
                             refundRaram.put("refundStatus", Dict.RefundStatus.item_5.getItem());
                             refundRaram.put("wechat_refund_status_des", "退款处理中");
@@ -757,6 +632,7 @@ public class QzOrderService {
                     if (getDateBetween(addTime, nowDate) >= 15) {//订单下单时间超过15分钟直接取消订单
                         restStockNum(map,"定时任务更新过期未支付订单");//库存还原
                         restUserCoupon(map);// 判断是否有优惠券,修改为可使用
+                        restUserCamp(map);// 判断是否使用促销满减活动,修改为可使用
                         orderRaram.put("orderStatus", Dict.orderStatus.item_101.getItem());//订单状态已取消
                         orderRaram.put("payStatus", Dict.payStatus.item_0.getItem());//支付状态未支付
                     } else {
@@ -773,6 +649,7 @@ public class QzOrderService {
                     qzOrderMapper.updateOrderInfo(orderRaram);
                     restStockNum(map,"定时任务更新已关闭订单");//库存还原
                     restUserCoupon(map);// 判断是否有优惠券,修改为可使用
+                    restUserCamp(map);// 判断是否使用促销满减活动,修改为可使用
                     logger.info(">>>>>>>>>>>>>>>>>>>>wxOrderByTransactionIdQueryUpdFail 根据支付单查询微信接口返回信息:state 【" + result.getTrade_state() +
                             "】,des【" + result.getTrade_state_desc() + "】");
                 } else if (result.getTrade_state().equalsIgnoreCase(Dict.tradeState.item_PAYERROR.getItem())) {
@@ -847,6 +724,7 @@ public class QzOrderService {
                     if (getDateBetween(addTime, nowDate) >= 15) {//订单下单时间超过15分钟直接取消订单
                         restStockNum(map,"定时任务更新过期未支付订单");//库存还原
                         restUserCoupon(map);// 判断是否有优惠券,修改为可使用
+                        restUserCamp(map);// 判断是否使用促销满减活动,修改为可使用
                         orderRaram.put("orderStatus", Dict.orderStatus.item_101.getItem());//订单状态已取消
                         orderRaram.put("payStatus", Dict.payStatus.item_0.getItem());//支付状态未支付
                     } else {
@@ -863,6 +741,7 @@ public class QzOrderService {
                     qzOrderMapper.updateOrderInfo(orderRaram);
                     restStockNum(map,"定时任务更新已关闭订单");//库存还原
                     restUserCoupon(map);// 判断是否有优惠券,修改为可使用
+                    restUserCamp(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())) {
@@ -943,6 +822,7 @@ public class QzOrderService {
                                 orderRaram.put("orderStatus", 101);//订单状态已取消
                                 restStockNum(map, "定时任务更新平安超时未支付订单");//库存还原
                                 restUserCoupon(map);// 判断是否有优惠券,修改为可使用
+                                restUserCamp(map);// 判断是否使用促销满减活动,修改为可使用
                             } else {
                                 orderRaram.put("payStatus", 0);//支付状态未支付
                                 orderRaram.put("orderStatus", 0);//订单状态未支付
@@ -1192,15 +1072,14 @@ public class QzOrderService {
         logger.info(">>>>>>>>>>>>>>>>>>>>商品发货后7天自动确认收货 ");
         // 查询门店业务发货后7天的订单,门店业务根据清关完成时间后7天
         List<Map> shipmentOrderList = qzOrderMapper.queryShipmentOrderList();
-        if (null != shipmentOrderList && shipmentOrderList.size() > 0) {
-            for (Map map : shipmentOrderList) {
-                Map orderMap = Maps.newHashMap();
-                orderMap.put("orderId", MapUtils.getLong("orderId", map));
-                qzOrderMapper.updateShipmentOrder(orderMap);
-            }
-        }
+        updateShipmentOrder(shipmentOrderList);
         //查询保税备货发货后7天的订单,保税备货根据发货完成时间后7天
         List<Map> shipmentBondedOrderList = qzOrderMapper.queryShipmentBondedOrderList();
+        updateShipmentOrder(shipmentBondedOrderList);
+        logger.info(">>>>>>>>>>>>>>>>>>>>shipmentOrderAutoTakeGoods is end ");
+    }
+
+    private void updateShipmentOrder(List<Map> shipmentBondedOrderList){
         if (null != shipmentBondedOrderList && shipmentBondedOrderList.size() > 0) {
             for (Map map : shipmentBondedOrderList) {
                 Map orderMap = Maps.newHashMap();
@@ -1208,9 +1087,8 @@ public class QzOrderService {
                 qzOrderMapper.updateShipmentOrder(orderMap);
             }
         }
-        logger.info(">>>>>>>>>>>>>>>>>>>>shipmentOrderAutoTakeGoods is end ");
-    }
 
+    }
     /**
      * 确认收货后30天自动确认好评
      */
@@ -1337,7 +1215,6 @@ public class QzOrderService {
                             if (allocType.equalsIgnoreCase(Dict.allocType.item_00.getItem())) {//比例,公式:商品购买价格*设置比例
                                 price = goodsPrice.multiply(BigDecimal.valueOf(expendDistPrice));
                             } else if (allocType.equalsIgnoreCase(Dict.allocType.item_10.getItem())) {//金额
-                                //// TODO: 2019/4/12 金额
                                 price = BigDecimal.valueOf(expendDistPrice);
                             }
                             mkDistSellStatisEntity.setExpendDistId(expendDistIdList.get(i));
@@ -1360,7 +1237,156 @@ public class QzOrderService {
             logger.info(">>>>>>>>>>>>>>>>>>>>确认收货订单没有数据 ");
         }
         logger.info(">>>>>>>>>>>>>>>>>>>>receiptOrderSaveDistSellStatis is end ");
+    }
+
+    /**
+     * 查询订单中支付成功的订单详情,更新详情中商品的销量信息
+     */
+    public void updateSellVolume(){
+
+        logger.info(">>>>>>>>>>>>>>>>>>>>updateSellVolume is start ");
+        logger.info(">>>>>>>>>>>>>>>>>>>>查询订单中支付成功的订单详情,更新详情中商品的销量信息 ");
+
+        // 获取收货后的订单
+        List<Map> orderGoodsList = qzOrderMapper.queryOrderIdByOrderGoodsList();
+        if (null != orderGoodsList && orderGoodsList.size() > 0) {
+            for (Map map : orderGoodsList) {
+                Integer orderId = MapUtils.getInteger("orderId", map);
+                Integer storeRelaId = MapUtils.getInteger("storeRelaId", map);
+                Map sellMap = qzOrderMapper.queryOrderCountByIdAndPayStatus(storeRelaId);
+                BigDecimal sellVolume = MapUtils.getBigDecimal("sellVolume", sellMap);
+
+                Map param = Maps.newHashMap();
+                param.put("id", storeRelaId);
+                param.put("sell_volume", sellVolume);
+                qzOrderMapper.updateStockNum(param);//更新门店商品销量
+
+            }
+        }else{
+            logger.info(">>>>>>>>>>>>>>>>>>>>订单中支付成功的订单详情没有数据 ");
+        }
+        logger.info(">>>>>>>>>>>>>>>>>>>>updateSellVolume is end ");
+    }
+
+    /**
+     * 释放优惠券
+     * @param map
+     */
+    private void restUserCoupon(Map map){
+        Long orderId = MapUtils.getLong("orderId", map);
+        Map couponMap = qzOrderMapper.queryUserCouponByOrderId(orderId);
+        if (null != couponMap) {
+            Long couponId = MapUtils.getLong("couponId", couponMap);
+            Map updateCouponMap = new HashMap();
+            updateCouponMap.put("id", couponId);
+            qzOrderMapper.cancelUserCouponOrder(updateCouponMap);
+        }
+    }
+    /**
+     * 释放促销满减券
+     * @param map
+     */
+    private void restUserCamp(Map map){
+        Long orderId = MapUtils.getLong("orderId", map);
+        Map campMap = qzOrderMapper.queryUserCampByOrderId(orderId);
+        if (null != campMap) {
+            Long userCampId = MapUtils.getLong("userCampId", campMap);
+            Map updateCampMap = new HashMap();
+            updateCampMap.put("userCampId", userCampId);
+            qzOrderMapper.cancelUserCampOrder(updateCampMap);
+        }
+    }
+    /**
+     * 还原库存
+     * @param map
+     */
+    private void restStockNum(Map map, String changeReason){
+        String isStockShare = getIsStockShareByGoodsVo(map);
+        resetGoodsStockNum(map, changeReason);
+        resetStoreStockNumAndSellVolume(map, changeReason);
+    }
 
+    /**
+     * 还原商品总库存
+     * @param map
+     * @param changeReason
+     */
+    private void resetGoodsStockNum(Map map, String changeReason){
+        Integer goods_number = MapUtils.getInteger("goods_number", map);//商品总库存数
+        Integer number = MapUtils.getInteger("number", map);//订单商品购买数
+        Long goods_id = MapUtils.getLong("goods_id", map);
+        String merch_sn = MapUtils.getString("merch_sn", map);
+        String third_party_merch_code = MapUtils.getString("third_party_merch_code", map);
+
+        Map param = Maps.newHashMap();
+        param.put("id", goods_id);
+        param.put("goods_number", goods_number + number);
+        qzOrderMapper.updateGoodsStockNum(param);//商户商品库存还原
+
+        MngChangeJobEntity mngChangeJobEntity = new MngChangeJobEntity();
+        mngChangeJobEntity.setGoodsId(Integer.parseInt(String.valueOf(goods_id)));
+        mngChangeJobEntity.setThirdPartyMerchCode(third_party_merch_code);
+        mngChangeJobEntity.setChangeReason(changeReason);
+        mngChangeJobEntity.setChangeType(Dict.changeType.item_0.getItem());
+        mngChangeJobEntity.setChangeNum(number);//变化数
+        mngChangeJobEntity.setOriginalNum(goods_number);//原库存数
+        mngChangeJobEntity.setValidNum(goods_number + number);//可用数
+        mngChangeJobEntity.setCreateTime(new Date());
+        mngChangeJobEntity.setModTime(new Date());
+        mngChangeJobEntity.setCreaterSn("定时任务");
+        mngChangeJobEntity.setModerSn("定时任务");
+        mngChangeJobEntity.setIsValid(0);
+        mngChangeJobEntity.setMerchSn(merch_sn);
+        qzOrderMapper.saveMngChange(mngChangeJobEntity);
+    }
+
+    /**
+     * 还原门店商品库存
+     * @param map
+     * @param changeReason
+     */
+    private void resetStoreStockNumAndSellVolume(Map map, String changeReason){
+        Integer number = MapUtils.getInteger("number", map);//订单商品购买数
+        Integer stock_num = MapUtils.getInteger("stock_num", map);//门店商品总库存数
+        Long storeRelaId = MapUtils.getLong("storeRelaId", map);
+        Long goods_id = MapUtils.getLong("goods_id", map);
+        Long store_id = MapUtils.getLong("store_id", map);
+        String merch_sn = MapUtils.getString("merch_sn", map);
+
+        Map param = Maps.newHashMap();
+        param.put("id", storeRelaId);
+        param.put("stock_num", stock_num + number);
+        Integer sell_volume = MapUtils.getInteger("store_sell_volume", map);//销量
+        if(sell_volume >= number){
+            param.put("sell_volume", sell_volume - number);
+        }
+        qzOrderMapper.updateStockNum(param);//门店库存还原
+        StoreMngChangeJobEntity storeMngChangeJobEntity = new StoreMngChangeJobEntity();
+        storeMngChangeJobEntity.setChangeType(Dict.changeType.item_0.getItem());
+        storeMngChangeJobEntity.setChangeReason(changeReason);
+        storeMngChangeJobEntity.setGoodsId(Integer.parseInt(String.valueOf(goods_id)));
+        storeMngChangeJobEntity.setStoreId(Integer.parseInt(String.valueOf(store_id)));
+        storeMngChangeJobEntity.setMerchSn(merch_sn);
+        storeMngChangeJobEntity.setCreateTime(new Date());
+        storeMngChangeJobEntity.setModTime(new Date());
+        storeMngChangeJobEntity.setStoreChangeNum(number);
+        storeMngChangeJobEntity.setStoreOriginalNum(stock_num);
+        storeMngChangeJobEntity.setStoreValidNum(stock_num + number);
+        storeMngChangeJobEntity.setCreaterSn("定时任务");
+        storeMngChangeJobEntity.setModerSn("定时任务");
+        storeMngChangeJobEntity.setIsValid(0);
+        qzOrderMapper.saveStoreMngChange(storeMngChangeJobEntity);
+    }
+
+    private String getIsStockShareByGoodsVo(Map map){
+        String isStockShare = "";
+        String isSupplierGoods = MapUtils.getString("isSupplierGoods", map);
+        if(isSupplierGoods.equalsIgnoreCase(Dict.isSupplierGoods.item_0.getItem())) {
+            isStockShare = MapUtils.getString("isStockShare", map);
+        }else{
+            isStockShare = MapUtils.getString("isStockShareBySuppler", map);
+        }
+        return isStockShare;
     }
 
     private List<Integer> getExpendDistId(String expendDistIds){
@@ -1371,6 +1397,7 @@ public class QzOrderService {
         }
         return expendDistIdList;
     }
+
     private List<Double> getExpendDistLines(String expendDistLines){
         List<Double> expendDistLinesList = new ArrayList<>();
         String[] expendLines = expendDistLines.split(",");

+ 80 - 0
kmall-schedule/src/main/java/com/kmall/schedule/service/QzStoreCampMinusService.java

@@ -0,0 +1,80 @@
+package com.kmall.schedule.service;
+
+import com.google.common.collect.Maps;
+import com.kmall.common.constant.Dict;
+import com.kmall.common.utils.DateUtils;
+import com.kmall.common.utils.MapUtils;
+import com.kmall.schedule.dao.QzStoreCampMinusMapper;
+import com.kmall.schedule.dao.QzStoreTicketDiscountMapper;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 满减满折定时任务
+ *
+ * @author HUANGYAQIN(CN)
+ * @date 2019/5/5
+ */
+@Service
+public class QzStoreCampMinusService {
+    private static Log logger = LogFactory.getLog(QzStoreCampMinusService.class);
+    @Autowired
+    private QzStoreCampMinusMapper qzStoreCampMinusMapper;
+
+    /**
+     * 修改过期满减满折数据结束状态为无效,修改未开始且开始时间已小于或等于当前时间的满减满折结束状态为进行中
+     */
+    @Transactional
+    public void updateQueryStoreCampMinus() {
+        logger.info(">>>>>>>>>>>>>>>>>>>>updateQueryStoreCampMinus is start ");
+        logger.info(">>>>>>>>>>>>>>>>>>>>修改过期满减满折数据结束状态为无效,修改未开始且开始时间已小于或等于当前时间的满减满折结束状态为进行中");
+        //查询进行中且超时的满减满折数据
+        List<Map> storeCampMinusList = qzStoreCampMinusMapper.queryCampMinusListByPasting();
+        if (null != storeCampMinusList && storeCampMinusList.size() > 0) {
+            for (Map map : storeCampMinusList) {
+                Integer campMinusId = MapUtils.getInteger("campMinusId", map);
+                Integer storeTopicId = MapUtils.getInteger("storeTopicId", map);
+                //修改满减满折活动为不可用
+                Map param = Maps.newHashMap();
+                param.put("campMinusId", campMinusId);
+                param.put("isValid", "1");
+                param.put("isPast", Dict.isPast.item_1.getItem());//已结束
+                qzStoreCampMinusMapper.updateStoreCampMinus(param);
+
+                Map adMap = qzStoreCampMinusMapper.selectAdIdByTopicId(storeTopicId);
+                if(adMap != null){
+                    Integer adId = MapUtils.getInteger("adId", adMap);
+                    Map updateAdMap = new HashMap();
+                    updateAdMap.put("adId", adId);
+                    updateAdMap.put("enabled", 0);
+                    qzStoreCampMinusMapper.updateAd(updateAdMap);
+                }
+                if(storeTopicId != null){
+                    qzStoreCampMinusMapper.updateStoreTopic(storeTopicId);
+                }
+            }
+        }
+
+        //查询未开始,且开始时间已小于或等于当前时间的满减满折活动
+        List<Map> notStartList = qzStoreCampMinusMapper.queryCampMinusListByPastNotStart();
+        if (null != notStartList && notStartList.size() > 0) {
+            for (Map map : notStartList) {
+                Integer campMinusId = MapUtils.getInteger("campMinusId", map);
+                //修改满减满折活动状态为进行中
+                Map param = Maps.newHashMap();
+                param.put("campMinusId", campMinusId);
+                param.put("isPast", Dict.isPast.item_0.getItem());//进行中
+                qzStoreCampMinusMapper.updateStoreCampMinus(param);
+            }
+        }
+        logger.info(">>>>>>>>>>>>>>>>>>>>updateQueryStoreCampMinus is end ");
+    }
+}

+ 20 - 2
kmall-schedule/src/main/java/com/kmall/schedule/service/QzStorePromService.java

@@ -49,21 +49,39 @@ public class QzStorePromService {
     private QzStorePromMapper qzStorePromMapper;
 
     /**
-     * 查询渠道推广有效开始时间是否过期,过期则修改结束状态为已结束
+     * 修改过期门店推广数据结束状态为已结束,修改未开始且开始时间已小于或等于当前时间的门店推广结束状态为进行中
      */
     @Transactional
     public void updateQueryStoreProm() {
         logger.info(">>>>>>>>>>>>>>>>>>>>updateQueryStoreProm is start ");
-        logger.info(">>>>>>>>>>>>>>>>>>>>修改过期门店推广数据结束状态为已结束 ");
+        logger.info(">>>>>>>>>>>>>>>>>>>>修改过期门店推广数据结束状态为已结束,修改未开始且开始时间已小于或等于当前时间的门店推广结束状态为进行中");
+        //查询过期门店推广数据
         List<Map> storePromList = qzStorePromMapper.queryStorePromList();
         if (null != storePromList && storePromList.size() > 0) {
             for (Map map : storePromList) {
                 Integer promId = MapUtils.getInteger("promId", map);
                 Map param = Maps.newHashMap();
                 param.put("promId", promId);
+                param.put("isFinished", Dict.isFinished.item_0.getItem());
                 qzStorePromMapper.updateStoreProm(param);//修改状态
             }
         }
+        //查询当渠道活动开始时间小于当前时间的渠道信息
+        List<Map> storePromNotStartList = qzStorePromMapper.queryStorePromByNotStartList();
+        if (null != storePromNotStartList && storePromNotStartList.size() > 0) {
+            for (Map map : storePromNotStartList) {
+                Integer promId = MapUtils.getInteger("promId", map);
+                Date promBegTime = MapUtils.getDate("promBegTime", map);
+                //当渠道活动开始时间小于当前时间,则将活动状态修改为进行中
+                if(promBegTime.getTime() <= new Date().getTime()) {
+                    Map param = Maps.newHashMap();
+                    param.put("promId", promId);
+                    param.put("isFinished", Dict.isFinished.item_1.getItem());
+                    qzStorePromMapper.updateStoreProm(param);//修改状态
+                }
+            }
+        }
+
         logger.info(">>>>>>>>>>>>>>>>>>>>updateQueryStoreProm is end ");
     }
 

+ 6 - 3
kmall-schedule/src/main/java/com/kmall/schedule/service/QzStoreTicketDiscountService.java

@@ -30,18 +30,19 @@ public class QzStoreTicketDiscountService {
     private QzStoreTicketDiscountMapper qzStoreTicketDiscountMapper;
 
     /**
-     * 查询优惠券有效时间是否过期,过期则修改结束状态为无效
+     * 查询优惠券有效时间是否过期,修改过期优惠券数据结束状态为无效,修改过期用户优惠券状态为无效
      */
     @Transactional
     public void updateQueryTicketDiscount() {
         logger.info(">>>>>>>>>>>>>>>>>>>>updateQueryTicketDiscount is start ");
-        logger.info(">>>>>>>>>>>>>>>>>>>>修改过期优惠券数据结束状态为无效 ");
+        logger.info(">>>>>>>>>>>>>>>>>>>>修改过期优惠券数据结束状态为无效,修改过期用户优惠券状态为无效");
         //查询时间类型为固定时间,且超时的优惠券数据
         List<Map> storeTicketDiscountList00 = qzStoreTicketDiscountMapper.queryStoreTicketDiscountListBy00();
         if (null != storeTicketDiscountList00 && storeTicketDiscountList00.size() > 0) {
             for (Map map : storeTicketDiscountList00) {
                 Integer ticketDistId = MapUtils.getInteger("ticketDistId", map);
                 Integer userCouponId = MapUtils.getInteger("userCouponId", map);
+                Integer storeTopicId = MapUtils.getInteger("storeTopicId", map);
                 if(userCouponId != null) {
                     //修改用户优惠券为不可用
                     Map userCouponMap = Maps.newHashMap();
@@ -64,7 +65,9 @@ public class QzStoreTicketDiscountService {
                         qzStoreTicketDiscountMapper.updateAd(updateAdMap);
                     }
                 }
-
+                if(storeTopicId != null){
+                    qzStoreTicketDiscountMapper.updateStoreTopic(storeTopicId);
+                }
             }
         }
         //查询时间类型为领取后,且时间失效的优惠券数据

+ 138 - 68
kmall-schedule/src/main/java/com/kmall/schedule/service/QzStoreTopicStatisService.java

@@ -27,98 +27,141 @@ public class QzStoreTopicStatisService {
     private QzStoreTopicStatisMapper qzStoreTopicStatisMapper;
 
     /**
-     * 支付成功且是门店活动订单统计支付数据
+     * 支付成功且是门店优惠券活动订单统计支付数据
      */
     @Transactional
     public void updateTopicStatByPaySuccess() {
         logger.info(">>>>>>>>>>>>>>>>>>>>updateTopicStatByPaySuccess is start ");
-        logger.info(">>>>>>>>>>>>>>>>>>>>查询支付成功的门店活动订单,修改门店活动统计数据 ");
+        logger.info(">>>>>>>>>>>>>>>>>>>>查询支付成功的门店优惠券活动订单,修改门店优惠券活动统计数据 ");
         Integer[] statusList = {201};
         //查看未过期且有效的优惠券支付成功的订单信息
         List<Map> topicByPaySuccessList = qzStoreTopicStatisMapper.queryTicketStoreTopicByPaySuccess(statusList);
-        if (null != topicByPaySuccessList && topicByPaySuccessList.size() > 0) {
-            for (Map map : topicByPaySuccessList) {
-                Integer storeTopicId = MapUtils.getInteger("storeTopicId", map);
-                Integer storeTopicStatId = MapUtils.getInteger("storeTopicStatId", map);
-                Map updateParam = Maps.newHashMap();
-
-                Map queryMap = new HashMap();
-                queryMap.put("storeTopicId", storeTopicId);
-                queryMap.put("statusListOne", statusList);
-                queryMap.put("statusListTwo", statusList);
-                Map statDataMap = qzStoreTopicStatisMapper.getStatDataByStoreTopicId(queryMap);
-                Double receivMoney = parseDoubleValid(MapUtils.getDouble("receivMoney", statDataMap));
-                Double orderActualPrice = parseDoubleValid(MapUtils.getDouble("orderActualPrice", statDataMap));
-                Integer payCaseNum = parseIntegerValid(MapUtils.getInteger("payCaseNum", statDataMap));
-                Integer payOrderNum = parseIntegerValid(MapUtils.getInteger("payOrderNum", statDataMap));
-                Integer payerNum = parseIntegerValid(MapUtils.getInteger("payerNum", statDataMap));
-                // TODO: 2019/5/6 实收金额:已包含优惠券、运费等的扣减
-                updateParam.put("receivMoney", receivMoney);
-                updateParam.put("actMoney", orderActualPrice);
-                updateParam.put("payCaseNum", payCaseNum);
-                updateParam.put("payOrderNum", payOrderNum);
-                updateParam.put("payerNum", payerNum);
-                updateParam.put("storeTopicStatId", storeTopicStatId);
-                updateParam.put("storeTopicId", storeTopicId);
-                qzStoreTopicStatisMapper.updateStoreTopicStat(updateParam);//修改状态
-            }
-        }
+        updateTopicStatByPaySuccessByList(topicByPaySuccessList, statusList);
         logger.info(">>>>>>>>>>>>>>>>>>>>updateTopicStatByPaySuccess is end ");
     }
 
     /**
-     * 退款成功且是门店活动订单统计支付数据
+     * 退款成功且是门店优惠券活动订单统计支付数据
      */
     @Transactional
     public void updateTopicStatByRefundSuccess() {
         logger.info(">>>>>>>>>>>>>>>>>>>>updateTopicStatByRefundSuccess is start ");
-        logger.info(">>>>>>>>>>>>>>>>>>>>查询退款成功的门店活动订单,修改门店活动统计数据 ");
+        logger.info(">>>>>>>>>>>>>>>>>>>>查询退款成功的门店优惠券活动订单,修改门店优惠券活动统计数据 ");
 
         Integer[] statusList = {401};
         //查看未过期且有效的优惠券退款成功的订单信息
         List<Map> promByRefundSuccessList = qzStoreTopicStatisMapper.queryTicketStoreTopicByPaySuccess(statusList);
         if (null != promByRefundSuccessList && promByRefundSuccessList.size() > 0) {
-            for (Map refundMap : promByRefundSuccessList) {
-                Integer storeTopicId = MapUtils.getInteger("storeTopicId", refundMap);
-                Integer storeTopicStatId = MapUtils.getInteger("storeTopicStatId", refundMap);
-                //查出退款的原统计数据
-                Double orgReceivMoney = parseDoubleValid(MapUtils.getDouble("receivMoney", refundMap));
-                Double orgActMoney = parseDoubleValid(MapUtils.getDouble("actMoney", refundMap));
-                Integer orgPayCaseNum = parseIntegerValid(MapUtils.getInteger("payCaseNum", refundMap));
-                Integer orgPayOrderNum = parseIntegerValid(MapUtils.getInteger("payOrderNum", refundMap));
-                Integer orgPayerNum = parseIntegerValid(MapUtils.getInteger("payerNum", refundMap));
-                if(orgReceivMoney == 0 || orgActMoney == 0){
-                    return;
-                }
-                Map updateParam = Maps.newHashMap();
-                //查出该商品的总退款统计数据
-                Map queryMap = new HashMap();
-                queryMap.put("storeTopicId", storeTopicId);
-                queryMap.put("statusListOne", statusList);
-                queryMap.put("statusListTwo", statusList);
-                Map statDataMap = qzStoreTopicStatisMapper.getStatDataByStoreTopicId(queryMap);
-                Double receivMoney = parseDoubleValid(MapUtils.getDouble("receivMoney", statDataMap));
-                Double orderActualPrice = parseDoubleValid(MapUtils.getDouble("orderActualPrice", statDataMap));
-                Integer payCaseNum = parseIntegerValid(MapUtils.getInteger("payCaseNum", statDataMap));
-                Integer payOrderNum = parseIntegerValid(MapUtils.getInteger("payOrderNum", statDataMap));
-                Integer payerNum = parseIntegerValid(MapUtils.getInteger("payerNum", statDataMap));
-
-                // TODO: 2019/5/6 实收金额:还需要计算优惠券、运费等
-                updateParam.put("receivMoney", orgReceivMoney - receivMoney);
-                updateParam.put("actMoney", orgActMoney - orderActualPrice);
-                updateParam.put("payCaseNum", orgPayCaseNum - payCaseNum);
-                updateParam.put("payOrderNum", orgPayOrderNum - payOrderNum);
-                updateParam.put("payerNum", orgPayerNum - payerNum);
+            updateTopicStatByRefundSuccessByList(promByRefundSuccessList, statusList);
+        }else{
+            logger.info(">>>>>>>>>>>>>>>>>>>>查询退款成功的门店优惠券活动订单没有数据 ");
+        }
+        logger.info(">>>>>>>>>>>>>>>>>>>>updateTopicStatByRefundSuccess is end ");
+    }
 
-                updateParam.put("storeTopicStatId", storeTopicStatId);
-                updateParam.put("storeTopicId", storeTopicId);
-                qzStoreTopicStatisMapper.updateStoreTopicStat(updateParam);//修改状态
-            }
+    /**
+     * 支付成功且是门店促销满减活动订单统计支付数据
+     */
+    @Transactional
+    public void updateCampTopicStatByPaySuccess() {
+        logger.info(">>>>>>>>>>>>>>>>>>>>updateCampTopicStatByPaySuccess is start ");
+        logger.info(">>>>>>>>>>>>>>>>>>>>查询支付成功的门店促销满减活动订单,修改门店促销满减活动统计数据 ");
+        Integer[] statusList = {201};
+        //查看未过期且有效的促销满减支付成功的订单信息
+        List<Map> topicByPaySuccessList = qzStoreTopicStatisMapper.queryCampStoreTopicByPaySuccess(statusList);
+
+        if (null != topicByPaySuccessList && topicByPaySuccessList.size() > 0) {
+            updateTopicStatByPaySuccessByList(topicByPaySuccessList, statusList);
         }else{
-            logger.info(">>>>>>>>>>>>>>>>>>>>查询退款成功的门店活动订单没有数据 ");
+            logger.info(">>>>>>>>>>>>>>>>>>>>查询支付成功的门店促销满减活动订单没有数据 ");
         }
+        logger.info(">>>>>>>>>>>>>>>>>>>>updateCampTopicStatByPaySuccess is end ");
+    }
 
-        logger.info(">>>>>>>>>>>>>>>>>>>>updateTopicStatByRefundSuccess is end ");
+    /**
+     * 退款成功且是门店促销满减活动订单统计支付数据
+     */
+    @Transactional
+    public void updateCampTopicStatByRefundSuccess() {
+        logger.info(">>>>>>>>>>>>>>>>>>>>updateCampTopicStatByRefundSuccess is start ");
+        logger.info(">>>>>>>>>>>>>>>>>>>>查询退款成功的门店促销满减活动订单,修改门店促销满减活动统计数据 ");
+        Integer[] statusList = {401};
+        //查看未过期且有效的促销满减退款成功的订单信息
+        List<Map> campByRefundSuccessList = qzStoreTopicStatisMapper.queryCampStoreTopicByPaySuccess(statusList);
+        if (null != campByRefundSuccessList && campByRefundSuccessList.size() > 0) {
+            updateTopicStatByRefundSuccessByList(campByRefundSuccessList, statusList);
+        }else{
+            logger.info(">>>>>>>>>>>>>>>>>>>>查询退款成功的门店促销满减活动订单没有数据 ");
+        }
+
+        logger.info(">>>>>>>>>>>>>>>>>>>>updateCampTopicStatByRefundSuccess is end ");
+    }
+
+
+    private void updateTopicStatByPaySuccessByList(List<Map> list, Integer[] statusList){
+        for (Map map : list) {
+            Integer storeTopicId = MapUtils.getInteger("storeTopicId", map);
+            Integer storeTopicStatId = MapUtils.getInteger("storeTopicStatId", map);
+            Map updateParam = Maps.newHashMap();
+
+            Map queryMap = new HashMap();
+            queryMap.put("storeTopicId", storeTopicId);
+            queryMap.put("statusListOne", statusList);
+            queryMap.put("statusListTwo", statusList);
+            Map statDataMap = qzStoreTopicStatisMapper.getStatDataByStoreTopicId(queryMap);
+            Double receivMoney = parseDoubleValid(MapUtils.getDouble("receivMoney", statDataMap));
+            Double orderActualPrice = parseDoubleValid(MapUtils.getDouble("orderActualPrice", statDataMap));
+            Integer payCaseNum = parseIntegerValid(MapUtils.getInteger("payCaseNum", statDataMap));
+            Integer payOrderNum = parseIntegerValid(MapUtils.getInteger("payOrderNum", statDataMap));
+            Integer payerNum = parseIntegerValid(MapUtils.getInteger("payerNum", statDataMap));
+            // TODO: 2019/5/6 实收金额:已包含优惠券、运费等的扣减
+            updateParam.put("receivMoney", receivMoney);
+            updateParam.put("actMoney", orderActualPrice);
+            updateParam.put("payCaseNum", payCaseNum);
+            updateParam.put("payOrderNum", payOrderNum);
+            updateParam.put("payerNum", payerNum);
+            updateParam.put("storeTopicStatId", storeTopicStatId);
+            updateParam.put("storeTopicId", storeTopicId);
+            qzStoreTopicStatisMapper.updateStoreTopicStat(updateParam);//修改状态
+        }
+    }
+
+    private void updateTopicStatByRefundSuccessByList(List<Map> list, Integer[] statusList){
+        for (Map refundMap : list) {
+            Integer storeTopicId = MapUtils.getInteger("storeTopicId", refundMap);
+            Integer storeTopicStatId = MapUtils.getInteger("storeTopicStatId", refundMap);
+            //查出退款的原统计数据
+            Double orgReceivMoney = parseDoubleValid(MapUtils.getDouble("receivMoney", refundMap));
+            Double orgActMoney = parseDoubleValid(MapUtils.getDouble("actMoney", refundMap));
+            Integer orgPayCaseNum = parseIntegerValid(MapUtils.getInteger("payCaseNum", refundMap));
+            Integer orgPayOrderNum = parseIntegerValid(MapUtils.getInteger("payOrderNum", refundMap));
+            Integer orgPayerNum = parseIntegerValid(MapUtils.getInteger("payerNum", refundMap));
+            if(orgReceivMoney == 0 || orgActMoney == 0){
+                return;
+            }
+            Map updateParam = Maps.newHashMap();
+            //查出该商品的总退款统计数据
+            Map queryMap = new HashMap();
+            queryMap.put("storeTopicId", storeTopicId);
+            queryMap.put("statusListOne", statusList);
+            queryMap.put("statusListTwo", statusList);
+            Map statDataMap = qzStoreTopicStatisMapper.getStatDataByStoreTopicId(queryMap);
+            Double receivMoney = parseDoubleValid(MapUtils.getDouble("receivMoney", statDataMap));
+            Double orderActualPrice = parseDoubleValid(MapUtils.getDouble("orderActualPrice", statDataMap));
+            Integer payCaseNum = parseIntegerValid(MapUtils.getInteger("payCaseNum", statDataMap));
+            Integer payOrderNum = parseIntegerValid(MapUtils.getInteger("payOrderNum", statDataMap));
+            Integer payerNum = parseIntegerValid(MapUtils.getInteger("payerNum", statDataMap));
+            // TODO: 2019/5/6 实收金额:还需要计算优惠券、运费等
+            updateParam.put("receivMoney", orgReceivMoney - receivMoney);
+            updateParam.put("actMoney", orgActMoney - orderActualPrice);
+            updateParam.put("payCaseNum", orgPayCaseNum - payCaseNum);
+            updateParam.put("payOrderNum", orgPayOrderNum - payOrderNum);
+            updateParam.put("payerNum", orgPayerNum - payerNum);
+
+            updateParam.put("storeTopicStatId", storeTopicStatId);
+            updateParam.put("storeTopicId", storeTopicId);
+            qzStoreTopicStatisMapper.updateStoreTopicStat(updateParam);//修改状态
+        }
     }
 
     private Double parseDoubleValid(Double param){
@@ -134,4 +177,31 @@ public class QzStoreTopicStatisService {
     public static void main(String[] args) {
 
     }
+
+    /**
+     * 统计门店促销满减活动订单,下单单数、下单人数数据
+     *//*
+    @Transactional
+    public void updateCampTopicStatBySubmit() {
+        logger.info(">>>>>>>>>>>>>>>>>>>>updateCampTopicStatBySubmit is start ");
+        logger.info(">>>>>>>>>>>>>>>>>>>>查询门店促销满减活动订单,修改门店促销满减活动统计数据 ");
+        List<Map> topicByOrderList = qzStoreTopicStatisMapper.queryCampByOrderList();
+        if (null != topicByOrderList && topicByOrderList.size() > 0) {
+            for (Map map : topicByOrderList) {
+                Integer storeTopicId = MapUtils.getInteger("storeTopicId", map);
+                Integer storeTopicStatId = MapUtils.getInteger("storeTopicStatId", map);
+                Integer submitOrderNum = MapUtils.getInteger("submitOrderNum", map);
+
+                List<Map> submitNumList = qzStoreTopicStatisMapper.querySubmitNumByCampOrder(storeTopicId);
+                Integer submitNum = submitNumList != null ? submitNumList.size() : 0;
+                Map updateParam = Maps.newHashMap();
+
+                updateParam.put("submitOrderNum", submitOrderNum);
+                updateParam.put("submitNum", submitNum);
+                updateParam.put("storeTopicStatId", storeTopicStatId);
+                qzStoreTopicStatisMapper.updateStoreTopicStatSubmit(updateParam);//修改状态
+            }
+        }
+        logger.info(">>>>>>>>>>>>>>>>>>>>updateCampTopicStatBySubmit is end ");
+    }*/
 }

+ 192 - 30
kmall-schedule/src/main/resources/mybatis/mapper/QzOrderMapper.xml

@@ -21,15 +21,38 @@
     </select>
 
     <select id="queryPastOrderList" resultType="map">
-        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,
-        a.store_id,g.merch_sn,g.sell_volume 'goods_sell_volume',c.sell_volume 'store_sell_volume',a.id 'orderId'
-        FROM mall_order a
+        SELECT
+        b.product_id,
+        b.number,
+        c.stock_num,
+        c.id AS storeRelaId,
+        g.goods_number,
+        g.id goods_id,
+        g.goods_biz_type,
+        a.store_id,
+        g.merch_sn,
+        g.sell_volume 'goods_sell_volume',
+        c.sell_volume 'store_sell_volume',
+        a.id 'orderId',
+        mb.is_stock_share,
+        mb.third_party_merch_code,
+        mb.is_supplier_goods 'isSupplierGoods',
+        mb2.third_party_merch_code 'supplierThirdMerchCode',
+        mb2.is_stock_share 'isStockShareBySuppler'
+        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.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
+        LEFT JOIN mall_goods g ON g.id = c.goods_id
+        AND g.merch_sn = c.merch_sn
+        LEFT JOIN third_merchant_biz mb2 ON mb2.third_party_merch_code = g.third_party_merch_code
+        AND mb2.merch_sn = g.merch_sn
+        LEFT JOIN mall_store s ON s.id = c.store_id
+        LEFT JOIN third_merchant_biz mb ON mb.third_party_merch_code = s.third_party_merch_code
+        AND mb.merch_sn = s.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>
@@ -50,6 +73,7 @@
         </set>
         where a.id = #{id}
     </update>
+
     <update id="updateGoodsStockNum" parameterType="map">
         update mall_goods a
         <set>
@@ -126,42 +150,142 @@
     </insert>
 
     <select id="queryRefundOrderList" resultType="map">
-        select a.pay_transaction_id,a.merch_order_sn,a.order_sn,a.order_status,a.pay_status,f.out_refund_no,f.refund_id,f.order_id,f.id 'orderRefundId',a.is_onffline_order,
-        a.order_sn_wx,a.pay_flag,a.store_id,a.merch_sn
-        from mall_order a
-        inner join mall_order_refund f on a.id = f.order_id	where (f.out_refund_no is null or f.refund_id is null
-        or f.refund_time is null or f.wechat_refund_status_des is null) and a.order_status = '401' and f.refund_status
-        in (2,5)
+        SELECT
+        a.pay_transaction_id,
+        a.merch_order_sn,
+        a.order_sn,
+        a.order_status,
+        a.pay_status,
+        f.out_refund_no,
+        f.refund_id,
+        f.order_id 'orderId',
+        f.id 'orderRefundId',
+        a.is_onffline_order,
+        a.order_sn_wx,
+        a.pay_flag,
+        a.store_id,
+        a.merch_sn,
+        g.goods_number,
+        b.number,
+        c.stock_num,
+        c.id AS storeRelaId,
+        g.id goods_id,
+        g.goods_biz_type,
+        g.sell_volume 'goods_sell_volume',
+        c.sell_volume 'store_sell_volume',
+        mb.is_stock_share,
+        mb.third_party_merch_code,
+        mb.is_supplier_goods 'isSupplierGoods',
+        mb2.third_party_merch_code 'supplierThirdMerchCode',
+        mb2.is_stock_share 'isStockShareBySuppler'
+        FROM
+        mall_order a
+        LEFT JOIN mall_order_goods b ON a.id = b.order_id
+        INNER JOIN mall_order_refund f ON a.id = f.order_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 mb2 on mb2.third_party_merch_code=g.third_party_merch_code and mb2.merch_sn=g.merch_sn
+		LEFT JOIN mall_store s ON s.id = c.store_id
+        left join third_merchant_biz mb on mb.third_party_merch_code=s.third_party_merch_code and mb.merch_sn=s.merch_sn
+        WHERE
+        ( f.out_refund_no IS NULL OR f.refund_id IS NULL OR f.refund_time IS NULL OR f.wechat_refund_status_des IS NULL )
+        AND a.order_status = '401'
+        AND f.refund_status IN ( 2, 5 )
     </select>
 
     <select id="queryPayingOrderList" resultType="map">
-		select a.pay_transaction_id,a.order_sn,a.order_status,a.pay_status,a.id 'orderId',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,mb.is_stock_share,mb.third_party_merch_code,g.goods_number,g.id goods_id,g.goods_biz_type,
-        a.store_id,g.merch_sn,mb.third_party_merch_code,g.sell_volume 'goods_sell_volume',c.sell_volume 'store_sell_volume'
-        from mall_order a
+		SELECT
+        a.pay_transaction_id,
+        a.order_sn,
+        a.order_status,
+        a.pay_status,
+        a.id 'orderId',
+        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,
+        g.goods_number,
+        g.id goods_id,
+        g.goods_biz_type,
+        a.store_id,
+        g.merch_sn,
+        mb.third_party_merch_code,
+        g.sell_volume 'goods_sell_volume',
+        c.sell_volume 'store_sell_volume',
+        mb.is_stock_share,
+        mb.third_party_merch_code,
+        mb.is_supplier_goods 'isSupplierGoods',
+        mb2.third_party_merch_code 'supplierThirdMerchCode',
+        mb2.is_stock_share 'isStockShareBySuppler'
+        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.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'
+        LEFT JOIN mall_goods g ON g.id = c.goods_id
+        AND g.merch_sn = c.merch_sn
+        LEFT JOIN third_merchant_biz mb2 ON mb2.third_party_merch_code = g.third_party_merch_code
+        AND mb2.merch_sn = g.merch_sn
+        LEFT JOIN mall_store s ON s.id = c.store_id
+        LEFT JOIN third_merchant_biz mb ON mb.third_party_merch_code = s.third_party_merch_code
+        AND mb.merch_sn = s.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 'orderId',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,mb.is_stock_share,mb.third_party_merch_code,g.goods_number,g.id goods_id,g.goods_biz_type,
-        a.store_id,g.merch_sn,mb.third_party_merch_code,g.sell_volume 'goods_sell_volume',c.sell_volume 'store_sell_volume'
-        from mall_order a
+		SELECT
+        a.pay_transaction_id,
+        a.order_sn,
+        a.order_status,
+        a.pay_status,
+        a.id 'orderId',
+        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,
+        g.goods_number,
+        g.id goods_id,
+        g.goods_biz_type,
+        a.store_id,
+        g.merch_sn,
+        mb.third_party_merch_code,
+        g.sell_volume 'goods_sell_volume',
+        c.sell_volume 'store_sell_volume',
+        mb.is_stock_share,
+        mb.third_party_merch_code,
+        mb.is_supplier_goods 'isSupplierGoods',
+        mb2.third_party_merch_code 'supplierThirdMerchCode',
+        mb2.is_stock_share 'isStockShareBySuppler'
+        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.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'
+        LEFT JOIN mall_goods g ON g.id = c.goods_id
+        AND g.merch_sn = c.merch_sn
+        LEFT JOIN third_merchant_biz mb2 ON mb2.third_party_merch_code = g.third_party_merch_code
+        AND mb2.merch_sn = g.merch_sn
+        LEFT JOIN mall_store s ON s.id = c.store_id
+        LEFT JOIN third_merchant_biz mb ON mb.third_party_merch_code = s.third_party_merch_code
+        AND mb.merch_sn = s.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>
 
     <update id="updateOrderInfo" parameterType="map">
@@ -218,6 +342,7 @@
         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)  AND a.is_onffline_order = 0
     </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_start_time,'%Y-%m-%d %H:%i:%s') as shipment_start_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'
@@ -391,6 +516,7 @@
         select s.dist_id 'distId',s.dist_hier_name 'distHierName',s.hier_lvl 'hierLvl' from mk_dist_hier s
         where s.dist_id = #{distId} and s.dist_chnl_id = #{distChnlId}
     </select>
+
     <update id="updateOrderGoodsIsScan" parameterType="map">
         update mall_order_goods set is_dist_sell_scan = #{isDistSellScan} where id=#{orderGoodsId}
     </update>
@@ -398,6 +524,7 @@
     <select id="queryUserCouponByOrderId" resultType="map">
         select id 'couponId' from mall_user_coupon where order_id = #{orderId}
     </select>
+
     <update id="cancelUserCouponOrder" parameterType="map">
         update mall_user_coupon
         <set>
@@ -408,6 +535,41 @@
         where id = #{id}
     </update>
 
+    <select id="queryUserCampByOrderId" resultType="map">
+        select user_camp_id 'userCampId' from mall_user_camp_minus where order_id = #{orderId}
+    </select>
 
+    <update id="cancelUserCampOrder" parameterType="map">
+        update mall_user_camp_minus
+        <set>
+            `used_time` = null,
+            `order_id` = 0,
+            is_used = 0
+        </set>
+        where user_camp_id = #{userCampId}
+    </update>
+
+    <select id="queryOrderIdByOrderGoodsList" resultType="map">
+        SELECT
+            order_id,p.id 'storeRelaId'
+        FROM
+            mall_order_goods g
+            LEFT JOIN mall_order o ON o.id = g.order_id
+            LEFT JOIN mall_goods gs ON g.goods_id = gs.id
+            LEFT JOIN mall_product_store_rela p ON p.store_id = o.store_id
+            AND p.goods_id = gs.id where o.pay_status = 2
+            AND is_onffline_order = 0
+    </select>
 
+    <select id="queryOrderCountByIdAndPayStatus" resultType="map">
+        SELECT
+            count(g.number) 'sellVolume'
+        FROM
+                mall_order_goods g
+            LEFT JOIN mall_order o ON o.id = g.order_id
+            LEFT JOIN mall_goods gs ON g.goods_id = gs.id
+            LEFT JOIN mall_product_store_rela p ON p.store_id = o.store_id
+            AND p.goods_id = gs.id where o.pay_status = 2
+            AND is_onffline_order = 0 and p.id= #{storeRelaId}
+    </select>
 </mapper>

+ 42 - 0
kmall-schedule/src/main/resources/mybatis/mapper/QzStoreCampMinusMapper.xml

@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+
+<mapper namespace="com.kmall.schedule.dao.QzStoreCampMinusMapper">
+    <select id="queryCampMinusListByPasting" resultType="map">
+        select
+        `camp_minus_id` 'campMinusId', a.store_topic_id 'storeTopicId'
+        from mk_store_camp_minus a
+        where 1=1 AND a.camp_end_time <![CDATA[ < ]]> now() AND a.is_valid = 0 and a.is_past = 0
+    </select>
+    <select id="queryCampMinusListByPastNotStart" resultType="map">
+        select
+        `camp_minus_id` 'campMinusId', a.store_topic_id 'storeTopicId'
+        from mk_store_camp_minus a
+        where 1=1 AND a.camp_beg_time <![CDATA[ <= ]]> now() AND a.is_valid = 0 and a.is_past = 2
+    </select>
+
+    <update id="updateStoreCampMinus" parameterType="map">
+        update mk_store_camp_minus set
+        <if test="isValid != null and isValid != ''">
+            is_valid = 1,
+        </if>
+         <if test="isPast != null and isPast != ''">
+             is_past = #{isPast},
+         </if>
+         mod_time = now() where camp_minus_id = #{campMinusId}
+    </update>
+
+    <select id="selectAdIdByTopicId" resultType="map">
+        select
+        id 'adId'
+        from mall_ad
+        where store_topic_id = #{storeTopicId}
+    </select>
+
+    <update id="updateAd" parameterType="map">
+        update mall_ad set enabled = #{enabled} where id = #{adId}
+    </update>
+    <update id="updateStoreTopic" parameterType="map">
+        update mall_store_topic set is_valid = 1,mod_time = now() where id = #{storeTopicId}
+    </update>
+</mapper>

+ 11 - 1
kmall-schedule/src/main/resources/mybatis/mapper/QzStorePromMapper.xml

@@ -12,8 +12,18 @@
         from mk_store_prom a
         where 1=1 AND a.prom_end_time <![CDATA[ < ]]> now() AND is_finished = 1
     </select>
+    <select id="queryStorePromByNotStartList" resultType="map">
+        select
+        `prom_id` 'promId',
+        `store_id`,
+        `prom_beg_time` 'promBegTime',
+        `prom_end_time`,
+        `is_finished`
+        from mk_store_prom a
+        where 1=1 AND is_finished = 2
+    </select>
     <update id="updateStoreProm" parameterType="map">
-        update mk_store_prom set is_finished = 0, mod_time = now() where prom_id = #{promId}
+        update mk_store_prom set is_finished = #{isFinished}, mod_time = now() where prom_id = #{promId}
     </update>
 
     <select id="queryStorePromByPaySuccess" resultType="map">

+ 6 - 3
kmall-schedule/src/main/resources/mybatis/mapper/QzStoreTicketDiscountMapper.xml

@@ -4,7 +4,7 @@
 <mapper namespace="com.kmall.schedule.dao.QzStoreTicketDiscountMapper">
     <select id="queryStoreTicketDiscountListBy00" resultType="map">
         select
-        `tick_disc_id` 'ticketDistId',cc.id 'userCouponId'
+        `tick_disc_id` 'ticketDistId',cc.id 'userCouponId',a.store_topic_id 'storeTopicId'
         from mk_store_ticket_discount a LEFT JOIN mall_user_coupon cc on a.store_topic_id = cc.store_topic_id AND cc.enabled = 1
         where 1=1 AND a.fix_end_time <![CDATA[ < ]]> now() AND a.effect_time_type = '00' AND a.is_valid = 0
     </select>
@@ -12,14 +12,14 @@
     <select id="queryStoreTicketDiscountListBy01" resultType="map">
         select
         a.`tick_disc_id` 'ticketDistId',a.postpone_num 'postponeNum',a.valid_day_num 'validDayNum',cc.add_time 'addTime',cc.id 'userCouponId',
-        a.ticket_num 'ticketNum',a.limit_num 'limitNum',cc.end_time 'endTime'
+        a.ticket_num 'ticketNum',a.limit_num 'limitNum',cc.end_time 'endTime',a.store_topic_id 'storeTopicId'
         from mk_store_ticket_discount a INNER JOIN mall_user_coupon cc on a.store_topic_id = cc.store_topic_id
         where 1=1 AND a.effect_time_type = '01' AND a.is_valid = 0 and cc.enabled = 1 and cc.end_time <![CDATA[ < ]]> now()
     </select>
 
     <select id="queryStoreTicketDiscountListByLimit" resultType="map">
         select
-        a.`tick_disc_id` 'ticketDistId'
+        a.`tick_disc_id` 'ticketDistId',a.store_topic_id 'storeTopicId'
         from mk_store_ticket_discount a
         where 1=1 AND a.ticket_num <![CDATA[ <= ]]> 0
     </select>
@@ -49,4 +49,7 @@
     <update id="updateAd" parameterType="map">
         update mall_ad set enabled = #{enabled} where id = #{adId}
     </update>
+    <update id="updateStoreTopic" parameterType="map">
+        update mall_store_topic set is_valid = 1,mod_time = now() where id = #{storeTopicId}
+    </update>
 </mapper>

+ 24 - 0
kmall-schedule/src/main/resources/mybatis/mapper/QzStoreTopicStatisMapper.xml

@@ -25,6 +25,30 @@
             </foreach>
         </if>
     </select>
+
+    <select id="queryCampStoreTopicByPaySuccess" resultType="map">
+        SELECT
+        s.store_topic_stat_id storeTopicStatId,
+        s.store_topic_id storeTopicId,
+        s.pay_order_num payOrderNum,
+        s.payer_num payerNum,
+        s.receiv_money receivMoney,
+        s.pay_case_num payCaseNum,
+        s.act_money actMoney
+        FROM
+        mk_store_topic_stat s
+        LEFT JOIN mall_order o ON s.store_topic_id = o.activity_id
+        left join mall_store_topic t on s.store_topic_id = t.id
+        LEFT JOIN mk_store_camp_minus d ON t.id = d.store_topic_id
+        WHERE 1=1 and d.is_valid = 0 and d.is_past = 0
+        <if test="statusList != null">
+            AND o.order_status IN
+            <foreach item="statusList" collection="statusList" open="(" separator="," close=")">
+                #{statusList}
+            </foreach>
+        </if>
+    </select>
+
     <select id="getStatDataByStoreTopicId" resultType="map">
         SELECT
         count( DISTINCT o.order_sn ) payOrderNum,

+ 1 - 1
kmall-schedule/src/main/webapp/js/sys/schedule.js

@@ -18,7 +18,7 @@ $(function () {
             }
         ],
         viewrecords: true,
-        height: 385,
+        height: 550,
         rowNum: 10,
         rowList: [10, 30, 50],
         rownumbers: true,

+ 1 - 1
kmall-schedule/src/main/webapp/js/sys/schedule_log.js

@@ -21,7 +21,7 @@ $(function () {
             }}
         ],
         viewrecords: true,
-        height: 385,
+        height: 550,
         rowNum: 10,
         rowList: [10, 30, 50, 100, 200],
         rownumbers: true,

+ 1 - 1
kmall-schedule/src/main/webapp/statics/libs/jquery-extend.js

@@ -12,7 +12,7 @@
                 styleUI: 'Bootstrap',
                 datatype: "json",
                 viewrecords: true,
-                height: 385,
+                height: 550,
                 rowNum: 10,
                 rowList: [10, 30, 50],
                 rownumbers: true,