Files
schoolNews/schoolNewsServ/study/src/main/resources/mapper/TaskUserMapper.xml

241 lines
8.9 KiB
XML
Raw Normal View History

2025-10-15 13:11:19 +08:00
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.xyzh.study.mapper.TaskUserMapper">
<!-- 基础结果映射 -->
<resultMap id="BaseResultMap" type="org.xyzh.common.dto.study.TbTaskUser">
<id column="id" property="id" jdbcType="VARCHAR"/>
<result column="task_id" property="taskID" jdbcType="VARCHAR"/>
<result column="user_id" property="userID" jdbcType="VARCHAR"/>
<result column="dept_id" property="deptID" jdbcType="VARCHAR"/>
<result column="status" property="status" jdbcType="INTEGER"/>
<result column="progress" property="progress" jdbcType="DECIMAL"/>
<result column="complete_time" property="completeTime" jdbcType="TIMESTAMP"/>
<result column="creator" property="creator" jdbcType="VARCHAR"/>
<result column="create_time" property="createTime" jdbcType="TIMESTAMP"/>
<result column="update_time" property="updateTime" jdbcType="TIMESTAMP"/>
</resultMap>
2025-10-22 17:57:30 +08:00
<resultMap id="TaskItemResultMap" type="org.xyzh.common.vo.TaskItemVO">
<id column="id" property="id" jdbcType="VARCHAR"/>
<result column="task_id" property="taskID" jdbcType="VARCHAR"/>
<result column="course_id" property="courseID" jdbcType="VARCHAR"/>
<result column="course_name" property="courseName" jdbcType="VARCHAR"/>
<result column="resource_id" property="resourceID" jdbcType="VARCHAR"/>
<result column="resource_name" property="resourceName" jdbcType="VARCHAR"/>
<result column="user_id" property="userID" jdbcType="VARCHAR"/>
<result column="username" property="username" jdbcType="VARCHAR"/>
<result column="status" property="status" jdbcType="INTEGER"/>
<result column="progress" property="progress" jdbcType="DECIMAL"/>
<result column="complete_time" property="completeTime" jdbcType="TIMESTAMP"/>
<result column="required" property="required" jdbcType="BOOLEAN"/>
<result column="order_num" property="orderNum" jdbcType="INTEGER"/>
<result column="creator" property="creator" jdbcType="VARCHAR"/>
<result column="create_time" property="createTime" jdbcType="TIMESTAMP"/>
</resultMap>
2025-10-15 13:11:19 +08:00
<!-- 基础字段 -->
<sql id="Base_Column_List">
id, task_id, user_id, dept_id, status, progress, complete_time,
creator, create_time, update_time
</sql>
<!-- 通用条件 -->
<sql id="Where_Clause">
<where>
<if test="taskID != null and taskID != ''">
AND task_id = #{taskID}
</if>
<if test="userID != null and userID != ''">
AND user_id = #{userID}
</if>
<if test="deptID != null and deptID != ''">
AND dept_id = #{deptID}
</if>
<if test="status != null">
AND status = #{status}
</if>
</where>
</sql>
<!-- selectTaskUsers -->
<select id="selectTaskUsers" resultMap="BaseResultMap">
SELECT
<include refid="Base_Column_List"/>
FROM tb_task_user
<include refid="Where_Clause"/>
ORDER BY create_time DESC
</select>
2025-10-16 14:31:56 +08:00
<!-- 根据关联ID查询关联信息 -->
<select id="selectByRelationId" resultMap="BaseResultMap">
SELECT
<include refid="Base_Column_List" />
FROM tb_task_user
WHERE id = #{relationId}
</select>
<!-- 根据任务ID查询用户关联列表 -->
<select id="selectByTaskId" resultMap="BaseResultMap">
SELECT
<include refid="Base_Column_List" />
FROM tb_task_user
WHERE task_id = #{taskId}
ORDER BY create_time DESC
</select>
2025-10-22 17:57:30 +08:00
<select id="selectTaskItemByTaskId" resultMap="TaskItemResultMap">
SELECT
ttu.*,
tu.username
FROM tb_task_user ttu
INNER JOIN tb_sys_user tu ON ttu.user_id = tu.id
WHERE ttu.task_id = #{taskId} and ttu.deleted = 0 and tu.deleted = 0
ORDER BY ttu.create_time ASC
</select>
2025-10-24 18:28:26 +08:00
<select id="selectUserTaskItem" resultMap="TaskItemResultMap">
SELECT
ttu.*,
tu.username
FROM tb_task_user ttu
INNER JOIN tb_sys_user tu ON ttu.user_id = tu.id
WHERE ttu.task_id = #{taskId} and ttu.user_id = #{userId} and ttu.deleted = 0 and tu.deleted = 0
ORDER BY ttu.create_time ASC
</select>
2025-10-16 14:31:56 +08:00
<!-- 根据用户ID查询任务关联列表 -->
<select id="selectByUserId" resultMap="BaseResultMap">
SELECT
<include refid="Base_Column_List" />
FROM tb_task_user
WHERE user_id = #{userId}
ORDER BY create_time DESC
</select>
<!-- 根据任务ID和用户ID查询关联信息 -->
<select id="selectByTaskIdAndUserId" resultMap="BaseResultMap">
SELECT
<include refid="Base_Column_List" />
FROM tb_task_user
WHERE task_id = #{taskId} AND user_id = #{userId}
</select>
<!-- 根据状态查询任务用户关联列表 -->
<select id="selectByStatus" resultMap="BaseResultMap">
SELECT
<include refid="Base_Column_List" />
FROM tb_task_user
WHERE status = #{status}
ORDER BY create_time DESC
</select>
<!-- 根据用户ID和状态查询任务关联列表 -->
<select id="selectByUserIdAndStatus" resultMap="BaseResultMap">
SELECT
<include refid="Base_Column_List" />
FROM tb_task_user
WHERE user_id = #{userId} AND status = #{status}
ORDER BY create_time DESC
</select>
<!-- 检查任务用户关联是否存在 -->
<select id="countByTaskIdAndUserId" resultType="int">
SELECT COUNT(1)
FROM tb_task_user
WHERE task_id = #{taskId} AND user_id = #{userId}
<if test="excludeId != null and excludeId != ''">
AND id != #{excludeId}
</if>
</select>
<!-- 插入任务用户关联 -->
<insert id="insertTaskUser" parameterType="org.xyzh.common.dto.study.TbTaskUser">
INSERT INTO tb_task_user (
2025-10-24 18:28:26 +08:00
id, task_id, user_id, dept_id,creator, create_time
2025-10-16 14:31:56 +08:00
) VALUES (
2025-10-24 18:28:26 +08:00
#{id}, #{taskID}, #{userID}, #{deptID}, #{creator}, #{createTime}
2025-10-16 14:31:56 +08:00
)
</insert>
2025-10-24 18:28:26 +08:00
<!-- 更新任务用户关联 -->
<update id="updateTaskUser" parameterType="org.xyzh.common.dto.study.TbTaskUser">
UPDATE tb_task_user
<set>
<if test="status != null">
status = #{status},
</if>
<if test="progress != null">
progress = #{progress},
</if>
<if test="completeTime != null">
complete_time = #{completeTime},
</if>
<if test="updater != null">
updater = #{updater},
</if>
update_time = NOW()
</set>
WHERE task_id = #{taskID} AND user_id = #{userID} AND deleted = 0
</update>
2025-10-16 14:31:56 +08:00
<!-- 删除任务用户关联 -->
<delete id="deleteTaskUser" parameterType="org.xyzh.common.dto.study.TbTaskUser">
DELETE FROM tb_task_user
2025-10-22 17:57:30 +08:00
WHERE task_id = #{taskID}
2025-10-16 14:31:56 +08:00
</delete>
<!-- 批量插入任务用户关联 -->
<insert id="batchInsertTaskUsers" parameterType="java.util.List">
INSERT INTO tb_task_user (
id, task_id, user_id, dept_id, status, progress, complete_time,
2025-10-22 17:57:30 +08:00
creator, create_time
2025-10-16 14:31:56 +08:00
) VALUES
<foreach collection="taskUserList" item="item" separator=",">
(
#{item.id}, #{item.taskID}, #{item.userID}, #{item.deptID}, #{item.status},
2025-10-22 17:57:30 +08:00
#{item.progress}, #{item.completeTime}, #{item.creator}, #{item.createTime}
2025-10-16 14:31:56 +08:00
)
</foreach>
</insert>
<!-- 批量删除任务用户关联 -->
<delete id="batchDeleteTaskUsers">
DELETE FROM tb_task_user
2025-10-22 17:57:30 +08:00
WHERE (task_id, user_id) IN
<foreach collection="userIds" item="userID" open="(" separator="," close=")">
(#{taskId}, #{userID})
2025-10-16 14:31:56 +08:00
</foreach>
</delete>
<!-- 根据任务ID批量删除用户关联 -->
<delete id="deleteByTaskId">
DELETE FROM tb_task_user
WHERE task_id = #{taskId}
</delete>
<!-- 根据用户ID批量删除任务关联 -->
<delete id="deleteByUserId">
DELETE FROM tb_task_user
WHERE user_id = #{userId}
</delete>
<!-- 分页查询任务用户关联 -->
<select id="selectTaskUsersPage" resultMap="BaseResultMap">
SELECT
<include refid="Base_Column_List" />
FROM tb_task_user
<include refid="Where_Clause" />
ORDER BY create_time DESC
2025-10-20 15:08:20 +08:00
LIMIT #{pageParam.pageSize} OFFSET #{pageParam.offset}
2025-10-16 14:31:56 +08:00
</select>
<!-- 统计任务用户关联总数 -->
<select id="countTaskUsers" resultType="long">
SELECT COUNT(1)
FROM tb_task_user
<include refid="Where_Clause" />
</select>
2025-10-15 13:11:19 +08:00
</mapper>