From bedff910eb2394a8ce68762a8f3a413d81187ac1 Mon Sep 17 00:00:00 2001
From: liujie <1793218484@qq.com>
Date: 星期五, 10 七月 2026 09:17:34 +0800
Subject: [PATCH] 后台

---
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysDeptController.java |   50 ++++++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 44 insertions(+), 6 deletions(-)

diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysDeptController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysDeptController.java
index a74355f..b718a50 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysDeptController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysDeptController.java
@@ -1,5 +1,6 @@
 package com.ruoyi.web.controller.system;
 
+import java.io.IOException;
 import java.util.List;
 import org.apache.commons.lang3.ArrayUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -14,6 +15,7 @@
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.config.RuoYiConfig;
 import com.ruoyi.common.constant.UserConstants;
 import com.ruoyi.common.core.controller.BaseController;
 import com.ruoyi.common.core.domain.AjaxResult;
@@ -21,6 +23,7 @@
 import com.ruoyi.common.enums.BusinessType;
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.system.service.ISysDeptService;
+import com.ruoyi.web.controller.tool.MiddlePlatformDataQuery;
 
 /**
  * 部门信息
@@ -34,13 +37,28 @@
     @Autowired
     private ISysDeptService deptService;
 
+    @Autowired
+    private RuoYiConfig ruoyiConfig;
+
     /**
      * 获取部门列表
      */
-    // @PreAuthorize("@ss.hasPermi('system:dept:list')")
+    @PreAuthorize("@ss.hasAnyPermi('system:dept:list,visitor:dept:view,visitor:employee:view')")
     @GetMapping("/list")
     public AjaxResult list(SysDept dept)
     {
+        // 集群版对接中台时,部门来自中台组织树;本地 /system/dept/list 只作为前端兼容入口。
+        if (ruoyiConfig.isConnectMiddlePlatform())
+        {
+            try
+            {
+                return AjaxResult.success(MiddlePlatformDataQuery.deptList(dept));
+            }
+            catch (IOException e)
+            {
+                return middlePlatformError(e);
+            }
+        }
         List<SysDept> depts = deptService.selectDeptList(dept);
         return AjaxResult.success(depts);
     }
@@ -48,7 +66,7 @@
     /**
      * 查询部门列表(排除节点)
      */
-    // @PreAuthorize("@ss.hasPermi('system:dept:list')")
+    @PreAuthorize("@ss.hasAnyPermi('system:dept:list,visitor:dept:view,visitor:employee:view')")
     @GetMapping("/list/exclude/{deptId}")
     public AjaxResult excludeChild(@PathVariable(value = "deptId", required = false) Long deptId)
     {
@@ -60,10 +78,22 @@
     /**
      * 根据部门编号获取详细信息
      */
-    // @PreAuthorize("@ss.hasPermi('system:dept:query')")
+    @PreAuthorize("@ss.hasAnyPermi('system:dept:query,visitor:dept:view,visitor:dept:edit')")
     @GetMapping(value = "/{deptId}")
     public AjaxResult getInfo(@PathVariable Long deptId)
     {
+        // 详情接口跟随中台组织数据源,编辑入口虽被隐藏,仍保证手动打开详情时数据一致。
+        if (ruoyiConfig.isConnectMiddlePlatform())
+        {
+            try
+            {
+                return AjaxResult.success(MiddlePlatformDataQuery.deptDetail(deptId));
+            }
+            catch (IOException e)
+            {
+                return middlePlatformError(e);
+            }
+        }
         deptService.checkDeptDataScope(deptId);
         return AjaxResult.success(deptService.selectDeptById(deptId));
     }
@@ -71,7 +101,7 @@
     /**
      * 新增部门
      */
-    // @PreAuthorize("@ss.hasPermi('system:dept:add')")
+    @PreAuthorize("@ss.hasAnyPermi('system:dept:add,visitor:dept:add')")
     @Log(title = "部门管理", businessType = BusinessType.INSERT)
     @PostMapping
     public AjaxResult add(@Validated @RequestBody SysDept dept)
@@ -87,7 +117,7 @@
     /**
      * 修改部门
      */
-    // @PreAuthorize("@ss.hasPermi('system:dept:edit')")
+    @PreAuthorize("@ss.hasAnyPermi('system:dept:edit,visitor:dept:edit')")
     @Log(title = "部门管理", businessType = BusinessType.UPDATE)
     @PutMapping
     public AjaxResult edit(@Validated @RequestBody SysDept dept)
@@ -113,7 +143,7 @@
     /**
      * 删除部门
      */
-    // @PreAuthorize("@ss.hasPermi('system:dept:remove')")
+    @PreAuthorize("@ss.hasAnyPermi('system:dept:remove,visitor:dept:remove')")
     @Log(title = "部门管理", businessType = BusinessType.DELETE)
     @DeleteMapping("/{deptId}")
     public AjaxResult remove(@PathVariable Long deptId)
@@ -129,4 +159,12 @@
         deptService.checkDeptDataScope(deptId);
         return AjaxResult.success(deptService.deleteDeptById(deptId));
     }
+
+    /**
+     * 目的:中台查询异常时返回统一业务错误,避免异常栈直接暴露给前端。
+     */
+    private AjaxResult middlePlatformError(IOException e)
+    {
+        return error("中台数据查询失败:" + e.getMessage());
+    }
 }

--
Gitblit v1.7.1