feat: 创建 pangu-business 业务模块并完成迁移

主要变更:
1. 创建 pangu-business 模块,适配 RuoYi-Vue-Plus 5.5.3 架构
2. 迁移业务实体类:PgGrade, PgClass, PgSubject, PgRegion, PgSchool, PgMember, PgStudent, PgApplication 等
3. 创建对应的 Mapper 接口(继承 BaseMapperPlus)
4. 创建 Service 层(接口 + 实现)
5. 创建 Controller(使用 R<T> 响应格式、Sa-Token 权限控制)
6. 添加业务表 SQL 脚本(适配租户字段)
7. 添加业务菜单数据

技术适配:
- Entity 继承 BaseEntity,添加 tenantId 字段
- Mapper 继承 BaseMapperPlus<T, V>
- Controller 使用 @SaCheckPermission 权限注解
- API 路径:/business/grade, /business/class, /business/school 等
This commit is contained in:
神码-方晓辉 2026-02-02 15:59:10 +08:00
parent 91a62b00d4
commit aa5d5b125e
56 changed files with 2481 additions and 0 deletions

View File

@ -52,6 +52,11 @@
<groupId>org.dromara</groupId>
<artifactId>ruoyi-workflow</artifactId>
</dependency>
<dependency>
<groupId>org.dromara</groupId>
<artifactId>pangu-business</artifactId>
<version>${revision}</version>
</dependency>
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-client</artifactId>

View File

@ -93,6 +93,13 @@
<artifactId>ruoyi-workflow</artifactId>
</dependency>
<!-- 盘古业务模块 -->
<dependency>
<groupId>org.dromara</groupId>
<artifactId>pangu-business</artifactId>
<version>${revision}</version>
</dependency>
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-client</artifactId>

View File

@ -18,5 +18,6 @@
<module>ruoyi-job</module>
<module>ruoyi-system</module>
<module>ruoyi-workflow</module>
<module>pangu-business</module>
</modules>
</project>

View File

@ -0,0 +1,40 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-modules</artifactId>
<version>5.5.3</version>
</parent>
<groupId>org.dromara</groupId>
<artifactId>pangu-business</artifactId>
<version>5.5.3</version>
<description>盘古业务模块 - 包含学校、会员、学生、应用管理等业务功能</description>
<dependencies>
<dependency>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-common-security</artifactId>
</dependency>
<dependency>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-common-web</artifactId>
</dependency>
<dependency>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-common-log</artifactId>
</dependency>
<dependency>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-common-excel</artifactId>
</dependency>
<dependency>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-common-translation</artifactId>
</dependency>
<dependency>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-system</artifactId>
</dependency>
</dependencies>
</project>

View File

@ -0,0 +1,56 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-modules</artifactId>
<version>${revision}</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>pangu-business</artifactId>
<description>
盘古业务模块 - 包含学校、会员、学生、应用管理等业务功能
</description>
<dependencies>
<!-- RuoYi Common Security -->
<dependency>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-common-security</artifactId>
</dependency>
<!-- RuoYi Common Web -->
<dependency>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-common-web</artifactId>
</dependency>
<!-- RuoYi Common Log -->
<dependency>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-common-log</artifactId>
</dependency>
<!-- RuoYi Common Excel -->
<dependency>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-common-excel</artifactId>
</dependency>
<!-- RuoYi Common Translation -->
<dependency>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-common-translation</artifactId>
</dependency>
<!-- RuoYi System (用于关联系统用户等) -->
<dependency>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-system</artifactId>
</dependency>
</dependencies>
</project>

View File

@ -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, '');

View File

@ -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授权表';

View File

