diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java
index 96bd559..1d34237 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java
@@ -31,7 +31,8 @@
 import com.ruoyi.system.service.ISysPostService;
 import com.ruoyi.system.service.ISysRoleService;
 import com.ruoyi.system.service.ISysUserService;
-
+import java.util.Map;
+import java.util.HashMap;
 /**
  * 用户信息
  * 
@@ -53,6 +54,31 @@
     @Autowired
     private ISysPostService postService;
 
+
+    @GetMapping("/profile/info")
+    public AjaxResult getUserRateInfo() {
+        Long userId = getUserId(); // 当前登录用户ID
+
+        int uploadCount = userService.getUploadByUserId(userId);
+        int downloadCount = userService.getDownloadByUserId(userId);
+        int score = userService.getUserScore(userId);
+
+        // 计算上传率（可选）
+        String rateCount = "0%";
+        if (uploadCount + downloadCount > 0) {
+            double rate = (double) uploadCount / (uploadCount + downloadCount) * 100;
+            rateCount = String.format("%.1f%%", rate);
+        }
+
+        Map<String, Object> rateInfo = new HashMap<>();
+        rateInfo.put("uploadCount", uploadCount);
+        rateInfo.put("downloadCount", downloadCount);
+        rateInfo.put("rateCount", rateCount);
+        rateInfo.put("score", score);
+
+        return AjaxResult.success(rateInfo);
+    }
+    
     /**
      * 获取用户列表
      */
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java
index 76e1c79..b17312e 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java
@@ -124,4 +124,9 @@
      * @return 结果
      */
     public SysUser checkEmailUnique(String email);
+
+    public int getUploadByUserId(Long userId);
+    public int getDownloadByUserId(Long userId);
+    public int getUserScore(Long userId);
+
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java
index 10bc2ab..a27cb01 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java
@@ -203,4 +203,10 @@
      * @return 结果
      */
     public String importUser(List<SysUser> userList, Boolean isUpdateSupport, String operName);
+
+    public int getUploadByUserId(Long userId);
+
+    public int getDownloadByUserId(Long userId);
+
+    public int getUserScore(Long userId);
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java
index 82c303a..ef2b2a3 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java
@@ -547,4 +547,19 @@
         }
         return successMsg.toString();
     }
+
+    @Override
+    public int getUploadByUserId(Long userId) {
+        return userMapper.getUploadByUserId(userId);
+    }
+
+    @Override
+    public int getDownloadByUserId(Long userId) {
+        return userMapper.getDownloadByUserId(userId);
+    }
+
+    @Override
+    public int getUserScore(Long userId) {
+        return userMapper.getUserScore(userId);
+    }
 }
diff --git a/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml
index 0856cb2..d222434 100644
--- a/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml
+++ b/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml
@@ -55,8 +55,23 @@
 		    left join sys_user_role ur on u.user_id = ur.user_id
 		    left join sys_role r on r.role_id = ur.role_id
     </sql>
-    
-    <select id="selectUserList" parameterType="SysUser" resultMap="SysUserResult">
+
+	<!-- 获取用户上传次数 -->
+	<select id="getUploadByUserId" resultType="int">
+		SELECT uploaded FROM user_score WHERE user_id = #{userId}
+	</select>
+
+	<!-- 获取用户下载次数 -->
+	<select id="getDownloadByUserId" resultType="int">
+		SELECT downloaded FROM user_score WHERE user_id = #{userId}
+	</select>
+
+	<!-- 获取用户积分 -->
+	<select id="getUserScore" resultType="int">
+		SELECT score FROM user_score WHERE user_id = #{userId}
+	</select>
+
+	<select id="selectUserList" parameterType="SysUser" resultMap="SysUserResult">
 		select u.user_id, u.dept_id, u.nick_name, u.user_name, u.email, u.avatar, u.phonenumber, u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark, d.dept_name, d.leader from sys_user u
 		left join sys_dept d on u.dept_id = d.dept_id
 		where u.del_flag = '0'
