diff --git a/src/main/java/com/yj/earth/business/controller/IconLibraryController.java b/src/main/java/com/yj/earth/business/controller/IconLibraryController.java index f1d1889..9b751be 100644 --- a/src/main/java/com/yj/earth/business/controller/IconLibraryController.java +++ b/src/main/java/com/yj/earth/business/controller/IconLibraryController.java @@ -41,7 +41,7 @@ import java.util.List; import java.util.Map; import java.util.stream.Collectors; -@Tag(name = "图标库管理") +@Tag(name = "图标数据管理") @CheckAuth @RestController @RequestMapping("/iconLibrary") diff --git a/src/main/java/com/yj/earth/business/controller/MilitaryLibraryController.java b/src/main/java/com/yj/earth/business/controller/MilitaryLibraryController.java index ed3cf58..25dee6f 100644 --- a/src/main/java/com/yj/earth/business/controller/MilitaryLibraryController.java +++ b/src/main/java/com/yj/earth/business/controller/MilitaryLibraryController.java @@ -41,7 +41,7 @@ import java.util.List; import java.util.Map; import java.util.stream.Collectors; -@Tag(name = "军标库管理") +@Tag(name = "军标数据管理") @CheckAuth @RestController @RequestMapping("/militaryLibrary") diff --git a/src/main/java/com/yj/earth/business/controller/ModelLibraryController.java b/src/main/java/com/yj/earth/business/controller/ModelLibraryController.java index ef8d8c1..e83a282 100644 --- a/src/main/java/com/yj/earth/business/controller/ModelLibraryController.java +++ b/src/main/java/com/yj/earth/business/controller/ModelLibraryController.java @@ -41,7 +41,7 @@ import java.time.LocalDateTime; import java.util.*; import java.util.stream.Collectors; -@Tag(name = "模型库管理") +@Tag(name = "模型数据管理") @CheckAuth @RestController @RequestMapping("/modelLibrary") diff --git a/src/main/java/com/yj/earth/business/controller/WebSourceController.java b/src/main/java/com/yj/earth/business/controller/WebSourceController.java index 2898d9c..21d7fda 100644 --- a/src/main/java/com/yj/earth/business/controller/WebSourceController.java +++ b/src/main/java/com/yj/earth/business/controller/WebSourceController.java @@ -5,6 +5,7 @@ import cn.hutool.core.lang.UUID; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.yj.earth.annotation.RoleAccess; import com.yj.earth.business.domain.WebSource; +import com.yj.earth.business.service.ModelLibraryService; import com.yj.earth.business.service.SourceService; import com.yj.earth.business.service.WebSourceService; import com.yj.earth.common.util.ApiResponse; @@ -25,7 +26,7 @@ import java.util.List; import java.util.stream.Collectors; import java.util.stream.Stream; -@Tag(name = "网页版独有接口") +@Tag(name = "网页独有接口") @RestController @RequestMapping("/webSource") public class WebSourceController { @@ -35,6 +36,8 @@ public class WebSourceController { @Resource private WebSourceService webSourceService; @Resource + private ModelLibraryController modelLibraryController; + @Resource private SourceService sourceService; private static final List SUPPORT_EXTENSIONS = Arrays.asList("clt", "mbtiles", "pak", "pbf", "model"); @@ -60,7 +63,7 @@ public class WebSourceController { } } - @Operation(summary = "获取所有文件") + @Operation(summary = "获取资源") @GetMapping("/list") public ApiResponse list(@RequestParam(required = false) @Parameter(description = "文件类型") String type) { if (type != null) { @@ -94,6 +97,11 @@ public class WebSourceController { if (!webSource.getType().equals("pbf") && !webSource.getType().equals("model")) { addModelSourceIfNotExists(filePath); } + + // 如果是模型文件则直接调用导入 + if (webSource.getType().equals("model")) { + modelLibraryController.importModelLibrary(filePath); + } } /** diff --git a/src/main/java/com/yj/earth/business/service/ModelLibraryService.java b/src/main/java/com/yj/earth/business/service/ModelLibraryService.java index ed3e447..537bf26 100644 --- a/src/main/java/com/yj/earth/business/service/ModelLibraryService.java +++ b/src/main/java/com/yj/earth/business/service/ModelLibraryService.java @@ -3,14 +3,6 @@ package com.yj.earth.business.service; import com.yj.earth.business.domain.ModelLibrary; import com.baomidou.mybatisplus.extension.service.IService; -/** - *

- * 服务类 - *

- * - * @author 周志雄 - * @since 2025-09-17 - */ public interface ModelLibraryService extends IService { } diff --git a/src/main/java/com/yj/earth/common/config/SaTokenConfig.java b/src/main/java/com/yj/earth/common/config/SaTokenConfig.java index 6861ceb..7864f53 100644 --- a/src/main/java/com/yj/earth/common/config/SaTokenConfig.java +++ b/src/main/java/com/yj/earth/common/config/SaTokenConfig.java @@ -28,7 +28,6 @@ public class SaTokenConfig implements WebMvcConfigurer { excludePathPatterns.add("/data/mbtiles/**"); excludePathPatterns.add("/data/pak/**"); excludePathPatterns.add("/systemService/**"); - excludePathPatterns.add("/**"); // 注册 Sa-Token 拦截器 registry.addInterceptor(new SaInterceptor(handle -> { diff --git a/src/main/java/com/yj/earth/common/util/ConcurrentHttpRequestTest.java b/src/main/java/com/yj/earth/common/util/ConcurrentHttpRequestTest.java deleted file mode 100644 index dc3e3ce..0000000 --- a/src/main/java/com/yj/earth/common/util/ConcurrentHttpRequestTest.java +++ /dev/null @@ -1,152 +0,0 @@ -package com.yj.earth.common.util; - -import okhttp3.OkHttpClient; -import okhttp3.Request; -import okhttp3.Response; -import java.io.IOException; -import java.util.concurrent.*; -import java.util.concurrent.atomic.AtomicInteger; - -/** - * 并发HTTP请求测试工具 - * 目标地址:192.168.110.25:8848/modelLibrary/data/model/1066/glb - */ -public class ConcurrentHttpRequestTest { - - // ====================== 测试参数配置(可根据需求调整)====================== - // 目标请求URL - private static final String TARGET_URL = "http://192.168.110.25:8848/modelLibrary/data/model/1066/glb"; - // 并发线程数(如模拟100个并发,设置为100) - private static final int CONCURRENT_THREADS = 50; - // 每个线程发送的请求次数(如每个线程发10次,总请求数=50*10=500) - private static final int REQUESTS_PER_THREAD = 10; - // HTTP请求超时时间(毫秒) - private static final int HTTP_CONNECT_TIMEOUT = 3000; - private static final int HTTP_READ_TIMEOUT = 5000; - - // ====================== 统计指标(线程安全)====================== - // 成功请求数 - private static final AtomicInteger SUCCESS_COUNT = new AtomicInteger(0); - // 失败请求数 - private static final AtomicInteger FAIL_COUNT = new AtomicInteger(0); - // 总耗时(毫秒) - private static long TOTAL_TIME = 0; - - - public static void main(String[] args) { - System.out.println("===================== 并发请求测试开始 ====================="); - System.out.printf("测试配置:并发线程数=%d,单线程请求数=%d,总请求数=%d%n", - CONCURRENT_THREADS, REQUESTS_PER_THREAD, CONCURRENT_THREADS * REQUESTS_PER_THREAD); - System.out.printf("目标URL:%s%n", TARGET_URL); - System.out.println("----------------------------------------------------------"); - - // 1. 初始化OkHttp客户端(复用连接池,减少连接创建开销) - OkHttpClient okHttpClient = new OkHttpClient.Builder() - .connectTimeout(HTTP_CONNECT_TIMEOUT, TimeUnit.MILLISECONDS) - .readTimeout(HTTP_READ_TIMEOUT, TimeUnit.MILLISECONDS) - .connectionPool(new okhttp3.ConnectionPool( - 50, // 最大空闲连接数(建议不小于并发线程数) - 5, TimeUnit.MINUTES // 连接空闲超时 - )) - .build(); - - // 2. 初始化线程池(固定线程数,匹配并发需求) - ExecutorService executorService = Executors.newFixedThreadPool(CONCURRENT_THREADS); - // 倒计时锁:等待所有线程执行完成 - CountDownLatch countDownLatch = new CountDownLatch(CONCURRENT_THREADS); - - // 3. 记录测试开始时间 - long startTime = System.currentTimeMillis(); - - // 4. 提交并发任务(每个任务对应一个线程) - for (int i = 0; i < CONCURRENT_THREADS; i++) { - int threadIndex = i + 1; // 线程编号(方便日志区分) - executorService.submit(() -> { - try { - // 单个线程执行指定次数的请求 - for (int j = 0; j < REQUESTS_PER_THREAD; j++) { - int requestIndex = j + 1; // 请求编号 - sendRequest(okHttpClient, threadIndex, requestIndex); - } - } finally { - // 线程任务完成,倒计时减1 - countDownLatch.countDown(); - } - }); - } - - // 5. 等待所有线程完成(阻塞直到所有任务结束) - try { - countDownLatch.await(); - } catch (InterruptedException e) { - Thread.currentThread().interrupt(); - System.err.println("测试被中断:" + e.getMessage()); - } - - // 6. 计算测试结果 - long endTime = System.currentTimeMillis(); - TOTAL_TIME = endTime - startTime; - printTestResult(); - - // 7. 释放资源 - executorService.shutdown(); - okHttpClient.connectionPool().evictAll(); // 清空连接池 - } - - /** - * 发送单个HTTP GET请求 - * @param okHttpClient OkHttp客户端(复用) - * @param threadIndex 线程编号 - * @param requestIndex 该线程内的请求编号 - */ - private static void sendRequest(OkHttpClient okHttpClient, int threadIndex, int requestIndex) { - // 构建请求(若需要Headers,可在此处添加,如Token、Cookie等) - Request request = new Request.Builder() - .url(TARGET_URL) - .get() // GET请求(目标接口是GET,无需Body) - .build(); - - long requestStartTime = System.currentTimeMillis(); - try (Response response = okHttpClient.newCall(request).execute()) { - // 判定请求成功:响应码200-299,且响应体非空(根据你的接口实际情况调整) - if (response.isSuccessful() && response.body() != null) { - // 读取响应体(避免连接泄漏,即使不需要内容也建议读取后关闭) - byte[] responseBody = response.body().bytes(); - long requestCostTime = System.currentTimeMillis() - requestStartTime; - SUCCESS_COUNT.incrementAndGet(); - System.out.printf("[线程%d-请求%d] 成功 | 响应码:%d | 响应体大小:%dB | 耗时:%dms%n", - threadIndex, requestIndex, response.code(), responseBody.length, requestCostTime); - } else { - // 响应码非成功(如404、500) - FAIL_COUNT.incrementAndGet(); - System.err.printf("[线程%d-请求%d] 失败 | 响应码:%d | 原因:%s%n", - threadIndex, requestIndex, response.code(), response.message()); - } - } catch (Exception e) { - // 网络异常(超时、连接拒绝、IO错误等) - FAIL_COUNT.incrementAndGet(); - System.err.printf("[线程%d-请求%d] 异常 | 原因:%s%n", - threadIndex, requestIndex, e.getMessage()); - } - } - - /** - * 打印测试结果(核心指标统计) - */ - private static void printTestResult() { - System.out.println("=========================================================="); - System.out.println("===================== 测试结果汇总 ====================="); - int totalRequests = SUCCESS_COUNT.get() + FAIL_COUNT.get(); - double successRate = totalRequests == 0 ? 0 : (SUCCESS_COUNT.get() * 100.0) / totalRequests; - double avgTimePerRequest = totalRequests == 0 ? 0 : (TOTAL_TIME * 1.0) / totalRequests; - double qps = totalRequests == 0 ? 0 : (totalRequests * 1000.0) / TOTAL_TIME; // 每秒请求数 - - System.out.printf("总请求数:%d%n", totalRequests); - System.out.printf("成功请求数:%d | 失败请求数:%d%n", SUCCESS_COUNT.get(), FAIL_COUNT.get()); - System.out.printf("成功率:%.2f%%%n", successRate); - System.out.printf("总耗时:%dms%n", TOTAL_TIME); - System.out.printf("平均请求耗时:%.2fms%n", avgTimePerRequest); - System.out.printf("QPS(每秒请求数):%.2f%n", qps); - System.out.println("=========================================================="); - } -}