| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161 |
- package service
- import (
- "dashoo.cn/micro/app/dao"
- "dashoo.cn/micro/app/model"
- "github.com/gogf/gf/errors/gerror"
- "github.com/gogf/gf/frame/g"
- "github.com/gogf/gf/os/grpool"
- "github.com/gogf/gf/util/gconv"
- )
- type sysOperLog struct {
- Pool *grpool.Pool
- }
- var SysOperLog = &sysOperLog{
- Pool: grpool.New(100),
- }
- func (s *sysOperLog) Invoke(data *model.SysOperLogAdd) {
- s.Pool.Add(func() {
- //写入日志数据
- s.OperationLogAdd(data)
- })
- }
- // OperationLogAdd 添加操作日志
- func (s sysOperLog) OperationLogAdd(data *model.SysOperLogAdd) {
- //menuTitle := ""
- //if data.Menu != nil {
- // menuTitle = data.Menu.MenuName
- //}
- //err, dept := data.User.GetDept()
- //if err != nil {
- // g.Log().Error(err)
- // return
- //}
- //insertData := g.Map{
- // dao.SysOperLog.Columns.Title: menuTitle,
- // dao.SysOperLog.Columns.Method: data.Url.Path,
- // dao.SysOperLog.Columns.RequestMethod: data.Method,
- // dao.SysOperLog.Columns.OperatorType: data.OperatorType,
- // dao.SysOperLog.Columns.OperName: data.User.UserName,
- // dao.SysOperLog.Columns.DeptName: dept.DeptName,
- // dao.SysOperLog.Columns.OperIp: data.ClientIp,
- // dao.SysOperLog.Columns.OperLocation: utils.GetCityByIp(data.ClientIp),
- // dao.SysOperLog.Columns.OperTime: gtime.Now(),
- //}
- //rawQuery := data.Url.RawQuery
- //if rawQuery != "" {
- // rawQuery = "?" + rawQuery
- //}
- //insertData[dao.SysOperLog.Columns.OperUrl] = data.Url.Path + rawQuery
- //if data.Params != nil {
- // if v, ok := data.Params["apiReturnRes"]; ok {
- // res := gconv.Map(v)
- // if gconv.Int(res["code"]) == 0 {
- // insertData[dao.SysOperLog.Columns.Status] = 1
- // } else {
- // insertData[dao.SysOperLog.Columns.Status] = 0
- // }
- // if _, ok = res["data"]; ok {
- // delete(res, "data")
- // }
- // b, _ := gjson.Encode(res)
- // if len(b) > 0 {
- // insertData[dao.SysOperLog.Columns.JsonResult] = string(b)
- // }
- // delete(data.Params, "apiReturnRes")
- // }
- // b, _ := gjson.Encode(data.Params)
- // if len(b) > 0 {
- // insertData[dao.SysOperLog.Columns.OperParam] = string(b)
- // }
- //}
- //_, err = dao.SysOperLog.Insert(insertData)
- //if err != nil {
- // g.Log().Error(err)
- //}
- }
- func (s *sysOperLog) OperationLogListByPage(req *model.SysOperLogSearchReq) (total, page int, list []*model.SysOperLog, err error) {
- model := dao.SysOperLog.M
- order := "oper_id DESC"
- if req != nil {
- if req.OperName != "" {
- model = model.Where("oper_name like ?", "%"+req.OperName+"%")
- }
- if req.Title != "" {
- model = model.Where("title like ?", "%"+req.Title+"%")
- }
- if req.RequestMethod != "" {
- model = model.Where("request_method = ?", req.RequestMethod)
- }
- if req.Status != "" {
- model = model.Where("status", gconv.Int(req.Status))
- }
- if req.BeginTime != "" {
- model = model.Where("oper_time >=", req.BeginTime)
- }
- if req.EndTime != "" {
- model = model.Where("oper_time <=", req.EndTime)
- }
- if req.SortName != "" {
- if req.SortOrder != "" {
- order = req.SortName + " " + req.SortOrder
- } else {
- order = req.SortName + " DESC"
- }
- }
- }
- total, err = model.Count()
- if err != nil {
- g.Log().Error(err)
- err = gerror.New("获取总行数失败")
- return
- }
- err = model.Page(req.GetPage()).Order(order).Scan(&list)
- if err != nil {
- g.Log().Error(err)
- err = gerror.New("获取数据失败")
- }
- return
- }
- func (s *sysOperLog) DeleteOperationLogByIds(ids []int) (err error) {
- if len(ids) == 0 {
- err = gerror.New("参数错误")
- return
- }
- _, err = dao.SysOperLog.Delete("oper_id in (?)", ids)
- if err != nil {
- g.Log().Error(err)
- err = gerror.New("删除失败")
- }
- return
- }
- func (s *sysOperLog) GetOperationLogById(id int64) (log *model.SysOperLog, err error) {
- if id == 0 {
- err = gerror.New("参数错误")
- return
- }
- err = dao.SysOperLog.Where("oper_id", id).Scan(&log)
- if err != nil {
- g.Log().Error(err)
- }
- if err != nil || log == nil {
- err = gerror.New("获取操作日志失败")
- }
- return
- }
- func (s *sysOperLog) ClearOperationLog() (err error) {
- _, err = g.DB().Exec("truncate " + dao.SysOperLog.Table)
- if err != nil {
- g.Log().Error(err)
- err = gerror.New("清除失败")
- }
- return
- }
|