zoujiajian 2 年 前
コミット
a082bdc850

+ 10 - 12
netflix-service/src/main/java/com/cyksj/service/order/impl/OrderDonServiceImpl.java

@@ -19,7 +19,6 @@ import com.alipay.api.request.AlipayTradeQueryRequest;
 import com.alipay.api.response.AlipayFundTransCommonQueryResponse;
 import com.alipay.api.response.AlipayTradeFastpayRefundQueryResponse;
 import com.alipay.api.response.AlipayTradeQueryResponse;
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.cyksj.common.EnvCommonService;
@@ -109,6 +108,7 @@ import java.math.RoundingMode;
 import java.util.*;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.stream.Collectors;
 
 /**
  * @author chan
@@ -2929,16 +2929,13 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 				//下级渠道用户id
 				Long subUserId = userDistributeSub.getSubUserId();
 
-				UserDistributeSubWaiting userDistributeSubWaiting = userDistributeSubWaitingMapper.selectOne(Wrappers.lambdaQuery(UserDistributeSubWaiting.class)
+				List<Integer> existLevels = userDistributeSubWaitingMapper.selectList(Wrappers.lambdaQuery(UserDistributeSubWaiting.class)
 						.eq(UserDistributeSubWaiting::getUserId, userId)
-						.orderByDesc(UserDistributeSubWaiting::getLevel).last("limit 1"));
-				//小于最大奖励级别
-				if (userDistributeSubWaiting == null || userDistributeSubWaiting.getLevel() < UserDistributeSubRewards.RewardLevel.values().length) {
-					LambdaQueryWrapper<UserDistributeSubRewards> wrapper = Wrappers.lambdaQuery(UserDistributeSubRewards.class);
-					if (userDistributeSubWaiting != null) {
-						wrapper.gt(UserDistributeSubRewards::getLevel, userDistributeSubWaiting.getLevel());
-					}
-					List<UserDistributeSubRewards> userDistributeSubRewards = userDistributeSubRewardsMapper.selectList(wrapper.orderByAsc(UserDistributeSubRewards::getLevel));
+						.eq(UserDistributeSubWaiting::getSubUserId, subUserId)
+						.in(UserDistributeSubWaiting::getSendStatus, List.of(UserDistributeSubWaiting.Status.waiting, UserDistributeSubWaiting.Status.success))
+						.select(UserDistributeSubWaiting::getLevel).last("limit 1")).stream().map(UserDistributeSubWaiting::getLevel).collect(Collectors.toList());
+				List<UserDistributeSubRewards> userDistributeSubRewards = userDistributeSubRewardsMapper.selectList(Wrappers.lambdaQuery(UserDistributeSubRewards.class)
+						.notIn(CollUtil.isNotEmpty(existLevels), UserDistributeSubRewards::getLevel, existLevels));
 					for (UserDistributeSubRewards userDistributeSubReward : userDistributeSubRewards) {
 						log.info("当前级别:{}对应的目标金额是{}", userDistributeSubReward.getLevel(), userDistributeSubReward.getTargetAmount().divide(BigDecimal.valueOf(100)));
 						Integer rewardLevel = userDistributeSubReward.getLevel();
@@ -2950,7 +2947,9 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 							try {
 								UserDistributeSubWaiting waiting = Optional.ofNullable(userDistributeSubWaitingMapper.selectOne(Wrappers.lambdaQuery(UserDistributeSubWaiting.class)
 										.eq(UserDistributeSubWaiting::getUserId, userId)
-										.eq(UserDistributeSubWaiting::getSubUserId, subUserId).last("limit 1"))).orElse(new UserDistributeSubWaiting());
+										.eq(UserDistributeSubWaiting::getSubUserId, subUserId)
+										.eq(UserDistributeSubWaiting::getLevel, rewardLevel)
+										.last("limit 1"))).orElse(new UserDistributeSubWaiting());
 								if (waiting.getId() != null) {
 									if (waiting.getSendStatus() == UserDistributeSubWaiting.Status.close) {
 										userDistributeSubWaitingMapper.update(null, Wrappers.lambdaUpdate(UserDistributeSubWaiting.class)
@@ -2972,7 +2971,6 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 							}
 						}
 					}
-				}
 			}
 
 		}