Răsfoiți Sursa

删除分类

shish 2 ani în urmă
părinte
comite
a239011acb

+ 30 - 2
app-ghs/controllers/CpClassController.php

@@ -53,6 +53,11 @@ class CpClassController extends BaseController
     //添加分类 ssh 20240104
     public function actionAdd()
     {
+        $masterShop = $this->shop;
+        if (isset($masterShop->default) == false || $masterShop->default == 0) {
+            util::fail('请在总店添加');
+        }
+
         $get = Yii::$app->request->get();
         $name = $get['name'] ?? '';
         if (empty($name)) {
@@ -66,6 +71,11 @@ class CpClassController extends BaseController
     //更新分类 ssh 20240104
     public function actionUpdate()
     {
+        $masterShop = $this->shop;
+        if (isset($masterShop->default) == false || $masterShop->default == 0) {
+            util::fail('请在总店修改');
+        }
+
         $get = Yii::$app->request->get();
         $id = $get['id'] ?? 0;
         $class = CpClassClass::getById($id, true);
@@ -86,7 +96,6 @@ class CpClassController extends BaseController
         $class->hide = $hide;
         $class->save();
 
-        $masterShop = $this->shop;
         if (isset($masterShop->default) && $masterShop->default == 1) {
             $sjId = $masterShop->sjId ?? 0;
             $shopList = ShopClass::getAllByCondition(['sjId' => $sjId], null, '*', null, true);
@@ -118,7 +127,26 @@ class CpClassController extends BaseController
 
     public function actionDel()
     {
-        util::fail('开发中');
+        $masterShop = $this->shop;
+        if (isset($masterShop->default) == false || $masterShop->default == 0) {
+            util::fail('请在总店操作');
+        }
+        $get = Yii::$app->request->get();
+        $id = $get['id'] ?? 0;
+        $class = CpClassClass::getById($id, true);
+        if ($class->mainId != $this->mainId) {
+            util::fail('不是你的分类');
+        }
+        $connection = Yii::$app->db;
+        $transaction = $connection->beginTransaction();
+        try {
+            CpClassClass::delClass($class, $this->shop);
+            $transaction->commit();
+            util::complete('操作成功');
+        } catch (\Exception $e) {
+            $transaction->rollBack();
+            util::fail('删除失败');
+        }
     }
 
 }

+ 57 - 3
biz-ghs/cp/classes/CpClassClass.php

@@ -4,6 +4,7 @@ namespace bizGhs\cp\classes;
 
 use bizGhs\base\classes\BaseClass;
 use bizGhs\shop\classes\ShopClass;
+use common\components\util;
 
 class CpClassClass extends BaseClass
 {
@@ -16,14 +17,14 @@ class CpClassClass extends BaseClass
         return $data;
     }
 
-    public static function addClass($data, $currentShop)
+    public static function addClass($data, $masterShop)
     {
         self::add($data);
-        if (isset($currentShop->default) && $currentShop->default == 1) {
+        if (isset($masterShop->default) && $masterShop->default == 1) {
             $shopList = ShopClass::getAllByCondition(['sjId' => $data['sjId']], null, '*', null, true);
             foreach ($shopList as $shop) {
                 $shopId = $shop->id ?? 0;
-                if ($shopId == $currentShop->id) {
+                if ($shopId == $masterShop->id) {
                     continue;
                 }
                 $chainMainId = $shop->mainId ?? 0;
@@ -34,4 +35,57 @@ class CpClassClass extends BaseClass
         }
     }
 
+    //删除分类 ssh 20240220
+    public static function delClass($class, $masterShop)
+    {
+        if ($class->isDefault == 1) {
+            util::fail('默认分类不能删除');
+        }
+        $classId = $class->id ?? 0;
+        $mainId = $class->mainId ?? 0;
+        $className = $class->name ?? '';
+        $defaultId = 0;
+        $classList = self::getAllByCondition(['mainId' => $mainId], null, '*');
+        if (!empty($classList)) {
+            foreach ($classList as $class) {
+                if ($class['isDefault'] == 1) {
+                    $defaultId = $class['id'] ?? 0;
+                }
+            }
+        }
+        if (empty($defaultId)) {
+            util::fail('没有找到默认分类');
+        }
+        CpClass::updateByCondition(['mainId' => $mainId, 'classId' => $classId], ['classId' => $defaultId]);
+        if (isset($masterShop->default) && $masterShop->default == 1) {
+            $sjId = $masterShop->sjId ?? 0;
+            $shopList = ShopClass::getAllByCondition(['sjId' => $sjId], null, '*', null, true);
+            foreach ($shopList as $shop) {
+                $shopId = $shop->id ?? 0;
+                if ($shopId == $masterShop->id) {
+                    continue;
+                }
+                $chainMainId = $shop->mainId ?? 0;
+                $chainClassList = self::getAllByCondition(['mainId' => $chainMainId], null, '*', null, true);
+                if (!empty($chainClassList)) {
+                    $chainDefaultId = 0;
+                    $chainDelId = 0;
+                    foreach ($chainClassList as $chainClass) {
+                        $currentId = $class['id'] ?? 0;
+                        if ($chainClass->isDefault == 1) {
+                            $chainDefaultId = $currentId;
+                        }
+                        if ($chainClass->name == $className) {
+                            $chainDelId = $currentId;
+                            $chainClass->delete();
+                        }
+                    }
+                    if (!empty($chainDelId) && !empty($chainDefaultId)) {
+                        CpClass::updateByCondition(['mainId' => $chainMainId, 'classId' => $chainDelId], ['classId' => $chainDefaultId]);
+                    }
+                }
+            }
+        }
+    }
+
 }