提交
This commit is contained in:
@@ -305,6 +305,7 @@ public class ApiRollServiceImpl extends ServiceImpl<TtRollMapper, TtRoll> implem
|
||||
List<TtRollUser> list = new LambdaQueryChainWrapper<>(rollUserService.getBaseMapper())
|
||||
.eq(TtRollUser::getRollId, rollId)
|
||||
.list();
|
||||
log.info("【Roll开奖诊断】rollId={} 总参与人数={} 参与人员={}", rollId, list.size(), list);
|
||||
if (ObjectUtil.isEmpty(list) || list.isEmpty()) {
|
||||
ttRoll.setRollStatus(RollStatus.END.getCode());
|
||||
rollMapper.updateById(ttRoll);
|
||||
@@ -317,9 +318,10 @@ public class ApiRollServiceImpl extends ServiceImpl<TtRollMapper, TtRoll> implem
|
||||
.eq(TtRollUser::getGetPrizeWay, RollGetPrizeWay.SYS.getCode())
|
||||
.list();
|
||||
|
||||
log.info("所有参与人员" + rollUsers);
|
||||
log.info("【Roll开奖诊断】rollId={} 系统指定用户数={} 人员={}", rollId, rollUsers.size(), rollUsers);
|
||||
|
||||
Map<Long, TtRollJackpotOrnaments> surplusPrize = rollSurplusOrnaments(rollUsers, ttRoll);
|
||||
log.info("【Roll开奖诊断】rollId={} 剩余奖品种类数={} 奖品详情={}", rollId, surplusPrize.size(), surplusPrize);
|
||||
|
||||
// 3 过滤出未分配奖品的用户(兼容 status 为 NULL 的历史数据)
|
||||
LambdaQueryWrapper<TtRollUser> rollUserQuery = new LambdaQueryWrapper<>();
|
||||
@@ -333,26 +335,20 @@ public class ApiRollServiceImpl extends ServiceImpl<TtRollMapper, TtRoll> implem
|
||||
rollUserQuery.notIn(TtRollUser::getId, rollUserIds);
|
||||
}
|
||||
List<TtRollUser> rollUserList = rollUserService.list(rollUserQuery);
|
||||
log.info("【Roll开奖诊断】rollId={} 过滤后待开奖用户数={} 人员={}", rollId, rollUserList.size(), rollUserList);
|
||||
|
||||
// 4 打乱用户顺序
|
||||
Collections.shuffle(rollUserList);
|
||||
log.info("过滤系统指定以后" + rollUserList);
|
||||
|
||||
// 5 分配奖品、
|
||||
// 5 分配奖品
|
||||
List<TtBoxRecords> res = new ArrayList<>();
|
||||
|
||||
|
||||
// 一人拿一件
|
||||
boolean iGetIt = false;
|
||||
for (TtRollUser rollUser : rollUserList) {
|
||||
|
||||
// if (iGetIt) continue;
|
||||
|
||||
Set<Map.Entry<Long, TtRollJackpotOrnaments>> entries = surplusPrize.entrySet();
|
||||
|
||||
boolean awarded = false;
|
||||
for (Map.Entry<Long, TtRollJackpotOrnaments> entry : entries) {
|
||||
|
||||
Integer numb = entry.getValue().getOrnamentsNum();
|
||||
log.info("【Roll开奖诊断】rollId={} 用户={} 检查奖品 ornamentId={} 剩余数量={}", rollId, rollUser.getNickName(), entry.getKey(), numb);
|
||||
if (numb <= 0) continue;
|
||||
|
||||
// 等级信息
|
||||
@@ -374,8 +370,9 @@ public class ApiRollServiceImpl extends ServiceImpl<TtRollMapper, TtRoll> implem
|
||||
.status(IN_PACKSACK_ON.getCode())
|
||||
.build();
|
||||
res.add(boxRecords);
|
||||
awarded = true;
|
||||
|
||||
log.info("{}获得{}", rollUser.getNickName(), entry.getValue().getOrnamentName());
|
||||
log.info("【Roll开奖诊断】rollId={} 用户={} 获得奖品={}", rollId, rollUser.getNickName(), entry.getValue().getOrnamentName());
|
||||
|
||||
// 扣减数量
|
||||
TtRollJackpotOrnaments value = entry.getValue();
|
||||
@@ -383,14 +380,16 @@ public class ApiRollServiceImpl extends ServiceImpl<TtRollMapper, TtRoll> implem
|
||||
surplusPrize.put(entry.getKey(), value);
|
||||
|
||||
break;
|
||||
|
||||
}
|
||||
|
||||
if (!awarded) {
|
||||
log.warn("【Roll开奖诊断】rollId={} 用户={} 未匹配到可用奖品", rollId, rollUser.getNickName());
|
||||
}
|
||||
}
|
||||
|
||||
log.info("保存开奖结果:" + res);
|
||||
log.info("【Roll开奖诊断】rollId={} 最终分配结果数={} 结果={}", rollId, res.size(), res);
|
||||
|
||||
boxRecordsService.saveBatch(res);
|
||||
boolean saved = boxRecordsService.saveBatch(res);
|
||||
log.info("【Roll开奖诊断】rollId={} saveBatch 结果={}", rollId, saved);
|
||||
|
||||
// ===== 新增:Roll房开奖通知(过滤机器人用户 userType=03)=====
|
||||
TtRoll finalTtRoll = ttRoll;
|
||||
|
||||
Reference in New Issue
Block a user