Browse Source

修改添加作业时间限制v2

dev
majun 5 months ago
parent
commit
7f9f0ab9f9
  1. 228
      link_homework/internal/logic/homework/homework.go

228
link_homework/internal/logic/homework/homework.go

@ -26,6 +26,83 @@ func New() service.IHomework {
return &sHomework{} return &sHomework{}
} }
//func (s *sHomework) GetHomeworkList(ctx context.Context, pageNo int, pageSize int) (homeworkList []*entity.ActivityInteractiveGroup, err error) {
// // 从Redis中获取数据
// value, _ := g.Redis().Get(ctx, fmt.Sprintf("%d-%d homeworklist", pageNo, pageSize))
// if value.String() != "" {
// // 如果Redis中有数据,尝试解析为ActivityInteractiveGroup列表
// err = json.Unmarshal(value.Bytes(), &homeworkList) //反序列化
// homeworklist, cnt := UpdateHomework(ctx, homeworkList)
//
// if cnt > 0 {
// // 将修改后的作业列表排序后序列化并存储到Redis,更新频繁变更的数据
// sort.Slice(homeworklist, func(i, j int) bool {
// return homeworklist[i].Status < homeworklist[j].Status
// })
// homeworkListJson, _ := json.Marshal(homeworklist)
// _, err = g.Redis().Set(ctx, fmt.Sprintf("%d-%d homeworklist", pageNo, pageSize), homeworkListJson)
// }
//
// if err != nil {
// return nil, err
// }
// return homeworklist, err
// }
//
// // 如果Redis中没有数据,查询数据库
// err = dao.ActivityInteractiveGroup.Ctx(ctx).With(entity.Live{}).Order("status asc, created_at 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 = InitHomework(ctx, homeworkList)
// homeworkList, _ = UpdateHomework(ctx, homeworkList)
// if err != nil {
// return nil, err
// }
//
// // 将查询到的作业列表序列化并存储到Redis,更新频繁变更的数据
// homeworkListJson, _ := json.Marshal(homeworkList)
// _, err = g.Redis().Set(ctx, fmt.Sprintf("%d-%d homeworklist", pageNo, pageSize), homeworkListJson)
//
// return
//}
//
//func UpdateHomework(ctx context.Context, homeworkList []*entity.ActivityInteractiveGroup) ([]*entity.ActivityInteractiveGroup, int) {
// cnt := 0
// for _, v := range homeworkList {
// if v.Status != 2 {
// if v.StartDate.After(gtime.Now()) {
// v.Status = 1
// } else if v.EndDate.Before(gtime.Now().AddDate(0, 0, -1)) {
// v.Status = 2
// cnt++
// _, _ = dao.ActivityInteractiveGroup.Ctx(ctx).Data(do.ActivityInteractiveGroup{
// Status: 2,
// }).WherePri(v.Id).Update()
// } else {
// v.Status = 0
// }
// if v.Status != 1 {
// result, _ := dao.ActivityInteractiveRecord.Ctx(ctx).Where("group_id", v.Id).Group("form_id").Limit(1).Value("COUNT(*)")
// v.Count = result.Int()
// }
// }
// }
//
// return homeworkList, cnt
//}
//
//func InitHomework(ctx context.Context, homeworkList []*entity.ActivityInteractiveGroup) []*entity.ActivityInteractiveGroup {
// for _, v := range homeworkList {
// if v.Status == 2 {
// if v.Status != 1 {
// result, _ := dao.ActivityInteractiveRecord.Ctx(ctx).Where("group_id", v.Id).Group("form_id").Limit(1).Value("COUNT(*)")
// v.Count = result.Int()
// }
// }
// }
//
// return homeworkList
//}
func (s *sHomework) GetHomeworkList(ctx context.Context, pageNo int, pageSize int) (homeworkList []*entity.ActivityInteractiveGroup, err error) { func (s *sHomework) GetHomeworkList(ctx context.Context, pageNo int, pageSize int) (homeworkList []*entity.ActivityInteractiveGroup, err error) {
// 从Redis中获取数据 // 从Redis中获取数据
value, _ := g.Redis().Get(ctx, fmt.Sprintf("%d-%d homeworklist", pageNo, pageSize)) value, _ := g.Redis().Get(ctx, fmt.Sprintf("%d-%d homeworklist", pageNo, pageSize))
@ -68,7 +145,7 @@ func UpdateHomework(ctx context.Context, homeworkList []*entity.ActivityInteract
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().AddDate(0, 0, -1)) {
v.Status = 2 v.Status = 2
cnt++ cnt++
_, _ = dao.ActivityInteractiveGroup.Ctx(ctx).Data(do.ActivityInteractiveGroup{ _, _ = dao.ActivityInteractiveGroup.Ctx(ctx).Data(do.ActivityInteractiveGroup{
@ -176,7 +253,7 @@ func (s *sHomework) EditHomework(ctx context.Context, req *homework.EditHomework
// 判断作业是否已结束 // 判断作业是否已结束
var nowhomework *entity.ActivityInteractiveGroup var nowhomework *entity.ActivityInteractiveGroup
err = dao.ActivityInteractiveGroup.Ctx(ctx).WherePri(req.Id).Scan(&nowhomework) err = dao.ActivityInteractiveGroup.Ctx(ctx).WherePri(req.Id).Scan(&nowhomework)
if nowhomework.EndDate.Before(gtime.Now()) {
if nowhomework.EndDate.Before(gtime.Now().AddDate(0, 0, -1)) {
return fmt.Errorf("作业已结束,无法修改!") return fmt.Errorf("作业已结束,无法修改!")
} else { } else {
// 判断作业是否已开始 // 判断作业是否已开始
@ -187,7 +264,7 @@ func (s *sHomework) EditHomework(ctx context.Context, req *homework.EditHomework
// 判断提交修改表单状态 // 判断提交修改表单状态
status := 0 status := 0
if req.StartDate.Before(gtime.Now()) { if req.StartDate.Before(gtime.Now()) {
if req.EndDate.Before(gtime.Now()) {
if req.EndDate.Before(gtime.Now().AddDate(0, 0, -1)) {
status = 2 status = 2
} else { } else {
status = 1 status = 1
@ -258,3 +335,148 @@ func (s *sHomework) EditHomework(ctx context.Context, req *homework.EditHomework
return return
} }
} }
//func (s *sHomework) AddHomework(ctx context.Context, req *homework.AddHomeworkReq) (err error) {
// // 判断作业是否已结束
// status := 1
// if req.StartDate.Before(gtime.Now()) {
// if req.EndDate.Before(gtime.Now().AddDate(0, 0, -1)) {
// return fmt.Errorf("作业时间已过期,无法添加!")
// } else {
// status = 0
// }
// }
// var Id int64
// if req.ArticleId == 0 { // 关联文章
// Id, err = dao.ActivityInteractiveGroup.Ctx(ctx).Data(do.ActivityInteractiveGroup{
// Name: req.Name,
// Status: status,
// ClubType: req.ClubType,
// LiveId: req.LiveId,
// StartDate: req.StartDate,
// EndDate: req.EndDate,
// }).InsertAndGetId()
// } else if req.LiveId == 0 { // 关联直播
// Id, err = dao.ActivityInteractiveGroup.Ctx(ctx).Data(do.ActivityInteractiveGroup{
// Name: req.Name,
// Status: status,
// ClubType: req.ClubType,
// ArticleId: req.ArticleId,
// StartDate: req.StartDate,
// EndDate: req.EndDate,
// }).InsertAndGetId()
// } else {
// return fmt.Errorf("不能同时关联文章和直播!")
// }
// // 添加所有题目
// for _, v := range req.Questions {
// _, err = dao.ActivityInteractiveForm.Ctx(ctx).Data(do.ActivityInteractiveForm{
// Name: req.Name,
// Description: v.Description,
// Content: v.Content,
// Status: status,
// Type: v.Type,
// GroupId: Id,
// }).Insert()
// }
// // 添加数据后,删除所有缓存
// keys, err := g.Redis().Keys(ctx, "*-* homeworklist")
// if len(keys) > 0 {
// _, err = g.Redis().Del(ctx, keys...)
// }
//
// //删除客户端缓存
// keys, err = g.Redis().Keys(ctx, "* ClientHomeworkList")
// if len(keys) > 0 {
// _, err = g.Redis().Del(ctx, keys...)
// }
//
// return
//}
//
//func (s *sHomework) EditHomework(ctx context.Context, req *homework.EditHomeworkReq) (err error) {
// // 判断作业是否已结束
// var nowhomework *entity.ActivityInteractiveGroup
// err = dao.ActivityInteractiveGroup.Ctx(ctx).WherePri(req.Id).Scan(&nowhomework)
// if nowhomework.EndDate.Before(gtime.Now().AddDate(0, 0, -1)) {
// return fmt.Errorf("作业已结束,无法修改!")
// } else {
// // 判断作业是否已开始
// flag := true // 作业未开始
// if nowhomework.StartDate.Before(gtime.Now()) { //作业已开始
// flag = false
// }
// // 判断提交修改表单状态
// status := 1
// if req.StartDate.Before(gtime.Now()) {
// if req.EndDate.Before(gtime.Now().AddDate(0, 0, -1)) {
// status = 2
// } else {
// status = 0
// }
// }
// // 判断是否关联文章或直播
// if req.ArticleId == 0 {
// _, err = g.Model("activity_interactive_group").Data(g.Map{
// "name": req.Name,
// "status": status,
// "club_type": req.ClubType,
// "article_id": nil,
// "live_id": req.LiveId,
// "start_date": req.StartDate,
// "end_date": req.EndDate,
// }).WherePri(req.Id).Update()
// } else if req.LiveId == 0 {
// _, err = g.Model("activity_interactive_group").Data(g.Map{
// "name": req.Name,
// "status": status,
// "club_type": req.ClubType,
// "article_id": req.ArticleId,
// "live_id": nil,
// "start_date": req.StartDate,
// "end_date": req.EndDate,
// }).WherePri(req.Id).Update()
// } else {
// return fmt.Errorf("不能同时关联文章和直播!")
// }
// if flag { // 未开始
// _, err = dao.ActivityInteractiveForm.Ctx(ctx).Where("group_id", req.Id).Delete()
// for _, v := range req.Questions {
// _, err = dao.ActivityInteractiveForm.Ctx(ctx).Data(do.ActivityInteractiveForm{
// Name: req.Name,
// Description: v.Description,
// Content: v.Content,
// Status: status,
// Type: v.Type,
// GroupId: req.Id,
// }).Insert()
// }
// } else { // 已开始
// for _, v := range req.Questions {
// _, err = dao.ActivityInteractiveForm.Ctx(ctx).Data(do.ActivityInteractiveForm{
// Name: req.Name,
// Description: v.Description,
// Content: v.Content,
// Status: status,
// }).WherePri(v.Id).Update()
// }
// }
// // 修改数据后,删除所有缓存
// keys, _ := g.Redis().Keys(ctx, "*-* homeworklist")
// if len(keys) > 0 {
// _, _ = g.Redis().Del(ctx, keys...)
// }
//
// //删除客户端缓存
// keys, err = g.Redis().Keys(ctx, "* ClientHomeworkList")
// if len(keys) > 0 {
// _, err = g.Redis().Del(ctx, keys...)
// }
// keys, err = g.Redis().Keys(ctx, "* HomeworkQuestions")
// if len(keys) > 0 {
// _, err = g.Redis().Del(ctx, keys...)
// }
//
// return
// }
//}
Loading…
Cancel
Save