Browse Source

优化查询逻辑

dev_ljk
majun 5 months ago
parent
commit
900de7d3f1
  1. 25
      link_homework/internal/logic/homework/homework.go
  2. 4
      link_homework/manifest/config/config.yaml

25
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,31 +40,34 @@ func (s *sHomework) GetHomeworkList(ctx context.Context, pageNo int, pageSize in
}
// 如果Redis中没有数据,查询数据库
err = dao.ActivityInteractiveGroup.Ctx(ctx).With(entity.Live{}).Order("end_date desc, start_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)
//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
}

4
link_homework/manifest/config/config.yaml

@ -1,8 +1,6 @@
# https://goframe.org/docs/web/server-config-file-template
server:
address: ":8080"
openapiPath: "/api.json"
swaggerPath: "/swagger"
address: ":8080"
# https://goframe.org/docs/core/glog-config
logger:

Loading…
Cancel
Save