|
@@ -2,28 +2,33 @@ package com.kxs.system.biz.service.impl;
|
|
|
|
|
|
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
|
import cn.hutool.core.collection.CollUtil;
|
|
import cn.hutool.core.collection.CollUtil;
|
|
|
|
|
+import cn.hutool.core.date.DatePattern;
|
|
|
import cn.hutool.core.date.LocalDateTimeUtil;
|
|
import cn.hutool.core.date.LocalDateTimeUtil;
|
|
|
|
|
+import cn.hutool.core.text.StrPool;
|
|
|
import cn.hutool.core.util.NumberUtil;
|
|
import cn.hutool.core.util.NumberUtil;
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
import com.alibaba.fastjson.JSON;
|
|
import com.alibaba.fastjson.JSON;
|
|
|
|
|
+import com.alibaba.fastjson.JSONObject;
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import com.kxs.common.core.constant.SecurityConstants;
|
|
import com.kxs.common.core.constant.SecurityConstants;
|
|
|
import com.kxs.common.core.constant.enums.ErrorTypeEnum;
|
|
import com.kxs.common.core.constant.enums.ErrorTypeEnum;
|
|
|
|
|
+import com.kxs.common.core.constant.enums.LeaderTypeEnum;
|
|
|
import com.kxs.common.core.exception.GlobalCustomerException;
|
|
import com.kxs.common.core.exception.GlobalCustomerException;
|
|
|
import com.kxs.common.core.util.R;
|
|
import com.kxs.common.core.util.R;
|
|
|
import com.kxs.common.core.util.RetOps;
|
|
import com.kxs.common.core.util.RetOps;
|
|
|
|
|
+import com.kxs.common.core.util.SysUtils;
|
|
|
import com.kxs.common.security.util.SecurityUtils;
|
|
import com.kxs.common.security.util.SecurityUtils;
|
|
|
import com.kxs.product.api.feign.RemoteKxsProductService;
|
|
import com.kxs.product.api.feign.RemoteKxsProductService;
|
|
|
-import com.kxs.system.api.dto.kxsapp.camp.CampReturnTeamDTO;
|
|
|
|
|
|
|
+import com.kxs.stat.api.feign.RemoteKxsStatService;
|
|
|
|
|
+import com.kxs.system.api.dto.kxsapp.camp.PrizePoolDTO;
|
|
|
import com.kxs.system.api.feign.RemoteOldService;
|
|
import com.kxs.system.api.feign.RemoteOldService;
|
|
|
import com.kxs.system.api.model.KxsCampUser;
|
|
import com.kxs.system.api.model.KxsCampUser;
|
|
|
import com.kxs.system.api.vo.admin.CampUserExcelVO;
|
|
import com.kxs.system.api.vo.admin.CampUserExcelVO;
|
|
|
import com.kxs.system.api.vo.kxsapp.camp.CampGetByIdVO;
|
|
import com.kxs.system.api.vo.kxsapp.camp.CampGetByIdVO;
|
|
|
import com.kxs.system.api.vo.kxsapp.camp.CampPageVO;
|
|
import com.kxs.system.api.vo.kxsapp.camp.CampPageVO;
|
|
|
-import com.kxs.system.api.amqp.rabbit.RabbitOrderQueueMQ;
|
|
|
|
|
import com.kxs.system.biz.constant.enums.CampStatusEnum;
|
|
import com.kxs.system.biz.constant.enums.CampStatusEnum;
|
|
|
import com.kxs.system.biz.constant.enums.SysErrorTypeEnum;
|
|
import com.kxs.system.biz.constant.enums.SysErrorTypeEnum;
|
|
|
import com.kxs.system.biz.mapper.KxsCampMapper;
|
|
import com.kxs.system.biz.mapper.KxsCampMapper;
|
|
@@ -31,11 +36,12 @@ import com.kxs.system.api.model.KxsCamp;
|
|
|
import com.kxs.system.biz.service.KxsCampService;
|
|
import com.kxs.system.biz.service.KxsCampService;
|
|
|
import com.kxs.system.biz.service.KxsCampUserService;
|
|
import com.kxs.system.biz.service.KxsCampUserService;
|
|
|
import com.kxs.user.api.feign.RemoteKxsUserService;
|
|
import com.kxs.user.api.feign.RemoteKxsUserService;
|
|
|
|
|
+import com.kxs.user.api.model.KxsLeader;
|
|
|
import com.kxs.user.api.model.KxsUser;
|
|
import com.kxs.user.api.model.KxsUser;
|
|
|
import com.pig4cloud.plugin.excel.vo.ErrorMessage;
|
|
import com.pig4cloud.plugin.excel.vo.ErrorMessage;
|
|
|
import lombok.RequiredArgsConstructor;
|
|
import lombok.RequiredArgsConstructor;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
-import org.springframework.scheduling.annotation.EnableAsync;
|
|
|
|
|
|
|
+import org.springframework.scheduling.annotation.Async;
|
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.validation.BindingResult;
|
|
import org.springframework.validation.BindingResult;
|
|
|
|
|
|
|
@@ -51,13 +57,13 @@ import java.util.*;
|
|
|
*/
|
|
*/
|
|
|
@Service("kxsCampService")
|
|
@Service("kxsCampService")
|
|
|
@RequiredArgsConstructor
|
|
@RequiredArgsConstructor
|
|
|
-@EnableAsync
|
|
|
|
|
@Slf4j
|
|
@Slf4j
|
|
|
public class KxsCampServiceImpl extends ServiceImpl<KxsCampMapper, KxsCamp> implements KxsCampService {
|
|
public class KxsCampServiceImpl extends ServiceImpl<KxsCampMapper, KxsCamp> implements KxsCampService {
|
|
|
|
|
|
|
|
private final RemoteKxsUserService remoteKxsUserService;
|
|
private final RemoteKxsUserService remoteKxsUserService;
|
|
|
|
|
|
|
|
private final RemoteKxsProductService remoteKxsProductService;
|
|
private final RemoteKxsProductService remoteKxsProductService;
|
|
|
|
|
+ private final RemoteKxsStatService remoteKxsStatService;
|
|
|
|
|
|
|
|
private final RemoteOldService remoteOldService;
|
|
private final RemoteOldService remoteOldService;
|
|
|
|
|
|
|
@@ -175,9 +181,7 @@ public class KxsCampServiceImpl extends ServiceImpl<KxsCampMapper, KxsCamp> impl
|
|
|
LocalDateTime now = LocalDateTime.now();
|
|
LocalDateTime now = LocalDateTime.now();
|
|
|
Long userId = SecurityUtils.getUser().getId();
|
|
Long userId = SecurityUtils.getUser().getId();
|
|
|
IPage<CampPageVO> pageData = baseMapper.getByPage(page, userId);
|
|
IPage<CampPageVO> pageData = baseMapper.getByPage(page, userId);
|
|
|
- pageData.getRecords().forEach(item -> {
|
|
|
|
|
- statusChange(item, now);
|
|
|
|
|
- });
|
|
|
|
|
|
|
+ pageData.getRecords().forEach(item -> statusChange(item, now));
|
|
|
return pageData;
|
|
return pageData;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -194,39 +198,45 @@ public class KxsCampServiceImpl extends ServiceImpl<KxsCampMapper, KxsCamp> impl
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
|
- public void prizePoolIsRefreshed(RabbitOrderQueueMQ.MsgEntity parse) {
|
|
|
|
|
|
|
+ @Async
|
|
|
|
|
+ public void prizePoolIsRefreshed(PrizePoolDTO param) {
|
|
|
|
|
+
|
|
|
//查询正在进行中的活动
|
|
//查询正在进行中的活动
|
|
|
LocalDateTime now = LocalDateTime.now();
|
|
LocalDateTime now = LocalDateTime.now();
|
|
|
//兑换券下单
|
|
//兑换券下单
|
|
|
- if(parse.getGoodsId() == 11 || parse.getGoodsId() == 12) {
|
|
|
|
|
|
|
+ if(param.getProductId() == 10 || param.getProductId() == 11) {
|
|
|
|
|
|
|
|
|
|
+ log.info("开始处理兑换券下单订单号:{}统计到训练营奖金池", param.getOrderNo());
|
|
|
|
|
+
|
|
|
|
|
+ //下单组数
|
|
|
|
|
+ BigDecimal number = NumberUtil.div(param.getTotalPrice(), 600);
|
|
|
//订单奖金
|
|
//订单奖金
|
|
|
- BigDecimal amount = NumberUtil.mul(NumberUtil.div(parse.getTotalPrice(), 600), 90);
|
|
|
|
|
|
|
+ BigDecimal amount = NumberUtil.mul(number, 60);
|
|
|
//查询此用户是否参加进行中的训练营
|
|
//查询此用户是否参加进行中的训练营
|
|
|
- KxsCamp kxsCamp = baseMapper.selectUserCamp(parse.getUserId(), now);
|
|
|
|
|
|
|
+ KxsCamp kxsCamp = baseMapper.selectUserCamp(param.getUserId(), now);
|
|
|
if (kxsCamp != null) {
|
|
if (kxsCamp != null) {
|
|
|
//给训练营加金额
|
|
//给训练营加金额
|
|
|
kxsCamp.setBonusPool(NumberUtil.add(kxsCamp.getBonusPool(), amount));
|
|
kxsCamp.setBonusPool(NumberUtil.add(kxsCamp.getBonusPool(), amount));
|
|
|
- kxsCamp.setOrderNum(kxsCamp.getOrderNum() + 1);
|
|
|
|
|
|
|
+ kxsCamp.setOrderNum(kxsCamp.getOrderNum() + number.intValue());
|
|
|
baseMapper.updateById(kxsCamp);
|
|
baseMapper.updateById(kxsCamp);
|
|
|
|
|
|
|
|
//给创客团队加金额
|
|
//给创客团队加金额
|
|
|
KxsCampUser kxsCampUser = kxsCampUserService.getOne(Wrappers.<KxsCampUser>lambdaQuery()
|
|
KxsCampUser kxsCampUser = kxsCampUserService.getOne(Wrappers.<KxsCampUser>lambdaQuery()
|
|
|
.eq(KxsCampUser::getCampId, kxsCamp.getId())
|
|
.eq(KxsCampUser::getCampId, kxsCamp.getId())
|
|
|
- .eq(KxsCampUser::getUserId, parse.getUserId()));
|
|
|
|
|
|
|
+ .eq(KxsCampUser::getUserId, param.getUserId()));
|
|
|
kxsCampUser.setTeamOrderPool(NumberUtil.add(kxsCampUser.getTeamOrderPool(), amount));
|
|
kxsCampUser.setTeamOrderPool(NumberUtil.add(kxsCampUser.getTeamOrderPool(), amount));
|
|
|
- kxsCampUser.setTeamOrderNum(kxsCampUser.getTeamOrderNum() + 1);
|
|
|
|
|
|
|
+ kxsCampUser.setTeamOrderNum(kxsCampUser.getTeamOrderNum() + number.intValue());
|
|
|
kxsCampUserService.updateById(kxsCampUser);
|
|
kxsCampUserService.updateById(kxsCampUser);
|
|
|
- log.info("用户{}参加训练营{},订单ID{}, 奖金池{},订单数{}", parse.getUserId(), kxsCamp.getId(), parse.getOrderId(), kxsCamp.getBonusPool(), kxsCamp.getOrderNum());
|
|
|
|
|
|
|
+ log.info("用户{}参加训练营{},订单ID{}, 奖金池{},订单数{}", param.getUserId(), kxsCamp.getId(), param.getId(), kxsCamp.getBonusPool(), kxsCamp.getOrderNum());
|
|
|
return;
|
|
return;
|
|
|
}
|
|
}
|
|
|
//查找此用户上级倒序后参加了训练营,把奖金加入到自己和训练营里
|
|
//查找此用户上级倒序后参加了训练营,把奖金加入到自己和训练营里
|
|
|
- R<KxsUser> kxsUserR = remoteKxsUserService.loadUserById(parse.getUserId(), SecurityConstants.FROM_IN);
|
|
|
|
|
|
|
+ R<KxsUser> kxsUserR = remoteKxsUserService.loadUserById(param.getUserId(), SecurityConstants.FROM_IN);
|
|
|
KxsUser user = RetOps.of(kxsUserR)
|
|
KxsUser user = RetOps.of(kxsUserR)
|
|
|
.getData()
|
|
.getData()
|
|
|
.orElseThrow(() -> new GlobalCustomerException(ErrorTypeEnum.USER_NOT_FOUND.getDescription()));
|
|
.orElseThrow(() -> new GlobalCustomerException(ErrorTypeEnum.USER_NOT_FOUND.getDescription()));
|
|
|
//下单用户的上级路径
|
|
//下单用户的上级路径
|
|
|
- String[] pidPaths = user.getPidPath().split(StrUtil.COMMA);
|
|
|
|
|
|
|
+ String[] pidPaths = user.getPidPath().split(StrPool.COMMA);
|
|
|
//翻转上级从最近的开始查询
|
|
//翻转上级从最近的开始查询
|
|
|
Arrays.sort(pidPaths, Collections.reverseOrder());
|
|
Arrays.sort(pidPaths, Collections.reverseOrder());
|
|
|
KxsCampUser campUser = baseMapper.selectUsersCamp(pidPaths, now);
|
|
KxsCampUser campUser = baseMapper.selectUsersCamp(pidPaths, now);
|
|
@@ -234,17 +244,58 @@ public class KxsCampServiceImpl extends ServiceImpl<KxsCampMapper, KxsCamp> impl
|
|
|
//给训练营加金额
|
|
//给训练营加金额
|
|
|
KxsCamp camp = baseMapper.selectById(campUser.getCampId());
|
|
KxsCamp camp = baseMapper.selectById(campUser.getCampId());
|
|
|
camp.setBonusPool(NumberUtil.add(camp.getBonusPool(), amount));
|
|
camp.setBonusPool(NumberUtil.add(camp.getBonusPool(), amount));
|
|
|
- camp.setOrderNum(camp.getOrderNum() + 1);
|
|
|
|
|
|
|
+ camp.setOrderNum(camp.getOrderNum() + number.intValue());
|
|
|
baseMapper.updateById(camp);
|
|
baseMapper.updateById(camp);
|
|
|
|
|
|
|
|
//给创客团队加金额
|
|
//给创客团队加金额
|
|
|
campUser.setTeamOrderPool(NumberUtil.add(campUser.getTeamOrderPool(), amount));
|
|
campUser.setTeamOrderPool(NumberUtil.add(campUser.getTeamOrderPool(), amount));
|
|
|
- campUser.setTeamOrderNum(campUser.getTeamOrderNum() + 1);
|
|
|
|
|
|
|
+ campUser.setTeamOrderNum(campUser.getTeamOrderNum() + number.intValue());
|
|
|
kxsCampUserService.updateById(campUser);
|
|
kxsCampUserService.updateById(campUser);
|
|
|
- log.info("用户{}的上级{}参加训练营{},订单ID{}, 奖金池{},订单数{}", parse.getUserId(), campUser.getUserId(), camp.getId(), parse.getOrderId(), camp.getBonusPool(), camp.getOrderNum());
|
|
|
|
|
|
|
+ log.info("用户{}的上级{}参加训练营{},订单ID{},奖金池{},订单数{}", param.getUserId(), campUser.getUserId(), camp.getId(), param.getId(), camp.getBonusPool(), camp.getOrderNum());
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+// if(param.getProductId() == 12 || param.getProductId() == 13){
|
|
|
|
|
+// log.info("开始处理大小盟主下单订单号:{}统计到训练营奖金池", param.getOrderNo());
|
|
|
|
|
+//
|
|
|
|
|
+// //查询此用户是否参加进行中的训练营
|
|
|
|
|
+// KxsCamp kxsCamp = baseMapper.selectUserCamp(param.getUserId(), now);
|
|
|
|
|
+// if (kxsCamp != null) {
|
|
|
|
|
+// //给训练营加下单数
|
|
|
|
|
+// kxsCamp.setOrderNum(kxsCamp.getOrderNum() + 1);
|
|
|
|
|
+// baseMapper.updateById(kxsCamp);
|
|
|
|
|
+//
|
|
|
|
|
+// //给创客团队加下单数
|
|
|
|
|
+// KxsCampUser kxsCampUser = kxsCampUserService.getOne(Wrappers.<KxsCampUser>lambdaQuery()
|
|
|
|
|
+// .eq(KxsCampUser::getCampId, kxsCamp.getId())
|
|
|
|
|
+// .eq(KxsCampUser::getUserId, param.getUserId()));
|
|
|
|
|
+// kxsCampUser.setTeamOrderNum(kxsCampUser.getTeamOrderNum() + 1);
|
|
|
|
|
+// kxsCampUserService.updateById(kxsCampUser);
|
|
|
|
|
+// log.info("用户{}参加训练营{},订单ID{}, 订单数{}", param.getUserId(), kxsCamp.getId(), param.getId(), kxsCamp.getOrderNum());
|
|
|
|
|
+// return;
|
|
|
|
|
+// }
|
|
|
|
|
+// //查找此用户上级倒序后参加了训练营,把奖金加入到自己和训练营里
|
|
|
|
|
+// R<KxsUser> kxsUserR = remoteKxsUserService.loadUserById(param.getUserId(), SecurityConstants.FROM_IN);
|
|
|
|
|
+// KxsUser user = RetOps.of(kxsUserR)
|
|
|
|
|
+// .getData()
|
|
|
|
|
+// .orElseThrow(() -> new GlobalCustomerException(ErrorTypeEnum.USER_NOT_FOUND.getDescription()));
|
|
|
|
|
+// //下单用户的上级路径
|
|
|
|
|
+// String[] pidPaths = user.getPidPath().split(StrPool.COMMA);
|
|
|
|
|
+// //翻转上级从最近的开始查询
|
|
|
|
|
+// Arrays.sort(pidPaths, Collections.reverseOrder());
|
|
|
|
|
+// KxsCampUser campUser = baseMapper.selectUsersCamp(pidPaths, now);
|
|
|
|
|
+// if (campUser != null) {
|
|
|
|
|
+// //给训练营加下单数
|
|
|
|
|
+// KxsCamp camp = baseMapper.selectById(campUser.getCampId());
|
|
|
|
|
+// camp.setOrderNum(camp.getOrderNum() + 1);
|
|
|
|
|
+// baseMapper.updateById(camp);
|
|
|
|
|
+//
|
|
|
|
|
+// //给创客团队加下单数
|
|
|
|
|
+// campUser.setTeamOrderNum(campUser.getTeamOrderNum() + 1);
|
|
|
|
|
+// kxsCampUserService.updateById(campUser);
|
|
|
|
|
+// log.info("用户{}的上级{}参加训练营{},订单ID{}, 奖金池{},订单数{}", param.getUserId(), campUser.getUserId(), camp.getId(), param.getId(), camp.getBonusPool(), camp.getOrderNum());
|
|
|
|
|
+// }
|
|
|
|
|
+// }
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
@@ -260,182 +311,104 @@ public class KxsCampServiceImpl extends ServiceImpl<KxsCampMapper, KxsCamp> impl
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
-// @Override
|
|
|
|
|
-// public void prizePoolIsRefreshed(RabbitOrderQueueMQ.MsgEntity parse) {
|
|
|
|
|
-// //查询正在进行中的活动
|
|
|
|
|
-// LocalDateTime now = LocalDateTime.now();
|
|
|
|
|
-// //定时任务执行中时,查询当前正在进行的活动,由于定时任务执行时间偏差,当前时间减1一分钟判断
|
|
|
|
|
-// List<KxsCamp> list = baseMapper.selectList(Wrappers.<KxsCamp>lambdaQuery().le(KxsCamp::getStartTime, now).ge(KxsCamp::getEndTime, now.minusMinutes(1)));
|
|
|
|
|
-// //查询活动参与的创客
|
|
|
|
|
-// for (KxsCamp kxsCamp : list) {
|
|
|
|
|
-// //初始化奖金池
|
|
|
|
|
-// BigDecimal totalBonusPool = BigDecimal.ZERO;
|
|
|
|
|
-// //开机数
|
|
|
|
|
-// int openNum = 0;
|
|
|
|
|
-// //下单数
|
|
|
|
|
-// int orderNum = 0;
|
|
|
|
|
-//
|
|
|
|
|
-// List<KxsCampUser> campUsers = kxsCampUserService.list(Wrappers.<KxsCampUser>lambdaQuery().eq(KxsCampUser::getCampId, kxsCamp.getId()));
|
|
|
|
|
-// //清除参与创客的所有统计数据然后封装在map里方便统计
|
|
|
|
|
-// Map<Integer, KxsCampUser> campUsersMap = new HashMap<>();
|
|
|
|
|
-// for (KxsCampUser campUser : campUsers) {
|
|
|
|
|
-// KxsCampUser kxsCampUser = new KxsCampUser();
|
|
|
|
|
-// BeanUtil.copyProperties(campUser, kxsCampUser);
|
|
|
|
|
-// kxsCampUser.setTeamOrderPool(BigDecimal.ZERO);
|
|
|
|
|
-// kxsCampUser.setTeamLeaderPool(BigDecimal.ZERO);
|
|
|
|
|
-// kxsCampUser.setTeamOrderNum(0);
|
|
|
|
|
-// kxsCampUser.setTeamLeaderNum(0);
|
|
|
|
|
-// kxsCampUser.setTeamOpenNum(0);
|
|
|
|
|
-// campUsersMap.put(campUser.getUserId(), kxsCampUser);
|
|
|
|
|
-// }
|
|
|
|
|
-//
|
|
|
|
|
-// //转换为userID集合
|
|
|
|
|
-// List<Integer> userIds = campUsers.stream().map(KxsCampUser::getUserId).toList();
|
|
|
|
|
-//
|
|
|
|
|
-//
|
|
|
|
|
-// /*
|
|
|
|
|
-// * 查询当前活动的时间区间所有电签大机的订单
|
|
|
|
|
-// */
|
|
|
|
|
-// R<List<ShopOrderGoodsUserVO>> ordersR = remoteKxsProductService.getDateBetweenOrders(LocalDateTimeUtil.format(kxsCamp.getStartTime(), DatePattern.NORM_DATETIME_PATTERN)
|
|
|
|
|
-// , LocalDateTimeUtil.format(kxsCamp.getEndTime(), DatePattern.NORM_DATETIME_PATTERN), SecurityConstants.FROM_IN);
|
|
|
|
|
-// List<ShopOrderGoodsUserVO> orders = RetOps.of(ordersR)
|
|
|
|
|
-// .getData()
|
|
|
|
|
-// .orElse(Collections.emptyList());
|
|
|
|
|
-// //循环区间订单查询用户的上级是否包含参与创客的ID
|
|
|
|
|
-// for (ShopOrderGoodsUserVO order : orders) {
|
|
|
|
|
-// //如果是参与者自己下的单
|
|
|
|
|
-// if (userIds.contains(order.getUserId())) {
|
|
|
|
|
-// int currentNum = NumberUtil.div(order.getTotalPrice(), 600).intValue();
|
|
|
|
|
-// //刷新参与创客的团队累计
|
|
|
|
|
-// KxsCampUser kxsCampUser = campUsersMap.get(order.getUserId());
|
|
|
|
|
-// BigDecimal amount = NumberUtil.mul(NumberUtil.div(order.getTotalPrice(), 600), 90);
|
|
|
|
|
-// totalBonusPool = NumberUtil.add(totalBonusPool, amount);
|
|
|
|
|
-// //兑换券下单
|
|
|
|
|
-// kxsCampUser.setTeamOrderPool(NumberUtil.add(kxsCampUser.getTeamOrderPool(), amount));
|
|
|
|
|
-// kxsCampUser.setTeamOrderNum(kxsCampUser.getTeamOrderNum() + currentNum);
|
|
|
|
|
-//// if(order.getId() == 27 || order.getId() == 28){
|
|
|
|
|
-//// //大小盟主下单, 奖金池+60,订单数+1
|
|
|
|
|
-//// kxsCampUser.setTeamLeaderPool(NumberUtil.add(kxsCampUser.getTeamLeaderPool(), 60));
|
|
|
|
|
-//// kxsCampUser.setTeamLeaderNum(kxsCampUser.getTeamLeaderNum() + 1);
|
|
|
|
|
-//// currentNum = 1;
|
|
|
|
|
-//// }
|
|
|
|
|
-// orderNum += currentNum;
|
|
|
|
|
-// continue;
|
|
|
|
|
-// }
|
|
|
|
|
-//
|
|
|
|
|
-// R<KxsUser> kxsUserR = remoteKxsUserService.loadUserById(order.getUserId(), SecurityConstants.FROM_IN);
|
|
|
|
|
-// KxsUser user = RetOps.of(kxsUserR)
|
|
|
|
|
-// .getData()
|
|
|
|
|
-// .orElseThrow(() -> new GlobalCustomerException(ErrorTypeEnum.USER_NOT_FOUND.getDescription()));
|
|
|
|
|
-// //下单用户的上级路径
|
|
|
|
|
-// String[] pidPaths = user.getPidPath().split(",");
|
|
|
|
|
-// //通过用户的pidPath倒序查找最近所属的上级
|
|
|
|
|
-// Integer userId = SysUtils.checkUserIsChildren(pidPaths, userIds);
|
|
|
|
|
-// if(userId != null){
|
|
|
|
|
-// int currentNum = NumberUtil.div(order.getTotalPrice(), 600).intValue();
|
|
|
|
|
-// //刷新参与创客的团队累计
|
|
|
|
|
-// KxsCampUser kxsCampUser = campUsersMap.get(userId);
|
|
|
|
|
-// BigDecimal amount = NumberUtil.mul(NumberUtil.div(order.getTotalPrice(), 600), 90);
|
|
|
|
|
-// totalBonusPool = NumberUtil.add(totalBonusPool, amount);
|
|
|
|
|
-//
|
|
|
|
|
-// kxsCampUser.setTeamOrderPool(NumberUtil.add(kxsCampUser.getTeamOrderPool(), amount));
|
|
|
|
|
-// kxsCampUser.setTeamOrderNum(kxsCampUser.getTeamOrderNum() + currentNum);
|
|
|
|
|
-//// if(order.getId() == 27 || order.getId() == 28){
|
|
|
|
|
-//// //大小盟主下单, 奖金池+60,订单数+1
|
|
|
|
|
-//// kxsCampUser.setTeamLeaderPool(NumberUtil.add(kxsCampUser.getTeamLeaderPool(), 60));
|
|
|
|
|
-//// kxsCampUser.setTeamLeaderNum(kxsCampUser.getTeamLeaderNum() + 1);
|
|
|
|
|
-//// currentNum = 1;
|
|
|
|
|
-//// }
|
|
|
|
|
-// orderNum += currentNum;
|
|
|
|
|
-// }
|
|
|
|
|
-// }
|
|
|
|
|
-//
|
|
|
|
|
-// /*
|
|
|
|
|
-// * 查询活动区间开通的大盟主添加到奖金池
|
|
|
|
|
-// */
|
|
|
|
|
-// R<List<KxsLeader>> leadersR = remoteKxsUserService.getDateBetweenLeaders(LocalDateTimeUtil.format(kxsCamp.getStartTime(), DatePattern.NORM_DATETIME_PATTERN)
|
|
|
|
|
-// , LocalDateTimeUtil.format(kxsCamp.getEndTime(), DatePattern.NORM_DATETIME_PATTERN), SecurityConstants.FROM_IN);
|
|
|
|
|
-// List<KxsLeader> leaders = RetOps.of(leadersR)
|
|
|
|
|
-// .getData()
|
|
|
|
|
-// .orElse(Collections.emptyList());
|
|
|
|
|
-// for (KxsLeader leader : leaders) {
|
|
|
|
|
-// //如果是参与者自己下的单
|
|
|
|
|
-// if (userIds.contains(leader.getUserId())) {
|
|
|
|
|
-// BigDecimal amount;
|
|
|
|
|
-// if(leader.getLeaderType().equals(LeaderTypeEnum.SMALL_LEADER.getType())){
|
|
|
|
|
-// amount = new BigDecimal("2000");
|
|
|
|
|
-// }else{
|
|
|
|
|
-// amount = new BigDecimal("8000");
|
|
|
|
|
-// }
|
|
|
|
|
-// totalBonusPool = NumberUtil.add(totalBonusPool, amount);
|
|
|
|
|
-//
|
|
|
|
|
-// //刷新参与创客的团队累计
|
|
|
|
|
-// KxsCampUser kxsCampUser = campUsersMap.get(leader.getUserId());
|
|
|
|
|
-// kxsCampUser.setTeamLeaderPool(NumberUtil.add(kxsCampUser.getTeamLeaderPool(), amount));
|
|
|
|
|
-// kxsCampUser.setTeamLeaderNum(kxsCampUser.getTeamLeaderNum() + 1);
|
|
|
|
|
-// orderNum += 1;
|
|
|
|
|
-// log.info("参与者{}自己下单盟主,进入到{}奖金池", leader.getUserId(), kxsCamp.getTitle());
|
|
|
|
|
-// continue;
|
|
|
|
|
-// }
|
|
|
|
|
-// //查询此盟主的上级
|
|
|
|
|
-// R<KxsUser> kxsUserR = remoteKxsUserService.loadUserById(leader.getUserId(), SecurityConstants.FROM_IN);
|
|
|
|
|
-// KxsUser user = RetOps.of(kxsUserR)
|
|
|
|
|
-// .getData()
|
|
|
|
|
-// .orElseThrow(() -> new GlobalCustomerException(ErrorTypeEnum.USER_NOT_FOUND.getDescription()));
|
|
|
|
|
-// //下单用户的上级路径
|
|
|
|
|
-// String[] pidPaths = user.getPidPath().split(",");
|
|
|
|
|
-// //通过用户的pidPath倒序查找最近所属的上级
|
|
|
|
|
-// Integer userId = SysUtils.checkUserIsChildren(pidPaths, userIds);
|
|
|
|
|
-// if(userId != null){
|
|
|
|
|
-// BigDecimal amount;
|
|
|
|
|
-// if(leader.getLeaderType().equals(LeaderTypeEnum.SMALL_LEADER.getType())){
|
|
|
|
|
-// amount = new BigDecimal("2000");
|
|
|
|
|
-// }else{
|
|
|
|
|
-// amount = new BigDecimal("8000");
|
|
|
|
|
-// }
|
|
|
|
|
-// totalBonusPool = NumberUtil.add(totalBonusPool, amount);
|
|
|
|
|
-//
|
|
|
|
|
-// //刷新参与创客的团队累计
|
|
|
|
|
-// KxsCampUser kxsCampUser = campUsersMap.get(userId);
|
|
|
|
|
-// kxsCampUser.setTeamLeaderPool(NumberUtil.add(kxsCampUser.getTeamLeaderPool(), amount));
|
|
|
|
|
-// kxsCampUser.setTeamLeaderNum(kxsCampUser.getTeamLeaderNum() + 1);
|
|
|
|
|
-// orderNum += 1;
|
|
|
|
|
-// log.info("创客:{}的团队购买盟主:{},进入到:{}奖金池", userId, leader.getUserId(), kxsCamp.getTitle());
|
|
|
|
|
-// }
|
|
|
|
|
-// }
|
|
|
|
|
-//
|
|
|
|
|
-// /*
|
|
|
|
|
-// * 查询活动区间开机数
|
|
|
|
|
-// */
|
|
|
|
|
-// for (Integer userId : campUsersMap.keySet()) {
|
|
|
|
|
-// KxsCampUser kxsCampUser = campUsersMap.get(userId);
|
|
|
|
|
-// HashMap<String, Object> data = new HashMap<>();
|
|
|
|
|
-// data.put("UserId", userId);
|
|
|
|
|
-// data.put("StartTime", LocalDateTimeUtil.format(kxsCamp.getStartTime(), DatePattern.PURE_DATE_PATTERN));
|
|
|
|
|
-// data.put("EndTime", LocalDateTimeUtil.format(kxsCamp.getStartTime(), DatePattern.PURE_DATE_PATTERN));
|
|
|
|
|
-// R resR = remoteOldService.teamOpenTotalData(JSON.toJSONString(data));
|
|
|
|
|
-// if(resR.getStatus() == 1){
|
|
|
|
|
-// if(resR.getData() != null){
|
|
|
|
|
-// JSONObject jsonObject = JSON.parseObject(JSON.toJSONString(resR.getData()));
|
|
|
|
|
-// int total = jsonObject.getInteger("TeamPosMerchantCount")
|
|
|
|
|
-// + jsonObject.getInteger("TeamSimMerchantCount")
|
|
|
|
|
-// + jsonObject.getInteger("TeamMpMerchantCount");
|
|
|
|
|
-// openNum += total;
|
|
|
|
|
-// kxsCampUser.setTeamOpenNum(kxsCampUser.getTeamOpenNum() + total);
|
|
|
|
|
-// }
|
|
|
|
|
-// }
|
|
|
|
|
-// }
|
|
|
|
|
-//
|
|
|
|
|
-// kxsCamp.setBonusPool(totalBonusPool);
|
|
|
|
|
-// kxsCamp.setOrderNum(orderNum);
|
|
|
|
|
-// kxsCamp.setOpenNum(openNum);
|
|
|
|
|
-// baseMapper.updateById(kxsCamp);
|
|
|
|
|
-// //刷新参与创客的统计
|
|
|
|
|
-// kxsCampUserService.updateBatchById(new ArrayList<>(campUsersMap.values()));
|
|
|
|
|
-// log.info("训练营{}统计结束", kxsCamp.getCampNum());
|
|
|
|
|
-// }
|
|
|
|
|
-//
|
|
|
|
|
-// }
|
|
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public void poweronQuantityStatistics() {
|
|
|
|
|
+ //查询正在进行中的活动
|
|
|
|
|
+ LocalDateTime now = LocalDateTime.now();
|
|
|
|
|
+ //定时任务执行中时,查询当前正在进行的活动,由于定时任务执行时间偏差,当前时间减1一分钟判断
|
|
|
|
|
+ List<KxsCamp> list = baseMapper.selectList(Wrappers.<KxsCamp>lambdaQuery().le(KxsCamp::getStartTime, now).ge(KxsCamp::getEndTime, now.minusMinutes(1)));
|
|
|
|
|
+ //查询活动参与的创客
|
|
|
|
|
+ for (KxsCamp kxsCamp : list) {
|
|
|
|
|
+
|
|
|
|
|
+ List<KxsCampUser> campUsers = kxsCampUserService.list(Wrappers.<KxsCampUser>lambdaQuery().eq(KxsCampUser::getCampId, kxsCamp.getId()));
|
|
|
|
|
+ //清除参与创客的所有统计数据然后封装在map里方便统计
|
|
|
|
|
+ Map<Integer, KxsCampUser> campUsersMap = new HashMap<>();
|
|
|
|
|
+ for (KxsCampUser campUser : campUsers) {
|
|
|
|
|
+ KxsCampUser kxsCampUser = new KxsCampUser();
|
|
|
|
|
+ BeanUtil.copyProperties(campUser, kxsCampUser);
|
|
|
|
|
+ kxsCampUser.setTeamLeaderNum(0);
|
|
|
|
|
+ kxsCampUser.setTeamOpenNum(0);
|
|
|
|
|
+ campUsersMap.put(campUser.getUserId(), kxsCampUser);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ //转换为userID集合
|
|
|
|
|
+ List<Integer> userIds = campUsers.stream().map(KxsCampUser::getUserId).toList();
|
|
|
|
|
+
|
|
|
|
|
+ /*
|
|
|
|
|
+ * 查询活动区间开通的大盟主添加到奖金池
|
|
|
|
|
+ */
|
|
|
|
|
+ R<List<KxsLeader>> leadersR = remoteKxsUserService.getDateBetweenLeaders(LocalDateTimeUtil.format(kxsCamp.getStartTime(), DatePattern.NORM_DATETIME_PATTERN)
|
|
|
|
|
+ , LocalDateTimeUtil.format(kxsCamp.getEndTime(), DatePattern.NORM_DATETIME_PATTERN), SecurityConstants.FROM_IN);
|
|
|
|
|
+ List<KxsLeader> leaders = RetOps.of(leadersR)
|
|
|
|
|
+ .getData()
|
|
|
|
|
+ .orElse(Collections.emptyList());
|
|
|
|
|
+ for (KxsLeader leader : leaders) {
|
|
|
|
|
+ //如果是参与者自己下的单
|
|
|
|
|
+ if (userIds.contains(leader.getUserId())) {
|
|
|
|
|
+
|
|
|
|
|
+ //刷新参与创客的团队累计
|
|
|
|
|
+ KxsCampUser kxsCampUser = campUsersMap.get(leader.getUserId());
|
|
|
|
|
+ kxsCampUser.setTeamLeaderNum(kxsCampUser.getTeamLeaderNum() + 1);
|
|
|
|
|
+ log.info("参与者{}自己下单盟主,进入到{}奖金池", leader.getUserId(), kxsCamp.getTitle());
|
|
|
|
|
+ continue;
|
|
|
|
|
+ }
|
|
|
|
|
+ //查询此盟主的上级
|
|
|
|
|
+ R<KxsUser> kxsUserR = remoteKxsUserService.loadUserById(leader.getUserId(), SecurityConstants.FROM_IN);
|
|
|
|
|
+ KxsUser user = RetOps.of(kxsUserR)
|
|
|
|
|
+ .getData()
|
|
|
|
|
+ .orElseThrow(() -> new GlobalCustomerException(ErrorTypeEnum.USER_NOT_FOUND.getDescription()));
|
|
|
|
|
+ //下单用户的上级路径
|
|
|
|
|
+ String[] pidPaths = user.getPidPath().split(",");
|
|
|
|
|
+ //通过用户的pidPath倒序查找最近所属的上级
|
|
|
|
|
+ Integer userId = SysUtils.checkUserIsChildren(pidPaths, userIds);
|
|
|
|
|
+ if(userId != null){
|
|
|
|
|
+
|
|
|
|
|
+ //刷新参与创客的团队累计
|
|
|
|
|
+ KxsCampUser kxsCampUser = campUsersMap.get(userId);
|
|
|
|
|
+ kxsCampUser.setTeamLeaderNum(kxsCampUser.getTeamLeaderNum() + 1);
|
|
|
|
|
+ log.info("创客:{}的团队购买盟主:{},进入到:{}奖金池", userId, leader.getUserId(), kxsCamp.getTitle());
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ /*
|
|
|
|
|
+ * 查询活动区间开机数
|
|
|
|
|
+ */
|
|
|
|
|
+ for (Integer userId : campUsersMap.keySet()) {
|
|
|
|
|
+ KxsCampUser kxsCampUser = campUsersMap.get(userId);
|
|
|
|
|
+
|
|
|
|
|
+ HashMap<String, Object> data = new HashMap<>();
|
|
|
|
|
+ data.put("UserId", userId);
|
|
|
|
|
+ data.put("StartTime", LocalDateTimeUtil.format(kxsCamp.getStartTime(), DatePattern.PURE_DATE_PATTERN));
|
|
|
|
|
+ data.put("EndTime", LocalDateTimeUtil.format(kxsCamp.getStartTime(), DatePattern.PURE_DATE_PATTERN));
|
|
|
|
|
+ R resR = remoteOldService.teamOpenTotalData(JSON.toJSONString(data));
|
|
|
|
|
+ if(resR.getStatus() == 1){
|
|
|
|
|
+ if(resR.getData() != null){
|
|
|
|
|
+ JSONObject jsonObject = JSON.parseObject(JSON.toJSONString(resR.getData()));
|
|
|
|
|
+ int total = jsonObject.getInteger("TeamPosMerchantCount")
|
|
|
|
|
+ + jsonObject.getInteger("TeamSimMerchantCount")
|
|
|
|
|
+ + jsonObject.getInteger("TeamMpMerchantCount");
|
|
|
|
|
+ kxsCampUser.setTeamOpenNum(kxsCampUser.getTeamOpenNum() + total);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ //刷新参与创客的统计
|
|
|
|
|
+ int openNum = 0;
|
|
|
|
|
+ int orderNum = 0;
|
|
|
|
|
+ for (KxsCampUser value : campUsersMap.values()) {
|
|
|
|
|
+ openNum = openNum + value.getTeamOpenNum();
|
|
|
|
|
+ orderNum = orderNum + value.getTeamOrderNum() + value.getTeamLeaderNum();
|
|
|
|
|
+ kxsCampUserService.updateById(value);
|
|
|
|
|
+ }
|
|
|
|
|
+ kxsCamp.setOrderNum(orderNum);
|
|
|
|
|
+ kxsCamp.setOpenNum(openNum);
|
|
|
|
|
+ baseMapper.updateById(kxsCamp);
|
|
|
|
|
+ log.info("训练营{}统计结束", kxsCamp.getCampNum());
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
/**
|