Переглянути джерело

添加返利日志和购物返利

wujiefeng 8 місяців тому
батько
коміт
6f7922478e

+ 10 - 0
RewardServer/src/main/java/com/zhongshu/reward/server/core/dao/Impl/WalletReceiptsDaoImpl.java

@@ -129,4 +129,14 @@ public class WalletReceiptsDaoImpl implements WalletReceiptsDaoExtend {
         Query query = Query.query(criteria);
         return mongoTemplate.find(query, WalletReceipts.class);
     }
+
+    @Override
+    public List<WalletReceipts> findByWaitSettle(ReceiptsStatus status, ReceiptsType receiptsType, Long currentTime) {
+        Criteria criteria = new Criteria();
+        criteria.and("status").in(status);
+        criteria.and("receiptsType").is(receiptsType);
+        criteria.and("estimatedTime").lte(currentTime);
+        Query query = Query.query(criteria);
+        return mongoTemplate.find(query, WalletReceipts.class);
+    }
 }

+ 4 - 0
RewardServer/src/main/java/com/zhongshu/reward/server/core/dao/extend/WalletReceiptsDaoExtend.java

@@ -1,6 +1,8 @@
 package com.zhongshu.reward.server.core.dao.extend;
 
 import com.zhongshu.reward.client.model.InviteSuccessModel;
+import com.zhongshu.reward.client.type.ReceiptsStatus;
+import com.zhongshu.reward.client.type.ReceiptsType;
 import com.zhongshu.reward.server.core.dao.WalletReceiptsDao;
 import com.zhongshu.reward.server.core.domain.WalletReceipts;
 
@@ -23,4 +25,6 @@ public interface WalletReceiptsDaoExtend {
     WalletReceipts findNoCancelByCreateTime(String userId, Long startTime, Long endTime);
 
     List<WalletReceipts> findByEstimatedTime(Long currentTime);
+
+    List<WalletReceipts> findByWaitSettle(ReceiptsStatus status, ReceiptsType receiptsType, Long currentTime);
 }

+ 15 - 8
RewardServer/src/main/java/com/zhongshu/reward/server/core/service/GoodsReceiptsService.java

@@ -13,6 +13,7 @@ import com.zhongshu.reward.server.core.dao.WalletReceiptsDao;
 import com.zhongshu.reward.server.core.domain.Wallet;
 import com.zhongshu.reward.server.core.domain.WalletReceipts;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.ObjectUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.jetbrains.annotations.NotNull;
 import org.jetbrains.annotations.Nullable;
@@ -23,7 +24,6 @@ import org.springframework.transaction.annotation.Transactional;
 import java.math.BigDecimal;
 import java.util.Date;
 import java.util.List;
-import java.util.stream.Collectors;
 
 /**
  * @author wjf
@@ -48,6 +48,7 @@ public class GoodsReceiptsService {
     @Autowired
     OrderService2 orderService2;
 
+
     /**
      * 购物返利 todo// 1、获取产品库 返利规则 2、获取订单详情、获取商品详情
      */
