loglistlogic.go 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. // Code scaffolded by goctl. Safe to edit.
  2. // goctl 1.10.2
  3. package systemlog
  4. import (
  5. "context"
  6. "udeServer/internal/apierr"
  7. "udeServer/internal/audit"
  8. "udeServer/internal/log"
  9. udeModel "udeServer/internal/model"
  10. "udeServer/internal/svc"
  11. "udeServer/internal/types"
  12. "github.com/zeromicro/go-zero/core/logx"
  13. )
  14. type LogListLogic struct {
  15. logx.Logger
  16. ctx context.Context
  17. svcCtx *svc.ServiceContext
  18. }
  19. // 日志分页列表
  20. func NewLogListLogic(ctx context.Context, svcCtx *svc.ServiceContext) *LogListLogic {
  21. return &LogListLogic{
  22. Logger: logx.WithContext(ctx),
  23. ctx: ctx,
  24. svcCtx: svcCtx,
  25. }
  26. }
  27. // LogList queries the audit log with paging and optional filters.
  28. func (l *LogListLogic) LogList(req *types.SystemLogListReq) (*types.SystemLogListResp, error) {
  29. page, pageSize := normalizePage(req.Page, req.PageSize)
  30. f := udeModel.SystemLogFilter{
  31. Iden: req.Iden,
  32. UserName: req.UserName,
  33. AppKey: req.AppKey,
  34. UriPath: req.UriPath,
  35. HttpMethod: req.HttpMethod,
  36. CreatedStartTime: req.CreatedStartTime,
  37. CreatedEndTime: req.CreatedEndTime,
  38. ClientIp: req.ClientIp,
  39. ErrorMsg: req.ErrorMsg,
  40. }
  41. // 日志类型:合法取值才过滤(与 sdf-serve 行为一致,非法类型视为不传)
  42. if req.Type == audit.SystemLog || req.Type == audit.InterfaceLog {
  43. f.Type = req.Type
  44. f.TypeValid = true
  45. }
  46. // 审计状态:"1"未审计/"2"通过/"3"异常,空白视为未传
  47. switch req.AuditStatus {
  48. case "":
  49. case "1":
  50. f.AuditStatus = audit.UnAudited
  51. case "2":
  52. f.AuditStatus = audit.AuditedPassed
  53. case "3":
  54. f.AuditStatus = audit.AuditedAnomaly
  55. default:
  56. return nil, apierr.BadRequest("auditStatus must be \"1\" (未审计) or \"2\" (通过) or \"3\" (异常)")
  57. }
  58. list, total, err := l.svcCtx.SystemLogModel.FindPage(l.ctx, page, pageSize, f)
  59. if err != nil {
  60. log.RecordError(l.ctx, err)
  61. return nil, apierr.New(500, "查询日志分页列表失败")
  62. }
  63. logs := make([]types.SystemLog, len(list))
  64. for i := range list {
  65. logs[i] = ConvertToSystemLog(&list[i])
  66. }
  67. return &types.SystemLogListResp{
  68. Total: total,
  69. Logs: logs,
  70. }, nil
  71. }