47 lines
1.8 KiB
Go
47 lines
1.8 KiB
Go
package pig
|
|
|
|
import (
|
|
"git.huangwc.com/pig/pig-farm-controller/internal/infra/models"
|
|
"git.huangwc.com/pig/pig-farm-controller/internal/infra/repository" // 引入基础设施层的仓库接口
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
// PigTradeManager 定义了与猪只交易相关的操作接口。
|
|
// 这是一个领域服务,负责协调业务逻辑。
|
|
type PigTradeManager interface {
|
|
// SellPig 处理卖猪的业务逻辑,通过仓库接口创建 PigSale 记录。
|
|
SellPig(tx *gorm.DB, sale *models.PigSale) error
|
|
|
|
// BuyPig 处理买猪的业务逻辑,通过仓库接口创建 PigPurchase 记录。
|
|
BuyPig(tx *gorm.DB, purchase *models.PigPurchase) error
|
|
}
|
|
|
|
// pigTradeManager 是 PigTradeManager 接口的具体实现。
|
|
// 它依赖于 repository.PigTradeRepository 接口来执行数据持久化操作。
|
|
type pigTradeManager struct {
|
|
tradeRepo repository.PigTradeRepository // 依赖于基础设施层定义的仓库接口
|
|
}
|
|
|
|
// NewPigTradeManager 是 pigTradeManager 的构造函数。
|
|
func NewPigTradeManager(tradeRepo repository.PigTradeRepository) PigTradeManager {
|
|
return &pigTradeManager{
|
|
tradeRepo: tradeRepo,
|
|
}
|
|
}
|
|
|
|
// SellPig 实现了卖猪的逻辑。
|
|
// 它通过调用 tradeRepo 来持久化销售记录。
|
|
func (s *pigTradeManager) SellPig(tx *gorm.DB, sale *models.PigSale) error {
|
|
// 在此处可以添加更复杂的卖猪前置校验或业务逻辑
|
|
// 例如:检查猪只库存、更新猪只状态等。
|
|
return s.tradeRepo.CreatePigSaleTx(tx, sale)
|
|
}
|
|
|
|
// BuyPig 实现了买猪的逻辑。
|
|
// 它通过调用 tradeRepo 来持久化采购记录。
|
|
func (s *pigTradeManager) BuyPig(tx *gorm.DB, purchase *models.PigPurchase) error {
|
|
// 在此处可以添加更复杂的买猪前置校验或业务逻辑
|
|
// 例如:检查资金、更新猪只状态等。
|
|
return s.tradeRepo.CreatePigPurchaseTx(tx, purchase)
|
|
}
|