pg_order_log_repository.go 2.2 KB
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
}