89 lines
1.7 KiB
Go
89 lines
1.7 KiB
Go
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
|
|
}
|