|  | @ -28,6 +28,7 @@ import org.springframework.web.context.request.ServletRequestAttributes;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | import javax.servlet.http.HttpServletRequest;
 | 
	
		
			
				|  |  | import javax.sql.DataSource;
 | 
	
		
			
				|  |  | import java.security.KeyPair;
 | 
	
		
			
				|  |  | import java.sql.Timestamp;
 | 
	
		
			
				|  |  | import java.util.*;
 | 
	
		
			
				|  |  | import java.util.concurrent.TimeUnit;
 | 
	
	
		
			
				|  | @ -43,7 +44,7 @@ public class WlyyUserDetailsService extends JdbcDaoSupport implements UserDetail
 | 
	
		
			
				|  |  |     private static final String DEFAULT_DOCTOR_DETAILS_STATEMENT = "SELECT * FROM base_doctor d WHERE d.mobile = ? OR d.idcard = ?";
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     private static final String DEFAULT_PATIENT_DETAILS_STATEMENT = "SELECT * FROM base_patient p WHERE p.mobile = ? OR p.idcard = ?";
 | 
	
		
			
				|  |  |     private static final String DEFAULT_PATIENT_DETAILS_ID_STATEMENT = "SELECT * FROM base_patient p WHERE p.id = ? ";
 | 
	
		
			
				|  |  |     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`," +
 | 
	
	
		
			
				|  | @ -112,7 +113,7 @@ public class WlyyUserDetailsService extends JdbcDaoSupport implements UserDetail
 | 
	
		
			
				|  |  |         } else if ("2".equals(loginType)) {//2.为医生账号
 | 
	
		
			
				|  |  |             //解除锁定
 | 
	
		
			
				|  |  |             this.getJdbcTemplate().update("update base_doctor d set d.login_failure_count = 0, d.locked = 0 where d.mobile = ? or d.idcard = ?", username, username);
 | 
	
		
			
				|  |  |         } else if ("3".equals(loginType)) { //3.患者账号
 | 
	
		
			
				|  |  |         } else if ("3".equals(loginType) || "4".equals(loginType)) { //3.患者账号
 | 
	
		
			
				|  |  |             //解除锁定
 | 
	
		
			
				|  |  |             this.getJdbcTemplate().update("update base_patient p set p.login_failure_count = 5, p.locked = 0 where p.mobile = ? or p.idcard = ?", username, username);
 | 
	
		
			
				|  |  |         } //...
 | 
	
	
		
			
				|  | @ -150,7 +151,7 @@ public class WlyyUserDetailsService extends JdbcDaoSupport implements UserDetail
 | 
	
		
			
				|  |  |             users = this.getJdbcTemplate().query(DEFAULT_PATIENT_DETAILS_STATEMENT, new BeanPropertyRowMapper(WlyyUserDetails.class), username, username);
 | 
	
		
			
				|  |  |             // 去i健康查询用户
 | 
	
		
			
				|  |  |         }else if("4".equals(loginType)){
 | 
	
		
			
				|  |  |             users = this.getJdbcTemplate().query(DEFAULT_PATIENT_DETAILS_ID_STATEMENT, new BeanPropertyRowMapper(WlyyUserDetails.class), username);
 | 
	
		
			
				|  |  |             users = this.getJdbcTemplate().query(DEFAULT_PATIENT_DETAILS_IDCARD_STATEMENT, new BeanPropertyRowMapper(WlyyUserDetails.class), getIdcard());
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |             if ((null == users || users.size() == 0) && "4".equals(loginType)) {
 | 
	
		
			
				|  |  |                 List<NameValuePair> params = new ArrayList<>();
 | 
	
	
		
			
				|  | @ -203,7 +204,8 @@ public class WlyyUserDetailsService extends JdbcDaoSupport implements UserDetail
 | 
	
		
			
				|  |  |                             }
 | 
	
		
			
				|  |  |                     );
 | 
	
		
			
				|  |  |                 }catch (Exception e){
 | 
	
		
			
				|  |  |                     e.printStackTrace();
 | 
	
		
			
				|  |  |                     logger.error("将i健康居民数据同步到互联网医院居民表失败:" + e.getMessage());
 | 
	
		
			
				|  |  |                     return users;
 | 
	
		
			
				|  |  |                 }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |                 WlyyUserDetails user = new WlyyUserDetails();
 | 
	
	
		
			
				|  | @ -367,7 +369,7 @@ public class WlyyUserDetailsService extends JdbcDaoSupport implements UserDetail
 | 
	
		
			
				|  |  |         } else if("4".equals(loginType)){
 | 
	
		
			
				|  |  |             //更新登录时间
 | 
	
		
			
				|  |  |             this.getJdbcTemplate().update("update base_patient p set p.login_failure_count = 0, p.login_date = ? where p.mobile = ? or p.idcard = ?", new Date(), username, username);
 | 
	
		
			
				|  |  |             users = this.getJdbcTemplate().query(DEFAULT_PATIENT_DETAILS_ID_STATEMENT, new BeanPropertyRowMapper(WlyyUserSimple.class), username);
 | 
	
		
			
				|  |  |             users = this.getJdbcTemplate().query(DEFAULT_PATIENT_DETAILS_IDCARD_STATEMENT, new BeanPropertyRowMapper(WlyyUserSimple.class), getIdcard());
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         return users;
 | 
	
	
		
			
				|  | @ -415,6 +417,20 @@ public class WlyyUserDetailsService extends JdbcDaoSupport implements UserDetail
 | 
	
		
			
				|  |  |         return clientId;
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |   /**
 | 
	
		
			
				|  |  |      * 获取i健康用户登录openid型
 | 
	
		
			
				|  |  |      *
 | 
	
		
			
				|  |  |      * @return
 | 
	
		
			
				|  |  |      */
 | 
	
		
			
				|  |  |     public String getIdcard() {
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
 | 
	
		
			
				|  |  |         KeyPair keyPair = (KeyPair) request.getAttribute("privateKey");
 | 
	
		
			
				|  |  |         String idcard = com.yihu.jw.security.utils.RSAUtils.decryptBase64(request.getParameter("idcard"), keyPair);
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         return idcard;
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     public boolean setRolePhth(String loginType, OAuth2AccessToken token, String id, StringRedisTemplate redisTemplate) {
 | 
	
		
			
				|  |  | 
 |