Browse Source

fixed 后台菜单管理功能优化

fushengqian 9 months ago
parent
commit
a49d8b301b

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

@@ -20,17 +20,19 @@ public interface SourceService extends IService<TSource> {
      * 获取有效的菜单集合
      *
      * @param merchantId 商户ID
+     * @param status
      * @return
      */
-    List<TSource> getAvailableSources(Integer merchantId);
+    List<TSource> getAvailableSources(Integer merchantId, String status);
 
     /**
      * 获取菜单的属性结构
      *
      * @param merchantId 商户ID
+     * @param status 状态
      * @return
      */
-    List<TreeNode> getSourceTree(Integer merchantId);
+    List<TreeNode> getSourceTree(Integer merchantId, String status);
 
     /**
      * 根据菜单ID集合查询菜单列表信息
@@ -92,6 +94,8 @@ public interface SourceService extends IService<TSource> {
      * 删除菜单
      *
      * @param source
+     * @param status
+     * @return
      * */
-    void deleteSource(TSource source);
+    void deleteSource(TSource source, String status);
 }

+ 22 - 12
fuint-application/src/main/java/com/fuint/common/service/impl/SourceServiceImpl.java

@@ -32,25 +32,27 @@ public class SourceServiceImpl extends ServiceImpl<TSourceMapper, TSource> imple
     private TSourceMapper tSourceMapper;
 
     /**
-     * 获取有效的角色集合
+     * 获取有效的菜单集合
      *
      * @param merchantId 商户ID
+     * @param status
      * @return
      */
     @Override
-    public List<TSource> getAvailableSources(Integer merchantId) {
-        return tSourceMapper.findByStatus(merchantId, StatusEnum.ENABLED.getKey());
+    public List<TSource> getAvailableSources(Integer merchantId, String status) {
+        return tSourceMapper.findByStatus(merchantId, status);
     }
 
     /**
      * 获取菜单的属性结构
      *
-     * @param merchantId 商户IF
+     * @param merchantId 商户ID
+     * @param status 状态
      * @return
      */
     @Override
-    public List<TreeNode> getSourceTree(Integer merchantId) {
-        List<TSource> tSources = getAvailableSources(merchantId);
+    public List<TreeNode> getSourceTree(Integer merchantId, String status) {
+        List<TSource> tSources = getAvailableSources(merchantId, status);
         List<TreeNode> trees = new ArrayList<>();
         if (tSources != null && tSources.size() > 0) {
             TreeNode sourceTreeNode;
@@ -210,11 +212,16 @@ public class SourceServiceImpl extends ServiceImpl<TSourceMapper, TSource> imple
     @Transactional(rollbackFor = Exception.class)
     @OperationServiceLog(description = "修改后台菜单")
     public void editSource(TSource source) {
-        tSourceMapper.updateById(source);
+        // 禁用或删除菜单处理
+        if (source.getStatus().equals(StatusEnum.FORBIDDEN.getKey()) || source.getStatus().equals(StatusEnum.DISABLE.getKey())) {
+            deleteSource(source, source.getStatus());
+        } else {
+            tSourceMapper.updateById(source);
+        }
     }
 
     /**
-     * 删除菜单
+     * 删除或禁用菜单
      *
      * @param source
      * @return
@@ -222,9 +229,12 @@ public class SourceServiceImpl extends ServiceImpl<TSourceMapper, TSource> imple
     @Override
     @Transactional(rollbackFor = Exception.class)
     @OperationServiceLog(description = "删除后台菜单")
-    public void deleteSource(TSource source) {
-        source.setStatus(StatusEnum.DISABLE.getKey());
-        editSource(source);
+    public void deleteSource(TSource source, String status) {
+        if (StringUtil.isEmpty(status)) {
+            status = StatusEnum.DISABLE.getKey();
+        }
+        source.setStatus(status);
+        tSourceMapper.updateById(source);
 
         Map<String, Object> param = new HashMap<>();
         param.put("STATUS", StatusEnum.ENABLED.getKey());
@@ -232,7 +242,7 @@ public class SourceServiceImpl extends ServiceImpl<TSourceMapper, TSource> imple
         List<TSource> dataList = tSourceMapper.selectByMap(param);
         if (dataList != null && dataList.size() > 0) {
             for (TSource tSource : dataList) {
-                 deleteSource(tSource);
+                 deleteSource(tSource, status);
             }
         }
     }

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

@@ -4,6 +4,7 @@ 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;
@@ -54,7 +55,7 @@ public class BackendSourceController extends BaseController {
             return getFailureResult(1001, "请先登录");
         }
 
-        List<TreeNode> sources = sourceService.getSourceTree(accountInfo.getMerchantId());
+        List<TreeNode> sources = sourceService.getSourceTree(accountInfo.getMerchantId(), "");
         return getSuccessResult(sources);
     }
 
@@ -229,7 +230,7 @@ public class BackendSourceController extends BaseController {
         if (!tSource.getMerchantId().equals(accountInfo.getMerchantId()) && accountInfo.getMerchantId() > 0) {
             return getFailureResult(201, "抱歉,您没有删除的权限");
         }
-        sourceService.deleteSource(tSource);
+        sourceService.deleteSource(tSource, StatusEnum.DISABLE.getKey());
         return getSuccessResult(true);
     }
 
@@ -245,7 +246,7 @@ public class BackendSourceController extends BaseController {
             return getFailureResult(1001, "请先登录");
         }
 
-        List<TreeNode> sources = sourceService.getSourceTree(accountInfo.getMerchantId());
+        List<TreeNode> sources = sourceService.getSourceTree(accountInfo.getMerchantId(), "");
         List<TreeSelect> data = sourceService.buildMenuTreeSelect(sources);
 
         return getSuccessResult(data);

+ 4 - 1
fuint-repository/src/main/resources/mapper/TSourceMapper.xml

@@ -19,7 +19,10 @@
 
     <select id="findByStatus" resultType="com.fuint.repository.model.TSource">
         select * from t_source s
-        where s.status = #{status}
+        where s.status != 'D'
+        <if test="status != null and status != ''">
+            and s.status = #{status}
+        </if>
         <if test="merchantId != null and merchantId > 0">
             and (s.merchant_id = 0 OR s.merchant_id = #{merchantId})
         </if>