فهرست منبع

Merge branch 'dev' of http://192.168.1.220:10080/jiwei/jw2.0 into dev

LiTaohong 7 سال پیش
والد
کامیت
9a247daad7
23فایلهای تغییر یافته به همراه37 افزوده شده و 561 حذف شده
  1. 0 22
      app/app-iot-server/.gitignore
  2. 1 1
      app/app-iot-server/pom.xml
  3. 0 3
      app/app-iot-server/readMe.MD
  4. 12 0
      app/app-iot-server/src/main/java/com/yihu/ehr/iot/AppIotServer.java
  5. 0 43
      app/app-iot-server/src/main/java/com/yihu/ehr/iot/config/CommonConfig.java
  6. 7 0
      app/app-iot-server/src/main/java/com/yihu/ehr/iot/config/WebMvcConfig.java
  7. 4 1
      app/app-iot-server/src/main/java/com/yihu/ehr/iot/interceptor/LoginInterceptor.java
  8. 5 5
      app/app-iot-server/src/main/resources/application.yml
  9. 1 1
      app/app-iot-server/src/main/webapp/front/js/common/apiServer.js
  10. 0 21
      base/common-security/src/main/java/com.yihu.base.security/properties/QQProperties.java
  11. 1 0
      base/common-security/src/main/java/com.yihu.base.security/sms/SmsCodeAuthenticationFilter.java
  12. 1 1
      base/common-security/src/main/java/com.yihu.base.security/sms/SmsCodeAuthenticationProvider.java
  13. 3 3
      base/common-security/src/main/java/com.yihu.base.security/sms/SmsCodeAuthenticationSecurityConfig.java
  14. 1 1
      base/common-security/src/main/java/com.yihu.base.security/sms/SmsCodeAuthenticationToken.java
  15. 0 13
      base/common-security/src/main/java/com.yihu.base.security/social/qq/api/QQ.java
  16. 0 60
      base/common-security/src/main/java/com.yihu.base.security/social/qq/api/QQImpl.java
  17. 0 206
      base/common-security/src/main/java/com.yihu.base.security/social/qq/api/QQUserInfo.java
  18. 0 36
      base/common-security/src/main/java/com.yihu.base.security/social/qq/config/QQAutoConfig.java
  19. 0 43
      base/common-security/src/main/java/com.yihu.base.security/social/qq/connet/QQAdapter.java
  20. 0 18
      base/common-security/src/main/java/com.yihu.base.security/social/qq/connet/QQConnectionFactory.java
  21. 0 51
      base/common-security/src/main/java/com.yihu.base.security/social/qq/connet/QQOAuth2Template.java
  22. 0 32
      base/common-security/src/main/java/com.yihu.base.security/social/qq/connet/QQServiceProvider.java
  23. 1 0
      server/svr-discovery/src/main/java/com.yihu.jw/config/ServletInitializer.java

+ 0 - 22
app/app-iot-server/.gitignore

@ -1,22 +0,0 @@
#project files
app-emergency-server.iml
.idea/*
target/*
# ---> Java
*/target
*.class
# Mobile Tools for Java (J2ME)
.mtj.tmp/
# Package Files #
*.jar
*.war
*.ear
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*#
# thrift generate code

+ 1 - 1
app/app-iot-server/pom.xml

@ -192,7 +192,7 @@
    </dependencies>
    <build>
        <finalName>app-iot-server</finalName>
        <finalName>app-emergency-server</finalName>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>

+ 0 - 3
app/app-iot-server/readMe.MD

@ -1,3 +0,0 @@
app-iot-server 
物联网平台的前端
目前是嵌入到EHR平台中

+ 12 - 0
app/app-iot-server/src/main/java/com/yihu/ehr/iot/AppIotServer.java

