登录接口1.1

pull/31/head
周竞由 3 months ago
parent 47a0c184e7
commit ca86a994b1

@ -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;
}

@ -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<Admin, String> {
public interface AdminRepository extends JpaRepository<AdminPO, String> {
// ========== 新增:登录核心方法(必须) ==========
Optional<AdminPO> findByUsername(String username);
// ========== 保留原有业务方法适配PO类 ==========
// 根据管理员ID查询
Optional<Admin> findByAdminId(String adminId);
Optional<AdminPO> findByAdminId(String adminId);
// 根据管理员姓名模糊查询
List<Admin> findByAdminNameContaining(String adminName);
// 根据管理员姓名/用户名模糊查询适配PO的username字段
List<AdminPO> findByUsernameContaining(String username);
// 根据角色查询管理员
List<Admin> findByRole(Admin.AdminRole role);
// 根据角色查询管理员引用PO内的枚举
List<AdminPO> findByRole(AdminPO.AdminRole role);
// 根据状态查询管理员
List<Admin> findByStatus(Admin.AdminStatus status);
// 根据状态查询管理员引用PO内的枚举
List<AdminPO> findByStatus(AdminPO.AdminStatus status);
// 根据手机号查询管理员
Optional<Admin> findByPhone(String phone);
Optional<AdminPO> findByPhone(String phone);
// 按角色和状态查询管理员
@Query("SELECT a FROM Admin a WHERE a.role = ?1 AND a.status = ?2")
List<Admin> findByRoleAndStatus(Admin.AdminRole role, Admin.AdminStatus status);
// 按角色和状态查询管理员JPQL中实体类名改为AdminPO
@Query("SELECT a FROM AdminPO a WHERE a.role = ?1 AND a.status = ?2")
List<AdminPO> findByRoleAndStatus(AdminPO.AdminRole role, AdminPO.AdminStatus status);
// 检查管理员ID是否存在
boolean existsByAdminId(String adminId);

@ -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<RepairerAuth, Long> {
// 根据用户名查询认证信息
Optional<RepairerAuth> findByUsername(String username);
public interface RepairerAuthRepository extends JpaRepository<RepairerAuthPO, Long> {
// 根据用户名查询认证信息适配PO类
Optional<RepairerAuthPO> findByUsername(String username);
// 根据维修人员ID查询认证信息
Optional<RepairerAuth> findByRepairmanId(String repairmanId);
// 根据维修人员ID查询认证信息适配PO类
Optional<RepairerAuthPO> findByRepairmanId(String repairmanId);
// 根据账户状态查询认证信息
List<RepairerAuth> findByAccountStatus(RepairerAuth.AccountStatus accountStatus);
// 根据账户状态查询认证信息引用PO内的枚举
List<RepairerAuthPO> findByAccountStatus(RepairerAuthPO.AccountStatus accountStatus);
// 查找活跃状态的维修人员账号
@Query("SELECT ra FROM RepairerAuth ra WHERE ra.username = ?1 AND ra.accountStatus = 'active'")
Optional<RepairerAuth> findActiveByUsername(String username);
// 查找活跃状态的维修人员账号JPQL实体类名改为RepairerAuthPO
@Query("SELECT ra FROM RepairerAuthPO ra WHERE ra.username = ?1 AND ra.accountStatus = 'active'")
Optional<RepairerAuthPO> findActiveByUsername(String username);
// 检查用户名是否存在
boolean existsByUsername(String username);

@ -1,32 +1,33 @@
package com.campus.water.mapper;
package com.campus.water.mapper; // 核心修正从mapper改为repositoryJPA规范
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<User, String> {
// 根据学号查找用户
Optional<User> findByStudentId(String studentId);
public interface UserRepository extends JpaRepository<UserPO, String> {
// 根据学号查找用户适配PO类字段名保持studentId不变
Optional<UserPO> findByStudentId(String studentId);
// 根据学生姓名模糊查询
List<User> findByStudentNameContaining(String studentName);
// 根据学生姓名模糊查询适配PO的username字段原studentName对应PO的username
List<UserPO> findByUsernameContaining(String username);
// 根据用户状态查询
List<User> findByStatus(User.UserStatus status);
// 根据用户状态查询引用PO内的UserStatus枚举
List<UserPO> findByStatus(UserPO.UserStatus status);
// 根据手机号查询用户
Optional<User> findByPhone(String phone);
Optional<UserPO> findByPhone(String phone);
// 根据邮箱查询用户
Optional<User> findByEmail(String email);
Optional<UserPO> findByEmail(String email);
// 按姓名模糊查询和状态筛选
@Query("SELECT u FROM User u WHERE u.studentName LIKE %?1% AND u.status = ?2")
List<User> findByStudentNameContainingAndStatus(String studentName, User.UserStatus status);
// 按姓名模糊查询和状态筛选JPQL实体类名改为UserPOstudentName改为username
@Query("SELECT u FROM UserPO u WHERE u.username LIKE %?1% AND u.status = ?2")
List<UserPO> findByUsernameContainingAndStatus(String username, UserPO.UserStatus status);
// 检查学号是否已存在
boolean existsByStudentId(String studentId);
@ -36,4 +37,7 @@ public interface UserRepository extends JpaRepository<User, String> {
// 检查邮箱是否已存在
boolean existsByEmail(String email);
// ========== 新增:登录核心方法(必须) ==========
Optional<UserPO> findByUsername(String username);
}
Loading…
Cancel
Save