From 590f4e07af615abe48a502311161a1c982f3f4c3 Mon Sep 17 00:00:00 2001
From: 疯狂的狮子li <15040126243@163.com>
Date: 星期五, 14 五月 2021 21:12:59 +0800
Subject: [PATCH] !34 同步dev分支 Merge pull request !34 from 疯狂的狮子li/dev

---
 ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDeptMapper.java                   |    4 
 ruoyi-generator/src/main/resources/vm/java/serviceImpl.java.vm                          |   63 -
 ruoyi-quartz/src/main/java/com/ruoyi/quartz/service/impl/SysJobLogServiceImpl.java      |   19 
 ruoyi-generator/src/main/resources/vm/java/addBo.java.vm                                |    6 
 ruoyi-quartz/src/main/java/com/ruoyi/quartz/service/impl/SysJobServiceImpl.java         |   12 
 ruoyi-generator/src/main/java/com/ruoyi/generator/controller/GenController.java         |   38 
 ruoyi-quartz/pom.xml                                                                    |    4 
 ruoyi-ui/package.json                                                                   |    2 
 ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDictTypeMapper.java               |    4 
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictDataServiceImpl.java    |   15 
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/monitor/SysUserOnlineController.java |    3 
 ruoyi-generator/src/main/resources/vm/java/controller.java.vm                           |   31 
 ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java                   |    9 
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictTypeServiceImpl.java    |   18 
 ruoyi-system/src/main/resources/mapper/system/SysRoleMapper.xml                         |   23 
 ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysLogininforMapper.java             |    4 
 ruoyi-common/src/main/java/com/ruoyi/common/core/page/BaseMapperPlus.java               |   12 
 ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysRoleMapper.java                   |    8 
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysConfigServiceImpl.java      |   38 
 ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserPostMapper.java               |    4 
 ruoyi-system/src/main/java/com/ruoyi/system/service/ISysLogininforService.java          |    9 
 ruoyi-generator/src/main/resources/vm/java/service.java.vm                              |   13 
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysConfigController.java      |   22 
 ruoyi-admin/src/main/resources/application.yml                                          |  138 ++-
 ruoyi-quartz/src/main/java/com/ruoyi/quartz/mapper/SysJobLogMapper.java                 |    4 
 README.md                                                                               |   68 +
 ruoyi-admin/src/main/resources/application-prod.yml                                     |  152 ++--
 ruoyi-quartz/src/main/java/com/ruoyi/quartz/service/ISysJobLogService.java              |    9 
 ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysConfigMapper.java                 |    4 
 ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysPostMapper.java                   |    4 
 ruoyi-generator/src/main/java/com/ruoyi/generator/service/IGenTableService.java         |   12 
 ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDictDataService.java            |    9 
 ruoyi-system/src/main/java/com/ruoyi/system/service/ISysNoticeService.java              |    9 
 ruoyi-admin/src/main/resources/application-dev.yml                                      |  152 ++--
 ruoyi-generator/src/main/resources/vm/java/editBo.java.vm                               |    6 
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysNoticeServiceImpl.java      |   11 
 ruoyi-quartz/src/main/java/com/ruoyi/quartz/controller/SysJobLogController.java         |   17 
 ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysMenuMapper.java                   |    4 
 ruoyi-common/src/main/java/com/ruoyi/common/core/page/PagePlus.java                     |  128 ++++
 ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml                         |   29 
 ruoyi-quartz/src/main/java/com/ruoyi/quartz/mapper/SysJobMapper.java                    |    4 
 ruoyi-ui/src/views/index.vue                                                            |   48 +
 ruoyi-quartz/src/main/java/com/ruoyi/quartz/service/ISysJobService.java                 |    7 
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysLogininforServiceImpl.java  |   19 
 ruoyi-generator/src/main/java/com/ruoyi/generator/mapper/GenTableMapper.java            |   12 
 ruoyi-system/src/main/java/com/ruoyi/system/service/ISysOperLogService.java             |    8 
 pom.xml                                                                                 |   19 
 ruoyi-common/src/main/java/com/ruoyi/common/core/page/TableDataInfo.java                |    5 
 ruoyi-system/src/main/java/com/ruoyi/system/service/ISysPostService.java                |    9 
 ruoyi-generator/src/main/java/com/ruoyi/generator/service/GenTableServiceImpl.java      |   12 
 ruoyi-generator/src/main/resources/vm/java/queryBo.java.vm                              |    3 
 ruoyi-system/src/main/java/com/ruoyi/system/service/ISysConfigService.java              |    9 
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysDictDataController.java    |    4 
 ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDictTypeService.java            |    9 
 ruoyi-quartz/src/main/java/com/ruoyi/quartz/config/ScheduleConfig.java                  |   50 -
 ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java                |    9 
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysPostServiceImpl.java        |   11 
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysOperLogServiceImpl.java     |   27 
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java        |    4 
 ruoyi-common/src/main/java/com/ruoyi/common/core/page/IServicePlus.java                 |  126 +++
 ruoyi-common/src/main/java/com/ruoyi/common/utils/PageUtils.java                        |  101 +++
 ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysNoticeMapper.java                 |    4 
 ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysRoleMenuMapper.java               |    4 
 ruoyi-framework/pom.xml                                                                 |    6 
 ruoyi-generator/src/main/java/com/ruoyi/generator/mapper/GenTableColumnMapper.java      |    4 
 ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDeptService.java                |    4 
 ruoyi-quartz/src/main/java/com/ruoyi/quartz/controller/SysJobController.java            |   22 
 ruoyi-generator/src/main/java/com/ruoyi/generator/service/IGenTableColumnService.java   |    4 
 ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDictDataMapper.java               |    4 
 ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserRoleMapper.java               |    4 
 ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysRoleDeptMapper.java               |    4 
 ruoyi-common/pom.xml                                                                    |    6 
 ruoyi-generator/src/main/resources/vm/java/mapper.java.vm                               |    4 
 /dev/null                                                                               |   49 -
 ruoyi-system/src/main/java/com/ruoyi/system/service/ISysRoleService.java                |    9 
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java        |    8 
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysRoleController.java        |    4 
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysDictTypeController.java    |   22 
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysPostController.java        |    4 
 ruoyi-common/src/main/java/com/ruoyi/common/core/controller/BaseController.java         |   38 -
 ruoyi-system/src/main/java/com/ruoyi/system/service/ISysMenuService.java                |    4 
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/monitor/SysOperlogController.java    |   17 
 ruoyi-generator/src/main/resources/mapper/generator/GenTableMapper.xml                  |   42 +
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysRoleServiceImpl.java        |    9 
 ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysOperLogMapper.java                |    4 
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/monitor/SysLogininforController.java |   17 
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysNoticeController.java      |    4 
 87 files changed, 1,261 insertions(+), 653 deletions(-)

diff --git a/README.md b/README.md
index e023751..277f48d 100644
--- a/README.md
+++ b/README.md
@@ -1,36 +1,52 @@
+## 骞冲彴绠�浠�
+
+鍩轰簬 RuoYi-Vue 闆嗘垚 Mybatis-Plus Lombok Hutool 绛変究鎹峰紑鍙戝伐鍏� 閫傞厤閲嶅啓鐩稿叧涓氬姟 渚夸簬寮�鍙� 瀹氭湡涓� RuoYi-Vue 鍚屾
+* 鍓嶇寮�鍙戞鏋� Vue銆丒lement UI
+* 鍚庣寮�鍙戞鏋� Spring Boot銆丷edis
+* 瀹瑰櫒妗嗘灦 Undertow 鍩轰簬 Netty 鐨勯珮鎬ц兘瀹瑰櫒
+* 鏉冮檺璁よ瘉妗嗘灦 Spring Security銆丣wt锛屾敮鎸佸缁堢璁よ瘉绯荤粺
+* 鍏崇郴鏁版嵁搴� MySQL 閫傞厤 8.X 
+* 缂撳瓨鏁版嵁搴� Redis 閫傞厤 6.X
+* 鏁版嵁搴撳紑鍙戞鏋� Mybatis-Plus 蹇�� CRUD 澧炲姞寮�鍙戞晥鐜� 鎻掍欢鍖栨敮鎸佸悇绫婚渶姹�
+* 缃戠粶妗嗘灦 Feign銆丱kHttp3 鎺ュ彛鍖栫鐞� HTTP 璇锋眰
+* 宸ュ叿绫绘鏋� Hutool銆丩ombok 鍑忓皯浠g爜鍐椾綑 澧炲姞瀹夊叏鎬�
+* 鐩戞帶妗嗘灦 spring-boot-admin 鍏ㄦ柟浣嶆湇鍔$洃鎺�
+* 鏍¢獙妗嗘灦 validation 澧炲己鎺ュ彛瀹夊叏鎬� 涓ヨ皑鎬�
+* 鏂囨。妗嗘灦 knife4j 缇庡寲鎺ュ彛鏂囨。
+* 浠g爜鐢熸垚鍣� 涓�閿敓鎴愬墠鍚庣浠g爜
+
 ## 淇敼RuoYi鍔熻兘
 
-* ORM妗嗘灦 浣跨敤 Mybatis-Plus 绠�鍖朇RUD (鐩墠鏀寔鍗曡〃鐢熸垚涓庢爲琛� 涓嶆敮鎸佷富瀛愯〃)
+### 渚濊禆鏀瑰姩
+
+* ORM妗嗘灦 浣跨敤 Mybatis-Plus 3.4.2 绠�鍖朇RUD (涓嶆敮鎸佷富瀛愯〃)
 * Bean绠�鍖� 浣跨敤 Lombok 绠�鍖� get set toString 绛夌瓑
 * 瀹瑰櫒鏀瑰姩 Tomcat 鏀逛负 骞跺彂鎬ц兘鏇村ソ鐨� undertow
-* 鎵�鏈夊師鐢熷姛鑳戒娇鐢� Mybatis-Plus 涓� Lombok 閲嶅啓
-* 浠g爜鐢熸垚妯℃澘 鏀逛负閫傞厤 Mybatis-Plus 鐨勪唬鐮�
-* 浠g爜鐢熸垚妯℃澘 鎷嗗垎鍑篤o,QueryBo,AddBo,EditBo绛夐鍩熷璞�
-* 椤圭洰淇敼涓� maven澶氱幆澧冮厤缃�
-* 椤圭洰閰嶇疆淇敼涓� application.yml 缁熶竴绠$悊
-* swagger 淇敼涓� knife4j
+* 鍒嗛〉绉婚櫎 pagehelper 鏀逛负 Mybatis-Plus 鍒嗛〉
+* 鍗囩骇 swagger 涓� knife4j
 * 闆嗘垚 Hutool 5.X 骞堕噸鍐橰uoYi閮ㄥ垎鍔熻兘
 * 闆嗘垚 Feign 鎺ュ彛鍖栫鐞� Http 璇锋眰(濡備笁鏂硅姹� 鏀粯,鐭俊,鎺ㄩ�佺瓑)
 * 闆嗘垚 spring-boot-admin 鍏ㄦ柟浣嶇洃鎺�
-* 鍗囩骇MybatisPlus 3.4.2
-* 澧炲姞demo妯″潡绀轰緥(缁欎笉浼氬鍔犳ā鍧楃殑灏忎紮浼村仛鍙傝��)
-* 鍚屾鍗囩骇 3.4.0
-* 鍗曟ā鍧� fast 鍒嗘敮 https://gitee.com/JavaLionLi/RuoYi-Vue-Plus/tree/fast/
+* 澧炲姞 demo 妯″潡绀轰緥(缁欎笉浼氬鍔犳ā鍧楃殑灏忎紮浼村仛鍙傝��)
 
