Lin Qilong пре 1 месец
родитељ
комит
6b514f26f9

+ 96 - 34
src/main/java/cn/com/goldenwater/domain/PtService.java

@@ -1,7 +1,6 @@
 package cn.com.goldenwater.domain;
 
 import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.fasterxml.jackson.annotation.JsonFormat;
@@ -11,7 +10,6 @@ import lombok.NoArgsConstructor;
 
 import java.io.Serializable;
 import java.util.Date;
-import java.util.List;
 
 /**
  * entity:PtService
@@ -27,75 +25,139 @@ public class PtService implements Serializable {
 
     @TableId(value = "SRV_ID", type = IdType.ASSIGN_UUID)
     private String srvId;
-    /** 目录ID */
+    /**
+     * 目录ID
+     */
     private String cateCode;
-    /** 服务名称 */
+    /**
+     * 服务名称
+     */
     private String name;
-    /** 服务详情 */
+    /**
+     * 服务详情
+     */
     private String intro;
-    /** 服务来源 */
+    /**
+     * 服务来源
+     */
     private String serviceSource;
-    /** 服务所属业务部门 */
+    /**
+     * 服务所属业务部门
+     */
     private String serviceDept;
-    /** 业务部门管理人 */
+    /**
+     * 业务部门管理人
+     */
     private String manageName;
-    /** 服务开发单位 */
+    /**
+     * 服务开发单位
+     */
     private String developUnit;
-    /** 服务开发单位联系方式 */
+    /**
+     * 服务开发单位联系方式
+     */
     private String developContacter;
-    /** 服务运维单位 */
+    /**
+     * 服务运维单位
+     */
     private String maintainUnit;
-    /** 服务运维单位联系人 */
+    /**
+     * 服务运维单位联系人
+     */
     private String maintainContacer;
-    /** 更新周期 */
+    /**
+     * 更新周期
+     */
     private String upCycl;
-    /** 开放条件 */
+    /**
+     * 开放条件
+     */
     private String openCndtn;
-    /** 所属区县 */
+    /**
+     * 所属区县
+     */
     private String adName;
-    /** 数据领域 */
+    /**
+     * 数据领域
+     */
     private String dataField;
-    /** 数据范围 */
+    /**
+     * 数据范围
+     */
     private String dataRange;
-    /** 创建人ID */
+    /**
+     * 创建人ID
+     */
     private String userId;
-    /** 接口状态 */
+    /**
+     * 接口状态
+     */
     private String status;
-    /** 备注 */
+    /**
+     * 备注
+     */
     private String note;
 
-    /** 后台请求调用的方式 */
+    /**
+     * 后台请求调用的方式
+     */
     private String type;
-    /** 请求地址 */
+    /**
+     * 请求地址
+     */
     private String url;
-    /** 请求方式 */
+    /**
+     * 请求方式
+     */
     private String rqtype;
-    /** 返回类型 */
+    /**
+     * 返回类型
+     */
     private String rptype;
-    /** 返回信息 */
+    /**
+     * 返回信息
+     */
     private String rpcontent;
-    /** 代理路径 */
+    /**
+     * 代理路径
+     */
     private String proxyPath;
 
-    /** 申请量 */
+    /**
+     * 申请量
+     */
     private Integer cnt;
-    /** 访问量 */
+    /**
+     * 访问量
+     */
     private Integer viewNum;
-    /** 申请量 */
+    /**
+     * 申请量
+     */
     private Integer applyNum;
-    /** 数据量 */
+    /**
+     * 数据量
+     */
     private Integer dataNum;
 
-    /** 录入时间 */
+    /**
+     * 录入时间
+     */
     @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
     private Date tm;
-    /** 更新时间 */
+    /**
+     * 更新时间
+     */
     @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
     private Date uptm;
-    /** 发布时间 */
+    /**
+     * 发布时间
+     */
     @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
     private Date rlstm;
