staff_assess.go 2.9 KB
package domain

import "time"

//填写评估的类型
type StaffAssessType string

const (
	AssessSelf            StaffAssessType = "self"              //自评
	AssessSuper           StaffAssessType = "supper"            //上级评估
	AssessInviteSameSuper StaffAssessType = "invite_same_super" //360 邀请评估-相同上级的同事
	AssessInviteDiffSuper StaffAssessType = "invite_diff_super" //360 邀请评估-不同上级的同事
)

//填写评估的状态
type StaffAssessStatus string

const (
	StaffAssessUnstart     StaffAssessStatus = "unstart"     //未开始
	StaffAssessUncompleted StaffAssessStatus = "uncompleted" //未完成
	StaffAssessCompleted   StaffAssessStatus = "completed"   //已完成
)

// 记录用户需要的评估项目
type StaffAssess struct {
	Id                    int               `json:"id"`                    //id
	CompanyId             int               `json:"companyId"`             //公司id
	EvaluationProjectId   int               `json:"evaluationProjectId"`   //对应的项目id
	EvaluationProjectName string            `json:"evaluationProjectName"` //对应的项目名称
	CycleId               int64             `json:"cycleId"`               //对应的周期id
	CycleName             string            `json:"cycleName"`             //对应的周期名称
	StaffAssessTaskId     int               `json:"staffAssessTaskId"`     //执行评估的任务id
	TargetUser            StaffDesc         `json:"targetUser"`            //被评估的目标用户
	TargetDepartment      []StaffDepartment `json:"targetDepartment"`      //被评估的目标用户所在的部门
	Executor              StaffDesc         `json:"executor"`              //填写评估的用户
	Types                 StaffAssessType   `json:"types"`                 //填写评估对应的类型
	LinkNodeId            int               `json:"linkNodeId"`            //评估环节对应的id,用于调取评估模板
	LinkNodeName          string            `json:"linkNodeName"`          //评估环节对应的id,用于调取评估模板
	Status                StaffAssessStatus `json:"status"`                //评估的填写状态
	BeginTime             time.Time         `json:"beginTime"`             //开始时间
	EndTime               time.Time         `json:"endTime"`               //截止时间
	CreatedAt             time.Time         `json:"createdAt"`             //数据创建时间
	UpdatedAt             time.Time         `json:"updatedAt"`             //数据更新时间
	DeletedAt             *time.Time        `json:"deletedAt"`             //数据删除时间
}

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