diff --git a/.vscode/settings.json b/.vscode/settings.json
new file mode 100644
index 0000000..e5ab953
--- /dev/null
+++ b/.vscode/settings.json
@@ -0,0 +1,13 @@
+{
+ // 对所有文件生效
+ "editor.tabSize": 2,
+ // 仅对TS文件生效(优先级更高)
+ "[typescript]": {
+ "editor.tabSize": 2
+ },
+ "[java]":{
+ "editor.tabSize": 4
+ },
+ "maven.view": "hierarchical",
+ "java.compile.nullAnalysis.mode": "automatic"
+}
\ No newline at end of file
diff --git a/schoolNewsServ/.bin/mysql/sql/createDB.sql b/schoolNewsServ/.bin/mysql/sql/createDB.sql
new file mode 100644
index 0000000..5567670
--- /dev/null
+++ b/schoolNewsServ/.bin/mysql/sql/createDB.sql
@@ -0,0 +1,2 @@
+-- MySQL Script to create the database
+CREATE DATABASE IF NOT EXISTS `dlabeling` DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
\ No newline at end of file
diff --git a/schoolNewsServ/.bin/mysql/sql/createTablePermission.sql b/schoolNewsServ/.bin/mysql/sql/createTablePermission.sql
new file mode 100644
index 0000000..cb6b42e
--- /dev/null
+++ b/schoolNewsServ/.bin/mysql/sql/createTablePermission.sql
@@ -0,0 +1,174 @@
+use dlabeling;
+-- 部门表
+DROP TABLE IF EXISTS `tb_sys_dept`;
+CREATE TABLE `tb_sys_dept` (
+ `id` VARCHAR(50) NOT NULL COMMENT 'id',
+ `dept_id` VARCHAR(50) NOT NULL COMMENT '部门ID',
+ `name` VARCHAR(100) NOT NULL COMMENT '部门名称',
+ `parent_id` VARCHAR(50) DEFAULT NULL COMMENT '父部门ID',
+ `description` VARCHAR(255) DEFAULT NULL COMMENT '部门描述',
+ `creator` VARCHAR(50) DEFAULT NULL COMMENT '创建者',
+ `updater` VARCHAR(50) DEFAULT NULL COMMENT '更新者',
+ `create_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
+ `update_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
+ `delete_time` TIMESTAMP NULL DEFAULT NULL COMMENT '删除时间',
+ `deleted` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否删除',
+ PRIMARY KEY (`id`),
+ UNIQUE KEY `uk_dept_id` (`dept_id`),
+ KEY `idx_dept_parent` (`parent_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci;
+
+INSERT INTO `tb_sys_dept` (id,dept_id,name, description) VALUES ('1','default_department', '默认部门', '系统默认创建的部门');
+
+-- 角色表
+DROP TABLE IF EXISTS `tb_sys_role`;
+CREATE TABLE `tb_sys_role` (
+ `id` VARCHAR(50) NOT NULL COMMENT 'id',
+ `role_id` VARCHAR(50) NOT NULL COMMENT '角色ID',
+ `name` VARCHAR(100) NOT NULL COMMENT '角色名称',
+ `description` VARCHAR(255) DEFAULT NULL COMMENT '角色描述',
+ `creator` VARCHAR(50) DEFAULT NULL COMMENT '创建者',
+ `updater` VARCHAR(50) DEFAULT NULL COMMENT '更新者',
+ `create_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
+ `update_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
+ `delete_time` TIMESTAMP NULL DEFAULT NULL COMMENT '删除时间',
+ `deleted` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否删除',
+ PRIMARY KEY (`id`),
+ UNIQUE KEY `uk_role_id` (`role_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci;
+
+INSERT INTO `tb_sys_role` (id,role_id, name, description) VALUES ('1','admin', '管理员', '系统管理员角色');
+
+-- 部门-角色关联
+DROP TABLE IF EXISTS `tb_sys_dept_role`;
+CREATE TABLE `tb_sys_dept_role` (
+ `id` VARCHAR(50) NOT NULL COMMENT '部门角色ID',
+ `dept_id` VARCHAR(50) NOT NULL COMMENT '部门ID',
+ `role_id` VARCHAR(50) NOT NULL COMMENT '角色ID',
+ `creator` VARCHAR(50) DEFAULT NULL COMMENT '创建者',
+ `updater` VARCHAR(50) DEFAULT NULL COMMENT '更新者',
+ `create_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
+ `update_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
+ `delete_time` TIMESTAMP NULL DEFAULT NULL COMMENT '删除时间',
+ `deleted` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否删除',
+ PRIMARY KEY (`id`),
+ UNIQUE KEY `uk_dept_role` (`dept_id`, `role_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci;
+
+INSERT INTO `tb_sys_dept_role` (id, dept_id, role_id) VALUES ('1', 'default_department', 'admin');
+
+-- 用户-角色关联
+DROP TABLE IF EXISTS `tb_sys_user_role`;
+CREATE TABLE `tb_sys_user_role` (
+ `id` VARCHAR(50) NOT NULL COMMENT '用户角色ID',
+ `user_id` VARCHAR(50) NOT NULL COMMENT '用户ID',
+ `role_id` VARCHAR(50) NOT NULL COMMENT '角色ID',
+ `creator` VARCHAR(50) DEFAULT NULL COMMENT '创建者',
+ `updater` VARCHAR(50) DEFAULT NULL COMMENT '更新者',
+ `create_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
+ `update_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
+ `delete_time` TIMESTAMP NULL DEFAULT NULL COMMENT '删除时间',
+ `deleted` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否删除',
+ PRIMARY KEY (`id`),
+ UNIQUE KEY `uk_user_role` (`user_id`, `role_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci;
+
+INSERT INTO `tb_sys_user_role` (id, user_id, role_id) VALUES ('1', '1', 'admin');
+
+-- 权限表
+DROP TABLE IF EXISTS `tb_sys_permission`;
+CREATE TABLE `tb_sys_permission` (
+ `id` VARCHAR(50) NOT NULL COMMENT 'id',
+ `permission_id` VARCHAR(50) NOT NULL COMMENT '权限ID',
+ `name` VARCHAR(100) NOT NULL COMMENT '权限名称',
+ `code` VARCHAR(100) NOT NULL COMMENT '权限代码',
+ `description` VARCHAR(255) DEFAULT NULL COMMENT '权限描述',
+ `creator` VARCHAR(50) DEFAULT NULL COMMENT '创建者',
+ `updater` VARCHAR(50) DEFAULT NULL COMMENT '更新者',
+ `create_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
+ `update_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
+ `delete_time` TIMESTAMP NULL DEFAULT NULL COMMENT '删除时间',
+ `deleted` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否删除',
+ PRIMARY KEY (`id`),
+ UNIQUE KEY `uk_permission_id` (`permission_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci;
+
+INSERT INTO `tb_sys_permission` (id,permission_id, name, code, description) VALUES
+('1','perm_user_manage', '用户管理', 'user:manage', '用户管理权限'),
+('2','perm_role_manage', '角色管理', 'role:manage', '角色管理权限'),
+('3','perm_dept_manage', '部门管理', 'dept:manage', '部门管理权限'),
+('4','perm_permission_manage', '权限管理', 'permission:manage', '权限管理权限');
+
+-- 角色-权限关联
+DROP TABLE IF EXISTS `tb_sys_role_permission`;
+CREATE TABLE `tb_sys_role_permission` (
+ `id` VARCHAR(50) NOT NULL COMMENT '角色权限ID',
+ `role_id` VARCHAR(50) NOT NULL COMMENT '角色ID',
+ `permission_id` VARCHAR(50) NOT NULL COMMENT '权限ID',
+ `creator` VARCHAR(50) DEFAULT NULL COMMENT '创建者',
+ `updater` VARCHAR(50) DEFAULT NULL COMMENT '更新者',
+ `create_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
+ `update_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
+ `delete_time` TIMESTAMP NULL DEFAULT NULL COMMENT '删除时间',
+ `deleted` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否删除',
+ PRIMARY KEY (`id`),
+ UNIQUE KEY `uk_role_permission` (`role_id`, `permission_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci;
+
+INSERT INTO `tb_sys_role_permission` (id, role_id, permission_id) VALUES
+('1', 'admin', 'perm_user_manage'),
+('2', 'admin', 'perm_role_manage'),
+('3', 'admin', 'perm_dept_manage'),
+('4', 'admin', 'perm_permission_manage');
+
+-- 菜单表
+DROP TABLE IF EXISTS `tb_sys_menu`;
+CREATE TABLE `tb_sys_menu` (
+ `id` VARCHAR(50) NOT NULL COMMENT 'id',
+ `menu_id` VARCHAR(50) NOT NULL COMMENT '菜单ID',
+ `name` VARCHAR(100) NOT NULL COMMENT '菜单名称',
+ `parent_id` VARCHAR(50) DEFAULT NULL COMMENT '父菜单ID',
+ `url` VARCHAR(255) DEFAULT NULL COMMENT '菜单URL',
+ `icon` VARCHAR(100) DEFAULT NULL COMMENT '菜单图标',
+ `order_num` INT(4) DEFAULT 0 COMMENT '菜单排序号',
+ `type` INT(4) DEFAULT 0 COMMENT '菜单类型(0目录 1菜单 2按钮)',
+ `creator` VARCHAR(50) DEFAULT NULL COMMENT '创建者',
+ `updater` VARCHAR(50) DEFAULT NULL COMMENT '更新者',
+ `create_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
+ `update_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
+ `delete_time` TIMESTAMP NULL DEFAULT NULL COMMENT '删除时间',
+ `deleted` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否删除',
+ PRIMARY KEY (`id`),
+ UNIQUE KEY `uk_menu_id` (`menu_id`),
+ KEY `idx_menu_parent` (`parent_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci;
+
+-- Insert default menus
+INSERT INTO `tb_sys_menu` (id,menu_id, name, parent_id, url, icon, order_num, type) VALUES
+('1','menu_dashboard', '仪表盘', NULL, '/dashboard', 'dashboard', 1, 1),
+('2','menu_user_mgmt', '用户管理', NULL, '/user-management', 'user', 2, 1),
+('3','menu_role_mgmt', '角色管理', NULL, '/role-management', 'team', 3, 1),
+('4','menu_dept_mgmt', '部门管理', NULL, '/dept-management', 'apartment', 4, 1),
+('5','menu_permission_mgmt', '权限管理', NULL, '/permission-management', 'safety-certificate', 5, 1);
+
+DROP TABLE IF EXISTS `tb_sys_menu_permission`;
+CREATE TABLE `tb_sys_menu_permission` (
+ `id` VARCHAR(50) NOT NULL COMMENT '菜单权限ID',
+ `permission_id` VARCHAR(50) NOT NULL COMMENT '权限ID',
+ `menu_id` VARCHAR(50) NOT NULL COMMENT '菜单ID',
+ `creator` VARCHAR(50) DEFAULT NULL COMMENT '创建者',
+ `updater` VARCHAR(50) DEFAULT NULL COMMENT '更新者',
+ `create_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
+ `update_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
+ `delete_time` TIMESTAMP NULL DEFAULT NULL COMMENT '删除时间',
+ `deleted` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否删除',
+ PRIMARY KEY (`id`),
+ UNIQUE KEY `uk_menu_permission` (`menu_id`, `permission_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci;
+-- Insert default role-menu associations for admin role
+INSERT INTO `tb_sys_menu_permission` (id, permission_id, menu_id) VALUES
+('1', 'admin', 'menu_dashboard'),
+('2', 'admin', 'menu_user_mgmt'),
+('3', 'admin', 'menu_role_mgmt'),
+('4', 'admin', 'menu_dept_mgmt'),
+('5', 'admin', 'menu_permission_mgmt');
\ No newline at end of file
diff --git a/schoolNewsServ/.bin/mysql/sql/createTableUser.sql b/schoolNewsServ/.bin/mysql/sql/createTableUser.sql
new file mode 100644
index 0000000..8b58a3b
--- /dev/null
+++ b/schoolNewsServ/.bin/mysql/sql/createTableUser.sql
@@ -0,0 +1,67 @@
+use dlabeling;
+-- MySQL Script to create the user table
+DROP TABLE IF EXISTS `tb_sys_user`;
+CREATE TABLE `tb_sys_user` (
+ `id` VARCHAR(50) NOT NULL COMMENT '用户ID',
+ `username` VARCHAR(50) NOT NULL COMMENT '用户名',
+ `password` VARCHAR(128) NOT NULL COMMENT '密码(建议存储 bcrypt/argon2 哈希)',
+ `email` VARCHAR(100) DEFAULT NULL COMMENT '电子邮件',
+ `phone` VARCHAR(20) DEFAULT NULL COMMENT '电话号码',
+ `wechat_id` VARCHAR(50) DEFAULT NULL COMMENT '微信ID',
+ `create_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
+ `update_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
+ `delete_time` TIMESTAMP NULL DEFAULT NULL COMMENT '删除时间',
+ `deleted` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否删除',
+ `status` INT(4) NOT NULL DEFAULT 1 COMMENT '状态',
+ PRIMARY KEY (`id`),
+ UNIQUE KEY `uk_user_username` (`username`),
+ UNIQUE KEY `uk_user_email` (`email`),
+ KEY `idx_user_phone` (`phone`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci;
+
+-- 推荐:把默认 admin 密码替换为已哈希的值
+INSERT INTO `tb_sys_user` (id, username, password, email) VALUES
+('1', 'admin', '123456', '3223905473@qq.com');
+
+-- 用户信息表
+DROP TABLE IF EXISTS `tb_sys_user_info`;
+CREATE TABLE `tb_sys_user_info` (
+ `id` VARCHAR(50) NOT NULL COMMENT '用户信息ID',
+ `user_id` VARCHAR(50) NOT NULL COMMENT '用户ID',
+ `avatar` VARCHAR(255) DEFAULT NULL COMMENT '头像',
+ `gender` INT(4) DEFAULT 0 COMMENT '性别',
+ `family_name` VARCHAR(50) DEFAULT NULL COMMENT '姓',
+ `given_name` VARCHAR(50) DEFAULT NULL COMMENT '名',
+ `full_name` VARCHAR(100) DEFAULT NULL COMMENT '全名',
+ `id_card` VARCHAR(50) DEFAULT NULL COMMENT '身份证号',
+ `address` VARCHAR(255) DEFAULT NULL COMMENT '地址',
+ `create_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
+ `update_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
+ `delete_time` TIMESTAMP NULL DEFAULT NULL COMMENT '删除时间',
+ `deleted` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否删除',
+ PRIMARY KEY (`id`),
+ UNIQUE KEY `uk_user_info_user_id` (`user_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci;
+
+INSERT INTO `tb_sys_user_info` (id, user_id, full_name) VALUES ('1', '1', '管理员');
+
+DROP TABLE IF EXISTS `tb_sys_login_log`;
+CREATE TABLE `tb_sys_login_log` (
+ `id` VARCHAR(50) NOT NULL COMMENT '登录日志ID',
+ `user_id` VARCHAR(50) NOT NULL COMMENT '用户ID',
+ `username` VARCHAR(50) NOT NULL COMMENT '用户名',
+ `ip_address` VARCHAR(45) DEFAULT NULL COMMENT 'IP地址',
+ `ip_source` VARCHAR(100) DEFAULT NULL COMMENT 'IP来源',
+ `browser` VARCHAR(100) DEFAULT NULL COMMENT '浏览器',
+ `os` VARCHAR(100) DEFAULT NULL COMMENT '操作系统',
+ `password` VARCHAR(100) DEFAULT NULL COMMENT '密码',
+ `login_time` TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '登录时间',
+ `status` INT(4) DEFAULT 1 COMMENT '登录状态(0失败 1成功)',
+ `error_count` INT(4) DEFAULT 0 COMMENT '错误次数',
+ `message` VARCHAR(255) DEFAULT NULL COMMENT '登录消息',
+ `create_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
+ PRIMARY KEY (`id`),
+ index `idx_user_id` (`user_id`) USING BTREE,
+ index `idx_login_time` (`login_time`) USING BTREE
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci;
+
diff --git a/schoolNewsServ/.gitignore b/schoolNewsServ/.gitignore
new file mode 100644
index 0000000..6219710
--- /dev/null
+++ b/schoolNewsServ/.gitignore
@@ -0,0 +1,37 @@
+HELP.md
+*/target
+*/*/target
+*.jar
+*.iml
+
+.mvn/wrapper/maven-wrapper.jar
+!**/src/main/**/target/
+!**/src/test/**/target/
+
+### STS ###
+.apt_generated
+.classpath
+.factorypath
+.project
+.settings
+.springBeans
+.sts4-cache
+
+### IntelliJ IDEA ###
+.idea
+*.iws
+*.iml
+*.ipr
+
+### NetBeans ###
+/nbproject/private/
+/nbbuild/
+/dist/
+/nbdist/
+/.nb-gradle/
+build/
+!**/src/main/**/build/
+!**/src/test/**/build/
+
+### VS Code ###
+.vscode/
diff --git a/schoolNewsServ/admin/pom.xml b/schoolNewsServ/admin/pom.xml
new file mode 100644
index 0000000..0d4ab52
--- /dev/null
+++ b/schoolNewsServ/admin/pom.xml
@@ -0,0 +1,21 @@
+
+
+ 4.0.0
+
+ org.xyzh
+ school-news
+ ${school-news.version}
+
+
+ org.xyzh
+ admin
+ ${school-news.version}
+
+
+ 21
+ 21
+
+
+
\ No newline at end of file
diff --git a/schoolNewsServ/admin/src/main/java/org/xyzh/Main.java b/schoolNewsServ/admin/src/main/java/org/xyzh/Main.java
new file mode 100644
index 0000000..f660b7a
--- /dev/null
+++ b/schoolNewsServ/admin/src/main/java/org/xyzh/Main.java
@@ -0,0 +1,7 @@
+package org.xyzh;
+
+public class Main {
+ public static void main(String[] args) {
+ System.out.println("Hello world!");
+ }
+}
\ No newline at end of file
diff --git a/schoolNewsServ/api/api-auth/pom.xml b/schoolNewsServ/api/api-auth/pom.xml
new file mode 100644
index 0000000..bf3297d
--- /dev/null
+++ b/schoolNewsServ/api/api-auth/pom.xml
@@ -0,0 +1,21 @@
+
+
+ 4.0.0
+
+ org.xyzh
+ api
+ ${school-news.version}
+
+
+ org.xyzh
+ api-auth
+ ${school-news.version}
+
+
+ 21
+ 21
+
+
+
\ No newline at end of file
diff --git a/schoolNewsServ/api/api-auth/src/main/java/org/xyzh/api/auth/login/LoginService.java b/schoolNewsServ/api/api-auth/src/main/java/org/xyzh/api/auth/login/LoginService.java
new file mode 100644
index 0000000..8da89e6
--- /dev/null
+++ b/schoolNewsServ/api/api-auth/src/main/java/org/xyzh/api/auth/login/LoginService.java
@@ -0,0 +1,34 @@
+package org.xyzh.api.auth.login;
+
+import org.xyzh.common.core.domain.LoginParam;
+import org.xyzh.common.core.domain.LoginDomain;
+import org.xyzh.common.core.domain.ResultDomain;
+/**
+ * @description LoginService.java文件描述 登录服务接口
+ * @filename LoginService.java
+ * @author yslg
+ * @copyright xyzh
+ * @since 2025-09-28
+ */
+public interface LoginService {
+
+ /**
+ * @description 登录
+ * @param loginParam 登录参数
+ * @return ResultDomain 返回结果
+ * @author yslg
+ * @since 2025-09-28
+ */
+ ResultDomain login(LoginParam loginParam);
+
+ /**
+ * @description 退出登录
+ * @param loginDomain 登录域
+ * @return ResultDomain 返回结果
+ * @author yslg
+ * @since 2025-09-28
+ */
+ ResultDomain logout(LoginDomain loginDomain);
+
+
+}
diff --git a/schoolNewsServ/api/api-system/pom.xml b/schoolNewsServ/api/api-system/pom.xml
new file mode 100644
index 0000000..da34c48
--- /dev/null
+++ b/schoolNewsServ/api/api-system/pom.xml
@@ -0,0 +1,21 @@
+
+
+ 4.0.0
+
+ org.xyzh
+ api
+ ${school-news.version}
+
+
+ org.xyzh
+ api-system
+ ${school-news.version}
+
+
+ 21
+ 21
+
+
+
\ No newline at end of file
diff --git a/schoolNewsServ/api/api-system/src/main/java/org/xyzh/api/system/menu/MenuService.java b/schoolNewsServ/api/api-system/src/main/java/org/xyzh/api/system/menu/MenuService.java
new file mode 100644
index 0000000..8d3b8ae
--- /dev/null
+++ b/schoolNewsServ/api/api-system/src/main/java/org/xyzh/api/system/menu/MenuService.java
@@ -0,0 +1,111 @@
+package org.xyzh.api.system.menu;
+
+import java.util.List;
+
+import org.xyzh.common.core.page.PageParam;
+import org.xyzh.common.dto.menu.TbSysMenu;
+
+/**
+ * @description MenuRemoteService.java文件描述 菜单远程服务接口
+ * @filename MenuRemoteService.java
+ * @author yslg
+ * @copyright xyzh
+ * @since 2025-09-26
+ */
+public interface MenuService {
+
+ /**
+ * @description 添加菜单
+ * @param menu 菜单对象
+ * @return void
+ * @author yslg
+ * @since 2025-09-27
+ */
+ void addMenu(TbSysMenu menu);
+
+ /**
+ * @description 更新菜单
+ * @param menu 菜单对象
+ * @return void
+ * @author yslg
+ * @since 2025-09-27
+ */
+ void updateMenu(TbSysMenu menu);
+
+ /**
+ * @description 删除菜单
+ * @param menuID 菜单ID
+ * @param deep 是否深度删除(删除该菜单及其所有子菜单)
+ * @return void
+ * @author yslg
+ * @since 2025-09-27
+ */
+ void deleteMenu(String menuID, boolean deep);
+
+ /**
+ * @description 导入菜单
+ * @param menus 菜单列表
+ * @return void
+ * @author yslg
+ * @since 2025-09-27
+ */
+ void importMenus(List menus);
+
+ /**
+ * @description 导出菜单
+ * @param filter 菜单对象
+ * @return 菜单列表
+ * @author yslg
+ * @since 2025-09-27
+ */
+ List exportMenus(TbSysMenu filter);
+
+ /**
+ * @description 查找菜单
+ * @param menu 菜单对象
+ * @return 菜单对象
+ * @author yslg
+ * @since 2025-09-27
+ */
+ TbSysMenu find(TbSysMenu filter);
+
+ /**
+ * @description 分页查找菜单
+ * @param menu 菜单对象
+ * @param pageParam 分页参数
+ * @return 菜单列表
+ * @author yslg
+ * @since 2025-09-27
+ */
+ List findPageMenus(TbSysMenu menu, PageParam pageParam);
+
+ /**
+ * @description 根据菜单ID列表查找菜单
+ * @param menuIDs 菜单ID列表
+ * @return 菜单列表
+ * @author yslg
+ * @since 2025-09-27
+ */
+ List findByIDs(List menuIDs);
+
+ /**
+ * @description 查找子菜单
+ * @param parentID 父菜单ID
+ * @return 子菜单列表
+ * @author yslg
+ * @since 2025-09-27
+ */
+ List findChildListByParentID(String parentID);
+
+ /**
+ * @description 查找所有菜单
+ * @return 菜单列表
+ * @author yslg
+ * @since 2025-09-27
+ */
+ List findAll();
+
+ List permissionMenus(List permissionIDList);
+
+
+}
diff --git a/schoolNewsServ/api/api-system/src/main/java/org/xyzh/api/system/permission/PermissionService.java b/schoolNewsServ/api/api-system/src/main/java/org/xyzh/api/system/permission/PermissionService.java
new file mode 100644
index 0000000..029f9aa
--- /dev/null
+++ b/schoolNewsServ/api/api-system/src/main/java/org/xyzh/api/system/permission/PermissionService.java
@@ -0,0 +1,117 @@
+package org.xyzh.api.system.permission;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Set;
+
+import org.xyzh.common.dto.permission.TbSysPermission;
+
+/**
+ * @description PermissionRemoteService.java文件描述 权限远程服务接口
+ * @filename PermissionRemoteService.java
+ * @author yslg
+ * @copyright xyzh
+ * @since 2025-09-26
+ */
+public interface PermissionService {
+
+ /**
+ * @description 添加权限
+ * @param permission 权限对象
+ * @return void
+ * @author yslg
+ * @since 2025-09-27
+ */
+ void addPermission(TbSysPermission permission);
+
+ /**
+ * @description 更新权限
+ * @param permission 权限对象
+ * @return void
+ * @author yslg
+ * @since 2025-09-27
+ */
+ void updatePermission(TbSysPermission permission);
+
+ /**
+ * @description 删除权限
+ * @param permissionID 权限ID
+ * @return void
+ * @author yslg
+ * @since 2025-09-27
+ */
+ void deletePermission(String permissionID);
+
+ /**
+ * @description 批量导入权限
+ * @param permissions 权限列表
+ * @return void
+ * @author yslg
+ * @since 2025-09-27
+ */
+ void importPermissions(List permissions);
+
+ /**
+ * @description 条件导出权限
+ * @param filter 权限对象
+ * @return 权限列表
+ * @author yslg
+ * @since 2025-09-27
+ */
+ List exportPermissions(TbSysPermission filter);
+
+ /**
+ * @description 权限ID查询
+ * @param permissionID 权限ID
+ * @return 权限对象
+ * @author yslg
+ * @since 2025-09-27
+ */
+ TbSysPermission findByID(String permissionID);
+
+ /**
+ * @description 批量权限ID查询
+ * @param permissionIDs 权限ID列表
+ * @return 权限对象列表
+ * @author yslg
+ * @since 2025-09-27
+ */
+ List findByIDs(Collection permissionIDs);
+
+ /**
+ * @description 根据用户ID查询用户权限集合
+ * @param userID 用户ID
+ * @return 权限集合
+ * @author yslg
+ * @since 2025-09-27
+ */
+ Set findUserPermissions(String userID);
+
+ /**
+ * @description 根据角色ID查询角色权限集合
+ * @param roleID 角色ID
+ * @return 权限集合
+ * @author yslg
+ * @since 2025-09-27
+ */
+ Set findRolePermissions(String roleID);
+
+ /**
+ * @description 根据角色ID列表查询角色权限集合
+ * @param roleIDList 角色ID列表
+ * @return 权限集合
+ * @author yslg
+ * @since 2025-09-27
+ */
+ Set findRolesPermissions(List roleIDList);
+
+ /**
+ * @description 判断用户是否拥有某个权限
+ * @param userID 用户ID
+ * @param permissionCode 权限编码
+ * @return true-拥有;false-不拥有
+ * @author yslg
+ * @since 2025-09-27
+ */
+ boolean hasPermission(String userID, String permissionCode);
+}
diff --git a/schoolNewsServ/api/api-system/src/main/java/org/xyzh/api/system/role/RoleService.java b/schoolNewsServ/api/api-system/src/main/java/org/xyzh/api/system/role/RoleService.java
new file mode 100644
index 0000000..b64b453
--- /dev/null
+++ b/schoolNewsServ/api/api-system/src/main/java/org/xyzh/api/system/role/RoleService.java
@@ -0,0 +1,88 @@
+package org.xyzh.api.system.role;
+
+import java.util.Collection;
+import java.util.List;
+import org.xyzh.common.dto.role.TbSysRole;
+
+
+/**
+ * @description RoleRemoteService.java文件描述 角色远程服务接口
+ * @filename RoleRemoteService.java
+ * @author yslg
+ * @copyright xyzh
+ * @since 2025-09-26
+ */
+public interface RoleService {
+
+ /**
+ * @description 添加角色
+ * @param role 角色对象
+ * @return void
+ * @author yslg
+ * @since 2025-09-27
+ */
+ void addRole(TbSysRole role);
+
+ /**
+ * @description 更新角色
+ * @param role 角色对象
+ * @return void
+ * @author yslg
+ * @since 2025-09-27
+ */
+ void updateRole(TbSysRole role);
+
+ /**
+ * @description 删除角色
+ * @param roleID 角色ID
+ * @return void
+ * @author yslg
+ * @since 2025-09-27
+ */
+ void deleteRole(String roleID);
+
+ /**
+ * @description 批量导入角色
+ * @param roles 角色列表
+ * @return void
+ * @author yslg
+ * @since 2025-09-27
+ */
+ void importRoles(List roles);
+
+ /**
+ * @description 条件导出角色
+ * @param filter 角色对象
+ * @return 角色列表
+ * @author yslg
+ * @since 2025-09-27
+ */
+ List exportRoles(TbSysRole filter);
+
+ /**
+ * @description 通过主键查找
+ * @param roleID 角色ID
+ * @return 角色对象
+ * @author yslg
+ * @since 2025-09-27
+ */
+ TbSysRole findByID(String roleID);
+
+ /**
+ * @description 批量通过主键查找
+ * @param roleIDs 角色ID集合
+ * @return 角色列表
+ * @author yslg
+ * @since 2025-09-27
+ */
+ List findByIDs(Collection roleIDs);
+
+ /**
+ * @description 根据用户ID查询用户角色列表
+ * @param userID 用户ID
+ * @return 角色列表
+ * @author yslg
+ * @since 2025-09-27
+ */
+ List findUserRoleList(String userID);
+}
diff --git a/schoolNewsServ/api/api-system/src/main/java/org/xyzh/api/system/user/UserService.java b/schoolNewsServ/api/api-system/src/main/java/org/xyzh/api/system/user/UserService.java
new file mode 100644
index 0000000..87cae72
--- /dev/null
+++ b/schoolNewsServ/api/api-system/src/main/java/org/xyzh/api/system/user/UserService.java
@@ -0,0 +1,88 @@
+package org.xyzh.api.system.user;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.xyzh.common.dto.user.TbSysUser;
+
+/**
+ * @description UserRemoteService.java文件描述 用户远程服务接口
+ * @filename UserRemoteService.java
+ * @author yslg
+ * @copyright xyzh
+ * @since 2025-09-26
+ */
+public interface UserService {
+
+ /**
+ * @description 添加用户
+ * @param user 用户对象
+ * @return void
+ * @author yslg
+ * @since 2025-09-27
+ */
+ void addUser(TbSysUser user);
+
+ /**
+ * @description 更新用户
+ * @param user 用户对象
+ * @return void
+ * @author yslg
+ * @since 2025-09-27
+ */
+ void updateUser(TbSysUser user);
+
+ /**
+ * @description 删除用户(逻辑或物理取决于实现)
+ * @param userId 用户ID
+ * @return void
+ * @author yslg
+ * @since 2025-09-27
+ */
+ void deleteUser(String userID);
+
+ /**
+ * @description 批量导入用户
+ * @param users 用户列表
+ * @return void
+ * @author yslg
+ * @since 2025-09-27
+ */
+ void importUsers(List users);
+
+ /**
+ * @description 条件导出用户
+ * @param filter 用户对象
+ * @return 用户列表
+ * @author yslg
+ * @since 2025-09-27
+ */
+ List exportUsers(TbSysUser filter);
+
+ /**
+ * @description 查找用户
+ * @param filter 用户对象
+ * @return 用户对象
+ * @author yslg
+ * @since 2025-09-27
+ */
+ TbSysUser find(TbSysUser filter);
+
+ /**
+ * @description 通过主键集合查找用户列表
+ * @param userIds 用户ID集合
+ * @return 用户列表
+ * @author yslg
+ * @since 2025-09-27
+ */
+ List findByIDs(Collection userIDs);
+
+ /**
+ * @description 根据角色ID查询用户列表
+ * @param roleId 角色ID
+ * @return 用户列表
+ * @author yslg
+ * @since 2025-09-27
+ */
+ List listUsersByRoleID(String roleID);
+}
diff --git a/schoolNewsServ/api/pom.xml b/schoolNewsServ/api/pom.xml
new file mode 100644
index 0000000..68a5782
--- /dev/null
+++ b/schoolNewsServ/api/pom.xml
@@ -0,0 +1,38 @@
+
+
+ 4.0.0
+
+ org.xyzh
+ school-news
+ ${school-news.version}
+
+
+ org.xyzh
+ api
+ ${school-news.version}
+ pom
+
+ api-system
+ api-auth
+
+
+
+ 21
+ 21
+
+
+
+ org.xyzh
+ common-dto
+ ${project.version}
+
+
+ org.xyzh
+ common-core
+ ${project.version}
+
+
+
+
\ No newline at end of file
diff --git a/schoolNewsServ/auth/pom.xml b/schoolNewsServ/auth/pom.xml
new file mode 100644
index 0000000..9361f66
--- /dev/null
+++ b/schoolNewsServ/auth/pom.xml
@@ -0,0 +1,21 @@
+
+
+ 4.0.0
+
+ org.xyzh
+ school-news
+ ${school-news.version}
+
+
+ org.xyzh
+ auth
+ ${school-news.version}
+
+
+ 21
+ 21
+
+
+
\ No newline at end of file
diff --git a/schoolNewsServ/auth/src/main/java/org/xyzh/Main.java b/schoolNewsServ/auth/src/main/java/org/xyzh/Main.java
new file mode 100644
index 0000000..f660b7a
--- /dev/null
+++ b/schoolNewsServ/auth/src/main/java/org/xyzh/Main.java
@@ -0,0 +1,7 @@
+package org.xyzh;
+
+public class Main {
+ public static void main(String[] args) {
+ System.out.println("Hello world!");
+ }
+}
\ No newline at end of file
diff --git a/schoolNewsServ/common/common-annotation/pom.xml b/schoolNewsServ/common/common-annotation/pom.xml
new file mode 100644
index 0000000..a17655d
--- /dev/null
+++ b/schoolNewsServ/common/common-annotation/pom.xml
@@ -0,0 +1,21 @@
+
+
+ 4.0.0
+
+ org.xyzh
+ common
+ ${school-news.version}
+
+
+ org.xyzh
+ common-annotation
+ ${school-news.version}
+ jar
+
+ 21
+ 21
+
+
+
\ No newline at end of file
diff --git a/schoolNewsServ/common/common-annotation/src/main/java/org/xyzh/Main.java b/schoolNewsServ/common/common-annotation/src/main/java/org/xyzh/Main.java
new file mode 100644
index 0000000..f660b7a
--- /dev/null
+++ b/schoolNewsServ/common/common-annotation/src/main/java/org/xyzh/Main.java
@@ -0,0 +1,7 @@
+package org.xyzh;
+
+public class Main {
+ public static void main(String[] args) {
+ System.out.println("Hello world!");
+ }
+}
\ No newline at end of file
diff --git a/schoolNewsServ/common/common-core/pom.xml b/schoolNewsServ/common/common-core/pom.xml
new file mode 100644
index 0000000..29e34a8
--- /dev/null
+++ b/schoolNewsServ/common/common-core/pom.xml
@@ -0,0 +1,27 @@
+
+
+ 4.0.0
+
+ org.xyzh
+ common
+ ${school-news.version}
+
+
+ org.xyzh
+ common-core
+ ${school-news.version}
+ jar
+
+ 21
+ 21
+
+
+
+
+ org.xyzh
+ common-dto
+
+
+
\ No newline at end of file
diff --git a/schoolNewsServ/common/common-core/src/main/java/org/xyzh/common/core/constant/Constants.java b/schoolNewsServ/common/common-core/src/main/java/org/xyzh/common/core/constant/Constants.java
new file mode 100644
index 0000000..ba98af2
--- /dev/null
+++ b/schoolNewsServ/common/common-core/src/main/java/org/xyzh/common/core/constant/Constants.java
@@ -0,0 +1,19 @@
+package org.xyzh.common.core.constant;
+
+/**
+ * @description Constants.java文件描述
+ * @filename Constants.java
+ * @author yslg
+ * @copyright yslg
+ * @since 2025-09-07
+ */
+public class Constants {
+
+ /**
+ * @description JSON_WHITELIST_STR JSON白名单
+ * @author yslg
+ * @since 2025-09-07
+ */
+ public static final String JSON_WHITELIST_STR = "org.xyzh";
+
+}
diff --git a/schoolNewsServ/common/common-core/src/main/java/org/xyzh/common/core/domain/LoginDomain.java b/schoolNewsServ/common/common-core/src/main/java/org/xyzh/common/core/domain/LoginDomain.java
new file mode 100644
index 0000000..1346cab
--- /dev/null
+++ b/schoolNewsServ/common/common-core/src/main/java/org/xyzh/common/core/domain/LoginDomain.java
@@ -0,0 +1,5 @@
+package org.xyzh.common.core.domain;
+
+public class LoginDomain {
+
+}
diff --git a/schoolNewsServ/common/common-core/src/main/java/org/xyzh/common/core/domain/LoginParam.java b/schoolNewsServ/common/common-core/src/main/java/org/xyzh/common/core/domain/LoginParam.java
new file mode 100644
index 0000000..b55a74b
--- /dev/null
+++ b/schoolNewsServ/common/common-core/src/main/java/org/xyzh/common/core/domain/LoginParam.java
@@ -0,0 +1,42 @@
+package org.xyzh.common.core.domain;
+
+/**
+ * @description LoginParam.java文件描述 登录参数
+ * @filename LoginParam.java
+ * @author yslg
+ * @copyright xyzh
+ * @since 2025-09-28
+ */
+public class LoginParam {
+
+ /**
+ * @description 邮箱
+ * @author yslg
+ * @since 2025-09-28
+ */
+ private String email;
+
+ /**
+ * @description 密码
+ * @author yslg
+ * @since 2025-09-28
+ */
+ private String password;
+
+ public String getEmail() {
+ return email;
+ }
+
+ public void setEmail(String email) {
+ this.email = email;
+ }
+
+ public String getPassword() {
+ return password;
+ }
+
+ public void setPassword(String password) {
+ this.password = password;
+ }
+
+}
diff --git a/schoolNewsServ/common/common-core/src/main/java/org/xyzh/common/core/domain/ResultDomain.java b/schoolNewsServ/common/common-core/src/main/java/org/xyzh/common/core/domain/ResultDomain.java
new file mode 100644
index 0000000..dd4a22b
--- /dev/null
+++ b/schoolNewsServ/common/common-core/src/main/java/org/xyzh/common/core/domain/ResultDomain.java
@@ -0,0 +1,404 @@
+package org.xyzh.common.core.domain;
+import java.io.Serializable;
+import java.util.List;
+
+import org.springframework.http.HttpStatus;
+import org.xyzh.common.core.page.PageDomain;
+import org.xyzh.common.core.page.PageParam;
+
+/**
+ * @description ResultDomain.java文件描述 统一返回结果实体类
+ * @filename ResultDomain.java
+ * @author yslg
+ * @copyright yslg
+ * @since 2025-09-07
+ */
+public class ResultDomain implements Serializable{
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * @description 状态码
+ * @author yslg
+ * @since 2025-09-07
+ */
+ private int code;
+
+ /**
+ * @description 返回消息
+ * @author yslg
+ * @since 2025-09-07
+ */
+ private String message;
+
+ /**
+ * @description 操作是否成功
+ * @author yslg
+ * @since 2025-09-07
+ */
+ private boolean success;
+
+ /**
+ * @description 是否登录
+ * @author yslg
+ * @since 2025-09-07
+ */
+ private boolean login;
+
+ /**
+ * @description 是否有权限
+ * @author yslg
+ * @since 2025-09-07
+ */
+ private boolean auth;
+
+ /**
+ * @description 返回数据
+ * @author yslg
+ * @since 2025-09-07
+ */
+ private T data;
+
+ /**
+ * @description 返回数据列表
+ * @author yslg
+ * @since 2025-09-07
+ */
+ private List dataList;
+
+ /**
+ * @description 分页参数
+ * @author yslg
+ * @since 2025-09-07
+ */
+ private PageParam pageParam;
+
+ /**
+ * @description 分页信息
+ * @author yslg
+ * @since 2025-09-07
+ */
+ private PageDomain pageDomain;
+
+ public ResultDomain() {
+ }
+
+ public ResultDomain(int code, String message, T data) {
+ this.code = code;
+ this.message = message;
+ this.data = data;
+ }
+
+ public ResultDomain(int code, String message, List dataList) {
+ this.code = code;
+ this.message = message;
+ this.dataList = dataList;
+ }
+ public ResultDomain(int code, String message, PageDomain pageDomain) {
+ this.code = code;
+ this.message = message;
+ this.pageDomain = pageDomain;
+ this.pageParam = pageDomain.getPageParam();
+ this.dataList = pageDomain.getDataList();
+ }
+
+ /**
+ * @description 获取状态码
+ * @return int 状态码
+ * @author yslg
+ * @since 2025-09-07
+ */
+ public int getCode() {
+ return code;
+ }
+
+ /**
+ * @description 设置状态码
+ * @param code 状态码
+ * @return void
+ * @author yslg
+ * @since 2025-09-07
+ */
+ public void setCode(int code) {
+ this.code = code;
+ }
+
+ /**
+ * @description 获取返回消息
+ * @return String 返回消息
+ * @author yslg
+ * @since 2025-09-07
+ */
+ public String getMessage() {
+ return message;
+ }
+
+ /**
+ * @description 设置返回消息
+ * @param message 返回消息
+ * @return void
+ * @author yslg
+ * @since 2025-09-07
+ */
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ /**
+ * @description 获取数据
+ * @return T 数据
+ * @author yslg
+ * @since 2025-09-07
+ */
+ public T getData() {
+ return data;
+ }
+
+ /**
+ * @description 设置数据
+ * @param data 数据
+ * @return void
+ * @author yslg
+ * @since 2025-09-07
+ */
+ public void setData(T data) {
+ this.data = data;
+ }
+
+ /**
+ * @description 获取数据列表
+ * @return List 数据列表
+ * @author yslg
+ * @since 2025-09-07
+ */
+ public List getDataList() {
+ return dataList;
+ }
+
+ /**
+ * @description 设置数据列表
+ * @param dataList 数据列表
+ * @return void
+ * @author yslg
+ * @since 2025-09-07
+ */
+ public void setDataList(List dataList) {
+ this.dataList = dataList;
+ }
+
+ /**
+ * @description 获取分页参数
+ * @return PageParam 分页参数
+ * @author yslg
+ * @since 2025-09-07
+ */
+ public PageParam getPageParam() {
+ return pageParam;
+ }
+
+ /**
+ * @description 设置分页参数
+ * @param pageParam 分页参数
+ * @return void
+ * @author yslg
+ * @since 2025-09-07
+ */
+ public void setPageParam(PageParam pageParam) {
+ this.pageParam = pageParam;
+ }
+
+ /**
+ * @description 获取分页信息
+ * @return PageDomain 分页信息
+ * @author yslg
+ * @since 2025-09-07
+ */
+ public PageDomain getPageDomain() {
+ return pageDomain;
+ }
+
+ /**
+ * @description 设置分页信息
+ * @param pageDomain 分页信息
+ * @return void
+ * @author yslg
+ * @since 2025-09-07
+ */
+ public void setPageDomain(PageDomain pageDomain) {
+ this.pageDomain = pageDomain;
+ }
+
+ /**
+ * @description 获取成功标志
+ * @return boolean 成功标志
+ * @author yslg
+ * @since 2025-09-07
+ */
+ public boolean isSuccess() {
+ return success;
+ }
+
+ /**
+ * @description 设置成功标志
+ * @param success 成功标志
+ * @return void
+ * @author yslg
+ * @since 2025-09-07
+ */
+ public void setSuccess(boolean success) {
+ this.success = success;
+ }
+
+ /**
+ * @description 获取登录标志
+ * @return boolean 登录标志
+ * @author yslg
+ * @since 2025-09-07
+ */
+ public boolean isLogin() {
+ return login;
+ }
+
+ /**
+ * @description 设置登录标志
+ * @param login 登录标志
+ * @return void
+ * @author yslg
+ * @since 2025-09-07
+ */
+ public void setLogin(boolean login) {
+ this.login = login;
+ }
+
+ /**
+ * @description 获取权限标志
+ * @return boolean 权限标志
+ * @author yslg
+ * @since 2025-09-07
+ */
+ public boolean isAuth() {
+ return auth;
+ }
+
+ /**
+ * @description 设置权限标志
+ * @param auth 权限标志
+ * @return void
+ * @author yslg
+ * @since 2025-09-07
+ */
+ public void setAuth(boolean auth) {
+ this.auth = auth;
+ }
+
+ /**
+ * @description 操作成功
+ * @param message 返回消息
+ * @param data 返回数据
+ * @author yslg
+ * @since 2025-09-07
+ */
+ public void success(String message, T data) {
+ this.code = HttpStatus.OK.value();
+ this.message = message;
+ this.success = true;
+ this.auth = true;
+ this.login = true;
+ this.data = data;
+ }
+
+ /**
+ * @description 操作成功
+ * @param message 返回消息
+ * @param dataList 返回数据列表
+ * @author yslg
+ * @since 2025-09-07
+ */
+ public void success(String message, List dataList) {
+ this.code = HttpStatus.OK.value();
+ this.message = message;
+ this.success = true;
+ this.auth = true;
+ this.login = true;
+ this.dataList = dataList;
+ }
+
+ /**
+ * @description 操作成功
+ * @param message 返回消息
+ * @param pageDomain 返回分页信息
+ * @author yslg
+ * @since 2025-09-07
+ */
+ public void success(String message, PageDomain pageDomain) {
+ this.code = HttpStatus.OK.value();
+ this.message = message;
+ this.success = true;
+ this.auth = true;
+ this.login = true;
+ this.pageDomain = pageDomain;
+ this.pageParam = pageDomain.getPageParam();
+ this.dataList = pageDomain.getDataList();
+ }
+
+ /**
+ * @description 操作失败
+ * @param message 返回消息
+ * @author yslg
+ * @since 2025-09-07
+ */
+ public void fail(String message) {
+ this.code = HttpStatus.BAD_REQUEST.value();
+ this.message = message;
+ this.success = false;
+ this.auth = true;
+ this.login = true;
+ this.data = null;
+ }
+
+ /**
+ * @description 操作失败
+ * @param code 状态码
+ * @param message 返回消息
+ * @author yslg
+ * @since 2025-09-07
+ */
+ public void fail(int code, String message) {
+ this.code = code;
+ this.message = message;
+ this.success = false;
+ this.auth = true;
+ this.login = true;
+ this.data = null;
+ }
+
+ /**
+ * @description 未登录
+ * @param message 返回消息
+ * @author yslg
+ * @since 2025-09-07
+ */
+ public void noLogin(String message) {
+ this.code = HttpStatus.UNAUTHORIZED.value();
+ this.message = message;
+ this.success = false;
+ this.auth = false;
+ this.login = false;
+ this.data = null;
+ }
+
+ /**
+ * @description 无权限
+ * @param message 返回消息
+ * @author yslg
+ * @since 2025-09-07
+ */
+ public void noAuth(String message) {
+ this.code = HttpStatus.FORBIDDEN.value();
+ this.message = message;
+ this.success = false;
+ this.auth = false;
+ this.login = true;
+ this.data = null;
+ }
+}
diff --git a/schoolNewsServ/common/common-core/src/main/java/org/xyzh/common/core/entity/BaseEntity.java b/schoolNewsServ/common/common-core/src/main/java/org/xyzh/common/core/entity/BaseEntity.java
new file mode 100644
index 0000000..1fed31b
--- /dev/null
+++ b/schoolNewsServ/common/common-core/src/main/java/org/xyzh/common/core/entity/BaseEntity.java
@@ -0,0 +1,66 @@
+package org.xyzh.common.core.entity;
+
+import java.sql.Date;
+import java.io.Serializable;
+/**
+ * @description BaseEntity.java文件描述 基础实体类
+ * @filename BaseEntity.java
+ * @author yslg
+ * @copyright yslg
+ * @since 2025-09-07
+ */
+public class BaseEntity implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * @description id 主键
+ * @author yslg
+ * @since 2025-09-07
+ */
+ private String id;
+
+ /**
+ * @description 创建时间
+ * @author yslg
+ * @since 2025-09-07
+ */
+ private Date createTime;
+
+ /**
+ * @description 更新时间
+ * @author yslg
+ * @since 2025-09-07
+ */
+ private Date updateTime;
+
+ /**
+ * @description 删除时间
+ * @author yslg
+ * @since 2025-09-07
+ */
+ private Date deleteTime;
+
+ /**
+ * @description 是否删除 0:未删除 1:已删除
+ * @author yslg
+ * @since 2025-09-07
+ */
+ private Integer isDeleted;
+
+ /**
+ * @description 版本号
+ * @author yslg
+ * @since 2025-09-07
+ */
+ private Integer version;
+
+
+ /**
+ * @description 备注
+ * @author yslg
+ * @since 2025-09-07
+ */
+ private String remark;
+
+}
diff --git a/schoolNewsServ/common/common-core/src/main/java/org/xyzh/common/core/entity/DataEntity.java b/schoolNewsServ/common/common-core/src/main/java/org/xyzh/common/core/entity/DataEntity.java
new file mode 100644
index 0000000..91e962e
--- /dev/null
+++ b/schoolNewsServ/common/common-core/src/main/java/org/xyzh/common/core/entity/DataEntity.java
@@ -0,0 +1,100 @@
+package org.xyzh.common.core.entity;
+import java.util.List;
+import org.xyzh.common.core.enums.DataStatus;
+
+/**
+ * @description DataEntity.java文件描述 数据实体类
+ * @filename DataEntity.java
+ * @author yslg
+ * @copyright yslg
+ * @since 2025-09-07
+ */
+public class DataEntity extends BaseEntity {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * @description 创建人ID
+ * @author yslg
+ * @since 2025-09-07
+ */
+ private String creatorID;
+
+ /**
+ * @description 创建人名称
+ * @author yslg
+ * @since 2025-09-07
+ */
+ private String creatorName;
+
+ /**
+ * @description 更新人ID
+ * @author yslg
+ * @since 2025-09-07
+ */
+ private String updatorID;
+
+ /**
+ * @description 更新人名称
+ * @author yslg
+ * @since 2025-09-07
+ */
+ private String updatorName;
+
+ /**
+ * @description 删除人ID
+ * @author yslg
+ * @since 2025-09-07
+ */
+ private String deleterID;
+
+ /**
+ * @description 删除人名称
+ * @author yslg
+ * @since 2025-09-07
+ */
+ private String deleterName;
+
+ /**
+ * @description 所有者ID
+ * @author yslg
+ * @since 2025-09-07
+ */
+ private String ownerID;
+
+ /**
+ * @description 所有者名称
+ * @author yslg
+ * @since 2025-09-07
+ */
+ private String ownerName;
+
+ /**
+ * @description 数据状态
+ * @author yslg
+ * @since 2025-09-07
+ */
+ private DataStatus dataStatus;
+
+ /**
+ * @description 是否可见
+ * @author yslg
+ * @since 2025-09-07
+ */
+ private Boolean visible;
+
+ /**
+ * @description 实体数据
+ * @author yslg
+ * @since 2025-09-07
+ */
+ private T data;
+
+ /**
+ * @description 实体数据列表
+ * @author yslg
+ * @since 2025-09-07
+ */
+ private List dataList;
+
+}
diff --git a/schoolNewsServ/common/common-core/src/main/java/org/xyzh/common/core/enums/DataStatus.java b/schoolNewsServ/common/common-core/src/main/java/org/xyzh/common/core/enums/DataStatus.java
new file mode 100644
index 0000000..7b01b2b
--- /dev/null
+++ b/schoolNewsServ/common/common-core/src/main/java/org/xyzh/common/core/enums/DataStatus.java
@@ -0,0 +1,59 @@
+package org.xyzh.common.core.enums;
+
+/**
+ * @description DataStatus枚举类 数据状态枚举类
+ * @filename DataStatus.java
+ * @author yslg
+ * @copyright yslg
+ * @since 2025-09-07
+ */
+public enum DataStatus {
+
+ WAITING("0", "待处理", "数据待处理"),
+ PROCESSING("1", "处理中", "数据处理中"),
+ COMPLETED("2", "已完成", "数据已完成"),
+ FAILED("3", "处理失败", "数据处理失败"),
+ CANCELLED("4", "已取消", "数据已取消"),
+ DELETED("5", "已删除", "数据已删除");
+
+ private final String code;
+ private final String name;
+ private final String description;
+
+ DataStatus(String code, String name, String description) {
+ this.code = code;
+ this.name = name;
+ this.description = description;
+ }
+
+ /**
+ * @description 获取枚举值
+ * @param
+ * @return String 枚举值
+ * @author yslg
+ * @since 2025-09-07
+ */
+ public String getCode() {
+ return code;
+ }
+
+ /**
+ * @description 获取枚举名称
+ * @return String 枚举名称
+ * @author yslg
+ * @since 2025-09-07
+ */
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * @description 获取枚举描述
+ * @return String 枚举描述
+ * @author yslg
+ * @since 2025-09-07
+ */
+ public String getDescription() {
+ return description;
+ }
+}
diff --git a/schoolNewsServ/common/common-core/src/main/java/org/xyzh/common/core/enums/UserStatus.java b/schoolNewsServ/common/common-core/src/main/java/org/xyzh/common/core/enums/UserStatus.java
new file mode 100644
index 0000000..dd1d9bd
--- /dev/null
+++ b/schoolNewsServ/common/common-core/src/main/java/org/xyzh/common/core/enums/UserStatus.java
@@ -0,0 +1,5 @@
+package org.xyzh.common.core.enums;
+
+public enum UserStatus {
+
+}
diff --git a/schoolNewsServ/common/common-core/src/main/java/org/xyzh/common/core/page/PageDomain.java b/schoolNewsServ/common/common-core/src/main/java/org/xyzh/common/core/page/PageDomain.java
new file mode 100644
index 0000000..4a45320
--- /dev/null
+++ b/schoolNewsServ/common/common-core/src/main/java/org/xyzh/common/core/page/PageDomain.java
@@ -0,0 +1,84 @@
+package org.xyzh.common.core.page;
+
+import java.io.Serializable;
+import java.util.List;
+/**
+ * @description PageDomain.java文件描述 分页数据实体类
+ * @filename PageDomain.java
+ * @author yslg
+ * @copyright yslg
+ * @since 2025-09-07
+ */
+public class PageDomain implements Serializable{
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * @description 分页参数
+ * @author yslg
+ * @since 2025-09-07
+ */
+ private PageParam pageParam;
+
+ /**
+ * @description 数据列表
+ * @author yslg
+ * @since 2025-09-07
+ */
+ private List dataList;
+
+ public PageDomain() {
+ }
+
+ public PageDomain(PageParam pageParam, List dataList) {
+ this.pageParam = pageParam;
+ this.dataList = dataList;
+ }
+
+ public PageDomain(int pageNumber, int pageSize, int totalPages, long totalElements, List dataList) {
+ this.pageParam = new PageParam(pageNumber, pageSize, totalPages, totalElements);
+ this.dataList = dataList;
+ }
+
+ /**
+ * @description 设置分页参数
+ * @param pageParam 分页参数
+ * @return void
+ * @author yslg
+ * @since 2025-09-07
+ */
+ public void setPageParam(PageParam pageParam) {
+ this.pageParam = pageParam;
+ }
+
+ /**
+ * @description 获取分页参数
+ * @return PageParam 分页参数
+ * @author yslg
+ * @since 2025-09-07
+ */
+ public PageParam getPageParam() {
+ return pageParam;
+ }
+
+ /**
+ * @description 设置数据列表
+ * @param dataList 数据列表
+ * @return void
+ * @author yslg
+ * @since 2025-09-07
+ */
+ public void setDataList(List dataList) {
+ this.dataList = dataList;
+ }
+
+ /**
+ * @description 获取数据列表
+ * @return List 数据列表
+ * @author yslg
+ * @since 2025-09-07
+ */
+ public List getDataList() {
+ return dataList;
+ }
+
+}
diff --git a/schoolNewsServ/common/common-core/src/main/java/org/xyzh/common/core/page/PageParam.java b/schoolNewsServ/common/common-core/src/main/java/org/xyzh/common/core/page/PageParam.java
new file mode 100644
index 0000000..8397c39
--- /dev/null
+++ b/schoolNewsServ/common/common-core/src/main/java/org/xyzh/common/core/page/PageParam.java
@@ -0,0 +1,151 @@
+package org.xyzh.common.core.page;
+
+import java.io.Serializable;
+
+/**
+ * @description PageParam.java文件描述 分页参数
+ * @filename PageParam.java
+ * @author yslg
+ * @copyright yslg
+ * @since 2025-09-07
+ */
+public class PageParam implements Serializable {
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * @description 当前页码
+ * @author yslg
+ * @since 2025-09-07
+ */
+ private int pageNumber;
+
+ /**
+ * @description 每页显示数量
+ * @author yslg
+ * @since 2025-09-07
+ */
+ private int pageSize;
+
+ /**
+ * @description 总页数
+ * @author yslg
+ * @since 2025-09-07
+ */
+ private int totalPages;
+
+ /**
+ * @description 总记录数
+ * @author yslg
+ * @since 2025-09-07
+ */
+ private long totalElements;
+
+ public PageParam() {
+ this.pageNumber = 1;
+ this.pageSize = 10;
+ this.totalPages = 0;
+ this.totalElements = 0;
+ }
+
+ public PageParam(int pageNumber, int pageSize) {
+ this.pageNumber = pageNumber;
+ this.pageSize = pageSize;
+ }
+
+ public PageParam(int pageNumber, int pageSize, int totalPages, long totalElements) {
+ this.pageNumber = pageNumber;
+ this.pageSize = pageSize;
+ this.totalPages = totalPages;
+ this.totalElements = totalElements;
+ }
+ /**
+ * @description 设置当前页码
+ * @param pageNumber 当前页码
+ * @return void
+ * @author yslg
+ * @since 2025-09-07
+ */
+ public void setPageNumber(int pageNumber) {
+ this.pageNumber = pageNumber;
+ }
+
+ /**
+ * @description 获取当前页码
+ * @return 当前页码
+ * @author yslg
+ * @since 2025-09-07
+ */
+ public int getPageNumber() {
+ return pageNumber;
+ }
+
+ /**
+ * @description 设置每页显示数量
+ * @param pageSize 每页显示数量
+ * @return void
+ * @author yslg
+ * @since 2025-09-07
+ */
+ public void setPageSize(int pageSize) {
+ this.pageSize = pageSize;
+ }
+
+ /**
+ * @description 获取每页显示数量
+ * @return 每页显示数量
+ * @author yslg
+ * @since 2025-09-07
+ */
+ public int getPageSize() {
+ return pageSize;
+ }
+
+ /**
+ * @description 设置总页数
+ * @param totalPages 总页数
+ * @return void
+ * @author yslg
+ * @since 2025-09-07
+ */
+ public void setTotalPages(int totalPages) {
+ this.totalPages = totalPages;
+ }
+
+ /**
+ * @description 获取总页数
+ * @return 总页数
+ * @author yslg
+ * @since 2025-09-07
+ */
+ public int getTotalPages() {
+ return totalPages;
+ }
+
+ /**
+ * @description 设置总记录数
+ * @param totalElements 总记录数
+ * @return void
+ * @author yslg
+ * @since 2025-09-07
+ */
+ public void setTotalElements(long totalElements) {
+ this.totalElements = totalElements;
+ if (this.pageSize > 0) {
+ this.totalPages = (int) ((totalElements + pageSize - 1) / pageSize);
+ } else {
+ this.totalPages = 0;
+ }
+ }
+
+ /**
+ * @description 获取总记录数
+ * @return 总记录数
+ * @author yslg
+ * @since 2025-09-07
+ */
+ public long getTotalElements() {
+ return totalElements;
+ }
+
+
+}
diff --git a/schoolNewsServ/common/common-dto/pom.xml b/schoolNewsServ/common/common-dto/pom.xml
new file mode 100644
index 0000000..5876d9b
--- /dev/null
+++ b/schoolNewsServ/common/common-dto/pom.xml
@@ -0,0 +1,21 @@
+
+
+ 4.0.0
+
+ org.xyzh
+ common
+ ${school-news.version}
+
+
+ org.xyzh
+ common-dto
+ ${school-news.version}
+ jar
+
+ 21
+ 21
+
+
+
\ No newline at end of file
diff --git a/schoolNewsServ/common/common-dto/src/main/java/org/xyzh/common/dto/BaseDTO.java b/schoolNewsServ/common/common-dto/src/main/java/org/xyzh/common/dto/BaseDTO.java
new file mode 100644
index 0000000..ba68a81
--- /dev/null
+++ b/schoolNewsServ/common/common-dto/src/main/java/org/xyzh/common/dto/BaseDTO.java
@@ -0,0 +1,161 @@
+package org.xyzh.common.dto;
+
+import java.io.Serializable;
+import java.sql.Date;
+
+
+/**
+ * @description BaseDTO.java文件描述
+ * @filename BaseDTO.java
+ * @author yslg
+ * @copyright xyzh
+ * @since 2025-09-07
+ */
+public class BaseDTO implements Serializable{
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * @description id 主键
+ * @author yslg
+ * @since 2025-09-10
+ */
+ private String id;
+
+ /**
+ * @description 创建时间
+ * @author yslg
+ * @since 2025-09-10
+ */
+ private Date createTime;
+
+ /**
+ * @description 更新时间
+ * @author yslg
+ * @since 2025-09-10
+ */
+ private Date updateTime;
+
+ /**
+ * @description 删除时间
+ * @author yslg
+ * @since 2025-09-10
+ */
+ private Date deleteTime;
+
+ /**
+ * @description 是否删除
+ * @author yslg
+ * @since 2025-09-10
+ */
+ private Integer deleted;
+
+
+
+ public BaseDTO() {
+ }
+
+ /**
+ * @description 获取ID
+ * @return String ID
+ * @author yslg
+ * @since 2025-09-10
+ */
+ public String getID() {
+ return this.id;
+ }
+
+ /**
+ * @description 设置ID
+ * @param id ID
+ * @author yslg
+ * @since 2025-09-10
+ */
+ public void setID(String id) {
+ this.id = id;
+ }
+
+ /**
+ * @description 获取创建时间
+ * @return Date 创建时间
+ * @author yslg
+ * @since 2025-09-10
+ */
+ public Date getCreateTime() {
+ return createTime;
+ }
+
+ /**
+ * @description 设置创建时间
+ * @param createTime 创建时间
+ * @author yslg
+ * @since 2025-09-10
+ */
+ public void setCreateTime(Date createTime) {
+ this.createTime = createTime;
+ }
+
+ /**
+ * @description 获取更新时间
+ * @return Date 更新时间
+ * @author yslg
+ * @since 2025-09-10
+ */
+ public Date getUpdateTime() {
+ return updateTime;
+ }
+
+ /**
+ * @description 设置更新时间
+ * @param updateTime 更新时间
+ * @author yslg
+ * @since 2025-09-10
+ */
+ public void setUpdateTime(Date updateTime) {
+ this.updateTime = updateTime;
+ }
+
+ /**
+ * @description 获取删除时间
+ * @return Date 删除时间
+ * @author yslg
+ * @since 2025-09-10
+ */
+ public Date getDeleteTime() {
+ return deleteTime;
+ }
+
+ /**
+ * @description 设置删除时间
+ * @param deleteTime 删除时间
+ * @author yslg
+ * @since 2025-09-10
+ */
+ public void setDeleteTime(Date deleteTime) {
+ this.deleteTime = deleteTime;
+ }
+
+ /**
+ * @description 获取是否删除
+ * @return Integer 是否删除
+ * @author yslg
+ * @since 2025-09-10
+ */
+ public Integer getDeleted() {
+ return deleted;
+ }
+
+ /**
+ * @description 设置是否删除
+ * @param deleted 是否删除
+ * @author yslg
+ * @since 2025-09-10
+ */
+ public void setDeleted(Integer deleted) {
+ this.deleted = deleted;
+ }
+
+ @Override
+ public String toString(){
+ return "BaseDTO { id=" + id + ", createTime=" + createTime + ", updateTime=" + updateTime + ", deleteTime=" + deleteTime + ", deleted=" + deleted + " }";
+ }
+}
diff --git a/schoolNewsServ/common/common-dto/src/main/java/org/xyzh/common/dto/dept/TbSysDept.java b/schoolNewsServ/common/common-dto/src/main/java/org/xyzh/common/dto/dept/TbSysDept.java
new file mode 100644
index 0000000..eb8eb7f
--- /dev/null
+++ b/schoolNewsServ/common/common-dto/src/main/java/org/xyzh/common/dto/dept/TbSysDept.java
@@ -0,0 +1,75 @@
+package org.xyzh.common.dto.dept;
+
+import org.xyzh.common.dto.BaseDTO;
+
+/**
+ * @description TbSysDept.java文件描述 部门信息
+ * @filename TbSysDept.java
+ * @author yslg
+ * @copyright xyzh
+ * @since 2025-09-16
+ */
+public class TbSysDept extends BaseDTO{
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * @description 部门ID
+ * @author yslg
+ * @since 2024-06
+ */
+ private String deptID;
+
+ /**
+ * @description 父部门ID
+ * @author yslg
+ * @since 2024-06
+ */
+ private String parentID;
+
+ /**
+ * @description 部门名称
+ * @author yslg
+ * @since 2024-06
+ */
+ private String name;
+
+ /**
+ * @description 部门描述
+ * @author yslg
+ * @since 2024-06
+ */
+ private String description;
+
+ /**
+ * @description 创建人
+ * @author yslg
+ * @since 2024-06
+ */
+ private String creator;
+
+ /**
+ * @description 更新人
+ * @author yslg
+ * @since 2024-06
+ */
+ private String updater;
+
+
+ @Override
+ public String toString() {
+ return "TbSysDept{" +
+ "id='" + getID() + '\'' +
+ ", deptID='" + deptID + '\'' +
+ ", parentID='" + parentID + '\'' +
+ ", name='" + name + '\'' +
+ ", description='" + description + '\'' +
+ ", creator='" + creator + '\'' +
+ ", updater='" + updater + '\'' +
+ ", createTime=" + getCreateTime() +
+ ", updateTime=" + getUpdateTime() +
+ ", deleteTime=" + getDeleteTime() +
+ ", deleted=" + getDeleted() +
+ '}';
+ }
+
+}
diff --git a/schoolNewsServ/common/common-dto/src/main/java/org/xyzh/common/dto/dept/TbSysDeptRole.java b/schoolNewsServ/common/common-dto/src/main/java/org/xyzh/common/dto/dept/TbSysDeptRole.java
new file mode 100644
index 0000000..3ef309b
--- /dev/null
+++ b/schoolNewsServ/common/common-dto/src/main/java/org/xyzh/common/dto/dept/TbSysDeptRole.java
@@ -0,0 +1,58 @@
+package org.xyzh.common.dto.dept;
+
+import org.xyzh.common.dto.BaseDTO;
+
+/**
+ * @description TbSysDeptRole.java文件描述 部门角色关联信息
+ * @filename TbSysDeptRole.java
+ * @author yslg
+ * @copyright xyzh
+ * @since 2025-09-16
+ */
+public class TbSysDeptRole extends BaseDTO {
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * @description 部门ID
+ * @author yslg
+ * @since 2024-06
+ */
+ private String deptID;
+
+ /**
+ * @description 角色ID
+ * @author yslg
+ * @since 2024-06
+ */
+ private String roleID;
+
+ /**
+ * @description 创建人
+ * @author yslg
+ * @since 2025-09-16
+ */
+ public String creator;
+
+ /**
+ * @description 更新人
+ * @author yslg
+ * @since 2025-09-16
+ */
+ public String updater;
+
+ @Override
+ public String toString() {
+ return "TbSysDeptRole{" +
+ "id='" + getID() + '\'' +
+ ", deptID='" + deptID + '\'' +
+ ", roleID='" + roleID + '\'' +
+ ", creator='" + creator + '\'' +
+ ", updater='" + updater + '\'' +
+ ", createTime=" + getCreateTime() +
+ ", updateTime=" + getUpdateTime() +
+ ", deleteTime=" + getDeleteTime() +
+ ", deleted=" + getDeleted() +
+ '}';
+ }
+
+}
diff --git a/schoolNewsServ/common/common-dto/src/main/java/org/xyzh/common/dto/log/TbSysLoginLog.java b/schoolNewsServ/common/common-dto/src/main/java/org/xyzh/common/dto/log/TbSysLoginLog.java
new file mode 100644
index 0000000..c58c837
--- /dev/null
+++ b/schoolNewsServ/common/common-dto/src/main/java/org/xyzh/common/dto/log/TbSysLoginLog.java
@@ -0,0 +1,200 @@
+package org.xyzh.common.dto.log;
+import org.xyzh.common.dto.BaseDTO;
+
+/**
+ * @description TbSysLoginLog.java文件描述 登录日志信息
+ * @filename TbSysLoginLog.java
+ * @author yslg
+ * @copyright xyzh
+ * @since 2025-09-16
+ */
+public class TbSysLoginLog extends BaseDTO {
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * @description 用户ID
+ * @author yslg
+ * @since 2025-09-16
+ */
+ private String userID;
+
+ /**
+ * @description 用户名
+ * @author yslg
+ * @since 2025-09-16
+ */
+ private String username;
+
+ /**
+ * @description 登录IP地址
+ * @author yslg
+ * @since 2025-09-16
+ */
+ private String ipAddress;
+
+ /**
+ * @description IP来源
+ * @author yslg
+ * @since 2025-09-16
+ */
+ private String ipSource;
+
+ /**
+ * @description 浏览器类型
+ * @author yslg
+ * @since 2025-09-16
+ */
+ private String browser;
+
+ /**
+ * @description 操作系统
+ * @author yslg
+ * @since 2025-09-16
+ */
+ private String os;
+
+ /**
+ * @description 登录密码
+ * @author yslg
+ * @since 2025-09-16
+ */
+ private String password;
+
+ /**
+ * @description 登录时间
+ * @author yslg
+ * @since 2025-09-16
+ */
+ private String loginTime;
+
+ /**
+ * @description 登录状态(0失败 1成功)
+ * @author yslg
+ * @since 2025-09-16
+ */
+ private Integer status;
+
+ /**
+ * @description 错误次数
+ * @author yslg
+ * @since 2025-09-16
+ */
+ private Integer errorCount;
+
+ /**
+ * @description 登录消息
+ * @author yslg
+ * @since 2025-09-16
+ */
+ private String message;
+
+ public String getUserID() {
+ return userID;
+ }
+
+ public void setUserID(String userID) {
+ this.userID = userID;
+ }
+
+ public String getUsername() {
+ return username;
+ }
+
+ public void setUsername(String username) {
+ this.username = username;
+ }
+
+ public String getIpAddress() {
+ return ipAddress;
+ }
+
+ public void setIpAddress(String ipAddress) {
+ this.ipAddress = ipAddress;
+ }
+
+ public String getIpSource() {
+ return ipSource;
+ }
+
+ public void setIpSource(String ipSource) {
+ this.ipSource = ipSource;
+ }
+
+ public String getBrowser() {
+ return browser;
+ }
+
+ public void setBrowser(String browser) {
+ this.browser = browser;
+ }
+
+ public String getOs() {
+ return os;
+ }
+
+ public void setOs(String os) {
+ this.os = os;
+ }
+
+ public String getPassword() {
+ return password;
+ }
+
+ public void setPassword(String password) {
+ this.password = password;
+ }
+
+ public String getLoginTime() {
+ return loginTime;
+ }
+
+ public void setLoginTime(String loginTime) {
+ this.loginTime = loginTime;
+ }
+
+ public Integer getStatus() {
+ return status;
+ }
+
+ public void setStatus(Integer status) {
+ this.status = status;
+ }
+
+ public Integer getErrorCount() {
+ return errorCount;
+ }
+
+ public void setErrorCount(Integer errorCount) {
+ this.errorCount = errorCount;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ @Override
+ public String toString() {
+ return "TbSysLoginLog{" +
+ "id='" + getID() + '\'' +
+ ", userID='" + userID + '\'' +
+ ", username='" + username + '\'' +
+ ", ipAddress='" + ipAddress + '\'' +
+ ", ipSource='" + ipSource + '\'' +
+ ", browser='" + browser + '\'' +
+ ", os='" + os + '\'' +
+ ", password='" + password + '\'' +
+ ", loginTime='" + loginTime + '\'' +
+ ", status=" + status +
+ ", errorCount=" + errorCount +
+ ", message='" + message + '\'' +
+ ", createTime='" + getCreateTime() + '\'' +
+ ", updateTime='" + getUpdateTime() + '\'' +
+ ", deleteTime='" + getDeleteTime() + '\'' +
+ ", deleted=" + getDeleted() +
+ '}';
+ }
+}
diff --git a/schoolNewsServ/common/common-dto/src/main/java/org/xyzh/common/dto/menu/TbSysMenu.java b/schoolNewsServ/common/common-dto/src/main/java/org/xyzh/common/dto/menu/TbSysMenu.java
new file mode 100644
index 0000000..36def37
--- /dev/null
+++ b/schoolNewsServ/common/common-dto/src/main/java/org/xyzh/common/dto/menu/TbSysMenu.java
@@ -0,0 +1,184 @@
+package org.xyzh.common.dto.menu;
+import org.xyzh.common.dto.BaseDTO;
+
+/**
+ * @description TbSysMenu.java文件描述 菜单信息
+ * @filename TbSysMenu.java
+ * @author yslg
+ * @copyright xyzh
+ * @since 2025-09-16
+ */
+public class TbSysMenu extends BaseDTO {
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * @description 菜单ID
+ * @author yslg
+ * @since 2024-06
+ */
+ private String menuID;
+
+ /**
+ * @description 父菜单ID
+ * @author yslg
+ * @since 2024-06
+ */
+ private String parentID;
+
+ /**
+ * @description 菜单名称
+ * @author yslg
+ * @since 2024-06
+ */
+ private String name;
+
+ /**
+ * @description 菜单描述
+ * @author yslg
+ * @since 2024-06
+ */
+ private String description;
+
+ /**
+ * @description 菜单URL
+ * @author yslg
+ * @since 2024-06
+ */
+ private String url;
+
+ /**
+ * @description 菜单图标
+ * @author yslg
+ * @since 2024-06
+ */
+ private String icon;
+
+ /**
+ * @description 菜单顺序
+ * @author yslg
+ * @since 2024-06
+ */
+ private Integer orderNum;
+
+ /**
+ * @description 菜单类型 0目录 1菜单 2按钮
+ * @author yslg
+ * @since 2024-06
+ */
+ private Integer type;
+
+ /**
+ * @description 创建人
+ * @author yslg
+ * @since 2024-06
+ */
+ private String creator;
+
+ /**
+ * @description 更新人
+ * @author yslg
+ * @since 2024-06
+ */
+ private String updater;
+
+ public String getMenuID() {
+ return menuID;
+ }
+
+ public void setMenuID(String menuID) {
+ this.menuID = menuID;
+ }
+
+ public String getParentID() {
+ return parentID;
+ }
+
+ public void setParentID(String parentID) {
+ this.parentID = parentID;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ public String getUrl() {
+ return url;
+ }
+
+ public void setUrl(String url) {
+ this.url = url;
+ }
+
+ public String getIcon() {
+ return icon;
+ }
+
+ public void setIcon(String icon) {
+ this.icon = icon;
+ }
+
+ public Integer getOrderNum() {
+ return orderNum;
+ }
+
+ public void setOrderNum(Integer orderNum) {
+ this.orderNum = orderNum;
+ }
+
+ public Integer getType() {
+ return type;
+ }
+
+ public void setType(Integer type) {
+ this.type = type;
+ }
+
+ public String getCreator() {
+ return creator;
+ }
+
+ public void setCreator(String creator) {
+ this.creator = creator;
+ }
+
+ public String getUpdater() {
+ return updater;
+ }
+
+ public void setUpdater(String updater) {
+ this.updater = updater;
+ }
+
+ @Override
+ public String toString() {
+ return "TbSysMenu{" +
+ "id='" + getID() + '\'' +
+ ", menuID='" + menuID + '\'' +
+ ", parentID='" + parentID + '\'' +
+ ", name='" + name + '\'' +
+ ", description='" + description + '\'' +
+ ", url='" + url + '\'' +
+ ", icon='" + icon + '\'' +
+ ", orderNum=" + orderNum +
+ ", type=" + type +
+ ", creator='" + creator + '\'' +
+ ", updater='" + updater + '\'' +
+ ", createTime=" + getCreateTime() +
+ ", updateTime=" + getUpdateTime() +
+ ", deleteTime=" + getDeleteTime() +
+ ", deleted=" + getDeleted() +
+ '}';
+ }
+}
diff --git a/schoolNewsServ/common/common-dto/src/main/java/org/xyzh/common/dto/menu/TbSysMenuPermission.java b/schoolNewsServ/common/common-dto/src/main/java/org/xyzh/common/dto/menu/TbSysMenuPermission.java
new file mode 100644
index 0000000..9d94d46
--- /dev/null
+++ b/schoolNewsServ/common/common-dto/src/main/java/org/xyzh/common/dto/menu/TbSysMenuPermission.java
@@ -0,0 +1,90 @@
+package org.xyzh.common.dto.menu;
+
+import org.xyzh.common.dto.BaseDTO;
+
+/**
+ * @description TbSysMenuPermission.java文件描述 菜单权限信息
+ * @filename TbSysMenuPermission.java
+ * @author yslg
+ * @copyright xyzh
+ * @since 2025-09-16
+ */
+public class TbSysMenuPermission extends BaseDTO{
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * @description 菜单ID
+ * @author yslg
+ * @since 2024-06
+ */
+ private String menuID;
+
+ /**
+ * @description 权限ID
+ * @author yslg
+ * @since 2024-06
+ */
+ private String permissionID;
+
+ /**
+ * @description 创建人
+ * @author yslg
+ * @since 2024-06
+ */
+ private String creator;
+
+ /**
+ * @description 更新人
+ * @author yslg
+ * @since 2024-06
+ */
+ private String updater;
+
+ public String getMenuID() {
+ return menuID;
+ }
+
+ public void setMenuID(String menuID) {
+ this.menuID = menuID;
+ }
+
+ public String getPermissionID() {
+ return permissionID;
+ }
+
+ public void setPermissionID(String permissionID) {
+ this.permissionID = permissionID;
+ }
+
+ public String getCreator() {
+ return creator;
+ }
+
+ public void setCreator(String creator) {
+ this.creator = creator;
+ }
+
+ public String getUpdater() {
+ return updater;
+ }
+
+ public void setUpdater(String updater) {
+ this.updater = updater;
+ }
+
+ @Override
+ public String toString() {
+ return "TbSysMenuPermission{" +
+ "id='" + getID() + '\'' +
+ ", menuID='" + menuID + '\'' +
+ ", permissionID='" + permissionID + '\'' +
+ ", creator='" + creator + '\'' +
+ ", updater='" + updater + '\'' +
+ ", createTime=" + getCreateTime() +
+ ", updateTime=" + getUpdateTime() +
+ ", deleteTime=" + getDeleteTime() +
+ ", deleted=" + getDeleted() +
+ '}';
+ }
+
+}
diff --git a/schoolNewsServ/common/common-dto/src/main/java/org/xyzh/common/dto/permission/TbSysPermission.java b/schoolNewsServ/common/common-dto/src/main/java/org/xyzh/common/dto/permission/TbSysPermission.java
new file mode 100644
index 0000000..2a6802d
--- /dev/null
+++ b/schoolNewsServ/common/common-dto/src/main/java/org/xyzh/common/dto/permission/TbSysPermission.java
@@ -0,0 +1,122 @@
+package org.xyzh.common.dto.permission;
+
+import org.xyzh.common.dto.BaseDTO;
+
+/**
+ * @description TbSysPermission.java文件描述 权限信息
+ * @filename TbSysPermission.java
+ * @author yslg
+ * @copyright xyzh
+ * @since 2025-09-16
+ */
+public class TbSysPermission extends BaseDTO{
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * @description 权限ID
+ * @author yslg
+ * @since 2024-06
+ */
+ private String permissionID;
+
+ /**
+ * @description 权限名称
+ * @author yslg
+ * @since 2024-06
+ */
+ private String name;
+
+ /**
+ * @description 权限描述
+ * @author yslg
+ * @since 2024-06
+ */
+ private String description;
+
+ /**
+ * @description 权限编码
+ * @author yslg
+ * @since 2024-06
+ */
+ private String code;
+
+ /**
+ * @description 创建人
+ * @author yslg
+ * @since 2024-06
+ */
+ private String creator;
+
+ /**
+ * @description 更新人
+ * @author yslg
+ * @since 2024-06
+ */
+ private String updater;
+
+ public String getPermissionID() {
+ return permissionID;
+ }
+
+ public void setPermissionID(String permissionID) {
+ this.permissionID = permissionID;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code;
+ }
+
+ public String getCreator() {
+ return creator;
+ }
+
+ public void setCreator(String creator) {
+ this.creator = creator;
+ }
+
+ public String getUpdater() {
+ return updater;
+ }
+
+ public void setUpdater(String updater) {
+ this.updater = updater;
+ }
+
+ @Override
+ public String toString() {
+ return "TbSysPermission{" +
+ "id='" + getID() + '\'' +
+ ", permissionID='" + permissionID + '\'' +
+ ", name='" + name + '\'' +
+ ", description='" + description + '\'' +
+ ", code='" + code + '\'' +
+ ", creator='" + creator + '\'' +
+ ", updater='" + updater + '\'' +
+ ", createTime=" + getCreateTime() +
+ ", updateTime=" + getUpdateTime() +
+ ", deleteTime=" + getDeleteTime() +
+ ", deleted=" + getDeleted() +
+ '}';
+ }
+
+}
diff --git a/schoolNewsServ/common/common-dto/src/main/java/org/xyzh/common/dto/role/TbSysRole.java b/schoolNewsServ/common/common-dto/src/main/java/org/xyzh/common/dto/role/TbSysRole.java
new file mode 100644
index 0000000..96f7a46
--- /dev/null
+++ b/schoolNewsServ/common/common-dto/src/main/java/org/xyzh/common/dto/role/TbSysRole.java
@@ -0,0 +1,105 @@
+package org.xyzh.common.dto.role;
+
+import org.xyzh.common.dto.BaseDTO;
+
+/**
+ * @description TbSysRole.java文件描述 角色信息
+ * @filename TbSysRole.java
+ * @author yslg
+ * @copyright xyzh
+ * @since 2025-09-16
+ */
+public class TbSysRole extends BaseDTO {
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * @description 角色ID
+ * @author yslg
+ * @since 2024-06
+ */
+ private String roleID;
+
+ /**
+ * @description 角色名称
+ * @author yslg
+ * @since 2024-06
+ */
+ private String name;
+
+ /**
+ * @description 角色描述
+ * @author yslg
+ * @since 2024-06
+ */
+ private String description;
+
+ /**
+ * @description 创建人
+ * @author yslg
+ * @since 2024-06
+ */
+ private String creator;
+
+ /**
+ * @description 更新人
+ * @author yslg
+ * @since 2024-06
+ */
+ private String updater;
+
+ public String getRoleID() {
+ return roleID;
+ }
+
+ public void setRoleID(String roleID) {
+ this.roleID = roleID;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ public String getCreator() {
+ return creator;
+ }
+
+ public void setCreator(String creator) {
+ this.creator = creator;
+ }
+
+ public String getUpdater() {
+ return updater;
+ }
+
+ public void setUpdater(String updater) {
+ this.updater = updater;
+ }
+
+ @Override
+ public String toString() {
+ return "TbSysRole{" +
+ "id='" + getID() + '\'' +
+ ",roleID='" + roleID + '\'' +
+ ", name='" + name + '\'' +
+ ", description='" + description + '\'' +
+ ", creator='" + creator + '\'' +
+ ", updater='" + updater + '\'' +
+ ", createTime=" + getCreateTime() +
+ ", updateTime=" + getUpdateTime() +
+ ", deleteTime=" + getDeleteTime() +
+ ", deleted=" + getDeleted() +
+ '}';
+ }
+}
\ No newline at end of file
diff --git a/schoolNewsServ/common/common-dto/src/main/java/org/xyzh/common/dto/role/TbSysRolePermission.java b/schoolNewsServ/common/common-dto/src/main/java/org/xyzh/common/dto/role/TbSysRolePermission.java
new file mode 100644
index 0000000..cf90efb
--- /dev/null
+++ b/schoolNewsServ/common/common-dto/src/main/java/org/xyzh/common/dto/role/TbSysRolePermission.java
@@ -0,0 +1,57 @@
+package org.xyzh.common.dto.role;
+
+import org.xyzh.common.dto.BaseDTO;
+/**
+ * @description TbSysRolePermission.java文件描述 角色权限关联信息
+ * @filename TbSysRolePermission.java
+ * @author yslg
+ * @copyright xyzh
+ * @since 2025-09-16
+ */
+public class TbSysRolePermission extends BaseDTO{
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * @description 角色ID
+ * @author yslg
+ * @since 2024-06
+ */
+ private String roleID;
+
+ /**
+ * @description 权限ID
+ * @author yslg
+ * @since 2024-06
+ */
+ private String permissionID;
+
+ /**
+ * @description 创建人
+ * @author yslg
+ * @since 2025-09-16
+ */
+ public String creator;
+
+ /**
+ * @description 更新人
+ * @author yslg
+ * @since 2025-09-16
+ */
+ public String updater;
+
+ @Override
+ public String toString() {
+ return "TbSysRolePermission{" +
+ "id='" + getID() + '\'' +
+ ", roleID='" + roleID + '\'' +
+ ", permissionID='" + permissionID + '\'' +
+ ", creator='" + creator + '\'' +
+ ", updater='" + updater + '\'' +
+ ", createTime=" + getCreateTime() +
+ ", updateTime=" + getUpdateTime() +
+ ", deleteTime=" + getDeleteTime() +
+ ", deleted=" + getDeleted() +
+ '}';
+ }
+
+}
diff --git a/schoolNewsServ/common/common-dto/src/main/java/org/xyzh/common/dto/user/TbSysUser.java b/schoolNewsServ/common/common-dto/src/main/java/org/xyzh/common/dto/user/TbSysUser.java
new file mode 100644
index 0000000..d55777a
--- /dev/null
+++ b/schoolNewsServ/common/common-dto/src/main/java/org/xyzh/common/dto/user/TbSysUser.java
@@ -0,0 +1,124 @@
+package org.xyzh.common.dto.user;
+import org.xyzh.common.dto.BaseDTO;
+
+/**
+ * @description TbSysUser.java文件描述
+ * @filename TbSysUser.java
+ * @author yslg
+ * @copyright xyzh
+ * @since 2025-09-10
+ */
+public class TbSysUser extends BaseDTO {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * @description 用户名
+ * @author yslg
+ * @since 2025-09-10
+ */
+ private String username;
+
+ /**
+ * @description 密码
+ * @author yslg
+ * @since 2025-09-10
+ */
+ private String password;
+
+ /**
+ * @description 邮箱
+ * @author yslg
+ * @since 2025-09-10
+ */
+ private String email;
+
+ /**
+ * @description 手机号
+ * @author yslg
+ * @since 2025-09-10
+ */
+ private String phone;
+
+ /**
+ * @description 微信号
+ * @author yslg
+ * @since 2025-09-10
+ */
+ private String wechatID;
+
+ /**
+ * @description 用户状态
+ * @author yslg
+ * @since 2025-09-10
+ */
+ private Integer status;
+
+
+
+ public String getUsername() {
+ return username;
+ }
+
+ public void setUsername(String username) {
+ this.username = username;
+ }
+
+ public String getPassword() {
+ return password;
+ }
+
+ public void setPassword(String password) {
+ this.password = password;
+ }
+
+ public String getEmail() {
+ return email;
+ }
+
+ public void setEmail(String email) {
+ this.email = email;
+ }
+
+ public String getPhone() {
+ return phone;
+ }
+
+ public void setPhone(String phone) {
+ this.phone = phone;
+ }
+
+ public String getWechatID() {
+ return wechatID;
+ }
+
+ public void setWechatID(String wechatID) {
+ this.wechatID = wechatID;
+ }
+
+ public Integer getStatus() {
+ return status;
+ }
+
+ public void setStatus(Integer status) {
+ this.status = status;
+ }
+
+ @Override
+ public String toString() {
+ return "TbSysUser{" +
+ "id=" + getID() +
+ ", username='" + username + '\'' +
+ ", password='" + password + '\'' +
+ ", email='" + email + '\'' +
+ ", phone='" + phone + '\'' +
+ ", wechatID='" + wechatID + '\'' +
+ ", status=" + status +
+ ", createTime=" + getCreateTime() +
+ ", updateTime=" + getUpdateTime() +
+ ", deleteTime=" + getDeleteTime() +
+ ", deleted=" + getDeleted() +
+ '}';
+ }
+
+}
diff --git a/schoolNewsServ/common/common-dto/src/main/java/org/xyzh/common/dto/user/TbSysUserInfo.java b/schoolNewsServ/common/common-dto/src/main/java/org/xyzh/common/dto/user/TbSysUserInfo.java
new file mode 100644
index 0000000..f9c7b53
--- /dev/null
+++ b/schoolNewsServ/common/common-dto/src/main/java/org/xyzh/common/dto/user/TbSysUserInfo.java
@@ -0,0 +1,155 @@
+package org.xyzh.common.dto.user;
+
+import org.xyzh.common.dto.BaseDTO;
+
+/**
+ * @description TbSysUserInfo.java文件描述 用户信息
+ * @filename TbSysUserInfo.java
+ * @author yslg
+ * @copyright xyzh
+ * @since 2025-09-11
+ */
+public class TbSysUserInfo extends BaseDTO {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * @description 用户ID
+ * @author yslg
+ * @since 2025-09-11
+ */
+ private String userID;
+
+ /**
+ * @description 头像
+ * @author yslg
+ * @since 2025-09-11
+ */
+ private String avatar;
+
+ /**
+ * @description 性别(0-未知,1-女,2-男)
+ * @author yslg
+ * @since 2025-09-11
+ */
+ private Integer gender;
+
+ /**
+ * @description 姓
+ * @author yslg
+ * @since 2025-09-11
+ */
+ private String familyName;
+
+ /**
+ * @description 名
+ * @author yslg
+ * @since 2025-09-11
+ */
+ private String givenName;
+
+ /**
+ * @description 全名
+ * @author yslg
+ * @since 2025-09-11
+ */
+ private String fullName;
+
+ /**
+ * @description ID卡号
+ * @author yslg
+ * @since 2025-09-11
+ */
+ private String idCard;
+
+ /**
+ * @description 地址
+ * @author yslg
+ * @since 2025-09-11
+ */
+ private String address;
+
+ public String getUserID() {
+ return userID;
+ }
+
+ public void setUserID(String userID) {
+ this.userID = userID;
+ }
+
+ public String getAvatar() {
+ return avatar;
+ }
+
+ public void setAvatar(String avatar) {
+ this.avatar = avatar;
+ }
+
+ public Integer getGender() {
+ return gender;
+ }
+
+ public void setGender(Integer gender) {
+ this.gender = gender;
+ }
+
+ public String getFamilyName() {
+ return familyName;
+ }
+
+ public void setFamilyName(String familyName) {
+ this.familyName = familyName;
+ }
+
+ public String getGivenName() {
+ return givenName;
+ }
+
+ public void setGivenName(String givenName) {
+ this.givenName = givenName;
+ }
+
+ public String getFullName() {
+ return fullName;
+ }
+
+ public void setFullName(String fullName) {
+ this.fullName = fullName;
+ }
+
+ public String getIdCard() {
+ return idCard;
+ }
+
+ public void setIdCard(String idCard) {
+ this.idCard = idCard;
+ }
+
+ public String getAddress() {
+ return address;
+ }
+
+ public void setAddress(String address) {
+ this.address = address;
+ }
+
+
+ @Override
+ public String toString() {
+ return "TbSysUserInfo{" +
+ "id=" + getID() +
+ ", userID='" + userID + '\'' +
+ ", avatar='" + avatar + '\'' +
+ ", gender=" + gender +
+ ", familyName='" + familyName + '\'' +
+ ", givenName='" + givenName + '\'' +
+ ", fullName='" + fullName + '\'' +
+ ", idCard='" + idCard + '\'' +
+ ", address='" + address + '\'' +
+ ", createTime=" + getCreateTime() +
+ ", updateTime=" + getUpdateTime() +
+ ", deleteTime=" + getDeleteTime() +
+ ", deleted=" + getDeleted() +
+ '}';
+ }
+}
diff --git a/schoolNewsServ/common/common-dto/src/main/java/org/xyzh/common/dto/user/TbSysUserRole.java b/schoolNewsServ/common/common-dto/src/main/java/org/xyzh/common/dto/user/TbSysUserRole.java
new file mode 100644
index 0000000..db4e269
--- /dev/null
+++ b/schoolNewsServ/common/common-dto/src/main/java/org/xyzh/common/dto/user/TbSysUserRole.java
@@ -0,0 +1,91 @@
+package org.xyzh.common.dto.user;
+
+import org.xyzh.common.dto.BaseDTO;
+
+/**
+ * @description TbSysUserRole.java文件描述 用户角色
+ * @filename TbSysUserRole.java
+ * @author yslg
+ * @copyright xyzh
+ * @since 2025-09-26
+ */
+public class TbSysUserRole extends BaseDTO{
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * @description 用户ID
+ * @author yslg
+ * @since 2024-06
+ */
+ private String userID;
+
+ /**
+ * @description 角色ID
+ * @author yslg
+ * @since 2024-06
+ */
+ private String roleID;
+
+ /**
+ * @description 创建人
+ * @author yslg
+ * @since 2024-06
+ */
+ private String creator;
+
+ /**
+ * @description 更新人
+ * @author yslg
+ * @since 2024-06
+ */
+ private String updater;
+
+ public String getUserID() {
+ return userID;
+ }
+
+ public void setUserID(String userID) {
+ this.userID = userID;
+ }
+
+ public String getRoleID() {
+ return roleID;
+ }
+
+ public void setRoleID(String roleID) {
+ this.roleID = roleID;
+ }
+
+ public String getCreator() {
+ return creator;
+ }
+
+ public void setCreator(String creator) {
+ this.creator = creator;
+ }
+
+ public String getUpdater() {
+ return updater;
+ }
+
+ public void setUpdater(String updater) {
+ this.updater = updater;
+ }
+
+ @Override
+ public String toString() {
+ return "TbSysUserRole{" +
+ "id='" + getID() + '\'' +
+ ", userID='" + userID + '\'' +
+ ", roleID='" + roleID + '\'' +
+ ", creator='" + creator + '\'' +
+ ", updater='" + updater + '\'' +
+ ", createTime=" + getCreateTime() +
+ ", updateTime=" + getUpdateTime() +
+ ", deleteTime=" + getDeleteTime() +
+ ", deleted=" + getDeleted() +
+ '}';
+ }
+
+}
diff --git a/schoolNewsServ/common/common-exception/pom.xml b/schoolNewsServ/common/common-exception/pom.xml
new file mode 100644
index 0000000..4880795
--- /dev/null
+++ b/schoolNewsServ/common/common-exception/pom.xml
@@ -0,0 +1,21 @@
+
+
+ 4.0.0
+
+ org.xyzh
+ common
+ ${school-news.version}
+
+
+ org.xyzh
+ common-exception
+ ${school-news.version}
+ jar
+
+ 21
+ 21
+
+
+
\ No newline at end of file
diff --git a/schoolNewsServ/common/common-exception/src/main/java/org/xyzh/Main.java b/schoolNewsServ/common/common-exception/src/main/java/org/xyzh/Main.java
new file mode 100644
index 0000000..f660b7a
--- /dev/null
+++ b/schoolNewsServ/common/common-exception/src/main/java/org/xyzh/Main.java
@@ -0,0 +1,7 @@
+package org.xyzh;
+
+public class Main {
+ public static void main(String[] args) {
+ System.out.println("Hello world!");
+ }
+}
\ No newline at end of file
diff --git a/schoolNewsServ/common/common-jdbc/pom.xml b/schoolNewsServ/common/common-jdbc/pom.xml
new file mode 100644
index 0000000..1cb3b7c
--- /dev/null
+++ b/schoolNewsServ/common/common-jdbc/pom.xml
@@ -0,0 +1,22 @@
+
+
+ 4.0.0
+
+ org.xyzh
+ common
+ ${school-news.version}
+
+
+ org.xyzh
+ common-jdbc
+ ${school-news.version}
+ jar
+
+
+ 21
+ 21
+
+
+
\ No newline at end of file
diff --git a/schoolNewsServ/common/common-jdbc/src/main/java/org/xyzh/Main.java b/schoolNewsServ/common/common-jdbc/src/main/java/org/xyzh/Main.java
new file mode 100644
index 0000000..f660b7a
--- /dev/null
+++ b/schoolNewsServ/common/common-jdbc/src/main/java/org/xyzh/Main.java
@@ -0,0 +1,7 @@
+package org.xyzh;
+
+public class Main {
+ public static void main(String[] args) {
+ System.out.println("Hello world!");
+ }
+}
\ No newline at end of file
diff --git a/schoolNewsServ/common/common-redis/pom.xml b/schoolNewsServ/common/common-redis/pom.xml
new file mode 100644
index 0000000..01fc116
--- /dev/null
+++ b/schoolNewsServ/common/common-redis/pom.xml
@@ -0,0 +1,21 @@
+
+
+ 4.0.0
+
+ org.xyzh
+ common
+ ${school-news.version}
+
+
+ org.xyzh
+ common-redis
+ ${school-news.version}
+ jar
+
+ 21
+ 21
+
+
+
\ No newline at end of file
diff --git a/schoolNewsServ/common/common-redis/src/main/java/org/xyzh/Main.java b/schoolNewsServ/common/common-redis/src/main/java/org/xyzh/Main.java
new file mode 100644
index 0000000..f660b7a
--- /dev/null
+++ b/schoolNewsServ/common/common-redis/src/main/java/org/xyzh/Main.java
@@ -0,0 +1,7 @@
+package org.xyzh;
+
+public class Main {
+ public static void main(String[] args) {
+ System.out.println("Hello world!");
+ }
+}
\ No newline at end of file
diff --git a/schoolNewsServ/common/common-util/pom.xml b/schoolNewsServ/common/common-util/pom.xml
new file mode 100644
index 0000000..40be126
--- /dev/null
+++ b/schoolNewsServ/common/common-util/pom.xml
@@ -0,0 +1,21 @@
+
+
+ 4.0.0
+
+ org.xyzh
+ common
+ ${school-news.version}
+
+
+ org.xyzh
+ common-util
+ ${school-news.version}
+ jar
+
+ 21
+ 21
+
+
+
\ No newline at end of file
diff --git a/schoolNewsServ/common/common-util/src/main/java/org/xyzh/Main.java b/schoolNewsServ/common/common-util/src/main/java/org/xyzh/Main.java
new file mode 100644
index 0000000..f660b7a
--- /dev/null
+++ b/schoolNewsServ/common/common-util/src/main/java/org/xyzh/Main.java
@@ -0,0 +1,7 @@
+package org.xyzh;
+
+public class Main {
+ public static void main(String[] args) {
+ System.out.println("Hello world!");
+ }
+}
\ No newline at end of file
diff --git a/schoolNewsServ/common/pom.xml b/schoolNewsServ/common/pom.xml
new file mode 100644
index 0000000..4d3921a
--- /dev/null
+++ b/schoolNewsServ/common/pom.xml
@@ -0,0 +1,78 @@
+
+
+ 4.0.0
+
+ org.xyzh
+ school-news
+ ${school-news.version}
+
+
+ org.xyzh
+ common
+ ${school-news.version}
+ pom
+
+ common-core
+ common-dto
+ common-annotation
+ common-exception
+ common-redis
+ common-jdbc
+ common-util
+
+
+
+ 21
+ 21
+
+
+
+ jakarta.servlet
+ jakarta.servlet-api
+ ${jakarta.servlet.version}
+ provided
+
+
+
+
+
+
+ org.xyzh
+ common-core
+ ${school-news.version}
+
+
+ org.xyzh
+ common-dto
+ ${school-news.version}
+
+
+ org.xyzh
+ common-annotation
+ ${school-news.version}
+
+
+ org.xyzh
+ common-exception
+ ${school-news.version}
+
+
+ org.xyzh
+ common-redis
+ ${school-news.version}
+
+
+ org.xyzh
+ common-jdbc
+ ${school-news.version}
+
+
+ org.xyzh
+ common-util
+ ${school-news.version}
+
+
+
+
\ No newline at end of file
diff --git a/schoolNewsServ/news/pom.xml b/schoolNewsServ/news/pom.xml
new file mode 100644
index 0000000..3a41346
--- /dev/null
+++ b/schoolNewsServ/news/pom.xml
@@ -0,0 +1,21 @@
+
+
+ 4.0.0
+
+ org.xyzh
+ school-news
+ ${school-news.version}
+
+
+ org.xyzh
+ news
+ ${school-news.version}
+
+
+ 21
+ 21
+
+
+
\ No newline at end of file
diff --git a/schoolNewsServ/news/src/main/java/org/xyzh/Main.java b/schoolNewsServ/news/src/main/java/org/xyzh/Main.java
new file mode 100644
index 0000000..f660b7a
--- /dev/null
+++ b/schoolNewsServ/news/src/main/java/org/xyzh/Main.java
@@ -0,0 +1,7 @@
+package org.xyzh;
+
+public class Main {
+ public static void main(String[] args) {
+ System.out.println("Hello world!");
+ }
+}
\ No newline at end of file
diff --git a/schoolNewsServ/pom.xml b/schoolNewsServ/pom.xml
new file mode 100644
index 0000000..53e5287
--- /dev/null
+++ b/schoolNewsServ/pom.xml
@@ -0,0 +1,209 @@
+
+
+ 4.0.0
+ org.xyzh
+ school-news
+ pom
+ ${school-news.version}
+
+
+ api
+ auth
+ system
+ common
+ admin
+ news
+
+
+
+ 1.0.0
+ 21
+ 21
+ 21
+ UTF-8
+
+ 6.2.10
+ 3.5.6
+ 2025.0.0
+ 2025.0.0.0-preview
+
+
+ 9.4.0
+ 7.0.2
+
+ 2.0.58
+ 6.1.0
+
+ 1.18.40
+
+
+
+
+
+
+ org.xyzh
+ api
+ ${school-news.version}
+
+
+ org.xyzh
+ common
+ ${school-news.version}
+
+
+ org.xyzh
+ auth
+ ${school-news.version}
+
+
+ org.xyzh
+ system
+ ${school-news.version}
+
+
+
+
+ org.springframework
+ spring-framework-bom
+ ${spring-framework.version}
+ pom
+ import
+
+
+
+ org.springframework.boot
+ spring-boot-dependencies
+ ${spring-boot.version}
+ pom
+ import
+
+
+
+ org.springframework.cloud
+ spring-cloud-dependencies
+ ${spring-cloud.version}
+ pom
+ import
+
+
+
+
+ com.alibaba.cloud
+ spring-cloud-alibaba-dependencies
+ ${spring-cloud-alibaba.version}
+ pom
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-jdbc
+ ${spring-boot.version}
+
+
+ com.mysql
+ mysql-connector-j
+ ${mysql.version}
+ runtime
+
+
+ org.springframework.boot
+ spring-boot-starter-data-jdbc
+ ${spring-boot.version}
+
+
+ com.zaxxer
+ HikariCP
+ ${hikaricp.version}
+
+
+
+
+ com.alibaba.fastjson2
+ fastjson2
+ ${fastjson.version}
+
+
+
+ jakarta.servlet
+ jakarta.servlet-api
+ ${jakarta.servlet.version}
+ provided
+
+
+
+ org.projectlombok
+ lombok
+ ${lombok.version}
+ provided
+
+
+
+
+
+
+ org.springframework.cloud
+ spring-cloud-starter-bootstrap
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+
+ ${java.version}
+ ${java.version}
+ ${project.build.sourceEncoding}
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+ ${spring-boot.version}
+
+
+
+ repackage
+
+
+
+
+
+
+
+
+
+
+ public
+ aliyun nexus
+ https://maven.aliyun.com/repository/public
+
+ true
+
+
+
+
+
+
+ public
+ aliyun nexus
+ https://maven.aliyun.com/repository/public
+
+ true
+
+
+ false
+
+
+
+
\ No newline at end of file
diff --git a/schoolNewsServ/system/pom.xml b/schoolNewsServ/system/pom.xml
new file mode 100644
index 0000000..0543e86
--- /dev/null
+++ b/schoolNewsServ/system/pom.xml
@@ -0,0 +1,21 @@
+
+
+ 4.0.0
+
+ org.xyzh
+ school-news
+ ${school-news.version}
+
+
+ org.xyzh
+ system
+ ${school-news.version}
+
+
+ 21
+ 21
+
+
+
\ No newline at end of file
diff --git a/schoolNewsServ/system/src/main/java/org/xyzh/Main.java b/schoolNewsServ/system/src/main/java/org/xyzh/Main.java
new file mode 100644
index 0000000..f660b7a
--- /dev/null
+++ b/schoolNewsServ/system/src/main/java/org/xyzh/Main.java
@@ -0,0 +1,7 @@
+package org.xyzh;
+
+public class Main {
+ public static void main(String[] args) {
+ System.out.println("Hello world!");
+ }
+}
\ No newline at end of file