From 4a2244dc29d72e2a994d2288e3731d29ecb7fead Mon Sep 17 00:00:00 2001
From: sinake <sinake1@qq.com>
Date: 星期三, 18 三月 2026 14:22:00 +0800
Subject: [PATCH] 动态查询API接口修改

---
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/ApiController.java |   71 +++++++++++++++++++++++++++++++++++
 1 files changed, 71 insertions(+), 0 deletions(-)

diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/ApiController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/ApiController.java
new file mode 100644
index 0000000..bcf0fa1
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/ApiController.java
@@ -0,0 +1,71 @@
+package com.ruoyi.web.controller.common;
+
+import com.alibaba.fastjson2.JSON;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.core.page.TableDataInfo;
+import com.ruoyi.project.domain.BaseAnnextype;
+import com.ruoyi.project.domain.GiApi;
+import com.ruoyi.project.domain.dto.ApiDTO;
+import com.ruoyi.project.service.IApiService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.ObjectUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+@Slf4j
+@Api(description = "api鏈嶅姟")
+@RestController
+@RequestMapping("/api")
+public class ApiController {
+    @Autowired
+    private IApiService  service;
+    @ApiOperation("API->api鏌ヨ鍒楄〃")
+    @PostMapping("/{path}")
+    public AjaxResult getApiList(@PathVariable("path") String path, @RequestBody ApiDTO DTO) {
+        List<Map<String, Object>> lists = new ArrayList<>();
+        if (ObjectUtils.isNotEmpty(path)) {
+            GiApi tempSql = service.getCode(path);
+            if (tempSql != null && ObjectUtils.isNotEmpty(tempSql.getApiSql())) {
+                String SQL_REG_EXP = ".*(\\b(insert|into|update|delete|trancate" +
+                        "|drop|execute|grant|use)\\b).*";
+                if (tempSql.getApiSql().toLowerCase().matches(SQL_REG_EXP)) {
+                    return AjaxResult.error("sql涓湁闈炴硶瀛楃,鍙簲璁竤elect");
+                }
+                lists = service.getListSql(tempSql.getApiSql(), DTO);
+                return AjaxResult.success(JSON.toJSON(lists));
+            } else
+                return AjaxResult.error("sql浠g爜娌℃湁瀵瑰簲鐨剆ql璇锋牳瀵�");
+        } else {
+            return AjaxResult.error("琛ㄥ悕涓嶈兘涓虹┖");
+        }
+    }
+
+    @ApiOperation("API->api鏌ヨobject")
+    @PostMapping("/s/{path}")
+    public AjaxResult getStringSql(@PathVariable("path") String path, @RequestBody ApiDTO DTO){
+        List<Map<String,Object>> lists=new ArrayList<>();
+        if(ObjectUtils.isNotEmpty(path)) {
+            GiApi tempSql= service.getCode(path);
+            if(tempSql!=null&&ObjectUtils.isNotEmpty(tempSql.getApiSql())) {
+                String SQL_REG_EXP = ".*(\\b(insert|into|update|delete|trancate" +
+                        "|drop|execute|grant|use)\\b).*";
+                if (tempSql.getApiSql().toLowerCase().matches(SQL_REG_EXP)) {
+                    return AjaxResult.error("sql涓湁闈炴硶瀛楃,鍙簲璁竤elect");
+                }
+
+                    return AjaxResult.success(service.getStringSql(tempSql.getApiSql(), DTO));
+
+            }else
+                return AjaxResult.error("sql浠g爜娌℃湁瀵瑰簲鐨剆ql璇锋牳瀵�");
+        }else {
+            return AjaxResult.error("琛ㄥ悕涓嶈兘涓虹┖");
+        }
+    }
+
+}

--
Gitblit v1.9.3