This commit is contained in:
2026-04-28 10:34:29 +08:00
parent 77b16a12f1
commit db76c41753
13 changed files with 428 additions and 55 deletions

View File

@@ -62,6 +62,8 @@ public class ApiRollController extends BaseController {
@NotNull(message = "roll房id不能为空。")
private Integer rollId;
private String rollPassword;
// 新增CDK码有CDK的房间必填
private String cdkCode;
}
@ApiOperation("加入ROLL房")
@@ -173,4 +175,5 @@ public class ApiRollController extends BaseController {
return "1";
}
}

View File

@@ -10,6 +10,7 @@ import com.ruoyi.admin.config.RedisConstants;
import com.ruoyi.admin.mapper.*;
import com.ruoyi.admin.service.TtBoxRecordsService;
import com.ruoyi.admin.service.TtOrnamentsLevelService;
import com.ruoyi.admin.service.TtRollCdkService;
import com.ruoyi.admin.service.TtRollUserService;
import com.ruoyi.admin.util.RandomUtils;
import com.ruoyi.common.core.domain.R;
@@ -121,9 +122,12 @@ public class ApiRollServiceImpl extends ServiceImpl<TtRollMapper, TtRoll> implem
@Autowired
private TtBoxRecordsMapper ttBoxRecordsMapper;
@Autowired
private TtRollCdkService ttRollCdkService;
public R<TtRoll> joinRollCheck(TtRoll ttRoll, TtRollUser rollUser, TtUser player, JoinRollParam param) {
if (StringUtils.isNull(ttRoll)) return R.fail("当前Roll房已结束");
/*if (StringUtils.isNull(ttRoll)) return R.fail("当前Roll房已结束");
if (StringUtils.isNotNull(rollUser)) return R.fail("您当前已在该房间内,请勿重复加入房间!");
String password = ttRoll.getRollPassword();
@@ -139,6 +143,41 @@ public class ApiRollServiceImpl extends ServiceImpl<TtRollMapper, TtRoll> implem
if (minRecharge.compareTo(rechargeTotalAmount) > 0) return R.fail("未满足该房间的充值条件!");
}
return R.ok();*/
if (StringUtils.isNull(ttRoll)) return R.fail("当前Roll房已结束");
if (StringUtils.isNotNull(rollUser)) return R.fail("您当前已在该房间内,请勿重复加入房间!");
// ---- CDK 模式校验有CDK则走CDK否则走普通密码----
boolean hasCdk = ttRollCdkService.count(
new com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper<TtRollCdk>()
.eq(TtRollCdk::getRollId, ttRoll.getId())
) > 0;
if (hasCdk) {
// CDK 模式:必须提供 cdkCode
if (StringUtils.isEmpty(param.getCdkCode())) {
return R.fail("该房间需要CDK才能参与请输入CDK");
}
String cdkError = ttRollCdkService.useCdk(ttRoll.getId(), param.getCdkCode(), player.getUserId());
if (cdkError != null) {
return R.fail(cdkError);
}
} else {
// 普通密码模式(兼容原有逻辑)
String password = ttRoll.getRollPassword();
if (StringUtils.isNotEmpty(password)) {
if (StringUtils.isEmpty(param.getRollPassword())) return R.fail("请输入密码!");
if (!password.equals(param.getRollPassword())) return R.fail("密码错误!");
}
}
// 检查加入条件:充值下限(原有逻辑保留)
BigDecimal minRecharge = ttRoll.getMinRecharge();
if (minRecharge != null && minRecharge.compareTo(BigDecimal.ZERO) > 0) {
BigDecimal rechargeTotalAmount = getRechargeTotalAmount(player.getUserId(), ttRoll.getRechargeStartTime());
if (minRecharge.compareTo(rechargeTotalAmount) > 0) return R.fail("未满足该房间的充值条件!");
}
return R.ok();
}
@@ -524,6 +563,12 @@ public class ApiRollServiceImpl extends ServiceImpl<TtRollMapper, TtRoll> implem
RollDetailsDataVO data = apiRollMapper.getRollDetails(rollId);
data.setHasPW(!StringUtils.isBlank(ttRoll.getRollPassword()));
// 判断是否有CDK
long cdkCount = ttRollCdkService.count(
new LambdaQueryWrapper<TtRollCdk>().eq(TtRollCdk::getRollId, rollId)
);
data.setHasCdk(cdkCount > 0);
// 成员
// List<TtRollUser> list = new LambdaQueryChainWrapper<>(ttRollUserMapper)
// .eq(TtRollUser::getRollId, rollId)