| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 | package modelimport (	model2 "Medical_OAuth/common/model"	"encoding/json"	"errors"	log "gogs.baozhida.cn/zoie/OAuth-core/logger"	"gogs.baozhida.cn/zoie/OAuth-core/sdk"	"gogs.baozhida.cn/zoie/OAuth-core/sdk/config"	"gogs.baozhida.cn/zoie/OAuth-core/storage"	"time")type SysOperaLog struct {	model2.Model	Title         string    `json:"title" gorm:"size:255;comment:操作模块"`	BusinessType  string    `json:"businessType" gorm:"size:128;comment:操作类型"`	BusinessTypes string    `json:"businessTypes" gorm:"size:128;comment:BusinessTypes"`	Method        string    `json:"method" gorm:"size:128;comment:函数"`	RequestMethod string    `json:"requestMethod" gorm:"size:128;comment:请求方式 GET POST PUT DELETE"`	OperatorType  string    `json:"operatorType" gorm:"size:128;comment:操作类型"`	OperaName     string    `json:"operaName" gorm:"size:128;comment:操作者"`	DeptName      string    `json:"deptName" gorm:"size:128;comment:机构名称"`	OperaUrl      string    `json:"operaUrl" gorm:"size:255;comment:访问地址"`	OperaIp       string    `json:"operaIp" gorm:"size:128;comment:客户端ip"`	OperaLocation string    `json:"operaLocation" gorm:"size:128;comment:访问位置"`	OperaParam    string    `json:"operaParam" gorm:"text;comment:请求参数"`	Status        string    `json:"status" gorm:"size:4;comment:操作状态 1:正常 2:关闭"`	OperaTime     time.Time `json:"operaTime" gorm:"comment:操作时间"`	JsonResult    string    `json:"jsonResult" gorm:"text;comment:返回数据"`	Remark        string    `json:"remark" gorm:"size:255;comment:备注"`	LatencyTime   string    `json:"latencyTime" gorm:"size:128;comment:耗时"`	UserAgent     string    `json:"userAgent" gorm:"size:255;comment:ua"`	CreatedAt     time.Time `json:"createdAt" gorm:"comment:创建时间"`	UpdatedAt     time.Time `json:"updatedAt" gorm:"comment:最后更新时间"`	model2.ControlBy}func (SysOperaLog) TableName() string {	return "sys_opera_log"}func (e *SysOperaLog) Generate() model2.ActiveRecord {	o := *e	return &o}func (e *SysOperaLog) GetId() interface{} {	return e.Id}// SaveOperaLog 从队列中获取操作日志func SaveOperaLog(message storage.Messager) (err error) {	//准备db	db := sdk.Runtime.GetDbByKey(config.ApplicationConfig.Host)	if db == nil {		err = errors.New("db not exist")		log.Errorf("host[%s]'s %s", config.ApplicationConfig.Host, err.Error())		// Log writing to the database ignores error		return nil	}	var rb []byte	rb, err = json.Marshal(message.GetValues())	if err != nil {		log.Errorf("json Marshal error, %s", err.Error())		// Log writing to the database ignores error		return nil	}	var l SysOperaLog	err = json.Unmarshal(rb, &l)	if err != nil {		log.Errorf("json Unmarshal error, %s", err.Error())		// Log writing to the database ignores error		return nil	}	// 外部调用获取身份信息,操作频繁,不做日志记录	if l.OperaUrl == "/api/service/userinfo" {		return nil	}	// 超出100个字符返回值截断	if len(l.JsonResult) > 500 {		l.JsonResult = l.JsonResult[:500]	}	l.OperaTime = time.Now()	err = db.Create(&l).Error	if err != nil {		log.Errorf("db create error, %s", err.Error())		// Log writing to the database ignores error		return nil	}	return nil}
 |