|
|
@@ -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) {
|