// Code scaffolded by goctl. Safe to edit. // goctl 1.10.2 package systemlog import ( "context" "udeServer/internal/apierr" "udeServer/internal/audit" "udeServer/internal/log" udeModel "udeServer/internal/model" "udeServer/internal/svc" "udeServer/internal/types" "github.com/zeromicro/go-zero/core/logx" ) type LogListLogic struct { logx.Logger ctx context.Context svcCtx *svc.ServiceContext } // 日志分页列表 func NewLogListLogic(ctx context.Context, svcCtx *svc.ServiceContext) *LogListLogic { return &LogListLogic{ Logger: logx.WithContext(ctx), ctx: ctx, svcCtx: svcCtx, } } // LogList queries the audit log with paging and optional filters. func (l *LogListLogic) LogList(req *types.SystemLogListReq) (*types.SystemLogListResp, error) { page, pageSize := normalizePage(req.Page, req.PageSize) f := udeModel.SystemLogFilter{ Iden: req.Iden, UserName: req.UserName, AppKey: req.AppKey, UriPath: req.UriPath, HttpMethod: req.HttpMethod, CreatedStartTime: req.CreatedStartTime, CreatedEndTime: req.CreatedEndTime, ClientIp: req.ClientIp, ErrorMsg: req.ErrorMsg, } // 日志类型:合法取值才过滤(与 sdf-serve 行为一致,非法类型视为不传) if req.Type == audit.SystemLog || req.Type == audit.InterfaceLog { f.Type = req.Type f.TypeValid = true } // 审计状态:"1"未审计/"2"通过/"3"异常,空白视为未传 switch req.AuditStatus { case "": case "1": f.AuditStatus = audit.UnAudited case "2": f.AuditStatus = audit.AuditedPassed case "3": f.AuditStatus = audit.AuditedAnomaly default: return nil, apierr.BadRequest("auditStatus must be \"1\" (未审计) or \"2\" (通过) or \"3\" (异常)") } list, total, err := l.svcCtx.SystemLogModel.FindPage(l.ctx, page, pageSize, f) if err != nil { log.RecordError(l.ctx, err) return nil, apierr.New(500, "查询日志分页列表失败") } logs := make([]types.SystemLog, len(list)) for i := range list { logs[i] = ConvertToSystemLog(&list[i]) } return &types.SystemLogListResp{ Total: total, Logs: logs, }, nil }