diff --git a/MySQL_change.sql b/MySQL_change.sql
index 771a575..887a3de 100644
--- a/MySQL_change.sql
+++ b/MySQL_change.sql
@@ -213,7 +213,11 @@ ALTER TABLE `articles`
# 9:28 2021/8/30
ALTER TABLE `agent_products`
- ADD COLUMN `earnest` DECIMAL(20,2) NOT NULL DEFAULT '0' COMMENT '定金' AFTER `content`,
- ADD COLUMN `earnest_timeout` INT NOT NULL DEFAULT 0 COMMENT '定金支付超时时间,单位:分钟' AFTER `earnest`,
- ADD COLUMN `deposit` DECIMAL(20,2) NOT NULL DEFAULT 0 COMMENT '订金' AFTER `earnest_timeout`,
- ADD COLUMN `deposit_timeout` INT NOT NULL DEFAULT 0 COMMENT '订金支付超时时间,单位:分钟' AFTER `deposit`;
+ ADD COLUMN `deposit` DECIMAL(20,2) NOT NULL DEFAULT 0 COMMENT '订金' AFTER `content`,
+ 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/AdminAgent/Controllers/CategoryController.php b/app/AdminAgent/Controllers/CategoryController.php
index 1870ed6..ef56279 100644
--- a/app/AdminAgent/Controllers/CategoryController.php
+++ b/app/AdminAgent/Controllers/CategoryController.php
@@ -100,8 +100,11 @@ class CategoryController extends AdminController
//不允许编辑的字段
$form->ignore(['id', 'deleted_at']);
+ $form->hidden(['agent_id']);
$form->agent_id = Admin::user()->id;
- $form->sort = $form->sort ?? 255;
+ if (array_key_exists('sort', $form->input())) {
+ $form->sort = $form->sort ?? 255;
+ }
})->deleting(function (Form $form) {
//不允许修改非自己的数据
if (array_filter($form->model()->toArray(), fn($v) => $v['agent_id'] != Admin::user()->id)) {
diff --git a/app/AdminAgent/Controllers/OrderController.php b/app/AdminAgent/Controllers/OrderController.php
index b51a8d6..37e452f 100644
--- a/app/AdminAgent/Controllers/OrderController.php
+++ b/app/AdminAgent/Controllers/OrderController.php
@@ -52,6 +52,7 @@ class OrderController extends AdminController
$grid->column('status')
->using(OrderStatus::array())
->if(fn() => in_array($this->status, [OrderStatus::REFUNDING, OrderStatus::REFUNDED, OrderStatus::REFUSED_REFUND]))
+ ->display('退款详情 ')
->modal('查看退款详情', function (Grid\Displayers\Modal $modal) {
$modal->icon('');
if (!$this->refund_info) {
@@ -74,7 +75,6 @@ class OrderController extends AdminController
];
return Table::make($refund_info);
})
- ->display('退款详情 ') //放在modal下面可以去掉空格
->then(function (Grid\Column $column) {
if ($this->status == OrderStatus::REFUNDING) {
$column->append((new AuditRefund(null, 1))->setKey($this->id))->append(' ');
diff --git a/app/AdminAgent/Forms/Setting.php b/app/AdminAgent/Forms/Setting.php
index 3a4ff26..bba4d94 100644
--- a/app/AdminAgent/Forms/Setting.php
+++ b/app/AdminAgent/Forms/Setting.php
@@ -21,7 +21,7 @@ class Setting extends Form
AgentSetting::updateOrCreate(
['agent_id' => Admin::user()->id],
- ['setting' => json_encode($input), 'agent_id' => Admin::user()->id],
+ ['setting' => $input, 'agent_id' => Admin::user()->id],
);
return $this->response()->success('保存成功')->refresh();
@@ -32,8 +32,10 @@ class Setting extends Form
*/
public function form()
{
- $this->text('earnest')->required()->help('用户支付订金、定金、首付款的金额');
- $this->text('earnest_timeout')->required()->help('单位:分钟。当通过订金、定金、首付款支付时,用户超过该时间未支付将关闭订单,且定金不退');
+ $this->text('order_timeout')->required()->default(1440)
+ ->help('订单超时时间,单位:分钟。(订金、定金支付的超时时间将根据产品设定的超时时间)');
+ $this->radio('auto_shelves')->options(['否', '是'])->required()->default(1)
+ ->help('是否自动上架合作供应商的产品,如果选是,当合作供应商发布新产品之后,将自动上架供应商的产品');
}
/**
@@ -44,6 +46,6 @@ class Setting extends Form
public function default()
{
$setting = AgentSetting::where('agent_id', Admin::user()->id)->value('setting');
- return is_string($setting) ? json_decode($setting, true) : [];
+ return $setting ?? [];
}
}
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();
diff --git a/app/Http/Controllers/Api/TestController.php b/app/Http/Controllers/Api/TestController.php
index 9626a91..337df8d 100644
--- a/app/Http/Controllers/Api/TestController.php
+++ b/app/Http/Controllers/Api/TestController.php
@@ -16,6 +16,6 @@ class TestController
public function index()
{
//test
- return AgentSetting::val(1, 'earnest') ?? 198.88;
+ return AgentSetting::val(11, 'order_timeout') ?? 188;
}
}
diff --git a/app/Models/AgentSetting.php b/app/Models/AgentSetting.php
index 83cded3..1a9fffc 100644
--- a/app/Models/AgentSetting.php
+++ b/app/Models/AgentSetting.php
@@ -9,6 +9,7 @@ class AgentSetting extends BaseModel
use HasFactory;
protected $fillable = ['agent_id', 'setting'];
+ protected $casts = ['setting' => 'json'];
public function __construct(array $attributes = [])
{
@@ -16,9 +17,9 @@ class AgentSetting extends BaseModel
$this->timestamps = false;
}
- public function scopeVal($query, $agent_id, $key)
+ public static function val($agent_id, $key)
{
- $setting = json_decode($query->where('agent_id', $agent_id)->value('setting'), true);
+ $setting = static::query()->where('agent_id', $agent_id)->value('setting');
return $setting[$key] ?? null;
}
}
diff --git a/resources/lang/zh_CN/setting.php b/resources/lang/zh_CN/setting.php
index 19a7f60..3c2ab7f 100644
--- a/resources/lang/zh_CN/setting.php
+++ b/resources/lang/zh_CN/setting.php
@@ -5,8 +5,8 @@ return [
'setting' => '系统设置',
],
'fields' => [
- 'earnest' => '定金金额',
- 'earnest_timeout' => '定金支付超时时间',
+ 'order_timeout' => '订单超时时间',
+ 'auto_shelves' => '自动上架',
],
'options' => [
],