serv-权限+文件下载
@@ -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='文件上传记录表';
|
||||
|
||||
@@ -87,26 +87,39 @@ CREATE TABLE `tb_sys_notification` (
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='系统通知表';
|
||||
|
||||
-- 文件上传记录表
|
||||
-- --------------------------------------------------------
|
||||
-- 文件上传记录表
|
||||
-- --------------------------------------------------------
|
||||
DROP TABLE IF EXISTS `tb_sys_file`;
|
||||
CREATE TABLE `tb_sys_file` (
|
||||
`id` VARCHAR(50) NOT NULL COMMENT '文件ID',
|
||||
`file_name` VARCHAR(255) NOT NULL COMMENT '文件名',
|
||||
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(20) DEFAULT 0 COMMENT '文件大小(字节)',
|
||||
`file_type` VARCHAR(50) DEFAULT NULL COMMENT '文件类型',
|
||||
`mime_type` VARCHAR(100) DEFAULT NULL COMMENT 'MIME类型',
|
||||
`module` VARCHAR(50) DEFAULT NULL COMMENT '所属模块',
|
||||
`business_id` VARCHAR(50) DEFAULT NULL COMMENT '业务ID',
|
||||
`uploader` VARCHAR(50) DEFAULT NULL COMMENT '上传者',
|
||||
`create_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP 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`),
|
||||
KEY `idx_module` (`module`),
|
||||
KEY `idx_business` (`business_id`),
|
||||
KEY `idx_uploader` (`uploader`),
|
||||
KEY `idx_create_time` (`create_time`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='文件上传记录表';
|
||||
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='文件上传记录表';
|
||||
|
||||
|
||||
|
||||
-- 数据字典表
|
||||
DROP TABLE IF EXISTS `tb_sys_dict_type`;
|
||||
|
||||
@@ -31,6 +31,7 @@ CREATE TABLE `tb_sys_user_info` (
|
||||
`family_name` VARCHAR(50) DEFAULT NULL COMMENT '姓',
|
||||
`given_name` VARCHAR(50) DEFAULT NULL COMMENT '名',
|
||||
`full_name` VARCHAR(100) DEFAULT NULL COMMENT '全名',
|
||||
`level` INT(4) DEFAULT 1 COMMENT '等级',
|
||||
`id_card` VARCHAR(50) DEFAULT NULL COMMENT '身份证号',
|
||||
`address` VARCHAR(255) DEFAULT NULL COMMENT '地址',
|
||||
`create_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
|
||||
@@ -35,9 +35,6 @@ SOURCE createTableAI.sql;
|
||||
-- 10. 创建系统配置和日志相关表
|
||||
SOURCE createTableSystem.sql;
|
||||
|
||||
-- 11. 创建文件系统相关表
|
||||
SOURCE createTableFile.sql;
|
||||
|
||||
-- =====================================================
|
||||
-- 插入初始数据
|
||||
-- =====================================================
|
||||
|
||||
@@ -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_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 ('1','superadmin', '超级管理员', '超级管理员角色');
|
||||
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
|
||||
('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());
|
||||
@@ -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()),
|
||||
('7','perm_system_module_manage', '系统模块查看', 'system:module:manage', '系统模块查看权限', 'module_system', '1', now()),
|
||||
('8','perm_news_manage', '新闻管理', 'news:manage', '新闻管理权限', 'module_news', '1', now()),
|
||||
('9','perm_study_manage', '学习管理', 'study:manage', '学习管理权限', 'module_study', '1', now()),
|
||||
('10','perm_ai_manage', 'AI管理', 'ai:manage', 'AI管理权限', 'module_ai', '1', now()),
|
||||
('11','perm_usercenter_manage', '用户中心管理', 'usercenter:manage', '用户中心管理权限', 'module_usercenter', '1', now()),
|
||||
('12','perm_file_manage', '文件管理', 'file:manage', '文件管理权限', 'module_file', '1', now());
|
||||
('9','perm_news_article_add', '文章添加', 'news:manage', '文章添加权限', 'module_news', '1', now()),
|
||||
('10','perm_study_manage', '学习管理', 'study:manage', '学习管理权限', 'module_study', '1', now()),
|
||||
('11','perm_ai_manage', 'AI管理', 'ai:manage', 'AI管理权限', 'module_ai', '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
|
||||
@@ -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()),
|
||||
('7', 'superadmin', 'perm_system_module_manage', '1', now()),
|
||||
('8', 'superadmin', 'perm_news_manage', '1', now()),
|
||||
('9', 'superadmin', 'perm_study_manage', '1', now()),
|
||||
('10', 'superadmin', 'perm_ai_manage', '1', now()),
|
||||
('11', 'superadmin', 'perm_usercenter_manage', '1', now()),
|
||||
('12', 'superadmin', 'perm_file_manage', '1', now()),
|
||||
('13', 'freedom', 'perm_default', '1', now());
|
||||
('9', 'superadmin', 'perm_news_article_add', '1', now()),
|
||||
('10', 'superadmin', 'perm_study_manage', '1', now()),
|
||||
('11', 'superadmin', 'perm_ai_manage', '1', now()),
|
||||
('12', 'superadmin', 'perm_usercenter_manage', '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
|
||||
@@ -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()),
|
||||
('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()),
|
||||
('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()),
|
||||
('118', 'perm_ai_manage', 'menu_ai_assistant', '1', now()),
|
||||
('119', 'perm_default', 'menu_user_dropdown', '1', now()),
|
||||
('120', 'perm_news_article_add', 'menu_article_add', '1', now()),
|
||||
|
||||
|
||||
-- 后端管理菜单权限关联
|
||||
|
||||
@@ -145,6 +145,7 @@ show_initialization_info() {
|
||||
print_message $YELLOW " - 学习管理"
|
||||
print_message $YELLOW " - AI智能体"
|
||||
print_message $YELLOW " - 系统配置"
|
||||
print_message $YELLOW " - 文件管理"
|
||||
print_message $BLUE "====================================================="
|
||||
}
|
||||
|
||||
|
||||
@@ -75,6 +75,13 @@
|
||||
<mainClass>org.xyzh.App</mainClass>
|
||||
</configuration>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-compiler-plugin</artifactId>
|
||||
<configuration>
|
||||
<parameters>true</parameters>
|
||||
</configuration>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
|
||||
|
||||
@@ -61,19 +61,22 @@ school-news:
|
||||
max-login-attempts: 5
|
||||
lockout-duration: 30 # 锁定30分钟
|
||||
|
||||
# 免登录白名单
|
||||
# 免登录白名单(需要包含 context-path)
|
||||
white-list:
|
||||
- "/auth/login"
|
||||
- "/auth/logout"
|
||||
- "/auth/captcha"
|
||||
- "/auth/health"
|
||||
- "/actuator/**"
|
||||
- "/swagger-ui/**"
|
||||
- "/v3/api-docs/**"
|
||||
- "/favicon.ico"
|
||||
- "/error"
|
||||
- "/public/**"
|
||||
- "/static/**"
|
||||
- "/schoolNewsServ/auth/login"
|
||||
- "/schoolNewsServ/auth/logout"
|
||||
- "/schoolNewsServ/auth/captcha"
|
||||
- "/schoolNewsServ/auth/health"
|
||||
- "/schoolNewsServ/actuator/.*"
|
||||
- "/schoolNewsServ/swagger-ui/.*"
|
||||
- "/schoolNewsServ/v3/api-docs/.*"
|
||||
- "/schoolNewsServ/favicon.ico"
|
||||
- "/schoolNewsServ/error"
|
||||
- "/schoolNewsServ/public/.*"
|
||||
- "/schoolNewsServ/static/.*"
|
||||
- "/schoolNewsServ/file/download/.*"
|
||||
|
||||
|
||||
|
||||
# MyBatis Plus配置
|
||||
mybatis-plus:
|
||||
|
||||
|
After Width: | Height: | Size: 884 KiB |
|
After Width: | Height: | Size: 884 KiB |
|
After Width: | Height: | Size: 884 KiB |
|
After Width: | Height: | Size: 884 KiB |
|
After Width: | Height: | Size: 884 KiB |
|
After Width: | Height: | Size: 884 KiB |
|
After Width: | Height: | Size: 884 KiB |
|
After Width: | Height: | Size: 884 KiB |
|
After Width: | Height: | Size: 884 KiB |
|
After Width: | Height: | Size: 884 KiB |
|
After Width: | Height: | Size: 884 KiB |
@@ -8,6 +8,7 @@ import org.xyzh.common.dto.user.TbSysUser;
|
||||
import org.xyzh.common.dto.user.TbSysUserDeptRole;
|
||||
import org.xyzh.common.dto.user.TbSysUserInfo;
|
||||
import org.xyzh.common.vo.UserDeptRoleVO;
|
||||
import org.xyzh.common.vo.UserVO;
|
||||
|
||||
/**
|
||||
* @description UserRemoteService.java文件描述 用户远程服务接口
|
||||
@@ -198,4 +199,13 @@ public interface UserService {
|
||||
* @since 2025-10-06
|
||||
*/
|
||||
ResultDomain<TbSysUserInfo> updateUserInfo(TbSysUserInfo userInfo);
|
||||
|
||||
/**
|
||||
* @description 获取用户信息总览
|
||||
* @param userId 用户ID
|
||||
* @return ResultDomain<TbSysUserInfo> 用户信息总览
|
||||
* @author yslg
|
||||
* @since 2025-10-18
|
||||
*/
|
||||
ResultDomain<UserVO> getUserInfoTotal(String userId);
|
||||
}
|
||||
|
||||
@@ -56,7 +56,14 @@ public class TbSysUserInfo extends BaseDTO {
|
||||
private String fullName;
|
||||
|
||||
/**
|
||||
* @description ID卡号
|
||||
* @description 等级
|
||||
* @author yslg
|
||||
* @since 2025-10-18
|
||||
*/
|
||||
private Integer level;
|
||||
|
||||
/**
|
||||
* @description 身份证号
|
||||
* @author yslg
|
||||
* @since 2025-09-11
|
||||
*/
|
||||
@@ -117,6 +124,14 @@ public class TbSysUserInfo extends BaseDTO {
|
||||
this.fullName = fullName;
|
||||
}
|
||||
|
||||
public Integer getLevel() {
|
||||
return level;
|
||||
}
|
||||
|
||||
public void setLevel(Integer level) {
|
||||
this.level = level;
|
||||
}
|
||||
|
||||
public String getIdCard() {
|
||||
return idCard;
|
||||
}
|
||||
@@ -144,6 +159,7 @@ public class TbSysUserInfo extends BaseDTO {
|
||||
", familyName='" + familyName + '\'' +
|
||||
", givenName='" + givenName + '\'' +
|
||||
", fullName='" + fullName + '\'' +
|
||||
", level=" + level +
|
||||
", idCard='" + idCard + '\'' +
|
||||
", address='" + address + '\'' +
|
||||
", createTime=" + getCreateTime() +
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
package org.xyzh.common.vo;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
public class UserVO {
|
||||
|
||||
private String id;
|
||||
@@ -9,17 +11,20 @@ public class UserVO {
|
||||
private String phone;
|
||||
private String wechatID;
|
||||
private String avatar;
|
||||
private String gender;
|
||||
private Integer gender;
|
||||
private String familyName;
|
||||
private String givenName;
|
||||
private String fullName;
|
||||
private Integer level;
|
||||
private String idCard;
|
||||
private String address;
|
||||
private String createTime;
|
||||
private String updateTime;
|
||||
private String deleteTime;
|
||||
private String deleted;
|
||||
private String status;
|
||||
private String deptName;
|
||||
private String roleName;
|
||||
private Date createTime;
|
||||
private Date updateTime;
|
||||
private Date deleteTime;
|
||||
private Boolean deleted;
|
||||
private Integer status;
|
||||
public String getId() {
|
||||
return id;
|
||||
}
|
||||
@@ -62,10 +67,10 @@ public class UserVO {
|
||||
public void setAvatar(String avatar) {
|
||||
this.avatar = avatar;
|
||||
}
|
||||
public String getGender() {
|
||||
public Integer getGender() {
|
||||
return gender;
|
||||
}
|
||||
public void setGender(String gender) {
|
||||
public void setGender(Integer gender) {
|
||||
this.gender = gender;
|
||||
}
|
||||
public String getFamilyName() {
|
||||
@@ -98,34 +103,52 @@ public class UserVO {
|
||||
public void setAddress(String 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;
|
||||
}
|
||||
public void setCreateTime(String createTime) {
|
||||
public void setCreateTime(Date createTime) {
|
||||
this.createTime = createTime;
|
||||
}
|
||||
public String getUpdateTime() {
|
||||
public Date getUpdateTime() {
|
||||
return updateTime;
|
||||
}
|
||||
public void setUpdateTime(String updateTime) {
|
||||
public void setUpdateTime(Date updateTime) {
|
||||
this.updateTime = updateTime;
|
||||
}
|
||||
public String getDeleteTime() {
|
||||
public Date getDeleteTime() {
|
||||
return deleteTime;
|
||||
}
|
||||
public void setDeleteTime(String deleteTime) {
|
||||
public void setDeleteTime(Date deleteTime) {
|
||||
this.deleteTime = deleteTime;
|
||||
}
|
||||
public String getDeleted() {
|
||||
public Boolean getDeleted() {
|
||||
return deleted;
|
||||
}
|
||||
public void setDeleted(String deleted) {
|
||||
public void setDeleted(Boolean deleted) {
|
||||
this.deleted = deleted;
|
||||
}
|
||||
public String getStatus() {
|
||||
public Integer getStatus() {
|
||||
return status;
|
||||
}
|
||||
public void setStatus(String status) {
|
||||
public void setStatus(Integer status) {
|
||||
this.status = status;
|
||||
}
|
||||
|
||||
|
||||
@@ -78,4 +78,16 @@
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-compiler-plugin</artifactId>
|
||||
<configuration>
|
||||
<parameters>true</parameters>
|
||||
</configuration>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
|
||||
</project>
|
||||
@@ -46,7 +46,7 @@ file:
|
||||
- type: local
|
||||
enabled: true
|
||||
base-path: ./uploads
|
||||
url-prefix: http://localhost:8080/files
|
||||
|
||||
|
||||
# MinIO存储配置(如不需要可以删除或设置enabled为false)
|
||||
# - type: minio
|
||||
@@ -55,8 +55,10 @@ file:
|
||||
# access-key: minioadmin
|
||||
# secret-key: minioadmin
|
||||
# bucket-name: school-news
|
||||
|
||||
# 服务端口
|
||||
server:
|
||||
port: 8086
|
||||
# 认证配置
|
||||
school-news:
|
||||
auth:
|
||||
# 免登录白名单 - file模块
|
||||
white-list:
|
||||
- "/file/download/**"
|
||||
|
||||
|
||||
@@ -5,6 +5,7 @@ import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import org.xyzh.common.dto.user.TbSysUser;
|
||||
import org.xyzh.common.dto.user.TbSysUserInfo;
|
||||
import org.xyzh.common.vo.UserVO;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@@ -123,4 +124,13 @@ public interface UserMapper extends BaseMapper<TbSysUser> {
|
||||
* @since 2025-10-06
|
||||
*/
|
||||
int updateUserInfo(@Param("userInfo") TbSysUserInfo userInfo);
|
||||
|
||||
/**
|
||||
* @description 获取用户信息总览
|
||||
* @param userId 用户ID
|
||||
* @return UserVO 用户信息总览
|
||||
* @author yslg
|
||||
* @since 2025-10-18
|
||||
*/
|
||||
UserVO selectUserInfoTotal(@Param("userId") String userId);
|
||||
}
|
||||
|
||||
@@ -12,6 +12,7 @@ import org.xyzh.common.dto.user.TbSysUserDeptRole;
|
||||
import org.xyzh.common.dto.user.TbSysUserInfo;
|
||||
import org.xyzh.common.utils.IDUtils;
|
||||
import org.xyzh.common.vo.UserDeptRoleVO;
|
||||
import org.xyzh.common.vo.UserVO;
|
||||
import org.xyzh.system.mapper.UserMapper;
|
||||
import org.xyzh.system.mapper.UserInfoMapper;
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -9,6 +9,7 @@
|
||||
<result column="family_name" property="familyName" />
|
||||
<result column="given_name" property="givenName" />
|
||||
<result column="full_name" property="fullName" />
|
||||
<result column="level" property="level" />
|
||||
<result column="id_card" property="idCard" />
|
||||
<result column="address" property="address" />
|
||||
<result column="create_time" property="createTime" />
|
||||
@@ -18,7 +19,7 @@
|
||||
</resultMap>
|
||||
|
||||
<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>
|
||||
<!-- insertUserInfo -->
|
||||
|
||||
@@ -37,6 +38,7 @@
|
||||
<if test="userInfo.familyName != null">family_name = #{userInfo.familyName},</if>
|
||||
<if test="userInfo.givenName != null">given_name = #{userInfo.givenName},</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.address != null">address = #{userInfo.address},</if>
|
||||
<if test="userInfo.updater != null">updater = #{userInfo.updater},</if>
|
||||
|
||||
@@ -32,6 +32,22 @@
|
||||
<result column="delete_time" property="deleteTime" jdbcType="TIMESTAMP"/>
|
||||
<result column="deleted" property="deleted" jdbcType="INTEGER"/>
|
||||
</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">
|
||||
id, username, password, email, phone, wechat_id,
|
||||
@@ -228,4 +244,27 @@
|
||||
</set>
|
||||
WHERE user_id = #{userInfo.userID} AND deleted = 0
|
||||
</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>
|
||||
|
||||
@@ -10,6 +10,7 @@ import org.xyzh.common.core.domain.ResultDomain;
|
||||
import org.xyzh.common.dto.system.TbSysFile;
|
||||
import org.xyzh.common.dto.user.TbSysUser;
|
||||
import org.xyzh.common.dto.user.TbSysUserInfo;
|
||||
import org.xyzh.common.vo.UserVO;
|
||||
import org.xyzh.api.system.user.UserService;
|
||||
import org.xyzh.common.annotation.HttpLogin;
|
||||
import org.xyzh.common.core.domain.LoginDomain;
|
||||
@@ -39,13 +40,13 @@ public class UserProfileController {
|
||||
* 获取个人信息
|
||||
*/
|
||||
@GetMapping("/info")
|
||||
public ResultDomain<TbSysUserInfo> getUserProfile(@HttpLogin LoginDomain loginDomain) {
|
||||
public ResultDomain<UserVO> getUserProfile(@HttpLogin LoginDomain loginDomain) {
|
||||
// TODO: 实现获取个人信息
|
||||
ResultDomain<TbSysUserInfo> result = userService.getUserInfoById(loginDomain.getUser().getID());
|
||||
ResultDomain<UserVO> result = userService.getUserInfoTotal(loginDomain.getUser().getID());
|
||||
if (result.isSuccess()) {
|
||||
return result;
|
||||
} else {
|
||||
ResultDomain<TbSysUserInfo> result2 = new ResultDomain<>();
|
||||
ResultDomain<UserVO> result2 = new ResultDomain<>();
|
||||
result2.fail(result.getCode(), result.getMessage());
|
||||
return result2;
|
||||
}
|
||||
|
||||