feat: 初始化项目并完成基础功能开发
- 完成项目初始化
- 实现用户注册、登录功能
- 完成用户管理与权限管理模块
- 开发后端 Tracker 服务器项目管理接口
- 实现日志管理接口
Change-Id: Ia4bde1c9ff600352a7ff0caca0cc50b02cad1af7
diff --git a/ruoyi-admin/src/main/resources/mapper/system/TrackerProjectMapper.xml b/ruoyi-admin/src/main/resources/mapper/system/TrackerProjectMapper.xml
new file mode 100644
index 0000000..21e2223
--- /dev/null
+++ b/ruoyi-admin/src/main/resources/mapper/system/TrackerProjectMapper.xml
@@ -0,0 +1,82 @@
+<?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="com.ruoyi.tracker.mapper.TrackerProjectMapper">
+
+ <resultMap type="TrackerProject" id="TrackerProjectResult">
+ <result property="projectId" column="project_id" />
+ <result property="projectName" column="project_name" />
+ <result property="description" column="description" />
+ <result property="status" column="status" />
+ <result property="createBy" column="create_by" />
+ <result property="createTime" column="create_time" />
+ <result property="updateBy" column="update_by" />
+ <result property="updateTime" column="update_time" />
+ </resultMap>
+
+ <sql id="selectTrackerProjectVo">
+ select project_id, project_name, description, status, create_by, create_time, update_by, update_time from tracker_project
+ </sql>
+
+ <select id="selectTrackerProjectList" parameterType="TrackerProject" resultMap="TrackerProjectResult">
+ <include refid="selectTrackerProjectVo"/>
+ <where>
+ <if test="projectName != null and projectName != ''"> and project_name like concat('%', #{projectName}, '%')</if>
+ <if test="description != null and description != ''"> and description = #{description}</if>
+ <if test="status != null and status != ''"> and status = #{status}</if>
+ </where>
+ </select>
+
+ <select id="selectTrackerProjectByProjectId" parameterType="Long" resultMap="TrackerProjectResult">
+ <include refid="selectTrackerProjectVo"/>
+ where project_id = #{projectId}
+ </select>
+
+ <insert id="insertTrackerProject" parameterType="TrackerProject" useGeneratedKeys="true" keyProperty="projectId">
+ insert into tracker_project
+ <trim prefix="(" suffix=")" suffixOverrides=",">
+ <if test="projectName != null and projectName != ''">project_name,</if>
+ <if test="description != null">description,</if>
+ <if test="status != null">status,</if>
+ <if test="createBy != null">create_by,</if>
+ <if test="createTime != null">create_time,</if>
+ <if test="updateBy != null">update_by,</if>
+ <if test="updateTime != null">update_time,</if>
+ </trim>
+ <trim prefix="values (" suffix=")" suffixOverrides=",">
+ <if test="projectName != null and projectName != ''">#{projectName},</if>
+ <if test="description != null">#{description},</if>
+ <if test="status != null">#{status},</if>
+ <if test="createBy != null">#{createBy},</if>
+ <if test="createTime != null">#{createTime},</if>
+ <if test="updateBy != null">#{updateBy},</if>
+ <if test="updateTime != null">#{updateTime},</if>
+ </trim>
+ </insert>
+
+ <update id="updateTrackerProject" parameterType="TrackerProject">
+ update tracker_project
+ <trim prefix="SET" suffixOverrides=",">
+ <if test="projectName != null and projectName != ''">project_name = #{projectName},</if>
+ <if test="description != null">description = #{description},</if>
+ <if test="status != null">status = #{status},</if>
+ <if test="createBy != null">create_by = #{createBy},</if>
+ <if test="createTime != null">create_time = #{createTime},</if>
+ <if test="updateBy != null">update_by = #{updateBy},</if>
+ <if test="updateTime != null">update_time = #{updateTime},</if>
+ </trim>
+ where project_id = #{projectId}
+ </update>
+
+ <delete id="deleteTrackerProjectByProjectId" parameterType="Long">
+ delete from tracker_project where project_id = #{projectId}
+ </delete>
+
+ <delete id="deleteTrackerProjectByProjectIds" parameterType="String">
+ delete from tracker_project where project_id in
+ <foreach item="projectId" collection="array" open="(" separator="," close=")">
+ #{projectId}
+ </foreach>
+ </delete>
+</mapper>
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/resources/mapper/system/TrackerProjectUserMapper.xml b/ruoyi-admin/src/main/resources/mapper/system/TrackerProjectUserMapper.xml
new file mode 100644
index 0000000..aa543d6
--- /dev/null
+++ b/ruoyi-admin/src/main/resources/mapper/system/TrackerProjectUserMapper.xml
@@ -0,0 +1,66 @@
+<?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="com.ruoyi.tracker.mapper.TrackerProjectUserMapper">
+
+ <resultMap type="TrackerProjectUser" id="TrackerProjectUserResult">
+ <result property="projectId" column="project_id" />
+ <result property="userId" column="user_id" />
+ <result property="role" column="role" />
+ <result property="createTime" column="create_time" />
+ </resultMap>
+
+ <sql id="selectTrackerProjectUserVo">
+ select project_id, user_id, role, create_time from tracker_project_user
+ </sql>
+
+ <select id="selectTrackerProjectUserList" parameterType="TrackerProjectUser" resultMap="TrackerProjectUserResult">
+ <include refid="selectTrackerProjectUserVo"/>
+ <where>
+ <if test="role != null and role != ''"> and role = #{role}</if>
+ </where>
+ </select>
+
+ <select id="selectTrackerProjectUserByProjectId" parameterType="Long" resultMap="TrackerProjectUserResult">
+ <include refid="selectTrackerProjectUserVo"/>
+ where project_id = #{projectId}
+ </select>
+
+ <insert id="insertTrackerProjectUser" parameterType="TrackerProjectUser">
+ insert into tracker_project_user
+ <trim prefix="(" suffix=")" suffixOverrides=",">
+ <if test="projectId != null">project_id,</if>
+ <if test="userId != null">user_id,</if>
+ <if test="role != null and role != ''">role,</if>
+ <if test="createTime != null">create_time,</if>
+ </trim>
+ <trim prefix="values (" suffix=")" suffixOverrides=",">
+ <if test="projectId != null">#{projectId},</if>
+ <if test="userId != null">#{userId},</if>
+ <if test="role != null and role != ''">#{role},</if>
+ <if test="createTime != null">#{createTime},</if>
+ </trim>
+ </insert>
+
+ <update id="updateTrackerProjectUser" parameterType="TrackerProjectUser">
+ update tracker_project_user
+ <trim prefix="SET" suffixOverrides=",">
+ <if test="userId != null">user_id = #{userId},</if>
+ <if test="role != null and role != ''">role = #{role},</if>
+ <if test="createTime != null">create_time = #{createTime},</if>
+ </trim>
+ where project_id = #{projectId}
+ </update>
+
+ <delete id="deleteTrackerProjectUserByProjectId" parameterType="Long">
+ delete from tracker_project_user where project_id = #{projectId}
+ </delete>
+
+ <delete id="deleteTrackerProjectUserByProjectIds" parameterType="String">
+ delete from tracker_project_user where project_id in
+ <foreach item="projectId" collection="array" open="(" separator="," close=")">
+ #{projectId}
+ </foreach>
+ </delete>
+</mapper>
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/resources/mapper/system/TrackerTaskLogMapper.xml b/ruoyi-admin/src/main/resources/mapper/system/TrackerTaskLogMapper.xml
new file mode 100644
index 0000000..117d057
--- /dev/null
+++ b/ruoyi-admin/src/main/resources/mapper/system/TrackerTaskLogMapper.xml
@@ -0,0 +1,75 @@
+<?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="com.ruoyi.tracker.mapper.TrackerTaskLogMapper">
+
+ <resultMap type="TrackerTaskLog" id="TrackerTaskLogResult">
+ <result property="logId" column="log_id" />
+ <result property="taskId" column="task_id" />
+ <result property="userId" column="user_id" />
+ <result property="action" column="action" />
+ <result property="description" column="description" />
+ <result property="createTime" column="create_time" />
+ </resultMap>
+
+ <sql id="selectTrackerTaskLogVo">
+ select log_id, task_id, user_id, action, description, create_time from tracker_task_log
+ </sql>
+
+ <select id="selectTrackerTaskLogList" parameterType="TrackerTaskLog" resultMap="TrackerTaskLogResult">
+ <include refid="selectTrackerTaskLogVo"/>
+ <where>
+ <if test="taskId != null "> and task_id = #{taskId}</if>
+ <if test="userId != null "> and user_id = #{userId}</if>
+ <if test="action != null and action != ''"> and action = #{action}</if>
+ <if test="description != null and description != ''"> and description = #{description}</if>
+ </where>
+ </select>
+
+ <select id="selectTrackerTaskLogByLogId" parameterType="Long" resultMap="TrackerTaskLogResult">
+ <include refid="selectTrackerTaskLogVo"/>
+ where log_id = #{logId}
+ </select>
+
+ <insert id="insertTrackerTaskLog" parameterType="TrackerTaskLog" useGeneratedKeys="true" keyProperty="logId">
+ insert into tracker_task_log
+ <trim prefix="(" suffix=")" suffixOverrides=",">
+ <if test="taskId != null">task_id,</if>
+ <if test="userId != null">user_id,</if>
+ <if test="action != null and action != ''">action,</if>
+ <if test="description != null">description,</if>
+ <if test="createTime != null">create_time,</if>
+ </trim>
+ <trim prefix="values (" suffix=")" suffixOverrides=",">
+ <if test="taskId != null">#{taskId},</if>
+ <if test="userId != null">#{userId},</if>
+ <if test="action != null and action != ''">#{action},</if>
+ <if test="description != null">#{description},</if>
+ <if test="createTime != null">#{createTime},</if>
+ </trim>
+ </insert>
+
+ <update id="updateTrackerTaskLog" parameterType="TrackerTaskLog">
+ update tracker_task_log
+ <trim prefix="SET" suffixOverrides=",">
+ <if test="taskId != null">task_id = #{taskId},</if>
+ <if test="userId != null">user_id = #{userId},</if>
+ <if test="action != null and action != ''">action = #{action},</if>
+ <if test="description != null">description = #{description},</if>
+ <if test="createTime != null">create_time = #{createTime},</if>
+ </trim>
+ where log_id = #{logId}
+ </update>
+
+ <delete id="deleteTrackerTaskLogByLogId" parameterType="Long">
+ delete from tracker_task_log where log_id = #{logId}
+ </delete>
+
+ <delete id="deleteTrackerTaskLogByLogIds" parameterType="String">
+ delete from tracker_task_log where log_id in
+ <foreach item="logId" collection="array" open="(" separator="," close=")">
+ #{logId}
+ </foreach>
+ </delete>
+</mapper>
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/resources/mapper/system/TrackerTaskMapper.xml b/ruoyi-admin/src/main/resources/mapper/system/TrackerTaskMapper.xml
new file mode 100644
index 0000000..0042ed0
--- /dev/null
+++ b/ruoyi-admin/src/main/resources/mapper/system/TrackerTaskMapper.xml
@@ -0,0 +1,89 @@
+<?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="com.ruoyi.tracker.mapper.TrackerTaskMapper">
+
+ <resultMap type="TrackerTask" id="TrackerTaskResult">
+ <result property="taskId" column="task_id" />
+ <result property="projectId" column="project_id" />
+ <result property="taskName" column="task_name" />
+ <result property="description" column="description" />
+ <result property="assignedTo" column="assigned_to" />
+ <result property="status" column="status" />
+ <result property="priority" column="priority" />
+ <result property="createTime" column="create_time" />
+ <result property="updateTime" column="update_time" />
+ </resultMap>
+
+ <sql id="selectTrackerTaskVo">
+ select task_id, project_id, task_name, description, assigned_to, status, priority, create_time, update_time from tracker_task
+ </sql>
+
+ <select id="selectTrackerTaskList" parameterType="TrackerTask" resultMap="TrackerTaskResult">
+ <include refid="selectTrackerTaskVo"/>
+ <where>
+ <if test="projectId != null "> and project_id = #{projectId}</if>
+ <if test="taskName != null and taskName != ''"> and task_name like concat('%', #{taskName}, '%')</if>
+ <if test="description != null and description != ''"> and description = #{description}</if>
+ <if test="assignedTo != null "> and assigned_to = #{assignedTo}</if>
+ <if test="status != null and status != ''"> and status = #{status}</if>
+ <if test="priority != null and priority != ''"> and priority = #{priority}</if>
+ </where>
+ </select>
+
+ <select id="selectTrackerTaskByTaskId" parameterType="Long" resultMap="TrackerTaskResult">
+ <include refid="selectTrackerTaskVo"/>
+ where task_id = #{taskId}
+ </select>
+
+ <insert id="insertTrackerTask" parameterType="TrackerTask" useGeneratedKeys="true" keyProperty="taskId">
+ insert into tracker_task
+ <trim prefix="(" suffix=")" suffixOverrides=",">
+ <if test="projectId != null">project_id,</if>
+ <if test="taskName != null and taskName != ''">task_name,</if>
+ <if test="description != null">description,</if>
+ <if test="assignedTo != null">assigned_to,</if>
+ <if test="status != null">status,</if>
+ <if test="priority != null">priority,</if>
+ <if test="createTime != null">create_time,</if>
+ <if test="updateTime != null">update_time,</if>
+ </trim>
+ <trim prefix="values (" suffix=")" suffixOverrides=",">
+ <if test="projectId != null">#{projectId},</if>
+ <if test="taskName != null and taskName != ''">#{taskName},</if>
+ <if test="description != null">#{description},</if>
+ <if test="assignedTo != null">#{assignedTo},</if>
+ <if test="status != null">#{status},</if>
+ <if test="priority != null">#{priority},</if>
+ <if test="createTime != null">#{createTime},</if>
+ <if test="updateTime != null">#{updateTime},</if>
+ </trim>
+ </insert>
+
+ <update id="updateTrackerTask" parameterType="TrackerTask">
+ update tracker_task
+ <trim prefix="SET" suffixOverrides=",">
+ <if test="projectId != null">project_id = #{projectId},</if>
+ <if test="taskName != null and taskName != ''">task_name = #{taskName},</if>
+ <if test="description != null">description = #{description},</if>
+ <if test="assignedTo != null">assigned_to = #{assignedTo},</if>
+ <if test="status != null">status = #{status},</if>
+ <if test="priority != null">priority = #{priority},</if>
+ <if test="createTime != null">create_time = #{createTime},</if>
+ <if test="updateTime != null">update_time = #{updateTime},</if>
+ </trim>
+ where task_id = #{taskId}
+ </update>
+
+ <delete id="deleteTrackerTaskByTaskId" parameterType="Long">
+ delete from tracker_task where task_id = #{taskId}
+ </delete>
+
+ <delete id="deleteTrackerTaskByTaskIds" parameterType="String">
+ delete from tracker_task where task_id in
+ <foreach item="taskId" collection="array" open="(" separator="," close=")">
+ #{taskId}
+ </foreach>
+ </delete>
+</mapper>
\ No newline at end of file