优化代码 具体代码 2根据ID删除一个设备 PostMappingdeleteOneDeviceEntityByID public ResultObject deleteOneDeviceEntityByIDRequestBody MapStringObject params HttpServletRequest request 权限验证 String
<p>//2.根据ID删除一个设备
@PostMapping("/deleteOneDeviceEntityByID")
public Result<Object> deleteOneDeviceEntityByID(@RequestBody Map<String,Object> params, HttpServletRequest request) {</p>
<pre><code>//权限验证
String token = (String)request.getAttribute("claims_admin");
if(StringUtils.isEmpty(token)){
throw new RuntimeException("权限不足!");
}
log.info("deleteOneDeviceEntityByID请求报文:"+params);
//前端传递参数
Integer deviceModel = (Integer) params.get("deviceModel");//设备的RTK模式,0:流动站模式(默认)。1:基站模式
Long deviceId = (Long) params.get("deviceId");//待删除设备id
String phone = (String) params.get("phone");
String userCode = (String) params.get("code");
//参数校验
if (deviceModel == null){
log.info("deviceModel为空!");
return new Result<>(ResultCode.FAIL);
}
if (deviceId == null){
log.info("deviceId为空!");
return new Result<>(ResultCode.FAIL);
}
if (StringUtils.isEmpty(phone)) {
log.info("phone为空!");
return new Result<>(ResultCode.FAIL);
}
if (StringUtils.isEmpty(userCode)) {
log.info("userCode为空!");
return new Result<>(ResultCode.FAIL);
}
//通过缓存拿到自己生成的验证码
String myCode = redisTemplate.opsForValue().get("deviceDelete_"+deviceId+phone);
log.info("myCode:" + myCode);
if (StringUtils.isEmpty(myCode)){
log.info("myCode为空!");
return new Result<>(ResultCode.FAIL);
}
//用户验证码输入正确
if (!userCode.equals(myCode)) {
log.info("验证码错误!");
return new Result<>(ResultCode.CODE_FALSE);
}
log.info("验证码正确!");
//当前设备为基站时,删除本设备同时需要把其流动站都删除
if (deviceModel == 1) {
//通过设备id查询出当前需要删除的基站
DeviceEntity baseDevice = deviceEntityService.queryOneDeviceEntityByID(deviceId);
if (baseDevice == null){
log.info("当前设备为空!");
return new Result<>(ResultCode.FAIL);
}
//查出此基站下所有流动站
List<DeviceEntity> mobileDevices = deviceEntityService.queryMobileDevicesByBindingID(deviceId);
List<DeviceEntity> mobileDeviceListByDelete = new ArrayList<>();
//流动站存在
if (!CollectionUtils.isEmpty(mobileDevices)) {
log.info("设备为基站,存在对应流动站");
//删除所有此基站下的流动站
for (DeviceEntity mobileDevice : mobileDevices){
mobileDevice.setBindingId(-1L);//删除流动站
mobileDeviceListByDelete.add(mobileDevice);
}
boolean batch = deviceEntityService.updateBatchById(mobileDeviceListByDelete);
if (!batch) {
log.info("删除流动站失败!");
return new Result<>(ResultCode.FAIL);
}
log.info("删除流动站成功!");
//通知游戏端删除流动站
springToGameService.reloadDeleteMobileDevice(mobileDeviceListByDelete);
} else {
log.info("设备为基站,无对应流动站");
}
//调用方法删除基站
baseDevice.setBindingId(-1L);
int delete = deviceEntityService.updateOneDeviceEntityByID(baseDevice);
if (delete<=0){
log.info("删除基站失败!");
return new Result<>(ResultCode.FAIL);
}
log.info("删除基站成功!");
//通知游戏端删除一个基站
springToGameService.reloadDeleteOneBaseDevice(baseDevice);
//备份数据
JSONObject jsonObject = new JSONObject();
jsonObject.put("baseDevice",baseDevice);
jsonObject.put("mobileDevices",mobileDevices);
String deleteMessage = jsonObject.toString();
Backup backup = new Backup();
backup.setBackupTypeId(1);//备份删除的设备数据
backup.setDeleteMessage(deleteMessage);
backup.setState(false);//表示被删除
backup.setDeleteDate(new Date());
backup.setAdminId(baseDevice.getAdminId());
boolean save = backupService.save(backup);
if (!save){
log.info("备份数据更新失败!");
return new Result<>(ResultCode.FAIL);
}
log.info("备份数据更新成功!");
//恢复默认值
//1.流动站恢复默认值
List<DeviceEntity> mobileDeviceListByUpdate = new ArrayList<>();
for (DeviceEntity mobileDevice : mobileDevices){
//更新设备数据,恢复默认值
mobileDevice.setAdminId(0L);//默认为0
mobileDevice.setCoachId(0L);//默认为0
mobileDevice.setNumberplate("");//默认为“”
mobileDevice.setArea("");//默认为“”
mobileDevice.setRegularId(0L);//规则只与基站相关 流动站默认为0
mobileDevice.setCarModelAdminId(0L);//车辆模型id默认为0
mobileDeviceListByUpdate.add(mobileDevice);
}
boolean update = deviceEntityService.updateBatchById(mobileDeviceListByUpdate);
if (!update){
log.info("流动站恢复默认值失败!");
return new Result<>(ResultCode.FAIL);
}
log.info("流动站恢复默认值成功!");
//2.基站恢复默认值
baseDevice.setAdminId(0L);//默认为0
baseDevice.setCoachId(0L);//默认为0
baseDevice.setNumberplate("");//默认为0
baseDevice.setArea("");//默认为0
baseDevice.setRegularId(0L);//规则只与基站相关 流动站默认为0
baseDevice.setCarModelAdminId(0L);//车辆模型id默认为0
int updateBase = deviceEntityService.updateOneDeviceEntityByID(baseDevice);
//操作成功
if (updateBase > 0) {
log.info("基站恢复默认值成功!");
return new Result<>(ResultCode.SUCCESS);
} else {
//操作失败
log.info("基站恢复默认值失败!");
return new Result<>(ResultCode.FAIL);
}
} else if (deviceModel == 0) {
log.info("设备为流动站");
//通过设备id查询出当前需要删除的流动站
DeviceEntity mobileDevice = deviceEntityService.queryOneDeviceEntityByID(deviceId);
if (mobileDevice == null){
log.info("当前设备为空!");
return new Result<>(ResultCode.FAIL);
}
mobileDevice.setRemark(mobileDevice.getBindingId().toString());//把当前要删除的流动站的绑定id存放在设备名称字段里
mobileDevice.setBindingId(-1L);//删除流动站
int ret = deviceEntityService.updateOneDeviceEntityByID(mobileDevice)
</code></pre>
原文地址: http://www.cveoy.top/t/topic/gfnc 著作权归作者所有。请勿转载和采集!