新增解除设备关联代码 #126

Merged
hnu202326010106 merged 1 commits from wanglei_branch into develop 2 weeks ago

@ -1,8 +1,10 @@
// java/com/campus/water/controller/web/TerminalController.java
package com.campus.water.controller.web;
import com.campus.water.service.DeviceService;
import com.campus.water.service.TerminalService;
import com.campus.water.entity.vo.TerminalManageVO;
import com.campus.water.util.ResultVO;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.validation.Valid;
@ -23,6 +25,8 @@ import java.util.Map;
public class TerminalController {
private final TerminalService terminalService;
// 步骤1添加DeviceService的final成员变量由Spring自动注入依赖@RequiredArgsConstructor
private final DeviceService deviceService;
@PostMapping("/add")
@PreAuthorize("hasAnyRole('SUPER_ADMIN', 'AREA_ADMIN')")
@ -101,4 +105,16 @@ public class TerminalController {
return new ResponseEntity<>(errorMap, HttpStatus.BAD_REQUEST);
}
}
@DeleteMapping("/unbind/{terminalId}")
@PreAuthorize("hasAnyRole('SUPER_ADMIN', 'AREA_ADMIN')")
public ResultVO<Void> unbindTerminal(@PathVariable String terminalId) {
try {
deviceService.unbindTerminal(terminalId);
return ResultVO.success(null, "终端与设备解除绑定成功");
} catch (Exception e) {
return ResultVO.error("解除绑定失败: " + e.getMessage());
}
}
}

@ -9,6 +9,7 @@ import com.campus.water.mapper.DeviceRepository;
import com.campus.water.mapper.DeviceTerminalMappingRepository;
import com.campus.water.util.ResultVO;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@ -26,7 +27,11 @@ import java.util.stream.Collectors;
public class DeviceService {
private final DeviceRepository deviceRepository;
@Autowired
private final DeviceTerminalMappingRepository terminalMappingRepository;
// 1. 注入 Repository 实例(非静态成员,由 Spring 容器自动赋值)
/**
* ID
@ -221,4 +226,22 @@ public class DeviceService {
}
return deviceRepository.findById(supplier.getParentMakerId()).orElse(null);
}
}
// 2. 改为非静态方法(消除静态上下文),这是 Spring 业务方法的标准写法
@Transactional
public void unbindTerminal(String terminalId) {
// 3. 通过注入的实例调用非静态方法 findByTerminalId无编译错误且能正常执行数据库操作
Optional<DeviceTerminalMapping> mapping = terminalMappingRepository.findByTerminalId(terminalId);
// 后续业务逻辑:存在则删除映射(可直接调用你接口中新增的 deleteByTerminalId 方法,更高效)
if (mapping.isPresent()) {
// 调用你定义的 deleteByTerminalId批量清理该终端的所有映射
terminalMappingRepository.deleteByTerminalId(terminalId);
} else {
throw new RuntimeException("终端未绑定设备,无需解除关联");
}
}
}

Loading…
Cancel
Save