//2.批量修改具体规则信息-只修改规则
@PostMapping('/updateSpecificRegulars')
public Result<Object> updateSpecificRegulars(@RequestBody Map<String, Object> params, HttpServletRequest request) {

    //权限验证
    String token = (String) request.getAttribute('claims_admin');
    if (token == null || ''.equals(token)) {
        throw new RuntimeException('权限不足!');
    }

    log.info('updateSpecificRegulars的请求报文:' + params);

    // 获取请求参数
    String phone = (String) params.get('phone');//手机号
    String userCode = (String) params.get('code');//验证码
    JSONArray jsonArray = JSONArray.parseArray(params.get('specificRegular').toString());

    // 验证手机号和验证码
    if (!StringUtils.hasText(phone)) {
        log.error('phone为空!');
        return new Result<>(ResultCode.FAIL);
    }
    if (!StringUtils.hasText(userCode)) {
        log.error('userCode为空!');
        return new Result<>(ResultCode.FAIL);
    }
    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('验证码正确!');

    // 处理具体规则
    List<SpecificRegular> specificRegularList = new ArrayList<>();
    for (Object obj : jsonArray) {
        SpecificRegular specificRegular = JSON.parseObject(obj.toString(), SpecificRegular.class);
        SpecificRegular specificRegularMy = specificRegularService.queryOneSpecificRegularByID(specificRegular.getSpecificRegularId());
        redisTemplateByObject.opsForValue().set('SpecificRegularId'+specificRegular.getSpecificRegularId(), specificRegularMy);//缓存

        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('语音包不需要重新生成(语音文字和扣分情况没变)');
                specificRegularMy.setJudgeState(specificRegular.getJudgeState());
                specificRegularMy.setSpecificJudgeParam(specificRegular.getSpecificJudgeParam());
            }
        } 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('语音文字和扣分情况没变,语音包不需要生成!');
                specificRegularMy.setJudgeState(specificRegular.getJudgeState());
                specificRegularMy.setSpecificJudgeParam(specificRegular.getSpecificJudgeParam());
            }
        } else if (!StringUtils.hasText(specificRegular.getVoiceBroadcastText()) && specificRegular.getDemeritState() == 0) {
            log.info('语音播报文字为空,扣分情况为0,语音包不需要生成!');
            specificRegularMy.setJudgeState(specificRegular.getJudgeState());
            specificRegularMy.setSpecificJudgeParam(specificRegular.getSpecificJudgeParam());
        }

        specificRegularList.add(specificRegularMy);
    }

    // 批量修改具体规则
    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);
    }
}
批量修改具体规则信息-只修改规则

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

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