Quellcode durchsuchen

【疫情防控代码】

wangzhinan vor 3 Jahren
Ursprung
Commit
a321a759ea

+ 106 - 0
business/base-service/src/main/java/com/yihu/jw/healthCare/service/HealthCareService.java

@ -1,11 +1,22 @@
package com.yihu.jw.healthCare.service;
import com.alibaba.fastjson.JSONObject;
import com.yihu.jw.entity.hospital.consult.WlyyHospitalSysDictDO;
import com.yihu.jw.healthCare.utils.MD5;
import com.yihu.jw.healthCare.utils.SafeUtil;
import com.yihu.jw.healthCare.utils.StringUtils;
import com.yihu.jw.hospital.dict.WlyyHospitalSysDictDao;
import com.yihu.jw.util.http.HttpClientUtil;
import com.yihu.jw.utils.StringUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.transaction.Transactional;
import javax.xml.ws.Response;
import java.util.List;
/**
 * 医保对接
@ -15,5 +26,100 @@ import javax.transaction.Transactional;
@Transactional
public class HealthCareService {
    private Logger logger = LoggerFactory.getLogger(HealthCareService.class);
    @Autowired
    private WlyyHospitalSysDictDao hospitalSysDictDao;
    @Autowired
    private HttpClientUtil httpClientUtil;
    private String ylzConfigUrl;
    private String ylzConfigAppid;
    private String ylzConfigAppSecret;
    private String ylzConfigEncryptKey;
    private String ylzConfigSignKey;
    private String ylzConfigOrgCode;
    
    public void initConfig() throws Exception{
        logger.info("初始话参数!");
        List<WlyyHospitalSysDictDO> hospitalSysDictDOS = hospitalSysDictDao.findByDictName("ylzConfig");
        if (hospitalSysDictDOS==null||hospitalSysDictDOS.size()==0){
            throw new Exception("尚未添加配置参数");
        }else {
            for (WlyyHospitalSysDictDO hospitalSysDictDO:hospitalSysDictDOS){
                if (hospitalSysDictDO.getId().equalsIgnoreCase("ylzConfigUrl")){
                    ylzConfigUrl = hospitalSysDictDO.getDictValue();
                }
                if (hospitalSysDictDO.getId().equalsIgnoreCase("ylzConfigAppid")){
                    ylzConfigAppid = hospitalSysDictDO.getDictValue();
                }
                if (hospitalSysDictDO.getId().equalsIgnoreCase("ylzConfigAppSecret")){
                    ylzConfigAppSecret = hospitalSysDictDO.getDictValue();
                }
                if (hospitalSysDictDO.getId().equalsIgnoreCase("ylzConfigEncryptKey")){
                    ylzConfigEncryptKey = hospitalSysDictDO.getDictValue();
                }
                if (hospitalSysDictDO.getId().equalsIgnoreCase("ylzConfigSignKey")){
                    ylzConfigSignKey = hospitalSysDictDO.getDictValue();
                }
                if (hospitalSysDictDO.getId().equalsIgnoreCase("ylzConfigOrgCode")){
                    ylzConfigOrgCode = hospitalSysDictDO.getDictValue();
                }
            }
        }
    }
    public String requestYlz(String data,String funid) throws Exception {
        initConfig();
        JSONObject object = new JSONObject();
        object.put("sign_type","md5");
        object.put("appid",ylzConfigAppid);
        String stringSignTemp ="appid="+ylzConfigAppid+"&appsecret="+ylzConfigAppSecret+"&data="+data+"&funid="+funid+"&sign_type=md5&key="+ylzConfigSignKey;
        String sign = MD5.md5(stringSignTemp).toUpperCase();
        object.put("sign",sign);
        String accessToken = getYlzToken();
        if (accessToken==null){
            throw new Exception("token无效");
        }
        object.put("access_token",accessToken);
        object.put("funid",funid);
        String encrypt_data = SafeUtil.encrypt(data,ylzConfigEncryptKey);
        object.put("encrypt_data",encrypt_data);
        object.put("data",data);
        String response = httpClientUtil.postBody(ylzConfigUrl,object);
        return response;
    }
    public String getYlzToken() throws Exception {
        String token = null;
        initConfig();
        String funid = "N00.00.00.01";
        JSONObject data = new JSONObject();
        data.put("appid",ylzConfigAppid);
        data.put("appsecret",ylzConfigAppSecret);
        data.put("grant_type","client_credentials");
        JSONObject object = new JSONObject();
        object.put("sign_type","md5");
        object.put("appid",ylzConfigAppid);
        String stringSignTemp ="appid="+ylzConfigAppid+"&appsecret="+ylzConfigAppSecret+"&data="+data+"&funid="+funid+"&sign_type=md5&key="+ylzConfigSignKey;
        String sign = MD5.md5(stringSignTemp).toUpperCase();
        object.put("sign",sign);
        String encrypt_data = SafeUtil.encrypt(data.toJSONString(),ylzConfigEncryptKey);
        object.put("encrypt_data",encrypt_data);
        object.put("data",data);
        object.put("funid",funid);
        logger.info("请求前funid=="+funid+"data="+data);
        String response = httpClientUtil.postBody(ylzConfigUrl,object);
        logger.info("请求后response=="+response);
        if (response!=null&&response!=""){
            JSONObject result = JSONObject.parseObject(response);
            if (result.getString("flag").equalsIgnoreCase("1")){
                String dataResult = result.getString("data");
                if (dataResult!=null&&dataResult!=""){
                    JSONObject dataObject = JSONObject.parseObject(dataResult);
                    token = dataObject.getString("access_token");
                }
            }
        }
        return token;
    }
}

+ 19 - 0
business/base-service/src/main/java/com/yihu/jw/healthCare/utils/ReqDto.java

@ -0,0 +1,19 @@
package com.yihu.jw.healthCare.utils;
import com.alibaba.fastjson.JSONObject;
import lombok.Data;
/**
 *  //明文入参,json key必须包含 sign_type,encrypt_type,funid,data,access_token 这五个。顺序无所谓
 *
 * @Author: lcp
 * @Date: 2020/7/6 21:19
 */
