package system import ( "context" "time" "management/internal/db/model/dto" db "management/internal/db/sqlc" ) type AuditBiz interface { Create(ctx context.Context, arg *db.CreateSysAuditLogParams) error List(ctx context.Context, q dto.SearchDto) ([]*db.SysAuditLog, int64, error) } type auditBiz struct { store db.Store } var _ AuditBiz = (*auditBiz)(nil) func NewAudit(store db.Store) *auditBiz { return &auditBiz{ store: store, } } func (b *auditBiz) Create(ctx context.Context, arg *db.CreateSysAuditLogParams) error { return b.store.CreateSysAuditLog(ctx, arg) } func (b *auditBiz) List(ctx context.Context, q dto.SearchDto) ([]*db.SysAuditLog, int64, error) { start, err := time.ParseInLocation(time.DateTime, q.SearchTimeBegin, time.Local) if err != nil { return nil, 0, err } end, err := time.ParseInLocation(time.DateTime, q.SearchTimeEnd, time.Local) if err != nil { return nil, 0, err } countArg := &db.CountSysAuditLogConditionParams{ StartAt: start, EndAt: end, Email: q.SearchEmail, Username: q.SearchName, } dataArg := &db.ListSysAuditLogConditionParams{ StartAt: start, EndAt: end, Email: q.SearchEmail, Username: q.SearchName, Skip: (int32(q.Page) - 1) * int32(q.Rows), Size: int32(q.Rows), } count, err := b.store.CountSysAuditLogCondition(ctx, countArg) if err != nil { return nil, 0, err } audits, err := b.store.ListSysAuditLogCondition(ctx, dataArg) if err != nil { return nil, 0, err } return audits, count, nil }