Преглед изворни кода

定时任务2分钟扫商品优惠券购买

zhijiezhao пре 3 година
родитељ
комит
784941bc6b

+ 2 - 0
src/main/java/com/caimei365/order/mapper/OrderClubMapper.java

@@ -214,4 +214,6 @@ public interface OrderClubMapper {
     Integer getLatestOrderId(Integer userId);
 
     Integer findUserId(Integer orderId);
+
+    void insertCouponRecord(CouponRecordPo couponRecordPo);
 }

+ 3 - 0
src/main/java/com/caimei365/order/mapper/PayOrderMapper.java

@@ -3,6 +3,7 @@ package com.caimei365.order.mapper;
 import com.caimei365.order.model.bo.VipRecordBo;
 import com.caimei365.order.model.po.*;
 import com.caimei365.order.model.vo.BankCodeVo;
+import com.caimei365.order.model.vo.CouponCheckVo;
 import com.caimei365.order.model.vo.OrderPayLinkVo;
 import com.caimei365.order.model.vo.OrderVo;
 import org.apache.ibatis.annotations.Mapper;
@@ -200,4 +201,6 @@ public interface PayOrderMapper {
     Integer findClubType(Integer userId);
 
     void bugFix(Integer userId);
+
+    List<CouponCheckVo> findCouponOrder();
 }

+ 1 - 1
src/main/java/com/caimei365/order/model/po/CouponClubPo.java

