staff_assess_task.go 2.3 KB
package domain

import "time"

//评估任务重复执行的方式
type AssessTaskRepeatWay string

const (
	AssessTaskRepeatDay         AssessTaskRepeatWay = "day"          //按天重复
	AssessTaskRepeatWeek        AssessTaskRepeatWay = "week"         //按周重复
	AssessTaskRepeatMonth       AssessTaskRepeatWay = "month"        //按月
	AssessTaskRepeatMonthDouble AssessTaskRepeatWay = "month_double" //按双月
	AssessTaskRepeatQuarter     AssessTaskRepeatWay = "quarter"      //按季度
	AssessTaskRepeatYearHalf    AssessTaskRepeatWay = "year_half"    //按半年
	AssessTaskRepeatYear        AssessTaskRepeatWay = "year"         //按年
)

// 执行评估的任务列表
type StaffAssessTask struct {
	Id                  int                 `json:"id"`
	CompanyId           int                 `json:"companyId"`           //公司id
	EvaluationProjectId int                 `json:"evaluationProjectId"` //项目id
	CycleId             int64               `json:"cycleId"`             //对应的周期id
	Types               StaffAssessType     `json:"types"`               //填写评估对应的类型
	BeginTime           time.Time           `json:"beginTime"`           //开始时间
	EndTime             time.Time           `json:"endTime"`             //截止时间
	RepeatWay           AssessTaskRepeatWay `json:"repeatWay"`           //重复执行的方式
	NextActiveTime      int64               `json:"nextActveTime"`       //下一次执行的任务的时间
	CreatedAt           time.Time           `json:"createdAt"`           //数据创建时间
	UpdatedAt           time.Time           `json:"updatedAt"`           //数据更新时间
	DeletedAt           time.Time           `json:"deletedAt"`           //数据删除时间
}

type StaffAssessTaskRepository interface {
	Save(param *StaffAssessTask) (*StaffAssessTask, error)
	Remove(id int) error
	FindOne(queryOptions map[string]interface{}) (*StaffAssessTask, error)
	Find(queryOptions map[string]interface{}) (int, []*StaffAssessTask, error)
}

//计算下一次执行任务的时间
func (task *StaffAssessTask) NewNextActveTime() {
	if task.NextActiveTime == 0 {
		task.NextActiveTime = task.BeginTime.Unix()
	}
	//Todo 根据重复执行的方式,计算下一次执行的时间点
}