| 
					
				 | 
			
			
				@ -23,6 +23,7 @@ import org.springframework.security.core.userdetails.UsernameNotFoundException; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.springframework.security.oauth2.common.OAuth2AccessToken; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.springframework.security.oauth2.provider.ClientDetails; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.springframework.security.oauth2.provider.ClientDetailsService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.springframework.transaction.annotation.Transactional; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.springframework.web.context.request.RequestContextHolder; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.springframework.web.context.request.ServletRequestAttributes; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -47,10 +48,13 @@ public class WlyyUserDetailsService extends JdbcDaoSupport implements UserDetail 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private static final String DEFAULT_PATIENT_DETAILS_IDCARD_STATEMENT = "SELECT * FROM base_patient p WHERE p.idcard = ? "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private static final String DEFAULT_PATIENT_INSERT_STATEMENT = 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            "INSERT into base_patient (`id`,`ihealth_openid`,`ihealth_openid_time`,`idcard`,`password`,`salt`,`name`,`birthday`,`sex`,`mobile`," + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            "INSERT into base_patient (`id`,`idcard`,`password`,`salt`,`name`,`birthday`,`sex`,`mobile`," + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    "`province_code`,`province_name`,`city_code`,`city_name`,`town_code`,`town_name`,`street_code`,`street_name`,`address`," + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    "`del`,`locked`,`enabled`,`login_failure_count`,`login_date`) " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    " values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    " values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private static final String PATIENT_INSERT_WEHCAT = "insert into base_patient_wechat (`id`,`wechat_id`,`patient_id`,`openid`,`create_time`) values(?,?,?,?,?)"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private static final String BespeakRegist = "bespeakRegist:"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -127,6 +131,7 @@ public class WlyyUserDetailsService extends JdbcDaoSupport implements UserDetail 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param username 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Transactional 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public List<WlyyUserDetails> getWlyyUserDetails(String username) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String loginType = getLogintype(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -164,7 +169,7 @@ public class WlyyUserDetailsService extends JdbcDaoSupport implements UserDetail 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                try{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    res = httpClientUtil.post(iHealthUserInfoUrl, params, "UTF-8"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                }catch (Exception e){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    logger.error("远程请求i健康用户信息异常败:" + e.getMessage()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    logger.error("远程请求i健康用户信息异常:" + e.getMessage()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    return users; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                if(null == res){ 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -178,8 +183,6 @@ public class WlyyUserDetailsService extends JdbcDaoSupport implements UserDetail 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    this.getJdbcTemplate().update(DEFAULT_PATIENT_INSERT_STATEMENT, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                            new Object[]{patient.getString("code"), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                    patient.getString("openid"), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                    new Date(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                    patient.getString("idcard"), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                    patient.getString("password"), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                    patient.getString("salt"), 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -207,6 +210,20 @@ public class WlyyUserDetailsService extends JdbcDaoSupport implements UserDetail 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    logger.error("将i健康居民数据同步到互联网医院居民表失败:" + e.getMessage()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    return users; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    this.getJdbcTemplate().update(PATIENT_INSERT_WEHCAT, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                            new Object[]{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                    UUID.randomUUID().toString(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                    getWechatId(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                    username, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                    getOpenid(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                    new Date() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                }catch (Exception e){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    logger.error("将i健康居民微信openid数据同步到互联网医院居民微信关联表失败:" + e.getMessage()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    return users; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                WlyyUserDetails user = new WlyyUserDetails(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                user.setName(patient.getString("name")); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -404,7 +421,7 @@ public class WlyyUserDetailsService extends JdbcDaoSupport implements UserDetail 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 获取i健康用户登录openid型 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 获取用户登录的clientId 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -417,15 +434,29 @@ public class WlyyUserDetailsService extends JdbcDaoSupport implements UserDetail 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return clientId; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 获取用户登录的wechatId 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public String getWechatId() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String wechatId = request.getParameter("wechat_id"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return wechatId; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 获取i健康用户登录openid型 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 获取用户登录的idcard 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public String getIdcard() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        KeyPair keyPair = (KeyPair) request.getAttribute("privateKey"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        KeyPair keyPair = (KeyPair) request.getSession().getAttribute("privateKey"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String idcard = com.yihu.jw.security.utils.RSAUtils.decryptBase64(request.getParameter("idcard"), keyPair); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return idcard; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -434,20 +465,13 @@ public class WlyyUserDetailsService extends JdbcDaoSupport implements UserDetail 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public boolean setRolePhth(String loginType, OAuth2AccessToken token, String id, StringRedisTemplate redisTemplate) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (org.apache.commons.lang.StringUtils.isBlank(loginType) || "1".equals(loginType)) { //1或默认查找user表,为平台管理员账号 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (org.apache.commons.lang.StringUtils.isBlank(loginType) || "1".equals(loginType) || "2".equals(loginType) || "3".equals(loginType) || "4".equals(loginType)) { //1或默认查找user表,为平台管理员账号 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            String key = "wlyy2:auth:token:" + token.getValue(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            redisTemplate.opsForValue().set(key, "/**"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            redisTemplate.expire(key, token.getExpiresIn(), TimeUnit.SECONDS); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } else if ("2".equals(loginType)) {//2.为医生账号 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } else if ("3".equals(loginType) || "4".equals(loginType)) { //3.患者账号 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            String key = "wlyy2:auth:token:" + token.getValue(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            redisTemplate.opsForValue().set(key, "/**"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            redisTemplate.expire(key, token.getExpiresIn(), TimeUnit.SECONDS); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            return false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            return true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public void updateOpenId(String openid, String userId) { 
			 |