From 3dff5299206a365ab4b61e9050aeb6b52a733433 Mon Sep 17 00:00:00 2001
From: AprilWind <2100166581@qq.com>
Date: 星期四, 27 六月 2024 17:46:17 +0800
Subject: [PATCH] !556 新增mybatis注释

---
 ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/handler/InjectionMetaObjectHandler.java        |   30 ++-
 ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/interceptor/PlusDataPermissionInterceptor.java |   70 ++++++++
 ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/helper/DataPermissionHelper.java               |   22 ++
 ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDataScopeServiceImpl.java                     |   18 +
 ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/core/mapper/BaseMapperPlus.java                |  159 ++++++++++++++++++-
 ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/handler/PlusDataPermissionHandler.java         |   55 ++++++
 ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/core/domain/BaseEntity.java                    |    1 
 ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/helper/DataBaseHelper.java                     |    5 
 ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/core/page/PageQuery.java                       |    6 
 ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/annotation/DataPermission.java                 |    7 
 ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/enums/DataBaseType.java                        |   11 +
 ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/handler/MybatisExceptionHandler.java           |    5 
 ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/enums/DataScopeType.java                       |   37 +++-
 ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/annotation/DataColumn.java                     |   13 +
 ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/core/page/TableDataInfo.java                   |   10 +
 15 files changed, 386 insertions(+), 63 deletions(-)

diff --git a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/annotation/DataColumn.java b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/annotation/DataColumn.java
index aca470f..f8c5cd0 100644
--- a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/annotation/DataColumn.java
+++ b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/annotation/DataColumn.java
@@ -3,9 +3,10 @@
 import java.lang.annotation.*;
 
 /**
- * 鏁版嵁鏉冮檺
- *
+ * 鏁版嵁鏉冮檺娉ㄨВ锛岀敤浜庢爣璁版暟鎹潈闄愮殑鍗犱綅绗﹀叧閿瓧鍜屾浛鎹㈠��
+ * <p>
  * 涓�涓敞瑙e彧鑳藉搴斾竴涓ā鏉�
+ * </p>
  *
  * @author Lion Li
  * @version 3.5.0
@@ -16,12 +17,16 @@
 public @interface DataColumn {
 
     /**
-     * 鍗犱綅绗﹀叧閿瓧
+     * 鏁版嵁鏉冮檺妯℃澘鐨勫崰浣嶇鍏抽敭瀛楋紝榛樿涓� "deptName"
+     *
+     * @return 鍗犱綅绗﹀叧閿瓧鏁扮粍
      */
     String[] key() default "deptName";
 
     /**
-     * 鍗犱綅绗︽浛鎹㈠��
+     * 鏁版嵁鏉冮檺妯℃澘鐨勫崰浣嶇鏇挎崲鍊硷紝榛樿涓� "dept_id"
+     *
+     * @return 鍗犱綅绗︽浛鎹㈠�兼暟缁�
      */
     String[] value() default "dept_id";
 
diff --git a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/annotation/DataPermission.java b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/annotation/DataPermission.java
index f4351e3..6fd3c3e 100644
--- a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/annotation/DataPermission.java
+++ b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/annotation/DataPermission.java
@@ -3,7 +3,7 @@
 import java.lang.annotation.*;
 
 /**
- * 鏁版嵁鏉冮檺缁�
+ * 鏁版嵁鏉冮檺缁勬敞瑙o紝鐢ㄤ簬鏍囪鏁版嵁鏉冮檺閰嶇疆鏁扮粍
  *
  * @author Lion Li
  * @version 3.5.0
@@ -13,6 +13,11 @@
 @Documented
 public @interface DataPermission {
 
+    /**
+     * 鏁版嵁鏉冮檺閰嶇疆鏁扮粍锛岀敤浜庢寚瀹氭暟鎹潈闄愮殑鍗犱綅绗﹀叧閿瓧鍜屾浛鎹㈠��
+     *
+     * @return 鏁版嵁鏉冮檺閰嶇疆鏁扮粍
+     */
     DataColumn[] value();
 
 }
diff --git a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/core/domain/BaseEntity.java b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/core/domain/BaseEntity.java
index 820b49a..13a7941 100644
--- a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/core/domain/BaseEntity.java
+++ b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/core/domain/BaseEntity.java
@@ -17,7 +17,6 @@
  *
  * @author Lion Li
  */
