refactor: GetOverview 5 次独立查询合并为单次 GROUP BY
- 新增 PostRepo.GetOverviewByUserID 单次 CASE WHEN + GROUP BY 查询 - Service 层 GetOverview 从 5 次 DB 查询减少为 1 次 - 接口 postStore 新增 GetOverviewByUserID 声明
This commit is contained in:
@ -187,18 +187,12 @@ type StudioOverview struct {
|
||||
RejectedCount int64 `json:"rejected_count"`
|
||||
}
|
||||
|
||||
// GetOverview 获取创作中心数据概览
|
||||
// GetOverview 获取创作中心数据概览(单次 GROUP BY 查询)
|
||||
func (s *PostService) GetOverview(userID uint) (*StudioOverview, error) {
|
||||
// 获取各状态文章数量(分页传 1 条只取 total)
|
||||
_, totalPosts, err := s.repo.FindByUserIDAndStatus(userID, "", 0, 1)
|
||||
totalPosts, draftCount, pendingCount, approvedCount, rejectedCount, err := s.repo.GetOverviewByUserID(userID)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
_, draftCount, _ := s.repo.FindByUserIDAndStatus(userID, model.PostStatusDraft, 0, 1)
|
||||
_, pendingCount, _ := s.repo.FindByUserIDAndStatus(userID, model.PostStatusPending, 0, 1)
|
||||
_, approvedCount, _ := s.repo.FindByUserIDAndStatus(userID, model.PostStatusApproved, 0, 1)
|
||||
_, rejectedCount, _ := s.repo.FindByUserIDAndStatus(userID, model.PostStatusRejected, 0, 1)
|
||||
|
||||
return &StudioOverview{
|
||||
TotalPosts: totalPosts,
|
||||
DraftCount: draftCount,
|
||||
|
||||
@ -37,6 +37,7 @@ type postStore interface {
|
||||
FindPageable(keyword string, offset, limit int) ([]model.Post, int64, error)
|
||||
FindAdminPageable(keyword, status string, offset, limit int) ([]model.Post, int64, error)
|
||||
FindByUserIDAndStatus(userID uint, status string, offset, limit int) ([]model.Post, int64, error)
|
||||
GetOverviewByUserID(userID uint) (totalPosts, draftCount, pendingCount, approvedCount, rejectedCount int64, err error)
|
||||
FindPendingRevisions(keyword string, offset, limit int) ([]model.Post, int64, error)
|
||||
Update(post *model.Post) error
|
||||
SoftDelete(id uint) error
|
||||
|
||||
Reference in New Issue
Block a user