// +---------------------------------------------------------------------- namespace app\services\pay; use app\services\activity\combination\StorePinkServices; use app\services\BaseServices; use app\services\order\StoreOrderDeliveryServices; use app\services\order\StoreOrderInvoiceServices; use app\services\order\StoreOrderServices; use app\services\order\StoreOrderStatusServices; use app\jobs\ProductLogJob; use app\services\user\UserServices; use app\services\statistic\CapitalFlowServices; use crmeb\exceptions\ApiException; /** * 线下支付 * Class OrderOfflineServices * @package app\services\pay */ class OrderOfflineServices extends BaseServices { /** * 线下支付 * @param int $id * @return mixed */ public function orderOffline(int $id) { /** @var StoreOrderServices $orderSerives */ $orderSerives = app()->make(StoreOrderServices::class); $orderInfo = $orderSerives->get($id); if (!$orderInfo) { throw new ApiException(410173); } if ($orderInfo->paid) { throw new ApiException(410174); } $orderInfo->paid = 1; $orderInfo->pay_time = time(); /** @var StoreOrderStatusServices $statusService */ $statusService = app()->make(StoreOrderStatusServices::class); $res = $statusService->save([ 'oid' => $id, 'change_type' => 'offline', 'change_message' => '线下付款', 'change_time' => time() ]); //修改开票数据支付状态 $orderInvoiceServices = app()->make(StoreOrderInvoiceServices::class); $orderInvoiceServices->update(['order_id' => $orderInfo['id']], ['is_pay' => 1]); /** @var CapitalFlowServices $capitalFlowServices */ $capitalFlowServices = app()->make(CapitalFlowServices::class); /** @var UserServices $userServices */ $userServices = app()->make(UserServices::class); $userInfo = $userServices->get($orderInfo['uid']); $orderInfo['nickname'] = $userInfo['nickname']; $orderInfo['phone'] = $userInfo['phone']; $capitalFlowServices->setFlow($orderInfo, 'order'); // 拼团订单创建拼团 if ($orderInfo['combination_id']) { $tidyOrder = app()->make(StoreOrderServices::class)->tidyOrder($orderInfo->toArray(), true); app()->make(StorePinkServices::class)->createPink($tidyOrder); } //虚拟商品自动发货 if ($orderInfo['virtual_type'] > 0) { /** @var StoreOrderDeliveryServices $orderDeliveryServices */ $orderDeliveryServices = app()->make(StoreOrderDeliveryServices::class); $orderDeliveryServices->virtualSend($orderInfo); } //支付记录 ProductLogJob::dispatch(['pay', ['uid' => $orderInfo['uid'], 'order_id' => $orderInfo['id']]]); return $res && $orderInfo->save(); } }