|  | @ -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) {
 |