我有很长的逻辑来检查订购的产品是否兼容。两个控制器需要这种逻辑。所以我想把这段代码放在某个地方。
在我要遵循存储库模式时,将此逻辑放在OrderRepository
中是一个好主意吗?如果不是,最好的地方在哪里?
这是在OrderRepository
中创建订单的方法:
/**
* Create the order
*
* @param array $params
* @return Order
* @throws OrderInvalidArgumentException
*/
public function createOrder(array $params) : Order
{
try {
$order = $this->create($params);
$orderRepo = new OrderRepository($order);
$orderRepo->buildOrderDetails(Cart::content());
// Check the compatibility here
event(new OrderCreateEvent($order));
return $order;
} catch (QueryException $e) {
throw new OrderInvalidArgumentException($e->getMessage(), 500, $e);
}
}