Bläddra i källkod

fixed 菜单删除递归问题

fushengqian 1 år sedan
förälder
incheckning
d08e65ac1d

+ 4 - 0
fuint-application/src/main/java/com/fuint/common/dto/SourceDto.java

@@ -4,6 +4,7 @@ import io.swagger.annotations.ApiModelProperty;
 import lombok.Getter;
 import lombok.Setter;
 import java.io.Serializable;
+import java.util.List;
 
 /**
  * 菜单信息实体
@@ -51,6 +52,9 @@ public class SourceDto implements Serializable {
     @ApiModelProperty("上级菜单")
     private long parentId;
 
+    @ApiModelProperty("子菜单")
+    private List<SourceDto> children;
+
     @ApiModelProperty("图标")
     private String icon;
 

+ 7 - 0
fuint-application/src/main/java/com/fuint/common/service/SourceService.java

@@ -84,4 +84,11 @@ public interface SourceService extends IService<TSource> {
      * @param source
      * */
     void editSource(TSource source);
+
+    /**
+     * 删除菜单
+     *
+     * @param source
+     * */
+    void deleteSource(TSource source);
 }

+ 24 - 1
fuint-application/src/main/java/com/fuint/common/service/impl/SourceServiceImpl.java

@@ -15,7 +15,6 @@ import com.fuint.utils.ArrayUtil;
 import com.fuint.utils.StringUtil;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
-
 import javax.annotation.Resource;
 import java.util.*;
 import java.util.stream.Collectors;
@@ -207,6 +206,30 @@ public class SourceServiceImpl extends ServiceImpl<TSourceMapper, TSource> imple
         tSourceMapper.updateById(source);
     }
 
+    /**
+     * 删除菜单
+     *
+     * @param source
+     * @return
+     * */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    @OperationServiceLog(description = "删除后台菜单")
+    public void deleteSource(TSource source) {
+        source.setStatus(StatusEnum.DISABLE.getKey());
+        editSource(source);
+
+        Map<String, Object> param = new HashMap<>();
+        param.put("STATUS", StatusEnum.ENABLED.getKey());
+        param.put("PARENT_ID", source.getSourceId());
+        List<TSource> dataList = tSourceMapper.selectByMap(param);
+        if (dataList != null && dataList.size() > 0) {
+            for (TSource tSource : dataList) {
+                 deleteSource(tSource);
+            }
+        }
+    }
+
     /**
      * 菜单去重
      *

+ 4 - 11
fuint-application/src/main/java/com/fuint/module/backendApi/controller/BackendSourceController.java

@@ -4,7 +4,6 @@ import com.fuint.common.domain.TreeNode;
 import com.fuint.common.domain.TreeSelect;
 import com.fuint.common.dto.AccountInfo;
 import com.fuint.common.dto.SourceDto;
-import com.fuint.common.enums.StatusEnum;
 import com.fuint.common.service.SourceService;
 import com.fuint.common.util.CommonUtil;
 import com.fuint.common.util.TokenUtil;
@@ -229,17 +228,11 @@ public class BackendSourceController extends BaseController {
         if (accountInfo == null) {
             return getFailureResult(1001, "请先登录");
         }
-        try {
-            TSource tSource = sSourceService.getById(sourceId);
-            if (!tSource.getMerchantId().equals(accountInfo.getMerchantId()) && accountInfo.getMerchantId() > 0) {
-                return getFailureResult(201, "抱歉,您没有删除的权限");
-            }
-            tSource.setStatus(StatusEnum.DISABLE.getKey());
-            sSourceService.editSource(tSource);
-        } catch(Exception e) {
-            return getFailureResult(201,"存在子菜单或已关联角色,不能删除.");
+        TSource tSource = sSourceService.getById(sourceId);
+        if (!tSource.getMerchantId().equals(accountInfo.getMerchantId()) && accountInfo.getMerchantId() > 0) {
+            return getFailureResult(201, "抱歉,您没有删除的权限");
         }
-
+        sSourceService.deleteSource(tSource);
         return getSuccessResult(true);
     }