70 lines
1.5 KiB
Go
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
|
|
}
|