| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- <?php
- namespace app\jobs;
- use app\models\AccountLog;
- use app\models\PtActivity;
- use app\models\PtActivityOrder;
- use app\models\PtActivityOrderDetail;
- use app\modules\admin\models\pt\PtActivityOrderForm;
- use yii\base\BaseObject;
- use yii\queue\JobInterface;
- class CancelPtOrderJob extends BaseObject implements JobInterface
- {
- public $store_id;
- public $order_id;
- public function execute($queue)
- {
- try {
- $order_id = $this->order_id;
- //判断团长下单的人
- $pt_order = PtActivityOrder::find()->alias('o')
- ->where(['o.is_pay' => 1, 'is_pt_finish' => 0, 'o.pt_number' => 0, 'o.id' => $order_id])
- ->leftJoin(['od' => PtActivityOrderDetail::tableName()], 'o.id = od.order_id')
- ->select('o.id, od.activity_id, o.pay_time')->asArray()->one();
- if ($pt_order) {
- $activity = PtActivity::findOne($pt_order['activity_id']);
- // $split_time = ($activity->split_time * 60 * 60);
- //已经过期,需要失败处理
- // if ((time() - $split_time > $pt_order['pay_time']) || $activity->end_time < time()) {
- $pt_order_ = PtActivityOrder::find()->where(['is_pay' => 1])
- ->andWhere(['OR', ['id' => $pt_order['id']], ['pt_number' => $pt_order['id']]])
- ->select('id')->asArray()->all();
- foreach ($pt_order_ as $item) {
- $order = PtActivityOrder::findOne($item['id']);
- if ($order->head_integral > 0 && intval($order->head_integral_status) === 1) {
- $res = AccountLog::saveLog($order->user_id, floatval($order->head_integral), AccountLog::TYPE_INTEGRAL, AccountLog::LOG_TYPE_INCOME, 3, $order->id, "商城拼团失败,退还开团支付积分,订单号为:{$order->order_no}。");
- if (!$res) {
- debug_log('开团积分退款失败' . json_encode($res), 'cancel_pt.log');
- }
- $order->head_integral_status = 2;
- }
- $order->is_pt_finish = 2;
- $order->save();
- }
- $form = new PtActivityOrderForm();
- $result = $form->loserHandle($pt_order['id']);
- if ($result['code'] !== 0) {
- throw new \Exception($result['msg']);
- }
- // }
- }
- } catch (\Exception $e) {
- debug_log([
- 'code' => $e->getCode(),
- 'message' => $e->getMessage()
- ], 'cancel_pt.log');
- // return [
- // 'code' => 1,
- // 'msg' => $e->getMessage()
- // ];
- }
- }
- }
|