@ -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<PgApplication> list(PgApplication app, PageQuery pageQuery) {
return applicationService.selectPageList(app, pageQuery);
}
@SaCheckPermission("business:application:query")
@GetMapping("/{appId}")
public R<PgApplication> getInfo(@PathVariable Long appId) {
return R.ok(applicationService.selectById(appId));
}
@SaCheckPermission("business:application:add")
@Log(title = "应用管理", businessType = BusinessType.INSERT)
@PostMapping
public R<Void> add(@Validated @RequestBody PgApplication app) {
return toAjax(applicationService.insert(app));
}
@SaCheckPermission("business:application:edit")
@Log(title = "应用管理", businessType = BusinessType.UPDATE)
@PutMapping
public R<Void> edit(@Validated @RequestBody PgApplication app) {
return toAjax(applicationService.update(app));
}
@SaCheckPermission("business:application:remove")
@Log(title = "应用管理", businessType = BusinessType.DELETE)
@DeleteMapping("/{appIds}")
public R<Void> remove(@PathVariable Long[] appIds) {
return toAjax(applicationService.deleteByIds(appIds));
}
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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<PgApiDict, PgApiDict> {
}

View File

@ -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<PgAppApi, PgAppApi> {
}

View File

@ -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<PgApplication, PgApplication> {
}

View File

@ -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<PgApplication> selectPageList(PgApplication app, PageQuery pageQuery);
List<PgApplication> selectList(PgApplication app);
PgApplication selectById(Long appId);
int insert(PgApplication app);
int update(PgApplication app);
int deleteByIds(Long[] appIds);
}

View File

@ -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<PgApplication> selectPageList(PgApplication app, PageQuery pageQuery) {
LambdaQueryWrapper<PgApplication> lqw = buildQueryWrapper(app);
Page<PgApplication> page = baseMapper.selectPage(pageQuery.build(), lqw);
return TableDataInfo.build(page);
}
@Override
public List<PgApplication> 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<PgApplication> buildQueryWrapper(PgApplication app) {
LambdaQueryWrapper<PgApplication> 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;
}
}

View File

@ -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<PgClass> list(PgClass pgClass, PageQuery pageQuery) {
return classService.selectPageList(pgClass, pageQuery);
}
@GetMapping("/listAll")
public R<List<PgClass>> listAll(PgClass pgClass) {
return R.ok(classService.selectList(pgClass));
}
@SaCheckPermission("business:class:query")
@GetMapping("/{classId}")
public R<PgClass> getInfo(@PathVariable Long classId) {
return R.ok(classService.selectById(classId));
}
@SaCheckPermission("business:class:add")
@Log(title = "班级管理", businessType = BusinessType.INSERT)
@PostMapping
public R<Void> add(@Validated @RequestBody PgClass pgClass) {
return toAjax(classService.insert(pgClass));
}
@SaCheckPermission("business:class:edit")
@Log(title = "班级管理", businessType = BusinessType.UPDATE)
@PutMapping
public R<Void> edit(@Validated @RequestBody PgClass pgClass) {
return toAjax(classService.update(pgClass));
}
@SaCheckPermission("business:class:remove")
@Log(title = "班级管理", businessType = BusinessType.DELETE)
@DeleteMapping("/{classIds}")
public R<Void> remove(@PathVariable Long[] classIds) {
return toAjax(classService.deleteByIds(classIds));
}
}

View File

@ -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<PgGrade> list(PgGrade grade, PageQuery pageQuery) {
return gradeService.selectPageList(grade, pageQuery);
}
/**
* 查询年级列表不分页
*/
@GetMapping("/listAll")
public R<List<PgGrade>> listAll(PgGrade grade) {
return R.ok(gradeService.selectList(grade));
}
/**
* 获取年级详情
*/
@SaCheckPermission("business:grade:query")
@GetMapping("/{gradeId}")
public R<PgGrade> getInfo(@PathVariable Long gradeId) {
return R.ok(gradeService.selectById(gradeId));
}
/**
* 新增年级
*/
@SaCheckPermission("business:grade:add")
@Log(title = "年级管理", businessType = BusinessType.INSERT)
@PostMapping
public R<Void> add(@Validated @RequestBody PgGrade grade) {
return toAjax(gradeService.insert(grade));
}
/**
* 修改年级
*/
@SaCheckPermission("business:grade:edit")
@Log(title = "年级管理", businessType = BusinessType.UPDATE)
@PutMapping
public R<Void> edit(@Validated @RequestBody PgGrade grade) {
return toAjax(gradeService.update(grade));
}
/**
* 删除年级
*/
@SaCheckPermission("business:grade:remove")
@Log(title = "年级管理", businessType = BusinessType.DELETE)
@DeleteMapping("/{gradeIds}")
public R<Void> remove(@PathVariable Long[] gradeIds) {
return toAjax(gradeService.deleteByIds(gradeIds));
}
}

