package model import ( "encoding/json" "fmt" "go-common/app/admin/main/aegis/model/net" ) //.. const ( LogBusinessAudit = int(231) LogTypeAuditSubmit = int(1) LogTypeAuditJump = int(2) LogTypeAuditAdd = int(3) LogTypeAuditCancel = int(4) LogBusinessTask = int(232) LogTypeTaskDispatch = int(1) LogTypeTaskConsumer = int(2) LogTYpeTaskWeight = int(3) LogBusinessResource = int(233) LogTypeFormAuditor = int(1) // 审核员提交变更 LogTypeFromAdd = int(2) // 业务添加资源 LogTypeFromCancle = int(3) // 业务注销资源 LogBusinessNet = int(234) //流程流转 LogTypeNetTrigger = int(1) //流程流转 LogFromBatch = "批量提交" LogFromSingle = "单个提交" LogFromStart = "启动" LogFromJump = "跳流程" LogFromCancle = "取消流程" LogBusinessNetConf = int(235) //流程配置 LogTypeNetConf = int(1) //流程网配置 LogTypeTokenConf = int(2) //令牌配置 LogTypeFlowConf = int(3) //节点配置 LogTypeTranConf = int(4) //变迁配置 LogTypeTokenBindConf = int(5) //令牌绑定配置 LogTypeDirConf = int(6) //有向线配置 //流程配置的操作 LogNetActionNew = "创建" LogNetActionUpdate = "更新" LogNetActionDisable = "禁用" LogNetActionAvailable = "启用" //流程配置的更新字段 LogFieldPID = "pid" LogFieldChName = "ch_name" LogFieldName = "name" LogFieldTokenID = "token_id" LogFieldStartFlow = "start_flow" LogFieldTrigger = "trigger" LogFieldLimit = "limit" LogFieldDirection = "direction" LogFieldOrder = "order" LogFieldGuard = "guard" LogFieldOutput = "output" ) //LogFieldDesc 日志中的变更字段描述 var LogFieldDesc = map[string]string{ LogFieldPID: "父网", LogFieldChName: "中文名", LogFieldName: "英文名", LogFieldTokenID: "令牌", LogFieldStartFlow: "初始节点", LogFieldTrigger: "触发类型", LogFieldLimit: "限制", LogFieldDirection: "指向", LogFieldOrder: "顺序", LogFieldGuard: "通行条件", LogFieldOutput: "输出规则", } //LogFieldTemp 指定模板和字段,组建变更日志字段 func LogFieldTemp(field string, nw interface{}, old interface{}, diffTemp bool) (s string) { var ( desc string exist bool temp string ) if desc, exist = LogFieldDesc[field]; !exist { desc = field } if diffTemp { temp = "[%s]从[%v]变成[%v]" s = fmt.Sprintf(temp, desc, old, nw) } else { temp = "[%s]为[%v]" s = fmt.Sprintf(temp, desc, nw) } return } //NetConfOper 流程配置日志 type NetConfOper struct { OID int64 `json:"oid"` Action string `json:"action"` UID int64 `json:"uid"` Uname string `json:"uname"` NetID int64 `json:"net_id"` ChName string `json:"ch_name"` FlowID int64 `json:"flow_id"` TranID int64 `json:"tran_id"` Diff []string `json:"diff"` } //SearchAuditLogParam 搜索行为日志参数 type SearchAuditLogParam struct { RID []int64 OID []string `form:"oid,split" validate:"omitempty,max=30,dive,gt=0"` Username []string `form:"username,split"` CtimeFrom string `form:"ctime_from"` CtimeTo string `form:"ctime_to"` Ps int `form:"ps" validate:"gt=0,max=50" default:"10"` Pn int `form:"pn" validate:"gt=0" default:"1"` TaskID []int64 `form:"task_id,split" validate:"omitempty,max=30"` State string `form:"state"` BusinessID int64 `form:"business_id" validate:"required,gt=0"` } //SearchAuditLog 审核日志记录 type SearchAuditLog struct { RID int64 `json:"rid"` OID string `json:"oid"` TaskID int64 `json:"task_id"` State string `json:"state"` Stime string `json:"stime"` UID int64 `json:"uid"` Uname string `json:"uname"` Department string `json:"department"` Extra string `json:"extra"` } type SearchLogResult struct { Result []struct { UID int64 `json:"uid"` Uname string `json:"uname"` OID int64 `json:"oid"` Type int8 `json:"type"` Action string `json:"action"` Str0 string `json:"str_0"` Str1 string `json:"str_1"` Str2 string `json:"str_2"` Int0 int64 `json:"int_0"` Int1 int64 `json:"int_1"` Int2 int64 `json:"int_2"` Ctime string `json:"ctime"` Extra string `json:"extra_data"` } `json:"result"` Page struct { Num int `json:"num"` Size int `json:"size"` Total int `json:"total"` } `json:"page"` } // Change for log type Change struct { Opt *SubmitOptions `json:"opt"` Flow *Flow `json:"flow"` } //GetSubmitOper . func (change *Change) GetSubmitOper() (flowaction, submitopt string) { if change.Flow != nil && change.Flow.ResultToken != nil { flowaction = change.Flow.ResultToken.ChName } if change.Opt != nil { if change.Opt.Result != nil { if change.Opt.Result.ReasonID != 0 { submitopt += fmt.Sprintf(" 理由ID:%d ", change.Opt.Result.ReasonID) } if change.Opt.Result.RejectReason != "" && change.Opt.Result.RejectReason != "null" { submitopt += fmt.Sprintf(" 打回理由:%s ", change.Opt.Result.RejectReason) } if change.Opt.Result.Note != "" && change.Opt.Result.Note != "null" { submitopt += fmt.Sprintf(" 备注:%s ", change.Opt.Result.Note) } } if change.Opt.Forbid != nil { if change.Opt.Forbid.Reason != "" && change.Opt.Forbid.Reason != "null" { submitopt += fmt.Sprintf(" 封禁理由:%s ", change.Opt.Forbid.Reason) if du := change.Opt.Forbid.Duration; du == -1 { submitopt += " 封禁时长:永久 " } else { submitopt += fmt.Sprintf(" 封禁时长:%d天 ", du/86400) } } if change.Opt.Forbid.Comment != "" && change.Opt.Forbid.Comment != "null" { submitopt += fmt.Sprintf(" 备注:%s ", change.Opt.Forbid.Comment) } } } return } // Flow for log type Flow struct { SubmitToken *net.TokenPackage `json:"submit_token"` ResultToken *net.TokenPackage `json:"result_token"` NewFlowID int64 `json:"new_flow_id"` OldFlowID json.Number `json:"old_flow_id"` } // WeightLog task log type WeightLog struct { UPtime string `json:"uptime"` Mid int64 `json:"mid"` MemName string `json:"member_name"` // up主名称 Fans int64 `json:"fans"` FansWeight int64 `json:"fans_weight"` Group string `json:"group"` GroupWeight int64 `json:"group_weight"` WaitTime string `json:"wait_time"` WaitWeight int64 `json:"wait_weight"` EqualWeight int64 `json:"config_weight"` ConfigItems []*ConfigItem `json:"config_items"` Weight int64 `json:"weight"` } // ConfigItem . type ConfigItem struct { Name string `json:"name"` Desc string `json:"desc"` Username string `json:"uname"` } //TrackRsc 资源信息追踪 type TrackRsc struct { Ctime string `json:"ctime"` Content string `json:"content"` Detail map[string]interface{} `json:"detail"` } //TrackAudit 操作日志信息追踪 type TrackAudit struct { Ctime string `json:"ctime"` FlowID []int64 `json:"flow_id"` FlowName string `json:"flow_name"` State string `json:"state"` Uname string `json:"uname"` } //TrackInfo 信息追踪汇总 type TrackInfo struct { Add []*TrackRsc `json:"add"` Audit []*TrackAudit `json:"audit"` Relation [][]int `json:"relation"` } //TrackParam 信息追踪参数 type TrackParam struct { BusinessID int64 `form:"business_id" validate:"required,gt=0"` OID string `form:"oid" validate:"required,gt=0"` Pn int `form:"pn" validate:"gt=0" default:"1"` Ps int `form:"ps" validate:"gt=0,max=30" default:"10"` LastPageTime string `form:"last_page_time"` } //ParamsQueryLog . type ParamsQueryLog struct { Business int `reflect:"business"` Type int `default:"0" reflect:"type,omitdefault"` Uname []string `reflect:"uname"` UID []int64 `reflect:"uid"` Oid []int64 `reflect:"oid"` Action []string `reflect:"action"` CtimeFrom string `reflect:"ctime,from"` CtimeTo string `reflect:"ctime,to"` Int0 []int64 `reflect:"int_0"` Int0From string `reflect:"int_0,from"` Int0To string `reflect:"int_0,to"` Int1 []int64 `reflect:"int_1"` Int1From string `reflect:"int_1,from"` Int1To string `reflect:"int_1,to"` Int2 []int64 `reflect:"int_2"` Int2From string `reflect:"int_2,from"` Int3To string `reflect:"int_2,to"` Str0 []string `reflect:"str_0"` Str1 []string `reflect:"str_1"` Str2 []string `reflect:"str_2"` } //EsCommon . type EsCommon struct { Pn int Ps int Order string Sort string Group string }