OrderOfflineServices.php 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. <?php
  2. // +----------------------------------------------------------------------
  3. // | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
  4. // +----------------------------------------------------------------------
  5. // | Copyright (c) 2016~2023 https://www.crmeb.com All rights reserved.
  6. // +----------------------------------------------------------------------
  7. // | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
  8. // +----------------------------------------------------------------------
  9. // | Author: CRMEB Team <admin@crmeb.com>
  10. // +----------------------------------------------------------------------
  11. namespace app\services\pay;
  12. use app\services\BaseServices;
  13. use app\services\order\StoreOrderDeliveryServices;
  14. use app\services\order\StoreOrderInvoiceServices;
  15. use app\services\order\StoreOrderServices;
  16. use app\services\order\StoreOrderStatusServices;
  17. use app\jobs\ProductLogJob;
  18. use app\services\user\UserServices;
  19. use app\services\statistic\CapitalFlowServices;
  20. use crmeb\exceptions\ApiException;
  21. /**
  22. * 线下支付
  23. * Class OrderOfflineServices
  24. * @package app\services\pay
  25. */
  26. class OrderOfflineServices extends BaseServices
  27. {
  28. /**
  29. * 线下支付
  30. * @param int $id
  31. * @return mixed
  32. */
  33. public function orderOffline(int $id)
  34. {
  35. /** @var StoreOrderServices $orderSerives */
  36. $orderSerives = app()->make(StoreOrderServices::class);
  37. $orderInfo = $orderSerives->get($id);
  38. if (!$orderInfo) {
  39. throw new ApiException(410173);
  40. }
  41. if ($orderInfo->paid) {
  42. throw new ApiException(410174);
  43. }
  44. $orderInfo->paid = 1;
  45. $orderInfo->pay_time = time();
  46. /** @var StoreOrderStatusServices $statusService */
  47. $statusService = app()->make(StoreOrderStatusServices::class);
  48. $res = $statusService->save([
  49. 'oid' => $id,
  50. 'change_type' => 'offline',
  51. 'change_message' => '线下付款',
  52. 'change_time' => time()
  53. ]);
  54. //修改开票数据支付状态
  55. $orderInvoiceServices = app()->make(StoreOrderInvoiceServices::class);
  56. $orderInvoiceServices->update(['order_id' => $orderInfo['id']], ['is_pay' => 1]);
  57. /** @var CapitalFlowServices $capitalFlowServices */
  58. $capitalFlowServices = app()->make(CapitalFlowServices::class);
  59. /** @var UserServices $userServices */
  60. $userServices = app()->make(UserServices::class);
  61. $userInfo = $userServices->get($orderInfo['uid']);
  62. $orderInfo['nickname'] = $userInfo['nickname'];
  63. $orderInfo['phone'] = $userInfo['phone'];
  64. $capitalFlowServices->setFlow($orderInfo, 'order');
  65. //虚拟商品自动发货
  66. if($orderInfo['virtual_type'] > 0){
  67. /** @var StoreOrderDeliveryServices $orderDeliveryServices */
  68. $orderDeliveryServices = app()->make(StoreOrderDeliveryServices::class);
  69. $orderDeliveryServices->virtualSend($orderInfo);
  70. }
  71. //支付记录
  72. ProductLogJob::dispatch(['pay', ['uid' => $orderInfo['uid'], 'order_id' => $orderInfo['id']]]);
  73. return $res && $orderInfo->save();
  74. }
  75. }