@ -1,11 +1,23 @@
package com.yihu.ehr.iot;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.actuate.autoconfigure.ManagementWebSecurityAutoConfiguration;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConfiguration;
import org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration;
import org.springframework.boot.autoconfigure.security.SecurityAutoConfiguration;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.context.web.SpringBootServletInitializer;
@SpringBootApplication
@EnableAutoConfiguration(exclude = {
        SecurityAutoConfiguration.class,
        ManagementWebSecurityAutoConfiguration.class,
        DataSourceAutoConfiguration.class,
        HibernateJpaAutoConfiguration.class,
        DataSourceTransactionManagerAutoConfiguration.class})
public class AppIotServer extends SpringBootServletInitializer {
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {

+ 0 - 43
app/app-iot-server/src/main/java/com/yihu/ehr/iot/config/CommonConfig.java

@ -1,43 +0,0 @@
package com.yihu.ehr.iot.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.support.ResourceBundleMessageSource;
import org.springframework.web.servlet.view.InternalResourceViewResolver;
import org.springframework.web.servlet.view.tiles3.TilesConfigurer;
import org.springframework.web.servlet.view.tiles3.TilesViewResolver;
//@Configuration
//@ComponentScan("com.yihu.ehr.eme.controller")
public class CommonConfig {
    @Bean
    public InternalResourceViewResolver viewResolver() {
        InternalResourceViewResolver resolver = new InternalResourceViewResolver();
        resolver.setPrefix("/WEB-INF/jsp/");
        resolver.setSuffix(".jsp");
        resolver.setOrder(1);
        return resolver;
    }
    @Bean
    public ResourceBundleMessageSource messageSource() {
        ResourceBundleMessageSource resolver = new ResourceBundleMessageSource();
        resolver.setBasenames("text/message");
        resolver.setDefaultEncoding("UTF-8");
        return resolver;
    }
    @Bean
    public TilesViewResolver tilesViewResolver(){
        TilesViewResolver tilesViewResolver = new TilesViewResolver();
        tilesViewResolver.setOrder(0);
        return tilesViewResolver;
    }
    @Bean
    public TilesConfigurer tilesConfigurer(){
        TilesConfigurer tilesConfigurer = new TilesConfigurer();
        tilesConfigurer.setDefinitions("/WEB-INF/jsp/common/layout.xml");
        return tilesConfigurer;
    }
}

+ 7 - 0
app/app-iot-server/src/main/java/com/yihu/ehr/iot/config/WebMvcConfig.java

@ -5,6 +5,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.PathMatchConfigurer;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
/**
@ -30,6 +31,7 @@ public class WebMvcConfig extends WebMvcConfigurerAdapter {
    /**
     * 配置路径完全匹配
     * idea版本 过低这样子映射boot启动会没有效果,只能tomcat启动  但是不影响打包
     * @param configurer
     */
    @Override
@ -37,4 +39,9 @@ public class WebMvcConfig extends WebMvcConfigurerAdapter {
        configurer.setUseSuffixPatternMatch(false)
                .setUseTrailingSlashMatch(true);
    }
//    @Override
//    public void addResourceHandlers(ResourceHandlerRegistry registry) {
//        registry.addResourceHandler("/front/**").addResourceLocations("classpath:/webapp/front/");
//    }
}

+ 4 - 1
app/app-iot-server/src/main/java/com/yihu/ehr/iot/interceptor/LoginInterceptor.java

@ -1,5 +1,6 @@
package com.yihu.ehr.iot.interceptor;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
@ -9,6 +10,8 @@ import javax.servlet.http.HttpServletResponse;
@Component
public class LoginInterceptor extends HandlerInterceptorAdapter {
    @Value("${server.contextPath}")
    protected String contextPath;
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        if(request.getRequestURL().indexOf("/ambulance/search")!=-1){
@ -16,7 +19,7 @@ public class LoginInterceptor extends HandlerInterceptorAdapter {
        }
        Boolean isLogin = (Boolean) request.getSession().getAttribute("isLogin");
        if (isLogin == null || !isLogin) {
            response.sendRedirect("/emergency/login");
            response.sendRedirect(contextPath+"/login");
            response.setStatus(-200);
            return false;
        }

+ 5 - 5
app/app-iot-server/src/main/resources/application.yml

@ -1,5 +1,5 @@
server:
  contextPath: /emergency
  contextPath: /iot
  port: 9099
  sessionTimeout: 30000000
@ -26,7 +26,7 @@ permissions:
app:
  clientId: 3CDhsgepr4
  baseClientId: 5DloGvRVVZ  # 【卫生应急指挥平台】应用
  baseClientId: Qz2yA1MOD0  # 【物联网】应用
---
spring:
@ -37,12 +37,12 @@ spring:
    port: 6379
    password: redis!@456
app:
  oauth2InnerUrl: http://172.19.103.73:10260/
  oauth2InnerUrl: http://172.19.103.44:10260/
  oauth2OuterUrl: http://27.154.233.186:10260/  #上饶-授权外网映射
service-gateway:
  profileInnerUrl: http://172.19.103.73:10000/api/v1.0/admin
  profileInnerUrl: http://172.19.103.48:10000/api/v1.0/admin
  profileOuterUrl: http://27.154.233.186:10000/api/v1.0/admin
  portalInnerUrl: http://172.19.103.73:10280/api/v1.0/portal
  portalInnerUrl: http://172.19.103.48:10280/api/v1.0/portal
  portalOuterUrl: http://27.154.233.186:10280/api/v1.0/portal
fast-dfs:
  tracker-server: 172.19.103.13:22122

+ 1 - 1
app/app-iot-server/src/main/webapp/front/js/common/apiServer.js

@ -3,7 +3,7 @@
 */
define(['jquery', 'promise', 'layer', 'jsHelper'], function ($, Promise, layer, jsHelper) {
    jsHelper.setLayerCon();
    var baseUrl = '/emergency/';
    var baseUrl = '/iot/';
    function httpGet(url,options) {
        //发送ajax请求
        return new Promise(function(resolve, reject) {

+ 0 - 21
base/common-security/src/main/java/com.yihu.base.security/properties/QQProperties.java

@ -1,21 +0,0 @@
package com.yihu.base.security.properties;
import org.springframework.boot.autoconfigure.social.SocialProperties;
import org.springframework.stereotype.Component;
/**
 * Created by chenweida on 2017/12/9.
 */
@Component
public class QQProperties extends SocialProperties {
    private String providerId = "qq";
    public String getProviderId() {
        return providerId;
    }
    public void setProviderId(String providerId) {
        this.providerId = providerId;
    }
}

+ 1 - 0
base/common-security/src/main/java/com.yihu.base.security/sms/SmsCodeAuthenticationFilter.java

@ -37,6 +37,7 @@ public class SmsCodeAuthenticationFilter extends AbstractAuthenticationProcessin
	public Authentication attemptAuthentication(HttpServletRequest request, HttpServletResponse response)
			throws AuthenticationException {
		if (postOnly && !request.getMethod().equals("POST")) {
			throw new AuthenticationServiceException("Authentication method not supported: " + request.getMethod());
		}

+ 1 - 1
base/common-security/src/main/java/com.yihu.base.security/sms/SmsCodeAuthenticationProvider.java

@ -28,7 +28,7 @@ public class SmsCodeAuthenticationProvider implements AuthenticationProvider {
	public Authentication authenticate(Authentication authentication) throws AuthenticationException {
		SmsCodeAuthenticationToken authenticationToken = (SmsCodeAuthenticationToken) authentication;
		
		//查找用户信息
		UserDetails user = userDetailsService.loadUserByUsername((String) authenticationToken.getPrincipal());
		if (user == null) {

+ 3 - 3
base/common-security/src/main/java/com.yihu.base.security/sms/SmsCodeAuthenticationSecurityConfig.java

@ -34,7 +34,7 @@ public class SmsCodeAuthenticationSecurityConfig extends SecurityConfigurerAdapt
    @Override
    public void configure(HttpSecurity http) throws Exception {
        //短信验证码过滤器
        SmsCodeAuthenticationFilter smsCodeAuthenticationFilter = new SmsCodeAuthenticationFilter();
        smsCodeAuthenticationFilter.setAuthenticationManager(http.getSharedObject(AuthenticationManager.class));
        smsCodeAuthenticationFilter.setAuthenticationSuccessHandler(authenticationSuccessHandler);
@ -44,8 +44,8 @@ public class SmsCodeAuthenticationSecurityConfig extends SecurityConfigurerAdapt
        smsCodeAuthenticationProvider.setUserDetailsService(userDetailsService);
        http.authenticationProvider(smsCodeAuthenticationProvider)
                .addFilterAfter(smsCodeAuthenticationFilter, UsernamePasswordAuthenticationFilter.class)
                .addFilterBefore(smsvalidateCodeFilter,SmsCodeAuthenticationFilter.class);
                .addFilterAfter(smsCodeAuthenticationFilter, UsernamePasswordAuthenticationFilter.class)//在账号密码验证过滤器之后添加短信验证码过滤器
                .addFilterBefore(smsvalidateCodeFilter,SmsCodeAuthenticationFilter.class); //添加短信验证码登陆过滤器
        ;
    }

+ 1 - 1
base/common-security/src/main/java/com.yihu.base.security/sms/SmsCodeAuthenticationToken.java

@ -11,7 +11,7 @@ import java.util.Collection;
/**
 * @author chenweida
 *
 *	短信授权的Token对象
 */
public class SmsCodeAuthenticationToken extends AbstractAuthenticationToken {

+ 0 - 13
base/common-security/src/main/java/com.yihu.base.security/social/qq/api/QQ.java

@ -1,13 +0,0 @@
/**
 * 
 */
package com.yihu.base.security.social.qq.api;
/**
 *
 */
public interface QQ {
	
	QQUserInfo getUserInfo();
}

+ 0 - 60
base/common-security/src/main/java/com.yihu.base.security/social/qq/api/QQImpl.java

@ -1,60 +0,0 @@
/**
 * 
 */
package com.yihu.base.security.social.qq.api;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.apache.commons.lang.StringUtils;
import org.springframework.social.oauth2.AbstractOAuth2ApiBinding;
import org.springframework.social.oauth2.TokenStrategy;
/**
 *
 */
public class QQImpl extends AbstractOAuth2ApiBinding implements QQ {
	
	private static final String URL_GET_OPENID = "https://graph.qq.com/oauth2.0/me?access_token=%s";
	
	private static final String URL_GET_USERINFO = "https://graph.qq.com/user/get_user_info?oauth_consumer_key=%s&openid=%s";
	
	private String appId;
	
	private String openId;
	
	private ObjectMapper objectMapper = new ObjectMapper();
	
	public QQImpl(String accessToken, String appId) {
		super(accessToken, TokenStrategy.ACCESS_TOKEN_PARAMETER);
		
		this.appId = appId;
		
		String url = String.format(URL_GET_OPENID, accessToken);
		String result = getRestTemplate().getForObject(url, String.class);
		
		System.out.println(result);
		
		this.openId = StringUtils.substringBetween(result, "\"openid\":\"", "\"}");
	}
	
	/* (non-Javadoc)
	 * @see com.imooc.security.core.social.qq.api.QQ#getUserInfo()
	 */
	@Override
	public QQUserInfo getUserInfo() {
		
		String url = String.format(URL_GET_USERINFO, appId, openId);
		String result = getRestTemplate().getForObject(url, String.class);
		
		System.out.println(result);
		
		QQUserInfo userInfo = null;
		try {
			userInfo = objectMapper.readValue(result, QQUserInfo.class);
			userInfo.setOpenId(openId);
			return userInfo;
		} catch (Exception e) {
			throw new RuntimeException("获取用户信息失败", e);
		}
	}
}

+ 0 - 206
base/common-security/src/main/java/com.yihu.base.security/social/qq/api/QQUserInfo.java

@ -1,206 +0,0 @@
/**
 * 
 */
package com.yihu.base.security.social.qq.api;
/**
 *
 */
public class QQUserInfo {
	
	/**
	 * 	返回码
	 */
	private String ret;
	/**
	 * 如果ret<0,会有相应的错误信息提示,返回数据全部用UTF-8编码。
	 */
	private String msg;
	/**
	 * 
	 */
	private String openId;
	/**
	 * 不知道什么东西,文档上没写,但是实际api返回里有。
	 */
	private String is_lost;
	/**
	 * 省(直辖市)
	 */
	private String province;
	/**
	 * 市(直辖市区)
	 */
	private String city;
	/**
	 * 出生年月
	 */
	private String year;
	/**
	 * 	用户在QQ空间的昵称。
	 */
	private String nickname;
	/**
	 * 	大小为30×30像素的QQ空间头像URL。
	 */
	private String figureurl;
	/**
	 * 	大小为50×50像素的QQ空间头像URL。
	 */
	private String figureurl_1;
	/**
	 * 	大小为100×100像素的QQ空间头像URL。
	 */
	private String figureurl_2;
	/**
	 * 	大小为40×40像素的QQ头像URL。
	 */
	private String figureurl_qq_1;
	/**
	 * 	大小为100×100像素的QQ头像URL。需要注意,不是所有的用户都拥有QQ的100×100的头像,但40×40像素则是一定会有。
	 */
	private String figureurl_qq_2;
	/**
	 * 	性别。 如果获取不到则默认返回”男”
	 */
	private String gender;
	/**
	 * 	标识用户是否为黄钻用户(0:不是;1:是)。
	 */
	private String is_yellow_vip;
	/**
	 * 	标识用户是否为黄钻用户(0:不是;1:是)
	 */
	private String vip;
	/**
	 * 	黄钻等级
	 */
	private String yellow_vip_level;
	/**
	 * 	黄钻等级
	 */
	private String level;
	/**
	 * 标识是否为年费黄钻用户(0:不是; 1:是)
	 */
	private String is_yellow_year_vip;
	
	
	public String getRet() {
		return ret;
	}
	public void setRet(String ret) {
		this.ret = ret;
	}
	public String getMsg() {
		return msg;
	}
	public void setMsg(String msg) {
		this.msg = msg;
	}
	public String getOpenId() {
		return openId;
	}
	public void setOpenId(String openId) {
		this.openId = openId;
	}
	public String getIs_lost() {
		return is_lost;
	}
	public void setIs_lost(String is_lost) {
		this.is_lost = is_lost;
	}
	public String getProvince() {
		return province;
	}
	public void setProvince(String province) {
		this.province = province;
	}
	public String getCity() {
		return city;
	}
	public void setCity(String city) {
		this.city = city;
	}
	public String getYear() {
		return year;
	}
	public void setYear(String year) {
		this.year = year;
	}
	public String getNickname() {
		return nickname;
	}
	public void setNickname(String nickname) {
		this.nickname = nickname;
	}
	public String getFigureurl() {
		return figureurl;
	}
	public void setFigureurl(String figureurl) {
		this.figureurl = figureurl;
	}
	public String getFigureurl_1() {
		return figureurl_1;
	}
	public void setFigureurl_1(String figureurl_1) {
		this.figureurl_1 = figureurl_1;
	}
	public String getFigureurl_2() {
		return figureurl_2;
	}
	public void setFigureurl_2(String figureurl_2) {
		this.figureurl_2 = figureurl_2;
	}
	public String getFigureurl_qq_1() {
		return figureurl_qq_1;
	}
	public void setFigureurl_qq_1(String figureurl_qq_1) {
		this.figureurl_qq_1 = figureurl_qq_1;
	}
	public String getFigureurl_qq_2() {
		return figureurl_qq_2;
	}
	public void setFigureurl_qq_2(String figureurl_qq_2) {
		this.figureurl_qq_2 = figureurl_qq_2;
	}
	public String getGender() {
		return gender;
	}
	public void setGender(String gender) {
		this.gender = gender;
	}
	public String getIs_yellow_vip() {
		return is_yellow_vip;
	}
	public void setIs_yellow_vip(String is_yellow_vip) {
		this.is_yellow_vip = is_yellow_vip;
	}
	public String getVip() {
		return vip;
	}
	public void setVip(String vip) {
		this.vip = vip;
	}
	public String getYellow_vip_level() {
		return yellow_vip_level;
	}
	public void setYellow_vip_level(String yellow_vip_level) {
		this.yellow_vip_level = yellow_vip_level;
	}
	public String getLevel() {
		return level;
	}
	public void setLevel(String level) {
		this.level = level;
	}
	public String getIs_yellow_year_vip() {
		return is_yellow_year_vip;
	}
	public void setIs_yellow_year_vip(String is_yellow_year_vip) {
		this.is_yellow_year_vip = is_yellow_year_vip;
	}
	
	
}

+ 0 - 36
base/common-security/src/main/java/com.yihu.base.security/social/qq/config/QQAutoConfig.java

@ -1,36 +0,0 @@
/**
 * 
 */
package com.yihu.base.security.social.qq.config;
import com.yihu.base.security.properties.QQProperties;
import com.yihu.base.security.social.qq.connet.QQConnectionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.boot.autoconfigure.social.SocialAutoConfigurerAdapter;
import org.springframework.context.annotation.Configuration;
import org.springframework.social.connect.ConnectionFactory;
/**
 *
 */
@Configuration
@ConditionalOnProperty(prefix = "imooc.security.social.qq", name = "app-id")
public class QQAutoConfig extends SocialAutoConfigurerAdapter {
	@Autowired
	private QQProperties qqConfig;
	/*
	 * (non-Javadoc)
	 * 
	 * @see
	 * org.springframework.boot.autoconfigure.social.SocialAutoConfigurerAdapter
	 * #createConnectionFactory()
	 */
	@Override
	protected ConnectionFactory<?> createConnectionFactory() {
		return new QQConnectionFactory(qqConfig.getProviderId(), qqConfig.getAppId(), qqConfig.getAppSecret());
	}
}

+ 0 - 43
base/common-security/src/main/java/com.yihu.base.security/social/qq/connet/QQAdapter.java

@ -1,43 +0,0 @@
/**
 * 
 */
package com.yihu.base.security.social.qq.connet;
import com.yihu.base.security.social.qq.api.QQ;
import com.yihu.base.security.social.qq.api.QQUserInfo;
import org.springframework.social.connect.ApiAdapter;
import org.springframework.social.connect.ConnectionValues;
import org.springframework.social.connect.UserProfile;
/**
 *
 */
public class QQAdapter implements ApiAdapter<QQ> {
	@Override
	public boolean test(QQ api) {
		return true;
	}
	@Override
	public void setConnectionValues(QQ api, ConnectionValues values) {
		QQUserInfo userInfo = api.getUserInfo();
		
		values.setDisplayName(userInfo.getNickname());
		values.setImageUrl(userInfo.getFigureurl_qq_1());
		values.setProfileUrl(null);
		values.setProviderUserId(userInfo.getOpenId());
	}
	@Override
	public UserProfile fetchUserProfile(QQ api) {
		// TODO Auto-generated method stub
		return null;
	}
	@Override
	public void updateStatus(QQ api, String message) {
		//do noting
	}
}

+ 0 - 18
base/common-security/src/main/java/com.yihu.base.security/social/qq/connet/QQConnectionFactory.java

@ -1,18 +0,0 @@
/**
 * 
 */
package com.yihu.base.security.social.qq.connet;
import com.yihu.base.security.social.qq.api.QQ;
import org.springframework.social.connect.support.OAuth2ConnectionFactory;
/**
 *
 */
public class QQConnectionFactory extends OAuth2ConnectionFactory<QQ> {
	public QQConnectionFactory(String providerId, String appId, String appSecret) {
		super(providerId, new QQServiceProvider(appId, appSecret), new QQAdapter());
	}
}

+ 0 - 51
base/common-security/src/main/java/com.yihu.base.security/social/qq/connet/QQOAuth2Template.java

@ -1,51 +0,0 @@
/**
 * 
 */
package com.yihu.base.security.social.qq.connet;
import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.http.converter.StringHttpMessageConverter;
import org.springframework.social.oauth2.AccessGrant;
import org.springframework.social.oauth2.OAuth2Template;
import org.springframework.util.MultiValueMap;
import org.springframework.web.client.RestTemplate;
import java.nio.charset.Charset;
/**
 *
 */
public class QQOAuth2Template extends OAuth2Template {
	
	private Logger logger = LoggerFactory.getLogger(getClass());
	public QQOAuth2Template(String clientId, String clientSecret, String authorizeUrl, String accessTokenUrl) {
		super(clientId, clientSecret, authorizeUrl, accessTokenUrl);
		setUseParametersForClientAuthentication(true);
	}
	
	@Override
	protected AccessGrant postForAccessGrant(String accessTokenUrl, MultiValueMap<String, String> parameters) {
		String responseStr = getRestTemplate().postForObject(accessTokenUrl, parameters, String.class);
		
		logger.info("获取accessToke的响应:"+responseStr);
		
		String[] items = StringUtils.splitByWholeSeparatorPreserveAllTokens(responseStr, "&");
		
		String accessToken = StringUtils.substringAfterLast(items[0], "=");
		Long expiresIn = new Long(StringUtils.substringAfterLast(items[1], "="));
		String refreshToken = StringUtils.substringAfterLast(items[2], "=");
		
		return new AccessGrant(accessToken, null, refreshToken, expiresIn);
	}
	
	@Override
	protected RestTemplate createRestTemplate() {
		RestTemplate restTemplate = super.createRestTemplate();
		restTemplate.getMessageConverters().add(new StringHttpMessageConverter(Charset.forName("UTF-8")));
		return restTemplate;
	}
}

+ 0 - 32
base/common-security/src/main/java/com.yihu.base.security/social/qq/connet/QQServiceProvider.java

@ -1,32 +0,0 @@
/**
 * 
 */
package com.yihu.base.security.social.qq.connet;
import com.yihu.base.security.social.qq.api.QQ;
import com.yihu.base.security.social.qq.api.QQImpl;
import org.springframework.social.oauth2.AbstractOAuth2ServiceProvider;
/**
 *
 */
public class QQServiceProvider extends AbstractOAuth2ServiceProvider<QQ> {
	private String appId;
	
	private static final String URL_AUTHORIZE = "https://graph.qq.com/oauth2.0/authorize";
	
	private static final String URL_ACCESS_TOKEN = "https://graph.qq.com/oauth2.0/token";
	
	public QQServiceProvider(String appId, String appSecret) {
		super(new QQOAuth2Template(appId, appSecret, URL_AUTHORIZE, URL_ACCESS_TOKEN));
		this.appId = appId;
	}
	
	@Override
	public QQ getApi(String accessToken) {
		return new QQImpl(accessToken, appId);
	}
}

+ 1 - 0
server/svr-discovery/src/main/java/com.yihu.jw/config/ServletInitializer.java

@ -16,6 +16,7 @@ public class ServletInitializer extends SpringBootServletInitializer {
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(SvrDiscovery.class);
    }
}