Files
bj_power/bj_power_mes/internal/eventlog/eventlog.go
T
2026-08-28 15:06:01 +08:00

61 lines
1.5 KiB
Go

package eventlog
import (
"context"
"bj_power_mes/ent"
"bj_power_mes/ent/eventlog"
)
// Writer 封装操作日志写入
type Writer struct {
client *ent.Client
}
func NewWriter(client *ent.Client) *Writer {
return &Writer{client: client}
}
// Payload 可选载荷
type Payload = map[string]any
// Write 记录一条操作日志(event_log 必含 workOrderNo、operator 字段)
func (w *Writer) Write(ctx context.Context, eventType, workOrderNo, operator, entityType, entityId, description string, payload Payload) {
b := w.client.EventLog.Create().
SetEventType(eventType).
SetWorkOrderNo(workOrderNo).
SetOperator(operator).
SetEntityType(entityType).
SetEntityId(entityId).
SetDescription(description)
if payload != nil {
b.SetPayload(payload)
}
if _, err := b.Save(ctx); err != nil {
_ = err
}
}
// Writer Query 支持按工单号/操作人/时间查询
func (w *Writer) Query(ctx context.Context, eventType, workOrderNo, operator string, page, pageSize int) ([]*ent.EventLog, int, error) {
q := w.client.EventLog.Query()
if eventType != "" {
q = q.Where(eventlog.EventType(eventType))
}
if workOrderNo != "" {
q = q.Where(eventlog.WorkOrderNo(workOrderNo))
}
if operator != "" {
q = q.Where(eventlog.Operator(operator))
}
total, err := q.Count(ctx)
if err != nil {
return nil, 0, err
}
list, err := q.Order(ent.Desc(eventlog.FieldCreatedAt)).
Offset((page - 1) * pageSize).Limit(pageSize).All(ctx)
if err != nil {
return nil, 0, err
}
return list, total, nil
}