feat(core): 实现用户积分计算逻辑
- 新增积分规则处理模块
- 集成积分计算到相关业务流程中
fix(file): 修复上传工具中路径乱码和非法字符问题
- 使用 UTF-8 编码统一路径解析
- 增加路径合法性校验
fix(user): 修正用户 Passkey 生成与验证流程
- 修复部分场景下 Passkey 未生成的问题
- 调整 Passkey 校验逻辑,确保唯一性和安全性
Change-Id: Id5eacb20f354a07de01413474095c2b2b9b49231
diff --git a/ruoyi-admin/src/main/resources/application-druid.yml b/ruoyi-admin/src/main/resources/application-druid.yml
index 12ed4d4..ca1fce9 100644
--- a/ruoyi-admin/src/main/resources/application-druid.yml
+++ b/ruoyi-admin/src/main/resources/application-druid.yml
@@ -7,8 +7,8 @@
# 主库数据源
master:
url: jdbc:mysql://49.233.215.144:3306/pt_station?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
- username: sy
- password: sy_password
+ username: root
+ password: 22301058Zsy*
# 从库数据源
slave:
# 从数据源开关/默认关闭
diff --git a/ruoyi-admin/src/main/resources/application.yml b/ruoyi-admin/src/main/resources/application.yml
index cb1a87c..01b71fe 100644
--- a/ruoyi-admin/src/main/resources/application.yml
+++ b/ruoyi-admin/src/main/resources/application.yml
@@ -9,7 +9,7 @@
# 文件路径 示例( Windows配置D:/ruoyi/uploadPath,Linux配置 /home/ruoyi/uploadPath)
profile: D:/ruoyi/uploadPath
# 获取ip地址开关
- addressEnabled: false
+ addressEnabled: true
# 验证码类型 math 数字计算 char 字符验证
captchaType: math
@@ -75,7 +75,7 @@
# 数据库索引
database: 0
# 密码
- password:
+ password: 22301058Zsy*
# 连接超时时间
timeout: 10s
lettuce:
diff --git a/ruoyi-admin/src/main/resources/mapper/system/SysUserPasskeyMapper.xml b/ruoyi-admin/src/main/resources/mapper/system/SysUserPasskeyMapper.xml
new file mode 100644
index 0000000..949ac4f
--- /dev/null
+++ b/ruoyi-admin/src/main/resources/mapper/system/SysUserPasskeyMapper.xml
@@ -0,0 +1,62 @@
+<?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.authentication.mapper.SysUserPasskeyMapper">
+
+ <resultMap type="SysUserPasskey" id="SysUserPasskeyResult">
+ <result property="userId" column="user_id" />
+ <result property="passkey" column="passkey" />
+ <result property="createdAt" column="created_at" />
+ </resultMap>
+
+ <sql id="selectSysUserPasskeyVo">
+ select user_id, passkey, created_at from sys_user_passkey
+ </sql>
+
+ <select id="selectSysUserPasskeyList" parameterType="SysUserPasskey" resultMap="SysUserPasskeyResult">
+ <include refid="selectSysUserPasskeyVo"/>
+ <where>
+ <if test="passkey != null and passkey != ''"> and passkey = #{passkey}</if>
+ </where>
+ </select>
+
+ <select id="selectSysUserPasskeyByUserId" parameterType="Long" resultMap="SysUserPasskeyResult">
+ <include refid="selectSysUserPasskeyVo"/>
+ where user_id = #{userId}
+ </select>
+
+ <insert id="insertSysUserPasskey" parameterType="SysUserPasskey">
+ insert into sys_user_passkey
+ <trim prefix="(" suffix=")" suffixOverrides=",">
+ <if test="userId != null">user_id,</if>
+ <if test="passkey != null and passkey != ''">passkey,</if>
+ <if test="createdAt != null">created_at,</if>
+ </trim>
+ <trim prefix="values (" suffix=")" suffixOverrides=",">
+ <if test="userId != null">#{userId},</if>
+ <if test="passkey != null and passkey != ''">#{passkey},</if>
+ <if test="createdAt != null">#{createdAt},</if>
+ </trim>
+ </insert>
+
+ <update id="updateSysUserPasskey" parameterType="SysUserPasskey">
+ update sys_user_passkey
+ <trim prefix="SET" suffixOverrides=",">
+ <if test="passkey != null and passkey != ''">passkey = #{passkey},</if>
+ <if test="createdAt != null">created_at = #{createdAt},</if>
+ </trim>
+ where user_id = #{userId}
+ </update>
+
+ <delete id="deleteSysUserPasskeyByUserId" parameterType="Long">
+ delete from sys_user_passkey where user_id = #{userId}
+ </delete>
+
+ <delete id="deleteSysUserPasskeyByUserIds" parameterType="String">
+ delete from sys_user_passkey where user_id in
+ <foreach item="userId" collection="array" open="(" separator="," close=")">
+ #{userId}
+ </foreach>
+ </delete>
+</mapper>
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/resources/mapper/system/UserScoreMapper.xml b/ruoyi-admin/src/main/resources/mapper/system/UserScoreMapper.xml
new file mode 100644
index 0000000..2f0f7fc
--- /dev/null
+++ b/ruoyi-admin/src/main/resources/mapper/system/UserScoreMapper.xml
@@ -0,0 +1,78 @@
+<?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.authentication.mapper.UserScoreMapper">
+
+ <resultMap type="UserScore" id="UserScoreResult">
+ <result property="userId" column="user_id" />
+ <result property="uploaded" column="uploaded" />
+ <result property="downloaded" column="downloaded" />
+ <result property="bonus" column="bonus" />
+ <result property="score" column="score" />
+ <result property="updatedAt" column="updated_at" />
+ </resultMap>
+
+ <sql id="selectUserScoreVo">
+ select user_id, uploaded, downloaded, bonus, score, updated_at from user_score
+ </sql>
+
+ <select id="selectUserScoreList" parameterType="UserScore" resultMap="UserScoreResult">
+ <include refid="selectUserScoreVo"/>
+ <where>
+ <if test="uploaded != null and uploaded != ''"> and uploaded = #{uploaded}</if>
+ <if test="downloaded != null and downloaded != ''"> and downloaded = #{downloaded}</if>
+ <if test="bonus != null "> and bonus = #{bonus}</if>
+ <if test="score != null "> and score = #{score}</if>
+ <if test="updatedAt != null "> and updated_at = #{updatedAt}</if>
+ </where>
+ </select>
+
+ <select id="selectUserScoreByUserId" parameterType="Long" resultMap="UserScoreResult">
+ <include refid="selectUserScoreVo"/>
+ where user_id = #{userId}
+ </select>
+
+ <insert id="insertUserScore" parameterType="UserScore">
+ insert into user_score
+ <trim prefix="(" suffix=")" suffixOverrides=",">
+ <if test="userId != null">user_id,</if>
+ <if test="uploaded != null">uploaded,</if>
+ <if test="downloaded != null">downloaded,</if>
+ <if test="bonus != null">bonus,</if>
+
+ <if test="updatedAt != null">updated_at,</if>
+ </trim>
+ <trim prefix="values (" suffix=")" suffixOverrides=",">
+ <if test="userId != null">#{userId},</if>
+ <if test="uploaded != null">#{uploaded},</if>
+ <if test="downloaded != null">#{downloaded},</if>
+ <if test="bonus != null">#{bonus},</if>
+
+ <if test="updatedAt != null">#{updatedAt},</if>
+ </trim>
+ </insert>
+
+ <update id="updateUserScore" parameterType="UserScore">
+ update user_score
+ <trim prefix="SET" suffixOverrides=",">
+ <if test="uploaded != null">uploaded = #{uploaded},</if>
+ <if test="downloaded != null">downloaded = #{downloaded},</if>
+ <if test="bonus != null">bonus = #{bonus},</if>
+
+ <if test="updatedAt != null">updated_at = #{updatedAt},</if>
+ </trim>
+ where user_id = #{userId}
+ </update>
+
+ <delete id="deleteUserScoreByUserId" parameterType="Long">
+ delete from user_score where user_id = #{userId}
+ </delete>
+
+ <delete id="deleteUserScoreByUserIds" parameterType="String">
+ delete from user_score where user_id in
+ <foreach item="userId" collection="array" open="(" separator="," close=")">
+ #{userId}
+ </foreach>
+ </delete>
+</mapper>
\ No newline at end of file