feat: 植物识别

This commit is contained in:
Blizzard
2026-02-10 12:35:46 +08:00
parent e612234c91
commit 556ab6baff
24 changed files with 2745 additions and 11473 deletions
+61
View File
@@ -111,6 +111,67 @@ func (s *PostService) PostPage(req plantReq.PostPage, userId string) (list inter
return posts, total, err
}
// MyPost 我的帖子
func (s *PostService) MyPost(req plantReq.PostPage, userId string) (list interface{}, total int64, err error) {
limit := req.PageSize
offset := req.PageSize * (req.Current - 1)
db := global.DB.Model(&plant.Post{}).
Preload("ImgList", func(db *gorm.DB) *gorm.DB {
return db.Order("created_at desc")
}).
Preload("Publisher", func(db *gorm.DB) *gorm.DB {
return db.Preload("Avatar")
}).
Preload("LikeList", func(db *gorm.DB) *gorm.DB {
return db.Preload("Liker", func(db *gorm.DB) *gorm.DB {
return db.Preload("Avatar")
})
}).
Preload("CommentList", func(db *gorm.DB) *gorm.DB {
return db.Preload("Commentator", func(db *gorm.DB) *gorm.DB {
return db.Preload("Avatar")
})
})
var posts []plant.Post
db = db.Where("user_id = ?", userId)
if req.Title != "" {
db = db.Where("title like ?", "%"+req.Title+"%")
}
//todo 审核帖子
err = db.Count(&total).Error
if err != nil {
return
}
err = db.Limit(limit).Offset(offset).Order("created_at desc").Find(&posts).Error
// 优化 N+1 查询
var postIds []string
for _, v := range posts {
postIds = append(postIds, v.Id)
}
// 批量查询当前用户点赞的记录
var postLikeList []*plant.PostLike
err = global.DB.Where("user_id = ? and post_id in ?", userId, postIds).Find(&postLikeList).Error
if err != nil {
return
}
// 构建id映射
likesMap := make(map[string]bool)
for _, v := range postLikeList {
likesMap[v.PostId] = true
}
// 是否点赞
for i := range posts {
if likesMap[posts[i].Id] {
posts[i].HasLiked = 1
} else {
posts[i].HasLiked = 0
}
}
return posts, total, err
}
// LikePost 点赞帖或取消赞
func (s *PostService) LikePost(userId, postId, class string) error {
// class = 1点赞