1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- package model
- import (
- 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
- }
|