serv-权限+文件下载

This commit is contained in:
2025-10-18 17:57:14 +08:00
parent e0f4815d48
commit b3424e554f
30 changed files with 235 additions and 105 deletions

View File

@@ -1,31 +0,0 @@
-- --------------------------------------------------------
-- 文件上传记录表
-- --------------------------------------------------------
CREATE TABLE IF NOT EXISTS `tb_sys_file` (
`id` VARCHAR(50) NOT NULL COMMENT '主键ID',
`file_id` VARCHAR(64) NOT NULL COMMENT '文件ID',
`file_name` VARCHAR(255) NOT NULL COMMENT '存储文件名UUID生成',
`original_name` VARCHAR(255) NOT NULL COMMENT '原始文件名',
`file_path` VARCHAR(500) NOT NULL COMMENT '文件存储路径',
`file_url` VARCHAR(500) DEFAULT NULL COMMENT '文件访问URL',
`file_size` BIGINT NOT NULL COMMENT '文件大小(字节)',
`file_type` VARCHAR(50) DEFAULT NULL COMMENT '文件类型image、document、video等',
`mime_type` VARCHAR(100) DEFAULT NULL COMMENT 'MIME类型image/jpeg',
`storage_type` VARCHAR(20) NOT NULL DEFAULT 'local' COMMENT '存储类型local-本地存储、minio-MinIO存储、oss-阿里云OSS等',
`module` VARCHAR(50) DEFAULT NULL COMMENT '所属模块user、news、course等',
`business_id` VARCHAR(64) DEFAULT NULL COMMENT '业务ID关联的业务数据ID',
`uploader` VARCHAR(64) DEFAULT NULL COMMENT '上传者用户ID',
`create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`delete_time` DATETIME DEFAULT NULL COMMENT '删除时间',
`deleted` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否删除0-否1-是)',
PRIMARY KEY (`id`),
INDEX `idx_file_id` (`file_id`),
INDEX `idx_file_name` (`file_name`),
INDEX `idx_uploader` (`uploader`),
INDEX `idx_module_business` (`module`, `business_id`),
INDEX `idx_storage_type` (`storage_type`),
INDEX `idx_deleted` (`deleted`),
INDEX `idx_create_time` (`create_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='文件上传记录表';

View File

@@ -87,26 +87,39 @@ CREATE TABLE `tb_sys_notification` (
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='系统通知表'; ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='系统通知表';
-- 文件上传记录表 -- 文件上传记录表
-- --------------------------------------------------------
-- 文件上传记录表
-- --------------------------------------------------------
DROP TABLE IF EXISTS `tb_sys_file`; DROP TABLE IF EXISTS `tb_sys_file`;
CREATE TABLE `tb_sys_file` ( CREATE TABLE IF NOT EXISTS `tb_sys_file` (
`id` VARCHAR(50) NOT NULL COMMENT '文件ID', `id` VARCHAR(50) NOT NULL COMMENT '主键ID',
`file_name` VARCHAR(255) NOT NULL COMMENT '文件', `file_id` VARCHAR(64) NOT NULL COMMENT '文件ID',
`file_name` VARCHAR(255) NOT NULL COMMENT '存储文件名UUID生成',
`original_name` VARCHAR(255) NOT NULL COMMENT '原始文件名', `original_name` VARCHAR(255) NOT NULL COMMENT '原始文件名',
`file_path` VARCHAR(500) NOT NULL COMMENT '文件路径', `file_path` VARCHAR(500) NOT NULL COMMENT '文件存储路径',
`file_url` VARCHAR(500) DEFAULT NULL COMMENT '访问URL', `file_url` VARCHAR(500) DEFAULT NULL COMMENT '文件访问URL',
`file_size` BIGINT(20) DEFAULT 0 COMMENT '文件大小(字节)', `file_size` BIGINT NOT NULL COMMENT '文件大小(字节)',
`file_type` VARCHAR(50) DEFAULT NULL COMMENT '文件类型', `file_type` VARCHAR(50) DEFAULT NULL COMMENT '文件类型image、document、video等',
`mime_type` VARCHAR(100) DEFAULT NULL COMMENT 'MIME类型', `mime_type` VARCHAR(100) DEFAULT NULL COMMENT 'MIME类型image/jpeg',
`module` VARCHAR(50) DEFAULT NULL COMMENT '所属模块', `storage_type` VARCHAR(20) NOT NULL DEFAULT 'local' COMMENT '存储类型local-本地存储、minio-MinIO存储、oss-阿里云OSS等',
`business_id` VARCHAR(50) DEFAULT NULL COMMENT '业务ID', `module` VARCHAR(50) DEFAULT NULL COMMENT '所属模块user、news、course等',
`uploader` VARCHAR(50) DEFAULT NULL COMMENT '上传者', `business_id` VARCHAR(64) DEFAULT NULL COMMENT '业务ID关联的业务数据ID',
`create_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '上传时间', `uploader` VARCHAR(64) DEFAULT NULL COMMENT '上传者用户ID',
`create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`delete_time` DATETIME DEFAULT NULL COMMENT '删除时间',
`deleted` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否删除0-否1-是)',
PRIMARY KEY (`id`), PRIMARY KEY (`id`),
KEY `idx_module` (`module`), INDEX `idx_file_id` (`file_id`),
KEY `idx_business` (`business_id`), INDEX `idx_file_name` (`file_name`),
KEY `idx_uploader` (`uploader`), INDEX `idx_uploader` (`uploader`),
KEY `idx_create_time` (`create_time`) INDEX `idx_module_business` (`module`, `business_id`),
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='文件上传记录表'; INDEX `idx_storage_type` (`storage_type`),
INDEX `idx_deleted` (`deleted`),
INDEX `idx_create_time` (`create_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='文件上传记录表';
-- 数据字典表 -- 数据字典表
DROP TABLE IF EXISTS `tb_sys_dict_type`; DROP TABLE IF EXISTS `tb_sys_dict_type`;

View File

@@ -31,6 +31,7 @@ CREATE TABLE `tb_sys_user_info` (
`family_name` VARCHAR(50) DEFAULT NULL COMMENT '', `family_name` VARCHAR(50) DEFAULT NULL COMMENT '',
`given_name` VARCHAR(50) DEFAULT NULL COMMENT '', `given_name` VARCHAR(50) DEFAULT NULL COMMENT '',
`full_name` VARCHAR(100) DEFAULT NULL COMMENT '全名', `full_name` VARCHAR(100) DEFAULT NULL COMMENT '全名',
`level` INT(4) DEFAULT 1 COMMENT '等级',
`id_card` VARCHAR(50) DEFAULT NULL COMMENT '身份证号', `id_card` VARCHAR(50) DEFAULT NULL COMMENT '身份证号',
`address` VARCHAR(255) DEFAULT NULL COMMENT '地址', `address` VARCHAR(255) DEFAULT NULL COMMENT '地址',
`create_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `create_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',

View File

@@ -35,9 +35,6 @@ SOURCE createTableAI.sql;
-- 10. 创建系统配置和日志相关表 -- 10. 创建系统配置和日志相关表
SOURCE createTableSystem.sql; SOURCE createTableSystem.sql;
-- 11. 创建文件系统相关表
SOURCE createTableFile.sql;
-- ===================================================== -- =====================================================
-- 插入初始数据 -- 插入初始数据
-- ===================================================== -- =====================================================

View File

@@ -5,13 +5,15 @@ INSERT INTO `tb_sys_dept` (id,dept_id,name, description) VALUES ('1','root_depar
INSERT INTO `tb_sys_dept` (id,dept_id,name, parent_id, description) VALUES ('2','default_department', '默认部门', 'root_department', '系统默认创建的部门'); INSERT INTO `tb_sys_dept` (id,dept_id,name, parent_id, description) VALUES ('2','default_department', '默认部门', 'root_department', '系统默认创建的部门');
-- 插入角色数据 -- 插入角色数据
INSERT INTO `tb_sys_role` (id,role_id, name, description) VALUES ('1','superadmin', '管理员', '系统管理员角色'); INSERT INTO `tb_sys_role` (id,role_id, name, description) VALUES ('1','superadmin', '超级管理员', '超级管理员角色');
INSERT INTO `tb_sys_role` (id,role_id, name, description) VALUES ('2','freedom', '自由角色', '自由角色'); INSERT INTO `tb_sys_role` (id,role_id, name, description) VALUES ('2','admin', '管理员', '管理员角色');
INSERT INTO `tb_sys_role` (id,role_id, name, description) VALUES ('3','freedom', '自由角色', '自由角色');
-- 插入部门-角色关联数据 -- 插入部门-角色关联数据
INSERT INTO `tb_sys_dept_role` (id, dept_id, role_id, creator, create_time) VALUES INSERT INTO `tb_sys_dept_role` (id, dept_id, role_id, creator, create_time) VALUES
('1', 'root_department', 'superadmin', '1', now()), ('1', 'root_department', 'superadmin', '1', now()),
('2', 'default_department', 'freedom', '1', now()); ('2', 'default_department', 'admin', '1', now()),
('3', 'default_department', 'freedom', '1', now());
-- 插入用户-角色关联数据 -- 插入用户-角色关联数据
INSERT INTO `tb_sys_user_dept_role` (id, user_id, dept_id, role_id, creator, create_time) VALUES ('1', '1', 'root_department', 'superadmin', '1', now()); INSERT INTO `tb_sys_user_dept_role` (id, user_id, dept_id, role_id, creator, create_time) VALUES ('1', '1', 'root_department', 'superadmin', '1', now());
@@ -36,10 +38,11 @@ INSERT INTO `tb_sys_permission` (id,permission_id, name, code, description, modu
('6','perm_system_user_manage', '系统用户查看', 'system:user:manage', '系统用户查看权限', 'module_system', '1', now()), ('6','perm_system_user_manage', '系统用户查看', 'system:user:manage', '系统用户查看权限', 'module_system', '1', now()),
('7','perm_system_module_manage', '系统模块查看', 'system:module:manage', '系统模块查看权限', 'module_system', '1', now()), ('7','perm_system_module_manage', '系统模块查看', 'system:module:manage', '系统模块查看权限', 'module_system', '1', now()),
('8','perm_news_manage', '新闻管理', 'news:manage', '新闻管理权限', 'module_news', '1', now()), ('8','perm_news_manage', '新闻管理', 'news:manage', '新闻管理权限', 'module_news', '1', now()),
('9','perm_study_manage', '学习管理', 'study:manage', '学习管理权限', 'module_study', '1', now()), ('9','perm_news_article_add', '文章添加', 'news:manage', '文章添加权限', 'module_news', '1', now()),
('10','perm_ai_manage', 'AI管理', 'ai:manage', 'AI管理权限', 'module_ai', '1', now()), ('10','perm_study_manage', '学习管理', 'study:manage', '学习管理权限', 'module_study', '1', now()),
('11','perm_usercenter_manage', '用户中心管理', 'usercenter:manage', '用户中心管理权限', 'module_usercenter', '1', now()), ('11','perm_ai_manage', 'AI管理', 'ai:manage', 'AI管理权限', 'module_ai', '1', now()),
('12','perm_file_manage', '文件管理', 'file:manage', '文件管理权限', 'module_file', '1', now()); ('12','perm_usercenter_manage', '用户中心管理', 'usercenter:manage', '用户中心管理权限', 'module_usercenter', '1', now()),
('13','perm_file_manage', '文件管理', 'file:manage', '文件管理权限', 'module_file', '1', now());
-- 插入角色-权限关联数据 -- 插入角色-权限关联数据
INSERT INTO `tb_sys_role_permission` (id, role_id, permission_id, creator, create_time) VALUES INSERT INTO `tb_sys_role_permission` (id, role_id, permission_id, creator, create_time) VALUES
@@ -52,11 +55,12 @@ INSERT INTO `tb_sys_role_permission` (id, role_id, permission_id, creator, creat
('6', 'superadmin', 'perm_system_user_manage', '1', now()), ('6', 'superadmin', 'perm_system_user_manage', '1', now()),
('7', 'superadmin', 'perm_system_module_manage', '1', now()), ('7', 'superadmin', 'perm_system_module_manage', '1', now()),
('8', 'superadmin', 'perm_news_manage', '1', now()), ('8', 'superadmin', 'perm_news_manage', '1', now()),
('9', 'superadmin', 'perm_study_manage', '1', now()), ('9', 'superadmin', 'perm_news_article_add', '1', now()),
('10', 'superadmin', 'perm_ai_manage', '1', now()), ('10', 'superadmin', 'perm_study_manage', '1', now()),
('11', 'superadmin', 'perm_usercenter_manage', '1', now()), ('11', 'superadmin', 'perm_ai_manage', '1', now()),
('12', 'superadmin', 'perm_file_manage', '1', now()), ('12', 'superadmin', 'perm_usercenter_manage', '1', now()),
('13', 'freedom', 'perm_default', '1', now()); ('13', 'superadmin', 'perm_file_manage', '1', now()),
('14', 'freedom', 'perm_default', '1', now());
-- 插入前端菜单数据 -- 插入前端菜单数据
INSERT INTO `tb_sys_menu` (id, menu_id, name, parent_id, url, component, icon, order_num, type, layout, creator, create_time) VALUES INSERT INTO `tb_sys_menu` (id, menu_id, name, parent_id, url, component, icon, order_num, type, layout, creator, create_time) VALUES
@@ -110,6 +114,9 @@ INSERT INTO `tb_sys_menu` (id, menu_id, name, parent_id, url, component, icon, o
('3002', 'menu_admin_article', '文章管理', 'menu_admin_resource_manage', '/admin/manage/resource/article', 'admin/manage/resource/ArticleManagementView', 'el-icon-document', 2, 1, 'NavigationLayout', '1', now()), ('3002', 'menu_admin_article', '文章管理', 'menu_admin_resource_manage', '/admin/manage/resource/article', 'admin/manage/resource/ArticleManagementView', 'el-icon-document', 2, 1, 'NavigationLayout', '1', now()),
('3003', 'menu_admin_data_records', '数据记录', 'menu_admin_resource_manage', '/admin/manage/resource/data-records', 'admin/manage/resource/DataRecordsView', 'el-icon-data-line', 3, 1, 'NavigationLayout', '1', now()), ('3003', 'menu_admin_data_records', '数据记录', 'menu_admin_resource_manage', '/admin/manage/resource/data-records', 'admin/manage/resource/DataRecordsView', 'el-icon-data-line', 3, 1, 'NavigationLayout', '1', now()),
-- 文章相关
('3010', 'menu_article_add', '文章添加', 'menu_admin_article', '/article/add', 'article/ArticleAddView', 'el-icon-plus', 1, 3, 'NavigationLayout', '1', now()),
-- 运营管理 -- 运营管理
('4000', 'menu_admin_content_manage', '运营管理', NULL, '', '', 'el-icon-s-operation', 4, 1, '', '1', now()), ('4000', 'menu_admin_content_manage', '运营管理', NULL, '', '', 'el-icon-s-operation', 4, 1, '', '1', now()),
('4001', 'menu_admin_banner', 'Banner管理', 'menu_admin_content_manage', '/admin/manage/content/banner', 'admin/manage/content/BannerManagementView', 'el-icon-picture', 1, 1, 'NavigationLayout', '1', now()), ('4001', 'menu_admin_banner', 'Banner管理', 'menu_admin_content_manage', '/admin/manage/content/banner', 'admin/manage/content/BannerManagementView', 'el-icon-picture', 1, 1, 'NavigationLayout', '1', now()),
@@ -159,6 +166,7 @@ INSERT INTO `tb_sys_menu_permission` (id, permission_id, menu_id, creator, creat
('117', 'perm_default', 'menu_account_settings', '1', now()), ('117', 'perm_default', 'menu_account_settings', '1', now()),
('118', 'perm_ai_manage', 'menu_ai_assistant', '1', now()), ('118', 'perm_ai_manage', 'menu_ai_assistant', '1', now()),
('119', 'perm_default', 'menu_user_dropdown', '1', now()), ('119', 'perm_default', 'menu_user_dropdown', '1', now()),
('120', 'perm_news_article_add', 'menu_article_add', '1', now()),
-- 后端管理菜单权限关联 -- 后端管理菜单权限关联

View File

@@ -145,6 +145,7 @@ show_initialization_info() {
print_message $YELLOW " - 学习管理" print_message $YELLOW " - 学习管理"
print_message $YELLOW " - AI智能体" print_message $YELLOW " - AI智能体"
print_message $YELLOW " - 系统配置" print_message $YELLOW " - 系统配置"
print_message $YELLOW " - 文件管理"
print_message $BLUE "=====================================================" print_message $BLUE "====================================================="
} }

View File

@@ -75,6 +75,13 @@
<mainClass>org.xyzh.App</mainClass> <mainClass>org.xyzh.App</mainClass>
</configuration> </configuration>
</plugin> </plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<parameters>true</parameters>
</configuration>
</plugin>
</plugins> </plugins>
</build> </build>

View File

@@ -61,19 +61,22 @@ school-news:
max-login-attempts: 5 max-login-attempts: 5
lockout-duration: 30 # 锁定30分钟 lockout-duration: 30 # 锁定30分钟
# 免登录白名单 # 免登录白名单(需要包含 context-path
white-list: white-list:
- "/auth/login" - "/schoolNewsServ/auth/login"
- "/auth/logout" - "/schoolNewsServ/auth/logout"
- "/auth/captcha" - "/schoolNewsServ/auth/captcha"
- "/auth/health" - "/schoolNewsServ/auth/health"
- "/actuator/**" - "/schoolNewsServ/actuator/.*"
- "/swagger-ui/**" - "/schoolNewsServ/swagger-ui/.*"
- "/v3/api-docs/**" - "/schoolNewsServ/v3/api-docs/.*"
- "/favicon.ico" - "/schoolNewsServ/favicon.ico"
- "/error" - "/schoolNewsServ/error"
- "/public/**" - "/schoolNewsServ/public/.*"
- "/static/**" - "/schoolNewsServ/static/.*"
- "/schoolNewsServ/file/download/.*"
# MyBatis Plus配置 # MyBatis Plus配置
mybatis-plus: mybatis-plus:

Binary file not shown.

After

Width:  |  Height:  |  Size: 884 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 884 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 884 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 884 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 884 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 884 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 884 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 884 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 884 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 884 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 884 KiB

View File

@@ -8,6 +8,7 @@ import org.xyzh.common.dto.user.TbSysUser;
import org.xyzh.common.dto.user.TbSysUserDeptRole; import org.xyzh.common.dto.user.TbSysUserDeptRole;
import org.xyzh.common.dto.user.TbSysUserInfo; import org.xyzh.common.dto.user.TbSysUserInfo;
import org.xyzh.common.vo.UserDeptRoleVO; import org.xyzh.common.vo.UserDeptRoleVO;
import org.xyzh.common.vo.UserVO;
/** /**
* @description UserRemoteService.java文件描述 用户远程服务接口 * @description UserRemoteService.java文件描述 用户远程服务接口
@@ -198,4 +199,13 @@ public interface UserService {
* @since 2025-10-06 * @since 2025-10-06
*/ */
ResultDomain<TbSysUserInfo> updateUserInfo(TbSysUserInfo userInfo); ResultDomain<TbSysUserInfo> updateUserInfo(TbSysUserInfo userInfo);
/**
* @description 获取用户信息总览
* @param userId 用户ID
* @return ResultDomain<TbSysUserInfo> 用户信息总览
* @author yslg
* @since 2025-10-18
*/
ResultDomain<UserVO> getUserInfoTotal(String userId);
} }

View File

@@ -56,7 +56,14 @@ public class TbSysUserInfo extends BaseDTO {
private String fullName; private String fullName;
/** /**
* @description ID卡号 * @description 等级
* @author yslg
* @since 2025-10-18
*/
private Integer level;
/**
* @description 身份证号
* @author yslg * @author yslg
* @since 2025-09-11 * @since 2025-09-11
*/ */
@@ -117,6 +124,14 @@ public class TbSysUserInfo extends BaseDTO {
this.fullName = fullName; this.fullName = fullName;
} }
public Integer getLevel() {
return level;
}
public void setLevel(Integer level) {
this.level = level;
}
public String getIdCard() { public String getIdCard() {
return idCard; return idCard;
} }
@@ -144,6 +159,7 @@ public class TbSysUserInfo extends BaseDTO {
", familyName='" + familyName + '\'' + ", familyName='" + familyName + '\'' +
", givenName='" + givenName + '\'' + ", givenName='" + givenName + '\'' +
", fullName='" + fullName + '\'' + ", fullName='" + fullName + '\'' +
", level=" + level +
", idCard='" + idCard + '\'' + ", idCard='" + idCard + '\'' +
", address='" + address + '\'' + ", address='" + address + '\'' +
", createTime=" + getCreateTime() + ", createTime=" + getCreateTime() +

View File

@@ -1,5 +1,7 @@
package org.xyzh.common.vo; package org.xyzh.common.vo;
import java.util.Date;
public class UserVO { public class UserVO {
private String id; private String id;
@@ -9,17 +11,20 @@ public class UserVO {
private String phone; private String phone;
private String wechatID; private String wechatID;
private String avatar; private String avatar;
private String gender; private Integer gender;
private String familyName; private String familyName;
private String givenName; private String givenName;
private String fullName; private String fullName;
private Integer level;
private String idCard; private String idCard;
private String address; private String address;
private String createTime; private String deptName;
private String updateTime; private String roleName;
private String deleteTime; private Date createTime;
private String deleted; private Date updateTime;
private String status; private Date deleteTime;
private Boolean deleted;
private Integer status;
public String getId() { public String getId() {
return id; return id;
} }
@@ -62,10 +67,10 @@ public class UserVO {
public void setAvatar(String avatar) { public void setAvatar(String avatar) {
this.avatar = avatar; this.avatar = avatar;
} }
public String getGender() { public Integer getGender() {
return gender; return gender;
} }
public void setGender(String gender) { public void setGender(Integer gender) {
this.gender = gender; this.gender = gender;
} }
public String getFamilyName() { public String getFamilyName() {
@@ -98,34 +103,52 @@ public class UserVO {
public void setAddress(String address) { public void setAddress(String address) {
this.address = address; this.address = address;
} }
public String getCreateTime() { public String getDeptName() {
return deptName;
}
public void setDeptName(String deptName) {
this.deptName = deptName;
}
public String getRoleName() {
return roleName;
}
public void setRoleName(String roleName) {
this.roleName = roleName;
}
public Integer getLevel() {
return level;
}
public void setLevel(Integer level) {
this.level = level;
}
public Date getCreateTime() {
return createTime; return createTime;
} }
public void setCreateTime(String createTime) { public void setCreateTime(Date createTime) {
this.createTime = createTime; this.createTime = createTime;
} }
public String getUpdateTime() { public Date getUpdateTime() {
return updateTime; return updateTime;
} }
public void setUpdateTime(String updateTime) { public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime; this.updateTime = updateTime;
} }
public String getDeleteTime() { public Date getDeleteTime() {
return deleteTime; return deleteTime;
} }
public void setDeleteTime(String deleteTime) { public void setDeleteTime(Date deleteTime) {
this.deleteTime = deleteTime; this.deleteTime = deleteTime;
} }
public String getDeleted() { public Boolean getDeleted() {
return deleted; return deleted;
} }
public void setDeleted(String deleted) { public void setDeleted(Boolean deleted) {
this.deleted = deleted; this.deleted = deleted;
} }
public String getStatus() { public Integer getStatus() {
return status; return status;
} }
public void setStatus(String status) { public void setStatus(Integer status) {
this.status = status; this.status = status;
} }

View File

@@ -78,4 +78,16 @@
</dependency> </dependency>
</dependencies> </dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<parameters>true</parameters>
</configuration>
</plugin>
</plugins>
</build>
</project> </project>

View File

@@ -46,7 +46,7 @@ file:
- type: local - type: local
enabled: true enabled: true
base-path: ./uploads base-path: ./uploads
url-prefix: http://localhost:8080/files
# MinIO存储配置如不需要可以删除或设置enabled为false # MinIO存储配置如不需要可以删除或设置enabled为false
# - type: minio # - type: minio
@@ -55,8 +55,10 @@ file:
# access-key: minioadmin # access-key: minioadmin
# secret-key: minioadmin # secret-key: minioadmin
# bucket-name: school-news # bucket-name: school-news
# 认证配置
# 服务端口 school-news:
server: auth:
port: 8086 # 免登录白名单 - file模块
white-list:
- "/file/download/**"

View File

@@ -5,6 +5,7 @@ import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import org.xyzh.common.dto.user.TbSysUser; import org.xyzh.common.dto.user.TbSysUser;
import org.xyzh.common.dto.user.TbSysUserInfo; import org.xyzh.common.dto.user.TbSysUserInfo;
import org.xyzh.common.vo.UserVO;
import java.util.List; import java.util.List;
@@ -123,4 +124,13 @@ public interface UserMapper extends BaseMapper<TbSysUser> {
* @since 2025-10-06 * @since 2025-10-06
*/ */
int updateUserInfo(@Param("userInfo") TbSysUserInfo userInfo); int updateUserInfo(@Param("userInfo") TbSysUserInfo userInfo);
/**
* @description 获取用户信息总览
* @param userId 用户ID
* @return UserVO 用户信息总览
* @author yslg
* @since 2025-10-18
*/
UserVO selectUserInfoTotal(@Param("userId") String userId);
} }

View File

@@ -12,6 +12,7 @@ import org.xyzh.common.dto.user.TbSysUserDeptRole;
import org.xyzh.common.dto.user.TbSysUserInfo; import org.xyzh.common.dto.user.TbSysUserInfo;
import org.xyzh.common.utils.IDUtils; import org.xyzh.common.utils.IDUtils;
import org.xyzh.common.vo.UserDeptRoleVO; import org.xyzh.common.vo.UserDeptRoleVO;
import org.xyzh.common.vo.UserVO;
import org.xyzh.system.mapper.UserMapper; import org.xyzh.system.mapper.UserMapper;
import org.xyzh.system.mapper.UserInfoMapper; import org.xyzh.system.mapper.UserInfoMapper;
import org.xyzh.system.mapper.UserDeptRoleMapper; import org.xyzh.system.mapper.UserDeptRoleMapper;
@@ -713,4 +714,19 @@ public class SysUserServiceImpl implements SysUserService {
} }
@Override
public ResultDomain<UserVO> getUserInfoTotal(String userId) {
ResultDomain<UserVO> resultDomain = new ResultDomain<>();
try {
logger.info("开始获取用户信息总览:{}", userId);
UserVO userVO = userMapper.selectUserInfoTotal(userId);
resultDomain.success("获取用户信息总览成功", userVO);
return resultDomain;
} catch (Exception e) {
logger.error("获取用户信息总览失败:{}", userId, e);
resultDomain.fail("获取用户信息总览失败:" + e.getMessage());
return resultDomain;
}
}
} }

View File

@@ -9,6 +9,7 @@
<result column="family_name" property="familyName" /> <result column="family_name" property="familyName" />
<result column="given_name" property="givenName" /> <result column="given_name" property="givenName" />
<result column="full_name" property="fullName" /> <result column="full_name" property="fullName" />
<result column="level" property="level" />
<result column="id_card" property="idCard" /> <result column="id_card" property="idCard" />
<result column="address" property="address" /> <result column="address" property="address" />
<result column="create_time" property="createTime" /> <result column="create_time" property="createTime" />
@@ -18,7 +19,7 @@
</resultMap> </resultMap>
<sql id="Base_Column_List"> <sql id="Base_Column_List">
id, user_id, avatar, gender, family_name, given_name, full_name, id_card, address, create_time, update_time, delete_time, deleted id, user_id, avatar, gender, family_name, given_name, full_name, level, id_card, address, create_time, update_time, delete_time, deleted
</sql> </sql>
<!-- insertUserInfo --> <!-- insertUserInfo -->
@@ -37,6 +38,7 @@
<if test="userInfo.familyName != null">family_name = #{userInfo.familyName},</if> <if test="userInfo.familyName != null">family_name = #{userInfo.familyName},</if>
<if test="userInfo.givenName != null">given_name = #{userInfo.givenName},</if> <if test="userInfo.givenName != null">given_name = #{userInfo.givenName},</if>
<if test="userInfo.fullName != null">full_name = #{userInfo.fullName},</if> <if test="userInfo.fullName != null">full_name = #{userInfo.fullName},</if>
<if test="userInfo.level != null">level = #{userInfo.level},</if>
<if test="userInfo.idCard != null">id_card = #{userInfo.idCard},</if> <if test="userInfo.idCard != null">id_card = #{userInfo.idCard},</if>
<if test="userInfo.address != null">address = #{userInfo.address},</if> <if test="userInfo.address != null">address = #{userInfo.address},</if>
<if test="userInfo.updater != null">updater = #{userInfo.updater},</if> <if test="userInfo.updater != null">updater = #{userInfo.updater},</if>

View File

@@ -32,6 +32,22 @@
<result column="delete_time" property="deleteTime" jdbcType="TIMESTAMP"/> <result column="delete_time" property="deleteTime" jdbcType="TIMESTAMP"/>
<result column="deleted" property="deleted" jdbcType="INTEGER"/> <result column="deleted" property="deleted" jdbcType="INTEGER"/>
</resultMap> </resultMap>
<resultMap id="UserInfoTotalResultMap" type="org.xyzh.common.vo.UserVO">
<result column="user_id" property="userID" jdbcType="VARCHAR"/>
<result column="avatar" property="avatar" jdbcType="VARCHAR"/>
<result column="gender" property="gender" jdbcType="INTEGER"/>
<result column="phone" property="phone" jdbcType="VARCHAR"/>
<result column="email" property="email" jdbcType="VARCHAR"/>
<result column="dept_name" property="deptName" jdbcType="VARCHAR"/>
<result column="role_name" property="roleName" jdbcType="VARCHAR"/>
<result column="level" property="level" jdbcType="INTEGER"/>
<result column="id_card" property="idCard" jdbcType="VARCHAR"/>
<result column="address" property="address" jdbcType="VARCHAR"/>
<result column="create_time" property="createTime" jdbcType="TIMESTAMP"/>
<result column="update_time" property="updateTime" jdbcType="TIMESTAMP"/>
<result column="delete_time" property="deleteTime" jdbcType="TIMESTAMP"/>
<result column="deleted" property="deleted" jdbcType="INTEGER"/>
</resultMap>
<!-- 基础字段 --> <!-- 基础字段 -->
<sql id="Base_Column_List"> <sql id="Base_Column_List">
id, username, password, email, phone, wechat_id, id, username, password, email, phone, wechat_id,
@@ -228,4 +244,27 @@
</set> </set>
WHERE user_id = #{userInfo.userID} AND deleted = 0 WHERE user_id = #{userInfo.userID} AND deleted = 0
</update> </update>
<!-- selectUserInfoTotal -->
<select id="selectUserInfoTotal" resultMap="UserInfoTotalResultMap">
SELECT
tus.id as user_id,
tus.username,
tus.phone,
tus.email,
tsui.avatar,
tsui.gender,
tsd.name as dept_name,
tsr.name as role_name,
tsui.level,
tsui.id_card,
tsui.address
FROM tb_sys_user_info tsui
INNER JOIN tb_sys_user tus ON tsui.user_id = tus.id
INNER JOIN tb_sys_user_dept_role tsudr ON tsui.user_id = tsudr.user_id
INNER JOIN tb_sys_dept tsd ON tsudr.dept_id = tsd.dept_id
INNER JOIN tb_sys_role tsr ON tsudr.role_id = tsr.role_id
WHERE tsui.user_id = #{userId} AND tsui.deleted = 0
</select>
</mapper> </mapper>

View File

@@ -10,6 +10,7 @@ import org.xyzh.common.core.domain.ResultDomain;
import org.xyzh.common.dto.system.TbSysFile; import org.xyzh.common.dto.system.TbSysFile;
import org.xyzh.common.dto.user.TbSysUser; import org.xyzh.common.dto.user.TbSysUser;
import org.xyzh.common.dto.user.TbSysUserInfo; import org.xyzh.common.dto.user.TbSysUserInfo;
import org.xyzh.common.vo.UserVO;
import org.xyzh.api.system.user.UserService; import org.xyzh.api.system.user.UserService;
import org.xyzh.common.annotation.HttpLogin; import org.xyzh.common.annotation.HttpLogin;
import org.xyzh.common.core.domain.LoginDomain; import org.xyzh.common.core.domain.LoginDomain;
@@ -39,13 +40,13 @@ public class UserProfileController {
* 获取个人信息 * 获取个人信息
*/ */
@GetMapping("/info") @GetMapping("/info")
public ResultDomain<TbSysUserInfo> getUserProfile(@HttpLogin LoginDomain loginDomain) { public ResultDomain<UserVO> getUserProfile(@HttpLogin LoginDomain loginDomain) {
// TODO: 实现获取个人信息 // TODO: 实现获取个人信息
ResultDomain<TbSysUserInfo> result = userService.getUserInfoById(loginDomain.getUser().getID()); ResultDomain<UserVO> result = userService.getUserInfoTotal(loginDomain.getUser().getID());
if (result.isSuccess()) { if (result.isSuccess()) {
return result; return result;
} else { } else {
ResultDomain<TbSysUserInfo> result2 = new ResultDomain<>(); ResultDomain<UserVO> result2 = new ResultDomain<>();
result2.fail(result.getCode(), result.getMessage()); result2.fail(result.getCode(), result.getMessage());
return result2; return result2;
} }