feat: 植物识别
This commit is contained in:
@@ -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点赞
|
||||
|
||||
Reference in New Issue
Block a user