|
|
@@ -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('删除失败');
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
//开单: 获取所有分类
|