-## 鍏虫敞浣滆��(鎵爜鍔犵兢)
+### 浠g爜鏀瑰姩
+
+* 鎵�鏈夊師鐢熷姛鑳戒娇鐢� Mybatis-Plus 涓� Lombok 閲嶅啓
+* 澧炲姞 IServicePlus 涓� BaseMapperPlus 鍙嚜瀹氫箟閫氱敤鏂规硶
+* 浠g爜鐢熸垚妯℃澘 鏀逛负閫傞厤 Mybatis-Plus 鐨勪唬鐮�
+* 浠g爜鐢熸垚妯℃澘 鎷嗗垎鍑� Vo,QueryBo,AddBo,EditBo 绛夐鍩熷璞�
+* 浠g爜鐢熸垚妯℃澘 澧炲姞 鏂囨。娉ㄨВ 涓� 鏍¢獙娉ㄨВ 绠�鍖栭�氱敤鎿嶄綔
+* 椤圭洰淇敼涓� maven澶氱幆澧冮厤缃�
+* 椤圭洰閰嶇疆淇敼涓� application.yml 缁熶竴绠$悊
+
+### 鍏朵粬
+
+* 鍚屾鍗囩骇 RuoYi-Vue 3.4.0
+* 鍗曟ā鍧� fast 鍒嗘敮 [RuoYi-Vue-Plus-fast](https://gitee.com/JavaLionLi/RuoYi-Vue-Plus/tree/fast/)
+
+## 鍏虫敞浣滆��(鎵爜璇峰娉�: "鍔犵兢")
+
 ![](https://images.gitee.com/uploads/images/2021/0508/235345_5503356a_1766278.jpeg)
-
-## 骞冲彴绠�浠�
-
-鑻ヤ緷鏄竴濂楀叏閮ㄥ紑婧愮殑蹇�熷紑鍙戝钩鍙帮紝姣棤淇濈暀缁欎釜浜哄強浼佷笟鍏嶈垂浣跨敤銆�
-
-* 鍓嶇閲囩敤Vue銆丒lement UI銆�
-* 鍚庣閲囩敤Spring Boot銆丼pring Security銆丷edis & Jwt銆�
-* 鏉冮檺璁よ瘉浣跨敤Jwt锛屾敮鎸佸缁堢璁よ瘉绯荤粺銆�
-* 鏀寔鍔犺浇鍔ㄦ�佹潈闄愯彍鍗曪紝澶氭柟寮忚交鏉炬潈闄愭帶鍒躲��
-* 楂樻晥鐜囧紑鍙戯紝浣跨敤浠g爜鐢熸垚鍣ㄥ彲浠ヤ竴閿敓鎴愬墠鍚庣浠g爜銆�
-* 鎻愪緵浜嗗崟搴旂敤鐗堟湰[RuoYi-Vue-fast](https://github.com/yangzongzhuan/RuoYi-Vue-fast)锛孫racle鐗堟湰[RuoYi-Vue-Oracle](https://github.com/yangzongzhuan/RuoYi-Vue-Oracle)锛屼繚鎸佸悓姝ユ洿鏂般��
-* 涓嶅垎绂荤増鏈紝璇风Щ姝RuoYi](https://gitee.com/y_project/RuoYi)锛屽井鏈嶅姟鐗堟湰锛岃绉绘[RuoYi-Cloud](https://gitee.com/y_project/RuoYi-Cloud)
 
 ## 閲嶇偣娉ㄦ剰浜嬮」
 
@@ -51,6 +67,10 @@
 * 鐩存帴鍦╩ysql琛ㄤ腑 娣诲姞 parentId orderNum 绛夊瓧娈�(鏍规嵁闇�瑕佸弬鑰� TreeEntity绫�)
 * 浠g爜鐢熸垚閫夋嫨鏍戣〃鐢熸垚鍗冲彲
 
+鍏充簬鏁版嵁鏉冮檺
+* 鍙傝�冿紙鐢ㄦ埛锛岃鑹诧紝閮ㄩ棬锛夊垪琛ㄦ帴鍙g敤娉�
+* 浠� bo.getParam().get("dataScope") 鍗冲彲鑾峰彇鏁版嵁鏉冮檺鐢熸垚鐨凷QL
+
 鍏充簬vue涓巄oot鏁村悎閮ㄧ讲  
 * [鍓嶇闈欐�佽祫婧愬浣曟暣鍚堝埌鍚庣璁块棶](https://doc.ruoyi.vip/ruoyi-vue/other/faq.html#鍓嶇闈欐�佽祫婧愬浣曟暣鍚堝埌鍚庣璁块棶)
 
diff --git a/pom.xml b/pom.xml
index 4b35d5d..3e1b8d6 100644
--- a/pom.xml
+++ b/pom.xml
@@ -13,14 +13,14 @@
     <description>RuoYi-Vue-Plus鍚庡彴绠$悊绯荤粺</description>
     
     <properties>
-        <ruoyi-vue-plus.version>1.0.2</ruoyi-vue-plus.version>
+        <ruoyi-vue-plus.version>2.0.0</ruoyi-vue-plus.version>
+        <spring-boot.version>2.3.10.RELEASE</spring-boot.version>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
         <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
         <java.version>1.8</java.version>
         <maven-jar-plugin.version>3.1.1</maven-jar-plugin.version>
         <druid.version>1.2.4</druid.version>
         <knife4j.version>2.0.8</knife4j.version>
-        <pagehelper.boot.version>1.3.0</pagehelper.boot.version>
         <fastjson.version>1.2.75</fastjson.version>
         <oshi.version>5.6.0</oshi.version>
         <jna.version>5.7.0</jna.version>
@@ -42,7 +42,7 @@
             <dependency>
                 <groupId>org.springframework.boot</groupId>
                 <artifactId>spring-boot-dependencies</artifactId>
-                <version>2.2.13.RELEASE</version>
+                <version>${spring-boot.version}</version>
                 <type>pom</type>
                 <scope>import</scope>
             </dependency>
@@ -52,19 +52,6 @@
                 <groupId>com.alibaba</groupId>
                 <artifactId>druid-spring-boot-starter</artifactId>
                 <version>${druid.version}</version>
-            </dependency>
-
-            <!-- pagehelper 鍒嗛〉鎻掍欢 -->
-            <dependency>
-                <groupId>com.github.pagehelper</groupId>
-                <artifactId>pagehelper-spring-boot-starter</artifactId>
-                <version>${pagehelper.boot.version}</version>
-                <exclusions>
-                    <exclusion>
-                        <groupId>org.mybatis</groupId>
-                        <artifactId>mybatis</artifactId>
-                    </exclusion>
-                </exclusions>
             </dependency>
 
             <!-- 鑾峰彇绯荤粺淇℃伅 -->
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/monitor/SysLogininforController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/monitor/SysLogininforController.java
index 339f242..2bb0b13 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/monitor/SysLogininforController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/monitor/SysLogininforController.java
@@ -1,13 +1,5 @@
 package com.ruoyi.web.controller.monitor;
 
-import java.util.List;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.web.bind.annotation.DeleteMapping;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
 import com.ruoyi.common.annotation.Log;
 import com.ruoyi.common.core.controller.BaseController;
 import com.ruoyi.common.core.domain.AjaxResult;
@@ -16,6 +8,11 @@
 import com.ruoyi.common.utils.poi.ExcelUtil;
 import com.ruoyi.system.domain.SysLogininfor;
 import com.ruoyi.system.service.ISysLogininforService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
 
 /**
  * 绯荤粺璁块棶璁板綍
@@ -33,9 +30,7 @@
     @GetMapping("/list")
     public TableDataInfo list(SysLogininfor logininfor)
     {
-        startPage();
-        List<SysLogininfor> list = logininforService.selectLogininforList(logininfor);
-        return getDataTable(list);
+        return logininforService.selectPageLogininforList(logininfor);
     }
 
     @Log(title = "鐧诲綍鏃ュ織", businessType = BusinessType.EXPORT)
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/monitor/SysOperlogController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/monitor/SysOperlogController.java
index 1d7eb02..97f9920 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/monitor/SysOperlogController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/monitor/SysOperlogController.java
@@ -1,13 +1,5 @@
 package com.ruoyi.web.controller.monitor;
 
-import java.util.List;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.web.bind.annotation.DeleteMapping;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
 import com.ruoyi.common.annotation.Log;
 import com.ruoyi.common.core.controller.BaseController;
 import com.ruoyi.common.core.domain.AjaxResult;
@@ -16,6 +8,11 @@
 import com.ruoyi.common.utils.poi.ExcelUtil;
 import com.ruoyi.system.domain.SysOperLog;
 import com.ruoyi.system.service.ISysOperLogService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
 
 /**
  * 鎿嶄綔鏃ュ織璁板綍
@@ -33,9 +30,7 @@
     @GetMapping("/list")
     public TableDataInfo list(SysOperLog operLog)
     {
-        startPage();
-        List<SysOperLog> list = operLogService.selectOperLogList(operLog);
-        return getDataTable(list);
+        return operLogService.selectPageOperLogList(operLog);
     }
 
     @Log(title = "鎿嶄綔鏃ュ織", businessType = BusinessType.EXPORT)
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/monitor/SysUserOnlineController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/monitor/SysUserOnlineController.java
index 8c06d01..fe630a9 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/monitor/SysUserOnlineController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/monitor/SysUserOnlineController.java
@@ -10,6 +10,7 @@
 import com.ruoyi.common.core.page.TableDataInfo;
 import com.ruoyi.common.core.redis.RedisCache;
 import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.common.utils.PageUtils;
 import com.ruoyi.system.domain.SysUserOnline;
 import com.ruoyi.system.service.ISysUserOnlineService;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -73,7 +74,7 @@
         }
         Collections.reverse(userOnlineList);
         userOnlineList.removeAll(Collections.singleton(null));
-        return getDataTable(userOnlineList);
+        return PageUtils.buildDataInfo(userOnlineList);
     }
 
     /**
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysConfigController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysConfigController.java
index fb39a33..d26de0a 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysConfigController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysConfigController.java
@@ -1,17 +1,5 @@
 package com.ruoyi.web.controller.system;
 
-import java.util.List;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.DeleteMapping;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.PutMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
 import com.ruoyi.common.annotation.Log;
 import com.ruoyi.common.annotation.RepeatSubmit;
 import com.ruoyi.common.constant.UserConstants;
@@ -23,6 +11,12 @@
 import com.ruoyi.common.utils.poi.ExcelUtil;
 import com.ruoyi.system.domain.SysConfig;
 import com.ruoyi.system.service.ISysConfigService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
 
 /**
  * 鍙傛暟閰嶇疆 淇℃伅鎿嶄綔澶勭悊
@@ -43,9 +37,7 @@
     @GetMapping("/list")
     public TableDataInfo list(SysConfig config)
     {
-        startPage();
-        List<SysConfig> list = configService.selectConfigList(config);
-        return getDataTable(list);
+        return configService.selectPageConfigList(config);
     }
 
     @Log(title = "鍙傛暟绠$悊", businessType = BusinessType.EXPORT)
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysDictDataController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysDictDataController.java
index 7fbd05c..157030f 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysDictDataController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysDictDataController.java
@@ -38,9 +38,7 @@
     @GetMapping("/list")
     public TableDataInfo list(SysDictData dictData)
     {
-        startPage();
-        List<SysDictData> list = dictDataService.selectDictDataList(dictData);
-        return getDataTable(list);
+        return dictDataService.selectPageDictDataList(dictData);
     }
 
     @Log(title = "瀛楀吀鏁版嵁", businessType = BusinessType.EXPORT)
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysDictTypeController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysDictTypeController.java
index a4e0b2b..306b6f2 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysDictTypeController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysDictTypeController.java
@@ -1,17 +1,5 @@
 package com.ruoyi.web.controller.system;
 
-import java.util.List;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.DeleteMapping;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.PutMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
 import com.ruoyi.common.annotation.Log;
 import com.ruoyi.common.constant.UserConstants;
 import com.ruoyi.common.core.controller.BaseController;
@@ -22,6 +10,12 @@
 import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.common.utils.poi.ExcelUtil;
 import com.ruoyi.system.service.ISysDictTypeService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
 
 /**
  * 鏁版嵁瀛楀吀淇℃伅
@@ -39,9 +33,7 @@
     @GetMapping("/list")
     public TableDataInfo list(SysDictType dictType)
     {
-        startPage();
-        List<SysDictType> list = dictTypeService.selectDictTypeList(dictType);
-        return getDataTable(list);
+        return dictTypeService.selectPageDictTypeList(dictType);
     }
 
     @Log(title = "瀛楀吀绫诲瀷", businessType = BusinessType.EXPORT)
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysNoticeController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysNoticeController.java
index 224e594..48d1e08 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysNoticeController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysNoticeController.java
@@ -40,9 +40,7 @@
     @GetMapping("/list")
     public TableDataInfo list(SysNotice notice)
     {
-        startPage();
-        List<SysNotice> list = noticeService.selectNoticeList(notice);
-        return getDataTable(list);
+        return noticeService.selectPageNoticeList(notice);
     }
 
     /**
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysPostController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysPostController.java
index 0c73ea8..b63c155 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysPostController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysPostController.java
@@ -42,9 +42,7 @@
     @GetMapping("/list")
     public TableDataInfo list(SysPost post)
     {
-        startPage();
-        List<SysPost> list = postService.selectPostList(post);
-        return getDataTable(list);
+        return postService.selectPagePostList(post);
     }
     
     @Log(title = "宀椾綅绠$悊", businessType = BusinessType.EXPORT)
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysRoleController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysRoleController.java
index 4d0d165..70e640e 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysRoleController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysRoleController.java
@@ -48,9 +48,7 @@
     @GetMapping("/list")
     public TableDataInfo list(SysRole role)
     {
-        startPage();
-        List<SysRole> list = roleService.selectRoleList(role);
-        return getDataTable(list);
+        return roleService.selectPageRoleList(role);
     }
 
     @Log(title = "瑙掕壊绠$悊", businessType = BusinessType.EXPORT)
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java
index 6a88484..7e74399 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java
@@ -54,9 +54,7 @@
     @GetMapping("/list")
     public TableDataInfo list(SysUser user)
     {
-        startPage();
-        List<SysUser> list = userService.selectUserList(user);
-        return getDataTable(list);
+        return userService.selectPageUserList(user);
     }
 
     @Log(title = "鐢ㄦ埛绠$悊", businessType = BusinessType.EXPORT)
diff --git a/ruoyi-admin/src/main/resources/application-dev.yml b/ruoyi-admin/src/main/resources/application-dev.yml
index 65f8805..e16a18d 100644
--- a/ruoyi-admin/src/main/resources/application-dev.yml
+++ b/ruoyi-admin/src/main/resources/application-dev.yml
@@ -1,79 +1,79 @@
 # 鏁版嵁婧愰厤缃�
 spring:
-    datasource:
-        type: com.alibaba.druid.pool.DruidDataSource
-        driverClassName: com.mysql.cj.jdbc.Driver
-        druid:
-            # 涓诲簱鏁版嵁婧�
-            master:
-                url: jdbc:mysql://192.168.0.222:3306/ry-vue?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true
-                username: root
-                password: root
-            # 浠庡簱鏁版嵁婧�
-            slave:
-                # 浠庢暟鎹簮寮�鍏�/榛樿鍏抽棴
-                enabled: false
-                url: 
-                username: 
-                password: 
-            # 鍒濆杩炴帴鏁�
-            initialSize: 5
-            # 鏈�灏忚繛鎺ユ睜鏁伴噺
-            minIdle: 10
-            # 鏈�澶ц繛鎺ユ睜鏁伴噺
-            maxActive: 20
-            # 閰嶇疆鑾峰彇杩炴帴绛夊緟瓒呮椂鐨勬椂闂�
-            maxWait: 60000
-            # 閰嶇疆闂撮殧澶氫箙鎵嶈繘琛屼竴娆℃娴嬶紝妫�娴嬮渶瑕佸叧闂殑绌洪棽杩炴帴锛屽崟浣嶆槸姣
-            timeBetweenEvictionRunsMillis: 60000
-            # 閰嶇疆涓�涓繛鎺ュ湪姹犱腑鏈�灏忕敓瀛樼殑鏃堕棿锛屽崟浣嶆槸姣
-            minEvictableIdleTimeMillis: 300000
-            # 閰嶇疆涓�涓繛鎺ュ湪姹犱腑鏈�澶х敓瀛樼殑鏃堕棿锛屽崟浣嶆槸姣
-            maxEvictableIdleTimeMillis: 900000
-            # 閰嶇疆妫�娴嬭繛鎺ユ槸鍚︽湁鏁�
-            validationQuery: SELECT 1 FROM DUAL
-            testWhileIdle: true
-            testOnBorrow: false
-            testOnReturn: false
-            webStatFilter: 
-                enabled: true
-            statViewServlet:
-                enabled: true
-                # 璁剧疆鐧藉悕鍗曪紝涓嶅~鍒欏厑璁告墍鏈夎闂�
-                allow:
-                url-pattern: /druid/*
-                # 鎺у埗鍙扮鐞嗙敤鎴峰悕鍜屽瘑鐮�
-                login-username: ruoyi
-                login-password: 123456
-            filter:
-                stat:
-                    enabled: true
-                    # 鎱QL璁板綍
-                    log-slow-sql: true
-                    slow-sql-millis: 1000
-                    merge-sql: true
-                wall:
-                    config:
-                        multi-statement-allow: true
-    # redis 閰嶇疆
-    redis:
-        # 鍦板潃
-        host: 192.168.0.222
-        # 绔彛锛岄粯璁や负6379
-        port: 6379
-        # 鏁版嵁搴撶储寮�
-        database: 0
-        # 瀵嗙爜
+  datasource:
+    type: com.alibaba.druid.pool.DruidDataSource
+    driverClassName: com.mysql.cj.jdbc.Driver
+    druid:
+      # 涓诲簱鏁版嵁婧�
+      master:
+        url: jdbc:mysql://localhost:3306/ry-vue?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true
+        username: root
+        password: root
+      # 浠庡簱鏁版嵁婧�
+      slave:
+        # 浠庢暟鎹簮寮�鍏�/榛樿鍏抽棴
+        enabled: false
+        url:
+        username:
         password:
-        # 杩炴帴瓒呮椂鏃堕棿
-        timeout: 10s
-        lettuce:
-            pool:
-                # 杩炴帴姹犱腑鐨勬渶灏忕┖闂茶繛鎺�
-                min-idle: 0
-                # 杩炴帴姹犱腑鐨勬渶澶х┖闂茶繛鎺�
-                max-idle: 8
-                # 杩炴帴姹犵殑鏈�澶ф暟鎹簱杩炴帴鏁�
-                max-active: 8
-                # #杩炴帴姹犳渶澶ч樆濉炵瓑寰呮椂闂达紙浣跨敤璐熷�艰〃绀烘病鏈夐檺鍒讹級
-                max-wait: -1ms
\ No newline at end of file
+      # 鍒濆杩炴帴鏁�
+      initialSize: 5
+      # 鏈�灏忚繛鎺ユ睜鏁伴噺
+      minIdle: 10
+      # 鏈�澶ц繛鎺ユ睜鏁伴噺
+      maxActive: 20
+      # 閰嶇疆鑾峰彇杩炴帴绛夊緟瓒呮椂鐨勬椂闂�
+      maxWait: 60000
+      # 閰嶇疆闂撮殧澶氫箙鎵嶈繘琛屼竴娆℃娴嬶紝妫�娴嬮渶瑕佸叧闂殑绌洪棽杩炴帴锛屽崟浣嶆槸姣
+      timeBetweenEvictionRunsMillis: 60000
+      # 閰嶇疆涓�涓繛鎺ュ湪姹犱腑鏈�灏忕敓瀛樼殑鏃堕棿锛屽崟浣嶆槸姣
+      minEvictableIdleTimeMillis: 300000
+      # 閰嶇疆涓�涓繛鎺ュ湪姹犱腑鏈�澶х敓瀛樼殑鏃堕棿锛屽崟浣嶆槸姣
+      maxEvictableIdleTimeMillis: 900000
+      # 閰嶇疆妫�娴嬭繛鎺ユ槸鍚︽湁鏁�
+      validationQuery: SELECT 1 FROM DUAL
+      testWhileIdle: true
+      testOnBorrow: false
+      testOnReturn: false
+      webStatFilter:
+        enabled: true
+      statViewServlet:
+        enabled: true
+        # 璁剧疆鐧藉悕鍗曪紝涓嶅~鍒欏厑璁告墍鏈夎闂�
+        allow:
+        url-pattern: /druid/*
+        # 鎺у埗鍙扮鐞嗙敤鎴峰悕鍜屽瘑鐮�
+        login-username: ruoyi
+        login-password: 123456
+      filter:
+        stat:
+          enabled: true
+          # 鎱QL璁板綍
+          log-slow-sql: true
+          slow-sql-millis: 1000
+          merge-sql: true
+        wall:
+          config:
+            multi-statement-allow: true
+  # redis 閰嶇疆
+  redis:
+    # 鍦板潃
+    host: localhost
+    # 绔彛锛岄粯璁や负6379
+    port: 6379
+    # 鏁版嵁搴撶储寮�
+    database: 0
+    # 瀵嗙爜
+    password:
+    # 杩炴帴瓒呮椂鏃堕棿
+    timeout: 10s
+    lettuce:
+      pool:
+        # 杩炴帴姹犱腑鐨勬渶灏忕┖闂茶繛鎺�
+        min-idle: 0
+        # 杩炴帴姹犱腑鐨勬渶澶х┖闂茶繛鎺�
+        max-idle: 8
+        # 杩炴帴姹犵殑鏈�澶ф暟鎹簱杩炴帴鏁�
+        max-active: 8
+        # #杩炴帴姹犳渶澶ч樆濉炵瓑寰呮椂闂达紙浣跨敤璐熷�艰〃绀烘病鏈夐檺鍒讹級
+        max-wait: -1ms
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/resources/application-prod.yml b/ruoyi-admin/src/main/resources/application-prod.yml
index 8f81bbd..fbd01b3 100644
--- a/ruoyi-admin/src/main/resources/application-prod.yml
+++ b/ruoyi-admin/src/main/resources/application-prod.yml
@@ -1,79 +1,79 @@
 # 鏁版嵁婧愰厤缃�
 spring:
-    datasource:
-        type: com.alibaba.druid.pool.DruidDataSource
-        driverClassName: com.mysql.cj.jdbc.Driver
-        druid:
-            # 涓诲簱鏁版嵁婧�
-            master:
-                url: jdbc:mysql://localhost:3306/ry-vue?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true
-                username: root
-                password: root
-            # 浠庡簱鏁版嵁婧�
-            slave:
-                # 浠庢暟鎹簮寮�鍏�/榛樿鍏抽棴
-                enabled: false
-                url: 
-                username: 
-                password: 
-            # 鍒濆杩炴帴鏁�
-            initialSize: 5
-            # 鏈�灏忚繛鎺ユ睜鏁伴噺
-            minIdle: 10
-            # 鏈�澶ц繛鎺ユ睜鏁伴噺
-            maxActive: 20
-            # 閰嶇疆鑾峰彇杩炴帴绛夊緟瓒呮椂鐨勬椂闂�
-            maxWait: 60000
-            # 閰嶇疆闂撮殧澶氫箙鎵嶈繘琛屼竴娆℃娴嬶紝妫�娴嬮渶瑕佸叧闂殑绌洪棽杩炴帴锛屽崟浣嶆槸姣
-            timeBetweenEvictionRunsMillis: 60000
-            # 閰嶇疆涓�涓繛鎺ュ湪姹犱腑鏈�灏忕敓瀛樼殑鏃堕棿锛屽崟浣嶆槸姣
-            minEvictableIdleTimeMillis: 300000
-            # 閰嶇疆涓�涓繛鎺ュ湪姹犱腑鏈�澶х敓瀛樼殑鏃堕棿锛屽崟浣嶆槸姣
-            maxEvictableIdleTimeMillis: 900000
-            # 閰嶇疆妫�娴嬭繛鎺ユ槸鍚︽湁鏁�
-            validationQuery: SELECT 1 FROM DUAL
-            testWhileIdle: true
-            testOnBorrow: false
-            testOnReturn: false
-            webStatFilter: 
-                enabled: true
-            statViewServlet:
-                enabled: true
-                # 璁剧疆鐧藉悕鍗曪紝涓嶅~鍒欏厑璁告墍鏈夎闂�
-                allow:
-                url-pattern: /druid/*
-                # 鎺у埗鍙扮鐞嗙敤鎴峰悕鍜屽瘑鐮�
-                login-username: ruoyi
-                login-password: 123456
-            filter:
-                stat:
-                    enabled: true
-                    # 鎱QL璁板綍
-                    log-slow-sql: true
-                    slow-sql-millis: 1000
-                    merge-sql: true
-                wall:
-                    config:
-                        multi-statement-allow: true
-    # redis 閰嶇疆
-    redis:
-        # 鍦板潃
-        host: 192.168.0.222
-        # 绔彛锛岄粯璁や负6379
-        port: 6379
-        # 鏁版嵁搴撶储寮�
-        database: 0
-        # 瀵嗙爜
+  datasource:
+    type: com.alibaba.druid.pool.DruidDataSource
+    driverClassName: com.mysql.cj.jdbc.Driver
+    druid:
+      # 涓诲簱鏁版嵁婧�
+      master:
+        url: jdbc:mysql://localhost:3306/ry-vue?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true
+        username: root
+        password: root
+      # 浠庡簱鏁版嵁婧�
+      slave:
+        # 浠庢暟鎹簮寮�鍏�/榛樿鍏抽棴
+        enabled: false
+        url:
+        username:
         password:
-        # 杩炴帴瓒呮椂鏃堕棿
-        timeout: 10s
-        lettuce:
-            pool:
-                # 杩炴帴姹犱腑鐨勬渶灏忕┖闂茶繛鎺�
-                min-idle: 0
-                # 杩炴帴姹犱腑鐨勬渶澶х┖闂茶繛鎺�
-                max-idle: 8
-                # 杩炴帴姹犵殑鏈�澶ф暟鎹簱杩炴帴鏁�
-                max-active: 8
-                # #杩炴帴姹犳渶澶ч樆濉炵瓑寰呮椂闂达紙浣跨敤璐熷�艰〃绀烘病鏈夐檺鍒讹級
-                max-wait: -1ms
\ No newline at end of file
+      # 鍒濆杩炴帴鏁�
+      initialSize: 5
+      # 鏈�灏忚繛鎺ユ睜鏁伴噺
+      minIdle: 10
+      # 鏈�澶ц繛鎺ユ睜鏁伴噺
+      maxActive: 20
+      # 閰嶇疆鑾峰彇杩炴帴绛夊緟瓒呮椂鐨勬椂闂�
+      maxWait: 60000
+      # 閰嶇疆闂撮殧澶氫箙鎵嶈繘琛屼竴娆℃娴嬶紝妫�娴嬮渶瑕佸叧闂殑绌洪棽杩炴帴锛屽崟浣嶆槸姣
+      timeBetweenEvictionRunsMillis: 60000
+      # 閰嶇疆涓�涓繛鎺ュ湪姹犱腑鏈�灏忕敓瀛樼殑鏃堕棿锛屽崟浣嶆槸姣
+      minEvictableIdleTimeMillis: 300000
+      # 閰嶇疆涓�涓繛鎺ュ湪姹犱腑鏈�澶х敓瀛樼殑鏃堕棿锛屽崟浣嶆槸姣
+      maxEvictableIdleTimeMillis: 900000
+      # 閰嶇疆妫�娴嬭繛鎺ユ槸鍚︽湁鏁�
+      validationQuery: SELECT 1 FROM DUAL
+      testWhileIdle: true
+      testOnBorrow: false
+      testOnReturn: false
+      webStatFilter:
+        enabled: true
+      statViewServlet:
+        enabled: true
+        # 璁剧疆鐧藉悕鍗曪紝涓嶅~鍒欏厑璁告墍鏈夎闂�
+        allow:
+        url-pattern: /druid/*
+        # 鎺у埗鍙扮鐞嗙敤鎴峰悕鍜屽瘑鐮�
+        login-username: ruoyi
+        login-password: 123456
+      filter:
+        stat:
+          enabled: true
+          # 鎱QL璁板綍
+          log-slow-sql: true
+          slow-sql-millis: 1000
+          merge-sql: true
+        wall:
+          config:
+            multi-statement-allow: true
+  # redis 閰嶇疆
+  redis:
+    # 鍦板潃
+    host: 192.168.0.222
+    # 绔彛锛岄粯璁や负6379
+    port: 6379
+    # 鏁版嵁搴撶储寮�
+    database: 0
+    # 瀵嗙爜
+    password:
+    # 杩炴帴瓒呮椂鏃堕棿
+    timeout: 10s
+    lettuce:
+      pool:
+        # 杩炴帴姹犱腑鐨勬渶灏忕┖闂茶繛鎺�
+        min-idle: 0
+        # 杩炴帴姹犱腑鐨勬渶澶х┖闂茶繛鎺�
+        max-idle: 8
+        # 杩炴帴姹犵殑鏈�澶ф暟鎹簱杩炴帴鏁�
+        max-active: 8
+        # #杩炴帴姹犳渶澶ч樆濉炵瓑寰呮椂闂达紙浣跨敤璐熷�艰〃绀烘病鏈夐檺鍒讹級
+        max-wait: -1ms
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/resources/application.yml b/ruoyi-admin/src/main/resources/application.yml
index 6ab3030..4f6d876 100644
--- a/ruoyi-admin/src/main/resources/application.yml
+++ b/ruoyi-admin/src/main/resources/application.yml
@@ -37,12 +37,13 @@
     # 浠ヤ笅鐨勯厤缃細褰卞搷buffer,杩欎簺buffer浼氱敤浜庢湇鍔″櫒杩炴帴鐨処O鎿嶄綔,鏈夌偣绫讳技netty鐨勬睜鍖栧唴瀛樼鐞�
     # 姣忓潡buffer鐨勭┖闂村ぇ灏�,瓒婂皬鐨勭┖闂磋鍒╃敤瓒婂厖鍒�
     buffer-size: 512
-    # 璁剧疆IO绾跨▼鏁�, 瀹冧富瑕佹墽琛岄潪闃诲鐨勪换鍔�,瀹冧滑浼氳礋璐e涓繛鎺�, 榛樿璁剧疆姣忎釜CPU鏍稿績涓�涓嚎绋�
-    io-threads: 8
-    # 闃诲浠诲姟绾跨▼姹�, 褰撴墽琛岀被浼約ervlet璇锋眰闃诲鎿嶄綔, undertow浼氫粠杩欎釜绾跨▼姹犱腑鍙栧緱绾跨▼,瀹冪殑鍊艰缃彇鍐充簬绯荤粺鐨勮礋杞�
-    worker-threads: 256
     # 鏄惁鍒嗛厤鐨勭洿鎺ュ唴瀛�
     direct-buffers: true
+    threads:
+      # 璁剧疆IO绾跨▼鏁�, 瀹冧富瑕佹墽琛岄潪闃诲鐨勪换鍔�,瀹冧滑浼氳礋璐e涓繛鎺�, 榛樿璁剧疆姣忎釜CPU鏍稿績涓�涓嚎绋�
+      io: 8
+      # 闃诲浠诲姟绾跨▼姹�, 褰撴墽琛岀被浼約ervlet璇锋眰闃诲鎿嶄綔, undertow浼氫粠杩欎釜绾跨▼姹犱腑鍙栧緱绾跨▼,瀹冪殑鍊艰缃彇鍐充簬绯荤粺鐨勮礋杞�
+      worker: 256
 #  # tomcat 閰嶇疆
 #  tomcat:
 #    # tomcat鐨刄RI缂栫爜
@@ -65,15 +66,15 @@
   messages:
     # 鍥介檯鍖栬祫婧愭枃浠惰矾寰�
     basename: i18n/messages
-  profiles: 
+  profiles:
     active: @profiles.active@
   # 鏂囦欢涓婁紶
   servlet:
-     multipart:
-       # 鍗曚釜鏂囦欢澶у皬
-       max-file-size:  10MB
-       # 璁剧疆鎬讳笂浼犵殑鏂囦欢澶у皬
-       max-request-size:  20MB
+    multipart:
+      # 鍗曚釜鏂囦欢澶у皬
+      max-file-size: 10MB
+      # 璁剧疆鎬讳笂浼犵殑鏂囦欢澶у皬
+      max-request-size: 20MB
   # 鏈嶅姟妯″潡
   devtools:
     restart:
@@ -83,44 +84,17 @@
   thymeleaf:
     # 灏嗙郴缁熸ā鏉挎斁缃埌鏈�鍓嶉潰 鍚﹀垯浼氫笌 springboot-admin 椤甸潰鍐茬獊
     template-resolver-order: 1
-  application:
-    name: ruoyi-vue-plus
-  boot:
-    admin:
-      # Spring Boot Admin Client 瀹㈡埛绔殑鐩稿叧閰嶇疆
-      client:
-        # 璁剧疆 Spring Boot Admin Server 鍦板潃
-        url: http://localhost:${server.port}${spring.boot.admin.context-path}
-        instance:
-          prefer-ip: true # 娉ㄥ唽瀹炰緥鏃讹紝浼樺厛浣跨敤 IP
-#        username: ruoyi
-#        password: 123456
-      # Spring Boot Admin Server 鏈嶅姟绔殑鐩稿叧閰嶇疆
-      context-path: /admin # 閰嶇疆 Spring
-
-# Actuator 鐩戞帶绔偣鐨勯厤缃」
-management:
-  endpoints:
-    web:
-      # Actuator 鎻愪緵鐨� API 鎺ュ彛鐨勬牴鐩綍銆傞粯璁や负 /actuator
-      base-path: /actuator
-      exposure:
-        # 闇�瑕佸紑鏀剧殑绔偣銆傞粯璁ゅ�煎彧鎵撳紑 health 鍜� info 涓や釜绔偣銆傞�氳繃璁剧疆 * 锛屽彲浠ュ紑鏀炬墍鏈夌鐐广��
-        include: '*'
-  endpoint:
-    logfile:
-      external-file: ./logs/sys-console.log
 
 # token閰嶇疆
 token:
-    # 浠ょ墝鑷畾涔夋爣璇�
-    header: Authorization
-    # 浠ょ墝瀵嗛挜
-    secret: abcdefghijklmnopqrstuvwxyz
-    # 浠ょ墝鏈夋晥鏈燂紙榛樿30鍒嗛挓锛�
-    expireTime: 30
-  
-# MyBatis閰嶇疆
+  # 浠ょ墝鑷畾涔夋爣璇�
+  header: Authorization
+  # 浠ょ墝瀵嗛挜
+  secret: abcdefghijklmnopqrstuvwxyz
+  # 浠ょ墝鏈夋晥鏈燂紙榛樿30鍒嗛挓锛�
+  expireTime: 30
+
+# MyBatisPlus閰嶇疆
 # https://baomidou.com/config/
 mybatis-plus:
   mapperPackage: com.ruoyi.**.mapper
@@ -209,13 +183,6 @@
       # 瀛楁楠岃瘉绛栫暐涔� select,鍦� select 鐨勬椂鍊欑殑瀛楁楠岃瘉绛栫暐鏃� wrapper 鏍规嵁鍐呴儴 entity 鐢熸垚鐨� where 鏉′欢
       selectStrategy: NOT_EMPTY
 
-# PageHelper鍒嗛〉鎻掍欢
-pagehelper: 
-  helperDialect: mysql
-  reasonable: true
-  supportMethodsArguments: true
-  params: count=countSql 
-
 # Swagger閰嶇疆
 swagger:
   # 鏄惁寮�鍚痵wagger
@@ -230,7 +197,7 @@
   version: '鐗堟湰鍙�: ${ruoyi-vue-plus.version}'
 
 # 闃叉XSS鏀诲嚮
-xss: 
+xss:
   # 杩囨护寮�鍏�
   enabled: true
   # 鎺掗櫎閾炬帴锛堝涓敤閫楀彿鍒嗛殧锛�
@@ -238,6 +205,7 @@
   # 鍖归厤閾炬帴
   urlPatterns: /system/*,/monitor/*,/tool/*
 
+# 鍏ㄥ眬绾跨▼姹犵浉鍏抽厤缃�
 threadPoolConfig:
   # 鏄惁寮�鍚嚎绋嬫睜
   enabled: false
@@ -256,6 +224,7 @@
   # AbortPolicy 涓
   rejectedExecutionHandler: CallerRunsPolicy
 
+# feign 鐩稿叧閰嶇疆
 feign:
   package: com.ruoyi.**.feign
   # 寮�鍚帇缂�
@@ -267,4 +236,65 @@
   okhttp:
     enabled: true
   hystrix:
-    enabled: true
\ No newline at end of file
+    enabled: true
+
+--- # 瀹氭椂浠诲姟閰嶇疆
+spring:
+  quartz:
+    scheduler-name: RuoyiScheduler
+    startup-delay: 1s
+    overwrite-existing-jobs: true
+    auto-startup: true
+    job-store-type: jdbc
+    properties:
+      org:
+        quartz:
+          # Scheduler 鐩稿叧閰嶇疆
+          scheduler:
+            instanceName: RuoyiScheduler
+            instanceId: AUTO
+          # 绾跨▼姹犵浉鍏抽厤缃�
+          threadPool:
+            class: org.quartz.simpl.SimpleThreadPool
+            threadCount: 20
+            threadPriority: 5
+          # JobStore 闆嗙兢閰嶇疆
+          jobStore:
+            class: org.quartz.impl.jdbcjobstore.JobStoreTX
+            isClustered: true
+            clusterCheckinInterval: 15000
+            txIsolationLevelSerializable: true
+            misfireThreshold: 60000
+            tablePrefix: QRTZ_
+            # sqlserver 鍚敤
+            # selectWithLockSQL: SELECT * FROM {0}LOCKS UPDLOCK WHERE LOCK_NAME = ?
+
+--- # 鐩戞帶閰嶇疆
+spring:
+  application:
+    name: ruoyi-vue-plus
+  boot:
+    admin:
+      # Spring Boot Admin Client 瀹㈡埛绔殑鐩稿叧閰嶇疆
+      client:
+        # 璁剧疆 Spring Boot Admin Server 鍦板潃
+        url: http://localhost:${server.port}${spring.boot.admin.context-path}
+        instance:
+          prefer-ip: true # 娉ㄥ唽瀹炰緥鏃讹紝浼樺厛浣跨敤 IP
+      #        username: ruoyi
+      #        password: 123456
+      # Spring Boot Admin Server 鏈嶅姟绔殑鐩稿叧閰嶇疆
+      context-path: /admin # 閰嶇疆 Spring
+
+# Actuator 鐩戞帶绔偣鐨勯厤缃」
+management:
+  endpoints:
+    web:
+      # Actuator 鎻愪緵鐨� API 鎺ュ彛鐨勬牴鐩綍銆傞粯璁や负 /actuator
+      base-path: /actuator
+      exposure:
+        # 闇�瑕佸紑鏀剧殑绔偣銆傞粯璁ゅ�煎彧鎵撳紑 health 鍜� info 涓や釜绔偣銆傞�氳繃璁剧疆 * 锛屽彲浠ュ紑鏀炬墍鏈夌鐐广��
+        include: '*'
+  endpoint:
+    logfile:
+      external-file: ./logs/sys-console.log
\ No newline at end of file
diff --git a/ruoyi-common/pom.xml b/ruoyi-common/pom.xml
index 19f0074..a18e801 100644
--- a/ruoyi-common/pom.xml
+++ b/ruoyi-common/pom.xml
@@ -35,12 +35,6 @@
             <artifactId>spring-boot-starter-security</artifactId>
         </dependency>
 
-        <!-- pagehelper 鍒嗛〉鎻掍欢 -->
-        <dependency>
-            <groupId>com.github.pagehelper</groupId>
-            <artifactId>pagehelper-spring-boot-starter</artifactId>
-        </dependency>
-
         <!-- 鑷畾涔夐獙璇佹敞瑙� -->
         <dependency>
             <groupId>javax.validation</groupId>
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/controller/BaseController.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/controller/BaseController.java
index 516d102..9b37921 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/core/controller/BaseController.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/controller/BaseController.java
@@ -1,16 +1,8 @@
 package com.ruoyi.common.core.controller;
 
-import cn.hutool.core.lang.Validator;
 import cn.hutool.core.util.StrUtil;
-import cn.hutool.http.HttpStatus;
-import com.github.pagehelper.PageHelper;
-import com.github.pagehelper.PageInfo;
 import com.ruoyi.common.core.domain.AjaxResult;
-import com.ruoyi.common.core.page.PageDomain;
-import com.ruoyi.common.core.page.TableDataInfo;
-import com.ruoyi.common.core.page.TableSupport;
 import com.ruoyi.common.utils.DateUtils;
-import com.ruoyi.common.utils.sql.SqlUtil;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.web.bind.WebDataBinder;
@@ -18,7 +10,6 @@
 
 import java.beans.PropertyEditorSupport;
 import java.util.Date;
-import java.util.List;
 
 /**
  * web灞傞�氱敤鏁版嵁澶勭悊
@@ -44,35 +35,6 @@
                 setValue(DateUtils.parseDate(text));
             }
         });
-    }
-
-    /**
-     * 璁剧疆璇锋眰鍒嗛〉鏁版嵁
-     */
-    protected void startPage()
-    {
-        PageDomain pageDomain = TableSupport.buildPageRequest();
-        Integer pageNum = pageDomain.getPageNum();
-        Integer pageSize = pageDomain.getPageSize();
-        if (Validator.isNotNull(pageNum) && Validator.isNotNull(pageSize))
-        {
-            String orderBy = SqlUtil.escapeOrderBySql(pageDomain.getOrderBy());
-            PageHelper.startPage(pageNum, pageSize, orderBy);
-        }
-    }
-
-    /**
-     * 鍝嶅簲璇锋眰鍒嗛〉鏁版嵁
-     */
-    @SuppressWarnings({ "rawtypes", "unchecked" })
-    protected <T> TableDataInfo<T> getDataTable(List<T> list)
-    {
-        TableDataInfo<T> rspData = new TableDataInfo();
-        rspData.setCode(HttpStatus.HTTP_OK);
-        rspData.setMsg("鏌ヨ鎴愬姛");
-        rspData.setRows(list);
-        rspData.setTotal(new PageInfo(list).getTotal());
-        return rspData;
     }
 
     /**
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/page/BaseMapperPlus.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/page/BaseMapperPlus.java
new file mode 100644
index 0000000..ebba1b7
--- /dev/null
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/page/BaseMapperPlus.java
@@ -0,0 +1,12 @@
+package com.ruoyi.common.core.page;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * 鑷畾涔� Mapper 鎺ュ彛, 瀹炵幇 鑷畾涔夋墿灞�
+ *
+ * @author Lion Li
+ * @since 2021-05-13
+ */
+public interface BaseMapperPlus<T> extends BaseMapper<T> {
+}
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/page/IServicePlus.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/page/IServicePlus.java
new file mode 100644
index 0000000..864a38e
--- /dev/null
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/page/IServicePlus.java
@@ -0,0 +1,126 @@
+package com.ruoyi.common.core.page;
+
+import cn.hutool.core.bean.BeanUtil;
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.io.Serializable;
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * 鑷畾涔� Service 鎺ュ彛, 瀹炵幇 鏁版嵁搴撳疄浣撲笌 vo 瀵硅薄杞崲杩斿洖
+ *
+ * @author Lion Li
+ * @since 2021-05-13
+ */
+public interface IServicePlus<T> extends IService<T> {
+
+    /**
+     * 鏍规嵁 ID 鏌ヨ
+     *
+     * @param kClass vo绫诲瀷
+     * @param id     涓婚敭ID
+     */
+    default <K> K getVoById(Serializable id, Class<K> kClass) {
+        T t = getBaseMapper().selectById(id);
+        return BeanUtil.toBean(t, kClass);
+    }
+
+    /**
+     * 鏌ヨ锛堟牴鎹甀D 鎵归噺鏌ヨ锛�
+     *
+     * @param kClass vo绫诲瀷
+     * @param idList 涓婚敭ID鍒楄〃
+     */
+    default <K> List<K> listVoByIds(Collection<? extends Serializable> idList, Class<K> kClass) {
+        List<T> list = getBaseMapper().selectBatchIds(idList);
+        if (list == null) {
+            return null;
+        }
+        return list.stream()
+                .map(any -> BeanUtil.toBean(any, kClass))
+                .collect(Collectors.toList());
+    }
+
+    /**
+     * 鏌ヨ锛堟牴鎹� columnMap 鏉′欢锛�
+     *
+     * @param kClass    vo绫诲瀷
+     * @param columnMap 琛ㄥ瓧娈� map 瀵硅薄
+     */
+    default <K> List<K> listVoByMap(Map<String, Object> columnMap, Class<K> kClass) {
+        List<T> list = getBaseMapper().selectByMap(columnMap);
+        if (list == null) {
+            return null;
+        }
+        return list.stream()
+                .map(any -> BeanUtil.toBean(any, kClass))
+                .collect(Collectors.toList());
+    }
+
+    /**
+     * 鏍规嵁 Wrapper锛屾煡璇竴鏉¤褰� <br/>
+     * <p>缁撴灉闆嗭紝濡傛灉鏄涓細鎶涘嚭寮傚父锛岄殢鏈哄彇涓�鏉″姞涓婇檺鍒舵潯浠� wrapper.last("LIMIT 1")</p>
+     *
+     * @param kClass       vo绫诲瀷
+     * @param queryWrapper 瀹炰綋瀵硅薄灏佽鎿嶄綔绫� {@link com.baomidou.mybatisplus.core.conditions.query.QueryWrapper}
+     */
+    default <K> K getVoOne(Wrapper<T> queryWrapper, Class<K> kClass) {
+        return BeanUtil.toBean(getOne(queryWrapper, true), kClass);
+    }
+
+    /**
+     * 鏌ヨ鍒楄〃
+     *
+     * @param kClass       vo绫诲瀷
+     * @param queryWrapper 瀹炰綋瀵硅薄灏佽鎿嶄綔绫� {@link com.baomidou.mybatisplus.core.conditions.query.QueryWrapper}
+     */
+    default <K> List<K> listVo(Wrapper<T> queryWrapper, Class<K> kClass) {
+        List<T> list = getBaseMapper().selectList(queryWrapper);
+        if (list == null) {
+            return null;
+        }
+        return list.stream()
+                .map(any -> BeanUtil.toBean(any, kClass))
+                .collect(Collectors.toList());
+    }
+
+    /**
+     * 鏌ヨ鎵�鏈�
+     *
+     * @param kClass vo绫诲瀷
+     * @see Wrappers#emptyWrapper()
+     */
+    default <K> List<K> listVo(Class<K> kClass) {
+        return listVo(Wrappers.emptyWrapper(), kClass);
+    }
+
+    /**
+     * 缈婚〉鏌ヨ
+     *
+     * @param page         缈婚〉瀵硅薄
+     * @param queryWrapper 瀹炰綋瀵硅薄灏佽鎿嶄綔绫�
+     * @param kClass vo绫诲瀷
+     */
+    default <K> PagePlus<T, K> pageVo(PagePlus<T, K> page, Wrapper<T> queryWrapper, Class<K> kClass) {
+        PagePlus<T, K> e = getBaseMapper().selectPage(page, queryWrapper);
+        page.recordsToVo(kClass);
+        return page;
+    }
+
+    /**
+     * 鏃犳潯浠剁炕椤垫煡璇�
+     *
+     * @param page 缈婚〉瀵硅薄
+     * @param kClass vo绫诲瀷
+     */
+    default <K> PagePlus<T, K> pageVo(PagePlus<T, K> page, Class<K> kClass) {
+        return pageVo(page, Wrappers.emptyWrapper(), kClass);
+    }
+
+}
+
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/page/PageDomain.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/page/PageDomain.java
deleted file mode 100644
index 2fc6b87..0000000
--- a/ruoyi-common/src/main/java/com/ruoyi/common/core/page/PageDomain.java
+++ /dev/null
@@ -1,39 +0,0 @@
-package com.ruoyi.common.core.page;
-
-import cn.hutool.core.util.StrUtil;
-import lombok.*;
-import lombok.experimental.Accessors;
-
-/**
- * 鍒嗛〉鏁版嵁
- * 
- * @author ruoyi
- */
-
-@Data
-@NoArgsConstructor
-@Accessors(chain = true)
-public class PageDomain
-{
-    /** 褰撳墠璁板綍璧峰绱㈠紩 */
-    private Integer pageNum;
-
-    /** 姣忛〉鏄剧ず璁板綍鏁� */
-    private Integer pageSize;
-
-    /** 鎺掑簭鍒� */
-    private String orderByColumn;
-
-    /** 鎺掑簭鐨勬柟鍚慸esc鎴栬�卆sc */
-    private String isAsc = "asc";
-
-    public String getOrderBy()
-    {
-        if (StrUtil.isEmpty(orderByColumn))
-        {
-            return "";
-        }
-        return StrUtil.toUnderlineCase(orderByColumn) + " " + isAsc;
-    }
-
-}
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/page/PagePlus.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/page/PagePlus.java
new file mode 100644
index 0000000..7200fc5
--- /dev/null
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/page/PagePlus.java
@@ -0,0 +1,128 @@
+package com.ruoyi.common.core.page;
+
+import cn.hutool.core.bean.BeanUtil;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.metadata.OrderItem;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+import java.util.stream.Collectors;
+
+@Data
+@Accessors(chain = true)
+public class PagePlus<T,K> implements IPage<T> {
+
+    protected List<T> records;
+    protected List<K> recordsVo;
+    protected long total;
+    protected long size;
+    protected long current;
+    protected List<OrderItem> orders;
+    protected boolean optimizeCountSql;
+    protected boolean isSearchCount;
+    protected boolean hitCount;
+    protected String countId;
+    protected Long maxLimit;
+
+    public PagePlus() {
+        this.records = Collections.emptyList();
+        this.recordsVo = Collections.emptyList();
+        this.total = 0L;
+        this.size = 10L;
+        this.current = 1L;
+        this.orders = new ArrayList();
+        this.optimizeCountSql = true;
+        this.isSearchCount = true;
+        this.hitCount = false;
+    }
+
+    public PagePlus(long current, long size) {
+        this(current, size, 0L);
+    }
+
+    public PagePlus(long current, long size, long total) {
+        this(current, size, total, true);
+    }
+
+    public PagePlus(long current, long size, boolean isSearchCount) {
+        this(current, size, 0L, isSearchCount);
+    }
+
+    public PagePlus(long current, long size, long total, boolean isSearchCount) {
+        this.records = Collections.emptyList();
+        this.total = 0L;
+        this.size = 10L;
+        this.current = 1L;
+        this.orders = new ArrayList();
+        this.optimizeCountSql = true;
+        this.isSearchCount = true;
+        this.hitCount = false;
+        if (current > 1L) {
+            this.current = current;
+        }
+
+        this.size = size;
+        this.total = total;
+        this.isSearchCount = isSearchCount;
+    }
+
+    public boolean hasPrevious() {
+        return this.current > 1L;
+    }
+
+    public boolean hasNext() {
+        return this.current < this.getPages();
+    }
+
+    public void recordsToVo(Class<K> kClass) {
+        this.recordsVo = this.records.stream()
+                .map(any -> BeanUtil.toBean(any, kClass))
+                .collect(Collectors.toList());
+    }
+
+    @Override
+    public String countId() {
+        return this.getCountId();
+    }
+
+    @Override
+    public Long maxLimit() {
+        return this.getMaxLimit();
+    }
+
+    public PagePlus<T, K> addOrder(OrderItem... items) {
+        this.orders.addAll(Arrays.asList(items));
+        return this;
+    }
+
+    public PagePlus<T, K> addOrder(List<OrderItem> items) {
+        this.orders.addAll(items);
+        return this;
+    }
+
+    @Override
+    public List<OrderItem> orders() {
+        return this.getOrders();
+    }
+
+    @Override
+    public boolean optimizeCountSql() {
+        return this.optimizeCountSql;
+    }
+
+    @Override
+    public boolean isSearchCount() {
+        return this.total < 0L ? false : this.isSearchCount;
+    }
+
+    public PagePlus<T, K> setSearchCount(boolean isSearchCount) {
+        this.isSearchCount = isSearchCount;
+        return this;
+    }
+
+}
+
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/page/TableDataInfo.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/page/TableDataInfo.java
index 72c284f..4e71fc1 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/core/page/TableDataInfo.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/page/TableDataInfo.java
@@ -1,6 +1,7 @@
 package com.ruoyi.common.core.page;
 
-import lombok.*;
+import lombok.Data;
+import lombok.NoArgsConstructor;
 import lombok.experimental.Accessors;
 
 import java.io.Serializable;
@@ -37,7 +38,7 @@
      * @param list 鍒楄〃鏁版嵁
      * @param total 鎬昏褰曟暟
      */
-    public TableDataInfo(List<T> list, int total)
+    public TableDataInfo(List<T> list, long total)
     {
         this.rows = list;
         this.total = total;
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/page/TableSupport.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/page/TableSupport.java
deleted file mode 100644
index 14eb1e1..0000000
--- a/ruoyi-common/src/main/java/com/ruoyi/common/core/page/TableSupport.java
+++ /dev/null
@@ -1,49 +0,0 @@
-package com.ruoyi.common.core.page;
-
-import com.ruoyi.common.utils.ServletUtils;
-
-/**
- * 琛ㄦ牸鏁版嵁澶勭悊
- * 
- * @author ruoyi
- */
-public class TableSupport
-{
-    /**
-     * 褰撳墠璁板綍璧峰绱㈠紩
-     */
-    public static final String PAGE_NUM = "pageNum";
-
-    /**
-     * 姣忛〉鏄剧ず璁板綍鏁�
-     */
-    public static final String PAGE_SIZE = "pageSize";
-
-    /**
-     * 鎺掑簭鍒�
-     */
-    public static final String ORDER_BY_COLUMN = "orderByColumn";
-
-    /**
-     * 鎺掑簭鐨勬柟鍚� "desc" 鎴栬�� "asc".
-     */
-    public static final String IS_ASC = "isAsc";
-
-    /**
-     * 灏佽鍒嗛〉瀵硅薄
-     */
-    public static PageDomain getPageDomain()
-    {
-        PageDomain pageDomain = new PageDomain();
-        pageDomain.setPageNum(ServletUtils.getParameterToInt(PAGE_NUM));
-        pageDomain.setPageSize(ServletUtils.getParameterToInt(PAGE_SIZE));
-        pageDomain.setOrderByColumn(ServletUtils.getParameter(ORDER_BY_COLUMN));
-        pageDomain.setIsAsc(ServletUtils.getParameter(IS_ASC));
-        return pageDomain;
-    }
-
-    public static PageDomain buildPageRequest()
-    {
-        return getPageDomain();
-    }
-}
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/PageUtils.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/PageUtils.java
new file mode 100644
index 0000000..e484f6d
--- /dev/null
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/PageUtils.java
@@ -0,0 +1,101 @@
+package com.ruoyi.common.utils;
+
+import cn.hutool.core.util.StrUtil;
+import cn.hutool.http.HttpStatus;
+import com.baomidou.mybatisplus.core.metadata.OrderItem;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.core.page.PagePlus;
+import com.ruoyi.common.core.page.TableDataInfo;
+import com.ruoyi.common.utils.sql.SqlUtil;
+
+import java.util.List;
+
+/**
+ * 鍒嗛〉宸ュ叿
+ *
+ * @author Lion Li
+ */
+public class PageUtils {
+
+    /**
+     * 褰撳墠璁板綍璧峰绱㈠紩
+     */
+    public static final String PAGE_NUM = "pageNum";
+
+    /**
+     * 姣忛〉鏄剧ず璁板綍鏁�
+     */
+    public static final String PAGE_SIZE = "pageSize";
+
+    /**
+     * 鎺掑簭鍒�
+     */
+    public static final String ORDER_BY_COLUMN = "orderByColumn";
+
+    /**
+     * 鎺掑簭鐨勬柟鍚� "desc" 鎴栬�� "asc".
+     */
+    public static final String IS_ASC = "isAsc";
+
+    public static <T, K> PagePlus<T, K> buildPagePlus() {
+        Integer pageNum = ServletUtils.getParameterToInt(PAGE_NUM);
+        Integer pageSize = ServletUtils.getParameterToInt(PAGE_SIZE);
+        String orderByColumn = ServletUtils.getParameter(ORDER_BY_COLUMN);
+        String isAsc = ServletUtils.getParameter(IS_ASC);
+        PagePlus<T, K> page = new PagePlus<>(pageNum, pageSize);
+        if (StrUtil.isNotBlank(orderByColumn)) {
+            String orderBy = SqlUtil.escapeOrderBySql(orderByColumn);
+            if ("asc".equals(isAsc)) {
+                page.addOrder(OrderItem.asc(orderBy));
+            } else if ("desc".equals(isAsc)) {
+                page.addOrder(OrderItem.desc(orderBy));
+            }
+        }
+        return page;
+    }
+
+    public static <T> Page<T> buildPage() {
+        Integer pageNum = ServletUtils.getParameterToInt(PAGE_NUM);
+        Integer pageSize = ServletUtils.getParameterToInt(PAGE_SIZE);
+        String orderByColumn = ServletUtils.getParameter(ORDER_BY_COLUMN);
+        String isAsc = ServletUtils.getParameter(IS_ASC);
+        Page<T> page = new Page<>(pageNum, pageSize);
+        if (StrUtil.isNotBlank(orderByColumn)) {
+            String orderBy = SqlUtil.escapeOrderBySql(orderByColumn);
+            if ("asc".equals(isAsc)) {
+                page.addOrder(OrderItem.asc(orderBy));
+            } else if ("desc".equals(isAsc)) {
+                page.addOrder(OrderItem.desc(orderBy));
+            }
+        }
+        return page;
+    }
+
+    public static <T, K> TableDataInfo<K> buildDataInfo(PagePlus<T, K> page) {
+        TableDataInfo<K> rspData = new TableDataInfo<>();
+        rspData.setCode(HttpStatus.HTTP_OK);
+        rspData.setMsg("鏌ヨ鎴愬姛");
+        rspData.setRows(page.getRecordsVo());
+        rspData.setTotal(page.getTotal());
+        return rspData;
+    }
+
+    public static <T> TableDataInfo<T> buildDataInfo(Page<T> page) {
+        TableDataInfo<T> rspData = new TableDataInfo<>();
+        rspData.setCode(HttpStatus.HTTP_OK);
+        rspData.setMsg("鏌ヨ鎴愬姛");
+        rspData.setRows(page.getRecords());
+        rspData.setTotal(page.getTotal());
+        return rspData;
+    }
+
+    public static <T> TableDataInfo<T> buildDataInfo(List<T> list) {
+        TableDataInfo<T> rspData = new TableDataInfo<>();
+        rspData.setCode(HttpStatus.HTTP_OK);
+        rspData.setMsg("鏌ヨ鎴愬姛");
+        rspData.setRows(list);
+        rspData.setTotal(list.size());
+        return rspData;
+    }
+
+}
diff --git a/ruoyi-framework/pom.xml b/ruoyi-framework/pom.xml
index a138044..e51b27f 100644
--- a/ruoyi-framework/pom.xml
+++ b/ruoyi-framework/pom.xml
@@ -49,6 +49,12 @@
             <artifactId>spring-boot-starter-aop</artifactId>
         </dependency>
 
+        <!-- SpringBoot 鏍¢獙妗嗘灦 -->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-validation</artifactId>
+        </dependency>
+
         <!-- 闃块噷鏁版嵁搴撹繛鎺ユ睜 -->
         <dependency>
             <groupId>com.alibaba</groupId>
diff --git a/ruoyi-generator/src/main/java/com/ruoyi/generator/controller/GenController.java b/ruoyi-generator/src/main/java/com/ruoyi/generator/controller/GenController.java
index 72fea3b..5343834 100644
--- a/ruoyi-generator/src/main/java/com/ruoyi/generator/controller/GenController.java
+++ b/ruoyi-generator/src/main/java/com/ruoyi/generator/controller/GenController.java
@@ -1,32 +1,26 @@
 package com.ruoyi.generator.controller;
 
-import java.io.IOException;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import javax.servlet.http.HttpServletResponse;
-import org.apache.commons.io.IOUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.DeleteMapping;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.PutMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import cn.hutool.core.convert.Convert;
 import com.ruoyi.common.annotation.Log;
 import com.ruoyi.common.core.controller.BaseController;
 import com.ruoyi.common.core.domain.AjaxResult;
 import com.ruoyi.common.core.page.TableDataInfo;
-import cn.hutool.core.convert.Convert;
 import com.ruoyi.common.enums.BusinessType;
 import com.ruoyi.generator.domain.GenTable;
 import com.ruoyi.generator.domain.GenTableColumn;
 import com.ruoyi.generator.service.IGenTableColumnService;
 import com.ruoyi.generator.service.IGenTableService;
+import org.apache.commons.io.IOUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
 
 /**
  * 浠g爜鐢熸垚 鎿嶄綔澶勭悊
@@ -50,9 +44,7 @@
     @GetMapping("/list")
     public TableDataInfo genList(GenTable genTable)
     {
-        startPage();
-        List<GenTable> list = genTableService.selectGenTableList(genTable);
-        return getDataTable(list);
+        return genTableService.selectPageGenTableList(genTable);
     }
 
     /**
@@ -79,9 +71,7 @@
     @GetMapping("/db/list")
     public TableDataInfo dataList(GenTable genTable)
     {
-        startPage();
-        List<GenTable> list = genTableService.selectDbTableList(genTable);
-        return getDataTable(list);
+        return genTableService.selectPageDbTableList(genTable);
     }
 
     /**
diff --git a/ruoyi-generator/src/main/java/com/ruoyi/generator/mapper/GenTableColumnMapper.java b/ruoyi-generator/src/main/java/com/ruoyi/generator/mapper/GenTableColumnMapper.java
index d3e7e5e..5a2691a 100644
--- a/ruoyi-generator/src/main/java/com/ruoyi/generator/mapper/GenTableColumnMapper.java
+++ b/ruoyi-generator/src/main/java/com/ruoyi/generator/mapper/GenTableColumnMapper.java
@@ -1,6 +1,6 @@
 package com.ruoyi.generator.mapper;
 
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.common.core.page.BaseMapperPlus;
 import com.ruoyi.generator.domain.GenTableColumn;
 
 import java.util.List;
@@ -10,7 +10,7 @@
  *
  * @author ruoyi
  */
-public interface GenTableColumnMapper extends BaseMapper<GenTableColumn> {
+public interface GenTableColumnMapper extends BaseMapperPlus<GenTableColumn> {
     /**
      * 鏍规嵁琛ㄥ悕绉版煡璇㈠垪淇℃伅
      *
diff --git a/ruoyi-generator/src/main/java/com/ruoyi/generator/mapper/GenTableMapper.java b/ruoyi-generator/src/main/java/com/ruoyi/generator/mapper/GenTableMapper.java
index 894f689..85da309 100644
--- a/ruoyi-generator/src/main/java/com/ruoyi/generator/mapper/GenTableMapper.java
+++ b/ruoyi-generator/src/main/java/com/ruoyi/generator/mapper/GenTableMapper.java
@@ -1,7 +1,9 @@
 package com.ruoyi.generator.mapper;
 
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.core.page.BaseMapperPlus;
 import com.ruoyi.generator.domain.GenTable;
+import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 
@@ -10,7 +12,13 @@
  *
  * @author ruoyi
  */
-public interface GenTableMapper extends BaseMapper<GenTable> {
+public interface GenTableMapper extends BaseMapperPlus<GenTable> {
+
+
+    Page<GenTable> selectPageGenTableList(@Param("page") Page<GenTable> page, @Param("genTable") GenTable genTable);
+
+    Page<GenTable> selectPageDbTableList(@Param("page") Page<GenTable> page, @Param("genTable") GenTable genTable);
+
     /**
      * 鏌ヨ涓氬姟鍒楄〃
      *
diff --git a/ruoyi-generator/src/main/java/com/ruoyi/generator/service/GenTableServiceImpl.java b/ruoyi-generator/src/main/java/com/ruoyi/generator/service/GenTableServiceImpl.java
index 7fc96e2..e71e889 100644
--- a/ruoyi-generator/src/main/java/com/ruoyi/generator/service/GenTableServiceImpl.java
+++ b/ruoyi-generator/src/main/java/com/ruoyi/generator/service/GenTableServiceImpl.java
@@ -10,7 +10,9 @@
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ruoyi.common.constant.Constants;
 import com.ruoyi.common.constant.GenConstants;
+import com.ruoyi.common.core.page.TableDataInfo;
 import com.ruoyi.common.exception.CustomException;
+import com.ruoyi.common.utils.PageUtils;
 import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.common.utils.file.FileUtils;
 import com.ruoyi.generator.domain.GenTable;
@@ -66,6 +68,16 @@
         return genTable;
     }
 
+    @Override
+    public TableDataInfo<GenTable> selectPageGenTableList(GenTable genTable) {
+        return PageUtils.buildDataInfo(baseMapper.selectPageGenTableList(PageUtils.buildPage(), genTable));
+    }
+
+    @Override
+    public TableDataInfo<GenTable> selectPageDbTableList(GenTable genTable) {
+        return PageUtils.buildDataInfo(baseMapper.selectPageDbTableList(PageUtils.buildPage(), genTable));
+    }
+
     /**
      * 鏌ヨ涓氬姟鍒楄〃
      *
diff --git a/ruoyi-generator/src/main/java/com/ruoyi/generator/service/IGenTableColumnService.java b/ruoyi-generator/src/main/java/com/ruoyi/generator/service/IGenTableColumnService.java
index e0111e5..22946f2 100644
--- a/ruoyi-generator/src/main/java/com/ruoyi/generator/service/IGenTableColumnService.java
+++ b/ruoyi-generator/src/main/java/com/ruoyi/generator/service/IGenTableColumnService.java
@@ -1,6 +1,6 @@
 package com.ruoyi.generator.service;
 
-import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.common.core.page.IServicePlus;
 import com.ruoyi.generator.domain.GenTableColumn;
 
 import java.util.List;
@@ -10,7 +10,7 @@
  *
  * @author ruoyi
  */
-public interface IGenTableColumnService extends IService<GenTableColumn> {
+public interface IGenTableColumnService extends IServicePlus<GenTableColumn> {
     /**
      * 鏌ヨ涓氬姟瀛楁鍒楄〃
      *
diff --git a/ruoyi-generator/src/main/java/com/ruoyi/generator/service/IGenTableService.java b/ruoyi-generator/src/main/java/com/ruoyi/generator/service/IGenTableService.java
index c6642ba..cbfeae4 100644
--- a/ruoyi-generator/src/main/java/com/ruoyi/generator/service/IGenTableService.java
+++ b/ruoyi-generator/src/main/java/com/ruoyi/generator/service/IGenTableService.java
@@ -1,6 +1,7 @@
 package com.ruoyi.generator.service;
 
-import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.common.core.page.IServicePlus;
+import com.ruoyi.common.core.page.TableDataInfo;
 import com.ruoyi.generator.domain.GenTable;
 
 import java.util.List;
@@ -11,7 +12,14 @@
  *
  * @author ruoyi
  */
-public interface IGenTableService extends IService<GenTable> {
+public interface IGenTableService extends IServicePlus<GenTable> {
+
+
+    TableDataInfo<GenTable> selectPageGenTableList(GenTable genTable);
+
+
+    TableDataInfo<GenTable> selectPageDbTableList(GenTable genTable);
+
     /**
      * 鏌ヨ涓氬姟鍒楄〃
      *
diff --git a/ruoyi-generator/src/main/resources/mapper/generator/GenTableMapper.xml b/ruoyi-generator/src/main/resources/mapper/generator/GenTableMapper.xml
index 4054dd0..c752c5c 100644
--- a/ruoyi-generator/src/main/resources/mapper/generator/GenTableMapper.xml
+++ b/ruoyi-generator/src/main/resources/mapper/generator/GenTableMapper.xml
@@ -56,8 +56,46 @@
 	<sql id="selectGenTableVo">
         select table_id, table_name, table_comment, sub_table_name, sub_table_fk_name, class_name, tpl_category, package_name, module_name, business_name, function_name, function_author, gen_type, gen_path, options, create_by, create_time, update_by, update_time, remark from gen_table
     </sql>
-    
-    <select id="selectGenTableList" parameterType="GenTable" resultMap="GenTableResult">
+
+	<select id="selectPageGenTableList" parameterType="GenTable" resultMap="GenTableResult">
+		<include refid="selectGenTableVo"/>
+		<where>
+			<if test="genTable.tableName != null and genTable.tableName != ''">
+				AND lower(table_name) like lower(concat('%', #{genTable.tableName}, '%'))
+			</if>
+			<if test="genTable.tableComment != null and genTable.tableComment != ''">
+				AND lower(table_comment) like lower(concat('%', #{genTable.tableComment}, '%'))
+			</if>
+			<if test="genTable.params.beginTime != null and genTable.params.beginTime != ''"><!-- 寮�濮嬫椂闂存绱� -->
+				AND date_format(create_time,'%y%m%d') &gt;= date_format(#{genTable.params.beginTime},'%y%m%d')
+			</if>
+			<if test="genTable.params.endTime != null and genTable.params.endTime != ''"><!-- 缁撴潫鏃堕棿妫�绱� -->
+				AND date_format(create_time,'%y%m%d') &lt;= date_format(#{genTable.params.endTime},'%y%m%d')
+			</if>
+		</where>
+	</select>
+
+	<select id="selectPageDbTableList" parameterType="GenTable" resultMap="GenTableResult">
+		select table_name, table_comment, create_time, update_time from information_schema.tables
+		where table_schema = (select database())
+		AND table_name NOT LIKE 'qrtz_%' AND table_name NOT LIKE 'gen_%'
+		AND table_name NOT IN (select table_name from gen_table)
+		<if test="genTable.tableName != null and genTable.tableName != ''">
+			AND lower(table_name) like lower(concat('%', #{genTable.tableName}, '%'))
+		</if>
+		<if test="genTable.tableComment != null and genTable.tableComment != ''">
+			AND lower(table_comment) like lower(concat('%', #{genTable.tableComment}, '%'))
+		</if>
+		<if test="genTable.params.beginTime != null and genTable.params.beginTime != ''"><!-- 寮�濮嬫椂闂存绱� -->
+			AND date_format(create_time,'%y%m%d') &gt;= date_format(#{genTable.params.beginTime},'%y%m%d')
+		</if>
+		<if test="genTable.params.endTime != null and genTable.params.endTime != ''"><!-- 缁撴潫鏃堕棿妫�绱� -->
+			AND date_format(create_time,'%y%m%d') &lt;= date_format(#{genTable.params.endTime},'%y%m%d')
+		</if>
+	</select>
+
+
+	<select id="selectGenTableList" parameterType="GenTable" resultMap="GenTableResult">
 		<include refid="selectGenTableVo"/>
 		<where>
 			<if test="tableName != null and tableName != ''">
diff --git a/ruoyi-generator/src/main/resources/vm/java/addBo.java.vm b/ruoyi-generator/src/main/resources/vm/java/addBo.java.vm
index ad5e2e7..41fa0e9 100644
--- a/ruoyi-generator/src/main/resources/vm/java/addBo.java.vm
+++ b/ruoyi-generator/src/main/resources/vm/java/addBo.java.vm
@@ -5,6 +5,7 @@
 import com.fasterxml.jackson.annotation.JsonFormat;
 import lombok.Data;
 import java.util.Date;
+import javax.validation.constraints.*;
 
 
 #foreach ($import in $importList)
@@ -28,6 +29,11 @@
 #if($column.javaType == 'Date')
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
 #end
+#if($column.javaType == 'String')
+    @NotBlank(message = "$column.columnComment涓嶈兘涓虹┖")
+#else
+    @NotNull(message = "$column.columnComment涓嶈兘涓虹┖")
+#end
     private $column.javaType $column.javaField;
 #end
 #end
diff --git a/ruoyi-generator/src/main/resources/vm/java/controller.java.vm b/ruoyi-generator/src/main/resources/vm/java/controller.java.vm
index fd8c1c5..b40b497 100644
--- a/ruoyi-generator/src/main/resources/vm/java/controller.java.vm
+++ b/ruoyi-generator/src/main/resources/vm/java/controller.java.vm
@@ -4,16 +4,11 @@
 import java.util.Arrays;
 
 import lombok.RequiredArgsConstructor;
+import javax.validation.constraints.*;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.PutMapping;
-import org.springframework.web.bind.annotation.DeleteMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.validation.annotation.Validated;
 import com.ruoyi.common.annotation.Log;
 import com.ruoyi.common.core.controller.BaseController;
 import com.ruoyi.common.core.domain.AjaxResult;
@@ -52,13 +47,11 @@
     @PreAuthorize("@ss.hasPermi('${permissionPrefix}:list')")
     @GetMapping("/list")
 #if($table.crud || $table.sub)
-    public TableDataInfo<${ClassName}Vo> list(${ClassName}QueryBo bo) {
-        startPage();
-        List<${ClassName}Vo> list = i${ClassName}Service.queryList(bo);
-        return getDataTable(list);
+    public TableDataInfo<${ClassName}Vo> list(@Validated ${ClassName}QueryBo bo) {
+        return i${ClassName}Service.queryPageList(bo);
     }
 #elseif($table.tree)
-    public AjaxResult<${ClassName}Vo> list(${ClassName}QueryBo bo) {
+    public AjaxResult<List<${ClassName}Vo>> list(@Validated ${ClassName}QueryBo bo) {
         List<${ClassName}Vo> list = i${ClassName}Service.queryList(bo);
         return AjaxResult.success(list);
     }
@@ -71,7 +64,7 @@
     @PreAuthorize("@ss.hasPermi('${permissionPrefix}:export')")
     @Log(title = "${functionName}", businessType = BusinessType.EXPORT)
     @GetMapping("/export")
-    public AjaxResult<${ClassName}Vo> export(${ClassName}QueryBo bo) {
+    public AjaxResult<${ClassName}Vo> export(@Validated ${ClassName}QueryBo bo) {
         List<${ClassName}Vo> list = i${ClassName}Service.queryList(bo);
         ExcelUtil<${ClassName}Vo> util = new ExcelUtil<${ClassName}Vo>(${ClassName}Vo.class);
         return util.exportExcel(list, "${functionName}");
@@ -83,7 +76,8 @@
     @ApiOperation("鑾峰彇${functionName}璇︾粏淇℃伅")
     @PreAuthorize("@ss.hasPermi('${permissionPrefix}:query')")
     @GetMapping("/{${pkColumn.javaField}}")
-    public AjaxResult<${ClassName}Vo> getInfo(@PathVariable("${pkColumn.javaField}" ) ${pkColumn.javaType} ${pkColumn.javaField}) {
+    public AjaxResult<${ClassName}Vo> getInfo(@NotNull(message = "涓婚敭涓嶈兘涓虹┖")
+                                                  @PathVariable("${pkColumn.javaField}") ${pkColumn.javaType} ${pkColumn.javaField}) {
         return AjaxResult.success(i${ClassName}Service.queryById(${pkColumn.javaField}));
     }
 
@@ -94,7 +88,7 @@
     @PreAuthorize("@ss.hasPermi('${permissionPrefix}:add')")
     @Log(title = "${functionName}", businessType = BusinessType.INSERT)
     @PostMapping()
-    public AjaxResult<Void> add(@RequestBody ${ClassName}AddBo bo) {
+    public AjaxResult<Void> add(@Validated @RequestBody ${ClassName}AddBo bo) {
         return toAjax(i${ClassName}Service.insertByAddBo(bo) ? 1 : 0);
     }
 
@@ -105,7 +99,7 @@
     @PreAuthorize("@ss.hasPermi('${permissionPrefix}:edit')")
     @Log(title = "${functionName}", businessType = BusinessType.UPDATE)
     @PutMapping()
-    public AjaxResult<Void> edit(@RequestBody ${ClassName}EditBo bo) {
+    public AjaxResult<Void> edit(@Validated @RequestBody ${ClassName}EditBo bo) {
         return toAjax(i${ClassName}Service.updateByEditBo(bo) ? 1 : 0);
     }
 
@@ -116,7 +110,8 @@
     @PreAuthorize("@ss.hasPermi('${permissionPrefix}:remove')")
     @Log(title = "${functionName}" , businessType = BusinessType.DELETE)
     @DeleteMapping("/{${pkColumn.javaField}s}")
-    public AjaxResult<Void> remove(@PathVariable ${pkColumn.javaType}[] ${pkColumn.javaField}s) {
+    public AjaxResult<Void> remove(@NotEmpty(message = "涓婚敭涓嶈兘涓虹┖")
+                                       @PathVariable ${pkColumn.javaType}[] ${pkColumn.javaField}s) {
         return toAjax(i${ClassName}Service.deleteWithValidByIds(Arrays.asList(${pkColumn.javaField}s), true) ? 1 : 0);
     }
 }
diff --git a/ruoyi-generator/src/main/resources/vm/java/editBo.java.vm b/ruoyi-generator/src/main/resources/vm/java/editBo.java.vm
index 8fa0c25..3f3d988 100644
--- a/ruoyi-generator/src/main/resources/vm/java/editBo.java.vm
+++ b/ruoyi-generator/src/main/resources/vm/java/editBo.java.vm
@@ -5,6 +5,7 @@
 import com.fasterxml.jackson.annotation.JsonFormat;
 import lombok.Data;
 import java.util.Date;
+import javax.validation.constraints.*;
 
 #foreach ($import in $importList)
 import ${import};
@@ -28,6 +29,11 @@
 #if($column.javaType == 'Date')
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
 #end
+#if($column.javaType == 'String')
+    @NotBlank(message = "$column.columnComment涓嶈兘涓虹┖")
+#else
+    @NotNull(message = "$column.columnComment涓嶈兘涓虹┖")
+#end
     private $column.javaType $column.javaField;
 #end
 #end
diff --git a/ruoyi-generator/src/main/resources/vm/java/mapper.java.vm b/ruoyi-generator/src/main/resources/vm/java/mapper.java.vm
index bba2b15..6008418 100644
--- a/ruoyi-generator/src/main/resources/vm/java/mapper.java.vm
+++ b/ruoyi-generator/src/main/resources/vm/java/mapper.java.vm
@@ -1,7 +1,7 @@
 package ${packageName}.mapper;
 
 import ${packageName}.domain.${ClassName};
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.common.core.page.BaseMapperPlus;
 
 /**
  * ${functionName}Mapper鎺ュ彛
@@ -9,6 +9,6 @@
  * @author ${author}
  * @date ${datetime}
  */
-public interface ${ClassName}Mapper extends BaseMapper<${ClassName}> {
+public interface ${ClassName}Mapper extends BaseMapperPlus<${ClassName}> {
 
 }
diff --git a/ruoyi-generator/src/main/resources/vm/java/queryBo.java.vm b/ruoyi-generator/src/main/resources/vm/java/queryBo.java.vm
index b641ac3..c7be089 100644
--- a/ruoyi-generator/src/main/resources/vm/java/queryBo.java.vm
+++ b/ruoyi-generator/src/main/resources/vm/java/queryBo.java.vm
@@ -6,8 +6,6 @@
 import lombok.EqualsAndHashCode;
 
 import java.util.Date;
-import java.util.Map;
-import java.util.HashMap;
 
 #foreach ($import in $importList)
 import ${import};
@@ -29,6 +27,7 @@
 #elseif($table.tree)
 #set($Entity="TreeEntity")
 #end
+
 @Data
 @EqualsAndHashCode(callSuper = true)
 @ApiModel("${functionName}鍒嗛〉鏌ヨ瀵硅薄")
diff --git a/ruoyi-generator/src/main/resources/vm/java/service.java.vm b/ruoyi-generator/src/main/resources/vm/java/service.java.vm
index 6a5ce97..0561660 100644
--- a/ruoyi-generator/src/main/resources/vm/java/service.java.vm
+++ b/ruoyi-generator/src/main/resources/vm/java/service.java.vm
@@ -5,7 +5,10 @@
 import ${packageName}.bo.${ClassName}QueryBo;
 import ${packageName}.bo.${ClassName}AddBo;
 import ${packageName}.bo.${ClassName}EditBo;
-import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.common.core.page.IServicePlus;
+#if($table.crud || $table.sub)
+import com.ruoyi.common.core.page.TableDataInfo;
+#end
 
 import java.util.Collection;
 import java.util.List;
@@ -16,13 +19,19 @@
  * @author ${author}
  * @date ${datetime}
  */
-public interface I${ClassName}Service extends IService<${ClassName}> {
+public interface I${ClassName}Service extends IServicePlus<${ClassName}> {
 	/**
 	 * 鏌ヨ鍗曚釜
 	 * @return
 	 */
 	${ClassName}Vo queryById(${pkColumn.javaType} ${pkColumn.javaField});
 
+#if($table.crud || $table.sub)
+	/**
+	 * 鏌ヨ鍒楄〃
+	 */
+    TableDataInfo<${ClassName}Vo> queryPageList(${ClassName}QueryBo bo);
+#end
 	/**
 	 * 鏌ヨ鍒楄〃
 	 */
diff --git a/ruoyi-generator/src/main/resources/vm/java/serviceImpl.java.vm b/ruoyi-generator/src/main/resources/vm/java/serviceImpl.java.vm
index cbf9d32..c727ce6 100644
--- a/ruoyi-generator/src/main/resources/vm/java/serviceImpl.java.vm
+++ b/ruoyi-generator/src/main/resources/vm/java/serviceImpl.java.vm
@@ -2,11 +2,15 @@
 
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.util.StrUtil;
+#if($table.crud || $table.sub)
+import com.ruoyi.common.utils.PageUtils;
+import com.ruoyi.common.core.page.PagePlus;
+import com.ruoyi.common.core.page.TableDataInfo;
+#end
 import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import com.github.pagehelper.Page;
 import ${packageName}.bo.${ClassName}AddBo;
 import ${packageName}.bo.${ClassName}QueryBo;
 import ${packageName}.bo.${ClassName}EditBo;
@@ -15,10 +19,9 @@
 import ${packageName}.vo.${ClassName}Vo;
 import ${packageName}.service.I${ClassName}Service;
 
-import java.util.Collection;
-import java.util.Collections;
 import java.util.List;
-import java.util.stream.Collectors;
+import java.util.Map;
+import java.util.Collection;
 
 /**
  * ${functionName}Service涓氬姟灞傚鐞�
@@ -31,12 +34,24 @@
 
     @Override
     public ${ClassName}Vo queryById(${pkColumn.javaType} ${pkColumn.javaField}){
-        ${ClassName} db = this.baseMapper.selectById(${pkColumn.javaField});
-        return BeanUtil.toBean(db, ${ClassName}Vo.class);
+        return getVoById(${pkColumn.javaField}, ${ClassName}Vo.class);
     }
+
+#if($table.crud || $table.sub)
+    @Override
+    public TableDataInfo<${ClassName}Vo> queryPageList(${ClassName}QueryBo bo) {
+        PagePlus<${ClassName}, ${ClassName}Vo> result = pageVo(PageUtils.buildPagePlus(), buildQueryWrapper(bo), ${ClassName}Vo.class);
+        return PageUtils.buildDataInfo(result);
+    }
+#end
 
     @Override
     public List<${ClassName}Vo> queryList(${ClassName}QueryBo bo) {
+        return listVo(buildQueryWrapper(bo), ${ClassName}Vo.class);
+    }
+
+    private LambdaQueryWrapper<${ClassName}> buildQueryWrapper(${ClassName}QueryBo bo) {
+        Map<String, Object> params = bo.getParams();
         LambdaQueryWrapper<${ClassName}> lqw = Wrappers.lambdaQuery();
 #foreach($column in $columns)
 #if($column.query)
@@ -54,50 +69,26 @@
 #end
         lqw.$mpMethod($condition, ${ClassName}::get$AttrName, bo.get$AttrName());
 #else
-        Object dataScope = bo.getParams().get("dataScope");
-        lqw.apply(dataScope != null, dataScope != null ? dataScope.toString() : null);
-        Map<String, Object> params = bo.getParams();
-        if (params.get("begin$AttrName") != null && params.get("end$AttrName") != null) {
-            lqw.between(${ClassName}::get$AttrName ,params.get("begin$AttrName"), params.get("end$AttrName"));
-        }
+        lqw.between(params.get("begin$AttrName") != null && params.get("end$AttrName") != null,
+            ${ClassName}::get$AttrName ,params.get("begin$AttrName"), params.get("end$AttrName"));
 #end
 #end
 #end
-        return entity2Vo(this.list(lqw));
-    }
-
-    /**
-    * 瀹炰綋绫昏浆鍖栨垚瑙嗗浘瀵硅薄
-    *
-    * @param collection 瀹炰綋绫婚泦鍚�
-    * @return
-    */
-    private List<${ClassName}Vo> entity2Vo(Collection<${ClassName}> collection) {
-        List<${ClassName}Vo> voList = collection.stream()
-                .map(any -> BeanUtil.toBean(any, ${ClassName}Vo.class))
-                .collect(Collectors.toList());
-        if (collection instanceof Page) {
-            Page<${ClassName}> page = (Page<${ClassName}>)collection;
-            Page<${ClassName}Vo> pageVo = new Page<>();
-            BeanUtil.copyProperties(page,pageVo);
-            pageVo.addAll(voList);
-            voList = pageVo;
-        }
-        return voList;
+        return lqw;
     }
 
     @Override
     public Boolean insertByAddBo(${ClassName}AddBo bo) {
         ${ClassName} add = BeanUtil.toBean(bo, ${ClassName}.class);
         validEntityBeforeSave(add);
-        return this.save(add);
+        return save(add);
     }
 
     @Override
     public Boolean updateByEditBo(${ClassName}EditBo bo) {
         ${ClassName} update = BeanUtil.toBean(bo, ${ClassName}.class);
         validEntityBeforeSave(update);
-        return this.updateById(update);
+        return updateById(update);
     }
 
     /**
@@ -114,6 +105,6 @@
         if(isValid){
             //TODO 鍋氫竴浜涗笟鍔′笂鐨勬牎楠�,鍒ゆ柇鏄惁闇�瑕佹牎楠�
         }
-        return this.removeByIds(ids);
+        return removeByIds(ids);
     }
 }
diff --git a/ruoyi-quartz/pom.xml b/ruoyi-quartz/pom.xml
index f29cea7..0a23e04 100644
--- a/ruoyi-quartz/pom.xml
+++ b/ruoyi-quartz/pom.xml
@@ -19,8 +19,8 @@
 
         <!-- 瀹氭椂浠诲姟 -->
         <dependency>
-            <groupId>org.quartz-scheduler</groupId>
-            <artifactId>quartz</artifactId>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-quartz</artifactId>
             <exclusions>
                 <exclusion>
                     <groupId>com.mchange</groupId>
diff --git a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/config/ScheduleConfig.java b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/config/ScheduleConfig.java
index e466ed0..c6b8384 100644
--- a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/config/ScheduleConfig.java
+++ b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/config/ScheduleConfig.java
@@ -1,57 +1,13 @@
 package com.ruoyi.quartz.config;
 
-import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
-import org.springframework.scheduling.quartz.SchedulerFactoryBean;
-import javax.sql.DataSource;
-import java.util.Properties;
 
 /**
  * 瀹氭椂浠诲姟閰嶇疆
- * 
- * @author ruoyi
+ *
+ * @author Lion Li
  */
 @Configuration
-public class ScheduleConfig
-{
-    @Bean
-    public SchedulerFactoryBean schedulerFactoryBean(DataSource dataSource)
-    {
-        SchedulerFactoryBean factory = new SchedulerFactoryBean();
-        factory.setDataSource(dataSource);
+public class ScheduleConfig {
 
-        // quartz鍙傛暟
-        Properties prop = new Properties();
-        prop.put("org.quartz.scheduler.instanceName", "RuoyiScheduler");
-        prop.put("org.quartz.scheduler.instanceId", "AUTO");
-        // 绾跨▼姹犻厤缃�
-        prop.put("org.quartz.threadPool.class", "org.quartz.simpl.SimpleThreadPool");
-        prop.put("org.quartz.threadPool.threadCount", "20");
-        prop.put("org.quartz.threadPool.threadPriority", "5");
-        // JobStore閰嶇疆
-        prop.put("org.quartz.jobStore.class", "org.quartz.impl.jdbcjobstore.JobStoreTX");
-        // 闆嗙兢閰嶇疆
-        prop.put("org.quartz.jobStore.isClustered", "true");
-        prop.put("org.quartz.jobStore.clusterCheckinInterval", "15000");
-        prop.put("org.quartz.jobStore.maxMisfiresToHandleAtATime", "1");
-        prop.put("org.quartz.jobStore.txIsolationLevelSerializable", "true");
-
-        // sqlserver 鍚敤
-        // prop.put("org.quartz.jobStore.selectWithLockSQL", "SELECT * FROM {0}LOCKS UPDLOCK WHERE LOCK_NAME = ?");
-        prop.put("org.quartz.jobStore.misfireThreshold", "12000");
-        prop.put("org.quartz.jobStore.tablePrefix", "QRTZ_");
-        factory.setQuartzProperties(prop);
-
-        factory.setSchedulerName("RuoyiScheduler");
-        // 寤舵椂鍚姩
-        factory.setStartupDelay(1);
-        factory.setApplicationContextSchedulerContextKey("applicationContextKey");
-        // 鍙�夛紝QuartzScheduler
-        // 鍚姩鏃舵洿鏂板繁瀛樺湪鐨凧ob锛岃繖鏍峰氨涓嶇敤姣忔淇敼targetObject鍚庡垹闄rtz_job_details琛ㄥ搴旇褰曚簡
-        factory.setOverwriteExistingJobs(true);
-        // 璁剧疆鑷姩鍚姩锛岄粯璁や负true
-        factory.setAutoStartup(true);
-
-        return factory;
-    }
 }
diff --git a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/controller/SysJobController.java b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/controller/SysJobController.java
index f770a7d..4289d32 100644
--- a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/controller/SysJobController.java
+++ b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/controller/SysJobController.java
@@ -1,17 +1,5 @@
 package com.ruoyi.quartz.controller;
 
-import java.util.List;
-import org.quartz.SchedulerException;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.web.bind.annotation.DeleteMapping;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.PutMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
 import com.ruoyi.common.annotation.Log;
 import com.ruoyi.common.core.controller.BaseController;
 import com.ruoyi.common.core.domain.AjaxResult;
@@ -23,6 +11,12 @@
 import com.ruoyi.quartz.domain.SysJob;
 import com.ruoyi.quartz.service.ISysJobService;
 import com.ruoyi.quartz.util.CronUtils;
+import org.quartz.SchedulerException;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
 
 /**
  * 璋冨害浠诲姟淇℃伅鎿嶄綔澶勭悊
@@ -43,9 +37,7 @@
     @GetMapping("/list")
     public TableDataInfo list(SysJob sysJob)
     {
-        startPage();
-        List<SysJob> list = jobService.selectJobList(sysJob);
-        return getDataTable(list);
+        return jobService.selectPageJobList(sysJob);
     }
 
     /**
diff --git a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/controller/SysJobLogController.java b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/controller/SysJobLogController.java
index 10a842b..e7cb9f0 100644
--- a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/controller/SysJobLogController.java
+++ b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/controller/SysJobLogController.java
@@ -1,13 +1,5 @@
 package com.ruoyi.quartz.controller;
 
-import java.util.List;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.web.bind.annotation.DeleteMapping;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
 import com.ruoyi.common.annotation.Log;
 import com.ruoyi.common.core.controller.BaseController;
 import com.ruoyi.common.core.domain.AjaxResult;
@@ -16,6 +8,11 @@
 import com.ruoyi.common.utils.poi.ExcelUtil;
 import com.ruoyi.quartz.domain.SysJobLog;
 import com.ruoyi.quartz.service.ISysJobLogService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
 
 /**
  * 璋冨害鏃ュ織鎿嶄綔澶勭悊
@@ -36,9 +33,7 @@
     @GetMapping("/list")
     public TableDataInfo list(SysJobLog sysJobLog)
     {
-        startPage();
-        List<SysJobLog> list = jobLogService.selectJobLogList(sysJobLog);
-        return getDataTable(list);
+        return jobLogService.selectPageJobLogList(sysJobLog);
     }
 
     /**
diff --git a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/mapper/SysJobLogMapper.java b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/mapper/SysJobLogMapper.java
index b6ae67b..03d4501 100644
--- a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/mapper/SysJobLogMapper.java
+++ b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/mapper/SysJobLogMapper.java
@@ -1,6 +1,6 @@
 package com.ruoyi.quartz.mapper;
 
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.common.core.page.BaseMapperPlus;
 import com.ruoyi.quartz.domain.SysJobLog;
 
 /**
@@ -8,6 +8,6 @@
  *
  * @author ruoyi
  */
-public interface SysJobLogMapper extends BaseMapper<SysJobLog> {
+public interface SysJobLogMapper extends BaseMapperPlus<SysJobLog> {
 
 }
diff --git a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/mapper/SysJobMapper.java b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/mapper/SysJobMapper.java
index 1f814b0..8e73f0a 100644
--- a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/mapper/SysJobMapper.java
+++ b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/mapper/SysJobMapper.java
@@ -1,6 +1,6 @@
 package com.ruoyi.quartz.mapper;
 
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.common.core.page.BaseMapperPlus;
 import com.ruoyi.quartz.domain.SysJob;
 
 /**
@@ -8,6 +8,6 @@
  *
  * @author ruoyi
  */
-public interface SysJobMapper extends BaseMapper<SysJob> {
+public interface SysJobMapper extends BaseMapperPlus<SysJob> {
 
 }
diff --git a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/service/ISysJobLogService.java b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/service/ISysJobLogService.java
index a95984b..6b51886 100644
--- a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/service/ISysJobLogService.java
+++ b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/service/ISysJobLogService.java
@@ -1,6 +1,7 @@
 package com.ruoyi.quartz.service;
 
-import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.common.core.page.IServicePlus;
+import com.ruoyi.common.core.page.TableDataInfo;
 import com.ruoyi.quartz.domain.SysJobLog;
 
 import java.util.List;
@@ -10,7 +11,11 @@
  *
  * @author ruoyi
  */
-public interface ISysJobLogService extends IService<SysJobLog> {
+public interface ISysJobLogService extends IServicePlus<SysJobLog> {
+
+
+    TableDataInfo<SysJobLog> selectPageJobLogList(SysJobLog jobLog);
+
     /**
      * 鑾峰彇quartz璋冨害鍣ㄦ棩蹇楃殑璁″垝浠诲姟
      *
diff --git a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/service/ISysJobService.java b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/service/ISysJobService.java
index 5bcd9a7..fbbf4c5 100644
--- a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/service/ISysJobService.java
+++ b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/service/ISysJobService.java
@@ -1,6 +1,7 @@
 package com.ruoyi.quartz.service;
 
-import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.common.core.page.IServicePlus;
+import com.ruoyi.common.core.page.TableDataInfo;
 import com.ruoyi.common.exception.job.TaskException;
 import com.ruoyi.quartz.domain.SysJob;
 import org.quartz.SchedulerException;
@@ -12,13 +13,15 @@
  *
  * @author ruoyi
  */
-public interface ISysJobService extends IService<SysJob> {
+public interface ISysJobService extends IServicePlus<SysJob> {
     /**
      * 鑾峰彇quartz璋冨害鍣ㄧ殑璁″垝浠诲姟
      *
      * @param job 璋冨害淇℃伅
      * @return 璋冨害浠诲姟闆嗗悎
      */
+    public TableDataInfo<SysJob> selectPageJobList(SysJob job);
+
     public List<SysJob> selectJobList(SysJob job);
 
     /**
diff --git a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/service/impl/SysJobLogServiceImpl.java b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/service/impl/SysJobLogServiceImpl.java
index 515f403..28c9d8a 100644
--- a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/service/impl/SysJobLogServiceImpl.java
+++ b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/service/impl/SysJobLogServiceImpl.java
@@ -4,6 +4,8 @@
 import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.common.core.page.TableDataInfo;
+import com.ruoyi.common.utils.PageUtils;
 import com.ruoyi.quartz.domain.SysJobLog;
 import com.ruoyi.quartz.mapper.SysJobLogMapper;
 import com.ruoyi.quartz.service.ISysJobLogService;
@@ -21,6 +23,23 @@
 @Service
 public class SysJobLogServiceImpl extends ServiceImpl<SysJobLogMapper, SysJobLog> implements ISysJobLogService {
 
+    @Override
+    public TableDataInfo<SysJobLog> selectPageJobLogList(SysJobLog jobLog) {
+        Map<String, Object> params = jobLog.getParams();
+        LambdaQueryWrapper<SysJobLog> lqw = new LambdaQueryWrapper<SysJobLog>()
+                .like(StrUtil.isNotBlank(jobLog.getJobName()), SysJobLog::getJobName, jobLog.getJobName())
+                .eq(StrUtil.isNotBlank(jobLog.getJobGroup()), SysJobLog::getJobGroup, jobLog.getJobGroup())
+                .eq(StrUtil.isNotBlank(jobLog.getStatus()), SysJobLog::getStatus, jobLog.getStatus())
+                .like(StrUtil.isNotBlank(jobLog.getInvokeTarget()), SysJobLog::getInvokeTarget, jobLog.getInvokeTarget())
+                .apply(Validator.isNotEmpty(params.get("beginTime")),
+                        "date_format(create_time,'%y%m%d') >= date_format({0},'%y%m%d')",
+                        params.get("beginTime"))
+                .apply(Validator.isNotEmpty(params.get("endTime")),
+                        "date_format(create_time,'%y%m%d') <= date_format({0},'%y%m%d')",
+                        params.get("endTime"));
+        return PageUtils.buildDataInfo(page(PageUtils.buildPage(), lqw));
+    }
+
     /**
      * 鑾峰彇quartz璋冨害鍣ㄦ棩蹇楃殑璁″垝浠诲姟
      *
diff --git a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/service/impl/SysJobServiceImpl.java b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/service/impl/SysJobServiceImpl.java
index aa6007a..9b97b4f 100644
--- a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/service/impl/SysJobServiceImpl.java
+++ b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/service/impl/SysJobServiceImpl.java
@@ -4,7 +4,9 @@
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ruoyi.common.constant.ScheduleConstants;
+import com.ruoyi.common.core.page.TableDataInfo;
 import com.ruoyi.common.exception.job.TaskException;
+import com.ruoyi.common.utils.PageUtils;
 import com.ruoyi.quartz.domain.SysJob;
 import com.ruoyi.quartz.mapper.SysJobMapper;
 import com.ruoyi.quartz.service.ISysJobService;
@@ -43,6 +45,16 @@
         }
     }
 
+    @Override
+    public TableDataInfo<SysJob> selectPageJobList(SysJob job) {
+        LambdaQueryWrapper<SysJob> lqw = new LambdaQueryWrapper<SysJob>()
+                .like(StrUtil.isNotBlank(job.getJobName()), SysJob::getJobName, job.getJobName())
+                .eq(StrUtil.isNotBlank(job.getJobGroup()), SysJob::getJobGroup, job.getJobGroup())
+                .eq(StrUtil.isNotBlank(job.getStatus()), SysJob::getStatus, job.getStatus())
+                .like(StrUtil.isNotBlank(job.getInvokeTarget()), SysJob::getInvokeTarget, job.getInvokeTarget());
+        return PageUtils.buildDataInfo(page(PageUtils.buildPage(), lqw));
+    }
+
     /**
      * 鑾峰彇quartz璋冨害鍣ㄧ殑璁″垝浠诲姟鍒楄〃
      *
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysConfigMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysConfigMapper.java
index f7c0b4c..fb3f068 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysConfigMapper.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysConfigMapper.java
@@ -1,6 +1,6 @@
 package com.ruoyi.system.mapper;
 
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.common.core.page.BaseMapperPlus;
 import com.ruoyi.system.domain.SysConfig;
 
 /**
@@ -8,6 +8,6 @@
  *
  * @author ruoyi
  */
-public interface SysConfigMapper extends BaseMapper<SysConfig> {
+public interface SysConfigMapper extends BaseMapperPlus<SysConfig> {
 
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDeptMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDeptMapper.java
index b59afae..12824e7 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDeptMapper.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDeptMapper.java
@@ -1,7 +1,7 @@
 package com.ruoyi.system.mapper;
 
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.ruoyi.common.core.domain.entity.SysDept;
+import com.ruoyi.common.core.page.BaseMapperPlus;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
@@ -11,7 +11,7 @@
  *
  * @author ruoyi
  */
-public interface SysDeptMapper extends BaseMapper<SysDept> {
+public interface SysDeptMapper extends BaseMapperPlus<SysDept> {
 
     /**
      * 鏌ヨ閮ㄩ棬绠$悊鏁版嵁
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDictDataMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDictDataMapper.java
index 8da79ca..7f09d7c 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDictDataMapper.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDictDataMapper.java
@@ -1,13 +1,13 @@
 package com.ruoyi.system.mapper;
 
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.ruoyi.common.core.domain.entity.SysDictData;
+import com.ruoyi.common.core.page.BaseMapperPlus;
 
 /**
  * 瀛楀吀琛� 鏁版嵁灞�
  *
  * @author ruoyi
  */
-public interface SysDictDataMapper extends BaseMapper<SysDictData> {
+public interface SysDictDataMapper extends BaseMapperPlus<SysDictData> {
 
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDictTypeMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDictTypeMapper.java
index 0c81ddd..911386d 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDictTypeMapper.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDictTypeMapper.java
@@ -1,13 +1,13 @@
 package com.ruoyi.system.mapper;
 
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.ruoyi.common.core.domain.entity.SysDictType;
+import com.ruoyi.common.core.page.BaseMapperPlus;
 
 /**
  * 瀛楀吀琛� 鏁版嵁灞�
  *
  * @author ruoyi
  */
-public interface SysDictTypeMapper extends BaseMapper<SysDictType> {
+public interface SysDictTypeMapper extends BaseMapperPlus<SysDictType> {
 
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysLogininforMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysLogininforMapper.java
index 8658318..bf37f9b 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysLogininforMapper.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysLogininforMapper.java
@@ -1,6 +1,6 @@
 package com.ruoyi.system.mapper;
 
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.common.core.page.BaseMapperPlus;
 import com.ruoyi.system.domain.SysLogininfor;
 
 /**
@@ -8,6 +8,6 @@
  *
  * @author ruoyi
  */
-public interface SysLogininforMapper extends BaseMapper<SysLogininfor> {
+public interface SysLogininforMapper extends BaseMapperPlus<SysLogininfor> {
 
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysMenuMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysMenuMapper.java
index aa3055e..6a8e729 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysMenuMapper.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysMenuMapper.java
@@ -1,7 +1,7 @@
 package com.ruoyi.system.mapper;
 
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.ruoyi.common.core.domain.entity.SysMenu;
+import com.ruoyi.common.core.page.BaseMapperPlus;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
@@ -11,7 +11,7 @@
  *
  * @author ruoyi
  */
-public interface SysMenuMapper extends BaseMapper<SysMenu> {
+public interface SysMenuMapper extends BaseMapperPlus<SysMenu> {
 
     /**
      * 鏍规嵁鐢ㄦ埛鎵�鏈夋潈闄�
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysNoticeMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysNoticeMapper.java
index 9fe7165..0061170 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysNoticeMapper.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysNoticeMapper.java
@@ -1,6 +1,6 @@
 package com.ruoyi.system.mapper;
 
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.common.core.page.BaseMapperPlus;
 import com.ruoyi.system.domain.SysNotice;
 
 /**
@@ -8,6 +8,6 @@
  *
  * @author ruoyi
  */
-public interface SysNoticeMapper extends BaseMapper<SysNotice> {
+public interface SysNoticeMapper extends BaseMapperPlus<SysNotice> {
 
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysOperLogMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysOperLogMapper.java
index d2bae7d..3f38256 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysOperLogMapper.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysOperLogMapper.java
@@ -1,6 +1,6 @@
 package com.ruoyi.system.mapper;
 
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.common.core.page.BaseMapperPlus;
 import com.ruoyi.system.domain.SysOperLog;
 
 /**
@@ -8,6 +8,6 @@
  *
  * @author ruoyi
  */
-public interface SysOperLogMapper extends BaseMapper<SysOperLog> {
+public interface SysOperLogMapper extends BaseMapperPlus<SysOperLog> {
 
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysPostMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysPostMapper.java
index d15facd..1eef04f 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysPostMapper.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysPostMapper.java
@@ -1,6 +1,6 @@
 package com.ruoyi.system.mapper;
 
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.common.core.page.BaseMapperPlus;
 import com.ruoyi.system.domain.SysPost;
 
 import java.util.List;
@@ -10,7 +10,7 @@
  *
  * @author ruoyi
  */
-public interface SysPostMapper extends BaseMapper<SysPost> {
+public interface SysPostMapper extends BaseMapperPlus<SysPost> {
 
     /**
      * 鏍规嵁鐢ㄦ埛ID鑾峰彇宀椾綅閫夋嫨妗嗗垪琛�
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysRoleDeptMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysRoleDeptMapper.java
index c609a5a..6121490 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysRoleDeptMapper.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysRoleDeptMapper.java
@@ -1,6 +1,6 @@
 package com.ruoyi.system.mapper;
 
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.common.core.page.BaseMapperPlus;
 import com.ruoyi.system.domain.SysRoleDept;
 
 /**
@@ -8,6 +8,6 @@
  *
  * @author ruoyi
  */
-public interface SysRoleDeptMapper extends BaseMapper<SysRoleDept> {
+public interface SysRoleDeptMapper extends BaseMapperPlus<SysRoleDept> {
 
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysRoleMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysRoleMapper.java
index 6bd05a1..e0792c7 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysRoleMapper.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysRoleMapper.java
@@ -1,7 +1,9 @@
 package com.ruoyi.system.mapper;
 
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ruoyi.common.core.domain.entity.SysRole;
+import com.ruoyi.common.core.page.BaseMapperPlus;
+import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 
@@ -10,7 +12,9 @@
  *
  * @author ruoyi
  */
-public interface SysRoleMapper extends BaseMapper<SysRole> {
+public interface SysRoleMapper extends BaseMapperPlus<SysRole> {
+
+    Page<SysRole> selectPageRoleList(@Param("page") Page<SysRole> page, @Param("role") SysRole role);
 
     /**
      * 鏍规嵁鏉′欢鍒嗛〉鏌ヨ瑙掕壊鏁版嵁
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysRoleMenuMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysRoleMenuMapper.java
index 6bc21a3..fa8c5a3 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysRoleMenuMapper.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysRoleMenuMapper.java
@@ -1,6 +1,6 @@
 package com.ruoyi.system.mapper;
 
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.common.core.page.BaseMapperPlus;
 import com.ruoyi.system.domain.SysRoleMenu;
 
 /**
@@ -8,6 +8,6 @@
  *
  * @author ruoyi
  */
-public interface SysRoleMenuMapper extends BaseMapper<SysRoleMenu> {
+public interface SysRoleMenuMapper extends BaseMapperPlus<SysRoleMenu> {
 
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java
index 02d2e96..a3fcfdb 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java
@@ -1,7 +1,9 @@
 package com.ruoyi.system.mapper;
 
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ruoyi.common.core.domain.entity.SysUser;
+import com.ruoyi.common.core.page.BaseMapperPlus;
+import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 
@@ -10,7 +12,10 @@
  *
  * @author ruoyi
  */
-public interface SysUserMapper extends BaseMapper<SysUser> {
+public interface SysUserMapper extends BaseMapperPlus<SysUser> {
+
+    Page<SysUser> selectPageUserList(@Param("page") Page<SysUser> page, @Param("user") SysUser user);
+
     /**
      * 鏍规嵁鏉′欢鍒嗛〉鏌ヨ鐢ㄦ埛鍒楄〃
      *
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserPostMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserPostMapper.java
index b56beaa..c17dfd5 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserPostMapper.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserPostMapper.java
@@ -1,6 +1,6 @@
 package com.ruoyi.system.mapper;
 
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.common.core.page.BaseMapperPlus;
 import com.ruoyi.system.domain.SysUserPost;
 
 /**
@@ -8,6 +8,6 @@
  *
  * @author ruoyi
  */
-public interface SysUserPostMapper extends BaseMapper<SysUserPost> {
+public interface SysUserPostMapper extends BaseMapperPlus<SysUserPost> {
 
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserRoleMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserRoleMapper.java
index 4bd3bca..ddebd38 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserRoleMapper.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserRoleMapper.java
@@ -1,6 +1,6 @@
 package com.ruoyi.system.mapper;
 
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.common.core.page.BaseMapperPlus;
 import com.ruoyi.system.domain.SysUserRole;
 
 /**
@@ -8,6 +8,6 @@
  *
  * @author ruoyi
  */
-public interface SysUserRoleMapper extends BaseMapper<SysUserRole> {
+public interface SysUserRoleMapper extends BaseMapperPlus<SysUserRole> {
 
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysConfigService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysConfigService.java
index 740e802..8384627 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysConfigService.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysConfigService.java
@@ -1,6 +1,7 @@
 package com.ruoyi.system.service;
 
-import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.common.core.page.IServicePlus;
+import com.ruoyi.common.core.page.TableDataInfo;
 import com.ruoyi.system.domain.SysConfig;
 
 import java.util.List;
@@ -10,7 +11,11 @@
  *
  * @author ruoyi
  */
-public interface ISysConfigService extends IService<SysConfig> {
+public interface ISysConfigService extends IServicePlus<SysConfig> {
+
+
+    TableDataInfo<SysConfig> selectPageConfigList(SysConfig config);
+
     /**
      * 鏌ヨ鍙傛暟閰嶇疆淇℃伅
      *
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDeptService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDeptService.java
index f518ff5..59521c0 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDeptService.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDeptService.java
@@ -1,8 +1,8 @@
 package com.ruoyi.system.service;
 
-import com.baomidou.mybatisplus.extension.service.IService;
 import com.ruoyi.common.core.domain.TreeSelect;
 import com.ruoyi.common.core.domain.entity.SysDept;
+import com.ruoyi.common.core.page.IServicePlus;
 
 import java.util.List;
 
@@ -11,7 +11,7 @@
  *
  * @author ruoyi
  */
-public interface ISysDeptService extends IService<SysDept> {
+public interface ISysDeptService extends IServicePlus<SysDept> {
     /**
      * 鏌ヨ閮ㄩ棬绠$悊鏁版嵁
      *
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDictDataService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDictDataService.java
index 62babb2..7cf20f0 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDictDataService.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDictDataService.java
@@ -1,7 +1,8 @@
 package com.ruoyi.system.service;
 
-import com.baomidou.mybatisplus.extension.service.IService;
 import com.ruoyi.common.core.domain.entity.SysDictData;
+import com.ruoyi.common.core.page.IServicePlus;
+import com.ruoyi.common.core.page.TableDataInfo;
 
 import java.util.List;
 
@@ -10,7 +11,11 @@
  *
  * @author ruoyi
  */
-public interface ISysDictDataService extends IService<SysDictData> {
+public interface ISysDictDataService extends IServicePlus<SysDictData> {
+
+
+    TableDataInfo<SysDictData> selectPageDictDataList(SysDictData dictData);
+
     /**
      * 鏍规嵁鏉′欢鍒嗛〉鏌ヨ瀛楀吀鏁版嵁
      *
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDictTypeService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDictTypeService.java
index 8f5606e..87b3c88 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDictTypeService.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDictTypeService.java
@@ -1,8 +1,9 @@
 package com.ruoyi.system.service;
 
-import com.baomidou.mybatisplus.extension.service.IService;
 import com.ruoyi.common.core.domain.entity.SysDictData;
 import com.ruoyi.common.core.domain.entity.SysDictType;
+import com.ruoyi.common.core.page.IServicePlus;
+import com.ruoyi.common.core.page.TableDataInfo;
 
 import java.util.List;
 
@@ -11,7 +12,11 @@
  *
  * @author ruoyi
  */
-public interface ISysDictTypeService extends IService<SysDictType> {
+public interface ISysDictTypeService extends IServicePlus<SysDictType> {
+
+
+    TableDataInfo<SysDictType> selectPageDictTypeList(SysDictType dictType);
+
     /**
      * 鏍规嵁鏉′欢鍒嗛〉鏌ヨ瀛楀吀绫诲瀷
      *
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysLogininforService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysLogininforService.java
index 56eadf9..ccf0e9e 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysLogininforService.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysLogininforService.java
@@ -1,6 +1,7 @@
 package com.ruoyi.system.service;
 
-import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.common.core.page.IServicePlus;
+import com.ruoyi.common.core.page.TableDataInfo;
 import com.ruoyi.system.domain.SysLogininfor;
 
 import java.util.List;
@@ -10,7 +11,11 @@
  *
  * @author ruoyi
  */
-public interface ISysLogininforService extends IService<SysLogininfor> {
+public interface ISysLogininforService extends IServicePlus<SysLogininfor> {
+
+
+    TableDataInfo<SysLogininfor> selectPageLogininforList(SysLogininfor logininfor);
+
     /**
      * 鏂板绯荤粺鐧诲綍鏃ュ織
      *
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysMenuService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysMenuService.java
index 391cf19..a9f70b3 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysMenuService.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysMenuService.java
@@ -1,8 +1,8 @@
 package com.ruoyi.system.service;
 
-import com.baomidou.mybatisplus.extension.service.IService;
 import com.ruoyi.common.core.domain.TreeSelect;
 import com.ruoyi.common.core.domain.entity.SysMenu;
+import com.ruoyi.common.core.page.IServicePlus;
 import com.ruoyi.system.domain.vo.RouterVo;
 
 import java.util.List;
@@ -13,7 +13,7 @@
  *
  * @author ruoyi
  */
-public interface ISysMenuService extends IService<SysMenu> {
+public interface ISysMenuService extends IServicePlus<SysMenu> {
     /**
      * 鏍规嵁鐢ㄦ埛鏌ヨ绯荤粺鑿滃崟鍒楄〃
      *
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysNoticeService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysNoticeService.java
index 85df25b..4ede9bc 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysNoticeService.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysNoticeService.java
@@ -1,6 +1,7 @@
 package com.ruoyi.system.service;
 
-import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.common.core.page.IServicePlus;
+import com.ruoyi.common.core.page.TableDataInfo;
 import com.ruoyi.system.domain.SysNotice;
 
 import java.util.List;
@@ -10,7 +11,11 @@
  *
  * @author ruoyi
  */
-public interface ISysNoticeService extends IService<SysNotice> {
+public interface ISysNoticeService extends IServicePlus<SysNotice> {
+
+
+    TableDataInfo<SysNotice> selectPageNoticeList(SysNotice notice);
+
     /**
      * 鏌ヨ鍏憡淇℃伅
      *
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysOperLogService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysOperLogService.java
index a4950e2..f2485b7 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysOperLogService.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysOperLogService.java
@@ -1,6 +1,7 @@
 package com.ruoyi.system.service;
 
-import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.common.core.page.IServicePlus;
+import com.ruoyi.common.core.page.TableDataInfo;
 import com.ruoyi.system.domain.SysOperLog;
 
 import java.util.List;
@@ -10,7 +11,10 @@
  *
  * @author ruoyi
  */
-public interface ISysOperLogService extends IService<SysOperLog> {
+public interface ISysOperLogService extends IServicePlus<SysOperLog> {
+
+    TableDataInfo<SysOperLog> selectPageOperLogList(SysOperLog operLog);
+
     /**
      * 鏂板鎿嶄綔鏃ュ織
      *
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysPostService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysPostService.java
index 7119bf4..08058d6 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysPostService.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysPostService.java
@@ -1,6 +1,7 @@
 package com.ruoyi.system.service;
 
-import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.common.core.page.IServicePlus;
+import com.ruoyi.common.core.page.TableDataInfo;
 import com.ruoyi.system.domain.SysPost;
 
 import java.util.List;
@@ -10,7 +11,11 @@
  *
  * @author ruoyi
  */
-public interface ISysPostService extends IService<SysPost> {
+public interface ISysPostService extends IServicePlus<SysPost> {
+
+
+    TableDataInfo<SysPost> selectPagePostList(SysPost post);
+
     /**
      * 鏌ヨ宀椾綅淇℃伅闆嗗悎
      *
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysRoleService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysRoleService.java
index 48cb991..00c7d5f 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysRoleService.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysRoleService.java
@@ -1,7 +1,8 @@
 package com.ruoyi.system.service;
 
-import com.baomidou.mybatisplus.extension.service.IService;
 import com.ruoyi.common.core.domain.entity.SysRole;
+import com.ruoyi.common.core.page.IServicePlus;
+import com.ruoyi.common.core.page.TableDataInfo;
 
 import java.util.List;
 import java.util.Set;
@@ -11,7 +12,11 @@
  *
  * @author ruoyi
  */
-public interface ISysRoleService extends IService<SysRole> {
+public interface ISysRoleService extends IServicePlus<SysRole> {
+
+
+    TableDataInfo<SysRole> selectPageRoleList(SysRole role);
+
     /**
      * 鏍规嵁鏉′欢鍒嗛〉鏌ヨ瑙掕壊鏁版嵁
      *
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java
index 2cf6391..3f423a6 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java
@@ -1,7 +1,8 @@
 package com.ruoyi.system.service;
 
-import com.baomidou.mybatisplus.extension.service.IService;
 import com.ruoyi.common.core.domain.entity.SysUser;
+import com.ruoyi.common.core.page.IServicePlus;
+import com.ruoyi.common.core.page.TableDataInfo;
 
 import java.util.List;
 
@@ -10,7 +11,11 @@
  *
  * @author ruoyi
  */
-public interface ISysUserService extends IService<SysUser> {
+public interface ISysUserService extends IServicePlus<SysUser> {
+
+
+    TableDataInfo<SysUser> selectPageUserList(SysUser user);
+
     /**
      * 鏍规嵁鏉′欢鍒嗛〉鏌ヨ鐢ㄦ埛鍒楄〃
      *
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysConfigServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysConfigServiceImpl.java
index d5aeec2..fbf6ec8 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysConfigServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysConfigServiceImpl.java
@@ -8,9 +8,11 @@
 import com.ruoyi.common.annotation.DataSource;
 import com.ruoyi.common.constant.Constants;
 import com.ruoyi.common.constant.UserConstants;
+import com.ruoyi.common.core.page.TableDataInfo;
 import com.ruoyi.common.core.redis.RedisCache;
 import com.ruoyi.common.enums.DataSourceType;
 import com.ruoyi.common.exception.CustomException;
+import com.ruoyi.common.utils.PageUtils;
 import com.ruoyi.system.domain.SysConfig;
 import com.ruoyi.system.mapper.SysConfigMapper;
 import com.ruoyi.system.service.ISysConfigService;
@@ -43,6 +45,22 @@
         for (SysConfig config : configsList) {
             redisCache.setCacheObject(getCacheKey(config.getConfigKey()), config.getConfigValue());
         }
+    }
+
+    @Override
+    public TableDataInfo<SysConfig> selectPageConfigList(SysConfig config) {
+        Map<String, Object> params = config.getParams();
+        LambdaQueryWrapper<SysConfig> lqw = new LambdaQueryWrapper<SysConfig>()
+                .like(StrUtil.isNotBlank(config.getConfigName()), SysConfig::getConfigName, config.getConfigName())
+                .eq(StrUtil.isNotBlank(config.getConfigType()), SysConfig::getConfigType, config.getConfigType())
+                .like(StrUtil.isNotBlank(config.getConfigKey()), SysConfig::getConfigKey, config.getConfigKey())
+                .apply(Validator.isNotEmpty(params.get("beginTime")),
+                        "date_format(create_time,'%y%m%d') >= date_format(#{0},'%y%m%d')",
+                        params.get("beginTime"))
+                .apply(Validator.isNotEmpty(params.get("endTime")),
+                        "date_format(create_time,'%y%m%d') <= date_format(#{0},'%y%m%d')",
+                        params.get("endTime"));
+        return PageUtils.buildDataInfo(page(PageUtils.buildPage(), lqw));
     }
 
     /**
@@ -86,17 +104,17 @@
      */
     @Override
     public List<SysConfig> selectConfigList(SysConfig config) {
-        LambdaQueryWrapper<SysConfig> lqw = new LambdaQueryWrapper<>();
-        lqw.like(StrUtil.isNotBlank(config.getConfigName()), SysConfig::getConfigName, config.getConfigName());
-        lqw.eq(StrUtil.isNotBlank(config.getConfigType()), SysConfig::getConfigType, config.getConfigType());
-        lqw.like(StrUtil.isNotBlank(config.getConfigKey()), SysConfig::getConfigKey, config.getConfigKey());
         Map<String, Object> params = config.getParams();
-        lqw.apply(Validator.isNotEmpty(params.get("beginTime")),
-                "date_format(create_time,'%y%m%d') >= date_format(#{0},'%y%m%d')",
-                params.get("beginTime"));
-        lqw.apply(Validator.isNotEmpty(params.get("endTime")),
-                "date_format(create_time,'%y%m%d') >= date_format(#{0},'%y%m%d')",
-                params.get("endTime"));
+        LambdaQueryWrapper<SysConfig> lqw = new LambdaQueryWrapper<SysConfig>()
+                .like(StrUtil.isNotBlank(config.getConfigName()), SysConfig::getConfigName, config.getConfigName())
+                .eq(StrUtil.isNotBlank(config.getConfigType()), SysConfig::getConfigType, config.getConfigType())
+                .like(StrUtil.isNotBlank(config.getConfigKey()), SysConfig::getConfigKey, config.getConfigKey())
+                .apply(Validator.isNotEmpty(params.get("beginTime")),
+                        "date_format(create_time,'%y%m%d') >= date_format(#{0},'%y%m%d')",
+                        params.get("beginTime"))
+                .apply(Validator.isNotEmpty(params.get("endTime")),
+                        "date_format(create_time,'%y%m%d') >= date_format(#{0},'%y%m%d')",
+                        params.get("endTime"));
         return baseMapper.selectList(lqw);
     }
 
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictDataServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictDataServiceImpl.java
index aa5aebc..faae4aa 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictDataServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictDataServiceImpl.java
@@ -4,7 +4,9 @@
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ruoyi.common.core.domain.entity.SysDictData;
+import com.ruoyi.common.core.page.TableDataInfo;
 import com.ruoyi.common.utils.DictUtils;
+import com.ruoyi.common.utils.PageUtils;
 import com.ruoyi.system.mapper.SysDictDataMapper;
 import com.ruoyi.system.service.ISysDictDataService;
 import org.springframework.stereotype.Service;
@@ -20,6 +22,16 @@
 @Service
 public class SysDictDataServiceImpl extends ServiceImpl<SysDictDataMapper, SysDictData> implements ISysDictDataService {
 
+    @Override
+    public TableDataInfo<SysDictData> selectPageDictDataList(SysDictData dictData) {
+        LambdaQueryWrapper<SysDictData> lqw = new LambdaQueryWrapper<SysDictData>()
+                .eq(StrUtil.isNotBlank(dictData.getDictType()), SysDictData::getDictType, dictData.getDictType())
+                .like(StrUtil.isNotBlank(dictData.getDictLabel()), SysDictData::getDictLabel, dictData.getDictLabel())
+                .eq(StrUtil.isNotBlank(dictData.getStatus()), SysDictData::getStatus, dictData.getStatus())
+                .orderByAsc(SysDictData::getDictSort);
+        return PageUtils.buildDataInfo(page(PageUtils.buildPage(),lqw));
+    }
+
     /**
      * 鏍规嵁鏉′欢鍒嗛〉鏌ヨ瀛楀吀鏁版嵁
      *
@@ -28,7 +40,8 @@
      */
     @Override
     public List<SysDictData> selectDictDataList(SysDictData dictData) {
-        return list(new LambdaQueryWrapper<SysDictData>().eq(StrUtil.isNotBlank(dictData.getDictType()), SysDictData::getDictType, dictData.getDictType())
+        return list(new LambdaQueryWrapper<SysDictData>()
+                .eq(StrUtil.isNotBlank(dictData.getDictType()), SysDictData::getDictType, dictData.getDictType())
                 .like(StrUtil.isNotBlank(dictData.getDictLabel()), SysDictData::getDictLabel, dictData.getDictLabel())
                 .eq(StrUtil.isNotBlank(dictData.getStatus()), SysDictData::getStatus, dictData.getStatus())
                 .orderByAsc(SysDictData::getDictSort));
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictTypeServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictTypeServiceImpl.java
index 1949d30..87acff4 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictTypeServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictTypeServiceImpl.java
@@ -9,8 +9,10 @@
 import com.ruoyi.common.constant.UserConstants;
 import com.ruoyi.common.core.domain.entity.SysDictData;
 import com.ruoyi.common.core.domain.entity.SysDictType;
+import com.ruoyi.common.core.page.TableDataInfo;
 import com.ruoyi.common.exception.CustomException;
 import com.ruoyi.common.utils.DictUtils;
+import com.ruoyi.common.utils.PageUtils;
 import com.ruoyi.system.mapper.SysDictDataMapper;
 import com.ruoyi.system.mapper.SysDictTypeMapper;
 import com.ruoyi.system.service.ISysDictTypeService;
@@ -50,6 +52,22 @@
         }
     }
 
+    @Override
+    public TableDataInfo<SysDictType> selectPageDictTypeList(SysDictType dictType) {
+        Map<String, Object> params = dictType.getParams();
+        LambdaQueryWrapper<SysDictType> lqw = new LambdaQueryWrapper<SysDictType>()
+                .like(StrUtil.isNotBlank(dictType.getDictName()), SysDictType::getDictName, dictType.getDictName())
+                .eq(StrUtil.isNotBlank(dictType.getStatus()), SysDictType::getStatus, dictType.getStatus())
+                .like(StrUtil.isNotBlank(dictType.getDictType()), SysDictType::getDictType, dictType.getDictType())
+                .apply(Validator.isNotEmpty(params.get("beginTime")),
+                        "date_format(create_time,'%y%m%d') >= date_format({0},'%y%m%d')",
+                        params.get("beginTime"))
+                .apply(Validator.isNotEmpty(params.get("endTime")),
+                        "date_format(create_time,'%y%m%d') <= date_format({0},'%y%m%d')",
+                        params.get("endTime"));
+        return PageUtils.buildDataInfo(page(PageUtils.buildPage(),lqw));
+    }
+
     /**
      * 鏍规嵁鏉′欢鍒嗛〉鏌ヨ瀛楀吀绫诲瀷
      *
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysLogininforServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysLogininforServiceImpl.java
index 2c2c8e4..ff5d47d 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysLogininforServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysLogininforServiceImpl.java
@@ -4,6 +4,8 @@
 import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.common.core.page.TableDataInfo;
+import com.ruoyi.common.utils.PageUtils;
 import com.ruoyi.system.domain.SysLogininfor;
 import com.ruoyi.system.mapper.SysLogininforMapper;
 import com.ruoyi.system.service.ISysLogininforService;
@@ -22,6 +24,23 @@
 @Service
 public class SysLogininforServiceImpl extends ServiceImpl<SysLogininforMapper, SysLogininfor> implements ISysLogininforService {
 
+    @Override
+    public TableDataInfo<SysLogininfor> selectPageLogininforList(SysLogininfor logininfor) {
+        Map<String, Object> params = logininfor.getParams();
+        LambdaQueryWrapper<SysLogininfor> lqw = new LambdaQueryWrapper<SysLogininfor>()
+                .like(StrUtil.isNotBlank(logininfor.getIpaddr()), SysLogininfor::getIpaddr, logininfor.getIpaddr())
+                .eq(StrUtil.isNotBlank(logininfor.getStatus()), SysLogininfor::getStatus, logininfor.getStatus())
+                .like(StrUtil.isNotBlank(logininfor.getUserName()), SysLogininfor::getUserName, logininfor.getUserName())
+                .apply(Validator.isNotEmpty(params.get("beginTime")),
+                        "date_format(login_time,'%y%m%d') >= date_format({0},'%y%m%d')",
+                        params.get("beginTime"))
+                .apply(Validator.isNotEmpty(params.get("endTime")),
+                        "date_format(login_time,'%y%m%d') <= date_format({0},'%y%m%d')",
+                        params.get("endTime"))
+                .orderByDesc(SysLogininfor::getInfoId);
+        return PageUtils.buildDataInfo(page(PageUtils.buildPage(), lqw));
+    }
+
     /**
      * 鏂板绯荤粺鐧诲綍鏃ュ織
      *
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysNoticeServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysNoticeServiceImpl.java
index 04184d7..e063470 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysNoticeServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysNoticeServiceImpl.java
@@ -3,6 +3,8 @@
 import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.common.core.page.TableDataInfo;
+import com.ruoyi.common.utils.PageUtils;
 import com.ruoyi.system.domain.SysNotice;
 import com.ruoyi.system.mapper.SysNoticeMapper;
 import com.ruoyi.system.service.ISysNoticeService;
@@ -19,6 +21,15 @@
 @Service
 public class SysNoticeServiceImpl extends ServiceImpl<SysNoticeMapper, SysNotice> implements ISysNoticeService {
 
+    @Override
+    public TableDataInfo<SysNotice> selectPageNoticeList(SysNotice notice) {
+        LambdaQueryWrapper<SysNotice> lqw = new LambdaQueryWrapper<SysNotice>()
+                .like(StrUtil.isNotBlank(notice.getNoticeTitle()), SysNotice::getNoticeTitle, notice.getNoticeTitle())
+                .eq(StrUtil.isNotBlank(notice.getNoticeType()), SysNotice::getNoticeType, notice.getNoticeType())
+                .like(StrUtil.isNotBlank(notice.getCreateBy()), SysNotice::getCreateBy, notice.getCreateBy());
+        return PageUtils.buildDataInfo(page(PageUtils.buildPage(),lqw));
+    }
+
     /**
      * 鏌ヨ鍏憡淇℃伅
      *
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysOperLogServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysOperLogServiceImpl.java
index 95aaa52..0a3186e 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysOperLogServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysOperLogServiceImpl.java
@@ -5,6 +5,8 @@
 import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.common.core.page.TableDataInfo;
+import com.ruoyi.common.utils.PageUtils;
 import com.ruoyi.system.domain.SysOperLog;
 import com.ruoyi.system.mapper.SysOperLogMapper;
 import com.ruoyi.system.service.ISysOperLogService;
@@ -23,6 +25,31 @@
 @Service
 public class SysOperLogServiceImpl extends ServiceImpl<SysOperLogMapper, SysOperLog> implements ISysOperLogService {
 
+    @Override
+    public TableDataInfo<SysOperLog> selectPageOperLogList(SysOperLog operLog) {
+        Map<String, Object> params = operLog.getParams();
+        LambdaQueryWrapper<SysOperLog> lqw = new LambdaQueryWrapper<SysOperLog>()
+                .like(StrUtil.isNotBlank(operLog.getTitle()), SysOperLog::getTitle, operLog.getTitle())
+                .eq(operLog.getBusinessType() != null && operLog.getBusinessType() > 0,
+                        SysOperLog::getBusinessType, operLog.getBusinessType())
+                .func(f -> {
+                    if (ArrayUtil.isNotEmpty(operLog.getBusinessTypes())) {
+                        f.in(SysOperLog::getBusinessType, Arrays.asList(operLog.getBusinessTypes()));
+                    }
+                })
+                .eq(operLog.getStatus() != null && operLog.getStatus() > 0,
+                        SysOperLog::getStatus, operLog.getStatus())
+                .like(StrUtil.isNotBlank(operLog.getOperName()), SysOperLog::getOperName, operLog.getOperName())
+                .apply(Validator.isNotEmpty(params.get("beginTime")),
+                        "date_format(oper_time,'%y%m%d') >= date_format({0},'%y%m%d')",
+                        params.get("beginTime"))
+                .apply(Validator.isNotEmpty(params.get("endTime")),
+                        "date_format(oper_time,'%y%m%d') <= date_format({0},'%y%m%d')",
+                        params.get("endTime"))
+                .orderByDesc(SysOperLog::getOperId);
+        return PageUtils.buildDataInfo(page(PageUtils.buildPage(), lqw));
+    }
+
     /**
      * 鏂板鎿嶄綔鏃ュ織
      *
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysPostServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysPostServiceImpl.java
index 7d37fab..d2aeab0 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysPostServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysPostServiceImpl.java
@@ -5,7 +5,9 @@
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ruoyi.common.constant.UserConstants;
+import com.ruoyi.common.core.page.TableDataInfo;
 import com.ruoyi.common.exception.CustomException;
+import com.ruoyi.common.utils.PageUtils;
 import com.ruoyi.system.domain.SysPost;
 import com.ruoyi.system.domain.SysUserPost;
 import com.ruoyi.system.mapper.SysPostMapper;
@@ -28,6 +30,15 @@
     @Autowired
     private SysUserPostMapper userPostMapper;
 
+    @Override
+    public TableDataInfo<SysPost> selectPagePostList(SysPost post) {
+        LambdaQueryWrapper<SysPost> lqw = new LambdaQueryWrapper<SysPost>()
+                .like(StrUtil.isNotBlank(post.getPostCode()), SysPost::getPostCode, post.getPostCode())
+                .eq(StrUtil.isNotBlank(post.getStatus()), SysPost::getStatus, post.getStatus())
+                .like(StrUtil.isNotBlank(post.getPostName()), SysPost::getPostName, post.getPostName());
+        return PageUtils.buildDataInfo(page(PageUtils.buildPage(),lqw));
+    }
+
     /**
      * 鏌ヨ宀椾綅淇℃伅闆嗗悎
      *
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysRoleServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysRoleServiceImpl.java
index 814d96f..9d4b10a 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysRoleServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysRoleServiceImpl.java
@@ -1,13 +1,14 @@
 package com.ruoyi.system.service.impl;
 
 import cn.hutool.core.lang.Validator;
-import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ruoyi.common.annotation.DataScope;
 import com.ruoyi.common.constant.UserConstants;
 import com.ruoyi.common.core.domain.entity.SysRole;
+import com.ruoyi.common.core.page.TableDataInfo;
 import com.ruoyi.common.exception.CustomException;
+import com.ruoyi.common.utils.PageUtils;
 import com.ruoyi.common.utils.spring.SpringUtils;
 import com.ruoyi.system.domain.SysRoleDept;
 import com.ruoyi.system.domain.SysRoleMenu;
@@ -40,6 +41,12 @@
     @Autowired
     private SysRoleDeptMapper roleDeptMapper;
 
+    @Override
+    @DataScope(deptAlias = "d")
+    public TableDataInfo<SysRole> selectPageRoleList(SysRole role) {
+        return PageUtils.buildDataInfo(baseMapper.selectPageRoleList(PageUtils.buildPage(), role));
+    }
+
     /**
      * 鏍规嵁鏉′欢鍒嗛〉鏌ヨ瑙掕壊鏁版嵁
      *
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java
index aece9d0..466714b 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java
@@ -8,7 +8,9 @@
 import com.ruoyi.common.constant.UserConstants;
 import com.ruoyi.common.core.domain.entity.SysRole;
 import com.ruoyi.common.core.domain.entity.SysUser;
+import com.ruoyi.common.core.page.TableDataInfo;
 import com.ruoyi.common.exception.CustomException;
+import com.ruoyi.common.utils.PageUtils;
 import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.system.domain.SysPost;
 import com.ruoyi.system.domain.SysUserPost;
@@ -49,6 +51,12 @@
     @Autowired
     private ISysConfigService configService;
 
+    @Override
+    @DataScope(deptAlias = "d", userAlias = "u")
+    public TableDataInfo<SysUser> selectPageUserList(SysUser user) {
+        return PageUtils.buildDataInfo(baseMapper.selectPageUserList(PageUtils.buildPage(), user));
+    }
+
     /**
      * 鏍规嵁鏉′欢鍒嗛〉鏌ヨ鐢ㄦ埛鍒楄〃
      *
diff --git a/ruoyi-system/src/main/resources/mapper/system/SysRoleMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysRoleMapper.xml
index dca0ec0..2e7162f 100644
--- a/ruoyi-system/src/main/resources/mapper/system/SysRoleMapper.xml
+++ b/ruoyi-system/src/main/resources/mapper/system/SysRoleMapper.xml
@@ -39,6 +39,29 @@
                  left join sys_dept d on u.dept_id = d.dept_id
     </sql>
 
+    <select id="selectPageRoleList" parameterType="SysRole" resultMap="SysRoleResult">
+        <include refid="selectRoleVo"/>
+        where r.del_flag = '0'
+        <if test="role.roleName != null and role.roleName != ''">
+            AND r.role_name like concat('%', #{role.roleName}, '%')
+        </if>
+        <if test="role.status != null and role.status != ''">
+            AND r.status = #{role.status}
+        </if>
+        <if test="role.roleKey != null and role.roleKey != ''">
+            AND r.role_key like concat('%', #{role.roleKey}, '%')
+        </if>
+        <if test="role.params.beginTime != null and role.params.beginTime != ''"><!-- 寮�濮嬫椂闂存绱� -->
+            and date_format(r.create_time,'%y%m%d') &gt;= date_format(#{role.params.beginTime},'%y%m%d')
+        </if>
+        <if test="role.params.endTime != null and role.params.endTime != ''"><!-- 缁撴潫鏃堕棿妫�绱� -->
+            and date_format(r.create_time,'%y%m%d') &lt;= date_format(#{role.params.endTime},'%y%m%d')
+        </if>
+        <!-- 鏁版嵁鑼冨洿杩囨护 -->
+        ${role.params.dataScope}
+        order by r.role_sort
+    </select>
+
     <select id="selectRoleList" parameterType="SysRole" resultMap="SysRoleResult">
         <include refid="selectRoleVo"/>
         where r.del_flag = '0'
diff --git a/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml
index fb7500d..1135dee 100644
--- a/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml
+++ b/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml
@@ -80,6 +80,35 @@
                  left join sys_role r on r.role_id = ur.role_id
     </sql>
 
+    <select id="selectPageUserList" parameterType="SysUser" resultMap="SysUserResult">
+        select u.user_id, u.dept_id, u.nick_name, u.user_name, u.email, u.avatar, u.phonenumber, u.password, u.sex,
+        u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark, d.dept_name, d.leader from
+        sys_user u
+        left join sys_dept d on u.dept_id = d.dept_id
+        where u.del_flag = '0'
+        <if test="user.userName != null and user.userName != ''">
+            AND u.user_name like concat('%', #{user.userName}, '%')
+        </if>
+        <if test="user.status != null and user.status != ''">
+            AND u.status = #{user.status}
+        </if>
+        <if test="user.phonenumber != null and user.phonenumber != ''">
+            AND u.phonenumber like concat('%', #{user.phonenumber}, '%')
+        </if>
+        <if test="user.params.beginTime != null and user.params.beginTime != ''"><!-- 寮�濮嬫椂闂存绱� -->
+            AND date_format(u.create_time,'%y%m%d') &gt;= date_format(#{user.params.beginTime},'%y%m%d')
+        </if>
+        <if test="user.params.endTime != null and user.params.endTime != ''"><!-- 缁撴潫鏃堕棿妫�绱� -->
+            AND date_format(u.create_time,'%y%m%d') &lt;= date_format(#{user.params.endTime},'%y%m%d')
+        </if>
+        <if test="user.deptId != null and user.deptId != 0">
+            AND (u.dept_id = #{user.deptId} OR u.dept_id IN ( SELECT t.dept_id FROM sys_dept t WHERE find_in_set(#{user.deptId},
+            ancestors) ))
+        </if>
+        <!-- 鏁版嵁鑼冨洿杩囨护 -->
+        ${user.params.dataScope}
+    </select>
+
     <select id="selectUserList" parameterType="SysUser" resultMap="SysUserResult">
         select u.user_id, u.dept_id, u.nick_name, u.user_name, u.email, u.avatar, u.phonenumber, u.password, u.sex,
         u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark, d.dept_name, d.leader from
diff --git a/ruoyi-ui/package.json b/ruoyi-ui/package.json
index c48cb3b..313d721 100644
--- a/ruoyi-ui/package.json
+++ b/ruoyi-ui/package.json
@@ -1,6 +1,6 @@
 {
   "name": "ruoyi-vue-plus",
-  "version": "1.0.2",
+  "version": "2.0.0",
   "description": "RuoYi-Vue-Plus鍚庡彴绠$悊绯荤粺",
   "author": "LionLi",
   "license": "MIT",
diff --git a/ruoyi-ui/src/views/index.vue b/ruoyi-ui/src/views/index.vue
index 520e068..84921bc 100644
--- a/ruoyi-ui/src/views/index.vue
+++ b/ruoyi-ui/src/views/index.vue
@@ -4,7 +4,21 @@
       <el-col :sm="24" :lg="12" style="padding-left: 20px">
         <h2>RuoYi-Vue-Plus鍚庡彴绠$悊妗嗘灦</h2>
         <p>
-          鍩轰簬RuoYi-Vue闆嗘垚 Lombok+Mybatis-Plus+Undertow+knife4j+Hutool+Feign 閲嶅啓鎵�鏈夊師鐢熶笟鍔� 瀹氭湡涓嶳uoYi-Vue鍚屾
+          鍩轰簬 RuoYi-Vue 闆嗘垚 Mybatis-Plus Lombok Hutool 绛変究鎹峰紑鍙戝伐鍏� 閫傞厤閲嶅啓鐩稿叧涓氬姟 渚夸簬寮�鍙� 瀹氭湡涓� RuoYi-Vue 鍚屾
+          <br/>
+          * 鍓嶇寮�鍙戞鏋� Vue銆丒lement UI<br/>
+          * 鍚庣寮�鍙戞鏋� Spring Boot銆丷edis<br/>
+          * 瀹瑰櫒妗嗘灦 Undertow 鍩轰簬 Netty 鐨勯珮鎬ц兘瀹瑰櫒<br/>
+          * 鏉冮檺璁よ瘉妗嗘灦 Spring Security銆丣wt锛屾敮鎸佸缁堢璁よ瘉绯荤粺<br/>
+          * 鍏崇郴鏁版嵁搴� MySQL 閫傞厤 8.X<br/>
+          * 缂撳瓨鏁版嵁搴� Redis 閫傞厤 6.X<br/>
+          * 鏁版嵁搴撳紑鍙戞鏋� Mybatis-Plus 蹇�� CRUD 澧炲姞寮�鍙戞晥鐜� 鎻掍欢鍖栨敮鎸佸悇绫婚渶姹�<br/>
+          * 缃戠粶妗嗘灦 Feign銆丱kHttp3 鎺ュ彛鍖栫鐞� HTTP 璇锋眰<br/>
+          * 宸ュ叿绫绘鏋� Hutool銆丩ombok 鍑忓皯浠g爜鍐椾綑 澧炲姞瀹夊叏鎬�<br/>
+          * 鐩戞帶妗嗘灦 spring-boot-admin 鍏ㄦ柟浣嶆湇鍔$洃鎺�<br/>
+          * 鏍¢獙妗嗘灦 validation 澧炲己鎺ュ彛瀹夊叏鎬� 涓ヨ皑鎬�<br/>
+          * 鏂囨。妗嗘灦 knife4j 缇庡寲鎺ュ彛鏂囨。<br/>
+          * 浠g爜鐢熸垚鍣� 涓�閿敓鎴愬墠鍚庣浠g爜<br/>
         </p>
         <p>
           <b>褰撳墠鐗堟湰:</b> <span>v{{ version }}</span>
@@ -66,6 +80,36 @@
             <span>鏇存柊鏃ュ織</span>
           </div>
           <el-collapse accordion>
+            <el-collapse-item title="v2.0.0 - 2021-5-15">
+              <ol>
+                <li>springboot 鍗囩骇 2.3.10 渚濊禆鍏ㄩ潰鍗囩骇閫傞厤</li>
+                <li>add 澧炲姞鍒嗛〉宸ュ叿</li>
+                <li>add 澧炲姞 澧炲己Mapper 涓� 澧炲己Service 閲嶅啓涓氬姟閫傞厤</li>
+                <li>add 浠g爜鐢熸垚鍣� 澧炲姞鏍¢獙娉ㄨВ</li>
+                <li>update 浠g爜鐢熸垚鍣ㄤ慨鏀逛负MP鍒嗛〉</li>
+                <li>update 浣跨敤 MP 鍒嗛〉宸ュ叿 閲嶆瀯涓氬姟</li>
+                <li>update 閲嶅啓鏂囨。浠嬬粛</li>
+                <li>remove 绉婚櫎 pagehelper 鍒嗛〉宸ュ叿</li>
+                <li>fix 淇浠g爜鐢熸垚 鏁版嵁鏉冮檺闂</li>
+              </ol>
+            </el-collapse-item>
+            <el-collapse-item title="v1.0.2 - 2021-5-13">
+              <ol>
+                <li>update 鏇存柊鏁村悎鎵撳寘鏂囨。 閲嶆柊鎺掔増</li>
+                <li>fix vue涓巄oot鏁村悎鎵撳寘涓巃dmin椤甸潰璺敱鍐茬獊</li>
+              </ol>
+            </el-collapse-item>
+            <el-collapse-item title="v1.0.1 - 2021-5-11">
+              <ol>
+                <li>update 鏇存柊banner</li>
+                <li>update 閰嶇疆杞Щ鍒� yml 鏂囦欢 缁熶竴绠$悊</li>
+                <li>update 涓婁紶濯掍綋绫诲瀷娣诲姞瑙嗛鏍煎紡</li>
+                <li>update 鏍戠骇缁撴瀯鏇存柊瀛愯妭鐐逛娇鐢╮eplaceFirst</li>
+                <li>update 鍒犻櫎鎿嶄綔鏃ュ織璁板綍鏃ュ織</li>
+                <li>fix 淇瀵煎叆琛ㄦ潈闄愭爣璇�</li>
+                <li>fix 鏂囦欢涓婁紶鏃舵姤閿�</li>
+              </ol>
+            </el-collapse-item>
             <el-collapse-item title="v1.0.0 - 2021-5-10">
               <ol>
                 <li>RuoYi-Vue-Plus 鍚庡彴绠$悊绯荤粺姝e紡鍙戝竷</li>
@@ -96,7 +140,7 @@
   data() {
     return {
       // 鐗堟湰鍙�
-      version: "1.0.0",
+      version: "2.0.0",
     };
   },
   methods: {

--
Gitblit v1.9.3