diff --git a/MySQL_change.sql b/MySQL_change.sql index da88840..887a3de 100644 --- a/MySQL_change.sql +++ b/MySQL_change.sql @@ -217,3 +217,7 @@ ALTER TABLE `agent_products` ADD COLUMN `deposit_timeout` INT NOT NULL DEFAULT 0 COMMENT '订金支付超时时间,单位:分钟' AFTER `deposit`, ADD COLUMN `earnest` DECIMAL(20,2) NOT NULL DEFAULT '0' COMMENT '定金' AFTER `deposit_timeout`, ADD COLUMN `earnest_timeout` INT NOT NULL DEFAULT 0 COMMENT '定金支付超时时间,单位:分钟' AFTER `earnest`; + +# 10:58 2021/8/30 +ALTER TABLE `orders` + ADD COLUMN `timeout` TIMESTAMP NULL DEFAULT NULL COMMENT '订单超时时间,超过这个时间,订单将变为“已取消”' AFTER `verify_code`; diff --git a/app/Http/Controllers/Api/OrderController.php b/app/Http/Controllers/Api/OrderController.php index acc7fbd..6488299 100644 --- a/app/Http/Controllers/Api/OrderController.php +++ b/app/Http/Controllers/Api/OrderController.php @@ -6,8 +6,8 @@ use App\Common\PayType; use App\Http\Controllers\Controller; use App\Models\Agent; use App\Models\AgentProduct; +use App\Models\AgentSetting; use App\Models\Coupon; -use App\Models\Product; use App\Models\User; use App\Models\Order; use EasyWeChat\Factory; @@ -74,8 +74,8 @@ class OrderController extends Controller }, $v['pictures']); } - //10分钟内未付款订单提示付款 - if ($v['status'] == Status::UNPAID) { + //10分钟内未付款订单提示付款 TODO 此部分由定时 + /*if ($v['status'] == Status::UNPAID) { $minute = $time - strtotime($v['created_at']); //订单创建后10分钟内未付款则提示,否则取消订单 if ($minute < 600) { @@ -87,7 +87,7 @@ class OrderController extends Controller //TODO 加回库存,未考虑到几天/几个月后再打开订单列表页的情况,需要定时任务处理 Product::query()->find($v['product_id'])->increment('stock', $v['num']); } - } + }*/ } //超时订单设置为已取消 TODO 测试阶段暂时注释 @@ -154,6 +154,15 @@ class OrderController extends Controller //代理商产品表减库存 $ap->decrement('stock', $formData['num']); + if ($formData['pay_type'] == PayType::DEPOSIT_PAY && $ap->deposit_timeout > 0) { + $timeout = date('Y-m-d H:i:s', time() + $ap->deposit_timeout * 60); + } else if ($formData['pay_type'] == PayType::EARNEST_PAY && $ap->earnest_timeout > 0) { + $timeout = date('Y-m-d H:i:s', time() + $ap->earnest_timeout * 60); + } else { + $order_timeout = AgentSetting::val($this->agent_id, 'order_timeout') ?? 1440; + $timeout = date('Y-m-d H:i:s', time() + $ap->earnest_timeout * $order_timeout); + } + // 存入订单表 $order = Order::query()->create([ 'user_id' => $this->user_id, @@ -172,6 +181,7 @@ class OrderController extends Controller 'pay_type' => $formData['pay_type'], 'coupon_id' => join(',', $coupon_ids), 'guide_id' => $ap->guide_id, + 'timeout' => $timeout, ]); DB::commit();