sys_oper_log.go 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. package service
  2. import (
  3. "dashoo.cn/micro/app/dao"
  4. "dashoo.cn/micro/app/model"
  5. "github.com/gogf/gf/errors/gerror"
  6. "github.com/gogf/gf/frame/g"
  7. "github.com/gogf/gf/os/grpool"
  8. "github.com/gogf/gf/util/gconv"
  9. )
  10. type sysOperLog struct {
  11. Pool *grpool.Pool
  12. }
  13. var SysOperLog = &sysOperLog{
  14. Pool: grpool.New(100),
  15. }
  16. func (s *sysOperLog) Invoke(data *model.SysOperLogAdd) {
  17. s.Pool.Add(func() {
  18. //写入日志数据
  19. s.OperationLogAdd(data)
  20. })
  21. }
  22. // OperationLogAdd 添加操作日志
  23. func (s sysOperLog) OperationLogAdd(data *model.SysOperLogAdd) {
  24. //menuTitle := ""
  25. //if data.Menu != nil {
  26. // menuTitle = data.Menu.MenuName
  27. //}
  28. //err, dept := data.User.GetDept()
  29. //if err != nil {
  30. // g.Log().Error(err)
  31. // return
  32. //}
  33. //insertData := g.Map{
  34. // dao.SysOperLog.Columns.Title: menuTitle,
  35. // dao.SysOperLog.Columns.Method: data.Url.Path,
  36. // dao.SysOperLog.Columns.RequestMethod: data.Method,
  37. // dao.SysOperLog.Columns.OperatorType: data.OperatorType,
  38. // dao.SysOperLog.Columns.OperName: data.User.UserName,
  39. // dao.SysOperLog.Columns.DeptName: dept.DeptName,
  40. // dao.SysOperLog.Columns.OperIp: data.ClientIp,
  41. // dao.SysOperLog.Columns.OperLocation: utils.GetCityByIp(data.ClientIp),
  42. // dao.SysOperLog.Columns.OperTime: gtime.Now(),
  43. //}
  44. //rawQuery := data.Url.RawQuery
  45. //if rawQuery != "" {
  46. // rawQuery = "?" + rawQuery
  47. //}
  48. //insertData[dao.SysOperLog.Columns.OperUrl] = data.Url.Path + rawQuery
  49. //if data.Params != nil {
  50. // if v, ok := data.Params["apiReturnRes"]; ok {
  51. // res := gconv.Map(v)
  52. // if gconv.Int(res["code"]) == 0 {
  53. // insertData[dao.SysOperLog.Columns.Status] = 1
  54. // } else {
  55. // insertData[dao.SysOperLog.Columns.Status] = 0
  56. // }
  57. // if _, ok = res["data"]; ok {
  58. // delete(res, "data")
  59. // }
  60. // b, _ := gjson.Encode(res)
  61. // if len(b) > 0 {
  62. // insertData[dao.SysOperLog.Columns.JsonResult] = string(b)
  63. // }
  64. // delete(data.Params, "apiReturnRes")
  65. // }
  66. // b, _ := gjson.Encode(data.Params)
  67. // if len(b) > 0 {
  68. // insertData[dao.SysOperLog.Columns.OperParam] = string(b)
  69. // }
  70. //}
  71. //_, err = dao.SysOperLog.Insert(insertData)
  72. //if err != nil {
  73. // g.Log().Error(err)
  74. //}
  75. }
  76. func (s *sysOperLog) OperationLogListByPage(req *model.SysOperLogSearchReq) (total, page int, list []*model.SysOperLog, err error) {
  77. model := dao.SysOperLog.M
  78. order := "oper_id DESC"
  79. if req != nil {
  80. if req.OperName != "" {
  81. model = model.Where("oper_name like ?", "%"+req.OperName+"%")
  82. }
  83. if req.Title != "" {
  84. model = model.Where("title like ?", "%"+req.Title+"%")
  85. }
  86. if req.RequestMethod != "" {
  87. model = model.Where("request_method = ?", req.RequestMethod)
  88. }
  89. if req.Status != "" {
  90. model = model.Where("status", gconv.Int(req.Status))
  91. }
  92. if req.BeginTime != "" {
  93. model = model.Where("oper_time >=", req.BeginTime)
  94. }
  95. if req.EndTime != "" {
  96. model = model.Where("oper_time <=", req.EndTime)
  97. }
  98. if req.SortName != "" {
  99. if req.SortOrder != "" {
  100. order = req.SortName + " " + req.SortOrder
  101. } else {
  102. order = req.SortName + " DESC"
  103. }
  104. }
  105. }
  106. total, err = model.Count()
  107. if err != nil {
  108. g.Log().Error(err)
  109. err = gerror.New("获取总行数失败")
  110. return
  111. }
  112. err = model.Page(req.GetPage()).Order(order).Scan(&list)
  113. if err != nil {
  114. g.Log().Error(err)
  115. err = gerror.New("获取数据失败")
  116. }
  117. return
  118. }
  119. func (s *sysOperLog) DeleteOperationLogByIds(ids []int) (err error) {
  120. if len(ids) == 0 {
  121. err = gerror.New("参数错误")
  122. return
  123. }
  124. _, err = dao.SysOperLog.Delete("oper_id in (?)", ids)
  125. if err != nil {
  126. g.Log().Error(err)
  127. err = gerror.New("删除失败")
  128. }
  129. return
  130. }
  131. func (s *sysOperLog) GetOperationLogById(id int64) (log *model.SysOperLog, err error) {
  132. if id == 0 {
  133. err = gerror.New("参数错误")
  134. return
  135. }
  136. err = dao.SysOperLog.Where("oper_id", id).Scan(&log)
  137. if err != nil {
  138. g.Log().Error(err)
  139. }
  140. if err != nil || log == nil {
  141. err = gerror.New("获取操作日志失败")
  142. }
  143. return
  144. }
  145. func (s *sysOperLog) ClearOperationLog() (err error) {
  146. _, err = g.DB().Exec("truncate " + dao.SysOperLog.Table)
  147. if err != nil {
  148. g.Log().Error(err)
  149. err = gerror.New("清除失败")
  150. }
  151. return
  152. }