Quellcode durchsuchen

fix: 门店档案 - 修复STS regionId提取 + 菜单name与路由匹配

skyline vor 4 Tagen
Ursprung
Commit
a18b06761f

+ 1 - 1
docs/database/create_shop_archive.sql

@@ -116,7 +116,7 @@ CREATE TABLE IF NOT EXISTS `t_shop_contract_attachment` (
 -- 4. 菜单数据(运营管理 → 门店档案管理)
 -- 4. 菜单数据(运营管理 → 门店档案管理)
 -- =====================================================
 -- =====================================================
 INSERT INTO t_menu (id, parent_id, menu_type, title, name, path, component, `rank`, show_link, show_parent)
 INSERT INTO t_menu (id, parent_id, menu_type, title, name, path, component, `rank`, show_link, show_parent)
-VALUES (306, 300, 0, '门店档案管理', 'ShopArchive', '/operation/shop-archive', '', 5, 1, 0);
+VALUES (306, 300, 0, '门店档案管理', 'ShopArchiveList', '/operation/shop-archive', '', 5, 1, 0);
 
 
 -- =====================================================
 -- =====================================================
 -- 5. 权限按钮(挂在 门店档案管理 下,menu_type=3)
 -- 5. 权限按钮(挂在 门店档案管理 下,menu_type=3)

+ 24 - 1
haha-service/src/main/java/com/haha/service/impl/OssServiceImpl.java

@@ -33,9 +33,13 @@ public class OssServiceImpl implements OssService {
         log.info("获取 OSS 上传凭证,dir: {}", dir);
         log.info("获取 OSS 上传凭证,dir: {}", dir);
 
 
         try {
         try {
+            // 从 endpoint 中提取 regionId(如 oss-cn-shenzhen.aliyuncs.com -> cn-shenzhen)
+            String endpoint = ossConfig.getEndpoint();
+            String regionId = extractRegionId(endpoint);
+
             // 构造 STS 请求
             // 构造 STS 请求
             DefaultProfile profile = DefaultProfile.getProfile(
             DefaultProfile profile = DefaultProfile.getProfile(
-                    "",
+                    regionId,
                     ossConfig.getAccessKeyId(),
                     ossConfig.getAccessKeyId(),
                     ossConfig.getAccessKeySecret()
                     ossConfig.getAccessKeySecret()
             );
             );
@@ -88,6 +92,25 @@ public class OssServiceImpl implements OssService {
         }
         }
     }
     }
 
 
+    /**
+     * 从 OSS endpoint 中提取 regionId
+     * 例如: fuyu-catering-xxx.oss-cn-shenzhen.oss-accesspoint.aliyuncs.com -> cn-shenzhen
+     */
+    private String extractRegionId(String endpoint) {
+        // 匹配 oss-cn-xxx 或 oss-xxx 模式
+        int idx = endpoint.indexOf(".oss-");
+        if (idx > 0) {
+            String regionPart = endpoint.substring(idx + 5); // 跳过 ".oss-"
+            int dotIdx = regionPart.indexOf('.');
+            if (dotIdx > 0) {
+                return regionPart.substring(0, dotIdx);
+            }
+            return regionPart;
+        }
+        // 默认 cn-hangzhou
+        return "cn-hangzhou";
+    }
+
     @Override
     @Override
     public void deleteByObjectKey(String objectKey) {
     public void deleteByObjectKey(String objectKey) {
         log.info("删除 OSS 文件,objectKey: {}", objectKey);
         log.info("删除 OSS 文件,objectKey: {}", objectKey);