将服务接口从service包移动到service.imp包 修复ArticleRepository中viewCount的COALESCE处理 添加getPublishedArticles方法获取已发布文章 优化incrementViewCount方法使用仓库直接更新 修正HelpController中README_API.md路径
77 lines
3.2 KiB
Java
77 lines
3.2 KiB
Java
package com.qf.myafterprojecy.controller;
|
||
|
||
import com.qf.myafterprojecy.pojo.ResponseMessage;
|
||
import org.commonmark.node.Node;
|
||
import org.commonmark.parser.Parser;
|
||
import org.commonmark.renderer.html.HtmlRenderer;
|
||
import org.springframework.core.io.ClassPathResource;
|
||
import org.springframework.util.FileCopyUtils;
|
||
import org.springframework.web.bind.annotation.GetMapping;
|
||
import org.springframework.web.bind.annotation.RequestMapping;
|
||
import org.springframework.web.bind.annotation.RestController;
|
||
|
||
import java.io.File;
|
||
import java.io.FileInputStream;
|
||
import java.io.IOException;
|
||
import java.nio.charset.StandardCharsets;
|
||
|
||
/**
|
||
* 帮助控制器类,处理前端调用api/help请求
|
||
* 提供README_API.md文件的读取和返回功能
|
||
*/
|
||
@RestController
|
||
@RequestMapping("/api/help")
|
||
public class HelpController {
|
||
|
||
/**
|
||
* 获取README_API.md文件内容
|
||
* @return 返回包含README_API.md文件内容的ResponseMessage对象
|
||
*/
|
||
@GetMapping
|
||
public ResponseMessage<String> getReadmeApi() {
|
||
try {
|
||
// 获取README_API.md文件的绝对路径
|
||
String readmePath = "e:\\MyWebProject\\MyAfterProjecy\\README_API.md";
|
||
File readmeFile = new File(readmePath);
|
||
|
||
// 检查文件是否存在
|
||
if (readmeFile.exists() && readmeFile.isFile()) {
|
||
// 读取文件内容
|
||
String markdownContent = new String(FileCopyUtils.copyToByteArray(new FileInputStream(readmeFile)), StandardCharsets.UTF_8);
|
||
// 将Markdown转换为HTML
|
||
String htmlContent = convertMarkdownToHtml(markdownContent);
|
||
return ResponseMessage.success(htmlContent, "获取API文档成功");
|
||
}
|
||
|
||
// 如果直接路径不存在,尝试从类路径加载
|
||
try {
|
||
ClassPathResource resource = new ClassPathResource("README_API.md");
|
||
String markdownContent = new String(FileCopyUtils.copyToByteArray(resource.getInputStream()), StandardCharsets.UTF_8);
|
||
// 将Markdown转换为HTML
|
||
String htmlContent = convertMarkdownToHtml(markdownContent);
|
||
return ResponseMessage.success(htmlContent, "获取API文档成功");
|
||
} catch (IOException e) {
|
||
// 记录详细错误信息以便调试
|
||
System.err.println("无法从类路径加载README_API.md: " + e.getMessage());
|
||
return ResponseMessage.error("未找到README_API.md文件");
|
||
}
|
||
} catch (Exception e) {
|
||
// 捕获所有异常并记录详细错误信息
|
||
System.err.println("处理README_API.md时出错: " + e.getMessage());
|
||
e.printStackTrace();
|
||
return ResponseMessage.error("读取README_API.md文件失败: " + e.getMessage());
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 将Markdown文本转换为HTML
|
||
* @param markdown 原始Markdown文本
|
||
* @return 转换后的HTML字符串
|
||
*/
|
||
private String convertMarkdownToHtml(String markdown) {
|
||
Parser parser = Parser.builder().build();
|
||
Node document = parser.parse(markdown);
|
||
HtmlRenderer renderer = HtmlRenderer.builder().build();
|
||
return renderer.render(document);
|
||
}
|
||
} |