content: package org.ruoyi.system.mapper;
  
  import com.baomidou.mybatisplus.annotation.InterceptorIgnore;
  import com.baomidou.mybatisplus.core.conditions.Wrapper;
  import com.baomidou.mybatisplus.core.toolkit.Constants;
  import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  import org.apache.ibatis.annotations.Mapper;
  import org.apache.ibatis.annotations.Param;
  import org.ruoyi.annotation.DataColumn;
  import org.ruoyi.annotation.DataPermission;
  import org.ruoyi.core.mapper.BaseMapperPlus;
  import org.ruoyi.system.domain.SysUser;
  import org.ruoyi.system.domain.bo.SysUserBo;
  import org.ruoyi.system.domain.vo.SysUserVo;
  
  import java.util.List;
  
  /**
   * 用户表 数据层
   *
   * @author Lion Li
   */
  @Mapper
  public interface SysUserMapper extends BaseMapperPlus<SysUser, SysUserVo> {
  
      @DataPermission({
          @DataColumn(key = "deptName", value = "d.dept_id"),
          @DataColumn(key = "userName", value = "u.user_id")
      })
      Page<SysUserVo> selectPageUserList(@Param("page") Page<SysUser> page, @Param(Constants.WRAPPER) Wrapper<SysUser> queryWrapper);
  
      /**
       * 根据条件分页查询用户列表
       *
       * @param queryWrapper 查询条件
       * @return 用户信息集合信息
       */
      @DataPermission({
          @DataColumn(key = "deptName", value = "d.dept_id"),
          @DataColumn(key = "userName", value = "u.user_id")
      })
      List<SysUserVo> selectUserList(@Param(Constants.WRAPPER) Wrapper<SysUser> queryWrapper);
  
      /**
       * 根据条件分页查询已配用户角色列表
       *
       * @param queryWrapper 查询条件
       * @return 用户信息集合信息
       */
      @DataPermission({
          @DataColumn(key = "deptName", value = "d.dept_id"),
          @DataColumn(key = "userName", value = "u.user_id")
      })
      Page<SysUserVo> selectAllocatedList(@Param("page") Page<SysUser> page, @Param(Constants.WRAPPER) Wrapper<SysUser> queryWrapper);
  
      /**
       * 根据条件分页查询未分配用户角色列表
       *
       * @param queryWrapper 查询条件
       * @return 用户信息集合信息
       */
      @DataPermission({
          @DataColumn(key = "deptName", value = "d.dept_id"),
          @DataColumn(key = "userName", value = "u.user_id")
      })
      Page<SysUserVo> selectUnallocatedList(@Param("page") Page<SysUser> page, @Param(Constants.WRAPPER) Wrapper<SysUser> queryWrapper);
  
      /**
       * 通过用户名查询用户
       *
       * @param userName 用户名
       * @return 用户对象信息
       */
      SysUserVo selectUserByUserName(String userName);
  
      /**
       * 通过OpenId查询用户
       *
       * @param OpenId 微信用户唯一标识
       * @return 用户对象信息
       */
      SysUserVo selectUserByOpenId(String OpenId);
  
      /**
       * 通过手机号查询用户
       *
       * @param phonenumber 手机号
       * @return 用户对象信息
       */
      SysUserVo selectUserByPhonenumber(String phonenumber);
  
      /**
       * 通过邮箱查询用户
       *
       * @param email 邮箱
       * @return 用户对象信息
       */
      SysUserVo selectUserByEmail(String email);
  
      /**
       * 通过用户名查询用户(不走租户插件)
       *
       * @param userName 用户名
       * @param tenantId 租户id
       * @return 用户对象信息
       */
      @InterceptorIgnore(tenantLine = "true")
      SysUserVo selectTenantUserByUserName(String userName, String tenantId);
  
      /**
       * 通过手机号查询用户(不走租户插件)
       *
       * @param phonenumber 手机号
       * @param tenantId    租户id
       * @return 用户对象信息
       */
      @InterceptorIgnore(tenantLine = "true")
      SysUserVo selectTenantUserByPhonenumber(String phonenumber, String tenantId);
  
      /**
       * 通过邮箱查询用户(不走租户插件)
       *
       * @param email    邮箱
       * @param tenantId 租户id
       * @return 用户对象信息
       */
      @InterceptorIgnore(tenantLine = "true")
      SysUserVo selectTenantUserByEmail(String email, String tenantId);
  
      /**
       * 通过用户ID查询用户
       *
       * @param userId 用户ID
       * @return 用户对象信息
       */
  //    @DataPermission({
  //        @DataColumn(key = "deptName", value = "d.dept_id"),
  //        @DataColumn(key = "userName", value = "u.user_id")
  //    })
      @InterceptorIgnore(dataPermission = "true")
      SysUserVo selectUserById(Long userId);
  
      @Override
  //    @DataPermission({
  //        @DataColumn(key = "deptName", value = "dept_id"),
  //        @DataColumn(key = "userName", value = "user_id")
  //    })
      @InterceptorIgnore(dataPermission = "true")
      int update(@Param(Constants.ENTITY) SysUser user, @Param(Constants.WRAPPER) Wrapper<SysUser> updateWrapper);
  
      @Override
  //    @DataPermission({
  //        @DataColumn(key = "deptName", value = "dept_id"),
  //        @DataColumn(key = "userName", value = "user_id")
  //    })
      @InterceptorIgnore(dataPermission = "true")
      int updateById(@Param(Constants.ENTITY) SysUser user);
  
  
      /**
       * 小程序 -修改用户信息
       *
       * @param user
       *
       */
      void updateXcxUser(SysUserBo user);
  }
  