lijikun 5 months ago
parent
commit
320bce7ea9
  1. 39
      link_homework/internal/logic/homework/homework.go

39
link_homework/internal/logic/homework/homework.go

@ -32,17 +32,25 @@ func (s *sHomework) GetHomeworkList(ctx context.Context, pageNo int, pageSize in
if value.String() != "" { if value.String() != "" {
// 如果Redis中有数据,尝试解析为ActivityInteractiveGroup列表 // 如果Redis中有数据,尝试解析为ActivityInteractiveGroup列表
err = json.Unmarshal(value.Bytes(), &homeworkList) //反序列化 err = json.Unmarshal(value.Bytes(), &homeworkList) //反序列化
homeworkList = UpdateHomework(ctx, homeworkList)
homeworklist, cnt := UpdateHomework(ctx, homeworkList)
if cnt > 0 {
// 将修改后的作业列表序列化并存储到Redis,更新频繁变更的数据
homeworkListJson, _ := json.Marshal(homeworklist)
_, err = g.Redis().Set(ctx, fmt.Sprintf("%d-%d homeworklist", pageNo, pageSize), homeworkListJson)
}
if err != nil { if err != nil {
return nil, err return nil, err
} }
return
return homeworklist, err
} }
// 如果Redis中没有数据,查询数据库 // 如果Redis中没有数据,查询数据库
err = dao.ActivityInteractiveGroup.Ctx(ctx).With(entity.Live{}).OrderDesc("created_at").Page(pageNo, pageSize).Scan(&homeworkList) err = dao.ActivityInteractiveGroup.Ctx(ctx).With(entity.Live{}).OrderDesc("created_at").Page(pageNo, pageSize).Scan(&homeworkList)
err = g.DB("cms").Model("fx_article").Where("id", gdb.ListItemValuesUnique(homeworkList, "ArticleId")).ScanList(&homeworkList, "Article", "id:ArticleId") err = g.DB("cms").Model("fx_article").Where("id", gdb.ListItemValuesUnique(homeworkList, "ArticleId")).ScanList(&homeworkList, "Article", "id:ArticleId")
homeworkList = UpdateHomework(ctx, homeworkList)
homeworkList = InitHomework(ctx, homeworkList)
homeworkList, _ = UpdateHomework(ctx, homeworkList)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -54,22 +62,41 @@ func (s *sHomework) GetHomeworkList(ctx context.Context, pageNo int, pageSize in
return return
} }
func UpdateHomework(ctx context.Context, homeworkList []*entity.ActivityInteractiveGroup) []*entity.ActivityInteractiveGroup {
func UpdateHomework(ctx context.Context, homeworkList []*entity.ActivityInteractiveGroup) ([]*entity.ActivityInteractiveGroup, int) {
cnt := 0
for _, v := range homeworkList { for _, v := range homeworkList {
if v.Status != 2 { if v.Status != 2 {
if v.StartDate.After(gtime.Now()) { if v.StartDate.After(gtime.Now()) {
v.Status = 0 v.Status = 0
} else if v.EndDate.Before(gtime.Now()) { } else if v.EndDate.Before(gtime.Now()) {
v.Status = 2 v.Status = 2
cnt++
_, _ = dao.ActivityInteractiveGroup.Ctx(ctx).Data(do.ActivityInteractiveGroup{
Status: 2,
}).WherePri(v.Id).Update()
} else { } else {
v.Status = 1 v.Status = 1
} }
if v.Status == 1 {
v.Count, _ = dao.ActivityInteractiveRecord.Ctx(ctx).Where("group_id", v.Id).Group("form_id").Limit(1).Count()
if v.Status != 0 {
rCount, _ := dao.ActivityInteractiveRecord.Ctx(ctx).Where("group_id", v.Id).Count()
tCount, _ := dao.ActivityInteractiveForm.Ctx(ctx).Where("group_id", v.Id).Count()
v.Count = rCount / tCount
} }
} }
} }
return homeworkList, cnt
}
func InitHomework(ctx context.Context, homeworkList []*entity.ActivityInteractiveGroup) []*entity.ActivityInteractiveGroup {
for _, v := range homeworkList {
if v.Status == 2 {
rCount, _ := dao.ActivityInteractiveRecord.Ctx(ctx).Where("group_id", v.Id).Count()
tCount, _ := dao.ActivityInteractiveForm.Ctx(ctx).Where("group_id", v.Id).Count()
v.Count = rCount / tCount
}
}
return homeworkList return homeworkList
} }

Loading…
Cancel
Save