逻辑:
部门删除实现了硬删除,进行删除操作之后该部门即在数据库中从部门表中删除。部门删除后给该部门内所有用户发送消息,用户表中该部门用户的department_id字段置为null。
Controller层:
@DeleteMapping("/delete")
public Result<String> deleteDepartment(Integer departmentId) {
if (departmentService.getDepartmentById(departmentId) != null) {
departmentService.deleteDepartment(departmentId);
return Result.success("删除成功");
} else {
return Result.error(ErrorEnum.DepartmentNotExistError);
}
}
Service层:
@Transactional
@Override
public void deleteDepartment(Integer departmentId) {
Department department ;
department = departmentRepository.findDepartmentById(departmentId);
//发送注销通知
Notice deleteNotice = new Notice();
deleteNotice.setTheme("您所在的部门 " + department.getName() + " 已注销,您已被移出部门 ");
deleteNotice.setType(3);
deleteNotice.setIsDealt(false);
deleteNotice.setFromId(department.getCompanyId());
deleteNotice.setFromType(true);
List<User> ul = userRepository.findByDepartmentId(departmentId);
if (!ul.isEmpty()) {
for (User user : ul) {
user.setDepartmentId(null);
Notice deleteNo;
try {
deleteNo = deleteNotice.clone();
deleteNo.setToId(user.getId());
deleteNo.setToType(false);
noticeRepository.save(deleteNo);
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
}
}
noticeRepository.flush();
departmentRepository.deleteDepartmentById(departmentId);
}