@PostMapping("/updateSpecificRegulars") public Result<?> updateSpecificRegulars(@RequestBody UpdateSpecificRegularRequest request, HttpServletRequest httpServletRequest) { // 权限验证 String token = getAdminToken(httpServletRequest);

log.info("updateSpecificRegulars的请求报文:" + request);

List<SpecificRegular> specificRegulars = request.getSpecificRegular().toJavaList(SpecificRegular.class);
log.info("specificRegulars: " + specificRegulars);
List<SpecificRegular> specificRegularList = new ArrayList<>();

String phone = getPhone(request);
String userCode = getUserCode(request);

String specificRegularUpdate_uuid = redisTemplate.opsForValue().get("specificRegularUpdate_uuid" + phone);
String myCode = redisTemplate.opsForValue().get("sRegularUpdate_" + specificRegularUpdate_uuid + phone);
if (!StringUtils.hasText(myCode)) {
    log.error("myCode为空!");
    return new Result<>(ResultCode.FAIL);
}
if (!userCode.equals(myCode)) {
    log.error("验证码错误!");
    return new Result<>(ResultCode.CODE_FALSE);
}

log.info("验证码正确!");
if (!specificRegulars.isEmpty()) {
    // 遍历前端发来的要修改信息的对象集合
    specificRegularList = specificRegulars.stream()
            .map(specificRegular -> {
                SpecificRegular specificRegularMy = specificRegularService.queryOneSpecificRegularByID(specificRegular.getSpecificRegularId());
                if (specificRegularMy == null) {
                    log.error("通过具体规则id找到具体规则为空");
                    throw new RuntimeException("通过具体规则id找到具体规则为空");
                }
                if (StringUtils.hasText(specificRegular.getVoiceBroadcastText()) && specificRegular.getDemeritState() != 0) {
                    log.info("语音播报文字不为空,扣分情况不为0");
                    if (!specificRegular.getVoiceBroadcastText().equals(specificRegularMy.getVoiceBroadcastText()) || !specificRegular.getDemeritState().equals(specificRegularMy.getDemeritState())) {
                        log.info("前端传来的参数与数据库里的参数不相等!");
                        specificRegularMy.setJudgeState(specificRegular.getJudgeState());
                        specificRegularMy.setSpecificJudgeParam(specificRegular.getSpecificJudgeParam());
                        specificRegularMy.setVoiceBroadcastText(specificRegular.getVoiceBroadcastText());
                        specificRegularMy.setDemeritState(specificRegular.getDemeritState());
                    } else {
                        log.info("语音包不需要重新生成(语音文字和扣分情况没变)");
                    }
                } else if (StringUtils.hasText(specificRegular.getVoiceBroadcastText()) && specificRegular.getDemeritState() == 0) {
                    log.info("语音播报文字不为空,扣分情况为0");
                    if (!specificRegular.getVoiceBroadcastText().equals(specificRegularMy.getVoiceBroadcastText())) {
                        log.info("前端传来的参数与数据库里的参数不相等!");
                        specificRegularMy.setJudgeState(specificRegular.getJudgeState());
                        specificRegularMy.setSpecificJudgeParam(specificRegular.getSpecificJudgeParam());
                        specificRegularMy.setVoiceBroadcastText(specificRegular.getVoiceBroadcastText());
                        specificRegularMy.setDemeritState(specificRegular.getDemeritState());
                    } else {
                        log.info("语音文字和扣分情况没变,语音包不需要生成!");
                    }
                } else if (!StringUtils.hasText(specificRegular.getVoiceBroadcastText()) && specificRegular.getDemeritState() == 0) {
                    log.info("语音播报文字为空,扣分情况为0,语音包不需要生成!");
                }
                specificRegularMy.setJudgeState(specificRegular.getJudgeState());
                specificRegularMy.setSpecificJudgeParam(specificRegular.getSpecificJudgeParam());
                return specificRegularMy;
            })
            .collect(Collectors.toList());

    // for循环结束开始操作数据库
    boolean batchUpdate = specificRegularService.updateBatchById(specificRegularList);
    if (batchUpdate) {
        log.info("具体规则批量修改成功!");
        springToGameService.reloadUpdateSpecificRegular(specificRegularList);//通知游戏端修改的具体规则
        return new Result<>(ResultCode.SUCCESS);
    } else {
        log.error("具体规则批量修改失败!");
        return new Result<>(ResultCode.FAIL);
    }
} else {
    log.error("前端传回集合为空");
    return new Result<>(ResultCode.FAIL);
}

}

private String getAdminToken(HttpServletRequest request) { String token = (String) request.getAttribute("claims_admin"); if (token == null || "".equals(token)) { throw new RuntimeException("权限不足!"); } return token; }

private String getPhone(UpdateSpecificRegularRequest request) { String phone = request.getPhone(); if (!StringUtils.hasText(phone)) { log.error("phone为空!"); throw new RuntimeException("phone为空!"); } return phone; }

private String getUserCode(UpdateSpecificRegularRequest request) { String userCode = request.getCode(); if (!StringUtils.hasText(userCode)) { log.error("userCode为空!"); throw new RuntimeException("userCode为空!"); } return userCode;

更新特定规则接口

原文地址: https://www.cveoy.top/t/topic/qrSL 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录