sys_oper_log.go 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162
  1. package sys_oper_log
  2. import (
  3. "gfast/app/model/admin/auth_rule"
  4. "gfast/app/model/admin/user"
  5. "gfast/library/utils"
  6. "github.com/gogf/gf/encoding/gjson"
  7. "github.com/gogf/gf/errors/gerror"
  8. "github.com/gogf/gf/frame/g"
  9. "github.com/gogf/gf/os/gtime"
  10. "github.com/gogf/gf/util/gconv"
  11. "net/url"
  12. )
  13. // Fill with you ideas below.
  14. //查询列表请求参数
  15. type SelectPageReq struct {
  16. Title string `p:"title"` //系统模块
  17. OperName string `p:"operName"` //操作人员
  18. Status string `p:"status"` //操作状态
  19. BeginTime string `p:"beginTime"` //数据范围
  20. EndTime string `p:"endTime"` //开始时间
  21. PageNum int `p:"page"` //当前页码
  22. PageSize int `p:"pageSize"` //每页数
  23. SortName string `p:"orderByColumn"` //排序字段
  24. SortOrder string `p:"isAsc"` //排序方式
  25. }
  26. //新增操作日志记录
  27. func Add(user *user.Entity, menu *auth_rule.Entity, url *url.URL,
  28. param g.Map, method, clientIp string) {
  29. var operLog Entity
  30. if menu != nil {
  31. operLog.Title = menu.Title
  32. }
  33. operLog.Method = url.Path
  34. operLog.RequestMethod = method
  35. operLog.OperatorType = 1
  36. operLog.OperName = user.UserName
  37. rawQuery := url.RawQuery
  38. if rawQuery != "" {
  39. rawQuery = "?" + rawQuery
  40. }
  41. operLog.OperUrl = url.Path + rawQuery
  42. operLog.OperIp = clientIp
  43. operLog.OperLocation = utils.GetCityByIp(operLog.OperIp)
  44. operLog.OperTime = gtime.Timestamp()
  45. if param != nil {
  46. if v, ok := param["apiReturnRes"]; ok {
  47. res := gconv.Map(v)
  48. if gconv.Int(res["code"]) == 0 {
  49. operLog.Status = 1
  50. } else {
  51. operLog.Status = 0
  52. }
  53. if _, ok = res["data"]; ok {
  54. delete(res, "data")
  55. }
  56. b, _ := gjson.Encode(res)
  57. if len(b) > 0 {
  58. operLog.JsonResult = string(b)
  59. }
  60. delete(param, "apiReturnRes")
  61. }
  62. b, _ := gjson.Encode(param)
  63. if len(b) > 0 {
  64. operLog.OperParam = string(b)
  65. }
  66. }
  67. operLog.Save()
  68. }
  69. //操作日志列表
  70. func ListByPage(req *SelectPageReq) (total, page int, list []*Entity, err error) {
  71. model := Model
  72. order := "oper_time DESC"
  73. if req != nil {
  74. if req.OperName != "" {
  75. model = model.Where("oper_name like ?", "%"+req.OperName+"%")
  76. }
  77. if req.Title != "" {
  78. model = model.Where("title like ?", "%"+req.Title+"%")
  79. }
  80. if req.Status != "" {
  81. model = model.Where("status", gconv.Int(req.Status))
  82. }
  83. if req.BeginTime != "" {
  84. model = model.Where("oper_time >=", utils.StrToTimestamp(req.BeginTime))
  85. }
  86. if req.EndTime != "" {
  87. model = model.Where("oper_time <=", utils.StrToTimestamp(req.EndTime))
  88. }
  89. if req.SortName != "" {
  90. if req.SortOrder != "" {
  91. order = req.SortName + " " + req.SortOrder
  92. } else {
  93. order = req.SortName + " DESC"
  94. }
  95. }
  96. }
  97. total, err = model.Count()
  98. if err != nil {
  99. g.Log().Error(err)
  100. err = gerror.New("获取总行数失败")
  101. return
  102. }
  103. if req.PageNum == 0 {
  104. req.PageNum = 1
  105. }
  106. page = req.PageNum
  107. if req.PageSize == 0 {
  108. req.PageSize = utils.AdminPageNum
  109. }
  110. list, err = model.Page(page, req.PageSize).FieldsEx("oper_param,json_result").Order(order).All()
  111. if err != nil {
  112. g.Log().Error(err)
  113. err = gerror.New("获取数据失败")
  114. return
  115. }
  116. return
  117. }
  118. //通过id获取操作日志
  119. func GetById(id int64) (log *Entity, err error) {
  120. if id == 0 {
  121. err = gerror.New("参数错误")
  122. return
  123. }
  124. log, err = Model.FindOne("oper_id", id)
  125. if err != nil {
  126. g.Log().Error(err)
  127. }
  128. if err != nil || log == nil {
  129. err = gerror.New("获取操作日志失败")
  130. }
  131. return
  132. }
  133. //删除
  134. func DeleteByIds(ids []int) (err error) {
  135. if len(ids) == 0 {
  136. err = gerror.New("参数错误")
  137. return
  138. }
  139. _, err = Model.Delete("oper_id in (?)", ids)
  140. if err != nil {
  141. g.Log().Error(err)
  142. err = gerror.New("删除失败")
  143. }
  144. return
  145. }
  146. //清空
  147. func ClearLog() (err error) {
  148. _, err = g.DB().Exec("truncate " + Table)
  149. if err != nil {
  150. g.Log().Error(err)
  151. err = gerror.New("清除失败")
  152. }
  153. return
  154. }