From 1db326673568e66e504d50863b99c885544e2805 Mon Sep 17 00:00:00 2001 From: liapples Date: Sat, 9 Oct 2021 15:13:19 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=A7=84=E6=A0=BC=E5=8F=98?= =?UTF-8?q?=E4=B8=BA=E6=9C=AA=E5=AE=A1=E6=A0=B8=E7=8A=B6=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/ProductController.php | 30 +++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) diff --git a/app/AdminSupplier/Controllers/ProductController.php b/app/AdminSupplier/Controllers/ProductController.php index d647958..8fac9d7 100644 --- a/app/AdminSupplier/Controllers/ProductController.php +++ b/app/AdminSupplier/Controllers/ProductController.php @@ -8,6 +8,7 @@ use App\Models\AgentProduct; use App\Models\AgentProductItem; use App\Models\Category; use App\Models\DiyForm; +use App\Models\Special; use Dcat\Admin\Admin; use Dcat\Admin\Form; use Dcat\Admin\Form\NestedForm; @@ -305,8 +306,11 @@ class ProductController extends AdminController $form->hidden(['status', 'supplier_id']); //表单没有的字段,必须加上这句才能重置值 $form->supplier_id = Admin::user()->id; $form->status = ProductStatus::UNAUDITED; - } else if ($form->isEditing() && in_array($form->model()->status, $user_status) && in_array($form->status, $user_status)) { //如果原来是下架或上架状态才允许修改 - $form->status = $form->status == ProductStatus::ON_SALE ? ProductStatus::ON_SALE : ProductStatus::SOLD_OUT; + } else if ($form->isEditing()) { + //如果原来是下架或上架状态才允许修改 + if (in_array($form->model()->status, $user_status) && in_array($form->status, $user_status)) { + $form->status = $form->status == ProductStatus::ON_SALE ? ProductStatus::ON_SALE : ProductStatus::SOLD_OUT; + } //因extends是数组,具有一定的特殊性,不能直接用$form->saved方法中的wasChanged判断是否修改,所以只能在这里做特殊处理 if (!is_null($form->extends)) { @@ -321,6 +325,28 @@ class ProductController extends AdminController $form->status = ProductStatus::UNAUDITED; } } + + //删除规格不处理,新增规格、修改规格价格或日期,状态都要变为已审核 + $new_spec = array_filter($form->spec, fn($v) => $v['_remove_'] === null); + //判断是否新增规格 + if (array_filter($new_spec, fn($v) => $v['id'] === null)) { + $form->status = ProductStatus::UNAUDITED; + } + //判断是否修改价格 + else if ($new_spec) { + // $item是旧数据,$form->spec是新修改的数据 + foreach ($form->model()->spec as $item) { + //删除的规格不处理 + if (!isset($new_spec[$item->id])) { + continue; + } + //修改价格或日期的,设置为未审核,退出循环 + if ($item->price != $new_spec[$item->id]['price'] || $item->date != $new_spec[$item->id]['date']) { + $form->status = ProductStatus::UNAUDITED; + break; + } + } + } } else { $form->deleteInput('status'); }