Procházet zdrojové kódy

新增易联众对接

chenweida před 7 roky
rodič
revize
a9f50ea7b9

+ 1 - 1
patient-co/patient-co-wlyy/pom.xml

@ -491,7 +491,7 @@
        <dependency>
            <groupId>com.ylz</groupId>
            <artifactId>ehc-empi-java-sdk</artifactId>
            <version>20180524_2</version>
            <version>20180528</version>
        </dependency>
    </dependencies>
    <build>

+ 66 - 7
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/service/third/ylz/YLZUserService.java

@ -1,6 +1,8 @@
package com.yihu.wlyy.service.third.ylz;
import com.alibaba.fastjson.JSONObject;
import com.yihu.wlyy.entity.patient.SocialSecurityInfo;
import com.yihu.wlyy.repository.patient.SocialSecurityInfoDao;
import com.yihu.wlyy.util.IdCardUtil;
import com.ylzinfo.ehc.empi.sdk.EhcEmpiClient;
import com.ylzinfo.ehc.empi.sdk.domain.ResponseParams;
import com.ylzinfo.ehc.empi.sdk.dto.request.AuthorizationTokenRequest;
@ -9,10 +11,13 @@ import com.ylzinfo.ehc.empi.sdk.dto.response.AuthorizationTokenResponse;
import com.ylzinfo.ehc.empi.sdk.dto.response.UserInfoResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
@ -33,8 +38,7 @@ public class YLZUserService {
    @Value("${ylz.appId}")
    private String appId;
    @Value("${ylz.termId}")
    private String termId;
    private String termId = "01";
    @Value("${ylz.appSecret}")
    private String appSecret;
    @Value("${ylz.redirectUrl}")
@ -42,6 +46,8 @@ public class YLZUserService {
    @Value("${server.server_url}")
    private String server_url;
    @Autowired
    private SocialSecurityInfoDao socialSecurityInfoDao;
    private String signType = "MD5";
    private String encryptType = "AES";
@ -120,11 +126,12 @@ public class YLZUserService {
            try {
                logger.info(net.sf.json.JSONObject.fromObject(empiClient).toString());
                AuthorizationTokenRequest params = new AuthorizationTokenRequest();
                params.setRedirectUrl("http://www.baidu.com");
                params.setUserName("48");
//            params.setScope();
                params.setRedirectUrl(server_url + redirectUrl);
                params.setAuthType("IXM");
                params.setDomainCustId(openId);
                params.setResponseType(responseType);
                url = empiClient.createUrl("gatewayPage", "empi.uimc.authorization", params);
                System.out.println(url);
                logger.info(url);
            } catch (Exception e) {
                e.printStackTrace();
            }
@ -133,4 +140,56 @@ public class YLZUserService {
        }
        return url;
    }
    @Transactional
    public  Map<String, String> synchronousBSInfo(String params) {
        logger.info(params);
        EhcEmpiClient empiClient = new EhcEmpiClient(gatewayURL, appId, appSecret, termId, version, signType, encryptType);
        try {
            //获取get params 入参 转换 并解密验签
            ResponseParams<AuthorizationTokenResponse> response = empiClient.checkURLResponseParams(params, AuthorizationTokenResponse.class);
            UserInfoResponse userInfoResponse = getUserByToken(response.getBizContent().getAccessToken());
            List<UserInfoResponse.CardInfo> cards = userInfoResponse.getCardInfo();
            UserInfoResponse.CardInfo ssc = null;
            for (UserInfoResponse.CardInfo card : cards) {
                //如果患者有正常状态的社保卡
                if ("01".equals(card.getCardType()) && "normal".equals(card.getState().toLowerCase())) {
                    ssc = card;
                    break;
                }
            }
            //同步社保卡号
            SocialSecurityInfo socialSecurityInfo = socialSecurityInfoDao.findBySfzh18Max(userInfoResponse.getIdNo());
            //如果我们表没有记录那就新增一条记录
            if(socialSecurityInfo==null){
                socialSecurityInfo=new SocialSecurityInfo();
                socialSecurityInfo.setXming0(userInfoResponse.getName());
                socialSecurityInfo.setXbie00(IdCardUtil.getSexForIdcard(userInfoResponse.getIdNo()));
                socialSecurityInfo.setCsrqi0(IdCardUtil.getBirthdayForIdcardStr(userInfoResponse.getIdNo()));
                socialSecurityInfo.setSfzh18(userInfoResponse.getIdNo());
                socialSecurityInfo.setGrsfen("8");
                socialSecurityInfo.setId0000(userInfoResponse.getIdNo());
                socialSecurityInfo.setGzztai("01");
                socialSecurityInfo.setCardno(ssc.getCardNo());
                socialSecurityInfo.setCard16(userInfoResponse.getIdNo().substring(0,16));
                socialSecurityInfoDao.save(socialSecurityInfo);
            }
            //如果医保卡不一致更新{
            if(!socialSecurityInfo.getCardno().equals(ssc.getCardNo())){
                socialSecurityInfo.setCardno(ssc.getCardNo());
            }
            Map<String, String> checkReturnModel=new HashMap<>();
            checkReturnModel.put("name",userInfoResponse.getName());
            checkReturnModel.put("mobile",userInfoResponse.getTelephone());
            checkReturnModel.put("idCard",userInfoResponse.getIdNo());
            checkReturnModel.put("ssc",ssc.getCardNo());
            return checkReturnModel;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }
    public static void main(String[] args) {
        System.out.println(new Double("-5.0e10").toString());
    }
}

+ 66 - 67
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/web/common/account/WechatController.java

@ -190,12 +190,11 @@ public class WechatController extends WeixinBaseController {
    @ResponseBody
    public String regist(@RequestParam(value = "name", required = true) String name,
                         @RequestParam(value = "idcard", required = true) String idcard,
                         @RequestParam(value = "ssc", required = false) String ssc,
                         @RequestParam(value = "ssc", required = true) String ssc,
                         @RequestParam(value = "mobile", required = true) String mobile,
                         @RequestParam(value = "captcha", required = true) String captcha,
                         @RequestParam(value = "openid", required = true) String openid,
                         @RequestParam(value = "password", required = true) String password,
                         @RequestParam(value = "token", required = false) String token) {
                         @RequestParam(value = "password", required = true) String password) {
        try {
            if (StringUtils.isEmpty(name)) {
                return error(-1, "姓名不允许为空!");
@ -203,9 +202,9 @@ public class WechatController extends WeixinBaseController {
            if (StringUtils.isEmpty(idcard)) {
                return error(-1, "身份证号不允许为空!");
            }
//            if (StringUtils.isEmpty(ssc)) {
//                return error(-1, "社保卡号不允许为空!");
//            }
            if (StringUtils.isEmpty(ssc)) {
                return error(-1, "社保卡号不允许为空!");
            }
            if (StringUtils.isEmpty(mobile)) {
                return error(-1, "手机号不允许为空!");
            }
@ -248,74 +247,74 @@ public class WechatController extends WeixinBaseController {
            //判断身份证号与姓名是否一致
            //判断身份证和社保卡是否一致  统一只存英文字母开头的医保卡
            if (!org.springframework.util.StringUtils.isEmpty(token)) {
                UserInfoResponse userInfoResponse = ylzUserService.getUserByToken(token);
                if (userInfoResponse.getCardInfo() != null && userInfoResponse.getCardInfo().size() > 0) {
                    List<UserInfoResponse.CardInfo> cards = userInfoResponse.getCardInfo();
                    Boolean hasCard = false;
                    UserInfoResponse.CardInfo cardInfo = null;
                    for (UserInfoResponse.CardInfo card : cards) {
                        //如果患者有正常状态的社保卡
                        if ("01".equals(card.getCardType()) && "normal".equals("state")) {
                            hasCard = true;
                            cardInfo = card;
                            break;
                        }
                    }
                    if (!hasCard) {
                        return error(-1, "医保卡不存在,必须使用正常状态的厦门医保卡");
                    }
                    if (name.compareTo(userInfoResponse.getName() == null ? "" : userInfoResponse.getName()) != 0) {
                        return error(-1, "身份证号与姓名不一致<br/>请检查后重新输入");
                    }
                    if (ssc.compareTo(cardInfo.getCardNo() == null ? "" : cardInfo.getCardNo()) != 0) {
                        return error(-1, "身份证号与医保卡号不一致,请检查后重新输入");
                    } else {
                        ssc = cardInfo.getCardNo();//统一只存英文字母开头的医保卡
                    }
                    SocialSecurityInfo socialSecurityInfo = socialSecurityInfoDao.findBySfzh18Max(idcard);
                    //如果我们表没有记录那就新增一条记录
                    if(socialSecurityInfo==null){
                        socialSecurityInfo=new SocialSecurityInfo();
                        socialSecurityInfo.setXming0(name);
                        socialSecurityInfo.setXbie00(IdCardUtil.getSexForIdcard(idcard));
                        socialSecurityInfo.setCsrqi0(IdCardUtil.getBirthdayForIdcardStr(idcard));
                        socialSecurityInfo.setSfzh18(idcard);
                        socialSecurityInfo.setGrsfen("8");
                        socialSecurityInfo.setId0000(idcard);
                        socialSecurityInfo.setGzztai("01");
                        socialSecurityInfo.setCardno(ssc);
                        socialSecurityInfoDao.save(socialSecurityInfo);
                    }
                    //如果医保卡不一致更新{
                    if(!socialSecurityInfo.getCardno().equals(ssc)){
                        socialSecurityInfo.setCardno(ssc);
                    }
                }
            }
            //==============================旧版验证=========================
//            SocialSecurityInfo socialSecurityInfo = socialSecurityInfoDao.findBySfzh18Max(idcard);
//            if (!org.springframework.util.StringUtils.isEmpty(token)) {
//                UserInfoResponse userInfoResponse = ylzUserService.getUserByToken(token);
//                if (userInfoResponse.getCardInfo() != null && userInfoResponse.getCardInfo().size() > 0) {
//                    List<UserInfoResponse.CardInfo> cards = userInfoResponse.getCardInfo();
//                    Boolean hasCard = false;
//                    UserInfoResponse.CardInfo cardInfo = null;
//                    for (UserInfoResponse.CardInfo card : cards) {
//                        //如果患者有正常状态的社保卡
//                        if ("01".equals(card.getCardType()) && "normal".equals("state")) {
//                            hasCard = true;
//                            cardInfo = card;
//                            break;
//                        }
//                    }
//
//            if (socialSecurityInfo != null) {
//                if (name.compareTo(socialSecurityInfo.getXming0() == null ? "" : socialSecurityInfo.getXming0()) != 0) {
//                    return error(-1, "身份证号与姓名不一致<br/>请检查后重新输入");
//                }
//                if (ssc.compareTo(socialSecurityInfo.getCardno() == null ? "" : socialSecurityInfo.getCardno()) != 0) {
//                    if (ssc.compareTo(socialSecurityInfo.getCard16() == null ? "" : socialSecurityInfo.getCard16()) != 0) {
//                    if (!hasCard) {
//                        return error(-1, "医保卡不存在,必须使用正常状态的厦门医保卡");
//                    }
//                    if (name.compareTo(userInfoResponse.getName() == null ? "" : userInfoResponse.getName()) != 0) {
//                        return error(-1, "身份证号与姓名不一致<br/>请检查后重新输入");
//                    }
//                    if (ssc.compareTo(cardInfo.getCardNo() == null ? "" : cardInfo.getCardNo()) != 0) {
//                        return error(-1, "身份证号与医保卡号不一致,请检查后重新输入");
//                    } else {
//                        ssc = socialSecurityInfo.getCardno();//统一只存英文字母开头的医保卡
//                        ssc = cardInfo.getCardNo();//统一只存英文字母开头的医保卡
//                    }
//                    SocialSecurityInfo socialSecurityInfo = socialSecurityInfoDao.findBySfzh18Max(idcard);
//                    //如果我们表没有记录那就新增一条记录
//                    if(socialSecurityInfo==null){
//                        socialSecurityInfo=new SocialSecurityInfo();
//                        socialSecurityInfo.setXming0(name);
//                        socialSecurityInfo.setXbie00(IdCardUtil.getSexForIdcard(idcard));
//                        socialSecurityInfo.setCsrqi0(IdCardUtil.getBirthdayForIdcardStr(idcard));
//                        socialSecurityInfo.setSfzh18(idcard);
//                        socialSecurityInfo.setGrsfen("8");
//                        socialSecurityInfo.setId0000(idcard);
//                        socialSecurityInfo.setGzztai("01");
//                        socialSecurityInfo.setCardno(ssc);
//                        socialSecurityInfoDao.save(socialSecurityInfo);
//                    }
//                    //如果医保卡不一致更新{
//                    if(!socialSecurityInfo.getCardno().equals(ssc)){
//                        socialSecurityInfo.setCardno(ssc);
//                    }
//
//
//                }
//            } else {
//                return error(-1, "对不起,暂不支持16年6月份之后办理的医保卡注册");
//
//            }
            //==============================旧版验证=========================
            SocialSecurityInfo socialSecurityInfo = socialSecurityInfoDao.findBySfzh18Max(idcard);
            if (socialSecurityInfo != null) {
                if (name.compareTo(socialSecurityInfo.getXming0() == null ? "" : socialSecurityInfo.getXming0()) != 0) {
                    return error(-1, "身份证号与姓名不一致<br/>请检查后重新输入");
                }
                if (ssc.compareTo(socialSecurityInfo.getCardno() == null ? "" : socialSecurityInfo.getCardno()) != 0) {
                    if (ssc.compareTo(socialSecurityInfo.getCard16() == null ? "" : socialSecurityInfo.getCard16()) != 0) {
                        return error(-1, "身份证号与医保卡号不一致,请检查后重新输入");
                    } else {
                        ssc = socialSecurityInfo.getCardno();//统一只存英文字母开头的医保卡
                    }
                }
            } else {
                return error(-1, "对不起,暂不支持16年6月份之后办理的医保卡注册");
            }
            //==========================旧版验证=============================
            Patient patient = patientDao.findByIdcard(idcard);

+ 22 - 2
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/web/third/ylzpay/ThirdCheckUserController.java

@ -4,9 +4,11 @@ import com.fasterxml.jackson.databind.ObjectMapper;
import com.yihu.wlyy.service.third.ylz.YLZUserService;
import com.yihu.wlyy.web.BaseController;
import com.yihu.wlyy.web.WeixinBaseController;
import com.ylzinfo.ehc.empi.sdk.dto.response.UserInfoResponse;
import com.ylzinfo.onepay.sdk.exception.PayException;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiParam;
import net.sf.json.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@ -16,7 +18,10 @@ import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
/**
 *
@ -42,9 +47,8 @@ public class ThirdCheckUserController extends WeixinBaseController {
     */
    @RequestMapping(value = "/securityURL", method = RequestMethod.POST)
    public String securityURL(
            @ApiParam(name = "code", value = "code", required = true) @RequestParam(value = "code", required = true) String code) {
            @ApiParam(name = "openId", value = "openId", required = true) @RequestParam(value = "openId", required = true) String openId) {
        try {
            String openId = getOpenId(code);
            String url = checkService.securityURL(openId);
            return write(200, "获取成功!", "data", url);
        } catch (Exception e) {
@ -53,4 +57,20 @@ public class ThirdCheckUserController extends WeixinBaseController {
        }
    }
    /**
     * 根据易联众返回的tokan 同步sb_info表
     *
     * @return
     */
    @RequestMapping(value = "/synchronousBSInfo", method = RequestMethod.POST)
    public String synchronousBSInfo(
            @ApiParam(name = "params", value = "params", required = true) @RequestParam(value = "params", required = true) String params) {
        try {
            Map<String, String> userInfoResponse = checkService.synchronousBSInfo(params);
            return write(200, "获取成功!", "data", userInfoResponse);
        } catch (Exception e) {
            error(e);
            return invalidUserException(e, -1, "失败!");
        }
    }
}