admin_logs.go 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. package service
  2. import (
  3. "gadmin/config"
  4. "gadmin/internal/admin/consts"
  5. "gadmin/internal/admin/forms"
  6. "gadmin/internal/gorm/query"
  7. "gadmin/utility/serializer"
  8. "gadmin/utility/token"
  9. "github.com/gin-gonic/gin"
  10. "os"
  11. )
  12. // AdminLog 后台日志
  13. var AdminLog = new(sAdminLog)
  14. type sAdminLog struct{}
  15. func (s *sAdminLog) View(ctx *gin.Context, req forms.AdminLogViewReq) serializer.Response {
  16. var (
  17. q = query.Use(config.DB).AdminLog
  18. u = query.Use(config.DB).AdminUser
  19. m = q.WithContext(ctx).Where(q.Environment.Eq(os.Getenv("GIN_MODE")))
  20. models *forms.AdminLogViewModel
  21. )
  22. err := m.Where(q.ID.Eq(req.Id)).Scan(&models)
  23. if err != nil {
  24. return serializer.Err(consts.CodeParamErr, "查询出错 models", err)
  25. }
  26. if models == nil {
  27. return serializer.Err(consts.CodeParamErr, "没有找到数据", nil)
  28. }
  29. models.AdminName = "未知"
  30. user, _ := u.WithContext(ctx).Where(u.ID.Eq(models.AdminID)).First()
  31. if user != nil {
  32. models.AdminName = user.UserName
  33. }
  34. return serializer.Suc(models)
  35. }
  36. func (s *sAdminLog) List(ctx *gin.Context, req forms.AdminLogListReq) serializer.Response {
  37. var (
  38. q = query.Use(config.DB).AdminLog
  39. u = query.Use(config.DB).AdminUser
  40. m = q.WithContext(ctx).Where(q.Environment.Eq(os.Getenv("GIN_MODE")))
  41. offset int64 = 0
  42. models forms.UserAccountListRes
  43. lists []*forms.AdminLogListModel
  44. )
  45. if !config.IsSuperRole(User.GetUserRoleId(ctx)) {
  46. m = m.Where(q.AdminID.Eq(token.GetUID(ctx)))
  47. }
  48. if req.AdminId > 0 {
  49. m = m.Where(q.AdminID.Eq(req.AdminId))
  50. }
  51. if req.Path != "" {
  52. m = m.Where(q.Path.Eq(req.Path))
  53. }
  54. if req.Ip != "" {
  55. m = m.Where(q.AccessIP.Eq(req.Ip))
  56. }
  57. if req.Method != "" {
  58. m = m.Where(q.Method.Eq(req.Method))
  59. }
  60. if len(req.CreatedAt) == 2 {
  61. m = m.Where(q.CreatedAt.Between(req.Time[0], req.Time[1]))
  62. }
  63. m = m.Order(q.ID.Desc())
  64. req.Page, req.PerPage, offset = forms.CalculatePage(req.Page, req.PerPage)
  65. count, err := m.Count()
  66. if err != nil {
  67. return serializer.Err(consts.CodeParamErr, "查询出错 count", err)
  68. }
  69. if count > 0 {
  70. if err = m.Limit(int(req.PerPage)).Offset(int(offset)).Scan(&lists); err != nil {
  71. return serializer.Err(consts.CodeParamErr, "查询出错 lists", err)
  72. }
  73. }
  74. for _, v := range lists {
  75. v.AdminName = "未知"
  76. user, _ := u.WithContext(ctx).Where(u.ID.Eq(v.AdminID)).First()
  77. if user != nil {
  78. v.AdminName = user.UserName
  79. }
  80. v.Remark = config.GetMenuName(v.Path)
  81. }
  82. models.List = lists
  83. models.Page = req.Page
  84. models.PerPage = req.PerPage
  85. models.PageCount = (count + req.PerPage - 1) / req.PerPage
  86. return serializer.Suc(models)
  87. }