feat: 添加文档管理功能并优化样式

添加文档管理功能,包括文档展示区域和API接口
新增文档相关CSS样式,优化移动端显示
更新Go模块依赖版本
This commit is contained in:
2025-12-25 00:48:13 +08:00
parent 0daedc13f0
commit d2c42ba4c2
16 changed files with 245 additions and 76 deletions

View File

@@ -24,12 +24,17 @@ type App struct {
Date string `json:"date"`
FilePath string `json:"-"` // 内部使用,不序列化
}
type Doc struct {
DocBody string `json:"docBody"`
}
// 全局变量
var (
docs []Doc
apps []App
appsMutex sync.RWMutex // 读写锁,提高并发性能
filesDir = "./files"
docsDir = "./docs"
jsonFile = "./apps.json"
port = ":6903" // 修改端口号为6903
)
@@ -89,10 +94,13 @@ func main() {
// 初始化随机数生成器
rand.Seed(time.Now().UnixNano())
// 创建files目录
// 创建files和docs目录
if err := os.MkdirAll(filesDir, 0755); err != nil {
panic(fmt.Sprintf("failed to create files directory: %v", err))
}
if err := os.MkdirAll(docsDir, 0755); err != nil {
panic(fmt.Sprintf("failed to create docs directory: %v", err))
}
// 加载apps数据
loadApps()
@@ -123,6 +131,7 @@ func main() {
api.POST("/apps", uploadApp)
api.GET("/apps/:id", downloadApp)
api.GET("/apps/:id/", downloadApp) // 处理以/结尾的URL
api.GET("/docs", getDocs) // 新增获取文档的API端点
}
// 启动服务器
@@ -232,3 +241,60 @@ func downloadApp(c *gin.Context) {
// 使用FileAttachment直接提供文件下载避免重定向
c.FileAttachment(filePath, targetApp.FileName)
}
// 读取文档内容
func readDocFile(docName string) (string, error) {
filePath := filepath.Join(docsDir, docName+".txt")
content, err := os.ReadFile(filePath)
if err != nil {
return "", err
}
return string(content), nil
}
// 获取文档内容
func getDocs(c *gin.Context) {
// 读取5个文档文件
doc1, err1 := readDocFile("doc1")
if err1 != nil {
doc1 = "" // 如果文件不存在或读取失败,返回空字符串
}
doc2, err2 := readDocFile("doc2")
if err2 != nil {
doc2 = ""
}
doc3, err3 := readDocFile("doc3")
if err3 != nil {
doc3 = ""
}
doc4, err4 := readDocFile("doc4")
if err4 != nil {
doc4 = ""
}
doc5, err5 := readDocFile("doc5")
if err5 != nil {
doc5 = ""
}
if len(docs) == 0 {
docs = append(docs, Doc{DocBody: doc1})
docs = append(docs, Doc{DocBody: doc2})
docs = append(docs, Doc{DocBody: doc3})
docs = append(docs, Doc{DocBody: doc4})
docs = append(docs, Doc{DocBody: doc5})
} else {
docs[0].DocBody = doc1
docs[1].DocBody = doc2
docs[2].DocBody = doc3
docs[3].DocBody = doc4
docs[4].DocBody = doc5
}
// 返回包含message1-5的JSON
c.JSON(http.StatusOK, docs)
}