MasterPaySuccessService.php 1.6 KB

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