where(['mall_id' => $mall_id]) ->andWhere(['<=', 'expire_time', $time]) ->andWhere(['>', 'verifiable_times', 0]) ->andWhere(['>', 'open_time', 0]) ->andWhere(['>', 'pay_money', 0]) ->andWhere(['!=', 'order_status', SecondaryCardEnum::REFUNDED]) ->with('secondaryCard')->all(); foreach ($list as $item) { try { if ($item['open_type'] == SecondaryCardEnum::OPEN_TYPE_EXCHANGE) { $item->order_status = SecondaryCardEnum::EXPIRED; $item->save(); } else { if ($item['secondaryCard']['refund_type'] == 0) { $params['mall_id'] = $mall_id; $params['id'] = $item['id']; $params['user_id'] = $item['user_id']; SecondaryCardOrderService::orderRefund($params); } else { $item->order_status = SecondaryCardEnum::EXPIRED; $item->save(); } } $list = ReservationServiceOrder::lists([ 'where' => [ ['secondary_card_no' => $item['order_no']], ['service_status' => [ ReservationServiceEnum::RESERVE_ORDER_STATUS_NORMAL, ReservationServiceEnum::RESERVE_ORDER_STATUS_TALKING, ]] ] ], false); if (!empty($list)) { $ids = array_column($list, 'id'); $order_ids = array_column($list, 'order_id'); $order_list = Order::lists(['where' => [ ['id' => $order_ids] ] ] ); $order_nos = array_column($order_list, 'order_no'); if ($item['secondaryCard']['store_type'] == SecondaryCardEnum::STORE_TYPE_O2O) { StoreOrder::updateAll(['order_status' => OrderStatusEnum::REPEAL, 'status' => StatusEnum::DISABLED], ['order_no' => $order_nos]); } Order::updateAll(['order_status' => OrderStatusEnum::REPEAL,'status' => StatusEnum::DISABLED], ['id' => $order_ids]); ReservationServiceOrder::updateAll(['service_status' => ReservationServiceEnum::RESERVE_ORDER_STATUS_CLOSED], ['id' => $ids]); } } catch (\Exception $e) { echo '次卡号:' . $item['order_no'] . '退款失败' . $e->getMessage(); } } } return ExitCode::OK; } catch (\Exception $e) { \Yii::error($e->getMessage()); return false; } } public function actionPutDown() { try { $malls = Mall::getEnableMallList(); $mall_ids = array_column($malls, 'id'); foreach ($mall_ids as $mall_id) { $is_install = MallAddons::isInstall($mall_id, 'SecondaryCard'); if (!$is_install) continue; $list = SecondaryCard::find()->where(['mall_id' => $mall_id]) ->andWhere(['>', 'sell_time_start', 0]) ->andWhere(['<', 'sell_time_end', time()]) ->all(); foreach ($list as $item) { $item->is_on_sales = 0; $item->save(); } } return ExitCode::OK; } catch (\Exception $e) { \Yii::error($e->getMessage()); return false; } } }