feat: 初始化项目并完成基础功能开发

- 完成项目初始化
- 实现用户注册、登录功能
- 完成用户管理与权限管理模块
- 开发后端 Tracker 服务器项目管理接口
- 实现日志管理接口
Change-Id: Ia4bde1c9ff600352a7ff0caca0cc50b02cad1af7
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