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
|
||
|
}
|