diff --git a/biji-houdaun/src/main/java/com/test/bijihoudaun/controller/MarkdownController.java b/biji-houdaun/src/main/java/com/test/bijihoudaun/controller/MarkdownController.java index f2ef4e9..3c28d0a 100644 --- a/biji-houdaun/src/main/java/com/test/bijihoudaun/controller/MarkdownController.java +++ b/biji-houdaun/src/main/java/com/test/bijihoudaun/controller/MarkdownController.java @@ -10,6 +10,9 @@ import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.Parameters; import io.swagger.v3.oas.annotations.tags.Tag; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.security.core.userdetails.UserDetails; import org.springframework.web.bind.annotation.*; import java.util.Date; @@ -36,8 +39,15 @@ public class MarkdownController { }) @GetMapping("/{id}") public R getMarkdownContent(@PathVariable Long id) { - MarkdownFile file = markdownFileService.getMarkdownById(id); + // 获取当前认证状态 + boolean isAuthenticated = isUserAuthenticated(); + + MarkdownFile file = markdownFileService.getMarkdownById(id, isAuthenticated); if (ObjectUtil.isNotNull(file)) { + // 如果是私密笔记且用户未认证,只返回标题 + if (file.getIsPrivate() != null && file.getIsPrivate() == 1 && !isAuthenticated) { + return R.success(""); // 返回空内容,只显示标题 + } return R.success(file.getContent()); } return R.fail(); @@ -102,4 +112,20 @@ public class MarkdownController { List files = markdownFileService.getRecentFiles(12); return R.success(files); } + + /** + * 检查用户是否已认证 + * @return 是否已认证 + */ + private boolean isUserAuthenticated() { + Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); + if (authentication == null || !authentication.isAuthenticated()) { + return false; + } + Object principal = authentication.getPrincipal(); + if (principal instanceof UserDetails) { + return true; + } + return false; + } } diff --git a/biji-houdaun/src/main/java/com/test/bijihoudaun/entity/MarkdownFile.java b/biji-houdaun/src/main/java/com/test/bijihoudaun/entity/MarkdownFile.java index 6c6cfd6..2b42149 100644 --- a/biji-houdaun/src/main/java/com/test/bijihoudaun/entity/MarkdownFile.java +++ b/biji-houdaun/src/main/java/com/test/bijihoudaun/entity/MarkdownFile.java @@ -45,4 +45,7 @@ public class MarkdownFile implements Serializable { @Schema(description = "删除人ID", implementation = Long.class) private Long deletedBy; + + @Schema(description = "是否私密 0-公开 1-私密", implementation = Integer.class) + private Integer isPrivate; } diff --git a/biji-houdaun/src/main/java/com/test/bijihoudaun/service/MarkdownFileService.java b/biji-houdaun/src/main/java/com/test/bijihoudaun/service/MarkdownFileService.java index 66a8ef0..bfb29f4 100644 --- a/biji-houdaun/src/main/java/com/test/bijihoudaun/service/MarkdownFileService.java +++ b/biji-houdaun/src/main/java/com/test/bijihoudaun/service/MarkdownFileService.java @@ -17,9 +17,10 @@ public interface MarkdownFileService extends IService { /** * 根据ID获取Markdown文件 * @param id 文件ID + * @param isAuthenticated 是否已认证 * @return Markdown文件对象 */ - MarkdownFile getMarkdownById(Long id); + MarkdownFile getMarkdownById(Long id, boolean isAuthenticated); /** diff --git a/biji-houdaun/src/main/java/com/test/bijihoudaun/service/impl/MarkdownFileServiceImpl.java b/biji-houdaun/src/main/java/com/test/bijihoudaun/service/impl/MarkdownFileServiceImpl.java index 89030e1..648974d 100644 --- a/biji-houdaun/src/main/java/com/test/bijihoudaun/service/impl/MarkdownFileServiceImpl.java +++ b/biji-houdaun/src/main/java/com/test/bijihoudaun/service/impl/MarkdownFileServiceImpl.java @@ -59,8 +59,14 @@ public class MarkdownFileServiceImpl } @Override - public MarkdownFile getMarkdownById(Long id) { - return this.getById(id); + public MarkdownFile getMarkdownById(Long id, boolean isAuthenticated) { + MarkdownFile file = this.getById(id); + if (file != null && !isAuthenticated && file.getIsPrivate() != null && file.getIsPrivate() == 1) { + // 对于未认证用户,私密笔记只返回标题,内容置空 + file.setContent(""); + return file; + } + return file; } diff --git a/sql/data.sql b/sql/data.sql index 1aed9b8..d4c7086 100644 --- a/sql/data.sql +++ b/sql/data.sql @@ -22,9 +22,10 @@ CREATE TABLE IF NOT EXISTS markdown_file ( content TEXT NOT NULL, created_at DATETIME DEFAULT CURRENT_TIMESTAMP, updated_at DATETIME DEFAULT CURRENT_TIMESTAMP, - is_deleted INTEGER DEFAULT 0, - deleted_at DATETIME, - deleted_by INTEGER + is_deleted INTEGER DEFAULT 0, + deleted_at DATETIME, + deleted_by INTEGER, + is_private INTEGER DEFAULT 0 -- 新增字段:0=公开,1=私密 ); -- 图片表