Browse Source

Merge branch 'dev' of LiTaohong/wlyy2.0 into dev

LiTaohong 5 years ago
parent
commit
2d669ddfda

+ 42 - 18
server/svr-authentication/src/main/java/com/yihu/jw/security/core/userdetails/jdbc/WlyyUserDetailsService.java

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

+ 84 - 0
server/svr-authentication/src/main/java/com/yihu/jw/security/model/PatientWechat.java

@ -0,0 +1,84 @@
package com.yihu.jw.security.model;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.io.Serializable;
import java.util.Date;
/**
 * Model - 居民微信openid
 * Created by lith on 2019/7/3.
 */
public class PatientWechat implements Serializable {
    private String id; //对应患者,医生等表中的id字段
    //用户名
    private String saasId;
    //姓名
    private String name;
    //身份证号码
    private String wechatId;
    //手机号码
    private String openid;
    //patient_id
    private String unionid;
    //最后登陆时间
    private Date createTime;
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getSaasId() {
        return saasId;
    }
    public void setSaasId(String saasId) {
        this.saasId = saasId;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getWechatId() {
        return wechatId;
    }
    public void setWechatId(String wechatId) {
        this.wechatId = wechatId;
    }
    public String getOpenid() {
        return openid;
    }
    public void setOpenid(String openid) {
        this.openid = openid;
    }
    public String getUnionid() {
        return unionid;
    }
    public void setUnionid(String unionid) {
        this.unionid = unionid;
    }
    public Date getCreateTime() {
        return createTime;
    }
    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }
}

+ 0 - 28
server/svr-authentication/src/main/java/com/yihu/jw/security/model/WlyyUserDetails.java

@ -115,17 +115,6 @@ public class WlyyUserDetails implements Serializable {
    private String address;
    /**
     * i健康微信编号
     */
    private String ihealthOpenid;
    /**
     * i健康微信编号添加时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08:00")
    private Date ihealthOpenidTime;
    public Date getBirthday() {
        return birthday;
@ -199,23 +188,6 @@ public class WlyyUserDetails implements Serializable {
        this.streetName = streetName;
    }
    public String getIhealthOpenid() {
        return ihealthOpenid;
    }
    public void setIhealthOpenid(String ihealthOpenid) {
        this.ihealthOpenid = ihealthOpenid;
    }
    public Date getIhealthOpenidTime() {
        return ihealthOpenidTime;
    }
    public void setIhealthOpenidTime(Date ihealthOpenidTime) {
        this.ihealthOpenidTime = ihealthOpenidTime;
    }
    public String getId() {
        return id;
    }

+ 1 - 1
server/svr-authentication/src/main/java/com/yihu/jw/security/oauth2/provider/WlyyTokenGranter.java

@ -63,7 +63,7 @@ public class WlyyTokenGranter implements TokenGranter {
                        requestFactory
                ));
        tokenGranters.put(WlyyImplicitTokenGranter.GRANT_TYPE,
            tokenGranters.put(WlyyImplicitTokenGranter.GRANT_TYPE,
                new WlyyImplicitTokenGranter(
                        tokenServices,
                        clientDetailsService,

+ 38 - 3
server/svr-authentication/src/main/resources/application.yml

@ -1,6 +1,8 @@
server:
  port: 10260
spring:
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
@ -26,14 +28,24 @@ user:
---
spring:
  profiles: jwdev
  ##发现服务
  datasource:
    url: jdbc:mysql://172.26.0.114/base?useUnicode:true&characterEncoding=utf-8&autoReconnect=true
    username: root
    password: jkzlehr
    username: ssgg
    password: ssgg@jkzl2019
  redis:
    host: 172.26.0.253 # Redis server host.
    port: 6379 # Redis server port.
#    password: jkzl_ehr
eureka:
  client:
    healthcheck:
      enabled: true #监控检查
    serviceUrl:
      defaultZone: http://jw:jkzl@172.26.0.107:8761/eureka/
  instance:
    prefer-ip-address: false
    instance-id: ${spring.cloud.client.ipAddress}:${server.port}
# i健康用户信息接口,开放出来给互联网医院登录同步用户信息用
iHealth:
@ -48,6 +60,17 @@ spring:
  redis:
    host: 172.26.0.253 # Redis server host.
    port: 6379 # Redis server port.
  ##发现服务
eureka:
  client:
    healthcheck:
      enabled: true #监控检查
    serviceUrl:
      defaultZone: http://jw:jkzl@172.26.0.107:8761/eureka/
  instance:
    prefer-ip-address: false
    instance-id: ${spring.cloud.client.ipAddress}:${server.port}
## i健康用户信息接口,开放出来给互联网医院登录同步用户信息用
iHealth:
  user-info-uri: http://ehr.yihu.com/wlyy/iHealth/userInfo
@ -62,5 +85,17 @@ spring:
    host: 192.0.33.26 # Redis server host.
    port: 6390 # Redis server port.
    password: Kb6wKDQP1W4
  ##发现服务
eureka:
  client:
    healthcheck:
      enabled: true #监控检查
    serviceUrl:
      defaultZone: http://jw:jkzl@172.26.0.107:8761/eureka/
  instance:
    prefer-ip-address: false
    instance-id: ${spring.cloud.client.ipAddress}:${server.port}
iHealth:
  user-info-uri: http://ehr.yihu.com/wlyy/iHealth/userInfo

+ 1 - 31
server/svr-authentication/src/main/resources/bootstrap.yml

@ -16,16 +16,6 @@ spring:
        enabled: true
        service-id: svr-configuration
##发现服务
eureka:
  client:
    healthcheck:
      enabled: true #监控检查
    serviceUrl:
      defaultZone: http://jw:jkzl@172.26.0.107:8761/eureka/
  instance:
    prefer-ip-address: false
    instance-id: ${spring.cloud.client.ipAddress}:${server.port}
---
spring:
  profiles: jwtest
@ -34,16 +24,6 @@ spring:
      discovery:
        enabled: true
        service-id: svr-configuration
##发现服务
eureka:
  client:
    healthcheck:
      enabled: true #监控检查
    serviceUrl:
      defaultZone: http://jw:jkzl@172.26.0.107:8761/eureka/
  instance:
    prefer-ip-address: false
    instance-id: ${spring.cloud.client.ipAddress}:${server.port}
---
spring:
@ -52,14 +32,4 @@ spring:
    config:
      discovery:
        enabled: true
        service-id: svr-configuration
##发现服务
eureka:
  client:
    healthcheck:
      enabled: true #监控检查
    serviceUrl:
      defaultZone: http://jw:jkzl@192.0.33.26:8761/eureka/
  instance:
    prefer-ip-address: false
    instance-id: ${spring.cloud.client.ipAddress}:${server.port}
        service-id: svr-configuration