Create & Init Project...

This commit is contained in:
2019-04-22 18:49:16 +08:00
commit fc4fa37393
25440 changed files with 4054998 additions and 0 deletions

View File

@@ -0,0 +1,40 @@
package(default_visibility = ["//visibility:public"])
load(
"@io_bazel_rules_go//go:def.bzl",
"go_library",
)
go_library(
name = "go_default_library",
srcs = [
"direction.go",
"flow.go",
"flow_resource.go",
"net.go",
"params.go",
"token.go",
"transition.go",
],
importpath = "go-common/app/admin/main/aegis/model/net",
tags = ["automanaged"],
visibility = ["//visibility:public"],
deps = [
"//app/admin/main/aegis/model/common:go_default_library",
"//library/time:go_default_library",
],
)
filegroup(
name = "package-srcs",
srcs = glob(["**"]),
tags = ["automanaged"],
visibility = ["//visibility:private"],
)
filegroup(
name = "all-srcs",
srcs = [":package-srcs"],
tags = ["automanaged"],
visibility = ["//visibility:public"],
)

View File

@@ -0,0 +1,60 @@
package net
import (
"time"
)
const (
// TableDirection .
TableDirection = "net_direction"
//DirInput 从flow指向transition
DirInput = int8(1)
//DirOutput 从transition指向flow
DirOutput = int8(2)
//DirOrderSequence 下游顺序执行
DirOrderSequence = int8(0)
//DirOrderOrSplit 下游根据条件拆分各分支若为transition,可允许操作个数>=1
DirOrderOrSplit = int8(1)
//DirOrderOrResultSplit 下游transition操作拆分每个transition只有一个可允许操作enable均默认为true但只能操作一个
//先不做, 如果做了在详情页提交后怎么知道提交的是哪个transition有多个
DirOrderOrResultSplit = int8(2)
//todo --- 其他顺序 v2
)
// DirDirectionDesc .
var DirDirectionDesc = map[int8]string{
DirInput: "从节点指向变化",
DirOutput: "从变化指向节点",
}
// DirOrderDesc 有向线下游顺序描述
var DirOrderDesc = map[int8]string{
DirOrderSequence: "直序",
}
// Direction 有向线连接flow和transition
type Direction struct {
ID int64 `gorm:"primary_key" json:"id" form:"id" validate:"omitempty,gt=0"`
NetID int64 `gorm:"column:net_id" json:"net_id" form:"net_id" validate:"omitempty,gt=0"`
FlowID int64 `gorm:"column:flow_id" json:"flow_id" form:"flow_id" validate:"required,gt=0"`
TransitionID int64 `gorm:"column:transition_id" json:"transition_id" form:"transition_id" validate:"required,gt=0"`
Direction int8 `gorm:"column:direction" json:"direction" form:"direction" validate:"required,min=1,max=2"`
Order int8 `gorm:"column:order" json:"order" form:"order" validate:"omitempty,min=0,max=2"`
Guard string `gorm:"column:guard" json:"guard"`
Output string `gorm:"column:output" json:"output"`
UID int64 `gorm:"column:uid" json:"uid"`
DisableTime time.Time `gorm:"column:disable_time" json:"disable_time"`
Ctime time.Time `gorm:"column:ctime" json:"ctime"`
Mtime time.Time `gorm:"column:mtime" json:"mtime"`
}
// TableName .
func (d *Direction) TableName() string {
return TableDirection
}
// IsAvailable .
func (d *Direction) IsAvailable() bool {
return d.DisableTime.IsZero()
}

View File

