admin_logs.go 3.1 KB

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