| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- <?php
- namespace console\controllers;
- use biz\shop\classes\ShopClass;
- use bizGhs\order\classes\OrderClass;
- use common\components\noticeUtil;
- use Yii;
- use yii\console\Controller;
- class GhsOrderController extends Controller
- {
- // 脚本一:每天 03:20 执行,处理付款时间 7~10 天前订单
- public function actionAutoFinish()
- {
- ini_set('memory_limit', '2045M');
- set_time_limit(0);
- $minPayTime = date('Y-m-d H:i:s', strtotime('-12 day'));
- $maxPayTime = date('Y-m-d H:i:s', strtotime('-10 day'));
- $extraCondition = [
- 'payStatus' => 1,
- 'status' => ['in', [2, 3]],
- 'payTime' => ['between', [$minPayTime, $maxPayTime]],
- ];
- $ghsShops = ShopClass::getAllByCondition(['ptStyle' => 2, 'live' => 1], null, 'mainId');
- if (!empty($ghsShops)) {
- $mainIds = array_unique(array_filter(array_column($ghsShops, 'mainId')));
- if (!empty($mainIds)) {
- $params = ['staffId' => 0, 'staffName' => '系统', 'notice' => false]; // notice设置为 false,实现不发送发货通知
- foreach ($mainIds as $mainId) {
- $condition = array_merge(['mainId' => $mainId], $extraCondition);
- $query = OrderClass::getActiveRecord()->conditionQuery($condition)->orderBy('id asc');
- foreach ($query->batch(1000) as $orders) {
- if (empty($orders)) {
- continue;
- }
- foreach ($orders as $order) {
- $connection = Yii::$app->db;
- $transaction = $connection->beginTransaction();
- try {
- OrderClass::confirmReach($order, $params);
- $transaction->commit();
- // $payTime = $order->payTime ?? 0;
- // echo $order->id . " " . $payTime . " ok \n";
- } catch (\Exception $e) {
- $transaction->rollBack();
- $orderId = $order->id ?? 0;
- noticeUtil::push("订单自动完结失败 orderId={$orderId}, message={$e->getMessage()}", '15280215347');
- }
- }
- }
- }
- }
- }
- Yii::info('批发订单自动完结脚本成功执行');
- }
- // 脚本二:历史补偿,处理付款超过 10 天未完结订单
- public function actionAutoFinishHistory()
- {
- $maxPayTime = date('Y-m-d H:i:s', strtotime('-10 day'));
- $extraCondition = [
- 'payStatus' => 1,
- 'status' => ['in', [2, 3]],
- 'payTime<' => $maxPayTime,
- ];
- $ghsShops = ShopClass::getAllByCondition(['ptStyle' => 2, 'live' => 1], null, 'mainId');
- if (!empty($ghsShops)) {
- $mainIds = array_unique(array_filter(array_column($ghsShops, 'mainId')));
- if (!empty($mainIds)) {
- $params = ['staffId' => 0, 'staffName' => '系统', 'notice' => false]; // notice设置为 false,实现不发送发货通知
- foreach ($mainIds as $mainId) {
- $condition = array_merge(['mainId' => $mainId], $extraCondition);
- $query = OrderClass::getActiveRecord()->conditionQuery($condition)->orderBy('id asc');
- foreach ($query->batch(1000) as $orders) {
- if (empty($orders)) {
- continue;
- }
- foreach ($orders as $order) {
- $connection = Yii::$app->db;
- $transaction = $connection->beginTransaction();
- try {
- OrderClass::confirmReach($order, $params);
- $transaction->commit();
- $payTime = $order->payTime ?? 0;
- echo $order->id . " " . $payTime . " ok \n";
- } catch (\Exception $e) {
- $transaction->rollBack();
- $orderId = $order->id ?? 0;
- noticeUtil::push("自动完结失败,orderId={$orderId}, message={$e->getMessage()}", '15280215347');
- }
- }
- }
- }
- }
- }
- Yii::info('批发订单自动完结历史补偿脚本成功执行');
- }
- }
|