50 lines
1.6 KiB
PHP
50 lines
1.6 KiB
PHP
<?php
|
|
|
|
namespace Stemcell\Sales\Observer;
|
|
|
|
use Magento\Framework\Event\Observer;
|
|
use Magento\Framework\Event\ObserverInterface;
|
|
use Magento\Framework\Exception\LocalizedException;
|
|
use Magento\Sales\Model\Order;
|
|
use Psr\Log\LoggerInterface;
|
|
use Stemcell\Customer\Api\Data\SalespersonInterface;
|
|
use Stemcell\Customer\Api\SalespersonRepositoryInterface;
|
|
use Stemcell\Sales\Model\Order\Email\Sender\OrderSender;
|
|
|
|
class SalespersonNotify implements ObserverInterface
|
|
{
|
|
private OrderSender $orderMailSender;
|
|
private LoggerInterface $logger;
|
|
|
|
public function __construct(
|
|
OrderSender $orderMailSender,
|
|
LoggerInterface $logger,
|
|
protected SalespersonRepositoryInterface $salespersonRepository,
|
|
) {
|
|
$this->orderMailSender = $orderMailSender;
|
|
$this->logger = $logger;
|
|
}
|
|
|
|
/**
|
|
* @param Observer $observer
|
|
* @return void
|
|
*/
|
|
public function execute(Observer $observer)
|
|
{
|
|
/** @var $orderInstance Order */
|
|
$orderInstance = $observer->getOrder();
|
|
$salespersonId = $orderInstance->getData('salesperson_id');
|
|
try {
|
|
if ($salespersonId) {
|
|
$salesperson = $this->salespersonRepository->get($salespersonId);
|
|
$this->orderMailSender->setSalesperson($salesperson)->send($orderInstance);
|
|
} else {
|
|
$this->logger->critical(sprintf('发送给销售的邮件失败,原因:订单%s的salesperson_id为空', $orderInstance->getEntityId()));
|
|
}
|
|
|
|
} catch (\Exception $e) {
|
|
$this->logger->critical('发送给销售的邮件失败,原因:'.$e->getMessage(), $e->getTrace());
|
|
}
|
|
}
|
|
}
|