TimeTaskService.php 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: yunzhong
  5. * Date: 2020/10/19
  6. * Time: 15:03
  7. */
  8. namespace Yunshop\PhoneBill\service;
  9. use app\common\models\Order;
  10. use app\common\services\Session;
  11. use app\common\models\UniAccount;
  12. use app\frontend\modules\order\services\OrderService;
  13. use Yunshop\PhoneBill\models\PhoneBillOrder;
  14. use app\common\modules\refund\services\RefundService;
  15. class TimeTaskService
  16. {
  17. public function handle()
  18. {
  19. // 获取所有公众号
  20. $uniAccount = UniAccount::getEnable();
  21. // 循环每个公众号
  22. foreach ($uniAccount as $u) {
  23. // 设置公众号到系统
  24. \YunShop::app()->uniacid = $u->uniacid;
  25. \Setting::$uniqueAccountId = $u->uniacid;
  26. $this->settlementOrder();
  27. }
  28. }
  29. protected function settlementOrder()
  30. {
  31. $phoneBillOrder = PhoneBillOrder::where('status', 4)->get();
  32. if (!$phoneBillOrder->isEmpty()) {
  33. foreach ($phoneBillOrder as $value) {
  34. $order = Order::find($value['order_id']);
  35. if ($order) {
  36. try {
  37. \Illuminate\Support\Facades\DB::transaction(function () use ($order) {
  38. Session::set('member_id', $order->uid);
  39. $reFundResult = (new RefundService())->fastRefund($order->id);
  40. PhoneBillOrder::where('order_id', $order->id)->update(['status' => 5]);
  41. Session::set('member_id', 0);
  42. return $reFundResult;
  43. });
  44. } catch (\Exception $error) {
  45. $error = $error->getMessage();
  46. \Log::debug("PhoneBill订单退款失败", $error);
  47. continue;
  48. }
  49. }
  50. }
  51. }
  52. }
  53. }