SharingReceiverHandleJob.php 3.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. <?php
  2. namespace app\jobs;
  3. use app\models\Order;
  4. use app\models\SharingReceiver;
  5. use app\modules\admin\models\WechatThirdForm;
  6. use app\utils\OrderUtil;
  7. use app\utils\Wechat\WechatMini;
  8. use yii\base\BaseObject;
  9. use yii\queue\JobInterface;
  10. //处理订单异常完成售后 但是未进行分账操作的问题
  11. class SharingReceiverHandleJob extends BaseObject implements JobInterface
  12. {
  13. public function execute($queue)
  14. {
  15. try {
  16. $share_receiver = SharingReceiver::find()
  17. ->where(['is_delete' => 0, 'is_pay' => 0])
  18. ->andWhere(['OR', ['LIKE', "order_no", 'ML'], ['LIKE', "order_no", 'AL'], ['LIKE', "order_no", 'SC']])
  19. ->groupBy('order_no')->select('order_no')->orderBy('created_at ASC')->asArray()->all();
  20. $share_receiver_order_no = [];
  21. foreach ($share_receiver as $receiver_item) {
  22. $orderNoHead = substr($receiver_item['order_no'], 0, 2);
  23. if (in_array($orderNoHead, ['ML', 'AL'])) {
  24. $order = \app\models\Order::findOne(['order_no' => $receiver_item['order_no'], 'is_sale' => 1, 'is_delete' => 0, 'pay_type' => \app\models\Order::PAY_TYPE_WECHAT]);
  25. if ($order) {
  26. array_push($share_receiver_order_no, $receiver_item['order_no']);
  27. }
  28. }
  29. if ($orderNoHead === "SC") {
  30. $scan_order = \app\plugins\scanCodePay\models\Order::findOne(['order_no' => $receiver_item['order_no']]);
  31. if ($scan_order) {
  32. array_push($share_receiver_order_no, $receiver_item['order_no']);
  33. }
  34. }
  35. }
  36. $orderUtil = new \app\utils\OrderUtil();
  37. foreach ($share_receiver_order_no as $item) {
  38. $orderNoHead = substr($item, 0, 2);
  39. if (in_array($orderNoHead, ['ML', 'AL'])) {
  40. $order = \app\models\Order::findOne(['order_no' => $item]);
  41. } else {
  42. $order = \app\plugins\scanCodePay\models\Order::findOne(['order_no' => $item]);
  43. }
  44. if ($order) {
  45. $store_id = $order->store_id;
  46. if($order->transaction_id){
  47. //检测微信是否收货
  48. $app = \app\utils\Wechat\WechatMini::getWechatConfig($order->store_id);
  49. $form = new \app\modules\admin\models\WechatThirdForm(['store_id' => $store_id]);
  50. $is_trade_managed = $form->is_trade_managed($app);
  51. $open = true;
  52. if($is_trade_managed){
  53. $result = $form->wxOrderStateIsConfirm($app, $order);
  54. debug_log(['是否收货' => $result, 'order_no' => $item], 'SharingReceiver.log');
  55. if(!$result){
  56. $open = false;
  57. }
  58. }
  59. if($open){
  60. try {
  61. $order_id_arr = $orderUtil->profitSharing($order, $store_id);
  62. } catch (\Exception $e) {
  63. debug_log('---- profitSharing END分账失败 ----' . $e->getMessage(), 'SharingReceiver.log');
  64. }
  65. }
  66. }
  67. }
  68. }
  69. debug_log('完毕', 'SharingReceiver.log');
  70. } catch (\Exception $e) {
  71. debug_log($e->getMessage(), 'SharingReceiver.log');
  72. }
  73. }
  74. }