优化添加区域管理员功能 #149

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

@ -26,7 +26,7 @@ public class Admin {
private String phone;
// 新增管理员负责的区域ID区域管理员专用
@Column(name = "area_id", length = 36)
@Column(name = "area_id", length = 36, nullable = true)
private String areaId;
// 恢复三个角色枚举

@ -40,4 +40,6 @@ public class RegisterRequest {
// 用户(学生)特有字段
private String studentId;
private String studentName;
}

@ -72,12 +72,11 @@ public class AdminService {
// 区域管理员必须关联区域
if (admin.getRole() == Admin.AdminRole.ROLE_AREA_ADMIN) {
if (admin.getAreaId() == null || admin.getAreaId().trim().isEmpty()) {
throw new RuntimeException("区域管理员必须关联具体区域");
}
// 校验关联的区域是否存在
if (!areaRepository.existsById(admin.getAreaId())) {
throw new RuntimeException("关联的区域不存在:" + admin.getAreaId());
if (!areaRepository.existsById(admin.getAreaId().trim())) {
throw new RuntimeException("关联的区域不存在:" + admin.getAreaId().trim());
}
}
} else {
// 非区域管理员清空区域ID
admin.setAreaId(null);

@ -5,10 +5,7 @@ import com.campus.water.entity.RepairerAuth;
import com.campus.water.entity.Repairman;
import com.campus.water.entity.User;
import com.campus.water.entity.dto.request.RegisterRequest;
import com.campus.water.mapper.AdminRepository;
import com.campus.water.mapper.RepairerAuthRepository;
import com.campus.water.mapper.RepairmanRepository;
import com.campus.water.mapper.UserRepository;
import com.campus.water.mapper.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.stereotype.Service;
@ -21,6 +18,9 @@ public class RegisterService {
@Autowired
private AdminRepository adminRepository;
@Autowired
private AreaRepository areaRepository;
@Autowired
private UserRepository userRepository;
@ -76,6 +76,18 @@ public class RegisterService {
admin.setCreatedTime(LocalDateTime.now());
admin.setUpdatedTime(LocalDateTime.now());
// 核心修改1添加区域ID赋值从请求中获取允许为null/空,实现选填)
admin.setAreaId(request.getAreaId());
// 核心修改2区域管理员若填写了areaId则校验区域是否存在不填则不强制实现选填
Admin.AdminRole adminRole = admin.getRole();
if (adminRole == Admin.AdminRole.ROLE_AREA_ADMIN && request.getAreaId() != null && !request.getAreaId().trim().isEmpty()) {
// 此处需要注入AreaRepository与AdminService保持一致先补充注入
if (!areaRepository.existsById(request.getAreaId().trim())) {
throw new RuntimeException("关联的区域不存在:" + request.getAreaId().trim());
}
}
adminRepository.save(admin);
}

Loading…
Cancel
Save