修改admin相关代码 #61

Merged
hnu202326010106 merged 3 commits from wanglei_branch into develop 1 month ago

@ -0,0 +1,23 @@
# 个人周计划-第12周
## 姓名和起止时间
**姓  名:** 王磊
**团队名称:** 1班-汪汪队
**开始时间:** 2023-12-8
**结束时间:** 2023-12-14
## 本周任务计划安排
| 序号 | 计划内容 | 协作人 | 情况说明 |
| --- | ---- | --- | ---------------------- |
| 1 | 确定分工 | 组员 | 2025-12-8 开会细分确定团队分工, |
| 2 | 联调支持 | 组员 | 配合前端完成接口联调问题,完成第一版迭代开发 |
## 小结
1. **技术重点:** 接口联调问题持续修复与支持
2. **协作重点:** 加强与前端的沟通协作机制,参与接口联调复盘与总结
3. **学习重点:** 学习接口性能分析和调优方法,提升联调问题响应与解决效率
---

@ -0,0 +1,40 @@
# 个人周计划-第十一周
## 姓名和起止时间
**姓  名:** 王磊
**团队名称:** 1班-汪汪队
**开始时间:** 2025-12-1
**结束时间:** 2025-12-7
## 本周任务计划安排
| 序号 | 总结内容 | 是否完成 | 情况说明 |
| --- | ----- | ---- | ------------------------------------------ |
| 1 | 接口完善 | 完成 | 完成数据统计接口开发(按设备/地区/时间统计用水量、告警次数)、设备状态管理接口开发 |
| 2 | 数据层优化 | 完成 | 完成传感器历史数据分页查询优化、索引调整响应时间优化至≤300ms |
| 3 | 联调支持 | 进行中 | 配合前端完成参数、格式、权限校验等接口联调问题修复 |
## 对团队工作的建议
1.****建议建立接口联调检查清单**** 确保前后端数据格式和参数一致性,减少联调阶段问题
2.****建议加强文档更新机制**** 接口变更后及时同步更新接口文档,便于协作和后续维护
3.****建议建立性能监控机制**** 对关键接口进行性能监控,及时发现并处理性能瓶颈
## 小结
1. **技术收获** 深入理解了多维度统计接口的设计与实现方法
2. **协作收获** 通过明确分工提升了任务执行效率
3. **后续重点** 继续配合前端进行联调和测试
---
## 【注】
1. 在小结一栏中写出希望得到如何的帮助,如讲座等;
2. 请将个人计划和总结提前发给负责人;
3. 周任务总结与计划是项目小组评分考核的重要依据,将直接记入平时成绩,请各位同学按要求认真填写并按时提交;
4. 所有组员都需提交个人周计划、周总结文档,按时上传至代码托管平台;

