93 lines
2.1 KiB
Go
93 lines
2.1 KiB
Go
package service
|
||
|
||
import (
|
||
"blazing/cool"
|
||
"fmt"
|
||
|
||
"blazing/modules/base/model"
|
||
|
||
"github.com/gogf/gf/v2/frame/g"
|
||
"github.com/gogf/gf/v2/os/gtime"
|
||
"github.com/gogf/gf/v2/util/gconv"
|
||
"github.com/xiaoqidun/qqwry"
|
||
)
|
||
|
||
type BaseSysLogService struct {
|
||
*cool.Service
|
||
}
|
||
|
||
func NewBaseSysLogService() *BaseSysLogService {
|
||
return &BaseSysLogService{
|
||
&cool.Service{
|
||
Model: model.NewBaseSysLog(),
|
||
PageQueryOp: &cool.QueryOp{
|
||
KeyWordField: []string{"name", "params", "ipAddr"},
|
||
Select: `base_sys_log.*,"user".name `,
|
||
Join: []*cool.JoinOp{
|
||
{
|
||
Model: model.NewBaseSysUser(),
|
||
Alias: `"user"`,
|
||
Type: "LeftJoin",
|
||
Condition: `"user".id = base_sys_log."userId"`,
|
||
},
|
||
},
|
||
},
|
||
},
|
||
}
|
||
}
|
||
|
||
// Record 记录日志
|
||
func (s *BaseSysLogService) Record(ctx g.Ctx) {
|
||
var (
|
||
admin = cool.GetAdmin(ctx)
|
||
r = g.RequestFromCtx(ctx)
|
||
)
|
||
baseSysLog := model.NewBaseSysLog()
|
||
baseSysLog.UserID = admin.UserId
|
||
baseSysLog.Action = r.Method + ":" + r.URL.Path
|
||
baseSysLog.IP = r.GetClientIp()
|
||
// 从内存或缓存查询IP
|
||
location, err := qqwry.QueryIP(baseSysLog.IP)
|
||
if err != nil {
|
||
fmt.Printf("错误:%v\n", err)
|
||
return
|
||
}
|
||
baseSysLog.IPAddr = fmt.Sprintf("国家:%s,省份:%s,城市:%s,区县:%s,运营商:%s\n",
|
||
location.Country,
|
||
location.Province,
|
||
location.City,
|
||
location.District,
|
||
location.ISP,
|
||
)
|
||
baseSysLog.Params = r.GetBodyString()
|
||
m := cool.DBM(s.Model)
|
||
m.Insert(g.Map{
|
||
"userId": baseSysLog.UserID,
|
||
"action": baseSysLog.Action,
|
||
"ip": baseSysLog.IP,
|
||
"ipAddr": baseSysLog.IPAddr,
|
||
"params": baseSysLog.Params,
|
||
})
|
||
}
|
||
|
||
// Clear 清除日志
|
||
func (s *BaseSysLogService) Clear(isAll bool) (err error) {
|
||
BaseSysConfService := NewBaseSysConfService()
|
||
m := cool.DBM(s.Model)
|
||
if isAll {
|
||
_, err = m.Delete("1=1")
|
||
} else {
|
||
keepDays := gconv.Int(BaseSysConfService.GetValue("logKeep"))
|
||
_, err = m.Delete(`"createTime" < ?`, gtime.Now().AddDate(0, 0, -keepDays).String())
|
||
}
|
||
return
|
||
}
|
||
|
||
func init() {
|
||
// 从文件加载IP数据库
|
||
if err := qqwry.LoadFile("public/qqwry.ipdb"); err != nil {
|
||
panic(err)
|
||
}
|
||
|
||
}
|