wujunjie 7 лет назад
Родитель
Сommit
570d8654f9

+ 2 - 1
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/config/SwaggerConfig.java

@ -99,7 +99,8 @@ public class SwaggerConfig {
                        regex("/wx/.*"),
                        regex("/area/.*"),
                        regex("/login/.*"),
                        regex("/qrcode/.*")
                        regex("/qrcode/.*"),
                        regex("/onepay/.*")
                ))
                .build()
                .apiInfo(otherApiInfo());

+ 22 - 0
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/entity/patient/Patient.java

@ -3,6 +3,7 @@ package com.yihu.wlyy.entity.patient;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yihu.wlyy.entity.IdEntity;
import com.yihu.wlyy.entity.doctor.team.sign.SignPatientLabelInfo;
import com.yihu.wlyy.logs.InterfaceCallLogs;
import org.apache.commons.lang3.builder.ToStringBuilder;
import javax.persistence.Column;
@ -89,6 +90,27 @@ public class Patient extends IdEntity implements Serializable {
	private String sickVillage;
	// 居委会字段名称
	private String sickVillageName;
//	是否绑定电子社保卡
	private Integer sicardStatus;
//	绑定电子社保卡时间
	private Date sicardTime;
	public Integer getSicardStatus() {
		return sicardStatus;
	}
	public void setSicardStatus(Integer sicardStatus) {
		this.sicardStatus = sicardStatus;
	}
	public Date getSicardTime() {
		return sicardTime;
	}
	public void setSicardTime(Date sicardTime) {
		this.sicardTime = sicardTime;
	}
	private List<SignPatientLabelInfo> labelInfos=new ArrayList<>();//患者的疾病标签list

+ 60 - 0
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/prescription/PatientPrescriptionPayService.java

@ -0,0 +1,60 @@
package com.yihu.wlyy.service.app.prescription;
import com.alibaba.fastjson.JSONObject;
import com.yihu.wlyy.service.BaseService;
import org.springframework.stereotype.Service;
/**
 * Created by Reece on 2017/7/28/028.
 * 患者支付
 *
 */
@Service
public class PatientPrescriptionPayService extends BaseService {
    /**
     * 患者支付接口
     *
     * @param payInfo
     * @return
     */
    public JSONObject charge()throws Exception{
        JSONObject jsonObject = new JSONObject();
        return jsonObject;
    }
    /**
     * 患者支付结果查询接口
     *
     * @param outChargeNo
     * @return
     */
    public JSONObject chargeQuery(String outChargeNo)throws Exception{
        JSONObject jsonObject = new JSONObject();
        return jsonObject;
    }
    /**
     * 支付成功前端页面回调接口
     *
     * @param json
     * @return
     */
    public JSONObject returnUrl()throws Exception{
        JSONObject jsonObject = new JSONObject();
        return jsonObject;
    }
    /**
     * 对接方异步回调接口
     *
     * @return
     */
    public JSONObject receiveNotify() throws Exception{
        JSONObject jsonObject = new JSONObject();
        return jsonObject;
    }
//基卫接口
//    第三方快递接口
}

+ 30 - 20
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/service/weixin/wxpay/service/OnePayService.java

@ -82,6 +82,12 @@ public class OnePayService {
            Patient p = patientDao.findByCode(patient);
            p.setOpenid(openid);
            p.setSsc(card.getAttachCardNo());
//            增加绑定电子社保卡信息
            p.setSicardStatus(1);
            if (p.getSicardTime() == null) {
                p.setSicardTime(new Date());
            }
            ;
            if (card.getAttachIdType() == "01")      //身份证
            {
                p.setIdcard(card.getAttachIdNo());
@ -141,7 +147,6 @@ public class OnePayService {
            requestParams.setEncryptType(encryptType);
            // 请求报文体参数,详见接口文档各接口——请求参数定义
            // 如医保绑卡信息请求参数
            JSONObject params = new JSONObject();
@ -184,7 +189,7 @@ public class OnePayService {
    /**
     * 家庭医生签约支付
     */
    public String charge(String orgCode, String chargeType, String chargeRelation, Integer totalAmount, String patient, String openid,String accessToken) throws Exception {
    public String charge(String orgCode, String chargeType, String chargeRelation, Integer totalAmount, String patient, String openid, String accessToken) throws Exception {
        //获取机构映射
        HospitalMapping hos = hospitalMappingDao.findByCode(orgCode);
        if (hos == null) {
@ -193,13 +198,13 @@ public class OnePayService {
//        return charge(orgCode, hos.getName(), hos.getAppId(), hos.getAppSecret(),hos.getSbCode(), chargeType, chargeRelation, totalAmount,patient, openid,accessToken);
//        对应机构的APPID和appsecret
//        return charge(orgCode, hos.getName(), "54BBAF5148521AC9E053F000660AC502", "54BBAF5148531AC9E053F000660AC502",hos.getSbCode(), chargeType, chargeRelation, totalAmount,patient, openid,accessToken);
        return charge(orgCode, hos.getName(), "54BBAF5148521AC9E053F000660AC502", "54BBAF5148531AC9E053F000660AC502","0380", chargeType, chargeRelation, totalAmount,patient, openid,accessToken);
        return charge(orgCode, hos.getName(), "54BBAF5148521AC9E053F000660AC502", "54BBAF5148531AC9E053F000660AC502", "0380", chargeType, chargeRelation, totalAmount, patient, openid, accessToken);
    }
    /**
     * 家庭医生签约支付,成功则返回支付路径
     */
    private String charge(String orgCode, String orgName, String appId, String appSecret,String sbCode, String chargeType, String chargeRelation, Integer totalAmount,String patient, String openid,String accessToken) throws Exception {
    private String charge(String orgCode, String orgName, String appId, String appSecret, String sbCode, String chargeType, String chargeRelation, Integer totalAmount, String patient, String openid, String accessToken) throws Exception {
        Boolean isSuccess = true;
        String msgBody = "";
        String response = "";
@ -266,18 +271,18 @@ public class OnePayService {
            Properties systemConf = SystemConf.getInstance().getSystemProperties();
            String returnUrl = systemConf.getProperty("return_url");
            returnUrl = returnUrl.replace("{server}", serverUrl);
            params.put("returnUrl",returnUrl);   //页面跳转地址
            params.put("returnUrl", returnUrl);   //页面跳转地址
            params.put("channel", channel);  //微信医保支付
            params.put("merchName", orgName);  //收款单位名称
            params.put("subject", subject);  //订单名称
            params.put("wxToken",accessToken);
            params.put("wxToken", accessToken);
            //extendParams 扩展入参
            //家庭医生签约信息
            //      根据签约code查询签约信息
            SignFamily signFamily = signFamilyDao.findByCode(chargeRelation);
            if (signFamily!=null){
            if (signFamily != null) {
//                //签约人Code
                String signDoctorCode = signFamily.getSignDoctorCode();
                String people = signFamily.getPatient();
@ -289,8 +294,8 @@ public class OnePayService {
                Map<String, String> familyContent = new HashMap<>();
                familyContent.put("moRegNo", "1481497932");//医院签约号限长20
//                familyContent.put("moRegName",signFamily.getName()); //签约人姓名
                familyContent.put("moRegName","林逸祥"); //签约人姓名
                familyContent.put("moRegAddr",user.getAddress() ); //签约人地址
                familyContent.put("moRegName", "林逸祥"); //签约人姓名
                familyContent.put("moRegAddr", user.getAddress()); //签约人地址
                familyContent.put("moRegTelephone", signFamily.getMobile());//签约人联系电话
                familyContent.put("moRegOrgNo", sbCode); //签约机构 限长4
                familyContent.put("moRegDocNo", doctor.getIdcard());//签约医生编号 限长18 身份证号
@ -302,7 +307,7 @@ public class OnePayService {
                familyContent.put("moRegSource", signFamily.getSignSource()); //签约来源
                familyContent.put("moCollectOrgNo", sbCode); //扣费机构 签约机构
                familyContent.put("moCollectorNo", signFamily.getSignDoctorName());//扣费人 签约医生姓名
                familyContent.put("benefitType", signFamily.getExpensesType() ); //补贴类型
                familyContent.put("benefitType", signFamily.getExpensesType()); //补贴类型
                familyContent.put("moBookOrgNo", sbCode);//登记机构 签约机构
                familyContent.put("moBookerNo", signFamily.getSignDoctorName()); //登记人 签约医生姓名
                familyContent.put("moBookTime", sdf.format(signFamily.getBegin())); //登记时间 签约时间
@ -353,7 +358,7 @@ public class OnePayService {
    /**
     * 家庭医生签约支付查询
     */
    public Charge chargeQuery(String code,String accessToken) throws Exception {
    public Charge chargeQuery(String code, String accessToken) throws Exception {
        Boolean isSuccess = true;
        String msgBody = "";
        String response = "";
@ -460,6 +465,11 @@ public class OnePayService {
                result = String.valueOf(json.get("sicardUrl"));      //电子社保卡连接
                //保存到患者表
                Patient p = patientDao.findByCode(patient);
                p.setOpenid(openid);
//            增加绑定电子社保卡信息
                p.setSicardTime(new Date());
                patientDao.save(p);
            } else {
                isSuccess = false;
                error = "请求失败,返回结果:" + res.getRespCode() + "," + res.getRespMsg();
@ -486,12 +496,12 @@ public class OnePayService {
    /**
     * 更新所有记录的交易状态
     */
    private List<WlyyCharge> updateTradeStatus(List<WlyyCharge> list,String accessToken) {
    private List<WlyyCharge> updateTradeStatus(List<WlyyCharge> list, String accessToken) {
        //更新交易状态
        if (list != null && list.size() > 0) {
            for (WlyyCharge item : list) {
                try {
                    Charge charge = chargeQuery(item.getCode(),accessToken);
                    Charge charge = chargeQuery(item.getCode(), accessToken);
                    if (charge != null) {
                        item.setTradeStatus(charge.getTradeStatus());            //  交易状态0 成功 1 失败 2 已退款
                        item.setChargeNo(charge.getChargeNo());       //  流水号
@ -515,32 +525,32 @@ public class OnePayService {
    /**
     * 通过交易关联代码获取交易列表
     */
    public List<WlyyCharge> chargeList(String chargeType, String chargeRelation,String accessToken) throws Exception {
    public List<WlyyCharge> chargeList(String chargeType, String chargeRelation, String accessToken) throws Exception {
        List<WlyyCharge> list = chargeDao.findByChargeTypeAndChargeRelation(chargeType, chargeRelation);
        return updateTradeStatus(list,accessToken);
        return updateTradeStatus(list, accessToken);
    }
    /**
     * 通过患者代码获取交易列表
     */
    public List<WlyyCharge> chargeListByPatient(String patient, String accessToken,Integer page, Integer size) throws Exception {
    public List<WlyyCharge> chargeListByPatient(String patient, String accessToken, Integer page, Integer size) throws Exception {
        PageRequest pageRequest = new PageRequest(page - 1, size);
        List<WlyyCharge> list = chargeDao.findByPatient(patient, pageRequest);
        return updateTradeStatus(list,accessToken);
        return updateTradeStatus(list, accessToken);
    }
    /**
     * 更改数据 wlyy_sign_family wlyy_charge
     */
    public void updateData(String chargeCode,String chargeNo,String chargeTime,String totalAmount,String insuranceAmount,String selfPayAmount,String billNo,String miRegisterNo) throws Exception {
    public void updateData(String chargeCode, String chargeNo, String chargeTime, String totalAmount, String insuranceAmount, String selfPayAmount, String billNo, String miRegisterNo) throws Exception {
        SimpleDateFormat sdf = new SimpleDateFormat();
        Date chargeSuccess = sdf.parse(chargeTime);
        Date updateTime = new Date();
        chargeDao.updateByChargeCode(chargeCode,chargeTime,updateTime,Integer.parseInt(totalAmount),Integer.parseInt(insuranceAmount),Integer.parseInt(selfPayAmount),
                billNo,miRegisterNo,"0");
        chargeDao.updateByChargeCode(chargeCode, chargeTime, updateTime, Integer.parseInt(totalAmount), Integer.parseInt(insuranceAmount), Integer.parseInt(selfPayAmount),
                billNo, miRegisterNo, "0");
//        根据wlyy_charge的code 去查找关联代码signCode在更新签约表
        WlyyCharge charge = chargeDao.findByCode(chargeCode);
        signFamilyDao.updatePatientBegin(charge.getChargeRelation(), chargeSuccess, chargeNo, "1");

+ 103 - 0
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/web/patient/prescription/PatientPrescriptionPayController.java

@ -0,0 +1,103 @@
package com.yihu.wlyy.web.patient.prescription;
import com.yihu.wlyy.service.app.prescription.PatientPrescriptionPayService;
import com.yihu.wlyy.web.WeixinBaseController;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.json.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.RequestMapping;
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 javax.servlet.http.HttpServletResponse;
/**
 * Created by Reece on 2017/7/28.
 */
@RestController("patientPrescriptionPayController")
@RequestMapping(value = "/patient/prescription/pay", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
@Api(description = "患者端-长处方支付接口")
public class PatientPrescriptionPayController extends WeixinBaseController {
    @Autowired
    private PatientPrescriptionPayService payService;
    /**
     * 患者支付接口
     *
     * @param payInfo
     * @return
     */
    @RequestMapping(value = "/charge", method = RequestMethod.POST)
    @ApiOperation(value = "患者支付接口")
    public String charge(@RequestParam(required = true) @ApiParam(value = "支付数据", name = "payInfo") String payInfo) throws  Exception{
        try {
            JSONObject json = new JSONObject(payInfo);
            JSONObject patientInfo = json.getJSONObject("patientInfo");
            JSONObject expressageInfo = json.getJSONObject("expressageInfo");
            JSONObject prescriptionInfo = json.getJSONObject("prescriptionInfo");
            JSONObject totalAmount = json.getJSONObject("totalAmount");
            payService.charge();
                return error(-1, "获取失败");
        } catch (Exception e) {
            return error(-1, "获取失败");
        }
    }
    /**
     * 患者支付结果查询接口
     *
     * @param outChargeNo
     * @return
     */
    @RequestMapping(value = "/chargeQuery", method = RequestMethod.GET)
    @ApiOperation(value = "患者支付结果查询接口")
    public String chargeQuery(@RequestParam(required = true) @ApiParam(value = "支付应用流水号", name = "outChargeNo") String outChargeNo) throws  Exception{
        try {
            payService.chargeQuery(outChargeNo);
            return error(-1, "获取失败");
        } catch (Exception e) {
            return error(-1, "获取失败");
        }
    }
    /**
     * 支付成功前端页面回调接口
     *
     * @param json
     * @return
     */
    @RequestMapping(value = "/returnUrl", method = RequestMethod.GET)
    @ApiOperation(value = "支付成功前端页面回调接口")
    public String returnUrl(String json) throws Exception{
        try {
            payService.returnUrl();
            return error(-1, "获取失败");
        } catch (Exception e) {
            return error(-1, "获取失败");
        }
    }
    /**
     * 对接方异步回调接口
     *
     * @return
     */
    @RequestMapping(value = "/receiveNotify", method = RequestMethod.GET)
    @ApiOperation(value = "对接方异步回调接口")
    public String receiveNotify(HttpServletRequest request, HttpServletResponse response) throws Exception{
        try {
            payService.receiveNotify();
            return error(-1, "获取失败");
        } catch (Exception e) {
            return error(-1, "获取失败");
        }
    }
}

+ 9 - 7
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/web/wx/OnePayController.java

@ -2,8 +2,6 @@ package com.yihu.wlyy.web.wx;
import com.alibaba.fastjson.JSON;
import com.yihu.wlyy.entity.charge.WlyyCharge;
import com.yihu.wlyy.entity.patient.Patient;
import com.yihu.wlyy.entity.patient.SignFamily;
import com.yihu.wlyy.repository.charge.ChargeDao;
import com.yihu.wlyy.repository.patient.PatientDao;
import com.yihu.wlyy.repository.patient.SignFamilyDao;
@ -12,7 +10,6 @@ import com.yihu.wlyy.service.weixin.wxpay.common.Configure;
import com.yihu.wlyy.service.weixin.wxpay.model.BindCard;
import com.yihu.wlyy.service.weixin.wxpay.model.Charge;
import com.yihu.wlyy.service.weixin.wxpay.service.OnePayService;
import com.yihu.wlyy.util.SystemConf;
import com.yihu.wlyy.web.WeixinBaseController;
import com.ylzinfo.onepay.sdk.OnepayDefaultClient;
import com.ylzinfo.onepay.sdk.domain.RequestParams;
@ -43,11 +40,9 @@ import java.io.PrintWriter;
import java.io.StringWriter;
import java.net.URLDecoder;
import java.nio.charset.Charset;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.regex.Pattern;
/**
 * Created by hzp on 2017/05/23.
@ -92,8 +87,12 @@ public class OnePayController extends WeixinBaseController {
        try {
//            String patient = getUID();
//            String openid = getOpenid();
//            逸祥
//            String patient = "0cc6e4562de2437ab2dbbf51a9fc3b49";
//            String openid = "oULM4xAj9sOsHJ95ttKYd_Fjh6Hc";
//            在鑫
            String patient = "0cc6e4562de2437ab2dbbf51a9fc3b49";
            String openid = "oULM4xAj9sOsHJ95ttKYd_Fjh6Hc";
            String openid = "o7NFZw7FlRW-Hlp0VjM71FR_1otw";
            BindCard bindCard = pay.bindCard(patient, openid);//getUID(), getOpenid());      oULM4xAj9sOsHJ95ttKYd_Fjh6Hc
            String sicardUrl = pay.createSicard(patient, openid);//getUID(), getOpenid());
            if (bindCard != null) {
@ -129,8 +128,11 @@ public class OnePayController extends WeixinBaseController {
            //            获取居民个人信息
//            String patient = getUID();
//            String openId = getOpenid();
//            String patient = "0cc6e4562de2437ab2dbbf51a9fc3b49";
//            String openId = "oULM4xAj9sOsHJ95ttKYd_Fjh6Hc";
//            在鑫
            String patient = "0cc6e4562de2437ab2dbbf51a9fc3b49";
            String openId = "oULM4xAj9sOsHJ95ttKYd_Fjh6Hc";
            String openId = "o7NFZw7FlRW-Hlp0VjM71FR_1otw";
            if (StringUtils.isNotEmpty(openId)) {
                String settleNo = pay.charge(orgCode, chargeType, chargeRelation, totalAmount, patient, openId,getAccessToken());  //ohNH9sh4uwuJCxIwcLJtGTX-BaSk    getUID(),getOpenid()
                return write(200, "家庭医生签约支付成功!", "data", settleNo);

+ 7 - 7
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/wechat/process/WeiXinEventProcess.java

@ -243,15 +243,15 @@ public class WeiXinEventProcess {
        // 图文消息图片URL
        String prescription_pic = systemConf.getProperty("patient_prescription_pic");
        // URL设置服务器URL、AppId
        examination = examination.replace("{server}", wechat_base_url)
                .replace("{appId}",appId);
        prescription = prescription.replace("{server}", systemConf.getProperty("wechat_base_url"))
                .replace("{appId}", systemConf.getProperty("appId"));
        //图片地址
        prescription_pic = examination_pic.replace("{server}",serverUrl);
        prescription_pic = prescription_pic.replace("{server}", systemConf.getProperty("server_url"));
        articleExamination.put("Url", prescription);
        articleExamination.put("Title", "处方记录");
        articleExamination.put("Description", "处方记录");
        articleExamination.put("PicUrl", prescription_pic);
        articlePrescription.put("Url", prescription);
        articlePrescription.put("Title", "处方记录");
        articlePrescription.put("Description", "处方记录");
        articlePrescription.put("PicUrl", prescription_pic);
        articles.add(articlePrescription);
        // 构建回复消息XML