Procházet zdrojové kódy

feat:适配达梦数据源的修改

韩帛霖 před 1 rokem
rodič
revize
bcea29fd2f

+ 8 - 0
zkqy-admin/pom.xml

@@ -43,6 +43,14 @@
             <groupId>mysql</groupId>
             <artifactId>mysql-connector-java</artifactId>
         </dependency>
+        <!-- 达梦驱动包 -->
+        <dependency>
+            <groupId>com.dm</groupId>
+            <artifactId>DmJdbcDriver18</artifactId>
+            <version>1.8</version>
+            <scope>system</scope>
+            <systemPath>${project.basedir}/src/main/resources/lib/DmJdbcDriver18.jar</systemPath>
+        </dependency>
         <!-- 核心模块-->
         <dependency>
             <groupId>com.zkqy</groupId>

+ 31 - 4
zkqy-framework/src/main/java/com/zkqy/framework/aspectj/SqlInterceptor.java

@@ -34,7 +34,7 @@ public class SqlInterceptor implements Interceptor {
          * //System.out.println(name);
          */
         String sql = statementHandler.getBoundSql().getSql();
-        if(sql.contains("{DBNAME}.")){
+        if (sql.contains("{DBNAME}.")) {
             String modifiedSql = modifySql(sql);
             if (modifiedSql.equals("error")) {
                 return AjaxResult.error("当前用户没有数据源信息!");
@@ -42,7 +42,13 @@ public class SqlInterceptor implements Interceptor {
                 ReflectUtils.setFieldValue(statementHandler.getBoundSql(), "sql", modifiedSql);
                 return invocation.proceed();
             }
-        }else {
+        } else {
+            // 达梦数据源下 ``不识别
+            if (sql.contains("m.`query`")) {
+                String endsql = sql.replace("m.`query`", "m.query");
+                ReflectUtils.setFieldValue(statementHandler.getBoundSql(), "sql", endsql);
+                return invocation.proceed();
+            }
             // 如果不在指定路径下,直接放行
             return invocation.proceed();
         }
@@ -57,8 +63,19 @@ public class SqlInterceptor implements Interceptor {
         }
         if (SecurityUtils.getDatabaseType().equals("sqlserver"))
             return "USE `" + SecurityUtils.getDatabaseName() + "`; " + sql;
-        if (SecurityUtils.getDatabaseType().equals("dm"))
+        if (SecurityUtils.getDatabaseType().equals("dm")) {
+            String endSQl;
+            if (sql.contains("{DBNAME}.")) {
+
+                // 如果sql中出现  ` 符号
+//                if (sql.contains("`")) {
+//                    sql.replace("`", "");
+//                }
+                return sql.replace("{DBNAME}", SecurityUtils.getDatabaseName()).replace("`", "");
+            }
             return "set schema " + SecurityUtils.getDatabaseName() + "; " + sql;
+        }
+
         if (SecurityUtils.getDatabaseType().equals("mysql")) {
             if (sql.contains("{DBNAME}.")) {
                 return sql.replace("{DBNAME}.", "`" + SecurityUtils.getDatabaseName() + "`.");
@@ -112,4 +129,14 @@ public class SqlInterceptor implements Interceptor {
     @Override
     public void setProperties(Properties properties) {
     }
-}
+}
+/*
+
+关系对应
+name:code
+age:asd
+state:staue
+默认值:
+state:1
+
+ */

+ 2 - 2
zkqy-system/src/main/resources/mapper/system/SysMenuMapper.xml

@@ -78,7 +78,7 @@
 		left join sys_tenant_menu tm on tm.menu_id = m.menu_id
 		where tm.tenant_id = #{tenantId}
 		and m.menu_name not in ('数据引擎','流程引擎','表单引擎')
-		and parent_id not in (select menu_id from  sys_menu where menu_name in ("数据引擎","流程引擎","表单引擎"))
+		and parent_id not in (select menu_id from  sys_menu where menu_name in ('数据引擎','流程引擎','表单引擎'))
 		<if test="menu.menuName != null and menu.menuName != ''">
 			AND m.menu_name like concat('%', #{menu.menuName}, '%')
 		</if>
@@ -101,7 +101,7 @@
 		left join sys_menu m on tm.menu_id = m.menu_id
 		where m.menu_type in ('M', 'C') and m.status = 0 and tm.tenant_id = #{tenantId}
 		and m.menu_name not in ('数据引擎','流程引擎','表单引擎')
-		and parent_id not in (select menu_id from  sys_menu where menu_name in ("数据引擎","流程引擎","表单引擎"))
+		and parent_id not in (select menu_id from  sys_menu where menu_name in ('数据引擎','流程引擎','表单引擎'))
 		order by m.parent_id, m.order_num
 	</select>