@@ -0,0 +1,48 @@
package net
import (
"time"
)
const (
// TableFlow .
TableFlow = "net_flow"
)
// Flow 节点
type Flow struct {
ID int64 `gorm:"primary_key" json:"id"`
NetID int64 `gorm:"column:net_id" json:"net_id"`
Name string `gorm:"column:name" json:"name"`
ChName string `gorm:"column:ch_name" json:"ch_name"`
Description string `gorm:"column:description" json:"description"`
UID int64 `gorm:"column:uid" json:"uid"`
DisableTime time.Time `gorm:"column:disable_time" json:"disable_time"`
Ctime time.Time `gorm:"column:ctime" json:"ctime"`
Mtime time.Time `gorm:"column:mtime" json:"mtime"`
}
// TableName .
func (f *Flow) TableName() string {
return TableFlow
}
// IsAvailable .
func (f *Flow) IsAvailable() bool {
return f.DisableTime.IsZero()
}
// FlowArr .
type FlowArr []*Flow
func (a FlowArr) Len() int {
return len(a)
}
func (a FlowArr) Less(i, j int) bool {
return a[i].ID < a[j].ID
}
func (a FlowArr) Swap(i, j int) {
a[i], a[j] = a[j], a[i]
}

View File

@@ -0,0 +1,25 @@
package net
const (
//TableFlowResource .
TableFlowResource = "net_flow_resource"
//FRStateDeleted 流程取消状态
FRStateDeleted = -1
//FRStateRunning 流程运行状态
FRStateRunning = 0
)
//FlowResource 资源在审核网的运行现状
type FlowResource struct {
ID int64 `gorm:"primary_key" json:"id"`
RID int64 `gorm:"column:rid" json:"rid"`
FlowID int64 `gorm:"column:flow_id" json:"flow_id"`
State int8 `gorm:"column:state" json:"state"`
NetID int64 `gorm:"column:net_id" json:"net_id"`
}
// TableName .
func (fr *FlowResource) TableName() string {
return TableFlowResource
}

View File

@@ -0,0 +1,37 @@
package net
import (
"time"
)
const (
// TableNet .
TableNet = "net"
)
// Recovered .
var Recovered = time.Time{}
// Net net.
type Net struct {
ID int64 `gorm:"primary_key" json:"id" form:"id" validate:"omitempty,gt=0"`
BusinessID int64 `gorm:"column:business_id" json:"business_id" form:"business_id" validate:"omitempty,gt=0"`
ChName string `gorm:"column:ch_name" json:"ch_name" form:"ch_name" validate:"required,max=32"`
Description string `gorm:"column:description" json:"description" form:"description" validate:"max=60"`
StartFlowID int64 `gorm:"column:start_flow_id" json:"start_flow_id" form:"start_flow_id"`
PID int64 `gorm:"column:pid" json:"pid"`
UID int64 `gorm:"column:uid" json:"uid"`
DisableTime time.Time `gorm:"column:disable_time" json:"disable_time"`
Ctime time.Time `gorm:"column:ctime" json:"ctime"`
Mtime time.Time `gorm:"column:mtime" json:"mtime"`
}
//TableName table name
func (n *Net) TableName() string {
return TableNet
}
// IsAvailable .
func (n *Net) IsAvailable() bool {
return n.DisableTime.IsZero()
}

View File

