<p>代码优化:</p>
<ol>
<li>
<p>建议将权限验证和验证码验证的代码抽取成方法,便于复用和维护。</p>
</li>
<li>
<p>在修改车辆模型信息之前,先判断传入的车辆模型ID是否为空或者非法,避免后续出现空指针异常。</p>
</li>
<li>
<p>可以将前端传入的需要修改的信息封装成一个对象,便于处理和维护。</p>
</li>
<li>
<p>为了便于代码阅读和维护,可以将日志输出语句提取成常量。</p>
</li>
</ol>
<p>优化后的代码:</p>
<p>//权限验证方法
private boolean isAdmin(HttpServletRequest request){
String token = (String)request.getAttribute(&quot;claims_admin&quot;);
if(token == null || &quot;&quot;.equals(token)){
throw new RuntimeException(&quot;权限不足!&quot;);
}
return true;
}</p>
<p>//验证码验证方法
private boolean checkCode(String phone,String code,String uuid){
if (StringUtils.isEmpty(phone)) {
log.info(LOG_PHONE_NULL);
return false;
}</p>
<pre><code>if (StringUtils.isEmpty(code)) {
    log.info(LOG_CODE_NULL);
    return false;
}

String myCode = redisTemplate.opsForValue().get(&quot;carModelAdminUpdate_&quot;+uuid+phone);
log.info(&quot;myCode:&quot;+myCode);

if (StringUtils.isEmpty(myCode)){
    log.info(LOG_MY_CODE_NULL);
    return false;
}

if (!myCode.equals(code)) {
    log.info(LOG_CODE_ERROR);
    return false;
}

log.info(LOG_CODE_CORRECT);
return true;
</code></pre>
<p>}</p>
<p>//1.根据ID修改一个管理员的车辆模型信息
@PostMapping(&quot;/updateOneCarModelAdminByID&quot;)
public Result<Object> updateOneCarModelAdminByID(@RequestBody CarModelAdminUpdateInfo carModelAdminUpdateInfo, HttpServletRequest request) {</p>
<pre><code>//权限验证
if(!isAdmin(request)){
    return new Result&lt;&gt;(ResultCode.FAIL);
}

//验证码验证
if(!checkCode(carModelAdminUpdateInfo.getPhone(),carModelAdminUpdateInfo.getCode(),carModelAdminUpdateInfo.getUuid())){
    return new Result&lt;&gt;(ResultCode.FAIL);
}

//判断车辆模型ID是否为空或者非法
if(carModelAdminUpdateInfo.getCarModelAdminId()==null || carModelAdminUpdateInfo.getCarModelAdminId()&lt;=0){
    log.info(LOG_ID_ERROR);
    return new Result&lt;&gt;(ResultCode.FAIL);
}

//先查询出需要修改的车辆模型对象
CarModelAdmin carModelAdmin0 = carModelAdminService.queryOneCarModelAdminByID(carModelAdminUpdateInfo.getCarModelAdminId());

if (carModelAdmin0 == null){
    log.info(LOG_CAR_MODEL_NULL);
    return new Result&lt;&gt;(ResultCode.FAIL);
}

//将前端传过来需要修改的信息赋值给上面查出的车辆模型对象
if (!StringUtils.isEmpty(carModelAdminUpdateInfo.getCarModelName())){
    carModelAdmin0.setCarModelName(carModelAdminUpdateInfo.getCarModelName());
}

if (!StringUtils.isEmpty(carModelAdminUpdateInfo.getCarProfile())){
    carModelAdmin0.setCarProfile(carModelAdminUpdateInfo.getCarProfile());
}

if (!StringUtils.isEmpty(carModelAdminUpdateInfo.getModel())){
    carModelAdmin0.setModel(carModelAdminUpdateInfo.getModel());
}

if (!StringUtils.isEmpty(carModelAdminUpdateInfo.getYear())){
    carModelAdmin0.setYear(carModelAdminUpdateInfo.getYear());
}

if (carModelAdminUpdateInfo.getFrontAerialBeforeDistance() != null){
    carModelAdmin0.setFrontAerialBeforeDistance(carModelAdminUpdateInfo.getFrontAerialBeforeDistance());
}

if (carModelAdminUpdateInfo.getFrontAerialLeftDistance() != null){
    carModelAdmin0.setFrontAerialLeftDistance(carModelAdminUpdateInfo.getFrontAerialLeftDistance());
}

if (carModelAdminUpdateInfo.getFrontAerialRightDistance() != null){
    carModelAdmin0.setFrontAerialRightDistance(carModelAdminUpdateInfo.getFrontAerialRightDistance());
}

if (carModelAdminUpdateInfo.getBehindAerialAfterDistance() != null){
    carModelAdmin0.setBehindAerialAfterDistance(carModelAdminUpdateInfo.getBehindAerialAfterDistance());
}

if (carModelAdminUpdateInfo.getBehindAerialLeftDistance() != null){
    carModelAdmin0.setBehindAerialLeftDistance(carModelAdminUpdateInfo.getBehindAerialLeftDistance());
}

if (carModelAdminUpdateInfo.getBehindAerialRightDistance() != null){
    carModelAdmin0.setBehindAerialRightDistance(carModelAdminUpdateInfo.getBehindAerialRightDistance());
}

if (carModelAdminUpdateInfo.getBehindAerialHeight() != null){
    carModelAdmin0.setBehindAerialHeight(carModelAdminUpdateInfo.getBehindAerialHeight() );
}

//调用修改车辆模型方法
int ret = carModelAdminService.updateOneCarModelAdminByID(carModelAdmin0);

//操作成功
if (ret &gt; 0) {
    log.info(LOG_UPDATE_SUCCESS + carModelAdmin0);

    //通知游戏端修改车辆模型
    springToGameService.reloadUpdateOneCarModelAdmin(carModelAdmin0);

    return new Result&lt;&gt;(ResultCode.SUCCESS);
}else {
    log.info(LOG_UPDATE_FAIL);
    return new Result&lt;&gt;(ResultCode.FAIL);
}
</code></pre>
<p>}</p>
<p>前端uniapp如何传递参数:</p>
<ol>
<li>
<p>在uniapp中,可以使用axios发送POST请求,并且通过data参数将需要传递的数据封装成一个对象。</p>
</li>
<li>
<p>具体代码如下:</p>
</li>
</ol>
<p>axios.post('/updateOneCarModelAdminByID', {
carModelAdminId: 123,
carModelName: '奔驰',
carProfile: '奔驰车',
model: 'E300',
year: '2021',
frontAerialBeforeDistance: 100,
frontAerialLeftDistance: 50,
frontAerialRightDistance: 50,
behindAerialAfterDistance: 80,
behindAerialLeftDistance: 40,
behindAerialRightDistance: 40,
behindAerialHeight: 20,
phone: '123456789',
code: '123456',
uuid: '123'
})
.then(function (response) {
console.log(response);
})
.catch(function (error) {
console.log(error);
});</p>
<p>其中,carModelAdminId为需要修改的车辆模型ID,其他参数为需要修改的车辆模型信息,phone为管理员手机号,code为管理员收到的验证码,uuid为验证码对应的UUID</p>
1根据ID修改一个管理员的车辆模型信息 PostMappingupdateOneCarModelAdminByID public ResultObject updateOneCarModelAdminByIDRequestBody CarModelAdmin carModelAdminRequestBody String phoneRequestBody String code Htt

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

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