| 
					
				 | 
			
			
				@ -33,6 +33,7 @@ import com.yihu.jw.order.dao.ConsultOrderDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.order.pay.wx.WeChatConfig; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.order.pay.ylz.YlzPayService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.patient.dao.BasePatientDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.util.common.IdCardUtil; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.util.common.QrcodeUtil; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.util.common.XMLUtil; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.util.date.DateUtil; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -42,6 +43,7 @@ import com.yihu.jw.utils.ByteToInputStream; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.wechat.dao.BasePatientWechatDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.wechat.dao.WechatDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.wechat.dao.WxPayLogDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.wechat.enterprise.EnterpriseService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.mysql.query.BaseJpaService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.apache.commons.collections.map.HashedMap; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.apache.commons.lang3.StringUtils; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -108,6 +110,11 @@ public class BusinessOrderService extends BaseJpaService<BusinessOrderDO,Busines 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private XzzxEntranceService xzzxEntranceService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Value("${wechat.flag}") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private boolean flag; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Value("${wechat.id}") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private String wechatId; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private EnterpriseService enterpriseService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -430,12 +437,18 @@ public class BusinessOrderService extends BaseJpaService<BusinessOrderDO,Busines 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (tradeType.equalsIgnoreCase("JSAPI")){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            map.put("openid", openId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String wapUrl = ""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String wapName = ""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if ("xm_ykyy_wx".equalsIgnoreCase(wechatId)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            wapUrl = "https://www1.yanketong.com"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            wapName = "厦门大学附中厦门眼科中心"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (tradeType.equalsIgnoreCase("MWEB")){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            JSONObject jsonObject = new JSONObject(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            JSONObject object = new JSONObject(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            object.put("type","Wap"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            object.put("wap_url",""); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            object.put("wap_name",""); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            object.put("wap_url",wapUrl); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            object.put("wap_name",wapName); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            jsonObject.put("h5_info",object); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            map.put("scene_info",jsonObject.toJSONString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -462,30 +475,58 @@ public class BusinessOrderService extends BaseJpaService<BusinessOrderDO,Busines 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            String mchId = pay.get("mch_id").toString(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            String nonceStr = pay.get("nonce_str").toString(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            String prepayId = pay.get("prepay_id").toString(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            String trade = pay.get("trade_type").toString(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if (trade.equalsIgnoreCase("Native")){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            String trade = ""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if ("SUCCESS".equalsIgnoreCase(resultCode)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                trade = pay.get("trade_type").toString(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                if (trade.equalsIgnoreCase("Native")){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    Map<String,String> param = new HashedMap(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    param.put("appId",appid); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    param.put("package","prepay_id="+prepayId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    param.put("nonceStr",nonceStr); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    param.put("signType","MD5"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    param.put("timeStamp",getTimeStamp()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    param = WeiXinPayUtils.getMapAfterUnifiedorder(param,wxWechatDO.getAppKey()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    InputStream qrcode = QrcodeUtil.createQrcode(pay.get("code_url").toString(),300,"jpg"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    ByteToInputStream byteToInputStream = new ByteToInputStream(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    String QRCodeImg = byteToInputStream.getBase64FromInputStream(qrcode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    param.put("qrcode","data:image/png;base64,"+ QRCodeImg); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    pay.put("native",param); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                }//h5支付方法 返回跳转的微信收银台地址 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                else if("MWEB".equalsIgnoreCase(trade)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    Map<String,String> param = new HashedMap(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    param.put("appId",appid); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    param.put("package","prepay_id="+prepayId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    param.put("nonceStr",nonceStr); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    param.put("signType","MD5"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    param.put("timeStamp",getTimeStamp()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    param = WeiXinPayUtils.getMapAfterUnifiedorder(param,wxWechatDO.getAppKey()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    //微信收银台地址 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    String mwebUrl = pay.get("mweb_url").toString(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    param.put("mweb_url",mwebUrl); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    pay.put("MWEB",param); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                }else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    Map<String,String> param = new HashedMap(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    param.put("appId",appid); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    param.put("package","prepay_id="+prepayId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    param.put("nonceStr",nonceStr); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    param.put("signType","MD5"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    param.put("timeStamp",getTimeStamp()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    param = WeiXinPayUtils.getMapAfterUnifiedorder(param,wxWechatDO.getAppKey()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    pay.put("jsapi",param); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            }else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                //支付失败返回信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                Map<String,String> param = new HashedMap(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                param.put("appId",appid); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                param.put("package","prepay_id="+prepayId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                param.put("nonceStr",nonceStr); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                param.put("signType","MD5"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                param.put("timeStamp",getTimeStamp()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                param = WeiXinPayUtils.getMapAfterUnifiedorder(param,wxWechatDO.getAppKey()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                InputStream qrcode = QrcodeUtil.createQrcode(pay.get("code_url").toString(),300,"jpg"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                ByteToInputStream byteToInputStream = new ByteToInputStream(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                String QRCodeImg = byteToInputStream.getBase64FromInputStream(qrcode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                param.put("qrcode","data:image/png;base64,"+ QRCodeImg); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                pay.put("native",param); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                param.put("err_code",pay.get("err_code").toString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                param.put("err_code_des",pay.get("err_code_des").toString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                pay.put("payFailed",param); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        }else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            //通信失败返回信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            Map<String,String> param = new HashedMap(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            param.put("appId",appid); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            param.put("package","prepay_id="+prepayId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            param.put("nonceStr",nonceStr); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            param.put("signType","MD5"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            param.put("timeStamp",getTimeStamp()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            param = WeiXinPayUtils.getMapAfterUnifiedorder(param,wxWechatDO.getAppKey()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            pay.put("jsapi",param); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            param.put("return_code",pay.get("return_code").toString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            param.put("return_msg",pay.get("return_msg").toString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            pay.put("connectFailed",param); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return pay; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -992,7 +1033,32 @@ public class BusinessOrderService extends BaseJpaService<BusinessOrderDO,Busines 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        }else if (businessOrderDO.getOrderCategory().equalsIgnoreCase("2")||businessOrderDO.getOrderCategory().equalsIgnoreCase("3")){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           WlyyOutpatientDO wlyyOutpatientDO = outpatientDao.findById(businessOrderDO.getRelationCode()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           wlyyOutpatientDO.setPayStatus(1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           outpatientDao.save(wlyyOutpatientDO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           WlyyOutpatientDO outpatientDO = outpatientDao.save(wlyyOutpatientDO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            //发送企业模板消息给医生 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            BasePatientDO patientDO = new BasePatientDO(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            String msg = ""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            String name=outpatientDO.getPatientName(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            String sex = ""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            String age=""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            String date = ""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            String title = ""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            String url="https://hlwyy.xmzsh.com/hlwyy/ims-app-web/#/onlineChat/detail?_rs_title="+outpatientDO.getDescription()+"&type=3&id="+outpatientDO.getId(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if (patientDO!=null){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                sex= IdCardUtil.getSexForIdcard(patientDO.getIdcard()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                age = IdCardUtil.getAgeForIdcard(patientDO.getIdcard())+""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if (outpatientDO!=null){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                if (outpatientDO.getType().equalsIgnoreCase("1")){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    title = "图文复诊"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    msg = name+"("+sex+" "+age+"岁)向您发起了图文复诊,点击查看"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                }else if (outpatientDO.getType().equalsIgnoreCase("2")){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    title = "视频复诊"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    date = DateUtil.dateToStrLong(outpatientDO.getRegisterDate()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    msg = name+"("+sex+" "+age+"岁)预约了"+date+"的视频复诊,点击查看"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            enterpriseService.sendTWMesByDoctor("zsyy",outpatientDO.getDoctor(),title,msg,url); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            System.out.println("发送企业模板消息成功"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } else if (businessOrderDO.getOrderCategory().equalsIgnoreCase("4")) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           List<WlyyPrescriptionDO> wlyyPrescriptionDOS = prescriptionDao.findById(businessOrderDO.getRelationCode()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           if (wlyyPrescriptionDOS!=null&&wlyyPrescriptionDOS.size()!=0){ 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -1027,7 +1093,32 @@ public class BusinessOrderService extends BaseJpaService<BusinessOrderDO,Busines 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        }else if (businessOrderDO.getOrderCategory().equalsIgnoreCase("2")){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            WlyyOutpatientDO wlyyOutpatientDO = outpatientDao.findById(businessOrderDO.getRelationCode()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            wlyyOutpatientDO.setPayStatus(1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            outpatientDao.save(wlyyOutpatientDO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            WlyyOutpatientDO outpatientDO = outpatientDao.save(wlyyOutpatientDO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            //发送企业模板消息给医生 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            BasePatientDO patientDO = new BasePatientDO(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            String msg = ""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            String name=outpatientDO.getPatientName(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            String sex = ""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            String age=""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            String date = ""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            String title = ""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            String url="https://hlwyy.xmzsh.com/hlwyy/ims-app-web/#/onlineChat/detail?_rs_title="+outpatientDO.getDescription()+"&type=3&id="+outpatientDO.getId(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if (patientDO!=null){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                sex= IdCardUtil.getSexForIdcard(patientDO.getIdcard()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                age = IdCardUtil.getAgeForIdcard(patientDO.getIdcard())+""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if (outpatientDO!=null){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                if (outpatientDO.getType().equalsIgnoreCase("1")){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    title = "图文复诊"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    msg = name+"("+sex+" "+age+"岁)向您发起了图文复诊,点击查看"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                }else if (outpatientDO.getType().equalsIgnoreCase("2")){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    title = "视频复诊"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    date = DateUtil.dateToStrLong(outpatientDO.getRegisterDate()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    msg = name+"("+sex+" "+age+"岁)预约了"+date+"的视频复诊,点击查看"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            enterpriseService.sendTWMesByDoctor("zsyy",outpatientDO.getDoctor(),title,msg,url); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            System.out.println("发送企业模板消息成功"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } else if (businessOrderDO.getOrderCategory().equalsIgnoreCase("4")) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            List<WlyyPrescriptionDO> wlyyPrescriptionDOS = prescriptionDao.findById(businessOrderDO.getRelationCode()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if (wlyyPrescriptionDOS!=null&&wlyyPrescriptionDOS.size()!=0){ 
			 |