diff --git a/backend/ruoyi-admin/.flattened-pom.xml b/backend/ruoyi-admin/.flattened-pom.xml index c4b8b09..f8eb518 100644 --- a/backend/ruoyi-admin/.flattened-pom.xml +++ b/backend/ruoyi-admin/.flattened-pom.xml @@ -52,6 +52,11 @@ org.dromara ruoyi-workflow + + org.dromara + pangu-business + ${revision} + de.codecentric spring-boot-admin-starter-client diff --git a/backend/ruoyi-admin/pom.xml b/backend/ruoyi-admin/pom.xml index 9e97804..b229c0c 100644 --- a/backend/ruoyi-admin/pom.xml +++ b/backend/ruoyi-admin/pom.xml @@ -93,6 +93,13 @@ ruoyi-workflow + + + org.dromara + pangu-business + ${revision} + + de.codecentric spring-boot-admin-starter-client diff --git a/backend/ruoyi-modules/.flattened-pom.xml b/backend/ruoyi-modules/.flattened-pom.xml index f2c70af..25801b2 100644 --- a/backend/ruoyi-modules/.flattened-pom.xml +++ b/backend/ruoyi-modules/.flattened-pom.xml @@ -18,5 +18,6 @@ ruoyi-job ruoyi-system ruoyi-workflow + pangu-business diff --git a/backend/ruoyi-modules/pangu-business/.flattened-pom.xml b/backend/ruoyi-modules/pangu-business/.flattened-pom.xml new file mode 100644 index 0000000..28e591e --- /dev/null +++ b/backend/ruoyi-modules/pangu-business/.flattened-pom.xml @@ -0,0 +1,40 @@ + + + 4.0.0 + + org.dromara + ruoyi-modules + 5.5.3 + + org.dromara + pangu-business + 5.5.3 + 盘古业务模块 - 包含学校、会员、学生、应用管理等业务功能 + + + org.dromara + ruoyi-common-security + + + org.dromara + ruoyi-common-web + + + org.dromara + ruoyi-common-log + + + org.dromara + ruoyi-common-excel + + + org.dromara + ruoyi-common-translation + + + org.dromara + ruoyi-system + + + diff --git a/backend/ruoyi-modules/pangu-business/pom.xml b/backend/ruoyi-modules/pangu-business/pom.xml new file mode 100644 index 0000000..110d9de --- /dev/null +++ b/backend/ruoyi-modules/pangu-business/pom.xml @@ -0,0 +1,56 @@ + + + + org.dromara + ruoyi-modules + ${revision} + + 4.0.0 + + pangu-business + + + 盘古业务模块 - 包含学校、会员、学生、应用管理等业务功能 + + + + + + org.dromara + ruoyi-common-security + + + + + org.dromara + ruoyi-common-web + + + + + org.dromara + ruoyi-common-log + + + + + org.dromara + ruoyi-common-excel + + + + + org.dromara + ruoyi-common-translation + + + + + org.dromara + ruoyi-system + + + + diff --git a/backend/ruoyi-modules/pangu-business/sql/pangu_menu.sql b/backend/ruoyi-modules/pangu-business/sql/pangu_menu.sql new file mode 100644 index 0000000..6cae5ff --- /dev/null +++ b/backend/ruoyi-modules/pangu-business/sql/pangu_menu.sql @@ -0,0 +1,89 @@ +-- ============================================================ +-- 盘古用户平台 - 业务菜单数据(适配 RuoYi-Vue-Plus 5.x) +-- 作者:湖北新华业务中台研发团队 +-- 创建时间:2026-02-02 +-- ============================================================ + +USE `pguser-db`; + +-- 业务管理一级菜单 +INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query_param`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_dept`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) +VALUES (2000, '业务管理', 0, 5, 'business', NULL, '', 1, 0, 'M', '0', '0', '', 'guide', 103, 1, NOW(), NULL, NULL, '业务管理目录'); + +-- ===================== 基础数据管理 ===================== +INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query_param`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_dept`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) +VALUES (2100, '基础数据', 2000, 1, 'base', NULL, '', 1, 0, 'M', '0', '0', '', 'dict', 103, 1, NOW(), NULL, NULL, '基础数据管理'); + +-- 年级管理 +INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query_param`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_dept`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) +VALUES (2101, '年级管理', 2100, 1, 'grade', 'business/base/grade/index', '', 1, 0, 'C', '0', '0', 'business:grade:list', 'education', 103, 1, NOW(), NULL, NULL, '年级管理菜单'); +INSERT INTO `sys_menu` VALUES (2102, '年级查询', 2101, 1, '', '', '', 1, 0, 'F', '0', '0', 'business:grade:query', '#', 103, 1, NOW(), NULL, NULL, ''); +INSERT INTO `sys_menu` VALUES (2103, '年级新增', 2101, 2, '', '', '', 1, 0, 'F', '0', '0', 'business:grade:add', '#', 103, 1, NOW(), NULL, NULL, ''); +INSERT INTO `sys_menu` VALUES (2104, '年级修改', 2101, 3, '', '', '', 1, 0, 'F', '0', '0', 'business:grade:edit', '#', 103, 1, NOW(), NULL, NULL, ''); +INSERT INTO `sys_menu` VALUES (2105, '年级删除', 2101, 4, '', '', '', 1, 0, 'F', '0', '0', 'business:grade:remove', '#', 103, 1, NOW(), NULL, NULL, ''); +INSERT INTO `sys_menu` VALUES (2106, '年级导出', 2101, 5, '', '', '', 1, 0, 'F', '0', '0', 'business:grade:export', '#', 103, 1, NOW(), NULL, NULL, ''); + +-- 班级管理 +INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query_param`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_dept`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) +VALUES (2111, '班级管理', 2100, 2, 'class', 'business/base/class/index', '', 1, 0, 'C', '0', '0', 'business:class:list', 'peoples', 103, 1, NOW(), NULL, NULL, '班级管理菜单'); +INSERT INTO `sys_menu` VALUES (2112, '班级查询', 2111, 1, '', '', '', 1, 0, 'F', '0', '0', 'business:class:query', '#', 103, 1, NOW(), NULL, NULL, ''); +INSERT INTO `sys_menu` VALUES (2113, '班级新增', 2111, 2, '', '', '', 1, 0, 'F', '0', '0', 'business:class:add', '#', 103, 1, NOW(), NULL, NULL, ''); +INSERT INTO `sys_menu` VALUES (2114, '班级修改', 2111, 3, '', '', '', 1, 0, 'F', '0', '0', 'business:class:edit', '#', 103, 1, NOW(), NULL, NULL, ''); +INSERT INTO `sys_menu` VALUES (2115, '班级删除', 2111, 4, '', '', '', 1, 0, 'F', '0', '0', 'business:class:remove', '#', 103, 1, NOW(), NULL, NULL, ''); +INSERT INTO `sys_menu` VALUES (2116, '班级导出', 2111, 5, '', '', '', 1, 0, 'F', '0', '0', 'business:class:export', '#', 103, 1, NOW(), NULL, NULL, ''); + +-- 学科管理 +INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query_param`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_dept`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) +VALUES (2121, '学科管理', 2100, 3, 'subject', 'business/base/subject/index', '', 1, 0, 'C', '0', '0', 'business:subject:list', 'skill', 103, 1, NOW(), NULL, NULL, '学科管理菜单'); +INSERT INTO `sys_menu` VALUES (2122, '学科查询', 2121, 1, '', '', '', 1, 0, 'F', '0', '0', 'business:subject:query', '#', 103, 1, NOW(), NULL, NULL, ''); +INSERT INTO `sys_menu` VALUES (2123, '学科新增', 2121, 2, '', '', '', 1, 0, 'F', '0', '0', 'business:subject:add', '#', 103, 1, NOW(), NULL, NULL, ''); +INSERT INTO `sys_menu` VALUES (2124, '学科修改', 2121, 3, '', '', '', 1, 0, 'F', '0', '0', 'business:subject:edit', '#', 103, 1, NOW(), NULL, NULL, ''); +INSERT INTO `sys_menu` VALUES (2125, '学科删除', 2121, 4, '', '', '', 1, 0, 'F', '0', '0', 'business:subject:remove', '#', 103, 1, NOW(), NULL, NULL, ''); +INSERT INTO `sys_menu` VALUES (2126, '学科导出', 2121, 5, '', '', '', 1, 0, 'F', '0', '0', 'business:subject:export', '#', 103, 1, NOW(), NULL, NULL, ''); + +-- 区域管理 +INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query_param`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_dept`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) +VALUES (2131, '区域管理', 2100, 4, 'region', 'business/base/region/index', '', 1, 0, 'C', '0', '0', 'business:region:list', 'tree', 103, 1, NOW(), NULL, NULL, '区域管理菜单'); +INSERT INTO `sys_menu` VALUES (2132, '区域查询', 2131, 1, '', '', '', 1, 0, 'F', '0', '0', 'business:region:query', '#', 103, 1, NOW(), NULL, NULL, ''); +INSERT INTO `sys_menu` VALUES (2133, '区域新增', 2131, 2, '', '', '', 1, 0, 'F', '0', '0', 'business:region:add', '#', 103, 1, NOW(), NULL, NULL, ''); +INSERT INTO `sys_menu` VALUES (2134, '区域修改', 2131, 3, '', '', '', 1, 0, 'F', '0', '0', 'business:region:edit', '#', 103, 1, NOW(), NULL, NULL, ''); +INSERT INTO `sys_menu` VALUES (2135, '区域删除', 2131, 4, '', '', '', 1, 0, 'F', '0', '0', 'business:region:remove', '#', 103, 1, NOW(), NULL, NULL, ''); +INSERT INTO `sys_menu` VALUES (2136, '区域导出', 2131, 5, '', '', '', 1, 0, 'F', '0', '0', 'business:region:export', '#', 103, 1, NOW(), NULL, NULL, ''); + +-- ===================== 学校管理 ===================== +INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query_param`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_dept`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) +VALUES (2200, '学校管理', 2000, 2, 'school', 'business/school/index', '', 1, 0, 'C', '0', '0', 'business:school:list', 'education', 103, 1, NOW(), NULL, NULL, '学校管理菜单'); +INSERT INTO `sys_menu` VALUES (2201, '学校查询', 2200, 1, '', '', '', 1, 0, 'F', '0', '0', 'business:school:query', '#', 103, 1, NOW(), NULL, NULL, ''); +INSERT INTO `sys_menu` VALUES (2202, '学校新增', 2200, 2, '', '', '', 1, 0, 'F', '0', '0', 'business:school:add', '#', 103, 1, NOW(), NULL, NULL, ''); +INSERT INTO `sys_menu` VALUES (2203, '学校修改', 2200, 3, '', '', '', 1, 0, 'F', '0', '0', 'business:school:edit', '#', 103, 1, NOW(), NULL, NULL, ''); +INSERT INTO `sys_menu` VALUES (2204, '学校删除', 2200, 4, '', '', '', 1, 0, 'F', '0', '0', 'business:school:remove', '#', 103, 1, NOW(), NULL, NULL, ''); +INSERT INTO `sys_menu` VALUES (2205, '学校导出', 2200, 5, '', '', '', 1, 0, 'F', '0', '0', 'business:school:export', '#', 103, 1, NOW(), NULL, NULL, ''); + +-- ===================== 会员管理 ===================== +INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query_param`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_dept`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) +VALUES (2300, '会员管理', 2000, 3, 'member', 'business/member/index', '', 1, 0, 'C', '0', '0', 'business:member:list', 'user', 103, 1, NOW(), NULL, NULL, '会员管理菜单'); +INSERT INTO `sys_menu` VALUES (2301, '会员查询', 2300, 1, '', '', '', 1, 0, 'F', '0', '0', 'business:member:query', '#', 103, 1, NOW(), NULL, NULL, ''); +INSERT INTO `sys_menu` VALUES (2302, '会员新增', 2300, 2, '', '', '', 1, 0, 'F', '0', '0', 'business:member:add', '#', 103, 1, NOW(), NULL, NULL, ''); +INSERT INTO `sys_menu` VALUES (2303, '会员修改', 2300, 3, '', '', '', 1, 0, 'F', '0', '0', 'business:member:edit', '#', 103, 1, NOW(), NULL, NULL, ''); +INSERT INTO `sys_menu` VALUES (2304, '会员删除', 2300, 4, '', '', '', 1, 0, 'F', '0', '0', 'business:member:remove', '#', 103, 1, NOW(), NULL, NULL, ''); +INSERT INTO `sys_menu` VALUES (2305, '会员导出', 2300, 5, '', '', '', 1, 0, 'F', '0', '0', 'business:member:export', '#', 103, 1, NOW(), NULL, NULL, ''); +INSERT INTO `sys_menu` VALUES (2306, '会员导入', 2300, 6, '', '', '', 1, 0, 'F', '0', '0', 'business:member:import', '#', 103, 1, NOW(), NULL, NULL, ''); + +-- ===================== 学生管理 ===================== +INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query_param`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_dept`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) +VALUES (2400, '学生管理', 2000, 4, 'student', 'business/student/index', '', 1, 0, 'C', '0', '0', 'business:student:list', 'peoples', 103, 1, NOW(), NULL, NULL, '学生管理菜单'); +INSERT INTO `sys_menu` VALUES (2401, '学生查询', 2400, 1, '', '', '', 1, 0, 'F', '0', '0', 'business:student:query', '#', 103, 1, NOW(), NULL, NULL, ''); +INSERT INTO `sys_menu` VALUES (2402, '学生新增', 2400, 2, '', '', '', 1, 0, 'F', '0', '0', 'business:student:add', '#', 103, 1, NOW(), NULL, NULL, ''); +INSERT INTO `sys_menu` VALUES (2403, '学生修改', 2400, 3, '', '', '', 1, 0, 'F', '0', '0', 'business:student:edit', '#', 103, 1, NOW(), NULL, NULL, ''); +INSERT INTO `sys_menu` VALUES (2404, '学生删除', 2400, 4, '', '', '', 1, 0, 'F', '0', '0', 'business:student:remove', '#', 103, 1, NOW(), NULL, NULL, ''); +INSERT INTO `sys_menu` VALUES (2405, '学生导出', 2400, 5, '', '', '', 1, 0, 'F', '0', '0', 'business:student:export', '#', 103, 1, NOW(), NULL, NULL, ''); +INSERT INTO `sys_menu` VALUES (2406, '学生导入', 2400, 6, '', '', '', 1, 0, 'F', '0', '0', 'business:student:import', '#', 103, 1, NOW(), NULL, NULL, ''); + +-- ===================== 应用管理 ===================== +INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query_param`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_dept`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) +VALUES (2500, '应用管理', 2000, 5, 'application', 'business/application/index', '', 1, 0, 'C', '0', '0', 'business:application:list', 'component', 103, 1, NOW(), NULL, NULL, '应用管理菜单'); +INSERT INTO `sys_menu` VALUES (2501, '应用查询', 2500, 1, '', '', '', 1, 0, 'F', '0', '0', 'business:application:query', '#', 103, 1, NOW(), NULL, NULL, ''); +INSERT INTO `sys_menu` VALUES (2502, '应用新增', 2500, 2, '', '', '', 1, 0, 'F', '0', '0', 'business:application:add', '#', 103, 1, NOW(), NULL, NULL, ''); +INSERT INTO `sys_menu` VALUES (2503, '应用修改', 2500, 3, '', '', '', 1, 0, 'F', '0', '0', 'business:application:edit', '#', 103, 1, NOW(), NULL, NULL, ''); +INSERT INTO `sys_menu` VALUES (2504, '应用删除', 2500, 4, '', '', '', 1, 0, 'F', '0', '0', 'business:application:remove', '#', 103, 1, NOW(), NULL, NULL, ''); +INSERT INTO `sys_menu` VALUES (2505, 'API授权', 2500, 5, '', '', '', 1, 0, 'F', '0', '0', 'business:application:api', '#', 103, 1, NOW(), NULL, NULL, ''); diff --git a/backend/ruoyi-modules/pangu-business/sql/pangu_tables.sql b/backend/ruoyi-modules/pangu-business/sql/pangu_tables.sql new file mode 100644 index 0000000..648281d --- /dev/null +++ b/backend/ruoyi-modules/pangu-business/sql/pangu_tables.sql @@ -0,0 +1,328 @@ +-- ============================================================ +-- 盘古用户平台 - 业务模块建表脚本(适配 RuoYi-Vue-Plus 5.x) +-- 作者:湖北新华业务中台研发团队 +-- 创建时间:2026-02-02 +-- ============================================================ + +USE `pguser-db`; + +-- ============================================================ +-- 1. 年级字典表 +-- ============================================================ +DROP TABLE IF EXISTS `pg_grade`; +CREATE TABLE `pg_grade` ( + `grade_id` bigint NOT NULL COMMENT '年级ID', + `grade_code` varchar(32) NOT NULL COMMENT '年级编码', + `grade_name` varchar(50) NOT NULL COMMENT '年级名称', + `order_num` int DEFAULT 0 COMMENT '显示顺序', + `status` char(1) DEFAULT '0' COMMENT '状态(0正常 1停用)', + `tenant_id` varchar(20) DEFAULT '000000' COMMENT '租户编号', + `create_dept` bigint DEFAULT NULL COMMENT '创建部门', + `create_by` bigint DEFAULT NULL COMMENT '创建者', + `create_time` datetime DEFAULT NULL COMMENT '创建时间', + `update_by` bigint DEFAULT NULL COMMENT '更新者', + `update_time` datetime DEFAULT NULL COMMENT '更新时间', + `del_flag` char(1) DEFAULT '0' COMMENT '删除标志(0存在 1删除)', + `remark` varchar(500) DEFAULT NULL COMMENT '备注', + PRIMARY KEY (`grade_id`), + UNIQUE KEY `uk_grade_code` (`grade_code`) +) ENGINE=InnoDB COMMENT='年级字典表'; + +-- 年级初始化数据 +INSERT INTO `pg_grade` VALUES +(1, 'GRD001', '一年级', 1, '0', '000000', 103, 1, NOW(), 1, NOW(), '0', NULL), +(2, 'GRD002', '二年级', 2, '0', '000000', 103, 1, NOW(), 1, NOW(), '0', NULL), +(3, 'GRD003', '三年级', 3, '0', '000000', 103, 1, NOW(), 1, NOW(), '0', NULL), +(4, 'GRD004', '四年级', 4, '0', '000000', 103, 1, NOW(), 1, NOW(), '0', NULL), +(5, 'GRD005', '五年级', 5, '0', '000000', 103, 1, NOW(), 1, NOW(), '0', NULL), +(6, 'GRD006', '六年级', 6, '0', '000000', 103, 1, NOW(), 1, NOW(), '0', NULL), +(7, 'GRD007', '七年级', 7, '0', '000000', 103, 1, NOW(), 1, NOW(), '0', NULL), +(8, 'GRD008', '八年级', 8, '0', '000000', 103, 1, NOW(), 1, NOW(), '0', NULL), +(9, 'GRD009', '九年级', 9, '0', '000000', 103, 1, NOW(), 1, NOW(), '0', NULL), +(10, 'GRD010', '高一', 10, '0', '000000', 103, 1, NOW(), 1, NOW(), '0', NULL), +(11, 'GRD011', '高二', 11, '0', '000000', 103, 1, NOW(), 1, NOW(), '0', NULL), +(12, 'GRD012', '高三', 12, '0', '000000', 103, 1, NOW(), 1, NOW(), '0', NULL); + +-- ============================================================ +-- 2. 班级字典表 +-- ============================================================ +DROP TABLE IF EXISTS `pg_class`; +CREATE TABLE `pg_class` ( + `class_id` bigint NOT NULL COMMENT '班级ID', + `class_code` varchar(32) NOT NULL COMMENT '班级编码', + `class_name` varchar(50) NOT NULL COMMENT '班级名称', + `order_num` int DEFAULT 0 COMMENT '显示顺序', + `status` char(1) DEFAULT '0' COMMENT '状态(0正常 1停用)', + `tenant_id` varchar(20) DEFAULT '000000' COMMENT '租户编号', + `create_dept` bigint DEFAULT NULL COMMENT '创建部门', + `create_by` bigint DEFAULT NULL COMMENT '创建者', + `create_time` datetime DEFAULT NULL COMMENT '创建时间', + `update_by` bigint DEFAULT NULL COMMENT '更新者', + `update_time` datetime DEFAULT NULL COMMENT '更新时间', + `del_flag` char(1) DEFAULT '0' COMMENT '删除标志(0存在 1删除)', + `remark` varchar(500) DEFAULT NULL COMMENT '备注', + PRIMARY KEY (`class_id`), + UNIQUE KEY `uk_class_code` (`class_code`) +) ENGINE=InnoDB COMMENT='班级字典表'; + +-- 班级初始化数据 +INSERT INTO `pg_class` VALUES +(1, 'CLS001', '1班', 1, '0', '000000', 103, 1, NOW(), 1, NOW(), '0', NULL), +(2, 'CLS002', '2班', 2, '0', '000000', 103, 1, NOW(), 1, NOW(), '0', NULL), +(3, 'CLS003', '3班', 3, '0', '000000', 103, 1, NOW(), 1, NOW(), '0', NULL), +(4, 'CLS004', '4班', 4, '0', '000000', 103, 1, NOW(), 1, NOW(), '0', NULL), +(5, 'CLS005', '5班', 5, '0', '000000', 103, 1, NOW(), 1, NOW(), '0', NULL), +(6, 'CLS006', '6班', 6, '0', '000000', 103, 1, NOW(), 1, NOW(), '0', NULL), +(7, 'CLS007', '7班', 7, '0', '000000', 103, 1, NOW(), 1, NOW(), '0', NULL), +(8, 'CLS008', '8班', 8, '0', '000000', 103, 1, NOW(), 1, NOW(), '0', NULL), +(9, 'CLS009', '9班', 9, '0', '000000', 103, 1, NOW(), 1, NOW(), '0', NULL), +(10, 'CLS010', '10班', 10, '0', '000000', 103, 1, NOW(), 1, NOW(), '0', NULL); + +-- ============================================================ +-- 3. 学科表 +-- ============================================================ +DROP TABLE IF EXISTS `pg_subject`; +CREATE TABLE `pg_subject` ( + `subject_id` bigint NOT NULL COMMENT '学科ID', + `subject_code` varchar(32) NOT NULL COMMENT '学科编码', + `subject_name` varchar(50) NOT NULL COMMENT '学科名称', + `order_num` int DEFAULT 0 COMMENT '显示顺序', + `status` char(1) DEFAULT '0' COMMENT '状态(0正常 1停用)', + `tenant_id` varchar(20) DEFAULT '000000' COMMENT '租户编号', + `create_dept` bigint DEFAULT NULL COMMENT '创建部门', + `create_by` bigint DEFAULT NULL COMMENT '创建者', + `create_time` datetime DEFAULT NULL COMMENT '创建时间', + `update_by` bigint DEFAULT NULL COMMENT '更新者', + `update_time` datetime DEFAULT NULL COMMENT '更新时间', + `del_flag` char(1) DEFAULT '0' COMMENT '删除标志(0存在 1删除)', + `remark` varchar(500) DEFAULT NULL COMMENT '备注', + PRIMARY KEY (`subject_id`), + UNIQUE KEY `uk_subject_code` (`subject_code`) +) ENGINE=InnoDB COMMENT='学科表'; + +-- 学科初始化数据 +INSERT INTO `pg_subject` VALUES +(1, 'SUB001', '语文', 1, '0', '000000', 103, 1, NOW(), 1, NOW(), '0', NULL), +(2, 'SUB002', '数学', 2, '0', '000000', 103, 1, NOW(), 1, NOW(), '0', NULL), +(3, 'SUB003', '英语', 3, '0', '000000', 103, 1, NOW(), 1, NOW(), '0', NULL), +(4, 'SUB004', '物理', 4, '0', '000000', 103, 1, NOW(), 1, NOW(), '0', NULL), +(5, 'SUB005', '化学', 5, '0', '000000', 103, 1, NOW(), 1, NOW(), '0', NULL), +(6, 'SUB006', '生物', 6, '0', '000000', 103, 1, NOW(), 1, NOW(), '0', NULL), +(7, 'SUB007', '历史', 7, '0', '000000', 103, 1, NOW(), 1, NOW(), '0', NULL), +(8, 'SUB008', '地理', 8, '0', '000000', 103, 1, NOW(), 1, NOW(), '0', NULL), +(9, 'SUB009', '政治', 9, '0', '000000', 103, 1, NOW(), 1, NOW(), '0', NULL); + +-- ============================================================ +-- 4. 区域表 +-- ============================================================ +DROP TABLE IF EXISTS `pg_region`; +CREATE TABLE `pg_region` ( + `region_id` bigint NOT NULL COMMENT '区域ID', + `parent_id` bigint DEFAULT 0 COMMENT '父区域ID', + `ancestors` varchar(500) DEFAULT '' COMMENT '祖级列表', + `region_name` varchar(100) NOT NULL COMMENT '区域名称', + `region_code` varchar(32) DEFAULT NULL COMMENT '区域编码', + `level` int DEFAULT 1 COMMENT '层级(1省 2市 3区县)', + `order_num` int DEFAULT 0 COMMENT '显示顺序', + `status` char(1) DEFAULT '0' COMMENT '状态(0正常 1停用)', + `tenant_id` varchar(20) DEFAULT '000000' COMMENT '租户编号', + `create_dept` bigint DEFAULT NULL COMMENT '创建部门', + `create_by` bigint DEFAULT NULL COMMENT '创建者', + `create_time` datetime DEFAULT NULL COMMENT '创建时间', + `update_by` bigint DEFAULT NULL COMMENT '更新者', + `update_time` datetime DEFAULT NULL COMMENT '更新时间', + `del_flag` char(1) DEFAULT '0' COMMENT '删除标志(0存在 1删除)', + PRIMARY KEY (`region_id`) +) ENGINE=InnoDB COMMENT='区域表'; + +-- 区域初始化数据(湖北省示例) +INSERT INTO `pg_region` VALUES +(420000, 0, '0', '湖北省', '420000', 1, 1, '0', '000000', 103, 1, NOW(), 1, NOW(), '0'), +(420100, 420000, '0,420000', '武汉市', '420100', 2, 1, '0', '000000', 103, 1, NOW(), 1, NOW(), '0'), +(420102, 420100, '0,420000,420100', '江岸区', '420102', 3, 1, '0', '000000', 103, 1, NOW(), 1, NOW(), '0'), +(420103, 420100, '0,420000,420100', '江汉区', '420103', 3, 2, '0', '000000', 103, 1, NOW(), 1, NOW(), '0'), +(420104, 420100, '0,420000,420100', '硚口区', '420104', 3, 3, '0', '000000', 103, 1, NOW(), 1, NOW(), '0'); + +-- ============================================================ +-- 5. 学校表 +-- ============================================================ +DROP TABLE IF EXISTS `pg_school`; +CREATE TABLE `pg_school` ( + `school_id` bigint NOT NULL COMMENT '学校ID', + `school_code` varchar(32) NOT NULL COMMENT '学校编码', + `school_name` varchar(100) NOT NULL COMMENT '学校名称', + `school_type` char(1) DEFAULT '1' COMMENT '学校类型(1小学 2初中 3高中 4完全中学)', + `region_id` bigint DEFAULT NULL COMMENT '所属区域ID', + `region_path` varchar(500) DEFAULT NULL COMMENT '区域路径', + `address` varchar(500) DEFAULT NULL COMMENT '详细地址', + `contact_person` varchar(50) DEFAULT NULL COMMENT '联系人', + `contact_phone` varchar(20) DEFAULT NULL COMMENT '联系电话', + `status` char(1) DEFAULT '0' COMMENT '状态(0正常 1停用)', + `tenant_id` varchar(20) DEFAULT '000000' COMMENT '租户编号', + `create_dept` bigint DEFAULT NULL COMMENT '创建部门', + `create_by` bigint DEFAULT NULL COMMENT '创建者', + `create_time` datetime DEFAULT NULL COMMENT '创建时间', + `update_by` bigint DEFAULT NULL COMMENT '更新者', + `update_time` datetime DEFAULT NULL COMMENT '更新时间', + `del_flag` char(1) DEFAULT '0' COMMENT '删除标志(0存在 1删除)', + `remark` varchar(500) DEFAULT NULL COMMENT '备注', + PRIMARY KEY (`school_id`), + UNIQUE KEY `uk_school_code` (`school_code`) +) ENGINE=InnoDB COMMENT='学校表'; + +-- ============================================================ +-- 6. 学校年级关联表 +-- ============================================================ +DROP TABLE IF EXISTS `pg_school_grade`; +CREATE TABLE `pg_school_grade` ( + `id` bigint NOT NULL COMMENT '主键', + `school_id` bigint NOT NULL COMMENT '学校ID', + `grade_id` bigint NOT NULL COMMENT '年级ID', + `tenant_id` varchar(20) DEFAULT '000000' COMMENT '租户编号', + `create_by` bigint DEFAULT NULL COMMENT '创建者', + `create_time` datetime DEFAULT NULL COMMENT '创建时间', + PRIMARY KEY (`id`), + UNIQUE KEY `uk_school_grade` (`school_id`, `grade_id`) +) ENGINE=InnoDB COMMENT='学校年级关联表'; + +-- ============================================================ +-- 7. 学校班级表 +-- ============================================================ +DROP TABLE IF EXISTS `pg_school_class`; +CREATE TABLE `pg_school_class` ( + `id` bigint NOT NULL COMMENT '主键', + `school_id` bigint NOT NULL COMMENT '学校ID', + `school_grade_id` bigint NOT NULL COMMENT '学校年级ID', + `class_id` bigint NOT NULL COMMENT '班级ID', + `class_alias` varchar(50) DEFAULT NULL COMMENT '班级别名', + `tenant_id` varchar(20) DEFAULT '000000' COMMENT '租户编号', + `create_by` bigint DEFAULT NULL COMMENT '创建者', + `create_time` datetime DEFAULT NULL COMMENT '创建时间', + PRIMARY KEY (`id`), + KEY `idx_school_grade` (`school_id`, `school_grade_id`) +) ENGINE=InnoDB COMMENT='学校班级表'; + +-- ============================================================ +-- 8. 会员表 +-- ============================================================ +DROP TABLE IF EXISTS `pg_member`; +CREATE TABLE `pg_member` ( + `member_id` bigint NOT NULL COMMENT '会员ID', + `member_code` varchar(32) NOT NULL COMMENT '会员编码', + `phone` varchar(20) DEFAULT NULL COMMENT '手机号', + `password` varchar(100) DEFAULT NULL COMMENT '密码', + `nickname` varchar(50) DEFAULT NULL COMMENT '昵称', + `avatar` varchar(500) DEFAULT NULL COMMENT '头像', + `gender` char(1) DEFAULT '0' COMMENT '性别(0未知 1男 2女)', + `birthday` date DEFAULT NULL COMMENT '生日', + `identity_type` char(1) DEFAULT '1' COMMENT '身份类型(1家长 2教师)', + `open_id` varchar(100) DEFAULT NULL COMMENT '微信OpenID', + `union_id` varchar(100) DEFAULT NULL COMMENT '微信UnionID', + `region_id` bigint DEFAULT NULL COMMENT '区域ID', + `school_id` bigint DEFAULT NULL COMMENT '学校ID(教师用)', + `school_grade_id` bigint DEFAULT NULL COMMENT '年级ID(教师用)', + `school_class_id` bigint DEFAULT NULL COMMENT '班级ID(教师用)', + `register_source` char(1) DEFAULT '1' COMMENT '注册来源(1小程序 2H5 3后台 4导入)', + `register_time` datetime DEFAULT NULL COMMENT '注册时间', + `last_login_time` datetime DEFAULT NULL COMMENT '最后登录时间', + `last_login_ip` varchar(50) DEFAULT NULL COMMENT '最后登录IP', + `login_count` int DEFAULT 0 COMMENT '登录次数', + `status` char(1) DEFAULT '0' COMMENT '状态(0正常 1停用)', + `tenant_id` varchar(20) DEFAULT '000000' COMMENT '租户编号', + `create_dept` bigint DEFAULT NULL COMMENT '创建部门', + `create_by` bigint DEFAULT NULL COMMENT '创建者', + `create_time` datetime DEFAULT NULL COMMENT '创建时间', + `update_by` bigint DEFAULT NULL COMMENT '更新者', + `update_time` datetime DEFAULT NULL COMMENT '更新时间', + `del_flag` char(1) DEFAULT '0' COMMENT '删除标志(0存在 1删除)', + `remark` varchar(500) DEFAULT NULL COMMENT '备注', + PRIMARY KEY (`member_id`), + UNIQUE KEY `uk_member_code` (`member_code`), + KEY `idx_phone` (`phone`), + KEY `idx_open_id` (`open_id`) +) ENGINE=InnoDB COMMENT='会员表'; + +-- ============================================================ +-- 9. 学生表 +-- ============================================================ +DROP TABLE IF EXISTS `pg_student`; +CREATE TABLE `pg_student` ( + `student_id` bigint NOT NULL COMMENT '学生ID', + `student_name` varchar(50) NOT NULL COMMENT '学生姓名', + `student_no` varchar(32) DEFAULT NULL COMMENT '学号', + `gender` char(1) DEFAULT '0' COMMENT '性别(0未知 1男 2女)', + `birthday` date DEFAULT NULL COMMENT '生日', + `region_id` bigint DEFAULT NULL COMMENT '区域ID', + `region_path` varchar(500) DEFAULT NULL COMMENT '区域路径', + `school_id` bigint DEFAULT NULL COMMENT '学校ID', + `school_grade_id` bigint DEFAULT NULL COMMENT '学校年级ID', + `school_class_id` bigint DEFAULT NULL COMMENT '学校班级ID', + `subject_id` bigint DEFAULT NULL COMMENT '学科ID', + `member_id` bigint DEFAULT NULL COMMENT '绑定的会员ID', + `status` char(1) DEFAULT '0' COMMENT '状态(0正常 1停用)', + `tenant_id` varchar(20) DEFAULT '000000' COMMENT '租户编号', + `create_dept` bigint DEFAULT NULL COMMENT '创建部门', + `create_by` bigint DEFAULT NULL COMMENT '创建者', + `create_time` datetime DEFAULT NULL COMMENT '创建时间', + `update_by` bigint DEFAULT NULL COMMENT '更新者', + `update_time` datetime DEFAULT NULL COMMENT '更新时间', + `del_flag` char(1) DEFAULT '0' COMMENT '删除标志(0存在 1删除)', + `remark` varchar(500) DEFAULT NULL COMMENT '备注', + PRIMARY KEY (`student_id`), + KEY `idx_student_no` (`student_no`), + KEY `idx_school` (`school_id`, `school_grade_id`, `school_class_id`) +) ENGINE=InnoDB COMMENT='学生表'; + +-- ============================================================ +-- 10. 应用表 +-- ============================================================ +DROP TABLE IF EXISTS `pg_application`; +CREATE TABLE `pg_application` ( + `app_id` bigint NOT NULL COMMENT '应用ID', + `app_code` varchar(32) NOT NULL COMMENT '应用编码', + `app_name` varchar(100) NOT NULL COMMENT '应用名称', + `app_secret` varchar(100) NOT NULL COMMENT '应用密钥', + `contact_person` varchar(50) DEFAULT NULL COMMENT '联系人', + `contact_phone` varchar(20) DEFAULT NULL COMMENT '联系电话', + `status` char(1) DEFAULT '0' COMMENT '状态(0正常 1停用)', + `tenant_id` varchar(20) DEFAULT '000000' COMMENT '租户编号', + `create_dept` bigint DEFAULT NULL COMMENT '创建部门', + `create_by` bigint DEFAULT NULL COMMENT '创建者', + `create_time` datetime DEFAULT NULL COMMENT '创建时间', + `update_by` bigint DEFAULT NULL COMMENT '更新者', + `update_time` datetime DEFAULT NULL COMMENT '更新时间', + `del_flag` char(1) DEFAULT '0' COMMENT '删除标志(0存在 1删除)', + `remark` varchar(500) DEFAULT NULL COMMENT '备注', + PRIMARY KEY (`app_id`), + UNIQUE KEY `uk_app_code` (`app_code`) +) ENGINE=InnoDB COMMENT='第三方应用表'; + +-- ============================================================ +-- 11. API接口字典表 +-- ============================================================ +DROP TABLE IF EXISTS `pg_api_dict`; +CREATE TABLE `pg_api_dict` ( + `api_id` bigint NOT NULL COMMENT 'API ID', + `api_code` varchar(50) NOT NULL COMMENT 'API编码', + `api_name` varchar(100) NOT NULL COMMENT 'API名称', + `api_path` varchar(200) NOT NULL COMMENT 'API路径', + `api_method` varchar(10) DEFAULT 'GET' COMMENT '请求方法', + `api_desc` varchar(500) DEFAULT NULL COMMENT 'API描述', + `status` char(1) DEFAULT '0' COMMENT '状态(0正常 1停用)', + `order_num` int DEFAULT 0 COMMENT '排序', + PRIMARY KEY (`api_id`), + UNIQUE KEY `uk_api_code` (`api_code`) +) ENGINE=InnoDB COMMENT='API接口字典表'; + +-- ============================================================ +-- 12. 应用API授权表 +-- ============================================================ +DROP TABLE IF EXISTS `pg_app_api`; +CREATE TABLE `pg_app_api` ( + `id` bigint NOT NULL COMMENT '主键', + `app_id` bigint NOT NULL COMMENT '应用ID', + `api_id` bigint NOT NULL COMMENT 'API ID', + `create_time` datetime DEFAULT NULL COMMENT '创建时间', + PRIMARY KEY (`id`), + UNIQUE KEY `uk_app_api` (`app_id`, `api_id`) +) ENGINE=InnoDB COMMENT='应用API授权表'; diff --git a/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/application/controller/PgApplicationController.java b/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/application/controller/PgApplicationController.java new file mode 100644 index 0000000..0f5f475 --- /dev/null +++ b/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/application/controller/PgApplicationController.java @@ -0,0 +1,61 @@ +package org.dromara.pangu.application.controller; + +import cn.dev33.satoken.annotation.SaCheckPermission; +import lombok.RequiredArgsConstructor; +import org.dromara.common.core.domain.R; +import org.dromara.common.log.annotation.Log; +import org.dromara.common.log.enums.BusinessType; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.web.core.BaseController; +import org.dromara.pangu.application.domain.PgApplication; +import org.dromara.pangu.application.service.IPgApplicationService; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +/** + * 第三方应用管理 + * + * @author 湖北新华业务中台研发团队 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/business/application") +public class PgApplicationController extends BaseController { + + private final IPgApplicationService applicationService; + + @SaCheckPermission("business:application:list") + @GetMapping("/list") + public TableDataInfo list(PgApplication app, PageQuery pageQuery) { + return applicationService.selectPageList(app, pageQuery); + } + + @SaCheckPermission("business:application:query") + @GetMapping("/{appId}") + public R getInfo(@PathVariable Long appId) { + return R.ok(applicationService.selectById(appId)); + } + + @SaCheckPermission("business:application:add") + @Log(title = "应用管理", businessType = BusinessType.INSERT) + @PostMapping + public R add(@Validated @RequestBody PgApplication app) { + return toAjax(applicationService.insert(app)); + } + + @SaCheckPermission("business:application:edit") + @Log(title = "应用管理", businessType = BusinessType.UPDATE) + @PutMapping + public R edit(@Validated @RequestBody PgApplication app) { + return toAjax(applicationService.update(app)); + } + + @SaCheckPermission("business:application:remove") + @Log(title = "应用管理", businessType = BusinessType.DELETE) + @DeleteMapping("/{appIds}") + public R remove(@PathVariable Long[] appIds) { + return toAjax(applicationService.deleteByIds(appIds)); + } +} diff --git a/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/application/domain/PgApiDict.java b/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/application/domain/PgApiDict.java new file mode 100644 index 0000000..8806d23 --- /dev/null +++ b/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/application/domain/PgApiDict.java @@ -0,0 +1,35 @@ +package org.dromara.pangu.application.domain; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.io.Serializable; + +/** + * API接口字典表 + * + * @author 湖北新华业务中台研发团队 + */ +@Data +@TableName("pg_api_dict") +public class PgApiDict implements Serializable { + + @TableId(type = IdType.ASSIGN_ID) + private Long apiId; + + private String apiCode; + + private String apiName; + + private String apiPath; + + private String apiMethod; + + private String apiDesc; + + private String status; + + private Integer orderNum; +} diff --git a/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/application/domain/PgAppApi.java b/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/application/domain/PgAppApi.java new file mode 100644 index 0000000..3832ccb --- /dev/null +++ b/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/application/domain/PgAppApi.java @@ -0,0 +1,28 @@ +package org.dromara.pangu.application.domain; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +/** + * 应用API授权表 + * + * @author 湖北新华业务中台研发团队 + */ +@Data +@TableName("pg_app_api") +public class PgAppApi implements Serializable { + + @TableId(type = IdType.ASSIGN_ID) + private Long id; + + private Long appId; + + private Long apiId; + + private Date createTime; +} diff --git a/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/application/domain/PgApplication.java b/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/application/domain/PgApplication.java new file mode 100644 index 0000000..d2a6ee9 --- /dev/null +++ b/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/application/domain/PgApplication.java @@ -0,0 +1,42 @@ +package org.dromara.pangu.application.domain; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.dromara.common.mybatis.core.domain.BaseEntity; + +/** + * 第三方应用表 + * + * @author 湖北新华业务中台研发团队 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("pg_application") +public class PgApplication extends BaseEntity { + + @TableId(type = IdType.ASSIGN_ID) + private Long appId; + + private String appCode; + + private String appName; + + private String appSecret; + + private String contactPerson; + + private String contactPhone; + + private String status; + + private String tenantId; + + @TableLogic + private String delFlag; + + private String remark; +} diff --git a/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/application/mapper/PgApiDictMapper.java b/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/application/mapper/PgApiDictMapper.java new file mode 100644 index 0000000..4739cd0 --- /dev/null +++ b/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/application/mapper/PgApiDictMapper.java @@ -0,0 +1,12 @@ +package org.dromara.pangu.application.mapper; + +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; +import org.dromara.pangu.application.domain.PgApiDict; + +/** + * API接口字典 Mapper 接口 + * + * @author 湖北新华业务中台研发团队 + */ +public interface PgApiDictMapper extends BaseMapperPlus { +} diff --git a/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/application/mapper/PgAppApiMapper.java b/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/application/mapper/PgAppApiMapper.java new file mode 100644 index 0000000..e76de7f --- /dev/null +++ b/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/application/mapper/PgAppApiMapper.java @@ -0,0 +1,12 @@ +package org.dromara.pangu.application.mapper; + +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; +import org.dromara.pangu.application.domain.PgAppApi; + +/** + * 应用API授权 Mapper 接口 + * + * @author 湖北新华业务中台研发团队 + */ +public interface PgAppApiMapper extends BaseMapperPlus { +} diff --git a/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/application/mapper/PgApplicationMapper.java b/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/application/mapper/PgApplicationMapper.java new file mode 100644 index 0000000..38e6b71 --- /dev/null +++ b/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/application/mapper/PgApplicationMapper.java @@ -0,0 +1,12 @@ +package org.dromara.pangu.application.mapper; + +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; +import org.dromara.pangu.application.domain.PgApplication; + +/** + * 第三方应用 Mapper 接口 + * + * @author 湖北新华业务中台研发团队 + */ +public interface PgApplicationMapper extends BaseMapperPlus { +} diff --git a/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/application/service/IPgApplicationService.java b/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/application/service/IPgApplicationService.java new file mode 100644 index 0000000..284ae5d --- /dev/null +++ b/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/application/service/IPgApplicationService.java @@ -0,0 +1,21 @@ +package org.dromara.pangu.application.service; + +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.pangu.application.domain.PgApplication; + +import java.util.List; + +/** + * 第三方应用 Service 接口 + * + * @author 湖北新华业务中台研发团队 + */ +public interface IPgApplicationService { + TableDataInfo selectPageList(PgApplication app, PageQuery pageQuery); + List selectList(PgApplication app); + PgApplication selectById(Long appId); + int insert(PgApplication app); + int update(PgApplication app); + int deleteByIds(Long[] appIds); +} diff --git a/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/application/service/impl/PgApplicationServiceImpl.java b/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/application/service/impl/PgApplicationServiceImpl.java new file mode 100644 index 0000000..e49b785 --- /dev/null +++ b/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/application/service/impl/PgApplicationServiceImpl.java @@ -0,0 +1,67 @@ +package org.dromara.pangu.application.service.impl; + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import lombok.RequiredArgsConstructor; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.pangu.application.domain.PgApplication; +import org.dromara.pangu.application.mapper.PgApplicationMapper; +import org.dromara.pangu.application.service.IPgApplicationService; +import org.springframework.stereotype.Service; + +import java.util.Arrays; +import java.util.List; + +/** + * 第三方应用 Service 实现 + * + * @author 湖北新华业务中台研发团队 + */ +@RequiredArgsConstructor +@Service +public class PgApplicationServiceImpl implements IPgApplicationService { + + private final PgApplicationMapper baseMapper; + + @Override + public TableDataInfo selectPageList(PgApplication app, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(app); + Page page = baseMapper.selectPage(pageQuery.build(), lqw); + return TableDataInfo.build(page); + } + + @Override + public List selectList(PgApplication app) { + return baseMapper.selectList(buildQueryWrapper(app)); + } + + @Override + public PgApplication selectById(Long appId) { + return baseMapper.selectById(appId); + } + + @Override + public int insert(PgApplication app) { + return baseMapper.insert(app); + } + + @Override + public int update(PgApplication app) { + return baseMapper.updateById(app); + } + + @Override + public int deleteByIds(Long[] appIds) { + return baseMapper.deleteByIds(Arrays.asList(appIds)); + } + + private LambdaQueryWrapper buildQueryWrapper(PgApplication app) { + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.like(StrUtil.isNotBlank(app.getAppName()), PgApplication::getAppName, app.getAppName()); + lqw.eq(StrUtil.isNotBlank(app.getStatus()), PgApplication::getStatus, app.getStatus()); + lqw.orderByDesc(PgApplication::getCreateTime); + return lqw; + } +} diff --git a/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/base/controller/PgClassController.java b/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/base/controller/PgClassController.java new file mode 100644 index 0000000..7f3b71d --- /dev/null +++ b/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/base/controller/PgClassController.java @@ -0,0 +1,68 @@ +package org.dromara.pangu.base.controller; + +import cn.dev33.satoken.annotation.SaCheckPermission; +import lombok.RequiredArgsConstructor; +import org.dromara.common.core.domain.R; +import org.dromara.common.log.annotation.Log; +import org.dromara.common.log.enums.BusinessType; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.web.core.BaseController; +import org.dromara.pangu.base.domain.PgClass; +import org.dromara.pangu.base.service.IPgClassService; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * 班级管理 + * + * @author 湖北新华业务中台研发团队 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/business/class") +public class PgClassController extends BaseController { + + private final IPgClassService classService; + + @SaCheckPermission("business:class:list") + @GetMapping("/list") + public TableDataInfo list(PgClass pgClass, PageQuery pageQuery) { + return classService.selectPageList(pgClass, pageQuery); + } + + @GetMapping("/listAll") + public R> listAll(PgClass pgClass) { + return R.ok(classService.selectList(pgClass)); + } + + @SaCheckPermission("business:class:query") + @GetMapping("/{classId}") + public R getInfo(@PathVariable Long classId) { + return R.ok(classService.selectById(classId)); + } + + @SaCheckPermission("business:class:add") + @Log(title = "班级管理", businessType = BusinessType.INSERT) + @PostMapping + public R add(@Validated @RequestBody PgClass pgClass) { + return toAjax(classService.insert(pgClass)); + } + + @SaCheckPermission("business:class:edit") + @Log(title = "班级管理", businessType = BusinessType.UPDATE) + @PutMapping + public R edit(@Validated @RequestBody PgClass pgClass) { + return toAjax(classService.update(pgClass)); + } + + @SaCheckPermission("business:class:remove") + @Log(title = "班级管理", businessType = BusinessType.DELETE) + @DeleteMapping("/{classIds}") + public R remove(@PathVariable Long[] classIds) { + return toAjax(classService.deleteByIds(classIds)); + } +} diff --git a/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/base/controller/PgGradeController.java b/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/base/controller/PgGradeController.java new file mode 100644 index 0000000..f65807e --- /dev/null +++ b/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/base/controller/PgGradeController.java @@ -0,0 +1,86 @@ +package org.dromara.pangu.base.controller; + +import cn.dev33.satoken.annotation.SaCheckPermission; +import lombok.RequiredArgsConstructor; +import org.dromara.common.core.domain.R; +import org.dromara.common.log.annotation.Log; +import org.dromara.common.log.enums.BusinessType; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.web.core.BaseController; +import org.dromara.pangu.base.domain.PgGrade; +import org.dromara.pangu.base.service.IPgGradeService; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * 年级管理 + * + * @author 湖北新华业务中台研发团队 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/business/grade") +public class PgGradeController extends BaseController { + + private final IPgGradeService gradeService; + + /** + * 查询年级列表(分页) + */ + @SaCheckPermission("business:grade:list") + @GetMapping("/list") + public TableDataInfo list(PgGrade grade, PageQuery pageQuery) { + return gradeService.selectPageList(grade, pageQuery); + } + + /** + * 查询年级列表(不分页) + */ + @GetMapping("/listAll") + public R> listAll(PgGrade grade) { + return R.ok(gradeService.selectList(grade)); + } + + /** + * 获取年级详情 + */ + @SaCheckPermission("business:grade:query") + @GetMapping("/{gradeId}") + public R getInfo(@PathVariable Long gradeId) { + return R.ok(gradeService.selectById(gradeId)); + } + + /** + * 新增年级 + */ + @SaCheckPermission("business:grade:add") + @Log(title = "年级管理", businessType = BusinessType.INSERT) + @PostMapping + public R add(@Validated @RequestBody PgGrade grade) { + return toAjax(gradeService.insert(grade)); + } + + /** + * 修改年级 + */ + @SaCheckPermission("business:grade:edit") + @Log(title = "年级管理", businessType = BusinessType.UPDATE) + @PutMapping + public R edit(@Validated @RequestBody PgGrade grade) { + return toAjax(gradeService.update(grade)); + } + + /** + * 删除年级 + */ + @SaCheckPermission("business:grade:remove") + @Log(title = "年级管理", businessType = BusinessType.DELETE) + @DeleteMapping("/{gradeIds}") + public R remove(@PathVariable Long[] gradeIds) { + return toAjax(gradeService.deleteByIds(gradeIds)); + } +} diff --git a/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/base/controller/PgRegionController.java b/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/base/controller/PgRegionController.java new file mode 100644 index 0000000..aa0b72c --- /dev/null +++ b/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/base/controller/PgRegionController.java @@ -0,0 +1,66 @@ +package org.dromara.pangu.base.controller; + +import cn.dev33.satoken.annotation.SaCheckPermission; +import lombok.RequiredArgsConstructor; +import org.dromara.common.core.domain.R; +import org.dromara.common.log.annotation.Log; +import org.dromara.common.log.enums.BusinessType; +import org.dromara.common.web.core.BaseController; +import org.dromara.pangu.base.domain.PgRegion; +import org.dromara.pangu.base.service.IPgRegionService; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * 区域管理 + * + * @author 湖北新华业务中台研发团队 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/business/region") +public class PgRegionController extends BaseController { + + private final IPgRegionService regionService; + + @SaCheckPermission("business:region:list") + @GetMapping("/list") + public R> list(PgRegion region) { + return R.ok(regionService.selectList(region)); + } + + @GetMapping("/children/{parentId}") + public R> children(@PathVariable Long parentId) { + return R.ok(regionService.selectByParentId(parentId)); + } + + @SaCheckPermission("business:region:query") + @GetMapping("/{regionId}") + public R getInfo(@PathVariable Long regionId) { + return R.ok(regionService.selectById(regionId)); + } + + @SaCheckPermission("business:region:add") + @Log(title = "区域管理", businessType = BusinessType.INSERT) + @PostMapping + public R add(@Validated @RequestBody PgRegion region) { + return toAjax(regionService.insert(region)); + } + + @SaCheckPermission("business:region:edit") + @Log(title = "区域管理", businessType = BusinessType.UPDATE) + @PutMapping + public R edit(@Validated @RequestBody PgRegion region) { + return toAjax(regionService.update(region)); + } + + @SaCheckPermission("business:region:remove") + @Log(title = "区域管理", businessType = BusinessType.DELETE) + @DeleteMapping("/{regionIds}") + public R remove(@PathVariable Long[] regionIds) { + return toAjax(regionService.deleteByIds(regionIds)); + } +} diff --git a/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/base/controller/PgSubjectController.java b/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/base/controller/PgSubjectController.java new file mode 100644 index 0000000..95ab9de --- /dev/null +++ b/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/base/controller/PgSubjectController.java @@ -0,0 +1,68 @@ +package org.dromara.pangu.base.controller; + +import cn.dev33.satoken.annotation.SaCheckPermission; +import lombok.RequiredArgsConstructor; +import org.dromara.common.core.domain.R; +import org.dromara.common.log.annotation.Log; +import org.dromara.common.log.enums.BusinessType; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.web.core.BaseController; +import org.dromara.pangu.base.domain.PgSubject; +import org.dromara.pangu.base.service.IPgSubjectService; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * 学科管理 + * + * @author 湖北新华业务中台研发团队 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/business/subject") +public class PgSubjectController extends BaseController { + + private final IPgSubjectService subjectService; + + @SaCheckPermission("business:subject:list") + @GetMapping("/list") + public TableDataInfo list(PgSubject subject, PageQuery pageQuery) { + return subjectService.selectPageList(subject, pageQuery); + } + + @GetMapping("/listAll") + public R> listAll(PgSubject subject) { + return R.ok(subjectService.selectList(subject)); + } + + @SaCheckPermission("business:subject:query") + @GetMapping("/{subjectId}") + public R getInfo(@PathVariable Long subjectId) { + return R.ok(subjectService.selectById(subjectId)); + } + + @SaCheckPermission("business:subject:add") + @Log(title = "学科管理", businessType = BusinessType.INSERT) + @PostMapping + public R add(@Validated @RequestBody PgSubject subject) { + return toAjax(subjectService.insert(subject)); + } + + @SaCheckPermission("business:subject:edit") + @Log(title = "学科管理", businessType = BusinessType.UPDATE) + @PutMapping + public R edit(@Validated @RequestBody PgSubject subject) { + return toAjax(subjectService.update(subject)); + } + + @SaCheckPermission("business:subject:remove") + @Log(title = "学科管理", businessType = BusinessType.DELETE) + @DeleteMapping("/{subjectIds}") + public R remove(@PathVariable Long[] subjectIds) { + return toAjax(subjectService.deleteByIds(subjectIds)); + } +} diff --git a/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/base/domain/PgClass.java b/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/base/domain/PgClass.java new file mode 100644 index 0000000..bdedf64 --- /dev/null +++ b/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/base/domain/PgClass.java @@ -0,0 +1,38 @@ +package org.dromara.pangu.base.domain; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.dromara.common.mybatis.core.domain.BaseEntity; + +/** + * 班级字典表 + * + * @author 湖北新华业务中台研发团队 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("pg_class") +public class PgClass extends BaseEntity { + + @TableId(type = IdType.ASSIGN_ID) + private Long classId; + + private String classCode; + + private String className; + + private Integer orderNum; + + private String status; + + private String tenantId; + + @TableLogic + private String delFlag; + + private String remark; +} diff --git a/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/base/domain/PgGrade.java b/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/base/domain/PgGrade.java new file mode 100644 index 0000000..01371c0 --- /dev/null +++ b/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/base/domain/PgGrade.java @@ -0,0 +1,62 @@ +package org.dromara.pangu.base.domain; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.dromara.common.mybatis.core.domain.BaseEntity; + +/** + * 年级字典表 + * + * @author 湖北新华业务中台研发团队 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("pg_grade") +public class PgGrade extends BaseEntity { + + /** + * 年级ID + */ + @TableId(type = IdType.ASSIGN_ID) + private Long gradeId; + + /** + * 年级编码 + */ + private String gradeCode; + + /** + * 年级名称 + */ + private String gradeName; + + /** + * 显示顺序 + */ + private Integer orderNum; + + /** + * 状态(0正常 1停用) + */ + private String status; + + /** + * 租户编号 + */ + private String tenantId; + + /** + * 删除标志(0存在 1删除) + */ + @TableLogic + private String delFlag; + + /** + * 备注 + */ + private String remark; +} diff --git a/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/base/domain/PgRegion.java b/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/base/domain/PgRegion.java new file mode 100644 index 0000000..d2fcb56 --- /dev/null +++ b/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/base/domain/PgRegion.java @@ -0,0 +1,42 @@ +package org.dromara.pangu.base.domain; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.dromara.common.mybatis.core.domain.BaseEntity; + +/** + * 区域表 + * + * @author 湖北新华业务中台研发团队 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("pg_region") +public class PgRegion extends BaseEntity { + + @TableId(type = IdType.ASSIGN_ID) + private Long regionId; + + private Long parentId; + + private String ancestors; + + private String regionName; + + private String regionCode; + + private Integer level; + + private Integer orderNum; + + private String status; + + private String tenantId; + + @TableLogic + private String delFlag; +} diff --git a/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/base/domain/PgSubject.java b/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/base/domain/PgSubject.java new file mode 100644 index 0000000..37350db --- /dev/null +++ b/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/base/domain/PgSubject.java @@ -0,0 +1,38 @@ +package org.dromara.pangu.base.domain; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.dromara.common.mybatis.core.domain.BaseEntity; + +/** + * 学科表 + * + * @author 湖北新华业务中台研发团队 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("pg_subject") +public class PgSubject extends BaseEntity { + + @TableId(type = IdType.ASSIGN_ID) + private Long subjectId; + + private String subjectCode; + + private String subjectName; + + private Integer orderNum; + + private String status; + + private String tenantId; + + @TableLogic + private String delFlag; + + private String remark; +} diff --git a/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/base/mapper/PgClassMapper.java b/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/base/mapper/PgClassMapper.java new file mode 100644 index 0000000..717ece8 --- /dev/null +++ b/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/base/mapper/PgClassMapper.java @@ -0,0 +1,12 @@ +package org.dromara.pangu.base.mapper; + +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; +import org.dromara.pangu.base.domain.PgClass; + +/** + * 班级 Mapper 接口 + * + * @author 湖北新华业务中台研发团队 + */ +public interface PgClassMapper extends BaseMapperPlus { +} diff --git a/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/base/mapper/PgGradeMapper.java b/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/base/mapper/PgGradeMapper.java new file mode 100644 index 0000000..fbb4633 --- /dev/null +++ b/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/base/mapper/PgGradeMapper.java @@ -0,0 +1,12 @@ +package org.dromara.pangu.base.mapper; + +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; +import org.dromara.pangu.base.domain.PgGrade; + +/** + * 年级 Mapper 接口 + * + * @author 湖北新华业务中台研发团队 + */ +public interface PgGradeMapper extends BaseMapperPlus { +} diff --git a/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/base/mapper/PgRegionMapper.java b/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/base/mapper/PgRegionMapper.java new file mode 100644 index 0000000..11fd933 --- /dev/null +++ b/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/base/mapper/PgRegionMapper.java @@ -0,0 +1,12 @@ +package org.dromara.pangu.base.mapper; + +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; +import org.dromara.pangu.base.domain.PgRegion; + +/** + * 区域 Mapper 接口 + * + * @author 湖北新华业务中台研发团队 + */ +public interface PgRegionMapper extends BaseMapperPlus { +} diff --git a/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/base/mapper/PgSubjectMapper.java b/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/base/mapper/PgSubjectMapper.java new file mode 100644 index 0000000..69d617c --- /dev/null +++ b/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/base/mapper/PgSubjectMapper.java @@ -0,0 +1,12 @@ +package org.dromara.pangu.base.mapper; + +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; +import org.dromara.pangu.base.domain.PgSubject; + +/** + * 学科 Mapper 接口 + * + * @author 湖北新华业务中台研发团队 + */ +public interface PgSubjectMapper extends BaseMapperPlus { +} diff --git a/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/base/service/IPgClassService.java b/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/base/service/IPgClassService.java new file mode 100644 index 0000000..1b67d00 --- /dev/null +++ b/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/base/service/IPgClassService.java @@ -0,0 +1,21 @@ +package org.dromara.pangu.base.service; + +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.pangu.base.domain.PgClass; + +import java.util.List; + +/** + * 班级 Service 接口 + * + * @author 湖北新华业务中台研发团队 + */ +public interface IPgClassService { + TableDataInfo selectPageList(PgClass pgClass, PageQuery pageQuery); + List selectList(PgClass pgClass); + PgClass selectById(Long classId); + int insert(PgClass pgClass); + int update(PgClass pgClass); + int deleteByIds(Long[] classIds); +} diff --git a/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/base/service/IPgGradeService.java b/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/base/service/IPgGradeService.java new file mode 100644 index 0000000..0a790fc --- /dev/null +++ b/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/base/service/IPgGradeService.java @@ -0,0 +1,45 @@ +package org.dromara.pangu.base.service; + +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.pangu.base.domain.PgGrade; + +import java.util.List; + +/** + * 年级 Service 接口 + * + * @author 湖北新华业务中台研发团队 + */ +public interface IPgGradeService { + + /** + * 分页查询年级列表 + */ + TableDataInfo selectPageList(PgGrade grade, PageQuery pageQuery); + + /** + * 查询年级列表 + */ + List selectList(PgGrade grade); + + /** + * 根据ID查询年级 + */ + PgGrade selectById(Long gradeId); + + /** + * 新增年级 + */ + int insert(PgGrade grade); + + /** + * 修改年级 + */ + int update(PgGrade grade); + + /** + * 批量删除年级 + */ + int deleteByIds(Long[] gradeIds); +} diff --git a/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/base/service/IPgRegionService.java b/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/base/service/IPgRegionService.java new file mode 100644 index 0000000..94b3ec2 --- /dev/null +++ b/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/base/service/IPgRegionService.java @@ -0,0 +1,19 @@ +package org.dromara.pangu.base.service; + +import org.dromara.pangu.base.domain.PgRegion; + +import java.util.List; + +/** + * 区域 Service 接口 + * + * @author 湖北新华业务中台研发团队 + */ +public interface IPgRegionService { + List selectList(PgRegion region); + PgRegion selectById(Long regionId); + List selectByParentId(Long parentId); + int insert(PgRegion region); + int update(PgRegion region); + int deleteByIds(Long[] regionIds); +} diff --git a/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/base/service/IPgSubjectService.java b/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/base/service/IPgSubjectService.java new file mode 100644 index 0000000..82130f5 --- /dev/null +++ b/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/base/service/IPgSubjectService.java @@ -0,0 +1,21 @@ +package org.dromara.pangu.base.service; + +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.pangu.base.domain.PgSubject; + +import java.util.List; + +/** + * 学科 Service 接口 + * + * @author 湖北新华业务中台研发团队 + */ +public interface IPgSubjectService { + TableDataInfo selectPageList(PgSubject subject, PageQuery pageQuery); + List selectList(PgSubject subject); + PgSubject selectById(Long subjectId); + int insert(PgSubject subject); + int update(PgSubject subject); + int deleteByIds(Long[] subjectIds); +} diff --git a/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/base/service/impl/PgClassServiceImpl.java b/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/base/service/impl/PgClassServiceImpl.java new file mode 100644 index 0000000..142e9ee --- /dev/null +++ b/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/base/service/impl/PgClassServiceImpl.java @@ -0,0 +1,67 @@ +package org.dromara.pangu.base.service.impl; + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import lombok.RequiredArgsConstructor; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.pangu.base.domain.PgClass; +import org.dromara.pangu.base.mapper.PgClassMapper; +import org.dromara.pangu.base.service.IPgClassService; +import org.springframework.stereotype.Service; + +import java.util.Arrays; +import java.util.List; + +/** + * 班级 Service 实现 + * + * @author 湖北新华业务中台研发团队 + */ +@RequiredArgsConstructor +@Service +public class PgClassServiceImpl implements IPgClassService { + + private final PgClassMapper baseMapper; + + @Override + public TableDataInfo selectPageList(PgClass pgClass, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(pgClass); + Page page = baseMapper.selectPage(pageQuery.build(), lqw); + return TableDataInfo.build(page); + } + + @Override + public List selectList(PgClass pgClass) { + return baseMapper.selectList(buildQueryWrapper(pgClass)); + } + + @Override + public PgClass selectById(Long classId) { + return baseMapper.selectById(classId); + } + + @Override + public int insert(PgClass pgClass) { + return baseMapper.insert(pgClass); + } + + @Override + public int update(PgClass pgClass) { + return baseMapper.updateById(pgClass); + } + + @Override + public int deleteByIds(Long[] classIds) { + return baseMapper.deleteByIds(Arrays.asList(classIds)); + } + + private LambdaQueryWrapper buildQueryWrapper(PgClass pgClass) { + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.like(StrUtil.isNotBlank(pgClass.getClassName()), PgClass::getClassName, pgClass.getClassName()); + lqw.eq(StrUtil.isNotBlank(pgClass.getStatus()), PgClass::getStatus, pgClass.getStatus()); + lqw.orderByAsc(PgClass::getOrderNum); + return lqw; + } +} diff --git a/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/base/service/impl/PgGradeServiceImpl.java b/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/base/service/impl/PgGradeServiceImpl.java new file mode 100644 index 0000000..57e8c36 --- /dev/null +++ b/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/base/service/impl/PgGradeServiceImpl.java @@ -0,0 +1,67 @@ +package org.dromara.pangu.base.service.impl; + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import lombok.RequiredArgsConstructor; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.pangu.base.domain.PgGrade; +import org.dromara.pangu.base.mapper.PgGradeMapper; +import org.dromara.pangu.base.service.IPgGradeService; +import org.springframework.stereotype.Service; + +import java.util.Arrays; +import java.util.List; + +/** + * 年级 Service 实现 + * + * @author 湖北新华业务中台研发团队 + */ +@RequiredArgsConstructor +@Service +public class PgGradeServiceImpl implements IPgGradeService { + + private final PgGradeMapper baseMapper; + + @Override + public TableDataInfo selectPageList(PgGrade grade, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(grade); + Page page = baseMapper.selectPage(pageQuery.build(), lqw); + return TableDataInfo.build(page); + } + + @Override + public List selectList(PgGrade grade) { + return baseMapper.selectList(buildQueryWrapper(grade)); + } + + @Override + public PgGrade selectById(Long gradeId) { + return baseMapper.selectById(gradeId); + } + + @Override + public int insert(PgGrade grade) { + return baseMapper.insert(grade); + } + + @Override + public int update(PgGrade grade) { + return baseMapper.updateById(grade); + } + + @Override + public int deleteByIds(Long[] gradeIds) { + return baseMapper.deleteByIds(Arrays.asList(gradeIds)); + } + + private LambdaQueryWrapper buildQueryWrapper(PgGrade grade) { + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.like(StrUtil.isNotBlank(grade.getGradeName()), PgGrade::getGradeName, grade.getGradeName()); + lqw.eq(StrUtil.isNotBlank(grade.getStatus()), PgGrade::getStatus, grade.getStatus()); + lqw.orderByAsc(PgGrade::getOrderNum); + return lqw; + } +} diff --git a/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/base/service/impl/PgRegionServiceImpl.java b/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/base/service/impl/PgRegionServiceImpl.java new file mode 100644 index 0000000..a19286c --- /dev/null +++ b/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/base/service/impl/PgRegionServiceImpl.java @@ -0,0 +1,61 @@ +package org.dromara.pangu.base.service.impl; + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import lombok.RequiredArgsConstructor; +import org.dromara.pangu.base.domain.PgRegion; +import org.dromara.pangu.base.mapper.PgRegionMapper; +import org.dromara.pangu.base.service.IPgRegionService; +import org.springframework.stereotype.Service; + +import java.util.Arrays; +import java.util.List; + +/** + * 区域 Service 实现 + * + * @author 湖北新华业务中台研发团队 + */ +@RequiredArgsConstructor +@Service +public class PgRegionServiceImpl implements IPgRegionService { + + private final PgRegionMapper baseMapper; + + @Override + public List selectList(PgRegion region) { + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.like(StrUtil.isNotBlank(region.getRegionName()), PgRegion::getRegionName, region.getRegionName()); + lqw.eq(StrUtil.isNotBlank(region.getStatus()), PgRegion::getStatus, region.getStatus()); + lqw.eq(region.getLevel() != null, PgRegion::getLevel, region.getLevel()); + lqw.orderByAsc(PgRegion::getOrderNum); + return baseMapper.selectList(lqw); + } + + @Override + public PgRegion selectById(Long regionId) { + return baseMapper.selectById(regionId); + } + + @Override + public List selectByParentId(Long parentId) { + return baseMapper.selectList(new LambdaQueryWrapper() + .eq(PgRegion::getParentId, parentId) + .orderByAsc(PgRegion::getOrderNum)); + } + + @Override + public int insert(PgRegion region) { + return baseMapper.insert(region); + } + + @Override + public int update(PgRegion region) { + return baseMapper.updateById(region); + } + + @Override + public int deleteByIds(Long[] regionIds) { + return baseMapper.deleteByIds(Arrays.asList(regionIds)); + } +} diff --git a/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/base/service/impl/PgSubjectServiceImpl.java b/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/base/service/impl/PgSubjectServiceImpl.java new file mode 100644 index 0000000..869c509 --- /dev/null +++ b/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/base/service/impl/PgSubjectServiceImpl.java @@ -0,0 +1,67 @@ +package org.dromara.pangu.base.service.impl; + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import lombok.RequiredArgsConstructor; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.pangu.base.domain.PgSubject; +import org.dromara.pangu.base.mapper.PgSubjectMapper; +import org.dromara.pangu.base.service.IPgSubjectService; +import org.springframework.stereotype.Service; + +import java.util.Arrays; +import java.util.List; + +/** + * 学科 Service 实现 + * + * @author 湖北新华业务中台研发团队 + */ +@RequiredArgsConstructor +@Service +public class PgSubjectServiceImpl implements IPgSubjectService { + + private final PgSubjectMapper baseMapper; + + @Override + public TableDataInfo selectPageList(PgSubject subject, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(subject); + Page page = baseMapper.selectPage(pageQuery.build(), lqw); + return TableDataInfo.build(page); + } + + @Override + public List selectList(PgSubject subject) { + return baseMapper.selectList(buildQueryWrapper(subject)); + } + + @Override + public PgSubject selectById(Long subjectId) { + return baseMapper.selectById(subjectId); + } + + @Override + public int insert(PgSubject subject) { + return baseMapper.insert(subject); + } + + @Override + public int update(PgSubject subject) { + return baseMapper.updateById(subject); + } + + @Override + public int deleteByIds(Long[] subjectIds) { + return baseMapper.deleteByIds(Arrays.asList(subjectIds)); + } + + private LambdaQueryWrapper buildQueryWrapper(PgSubject subject) { + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.like(StrUtil.isNotBlank(subject.getSubjectName()), PgSubject::getSubjectName, subject.getSubjectName()); + lqw.eq(StrUtil.isNotBlank(subject.getStatus()), PgSubject::getStatus, subject.getStatus()); + lqw.orderByAsc(PgSubject::getOrderNum); + return lqw; + } +} diff --git a/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/member/controller/PgMemberController.java b/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/member/controller/PgMemberController.java new file mode 100644 index 0000000..381a948 --- /dev/null +++ b/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/member/controller/PgMemberController.java @@ -0,0 +1,61 @@ +package org.dromara.pangu.member.controller; + +import cn.dev33.satoken.annotation.SaCheckPermission; +import lombok.RequiredArgsConstructor; +import org.dromara.common.core.domain.R; +import org.dromara.common.log.annotation.Log; +import org.dromara.common.log.enums.BusinessType; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.web.core.BaseController; +import org.dromara.pangu.member.domain.PgMember; +import org.dromara.pangu.member.service.IPgMemberService; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +/** + * 会员管理 + * + * @author 湖北新华业务中台研发团队 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/business/member") +public class PgMemberController extends BaseController { + + private final IPgMemberService memberService; + + @SaCheckPermission("business:member:list") + @GetMapping("/list") + public TableDataInfo list(PgMember member, PageQuery pageQuery) { + return memberService.selectPageList(member, pageQuery); + } + + @SaCheckPermission("business:member:query") + @GetMapping("/{memberId}") + public R getInfo(@PathVariable Long memberId) { + return R.ok(memberService.selectById(memberId)); + } + + @SaCheckPermission("business:member:add") + @Log(title = "会员管理", businessType = BusinessType.INSERT) + @PostMapping + public R add(@Validated @RequestBody PgMember member) { + return toAjax(memberService.insert(member)); + } + + @SaCheckPermission("business:member:edit") + @Log(title = "会员管理", businessType = BusinessType.UPDATE) + @PutMapping + public R edit(@Validated @RequestBody PgMember member) { + return toAjax(memberService.update(member)); + } + + @SaCheckPermission("business:member:remove") + @Log(title = "会员管理", businessType = BusinessType.DELETE) + @DeleteMapping("/{memberIds}") + public R remove(@PathVariable Long[] memberIds) { + return toAjax(memberService.deleteByIds(memberIds)); + } +} diff --git a/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/member/domain/PgMember.java b/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/member/domain/PgMember.java new file mode 100644 index 0000000..4dcdce2 --- /dev/null +++ b/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/member/domain/PgMember.java @@ -0,0 +1,81 @@ +package org.dromara.pangu.member.domain; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.dromara.common.mybatis.core.domain.BaseEntity; + +import java.util.Date; + +/** + * 会员表 + * + * @author 湖北新华业务中台研发团队 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("pg_member") +public class PgMember extends BaseEntity { + + @TableId(type = IdType.ASSIGN_ID) + private Long memberId; + + private String memberCode; + + private String phone; + + private String password; + + private String nickname; + + private String avatar; + + /** + * 性别(0未知 1男 2女) + */ + private String gender; + + private Date birthday; + + /** + * 身份类型(1家长 2教师) + */ + private String identityType; + + private String openId; + + private String unionId; + + private Long regionId; + + private Long schoolId; + + private Long schoolGradeId; + + private Long schoolClassId; + + /** + * 注册来源(1小程序 2H5 3后台 4导入) + */ + private String registerSource; + + private Date registerTime; + + private Date lastLoginTime; + + private String lastLoginIp; + + private Integer loginCount; + + private String status; + + private String tenantId; + + @TableLogic + private String delFlag; + + private String remark; +} diff --git a/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/member/mapper/PgMemberMapper.java b/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/member/mapper/PgMemberMapper.java new file mode 100644 index 0000000..2707ed0 --- /dev/null +++ b/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/member/mapper/PgMemberMapper.java @@ -0,0 +1,12 @@ +package org.dromara.pangu.member.mapper; + +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; +import org.dromara.pangu.member.domain.PgMember; + +/** + * 会员 Mapper 接口 + * + * @author 湖北新华业务中台研发团队 + */ +public interface PgMemberMapper extends BaseMapperPlus { +} diff --git a/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/member/service/IPgMemberService.java b/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/member/service/IPgMemberService.java new file mode 100644 index 0000000..e0b3a57 --- /dev/null +++ b/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/member/service/IPgMemberService.java @@ -0,0 +1,21 @@ +package org.dromara.pangu.member.service; + +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.pangu.member.domain.PgMember; + +import java.util.List; + +/** + * 会员 Service 接口 + * + * @author 湖北新华业务中台研发团队 + */ +public interface IPgMemberService { + TableDataInfo selectPageList(PgMember member, PageQuery pageQuery); + List selectList(PgMember member); + PgMember selectById(Long memberId); + int insert(PgMember member); + int update(PgMember member); + int deleteByIds(Long[] memberIds); +} diff --git a/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/member/service/impl/PgMemberServiceImpl.java b/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/member/service/impl/PgMemberServiceImpl.java new file mode 100644 index 0000000..3ecc0cc --- /dev/null +++ b/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/member/service/impl/PgMemberServiceImpl.java @@ -0,0 +1,69 @@ +package org.dromara.pangu.member.service.impl; + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import lombok.RequiredArgsConstructor; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.pangu.member.domain.PgMember; +import org.dromara.pangu.member.mapper.PgMemberMapper; +import org.dromara.pangu.member.service.IPgMemberService; +import org.springframework.stereotype.Service; + +import java.util.Arrays; +import java.util.List; + +/** + * 会员 Service 实现 + * + * @author 湖北新华业务中台研发团队 + */ +@RequiredArgsConstructor +@Service +public class PgMemberServiceImpl implements IPgMemberService { + + private final PgMemberMapper baseMapper; + + @Override + public TableDataInfo selectPageList(PgMember member, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(member); + Page page = baseMapper.selectPage(pageQuery.build(), lqw); + return TableDataInfo.build(page); + } + + @Override + public List selectList(PgMember member) { + return baseMapper.selectList(buildQueryWrapper(member)); + } + + @Override + public PgMember selectById(Long memberId) { + return baseMapper.selectById(memberId); + } + + @Override + public int insert(PgMember member) { + return baseMapper.insert(member); + } + + @Override + public int update(PgMember member) { + return baseMapper.updateById(member); + } + + @Override + public int deleteByIds(Long[] memberIds) { + return baseMapper.deleteByIds(Arrays.asList(memberIds)); + } + + private LambdaQueryWrapper buildQueryWrapper(PgMember member) { + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.like(StrUtil.isNotBlank(member.getNickname()), PgMember::getNickname, member.getNickname()); + lqw.like(StrUtil.isNotBlank(member.getPhone()), PgMember::getPhone, member.getPhone()); + lqw.eq(StrUtil.isNotBlank(member.getIdentityType()), PgMember::getIdentityType, member.getIdentityType()); + lqw.eq(StrUtil.isNotBlank(member.getStatus()), PgMember::getStatus, member.getStatus()); + lqw.orderByDesc(PgMember::getCreateTime); + return lqw; + } +} diff --git a/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/school/controller/PgSchoolController.java b/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/school/controller/PgSchoolController.java new file mode 100644 index 0000000..f4e8c88 --- /dev/null +++ b/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/school/controller/PgSchoolController.java @@ -0,0 +1,68 @@ +package org.dromara.pangu.school.controller; + +import cn.dev33.satoken.annotation.SaCheckPermission; +import lombok.RequiredArgsConstructor; +import org.dromara.common.core.domain.R; +import org.dromara.common.log.annotation.Log; +import org.dromara.common.log.enums.BusinessType; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.web.core.BaseController; +import org.dromara.pangu.school.domain.PgSchool; +import org.dromara.pangu.school.service.IPgSchoolService; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * 学校管理 + * + * @author 湖北新华业务中台研发团队 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/business/school") +public class PgSchoolController extends BaseController { + + private final IPgSchoolService schoolService; + + @SaCheckPermission("business:school:list") + @GetMapping("/list") + public TableDataInfo list(PgSchool school, PageQuery pageQuery) { + return schoolService.selectPageList(school, pageQuery); + } + + @GetMapping("/listAll") + public R> listAll(PgSchool school) { + return R.ok(schoolService.selectList(school)); + } + + @SaCheckPermission("business:school:query") + @GetMapping("/{schoolId}") + public R getInfo(@PathVariable Long schoolId) { + return R.ok(schoolService.selectById(schoolId)); + } + + @SaCheckPermission("business:school:add") + @Log(title = "学校管理", businessType = BusinessType.INSERT) + @PostMapping + public R add(@Validated @RequestBody PgSchool school) { + return toAjax(schoolService.insert(school)); + } + + @SaCheckPermission("business:school:edit") + @Log(title = "学校管理", businessType = BusinessType.UPDATE) + @PutMapping + public R edit(@Validated @RequestBody PgSchool school) { + return toAjax(schoolService.update(school)); + } + + @SaCheckPermission("business:school:remove") + @Log(title = "学校管理", businessType = BusinessType.DELETE) + @DeleteMapping("/{schoolIds}") + public R remove(@PathVariable Long[] schoolIds) { + return toAjax(schoolService.deleteByIds(schoolIds)); + } +} diff --git a/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/school/domain/PgSchool.java b/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/school/domain/PgSchool.java new file mode 100644 index 0000000..221a4a9 --- /dev/null +++ b/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/school/domain/PgSchool.java @@ -0,0 +1,51 @@ +package org.dromara.pangu.school.domain; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.dromara.common.mybatis.core.domain.BaseEntity; + +/** + * 学校表 + * + * @author 湖北新华业务中台研发团队 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("pg_school") +public class PgSchool extends BaseEntity { + + @TableId(type = IdType.ASSIGN_ID) + private Long schoolId; + + private String schoolCode; + + private String schoolName; + + /** + * 学校类型(1小学 2初中 3高中 4完全中学) + */ + private String schoolType; + + private Long regionId; + + private String regionPath; + + private String address; + + private String contactPerson; + + private String contactPhone; + + private String status; + + private String tenantId; + + @TableLogic + private String delFlag; + + private String remark; +} diff --git a/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/school/domain/PgSchoolClass.java b/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/school/domain/PgSchoolClass.java new file mode 100644 index 0000000..80c154e --- /dev/null +++ b/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/school/domain/PgSchoolClass.java @@ -0,0 +1,36 @@ +package org.dromara.pangu.school.domain; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +/** + * 学校班级表 + * + * @author 湖北新华业务中台研发团队 + */ +@Data +@TableName("pg_school_class") +public class PgSchoolClass implements Serializable { + + @TableId(type = IdType.ASSIGN_ID) + private Long id; + + private Long schoolId; + + private Long schoolGradeId; + + private Long classId; + + private String classAlias; + + private String tenantId; + + private Long createBy; + + private Date createTime; +} diff --git a/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/school/domain/PgSchoolGrade.java b/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/school/domain/PgSchoolGrade.java new file mode 100644 index 0000000..babb07c --- /dev/null +++ b/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/school/domain/PgSchoolGrade.java @@ -0,0 +1,32 @@ +package org.dromara.pangu.school.domain; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +/** + * 学校年级关联表 + * + * @author 湖北新华业务中台研发团队 + */ +@Data +@TableName("pg_school_grade") +public class PgSchoolGrade implements Serializable { + + @TableId(type = IdType.ASSIGN_ID) + private Long id; + + private Long schoolId; + + private Long gradeId; + + private String tenantId; + + private Long createBy; + + private Date createTime; +} diff --git a/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/school/mapper/PgSchoolClassMapper.java b/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/school/mapper/PgSchoolClassMapper.java new file mode 100644 index 0000000..a5910d9 --- /dev/null +++ b/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/school/mapper/PgSchoolClassMapper.java @@ -0,0 +1,12 @@ +package org.dromara.pangu.school.mapper; + +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; +import org.dromara.pangu.school.domain.PgSchoolClass; + +/** + * 学校班级 Mapper 接口 + * + * @author 湖北新华业务中台研发团队 + */ +public interface PgSchoolClassMapper extends BaseMapperPlus { +} diff --git a/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/school/mapper/PgSchoolGradeMapper.java b/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/school/mapper/PgSchoolGradeMapper.java new file mode 100644 index 0000000..9e61efd --- /dev/null +++ b/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/school/mapper/PgSchoolGradeMapper.java @@ -0,0 +1,12 @@ +package org.dromara.pangu.school.mapper; + +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; +import org.dromara.pangu.school.domain.PgSchoolGrade; + +/** + * 学校年级关联 Mapper 接口 + * + * @author 湖北新华业务中台研发团队 + */ +public interface PgSchoolGradeMapper extends BaseMapperPlus { +} diff --git a/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/school/mapper/PgSchoolMapper.java b/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/school/mapper/PgSchoolMapper.java new file mode 100644 index 0000000..453b227 --- /dev/null +++ b/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/school/mapper/PgSchoolMapper.java @@ -0,0 +1,12 @@ +package org.dromara.pangu.school.mapper; + +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; +import org.dromara.pangu.school.domain.PgSchool; + +/** + * 学校 Mapper 接口 + * + * @author 湖北新华业务中台研发团队 + */ +public interface PgSchoolMapper extends BaseMapperPlus { +} diff --git a/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/school/service/IPgSchoolService.java b/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/school/service/IPgSchoolService.java new file mode 100644 index 0000000..6b56b48 --- /dev/null +++ b/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/school/service/IPgSchoolService.java @@ -0,0 +1,21 @@ +package org.dromara.pangu.school.service; + +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.pangu.school.domain.PgSchool; + +import java.util.List; + +/** + * 学校 Service 接口 + * + * @author 湖北新华业务中台研发团队 + */ +public interface IPgSchoolService { + TableDataInfo selectPageList(PgSchool school, PageQuery pageQuery); + List selectList(PgSchool school); + PgSchool selectById(Long schoolId); + int insert(PgSchool school); + int update(PgSchool school); + int deleteByIds(Long[] schoolIds); +} diff --git a/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/school/service/impl/PgSchoolServiceImpl.java b/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/school/service/impl/PgSchoolServiceImpl.java new file mode 100644 index 0000000..56643e8 --- /dev/null +++ b/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/school/service/impl/PgSchoolServiceImpl.java @@ -0,0 +1,68 @@ +package org.dromara.pangu.school.service.impl; + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import lombok.RequiredArgsConstructor; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.pangu.school.domain.PgSchool; +import org.dromara.pangu.school.mapper.PgSchoolMapper; +import org.dromara.pangu.school.service.IPgSchoolService; +import org.springframework.stereotype.Service; + +import java.util.Arrays; +import java.util.List; + +/** + * 学校 Service 实现 + * + * @author 湖北新华业务中台研发团队 + */ +@RequiredArgsConstructor +@Service +public class PgSchoolServiceImpl implements IPgSchoolService { + + private final PgSchoolMapper baseMapper; + + @Override + public TableDataInfo selectPageList(PgSchool school, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(school); + Page page = baseMapper.selectPage(pageQuery.build(), lqw); + return TableDataInfo.build(page); + } + + @Override + public List selectList(PgSchool school) { + return baseMapper.selectList(buildQueryWrapper(school)); + } + + @Override + public PgSchool selectById(Long schoolId) { + return baseMapper.selectById(schoolId); + } + + @Override + public int insert(PgSchool school) { + return baseMapper.insert(school); + } + + @Override + public int update(PgSchool school) { + return baseMapper.updateById(school); + } + + @Override + public int deleteByIds(Long[] schoolIds) { + return baseMapper.deleteByIds(Arrays.asList(schoolIds)); + } + + private LambdaQueryWrapper buildQueryWrapper(PgSchool school) { + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.like(StrUtil.isNotBlank(school.getSchoolName()), PgSchool::getSchoolName, school.getSchoolName()); + lqw.eq(StrUtil.isNotBlank(school.getSchoolType()), PgSchool::getSchoolType, school.getSchoolType()); + lqw.eq(school.getRegionId() != null, PgSchool::getRegionId, school.getRegionId()); + lqw.eq(StrUtil.isNotBlank(school.getStatus()), PgSchool::getStatus, school.getStatus()); + return lqw; + } +} diff --git a/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/student/controller/PgStudentController.java b/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/student/controller/PgStudentController.java new file mode 100644 index 0000000..a9715d0 --- /dev/null +++ b/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/student/controller/PgStudentController.java @@ -0,0 +1,61 @@ +package org.dromara.pangu.student.controller; + +import cn.dev33.satoken.annotation.SaCheckPermission; +import lombok.RequiredArgsConstructor; +import org.dromara.common.core.domain.R; +import org.dromara.common.log.annotation.Log; +import org.dromara.common.log.enums.BusinessType; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.web.core.BaseController; +import org.dromara.pangu.student.domain.PgStudent; +import org.dromara.pangu.student.service.IPgStudentService; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +/** + * 学生管理 + * + * @author 湖北新华业务中台研发团队 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/business/student") +public class PgStudentController extends BaseController { + + private final IPgStudentService studentService; + + @SaCheckPermission("business:student:list") + @GetMapping("/list") + public TableDataInfo list(PgStudent student, PageQuery pageQuery) { + return studentService.selectPageList(student, pageQuery); + } + + @SaCheckPermission("business:student:query") + @GetMapping("/{studentId}") + public R getInfo(@PathVariable Long studentId) { + return R.ok(studentService.selectById(studentId)); + } + + @SaCheckPermission("business:student:add") + @Log(title = "学生管理", businessType = BusinessType.INSERT) + @PostMapping + public R add(@Validated @RequestBody PgStudent student) { + return toAjax(studentService.insert(student)); + } + + @SaCheckPermission("business:student:edit") + @Log(title = "学生管理", businessType = BusinessType.UPDATE) + @PutMapping + public R edit(@Validated @RequestBody PgStudent student) { + return toAjax(studentService.update(student)); + } + + @SaCheckPermission("business:student:remove") + @Log(title = "学生管理", businessType = BusinessType.DELETE) + @DeleteMapping("/{studentIds}") + public R remove(@PathVariable Long[] studentIds) { + return toAjax(studentService.deleteByIds(studentIds)); + } +} diff --git a/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/student/domain/PgStudent.java b/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/student/domain/PgStudent.java new file mode 100644 index 0000000..9d8bcdb --- /dev/null +++ b/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/student/domain/PgStudent.java @@ -0,0 +1,59 @@ +package org.dromara.pangu.student.domain; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.dromara.common.mybatis.core.domain.BaseEntity; + +import java.util.Date; + +/** + * 学生表 + * + * @author 湖北新华业务中台研发团队 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("pg_student") +public class PgStudent extends BaseEntity { + + @TableId(type = IdType.ASSIGN_ID) + private Long studentId; + + private String studentName; + + private String studentNo; + + /** + * 性别(0未知 1男 2女) + */ + private String gender; + + private Date birthday; + + private Long regionId; + + private String regionPath; + + private Long schoolId; + + private Long schoolGradeId; + + private Long schoolClassId; + + private Long subjectId; + + private Long memberId; + + private String status; + + private String tenantId; + + @TableLogic + private String delFlag; + + private String remark; +} diff --git a/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/student/mapper/PgStudentMapper.java b/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/student/mapper/PgStudentMapper.java new file mode 100644 index 0000000..9f7862c --- /dev/null +++ b/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/student/mapper/PgStudentMapper.java @@ -0,0 +1,12 @@ +package org.dromara.pangu.student.mapper; + +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; +import org.dromara.pangu.student.domain.PgStudent; + +/** + * 学生 Mapper 接口 + * + * @author 湖北新华业务中台研发团队 + */ +public interface PgStudentMapper extends BaseMapperPlus { +} diff --git a/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/student/service/IPgStudentService.java b/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/student/service/IPgStudentService.java new file mode 100644 index 0000000..298a8be --- /dev/null +++ b/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/student/service/IPgStudentService.java @@ -0,0 +1,21 @@ +package org.dromara.pangu.student.service; + +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.pangu.student.domain.PgStudent; + +import java.util.List; + +/** + * 学生 Service 接口 + * + * @author 湖北新华业务中台研发团队 + */ +public interface IPgStudentService { + TableDataInfo selectPageList(PgStudent student, PageQuery pageQuery); + List selectList(PgStudent student); + PgStudent selectById(Long studentId); + int insert(PgStudent student); + int update(PgStudent student); + int deleteByIds(Long[] studentIds); +} diff --git a/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/student/service/impl/PgStudentServiceImpl.java b/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/student/service/impl/PgStudentServiceImpl.java new file mode 100644 index 0000000..9d1b0a6 --- /dev/null +++ b/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/student/service/impl/PgStudentServiceImpl.java @@ -0,0 +1,71 @@ +package org.dromara.pangu.student.service.impl; + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import lombok.RequiredArgsConstructor; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.pangu.student.domain.PgStudent; +import org.dromara.pangu.student.mapper.PgStudentMapper; +import org.dromara.pangu.student.service.IPgStudentService; +import org.springframework.stereotype.Service; + +import java.util.Arrays; +import java.util.List; + +/** + * 学生 Service 实现 + * + * @author 湖北新华业务中台研发团队 + */ +@RequiredArgsConstructor +@Service +public class PgStudentServiceImpl implements IPgStudentService { + + private final PgStudentMapper baseMapper; + + @Override + public TableDataInfo selectPageList(PgStudent student, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(student); + Page page = baseMapper.selectPage(pageQuery.build(), lqw); + return TableDataInfo.build(page); + } + + @Override + public List selectList(PgStudent student) { + return baseMapper.selectList(buildQueryWrapper(student)); + } + + @Override + public PgStudent selectById(Long studentId) { + return baseMapper.selectById(studentId); + } + + @Override + public int insert(PgStudent student) { + return baseMapper.insert(student); + } + + @Override + public int update(PgStudent student) { + return baseMapper.updateById(student); + } + + @Override + public int deleteByIds(Long[] studentIds) { + return baseMapper.deleteByIds(Arrays.asList(studentIds)); + } + + private LambdaQueryWrapper buildQueryWrapper(PgStudent student) { + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.like(StrUtil.isNotBlank(student.getStudentName()), PgStudent::getStudentName, student.getStudentName()); + lqw.like(StrUtil.isNotBlank(student.getStudentNo()), PgStudent::getStudentNo, student.getStudentNo()); + lqw.eq(student.getSchoolId() != null, PgStudent::getSchoolId, student.getSchoolId()); + lqw.eq(student.getSchoolGradeId() != null, PgStudent::getSchoolGradeId, student.getSchoolGradeId()); + lqw.eq(student.getSchoolClassId() != null, PgStudent::getSchoolClassId, student.getSchoolClassId()); + lqw.eq(StrUtil.isNotBlank(student.getStatus()), PgStudent::getStatus, student.getStatus()); + lqw.orderByDesc(PgStudent::getCreateTime); + return lqw; + } +} diff --git a/backend/ruoyi-modules/pom.xml b/backend/ruoyi-modules/pom.xml index daff497..c47ff63 100644 --- a/backend/ruoyi-modules/pom.xml +++ b/backend/ruoyi-modules/pom.xml @@ -15,6 +15,7 @@ ruoyi-job ruoyi-system ruoyi-workflow + pangu-business ruoyi-modules