src/Biz/Distributor/Event/OrderStatusSubscriber.php
(开头部分) 2KB这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。
<?php
namespace Biz\Distributor\Event;
use AppBundle\Common\ArrayToolkit;
use Biz\Distributor\Util\DistributorUtil;
use Codeages\Biz\Framework\Event\Event;
use Codeages\Biz\Framework\Event\EventSubscriber;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
class OrderStatusSubscriber extends EventSubscriber implements EventSubscriberInterface
{
public static function getSubscribedEvents()
{
return array(
'order.finished' => 'onOrderChangeStatus',
'order.success' => 'onOrderChangeStatus',
'order.refunded' => 'onOrderChangeStatus',
);
}
public function onOrderChangeStatus(Event $event)
{
$context = $event->getSubject();
$orderIdItems = ArrayToolkit::index($context['items'], 'order_id');
$orderIds = array_keys($orderIdItems);
$orders = $this->getOrderService()->findOrdersByIds($orderIds);
$userIds = ArrayToolkit::column($orders, 'user_id');
$users = $this->getUserService()->findUsersByIds($userIds);
$distributorProductOrders = array(); //商品分销订单
$distributorUserOrders = array(); //用户拉新订单
foreach ($orders as $order) {
if (!empty($orderIdItems[$order['id']]['create_extra']['distributorToken'])) {
$productToken = $orderIdItems[$order['id']]['create_extra']['distributorToken'];
$productType = DistributorUtil::getTypeByToken($productToken);
if (empty($distributorProductOrders[$productType])) {
$distributorProductOrders[$productType] = array();
}
$distributorProductOrders[$productType][] = $order;
} elseif (!empty($users[$order['user_id']])) {
$user = $users[$order['user_id']];
if ('distributor' == $user['type']) {
$distributorUserOrders[] = $order;
}
}
}
$this->getDistributorOrderService()->batchCreateJobData($distributorUserOrders);
foreach ($distributorProductOrders as $type => $orders) {
DistributorUtil::getDistributorServiceByType($this->getBiz(), $type)->batchCreateJobData($orders);
}
}
protected function getOrderService()
{
24 小时内免费解锁 3 个项目,之后 1 算力/个。 规则说明
AI 解读 AI
登录后可用,每次 10 算力,解读结果公开显示在下面。
还没有人解读过这个文件。