🎨 优化文章和讲师接口

This commit is contained in:
2025-09-17 12:09:18 +08:00
parent 914513b5da
commit 9070e40f5c
5 changed files with 89 additions and 15 deletions

View File

@@ -250,14 +250,34 @@ func (u *AppUserService) GetTeacherList(p common.PageInfo) (list []vo.TeacherInf
return nil, 0, err
}
// 获取每个教师的粉丝数
for i := range list {
followCount, err := u.GetTeacherFansCount(list[i].ID)
// 批量查询所有教师的粉丝数
var teacherIDs []uint
for _, t := range list {
teacherIDs = append(teacherIDs, t.ID)
}
type FansCount struct {
TeacherId uint
Count int64
}
var fansCounts []FansCount
if len(teacherIDs) > 0 {
err = global.GVA_DB.Model(&app.Follow{}).
Select("teacher_id, count(*) as count").
Where("teacher_id IN ?", teacherIDs).
Group("teacher_id").
Scan(&fansCounts).Error
if err != nil {
global.GVA_LOG.Error("查询教师粉丝数失败", zap.Error(err))
global.GVA_LOG.Error("批量查询教师粉丝数失败", zap.Error(err))
return nil, 0, err
}
list[i].Follow = followCount
}
// 映射粉丝数
fansMap := make(map[uint]int64)
for _, fc := range fansCounts {
fansMap[fc.TeacherId] = fc.Count
}
for i := range list {
list[i].Follow = fansMap[list[i].ID]
}
return