From 8061172c77799e83893fef00848a48a0d148a0eb Mon Sep 17 00:00:00 2001
From: yanderong <307678080@qq.com>
Date: 星期二, 15 九月 2026 22:57:33 +0800
Subject: [PATCH] feat:bug修改

---
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysVisitorConfigServiceImpl.java |    5 ++
 ruoyi-system/src/main/java/com/ruoyi/system/vo/SysVisitorConfigVO.java                    |    3 +
 visitor-admin-ui/js/system-config.js                                                      |    4 +
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/tool/BaseDataApiUtil.java              |   15 +++++++
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CommonController.java           |    2 +
 ruoyi-admin/src/main/resources/sql/alter_t_visitor_config.sql                             |    1 
 ruoyi-system/src/main/java/com/ruoyi/system/domain/SysVisitorConfig.java                  |    5 ++
 ruoyi-system/src/main/java/com/ruoyi/system/dto/SysVisitorConfigSaveRequest.java          |    5 ++
 ruoyi-system/src/main/resources/mapper/system/SysVisitorConfigMapper.xml                  |    4 ++
 ruoyi-common/src/main/java/com/ruoyi/common/utils/file/FileUploadUtils.java               |   28 ++++++++++---
 visitor-admin-ui/pages/system-config.html                                                 |    4 ++
 11 files changed, 67 insertions(+), 9 deletions(-)

diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CommonController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CommonController.java
index 1b8a39e..95cba04 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CommonController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CommonController.java
@@ -96,6 +96,7 @@
         }
         catch (Exception e)
         {
+            log.error("上传文件图片报错:", e);
             return AjaxResult.error(e.getMessage());
         }
     }
@@ -133,6 +134,7 @@
         }
         catch (Exception e)
         {
+            log.error("上传文件图片报错:", e);
             return AjaxResult.error(e.getMessage());
         }
     }
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/tool/BaseDataApiUtil.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/tool/BaseDataApiUtil.java
index 2bf0ec6..0226927 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/tool/BaseDataApiUtil.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/tool/BaseDataApiUtil.java
@@ -5,6 +5,9 @@
 import com.ruoyi.common.core.domain.model.LoginUser;
 import com.ruoyi.common.exception.ServiceException;
 import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.common.utils.spring.SpringUtils;
+import com.ruoyi.system.service.ISysVisitorConfigService;
+import com.ruoyi.system.vo.SysVisitorConfigVO;
 import okhttp3.FormBody;
 import okhttp3.HttpUrl;
 import okhttp3.MediaType;
@@ -168,9 +171,19 @@
     }
 
     /**
-     * 目的:统一解析中台基础地址,优先使用系统属性,其次环境变量,最后使用默认地址。
+     * 目的:统一解析中台基础地址,优先使用数据库访客配置中的 centerPath,
+     * 其次使用系统属性和环境变量,最后使用默认地址。
      */
     public static String getDefaultBaseUrl() {
+        try {
+            ISysVisitorConfigService service = SpringUtils.getBean(ISysVisitorConfigService.class);
+            SysVisitorConfigVO config = service == null ? null : service.selectConfig();
+            if (config != null && isNotBlank(config.getCenterPath())) {
+                return config.getCenterPath().trim();
+            }
+        } catch (Exception ignored) {
+            // Spring 容器尚未初始化或配置查询失败时继续使用本地覆盖配置。
+        }
         String propertyUrl = System.getProperty(BASE_URL_PROPERTY);
         if (isNotBlank(propertyUrl)) {
             return propertyUrl.trim();
diff --git a/ruoyi-admin/src/main/resources/sql/alter_t_visitor_config.sql b/ruoyi-admin/src/main/resources/sql/alter_t_visitor_config.sql
new file mode 100644
index 0000000..97f0fd0
--- /dev/null
+++ b/ruoyi-admin/src/main/resources/sql/alter_t_visitor_config.sql
@@ -0,0 +1 @@
+alter table t_visitor_config  add column center_path  varchar(255) default null comment '中台地址';
\ No newline at end of file
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/file/FileUploadUtils.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/file/FileUploadUtils.java
index 5ff593f..9844895 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/file/FileUploadUtils.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/file/FileUploadUtils.java
@@ -3,6 +3,7 @@
 import java.io.File;
 import java.io.IOException;
 import java.nio.file.Paths;
+import java.nio.file.Files;
 import java.util.Objects;
 import org.apache.commons.io.FilenameUtils;
 import org.springframework.web.multipart.MultipartFile;
@@ -135,14 +136,27 @@
 
     public static final File getAbsoluteFile(String uploadDir, String fileName) throws IOException
     {
-        File desc = new File(uploadDir + File.separator + fileName);
-
-        if (!desc.exists())
+        if (StringUtils.isEmpty(uploadDir))
         {
-            if (!desc.getParentFile().exists())
-            {
-                desc.getParentFile().mkdirs();
-            }
+            throw new IOException("上传目录未配置");
+        }
+        File desc = new File(uploadDir, fileName);
+        File parent = desc.getParentFile();
+        if (parent == null)
+        {
+            throw new IOException("上传目录无效: " + uploadDir);
+        }
+        try
+        {
+            Files.createDirectories(parent.toPath());
+        }
+        catch (IOException e)
+        {
+            throw new IOException("无法创建上传目录: " + parent.getAbsolutePath(), e);
+        }
+        if (!parent.isDirectory() || !parent.canWrite())
+        {
+            throw new IOException("上传目录不可写: " + parent.getAbsolutePath());
         }
         return desc;
     }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysVisitorConfig.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysVisitorConfig.java
index b0c1e18..5549de5 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysVisitorConfig.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysVisitorConfig.java
@@ -62,4 +62,9 @@
 
     /** 删除标志:0正常 1删除 */
     private String delFlag;
+
+    /**
+     * 中台地址
+     */
+    private String centerPath;
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/dto/SysVisitorConfigSaveRequest.java b/ruoyi-system/src/main/java/com/ruoyi/system/dto/SysVisitorConfigSaveRequest.java
index b062caf..f4ce8ad 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/dto/SysVisitorConfigSaveRequest.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/dto/SysVisitorConfigSaveRequest.java
@@ -68,4 +68,9 @@
     /** 是否显示访客机管理入口 */
     @ApiModelProperty("是否显示访客机管理入口")
     private Boolean visitorMachineEntryEnabled;
+
+    /**
+     * 中台地址
+     */
+    private String centerPath;
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysVisitorConfigServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysVisitorConfigServiceImpl.java
index ec2bd80..1681bf0 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysVisitorConfigServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysVisitorConfigServiceImpl.java
@@ -152,6 +152,10 @@
         {
             config.setVisitorMachineEntryEnabled(request.getVisitorMachineEntryEnabled());
         }
+        if (StringUtils.isNotEmpty(request.getCenterPath()))
+        {
+            config.setCenterPath(request.getCenterPath());
+        }
     }
 
     private String joinPrintFields(List<String> printFields)
@@ -224,6 +228,7 @@
         vo.setServiceProvider(config.getServiceProvider());
         vo.setSupportPhone(config.getSupportPhone());
         vo.setVisitorMachineEntryEnabled(config.getVisitorMachineEntryEnabled());
+        vo.setCenterPath(config.getCenterPath());
         return vo;
     }
 
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/vo/SysVisitorConfigVO.java b/ruoyi-system/src/main/java/com/ruoyi/system/vo/SysVisitorConfigVO.java
index 641f14f..f42f3db 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/vo/SysVisitorConfigVO.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/vo/SysVisitorConfigVO.java
@@ -63,4 +63,7 @@
 
     @ApiModelProperty(value = "访客机管理入口开关", example = "true", allowableValues = "true,false")
     private Boolean visitorMachineEntryEnabled;
