|
|
@ -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 |
|
|
|
} |
|
|
|