|  | @ -1,8 +1,10 @@
 | 
												
													
														
															|  | package com.yihu.jw.security.oauth2.provider.endpoint;
 |  | package com.yihu.jw.security.oauth2.provider.endpoint;
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  | import com.alibaba.fastjson.JSONObject;
 |  | import com.alibaba.fastjson.JSONObject;
 | 
												
													
														
															|  | 
 |  | import com.yihu.jw.entity.base.login.BaseLoginLogDO;
 | 
												
													
														
															|  | import com.yihu.jw.restmodel.web.ObjEnvelop;
 |  | import com.yihu.jw.restmodel.web.ObjEnvelop;
 | 
												
													
														
															|  | import com.yihu.jw.security.core.userdetails.jdbc.WlyyUserDetailsService;
 |  | import com.yihu.jw.security.core.userdetails.jdbc.WlyyUserDetailsService;
 | 
												
													
														
															|  | 
 |  | import com.yihu.jw.security.login.service.BaseLoginLogService;
 | 
												
													
														
															|  | import com.yihu.jw.security.model.*;
 |  | import com.yihu.jw.security.model.*;
 | 
												
													
														
															|  | import com.yihu.jw.security.oauth2.core.redis.WlyyRedisVerifyCodeService;
 |  | import com.yihu.jw.security.oauth2.core.redis.WlyyRedisVerifyCodeService;
 | 
												
													
														
															|  | import com.yihu.jw.security.oauth2.provider.WlyyTokenGranter;
 |  | import com.yihu.jw.security.oauth2.provider.WlyyTokenGranter;
 | 
												
											
												
													
														
															|  | @ -85,6 +87,8 @@ public class WlyyLoginEndpoint extends AbstractEndpoint {
 | 
												
													
														
															|  |     private WlyyRedisVerifyCodeService wlyyRedisVerifyCodeService;
 |  |     private WlyyRedisVerifyCodeService wlyyRedisVerifyCodeService;
 | 
												
													
														
															|  |     @Autowired
 |  |     @Autowired
 | 
												
													
														
															|  |     private StringRedisTemplate redisTemplate;
 |  |     private StringRedisTemplate redisTemplate;
 | 
												
													
														
															|  | 
 |  |     @Autowired
 | 
												
													
														
															|  | 
 |  |     private BaseLoginLogService baseLoginLogService;
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |     @PostConstruct
 |  |     @PostConstruct
 | 
												
													
														
															|  |     private void init() {
 |  |     private void init() {
 | 
												
											
												
													
														
															|  | @ -158,11 +162,12 @@ public class WlyyLoginEndpoint extends AbstractEndpoint {
 | 
												
													
														
															|  |         wlyyUserSimple.setRefreshToken(token.getRefreshToken().getValue());
 |  |         wlyyUserSimple.setRefreshToken(token.getRefreshToken().getValue());
 | 
												
													
														
															|  |         wlyyUserSimple.setUser(parameters.get("username"));
 |  |         wlyyUserSimple.setUser(parameters.get("username"));
 | 
												
													
														
															|  |         wlyyUserSimple.setState(parameters.get("state"));
 |  |         wlyyUserSimple.setState(parameters.get("state"));
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |         String loginType = parameters.get("login_type");
 |  |         String loginType = parameters.get("login_type");
 | 
												
													
														
															|  |         String openid = parameters.get("openid");
 |  |         String openid = parameters.get("openid");
 | 
												
													
														
															|  |         //更新患者openId
 |  |         //更新患者openId
 | 
												
													
														
															|  |         if(!StringUtils.isEmpty(openid) && !"undefined".equalsIgnoreCase(openid) && "3".equalsIgnoreCase(loginType)){
 |  | 
 | 
												
													
														
															|  | 
 |  |         BaseLoginLogDO baseLoginLogDO = new BaseLoginLogDO();
 | 
												
													
														
															|  | 
 |  |         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) {
 |  |         if (parameters.get("password") != null) {
 | 
												
											
												
													
														
															|  | @ -170,6 +175,14 @@ public class WlyyLoginEndpoint extends AbstractEndpoint {
 | 
												
													
														
															|  |             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());
 | 
												
													
														
															|  | 
 |  |         String userAgent = JSONObject.toJSONString(wlyyUserSimple);
 | 
												
													
														
															|  | 
 |  |         baseLoginLogDO.setUserAgent(userAgent);
 | 
												
													
														
															|  | 
 |  |         baseLoginLogDO.setLoginType(loginType);
 | 
												
													
														
															|  | 
 |  |         baseLoginLogService.save(baseLoginLogDO);
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |         return getResponse(wlyyUserSimple);
 |  |         return getResponse(wlyyUserSimple);
 | 
												
													
														
															|  |     }
 |  |     }
 | 
												
													
														
															|  | 
 |  | 
 | 
												
											
												
													
														
															|  | @ -214,6 +227,24 @@ public class WlyyLoginEndpoint extends AbstractEndpoint {
 | 
												
													
														
															|  |         return getResponse(wlyyUserSimple);
 |  |         return getResponse(wlyyUserSimple);
 | 
												
													
														
															|  |     }
 |  |     }
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  | 
 |  |     /**
 | 
												
													
														
															|  | 
 |  |      *
 | 
												
													
														
															|  | 
 |  |      * @param openid
 | 
												
													
														
															|  | 
 |  |      * @return
 | 
												
													
														
															|  | 
 |  |      */
 | 
												
													
														
															|  | 
 |  |     @RequestMapping(value = "/oauth/getByOpenId", method = RequestMethod.POST)
 | 
												
													
														
															|  | 
 |  |     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);
 | 
												
													
														
															|  | 
 |  |         }
 | 
												
													
														
															|  | 
 |  |         String userAgent = loginLog.getUserAgent();
 | 
												
													
														
															|  | 
 |  |         WlyyUserSimple wlyyUserSimple = JSONObject.parseObject(userAgent, WlyyUserSimple.class);
 | 
												
													
														
															|  | 
 |  | //        String accessToken = wlyyUserSimple.getAccessToken();
 | 
												
													
														
															|  | 
 |  | //        OAuth2AccessToken oAuth2AccessToken = tokenStore.readAccessToken(accessToken);
 | 
												
													
														
															|  | 
 |  |         return getResponse(wlyyUserSimple);
 | 
												
													
														
															|  | 
 |  |     }
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |     /**
 |  |     /**
 | 
												
													
														
															|  |      * 登出
 |  |      * 登出
 | 
												
													
														
															|  |      * @param parameters
 |  |      * @param parameters
 | 
												
											
												
													
														
															|  | @ -466,7 +497,17 @@ public class WlyyLoginEndpoint extends AbstractEndpoint {
 | 
												
													
														
															|  |             String loginType = parameters.get("login_type");
 |  |             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());
 | 
												
													
														
															|  | 
 |  |             String userAgent = JSONObject.toJSONString(wlyyUserSimple);
 | 
												
													
														
															|  | 
 |  |             baseLoginLogDO.setUserAgent(userAgent);
 | 
												
													
														
															|  | 
 |  |             baseLoginLogDO.setLoginType(loginType);
 | 
												
													
														
															|  | 
 |  |             String openid = parameters.get("openid");
 | 
												
													
														
															|  | 
 |  |             if(!StringUtils.isEmpty(openid) && "undefined".equalsIgnoreCase(openid)){
 | 
												
													
														
															|  | 
 |  |                 baseLoginLogDO.setOpenid(openid);
 | 
												
													
														
															|  | 
 |  |             }
 | 
												
													
														
															|  | 
 |  |             baseLoginLogService.save(baseLoginLogDO);
 | 
												
													
														
															|  |             return getResponse(wlyyUserSimple);
 |  |             return getResponse(wlyyUserSimple);
 | 
												
													
														
															|  |         }
 |  |         }
 | 
												
													
														
															|  |         return null;
 |  |         return null;
 |