pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/aop/SsoAspect.java
@@ -14,10 +14,7 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.annotation.Order;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.ResponseEntity;
import org.springframework.http.*;
import org.springframework.stereotype.Component;
import org.springframework.web.client.RestTemplate;
import org.springframework.web.util.UriComponentsBuilder;
@@ -35,7 +32,7 @@
    public String isDevStage ;//是否为开发阶段
    @Value("${pipIrr.sso.checkUrl}")
    public String SsoCheckUrl ;
    public String ssoCheckUrl;
    private RestTemplate restTemplate;
@@ -45,10 +42,10 @@
    }
    @Pointcut("@annotation(com.dy.common.aop.SsoAop)")
    public void dyPointCut() {
    public void ssoPointCut() {
    }
    @Around("dyPointCut()")
    @Around("ssoPointCut()")
    public Object execute(ProceedingJoinPoint point) throws Throwable {
        if(isDevStage != null && !isDevStage.trim().equals("") && isDevStage.trim().equalsIgnoreCase("true")){
            return point.proceed();
@@ -57,43 +54,34 @@
            Method method = signature.getMethod();
            SsoAop aop = method.getAnnotation(SsoAop.class) ;
            if (Objects.nonNull(aop)){
                String power = aop.value() ;
                if(power.trim().equals("")){
                    power = aop.power() ;
                }
                if(power.trim().equals("-1")){
                    //不进行登录及权限验证
                    return point.proceed();
                }else{
                    String[] allPower = aop.ifAllPower() ;
                    String[] anyPower = aop.ifAnyPower() ;
                    String token = UserTokenContext.get() ;
                    Object rObj = this.check(token, power, allPower, anyPower);
                    if(rObj != null){
                        if(rObj instanceof SsoVo ssoVo){
                            if(ssoVo.logined){
                                if(ssoVo.hasPower){
                                    if(!StringUtils.isNullOrEmpty(ssoVo.dataSourceName)){
                                        DataSourceContext.set(ssoVo.dataSourceName);
                                        return point.proceed();
                                    }else{
                                        //无数据源
                                        return BaseResponseUtils.buildError("后端系统出错,未得到当前登录用户所属机构标签(数据源名)") ;
                                    }
                String token = UserTokenContext.get() ;
                Object rObj = this.check(token);
                if(rObj != null){
                    if(rObj instanceof SsoVo ssoVo){
                        if(ssoVo.logined){
                            if(ssoVo.hasPower){
                                if(!StringUtils.isNullOrEmpty(ssoVo.dataSourceName)){
                                    DataSourceContext.set(ssoVo.dataSourceName);
                                    Object obj = point.proceed();
                                    DataSourceContext.remove();
                                    return obj ;
                                }else{
                                    //无权限
                                    return BaseResponseUtils.buildNoPower() ;
                                    //无数据源
                                    return BaseResponseUtils.buildError("后端系统出错,未得到当前登录用户所属机构标签(数据源名)") ;
                                }
                            }else{
                                //未登录
                                return BaseResponseUtils.buildToLogin() ;
                                //无权限
                                return BaseResponseUtils.buildNoPower() ;
                            }
                        }else{
                            return rObj ;
                            //未登录
                            return BaseResponseUtils.buildToLogin() ;
                        }
                    }else{
                        return BaseResponseUtils.buildError("后端系统出错,check方法返回null") ;
                        return rObj ;
                    }
                }else{
                    return BaseResponseUtils.buildError("后端系统出错,check方法返回null") ;
                }
            }else{
                //已经进入注解处理了,还得不到注解,这种情况是不可能的。
@@ -105,22 +93,17 @@
    /**
     * 调用SSO系统进行验证
     * @param token Header中的用户token
     * @param power 一个权限
     * @param allPower 多个权限
     * @param anyPower 多个权限
     * @return 返回对象
     */
    private Object check(String token, String power, String[] allPower, String[] anyPower){
        if(!StringUtils.isNullOrEmpty(SsoCheckUrl)){
            String url = UriComponentsBuilder.fromUriString(SsoCheckUrl)
    private Object check(String token){
        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();
            // 由于获取student接口咱们设置了basicauth,所以需要在请求时配置
            HttpHeaders headers = new HttpHeaders();
            headers.setContentType(MediaType.parseMediaType("application/json;charset=UTF-8"));
            HttpEntity<?> httpEntity = new HttpEntity<>(headers);
            ResponseEntity<SsoVo> response = null;
            try {
@@ -128,9 +111,13 @@
                response = restTemplate.exchange(url, HttpMethod.GET, httpEntity, SsoVo.class);
            } catch (Exception e) {
                e.printStackTrace();
                return BaseResponseUtils.buildError("后端系统出错,访问单点登录系统异常");
            }
            assert response != null;
            return response.getBody();
            if(response == null){
                return BaseResponseUtils.buildError("后端系统出错,访问单点登录系统异常");
            }else{
                return response.getBody();
            }
        }else {
            return BaseResponseUtils.buildError("后端系统出错,未得到SsoCheckUrl");
        }