Просмотр исходного кода

来客吧交易额统计队列

mac 2 лет назад
Родитель
Сommit
58bcb62337

+ 69 - 28
kxs-stat/kxs-stat-biz/src/main/java/com/kxs/stat/biz/mq/RabbitLkbQueueListener.java

@@ -1,5 +1,7 @@
 package com.kxs.stat.biz.mq;
 
+import cn.hutool.core.date.DatePattern;
+import cn.hutool.core.date.LocalDateTimeUtil;
 import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.kxs.common.core.constant.SecurityConstants;
@@ -7,6 +9,7 @@ import com.kxs.common.core.constant.enums.ErrorTypeEnum;
 import com.kxs.common.core.exception.GlobalCustomerException;
 import com.kxs.common.core.util.R;
 import com.kxs.common.core.util.RetOps;
+import com.kxs.common.core.util.TotalDateUtil;
 import com.kxs.stat.api.amqp.rabbit.RabbitLkbTradeQueueMQ;
 import com.kxs.stat.api.model.KxsLkbTrade;
 import com.kxs.stat.biz.constant.enums.TotalTypeEnum;
@@ -19,12 +22,9 @@ import lombok.extern.slf4j.Slf4j;
 import org.springframework.amqp.core.Message;
 import org.springframework.amqp.rabbit.annotation.RabbitHandler;
 import org.springframework.amqp.rabbit.annotation.RabbitListener;