View File

@ -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>> list(PgRegion region) {
return R.ok(regionService.selectList(region));
}
@GetMapping("/children/{parentId}")
public R<List<PgRegion>> children(@PathVariable Long parentId) {
return R.ok(regionService.selectByParentId(parentId));
}
@SaCheckPermission("business:region:query")
@GetMapping("/{regionId}")
public R<PgRegion> getInfo(@PathVariable Long regionId) {
return R.ok(regionService.selectById(regionId));
}
@SaCheckPermission("business:region:add")
@Log(title = "区域管理", businessType = BusinessType.INSERT)
@PostMapping
public R<Void> add(@Validated @RequestBody PgRegion region) {
return toAjax(regionService.insert(region));
}
@SaCheckPermission("business:region:edit")
@Log(title = "区域管理", businessType = BusinessType.UPDATE)
@PutMapping
public R<Void> edit(@Validated @RequestBody PgRegion region) {
return toAjax(regionService.update(region));
}
@SaCheckPermission("business:region:remove")
@Log(title = "区域管理", businessType = BusinessType.DELETE)
@DeleteMapping("/{regionIds}")
public R<Void> remove(@PathVariable Long[] regionIds) {
return toAjax(regionService.deleteByIds(regionIds));
}
}

View File

@ -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<PgSubject> list(PgSubject subject, PageQuery pageQuery) {
return subjectService.selectPageList(subject, pageQuery);
}
@GetMapping("/listAll")
public R<List<PgSubject>> listAll(PgSubject subject) {
return R.ok(subjectService.selectList(subject));
}
@SaCheckPermission("business:subject:query")
@GetMapping("/{subjectId}")
public R<PgSubject> getInfo(@PathVariable Long subjectId) {
return R.ok(subjectService.selectById(subjectId));
}
@SaCheckPermission("business:subject:add")
@Log(title = "学科管理", businessType = BusinessType.INSERT)
@PostMapping
public R<Void> add(@Validated @RequestBody PgSubject subject) {
return toAjax(subjectService.insert(subject));
}
@SaCheckPermission("business:subject:edit")
@Log(title = "学科管理", businessType = BusinessType.UPDATE)
@PutMapping
public R<Void> edit(@Validated @RequestBody PgSubject subject) {
return toAjax(subjectService.update(subject));
}
@SaCheckPermission("business:subject:remove")
@Log(title = "学科管理", businessType = BusinessType.DELETE)
@DeleteMapping("/{subjectIds}")
public R<Void> remove(@PathVariable Long[] subjectIds) {
return toAjax(subjectService.deleteByIds(subjectIds));
}
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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<PgClass, PgClass> {
}

View File

@ -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<PgGrade, PgGrade> {
}

View File

@ -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<PgRegion, PgRegion> {
}

View File

@ -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<PgSubject, PgSubject> {
}

View File

@ -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<PgClass> selectPageList(PgClass pgClass, PageQuery pageQuery);
List<PgClass> selectList(PgClass pgClass);
PgClass selectById(Long classId);
int insert(PgClass pgClass);
int update(PgClass pgClass);
int deleteByIds(Long[] classIds);
}

View File

@ -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<PgGrade> selectPageList(PgGrade grade, PageQuery pageQuery);
/**
* 查询年级列表
*/
List<PgGrade> selectList(PgGrade grade);
/**
* 根据ID查询年级
*/
PgGrade selectById(Long gradeId);
/**
* 新增年级
*/
int insert(PgGrade grade);
/**
* 修改年级
*/
int update(PgGrade grade);
/**
* 批量删除年级
*/
int deleteByIds(Long[] gradeIds);
}

View File

@ -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<PgRegion> selectList(PgRegion region);
PgRegion selectById(Long regionId);
List<PgRegion> selectByParentId(Long parentId);
int insert(PgRegion region);
int update(PgRegion region);
int deleteByIds(Long[] regionIds);
}

View File

@ -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<PgSubject> selectPageList(PgSubject subject, PageQuery pageQuery);
List<PgSubject> selectList(PgSubject subject);
PgSubject selectById(Long subjectId);
int insert(PgSubject subject);
int update(PgSubject subject);
int deleteByIds(Long[] subjectIds);
}

