| 
					
				 | 
			
			
				@ -98,13 +98,13 @@ public class WlyyLoginEndpoint extends AbstractEndpoint { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 登陆 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param parameters 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 不定入参: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * client_id 应用标识 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * captcha 验证码 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * password 密码 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * username 用户名/手机/身份证号 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * login_type 用户类型 1或默认为user,2:医生登录,3:患者登录 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param parameters  不定入参: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     *                    client_id 应用标识 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     *                    captcha 验证码 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     *                    password 密码 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     *                    username 用户名/手机/身份证号 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     *                    login_type 用户类型 1或默认为user,2:医生登录,3:患者登录 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param httpSession 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @throws Exception 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -124,12 +124,12 @@ public class WlyyLoginEndpoint extends AbstractEndpoint { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            //解密密码 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if (parameters.get("password") != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//                RSAPrivateKey rsaPrivateKey = (RSAPrivateKey)httpSession.getAttribute("privateKey"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                KeyPair keyPair = (KeyPair)httpSession.getAttribute("privateKey"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//                KeyPair keyPair = (KeyPair) httpSession.getAttribute("privateKey"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//                parameters.put("password", RSAUtils.decryptByPrivateKey(parameters.get("password"), rsaPrivateKey)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                String password = com.yihu.jw.security.utils.RSAUtils.decryptBase64(parameters.get("password"),keyPair); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                parameters.put("password",password); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//                String password = com.yihu.jw.security.utils.RSAUtils.decryptBase64(parameters.get("password"), keyPair); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//                parameters.put("password", password); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//                parameters.put("password", RSAUtils.decryptByPrivateKey(parameters.get("password"), rsaPrivateKey)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            }else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                parameters.put("grant_type", "ihealthCode"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } else { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -137,7 +137,7 @@ public class WlyyLoginEndpoint extends AbstractEndpoint { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        ClientDetails authenticatedClient = clientDetailsService.loadClientByClientId(client_id); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if(null == authenticatedClient){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (null == authenticatedClient) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            throw new InvalidRequestException("client_id"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        TokenRequest tokenRequest = oAuth2RequestFactory.createTokenRequest(parameters, authenticatedClient); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -149,15 +149,15 @@ public class WlyyLoginEndpoint extends AbstractEndpoint { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        /*如果是移动端登陆则移除之前的token, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        在网关处通过HTTP状态码告知前端是过期(402)还是账号在别处登陆(403), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        实现同一账号只能在一处登陆*/ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//        HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//        if (request.getHeader("login-device") != null && request.getHeader("login-device").equals("mobile")) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        tokenStore.removeAccessToken(token.getValue()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        tokenStore.removeRefreshToken(token.getRefreshToken().getValue()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        token = getTokenGranter().grant(tokenRequest.getGrantType(), tokenRequest); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//            tokenStore.removeAccessToken(token.getValue()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//            tokenStore.removeRefreshToken(token.getRefreshToken().getValue()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//            token = getTokenGranter().grant(tokenRequest.getGrantType(), tokenRequest); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//        if (token == null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//            throw new UnsupportedGrantTypeException("Unsupported grant type: " + tokenRequest.getGrantType()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (token == null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            throw new UnsupportedGrantTypeException("Unsupported grant type: " + tokenRequest.getGrantType()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        WlyyUserSimple wlyyUserSimple = userDetailsService.authSuccess(parameters.get("username")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        wlyyUserSimple.setAccessToken(token.getValue()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        wlyyUserSimple.setTokenType(token.getTokenType()); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -169,15 +169,15 @@ public class WlyyLoginEndpoint extends AbstractEndpoint { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String openid = parameters.get("openid"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        //更新患者openId 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        BaseLoginLogDO baseLoginLogDO = new BaseLoginLogDO(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if(!StringUtils.isEmpty(openid) && !"undefined".equalsIgnoreCase(openid) && "3".equals(loginType)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (!StringUtils.isEmpty(openid) && !"undefined".equalsIgnoreCase(openid) && "3".equals(loginType)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            baseLoginLogDO.setOpenid(openid); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            userDetailsService.updateOpenId(openid,wlyyUserSimple.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            userDetailsService.updateOpenId(openid, wlyyUserSimple.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (parameters.get("password") != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            //使用密码登录成功后, 更新失败次数为 0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            userDetailsService.addFailureCount(username,0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            userDetailsService.addFailureCount(username, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        userDetailsService.setRolePhth(loginType,token,wlyyUserSimple.getId(),redisTemplate); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        userDetailsService.setRolePhth(loginType, token, wlyyUserSimple.getId(), redisTemplate); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        baseLoginLogDO.setUserId(wlyyUserSimple.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        baseLoginLogDO.setCreateTime(new Date()); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -191,6 +191,7 @@ public class WlyyLoginEndpoint extends AbstractEndpoint { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 单点登陆第二步 - token验证 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param parameters 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -231,15 +232,14 @@ public class WlyyLoginEndpoint extends AbstractEndpoint { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param openid 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @RequestMapping(value = "/oauth/getByOpenId", method = RequestMethod.POST) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public ResponseEntity<Oauth2Envelop<WlyyUserSimple>> getByOpenId( @RequestParam(value = "openid", required = true) String openid) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public ResponseEntity<Oauth2Envelop<WlyyUserSimple>> getByOpenId(@RequestParam(value = "openid", required = true) String openid) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        BaseLoginLogDO loginLog = baseLoginLogService.findByOpenId(openid); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if(loginLog== null){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            throw new UsernameNotFoundException("can't find login log by openod: "+openid); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (loginLog == null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            throw new UsernameNotFoundException("can't find login log by openod: " + openid); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String userAgent = loginLog.getUserAgent(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        WlyyUserSimple wlyyUserSimple = JSONObject.parseObject(userAgent, WlyyUserSimple.class); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -253,6 +253,7 @@ public class WlyyLoginEndpoint extends AbstractEndpoint { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 登出 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param parameters 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param request 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @return 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -277,13 +278,14 @@ public class WlyyLoginEndpoint extends AbstractEndpoint { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 获取公钥 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param httpSession 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param httpServletResponse 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @throws Exception 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @RequestMapping(value = "/oauth/public_key", method = RequestMethod.GET) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public ResponseEntity<Oauth2Envelop<PublicKey>> publicKey ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public ResponseEntity<Oauth2Envelop<PublicKey>> publicKey( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            HttpSession httpSession, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            HttpServletResponse httpServletResponse) throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        //生成公钥和私钥 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -313,28 +315,29 @@ public class WlyyLoginEndpoint extends AbstractEndpoint { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @RequestMapping(value = "/oauth/getPublicKey", method = RequestMethod.GET) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public ObjEnvelop<PublickeyVO> getPublicKey(HttpSession httpSession, HttpServletResponse httpServletResponse){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        KeyPair keyPair =  com.yihu.jw.security.utils.RSAUtils.getKey(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public ObjEnvelop<PublickeyVO> getPublicKey(HttpSession httpSession, HttpServletResponse httpServletResponse) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        KeyPair keyPair = com.yihu.jw.security.utils.RSAUtils.getKey(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        httpSession.setAttribute("privateKey", keyPair); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        PublickeyVO pk = new PublickeyVO(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        pk.setPublicKey(com.yihu.jw.security.utils.RSAUtils.generateBase64PublicKey(keyPair)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return ObjEnvelop.getSuccess("success",pk); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return ObjEnvelop.getSuccess("success", pk); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 获取验证码 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param parameters 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @throws Exception 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @RequestMapping(value = "/oauth/captcha", method = RequestMethod.GET) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public ResponseEntity<Oauth2Envelop<Captcha>> captcha(@RequestParam Map<String, String> parameters) throws  Exception{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public ResponseEntity<Oauth2Envelop<Captcha>> captcha(@RequestParam Map<String, String> parameters) throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String client_id = parameters.get("client_id"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String username = parameters.get("username"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (StringUtils.isEmpty(client_id)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            throw new InvalidRequestException("client_id"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (StringUtils.isEmpty(username)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (StringUtils.isEmpty(username)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            throw new InvalidRequestException("username"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        //验证请求间隔超时,防止频繁获取验证码 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -350,8 +353,8 @@ public class WlyyLoginEndpoint extends AbstractEndpoint { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        params.add("to", username); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        HttpEntity<MultiValueMap<String, String>> httpEntity = new HttpEntity<>(params, reqHeaders); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        HashMap<String, Object> result = restTemplate.postForObject("http://svr-base:10020/sms_gateway/send", httpEntity, HashMap.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (200 == (Integer) result.get("status")){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            Map<String, Object> sms =  (Map)result.get("obj"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (200 == (Integer) result.get("status")) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            Map<String, Object> sms = (Map) result.get("obj"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            String captcha = (String) sms.get("captcha"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            Date deadline = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse((String) sms.get("deadline")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            Long expire = (deadline.getTime() - System.currentTimeMillis()) / 1000; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -369,7 +372,7 @@ public class WlyyLoginEndpoint extends AbstractEndpoint { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            JSONObject jsonStr = JSONObject.parseObject(message); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if(jsonStr.containsKey("Message")){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if (jsonStr.containsKey("Message")) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                message = jsonStr.getString("Message"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } catch (Exception e) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -390,22 +393,23 @@ public class WlyyLoginEndpoint extends AbstractEndpoint { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 验证验证码 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param parameters 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @throws Exception 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @RequestMapping(value = "/oauth/captcha", method = RequestMethod.POST) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public ResponseEntity<Oauth2Envelop> captchaCheck  (@RequestParam Map<String, String> parameters) throws  Exception{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public ResponseEntity<Oauth2Envelop> captchaCheck(@RequestParam Map<String, String> parameters) throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String client_id = parameters.get("client_id"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String username = parameters.get("username"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String captcha = parameters.get("captcha"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (StringUtils.isEmpty(client_id)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            throw new InvalidRequestException("client_id"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (StringUtils.isEmpty(username)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (StringUtils.isEmpty(username)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            throw new InvalidRequestException("username"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (StringUtils.isEmpty(captcha)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (StringUtils.isEmpty(captcha)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            throw new InvalidRequestException("captcha"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Oauth2Envelop<Boolean> oauth2Envelop; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -422,13 +426,13 @@ public class WlyyLoginEndpoint extends AbstractEndpoint { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 登陆 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param parameters 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 不定入参: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * login_type 用户类型 1或默认为user,2:医生登录,3:患者登录 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * mobile:手机号 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * captcha:验证码 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * clientId: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * login_type 用户类型 1或默认为user,2:医生登录,3:患者登录 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param parameters  不定入参: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     *                    login_type 用户类型 1或默认为user,2:医生登录,3:患者登录 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     *                    mobile:手机号 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     *                    captcha:验证码 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     *                    clientId: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     *                    login_type 用户类型 1或默认为user,2:医生登录,3:患者登录 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param httpSession 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @throws Exception 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -446,7 +450,7 @@ public class WlyyLoginEndpoint extends AbstractEndpoint { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            throw new InvalidRequestException("regist type is null"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        //type :1居民  2:医生 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if("3".equals(type)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if ("3".equals(type)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            String mobile = parameters.get("mobile"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            String captcha = parameters.get("captcha"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            HttpHeaders reqHeaders = new HttpHeaders(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -456,18 +460,18 @@ public class WlyyLoginEndpoint extends AbstractEndpoint { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            params.add("openid", parameters.get("openid")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            HttpEntity<MultiValueMap<String, String>> httpEntity = new HttpEntity<>(params, reqHeaders); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            Map<String, Object> result = restTemplate.postForObject("http://svr-patient:10021/basePatient/regist", httpEntity, HashMap.class);//svr-patient 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            Map<String,Object> obj = (Map<String, Object>) result.get("obj"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if("1".equals(obj.get("code")+"")){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            Map<String, Object> obj = (Map<String, Object>) result.get("obj"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if ("1".equals(obj.get("code") + "")) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                registFlag = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                parameters.put("username",mobile); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                parameters.put("username", mobile); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                wlyyRedisVerifyCodeService.store(client_id, mobile, captcha, 120); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            }else{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                return getFailedResponse(obj.get("message").toString(),-1,null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                return getFailedResponse(obj.get("message").toString(), -1, null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        }else{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            return getFailedResponse("暂不提供其他类型人员注册",-1,null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            return getFailedResponse("暂不提供其他类型人员注册", -1, null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if(registFlag){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (registFlag) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            parameters.put("grant_type", "captcha"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            ClientDetails authenticatedClient = clientDetailsService.loadClientByClientId(client_id); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -502,7 +506,7 @@ public class WlyyLoginEndpoint extends AbstractEndpoint { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            String loginType = parameters.get("login_type"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            userDetailsService.setRolePhth(loginType,token,wlyyUserSimple.getId(),redisTemplate); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            userDetailsService.setRolePhth(loginType, token, wlyyUserSimple.getId(), redisTemplate); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            BaseLoginLogDO baseLoginLogDO = new BaseLoginLogDO(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            baseLoginLogDO.setUserId(wlyyUserSimple.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            baseLoginLogDO.setCreateTime(new Date()); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -510,7 +514,7 @@ public class WlyyLoginEndpoint extends AbstractEndpoint { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            baseLoginLogDO.setUserAgent(userAgent); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            baseLoginLogDO.setLoginType(loginType); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            String openid = parameters.get("openid"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if(!StringUtils.isEmpty(openid) && "undefined".equalsIgnoreCase(openid)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if (!StringUtils.isEmpty(openid) && "undefined".equalsIgnoreCase(openid)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                baseLoginLogDO.setOpenid(openid); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            baseLoginLogService.save(baseLoginLogDO); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -539,7 +543,7 @@ public class WlyyLoginEndpoint extends AbstractEndpoint { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return new ResponseEntity<>(oauth2Envelop, headers, HttpStatus.OK); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private ResponseEntity<Oauth2Envelop<WlyyUserSimple>> getFailedResponse(String message ,int status,WlyyUserSimple ehrUserSimple) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private ResponseEntity<Oauth2Envelop<WlyyUserSimple>> getFailedResponse(String message, int status, WlyyUserSimple ehrUserSimple) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        HttpHeaders headers = new HttpHeaders(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        headers.set("Cache-Control", "no-store"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        headers.set("Pragma", "no-cache"); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -553,7 +557,7 @@ public class WlyyLoginEndpoint extends AbstractEndpoint { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return wlyyOAuth2ExceptionTranslator; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   @ExceptionHandler(Exception.class) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @ExceptionHandler(Exception.class) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public ResponseEntity<Oauth2Envelop> handleException(Exception e) throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        LOG.debug(e.getMessage(), e); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (e instanceof UsernameNotFoundException) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -561,7 +565,7 @@ public class WlyyLoginEndpoint extends AbstractEndpoint { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } else if (e instanceof NoSuchClientException) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            return handleOAuth2Exception(new Oauth2Envelop("应用未注册!", ResultStatus.INVALID_GRANT), e); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } else if (e instanceof InvalidGrantException || e instanceof UsernameNotFoundException) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            return handleOAuth2Exception(new Oauth2Envelop(invalidGrantMessage((InvalidGrantException)e), ResultStatus.INVALID_GRANT), e); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            return handleOAuth2Exception(new Oauth2Envelop(invalidGrantMessage((InvalidGrantException) e), ResultStatus.INVALID_GRANT), e); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } else if (e instanceof InvalidTokenException) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            return handleOAuth2Exception(new Oauth2Envelop("Token过期!", ResultStatus.EXPIRE), e); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } else if (e instanceof InvalidRequestException) { 
			 |