shish vor 5 Monaten
Ursprung
Commit
73f4df3b25
1 geänderte Dateien mit 77 neuen und 1 gelöschten Zeilen
  1. 77 1
      app-hd/controllers/ItemClassController.php

+ 77 - 1
app-hd/controllers/ItemClassController.php

@@ -179,7 +179,83 @@ class ItemClassController extends BaseController
 
     public function actionDelete()
     {
-        util::complete('没有删除成功');
+        $id = Yii::$app->request->get('id', 0);
+        $connection = Yii::$app->db;
+        $transaction = $connection->beginTransaction();
+        try {
+            $default = ItemClassClass::getByCondition(['mainId' => $this->mainId, 'isDefault' => 1], true);
+            $defaultClassId = $default->id ?? 0;
+            if (empty($defaultClassId)) {
+                util::fail('没有默认分类');
+            }
+            if ($defaultClassId == $id) {
+                util::fail('不能删除默认分类');
+            }
+            $class = ItemClassClass::getById($id, true);
+            if (empty($class)) {
+                util::fail('没有找到分类');
+            }
+            if($class->mainId!=$this->mainId){
+                util::fail('不是你的分类');
+            }
+            $originName = $class->name ?? '';
+            $class->delete();
+            $list = ProductClass::getAllByCondition(['classId' => $id], null, '*', null, true);
+            if (!empty($list)) {
+                foreach ($list as $item) {
+                    //如果有修改分类,则在多个订单表中同步修改,如需修改,多个地方要同步修改,请搜索关键词item_class_modify_sync
+                    $itemClassKey = 'item_class_modify_sync';
+                    Yii::$app->redis->executeCommand('LPUSH', [$itemClassKey, $item->id]);
+                }
+            }
+            ProductClass::updateByCondition(['classId' => $id], ['classId' => $defaultClassId]);
+
+            //在首店删除,则父级下所有直营和加盟店同步删除
+            $masterShop = $this->shop;
+            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;
+                    }
+                    $currentMainId = $shop->mainId ?? 0;
+                    $chainList = ItemClassClass::getAllByCondition(['mainId' => $currentMainId], null, '*', null, true);
+                    if (!empty($chainList)) {
+                        foreach ($chainList as $chain) {
+                            if ($chain->name == $originName) {
+                                $currentId = $chain->id;
+                                $chain->delete();
+                                $default = ItemClassClass::getByCondition(['mainId' => $currentMainId, 'isDefault' => 1], true);
+                                $defaultClassId = $default->id ?? 0;
+                                if (empty($defaultClassId)) {
+                                    util::fail('分店同步删除时,找到默认分类');
+                                }
+                                $list = ProductClass::getAllByCondition(['classId' => $currentId], null, '*', null, true);
+                                if (!empty($list)) {
+                                    //noticeUtil::push('有商家在删除分类', '15280215347');
+                                    foreach ($list as $item) {
+                                        //如果有修改分类,则在多个订单表中同步修改,如需修改,多个地方要同步修改,请搜索关键词item_class_modify_sync
+                                        $itemClassKey = 'item_class_modify_sync';
+                                        Yii::$app->redis->executeCommand('LPUSH', [$itemClassKey, $item->id]);
+                                    }
+                                }
+                                ProductClass::updateByCondition(['classId' => $currentId], ['classId' => $defaultClassId]);
+                            }
+                        }
+                    }
+                }
+            }
+
+            $transaction->commit();
+            util::complete('操作成功');
+        } catch (\Exception $e) {
+            $transaction->rollBack();
+            Yii::info("失败原因:" . $e->getMessage());
+            util::fail('删除失败');
+        }
     }
 
     //开单: 获取所有分类