Browse Source

优化查询逻辑

majun
majun 5 months ago
parent
commit
514bbb00e5
  1. 29
      link_homework/internal/logic/homework/homework.go
  2. 3
      link_homework/manifest/config/config.yaml

29
link_homework/internal/logic/homework/homework.go

@ -32,7 +32,7 @@ func (s *sHomework) GetHomeworkList(ctx context.Context, pageNo int, pageSize in
if value.String() != "" {
// 如果Redis中有数据,尝试解析为ActivityInteractiveGroup列表
err = json.Unmarshal(value.Bytes(), &homeworkList) //反序列化
//homeworkList = UpdateHomework(ctx, homeworkList)
homeworkList = UpdateHomework(ctx, homeworkList)
if err != nil {
return nil, err
}
@ -40,35 +40,34 @@ func (s *sHomework) GetHomeworkList(ctx context.Context, pageNo int, pageSize in
}
// 如果Redis中没有数据,查询数据库
err = dao.ActivityInteractiveGroup.Ctx(ctx).With(entity.Live{}).Order("start_date desc, end_date desc").Page(pageNo, pageSize).Scan(&homeworkList)
err = dao.ActivityInteractiveGroup.Ctx(ctx).With(entity.Live{}).Order("status asc, start_date desc, end_date desc").Page(pageNo, pageSize).Scan(&homeworkList)
err = g.DB("cms").Model("fx_article").Where("id", gdb.ListItemValuesUnique(homeworkList, "ArticleId")).ScanList(&homeworkList, "Article", "id:ArticleId")
homeworkList = UpdateHomework(ctx, homeworkList)
if err != nil {
return nil, err
}
homeworkList = UpdateHomework(ctx, homeworkList)
// 将查询到的作业列表序列化并存储到Redis,更新频繁变更的数据
homeworkListJson, _ := json.Marshal(homeworkList)
_, err = g.Redis().Set(ctx, fmt.Sprintf("%d-%d homeworklist", pageNo, pageSize), homeworkListJson)
if err != nil {
fmt.Println("redis set error", err)
return nil, err
}
//homeworkList = UpdateHomework(ctx, homeworkList)
return
}
func UpdateHomework(ctx context.Context, homeworkList []*entity.ActivityInteractiveGroup) []*entity.ActivityInteractiveGroup {
for _, v := range homeworkList {
if v.StartDate.After(gtime.Now()) {
v.Status = 0
} else if v.EndDate.Before(gtime.Now()) {
v.Status = 2
} else {
v.Status = 1
if v.Status != 2 {
if v.StartDate.After(gtime.Now()) {
v.Status = 0
} else if v.EndDate.Before(gtime.Now()) {
v.Status = 2
} else {
v.Status = 1
}
if v.Status == 1 {
v.Count, _ = dao.ActivityInteractiveRecord.Ctx(ctx).Where("group_id", v.Id).Group("form_id").Limit(1).Count()
}
}
v.Count, _ = dao.ActivityInteractiveRecord.Ctx(ctx).Where("group_id", v.Id).Group("form_id").Limit(1).Count()
}
return homeworkList
}

3
link_homework/manifest/config/config.yaml

@ -19,6 +19,5 @@ database:
# https://goframe.org/docs/core/gredis-config-file
redis:
default:
address: "127.0.0.1:6379"
password: ""
address: 127.0.0.1:6379
db: 0
Loading…
Cancel
Save