CancelPtOrderJob.php 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. <?php
  2. namespace app\jobs;
  3. use app\models\AccountLog;
  4. use app\models\PtActivity;
  5. use app\models\PtActivityOrder;
  6. use app\models\PtActivityOrderDetail;
  7. use app\modules\admin\models\pt\PtActivityOrderForm;
  8. use yii\base\BaseObject;
  9. use yii\queue\JobInterface;
  10. class CancelPtOrderJob extends BaseObject implements JobInterface
  11. {
  12. public $store_id;
  13. public $order_id;
  14. public function execute($queue)
  15. {
  16. try {
  17. $order_id = $this->order_id;
  18. //判断团长下单的人
  19. $pt_order = PtActivityOrder::find()->alias('o')
  20. ->where(['o.is_pay' => 1, 'is_pt_finish' => 0, 'o.pt_number' => 0, 'o.id' => $order_id])
  21. ->leftJoin(['od' => PtActivityOrderDetail::tableName()], 'o.id = od.order_id')
  22. ->select('o.id, od.activity_id, o.pay_time')->asArray()->one();
  23. if ($pt_order) {
  24. $activity = PtActivity::findOne($pt_order['activity_id']);
  25. // $split_time = ($activity->split_time * 60 * 60);
  26. //已经过期,需要失败处理
  27. // if ((time() - $split_time > $pt_order['pay_time']) || $activity->end_time < time()) {
  28. $pt_order_ = PtActivityOrder::find()->where(['is_pay' => 1])
  29. ->andWhere(['OR', ['id' => $pt_order['id']], ['pt_number' => $pt_order['id']]])
  30. ->select('id')->asArray()->all();
  31. foreach ($pt_order_ as $item) {
  32. $order = PtActivityOrder::findOne($item['id']);
  33. if ($order->head_integral > 0 && intval($order->head_integral_status) === 1) {
  34. $res = AccountLog::saveLog($order->user_id, floatval($order->head_integral), AccountLog::TYPE_INTEGRAL, AccountLog::LOG_TYPE_INCOME, 3, $order->id, "商城拼团失败,退还开团支付积分,订单号为:{$order->order_no}。");
  35. if (!$res) {
  36. debug_log('开团积分退款失败' . json_encode($res), 'cancel_pt.log');
  37. }
  38. $order->head_integral_status = 2;
  39. }
  40. $order->is_pt_finish = 2;
  41. $order->save();
  42. }
  43. $form = new PtActivityOrderForm();
  44. $result = $form->loserHandle($pt_order['id']);
  45. if ($result['code'] !== 0) {
  46. throw new \Exception($result['msg']);
  47. }
  48. // }
  49. }
  50. } catch (\Exception $e) {
  51. debug_log([
  52. 'code' => $e->getCode(),
  53. 'message' => $e->getMessage()
  54. ], 'cancel_pt.log');
  55. // return [
  56. // 'code' => 1,
  57. // 'msg' => $e->getMessage()
  58. // ];
  59. }
  60. }
  61. }