View File

@ -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<PgClass> selectPageList(PgClass pgClass, PageQuery pageQuery) {
LambdaQueryWrapper<PgClass> lqw = buildQueryWrapper(pgClass);
Page<PgClass> page = baseMapper.selectPage(pageQuery.build(), lqw);
return TableDataInfo.build(page);
}
@Override
public List<PgClass> 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<PgClass> buildQueryWrapper(PgClass pgClass) {
LambdaQueryWrapper<PgClass> 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;
}
}

View File

@ -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<PgGrade> selectPageList(PgGrade grade, PageQuery pageQuery) {
LambdaQueryWrapper<PgGrade> lqw = buildQueryWrapper(grade);
Page<PgGrade> page = baseMapper.selectPage(pageQuery.build(), lqw);
return TableDataInfo.build(page);
}
@Override
public List<PgGrade> 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<PgGrade> buildQueryWrapper(PgGrade grade) {
LambdaQueryWrapper<PgGrade> 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;
}
}

View File

@ -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<PgRegion> selectList(PgRegion region) {
LambdaQueryWrapper<PgRegion> 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<PgRegion> selectByParentId(Long parentId) {
return baseMapper.selectList(new LambdaQueryWrapper<PgRegion>()
.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));
}
}

View File

@ -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<PgSubject> selectPageList(PgSubject subject, PageQuery pageQuery) {
LambdaQueryWrapper<PgSubject> lqw = buildQueryWrapper(subject);
Page<PgSubject> page = baseMapper.selectPage(pageQuery.build(), lqw);
return TableDataInfo.build(page);
}
@Override
public List<PgSubject> 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<PgSubject> buildQueryWrapper(PgSubject subject) {
LambdaQueryWrapper<PgSubject> 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;
}
}

View File

@ -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<PgMember> list(PgMember member, PageQuery pageQuery) {
return memberService.selectPageList(member, pageQuery);
}
@SaCheckPermission("business:member:query")
@GetMapping("/{memberId}")
public R<PgMember> getInfo(@PathVariable Long memberId) {
return R.ok(memberService.selectById(memberId));
}
@SaCheckPermission("business:member:add")
@Log(title = "会员管理", businessType = BusinessType.INSERT)
@PostMapping
public R<Void> add(@Validated @RequestBody PgMember member) {
return toAjax(memberService.insert(member));
}
@SaCheckPermission("business:member:edit")
@Log(title = "会员管理", businessType = BusinessType.UPDATE)
@PutMapping
public R<Void> edit(@Validated @RequestBody PgMember member) {
return toAjax(memberService.update(member));
}
@SaCheckPermission("business:member:remove")
@Log(title = "会员管理", businessType = BusinessType.DELETE)
@DeleteMapping("/{memberIds}")
public R<Void> remove(@PathVariable Long[] memberIds) {
return toAjax(memberService.deleteByIds(memberIds));
}
}

View File

@ -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;
}

View File

@ -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<PgMember, PgMember> {
}

View File

@ -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<PgMember> selectPageList(PgMember member, PageQuery pageQuery);
List<PgMember> selectList(PgMember member);
PgMember selectById(Long memberId);
int insert(PgMember member);
int update(PgMember member);
int deleteByIds(Long[] memberIds);
}

View File

@ -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<PgMember> selectPageList(PgMember member, PageQuery pageQuery) {
LambdaQueryWrapper<PgMember> lqw = buildQueryWrapper(member);
Page<PgMember> page = baseMapper.selectPage(pageQuery.build(), lqw);
return TableDataInfo.build(page);
}
@Override
public List<PgMember> 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<PgMember> buildQueryWrapper(PgMember member) {
LambdaQueryWrapper<PgMember> 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;
}
}

View File