@Data
public class ReqDto {
    private String funid;//接口id
    private JSONObject data;//数据
    private String encrypt_type="AES";//加密类型
    private String access_token;//有效凭证
    private String sign_type="MD5";//签名类型
}

+ 9 - 14
business/base-service/src/main/java/com/yihu/jw/healthCare/utils/SafeUtil.java

@ -10,14 +10,9 @@ import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.Map;
@Component("safeUtil")
public class SafeUtil {
    @Value("${decryptKey}")
    private  String decryptKey;
public class SafeUtil {
    @Value("${signKey}")
    private  String signKey;
    public static void main(String[] args) throws Exception {
        //String reqStr = "{\"funid\":\"N09.00.00.01\",\"data\":{\"idNo\":\"350823199201173123\",\"first\":\"022\",\"keyword1\":\"5\",\"keyword2\":\"通过审核\",\"keyword3\":\"20200706155415\"},\"access_token\":\"4f886faf22775ccc9c8add16268ca9cd\",\"sign_type\":\"MD5\",\"encrypt_type\":\"AES\"}";
@ -26,22 +21,22 @@ public class SafeUtil {
    }
    public  String  solution(String reqStr,String type) throws Exception {
    public static String  solution(String reqStr,String signKey,String type) throws Exception {
        if("beforeSign".equals(type)){
            //先签名再加密
            reqStr = sign(reqStr);
            reqStr = encrypt(reqStr);
            reqStr = sign(reqStr,signKey);
            reqStr = encrypt(reqStr,signKey);
        }else{
            //先加密再签名
            reqStr = encrypt(reqStr);
            reqStr = sign(reqStr);
            reqStr = encrypt(reqStr,signKey);
            reqStr = sign(reqStr,signKey);
        }
        System.out.println("最终请求数据消息体(签名加密后的):" + reqStr);
        return reqStr;
    }
    private  String getSortSignTemp(JSONObject json) {
    private static String getSortSignTemp(JSONObject json) {
        String signTemp = "";
        String jsonStr = JSONObject.toJSONString(json, SerializerFeature.MapSortField);
        LinkedHashMap m = JSON.parseObject(jsonStr, LinkedHashMap.class);
@ -60,7 +55,7 @@ public class SafeUtil {
        return signTemp;
    }
    public  String sign(String reqStr) {
    public static String sign(String reqStr,String signKey) {
        JSONObject md5Json = JSONObject.parseObject(reqStr);
@ -75,7 +70,7 @@ public class SafeUtil {
        return reqStr;
    }
    public  String encrypt(String reqStr) {
    public static   String encrypt(String reqStr,String decryptKey) {
        //key
        JSONObject encJson = JSONObject.parseObject(reqStr);

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

@ -1523,6 +1523,12 @@ public class BaseHospitalRequestMapping {
    }
    public static class HealthCare extends Basic{
        public static final String PREFIX  = "/healthCare";
    }
    public static class WxPay extends Basic{
        public static final String wechatPay =  "/wechatPay";

+ 126 - 0
svr/svr-internet-hospital/src/main/java/com/yihu/jw/hospital/endpoint/healthCare/HealthCareEndPoint.java

@ -0,0 +1,126 @@
package com.yihu.jw.hospital.endpoint.healthCare;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.yihu.jw.dict.service.BaseDictJobTitleService;
import com.yihu.jw.dict.service.HospitalDeptService;
import com.yihu.jw.doctor.dao.BaseDoctorDao;
import com.yihu.jw.doctor.dao.BaseDoctorHospitalDao;
import com.yihu.jw.doctor.service.BaseDoctorInfoService;
import com.yihu.jw.entity.base.dict.DictHospitalDeptDO;
import com.yihu.jw.entity.base.dict.DictJobTitleDO;
import com.yihu.jw.entity.base.doctor.BaseDoctorDO;
import com.yihu.jw.entity.base.doctor.BaseDoctorHospitalDO;
import com.yihu.jw.entity.base.im.ConsultDo;
import com.yihu.jw.entity.base.im.ConsultTeamDo;
import com.yihu.jw.entity.base.wx.BasePatientWechatDo;
import com.yihu.jw.entity.base.wx.WxWechatDO;
import com.yihu.jw.entity.hospital.article.KnowledgeArticleDO;
import com.yihu.jw.entity.hospital.article.KnowledgeArticleUserDO;
import com.yihu.jw.entity.hospital.consult.WlyyHospitalSysDictDO;
import com.yihu.jw.entity.hospital.httplog.WlyyHttpLogDO;
import com.yihu.jw.entity.hospital.message.SystemMessageDO;
import com.yihu.jw.entity.hospital.prescription.*;
import com.yihu.jw.entity.order.BusinessOrderDO;
import com.yihu.jw.entity.ylzinfo.OauthYlzConfigDO;
import com.yihu.jw.es.service.StatisticsEsService;
import com.yihu.jw.es.service.yqfk.YqfkService;
import com.yihu.jw.file_upload.FileUploadService;
import com.yihu.jw.healthCare.service.HealthCareService;
import com.yihu.jw.hospital.dao.consult.KnowledgeArticleUserDao;
import com.yihu.jw.hospital.dict.WlyyHospitalSysDictDao;
import com.yihu.jw.hospital.httplog.dao.WlyyHttpLogDao;
import com.yihu.jw.hospital.httplog.service.WlyyHttpLogService;
import com.yihu.jw.hospital.message.service.BaseBannerDoctorService;
import com.yihu.jw.hospital.message.service.BaseUserMsgService;
import com.yihu.jw.hospital.message.service.SystemMessageService;
import com.yihu.jw.hospital.prescription.dao.*;
import com.yihu.jw.hospital.prescription.service.*;
import com.yihu.jw.hospital.prescription.service.entrance.EntranceService;
import com.yihu.jw.hospital.prescription.service.entrance.HcyyEntranceService;
import com.yihu.jw.hospital.prescription.service.entrance.YkyyEntranceService;
import com.yihu.jw.hospital.service.SystemMessage.HospitalSystemMessageService;
import com.yihu.jw.hospital.service.consult.KnowledgeArticleService;
import com.yihu.jw.hospital.service.consult.KnowledgeCategoryService;
import com.yihu.jw.hospital.service.consult.QrcodeService;
import com.yihu.jw.hospital.service.consult.SysDictService;
import com.yihu.jw.im.dao.ConsultDao;
import com.yihu.jw.im.dao.ConsultTeamDao;
import com.yihu.jw.im.service.ImService;
import com.yihu.jw.order.BusinessOrderService;
import com.yihu.jw.order.dao.BusinessOrderDao;
import com.yihu.jw.order.pay.utils.PayLogService;
import com.yihu.jw.order.pay.ylz.YlzPayService;
import com.yihu.jw.restmodel.hospital.prescription.WlyyPrescriptionInfoVO;
import com.yihu.jw.restmodel.hospital.prescription.WlyyPrescriptionVO;
import com.yihu.jw.restmodel.iot.common.UploadVO;
import com.yihu.jw.restmodel.web.Envelop;
import com.yihu.jw.restmodel.web.ListEnvelop;
import com.yihu.jw.restmodel.web.MixEnvelop;
import com.yihu.jw.restmodel.web.ObjEnvelop;
import com.yihu.jw.restmodel.web.endpoint.EnvelopRestEndpoint;
import com.yihu.jw.rm.hospital.BaseHospitalRequestMapping;
import com.yihu.jw.rm.patient.PatientRequestMapping;
import com.yihu.jw.sms.service.YkyyINSMSService;
import com.yihu.jw.util.common.FileUtil;
import com.yihu.jw.util.common.XMLUtil;
import com.yihu.jw.util.date.DateUtil;
import com.yihu.jw.wechat.dao.BasePatientWechatDao;
import com.yihu.jw.wechat.dao.WechatDao;
import com.yihu.jw.wechat.service.WechatInfoService;
import com.yihu.jw.wlyy.wlyyhttp.WlyyHttpService;
import com.ylzinfo.onepay.sdk.OnepayClient;
import com.ylzinfo.onepay.sdk.OnepayDefaultClient;
import com.ylzinfo.onepay.sdk.domain.ResponseParams;
import com.ylzinfo.onepay.sdk.domain.WebHook;
import com.ylzinfo.onepay.sdk.domain.ext.WaitPayDetailVO;
import com.ylzinfo.onepay.sdk.exception.PayException;
import com.ylzinfo.onepay.sdk.utils.SecurityUtil;
import com.ylzinfo.onepay.sdk.utils.StringUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import net.sf.json.JSONArray;
import net.sf.json.xml.XMLSerializer;
import org.apache.axis.utils.StringUtils;
import org.apache.commons.collections.map.HashedMap;
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.data.redis.core.StringRedisTemplate;
import org.springframework.util.StreamUtils;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.InputStream;
import java.nio.charset.Charset;
import java.util.*;
import java.util.concurrent.TimeUnit;
import static com.yihu.jw.utils.sfutils.SHAUtils.SHA1;
/**
 * @author zmk
 * 患者不用登陆访问居民PC端控制类
 * Created at 2019/12/25。
 */
@RestController
@RequestMapping(value = BaseHospitalRequestMapping.HealthCare.PREFIX)
@Api(value = "互联网医保", description = "互联网医保")
public class HealthCareEndPoint extends EnvelopRestEndpoint {
    private static final Logger logger = LoggerFactory.getLogger(HealthCareEndPoint.class);
    @Autowired
    private HealthCareService healthCareService;
    @GetMapping(value = "/getYlzToken")
    @ApiOperation(value = "获取医保accessToken", notes = "获取医保accessToken")
    public ObjEnvelop getChargeDict()throws Exception{
        return ObjEnvelop.getSuccess("ok",healthCareService.getYlzToken());
    }
}