@@ -0,0 +1,332 @@
package net
import (
"go-common/app/admin/main/aegis/model/common"
xtime "go-common/library/time"
)
const (
//StateAvailable .
StateAvailable = "available"
//StateDisable .
StateDisable = "disable"
)
// ListNetParam .
type ListNetParam struct {
BusinessID int64 `json:"business_id" form:"business_id" validte:"omitempty,gt=0"`
ID []int64 `json:"id" form:"id,split" validate:"omitempty,dive,gt=0"`
State string `json:"state" form:"state"`
Sort string `json:"sort" form:"sort" default:"desc"`
Pn int64 `json:"pn" form:"pn" default:"1" validate:"gt=0"`
Ps int64 `json:"ps" form:"ps" default:"30" validate:"gt=0"`
}
// ListNetItem .
type ListNetItem struct {
ID int64 `json:"id"`
BusinessID int64 `json:"business_id"`
ChName string `json:"ch_name"`
Description string `json:"description"`
StartFlowID int64 `json:"start_flow_id"`
PID int64 `json:"pid" gorm:"column:pid"`
UID int64 `json:"uid" gorm:"column:uid"`
DisableTime xtime.Time `json:"disable_time"`
Ctime common.FormatTime `json:"ctime"`
Mtime common.FormatTime `json:"mtime"`
BusinessName string `json:"business_name"`
Username string `json:"username"`
}
// ListNetRes .
type ListNetRes struct {
Result []*ListNetItem `json:"result"`
Pager Pager `json:"pager"`
}
// NetEditParam .
type NetEditParam struct {
ID int64 `form:"id" validate:"required,gt=0"`
ChName string `form:"ch_name" validate:"required,max=32"`
Description string `form:"description" validate:"max=60"`
}
// ListTokenParam .
type ListTokenParam struct {
NetID int64 `json:"net_id" form:"net_id" validate:"required,gt=0"`
Name string `json:"name" form:"name" validate:"omitempty,max=10"`
ID []int64 `json:"id" form:"id,split" validate:"omitempty,dive,gt=0"`
Sort string `json:"sort" form:"sort" default:"desc"`
Pn int64 `json:"pn" form:"pn" default:"1" validate:"gt=0"`
Ps int64 `json:"ps" form:"ps" default:"30" validate:"gt=0"`
Assign bool `json:"assign" form:"assign"`
}
// GroupTokenParam .
type GroupTokenParam struct {
BusinessID int64 `json:"business_id" form:"business_id" validate:"omitempty,gt=0"`
NetID int64 `json:"net_id" form:"net_id" validate:"omitempty,gt=0"`
GroupName string `json:"group_name" form:"group_name" validate:"omitempty,max=10"`
}
// ListTokenItem .
type ListTokenItem struct {
ID int64 `json:"id"`
NetID int64 `json:"net_id"`
ChName string `json:"ch_name"`
Name string `json:"name"`
Compare int8 `json:"compare"`
Value string `json:"value"`
Type int8 `json:"type"`
UID int64 `json:"uid" gorm:"column:uid"`
Ctime common.FormatTime `json:"ctime"`
Mtime common.FormatTime `json:"mtime"`
Username string `json:"username"`
}
// ListTokenRes .
type ListTokenRes struct {
Result []*ListTokenItem `json:"result"`
Pager Pager `json:"pager"`
}
// ListNetElementParam .
type ListNetElementParam struct {
NetID int64 `json:"net_id" form:"net_id" validate:"required,gt=0"`
Name string `json:"name" form:"name" validate:"omitempty,max=10"`
ID []int64 `json:"id" form:"id,split" validate:"omitempty,dive,gt=0"`
State string `json:"state" form:"state"`
Sort string `json:"sort" form:"sort" default:"desc"`
Pn int64 `json:"pn" form:"pn" default:"1" validate:"gt=0"`
Ps int64 `json:"ps" form:"ps" default:"30" validate:"gt=0"`
}
// ListFlowItem .
type ListFlowItem struct {
ID int64 `json:"id"`
NetID int64 `json:"net_id"`
Name string `json:"name"`
ChName string `json:"ch_name"`
Description string `json:"description"`
UID int64 `json:"uid" gorm:"column:uid"`
DisableTime xtime.Time `json:"disable_time"`
Ctime common.FormatTime `json:"ctime"`
Mtime common.FormatTime `json:"mtime"`
Username string `json:"username"`
Tokens []string `json:"tokens"`
IsStart bool `json:"is_start"`
}
// ListFlowRes .
type ListFlowRes struct {
Result []*ListFlowItem `json:"result"`
Pager Pager `json:"pager"`
}
// ListTransitionItem .
type ListTransitionItem struct {
ID int64 `json:"id"`
NetID int64 `json:"net_id"`
Trigger int8 `json:"trigger"`
Limit int64 `json:"limit"`
Name string `json:"name"`
ChName string `json:"ch_name"`
Description string `json:"description"`
UID int64 `json:"uid" gorm:"column:uid"`
DisableTime xtime.Time `json:"disable_time"`
Ctime common.FormatTime `json:"ctime"`
Mtime common.FormatTime `json:"mtime"`
Username string `json:"username"`
Tokens []string `json:"tokens"`
}
// ListTransitionRes .
type ListTransitionRes struct {
Result []*ListTransitionItem `json:"result"`
Pager Pager `json:"pager"`
}
// ListDirectionParam .
type ListDirectionParam struct {
NetID int64 `json:"net_id" form:"net_id" validate:"required,gt=0"`
FlowID int64 `json:"flow_id" form:"flow_id" validate:"omitempty,gt=0"`
TransitionID int64 `json:"transition_id" form:"transition_id" validate:"omitempty,gt=0"`
Direction int8 `json:"direction" form:"direction"`
ID []int64 `json:"id" form:"id,split" validate:"omitempty,dive,gt=0"`
State string `json:"state" form:"state"`
Sort string `json:"sort" form:"sort" default:"desc"`
Pn int64 `json:"pn" form:"pn" default:"1" validate:"gt=0"`
Ps int64 `json:"ps" form:"ps" default:"30" validate:"gt=0"`
}
// ListDirectionItem .
type ListDirectionItem struct {
ID int64 `json:"id"`
NetID int64 `json:"net_id"`
FlowID int64 `json:"flow_id"`
TransitionID int64 `json:"transition_id"`
Direction int8 `json:"direction"`
Order int8 `json:"order"`
Guard string `json:"guard"`
Output string `json:"output"`
UID int64 `json:"uid" gorm:"column:uid"`
DisableTime xtime.Time `json:"disable_time"`
Ctime common.FormatTime `json:"ctime"`
Mtime common.FormatTime `json:"mtime"`
FlowName string `json:"flow_name"`
TransitionName string `json:"transition_name"`
UserName string `json:"user_name"`
NetName string `json:"net_name"`
}
// ListDirectionRes .
type ListDirectionRes struct {
Result []*ListDirectionItem `json:"result"`
Pager Pager `json:"pager"`
}
// SwitchParam .
type SwitchParam struct {
ID int64 `json:"id" form:"id" validate:"required,gt=0"`
Disable bool `json:"disable" form:"disable"`
}
// FlowEditParam .
type FlowEditParam struct {
NetID int64 `form:"net_id" validate:"omitempty,gt=0"`
ID int64 `form:"id" validate:"omitempty,gt=0"`
Name string `form:"name" validate:"required,max=32"`
ChName string `form:"ch_name" validate:"required,max=16"`
Description string `form:"description" validate:"max=60"`
IsStart bool `form:"is_start" default:"false"`
TokenIDList []int64 `form:"token_id_list,split" validate:"omitempty,dive,gt=0"`
}
// TokenBindParam .
type TokenBindParam struct {
ID int64 `json:"id,omitemtpy"`
ChName string `json:"ch_name,omitempty"`
TokenID string `json:"token_id"`
Type int8 `json:"type"`
}
// TransitionEditParam .
type TransitionEditParam struct {
NetID int64 `json:"net_id" validate:"omitempty,gt=0"`
ID int64 `json:"id" validate:"omitempty,gt=0"`
Trigger int8 `json:"trigger" validate:"omitempty,min=1,max=1"`
Limit int64 `json:"limit"`
Name string `json:"name" validate:"required,max=32"`
ChName string `json:"ch_name" validate:"required,max=16"`
Description string `json:"description" validate:"max=60"`
TokenList []*TokenBindParam `json:"token_list" validate:"required,gt=0" `
}
// DirEditParam .
type DirEditParam struct {
ID int64 `form:"id" validate:"omitempty,gt=0"`
NetID int64 `form:"net_id" validate:"omitempty,gt=0"`
FlowID int64 `form:"flow_id" validate:"required,gt=0"`
TransitionID int64 `form:"transition_id" validate:"required,gt=0"`
Direction int8 `form:"direction" validate:"required,min=1,max=2"`
Order int8 `form:"order" validate:"min=0,max=0"`
Output string
Guard string
}
// Pager .
type Pager struct {
Num int64 `json:"num"`
Size int64 `json:"size"`
Total int64 `json:"total"`
}
// ShowFlowResult .
type ShowFlowResult struct {
Flow *Flow `json:"flow"`
Tokens []*TokenBind `json:"tokens"`
IsStart bool `json:"is_start"`
}
// ShowTransitionResult .
type ShowTransitionResult struct {
Transition *Transition `json:"transition"`
Tokens []*TokenBind `json:"tokens"`
}
// ShowDirectionResult .
type ShowDirectionResult struct {
Direction *Direction `json:"direction"`
FlowName string `json:"flow_name"`
TransitionName string `json:"transition_name"`
}
// TokenPackage .
type TokenPackage struct {
Values map[string]interface{} `json:"values"`
TokenIDList []int64 `json:"token_id_list"`
ChName string `json:"ch_name"`
HitAudit bool `json:"hit_audit"`
}
// TriggerResult .
type TriggerResult struct {
RID int64 `json:"rid"`
NetID int64 `json:"net_id"`
SubmitToken *TokenPackage `json:"submit_token"`
ResultToken *TokenPackage `json:"result_token"`
NewFlowID int64 `json:"new_flow_id"`
OldFlowID string `json:"old_flow_id"` //可能有多个旧节点
TransitionID []int64 `json:"transition_id"`
From string `json:"from"`
}
// TranOperation .
type TranOperation struct {
BindIDList string `json:"bind_id_list"`
ChName string `json:"ch_name"`
}
// TranOperationArr .
type TranOperationArr []*TranOperation
func (a TranOperationArr) Len() int {
return len(a)
}
func (a TranOperationArr) Less(i, j int) bool {
return a[i].BindIDList < a[j].BindIDList
}
func (a TranOperationArr) Swap(i, j int) {
a[i], a[j] = a[j], a[i]
}
// TransitionInfo .
type TransitionInfo struct {
RID int64 `json:"rid"`
FlowID int64 `json:"flow_id"`
Operations []*TranOperation `json:"operations"`
}
// JumpFlowResult .
type JumpFlowResult struct {
RID int64 `json:"rid"`
NetID int64 `json:"net_id"`
SubmitToken *TokenPackage `json:"submit_token"`
ResultToken *TokenPackage `json:"result_token"`
NewFlowID int64 `json:"new_flow_id"`
OldFlowID string `json:"old_flow_id"`
}
// SimpleInfo .
type SimpleInfo struct {
ID int64 `json:"id"`
ChName string `json:"ch_name"`
}
// JumpInfo .
type JumpInfo struct {
Flows []*SimpleInfo `json:"flows"`
Operations []*TranOperation `json:"operations"`
}

