龚焕茏
2024-05-24 2bf92184d4584cac58b76b8d1ea0b3b0ff34b4fb
src/main/resources/mapper/UserMapper.xml
@@ -23,7 +23,7 @@
  </resultMap>
  <sql id="Base_Column_List">
    id, user_uuid, user_name, password, real_name, age, sex, birth_day, user_level, phone,
    role, status, image_path, create_time, modify_time, last_active_time, deleted, wx_open_id
    role, status, image_path, create_time, modify_time, last_active_time, deleted, wx_open_id, `condition`
  </sql>
  <select id="selectByPrimaryKey" parameterType="java.lang.Integer" resultMap="BaseResultMap">
    select
@@ -220,6 +220,9 @@
      <if test="wxOpenId != null">
        wx_open_id = #{wxOpenId,jdbcType=VARCHAR},
      </if>
      <if test="deptAdmin != null">
        dept_admin = #{deptAdmin},
      </if>
    </set>
    where id = #{id,jdbcType=INTEGER}
  </update>
@@ -241,184 +244,328 @@
      modify_time = #{modifyTime,jdbcType=TIMESTAMP},
      last_active_time = #{lastActiveTime,jdbcType=TIMESTAMP},
      deleted = #{deleted,jdbcType=BIT},
      wx_open_id = #{wxOpenId,jdbcType=VARCHAR}
      wx_open_id = #{wxOpenId,jdbcType=VARCHAR},
      dept_admin = #{deptAdmin}
    where id = #{id,jdbcType=INTEGER}
  </update>
    <select id="getAllUser" resultMap="BaseResultMap">
        select
        <include refid="Base_Column_List"/>
        from t_user where deleted=0
    </select>
  <select id="getAllUser" resultMap="BaseResultMap">
    select
    <include refid="Base_Column_List"/>
    from t_user where deleted=0
  </select>
    <select id="getUserByLevel" resultMap="BaseResultMap">
        select id,
               real_name
        from t_user
        where deleted = 0
          and user_level = #{userLevel}
    </select>
  <select id="getUserById" resultMap="BaseResultMap">
    select
    <include refid="Base_Column_List"/>
    from t_user
    where id=#{value}
    where id=#{value} and status = 1 and deleted = 0 and (`condition` = 0 or `condition` is null)
  </select>
  <select id="getUserByUserName" resultMap="BaseResultMap">
    select
    <include refid="Base_Column_List"/>
    from t_user
    where deleted=0  and user_name=#{value} limit 1
  </select>
    <select id="getUserByUserName" resultMap="BaseResultMap">
        select
        <include refid="Base_Column_List"/>
        from t_user
        where deleted=0 and user_name=#{value} limit 1
    </select>
  <select id="getUserByUserNamePwd" resultMap="BaseResultMap">
    select
    <include refid="Base_Column_List"/>
    from t_user
    where deleted=0  and user_name=#{username} and password=#{pwd} limit 1
  </select>
    <select id="getUserByRealName" resultMap="BaseResultMap">
        select
        <include refid="Base_Column_List"/>
        from t_user
        where deleted=0 and real_name = #{realName}
    </select>
  <select id="getUserByUuid" resultMap="BaseResultMap">
    select
    <include refid="Base_Column_List"/>
    from t_user
    where deleted=0  and user_uuid=#{value,jdbcType=VARCHAR}
  </select>
    <select id="getUserByUserNamePwd" resultMap="BaseResultMap">
        select
        <include refid="Base_Column_List"/>
        from t_user
        where deleted=0 and user_name=#{username} and password=#{pwd} limit 1
    </select>
    <select id="getUserByUuid" resultMap="BaseResultMap">
        select
        <include refid="Base_Column_List"/>
        from t_user
        where deleted=0 and user_uuid=#{value,jdbcType=VARCHAR}
    </select>
  <select id="userPageList" resultMap="BaseResultMap">
    SELECT
    <include refid="Base_Column_List"/>
    FROM t_user
    <select id="userPageList" resultMap="BaseResultMap">
        SELECT
        <include refid="Base_Column_List"/>
        FROM t_user
        <where>
            and deleted=0
            <if test="name != null and name != ''">
                and real_name like concat('%',#{name},'%')
            </if>
        </where>
        ORDER BY id
        <if test="offset != null and limit != null ">
            <bind name="patternAdd" value="limit*offset"/>
            limit #{limit} OFFSET #{offset}
        </if>
    </select>
    <select id="userPageCount" resultType="java.lang.Integer">
        select count(*) from t_user
        <where>
            and deleted=0
            <if test="name != null and name != ''">
                and real_name like concat('%', #{name}, '%')
            </if>
        </where>
    </select>
    <select id="userPage" resultMap="BaseResultMap"
            parameterType="com.mindskip.xzs.viewmodel.admin.user.UserPageRequestVM">
        SELECT
        a.*
        FROM t_user a
        lEFT join
            (select * from t_user_department
            <if test="departmentId != null and departmentId.size() > 0">
                where department_id in <foreach collection="departmentId" item="item" index="index" open="(" separator="," close=")"> #{item} </foreach>
            </if>
                group by user_id
            )
            b on a.id = b.user_id
        where
            a.deleted=0
            <if test="departmentId != null and departmentId.size() > 0">
                and b.department_id in <foreach collection="departmentId" item="item" index="index" open="(" separator="," close=")"> #{item} </foreach>
            </if>
            <if test="userName != null and userName != ''">
                and real_name like concat('%',#{userName},'%')
            </if>
            <if test="role != null and role.size() > 0">
                and role in <foreach collection="role" item="item" open="(" separator="," close=")"> #{item} </foreach>
            </if>
    </select>
    <insert id="insertUser" parameterType="com.mindskip.xzs.domain.User"
            useGeneratedKeys="true" keyProperty="id">
        insert into t_user
            (user_uuid, user_name, password, real_name, age, last_active_time)
        values (#{userUuid,jdbcType=VARCHAR}, #{userName}, #{password}, #{realName}, #{age}, #{lastActiveTime})
    </insert>
    <insert id="insertUsers" parameterType="java.util.List"
            useGeneratedKeys="true" keyProperty="id">
        insert into t_user
        (user_uuid,user_name,password,real_name,last_active_time,role,status,user_level,deleted)
        values
        <foreach collection="list" item="item"
                 separator=",">
            (#{item.userUuid,jdbcType=VARCHAR},#{item.userName,jdbcType=VARCHAR},#{item.password,jdbcType=VARCHAR},#{item.realName,jdbcType=VARCHAR},
            #{item.lastActiveTime},#{item.role},#{item.status},#{item.userLevel},0)
        </foreach>
    </insert>
    <update id="updateUser" parameterType="com.mindskip.xzs.domain.User">
        update t_user
        <set>
            <if test="realName != null">real_name = #{realName},</if>
            <if test="age != null">age = #{age},</if>
            <if test="lastActiveTime != null">last_active_time = #{lastActiveTime},</if>
        </set>
        where id = #{id}
    </update>
    <update id="updateUsersAge">
        update t_user set age = #{age} where id in
        <foreach item="id" collection="idslist" open="(" separator=","
                 close=")">
            #{id}
        </foreach>
    </update>
    <delete id="deleteUsersByIds">
        delete from t_user where id in
        <foreach item="id" collection="list" open="(" separator=","
                 close=")">
            #{id}
        </foreach>
    </delete>
    <select id="selectAllCount" resultType="java.lang.Integer">
        SELECT count(*)
        from t_user
        where deleted = 0
    </select>
    <select id="selectByUserName" resultType="com.mindskip.xzs.domain.other.KeyValue">
        SELECT id as value,user_name as name
        from t_user
        where deleted=0
          and user_name like concat('%'
            , #{value}
            , '%')
            limit 5
    </select>
    <select id="selectByIds" resultMap="BaseResultMap">
        select
        <include refid="Base_Column_List"/>
        from t_user
        where id in
        <foreach item="id" collection="list" open="(" separator=","
                 close=")">
            #{id}
        </foreach>
    </select>
    <select id="selectByWxOpenId" parameterType="java.lang.String" resultMap="BaseResultMap">
        select
        <include refid="Base_Column_List"/>
        from t_user
        where deleted=0 and wx_open_id = #{wxOpenId}
        limit 1
    </select>
    <select id="selectByIdName" resultMap="BaseResultMap">
        select
        <include refid="Base_Column_List"/>
        from t_user
        <where>
            and deleted=0 and id = #{id}
            <if test="userName != null and userName != ''">
                and user_name like concat('%',#{userName},"%")
            </if>
        </where>
    </select>
  <update id="updateDeptAdmin">
    UPDATE t_user_department SET dept_admin = #{deptAdmin}
    <where>
        and deleted=0
      <if test="name != null and name != ''">
        and  real_name like concat('%',#{name},'%')
      <if test="ids != null and ids.size > 0">
        AND user_id in
        <foreach collection="ids" open="(" separator="," close=")" item="id">
          #{id}
        </foreach>
      </if>
      AND department_id = #{deptId}
    </where>
    ORDER BY id
    <if test="offset != null and limit != null ">
      <bind name="patternAdd" value="limit*offset"/>
      limit #{limit} OFFSET #{offset}
    </if>
  </select>
  <select id="userPageCount" resultType="java.lang.Integer">
    select count(*) from t_user
    <where>
        and deleted=0
      <if test="name != null and name != ''">
        and real_name like concat('%', #{name}, '%')
      </if>
    </where>
  </select>
  <select id="userPage" resultMap="BaseResultMap" parameterType="com.mindskip.xzs.viewmodel.admin.user.UserPageRequestVM">
    SELECT
    <include refid="Base_Column_List"/>
    FROM t_user
    <where>
        and deleted=0
      <if test="userName != null and userName != ''">
        and user_name like concat('%',#{userName},'%')
      </if>
      <if test="role != null ">
        and role= #{role}
      </if>
    </where>
  </select>
  <insert id="insertUser" parameterType="com.mindskip.xzs.domain.User"
          useGeneratedKeys="true" keyProperty="id">
      insert into t_user
      (user_uuid,user_name,password,real_name,age, last_active_time)
      values
      (#{userUuid,jdbcType=VARCHAR},#{userName},#{password},#{realName},#{age},#{lastActiveTime})
   </insert>
  <insert id="insertUsers" parameterType="java.util.List"
          useGeneratedKeys="true" keyProperty="id">
    insert into t_user
    (user_uuid,user_name,password,real_name,last_active_time,role,status,user_level,deleted)
    values
    <foreach collection="list" item="item" index="index"
             separator=";">
      (#{item.userUuid,jdbcType=VARCHAR},#{item.userName,jdbcType=VARCHAR},#{item.password,jdbcType=VARCHAR},#{item.realName,jdbcType=VARCHAR},
      #{item.lastActiveTime},#{item.role},#{item.status},#{item.userLevel},0)
    </foreach>
  </insert>
  <update id="updateUser" parameterType="com.mindskip.xzs.domain.User">
    update t_user
    <set>
      <if test="realName != null">real_name = #{realName},</if>
      <if test="age != null">age = #{age},</if>
      <if test="lastActiveTime != null">last_active_time = #{lastActiveTime},</if>
    </set>
    where id = #{id}
  </update>
  <update id="updateUsersAge">
    update t_user set age = #{age} where id in
    <foreach item="id" collection="idslist" open="(" separator=","
             close=")">
      #{id}
    </foreach>
  <update id="setStatus">
      UPDATE t_user
      SET `condition` = #{condition}
      WHERE id = #{id}
        AND deleted = 0
  </update>
    <update id="clearDeptAdmin">
        update
            t_user_department set dept_admin = 0
        WHERE
              user_id IN <foreach collection="userIds" open="(" separator="," close=")" item="id">#{id}</foreach>
          AND dept_admin = 1 AND department_id = #{deptId}
    </update>
  <delete id="deleteUsersByIds">
    delete from t_user where id in
    <foreach item="id" collection="list" open="(" separator=","
             close=")">
      #{id}
    </foreach>
  </delete>
    <select id="getUserByDept" resultType="com.mindskip.xzs.domain.ExamPaperAnswer">
        SELECT
        tu.id as createUser, tu.real_name as userName, count(tepa.id) as counts
        FROM
        t_user tu INNER JOIN t_user_department tud ON tu.id = tud.user_id AND tu.deleted = 0
        LEFT JOIN t_exam_paper_answer tepa ON tepa.create_user = tu.id
        <where>
            <if test="query.deptId != null and query.deptId.size() > 0">
                AND tud.department_id in <foreach collection="query.deptId" item="deptId" open="(" separator="," close=")"> #{deptId} </foreach>
            </if>
            <if test="query.start != null and query.end != null">
                AND tepa.create_time between #{query.start} and #{query.end}
            </if>
        </where>
        group by
        createUser, userName
        ORDER BY
        tu.id desc
    </select>
  <select id="selectAllCount"  resultType="java.lang.Integer">
      SELECT count(*) from t_user where deleted=0
  </select>
    <select id="getUserByExam" resultType="com.mindskip.xzs.domain.User">
        <![CDATA[
        SELECT
        DISTINCT d.*
        FROM t_exam_paper a
        left join t_exam_paper_user b on a.id = b.exam_paper_id and b.deleted = 0
        left join t_exam_paper_answer c on a.id = c.exam_paper_id and c.create_user = b.user_id
        left join t_user d on b.user_id = d.id
        WHERE a.id = #{id}
        and (c.id is null or (user_score / paper_score) < 0.6)
        and b.user_id = #{createUser}
        ]]>
    </select>
  <select id="selectByUserName"  resultType="com.mindskip.xzs.domain.other.KeyValue">
      SELECT  id as value,user_name as name
      from t_user
      where deleted=0  and user_name like concat('%',#{value},'%')
      limit 5
  </select>
    <update id="updateUserDeptAdmin">
        update t_user set role = -1 where id in
        <foreach collection="adminIds" item="id" open="(" separator="," close=")">
            #{id}
        </foreach>
    </update>
    <update id="cancelUserDeptAdmin">
        update t_user set role = 1 where id in(
            select user_id from t_user_department where department_id = #{id} and user_id not in
            <foreach collection="adminIds" item="id" open="(" separator="," close=")">
                #{id}
            </foreach>
             and user_id not in
            (select user_id from t_user_department where dept_admin = 1 and user_id in
            (select user_id from t_user_department where department_id = #{id} and user_id not in
           <foreach collection="adminIds" item="id" open="(" separator="," close=")">
                #{id}
            </foreach>
        )))
    </update>
  <select id="selectByIds" resultMap="BaseResultMap">
    select
    <include refid="Base_Column_List" />
     from t_user
     where id in
    <foreach item="id" collection="list" open="(" separator=","
             close=")">
      #{id}
    </foreach>
  </select>
    <select id="getDeptAdminIds" resultType="java.lang.Integer" parameterType="java.lang.Integer">
        select department_id from t_user_department where dept_admin = 1 and user_id = #{id}
    </select>
    <select id="getDeptAdmins" resultType="com.mindskip.xzs.domain.Department" parameterType="java.lang.Integer">
        <if test="id != null">
        select a.id, a.name from t_department a inner join t_user_department b on a.id = b.department_id where a.deleted = 0 and b.dept_admin = 1 and b.user_id = #{id} order by a.id desc
        </if>
        <if test="id == null">
        select a.id, a.name from t_department a where a.deleted = 0 order by a.id desc
        </if>
    </select>
  <select id="selectByWxOpenId" parameterType="java.lang.String" resultMap="BaseResultMap">
    select
    <include refid="Base_Column_List" />
    from t_user
    where deleted=0  and  wx_open_id = #{wxOpenId}
    limit 1
  </select>
    <select id="getUserByExamByTemplateId" resultType="com.mindskip.xzs.domain.User" parameterType="com.mindskip.xzs.domain.ExamPaper">
        <![CDATA[
        SELECT DISTINCT
        d.*
        FROM
        t_exam_templates a
        INNER JOIN t_exam_templates_user_count b ON a.id = b.exam_templates_id and a.id = ${id}
        LEFT JOIN t_exam_paper_answer c ON b.exam_paper_id = c.exam_paper_id AND c.create_user = b.user_id and invalid = 0
        LEFT JOIN t_user d ON b.user_id = d.id
        WHERE
        ( c.id IS NULL OR ( user_score / paper_score ) < 0.6 )
        AND b.user_id = #{createUser}
        ]]>
    </select>
  <select id="selectByIdName" resultMap="BaseResultMap">
    select
    <include refid="Base_Column_List" />
    from t_user
    <where>
      and deleted=0  and  id = #{id}
      <if test="userName != null and userName != ''">
        and user_name like concat('%',#{userName},"%")
      </if>
    </where>
  </select>
</mapper>