FixController.php 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207
  1. <?php
  2. namespace app\backend\modules\order\controllers;
  3. use app\backend\modules\order\fix\OrderPayFailRepair;
  4. use app\backend\modules\order\models\OrderOperationLog;
  5. use app\common\components\BaseController;
  6. use app\common\exceptions\AppException;
  7. use app\common\models\Address;
  8. use app\common\models\Member;
  9. use app\common\models\MemberAddress;
  10. use app\common\models\Order;
  11. use app\common\models\order\FirstOrder;
  12. use app\common\models\OrderAddress;
  13. use app\common\models\OrderGoods;
  14. use app\common\models\OrderPay;
  15. use app\common\models\PayOrder;
  16. use app\common\facades\Setting;
  17. use Carbon\Carbon;
  18. /**
  19. * Created by PhpStorm.
  20. * Author: 芸众商城 www.yunzshop.com
  21. * Date: 21/02/2017
  22. * Time: 11:34
  23. */
  24. class FixController extends BaseController
  25. {
  26. public $transactionActions = ['payFail'];
  27. public function failedJobs()
  28. {
  29. dump("开始修复");
  30. // 一周内失败的订单收货事件
  31. $orderJobs = \app\common\models\OrderCreatedJob::where('status', 'waiting')->where('created_at', '>', Carbon::now()->subDays(7)->getTimestamp())->get();
  32. foreach ($orderJobs as $order_pay) {
  33. dump("修复{$order_pay->order_id}下单任务");
  34. app(\Illuminate\Contracts\Bus\Dispatcher::class)->dispatch(new \app\Jobs\OrderCreatedEventQueueJob($order_pay->order_id));
  35. }
  36. unset($orderJobs);
  37. $orderJobs = \app\common\models\OrderPaidJob::where('status', 'waiting')->where('created_at', '>', Carbon::now()->subDays(7)->getTimestamp())->get();
  38. foreach ($orderJobs as $order_pay) {
  39. dump("修复{$order_pay->order_id}支付任务");
  40. app(\Illuminate\Contracts\Bus\Dispatcher::class)->dispatch(new \app\Jobs\OrderPaidEventQueueJob($order_pay->order_id));
  41. }
  42. unset($orderJobs);
  43. $orderJobs = \app\common\models\OrderSentJob::where('status', 'waiting')->where('created_at', '>', Carbon::now()->subDays(7)->getTimestamp())->get();
  44. foreach ($orderJobs as $order_pay) {
  45. dump("修复{$order_pay->order_id}发货任务");
  46. app(\Illuminate\Contracts\Bus\Dispatcher::class)->dispatch(new \app\Jobs\OrderSentEventQueueJob($order_pay->order_id));
  47. }
  48. unset($orderJobs);
  49. $orderJobs = \app\common\models\OrderReceivedJob::where('status', 'waiting')->where('created_at', '>', Carbon::now()->subDays(7)->getTimestamp())->get();
  50. foreach ($orderJobs as $order_pay) {
  51. dump("修复{$order_pay->order_id}收货任务");
  52. app(\Illuminate\Contracts\Bus\Dispatcher::class)->dispatch(new \app\Jobs\OrderReceivedEventQueueJob($order_pay->order_id));
  53. }
  54. dump("开始完毕");
  55. }
  56. public function info()
  57. {
  58. $order = Order::find(176);
  59. dump($order->toArray());
  60. dump($order->orderPays->toArray());
  61. dump($order->orderOperationLogs->toArray());
  62. dump($order->hasOneRefundApply->toArray());
  63. }
  64. public function fixOrderAddress()
  65. {
  66. $orders = Order::where(
  67. [
  68. 'plugin_id' => 0,
  69. 'is_virtual' => 0,
  70. ]
  71. )->where('id', [534])->get();
  72. $orders->each(function ($order) {
  73. $memberAddress = $order->belongsToMember->defaultAddress;
  74. $result['address'] = implode(' ', [$memberAddress->province, $memberAddress->city, $memberAddress->district, $memberAddress->address]);
  75. $result['mobile'] = $memberAddress->mobile;
  76. $result['address'] = implode(' ', [$memberAddress->province, $memberAddress->city, $memberAddress->district, $memberAddress->address]);
  77. $result['realname'] = $memberAddress->username;
  78. $result['order_id'] = $order->id;
  79. list($result['province_id'], $result['city_id'], $result['district_id']) = Address::whereIn('areaname', [$memberAddress->province, $memberAddress->city, $memberAddress->district])->pluck('id');
  80. $orderAddress = new OrderAddress($result);
  81. $orderAddress->save();
  82. $order->dispatch_type_id = 1;
  83. $order->save();
  84. });
  85. }
  86. public function fixOrderPayId()
  87. {
  88. $r = Order::where('pay_time', '>', 0)->where(function ($query) {
  89. return $query->wherePayTypeId(0)->orWhere('order_pay_id', 0);
  90. })->get();
  91. $r->each(function ($order) {
  92. $orderPay = OrderPay::where(['order_ids' => '["' . $order->id . '"]'])->orderBy('id', 'desc')->first();
  93. if (isset($orderPay)) {
  94. $order->pay_type_id = $orderPay->pay_type_id;
  95. $order->order_pay_id = $orderPay->id;
  96. $order->save();
  97. }
  98. });
  99. echo 1;
  100. exit;
  101. }
  102. public function time()
  103. {
  104. Order::whereIn('status', [0, 1, 2, 3])->where('create_time', 0)->update(['create_time' => time()]);
  105. Order::whereIn('status', [1, 2, 3])->where('pay_time', 0)->update(['pay_time' => time()]);
  106. Order::whereIn('status', [2, 3])->where('send_time', 0)->update(['send_time' => time()]);
  107. Order::whereIn('status', [3])->where('finish_time', 0)->update(['finish_time' => time()]);
  108. Order::where('status', '-1')->where('cancel_time', 0)->update(['cancel_time' => time()]);
  109. echo 'ok';
  110. }
  111. public function deleteInvalidOrders()
  112. {
  113. Order::doesntHave('hasManyOrderGoods')->delete();
  114. Order::where('goods_price', '<=', 0)->delete();
  115. OrderGoods::where('goods_price', '<=', 0)->delete();
  116. echo 'ok';
  117. }
  118. public function payType()
  119. {
  120. Order::whereIn('status', [1, 2, 3])->where('pay_type_id', 0)->update(['pay_type_id' => 1]);
  121. echo 'ok';
  122. }
  123. public function dispatchType()
  124. {
  125. Order::whereIn('status', [2, 3])->where('dispatch_type_id', 0)->update(['dispatch_type_id' => 1]);
  126. echo 'ok';
  127. }
  128. public function index()
  129. {
  130. $payOrders = PayOrder::where('updated_at', '>', 0)->get();
  131. $payOrders->each(function ($payOrder) {
  132. $orderPay = OrderPay::wherePaySn($payOrder->out_order_no)->first();
  133. $orders = Order::whereIn('id', $orderPay->order_ids)->get();
  134. $orders->each(function ($order) use ($payOrder) {
  135. if ($order->pay_type_id == 0 && $order->status > 0) {
  136. if ($payOrder->third_type == '余额') {
  137. $order->pay_type_id = 3;
  138. } elseif ($payOrder->third_type == '支付宝') {
  139. $order->pay_type_id = 2;
  140. } elseif ($payOrder->third_type == '微信') {
  141. $order->pay_type_id = 1;
  142. }
  143. $order->save();
  144. }
  145. });
  146. });
  147. }
  148. public function t()
  149. {
  150. $a = PayOrder::where('trade_no', '4200000437201910259512165417')->first();
  151. $b = OrderPay::where('pay_sn', 'PN20191025210634uf')->first();
  152. $c = OrderOperationLog::where('order_id', 10044)->get();
  153. dd($a->toArray(), $b->toArray(), $b->orders->toArray(), $c->toArray());
  154. }
  155. /**
  156. * @throws \app\common\exceptions\AppException
  157. */
  158. public function payFail()
  159. {
  160. $order = Order::find(request('order_id'));
  161. $order->status = 0;
  162. $order->save();
  163. if (!$order) {
  164. throw new AppException('未找到订单');
  165. }
  166. $a = new OrderPayFailRepair($order);
  167. $a->handle();
  168. dump($a->message);
  169. }
  170. }