View File

@@ -0,0 +1,269 @@
package net
import (
"fmt"
"strconv"
"strings"
"time"
)
//..
const (
TableToken = "net_token"
TableTokenBind = "net_token_bind"
//BindTypeFlow 绑定flow
BindTypeFlow = int8(1)
//BindTypeTransition 绑定单个审核操作
BindTypeTransition = int8(2)
//BindTypeTranBatch 绑定批量审核操作
BindTypeTranBatch = int8(3)
//BindTypeTranHelp 绑定单个非审核操作,提交后不流转
BindTypeTranHelp = int8(4)
//BindTypeTranHelpBatch 绑定批量非审核操作,提交后不流转
BindTypeTranHelpBatch = int8(5)
BindLogTemp = "%s(%d)=%s" //中文名=表达式
BindBatchPrefix = "批量"
BindBatchOptAll = int8(0)
BindBatchOnly = int8(1)
BindBatchNot = int8(2)
)
//TokenCompareAssign 运算符.
const (
TokenCompareAssign = int8(0)
TokenCompareEqual = int8(1)
TokenCompareInequal = int8(2)
TokenCompareGreater = int8(3)
TokenCompareGreaterEqual = int8(4)
TokenCompareLower = int8(5)
TokenCompareLowerEqual = int8(6)
TokenCompareBetween = int8(7)
TokenCompareNotBetween = int8(8)
TokenCompareIn = int8(9)
TokenCompareNotIn = int8(10)
TokenCompareExist = int8(11)
TokenCompareNotExist = int8(12)
//TokenTypeInt8值类型 .
TokenTypeInt8 = int8(0)
TokenTypeInt16 = int8(1)
TokenTypeInt32 = int8(2)
TokenTypeInt64 = int8(3)
TokenTypeString = int8(4)
TokenTypeBool = int8(5)
)
//BindTranType 变迁绑定令牌类型
var BindTranType = []int8{
BindTypeTransition,
BindTypeTranBatch,
BindTypeTranHelp,
BindTypeTranHelpBatch,
}
//BindTypes .
var BindTypes = []int8{
BindTypeFlow,
BindTypeTransition,
BindTypeTranBatch,
BindTypeTranHelp,
BindTypeTranHelpBatch,
}
// TokenCompareDesc .
var TokenCompareDesc = map[int8]string{
TokenCompareAssign: "=",
//TokenCompareEqual: "==",
//TokenCompareInequal: "!=",
//TokenCompareGreater: ">",
//TokenCompareGreaterEqual: ">=",
//TokenCompareLower: "<",
//TokenCompareLowerEqual: "<=",
//TokenCompareBetween: "between", //值有2个数字
//TokenCompareNotBetween: "not between", //值有2个数字
//TokenCompareIn: "in", //a in []
//TokenCompareNotIn: "not in", //a not in []
}
// TokenValueTypeDesc ..
var TokenValueTypeDesc = map[int8]string{
TokenTypeInt8: "int8",
TokenTypeInt16: "int16",
TokenTypeInt32: "int32",
TokenTypeInt64: "int64",
TokenTypeString: "string",
TokenTypeBool: "bool",
}
// Token .
type Token struct {
ID int64 `gorm:"primary_key" json:"id" form:"id" validate:"omitempty,gt=0"`
NetID int64 `gorm:"column:net_id" json:"net_id" form:"net_id" validate:"omitempty,gt=0"`
ChName string `gorm:"column:ch_name" json:"ch_name" form:"ch_name" validate:"required,max=16"`
Name string `gorm:"column:name" json:"name" form:"name" validate:"required,max=10"`
Compare int8 `gorm:"column:compare" json:"compare" form:"compare" validate:"omitempty,min=0,max=10" default:"-1"`
Value string `gorm:"column:value" json:"value" form:"value"`
Type int8 `gorm:"column:type" json:"type" form:"type" default:"-1"`
UID int64 `gorm:"column:uid" json:"uid"`
Ctime time.Time `gorm:"column:ctime" json:"ctime"`
Mtime time.Time `gorm:"column:mtime" json:"mtime"`
}
// TokenBind .
type TokenBind struct {
ID int64 `gorm:"primary_key" json:"id"`
Type int8 `gorm:"column:type" json:"type"`
ElementID int64 `gorm:"column:element_id" json:"element_id"`
TokenID string `gorm:"column:token_id" json:"token_id"`
ChName string `gorm:"column:ch_name" json:"ch_name" `
UID int64 `gorm:"column:uid" json:"uid"`
DisableTime time.Time `gorm:"column:disable_time" json:"disable_time"`
Ctime time.Time `gorm:"column:ctime" json:"ctime"`
Mtime time.Time `gorm:"column:mtime" json:"mtime"`
}
// TokenBindDetail .
type TokenBindDetail struct {
ID int64 `json:"id"`
Type int8 `json:"type"`
ElementID int64 `json:"element_id"`
TokenID string `json:"token_id"`
ChName string `json:"ch_name"`
DisableTime time.Time `json:"disable_time"`
Tokens []*Token `json:"tokens"`
}
// TableName .
func (tk *Token) TableName() string {
return TableToken
}
// IsAssign .
func (tk *Token) IsAssign() bool {
return tk.Compare == TokenCompareAssign
}
// FormatValue .
func (tk *Token) FormatValue() (vt interface{}, err error) {
var (
it int64
ib bool
)
switch tk.Type {
case TokenTypeInt8:
if it, err = strconv.ParseInt(tk.Value, 10, 8); err != nil {
return
}
vt = int8(it)
case TokenTypeInt16:
if it, err = strconv.ParseInt(tk.Value, 10, 16); err != nil {
return
}
vt = int16(it)
case TokenTypeInt32:
if it, err = strconv.ParseInt(tk.Value, 10, 32); err != nil {
return
}
vt = int32(it)
case TokenTypeInt64:
if it, err = strconv.ParseInt(tk.Value, 10, 8); err != nil {
return
}
vt = it
case TokenTypeString:
vt = tk.Value
case TokenTypeBool:
if ib, err = strconv.ParseBool(tk.Value); err != nil {
return
}
vt = ib
default:
err = fmt.Errorf("token not support tp(%d)!", tk.Type)
}
return
}
//FormatLog 日志形式
func (tk *Token) FormatLog() string {
var (
cm, tp string
exist bool
)
if cm, exist = TokenCompareDesc[tk.Compare]; !exist {
cm = strconv.Itoa(int(tk.Compare))
}
if tp, exist = TokenValueTypeDesc[tk.Type]; !exist {
tp = strconv.Itoa(int(tk.Type))
}
return fmt.Sprintf("%s%s%s(%s)", tk.Name, cm, tk.Value, tp)
}
// TableName .
func (tb *TokenBind) TableName() string {
return TableTokenBind
}
// IsAvailable .
func (tb *TokenBind) IsAvailable() bool {
return tb.DisableTime.IsZero()
}
// IsBatch .
func (tb *TokenBind) IsBatch() bool {
return tb.Type == BindTypeTranBatch || tb.Type == BindTypeTranHelpBatch
}
//FormatLog 日志形式
func (tb *TokenBindDetail) FormatLog() string {
var (
logs = []string{}
)
for _, tk := range tb.Tokens {
logs = append(logs, tk.FormatLog())
}
return fmt.Sprintf("{%s: %s}", tb.ChName, strings.Join(logs, ","))
}
// IsAvailable .
func (tb *TokenBindDetail) IsAvailable() bool {
return tb.DisableTime.IsZero()
}
// GetTokenCompare .
func GetTokenCompare(compare int8) string {
v, exist := TokenCompareDesc[compare]
if !exist {
return ""
}
return v
}
// GetTokenValueType .
func GetTokenValueType(tp int8) string {
v, exist := TokenValueTypeDesc[tp]
if !exist {
return ""
}
return v
}
// Int64Slice data.Less and data.Swap
type Int64Slice []int64
func (sl Int64Slice) Len() int {
return len(sl)
}
func (sl Int64Slice) Less(i, j int) bool {
return sl[i] < sl[j]
}
func (sl Int64Slice) Swap(i, j int) {
sl[i], sl[j] = sl[j], sl[i]
}

