Browse Source

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

LiTaohong 6 years ago
parent
commit
51552f1282

+ 123 - 58
common/common-entity/src/main/java/com/yihu/jw/entity/hospital/prescription/WlyyPatientExpressageAddrDO.java

@ -1,6 +1,9 @@
package com.yihu.jw.entity.hospital.prescription;
import com.yihu.jw.entity.UuidIdentityEntity;
import com.yihu.jw.entity.UuidIdentityEntityWithOperator;
import org.springframework.data.annotation.CreatedDate;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
@ -8,185 +11,247 @@ import java.util.Date;
/**
* 居民收获地址实体
*
* @author Administrator on  2019年06月12日
*
*/
 * 居民收获地址实体
 *
 * @author Administrator on  2019年06月12日
 */
@Entity
@Table(name = "wlyy_patient_expressage_addr")
public class WlyyPatientExpressageAddrDO extends UuidIdentityEntityWithOperator {
public class WlyyPatientExpressageAddrDO extends UuidIdentityEntity {
    /**
     * 居民标识
     */
    private String patient;
    /**
     * 省编码
     */
    private String provinceCode;
    /**
	 * 居民标识
	 */
	private String patient;
     * 省名称
     */
    private String provinceName;
    /**
	 * 省编码
	 */
	private String provinceCode;
     * 市编码
     */
    private String cityCode;
    /**
	 * 省名称
	 */
	private String provinceName;
     * 城市名称
     */
    private String cityName;
    /**
	 * 市编码
	 */
	private String cityCode;
     * 区县编码
     */
    private String townCode;
    /**
	 * 城市名称
	 */
	private String cityName;
     * 区县名称
     */
    private String townName;
    /**
	 * 区县编码
	 */
	private String townCode;
     * 街道编码
     */
    private String streetCode;
    /**
	 * 区县名称
	 */
	private String townName;
     * 街道名称
     */
    private String streetName;
    /**
	 * 街道编码
	 */
	private String streetCode;
     * 居住居委会代码
     */
    private String committeeCode;
    /**
	 * 街道名称
	 */
	private String streetName;
     * 居住居委会名称
     */
    private String committeeName;
    /**
	 * 居住居委会代码
	 */
	private String committeeCode;
     * 具体详细地址
     */
    private String address;
    /**
	 * 居住居委会名称
	 */
	private String committeeName;
     * 收货人姓名
     */
    private String name;
    /**
	 * 具体详细地址
	 */
	private String address;
     * 收货人手机号
     */
    private String mobile;
    /**
	 * 作废标识,1正常,0作废
	 */
	private String del;
     * 作废标识,1正常,0作废
     */
    private String del;
    /**
     * 是否是默认地址,1是,0不是,一个用户只能有一个默认地址
     */
    private Integer isDefault;
    //创建时间
    @CreatedDate
    protected Date createTime;
	@Column(name = "patient")
    @Column(name = "patient")
    public String getPatient() {
        return patient;
    }
    public void setPatient(String patient) {
        this.patient = patient;
    }
	@Column(name = "province_code")
    @Column(name = "province_code")
    public String getProvinceCode() {
        return provinceCode;
    }
    public void setProvinceCode(String provinceCode) {
        this.provinceCode = provinceCode;
    }
	@Column(name = "province_name")
    @Column(name = "province_name")
    public String getProvinceName() {
        return provinceName;
    }
    public void setProvinceName(String provinceName) {
        this.provinceName = provinceName;
    }
	@Column(name = "city_code")
    @Column(name = "city_code")
    public String getCityCode() {
        return cityCode;
    }
    public void setCityCode(String cityCode) {
        this.cityCode = cityCode;
    }
	@Column(name = "city_name")
    @Column(name = "city_name")
    public String getCityName() {
        return cityName;
    }
    public void setCityName(String cityName) {
        this.cityName = cityName;
    }
	@Column(name = "town_code")
    @Column(name = "town_code")
    public String getTownCode() {
        return townCode;
    }
    public void setTownCode(String townCode) {
        this.townCode = townCode;
    }
	@Column(name = "town_name")
    @Column(name = "town_name")
    public String getTownName() {
        return townName;
    }
    public void setTownName(String townName) {
        this.townName = townName;
    }
	@Column(name = "street_code")
    @Column(name = "street_code")
    public String getStreetCode() {
        return streetCode;
    }
    public void setStreetCode(String streetCode) {
        this.streetCode = streetCode;
    }
	@Column(name = "street_name")
    @Column(name = "street_name")
    public String getStreetName() {
        return streetName;
    }
    public void setStreetName(String streetName) {
        this.streetName = streetName;
    }
	@Column(name = "committee_code")
    @Column(name = "committee_code")
    public String getCommitteeCode() {
        return committeeCode;
    }
    public void setCommitteeCode(String committeeCode) {
        this.committeeCode = committeeCode;
    }
	@Column(name = "committee_name")
    @Column(name = "committee_name")
    public String getCommitteeName() {
        return committeeName;
    }
    public void setCommitteeName(String committeeName) {
        this.committeeName = committeeName;
    }
	@Column(name = "address")
    @Column(name = "address")
    public String getAddress() {
        return address;
    }
    public void setAddress(String address) {
        this.address = address;
    }
	@Column(name = "del")
    @Column(name = "del")
    public String getDel() {
        return del;
    }
    public void setDel(String del) {
        this.del = del;
    }
    @Column(name = "isdefault")
    public Integer getIsDefault() {
        return isDefault;
    }
    public void setIsDefault(Integer isDefault) {
        this.isDefault = isDefault;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getMobile() {
        return mobile;
    }
    public void setMobile(String mobile) {
        this.mobile = mobile;
    }
    public Date getCreateTime() {
        return createTime;
    }
    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }
}

+ 2 - 0
common/common-request-mapping/src/main/java/com/yihu/jw/rm/hospital/BaseHospitalRequestMapping.java

@ -230,6 +230,8 @@ public class BaseHospitalRequestMapping {
     */
    public static class WlyyPatientExpressageAddr extends Basic {
        public static final String PREFIX  = "/expressageAddr";
        public static final String setDefault  = "/setDefault";
        public static final String hasDefault  = "/hasDefault";
    }
}

+ 58 - 3
common/common-rest-model/src/main/java/com/yihu/jw/restmodel/hospital/prescription/WlyyPatientExpressageAddrVO.java

@ -1,9 +1,8 @@
package com.yihu.jw.restmodel.hospital.prescription;
import com.yihu.jw.restmodel.UuidIdentityVOWithOperator;
import com.yihu.jw.restmodel.UuidIdentityVO;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.util.Date;
@ -20,7 +19,7 @@ import java.util.Date;
 * @since 1.
 */
@ApiModel(value = "WlyyPatientExpressageAddrVO", description = "居民收获地址")
public class WlyyPatientExpressageAddrVO extends UuidIdentityVOWithOperator {
public class WlyyPatientExpressageAddrVO extends UuidIdentityVO {
    /**
	 * 居民标识
@ -100,6 +99,32 @@ public class WlyyPatientExpressageAddrVO extends UuidIdentityVOWithOperator {
	@ApiModelProperty(value = "作废标识,1正常,0作废", example = "模块1")
    private String del;
    /**
     * 收货人手机号
     */
    @ApiModelProperty(value = "收货人手机号", example = "模块1")
    private String mobile;
    /**
     * 收货人姓名
     */
    @ApiModelProperty(value = "收货人姓名", example = "模块1")
    private String name;
    /**
     * 是否是默认地址,1是,0不是,一个用户只能有一个默认地址
     */
    @ApiModelProperty(value = "默认地址标识,1是,0不是", example = "模块1")
    private Integer isDefault;
    /**
     * 是否是默认地址,1是,0不是,一个用户只能有一个默认地址
     */
    @ApiModelProperty(value = "默认地址标识,1是,0不是", example = "模块1")
    private Date createTime;
    public String getPatient() {
        return patient;
@ -192,5 +217,35 @@ public class WlyyPatientExpressageAddrVO extends UuidIdentityVOWithOperator {
        this.del = del;
    }
    public Integer getIsDefault() {
        return isDefault;
    }
    public void setIsDefault(Integer isDefault) {
        this.isDefault = isDefault;
    }
    public String getMobile() {
        return mobile;
    }
    public void setMobile(String mobile) {
        this.mobile = mobile;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Date getCreateTime() {
        return createTime;
    }
    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }
}

+ 3 - 3
gateway/ag-basic/src/main/java/com/yihu/jw/gateway/filter/BasicZuulFilter.java

@ -125,10 +125,10 @@ public class BasicZuulFilter extends ZuulFilter {
    private String extractToken(HttpServletRequest request) {
        String accessToken = request.getHeader(ACCESS_TOKEN_PARAMETER);
        if (null == accessToken) {
            accessToken = request.getParameter(ACCESS_TOKEN_PARAMETER);
        }
        return accessToken;
        accessToken = request.getParameter(ACCESS_TOKEN_PARAMETER);
    }
        return accessToken;
}
    private Object forbidden(RequestContext requestContext, int status, String errorMsg) {
        requestContext.setSendZuulResponse(false);

+ 11 - 0
gateway/ag-basic/src/main/resources/bootstrap.yml

@ -7,6 +7,17 @@ spring:
      username: jw
      password: jkzl
#发现服务
eureka:
  client:
    healthcheck:
      enabled: false #监控检查
    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: jwdev

+ 4 - 0
server/svr-authentication/src/main/java/com/yihu/jw/security/oauth2/config/WlyyAuthorizationServerConfigurerAdapter.java

@ -4,6 +4,7 @@ import com.yihu.jw.security.oauth2.provider.client.WlyyJdbcClientRedirectUriServ
import com.yihu.jw.security.oauth2.provider.WlyyTokenGranter;
import com.yihu.jw.security.oauth2.core.redis.WlyyRedisVerifyCodeService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
@ -83,6 +84,7 @@ public class WlyyAuthorizationServerConfigurerAdapter extends AuthorizationServe
    @Bean
    RedisTokenStore redisTokenStore() {
//        return null;
        return new RedisTokenStore(jedisConnectionFactory);
    }
@ -92,8 +94,10 @@ public class WlyyAuthorizationServerConfigurerAdapter extends AuthorizationServe
    }
    @Bean
    @Primary
    AuthorizationCodeServices authorizationCodeServices() {
        return new InMemoryAuthorizationCodeServices();
//        return null;
    }
    @Bean

+ 64 - 60
server/svr-authentication/src/main/java/com/yihu/jw/security/oauth2/provider/endpoint/WlyyLoginEndpoint.java

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

+ 15 - 12
server/svr-authentication/src/main/resources/application.yml

@ -23,33 +23,34 @@ user:
  tryLoginTimes: 5 #失败重试次数
#logging:
#  level:
#    org:
#      springframework:
#        security: DEBUG
---
spring:
  profiles: jwdev
  datasource:
    url: jdbc:mysql://172.26.0.114/base?useUnicode:true&characterEncoding=utf-8&autoReconnect=true
    username: jkzl
    username: root
    password: jkzlehr
  redis:
    host: 172.26.0.253 # Redis server host.
    port: 6379 # Redis server port.
#    password: jkzl_ehr
# i健康用户信息接口,开放出来给互联网医院登录同步用户信息用
iHealth:
  user-info-uri: http://http://ehr.yihu.com/wlyy/patient/userInfo
---
spring:
  profiles: jwtest
  datasource:
    url: jdbc:mysql://172.17.110.160/base?useUnicode:true&amp;characterEncoding=utf-8&amp;autoReconnect=true
    username: ssgg
    password: ssgg
    url: jdbc:mysql://172.26.0.104/base?useUnicode:true&amp;characterEncoding=utf-8&amp;autoReconnect=true
    username: root
    password: jkzlehr
  redis:
    host: 172.19.103.88 # Redis server host.
    host: 172.26.0.253 # Redis server host.
    port: 6379 # Redis server port.
## i健康用户信息接口,开放出来给互联网医院登录同步用户信息用
iHealth:
  user-info-uri: http://http://ehr.yihu.com/wlyy/patient/userInfo
---
spring:
  profiles: jwprod
@ -59,4 +60,6 @@ spring:
    password: ssgg
  redis:
    host: 172.19.103.88 # Redis server host.
    port: 6379 # Redis server port.
    port: 6379 # Redis server port.
iHealth:
  user-info-uri: http://http://ehr.yihu.com/wlyy/patient/userInfo

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

@ -7,6 +7,18 @@ spring:
      username: jw
      password: jkzl
#发现服务
eureka:
  client:
    healthcheck:
      enabled: false #监控检查
    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: jwdev
@ -21,7 +33,7 @@ spring:
  cloud:
    config:
      uri: ${wlyy.spring.config.uri:http://172.26.0.107:1221}
      label: ${wlyy.spring.config.label:jwdev}
      label: ${wlyy.spring.config.label:jwtest}
---
spring:

+ 24 - 21
svr/svr-internet-hospital-entrance/src/main/java/com/yihu/jw/entrance/controller/expressage/WlyyPatientExpressageAddrEndpoint.java

@ -43,11 +43,11 @@ public class WlyyPatientExpressageAddrEndpoint extends EnvelopRestEndpoint {
            @ApiParam(name = "jsonData", value = "Json数据", required = true)
            @RequestParam String jsonData) throws Exception {
        StringBuilder log = new StringBuilder();
        WlyyPatientExpressageAddrDO addrDO = wlyyPatientExpressageAddrService.createAddr(jsonData,log);
        if(!StringUtils.isEmpty(log.toString())){
        WlyyPatientExpressageAddrDO addrDO = wlyyPatientExpressageAddrService.createAddr(jsonData, log);
        if (!StringUtils.isEmpty(log.toString())) {
            return failed(log.toString());
        }
        return success(addrDO, WlyyPatientExpressageAddrVO.class);
        return success(addrDO);
    }
    @PostMapping(value = BaseHospitalRequestMapping.WlyyPatientExpressageAddr.DELETE)
@ -59,6 +59,27 @@ public class WlyyPatientExpressageAddrEndpoint extends EnvelopRestEndpoint {
        return success("删除成功");
    }
    @PostMapping(value = BaseHospitalRequestMapping.WlyyPatientExpressageAddr.setDefault)
    @ApiOperation(value = "将地址设置为默认")
    public Envelop setAddrDefault(
            @ApiParam(name = "patient", value = "居民code", required = true) @RequestParam(value = "patient") String patient,
            @ApiParam(name = "addrId", value = "当前地址id", required = true) @RequestParam(value = "addrId") String addrId) {
        StringBuilder error = null;
        wlyyPatientExpressageAddrService.setAddrDefault(patient, addrId, error);
        if (null != error && !StringUtils.isEmpty(error.toString())) {
            return failed("设置默认地址失败:" + error.toString());
        }
        return success("设置默认地址成功");
    }
    @PostMapping(value = BaseHospitalRequestMapping.WlyyPatientExpressageAddr.hasDefault)
    @ApiOperation(value = "判断当前居民是否已经存在默认地址")
    public Envelop setAddrDefault(
            @ApiParam(name = "patient", value = "居民code", required = true) @RequestParam(value = "patient") String patient) {
        boolean result = wlyyPatientExpressageAddrService.hasDefault(patient);
        return success(result);
    }
    @PostMapping(value = BaseHospitalRequestMapping.WlyyPatientExpressageAddr.UPDATE)
    @ApiOperation(value = "更新")
    public ObjEnvelop<WlyyPatientExpressageAddrVO> update(
@ -72,24 +93,6 @@ public class WlyyPatientExpressageAddrEndpoint extends EnvelopRestEndpoint {
        return success(wlyyPatientExpressageAddr, WlyyPatientExpressageAddrVO.class);
    }
    @GetMapping(value = BaseHospitalRequestMapping.WlyyPatientExpressageAddr.PAGE)
    @ApiOperation(value = "获取分页")
    public PageEnvelop<WlyyPatientExpressageAddrVO> page(
            @ApiParam(name = "fields", value = "返回的字段,为空返回全部字段")
            @RequestParam(value = "fields", required = false) String fields,
            @ApiParam(name = "filters", value = "过滤器,为空检索所有条件")
            @RequestParam(value = "filters", required = false) String filters,
            @ApiParam(name = "sorts", value = "排序,规则参见说明文档")
            @RequestParam(value = "sorts", required = false) String sorts,
            @ApiParam(name = "page", value = "分页大小", required = true, defaultValue = "1")
            @RequestParam(value = "page") int page,
            @ApiParam(name = "size", value = "页码", required = true, defaultValue = "15")
            @RequestParam(value = "size") int size) throws Exception {
        List<WlyyPatientExpressageAddrDO> wlyyPatientExpressageAddrs = wlyyPatientExpressageAddrService.search(fields, filters, sorts, page, size);
        int count = (int) wlyyPatientExpressageAddrService.getCount(filters);
        return success(wlyyPatientExpressageAddrs, count, page, size, WlyyPatientExpressageAddrVO.class);
    }
    @GetMapping(value = BaseHospitalRequestMapping.WlyyPatientExpressageAddr.LIST)
    @ApiOperation(value = "获取列表")
    public ListEnvelop<WlyyPatientExpressageAddrVO> list(

+ 8 - 0
svr/svr-internet-hospital-entrance/src/main/java/com/yihu/jw/entrance/dao/WlyyPatientExpressageAddrDao.java

@ -5,6 +5,8 @@ import org.springframework.data.repository.PagingAndSortingRepository;
import com.yihu.jw.entity.hospital.prescription.WlyyPatientExpressageAddrDO;
import java.util.List;
/**
 * 
 * 居民收获地址 数据库访问层
@ -18,4 +20,10 @@ import com.yihu.jw.entity.hospital.prescription.WlyyPatientExpressageAddrDO;
 * @since 1.
 */
public interface WlyyPatientExpressageAddrDao extends PagingAndSortingRepository<WlyyPatientExpressageAddrDO, String>, JpaSpecificationExecutor<WlyyPatientExpressageAddrDO>  {
    boolean existsByPatientAndIsDefault(String patient,Integer isDefault);
    List<WlyyPatientExpressageAddrDO> queryByPatientAndIsDefault(String patient,Integer isDefault);
    List<WlyyPatientExpressageAddrDO> queryByPatient(String patient);
}

+ 51 - 1
svr/svr-internet-hospital-entrance/src/main/java/com/yihu/jw/entrance/service/WlyyPatientExpressageAddrService.java

@ -3,8 +3,14 @@ package com.yihu.jw.entrance.service;
import com.yihu.jw.entrance.dao.WlyyPatientExpressageAddrDao;
import com.yihu.jw.utils.EntityUtils;
import com.yihu.mysql.query.BaseJpaService;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.yihu.jw.entity.hospital.prescription.WlyyPatientExpressageAddrDO;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
/**
 * 居民收获地址服务service
@ -19,8 +25,14 @@ import com.yihu.jw.entity.hospital.prescription.WlyyPatientExpressageAddrDO;
@Service
public class WlyyPatientExpressageAddrService extends BaseJpaService<WlyyPatientExpressageAddrDO, WlyyPatientExpressageAddrDao> {
    Logger logger = LoggerFactory.getLogger(WlyyPatientExpressageAddrService.class);
    @Autowired
    private WlyyPatientExpressageAddrDao patientExpressageAddrDao;
    /**
     * 新增居民收货地址
     *
     * @param jsonData
     * @param error
     * @return
@ -28,12 +40,50 @@ public class WlyyPatientExpressageAddrService extends BaseJpaService<WlyyPatient
    public WlyyPatientExpressageAddrDO createAddr(String jsonData, StringBuilder error) {
        WlyyPatientExpressageAddrDO addrDO = null;
        try {
            addrDO = EntityUtils.jsonToEntity(jsonData,WlyyPatientExpressageAddrDO.class);
            addrDO = EntityUtils.jsonToEntity(jsonData, WlyyPatientExpressageAddrDO.class);
        } catch (Exception e) {
            error = new StringBuilder();
            error.append(e.getMessage());
            return null;
        }
        this.save(addrDO);
        return addrDO;
    }
     public boolean hasDefault(String patient){
        if(StringUtils.isEmpty(patient)){
            return true;
        }
        return patientExpressageAddrDao.existsByPatientAndIsDefault(patient,1);
     }
    /**
     * 将地址设置为默认地址
     * @param id
     * @return
     */
    @Transactional(rollbackFor = Exception.class)
    public void setAddrDefault(String patient,String id,StringBuilder error){
        WlyyPatientExpressageAddrDO addrDO = patientExpressageAddrDao.findOne(id);
        if(null == addrDO){
            error = new StringBuilder();
            error.append("当前地址不存在!");
            return ;
        }
        boolean defaultAddrExist = patientExpressageAddrDao.existsByPatientAndIsDefault(patient,1);
        if(defaultAddrExist){
            List<WlyyPatientExpressageAddrDO> defaultAddrDOList = patientExpressageAddrDao.queryByPatientAndIsDefault(patient,1);
            WlyyPatientExpressageAddrDO defaultAddrDO = defaultAddrDOList.get(0);
            if(StringUtils.equals(addrDO.getId(),defaultAddrDO.getId())){
                return;
            }
            defaultAddrDO.setIsDefault(0);
            addrDO.setIsDefault(1);
            this.save(defaultAddrDO);
            this.save(addrDO);
            error.append("当前居民已存在默认地址!");
            return ;
        }
    }
}