123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214 |
- package task
- import (
- "errors"
- "context"
- "go-common/app/admin/main/aegis/model/common"
- libtime "go-common/library/time"
- )
- //...
- const (
- ActionConsumerOff = int8(0)
- ActionConsumerOn = int8(1)
- TaskStateInit = int8(0)
- TaskStateDispatch = int8(1)
- TaskStateDelay = int8(2)
- TaskStateSubmit = int8(3)
- TaskStateRscSb = int8(4)
- TaskStateClosed = int8(5)
- TaskConfigAssign = int8(1)
- TaskConfigRangeWeight = int8(2)
- TaskConfigEqualWeight = int8(3)
- TaskRoleMember = int8(1) //组员
- TaskRoleLeader = int8(2) //组长
- TaskNoRole = int8(0) //无身份
- )
- // ErrEmpty empty pool
- var (
- ErrEmpty = errors.New("empty pool")
- ErrRole = errors.New("不在用户组内")
- )
- // Task ..
- type Task struct {
- ID int64 `form:"id" json:"id" gorm:"AUTO_INCREMENT;primary_key;"`
- BusinessID int64 `form:"business_id" json:"business_id" gorm:"column:business_id"`
- FlowID int64 `form:"flow_id" json:"flow_id" gorm:"column:flow_id"`
- RID int64 `form:"rid" json:"rid" gorm:"column:rid"`
- AdminID int64 `form:"admin_id" json:"admin_id" gorm:"column:admin_id"`
- UID int64 `form:"uid" json:"uid" gorm:"column:uid"`
- MID int64 `form:"mid" json:"mid" gorm:"column:mid"`
- State int8 `form:"state" json:"state" gorm:"column:state"`
- Weight int64 `form:"weight" json:"weight" gorm:"column:weight"`
- Utime int64 `form:"utime" json:"utime" gorm:"column:utime"`
- Gtime common.IntTime `form:"gtime" json:"gtime" gorm:"column:gtime"`
- Fans int64 `form:"fans" json:"fans" gorm:"column:fans"`
- Group string `form:"group" json:"group" gorm:"column:group"`
- Reason string `form:"reason" json:"reason" grom:"column:reason"`
- Ctime common.IntTime `form:"ctime" json:"ctime" gorm:"column:ctime"`
- Mtime common.IntTime `form:"mtime" json:"mtime" gorm:"column:mtime"`
- }
- // TableName ...
- func (t Task) TableName() string {
- return "task"
- }
- // TempOptions 中间参数
- type TempOptions struct {
- BisLeader bool // 是否组长
- NoCache bool // 不使用缓存
- Action string
- }
- // NextOptions options for Next
- type NextOptions struct {
- common.BaseOptions
- TempOptions
- SeizeCount int64 `form:"seize_count" default:"10"` // 抢占多少个
- DispatchCount int64 `form:"dispatch_count" default:"1"` // 领取多少个
- }
- // ListOptions options for List
- type ListOptions struct {
- common.BaseOptions
- common.Pager
- TempOptions
- BisShow bool // 用于列表展示还是直接派发
- State int8 `form:"state"`
- }
- // SubmitOptions options for Submit
- type SubmitOptions struct {
- common.BaseOptions
- TempOptions
- TaskID int64 `form:"task_id"`
- Utime uint64
- OldUID int64
- OldState int8
- }
- // DelayOptions options for Delay
- type DelayOptions struct {
- common.BaseOptions
- TaskID int64 `form:"task_id"`
- Reason string `form:"reason"`
- }
- // ConfigOption .
- type ConfigOption struct {
- common.BaseOptions
- ID int64 `form:"id"`
- Btime string `form:"btime"`
- Etime string `form:"etime"`
- Description string `form:"description"`
- ConfType int8 `form:"conf_type" validate:"required"`
- ConfJSON string `form:"conf_json" validate:"required"`
- }
- // Config .
- type Config struct {
- ID int64 `form:"id" json:"id" gorm:"AUTO_INCREMENT;primary_key;"`
- ConfJSON string `json:"conf_json" gorm:"column:conf_json"`
- ConfType int8 `form:"conf_type" json:"conf_type" gorm:"column:conf_type"`
- BusinessID int64 `form:"business_id" json:"business_id" gorm:"column:business_id"`
- FlowID int64 `form:"flow_id" json:"flow_id" gorm:"column:flow_id"`
- Btime libtime.Time `form:"btime" json:"btime" gorm:"column:btime"`
- Etime libtime.Time `form:"etime" json:"etime" gorm:"column:etime"`
- State int8 `form:"state" json:"state" gorm:"column:state"`
- UID int64 `form:"uid" json:"uid" gorm:"column:uid"`
- Uname string `form:"uname" json:"uname" gorm:"column:uname"`
- Description string `form:"description" json:"description" gorm:"column:description"`
- Ctime libtime.Time `form:"ctime" json:"ctime" gorm:"column:ctime"`
- Mtime libtime.Time `form:"mtime" json:"mtime" gorm:"column:mtime"`
- }
- // TableName for orm
- func (c Config) TableName() string {
- return "task_config"
- }
- // EqualWeightConfig 等值权重
- type EqualWeightConfig struct {
- Name string `json:"name"` // taskid 或者 mid
- IDs string `json:"ids"`
- Weight int64 `json:"weight"`
- Type int8 `json:"type"` // 周期或者定值
- }
- // RangeWeightConfig 权重
- type RangeWeightConfig struct {
- Name string `json:"name"`
- Range []*RangeConfig `json:"range"`
- }
- // RangeConfig 范围配置
- type RangeConfig struct {
- Threshold int64 `json:"threshold"`
- Weight int64 `json:"weight"`
- }
- // AssignConfig 指派
- type AssignConfig struct {
- MIDs []int64 `json:"mids"`
- UIDs []int64 `json:"uids"`
- }
- // QueryParams 配置筛选参数
- type QueryParams struct {
- common.Pager
- ConfType int8 `form:"conf_type"`
- State int8 `form:"state"`
- BusinessID int64 `form:"business_id"`
- FlowID int64 `form:"flow_id"`
- Btime string `form:"mtime_from"`
- Etime string `form:"mtime_to"`
- ConfName string `form:"conf_name"` // 筛选配置具体类型,fans,group,waittime,mid,taskid
- IDFilter string `form:"id_filter"` // 筛选具体的ID
- TypeFilter string `form:"type_filter"` // 筛选动态或静态权重
- }
- // History 任务日志
- type History struct {
- TaskID int64 `json:"task_id"`
- AdminID int64
- UID int64
- Reason string
- Uname string
- Action int8
- }
- // UnDOStat undo stat
- type UnDOStat struct {
- Assign int64 `json:"assign_count" gorm:"column:assign"`
- Delay int64 `json:"delay_count" gorm:"column:delay"`
- Normal int64 `json:"normal_count" gorm:"column:normal"`
- }
- // Stat 列表页最上方
- type Stat struct {
- Normal int64 `json:"normal_count" gorm:"column:normal"`
- Assign int64 `json:"assign_count" gorm:"column:assign"`
- DelayTotal int64 `json:"delay_total" gorm:"column:delayTotal"`
- DelayPersonal int64 `json:"delay_personal" gorm:"column:delayPersonal"`
- ReviewTotal int64 `json:"review_total"`
- ReviewPersonal int64 `json:"review_personal"`
- }
- // RangeFunc .
- type RangeFunc func(context.Context, *ListOptions) (map[int64]*Task, int64, []int64, []int64, error)
- // RemoveFunc .
- type RemoveFunc func(context.Context, *common.BaseOptions, ...interface{}) error
- // ListFuncDB .
- type ListFuncDB func(context.Context, map[int64]*Task, []int64, ...interface{}) (map[int64]struct{}, error)
|