优化操作日志模块,新增数据库字段
This commit is contained in:
parent
64af9e9df3
commit
df19d305b8
|
@ -7,6 +7,7 @@ import (
|
|||
"go-admin/logger"
|
||||
config2 "go-admin/tools/config"
|
||||
"io"
|
||||
"strconv"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
|
@ -116,29 +117,24 @@ func SetDBOperLog(c *gin.Context, clientIP string, statusCode int, reqUri string
|
|||
sysOperLog.RequestMethod = c.Request.Method
|
||||
sysOperLog.OperUrl = reqUri
|
||||
if reqUri == "/login" {
|
||||
sysOperLog.BusinessType = "10"
|
||||
sysOperLog.Title = "用户登录"
|
||||
sysOperLog.OperName = "-"
|
||||
} else if strings.Contains(reqUri, "/api/v1/logout") {
|
||||
sysOperLog.BusinessType = "11"
|
||||
} else if strings.Contains(reqUri, "/api/v1/getCaptcha") {
|
||||
sysOperLog.BusinessType = "12"
|
||||
sysOperLog.Title = "验证码"
|
||||
} else {
|
||||
if reqMethod == "POST" {
|
||||
sysOperLog.BusinessType = "1"
|
||||
} else if reqMethod == "PUT" {
|
||||
sysOperLog.BusinessType = "2"
|
||||
} else if reqMethod == "DELETE" {
|
||||
sysOperLog.BusinessType = "3"
|
||||
}
|
||||
}
|
||||
|
||||
// 从白名单中读取对应的操作类型
|
||||
resultUrl := strings.Replace(c.Request.RequestURI, "/api/v1", "", 1)
|
||||
nType, _ := global.WHILTE[resultUrl]
|
||||
sysOperLog.BusinessType = strconv.Itoa(nType)
|
||||
|
||||
sysOperLog.Method = reqMethod
|
||||
if len(menuList) > 0 {
|
||||
sysOperLog.Title = menuList[0].Title
|
||||
menu.Title = menuList[0].Title
|
||||
sysOperLog.MenuTitle, _ = menu.GetParentTitle()
|
||||
}
|
||||
b, _ := c.Get("body")
|
||||
sysOperLog.OperParam, _ = tools.StructToJsonStr(b)
|
||||
|
||||
sysOperLog.CreateBy = tools.GetUserName(c)
|
||||
sysOperLog.OperTime = tools.GetCurrentTime()
|
||||
sysOperLog.LatencyTime = (latencyTime).String()
|
||||
|
|
|
@ -3,7 +3,6 @@ package models
|
|||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
|
||||
orm "go-admin/common/global"
|
||||
"go-admin/tools"
|
||||
)
|
||||
|
@ -249,6 +248,44 @@ func (e *Menu) Get() (Menus []Menu, err error) {
|
|||
return
|
||||
}
|
||||
|
||||
func (e *Menu) GetParentTitle() (title string, err error) {
|
||||
// 查询指定 title 的记录
|
||||
var menu Menu
|
||||
table := orm.Eloquent.Table(e.TableName())
|
||||
if err := table.Where("title = ? AND menu_type = ?", e.Title, "F").First(&menu).Error; err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
// 递归查询父节点的 title 直到找到 parentId 为 0 的节点
|
||||
return getParentTitle(menu.ParentId)
|
||||
}
|
||||
|
||||
// getParentTitle 递归查询父节点的 title
|
||||
func getParentTitle(parentID int) (string, error) {
|
||||
if parentID == 0 {
|
||||
return "", nil
|
||||
}
|
||||
|
||||
var parentMenu Menu
|
||||
table := orm.Eloquent.Table("sys_menu")
|
||||
// 查询父节点的记录
|
||||
if err := table.Where("menu_id = ?", parentID).First(&parentMenu).Error; err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
// 递归查询父节点的 title
|
||||
parentTitle, err := getParentTitle(parentMenu.ParentId)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
// 组合当前节点的 title 和父节点的 title,去掉开头的横杠
|
||||
if parentTitle != "" {
|
||||
return fmt.Sprintf("%s-%s", parentTitle, parentMenu.Title), nil
|
||||
}
|
||||
return parentMenu.Title, nil
|
||||
}
|
||||
|
||||
func (e *Menu) GetPage() (Menus []Menu, err error) {
|
||||
table := orm.Eloquent.Table(e.TableName())
|
||||
if e.MenuName != "" {
|
||||
|
|
|
@ -9,7 +9,7 @@ import (
|
|||
// sys_operlog
|
||||
type SysOperLog struct {
|
||||
OperId int `json:"operId" gorm:"primary_key;AUTO_INCREMENT"` //日志编码
|
||||
Title string `json:"title" gorm:"size:255;"` //操作模块
|
||||
Title string `json:"title" gorm:"size:255;"` //操作模块-具体事件
|
||||
BusinessType string `json:"businessType" gorm:"size:128;"` //操作类型
|
||||
BusinessTypes string `json:"businessTypes" gorm:"size:128;"`
|
||||
Method string `json:"method" gorm:"size:128;"` //函数
|
||||
|
@ -31,6 +31,7 @@ type SysOperLog struct {
|
|||
Remark string `json:"remark" gorm:"size:255;"` //备注
|
||||
LatencyTime string `json:"latencyime" gorm:"size:128;"` //耗时
|
||||
UserAgent string `json:"userAgent" gorm:"size:255;"` //ua
|
||||
MenuTitle string `json:"menuTitle" gorm:"size:255;"` //操作模块
|
||||
BaseModel
|
||||
}
|
||||
|
||||
|
|
|
@ -1,22 +1,26 @@
|
|||
package global
|
||||
|
||||
// WHILTE 操作类型: 1 新增;2 修改;3 删除;4 授权;5 导出;6 导入;10 登陆;11 退出; 12 获取验证码;
|
||||
var WHILTE = map[string]int{
|
||||
"/supplier/create": 1, //供应商
|
||||
"/supplier/update": 2,
|
||||
"/supplier/delete": 3,
|
||||
"/category/create": 4, //商品分类
|
||||
"/category/update": 5,
|
||||
"/category/delete": 6,
|
||||
"/category/import_category": 7,
|
||||
"/commodity/create": 8, //商品资料
|
||||
"/commodity/edit": 9,
|
||||
"/commodity/delete": 10,
|
||||
"/commodity/import_commodity": 11,
|
||||
"/cashier/create": 12, //收付款设置
|
||||
"/cashier/edit": 13,
|
||||
"/cashier/delete": 14,
|
||||
"/inventory/delivery": 15, //库存管理
|
||||
"/inventory/print": 16,
|
||||
"/inventory/import": 17,
|
||||
"/inventory/add_remark": 18,
|
||||
"/category/create": 1, //商品分类
|
||||
"/category/update": 2,
|
||||
"/category/delete": 3,
|
||||
"/category/import_category": 6,
|
||||
"/commodity/create": 1, //商品资料
|
||||
"/commodity/edit": 2,
|
||||
"/commodity/delete": 3,
|
||||
"/commodity/import_commodity": 6,
|
||||
"/cashier/create": 1, //收付款设置
|
||||
"/cashier/edit": 2,
|
||||
"/cashier/delete": 3,
|
||||
"/inventory/delivery": 2, //库存管理
|
||||
"/inventory/print": 2,
|
||||
"/inventory/import": 6,
|
||||
"/inventory/add_remark": 2,
|
||||
"/login": 10, //登陆
|
||||
"/logout": 11, //退出
|
||||
"/getCaptcha": 12, //获取验证码
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user