2025-03-31 11:59:42 +08:00

70 lines
1.5 KiB
Go

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
}