diff --git a/business/jxstore/cms/job.go b/business/jxstore/cms/job.go index 647cf1efc..b78f423d9 100644 --- a/business/jxstore/cms/job.go +++ b/business/jxstore/cms/job.go @@ -1081,21 +1081,63 @@ func ResetJobTimers() { } func CreateJobSpan(ctx *jxcontext.Context, jobIDs []int, endAt string, span int) (err error) { - // var ( - // db = dao.GetDB() - // ) - // task := tasksch.NewParallelTask("CreateJobSpan", tasksch.NewParallelConfig().SetIsContinueWhenError(true), jxcontext.AdminCtx, - // func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) { - // jobID := batchItemList[0].(int) - // endAt2 := utils.Str2Time(endAt) - // jonSpan := &model.JobSpan{ - // JobID: jobID, - // EndAt: &endAt2, - // SpanType: span, - // } - // return retVal, err - // }, jobIDs) - // tasksch.HandleTask(task, nil, true).Run() - // task.GetID() + var ( + db = dao.GetDB() + maxSeq = 0 + ) + if span == model.JobSpanTop { + maxSeq, err = dao.GetMaxJobTopSeq(db) + } else { + maxSeq, err = dao.GetMaxJobRecmdSeq(db) + } + for k, jobID := range jobIDs { + endAt2 := utils.Str2Time(endAt) + jonSpan := &model.JobSpan{ + JobID: jobID, + EndAt: &endAt2, + SpanType: span, + } + if err = dao.CreateEntity(db, jonSpan); err == nil { + job := &model.Job{} + job.ID = jobID + if err = dao.GetEntity(db, job); err == nil { + if span == model.JobSpanTop { + job.TopSeq = k + 1 + maxSeq + job.JobSpanTop = 1 + dao.UpdateEntity(db, job, "TopSeq", "JobSpanTop") + } else { + job.RecmdSeq = k + 1 + maxSeq + job.JobSpanRecmd = 1 + dao.UpdateEntity(db, job, "RecmdSeq", "JobSpanRecmd") + } + } + } + } + return err +} + +func RefreshJobSpan(ctx *jxcontext.Context) (err error) { + var ( + db = dao.GetDB() + ) + jobSpans, err := dao.GetJobSpans(db) + task := tasksch.NewParallelTask("RefreshJobSpan", tasksch.NewParallelConfig().SetIsContinueWhenError(true), jxcontext.AdminCtx, + func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) { + jobSpan := batchItemList[0].(*model.JobSpan) + if time.Now().Sub(*jobSpan.EndAt) >= 0 { + job := &model.Job{} + job.ID = jobSpan.JobID + if err = dao.GetEntity(db, job); err == nil { + if jobSpan.SpanType == model.JobSpanTop { + + } else { + + } + } + } + return retVal, err + }, jobSpans) + tasksch.HandleTask(task, nil, true).Run() + task.GetID() return err } diff --git a/business/jxstore/misc/misc.go b/business/jxstore/misc/misc.go index 1a263f969..05f6be60d 100644 --- a/business/jxstore/misc/misc.go +++ b/business/jxstore/misc/misc.go @@ -38,6 +38,8 @@ func doDailyWork() { globals.SugarLogger.Debug("doDailyWork") //刷新任务过期状态 cms.RefreshJobStatus(jxcontext.AdminCtx) + //刷新任务标签状态 + cms.RefreshJobSpan(jxcontext.AdminCtx) //刷新用户会员时间 cms.RefreshUserMemberStatus(jxcontext.AdminCtx) //删除聊天记录 diff --git a/business/model/dao/dao_job.go b/business/model/dao/dao_job.go index 3638547e7..e1e3e7f94 100644 --- a/business/model/dao/dao_job.go +++ b/business/model/dao/dao_job.go @@ -515,3 +515,42 @@ func GetStationInfoList(db *DaoDB, stationName string, cityCode int, lat, lng fl } return pagedInfo, err } + +func GetMaxJobTopSeq(db *DaoDB) (maxSeq int, err error) { + Seq := &struct { + TopSeq int + }{} + sql := ` + SELECT MAX(top_seq) top_seq FROM job WHERE deleted_at = ? AND status = ? AND job_span_top = ? + ` + sqlParams := []interface{}{utils.DefaultTimeValue, model.JobStatusDoing, 1} + if err = GetRow(db, &Seq, sql, sqlParams); err == nil { + return Seq.TopSeq, err + } + return maxSeq, err +} + +func GetMaxJobRecmdSeq(db *DaoDB) (maxSeq int, err error) { + Seq := &struct { + RecmdSeq int + }{} + sql := ` + SELECT MAX(recmd_seq) recmd_seq FROM job WHERE deleted_at = ? AND status = ? AND job_span_recmd = ? + ` + sqlParams := []interface{}{utils.DefaultTimeValue, model.JobStatusDoing, 1} + if err = GetRow(db, &Seq, sql, sqlParams); err == nil { + return Seq.RecmdSeq, err + } + return maxSeq, err +} + +func GetJobSpans(db *DaoDB) (jobSpans []*model.JobSpan, err error) { + sql := ` + SELECT * + FROM job_span + WHERE deleted_at = ? + ` + sqlParams := []interface{}{utils.DefaultTimeValue} + err = GetRows(db, &jobSpans, sql, sqlParams) + return jobSpans, err +}