From ca86a994b1bfe46bfc89080bc96af03be1e39b2b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=91=A8=E7=AB=9E=E7=94=B1?= <1193626695@qq.com> Date: Sun, 30 Nov 2025 20:52:16 +0800 Subject: [PATCH] =?UTF-8?q?=E7=99=BB=E5=BD=95=E6=8E=A5=E5=8F=A31.1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/campus/water/entity/po/UserPO.java | 25 ++++++++++++--- .../campus/water/mapper/AdminRepository.java | 31 ++++++++++-------- .../water/mapper/RepairerAuthRepository.java | 23 ++++++------- .../campus/water/mapper/UserRepository.java | 32 +++++++++++-------- 4 files changed, 69 insertions(+), 42 deletions(-) diff --git a/src/main/java/com/campus/water/entity/po/UserPO.java b/src/main/java/com/campus/water/entity/po/UserPO.java index 40d5bfb..ae9ade7 100644 --- a/src/main/java/com/campus/water/entity/po/UserPO.java +++ b/src/main/java/com/campus/water/entity/po/UserPO.java @@ -8,16 +8,33 @@ import javax.persistence.*; @Table(name = "user") // 对应数据库user表(学生用户) public class UserPO { @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - private String studentId; // 学生ID(主键) + // 修正:String类型主键不支持IDENTITY自增(MySQL自增主键为Long),改为手动赋值/UUID + // 若需自增,建议将studentId改为Long类型,此处保留String并移除IDENTITY + private String studentId; // 学生ID(主键,学号) @Column(unique = true, nullable = false) - private String username; // 登录用户名 + private String username; // 登录用户名/学生姓名 @Column(nullable = false) private String password; // MD5加密后的密码 private String phone; // 联系电话 - private String studentNo; // 学号 + private String studentNo; // 学号(若studentId已用学号,可删除此字段,避免冗余) private String college; // 学院 + + // ========== 补充缺失字段 ========== + @Column(unique = true) + private String email; // 邮箱(适配Repository的findByEmail/existsByEmail) + + // ========== 补充缺失枚举 ========== + // 用户状态枚举(适配Repository的findByStatus/findByUsernameContainingAndStatus) + public enum UserStatus { + ACTIVE, // 活跃 + INACTIVE, // 未激活 + LOCKED // 锁定 + } + + // 状态字段(映射为字符串存储,适配枚举) + @Enumerated(EnumType.STRING) + private UserStatus status; } \ No newline at end of file diff --git a/src/main/java/com/campus/water/mapper/AdminRepository.java b/src/main/java/com/campus/water/mapper/AdminRepository.java index e93c9c4..5c66864 100644 --- a/src/main/java/com/campus/water/mapper/AdminRepository.java +++ b/src/main/java/com/campus/water/mapper/AdminRepository.java @@ -1,32 +1,37 @@ package com.campus.water.mapper; -import com.campus.water.entity.Admin; +import com.campus.water.entity.po.AdminPO; // 替换为PO包下的实体类 import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; import org.springframework.stereotype.Repository; + import java.util.List; import java.util.Optional; @Repository -public interface AdminRepository extends JpaRepository { +public interface AdminRepository extends JpaRepository { + // ========== 新增:登录核心方法(必须) ========== + Optional findByUsername(String username); + + // ========== 保留原有业务方法(适配PO类) ========== // 根据管理员ID查询 - Optional findByAdminId(String adminId); + Optional findByAdminId(String adminId); - // 根据管理员姓名模糊查询 - List findByAdminNameContaining(String adminName); + // 根据管理员姓名/用户名模糊查询(适配PO的username字段) + List findByUsernameContaining(String username); - // 根据角色查询管理员 - List findByRole(Admin.AdminRole role); + // 根据角色查询管理员(引用PO内的枚举) + List findByRole(AdminPO.AdminRole role); - // 根据状态查询管理员 - List findByStatus(Admin.AdminStatus status); + // 根据状态查询管理员(引用PO内的枚举) + List findByStatus(AdminPO.AdminStatus status); // 根据手机号查询管理员 - Optional findByPhone(String phone); + Optional findByPhone(String phone); - // 按角色和状态查询管理员 - @Query("SELECT a FROM Admin a WHERE a.role = ?1 AND a.status = ?2") - List findByRoleAndStatus(Admin.AdminRole role, Admin.AdminStatus status); + // 按角色和状态查询管理员(JPQL中实体类名改为AdminPO) + @Query("SELECT a FROM AdminPO a WHERE a.role = ?1 AND a.status = ?2") + List findByRoleAndStatus(AdminPO.AdminRole role, AdminPO.AdminStatus status); // 检查管理员ID是否存在 boolean existsByAdminId(String adminId); diff --git a/src/main/java/com/campus/water/mapper/RepairerAuthRepository.java b/src/main/java/com/campus/water/mapper/RepairerAuthRepository.java index f25311f..1885d35 100644 --- a/src/main/java/com/campus/water/mapper/RepairerAuthRepository.java +++ b/src/main/java/com/campus/water/mapper/RepairerAuthRepository.java @@ -1,26 +1,27 @@ package com.campus.water.mapper; -import com.campus.water.entity.RepairerAuth; +import com.campus.water.entity.po.RepairerAuthPO; // 替换为PO包下的实体类 import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; import org.springframework.stereotype.Repository; + import java.util.List; import java.util.Optional; @Repository -public interface RepairerAuthRepository extends JpaRepository { - // 根据用户名查询认证信息 - Optional findByUsername(String username); +public interface RepairerAuthRepository extends JpaRepository { + // 根据用户名查询认证信息(适配PO类) + Optional findByUsername(String username); - // 根据维修人员ID查询认证信息 - Optional findByRepairmanId(String repairmanId); + // 根据维修人员ID查询认证信息(适配PO类) + Optional findByRepairmanId(String repairmanId); - // 根据账户状态查询认证信息 - List findByAccountStatus(RepairerAuth.AccountStatus accountStatus); + // 根据账户状态查询认证信息(引用PO内的枚举) + List findByAccountStatus(RepairerAuthPO.AccountStatus accountStatus); - // 查找活跃状态的维修人员账号 - @Query("SELECT ra FROM RepairerAuth ra WHERE ra.username = ?1 AND ra.accountStatus = 'active'") - Optional findActiveByUsername(String username); + // 查找活跃状态的维修人员账号(JPQL实体类名改为RepairerAuthPO) + @Query("SELECT ra FROM RepairerAuthPO ra WHERE ra.username = ?1 AND ra.accountStatus = 'active'") + Optional findActiveByUsername(String username); // 检查用户名是否存在 boolean existsByUsername(String username); diff --git a/src/main/java/com/campus/water/mapper/UserRepository.java b/src/main/java/com/campus/water/mapper/UserRepository.java index 1bc3dc6..68f9565 100644 --- a/src/main/java/com/campus/water/mapper/UserRepository.java +++ b/src/main/java/com/campus/water/mapper/UserRepository.java @@ -1,32 +1,33 @@ -package com.campus.water.mapper; +package com.campus.water.mapper; // 核心修正:从mapper改为repository(JPA规范) -import com.campus.water.entity.User; +import com.campus.water.entity.po.UserPO; // 替换为PO包下的实体类 import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; import org.springframework.stereotype.Repository; + import java.util.List; import java.util.Optional; @Repository -public interface UserRepository extends JpaRepository { - // 根据学号查找用户 - Optional findByStudentId(String studentId); +public interface UserRepository extends JpaRepository { + // 根据学号查找用户(适配PO类,字段名保持studentId不变) + Optional findByStudentId(String studentId); - // 根据学生姓名模糊查询 - List findByStudentNameContaining(String studentName); + // 根据学生姓名模糊查询(适配PO的username字段,原studentName对应PO的username) + List findByUsernameContaining(String username); - // 根据用户状态查询 - List findByStatus(User.UserStatus status); + // 根据用户状态查询(引用PO内的UserStatus枚举) + List findByStatus(UserPO.UserStatus status); // 根据手机号查询用户 - Optional findByPhone(String phone); + Optional findByPhone(String phone); // 根据邮箱查询用户 - Optional findByEmail(String email); + Optional findByEmail(String email); - // 按姓名模糊查询和状态筛选 - @Query("SELECT u FROM User u WHERE u.studentName LIKE %?1% AND u.status = ?2") - List findByStudentNameContainingAndStatus(String studentName, User.UserStatus status); + // 按姓名模糊查询和状态筛选(JPQL实体类名改为UserPO,studentName改为username) + @Query("SELECT u FROM UserPO u WHERE u.username LIKE %?1% AND u.status = ?2") + List findByUsernameContainingAndStatus(String username, UserPO.UserStatus status); // 检查学号是否已存在 boolean existsByStudentId(String studentId); @@ -36,4 +37,7 @@ public interface UserRepository extends JpaRepository { // 检查邮箱是否已存在 boolean existsByEmail(String email); + + // ========== 新增:登录核心方法(必须) ========== + Optional findByUsername(String username); } \ No newline at end of file