diff --git a/blossom-backend/backend/pom.xml b/blossom-backend/backend/pom.xml
index 18562d7..0a3b64a 100644
--- a/blossom-backend/backend/pom.xml
+++ b/blossom-backend/backend/pom.xml
@@ -5,7 +5,7 @@
blossom-backend
com.blossom
- 1.15.0-SNAPSHOT
+ 1.16.0-SNAPSHOT
4.0.0
diff --git a/blossom-backend/backend/src/main/java/com/blossom/backend/server/article/backup/ArticleBackupService.java b/blossom-backend/backend/src/main/java/com/blossom/backend/server/article/backup/ArticleBackupService.java
index 7589557..cf6c7da 100644
--- a/blossom-backend/backend/src/main/java/com/blossom/backend/server/article/backup/ArticleBackupService.java
+++ b/blossom-backend/backend/src/main/java/com/blossom/backend/server/article/backup/ArticleBackupService.java
@@ -9,6 +9,8 @@ import cn.hutool.core.util.ZipUtil;
import com.blossom.backend.base.param.ParamEnum;
import com.blossom.backend.base.param.ParamService;
import com.blossom.backend.base.param.pojo.ParamEntity;
+import com.blossom.backend.base.paramu.UserParamEnum;
+import com.blossom.backend.base.paramu.UserParamService;
import com.blossom.backend.base.user.UserService;
import com.blossom.backend.base.user.pojo.UserEntity;
import com.blossom.backend.server.article.backup.pojo.BackupFile;
@@ -56,6 +58,9 @@ public class ArticleBackupService {
@Autowired
private ParamService paramService;
+ @Autowired
+ private UserParamService userParamService;
+
@Autowired
private UserService userService;
@@ -126,6 +131,13 @@ public class ArticleBackupService {
// 用户信息
UserEntity user = userService.selectById(userId);
+ final String BLOG_COLOR = userParamService.getValue(userId, UserParamEnum.WEB_BLOG_COLOR).getParamValue();
+ final String WATER_ENABLED = userParamService.getValue(userId, UserParamEnum.WEB_BLOG_WATERMARK_ENABLED).getParamValue();
+ final String WATERMARK_CONTENT = userParamService.getValue(userId, UserParamEnum.WEB_BLOG_WATERMARK_CONTENT).getParamValue();
+ final String WATERMARK_FONTSIZE = userParamService.getValue(userId, UserParamEnum.WEB_BLOG_WATERMARK_FONTSIZE).getParamValue();
+ final String WATERMARK_COLOR = userParamService.getValue(userId, UserParamEnum.WEB_BLOG_WATERMARK_COLOR).getParamValue();
+ final String WATERMARK_GAP = userParamService.getValue(userId, UserParamEnum.WEB_BLOG_WATERMARK_GAP).getParamValue();
+
final File backLogFile = new File(backupFile.getRootPath() + "/" + "log.txt");
final List backLogs = new ArrayList<>();
log.info("[文章备份] 开始备份, 本次备份文件名称 [{}], 用户ID [{}]", backupFile.getFilename(), userId);
@@ -186,7 +198,9 @@ public class ArticleBackupService {
articleDetail.setName(article.getN());
// 文章 markdown 内容
- String content = getContentByType(articleDetail, type, user);
+ String content = getContentByType(articleDetail, type, user,
+ BLOG_COLOR, WATER_ENABLED, WATERMARK_CONTENT, WATERMARK_FONTSIZE, WATERMARK_COLOR, WATERMARK_GAP
+ );
content = formatContent(content, toLocal, article.getI(), article.getN());
String id = String.valueOf(articleDetail.getId());
String version = String.valueOf(articleDetail.getVersion());
@@ -231,17 +245,19 @@ public class ArticleBackupService {
}
// 备份全部图片
else {
- List files = FileUtil.loopFiles(FileUtil.newFile(iaasProperties.getBlos().getDefaultPath() + "/U" + userId), null);
- backLogs.add("[图片备份] 图片个数: " + files.size());
+ List pics = FileUtil.loopFiles(FileUtil.newFile(iaasProperties.getBlos().getDefaultPath() + "/U" + userId), null);
+ backLogs.add("[图片备份] 图片个数: " + pics.size());
backLogs.add("┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ↓↓ 图片列表 ↓↓ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━");
- for (File file : files) {
+ for (File file : pics) {
backLogs.add(file.getPath());
}
- FileUtil.copy(
- iaasProperties.getBlos().getDefaultPath() + "/U" + userId,
- backupFile.getRootPath() + "/" + iaasProperties.getBlos().getDefaultPath(),
- true);
+ if (CollUtil.isNotEmpty(pics)) {
+ FileUtil.copy(
+ iaasProperties.getBlos().getDefaultPath() + "/U" + userId,
+ backupFile.getRootPath() + "/" + iaasProperties.getBlos().getDefaultPath(),
+ true);
+ }
}
backLogs.add("┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ↑↑ 图片列表 ↑↑ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━");
@@ -353,18 +369,31 @@ public class ArticleBackupService {
/**
* 根据类型判断是获取 markdown 内容还是 html 内容
*
- * @param article 文章
- * @param type 类型
- * @return 对应的内容
+ * @param article 文章
+ * @param type 类型
+ * @param user 用户信息
+ * @param blogColor 主题色
+ * @param watermarkEnabled 开启水印
+ * @param watermarkContent 水印内容
+ * @param waterFontSize 水印字体大小
+ * @param waterColor 水印颜色
+ * @param waterGap 水印密集度
+ * @return
*/
- private String getContentByType(ArticleEntity article, BackupTypeEnum type, UserEntity user) {
+ private String getContentByType(ArticleEntity article, BackupTypeEnum type, UserEntity user,
+ String blogColor,
+ String watermarkEnabled,
+ String watermarkContent,
+ String waterFontSize,
+ String waterColor,
+ String waterGap) {
if (type == BackupTypeEnum.MARKDOWN) {
return StrUtil.isBlank(article.getMarkdown()) ? "文章无内容" : article.getMarkdown();
} else if (type == BackupTypeEnum.HTML) {
ArticleEntity export = new ArticleEntity();
export.setName(article.getName().substring(article.getName().lastIndexOf("/")));
export.setHtml(article.getHtml());
- return ArticleUtil.toHtml(article, user);
+ return ArticleUtil.toHtml(article, user, blogColor, watermarkEnabled, watermarkContent, waterFontSize, waterColor, waterGap);
}
return "";
}
diff --git a/blossom-backend/backend/src/main/java/com/blossom/backend/server/article/draft/ArticleController.java b/blossom-backend/backend/src/main/java/com/blossom/backend/server/article/draft/ArticleController.java
index 4eeb1cd..21c3d8d 100644
--- a/blossom-backend/backend/src/main/java/com/blossom/backend/server/article/draft/ArticleController.java
+++ b/blossom-backend/backend/src/main/java/com/blossom/backend/server/article/draft/ArticleController.java
@@ -7,6 +7,8 @@ import cn.hutool.core.util.ObjUtil;
import cn.hutool.core.util.StrUtil;
import com.blossom.backend.base.auth.AuthContext;
import com.blossom.backend.base.auth.annotation.AuthIgnore;
+import com.blossom.backend.base.paramu.UserParamEnum;
+import com.blossom.backend.base.paramu.UserParamService;
import com.blossom.backend.base.user.UserService;
import com.blossom.backend.server.article.draft.pojo.*;
import com.blossom.backend.server.article.open.ArticleOpenService;
@@ -60,6 +62,7 @@ public class ArticleController {
private final DocService docService;
private final DocSortChecker docSortChecker;
private final ImportManager importManager;
+ private final UserParamService userParamService;
/**
* 查询列表
@@ -260,7 +263,15 @@ public class ArticleController {
if (StrUtil.isBlank(article.getHtml())) {
article.setHtml("文章无内容");
}
- String reportHtml = ArticleUtil.toHtml(article, userService.selectById(AuthContext.getUserId()));
+ String reportHtml = ArticleUtil.toHtml(article,
+ userService.selectById(AuthContext.getUserId()),
+ userParamService.getValue(AuthContext.getUserId(), UserParamEnum.WEB_BLOG_COLOR).getParamValue(),
+ userParamService.getValue(AuthContext.getUserId(), UserParamEnum.WEB_BLOG_WATERMARK_ENABLED).getParamValue(),
+ userParamService.getValue(AuthContext.getUserId(), UserParamEnum.WEB_BLOG_WATERMARK_CONTENT).getParamValue(),
+ userParamService.getValue(AuthContext.getUserId(), UserParamEnum.WEB_BLOG_WATERMARK_FONTSIZE).getParamValue(),
+ userParamService.getValue(AuthContext.getUserId(), UserParamEnum.WEB_BLOG_WATERMARK_COLOR).getParamValue(),
+ userParamService.getValue(AuthContext.getUserId(), UserParamEnum.WEB_BLOG_WATERMARK_GAP).getParamValue()
+ );
try (InputStream is = new ByteArrayInputStream(reportHtml.getBytes(StandardCharsets.UTF_8));
BufferedInputStream bis = new BufferedInputStream(is)) {
String filename = URLEncodeUtil.encode(article.getName() + ".html");
@@ -331,6 +342,15 @@ public class ArticleController {
XzException404.throwBy(ObjUtil.isNull(visit), "文章不存在或您无权限查看");
ArticleEntity article = baseService.selectById(visit.getArticleId(), false, false, true, visit.getUserId());
resp.setContentType("text/html");
- return ArticleUtil.toHtml(article, userService.selectById(visit.getUserId()));
+ return ArticleUtil.toHtml(
+ article,
+ userService.selectById(visit.getUserId()),
+ userParamService.getValue(visit.getUserId(), UserParamEnum.WEB_BLOG_COLOR).getParamValue(),
+ userParamService.getValue(visit.getUserId(), UserParamEnum.WEB_BLOG_WATERMARK_ENABLED).getParamValue(),
+ userParamService.getValue(visit.getUserId(), UserParamEnum.WEB_BLOG_WATERMARK_CONTENT).getParamValue(),
+ userParamService.getValue(visit.getUserId(), UserParamEnum.WEB_BLOG_WATERMARK_FONTSIZE).getParamValue(),
+ userParamService.getValue(visit.getUserId(), UserParamEnum.WEB_BLOG_WATERMARK_COLOR).getParamValue(),
+ userParamService.getValue(visit.getUserId(), UserParamEnum.WEB_BLOG_WATERMARK_GAP).getParamValue()
+ );
}
}
diff --git a/blossom-backend/backend/src/main/java/com/blossom/backend/server/utils/ArticleUtil.java b/blossom-backend/backend/src/main/java/com/blossom/backend/server/utils/ArticleUtil.java
index 82e07c6..6563566 100644
--- a/blossom-backend/backend/src/main/java/com/blossom/backend/server/utils/ArticleUtil.java
+++ b/blossom-backend/backend/src/main/java/com/blossom/backend/server/utils/ArticleUtil.java
@@ -1,18 +1,16 @@
package com.blossom.backend.server.utils;
import cn.hutool.core.util.ArrayUtil;
-import cn.hutool.core.util.RandomUtil;
import cn.hutool.core.util.StrUtil;
import com.blossom.backend.base.user.pojo.UserEntity;
import com.blossom.backend.server.article.draft.pojo.ArticleEntity;
-import com.blossom.common.base.util.DateUtils;
+import com.blossom.common.base.enums.YesNo;
import lombok.extern.slf4j.Slf4j;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;
import java.io.IOException;
import java.io.InputStream;
-import java.util.Date;
/**
* 文章工具类
@@ -102,32 +100,265 @@ public class ArticleUtil {
}
+ /**
+ *
+ */
+ private static final String HEAD_SCRIPT_BLOG_COLOR = " \n";
- private static final String prefix = "\n" +
- "