heheng
2026-03-19 680a9877fe64c40aced1f4e04ea34056fac204fc
gkhy-system/src/main/resources/mapper/system/SysUserMapper.xml
@@ -23,7 +23,7 @@
        <result property="updateBy"     column="update_by"    />
        <result property="updateTime"   column="update_time"  />
        <result property="remark"       column="remark"       />
        <association property="dept"    javaType="SysDept"         resultMap="deptResult" />
        <collection property="depts"    javaType="java.util.List"         resultMap="deptResult" />
        <collection  property="roles"   javaType="java.util.List"  resultMap="RoleResult" />
    </resultMap>
   
@@ -47,18 +47,20 @@
    </resultMap>
   
   <sql id="selectUserVo">
        select u.user_id, u.dept_id, u.user_name, u.nick_name, u.email, u.avatar, u.phonenumber, u.password, u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark,
        select u.user_id, ud.dept_id, u.user_name, u.nick_name, u.email, u.avatar, u.phonenumber, u.password, u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark,
        d.dept_id, d.parent_id, d.ancestors, d.dept_name, d.order_num, d.leader, d.status as dept_status,
        r.role_id, r.role_name, r.role_key, r.role_sort, r.data_scope, r.status as role_status
        from sys_user u
          left join sys_dept d on u.dept_id = d.dept_id
         left join sys_user_dept ud on u.user_id = ud.user_id
          left join sys_dept d on ud.dept_id = d.dept_id
          left join sys_user_role ur on u.user_id = ur.user_id
          left join sys_role r on r.role_id = ur.role_id
    </sql>
    
    <select id="selectUserList" parameterType="SysUser" resultMap="SysUserResult">
      select u.user_id, u.dept_id, u.nick_name, u.user_name, u.email, u.avatar, u.phonenumber, u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark, d.dept_name, d.leader from sys_user u
      left join sys_dept d on u.dept_id = d.dept_id
      select u.user_id, ud.dept_id, u.nick_name, u.user_name, u.email, u.avatar, u.phonenumber, u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark, d.dept_name, d.leader from sys_user u
      left join sys_user_dept ud on u.user_id = ud.user_id
      left join sys_dept d on ud.dept_id = d.dept_id
      where u.del_flag = '0'
      <if test="userId != null and userId != 0">
         AND u.user_id = #{userId}
