| package com.dy.common.aop; | 
|   | 
| import com.dy.common.webUtil.BaseResponseUtils; | 
| import com.mysql.cj.util.StringUtils; | 
| import org.springframework.beans.factory.annotation.Autowired; | 
| import org.springframework.beans.factory.annotation.Value; | 
| import org.springframework.http.*; | 
| import org.springframework.stereotype.Component; | 
| import org.springframework.web.client.RestTemplate; | 
| import org.springframework.web.util.UriComponentsBuilder; | 
|   | 
| /** | 
|  * @Author: liurunyu | 
|  * @Date: 2025/7/22 17:09 | 
|  * @Description | 
|  */ | 
| @Component | 
| public class SsoCheck { | 
|   | 
|     @Value("${pipIrr.sso.checkUrl}") | 
|     private String ssoCheckUrl; | 
|   | 
|     private RestTemplate restTemplate; | 
|   | 
|     @Autowired | 
|     public void setRestTemplate(RestTemplate restTemplate){ | 
|         this.restTemplate = restTemplate ; | 
|     } | 
|   | 
|     /** | 
|      * 调用SSO系统进行验证 | 
|      * @param token Header中的用户token | 
|      * @return 返回对象 | 
|      */ | 
|     public Object check(String token){ | 
|         if(!StringUtils.isNullOrEmpty(ssoCheckUrl)){ | 
|             String url = UriComponentsBuilder.fromUriString(ssoCheckUrl) | 
|                     .queryParam("token", token) | 
|                     .build() | 
|                     .toUriString(); | 
|             HttpHeaders headers = new HttpHeaders(); | 
|             headers.setContentType(MediaType.parseMediaType("application/json;charset=UTF-8")); | 
|   | 
|             HttpEntity<?> httpEntity = new HttpEntity<>(headers); | 
|             ResponseEntity<SsoVo> response = null; | 
|             try { | 
|                 // 通过Get方式调用接口 | 
|                 response = this.restTemplate.exchange(url, HttpMethod.GET, httpEntity, SsoVo.class); | 
|             } catch (Exception e) { | 
|                 e.printStackTrace(); | 
|                 return BaseResponseUtils.buildError("后端系统出错,访问单点登录系统异常"); | 
|             } | 
|             if(response == null){ | 
|                 return BaseResponseUtils.buildError("后端系统出错,访问单点登录系统异常"); | 
|             }else{ | 
|                 return response.getBody(); | 
|             } | 
|         }else { | 
|             return BaseResponseUtils.buildError("后端系统出错,未得到SsoCheckUrl"); | 
|         } | 
|     } | 
|   | 
|   | 
|     /** | 
|      * 调用SSO系统进行验证 | 
|      * @param token Header中的用户token | 
|      * @param power 一个权限 | 
|      * @param allPower 多个权限 | 
|      * @param anyPower 多个权限 | 
|      * @return 返回对象 | 
|      */ | 
|     public Object check(String token, String power, String[] allPower, String[] anyPower){ | 
|         if(!StringUtils.isNullOrEmpty(ssoCheckUrl)){ | 
|             String url = UriComponentsBuilder.fromUriString(ssoCheckUrl) | 
|                     .queryParam("token", token) | 
|                     .queryParam("power", power) | 
|                     .queryParam("allPower", (Object) allPower) | 
|                     .queryParam("anyPower", (Object) anyPower) | 
|                     .build() | 
|                     .toUriString(); | 
|             HttpHeaders headers = new HttpHeaders(); | 
|             HttpEntity<?> httpEntity = new HttpEntity<>(headers); | 
|             ResponseEntity<SsoVo> response = null; | 
|             try { | 
|                 // 通过Get方式调用接口 | 
|                 response = restTemplate.exchange(url, HttpMethod.GET, httpEntity, SsoVo.class); | 
|             } catch (Exception e) { | 
|                 e.printStackTrace(); | 
|                 return BaseResponseUtils.buildError("后端系统出错,访问单点登录系统异常"); | 
|             } | 
|             if(response == null){ | 
|                 return BaseResponseUtils.buildError("后端系统出错,访问单点登录系统异常"); | 
|             }else{ | 
|                 return response.getBody(); | 
|             } | 
|         }else { | 
|             return BaseResponseUtils.buildError("后端系统出错,未得到SsoCheckUrl"); | 
|         } | 
|     } | 
| } |