sys_oper_log.go 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. /*
  2. * @desc:操作日志管理
  3. * @company:云南省奇讯科技有限公司
  4. * @Author: yixiaohu
  5. * @Date: 2021/7/19 14:50
  6. */
  7. package api
  8. import (
  9. "gfast/app/system/dao"
  10. "gfast/app/system/model"
  11. "gfast/app/system/service"
  12. "gfast/library"
  13. "github.com/gogf/gf/frame/g"
  14. "github.com/gogf/gf/net/ghttp"
  15. "github.com/gogf/gf/text/gstr"
  16. "github.com/gogf/gf/util/gvalid"
  17. )
  18. type sysOperLog struct {
  19. SystemBase
  20. }
  21. var SysOperLog = new(sysOperLog)
  22. // List 操作日志列表
  23. func (c *sysOperLog) List(r *ghttp.Request) {
  24. var req *dao.SysOperLogSearchReq
  25. //获取参数
  26. if err := r.Parse(&req); err != nil {
  27. c.FailJsonExit(r, err.(gvalid.Error).FirstString())
  28. }
  29. total, page, list, err := service.SysOperLog.OperationLogListByPage(req)
  30. if err != nil {
  31. c.FailJsonExit(r, err.Error())
  32. }
  33. result := g.Map{
  34. "currentPage": page,
  35. "total": total,
  36. "list": list,
  37. }
  38. c.SusJsonExit(r, result)
  39. }
  40. // Detail 日志详细
  41. func (c *sysOperLog) Detail(r *ghttp.Request) {
  42. id := r.GetInt64("id")
  43. log, err := service.SysOperLog.GetOperationLogById(id)
  44. if err != nil {
  45. c.FailJsonExit(r, err.Error())
  46. }
  47. c.SusJsonExit(r, g.Map{
  48. "info": log,
  49. })
  50. }
  51. // Delete 删除
  52. func (c *sysOperLog) Delete(r *ghttp.Request) {
  53. ids := r.GetInts("ids")
  54. err := service.SysOperLog.DeleteOperationLogByIds(ids)
  55. if err != nil {
  56. c.FailJsonExit(r, err.Error())
  57. }
  58. c.SusJsonExit(r, "删除成功")
  59. }
  60. // Clear 清空
  61. func (c *sysOperLog) Clear(r *ghttp.Request) {
  62. err := service.SysOperLog.ClearOperationLog()
  63. if err != nil {
  64. c.FailJsonExit(r, err.Error())
  65. }
  66. c.SusJsonExit(r, "清除成功")
  67. }
  68. // OperationLog 操作日志记录
  69. func (c *sysOperLog) OperationLog(r *ghttp.Request) {
  70. userInfo := c.GetCurrentUser(r.GetCtx())
  71. if userInfo == nil {
  72. return
  73. }
  74. url := r.Request.URL //请求地址
  75. //获取菜单
  76. //获取地址对应的菜单id
  77. menuList, err := service.Rule.GetMenuList()
  78. if err != nil {
  79. g.Log().Error(err)
  80. return
  81. }
  82. var menu *model.SysAuthRuleInfoRes
  83. path := gstr.TrimLeft(url.Path, "/")
  84. for _, m := range menuList {
  85. if gstr.Equal(m.Name, path) {
  86. menu = m
  87. break
  88. }
  89. }
  90. data := &dao.SysOperLogAdd{
  91. User: userInfo,
  92. Menu: menu,
  93. Url: url,
  94. Params: r.GetMap(),
  95. Method: r.Method,
  96. ClientIp: library.GetClientIp(r),
  97. OperatorType: 1,
  98. }
  99. service.SysOperLog.Invoke(data)
  100. }