OrderOfflineServices.php 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. <?php
  2. // +----------------------------------------------------------------------
  3. // | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
  4. // +----------------------------------------------------------------------
  5. // | Copyright (c) 2016~2020 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\StoreOrderInvoiceServices;
  14. use app\services\order\StoreOrderServices;
  15. use app\services\order\StoreOrderStatusServices;
  16. use app\jobs\ProductLogJob;
  17. use app\services\user\UserServices;
  18. use app\services\statistic\CapitalFlowServices;
  19. use think\exception\ValidateException;
  20. /**
  21. * 线下支付
  22. * Class OrderOfflineServices
  23. * @package app\services\pay
  24. */
  25. class OrderOfflineServices extends BaseServices
  26. {
  27. /**
  28. * 线下支付
  29. * @param int $id
  30. * @return mixed
  31. */
  32. public function orderOffline(int $id)
  33. {
  34. /** @var StoreOrderServices $orderSerives */
  35. $orderSerives = app()->make(StoreOrderServices::class);
  36. $orderInfo = $orderSerives->get($id);
  37. if (!$orderInfo) {
  38. throw new ValidateException('订单不存在');
  39. }
  40. if ($orderInfo->paid) {
  41. throw new ValidateException('订单已支付');
  42. }
  43. $orderInfo->paid = 1;
  44. $orderInfo->pay_time = time();
  45. /** @var StoreOrderStatusServices $statusService */
  46. $statusService = app()->make(StoreOrderStatusServices::class);
  47. $res = $statusService->save([
  48. 'oid' => $id,
  49. 'change_type' => 'offline',
  50. 'change_message' => '线下付款',
  51. 'change_time' => time()
  52. ]);
  53. //修改开票数据支付状态
  54. $orderInvoiceServices = app()->make(StoreOrderInvoiceServices::class);
  55. $orderInvoiceServices->update(['order_id' => $orderInfo['id']], ['is_pay' => 1]);
  56. /** @var CapitalFlowServices $capitalFlowServices */
  57. $capitalFlowServices = app()->make(CapitalFlowServices::class);
  58. /** @var UserServices $userServices */
  59. $userServices = app()->make(UserServices::class);
  60. $userInfo = $userServices->get($orderInfo['uid']);
  61. $orderInfo['nickname'] = $userInfo['nickname'];
  62. $orderInfo['phone'] = $userInfo['phone'];
  63. $capitalFlowServices->setFlow($orderInfo, 'order');
  64. //支付记录
  65. ProductLogJob::dispatch(['pay', ['uid' => $orderInfo['uid'], 'order_id' => $orderInfo['id']]]);
  66. return $res && $orderInfo->save();
  67. }
  68. }