You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
88 lines
1.7 KiB
88 lines
1.7 KiB
package model |
|
|
|
import ( |
|
"fmt" |
|
"strconv" |
|
"strings" |
|
) |
|
|
|
//hash fields |
|
const ( |
|
Dispatch = "ds" |
|
Delay = "dy" |
|
Submit = "st_%d_%d" // 参数1:提交状态(任务提交,资源提交,任务关闭) 参数2:提交前属于谁 |
|
Release = "rl" |
|
RscState = "rs_%d" |
|
UseTime = "ut" |
|
SetKey = "report_set" |
|
|
|
//type |
|
TypeMeta = int8(0) |
|
TypeTotal = int8(1) |
|
) |
|
|
|
//RIR resource item report |
|
type RIR struct { |
|
BizID int64 |
|
FlowID int64 |
|
UID int64 |
|
RID int64 |
|
} |
|
|
|
//Report . |
|
type Report struct { |
|
ID int64 `gorm:"AUTO_INCREMENT;primary_key;"` |
|
BusinessID int64 `gorm:"column:business_id"` |
|
FlowID int64 `gorm:"column:flow_id"` |
|
UID int64 `gorm:"column:uid"` |
|
TYPE int8 `gorm:"column:type"` |
|
Content []byte `gorm:"column:content"` |
|
} |
|
|
|
//TableName . |
|
func (r Report) TableName() string { |
|
return "task_report" |
|
} |
|
|
|
//PersonalHashKey . |
|
func PersonalHashKey(bizid, flowid, uid int64) string { |
|
return fmt.Sprintf("report_hash_%d_%d_%d", bizid, flowid, uid) |
|
} |
|
|
|
//TotalHashKey . |
|
func TotalHashKey(bizid, flowid int64) string { |
|
return fmt.Sprintf("total_inout_%d_%d_%d", bizid, flowid, 0) |
|
} |
|
|
|
//ParseKey . |
|
func ParseKey(key string) (tp int8, bizid, flowid, uid int, err error) { |
|
arr := strings.Split(key, "_") |
|
if len(arr) != 5 { |
|
err = fmt.Errorf(key) |
|
return |
|
} |
|
prefix := arr[0] + "_" + arr[1] |
|
switch prefix { |
|
case "report_hash": |
|
tp = TypeMeta |
|
case "total_inout": |
|
tp = TypeTotal |
|
default: |
|
err = fmt.Errorf(key) |
|
return |
|
} |
|
|
|
if bizid, err = strconv.Atoi(arr[2]); err != nil || bizid == 0 { |
|
err = fmt.Errorf(key) |
|
return |
|
} |
|
if flowid, err = strconv.Atoi(arr[3]); err != nil || flowid == 0 { |
|
err = fmt.Errorf(key) |
|
return |
|
} |
|
if uid, err = strconv.Atoi(arr[4]); err != nil { |
|
err = fmt.Errorf(key) |
|
return |
|
} |
|
return |
|
}
|
|
|