-    /** 接口发布时间 */
+    /**
+     * 接口发布时间
+     */
     @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
     private Date releaseTime;
 }

+ 0 - 7
src/main/java/cn/com/goldenwater/mapper/MdModelInfoMapper.java

@@ -1,7 +0,0 @@
-package cn.com.goldenwater.mapper;
-
-import cn.com.goldenwater.domain.MdModelInfo;
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-
-public interface MdModelInfoMapper extends BaseMapper<MdModelInfo> {
-}

+ 1 - 2
src/main/java/cn/com/goldenwater/mapper/PermissionMapper.java

@@ -5,7 +5,6 @@ import org.apache.ibatis.annotations.Param;
 public interface PermissionMapper {
 
     Integer findPermission(@Param("thirdPartyId") String thirdPartyId,
-                           @Param("path") String path,
-                           @Param("method") String method);
+                           @Param("path") String path);
 
 }

+ 11 - 34
src/main/java/cn/com/goldenwater/repository/JdbcRouteDefinitionRepository.java

@@ -11,7 +11,6 @@ import org.springframework.cloud.gateway.handler.predicate.PredicateDefinition;
 import org.springframework.cloud.gateway.route.RouteDefinition;
 import org.springframework.cloud.gateway.route.RouteDefinitionRepository;
 import org.springframework.cloud.gateway.support.NotFoundException;
-import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Component;
 import reactor.core.publisher.Flux;
 import reactor.core.publisher.Mono;
