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"); 
 | 
        } 
 | 
    } 
 | 
} 
 |