content: 
  package com.platform.modules.system.repository;
  
  import com.platform.modules.system.domain.User;
  import org.springframework.data.jpa.repository.JpaRepository;
  import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
  import org.springframework.data.jpa.repository.Modifying;
  import org.springframework.data.jpa.repository.Query;
  import java.util.Date;
  import java.util.List;
  import java.util.Set;
  
  /**
   * @author AllDataDC
   * @date 2023-01-27
   */
  public interface UserRepository extends JpaRepository<User, Long>, JpaSpecificationExecutor<User> {
  
      /**
       * 根据用户名查询
       * @param username 用户名
       * @return /
       */
      User findByUsername(String username);
  
      /**
       * 根据邮箱查询
       * @param email 邮箱
       * @return /
       */
      User findByEmail(String email);
  
      /**
       * 根据手机号查询
       * @param phone 手机号
       * @return /
       */
      User findByPhone(String phone);
  
      /**
       * 修改密码
       * @param username 用户名
       * @param pass 密码
       * @param lastPasswordResetTime /
       */
      @Modifying
      @Query(value = "update sys_user set password = ?2 , pwd_reset_time = ?3 where username = ?1",nativeQuery = true)
      void updatePass(String username, String pass, Date lastPasswordResetTime);
  
      /**
       * 修改邮箱
       * @param username 用户名
       * @param email 邮箱
       */
      @Modifying
      @Query(value = "update sys_user set email = ?2 where username = ?1",nativeQuery = true)
      void updateEmail(String username, String email);
  
      /**
       * 根据角色查询用户
       * @param roleId /
       * @return /
       */
      @Query(value = "SELECT u.* FROM sys_user u, sys_users_roles r WHERE" +
              " u.user_id = r.user_id AND r.role_id = ?1", nativeQuery = true)
      List<User> findByRoleId(Long roleId);
  
      /**
       * 根据角色中的部门查询
       * @param deptId /
       * @return /
       */
      @Query(value = "SELECT u.* FROM sys_user u, sys_users_roles r, sys_roles_depts d WHERE " +
              "u.user_id = r.user_id AND r.role_id = d.role_id AND d.dept_id = ?1 group by u.user_id", nativeQuery = true)
      List<User> findByRoleDeptId(Long deptId);
  
      /**
       * 根据菜单查询
       * @param id 菜单ID
       * @return /
       */
      @Query(value = "SELECT u.* FROM sys_user u, sys_users_roles ur, sys_roles_menus rm WHERE\n" +
              "u.user_id = ur.user_id AND ur.role_id = rm.role_id AND rm.menu_id = ?1 group by u.user_id", nativeQuery = true)
      List<User> findByMenuId(Long id);
  
      /**
       * 根据Id删除
       * @param ids /
       */
      void deleteAllByIdIn(Set<Long> ids);
  
      /**
       * 根据岗位查询
       * @param ids /
       * @return /
       */
      @Query(value = "SELECT count(1) FROM sys_user u, sys_users_jobs j WHERE u.user_id = j.user_id AND j.job_id IN ?1", nativeQuery = true)
      int countByJobs(Set<Long> ids);
  
      /**
       * 根据部门查询
       * @param deptIds /
       * @return /
       */
      @Query(value = "SELECT count(1) FROM sys_user u WHERE u.dept_id IN ?1", nativeQuery = true)
      int countByDepts(Set<Long> deptIds);
  
      /**
       * 根据角色查询
       * @param ids /
       * @return /
       */
      @Query(value = "SELECT count(1) FROM sys_user u, sys_users_roles r WHERE " +
              "u.user_id = r.user_id AND r.role_id in ?1", nativeQuery = true)
      int countByRoles(Set<Long> ids);
  }
  