+
+    @ApiModelProperty(value = "中台地址", example = "http://192.168.1.146:18888")
+    private String centerPath;
 }
diff --git a/ruoyi-system/src/main/resources/mapper/system/SysVisitorConfigMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysVisitorConfigMapper.xml
index 9a03f30..08aedde 100644
--- a/ruoyi-system/src/main/resources/mapper/system/SysVisitorConfigMapper.xml
+++ b/ruoyi-system/src/main/resources/mapper/system/SysVisitorConfigMapper.xml
@@ -25,6 +25,7 @@
         <result property="createTime"                         column="create_time" />
         <result property="updateBy"                           column="update_by" />
         <result property="updateTime"                         column="update_time" />
+        <result property="centerPath"                         column="center_path" />
         <result property="remark"                             column="remark" />
     </resultMap>
 
@@ -49,6 +50,7 @@
                create_time,
                update_by,
                update_time,
+               center_path,
                remark
         from t_visitor_config
     </sql>
@@ -78,6 +80,7 @@
             visitor_machine_entry_enabled,
             create_by,
             create_time,
+            center_path,
             remark
         ) values (
             #{onsiteRegistrationEnabled},
@@ -96,6 +99,7 @@
             #{visitorMachineEntryEnabled},
             #{createBy},
             sysdate(),
+            #{centerPath},
             #{remark}
         )
     </insert>
diff --git a/visitor-admin-ui/js/system-config.js b/visitor-admin-ui/js/system-config.js
index c2fc21f..3594379 100644
--- a/visitor-admin-ui/js/system-config.js
+++ b/visitor-admin-ui/js/system-config.js
@@ -164,6 +164,7 @@
     document.getElementById("systemName").value = data.systemName || "自主访客登记管理平台";
     document.getElementById("serviceProvider").value = data.serviceProvider || "XXX";
     document.getElementById("supportPhone").value = data.supportPhone || "XXX";
+    document.getElementById("centerPath").value = data.centerPath || "";
 
     state.logoUrl = data.logoUrl || "";
     state.logoFile = null;
@@ -384,7 +385,8 @@
       logoUrl: state.logoUrl,
       serviceProvider: valueOf("serviceProvider"),
       supportPhone: valueOf("supportPhone"),
-      visitorMachineEntryEnabled: checkedOf("visitorMachineEntryEnabled")
+      visitorMachineEntryEnabled: checkedOf("visitorMachineEntryEnabled"),
+      centerPath: valueOf("centerPath")
     };
   }
 
diff --git a/visitor-admin-ui/pages/system-config.html b/visitor-admin-ui/pages/system-config.html
index 777ae29..2ce0e98 100644
--- a/visitor-admin-ui/pages/system-config.html
+++ b/visitor-admin-ui/pages/system-config.html
@@ -258,6 +258,10 @@
                     <input id="visitorMachineEntryEnabled" type="checkbox">
                     <span class="switch-control"></span>
                   </label>
+                  <label class="input-field entry-center-path">
+                    <span>中台地址</span>
+                    <input id="centerPath" type="text" placeholder="请输入中台地址(可为空)">
+                  </label>
                 </div>
               </div>
             </section>

--
Gitblit v1.7.1