|  | @ -0,0 +1,185 @@
 | 
												
													
														
															|  | 
 |  | package com.yihu.jw.hospital.service.MultipleCode;
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  | 
 |  | import com.alibaba.fastjson.JSONObject;
 | 
												
													
														
															|  | 
 |  | import com.yihu.jw.entity.base.patient.BasePatientDO;
 | 
												
													
														
															|  | 
 |  | import com.yihu.jw.entity.base.wx.BasePatientWechatDo;
 | 
												
													
														
															|  | 
 |  | import com.yihu.jw.entity.hospital.httplog.WlyyHttpLogDO;
 | 
												
													
														
															|  | 
 |  | import com.yihu.jw.entity.ylzinfo.OauthYlzConfigDO;
 | 
												
													
														
															|  | 
 |  | import com.yihu.jw.hospital.httplog.dao.WlyyHttpLogDao;
 | 
												
													
														
															|  | 
 |  | import com.yihu.jw.hospital.prescription.dao.OauthYlzConfigDao;
 | 
												
													
														
															|  | 
 |  | import com.yihu.jw.patient.dao.BasePatientDao;
 | 
												
													
														
															|  | 
 |  | import com.yihu.jw.restmodel.web.MixEnvelop;
 | 
												
													
														
															|  | 
 |  | import com.yihu.jw.wechat.dao.BasePatientWechatDao;
 | 
												
													
														
															|  | 
 |  | import com.ylzinfo.ehc.EhcHandler;
 | 
												
													
														
															|  | 
 |  | import com.ylzinfo.ehc.common.utils.DateUtils;
 | 
												
													
														
															|  | 
 |  | import com.ylzinfo.ehc.trans.TransRequest;
 | 
												
													
														
															|  | 
 |  | import com.ylzinfo.ehc.trans.TransResponse;
 | 
												
													
														
															|  | 
 |  | import org.springframework.beans.factory.annotation.Autowired;
 | 
												
													
														
															|  | 
 |  | import org.springframework.beans.factory.annotation.Value;
 | 
												
													
														
															|  | 
 |  | import org.springframework.stereotype.Service;
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  | 
 |  | import java.util.List;
 | 
												
													
														
															|  | 
 |  | import java.util.UUID;
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  | 
 |  | /**
 | 
												
													
														
															|  | 
 |  |  * @author HZY
 | 
												
													
														
															|  | 
 |  |  * @vsrsion 1.0
 | 
												
													
														
															|  | 
 |  |  * Created at 2020/4/17
 | 
												
													
														
															|  | 
 |  |  */
 | 
												
													
														
															|  | 
 |  | @Service
 | 
												
													
														
															|  | 
 |  | public class MultipleCodeService {
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  | 
 |  |     @Autowired
 | 
												
													
														
															|  | 
 |  |     private OauthYlzConfigDao oauthYlzConfigDao;
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  | 
 |  |     @Autowired
 | 
												
													
														
															|  | 
 |  |     private BasePatientDao basePatientDao;
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  | 
 |  |     @Autowired
 | 
												
													
														
															|  | 
 |  |     private BasePatientWechatDao basePatientWechatDao;
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  | 
 |  |     public MixEnvelop mcfRegister(BasePatientDO patientDO, String wechatId) throws Exception {
 | 
												
													
														
															|  | 
 |  |         BasePatientWechatDo patientWechatDo = basePatientWechatDao.findByWechatIdAndPatientId(wechatId, patientDO.getId()).get(0);
 | 
												
													
														
															|  | 
 |  |         OauthYlzConfigDO oauthYlzConfigDO = oauthYlzConfigDao.findById("mcf_config");
 | 
												
													
														
															|  | 
 |  |         TransResponse re= new TransResponse();
 | 
												
													
														
															|  | 
 |  |         WlyyHttpLogDO wlyyHttpLogDO = new WlyyHttpLogDO();
 | 
												
													
														
															|  | 
 |  |         try {
 | 
												
													
														
															|  | 
 |  |             TransRequest request = new TransRequest();
 | 
												
													
														
															|  | 
 |  |             request.setMethod("ehc.ehealthcard.register");
 | 
												
													
														
															|  | 
 |  |             request.setApp_id(oauthYlzConfigDO.getAppId());
 | 
												
													
														
															|  | 
 |  |             request.setTerm_id(oauthYlzConfigDO.getTermId());
 | 
												
													
														
															|  | 
 |  |             request.setVersion("X.M.0.1");
 | 
												
													
														
															|  | 
 |  |             request.setTimestamp(DateUtils.getOutTradeTime());
 | 
												
													
														
															|  | 
 |  |             request.setSign_type("RSA");
 | 
												
													
														
															|  | 
 |  |             request.setEnc_type("Plain");
 | 
												
													
														
															|  | 
 |  |             JSONObject bizContent = new JSONObject();
 | 
												
													
														
															|  | 
 |  |             bizContent.put("out_register_time", DateUtils.getOutTradeTime());
 | 
												
													
														
															|  | 
 |  |             bizContent.put("out_register_no", DateUtils.getOutTradeTime());
 | 
												
													
														
															|  | 
 |  |             bizContent.put("open_id", patientWechatDo.getOpenid());
 | 
												
													
														
															|  | 
 |  |             bizContent.put("account_id", "gh_a09552a72c9b");
 | 
												
													
														
															|  | 
 |  |             bizContent.put("certificate_mode", "01");
 | 
												
													
														
															|  | 
 |  |             bizContent.put("id_type", "01");
 | 
												
													
														
															|  | 
 |  |             bizContent.put("id_no", patientDO.getIdcard());
 | 
												
													
														
															|  | 
 |  |             bizContent.put("user_name", patientDO.getName());
 | 
												
													
														
															|  | 
 |  |             bizContent.put("birthday", patientDO.getBirthday());
 | 
												
													
														
															|  | 
 |  |             bizContent.put("address", patientDO.getAddress());
 | 
												
													
														
															|  | 
 |  |             bizContent.put("mobile_phone", patientDO.getMobile());
 | 
												
													
														
															|  | 
 |  |             bizContent.put("apply_method", "1");
 | 
												
													
														
															|  | 
 |  |             bizContent.put("user_sex", "1");
 | 
												
													
														
															|  | 
 |  |             bizContent.put("nation", "01");
 | 
												
													
														
															|  | 
 |  |             request.setBiz_content(JSONObject.toJSONString(bizContent));
 | 
												
													
														
															|  | 
 |  |             EhcHandler ehcHandler = new EhcHandler(oauthYlzConfigDO.getUrl()+"ehcweb/gateway.do", oauthYlzConfigDO.getAppId(), oauthYlzConfigDO.getTermId(), oauthYlzConfigDO.getPrivateKey(), oauthYlzConfigDO.getEhcPublicKey());
 | 
												
													
														
															|  | 
 |  |             re = ehcHandler.execute(request);
 | 
												
													
														
															|  | 
 |  |             JSONObject jsonObject = new JSONObject();
 | 
												
													
														
															|  | 
 |  |             jsonObject.put("code_url",JSONObject.parseObject(re.getBiz_content()).getString("code_url"));
 | 
												
													
														
															|  | 
 |  |             String result = jsonObject.toJSONString().replaceAll("\\|888", "");
 | 
												
													
														
															|  | 
 |  |             if(result!=null){
 | 
												
													
														
															|  | 
 |  |                 patientDO.setRegister("1");
 | 
												
													
														
															|  | 
 |  |                 basePatientDao.save(patientDO);
 | 
												
													
														
															|  | 
 |  |                 return MixEnvelop.getSuccess("注册成功",result);
 | 
												
													
														
															|  | 
 |  |             }
 | 
												
													
														
															|  | 
 |  |             return MixEnvelop.getError(JSONObject.parseObject(re.getRet_msg()).toString());
 | 
												
													
														
															|  | 
 |  |         } catch (Exception e) {
 | 
												
													
														
															|  | 
 |  |             e.printStackTrace();
 | 
												
													
														
															|  | 
 |  |             return MixEnvelop.getError(JSONObject.parseObject(re.getRet_msg()).toString());
 | 
												
													
														
															|  | 
 |  |         }
 | 
												
													
														
															|  | 
 |  |     }
 | 
												
													
														
															|  | 
 |  | //     根据openId、 accountId查询三码融合码信息
 | 
												
													
														
															|  | 
 |  |     public MixEnvelop mcfOpenquery(String openId,String accountId) throws Exception {
 | 
												
													
														
															|  | 
 |  |             OauthYlzConfigDO oauthYlzConfigDO = oauthYlzConfigDao.findOne("mcf_config");
 | 
												
													
														
															|  | 
 |  |             TransRequest request = new TransRequest();
 | 
												
													
														
															|  | 
 |  |             request.setMethod("ehc.ehealthcard.openquery");
 | 
												
													
														
															|  | 
 |  |             request.setApp_id(oauthYlzConfigDO.getAppId());
 | 
												
													
														
															|  | 
 |  |             request.setTerm_id(oauthYlzConfigDO.getTermId());
 | 
												
													
														
															|  | 
 |  |             request.setVersion("X.M.0.1");
 | 
												
													
														
															|  | 
 |  |             request.setTimestamp(DateUtils.getOutTradeTime());
 | 
												
													
														
															|  | 
 |  |             request.setSign_type("MD5");
 | 
												
													
														
															|  | 
 |  |             request.setEnc_type("Plain");
 | 
												
													
														
															|  | 
 |  |             JSONObject bizContent = new JSONObject();
 | 
												
													
														
															|  | 
 |  |             bizContent.put("open_id", openId);
 | 
												
													
														
															|  | 
 |  |             bizContent.put("account_id", accountId);
 | 
												
													
														
															|  | 
 |  |             request.setBiz_content(JSONObject.toJSONString(bizContent));
 | 
												
													
														
															|  | 
 |  |             EhcHandler ehcHandler = new EhcHandler(oauthYlzConfigDO.getUrl()+"ehcService/gateway.do", oauthYlzConfigDO.getAppId(), oauthYlzConfigDO.getTermId(), oauthYlzConfigDO.getAppKey());
 | 
												
													
														
															|  | 
 |  |             TransResponse re = ehcHandler.execute(request);
 | 
												
													
														
															|  | 
 |  |             if ("0000".equals(JSONObject.parseObject(re.getRet_code()))){
 | 
												
													
														
															|  | 
 |  |                 String ehealth_card_id = JSONObject.parseObject(re.getBiz_content()).getString("ehealth_card_id").toString();
 | 
												
													
														
															|  | 
 |  |                 if (ehealth_card_id!=null){
 | 
												
													
														
															|  | 
 |  |                     return MixEnvelop.getSuccess("查询用户信息成功",ehealth_card_id);
 | 
												
													
														
															|  | 
 |  |                 }
 | 
												
													
														
															|  | 
 |  |             }
 | 
												
													
														
															|  | 
 |  |         return MixEnvelop.getError(JSONObject.parseObject(re.getRet_msg()).toString());
 | 
												
													
														
															|  | 
 |  |     }
 | 
												
													
														
															|  | 
 |  | //     获取展码地址
 | 
												
													
														
															|  | 
 |  |     public MixEnvelop mcfGetCodeUrl(String ehealth_card_id) throws Exception {
 | 
												
													
														
															|  | 
 |  |         OauthYlzConfigDO oauthYlzConfigDO = oauthYlzConfigDao.findById("mcf_config");
 | 
												
													
														
															|  | 
 |  |         TransRequest request = new TransRequest();
 | 
												
													
														
															|  | 
 |  |         request.setMethod("ehc.ehealthcard.getCodeUrl");
 | 
												
													
														
															|  | 
 |  |         request.setApp_id(oauthYlzConfigDO.getAppId());
 | 
												
													
														
															|  | 
 |  |         request.setTerm_id(oauthYlzConfigDO.getTermId());
 | 
												
													
														
															|  | 
 |  |         request.setVersion("X.M.0.1");
 | 
												
													
														
															|  | 
 |  |         request.setTimestamp(DateUtils.getOutTradeTime());
 | 
												
													
														
															|  | 
 |  |         request.setSign_type("RSA");
 | 
												
													
														
															|  | 
 |  |         request.setEnc_type("Plain");
 | 
												
													
														
															|  | 
 |  |         JSONObject bizContent = new JSONObject();
 | 
												
													
														
															|  | 
 |  |         String no = UUID.randomUUID().toString();
 | 
												
													
														
															|  | 
 |  |         bizContent.put("ehealth_card_id",ehealth_card_id);
 | 
												
													
														
															|  | 
 |  |         bizContent.put("out_trade_no",no);
 | 
												
													
														
															|  | 
 |  |         bizContent.put("out_trade_time",DateUtils.getOutTradeTime());
 | 
												
													
														
															|  | 
 |  |         request.setBiz_content(JSONObject.toJSONString(bizContent));
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  | 
 |  |         EhcHandler ehcHandler = new EhcHandler(oauthYlzConfigDO.getUrl()+"ehcweb/gateway.do", oauthYlzConfigDO.getAppId(), oauthYlzConfigDO.getTermId(), oauthYlzConfigDO.getPrivateKey(), oauthYlzConfigDO.getEhcPublicKey());
 | 
												
													
														
															|  | 
 |  |         TransResponse re = ehcHandler.execute(request);
 | 
												
													
														
															|  | 
 |  |         if ("0000".equalsIgnoreCase(re.getRet_code())){
 | 
												
													
														
															|  | 
 |  |             JSONObject jsonObject = new JSONObject();
 | 
												
													
														
															|  | 
 |  |             jsonObject.put("code_url",JSONObject.parseObject(re.getBiz_content()).getString("code_url"));
 | 
												
													
														
															|  | 
 |  |             String code_url = jsonObject.toJSONString().replaceAll("\\|888", "");
 | 
												
													
														
															|  | 
 |  |             if (code_url!=null){
 | 
												
													
														
															|  | 
 |  |                 return MixEnvelop.getSuccess("获取展码成功",code_url);
 | 
												
													
														
															|  | 
 |  |             }
 | 
												
													
														
															|  | 
 |  |         }
 | 
												
													
														
															|  | 
 |  |         return MixEnvelop.getError("获取展码失败");
 | 
												
													
														
															|  | 
 |  |     }
 | 
												
													
														
															|  | 
 |  |     //通过身边证查询用户信息
 | 
												
													
														
															|  | 
 |  |     public  TransResponse  mcfQueryInfo(String idType,String ID) throws Exception {
 | 
												
													
														
															|  | 
 |  |         OauthYlzConfigDO oauthYlzConfigDO = oauthYlzConfigDao.findById("mcf_config");
 | 
												
													
														
															|  | 
 |  |         TransRequest request = new TransRequest();
 | 
												
													
														
															|  | 
 |  |         request.setMethod("ehc.ehealthcard.queryInfo");
 | 
												
													
														
															|  | 
 |  |         request.setApp_id(oauthYlzConfigDO.getAppId());
 | 
												
													
														
															|  | 
 |  |         request.setTerm_id(oauthYlzConfigDO.getTermId());
 | 
												
													
														
															|  | 
 |  |         request.setVersion("X.M.0.1");
 | 
												
													
														
															|  | 
 |  |         request.setTimestamp(DateUtils.getOutTradeTime());
 | 
												
													
														
															|  | 
 |  |         request.setSign_type("MD5");
 | 
												
													
														
															|  | 
 |  |         request.setEnc_type("Plain");
 | 
												
													
														
															|  | 
 |  |         JSONObject bizContent = new JSONObject();
 | 
												
													
														
															|  | 
 |  |         String no = UUID.randomUUID().toString();
 | 
												
													
														
															|  | 
 |  |         bizContent.put("id_type", idType);
 | 
												
													
														
															|  | 
 |  |         bizContent.put("id_no", ID);
 | 
												
													
														
															|  | 
 |  |         request.setBiz_content(JSONObject.toJSONString(bizContent));
 | 
												
													
														
															|  | 
 |  |         EhcHandler ehcHandler = new EhcHandler(oauthYlzConfigDO.getUrl()+"ehcService/gateway.do", oauthYlzConfigDO.getAppId(), oauthYlzConfigDO.getTermId(), oauthYlzConfigDO.getAppKey());
 | 
												
													
														
															|  | 
 |  |         TransResponse re = ehcHandler.execute(request);
 | 
												
													
														
															|  | 
 |  |         return re;
 | 
												
													
														
															|  | 
 |  |     }
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  | 
 |  |     public MixEnvelop mcfQueryInfo(String ehealth_card_id ) throws Exception {
 | 
												
													
														
															|  | 
 |  |         OauthYlzConfigDO oauthYlzConfigDO = oauthYlzConfigDao.findById("mcf_config");
 | 
												
													
														
															|  | 
 |  |         TransRequest request = new TransRequest();
 | 
												
													
														
															|  | 
 |  |         request.setMethod("ehc.ehealthcard.queryInfo");
 | 
												
													
														
															|  | 
 |  |         request.setApp_id(oauthYlzConfigDO.getAppId());
 | 
												
													
														
															|  | 
 |  |         request.setTerm_id(oauthYlzConfigDO.getTermId());
 | 
												
													
														
															|  | 
 |  |         request.setVersion("X.M.0.1");
 | 
												
													
														
															|  | 
 |  |         request.setTimestamp(DateUtils.getOutTradeTime());
 | 
												
													
														
															|  | 
 |  |         request.setSign_type("MD5");
 | 
												
													
														
															|  | 
 |  |         request.setEnc_type("Plain");
 | 
												
													
														
															|  | 
 |  |         JSONObject bizContent = new JSONObject();
 | 
												
													
														
															|  | 
 |  |         String no = UUID.randomUUID().toString();
 | 
												
													
														
															|  | 
 |  |         bizContent.put("ehealth_card_id",ehealth_card_id);
 | 
												
													
														
															|  | 
 |  |         request.setBiz_content(JSONObject.toJSONString(bizContent));
 | 
												
													
														
															|  | 
 |  |         EhcHandler ehcHandler = new EhcHandler(oauthYlzConfigDO.getUrl()+"ehcService/gateway.do", oauthYlzConfigDO.getAppId(), oauthYlzConfigDO.getTermId(), oauthYlzConfigDO.getAppKey());
 | 
												
													
														
															|  | 
 |  |         TransResponse re = ehcHandler.execute(request);
 | 
												
													
														
															|  | 
 |  |         if ("0000".equals(JSONObject.parseObject(re.getRet_code()))){
 | 
												
													
														
															|  | 
 |  |             return MixEnvelop.getSuccess("获取用户信息成功",re);
 | 
												
													
														
															|  | 
 |  |         }
 | 
												
													
														
															|  | 
 |  |         return MixEnvelop.getError("获取用户信息失败");
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  | 
 |  |     }
 | 
												
													
														
															|  | 
 |  | }
 |