package repository import ( "fmt" "gitlab.fjmaimaimai.com/mmm-go/partnermg/pkg/domain" "gitlab.fjmaimaimai.com/mmm-go/partnermg/pkg/infrastructure/pg/models" "gitlab.fjmaimaimai.com/mmm-go/partnermg/pkg/infrastructure/pg/transaction" ) //订单日志 type OrderLogRepository struct { transactionContext *transaction.TransactionContext } var _ domain.OrderLogRepository = (*OrderLogRepository)(nil) func NewOrderLogRepository(transactionContext *transaction.TransactionContext) (*OrderLogRepository, error) { if transactionContext == nil { return nil, fmt.Errorf("transactionContext参数不能为nil") } return &OrderLogRepository{transactionContext: transactionContext}, nil } func (repository OrderLogRepository) transformPgModelToDomainModel(m *models.OrderLog) (data domain.OrderLog, err error) { return domain.OrderLog{ Id: m.Id, OrderId: m.OrderId, Operator: m.Operator, OperatorId: m.OperatorId, OperatorType: m.OperatorType, AlterTime: m.AlterTime, LogAction: m.LogAction, Descript: m.Descript, DataFrom: m.DataFrom, }, nil } func (repository OrderLogRepository) Add(data *domain.OrderLog) error { db := repository.transactionContext.GetDB() m := models.OrderLog{ OrderId: data.OrderId, Operator: data.Operator, OperatorId: data.OperatorId, OperatorType: data.OperatorType, LogAction: data.LogAction, Descript: data.Descript, DataFrom: data.DataFrom, } _, err := db.Model(&m).Insert() data.AlterTime = m.AlterTime return err } func (repository OrderLogRepository) Find(queryOptions domain.OrderLogFindQuery) ([]domain.OrderLog, error) { db := repository.transactionContext.GetDB() logModels := []models.OrderLog{} var err error query := db.Model(&logModels) if queryOptions.OrderId > 0 { query = query.Where("order_id=?", queryOptions.OrderId) } query = query.Order("order_log.id") query = query.Limit(1000) err = query.Select() if err != nil { return nil, err } logReturn := []domain.OrderLog{} for i := range logModels { domainLog, err := repository.transformPgModelToDomainModel(&logModels[i]) if err != nil { return logReturn, err } logReturn = append(logReturn, domainLog) } return logReturn, nil }