From 50d76b14b2a8e090c58ab8005dde3ee00b4d8552 Mon Sep 17 00:00:00 2001 From: lewis <604446095@qq.com> Date: Sat, 28 Dec 2024 16:03:57 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=95=B4=E6=B4=BB=E5=8A=A8=E4=B8=93?= =?UTF-8?q?=E5=8C=BA=E5=95=86=E5=93=81=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/admin/logic/ActivityZoneLogic.php | 37 +++++++++++++++++++ .../logic/store_product/StoreProductLogic.php | 8 +++- 2 files changed, 44 insertions(+), 1 deletion(-) diff --git a/app/admin/logic/ActivityZoneLogic.php b/app/admin/logic/ActivityZoneLogic.php index 5f4eec89d..ea5ebbc49 100644 --- a/app/admin/logic/ActivityZoneLogic.php +++ b/app/admin/logic/ActivityZoneLogic.php @@ -5,6 +5,7 @@ namespace app\admin\logic; use app\common\model\ActivityZone; use app\common\logic\BaseLogic; +use app\common\model\ActivityZoneForm; use support\exception\BusinessException; use think\facade\Db; @@ -100,4 +101,40 @@ class ActivityZoneLogic extends BaseLogic return ActivityZone::findOrEmpty($params['id'])->toArray(); } + public function addProduct($product) + { + $activityFormId1 = ActivityZoneForm::whereRaw('FIND_IN_SET(:cate_id,cate_ids)', ['cate_id' => $product['two_cate_id']])->column('id'); + $activityFormId2 = ActivityZoneForm::whereRaw('FIND_IN_SET(:cate_id,cate_ids)', ['cate_id' => $product['cate_id']])->column('id'); + $activityFormIds = array_unique(array_merge($activityFormId1, $activityFormId2)); + foreach ($activityFormIds as $activityFormId) { + $activityZone = new ActivityZone(); + $activityZone->form_id = $activityFormId; + $activityZone->product_id = $product['id']; + $activityZone->save(); + } + } + + public function updateProduct($productId, $product) + { + $product['id'] = $productId; + $formIds = ActivityZone::where('product_id', $productId)->column('form_id'); + if (empty($formIds)) { + $this->addProduct($product); + return; + } + $forms = ActivityZoneForm::whereIn('id', $formIds)->select()->toArray(); + foreach ($forms as $form) { + $cateIds = explode(',', $form['cate_ids']); + if (!in_array($product['two_cate_id'], $cateIds) && !in_array($product['cate_id'], $cateIds)) { + ActivityZone::where('product_id', $productId)->where('form_id', $form['id'])->update(['delete_time' => time()]); + } + $this->addProduct($product); + } + } + + public function deleteProduct($productId) + { + ActivityZone::where('product_id', $productId)->update(['delete_time' => time()]); + } + } \ No newline at end of file diff --git a/app/admin/logic/store_product/StoreProductLogic.php b/app/admin/logic/store_product/StoreProductLogic.php index fcf2663d6..9f4495c53 100644 --- a/app/admin/logic/store_product/StoreProductLogic.php +++ b/app/admin/logic/store_product/StoreProductLogic.php @@ -2,6 +2,7 @@ namespace app\admin\logic\store_product; +use app\admin\logic\ActivityZoneLogic; use app\admin\logic\warehouse_product\WarehouseProductLogic; use app\common\model\store_product\StoreProduct; use app\common\logic\BaseLogic; @@ -85,6 +86,8 @@ class StoreProductLogic extends BaseLogic } $data['rose']=$rose; $res = StoreProduct::create($data); + // 添加商品到活动专区 + (new ActivityZoneLogic())->addProduct($res); StoreProductAttrValue::create([ "bar_code" => $params["bar_code"] ?? '', "image" => $params["image"] ?? '', @@ -235,6 +238,8 @@ class StoreProductLogic extends BaseLogic } $data['rose']=$rose; StoreProduct::update($data, ['id' => $params['id']]); + // 修改活动专区商品 + (new ActivityZoneLogic())->updateProduct($params['id'], $data); // $dealCate = self::dealChangeCate($params['cate_id']); //修改 @@ -250,7 +255,6 @@ class StoreProductLogic extends BaseLogic 'cate_id' => $params['cate_id'], 'top_cate_id' => $top_cate_id, 'two_cate_id' => $two_cate_id, - 'cate_id' => $params['cate_id'], 'bar_code' => $params['bar_code'], 'purchase' => $params['purchase'], 'rose' => $rose, @@ -279,6 +283,8 @@ class StoreProductLogic extends BaseLogic public static function delete(array $params): bool { $res = StoreProduct::destroy($params['id']); + // 删除活动专区商品 + (new ActivityZoneLogic())->deleteProduct($params['id']); StoreBranchProduct::where('product_id', $params['id'])->update(['delete_time' => time()]); return $res; }