@ -24,30 +24,23 @@ public class AdminController {
private final AdminService adminService;
/**
*
* @param role super_admin/area_admin/viewer
* @param status active/inactive
*
*/
@GetMapping("/list")
@PreAuthorize("hasRole('ADMIN')") // 仅管理员可访问
@Operation(summary = "获取管理员列表", description = "支持按角色和状态筛选管理员")
@Operation(summary = "获取管理员列表", description = "支持按姓名搜索管理员")
public ResponseEntity<ResultVO<List<Admin>>> getAdminList(
@RequestParam(required = false) String role,
@RequestParam(required = false) String status
@RequestParam(required = false) String name
) {
try {
// 转换参数为枚举类型
Admin.AdminRole adminRole = role != null ? Admin.AdminRole.valueOf(role) : null;
Admin.AdminStatus adminStatus = status != null ? Admin.AdminStatus.valueOf(status) : null;
// 调用服务层查询
List<Admin> adminList = adminService.getAdminList(adminRole, adminStatus);
List<Admin> adminList;
if (name != null && !name.isEmpty()) {
adminList = adminService.searchAdminsByName(name);
} else {
adminList = adminService.getAdminList();
}
return ResponseEntity.ok(ResultVO.success(adminList));
} catch (IllegalArgumentException e) {
// 处理枚举参数错误
return ResponseEntity.ok(ResultVO.error(400, "无效的角色或状态参数: " + e.getMessage()));
} catch (Exception e) {
// 处理其他异常
return ResponseEntity.ok(ResultVO.error(500, "查询管理员列表失败: " + e.getMessage()));
}
}

@ -28,25 +28,11 @@ public class Admin {
@Column(name = "phone", length = 20)
private String phone;
@Enumerated(EnumType.STRING)
@Column(name = "role", length = 50)
private AdminRole role = AdminRole.area_admin;
@Enumerated(EnumType.STRING)
@Column(name = "status", length = 50)
private AdminStatus status = AdminStatus.active;
@Column(name = "created_time")
private LocalDateTime createdTime = LocalDateTime.now();
@Column(name = "updated_time")
private LocalDateTime updatedTime = LocalDateTime.now();
public enum AdminRole {
super_admin, area_admin, viewer
}
public enum AdminStatus {
active, inactive
}
}

@ -19,10 +19,11 @@ public class RegisterRequest {
// 用户特有字段
private String studentId; // 学生ID仅user类型需要
private String studentName; // 学生姓名仅user类型需要
private String phone; // 新增:学生/用户手机号仅user类型需要
// 管理员特有字段
private String adminId; // 管理员ID仅admin类型需要
private String adminRole; // 管理员角色仅admin类型需要SUPER_ADMIN/NORMAL_ADMIN
// 已移除管理员角色区分(根据之前需求
// 维修人员特有字段
private String repairmanId; // 维修人员ID仅repairer类型需要

@ -1,8 +1,7 @@
package com.campus.water.mapper;
import com.campus.water.entity.Admin; // 改为引用Admin实体类
import com.campus.water.entity.Admin;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository;
import java.util.List;
@ -10,36 +9,24 @@ import java.util.Optional;
@Repository
public interface AdminRepository extends JpaRepository<Admin, String> {
// ========== 登录核心方法适配Admin的adminName字段 ==========
Optional<Admin> findByAdminName(String admin_name);
// 登录核心方法
Optional<Admin> findByAdminName(String adminName);
// ========== 业务方法适配Admin类 ==========
// 根据管理员ID查询
Optional<Admin> findByAdminId(String adminId);
// 根据管理员姓名模糊查询适配Admin的adminName字段
// 根据管理员姓名模糊查询
List<Admin> findByAdminNameContaining(String adminName);
// 根据角色查询管理员引用Admin内的枚举
List<Admin> findByRole(Admin.AdminRole role);
// 根据状态查询管理员引用Admin内的枚举
List<Admin> findByStatus(Admin.AdminStatus status);
// 根据手机号查询管理员
Optional<Admin> findByPhone(String phone);
// 按角色和状态查询管理员JPQL中实体类名改为Admin
@Query("SELECT a FROM Admin a WHERE a.role = ?1 AND a.status = ?2")
List<Admin> findByRoleAndStatus(Admin.AdminRole role, Admin.AdminStatus status);
// 检查管理员ID是否存在
boolean existsByAdminId(String adminId);
// 检查手机号是否存在
boolean existsByPhone(String phone);
// 检查用户名是否存在适配Admin的adminName字段
boolean existsByAdminName(String admin_name);
// 检查用户名是否存在
boolean existsByAdminName(String adminName);
}

@ -14,21 +14,16 @@ public class AdminService {
private final AdminRepository adminRepository;
/**
*
*
*/
public List<Admin> getAdminList(Admin.AdminRole role, Admin.AdminStatus status) {
if (role != null && status != null) {
// 按角色和状态筛选
return adminRepository.findByRoleAndStatus(role, status);
} else if (role != null) {
// 仅按角色筛选
return adminRepository.findByRole(role);
} else if (status != null) {
// 仅按状态筛选
return adminRepository.findByStatus(status);
} else {
// 查询所有管理员
return adminRepository.findAll();
}
public List<Admin> getAdminList() {
return adminRepository.findAll();
}
/**
*
*/
public List<Admin> searchAdminsByName(String name) {
return adminRepository.findByAdminNameContaining(name);
}
}

@ -51,18 +51,16 @@ public class RegisterService {
// 修正管理员注册逻辑适配新实体Admin
private void handleAdminRegister(String username, String password, RegisterRequest request) {
// 检查用户名是否已存在使用新方法existsByAdminName
// 检查用户名是否已存在
if (adminRepository.existsByAdminName(username)) {
throw new RuntimeException("管理员用户名已存在");
}
Admin admin = new Admin();
admin.setAdminId(request.getAdminId());
admin.setAdminName(username); // 字段名从username改为adminName
admin.setAdminName(username);
admin.setPassword(password);
// 角色枚举值转换(新实体角色为小写,需统一)
admin.setRole(Admin.AdminRole.valueOf(request.getAdminRole().toLowerCase()));
admin.setStatus(Admin.AdminStatus.active); // 状态枚举值改为小写
admin.setPhone(request.getPhone()); // 假设请求中有电话字段
adminRepository.save(admin);
}
@ -82,6 +80,7 @@ public class RegisterService {
user.setPassword(password); // 设置密码
user.setStudentId(request.getStudentId()); // 设置学号
user.setStudentName(request.getStudentName()); // 设置学生姓名
user.setPhone(request.getPhone()); // 新增:保存手机号
user.setStatus(User.UserStatus.active); // 设置状态(使用 User 类的枚举)
// 保存 User 实体(与 UserRepository 类型匹配)

Loading…
Cancel
Save