@@ -36,7 +36,7 @@ public class CouponClubPo {
 
 
     /**
-     * 领取渠道:1网站 2小程序 3订单退回
+     * 领取渠道:1网站 2小程序 3订单退回,5商品购买转换
      */
     private Integer source;
 

+ 1 - 0
src/main/java/com/caimei365/order/model/po/CouponRecordPo.java

@@ -12,4 +12,5 @@ public class CouponRecordPo implements Serializable {
     private Integer couponId;
     private Integer payStatus;
     private Integer userId;
+    private Integer orderId;//商品兑换优惠券订单id
 }

+ 19 - 0
src/main/java/com/caimei365/order/model/vo/CouponCheckVo.java

@@ -0,0 +1,19 @@
+package com.caimei365.order.model.vo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+public class CouponCheckVo implements Serializable {
+
+    //购买的商品id
+    private Integer productId;
+    //下单购买的数量
+    private Integer num;
+    //下单订单id
+    private Integer orderId;
+
+    private Integer userId;
+
+}

+ 2 - 0
src/main/java/com/caimei365/order/service/PayOrderService.java

@@ -114,6 +114,8 @@ public interface PayOrderService {
 
     ResponseJson<JSONObject> bankCode();
 
+    void couponCheck();
+
 //    /**
 //     * 手动临时分账
 //     */

+ 35 - 0
src/main/java/com/caimei365/order/service/impl/PayOrderServiceImpl.java

@@ -6,6 +6,7 @@ import com.caimei365.order.components.OrderCommonService;
 import com.caimei365.order.components.ProductService;
 import com.caimei365.order.components.WeChatService;
 import com.caimei365.order.mapper.BaseMapper;
+import com.caimei365.order.mapper.OrderClubMapper;
 import com.caimei365.order.mapper.OrderCommonMapper;
 import com.caimei365.order.mapper.PayOrderMapper;
 import com.caimei365.order.model.ResponseJson;
@@ -42,6 +43,7 @@ import java.util.*;
 import java.util.concurrent.atomic.AtomicBoolean;
 import java.util.concurrent.atomic.AtomicReference;
 
+import static org.bouncycastle.asn1.x500.style.RFC4519Style.c;
 import static org.bouncycastle.asn1.x500.style.RFC4519Style.o;
 
 /**
@@ -66,6 +68,8 @@ public class PayOrderServiceImpl implements PayOrderService {
     @Resource
     private WeChatService weChatService;
     @Resource
+    private OrderClubMapper orderClubMapper;
+    @Resource
     private RemoteCallService remoteCallService;
     @Value("${pay.redirect-link}")
     private String redirectLink;
@@ -1386,6 +1390,37 @@ public class PayOrderServiceImpl implements PayOrderService {
         return ResponseJson.success("获取成功", jsonObject);
     }
 
+    @Override
+    public void couponCheck() {
+        log.info("------------查询是否有优惠券商品下单------------------------>");
+        List<CouponCheckVo> checks = payOrderMapper.findCouponOrder();
+        if (null != checks && checks.size() > 0) {
+           checks.forEach(checkVo -> {
+               for (int i = 0; i < checkVo.getNum(); i++) {
+                   insertCoupon(checkVo);
+               }
+           });
+        }
+        log.info("---------------优惠券商品兑换结束--------------------------->");
+    }
+
+    private void insertCoupon(CouponCheckVo check) {
+        Integer couponId = 7174 == check.getProductId() ? 44 : 49;
+        CouponRecordPo couponRecordPo = new CouponRecordPo();
+        couponRecordPo.setOrderId(check.getOrderId());
+        couponRecordPo.setUserId(check.getUserId());
+        couponRecordPo.setCouponId(couponId);
+        //保存已兑换orderid
+        orderClubMapper.insertCouponRecord(couponRecordPo);
+        CouponClubPo couponClubPo = new CouponClubPo();
+        couponClubPo.setSource(5);
+        couponClubPo.setUserId(check.getUserId());
+        couponClubPo.setCouponId(couponId);
+        couponClubPo.setStatus("1");
+        couponClubPo.setDelFlag("0");
+        couponClubPo.setCreateDate(new Date());
+        orderClubMapper.insertCouponClub(couponClubPo);
+    }
 //    /**
 //     * 手动临时分账异步通知回调
 //     *

+ 8 - 0
src/main/java/com/caimei365/order/task/DelayedSplittingTask.java

@@ -30,4 +30,12 @@ public class DelayedSplittingTask {
     public void delayedSplitting() {
         payOrderService.delayedSplitting(delayedSplittingUrl);
     }
+
+    /**
+     * 优惠券下单查询,下了对应商品,送优惠券  2分钟一次
+     */
+    @Scheduled(cron = "0 2 * * * ?")
+    public void couponCheck() {
+        payOrderService.couponCheck();
+    }
 }

+ 4 - 0
src/main/resources/mapper/OrderClubMapper.xml

@@ -119,6 +119,10 @@
         INSERT INTO cm_coupon_club(userId, couponId, orderId, returnedId, source, status, createDate, useDate, delFlag)
         VALUES (#{userId},#{couponId},#{orderId},#{returnedId},#{source},#{status},#{createDate},#{useDate},#{delFlag})
     </insert>
+    <insert id="insertCouponRecord">
+        INSERT INTO cm_coupon_buyrecord(couponId,payStatus,userId,orderId,delflag)
+        values (#{couponId},1,#{userId},#{orderId},0)
+    </insert>
     <select id="countMainOrderByOrderId" resultType="java.lang.Integer">
         SELECT COUNT(*) FROM cm_order WHERE orderID = #{orderId}
     </select>

+ 10 - 0
src/main/resources/mapper/PayOrderMapper.xml

@@ -313,4 +313,14 @@
     <select id="findClubType" resultType="java.lang.Integer">
         SELECT firstClubType FROM club WHERE userId = #{userId}
     </select>
+    <select id="findCouponOrder" resultType="com.caimei365.order.model.vo.CouponCheckVo">
+        SELECT cop.num,co.userId,cop.orderId,cop.productId
+        FROM cm_order_product cop
+        LEFT JOIN cm_order co ON cop.orderId = co.orderId
+        LEFT JOIN cm_coupon_buyrecord ccb ON ccb.orderId = co.orderId
+        WHERE  cop.productId IN (7174,7175)
+          AND co.receiptStatus = 3
+          AND co.delflag = 0
+          AND cop.orderId NOT IN (SELECT orderId FROM cm_coupon_buyrecord WHERE orderId IS NOT NULL)
+    </select>
 </mapper>