71 lines
1.6 KiB
Go
71 lines
1.6 KiB
Go
package service
|
|
|
|
import (
|
|
"blazing/cool"
|
|
|
|
"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"
|
|
)
|
|
|
|
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()
|
|
baseSysLog.IPAddr = r.GetClientIp()
|
|
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
|
|
}
|