@@ -82,15 +84,53 @@
         AND date_format(u.create_time,'%Y%m%d') &lt;= date_format(#{params.endTime},'%Y%m%d')
      </if>
      <if test="deptId != null and deptId != 0">
         AND (u.dept_id = #{deptId} OR u.dept_id IN ( SELECT t.dept_id FROM sys_dept t WHERE find_in_set(#{deptId}, ancestors) ))
         AND (ud.dept_id = #{deptId} OR ud.dept_id IN ( SELECT t.dept_id FROM sys_dept t WHERE find_in_set(#{deptId}, ancestors) ))
      </if>
      <!-- 数据范围过滤 -->
      ${params.dataScope}
   </select>
   <!-- 用户列表统计 -->
   <select id="selectUserListCount" parameterType="SysUser" resultType="long">
      select count(distinct u.user_id)
      from sys_user u
      left join sys_user_dept ud on u.user_id = ud.user_id
      left join sys_dept d on ud.dept_id = d.dept_id
      where u.del_flag = '0'
      <if test="userId != null and userId != 0">
         AND u.user_id = #{userId}
      </if>
      <if test="userName != null and userName != ''">
         AND u.user_name like concat('%', #{userName}, '%')
      </if>
      <if test="nickName != null and nickName != ''">
         and u.nick_name like concat('%',#{nickName},'%')
      </if>
      <if test="status != null and status != ''">
         AND u.status = #{status}
      </if>
      <if test="phonenumber != null and phonenumber != ''">
         AND u.phonenumber like concat('%', #{phonenumber}, '%')
      </if>
      <if test="params.beginTime != null and params.beginTime != ''">
         AND date_format(u.create_time,'%Y%m%d') &gt;= date_format(#{params.beginTime},'%Y%m%d')
      </if>
      <if test="params.endTime != null and params.endTime != ''">
         AND date_format(u.create_time,'%Y%m%d') &lt;= date_format(#{params.endTime},'%Y%m%d')
      </if>
      <if test="deptId != null and deptId != 0">
         AND (ud.dept_id = #{deptId} OR ud.dept_id IN ( SELECT t.dept_id FROM sys_dept t WHERE find_in_set(#{deptId}, ancestors) ))
      </if>
      <!-- 数据范围过滤 -->
      ${params.dataScope}
   </select>
   <select id="selectUserListByRoleKey" parameterType="SysUser" resultMap="SysUserResult">
      select u.user_id, u.dept_id, u.nick_name, u.user_name, u.email, u.avatar, u.phonenumber, u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark, d.dept_name, d.leader from sys_user u
      left join sys_dept d on u.dept_id = d.dept_id
      select u.user_id, ud.dept_id, u.nick_name, u.user_name, u.email, u.avatar, u.phonenumber, u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark, d.dept_name, d.leader from sys_user u
      left join sys_user_dept ud on u.user_id = ud.user_id
      left join sys_dept d on ud.dept_id = d.dept_id
      left join sys_user_role ur on u.user_id = ur.user_id
       left join sys_role r on r.role_id = ur.role_id
      where u.del_flag = '0' and u.status = '0' and r.role_key = #{roleKey}
@@ -110,9 +150,10 @@
   
   <select id="selectAllocatedList" parameterType="SysUser" resultMap="SysUserResult">
       select distinct u.user_id, u.dept_id, u.user_name, u.nick_name, u.email, u.phonenumber, u.status, u.create_time
       select distinct u.user_id, u.user_name, u.nick_name, u.email, u.phonenumber, u.status, u.create_time
       from sys_user u
          left join sys_dept d on u.dept_id = d.dept_id
      left join sys_user_dept ud on u.user_id = ud.user_id
      left join sys_dept d on ud.dept_id = d.dept_id
          left join sys_user_role ur on u.user_id = ur.user_id
          left join sys_role r on r.role_id = ur.role_id
       where u.del_flag = '0' and r.role_id = #{roleId}
@@ -127,9 +168,10 @@
   </select>
   
   <select id="selectUnallocatedList" parameterType="SysUser" resultMap="SysUserResult">
       select distinct u.user_id, u.dept_id, u.user_name, u.nick_name, u.email, u.phonenumber, u.status, u.create_time
       select distinct u.user_id, u.user_name, u.nick_name, u.email, u.phonenumber, u.status, u.create_time
       from sys_user u
          left join sys_dept d on u.dept_id = d.dept_id
      left join sys_user_dept ud on u.user_id = ud.user_id
      left join sys_dept d on ud.dept_id = d.dept_id
          left join sys_user_role ur on u.user_id = ur.user_id
          left join sys_role r on r.role_id = ur.role_id
       where u.del_flag = '0' and (r.role_id != #{roleId} or r.role_id IS NULL)
@@ -166,13 +208,15 @@
      select user_id, email from sys_user where email = #{email} and del_flag = '0' limit 1
   </select>
   <select id="selectUserByDeptIds" resultMap="SysUserResult">
      select u.user_id, u.dept_id, u.nick_name, u.user_name, u.email, u.avatar, u.phonenumber, u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark ,d.dept_name, d.leader
      from sys_user u left join sys_dept d on u.dept_id = d.dept_id
      select u.user_id, ud.dept_id, u.nick_name, u.user_name, u.email, u.avatar, u.phonenumber, u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark ,d.dept_name, d.leader
      from sys_user u
      left join sys_user_dept ud on u.user_id = ud.user_id
      left join sys_dept d on ud.dept_id = d.dept_id
      where u.del_flag = '0'
      <if test="nickName!=null and nickName!=''">
         and u.nick_name like concat('%',#{nickName},'%')
      </if>
      and u.dept_id in
      and ud.dept_id in
      <foreach item="id" collection="deptId" open="(" separator="," close=")">
         #{id}
      </foreach>