feat: 添加文档管理功能并优化样式
添加文档管理功能,包括文档展示区域和API接口 新增文档相关CSS样式,优化移动端显示 更新Go模块依赖版本
This commit is contained in:
@@ -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)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user