-import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Component;
 
 import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
 
 /**
  * rabbit 队列侦听器 商品下单过期队列
@@ -41,6 +41,10 @@ public class RabbitLkbQueueListener {
 
     private final RemoteKxsUserService remoteKxsUserService;
 
+    public static void main(String[] args) {
+        System.out.println(TotalDateUtil.getMonthNumber(LocalDateTimeUtil.parseDate("2020-01-23 10:00:00", DatePattern.NORM_DATETIME_PATTERN)));
+        System.out.println(TotalDateUtil.getDateNumber(LocalDateTimeUtil.parseDate("2020-01-23 10:00:00", DatePattern.NORM_DATETIME_PATTERN)));
+    }
     /**
      * 监听 商品下单过期 队列的处理器
      *
@@ -53,52 +57,89 @@ public class RabbitLkbQueueListener {
             RabbitLkbTradeQueueMQ.MsgEntity parse = RabbitLkbTradeQueueMQ.parse(msg);
             log.info("来客吧交易消费端Payload: " + parse);
 
-            KxsLkbTrade kxsLkbTrade = new KxsLkbTrade();
-            kxsLkbTrade.setUserId(parse.getUserId());
-            kxsLkbTrade.setBrandId(parse.getBrandId());
-
-            //活动标识(1活动,0非活动)
-            if("1".equals(parse.getIsAct())){
-                kxsLkbTrade.setActTradeAmt(parse.getPayMoney());
-            }else{
-                kxsLkbTrade.setTradeAmt(parse.getPayMoney());
-            }
-            kxsLkbTrade.setTotalType(TotalTypeEnum.SELF.getType());
+            Integer tradeMonth = TotalDateUtil.getMonthNumber(LocalDateTimeUtil.parseDate(parse.getCreateDate(), DatePattern.NORM_DATETIME_PATTERN));
+            Integer tradeDate = TotalDateUtil.getDateNumber(LocalDateTimeUtil.parseDate(parse.getCreateDate(), DatePattern.NORM_DATETIME_PATTERN));
 
 
             //个人业绩
             KxsLkbTrade lkbTrade = kxsLkbTradeService.getOne(Wrappers.<KxsLkbTrade>lambdaQuery()
-					.eq(KxsLkbTrade::getUserId, kxsLkbTrade.getUserId())
-					.eq(KxsLkbTrade::getBrandId, kxsLkbTrade.getBrandId())
-					.eq(KxsLkbTrade::getTradeMonth, kxsLkbTrade.getTradeMonth())
-					.eq(KxsLkbTrade::getTradeDate, kxsLkbTrade.getTradeDate())
+					.eq(KxsLkbTrade::getUserId, parse.getUserId())
+					.eq(KxsLkbTrade::getBrandId, parse.getBrandId())
+					.eq(KxsLkbTrade::getTradeMonth, tradeMonth)
+					.eq(KxsLkbTrade::getTradeDate, tradeDate)
+					.eq(KxsLkbTrade::getTotalType, TotalTypeEnum.SELF.getType())
 			);
 			if(lkbTrade == null){
+                KxsLkbTrade kxsLkbTrade = new KxsLkbTrade();
+                kxsLkbTrade.setTradeMonth(tradeMonth);
+                kxsLkbTrade.setTradeDate(tradeDate);
+                kxsLkbTrade.setUserId(parse.getUserId());
+                kxsLkbTrade.setBrandId(parse.getBrandId());
+
+                //活动标识(1活动,0非活动)
+                if("1".equals(parse.getIsAct())){
+                    kxsLkbTrade.setActTradeAmt(parse.getPayMoney());
+                }else{
+                    kxsLkbTrade.setTradeAmt(parse.getPayMoney());
+                }
+                kxsLkbTrade.setTotalType(TotalTypeEnum.SELF.getType());
 				kxsLkbTradeService.save(kxsLkbTrade);
 			}else{
-				lkbTrade.setTradeAmt(lkbTrade.getTradeAmt().add(kxsLkbTrade.getTradeAmt()));
+                //活动标识(1活动,0非活动)
+                if("1".equals(parse.getIsAct())){
+                    lkbTrade.setActTradeAmt(lkbTrade.getTradeAmt().add(parse.getPayMoney()));
+                }else{
+                    lkbTrade.setTradeAmt(lkbTrade.getTradeAmt().add(parse.getPayMoney()));
+                }
 				kxsLkbTradeService.updateById(lkbTrade);
 			}
+
+
             //团队业绩
             R<KxsUser> kxsUserR = remoteKxsUserService.loadUserById(parse.getUserId(), SecurityConstants.FROM_IN);
             KxsUser user = RetOps.of(kxsUserR)
                     .getData()
                     .orElseThrow(() -> new GlobalCustomerException(ErrorTypeEnum.USER_NOT_FOUND.getDescription()));
-
             String pidPath = user.getPidPath();
             String[] split = pidPath.split(",");
-            List<KxsLkbTrade> batch = new ArrayList<>();
             for (String userId : split) {
                 int pid = Integer.parseInt(userId);
-                if(pid > 0){
-                    KxsLkbTrade kxsLkbTradeBatch = new KxsLkbTrade();
-                    BeanUtils.copyProperties(kxsLkbTrade, kxsLkbTradeBatch);
-                    kxsLkbTradeBatch.setUserId(pid);
-                    kxsLkbTradeBatch.setTotalType(TotalTypeEnum.TEAM.getType());
-                    batch.add(kxsLkbTradeBatch);
+                if(pid <= 0){
+                    continue;
                 }
+                KxsLkbTrade lkbTradeTeam = kxsLkbTradeService.getOne(Wrappers.<KxsLkbTrade>lambdaQuery()
+                        .eq(KxsLkbTrade::getUserId, pid)
+                        .eq(KxsLkbTrade::getBrandId, parse.getBrandId())
+                        .eq(KxsLkbTrade::getTradeMonth, tradeMonth)
+                        .eq(KxsLkbTrade::getTradeDate, tradeDate)
+                        .eq(KxsLkbTrade::getTotalType, TotalTypeEnum.TEAM.getType())
+                );
+                if(lkbTrade == null){
+                    KxsLkbTrade kxsLkbTrade = new KxsLkbTrade();
+                    kxsLkbTrade.setTradeMonth(tradeMonth);
+                    kxsLkbTrade.setTradeDate(tradeDate);
+                    kxsLkbTrade.setUserId(parse.getUserId());
+                    kxsLkbTrade.setBrandId(parse.getBrandId());
+
+                    //活动标识(1活动,0非活动)
+                    if("1".equals(parse.getIsAct())){
+                        kxsLkbTrade.setActTradeAmt(parse.getPayMoney());
+                    }else{
+                        kxsLkbTrade.setTradeAmt(parse.getPayMoney());
+                    }
+                    kxsLkbTrade.setTotalType(TotalTypeEnum.TEAM.getType());
+                    kxsLkbTradeService.save(kxsLkbTrade);
+                }else{
+                    //活动标识(1活动,0非活动)
+                    if("1".equals(parse.getIsAct())){
+                        lkbTradeTeam.setActTradeAmt(lkbTradeTeam.getTradeAmt().add(parse.getPayMoney()));
+                    }else{
+                        lkbTradeTeam.setTradeAmt(lkbTradeTeam.getTradeAmt().add(parse.getPayMoney()));
+                    }
+                    kxsLkbTradeService.updateById(lkbTradeTeam);
+                }
+
             }
-            kxsLkbTradeService.saveBatch(batch);
             log.info("来客吧交易数据消费成功:{}", JSON.toJSONString(parse));
             channel.basicAck(message.getMessageProperties().getDeliveryTag(), false);
         } catch (Exception e) {