View File

@@ -0,0 +1,48 @@
package net
import (
"time"
)
//..
const (
TableTransition = "net_transition"
//TriggerManual 人工触发一旦enable执行由人审核提交
TriggerManual = int8(1)
//TriggerAuto 自动触发一旦enable就可执行
TriggerAuto = int8(2)
//TriggerMsg 消息触发一旦enable执行为接收到指定消息
TriggerMsg = int8(3)
)
//TriggerDesc 变迁触发类型描述
var TriggerDesc = map[int8]string{
TriggerAuto: "直序",
TriggerManual: "人工",
TriggerMsg: "消息",
}
//Transition 变迁
type Transition struct {
ID int64 `gorm:"primary_key" json:"id" form:"id" validate:"omitempty,gt=0"`
NetID int64 `gorm:"column:net_id" json:"net_id" form:"net_id" validate:"omitempty,gt=0"`
Trigger int8 `gorm:"column:trigger" json:"trigger" default:"1" form:"trigger"`
Limit int64 `gorm:"column:limit" json:"limit" form:"limit"`
Name string `gorm:"column:name" json:"name" form:"name" validate:"required,max=32"`
ChName string `gorm:"column:ch_name" json:"ch_name" form:"ch_name" validate:"required,max=16"`
Description string `gorm:"column:description" json:"description" form:"description" validate:"max=60"`
UID int64 `gorm:"column:uid" json:"uid"`
DisableTime time.Time `gorm:"column:disable_time" json:"disable_time"`
Ctime time.Time `gorm:"column:ctime" json:"ctime"`
Mtime time.Time `gorm:"column:mtime" json:"mtime"`
}
//TableName .
func (t *Transition) TableName() string {
return TableTransition
}
//IsAvailable .
func (t *Transition) IsAvailable() bool {
return t.DisableTime.IsZero()
}