-
 @Data
 public class BaseEntity implements Serializable {
 
diff --git a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/core/mapper/BaseMapperPlus.java b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/core/mapper/BaseMapperPlus.java
index 3889250..a68d96f 100644
--- a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/core/mapper/BaseMapperPlus.java
+++ b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/core/mapper/BaseMapperPlus.java
@@ -34,20 +34,38 @@
 
     Log log = LogFactory.getLog(BaseMapperPlus.class);
 
+    /**
+     * 鑾峰彇褰撳墠瀹炰緥瀵硅薄鍏宠仈鐨勬硾鍨嬬被鍨� V 鐨� Class 瀵硅薄
+     *
+     * @return 杩斿洖褰撳墠瀹炰緥瀵硅薄鍏宠仈鐨勬硾鍨嬬被鍨� V 鐨� Class 瀵硅薄
+     */
     default Class<V> currentVoClass() {
         return (Class<V>) GenericTypeUtils.resolveTypeArguments(this.getClass(), BaseMapperPlus.class)[1];
     }
 
+    /**
+     * 鑾峰彇褰撳墠瀹炰緥瀵硅薄鍏宠仈鐨勬硾鍨嬬被鍨� T 鐨� Class 瀵硅薄
+     *
+     * @return 杩斿洖褰撳墠瀹炰緥瀵硅薄鍏宠仈鐨勬硾鍨嬬被鍨� T 鐨� Class 瀵硅薄
+     */
     default Class<T> currentModelClass() {
         return (Class<T>) GenericTypeUtils.resolveTypeArguments(this.getClass(), BaseMapperPlus.class)[0];
     }
 
+    /**
+     * 浣跨敤榛樿鐨勬煡璇㈡潯浠舵煡璇㈠苟杩斿洖缁撴灉鍒楄〃
+     *
+     * @return 杩斿洖鏌ヨ缁撴灉鐨勫垪琛�
+     */
     default List<T> selectList() {
         return this.selectList(new QueryWrapper<>());
     }
 
     /**
-     * 鎵归噺鎻掑叆
+     * 鎵归噺鎻掑叆瀹炰綋瀵硅薄闆嗗悎
+     *
+     * @param entityList 瀹炰綋瀵硅薄闆嗗悎
+     * @return 鎻掑叆鎿嶄綔鏄惁鎴愬姛鐨勫竷灏斿��
      */
     default boolean insertBatch(Collection<T> entityList) {
         Db.saveBatch(entityList);
@@ -56,7 +74,10 @@
     }
 
     /**
-     * 鎵归噺鏇存柊
+     * 鎵归噺鏍规嵁ID鏇存柊瀹炰綋瀵硅薄闆嗗悎
+     *
+     * @param entityList 瀹炰綋瀵硅薄闆嗗悎
+     * @return 鏇存柊鎿嶄綔鏄惁鎴愬姛鐨勫竷灏斿��
      */
     default boolean updateBatchById(Collection<T> entityList) {
         Db.updateBatchById(entityList);
@@ -65,7 +86,10 @@
     }
 
     /**
-     * 鎵归噺鎻掑叆鎴栨洿鏂�
+     * 鎵归噺鎻掑叆鎴栨洿鏂板疄浣撳璞¢泦鍚�
+     *
+     * @param entityList 瀹炰綋瀵硅薄闆嗗悎
+     * @return 鎻掑叆鎴栨洿鏂版搷浣滄槸鍚︽垚鍔熺殑甯冨皵鍊�
      */
     default boolean insertOrUpdateBatch(Collection<T> entityList) {
         Db.saveOrUpdateBatch(entityList);
@@ -74,7 +98,11 @@
     }
 
     /**
-     * 鎵归噺鎻掑叆(鍖呭惈闄愬埗鏉℃暟)
+     * 鎵归噺鎻掑叆瀹炰綋瀵硅薄闆嗗悎骞舵寚瀹氭壒澶勭悊澶у皬
+     *
+     * @param entityList 瀹炰綋瀵硅薄闆嗗悎
+     * @param batchSize  鎵瑰鐞嗗ぇ灏�
+     * @return 鎻掑叆鎿嶄綔鏄惁鎴愬姛鐨勫竷灏斿��
      */
     default boolean insertBatch(Collection<T> entityList, int batchSize) {
         Db.saveBatch(entityList, batchSize);
@@ -83,7 +111,11 @@
     }
 
     /**
-     * 鎵归噺鏇存柊(鍖呭惈闄愬埗鏉℃暟)
+     * 鎵归噺鏍规嵁ID鏇存柊瀹炰綋瀵硅薄闆嗗悎骞舵寚瀹氭壒澶勭悊澶у皬
+     *
+     * @param entityList 瀹炰綋瀵硅薄闆嗗悎
+     * @param batchSize  鎵瑰鐞嗗ぇ灏�
+     * @return 鏇存柊鎿嶄綔鏄惁鎴愬姛鐨勫竷灏斿��
      */
     default boolean updateBatchById(Collection<T> entityList, int batchSize) {
         Db.updateBatchById(entityList, batchSize);
@@ -92,7 +124,11 @@
     }
 
     /**
-     * 鎵归噺鎻掑叆鎴栨洿鏂�(鍖呭惈闄愬埗鏉℃暟)
+     * 鎵归噺鎻掑叆鎴栨洿鏂板疄浣撳璞¢泦鍚堝苟鎸囧畾鎵瑰鐞嗗ぇ灏�
+     *
+     * @param entityList 瀹炰綋瀵硅薄闆嗗悎
+     * @param batchSize  鎵瑰鐞嗗ぇ灏�
+     * @return 鎻掑叆鎴栨洿鏂版搷浣滄槸鍚︽垚鍔熺殑甯冨皵鍊�
      */
     default boolean insertOrUpdateBatch(Collection<T> entityList, int batchSize) {
         Db.saveOrUpdateBatch(entityList, batchSize);
@@ -100,12 +136,23 @@
         return true;
     }
 
+    /**
+     * 鏍规嵁ID鏌ヨ鍗曚釜VO瀵硅薄
+     *
+     * @param id 涓婚敭ID
+     * @return 鏌ヨ鍒扮殑鍗曚釜VO瀵硅薄
+     */
     default V selectVoById(Serializable id) {
         return selectVoById(id, this.currentVoClass());
     }
 
     /**
-     * 鏍规嵁 ID 鏌ヨ
+     * 鏍规嵁ID鏌ヨ鍗曚釜VO瀵硅薄骞跺皢鍏惰浆鎹负鎸囧畾鐨刅O绫�
+     *
+     * @param id      涓婚敭ID
+     * @param voClass 瑕佽浆鎹㈢殑VO绫荤殑Class瀵硅薄
+     * @param <C>     VO绫荤殑绫诲瀷
+     * @return 鏌ヨ鍒扮殑鍗曚釜VO瀵硅薄锛岀粡杩囪浆鎹负鎸囧畾鐨刅O绫诲悗杩斿洖
      */
     default <C> C selectVoById(Serializable id, Class<C> voClass) {
         T obj = this.selectById(id);
@@ -115,12 +162,23 @@
         return MapstructUtils.convert(obj, voClass);
     }
 
+    /**
+     * 鏍规嵁ID闆嗗悎鎵归噺鏌ヨVO瀵硅薄鍒楄〃
+     *
+     * @param idList 涓婚敭ID闆嗗悎
+     * @return 鏌ヨ鍒扮殑VO瀵硅薄鍒楄〃
+     */
     default List<V> selectVoBatchIds(Collection<? extends Serializable> idList) {
         return selectVoBatchIds(idList, this.currentVoClass());
     }
 
     /**
-     * 鏌ヨ锛堟牴鎹甀D 鎵归噺鏌ヨ锛�
+     * 鏍规嵁ID闆嗗悎鎵归噺鏌ヨ瀹炰綋瀵硅薄鍒楄〃锛屽苟灏嗗叾杞崲涓烘寚瀹氱殑VO瀵硅薄鍒楄〃
+     *
+     * @param idList  涓婚敭ID闆嗗悎
+     * @param voClass 瑕佽浆鎹㈢殑VO绫荤殑Class瀵硅薄
+     * @param <C>     VO绫荤殑绫诲瀷
+     * @return 鏌ヨ鍒扮殑VO瀵硅薄鍒楄〃锛岀粡杩囪浆鎹负鎸囧畾鐨刅O绫诲悗杩斿洖
      */
     default <C> List<C> selectVoBatchIds(Collection<? extends Serializable> idList, Class<C> voClass) {
         List<T> list = this.selectBatchIds(idList);
@@ -130,12 +188,23 @@
         return MapstructUtils.convert(list, voClass);
     }
 
+    /**
+     * 鏍规嵁鏌ヨ鏉′欢Map鏌ヨVO瀵硅薄鍒楄〃
+     *
+     * @param map 鏌ヨ鏉′欢Map
+     * @return 鏌ヨ鍒扮殑VO瀵硅薄鍒楄〃
+     */
     default List<V> selectVoByMap(Map<String, Object> map) {
         return selectVoByMap(map, this.currentVoClass());
     }
 
     /**
-     * 鏌ヨ锛堟牴鎹� columnMap 鏉′欢锛�
+     * 鏍规嵁鏌ヨ鏉′欢Map鏌ヨ瀹炰綋瀵硅薄鍒楄〃锛屽苟灏嗗叾杞崲涓烘寚瀹氱殑VO瀵硅薄鍒楄〃
+     *
+     * @param map     鏌ヨ鏉′欢Map
+     * @param voClass 瑕佽浆鎹㈢殑VO绫荤殑Class瀵硅薄
+     * @param <C>     VO绫荤殑绫诲瀷
+     * @return 鏌ヨ鍒扮殑VO瀵硅薄鍒楄〃锛岀粡杩囪浆鎹负鎸囧畾鐨刅O绫诲悗杩斿洖
      */
     default <C> List<C> selectVoByMap(Map<String, Object> map, Class<C> voClass) {
         List<T> list = this.selectByMap(map);
@@ -145,23 +214,47 @@
         return MapstructUtils.convert(list, voClass);
     }
 
+    /**
+     * 鏍规嵁鏉′欢鏌ヨ鍗曚釜VO瀵硅薄
+     *
+     * @param wrapper 鏌ヨ鏉′欢Wrapper
+     * @return 鏌ヨ鍒扮殑鍗曚釜VO瀵硅薄
+     */
     default V selectVoOne(Wrapper<T> wrapper) {
         return selectVoOne(wrapper, this.currentVoClass());
     }
 
+    /**
+     * 鏍规嵁鏉′欢鏌ヨ鍗曚釜VO瀵硅薄锛屽苟鏍规嵁闇�瑕佸喅瀹氭槸鍚︽姏鍑哄紓甯�
+     *
+     * @param wrapper 鏌ヨ鏉′欢Wrapper
+     * @param throwEx 鏄惁鎶涘嚭寮傚父鐨勬爣蹇�
+     * @return 鏌ヨ鍒扮殑鍗曚釜VO瀵硅薄
+     */
     default V selectVoOne(Wrapper<T> wrapper, boolean throwEx) {
         return selectVoOne(wrapper, this.currentVoClass(), throwEx);
     }
 
     /**
-     * 鏍规嵁 entity 鏉′欢锛屾煡璇竴鏉¤褰�
+     * 鏍规嵁鏉′欢鏌ヨ鍗曚釜VO瀵硅薄锛屽苟鎸囧畾杩斿洖鐨刅O瀵硅薄鐨勭被鍨�
+     *
+     * @param wrapper 鏌ヨ鏉′欢Wrapper
+     * @param voClass 杩斿洖鐨刅O瀵硅薄鐨凜lass瀵硅薄
+     * @param <C>     杩斿洖鐨刅O瀵硅薄鐨勭被鍨�
+     * @return 鏌ヨ鍒扮殑鍗曚釜VO瀵硅薄锛岀粡杩囩被鍨嬭浆鎹负鎸囧畾鐨刅O绫诲悗杩斿洖
      */
     default <C> C selectVoOne(Wrapper<T> wrapper, Class<C> voClass) {
         return selectVoOne(wrapper, voClass, true);
     }
 
     /**
-     * 鏍规嵁 entity 鏉′欢锛屾煡璇竴鏉¤褰�
+     * 鏍规嵁鏉′欢鏌ヨ鍗曚釜瀹炰綋瀵硅薄锛屽苟灏嗗叾杞崲涓烘寚瀹氱殑VO瀵硅薄
+     *
+     * @param wrapper 鏌ヨ鏉′欢Wrapper
+     * @param voClass 瑕佽浆鎹㈢殑VO绫荤殑Class瀵硅薄
+     * @param throwEx 鏄惁鎶涘嚭寮傚父鐨勬爣蹇�
+     * @param <C>     VO绫荤殑绫诲瀷
+     * @return 鏌ヨ鍒扮殑鍗曚釜VO瀵硅薄锛岀粡杩囪浆鎹负鎸囧畾鐨刅O绫诲悗杩斿洖
      */
     default <C> C selectVoOne(Wrapper<T> wrapper, Class<C> voClass, boolean throwEx) {
         T obj = this.selectOne(wrapper, throwEx);
@@ -171,16 +264,32 @@
         return MapstructUtils.convert(obj, voClass);
     }
 
+    /**
+     * 鏌ヨ鎵�鏈塚O瀵硅薄鍒楄〃
+     *
+     * @return 鏌ヨ鍒扮殑VO瀵硅薄鍒楄〃
+     */
     default List<V> selectVoList() {
         return selectVoList(new QueryWrapper<>(), this.currentVoClass());
     }
 
+    /**
+     * 鏍规嵁鏉′欢鏌ヨVO瀵硅薄鍒楄〃
+     *
+     * @param wrapper 鏌ヨ鏉′欢Wrapper
+     * @return 鏌ヨ鍒扮殑VO瀵硅薄鍒楄〃
+     */
     default List<V> selectVoList(Wrapper<T> wrapper) {
         return selectVoList(wrapper, this.currentVoClass());
     }
 
     /**
-     * 鏍规嵁 entity 鏉′欢锛屾煡璇㈠叏閮ㄨ褰�
+     * 鏍规嵁鏉′欢鏌ヨ瀹炰綋瀵硅薄鍒楄〃锛屽苟灏嗗叾杞崲涓烘寚瀹氱殑VO瀵硅薄鍒楄〃
+     *
+     * @param wrapper 鏌ヨ鏉′欢Wrapper
+     * @param voClass 瑕佽浆鎹㈢殑VO绫荤殑Class瀵硅薄
+     * @param <C>     VO绫荤殑绫诲瀷
+     * @return 鏌ヨ鍒扮殑VO瀵硅薄鍒楄〃锛岀粡杩囪浆鎹负鎸囧畾鐨刅O绫诲悗杩斿洖
      */
     default <C> List<C> selectVoList(Wrapper<T> wrapper, Class<C> voClass) {
         List<T> list = this.selectList(wrapper);
@@ -190,15 +299,31 @@
         return MapstructUtils.convert(list, voClass);
     }
 
+    /**
+     * 鏍规嵁鏉′欢鍒嗛〉鏌ヨVO瀵硅薄鍒楄〃
+     *
+     * @param page    鍒嗛〉淇℃伅
+     * @param wrapper 鏌ヨ鏉′欢Wrapper
+     * @return 鏌ヨ鍒扮殑VO瀵硅薄鍒嗛〉鍒楄〃
+     */
     default <P extends IPage<V>> P selectVoPage(IPage<T> page, Wrapper<T> wrapper) {
         return selectVoPage(page, wrapper, this.currentVoClass());
     }
 
     /**
-     * 鍒嗛〉鏌ヨVO
+     * 鏍规嵁鏉′欢鍒嗛〉鏌ヨ瀹炰綋瀵硅薄鍒楄〃锛屽苟灏嗗叾杞崲涓烘寚瀹氱殑VO瀵硅薄鍒嗛〉鍒楄〃
+     *
+     * @param page    鍒嗛〉淇℃伅
+     * @param wrapper 鏌ヨ鏉′欢Wrapper
+     * @param voClass 瑕佽浆鎹㈢殑VO绫荤殑Class瀵硅薄
+     * @param <C>     VO绫荤殑绫诲瀷
+     * @param <P>     VO瀵硅薄鍒嗛〉鍒楄〃鐨勭被鍨�
+     * @return 鏌ヨ鍒扮殑VO瀵硅薄鍒嗛〉鍒楄〃锛岀粡杩囪浆鎹负鎸囧畾鐨刅O绫诲悗杩斿洖
      */
     default <C, P extends IPage<C>> P selectVoPage(IPage<T> page, Wrapper<T> wrapper, Class<C> voClass) {
+        // 鏍规嵁鏉′欢鍒嗛〉鏌ヨ瀹炰綋瀵硅薄鍒楄〃
         List<T> list = this.selectList(page, wrapper);
+        // 鍒涘缓涓�涓柊鐨刅O瀵硅薄鍒嗛〉鍒楄〃锛屽苟璁剧疆鍒嗛〉淇℃伅
         IPage<C> voPage = new Page<>(page.getCurrent(), page.getSize(), page.getTotal());
         if (CollUtil.isEmpty(list)) {
             return (P) voPage;
@@ -207,6 +332,14 @@
         return (P) voPage;
     }
 
+    /**
+     * 鏍规嵁鏉′欢鏌ヨ绗﹀悎鏉′欢鐨勫璞★紝骞跺皢鍏惰浆鎹负鎸囧畾绫诲瀷鐨勫璞″垪琛�
+     *
+     * @param wrapper 鏌ヨ鏉′欢Wrapper
+     * @param mapper  杞崲鍑芥暟锛岀敤浜庡皢鏌ヨ鍒扮殑瀵硅薄杞崲涓烘寚瀹氱被鍨嬬殑瀵硅薄
+     * @param <C>     瑕佽浆鎹㈢殑瀵硅薄鐨勭被鍨�
+     * @return 鏌ヨ鍒扮殑绗﹀悎鏉′欢鐨勫璞″垪琛紝缁忚繃杞崲涓烘寚瀹氱被鍨嬬殑瀵硅薄鍚庤繑鍥�
+     */
     default <C> List<C> selectObjs(Wrapper<T> wrapper, Function<? super Object, C> mapper) {
         return this.selectObjs(wrapper).stream().filter(Objects::nonNull).map(mapper).collect(Collectors.toList());
     }
diff --git a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/core/page/PageQuery.java b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/core/page/PageQuery.java
index 40b7530..6ca9b27 100644
--- a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/core/page/PageQuery.java
+++ b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/core/page/PageQuery.java
@@ -4,10 +4,10 @@
 import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.core.metadata.OrderItem;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import lombok.Data;
 import org.dromara.common.core.exception.ServiceException;
 import org.dromara.common.core.utils.StringUtils;
 import org.dromara.common.core.utils.sql.SqlUtil;
-import lombok.Data;
 
 import java.io.Serial;
 import java.io.Serializable;
@@ -19,7 +19,6 @@
  *
  * @author Lion Li
  */
-
 @Data
 public class PageQuery implements Serializable {
 
@@ -56,6 +55,9 @@
      */
     public static final int DEFAULT_PAGE_SIZE = Integer.MAX_VALUE;
 
+    /**
+     * 鏋勫缓鍒嗛〉瀵硅薄
+     */
     public <T> Page<T> build() {
         Integer pageNum = ObjectUtil.defaultIfNull(getPageNum(), DEFAULT_PAGE_NUM);
         Integer pageSize = ObjectUtil.defaultIfNull(getPageSize(), DEFAULT_PAGE_SIZE);
diff --git a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/core/page/TableDataInfo.java b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/core/page/TableDataInfo.java
index a4b6799..8ecfb54 100644
--- a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/core/page/TableDataInfo.java
+++ b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/core/page/TableDataInfo.java
@@ -14,7 +14,6 @@
  *
  * @author Lion Li
  */
-
 @Data
 @NoArgsConstructor
 public class TableDataInfo<T> implements Serializable {
@@ -53,6 +52,9 @@
         this.total = total;
     }
 
+    /**
+     * 鏍规嵁鍒嗛〉瀵硅薄鏋勫缓琛ㄦ牸鍒嗛〉鏁版嵁瀵硅薄
+     */
     public static <T> TableDataInfo<T> build(IPage<T> page) {
         TableDataInfo<T> rspData = new TableDataInfo<>();
         rspData.setCode(HttpStatus.HTTP_OK);
@@ -62,6 +64,9 @@
         return rspData;
     }
 
+    /**
+     * 鏍规嵁鏁版嵁鍒楄〃鏋勫缓琛ㄦ牸鍒嗛〉鏁版嵁瀵硅薄
+     */
     public static <T> TableDataInfo<T> build(List<T> list) {
         TableDataInfo<T> rspData = new TableDataInfo<>();
         rspData.setCode(HttpStatus.HTTP_OK);
@@ -71,6 +76,9 @@
         return rspData;
     }
 
+    /**
+     * 鏋勫缓琛ㄦ牸鍒嗛〉鏁版嵁瀵硅薄
+     */
     public static <T> TableDataInfo<T> build() {
         TableDataInfo<T> rspData = new TableDataInfo<>();
         rspData.setCode(HttpStatus.HTTP_OK);
diff --git a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/enums/DataBaseType.java b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/enums/DataBaseType.java
index 93487e9..5084424 100644
--- a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/enums/DataBaseType.java
+++ b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/enums/DataBaseType.java
@@ -1,8 +1,8 @@
 package org.dromara.common.mybatis.enums;
 
-import org.dromara.common.core.utils.StringUtils;
 import lombok.AllArgsConstructor;
 import lombok.Getter;
+import org.dromara.common.core.utils.StringUtils;
 
 /**
  * 鏁版嵁搴撶被鍨�
@@ -33,8 +33,17 @@
      */
     SQL_SERVER("Microsoft SQL Server");
 
+    /**
+     * 鏁版嵁搴撶被鍨�
+     */
     private final String type;
 
+    /**
+     * 鏍规嵁鏁版嵁搴撲骇鍝佸悕绉版煡鎵惧搴旂殑鏁版嵁搴撶被鍨�
+     *
+     * @param databaseProductName 鏁版嵁搴撲骇鍝佸悕绉�
+     * @return 瀵瑰簲鐨勬暟鎹簱绫诲瀷鏋氫妇鍊硷紝濡傛灉鏈壘鍒板垯杩斿洖 null
+     */
     public static DataBaseType find(String databaseProductName) {
         if (StringUtils.isBlank(databaseProductName)) {
             return null;
diff --git a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/enums/DataScopeType.java b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/enums/DataScopeType.java
index 9ea66b0..455cecb 100644
--- a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/enums/DataScopeType.java
+++ b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/enums/DataScopeType.java
@@ -1,19 +1,22 @@
 package org.dromara.common.mybatis.enums;
 
-import org.dromara.common.core.utils.StringUtils;
 import lombok.AllArgsConstructor;
 import lombok.Getter;
+import org.dromara.common.core.domain.model.LoginUser;
+import org.dromara.common.core.utils.StringUtils;
 import org.dromara.common.mybatis.helper.DataPermissionHelper;
 
 /**
- * 鏁版嵁鏉冮檺绫诲瀷
+ * 鏁版嵁鏉冮檺绫诲瀷鏋氫妇
  * <p>
- * 璇硶鏀寔 spel 妯℃澘琛ㄨ揪寮�
- * <p>
- * 鍐呯疆鏁版嵁 user 褰撳墠鐢ㄦ埛 鍐呭鍙傝�� LoginUser
- * 濡傞渶鎵╁睍鏁版嵁 鍙娇鐢� {@link DataPermissionHelper} 鎿嶄綔
- * 鍐呯疆鏈嶅姟 sdss 绯荤粺鏁版嵁鏉冮檺鏈嶅姟 鍐呭鍙傝�� SysDataScopeService
- * 濡傞渶鎵╁睍鏇村鑷畾涔夋湇鍔� 鍙互鍙傝�� sdss 鑷缂栧啓
+ * 鏀寔浣跨敤 SpEL 妯℃澘琛ㄨ揪寮忓畾涔� SQL 鏌ヨ鏉′欢
+ * 鍐呯疆鏁版嵁锛�
+ * - {@code user}: 褰撳墠鐧诲綍鐢ㄦ埛淇℃伅锛屽弬鑰� {@link LoginUser}
+ * 鍐呯疆鏈嶅姟锛�
+ * - {@code sdss}: 绯荤粺鏁版嵁鏉冮檺鏈嶅姟锛屽弬鑰� {@link ISysDataScopeService}
+ * 濡傞渶鎵╁睍鏁版嵁锛屽彲浠ラ�氳繃 {@link DataPermissionHelper} 杩涜鎿嶄綔
+ * 濡傞渶鎵╁睍鏈嶅姟锛屽彲浠ラ�氳繃 {@link ISysDataScopeService} 鑷缂栧啓
+ * </p>
  *
  * @author Lion Li
  * @version 3.5.0
@@ -29,36 +32,50 @@
 
     /**
      * 鑷畾鏁版嵁鏉冮檺
+     * 浣跨敤 SpEL 琛ㄨ揪寮忥細`#{#deptName} IN ( #{@sdss.getRoleCustom( #user.roleId )} )`
+     * 濡傛灉涓嶆弧瓒虫潯浠讹紝鍒欎娇鐢ㄩ粯璁� SQL 琛ㄨ揪寮忥細`1 = 0`
      */
     CUSTOM("2", " #{#deptName} IN ( #{@sdss.getRoleCustom( #user.roleId )} ) ", " 1 = 0 "),
 
     /**
      * 閮ㄩ棬鏁版嵁鏉冮檺
+     * 浣跨敤 SpEL 琛ㄨ揪寮忥細`#{#deptName} = #{#user.deptId}`
+     * 濡傛灉涓嶆弧瓒虫潯浠讹紝鍒欎娇鐢ㄩ粯璁� SQL 琛ㄨ揪寮忥細`1 = 0`
      */
     DEPT("3", " #{#deptName} = #{#user.deptId} ", " 1 = 0 "),
 
     /**
      * 閮ㄩ棬鍙婁互涓嬫暟鎹潈闄�
+     * 浣跨敤 SpEL 琛ㄨ揪寮忥細`#{#deptName} IN ( #{@sdss.getDeptAndChild( #user.deptId )}`
+     * 濡傛灉涓嶆弧瓒虫潯浠讹紝鍒欎娇鐢ㄩ粯璁� SQL 琛ㄨ揪寮忥細`1 = 0`
      */
     DEPT_AND_CHILD("4", " #{#deptName} IN ( #{@sdss.getDeptAndChild( #user.deptId )} )", " 1 = 0 "),
 
     /**
      * 浠呮湰浜烘暟鎹潈闄�
+     * 浣跨敤 SpEL 琛ㄨ揪寮忥細`#{#userName} = #{#user.userId}`
+     * 濡傛灉涓嶆弧瓒虫潯浠讹紝鍒欎娇鐢ㄩ粯璁� SQL 琛ㄨ揪寮忥細`1 = 0`
      */
     SELF("5", " #{#userName} = #{#user.userId} ", " 1 = 0 ");
 
     private final String code;
 
     /**
-     * 璇硶 閲囩敤 spel 妯℃澘琛ㄨ揪寮�
+     * SpEL 妯℃澘琛ㄨ揪寮忥紝鐢ㄤ簬鏋勫缓 SQL 鏌ヨ鏉′欢
      */
     private final String sqlTemplate;
 
     /**
-     * 涓嶆弧瓒� sqlTemplate 鍒欏~鍏�
+     * 濡傛灉涓嶆弧瓒� {@code sqlTemplate} 鐨勬潯浠讹紝鍒欎娇鐢ㄦ榛樿 SQL 琛ㄨ揪寮�
      */
     private final String elseSql;
 
+    /**
+     * 鏍规嵁鏋氫妇浠g爜鏌ユ壘瀵瑰簲鐨勬灇涓惧��
+     *
+     * @param code 鏋氫妇浠g爜
+     * @return 瀵瑰簲鐨勬灇涓惧�硷紝濡傛灉鏈壘鍒板垯杩斿洖 null
+     */
     public static DataScopeType findCode(String code) {
         if (StringUtils.isBlank(code)) {
             return null;
diff --git a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/handler/InjectionMetaObjectHandler.java b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/handler/InjectionMetaObjectHandler.java
index a66908f..99e6b38 100644
--- a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/handler/InjectionMetaObjectHandler.java
+++ b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/handler/InjectionMetaObjectHandler.java
@@ -3,12 +3,12 @@
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.http.HttpStatus;
 import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.ibatis.reflection.MetaObject;
 import org.dromara.common.core.domain.model.LoginUser;
 import org.dromara.common.core.exception.ServiceException;
 import org.dromara.common.mybatis.core.domain.BaseEntity;
 import org.dromara.common.satoken.utils.LoginHelper;
-import lombok.extern.slf4j.Slf4j;
-import org.apache.ibatis.reflection.MetaObject;
 
 import java.util.Date;
 
@@ -21,21 +21,28 @@
 @Slf4j
 public class InjectionMetaObjectHandler implements MetaObjectHandler {
 
+    /**
+     * 鎻掑叆濉厖鏂规硶锛岀敤浜庡湪鎻掑叆鏁版嵁鏃惰嚜鍔ㄥ~鍏呭疄浣撳璞′腑鐨勫垱寤烘椂闂淬�佹洿鏂版椂闂淬�佸垱寤轰汉銆佹洿鏂颁汉绛変俊鎭�
+     *
+     * @param metaObject 鍏冨璞★紝鐢ㄤ簬鑾峰彇鍘熷瀵硅薄骞惰繘琛屽~鍏�
+     */
     @Override
     public void insertFill(MetaObject metaObject) {
         try {
             if (ObjectUtil.isNotNull(metaObject) && metaObject.getOriginalObject() instanceof BaseEntity baseEntity) {
+                // 鑾峰彇褰撳墠鏃堕棿浣滀负鍒涘缓鏃堕棿鍜屾洿鏂版椂闂达紝濡傛灉鍒涘缓鏃堕棿涓嶄负绌猴紝鍒欎娇鐢ㄥ垱寤烘椂闂达紝鍚﹀垯浣跨敤褰撳墠鏃堕棿
                 Date current = ObjectUtil.isNotNull(baseEntity.getCreateTime())
                     ? baseEntity.getCreateTime() : new Date();
                 baseEntity.setCreateTime(current);
                 baseEntity.setUpdateTime(current);
+
+                // 濡傛灉鍒涘缓浜轰负绌猴紝鍒欏~鍏呭綋鍓嶇櫥褰曠敤鎴风殑淇℃伅
                 if (ObjectUtil.isNull(baseEntity.getCreateBy())) {
                     LoginUser loginUser = getLoginUser();
                     if (ObjectUtil.isNotNull(loginUser)) {
                         Long userId = loginUser.getUserId();
-                        // 褰撳墠宸茬櫥褰� 涓� 鍒涘缓浜轰负绌� 鍒欏~鍏�
+                        // 濉厖鍒涘缓浜恒�佹洿鏂颁汉鍜屽垱寤洪儴闂ㄤ俊鎭�
                         baseEntity.setCreateBy(userId);
-                        // 褰撳墠宸茬櫥褰� 涓� 鏇存柊浜轰负绌� 鍒欏~鍏�
                         baseEntity.setUpdateBy(userId);
                         baseEntity.setCreateDept(ObjectUtil.isNotNull(baseEntity.getCreateDept())
                             ? baseEntity.getCreateDept() : loginUser.getDeptId());
@@ -47,19 +54,24 @@
         }
     }
 
+    /**
+     * 鏇存柊濉厖鏂规硶锛岀敤浜庡湪鏇存柊鏁版嵁鏃惰嚜鍔ㄥ~鍏呭疄浣撳璞′腑鐨勬洿鏂版椂闂村拰鏇存柊浜轰俊鎭�
+     *
+     * @param metaObject 鍏冨璞★紝鐢ㄤ簬鑾峰彇鍘熷瀵硅薄骞惰繘琛屽~鍏�
+     */
     @Override
     public void updateFill(MetaObject metaObject) {
         try {
             if (ObjectUtil.isNotNull(metaObject) && metaObject.getOriginalObject() instanceof BaseEntity baseEntity) {
+                // 鑾峰彇褰撳墠鏃堕棿浣滀负鏇存柊鏃堕棿锛屾棤璁哄師濮嬪璞′腑鐨勬洿鏂版椂闂存槸鍚︿负绌洪兘濉厖
                 Date current = new Date();
-                // 鏇存柊鏃堕棿濉厖(涓嶇涓轰笉涓虹┖)
                 baseEntity.setUpdateTime(current);
-                // 褰撳墠宸茬櫥褰� 鏇存柊浜哄~鍏�(涓嶇涓轰笉涓虹┖)
+
+                // 鑾峰彇褰撳墠鐧诲綍鐢ㄦ埛鐨処D锛屽苟濉厖鏇存柊浜轰俊鎭�
                 Long userId = LoginHelper.getUserId();
                 if (ObjectUtil.isNotNull(userId)) {
                     baseEntity.setUpdateBy(userId);
                 }
-
             }
         } catch (Exception e) {
             throw new ServiceException("鑷姩娉ㄥ叆寮傚父 => " + e.getMessage(), HttpStatus.HTTP_UNAUTHORIZED);
@@ -67,7 +79,9 @@
     }
 
     /**
-     * 鑾峰彇鐧诲綍鐢ㄦ埛鍚�
+     * 鑾峰彇褰撳墠鐧诲綍鐢ㄦ埛淇℃伅
+     *
+     * @return 褰撳墠鐧诲綍鐢ㄦ埛鐨勪俊鎭紝濡傛灉鐢ㄦ埛鏈櫥褰曞垯杩斿洖 null
      */
     private LoginUser getLoginUser() {
         LoginUser loginUser;
diff --git a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/handler/MybatisExceptionHandler.java b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/handler/MybatisExceptionHandler.java
index ec3ee0d..518d52d 100644
--- a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/handler/MybatisExceptionHandler.java
+++ b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/handler/MybatisExceptionHandler.java
@@ -1,14 +1,13 @@
 package org.dromara.common.mybatis.handler;
 
-import org.dromara.common.core.domain.R;
+import jakarta.servlet.http.HttpServletRequest;
 import lombok.extern.slf4j.Slf4j;
+import org.dromara.common.core.domain.R;
 import org.dromara.common.core.utils.StringUtils;
 import org.mybatis.spring.MyBatisSystemException;
 import org.springframework.dao.DuplicateKeyException;
 import org.springframework.web.bind.annotation.ExceptionHandler;
 import org.springframework.web.bind.annotation.RestControllerAdvice;
-
-import jakarta.servlet.http.HttpServletRequest;
 
 /**
  * Mybatis寮傚父澶勭悊鍣�
diff --git a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/handler/PlusDataPermissionHandler.java b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/handler/PlusDataPermissionHandler.java
index 7d7fd84..74279bd 100644
--- a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/handler/PlusDataPermissionHandler.java
+++ b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/handler/PlusDataPermissionHandler.java
@@ -68,13 +68,27 @@
      */
     private final BeanResolver beanResolver = new BeanFactoryResolver(SpringUtils.getBeanFactory());
 
+    /**
+     * 鏋勯�犳柟娉曪紝鎵弿鎸囧畾鍖呬笅鐨� Mapper 绫诲苟鍒濆鍖栫紦瀛�
+     *
+     * @param mapperPackage Mapper 绫绘墍鍦ㄧ殑鍖呰矾寰�
+     */
     public PlusDataPermissionHandler(String mapperPackage) {
         scanMapperClasses(mapperPackage);
     }
 
-
+    /**
+     * 鑾峰彇鏁版嵁杩囨护鏉′欢鐨� SQL 鐗囨
+     *
+     * @param where             鍘熷鐨勬煡璇㈡潯浠惰〃杈惧紡
+     * @param mappedStatementId Mapper 鏂规硶鐨� ID
+     * @param isSelect          鏄惁涓烘煡璇㈣鍙�
+     * @return 鏁版嵁杩囨护鏉′欢鐨� SQL 鐗囨
+     */
     public Expression getSqlSegment(Expression where, String mappedStatementId, boolean isSelect) {
+        // 鑾峰彇鏁版嵁鏉冮檺閰嶇疆
         DataPermission dataPermission = getDataPermission(mappedStatementId);
+        // 鑾峰彇褰撳墠鐧诲綍鐢ㄦ埛淇℃伅
         LoginUser currentUser = DataPermissionHelper.getVariable("user");
         if (ObjectUtil.isNull(currentUser)) {
             currentUser = LoginHelper.getLoginUser();
@@ -84,6 +98,7 @@
         if (LoginHelper.isSuperAdmin() || LoginHelper.isTenantAdmin()) {
             return where;
         }
+        // 鏋勯�犳暟鎹繃婊ゆ潯浠剁殑 SQL 鐗囨
         String dataFilterSql = buildDataFilter(dataPermission.value(), isSelect);
         if (StringUtils.isBlank(dataFilterSql)) {
             return where;
@@ -103,7 +118,12 @@
     }
 
     /**
-     * 鏋勯�犳暟鎹繃婊ql
+     * 鏋勫缓鏁版嵁杩囨护鏉′欢鐨� SQL 璇彞
+     *
+     * @param dataColumns 鏁版嵁鏉冮檺娉ㄨВ涓殑鍒椾俊鎭�
+     * @param isSelect    鏍囧織褰撳墠鎿嶄綔鏄惁涓烘煡璇㈡搷浣滐紝鏌ヨ鎿嶄綔鍜屾洿鏂版垨鍒犻櫎鎿嶄綔鍦ㄥ鐞嗚繃婊ゆ潯浠舵椂浼氭湁涓嶅悓鐨勫鐞嗘柟寮�
+     * @return 鏋勫缓鐨勬暟鎹繃婊ゆ潯浠剁殑 SQL 璇彞
+     * @throws ServiceException 濡傛灉瑙掕壊鐨勬暟鎹寖鍥村紓甯告垨鑰� key 涓� value 鐨勯暱搴︿笉鍖归厤锛屽垯鎶涘嚭 ServiceException 寮傚父
      */
     private String buildDataFilter(DataColumn[] dataColumns, boolean isSelect) {
         // 鏇存柊鎴栧垹闄ら渶婊¤冻鎵�鏈夋潯浠�
@@ -159,20 +179,29 @@
     }
 
     /**
-     * 閫氳繃 mapperPackage 璁剧疆鐨勬壂鎻忓寘 鎵弿缂撳瓨鏈夋敞瑙g殑鏂规硶涓庣被
+     * 鎵弿鎸囧畾鍖呬笅鐨� Mapper 绫伙紝骞舵煡鎵惧叾涓甫鏈夌壒瀹氭敞瑙g殑鏂规硶鎴栫被
+     *
+     * @param mapperPackage Mapper 绫绘墍鍦ㄧ殑鍖呰矾寰�
      */
     private void scanMapperClasses(String mapperPackage) {
+        // 鍒涘缓璧勬簮瑙f瀽鍣ㄥ拰鍏冩暟鎹鍙栧伐鍘�
         PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
         CachingMetadataReaderFactory factory = new CachingMetadataReaderFactory();
+        // 灏� Mapper 鍖呰矾寰勬寜鍒嗛殧绗︽媶鍒嗕负鏁扮粍
         String[] packagePatternArray = StringUtils.splitPreserveAllTokens(mapperPackage, ConfigurableApplicationContext.CONFIG_LOCATION_DELIMITERS);
         String classpath = ResourcePatternResolver.CLASSPATH_ALL_URL_PREFIX;
         try {
             for (String packagePattern : packagePatternArray) {
+                // 灏嗗寘璺緞杞崲涓鸿祫婧愯矾寰�
                 String path = ClassUtils.convertClassNameToResourcePath(packagePattern);
+                // 鑾峰彇鎸囧畾璺緞涓嬬殑鎵�鏈� .class 鏂囦欢璧勬簮
                 Resource[] resources = resolver.getResources(classpath + path + "/*.class");
                 for (Resource resource : resources) {
+                    // 鑾峰彇璧勬簮鐨勭被鍏冩暟鎹�
                     ClassMetadata classMetadata = factory.getMetadataReader(resource).getClassMetadata();
+                    // 鑾峰彇璧勬簮瀵瑰簲鐨勭被瀵硅薄
                     Class<?> clazz = Resources.classForName(classMetadata.getClassName());
+                    // 鏌ユ壘绫讳腑鐨勭壒瀹氭敞瑙�
                     findAnnotation(clazz);
                 }
             }
@@ -181,9 +210,13 @@
         }
     }
 
+    /**
+     * 鍦ㄦ寚瀹氱殑绫讳腑鏌ユ壘鐗瑰畾鐨勬敞瑙� DataPermission锛屽苟灏嗗甫鏈夎繖涓敞瑙g殑鏂规硶鎴栫被瀛樺偍鍒� dataPermissionCacheMap 涓�
+     *
+     * @param clazz 瑕佹煡鎵剧殑绫�
+     */
     private void findAnnotation(Class<?> clazz) {
         DataPermission dataPermission;
-        // 鑾峰彇鏂规硶娉ㄨВ
         for (Method method : clazz.getMethods()) {
             if (method.isDefault() || method.isVarArgs()) {
                 continue;
@@ -194,17 +227,24 @@
                 dataPermissionCacheMap.put(mappedStatementId, dataPermission);
             }
         }
-        // 鑾峰彇绫绘敞瑙�
         if (AnnotationUtil.hasAnnotation(clazz, DataPermission.class)) {
             dataPermission = AnnotationUtil.getAnnotation(clazz, DataPermission.class);
             dataPermissionCacheMap.put(clazz.getName(), dataPermission);
         }
     }
 
+    /**
+     * 鏍规嵁鏄犲皠璇彞 ID 鎴栫被鍚嶈幏鍙栧搴旂殑 DataPermission 娉ㄨВ瀵硅薄
+     *
+     * @param mapperId 鏄犲皠璇彞 ID
+     * @return DataPermission 娉ㄨВ瀵硅薄锛屽鏋滀笉瀛樺湪鍒欒繑鍥� null
+     */
     public DataPermission getDataPermission(String mapperId) {
+        // 妫�鏌ョ紦瀛樹腑鏄惁鍖呭惈鏄犲皠璇彞 ID 瀵瑰簲鐨� DataPermission 娉ㄨВ瀵硅薄
         if (dataPermissionCacheMap.containsKey(mapperId)) {
             return dataPermissionCacheMap.get(mapperId);
         }
+        // 濡傛灉缂撳瓨涓笉鍖呭惈鏄犲皠璇彞 ID 瀵瑰簲鐨� DataPermission 娉ㄨВ瀵硅薄锛屽垯灏濊瘯浣跨敤绫诲悕浣滀负閿煡鎵�
         String clazzName = mapperId.substring(0, mapperId.lastIndexOf("."));
         if (dataPermissionCacheMap.containsKey(clazzName)) {
             return dataPermissionCacheMap.get(clazzName);
@@ -213,7 +253,10 @@
     }
 
     /**
-     * 鏄惁鏃犳晥
+     * 妫�鏌ョ粰瀹氱殑鏄犲皠璇彞 ID 鏄惁鏈夋晥锛屽嵆鏄惁鑳藉鎵惧埌瀵瑰簲鐨� DataPermission 娉ㄨВ瀵硅薄
+     *
+     * @param mapperId 鏄犲皠璇彞 ID
+     * @return 濡傛灉鎵惧埌瀵瑰簲鐨� DataPermission 娉ㄨВ瀵硅薄锛屽垯杩斿洖 false锛涘惁鍒欒繑鍥� true
      */
     public boolean invalid(String mapperId) {
         return getDataPermission(mapperId) == null;
diff --git a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/helper/DataBaseHelper.java b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/helper/DataBaseHelper.java
index bb20f4b..a7cfee5 100644
--- a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/helper/DataBaseHelper.java
+++ b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/helper/DataBaseHelper.java
@@ -2,11 +2,11 @@
 
 import cn.hutool.core.convert.Convert;
 import com.baomidou.dynamic.datasource.DynamicRoutingDataSource;
+import lombok.AccessLevel;
+import lombok.NoArgsConstructor;
 import org.dromara.common.core.exception.ServiceException;
 import org.dromara.common.core.utils.SpringUtils;
 import org.dromara.common.mybatis.enums.DataBaseType;
-import lombok.AccessLevel;
-import lombok.NoArgsConstructor;
 
 import javax.sql.DataSource;
 import java.sql.Connection;
@@ -14,7 +14,6 @@
 import java.sql.SQLException;
 import java.util.ArrayList;
 import java.util.List;
-import java.util.Set;
 
 /**
  * 鏁版嵁搴撳姪鎵�
diff --git a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/helper/DataPermissionHelper.java b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/helper/DataPermissionHelper.java
index 7f6ab1f..2afe9ee 100644
--- a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/helper/DataPermissionHelper.java
+++ b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/helper/DataPermissionHelper.java
@@ -24,17 +24,35 @@
 
     private static final String DATA_PERMISSION_KEY = "data:permission";
 
+    /**
+     * 浠庝笂涓嬫枃涓幏鍙栨寚瀹氶敭鐨勫彉閲忓�硷紝骞跺皢鍏惰浆鎹负鎸囧畾鐨勭被鍨�
+     *
+     * @param key 鍙橀噺鐨勯敭
+     * @param <T> 鍙橀噺鍊肩殑绫诲瀷
+     * @return 鎸囧畾閿殑鍙橀噺鍊硷紝濡傛灉涓嶅瓨鍦ㄥ垯杩斿洖 null
+     */
     public static <T> T getVariable(String key) {
         Map<String, Object> context = getContext();
         return (T) context.get(key);
     }
 
-
+    /**
+     * 鍚戜笂涓嬫枃涓缃寚瀹氶敭鐨勫彉閲忓��
+     *
+     * @param key   瑕佽缃殑鍙橀噺鐨勯敭
+     * @param value 瑕佽缃殑鍙橀噺鍊�
+     */
     public static void setVariable(String key, Object value) {
         Map<String, Object> context = getContext();
         context.put(key, value);
     }
 
+    /**
+     * 鑾峰彇鏁版嵁鏉冮檺涓婁笅鏂�
+     *
+     * @return 瀛樺偍鍦⊿aStorage涓殑Map瀵硅薄锛岀敤浜庡瓨鍌ㄦ暟鎹潈闄愮浉鍏崇殑涓婁笅鏂囦俊鎭�
+     * @throws NullPointerException 濡傛灉鏁版嵁鏉冮檺涓婁笅鏂囩被鍨嬪紓甯革紝鍒欐姏鍑篘ullPointerException
+     */
     public static Map<String, Object> getContext() {
         SaStorage saStorage = SaHolder.getStorage();
         Object attribute = saStorage.get(DATA_PERMISSION_KEY);
@@ -64,6 +82,7 @@
 
     /**
      * 鍦ㄥ拷鐣ユ暟鎹潈闄愪腑鎵ц
+     * <p>绂佹鍦ㄥ拷鐣ユ暟鎹潈闄愪腑鎵ц蹇界暐鏁版嵁鏉冮檺</p>
      *
      * @param handle 澶勭悊鎵ц鏂规硶
      */
@@ -78,6 +97,7 @@
 
     /**
      * 鍦ㄥ拷鐣ユ暟鎹潈闄愪腑鎵ц
+     * <p>绂佹鍦ㄥ拷鐣ユ暟鎹潈闄愪腑鎵ц蹇界暐鏁版嵁鏉冮檺</p>
      *
      * @param handle 澶勭悊鎵ц鏂规硶
      */
diff --git a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/interceptor/PlusDataPermissionInterceptor.java b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/interceptor/PlusDataPermissionInterceptor.java
index 6eed8f7..85a4d0a 100644
--- a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/interceptor/PlusDataPermissionInterceptor.java
+++ b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/interceptor/PlusDataPermissionInterceptor.java
@@ -37,17 +37,33 @@
 
     private final PlusDataPermissionHandler dataPermissionHandler;
 
+    /**
+     * 鏋勯�犲嚱鏁帮紝鍒濆鍖� PlusDataPermissionHandler 瀹炰緥
+     *
+     * @param mapperPackage 鎵弿鐨勬槧灏勫櫒鍖�
+     */
     public PlusDataPermissionInterceptor(String mapperPackage) {
         this.dataPermissionHandler = new PlusDataPermissionHandler(mapperPackage);
     }
 
+    /**
+     * 鍦ㄦ墽琛屾煡璇箣鍓嶏紝妫�鏌ュ苟澶勭悊鏁版嵁鏉冮檺鐩稿叧閫昏緫
+     *
+     * @param executor      MyBatis 鎵ц鍣ㄥ璞�
+     * @param ms            鏄犲皠璇彞瀵硅薄
+     * @param parameter     鏂规硶鍙傛暟
+     * @param rowBounds     鍒嗛〉瀵硅薄
+     * @param resultHandler 缁撴灉澶勭悊鍣�
+     * @param boundSql      缁戝畾鐨� SQL 瀵硅薄
+     * @throws SQLException 濡傛灉鍙戠敓 SQL 寮傚父
+     */
     @Override
     public void beforeQuery(Executor executor, MappedStatement ms, Object parameter, RowBounds rowBounds, ResultHandler resultHandler, BoundSql boundSql) throws SQLException {
-        // 妫�鏌ュ拷鐣ユ敞瑙�
+        // 妫�鏌ユ槸鍚﹂渶瑕佸拷鐣ユ暟鎹潈闄愬鐞�
         if (InterceptorIgnoreHelper.willIgnoreDataPermission(ms.getId())) {
             return;
         }
-        // 妫�鏌ユ槸鍚︽棤鏁� 鏃犳暟鎹潈闄愭敞瑙�
+        // 妫�鏌ユ槸鍚︾己灏戞湁鏁堢殑鏁版嵁鏉冮檺娉ㄨВ
         if (dataPermissionHandler.invalid(ms.getId())) {
             return;
         }
@@ -56,16 +72,26 @@
         mpBs.sql(parserSingle(mpBs.sql(), ms.getId()));
     }
 
+    /**
+     * 鍦ㄥ噯澶� SQL 璇彞涔嬪墠锛屾鏌ュ苟澶勭悊鏇存柊鍜屽垹闄ゆ搷浣滅殑鏁版嵁鏉冮檺鐩稿叧閫昏緫
+     *
+     * @param sh                 MyBatis StatementHandler 瀵硅薄
+     * @param connection         鏁版嵁搴撹繛鎺ュ璞�
+     * @param transactionTimeout 浜嬪姟瓒呮椂鏃堕棿
+     */
     @Override
     public void beforePrepare(StatementHandler sh, Connection connection, Integer transactionTimeout) {
         PluginUtils.MPStatementHandler mpSh = PluginUtils.mpStatementHandler(sh);
         MappedStatement ms = mpSh.mappedStatement();
+        // 鑾峰彇 SQL 鍛戒护绫诲瀷锛堝銆佸垹銆佹敼銆佹煡锛�
         SqlCommandType sct = ms.getSqlCommandType();
+
+        // 鍙鐞嗘洿鏂板拰鍒犻櫎鎿嶄綔鐨� SQL 璇彞
         if (sct == SqlCommandType.UPDATE || sct == SqlCommandType.DELETE) {
             if (InterceptorIgnoreHelper.willIgnoreDataPermission(ms.getId())) {
                 return;
             }
-            // 妫�鏌ユ槸鍚︽棤鏁� 鏃犳暟鎹潈闄愭敞瑙�
+            // 妫�鏌ユ槸鍚︾己灏戞湁鏁堢殑鏁版嵁鏉冮檺娉ㄨВ
             if (dataPermissionHandler.invalid(ms.getId())) {
                 return;
             }
@@ -74,6 +100,14 @@
         }
     }
 
+    /**
+     * 澶勭悊 SELECT 鏌ヨ璇彞涓殑 WHERE 鏉′欢
+     *
+     * @param select SELECT 鏌ヨ瀵硅薄
+     * @param index  鏌ヨ璇彞鐨勭储寮�
+     * @param sql    鏌ヨ璇彞
+     * @param obj    WHERE 鏉′欢鍙傛暟
+     */
     @Override
     protected void processSelect(Select select, int index, String sql, Object obj) {
         if (select instanceof PlainSelect) {
@@ -84,6 +118,14 @@
         }
     }
 
+    /**
+     * 澶勭悊 UPDATE 璇彞涓殑 WHERE 鏉′欢
+     *
+     * @param update UPDATE 鏌ヨ瀵硅薄
+     * @param index  鏌ヨ璇彞鐨勭储寮�
+     * @param sql    鏌ヨ璇彞
+     * @param obj    WHERE 鏉′欢鍙傛暟
+     */
     @Override
     protected void processUpdate(Update update, int index, String sql, Object obj) {
         Expression sqlSegment = dataPermissionHandler.getSqlSegment(update.getWhere(), (String) obj, false);
@@ -92,6 +134,14 @@
         }
     }
 
+    /**
+     * 澶勭悊 DELETE 璇彞涓殑 WHERE 鏉′欢
+     *
+     * @param delete DELETE 鏌ヨ瀵硅薄
+     * @param index  鏌ヨ璇彞鐨勭储寮�
+     * @param sql    鏌ヨ璇彞
+     * @param obj    WHERE 鏉′欢鍙傛暟
+     */
     @Override
     protected void processDelete(Delete delete, int index, String sql, Object obj) {
         Expression sqlSegment = dataPermissionHandler.getSqlSegment(delete.getWhere(), (String) obj, false);
@@ -101,10 +151,10 @@
     }
 
     /**
-     * 璁剧疆 where 鏉′欢
+     * 璁剧疆 SELECT 璇彞鐨� WHERE 鏉′欢
      *
-     * @param plainSelect       鏌ヨ瀵硅薄
-     * @param mappedStatementId 鎵ц鏂规硶id
+     * @param plainSelect       SELECT 鏌ヨ瀵硅薄
+     * @param mappedStatementId 鏄犲皠璇彞鐨� ID
      */
     protected void setWhere(PlainSelect plainSelect, String mappedStatementId) {
         Expression sqlSegment = dataPermissionHandler.getSqlSegment(plainSelect.getWhere(), mappedStatementId, true);
@@ -113,6 +163,14 @@
         }
     }
 
+    /**
+     * 鏋勫缓琛ㄨ揪寮忥紝鐢ㄤ簬澶勭悊琛ㄧ殑鏁版嵁鏉冮檺
+     *
+     * @param table        琛ㄥ璞�
+     * @param where        WHERE 鏉′欢琛ㄨ揪寮�
+     * @param whereSegment WHERE 鏉′欢鐗囨
+     * @return 鏋勫缓鐨勮〃杈惧紡
+     */
     @Override
     public Expression buildTableExpression(Table table, Expression where, String whereSegment) {
         // 鍙湁鏂扮増鏁版嵁鏉冮檺澶勭悊鍣ㄦ墠浼氭墽琛屽埌杩欓噷
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDataScopeServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDataScopeServiceImpl.java
index d7ba934..a31c426 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDataScopeServiceImpl.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDataScopeServiceImpl.java
@@ -3,14 +3,14 @@
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.convert.Convert;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import org.dromara.system.domain.SysDept;
-import org.dromara.common.mybatis.helper.DataBaseHelper;
+import lombok.RequiredArgsConstructor;
 import org.dromara.common.core.utils.StreamUtils;
+import org.dromara.common.mybatis.helper.DataBaseHelper;
+import org.dromara.system.domain.SysDept;
 import org.dromara.system.domain.SysRoleDept;
 import org.dromara.system.mapper.SysDeptMapper;
 import org.dromara.system.mapper.SysRoleDeptMapper;
 import org.dromara.system.service.ISysDataScopeService;
-import lombok.RequiredArgsConstructor;
 import org.springframework.stereotype.Service;
 
 import java.util.List;
@@ -30,6 +30,12 @@
     private final SysRoleDeptMapper roleDeptMapper;
     private final SysDeptMapper deptMapper;
 
+    /**
+     * 鑾峰彇瑙掕壊鑷畾涔夋潈闄�
+     *
+     * @param roleId 瑙掕壊Id
+     * @return 閮ㄩ棬Id缁�
+     */
     @Override
     public String getRoleCustom(Long roleId) {
         List<SysRoleDept> list = roleDeptMapper.selectList(
@@ -42,6 +48,12 @@
         return null;
     }
 
+    /**
+     * 鑾峰彇閮ㄩ棬鍙婁互涓嬫潈闄�
+     *
+     * @param deptId 閮ㄩ棬Id
+     * @return 閮ㄩ棬Id缁�
+     */
     @Override
     public String getDeptAndChild(Long deptId) {
         List<SysDept> deptList = deptMapper.selectList(new LambdaQueryWrapper<SysDept>()

--
Gitblit v1.9.3