显示用户积分
Change-Id: I5f1bfda3f2636352352e35f5ff358a8e06b7d8d0
diff --git a/react-ui/src/pages/User/Center/index.tsx b/react-ui/src/pages/User/Center/index.tsx
index 7272fa3..4028e11 100644
--- a/react-ui/src/pages/User/Center/index.tsx
+++ b/react-ui/src/pages/User/Center/index.tsx
@@ -60,122 +60,89 @@
// 渲染用户信息
+ // @ts-ignore
const renderUserInfo = ({
- userName,
- phonenumber,
- email,
- sex,
- dept,
- uploadCount,
- downloadCount,
- rateCount,
- score,
- }: Partial<API.CurrentUser>) => {
+ userName,
+ phonenumber,
+ email,
+ sex,
+ dept,
+ uploadCount,
+ downloadCount,
+ rateCount,
+ score,
+ level,
+ }: Partial<API.CurrentUser>) => {
return (
<List>
<List.Item>
<div>
- <UserOutlined
- style={{
- marginRight: 8,
- }}
- />
+ <UserOutlined style={{ marginRight: 8 }} />
用户名
</div>
<div>{userName}</div>
</List.Item>
<List.Item>
<div>
- <ManOutlined
- style={{
- marginRight: 8,
- }}
- />
+ <ManOutlined style={{ marginRight: 8 }} />
性别
</div>
<div>{sex === '1' ? '女' : '男'}</div>
</List.Item>
<List.Item>
<div>
- <MobileOutlined
- style={{
- marginRight: 8,
- }}
- />
+ <MobileOutlined style={{ marginRight: 8 }} />
电话
</div>
<div>{phonenumber}</div>
</List.Item>
<List.Item>
<div>
- <MailOutlined
- style={{
- marginRight: 8,
- }}
- />
+ <MailOutlined style={{ marginRight: 8 }} />
邮箱
</div>
<div>{email}</div>
</List.Item>
<List.Item>
<div>
- <MailOutlined
- style={{
- marginRight: 8,
- }}
- />
+ <MailOutlined style={{ marginRight: 8 }} />
上传量
</div>
<div>{uploadCount}</div>
</List.Item>
<List.Item>
<div>
- <MailOutlined
- style={{
- marginRight: 8,
- }}
- />
+ <MailOutlined style={{ marginRight: 8 }} />
下载量
</div>
<div>{downloadCount}</div>
</List.Item>
<List.Item>
<div>
- <MailOutlined
- style={{
- marginRight: 8,
- }}
- />
+ <MailOutlined style={{ marginRight: 8 }} />
分享率
</div>
<div>{rateCount}</div>
</List.Item>
- {/* <List.Item>
- <div>
- <ClusterOutlined
- style={{
- marginRight: 8,
- }}
- />
- 部门
- </div>
- <div>{dept?.deptName}</div>
- </List.Item> */}
<List.Item>
<div>
- <MailOutlined
- style={{
- marginRight: 8,
- }}
- />
+ <MailOutlined style={{ marginRight: 8 }} />
积分
</div>
<div>{score}</div>
</List.Item>
+ <List.Item>
+ <div>
+ <MailOutlined style={{ marginRight: 8 }} />
+ 用户等级
+ </div>
+ <div>{level}</div>
+ </List.Item>
</List>
);
};
+
// 渲染tab切换
const renderChildrenByTabKey = (tabValue: tabKeyType) => {
if (tabValue === 'base') {
@@ -205,6 +172,8 @@
<div className={styles.avatarHolder} onClick={() => { setCropperModalOpen(true) }}>
<img alt="" src={currentUser.avatar} />
</div>
+
+ `` `````````````````````````````````1
{renderUserInfo(currentUser)}
<Divider dashed />
{/* <div className={styles.team}>
diff --git a/react-ui/src/services/ant-design-pro/typings.d.ts b/react-ui/src/services/ant-design-pro/typings.d.ts
index 4ee1264..20f44dc 100644
--- a/react-ui/src/services/ant-design-pro/typings.d.ts
+++ b/react-ui/src/services/ant-design-pro/typings.d.ts
@@ -1,54 +1,110 @@
+/* eslint-disable */
+// 该文件由 OneAPI 自动生成,请勿手动修改!
+
declare namespace API {
- type CurrentUser = UserInfo & {
- signature?: string;
- title?: string;
- group?: string;
- tags?: { key?: string; label?: string }[];
- notifyCount?: number;
- unreadCount?: number;
- country?: string;
- access?: string;
- geographic?: {
- province?: { label?: string; key?: string };
- city?: { label?: string; key?: string };
- };
+ interface PageInfo {
+ current?: number;
+ pageSize?: number;
+ total?: number;
+ list?: Array<Record<string, any>>;
+ }
+
+ interface PageInfo_UserInfo_ {
+ current?: number;
+ pageSize?: number;
+ total?: number;
+ list?: Array<UserInfo>;
+ }
+
+ interface Result {
+ code: number;
+ msg: string;
+ data?: Record<string, any>;
+ }
+
+ interface Result_PageInfo_UserInfo__ {
+ code: number;
+ msg: string;
+ data?: PageInfo_UserInfo_;
+ }
+ interface UserInfoResult {
+ code?: number;
+ msg?: string;
+ user: UserInfo;
+ permissions: any;
+ roles: any;
+ }
+
+ interface Result_string_ {
+ success?: boolean;
+ errorMessage?: string;
+ data?: string;
+ }
+
+ type UserGenderEnum = 'MALE' | 'FEMALE';
+
+ interface UserInfo {
+ userId?: string;
+ userName?: string;
+ nickName?: string;
+ avatar?: string;
+ sex?: string;
+ email?: string;
+ gender?: UserGenderEnum;
+ unreadCount: number;
address?: string;
- phone?: string;
+ phonenumber?: string;
+ dept?: Dept;
+ roles?: Role[];
+ permissions: string[];
+ uploadCount?: number;
+ downloadCount?: number;
+ rateCount?: number;
+ score?: number;
+ }
+
+ interface UserInfoVO {
+ name?: string;
+ /** nick */
+ nickName?: string;
+ /** email */
+ email?: string;
+ }
+
+ type definitions_0 = null;
+
+ type MenuItemMeta = {
+ title: string;
+ icon: string;
+ noCache: boolean;
+ link: string;
};
- type ErrorResponse = {
- /** 业务约定的错误码 */
- errorCode: string;
- /** 业务上的错误信息 */
- errorMessage?: string;
- /** 业务上的请求是否成功 */
+ type RoutersMenuItem = {
+ alwaysShow?: boolean;
+ children?: RoutersMenuItem[];
+ component?: string;
+ hidden?: boolean;
+ meta: MenuItemMeta;
+ name: string;
+ path: string;
+ redirect?: string;
+ [key: string]: any;
+ };
+ interface GetRoutersResult {
+ code: number;
+ msg: string;
+ data: RoutersMenuItem[];
+ }
+
+ type NoticeIconList = {
+ data?: NoticeIconItem[];
+ /** 列表的内容总数 */
+ total?: number;
success?: boolean;
};
- type FakeCaptcha = {
- code?: number;
- status?: string;
- };
-
- type getFakeCaptchaParams = {
- /** 手机号 */
- phone?: string;
- };
-
- type LoginParams = {
- username?: string;
- password?: string;
- uuid?: string;
- autoLogin?: boolean;
- type?: string;
- };
-
- type LoginResult = {
- code: number;
- msg?: string;
- type?: string;
- token?: string;
- };
+ type NoticeIconItemType = 'notification' | 'message' | 'event';
type NoticeIconItem = {
id?: string;
@@ -63,46 +119,77 @@
type?: NoticeIconItemType;
};
- type NoticeIconItemType = 'notification' | 'message' | 'event';
-
- type NoticeIconList = {
- data?: NoticeIconItem[];
- /** 列表的内容总数 */
- total?: number;
- success?: boolean;
+ export type MenuType = {
+ menuId: number;
+ menuName: string;
+ parentId: string;
+ orderNum: number;
+ path: string;
+ component: string;
+ isFrame: number;
+ isCache: number;
+ menuType: string;
+ visible: string;
+ status: string;
+ perms: string;
+ icon: string;
+ createBy: string;
+ createTime: Date;
+ updateBy: string;
+ updateTime: Date;
+ remark: string;
};
- type PageParams = {
- current?: number;
- pageSize?: number;
+ export type MenuListParams = {
+ menuId?: string;
+ menuName?: string;
+ parentId?: string;
+ orderNum?: string;
+ path?: string;
+ component?: string;
+ isFrame?: string;
+ isCache?: string;
+ menuType?: string;
+ visible?: string;
+ status?: string;
+ perms?: string;
+ icon?: string;
+ createBy?: string;
+ createTime?: string;
+ updateBy?: string;
+ updateTime?: string;
+ remark?: string;
+ pageSize?: string;
+ currentPage?: string;
+ filter?: string;
+ sorter?: string;
};
- type RuleList = {
- data?: RuleListItem[];
- /** 列表的内容总数 */
- total?: number;
- success?: boolean;
+ export type DictTypeType = {
+ dictId: number;
+ dictName: string;
+ dictType: string;
+ status: string;
+ createBy: string;
+ createTime: Date;
+ updateBy: string;
+ updateTime: Date;
+ remark: string;
};
- type RuleListItem = {
- key?: number;
- disabled?: boolean;
- href?: string;
- avatar?: string;
- name?: string;
- owner?: string;
- desc?: string;
- callNo?: number;
- status?: number;
- updatedAt?: string;
- createdAt?: string;
- progress?: number;
- };
-
- type ruleParams = {
- /** 当前的页码 */
- current?: number;
- /** 页面的容量 */
- pageSize?: number;
+ export type DictTypeListParams = {
+ dictId?: string;
+ dictName?: string;
+ dictType?: string;
+ status?: string;
+ createBy?: string;
+ createTime?: string;
+ updateBy?: string;
+ updateTime?: string;
+ remark?: string;
+ pageSize?: string;
+ currentPage?: string;
+ filter?: string;
+ sorter?: string;
};
}
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 1d34237..c19ae8c 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
@@ -1,6 +1,8 @@
package com.ruoyi.web.controller.system;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
import java.util.stream.Collectors;
import jakarta.servlet.http.HttpServletResponse;
import org.apache.commons.lang3.ArrayUtils;
@@ -31,8 +33,7 @@
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;
+
/**
* 用户信息
*
@@ -54,7 +55,6 @@
@Autowired
private ISysPostService postService;
-
@GetMapping("/profile/info")
public AjaxResult getUserRateInfo() {
Long userId = getUserId(); // 当前登录用户ID
@@ -62,6 +62,7 @@
int uploadCount = userService.getUploadByUserId(userId);
int downloadCount = userService.getDownloadByUserId(userId);
int score = userService.getUserScore(userId);
+ int level = userService.getUserLevel(userId);
// 计算上传率(可选)
String rateCount = "0%";
@@ -75,10 +76,11 @@
rateInfo.put("downloadCount", downloadCount);
rateInfo.put("rateCount", rateCount);
rateInfo.put("score", score);
+ rateInfo.put("level", level);
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 b17312e..9e14af8 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,9 +124,8 @@
* @return 结果
*/
public SysUser checkEmailUnique(String email);
-
public int getUploadByUserId(Long userId);
public int getDownloadByUserId(Long userId);
public int getUserScore(Long userId);
-
+ public int getUserLevel(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 a27cb01..bec77ff 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
@@ -209,4 +209,6 @@
public int getDownloadByUserId(Long userId);
public int getUserScore(Long userId);
+
+ public int getUserLevel(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 ef2b2a3..503581e 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
@@ -562,4 +562,9 @@
public int getUserScore(Long userId) {
return userMapper.getUserScore(userId);
}
+
+ @Override
+ public int getUserLevel(Long userId) {
+ return userMapper.getUserLevel(userId);
+ }
}
diff --git a/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml
index d222434..2423536 100644
--- a/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml
+++ b/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml
@@ -71,6 +71,16 @@
SELECT score FROM user_score WHERE user_id = #{userId}
</select>
+ <!-- 获取用户等级(总积分 / 10 向下取整) -->
+ <select id="getUserLevel" resultType="int">
+ SELECT IFNULL(SUM(score), 10) / 10
+ FROM user_tag_scores
+ 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