@@ -126,6 +127,10 @@ public class GoodsReceiptsService {
     @Transactional
     public void cancel(String orderNo, String payGoodsId, Long operateTime){
         WalletReceipts walletReceipts = walletReceiptsDao.findByOutTradeNoAndPaymentGoodsIdAndStatus(orderNo, payGoodsId, ReceiptsStatus.WAIT);
+        if (ObjectUtils.isEmpty(walletReceipts)){
+            log.info("无购物返利订单:{}", payGoodsId);
+            return;
+        }
         if (operateTime > walletReceipts.getEstimatedTime()){
             return;
         }
@@ -140,12 +145,14 @@ public class GoodsReceiptsService {
     @Transactional
     public void settle(){
         //todo 查询到期入账的订单
-        WalletReceipts walletReceipts = walletReceiptsDao.findTop1ById("");
-
-        walletReceipts.setReceiptsTime(new Date().getTime());
-        walletReceipts.setStatus(ReceiptsStatus.RECEIPTS);
-        walletReceiptsDao.save(walletReceipts);
-        walletDao.updateIncWaitAmount(walletReceipts.getWallet().getId(), walletReceipts.getTotal().negate());
-        walletDao.updateIncAmount(walletReceipts.getWallet().getId(), walletReceipts.getTotal());
+        List<WalletReceipts> waitSettle = walletReceiptsDao.findByWaitSettle(ReceiptsStatus.WAIT, ReceiptsType.REBATE, new Date().getTime());
+        waitSettle.forEach(walletReceipts->{
+            walletReceipts.setReceiptsTime(new Date().getTime());
+            walletReceipts.setStatus(ReceiptsStatus.RECEIPTS);
+            walletReceiptsDao.save(walletReceipts);
+            walletDao.updateIncWaitAmount(walletReceipts.getWallet().getId(), walletReceipts.getTotal().negate());
+            walletDao.updateIncAmount(walletReceipts.getWallet().getId(), walletReceipts.getTotal());
+            log.info("结算商品返利:{}", walletReceipts.getId());
+        });
     }
 }

+ 4 - 1
RewardServer/src/main/java/com/zhongshu/reward/server/core/service/InviteReceiptsService.java

@@ -236,7 +236,10 @@ public class InviteReceiptsService {
         Long startTime = DateUtils.lastMonthStartTime();
         Long endTime = DateUtils.lastMonthEndTime();
         List<WalletReceipts> list = walletReceiptsDao.listMonth(startTime, endTime, day);
-
+        log.info("结算日期:{}", day);
+        log.info("结算开始时间:{}", startTime);
+        log.info("结算结束时间:{}", endTime);
+        log.info("结算返利订单数量:{}", list);
 
         if (list==null || list.isEmpty()){
             return;

+ 8 - 8
RewardServer/src/main/java/com/zhongshu/reward/server/core/stream/OrderStream.java

@@ -23,14 +23,14 @@ public class OrderStream extends StreamConsumer<OrderStremModel> {
 
     @Override
     public void accept(OrderStremModel orderStremModel) {
-        switch (orderStremModel.getOrderType()) {
-            case USED:
-                goodsReceiptsService.receipts(orderStremModel.getUserId(), orderStremModel.getOrderNo(), orderStremModel.getGoodsId(), orderStremModel.getOperationTime());
-                break;
-            case REFUNDED:
-                goodsReceiptsService.cancel(orderStremModel.getOrderNo(), orderStremModel.getGoodsId(), orderStremModel.getOperationTime());
-                break;
-        }
+//        switch (orderStremModel.getOrderType()) {
+//            case USED:
+//                goodsReceiptsService.receipts(orderStremModel.getUserId(), orderStremModel.getOrderNo(), orderStremModel.getGoodsId(), orderStremModel.getOperationTime());
+//                break;
+//            case REFUNDED:
+//                goodsReceiptsService.cancel(orderStremModel.getOrderNo(), orderStremModel.getGoodsId(), orderStremModel.getOperationTime());
+//                break;
+//        }
     }
 
 }

+ 1 - 1
RewardServer/src/main/java/com/zhongshu/reward/server/core/stream/VipUserStream.java

@@ -40,7 +40,7 @@ public class VipUserStream extends StreamConsumer<VipUserParam> {
 
         VipUserRecord vipUserRecord = new VipUserRecord();
         BeanUtils.copyProperties(vipUserParam, vipUserRecord, "createTime");
-        vipUserRecord.setOperateTime(DateUtils.timeToLong(vipUserParam.getCreateTime(), DateUtils.FORMAT_LONG));
+        vipUserRecord.setOperateTime(DateUtils.timeToLong(vipUserParam.getCreateTime(), DateUtils.patternyyyyMis));
         vipUserRecord.setFirst(false);
         vipUserRecordDao.save(vipUserRecord);
         inviteReceiptsService.receipts(vipUserRecord);

+ 18 - 1
RewardServer/src/main/java/com/zhongshu/reward/server/core/timer/WalletTimer.java

@@ -6,6 +6,7 @@ import com.zhongshu.reward.client.type.TransferStatus;
 import com.zhongshu.reward.server.core.dao.WalletDao;
 import com.zhongshu.reward.server.core.dao.WxTransferBatchDao;
 import com.zhongshu.reward.server.core.domain.WxTransferBatch;
+import com.zhongshu.reward.server.core.service.GoodsReceiptsService;
 import com.zhongshu.reward.server.core.service.InviteReceiptsService;
 import com.zhongshu.reward.server.core.service.WalletReceiptsService;
 import com.zhongshu.reward.server.core.service.WxTransferService;
@@ -45,6 +46,9 @@ public class WalletTimer {
     @Autowired
     ResourceTokenService resourceTokenService;
 
+    @Autowired
+    GoodsReceiptsService goodsReceiptsService;
+
 
 //    @Scheduled(fixedRate = 5000)
 //    public void updateTransferStatus(){
@@ -66,7 +70,7 @@ public class WalletTimer {
         @Cleanup ResourceTokenService.Token token =  resourceTokenService.token("settleInviteReceipts");
         try {
             LocalDate now = LocalDate.now();
-
+            log.info("-----------定时任务:开始结算邀请返利--------------");
             if (DateUtils.checkLastDayOfMonth() &&  now.getMonthValue() == 2){
                 for (int i = now.getDayOfMonth(); i <= 31; i++) {
                     inviteReceiptsService.settle(i);
@@ -78,6 +82,19 @@ public class WalletTimer {
         }
     }
 
+//    /**
+//     * 定时结算商品返利
+//     */
+//    @Scheduled(fixedRate = 5*60*1000)
+//    public void goodsSettle(){
+//        @Cleanup ResourceTokenService.Token token =  resourceTokenService.token("settleGoodsReceipts");
+//        try {
+//            goodsReceiptsService.settle();
+//        }catch (Exception e){
+//            e.printStackTrace();
+//        }
+//    }
+
     /**
      * 定时生成持续返利订单
      */