go-common/app/job/main/aegis/model/report.go
2019-04-22 18:49:16 +08:00

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
}