From 4542d50cd5a6f25b2b9c7410be45992af87a8f5e Mon Sep 17 00:00:00 2001
From: Helius <wangdoubleone@gmail.com>
Date: Sat, 09 Jul 2022 17:35:23 +0800
Subject: [PATCH] 修改模板上传逻辑
---
src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/CmsTemplateServiceImpl.java | 73 ++++++++++++++----------
src/main/java/com/xcong/farmer/cms/core/node/AttrNode.java | 25 --------
src/test/java/com/xcong/farmer/cms/TemplateTest.java | 52 +++++++++++++++++
3 files changed, 94 insertions(+), 56 deletions(-)
diff --git a/src/main/java/com/xcong/farmer/cms/core/node/AttrNode.java b/src/main/java/com/xcong/farmer/cms/core/node/AttrNode.java
index f29380d..436b082 100644
--- a/src/main/java/com/xcong/farmer/cms/core/node/AttrNode.java
+++ b/src/main/java/com/xcong/farmer/cms/core/node/AttrNode.java
@@ -80,32 +80,7 @@
return false;
}
- public void staticPath() {
- // 设置img的链接访问
- if ("img".equals(this.element.tagName())) {
- String src = this.element.attr("src");
- if (StrUtil.isNotBlank(STATIC_URL)) {
- this.element.attr("src", STATIC_URL + src);
- }
- }
-
- if ("link".equals(this.element.tagName())) {
- String src = this.element.attr("href");
- if (StrUtil.isNotBlank(STATIC_URL)) {
- this.element.attr("href", STATIC_URL + src);
- }
- }
-
- if ("script".equals(this.element.tagName())) {
- String src = this.element.attr("src");
- if (StrUtil.isNotBlank(STATIC_URL)) {
- this.element.attr("src", STATIC_URL + src);
- }
- }
- }
-
public void parser() {
- staticPath();
// 判断是否为最小节点,如果是且没有特殊标签,则跳过清空
if (!isNeedEmpty()) {
return;
diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/CmsTemplateServiceImpl.java b/src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/CmsTemplateServiceImpl.java
index 5c20554..a2b9230 100644
--- a/src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/CmsTemplateServiceImpl.java
+++ b/src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/CmsTemplateServiceImpl.java
@@ -20,6 +20,8 @@
import com.xcong.farmer.cms.modules.system.util.LoginUserUtil;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
+import org.jsoup.nodes.Element;
+import org.jsoup.select.Elements;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -88,46 +90,55 @@
continue;
}
- Document parse = Jsoup.parse(templateFile, null);
- String attr = parse.head().attr("name");
- CmsTemplateEntity cmsTemplate = new CmsTemplateEntity();
- cmsTemplate.setCompanyId(companyId);
- if (name.endsWith(".list.html")) {
- cmsTemplate.setType(2);
- } else if (name.endsWith(".article.html")) {
- cmsTemplate.setType(3);
- } else {
- cmsTemplate.setType(1);
- }
- cmsTemplate.setName(StrUtil.isNotBlank(attr) ? attr : templateFile.getName());
- cmsTemplate.setPath(templateFile.getName());
-
- this.baseMapper.insert(cmsTemplate);
+ insertTemplate(templateFile, companyId);
}
-
}
if (".html".equals(suffix)) {
FileUtil.touch(file);
- Document parse = Jsoup.parse(file, null);
- String attr = parse.head().attr("name");
- CmsTemplateEntity cmsTemplate = new CmsTemplateEntity();
- cmsTemplate.setCompanyId(companyId);
- if (file.getName().endsWith(".list.html")) {
- cmsTemplate.setType(2);
- } else if (file.getName().endsWith(".article.html")) {
- cmsTemplate.setType(3);
- } else {
- cmsTemplate.setType(1);
- }
- cmsTemplate.setName(StrUtil.isNotBlank(attr) ? attr : file.getName());
- cmsTemplate.setPath(file.getName());
-
- this.baseMapper.insert(cmsTemplate);
+ insertTemplate(file, companyId);
}
} catch (IOException e) {
e.printStackTrace();
+ throw new GlobalException("模板上传失败");
+ }
+ }
+
+ private void insertTemplate(File file, Long companyId) throws IOException {
+ Document parse = Jsoup.parse(file, null);
+ String attr = parse.head().attr("name");
+
+ staticPathParser(parse, "img", "src");
+ staticPathParser(parse, "href", "link");
+ staticPathParser(parse, "script", "src");
+
+ CmsTemplateEntity cmsTemplate = new CmsTemplateEntity();
+ cmsTemplate.setCompanyId(companyId);
+ if (file.getName().endsWith(".list.html")) {
+ cmsTemplate.setType(2);
+ } else if (file.getName().endsWith(".article.html")) {
+ cmsTemplate.setType(3);
+ } else {
+ cmsTemplate.setType(1);
+ }
+ cmsTemplate.setName(StrUtil.isNotBlank(attr) ? attr : file.getName());
+ cmsTemplate.setPath(file.getName());
+
+ this.baseMapper.insert(cmsTemplate);
+ }
+
+ private void staticPathParser(Document document, String tagName, String attrKey) {
+ Elements elements = document.getElementsByTag(tagName);
+ if (elements.isEmpty()) {
+ return;
+ }
+
+ for (Element element : elements) {
+ String attr = element.attr(attrKey);
+ if (StrUtil.isNotBlank(attr) && !attr.contains("http://") && !attr.contains("https://")) {
+ element.attr(attrKey, cmsProperties.getBaseUrl() + attr);
+ }
}
}
diff --git a/src/test/java/com/xcong/farmer/cms/TemplateTest.java b/src/test/java/com/xcong/farmer/cms/TemplateTest.java
new file mode 100644
index 0000000..f072ef2
--- /dev/null
+++ b/src/test/java/com/xcong/farmer/cms/TemplateTest.java
@@ -0,0 +1,52 @@
+package com.xcong.farmer.cms;
+
+import cn.hutool.core.io.FileUtil;
+import cn.hutool.core.util.StrUtil;
+import org.jsoup.Jsoup;
+import org.jsoup.nodes.Document;
+import org.jsoup.nodes.Element;
+import org.jsoup.select.Elements;
+import org.junit.jupiter.api.Test;
+import org.springframework.boot.test.context.SpringBootTest;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+
+/**
+ * @author wzy
+ * @date 2022-07-09
+ **/
+@SpringBootTest
+public class TemplateTest {
+
+ String baseUrl = "http://120.27.238.55:8000/cms/static/";
+
+ @Test
+ public void staticFileTest() throws IOException {
+ File file = new File("/Users/helius/Desktop/template-online/index-test.html");
+ Document parse = Jsoup.parse(file, "utf-8");
+
+ staticPathParser(parse, "img", "src");
+ staticPathParser(parse, "href", "link");
+ staticPathParser(parse, "script", "src");
+
+ FileOutputStream outputStream = new FileOutputStream(file);
+ outputStream.write(parse.html().getBytes());
+ outputStream.close();
+ }
+
+ public void staticPathParser(Document document, String tagName, String attrKey) {
+ Elements elements = document.getElementsByTag(tagName);
+ if (elements.isEmpty()) {
+ return;
+ }
+
+ for (Element element : elements) {
+ String attr = element.attr(attrKey);
+ if (StrUtil.isNotBlank(attr) && !attr.contains("http://") && !attr.contains("https://")) {
+ element.attr(attrKey, baseUrl + attr);
+ }
+ }
+ }
+}
--
Gitblit v1.9.1