ai优化,删除未使用代码,提取重复代码。

This commit is contained in:
2026-08-12 11:12:23 +08:00
parent 043bf8773b
commit 60869ec214
10 changed files with 108 additions and 201 deletions
+24 -19
View File
@@ -72,6 +72,20 @@ func generateSlug(title string) string {
return slug
}
// findOrCreateTags 根据名称列表查找或创建标签
func findOrCreateTags(tagNames []string) []models.Tag {
var tags []models.Tag
for _, tagName := range tagNames {
var tag models.Tag
database.DB.FirstOrCreate(&tag, models.Tag{
Name: tagName,
Slug: generateSlug(tagName),
})
tags = append(tags, tag)
}
return tags
}
// 获取文章列表
func GetPosts(c *gin.Context) {
var query PostListQuery
@@ -80,6 +94,14 @@ func GetPosts(c *gin.Context) {
return
}
// 分页参数校验
if query.Page < 1 {
query.Page = 1
}
if query.PageSize < 1 || query.PageSize > 100 {
query.PageSize = 10
}
db := database.DB.Model(&models.Post{}).Preload("Category").Preload("Tags").Preload("Author")
// 管理员可查看全部;登录用户可看到自己的全部文章(含草稿);未登录只能看已发布
@@ -191,16 +213,7 @@ func CreatePost(c *gin.Context) {
// 处理标签
if len(req.Tags) > 0 {
var tags []models.Tag
for _, tagName := range req.Tags {
var tag models.Tag
database.DB.FirstOrCreate(&tag, models.Tag{
Name: tagName,
Slug: generateSlug(tagName),
})
tags = append(tags, tag)
}
post.Tags = tags
post.Tags = findOrCreateTags(req.Tags)
}
if err := database.DB.Create(&post).Error; err != nil {
@@ -272,15 +285,7 @@ func UpdatePost(c *gin.Context) {
// 处理标签
if len(req.Tags) > 0 {
var tags []models.Tag
for _, tagName := range req.Tags {
var tag models.Tag
database.DB.FirstOrCreate(&tag, models.Tag{
Name: tagName,
Slug: generateSlug(tagName),
})
tags = append(tags, tag)
}
tags := findOrCreateTags(req.Tags)
if err := database.DB.Model(&post).Association("Tags").Replace(tags); err != nil {
c.JSON(http.StatusInternalServerError, gin.H{"error": "更新文章标签失败"})
return