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

297 lines
8.6 KiB
Go

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
}