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/PlusDataPermissionHandler.java |   55 +++++++++++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 49 insertions(+), 6 deletions(-)

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;

--
Gitblit v1.9.3