diff --git a/biji-houdaun/src/main/java/com/test/bijihoudaun/controller/ImageController.java b/biji-houdaun/src/main/java/com/test/bijihoudaun/controller/ImageController.java index 0c54c63..2f94829 100644 --- a/biji-houdaun/src/main/java/com/test/bijihoudaun/controller/ImageController.java +++ b/biji-houdaun/src/main/java/com/test/bijihoudaun/controller/ImageController.java @@ -31,8 +31,8 @@ public class ImageController { }) @PostMapping public ResponseEntity uploadImage( - @RequestParam Integer userId, - @RequestParam(required = false) Integer markdownId, + @RequestParam Long userId, + @RequestParam(required = false) Long markdownId, @RequestParam("file") MultipartFile file) { try { @@ -42,4 +42,4 @@ public class ImageController { return ResponseEntity.status(500).build(); } } -} \ No newline at end of file +} 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 e66b885..6a2f36f 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 @@ -17,6 +17,19 @@ public class MarkdownController { @Autowired private MarkdownFileService markdownFileService; + @Operation(summary = "预览markdown文件") + @Parameters({ + @Parameter(name = "id", description = "文件ID", required = true) + }) + @GetMapping("/{id}") + public ResponseEntity getMarkdownContent(@PathVariable Long id) { + MarkdownFile file = markdownFileService.getMarkdownById(id); + if (file != null) { + return ResponseEntity.ok(file.getContent()); + } + return ResponseEntity.notFound().build(); + } + @Operation(summary = "创建markdown文件") @Parameters({ @Parameter(name = "userId", description = "用户id",required = true), @@ -26,7 +39,7 @@ public class MarkdownController { }) @PostMapping public ResponseEntity createMarkdown( - @RequestParam Integer userId, + @RequestParam Long userId, @RequestParam String title, @RequestParam String fileName, @RequestBody String content) { @@ -44,7 +57,7 @@ public class MarkdownController { }) @PostMapping("/{id}") public ResponseEntity updateMarkdown( - @PathVariable Integer id, + @PathVariable Long id, @RequestBody String content) { MarkdownFile file = markdownFileService.updateMarkdownContent(id, content); diff --git a/biji-houdaun/src/main/java/com/test/bijihoudaun/service/ImageService.java b/biji-houdaun/src/main/java/com/test/bijihoudaun/service/ImageService.java index 3d51bd6..b42a2c8 100644 --- a/biji-houdaun/src/main/java/com/test/bijihoudaun/service/ImageService.java +++ b/biji-houdaun/src/main/java/com/test/bijihoudaun/service/ImageService.java @@ -16,7 +16,7 @@ public interface ImageService extends IService { * @return 上传的图片对象 * @throws IOException 文件操作异常 */ - Image uploadImage(Integer userId, Integer markdownId, MultipartFile file) throws IOException; + Image uploadImage(Long userId, Long markdownId, MultipartFile file) throws IOException; /** * 删除图片 @@ -24,19 +24,19 @@ public interface ImageService extends IService { * @param userId 用户ID(用于权限验证) * @return 是否删除成功 */ - boolean deleteImage(Integer id, Integer userId); + boolean deleteImage(Long id, Long userId); /** * 获取用户的图片列表 * @param userId 用户ID * @return 图片列表 */ - List getUserImages(Integer userId); + List getUserImages(Long userId); /** * 获取Markdown文件关联的图片 * @param markdownId Markdown文件ID * @return 图片列表 */ - List getMarkdownImages(Integer markdownId); -} \ No newline at end of file + List getMarkdownImages(Long markdownId); +} 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 2ab8aca..a7e5c81 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 @@ -14,7 +14,7 @@ public interface MarkdownFileService extends IService { * @param content 文件内容 * @return 创建的文件对象 */ - MarkdownFile createMarkdownFile(Integer userId, String title, String fileName, String content); + MarkdownFile createMarkdownFile(Long userId, String title, String fileName, String content); /** * 更新Markdown内容 @@ -22,12 +22,19 @@ public interface MarkdownFileService extends IService { * @param content 新内容 * @return 更新后的文件对象 */ - MarkdownFile updateMarkdownContent(Integer id, String content); + MarkdownFile updateMarkdownContent(Long id, String content); + + /** + * 根据ID获取Markdown文件 + * @param id 文件ID + * @return Markdown文件对象 + */ + MarkdownFile getMarkdownById(Long id); /** * 获取用户的所有Markdown文件 * @param userId 用户ID * @return 文件列表 */ - List getUserFiles(Integer userId); -} \ No newline at end of file + List getUserFiles(Long userId); +} diff --git a/biji-houdaun/src/main/java/com/test/bijihoudaun/service/impl/ImageServiceImpl.java b/biji-houdaun/src/main/java/com/test/bijihoudaun/service/impl/ImageServiceImpl.java index 033ebe9..bd072e3 100644 --- a/biji-houdaun/src/main/java/com/test/bijihoudaun/service/impl/ImageServiceImpl.java +++ b/biji-houdaun/src/main/java/com/test/bijihoudaun/service/impl/ImageServiceImpl.java @@ -27,7 +27,7 @@ public class ImageServiceImpl private String uploadDir; @Override - public Image uploadImage(Integer userId, Integer markdownId, MultipartFile file) throws IOException { + public Image uploadImage(Long userId, Long markdownId, MultipartFile file) throws IOException { // 创建上传目录 Path uploadPath = Paths.get(uploadDir); if (!Files.exists(uploadPath)) { @@ -50,7 +50,7 @@ public class ImageServiceImpl image.setOriginalName(originalFilename); image.setStoredName(storedName); image.setUrl("/uploads/" + storedName); - image.setSize((int) file.getSize()); + image.setSize(file.getSize()); image.setContentType(file.getContentType()); image.setCreatedAt(LocalDateTime.now()); @@ -59,7 +59,7 @@ public class ImageServiceImpl } @Override - public boolean deleteImage(Integer id, Integer userId) { + public boolean deleteImage(Long id, Long userId) { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("id", id) .eq("user_id", userId); @@ -83,7 +83,7 @@ public class ImageServiceImpl } @Override - public List getUserImages(Integer userId) { + public List getUserImages(Long userId) { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("user_id", userId) .orderByDesc("created_at"); @@ -91,10 +91,10 @@ public class ImageServiceImpl } @Override - public List getMarkdownImages(Integer markdownId) { + public List getMarkdownImages(Long markdownId) { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("markdown_id", markdownId) .orderByDesc("created_at"); return this.list(queryWrapper); } -} \ No newline at end of file +} 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 31d5610..62ee959 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 @@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.test.bijihoudaun.entity.MarkdownFile; import com.test.bijihoudaun.mapper.MarkdownFileMapper; import com.test.bijihoudaun.service.MarkdownFileService; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.time.LocalDateTime; @@ -17,7 +18,7 @@ public class MarkdownFileServiceImpl implements MarkdownFileService { @Override - public MarkdownFile createMarkdownFile(Integer userId, String title, String fileName, String content) { + public MarkdownFile createMarkdownFile(Long userId, String title, String fileName, String content) { MarkdownFile file = new MarkdownFile(); file.setUserId(userId); file.setTitle(title); @@ -31,7 +32,7 @@ public class MarkdownFileServiceImpl } @Override - public MarkdownFile updateMarkdownContent(Integer id, String content) { + public MarkdownFile updateMarkdownContent(Long id, String content) { MarkdownFile file = this.getById(id); if (file != null) { file.setContent(content); @@ -40,12 +41,17 @@ public class MarkdownFileServiceImpl } return file; } + + @Override + public MarkdownFile getMarkdownById(Long id) { + return this.getById(id); + } @Override - public List getUserFiles(Integer userId) { + public List getUserFiles(Long userId) { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("user_id", userId) .orderByDesc("updated_at"); return this.list(queryWrapper); } -} \ No newline at end of file +} diff --git a/doc/111.md b/doc/111.md new file mode 100644 index 0000000..41f3f9d --- /dev/null +++ b/doc/111.md @@ -0,0 +1,9 @@ +vite+vue3.js怎么支持markdown文件的上传,预览、编辑、创建呢?我使用springboot3作为后端 +,前端怎么创建markdown文件并且编写后传给后端,是传文件还是直接传字符保存到数据库中的,给我详细的代码,并且带上注释 + + +1、首先分析本项目的后端,了解项目所使用的技术和版本,之后查看项目中各个部分的代码,了解各个部分的功能和实现方式。 + +2、分析好项目,我要实现其中的markdown文件的上传,预览、编辑、创建,并且是带有图片的,能在前端实现上传,预览、编辑、创建等功能,要符合项目用到的技术、版本和业务,不要修改无关的文件。 要求使用MCP服务器中的context7工具来查询最新的文档 + +3、现在开始实现上述的功能,不要去分析前端,现在先弄好后端,先实现上传、预览、编辑、创建等功能,要符合项目用到的技术、版本和业务,不要修改无关的文件。 要求使用MCP服务器中的context7工具用来查询最新的文档,确保我想要的功能是符合项目的要求,并且是符合项目的业务逻辑。