This commit is contained in:
2026-05-05 11:41:33 +08:00
parent 262bba0fe9
commit c8076a7c41

View File

@@ -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;