MasterPaySuccessService.php 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. <?php
  2. namespace app\api\service\order\paysuccess\source;
  3. use app\common\enum\settings\DeliveryTypeEnum;
  4. use app\common\library\helper;
  5. use app\api\model\plus\agent\Apply as AgentApplyModel;
  6. use app\common\service\order\OrderPrinterService;
  7. use app\common\service\order\OrderCompleteService;
  8. use app\common\enum\order\OrderTypeEnum;
  9. /**
  10. * 普通订单支付成功后的回调
  11. */
  12. class MasterPaySuccessService
  13. {
  14. /**
  15. * 回调方法
  16. */
  17. public function onPaySuccess($order)
  18. {
  19. // 小票打印
  20. (new OrderPrinterService)->printTicket($order);
  21. // 购买指定商品成为分销商
  22. $this->becomeAgentUser($order);
  23. // 如果是虚拟商品,则标记为已完成,无需发货
  24. if($order['delivery_type']['value'] == DeliveryTypeEnum::NO_EXPRESS && $order['virtual_auto'] == 1){
  25. $order->save([
  26. 'delivery_status' => 20,
  27. 'delivery_time' => time(),
  28. 'receipt_status' => 20,
  29. 'receipt_time' => time(),
  30. 'order_status' => 30,
  31. 'virtual_content' => $order['product'][0]['virtual_content'],
  32. ]);
  33. // 执行订单完成后的操作
  34. $OrderCompleteService = new OrderCompleteService(OrderTypeEnum::MASTER);
  35. $OrderCompleteService->complete([$order], $order['app_id']);
  36. }
  37. return true;
  38. }
  39. /**
  40. * 购买指定商品成为分销商
  41. */
  42. private function becomeAgentUser($order)
  43. {
  44. // 整理商品id集
  45. $productIds = helper::getArrayColumn($order['product'], 'product_id');
  46. $model = new AgentApplyModel;
  47. return $model->becomeAgentUser($order['user_id'], $productIds, $order['app_id']);
  48. }
  49. }