@@ -26,22 +25,15 @@ import java.util.Map;
 public class JdbcRouteDefinitionRepository implements RouteDefinitionRepository {
 
     @Autowired
-    @Lazy
     private GatewayRoutesService gatewayRoutesService;
 
     @Override
     public Flux<RouteDefinition> getRouteDefinitions() {
         try {
-            log.info("开始从数据库加载路由...");
             QueryWrapper<GatewayRoutes> queryWrapper = new QueryWrapper<>();
             queryWrapper.eq("status", "0");
             List<GatewayRoutes> gatewayRoutesList = gatewayRoutesService.list(queryWrapper);
-            log.info("从数据库加载到 {} 条路由", gatewayRoutesList.size());
-            
-            for (GatewayRoutes routes : gatewayRoutesList) {
-                log.info("路由详情:ID={}, URI={}, Predicates={}, Filters={}", 
-                        routes.getId(), routes.getUri(), routes.getPredicates(), routes.getFilters());
-            }
+            log.info("Loading {} routes from database", gatewayRoutesList.size());
 
             Map<String, RouteDefinition> routes = new LinkedHashMap<>();
             for (GatewayRoutes gatewayRoutes : gatewayRoutesList) {
@@ -79,31 +71,16 @@ public class JdbcRouteDefinitionRepository implements RouteDefinitionRepository
     public Mono<Void> save(Mono<RouteDefinition> route) {
         return route.flatMap(r -> {
             try {
-                log.info("尝试保存路由定义: ID={}, URI={}, Predicates={}, Filters={}",
-                        r.getId(), r.getUri(), r.getPredicates(), r.getFilters());
-                GatewayRoutes gatewayRoutes = new GatewayRoutes();
-                gatewayRoutes.setId(r.getId());
-                gatewayRoutes.setUri(r.getUri().toString());
-                gatewayRoutes.setPredicates(JsonUtils.objectToJson(r.getPredicates()));
-                gatewayRoutes.setFilters(JsonUtils.objectToJson(r.getFilters()));
-                gatewayRoutes.setStatus("0"); // 默认设置为启用状态
-                
-//                // 检查路由是否已存在
-//                if (gatewayRoutesService.getById(r.getId()) != null) {
-//                    // 路由已存在,执行更新操作
-//                    log.info("路由定义已存在,执行更新操作: ID={}", r.getId());
-//                    gatewayRoutesService.updateById(gatewayRoutes);
-//                } else {
-//                    // 路由不存在,执行插入操作
-//                    log.info("路由定义不存在,执行插入操作: ID={}", r.getId());
-//                    gatewayRoutesService.save(gatewayRoutes);
-//                }
-                
-                log.info("路由定义保存成功: ID={}", r.getId());
+//                GatewayRoutes gatewayRoutes = new GatewayRoutes();
+//                gatewayRoutes.setId(r.getId());
+//                gatewayRoutes.setUri(r.getUri().toString());
+//                gatewayRoutes.setPredicates(JsonUtils.objectToJson(r.getPredicates()));
+//                gatewayRoutes.setFilters(JsonUtils.objectToJson(r.getFilters()));
+//                gatewayRoutesService.save(gatewayRoutes);
                 return Mono.empty();
             } catch (Exception e) {
-                log.error("RouteDefinition save error: " + r.getId(), e);
-                return Mono.defer(() -> Mono.error(e));
+                log.error("RouteDefinition save error: " + r.getId());
+                return Mono.defer(() -> Mono.error(new NotFoundException("RouteDefinition save error: " + r.getId())));
             }
         });
     }
@@ -112,7 +89,7 @@ public class JdbcRouteDefinitionRepository implements RouteDefinitionRepository
     public Mono<Void> delete(Mono<String> routeId) {
         return routeId.flatMap(id -> {
             try {
-                gatewayRoutesService.removeById(id);
+//                gatewayRoutesService.removeById(id);
                 return Mono.empty();
             } catch (Exception e) {
                 log.error("删除路由失败", e);
@@ -120,4 +97,4 @@ public class JdbcRouteDefinitionRepository implements RouteDefinitionRepository
             }
         });
     }
-}
+}

+ 0 - 7
src/main/java/cn/com/goldenwater/service/MdModelInfoService.java

@@ -1,7 +0,0 @@
-package cn.com.goldenwater.service;
-
-import cn.com.goldenwater.domain.MdModelInfo;
-import com.baomidou.mybatisplus.extension.service.IService;
-
-public interface MdModelInfoService extends IService<MdModelInfo> {
-}

+ 42 - 7
src/main/java/cn/com/goldenwater/service/impl/AuthServiceImpl.java

@@ -6,12 +6,14 @@ import cn.com.goldenwater.domain.PtService;
 import cn.com.goldenwater.service.AuthService;
 import cn.com.goldenwater.service.PtServiceService;
 import io.jsonwebtoken.JwtException;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import reactor.core.publisher.Mono;
 
 import java.util.Optional;
 
+@Slf4j
 @Service
 public class AuthServiceImpl implements AuthService {
 
@@ -24,10 +26,43 @@ public class AuthServiceImpl implements AuthService {
 
     @Override
     public boolean isPublicPath(String path) {
-        String gatewayUrl = "/" + path.split("/")[1];
-        path = path.replaceFirst(gatewayUrl, "");
-        PtService ptService = ptServiceService.getServiceByUrl(path);
-        return Optional.ofNullable(ptService).map(PtService::getOpenCndtn).map("2"::equals).orElse(false);
+        try {
+            log.debug("[AuthServiceImpl.isPublicPath] 开始检查路径是否为公开路径:{}", path);
+
+            if (path == null || path.isEmpty()) {
+                log.warn("[AuthServiceImpl.isPublicPath] 路径为空,返回 false");
+                return false;
+            }
+
+            String[] pathSegments = path.split("/");
+            if (pathSegments.length < 2) {
+                log.warn("[AuthServiceImpl.isPublicPath] 路径格式不正确,无法提取 gatewayUrl: {}", path);
+                return false;
+            }
+
+            String gatewayUrl = "/" + pathSegments[1];
+            String servicePath = path.replaceFirst(gatewayUrl, "");
+
+            log.debug("[AuthServiceImpl.isPublicPath] gatewayUrl: {}, servicePath: {}", gatewayUrl, servicePath);
+
+            PtService ptService = ptServiceService.getServiceByUrl(servicePath);
+
+            if (ptService == null) {
+                log.debug("[AuthServiceImpl.isPublicPath] 未找到对应的服务配置,返回 false");
+                return false;
+            }
+
+            String openCndtn = ptService.getOpenCndtn();
+            boolean isPublic = "2".equals(openCndtn);
+
+            log.debug("[AuthServiceImpl.isPublicPath] 服务开放条件:{}, 是否公开:{}", openCndtn, isPublic);
+
+            return Optional.ofNullable(ptService).map(PtService::getOpenCndtn).map("2"::equals).orElse(false);
+        } catch (Exception e) {
+            log.error("[AuthServiceImpl.isPublicPath] 检查公开路径时发生异常:path={}, error={}", path, e.getMessage(), e);
+            // 发生异常时默认返回 false,需要认证
+            return false;
+        }
     }
 
     @Override
@@ -37,13 +72,13 @@ public class AuthServiceImpl implements AuthService {
             if (cachedObj == null) {
                 return Mono.just(false);
             }
-            
+
             // 尝试将缓存对象转换为PtApp
             PtApp ptApp = convertToPtApp(cachedObj);
             if (ptApp == null) {
                 return Mono.just(false);
             }
-            
+
             if (ptApp.getAppId().equals(appId)) {
                 return Mono.just(true);
             }
@@ -53,7 +88,7 @@ public class AuthServiceImpl implements AuthService {
             return Mono.just(false);
         }
     }
-    
+
     private PtApp convertToPtApp(Object obj) {
         if (obj instanceof PtApp) {
             return (PtApp) obj;

+ 0 - 11
src/main/java/cn/com/goldenwater/service/impl/MdModelInfoServiceImpl.java

@@ -1,11 +0,0 @@
-package cn.com.goldenwater.service.impl;
-
-import cn.com.goldenwater.domain.MdModelInfo;
-import cn.com.goldenwater.mapper.MdModelInfoMapper;
-import cn.com.goldenwater.service.MdModelInfoService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import org.springframework.stereotype.Service;
-
-@Service
-public class MdModelInfoServiceImpl extends ServiceImpl<MdModelInfoMapper, MdModelInfo> implements MdModelInfoService {
-}

+ 2 - 2
src/main/java/cn/com/goldenwater/service/impl/PermissionServiceImpl.java

@@ -21,14 +21,14 @@ public class PermissionServiceImpl implements PermissionService {
     @Override
     public Mono<Boolean> checkPermission(String thirdPartyId, String path, String method) {
         // 从缓存中获取权限
-        String cacheKey = "permission:" + thirdPartyId + ":" + path + ":" + method;
+        String cacheKey = "permission:" + thirdPartyId + ":" + path;
         Boolean cachedResult = redisCache.getCacheObject(cacheKey);
         if (cachedResult != null) {
             return Mono.just(cachedResult);
         }
 
         // 查询数据库
-        Integer permission = permissionMapper.findPermission(thirdPartyId, path, method);
+        Integer permission = permissionMapper.findPermission(thirdPartyId, path);
         if (permission != null && permission > 0) {
             redisCache.setCacheObject(cacheKey, true, 5, TimeUnit.MINUTES);
             return Mono.just(true);

+ 3 - 14
src/main/java/cn/com/goldenwater/service/impl/PtServiceAlarmServiceImpl.java

@@ -1,17 +1,14 @@
 package cn.com.goldenwater.service.impl;
 
 import cn.com.goldenwater.domain.GatewayRoutes;
-import cn.com.goldenwater.domain.MdModelInfo;
 import cn.com.goldenwater.domain.PtServiceAlarm;
 import cn.com.goldenwater.domain.PtServiceLog;
-import cn.com.goldenwater.mapper.GatewayRoutesMapper;
 import cn.com.goldenwater.mapper.PtServiceAlarmMapper;
-import cn.com.goldenwater.service.MdModelInfoService;
+import cn.com.goldenwater.service.GatewayRoutesService;
 import cn.com.goldenwater.service.PtServiceAlarmService;
 import cn.com.goldenwater.utils.JsonUtils;
 import com.alibaba.fastjson2.JSONObject;
 import com.alibaba.fastjson2.JSONPath;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -31,10 +28,7 @@ import java.util.Optional;
 public class PtServiceAlarmServiceImpl extends ServiceImpl<PtServiceAlarmMapper, PtServiceAlarm> implements PtServiceAlarmService {
 
     @Autowired
-    private GatewayRoutesMapper gatewayRoutesMapper;
-
-    @Autowired
-    private MdModelInfoService mdModelInfoService;
+    private GatewayRoutesService gatewayRoutesService;
 
     @Override
     public boolean save(PtServiceAlarm ptServiceAlarm) {
@@ -50,9 +44,6 @@ public class PtServiceAlarmServiceImpl extends ServiceImpl<PtServiceAlarmMapper,
         ptAlarmMessage.setServiceName(serviceLog.getServiceName());
         ptAlarmMessage.setAlertTime(serviceLog.getTm());
 
-        MdModelInfo mdModelInfo = mdModelInfoService.getById(serviceLog.getMdId());
-        Optional.ofNullable(mdModelInfo).map(MdModelInfo::getName).ifPresent(ptAlarmMessage::setModelName);
-
         if (serviceLog.getStatusCode() >= 500) {
             ptAlarmMessage.setAlertType("1");
             ptAlarmMessage.setAlertContent("模型服务异常");
@@ -62,9 +53,7 @@ public class PtServiceAlarmServiceImpl extends ServiceImpl<PtServiceAlarmMapper,
             ptAlarmMessage.setAlertContent("模型服务接口异常");
             save(ptAlarmMessage);
         } else {
-            QueryWrapper<GatewayRoutes> queryWrapper = new QueryWrapper<>();
-            queryWrapper.eq("predicates", gatewayUrl);
-            GatewayRoutes gatewayRoutes = gatewayRoutesMapper.selectOne(queryWrapper);
+            GatewayRoutes gatewayRoutes = gatewayRoutesService.getByPredicates(gatewayUrl);
             JSONObject resultSuccessFormatData = gatewayRoutes.getResultSuccessFormatData();
             if (!JsonUtils.isValidJSON(responseContent)) {
                 return;

+ 18 - 0
src/main/resources/application-dev.yml

@@ -4,6 +4,24 @@ spring:
     url: jdbc:dm://39.98.38.2:30236?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf-8&schema=TBA_GXPT
     username: TBA_GXPT
     password: Gxpt./1226
+    # HikariCP 连接池配置
+    hikari:
+      # 连接超时时间 (毫秒)
+      connection-timeout: 30000
+      # 空闲连接超时时间 (毫秒)
+      idle-timeout: 600000
+      # 最大生命周期时间 (毫秒)
+      max-lifetime: 1800000
+      # 最大连接数
+      maximum-pool-size: 20
+      # 最小空闲连接数
+      minimum-idle: 5
+      # 连接测试查询
+      connection-test-query: select 1
+      # 是否启用 JMX 监控
+      register-mbeans: true
+      # 连接池名称
+      pool-name: HikariPool-1
   sql:
     init:
       mode: always

+ 1 - 2
src/main/resources/mapper/PermissionMapper.xml

@@ -9,7 +9,6 @@
                  JOIN PT_SERVICE_AUTH tpp ON p.SRV_ID = tpp.SRV_ID
         WHERE INSTR(',' || tpp.APP_ID || ',', ',' || #{thirdPartyId} || ',') > 0
           AND p.URL = #{path}
-          AND p.RQTYPE = #{method}
           AND p.STATUS = 1
     </select>
-</mapper>
+</mapper>