@ -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<PgSchool> list(PgSchool school, PageQuery pageQuery) {
return schoolService.selectPageList(school, pageQuery);
}
@GetMapping("/listAll")
public R<List<PgSchool>> listAll(PgSchool school) {
return R.ok(schoolService.selectList(school));
}
@SaCheckPermission("business:school:query")
@GetMapping("/{schoolId}")
public R<PgSchool> getInfo(@PathVariable Long schoolId) {
return R.ok(schoolService.selectById(schoolId));
}
@SaCheckPermission("business:school:add")
@Log(title = "学校管理", businessType = BusinessType.INSERT)
@PostMapping
public R<Void> add(@Validated @RequestBody PgSchool school) {
return toAjax(schoolService.insert(school));
}
@SaCheckPermission("business:school:edit")
@Log(title = "学校管理", businessType = BusinessType.UPDATE)
@PutMapping
public R<Void> edit(@Validated @RequestBody PgSchool school) {
return toAjax(schoolService.update(school));
}
@SaCheckPermission("business:school:remove")
@Log(title = "学校管理", businessType = BusinessType.DELETE)
@DeleteMapping("/{schoolIds}")
public R<Void> remove(@PathVariable Long[] schoolIds) {
return toAjax(schoolService.deleteByIds(schoolIds));
}
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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<PgSchoolClass, PgSchoolClass> {
}

View File

@ -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<PgSchoolGrade, PgSchoolGrade> {
}

View File

@ -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<PgSchool, PgSchool> {
}

View File

@ -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<PgSchool> selectPageList(PgSchool school, PageQuery pageQuery);
List<PgSchool> selectList(PgSchool school);
PgSchool selectById(Long schoolId);
int insert(PgSchool school);
int update(PgSchool school);
int deleteByIds(Long[] schoolIds);
}

View File

@ -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<PgSchool> selectPageList(PgSchool school, PageQuery pageQuery) {
LambdaQueryWrapper<PgSchool> lqw = buildQueryWrapper(school);
Page<PgSchool> page = baseMapper.selectPage(pageQuery.build(), lqw);
return TableDataInfo.build(page);
}
@Override
public List<PgSchool> 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<PgSchool> buildQueryWrapper(PgSchool school) {
LambdaQueryWrapper<PgSchool> 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;
}
}

View File

@ -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<PgStudent> list(PgStudent student, PageQuery pageQuery) {
return studentService.selectPageList(student, pageQuery);
}
@SaCheckPermission("business:student:query")
@GetMapping("/{studentId}")
public R<PgStudent> getInfo(@PathVariable Long studentId) {
return R.ok(studentService.selectById(studentId));
}
@SaCheckPermission("business:student:add")
@Log(title = "学生管理", businessType = BusinessType.INSERT)
@PostMapping
public R<Void> add(@Validated @RequestBody PgStudent student) {
return toAjax(studentService.insert(student));
}
@SaCheckPermission("business:student:edit")
@Log(title = "学生管理", businessType = BusinessType.UPDATE)
@PutMapping
public R<Void> edit(@Validated @RequestBody PgStudent student) {
return toAjax(studentService.update(student));
}
@SaCheckPermission("business:student:remove")
@Log(title = "学生管理", businessType = BusinessType.DELETE)
@DeleteMapping("/{studentIds}")
public R<Void> remove(@PathVariable Long[] studentIds) {
return toAjax(studentService.deleteByIds(studentIds));
}
}

View File

@ -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;
}

View File

@ -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<PgStudent, PgStudent> {
}

View File

@ -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<PgStudent> selectPageList(PgStudent student, PageQuery pageQuery);
List<PgStudent> selectList(PgStudent student);
PgStudent selectById(Long studentId);
int insert(PgStudent student);
int update(PgStudent student);
int deleteByIds(Long[] studentIds);
}

View File

@ -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<PgStudent> selectPageList(PgStudent student, PageQuery pageQuery) {
LambdaQueryWrapper<PgStudent> lqw = buildQueryWrapper(student);
Page<PgStudent> page = baseMapper.selectPage(pageQuery.build(), lqw);
return TableDataInfo.build(page);
}
@Override
public List<PgStudent> 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<PgStudent> buildQueryWrapper(PgStudent student) {
LambdaQueryWrapper<PgStudent> 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;
}
}

View File

@ -15,6 +15,7 @@
<module>ruoyi-job</module>
<module>ruoyi-system</module>
<module>ruoyi-workflow</module>
<module>pangu-business</module>
</modules>
<artifactId>ruoyi-modules</artifactId>