From ef2fc3ab986a1d972581e138a5ba2da2d76fc11f Mon Sep 17 00:00:00 2001 From: qaiu Date: Wed, 9 Jul 2025 07:06:12 +0800 Subject: [PATCH] =?UTF-8?q?lz=E7=9B=AE=E5=BD=95=E8=A7=A3=E6=9E=90=E9=A2=84?= =?UTF-8?q?=E8=A7=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/cn/qaiu/parser/impl/LzTool.java | 5 ++- web-front/package.json | 1 + web-front/src/App.vue | 3 +- .../cn/qaiu/lz/web/controller/ParserApi.java | 35 +++++++++++++++++++ 4 files changed, 42 insertions(+), 2 deletions(-) diff --git a/parser/src/main/java/cn/qaiu/parser/impl/LzTool.java b/parser/src/main/java/cn/qaiu/parser/impl/LzTool.java index fc87a18..9510b32 100644 --- a/parser/src/main/java/cn/qaiu/parser/impl/LzTool.java +++ b/parser/src/main/java/cn/qaiu/parser/impl/LzTool.java @@ -222,7 +222,10 @@ public class LzTool extends PanBase { .setSizeStr(fileJson.getString("size")) .setSize(sizeNum) .setPanType(panType) - .setParserUrl(getDomainName() + "/d/" + panType + "/" + id); + .setParserUrl(getDomainName() + "/d/" + panType + "/" + id) + .setPreviewUrl(String.format("%s/v2/view/%s/%s", getDomainName(), + shareLinkInfo.getType(), id)); + ; log.debug("文件信息: {}", fileInfo); list.add(fileInfo); }); diff --git a/web-front/package.json b/web-front/package.json index ff72330..d416dcf 100644 --- a/web-front/package.json +++ b/web-front/package.json @@ -4,6 +4,7 @@ "private": true, "scripts": { "serve": "vue-cli-service serve", + "dev": "vue-cli-service serve", "build": "vue-cli-service build", "lint": "vue-cli-service lint" }, diff --git a/web-front/src/App.vue b/web-front/src/App.vue index b82dd68..62728c0 100644 --- a/web-front/src/App.vue +++ b/web-front/src/App.vue @@ -295,10 +295,11 @@ export default { type: 'success' }) const data = response.data.data - const panList = ["iz", "lz", "fj"]; + const panList = ["iz", "lz", "fj", "ye"]; if (!panList.includes(data.shareLinkInfo.type)) { this.$message.error("当前网盘不支持目录解析") + return; } let listUrl = `${window.location.origin}/list.html?url=${encodeURIComponent(this.link)}` let apiUrl = new URL(data.apiLink).origin + `/v2/getFileList?url=${this.link}`; diff --git a/web-service/src/main/java/cn/qaiu/lz/web/controller/ParserApi.java b/web-service/src/main/java/cn/qaiu/lz/web/controller/ParserApi.java index 80aa89e..b9c5a8a 100644 --- a/web-service/src/main/java/cn/qaiu/lz/web/controller/ParserApi.java +++ b/web-service/src/main/java/cn/qaiu/lz/web/controller/ParserApi.java @@ -5,6 +5,7 @@ import cn.qaiu.entity.FileInfo; import cn.qaiu.entity.ShareLinkInfo; import cn.qaiu.lz.common.cache.CacheManager; import cn.qaiu.lz.common.util.URLParamUtil; +import cn.qaiu.lz.web.model.CacheLinkInfo; import cn.qaiu.lz.web.model.LinkInfoResp; import cn.qaiu.lz.web.model.StatisticsInfo; import cn.qaiu.lz.web.model.SysUser; @@ -15,6 +16,7 @@ import cn.qaiu.parser.ParserCreate; import cn.qaiu.vx.core.annotaions.RouteHandler; import cn.qaiu.vx.core.annotaions.RouteMapping; import cn.qaiu.vx.core.enums.RouteMethod; +import cn.qaiu.vx.core.model.JsonResult; import cn.qaiu.vx.core.util.AsyncServiceUtil; import cn.qaiu.vx.core.util.ResponseUtil; import cn.qaiu.vx.core.util.SharedDataUtil; @@ -142,6 +144,39 @@ public class ParserApi { return promise.future(); } + + /** + * 预览媒体文件 + */ + @RouteMapping(value = "/view/:type/:key", method = RouteMethod.GET, order = 2) + public void view(HttpServerRequest request, HttpServerResponse response, String type, String key) { + String previewURL = SharedDataUtil.getJsonStringForServerConfig("previewURL"); + new ServerApi().parseKeyJson(request, type, key).onSuccess(res -> { + redirect(response, previewURL, res); + }).onFailure(e -> { + ResponseUtil.fireJsonResultResponse(response, JsonResult.error(e.toString())); + }); + } + + private static void redirect(HttpServerResponse response, String previewURL, CacheLinkInfo res) { + String directLink = res.getDirectLink(); + ResponseUtil.redirect(response, previewURL + URLEncoder.encode(directLink, StandardCharsets.UTF_8)); + } + + /** + * 预览媒体文件 + */ + @RouteMapping(value = "/preview", method = RouteMethod.GET, order = 9) + public void viewURL(HttpServerRequest request, HttpServerResponse response, String pwd) { + String previewURL = SharedDataUtil.getJsonStringForServerConfig("previewURL"); + new ServerApi().parseJson(request, pwd).onSuccess(res -> { + redirect(response, previewURL, res); + }).onFailure(e -> { + ResponseUtil.fireJsonResultResponse(response, JsonResult.error(e.toString())); + }); + } + + @RouteMapping("/viewUrl/:type/:param") public Future viewUrl(HttpServerResponse response, String type, String param) { Promise promise = Promise.promise();