1、新增:第三方扫码挂号的支付入口接口。

2、新增:新增扫码接口,对二维码的数据加密后重定向到前端,进行支付。
3、新增:新增微信回调处理接口,处理收到的扫码挂号的订单数据。
4、对接:对接和HIS的支付接口。
5、合并:合并支付回调的新旧版的处理逻辑。
6、维护:排查红河州医院体检系统发送短信未收到的问题,调整接口的打印日志和使用医院的名称记录。
debug
wangsq 1 month ago
parent a3d7ead435
commit b317ab7167
  1. 32
      src/main/java/com/ynxbd/common/action/RegisterAction.java
  2. 2
      src/main/java/com/ynxbd/common/action/SmsAction.java
  3. 2
      src/main/java/com/ynxbd/common/action/WechatMiniAction.java
  4. 17
      src/main/java/com/ynxbd/common/action/XBDAction.java
  5. 47
      src/main/java/com/ynxbd/common/action/pay/NotifyAction.java
  6. 1
      src/main/java/com/ynxbd/common/action/pay/PEnum.java
  7. 7
      src/main/java/com/ynxbd/common/action/pay/PayAction.java
  8. 101
      src/main/java/com/ynxbd/common/action/pay/ThirdPartyPayAction.java
  9. 52
      src/main/java/com/ynxbd/common/action/pay/WxPayAction.java
  10. 2
      src/main/java/com/ynxbd/common/bean/SelfHelpCount.java
  11. 3
      src/main/java/com/ynxbd/common/dao/ReportDao.java
  12. 2
      src/main/java/com/ynxbd/common/dao/SelfHelpDao.java
  13. 20
      src/main/java/com/ynxbd/common/dao/his/HisRegisterDao.java
  14. 15
      src/main/java/com/ynxbd/common/helper/common/SmsHelper.java
  15. 4
      src/main/java/com/ynxbd/common/helper/his/HisEnum.java
  16. 16
      src/main/java/com/ynxbd/common/helper/xbd/XBDHelper.java
  17. 7
      src/main/java/com/ynxbd/common/helper/xbd/XBDHttpHelper.java
  18. 4
      src/main/java/com/ynxbd/common/service/MedicalService.java
  19. 3
      src/main/java/com/ynxbd/common/service/MicroService.java
  20. 64
      src/main/java/com/ynxbd/common/service/PayService.java
  21. 4
      src/main/java/com/ynxbd/common/service/RecipeService.java
  22. 3
      src/main/java/com/ynxbd/common/service/RegService.java
  23. 110
      src/main/java/com/ynxbd/common/service/ThirdPartyPayService.java
  24. 2
      src/main/java/com/ynxbd/common/service/params/RegParams.java
  25. 7
      src/main/java/com/ynxbd/common/test/PatientTest.java
  26. 12
      src/main/java/com/ynxbd/common/test/Test01.java
  27. 15
      src/main/java/com/ynxbd/wx/config/MeTechnologyReConfig.java
  28. 15
      src/main/java/com/ynxbd/wx/config/WeChatConfig.java
  29. 19
      src/main/java/com/ynxbd/wx/utils/DesEncryptHelper.java
  30. 4
      src/main/java/com/ynxbd/wx/wxfactory/WxAuthHelper.java
  31. 8
      src/main/resources/wx.properties
  32. 6
      src/main/resources/xbd.properties

@ -19,10 +19,7 @@ import org.apache.commons.lang3.ObjectUtils;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Namespace;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.*;
import java.util.stream.Collectors;
/**
@ -359,17 +356,28 @@ public class RegisterAction extends BaseAction {
@Action("getReLineSignInRecord")
public Result getReLineSignInRecord(String patientId, String begDate, String endDate) {
log.info("[查询预约待签到记录(包含今日挂号)] patientId-{} begDate={}, endDate={}", patientId, begDate, endDate);
if (patientId == null || begDate == null || endDate == null) {
if (patientId == null) {
return Result.error(ResultEnum.PARAM_IS_DEFECT);
}
if (getDecodeString(patientId) == null) {
return Result.error(ResultEnum.PARAM_IS_DEFECT);
String decodePatientId = getDecodeString(patientId);
if (decodePatientId == null) {
return Result.error(ResultEnum.PARAM_IS_INVALID);
}
JSONArray reLineSignInRecord = new HisRegisterDao().getReLineSignInRecord(begDate, endDate);
if (reLineSignInRecord == null) {
return Result.success();
if (begDate == null || endDate == null) {
begDate = DateHelper.getCurDate() + " 06:00:00";
endDate = DateHelper.getCurDate() + " 23:59:59";
}
JSONArray dataList = new HisRegisterDao().getReLineSignInRecord(begDate, endDate);
Map<String, Object> dataMap = new HashMap<>();
dataMap.put("date", DateHelper.getCurDateTime());
if (dataList == null || dataList.isEmpty()) {
dataMap.put("list", new ArrayList<>());
return Result.success(dataMap);
}
return Result.success(reLineSignInRecord.stream().filter(iter -> Objects.equals(((JSONObject) iter).getString("PatientId"), getDecodeString(patientId))).collect(Collectors.toList()));
List<Object> findDataList = dataList.stream().filter(iter -> Objects.equals(((JSONObject) iter).getString("PatientId"), decodePatientId)).collect(Collectors.toList());
dataMap.put("list", findDataList);
return Result.success(dataMap);
}
/**
@ -381,7 +389,7 @@ public class RegisterAction extends BaseAction {
@Action("handleLineSignIn")
public Result handleLineSignIn(String treatNum) {
log.info("[执行预约签到(只进行分诊叫号)] treatNum={}", treatNum);
if (treatNum == null || treatNum.isEmpty()) {
if (treatNum == null) {
return Result.error(ResultEnum.PARAM_IS_DEFECT);
}
return Result.success(new HisRegisterDao().handleLineSignIn(treatNum));

@ -196,7 +196,7 @@ public class SmsAction extends BaseAction {
}
/**
* 天助平台短信推送
* 天助平台短信推送红河州第一人民医院影像报告使用
* @param tel 电话号码
* @param content 内容
* @return 返回发送结果

@ -31,7 +31,7 @@ public class WechatMiniAction extends BaseAction {
*/
@Action("miniPayMicro")
public Result microPay(String authCode, String title, String operateUser, BigDecimal totalFee, String barCode, String patientId, String cardNo, String mid) {
Result result = PayService.isNoPay();
Result result = PayService.isPaymentPermittedByTime();
if (result != null) {
return result;
}

@ -11,6 +11,7 @@ import com.ynxbd.common.helper.xbd.XBDHelper;
import com.ynxbd.common.helper.xbd.XBDHttpHelper;
import com.ynxbd.common.result.Result;
import com.ynxbd.common.result.ResultEnum;
import com.ynxbd.common.result.ServiceException;
import com.ynxbd.common.service.CasebookService;
import lombok.extern.slf4j.Slf4j;
import org.apache.struts2.convention.annotation.Action;
@ -27,6 +28,13 @@ import org.apache.struts2.convention.annotation.Namespace;
@Namespace("/xbd")
public class XBDAction extends BaseAction {
@Action("test03")
public Result test03() throws ServiceException {
System.out.println("测试");
return Result.success();
}
/**
* 获取智能云胶片的地址
*
@ -35,7 +43,14 @@ public class XBDAction extends BaseAction {
*/
@Action("cloudFilm")
public Result cloudFilm(String info) {
return Result.success(XBDHelper.outTeamDao.getCloudFilmPath(info));
try {
log.info("[云胶片]info={}", info);
String path = XBDHelper.outTeamDao.getCloudFilmPath(info);
return Result.success(path);
} catch (Exception e) {
log.error("[云胶片]{}", e.getMessage());
return Result.error("请求异常");
}
}
/**

@ -13,7 +13,6 @@ import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Namespace;
import java.math.BigDecimal;
import java.util.Date;
/**
@ -33,51 +32,7 @@ public class NotifyAction extends BaseAction {
WxPayNotify notifyInfo = WxPayHelper.payNotify(request);
Result.respXml(WxRespHelper.respOk()); // 收到请求-解析成功
String openid = notifyInfo.getOpenid();
String bankTransNo = notifyInfo.getTransactionId();
String outTradeNo = notifyInfo.getOutTradeNo();
String payInfo = notifyInfo.getPayInfo();
BigDecimal totalFee = notifyInfo.getTotalFee();
String payDate = notifyInfo.getPayDate();
String payTime = notifyInfo.getPayTime();
String notifyType = notifyInfo.getAttach();
log.info("【微信】[{}]-收到通知 outTradeNo={}, bankTransNo={}", notifyType, outTradeNo, bankTransNo);
switch (PEnum.toEnum(notifyType)) {
case RECIPE:
new RecipeService().recipeListPay(MerchantEnum.WX, totalFee.toString(), openid, outTradeNo, bankTransNo, null, payDate, payTime, payInfo);
break;
case REG: // 挂号
try {
new RegService().regPaidNotify(MerchantEnum.WX, totalFee, openid, bankTransNo, outTradeNo, null, payDate, payTime, payInfo, new Date());
} catch (ServiceException e) {
log.info("【微信】[挂号]通知异常 outTradeNo={}, bankTransNo={}, message={}", outTradeNo, bankTransNo, e.getMessage());
}
break;
case IN_HOSP:
boolean isInsert = new InHospService().inHospNotify(MerchantEnum.WX, openid, totalFee, outTradeNo, bankTransNo, payDate, payTime, payInfo);
log.info("【微信】[住院预交金] 预存{}", (isInsert ? "成功" : "失败"));
break;
case CASEBOOK:
new CasebookService().payNotify(MerchantEnum.WX, openid, totalFee, outTradeNo, bankTransNo, payInfo);
break;
case OUT_COLLECT:
new OutCollectService().ocPayNotify(MerchantEnum.WX, openid, totalFee, outTradeNo, bankTransNo, payInfo);
break;
case OL_REG:
new MicroService().InternetHospNotice(outTradeNo,bankTransNo,openid,totalFee,payDate,payTime);
break;
default:
log.info("【微信】通知类型错误,结束请求");
break;
}
PayService.WxNotify(notifyInfo);
} catch (ServiceException e) {
Result.respXml(WxRespHelper.resp(e)); // 收到请求-解析失败
}

@ -24,6 +24,7 @@ public enum PEnum {
OL_REG("问诊挂号", "ol_register", "OG"),
TPP_QR_REG("第三方-扫码挂号", "tpp_qr_reg", "G"),
;
public final String NAME;

@ -1,7 +1,6 @@
package com.ynxbd.common.action.pay;
import com.alibaba.fastjson.JSONObject;
import com.bocom.api.response.foreignccy.QueryReservationRegistResponseV1;
import com.ynxbd.common.action.base.BaseAction;
import com.ynxbd.common.bean.ConfigSelfHelp;
import com.ynxbd.common.bean.RecipeHelp;
@ -206,7 +205,7 @@ public class PayAction extends BaseAction {
*/
@Action("inHospPrepay")
public Result inHospPrepay(String openid, String patientId, String patientName, String treatNum, String payMoney, String payWay, String payCode) {
Result result = PayService.isNoPay();
Result result = PayService.isPaymentPermittedByTime();
if (result != null) {
return result;
}
@ -267,7 +266,7 @@ public class PayAction extends BaseAction {
*/
@Action("payMicro")
public Result payMicro(String authCode, String callNo, String treatNum, String patientId, String title, String operateUser, BigDecimal totalFee, String invoiceTransNo, String regDate) {
Result result = PayService.isNoPay();
Result result = PayService.isPaymentPermittedByTime();
if (result != null) {
return result;
}
@ -362,7 +361,7 @@ public class PayAction extends BaseAction {
/**
* [His退费]
* 扫码盒子[His退费]
*
* @param callNo 调用码 { recipe处方register挂号in_hosp住院预交金 }
* @param patientId 患者ID

@ -0,0 +1,101 @@
package com.ynxbd.common.action.pay;
import com.alibaba.fastjson.JSONObject;
import com.ynxbd.common.action.base.BaseAction;
import com.ynxbd.common.bean.enums.MerchantEnum;
import com.ynxbd.common.bean.pay.Register;
import com.ynxbd.common.helper.common.CodeHelper;
import com.ynxbd.common.helper.common.DateHelper;
import com.ynxbd.common.helper.common.URLHelper;
import com.ynxbd.common.result.Result;
import com.ynxbd.common.result.ResultEnum;
import com.ynxbd.common.service.PayService;
import com.ynxbd.common.service.RegService;
import com.ynxbd.wx.config.WeChatConfig;
import com.ynxbd.wx.wxfactory.ReqParamHelper;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Namespace;
import java.math.BigDecimal;
@Slf4j
@Namespace("/tpp")
public class ThirdPartyPayAction extends BaseAction {
@Action("qr_reg")
public Result qr_reg(String callNo, String sourceId, String patientId, BigDecimal money, String date) {
log.info("[第三方][扫码挂号] callNo={}, sourceId={}, patientId={}, money={}, date={}", callNo, sourceId, patientId, money, date);
// http://127.0.0.1:8080/wx/tpp/qr_reg?sourceId=1&patientId=2&money=0.01&date=2025-04-15
if (ObjectUtils.isEmpty(sourceId) || ObjectUtils.isEmpty(patientId) || ObjectUtils.isEmpty(date) || money == null) {
return Result.error(ResultEnum.PARAM_IS_DEFECT);
}
String params = URLHelper.mapToUrl(map -> {
map.put("partnerId", patientId);
map.put("enPatientId", ReqParamHelper.encode(patientId));
map.put("sourceId", sourceId);
map.put("enSourceId", ReqParamHelper.encode(sourceId));
map.put("date", date);
map.put("enDate", ReqParamHelper.encode(date));
}, true);
return Result.redirect(WeChatConfig.getWebUrl() + "tpp-qr-reg.html" + params);
}
@Action("qr_reg_pay")
public Result qr_reg_pay(String payCode, String openid, String sourceId, String patientId, BigDecimal money, String date) {
log.info("[第三方][扫码挂号-支付] sourceId={}, patientId={}, money={}, date={}", sourceId, patientId, money, date);
if (ObjectUtils.isEmpty(openid)) {
return Result.error(ResultEnum.PARAM_IS_INVALID);
}
if (ObjectUtils.isEmpty(sourceId) || ObjectUtils.isEmpty(patientId) || ObjectUtils.isEmpty(date) || money == null) {
return Result.error(ResultEnum.PARAM_IS_DEFECT);
}
MerchantEnum merchantEnum = MerchantEnum.getMerchantEnumByCode(payCode);
if (merchantEnum == null) {
return Result.error(ResultEnum.PAY_TYPE_ERROR); // 支付方式异常
}
if (money.compareTo(BigDecimal.ZERO) == 0) {
return Result.error(ResultEnum.PAY_MONEY_IS_ZERO);
}
Register reg = new Register();
reg.setOpenid(openid);
reg.setRegDate(date);
// 挂号类型:1:预约挂号,2:今日挂号;3:分时段预约挂号,4:分时段今日挂号
reg.setRegType(DateHelper.isToday(date) ? "2" : "1");
reg.setSourceId(sourceId);
reg.setPatientId(patientId);
reg.setTotalFee(money);
reg.setPayMoney(money);
reg.setRegFee(money);
reg.setClinicFee(BigDecimal.ZERO);
reg.setPayDeviceId("mobile");
reg.setPayWay(merchantEnum.PAY_WAY_IN);
String outTradeNo = CodeHelper.getOutTradeNo(merchantEnum);
reg.setOutTradeNo(outTradeNo);
log.info("{} [第三方-扫码挂号]生成 outTradeNo={}", merchantEnum.NAME, outTradeNo);
if (!new RegService().isSaveRegPrepay(reg)) {
log.info("{} [第三方-扫码挂号]预存支付信息失败 patientId={}, sourceId={}", merchantEnum.NAME, patientId, sourceId);
return Result.error(ResultEnum.SPECIFIED_QUESTIONED_USER_NOT_EXIST);
}
String ip = request.getRemoteAddr();
String body = "扫码挂号" + date + " 患者:" + patientId;
JSONObject respJson = PayService.createOrder(merchantEnum, openid, patientId, money.toString(), outTradeNo, PEnum.TPP_QR_REG.CODE, ip, body);
if (respJson == null) {
return Result.error(ResultEnum.PAY_ERROR); // 支付异常
}
respJson.put("outTradeNo", outTradeNo);
respJson.put("dateTime", DateHelper.getCurDateTime());
return Result.success(respJson);
}
}

@ -30,57 +30,7 @@ public class WxPayAction extends BaseAction {
WxPayNotify notifyInfo = WxPayHelper.payNotify(request);
Result.respXml(WxRespHelper.respOk()); // 收到请求-解析成功
String openid = notifyInfo.getOpenid();
String bankTransNo = notifyInfo.getTransactionId();
String outTradeNo = notifyInfo.getOutTradeNo();
String payInfo = notifyInfo.getPayInfo();
BigDecimal totalFee = notifyInfo.getTotalFee();
String payDate = notifyInfo.getPayDate();
String payTime = notifyInfo.getPayTime();
String notifyType = notifyInfo.getAttach();
log.info("【微信】[{}]收到通知 outTradeNo={}, bankTransNo={}", notifyType, outTradeNo, bankTransNo);
switch (PEnum.toEnum(notifyType)) {
case RECIPE:
new RecipeService().recipeListPay(MerchantEnum.WX, totalFee.toString(), openid, outTradeNo, bankTransNo, null, payDate, payTime, payInfo);
break;
case REG: // 挂号
try {
new RegService().regPaidNotify(MerchantEnum.WX, totalFee, openid, bankTransNo, outTradeNo, null, payDate, payTime, payInfo, new Date());
} catch (ServiceException e) {
log.info("【微信】[挂号]通知异常 outTradeNo={}, bankTransNo={}, message={}", outTradeNo, bankTransNo, e.getMessage());
}
break;
case IN_HOSP:
boolean isInsert = new InHospService().inHospNotify(MerchantEnum.WX, openid, totalFee, outTradeNo, bankTransNo, payDate, payTime, payInfo);
log.info("【微信】[住院预交金] 预存{}", (isInsert ? "成功" : "失败"));
break;
case CASEBOOK:
new CasebookService().payNotify(MerchantEnum.WX, openid, totalFee, outTradeNo, bankTransNo, payInfo);
break;
case OUT_COLLECT:
new OutCollectService().ocPayNotify(MerchantEnum.WX, openid, totalFee, outTradeNo, bankTransNo, payInfo);
break;
case OL_REG:
new MicroService().InternetHospNotice(outTradeNo, bankTransNo, openid, totalFee, payDate, payTime);
break;
case PEIS_RESERVE:
new PeisService().payNotify(MerchantEnum.WX,openid,totalFee,outTradeNo,bankTransNo,payInfo,new Date());
break;
default:
log.info("【微信】通知类型错误,结束请求");
break;
}
PayService.WxNotify(notifyInfo);
} catch (ServiceException e) {
Result.respXml(WxRespHelper.resp(e)); // 收到请求-解析失败
}

@ -1,4 +1,4 @@
package com.ynxbd.common.action.pay;
package com.ynxbd.common.bean;
import lombok.Getter;
import lombok.NoArgsConstructor;

@ -1,11 +1,8 @@
package com.ynxbd.common.dao;
import com.ynxbd.common.bean.Dept;
import com.ynxbd.common.config.db.DataBase;
import lombok.extern.slf4j.Slf4j;
import java.util.List;
/**
* @author 李进才
* @ClassName 统计报表 表的一些增删改查

@ -1,6 +1,6 @@
package com.ynxbd.common.dao;
import com.ynxbd.common.action.pay.SelfHelpCount;
import com.ynxbd.common.bean.SelfHelpCount;
import com.ynxbd.common.bean.ConfigSelfHelp;
import com.ynxbd.common.bean.SelfHelp;
import com.ynxbd.common.config.db.DataBase;

@ -864,8 +864,6 @@ public class HisRegisterDao {
}
/**
* 执行分时段挂号
*
@ -1034,5 +1032,23 @@ public class HisRegisterDao {
return HisHelper.getJsonResult(HisEnum.AP_Line_SignIN, params);
}
/**
* 第三方扫码挂号
*/
public JsonResult tppQRReg(MerchantEnum merchantEnum, String sourceId, String payMoney, String payDate, String payTime, String openId, String bankTransNo, String tradeNo) {
Map<String, Object> params = new HashMap<>();
params.put("SourceId", sourceId);
params.put("PayMoney", payMoney);
params.put("PayDate", payDate);
params.put("PayTime", payTime);
params.put("PayWay", merchantEnum.HIS_PAY_WAY);
params.put("PayDeviceID", "mobile");
params.put("OpenId", openId);
params.put("TransNo", tradeNo);
params.put("BankTransNo", bankTransNo);
return HisHelper.getJsonResult(HisEnum.TPP_QR_Reg, params);
}
}

@ -7,13 +7,10 @@ import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.http.MethodType;
import com.aliyuncs.profile.DefaultProfile;
import com.ynxbd.common.bean.sms.SmsRegTem;
import com.ynxbd.common.bean.sms.SmsTemplate;
import com.ynxbd.common.config.EhCacheConfig;
import com.ynxbd.common.helper.ProperHelper;
import com.ynxbd.common.helper.http.OkHttpHelper;
import com.ynxbd.common.result.ResultEnum;
import com.ynxbd.wx.config.WeChatConfig;
import lombok.extern.slf4j.Slf4j;
import okhttp3.FormBody;
import okhttp3.RequestBody;
@ -22,8 +19,6 @@ import org.apache.commons.lang3.StringUtils;
import org.ehcache.Cache;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
@Slf4j
public class SmsHelper {
@ -192,6 +187,14 @@ public class SmsHelper {
}
/**
* 天助平台短信平台
*
* @param templateId 模板id
* @param tel 电话号码
* @param content 发送内容
* @return string
*/
public static String sendDanMi(String templateId, String tel, String content) {
String accountSid = "301d69a6ea6ed34b0827a4dec3ca1ff8";
String authToken = "94f37caeddeb36a8400ad0ecc9b04ece";
@ -299,7 +302,6 @@ public class SmsHelper {
// send("SMS_462460638","18206787486",sms);
// Map<String,String> sms = new HashMap<>();
// sms.put("address", "四号楼2楼6号诊室骨伤科(脊柱)");
// sms.put("deptName", "骨伤科-骨伤科专家门诊");
@ -313,7 +315,6 @@ public class SmsHelper {
sendDanMi("1000000002608", "13608818101", "影像报告已经出,请及时到医院自助机进行报告打印或点击链接 https://wx.hhzyy.com/smsPacs?token=A88A6D089&inHosNum=1579733");
// Map<String,String> sms = new HashMap<>();
// sms.put("name","李进才");
// sms.put("item_name","血常规");

@ -14,6 +14,8 @@ public enum HisEnum {
// 快速发药[自定义]
QuickDrugDispense("[处方]快速发药", "11001", "UniversalInterface", true),
TPP_QR_Reg("[第三方]扫码挂号", "11002", "UniversalInterface", true),
// 标准物价查询[自定义]
Recipe_Query_StandardPrice("[价格]标准物价查询", "8002", "UniversalInterface", false),
@ -23,7 +25,7 @@ public enum HisEnum {
// 报告------------------
AP_Query_PEISReport("[报告]体检报告", "9001", "AP_Query_PEISReport", true),
AP_Query_CheckApplication("[报告]检查申请单", "5001", "AP_Query_CheckApplication", true),
AP_Query_InspectionApplication("[报告]检验申请单", "5002", "AP_Query_InspectionApplication", true),
AP_Query_InspectionApplication("[报告]检验(化验)申请单", "5002", "AP_Query_InspectionApplication", true),
// 挂号记录---------------
AP_Query_Regist("[现场挂号]查询现场挂号记录", "2004", "AP_Query_Regist", true),

@ -12,20 +12,20 @@ import lombok.extern.slf4j.Slf4j;
*/
@Slf4j
public class XBDHelper {
private static final String OUT_TEAM_CLOUD_FILM;
public static final String MEDICAL_RECORD_REMAKE_URL;
private static final String CLOUD_FILM_LINK;
public static final String MED_RECORD_COPY_URL;
public static final String XBD_PEIS;
public static OutTeamDao outTeamDao;
static {
ProperHelper config = new ProperHelper().read("xbd.properties");
OUT_TEAM_CLOUD_FILM = config.getString("xbd.out_team_cloud_film_link");
MEDICAL_RECORD_REMAKE_URL = config.getString("xbd.medical_record_remake_url");
XBD_PEIS = config.getString("xbd.peis");
if (OUT_TEAM_CLOUD_FILM == null) {
log.error("新八达内部团队配置文件读取失败");
CLOUD_FILM_LINK = config.getString("xbd.200.cloud_film_link");
MED_RECORD_COPY_URL = config.getString("xbd.200.med_record_copy_url");
XBD_PEIS = config.getString("xbd.100.peis_url");
if (CLOUD_FILM_LINK == null) {
log.error("新八达200团队配置文件读取失败");
}
outTeamDao = new OutTeamDao(OUT_TEAM_CLOUD_FILM);
outTeamDao = new OutTeamDao(CLOUD_FILM_LINK);
}
}

@ -1,7 +1,6 @@
package com.ynxbd.common.helper.xbd;
import com.alibaba.fastjson.JSONObject;
import com.ynxbd.common.helper.common.ErrorHelper;
import com.ynxbd.common.helper.http.OkHttpHelper;
import com.ynxbd.common.result.JsonResult;
import lombok.extern.slf4j.Slf4j;
@ -10,11 +9,9 @@ import okhttp3.*;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.util.*;
import java.util.stream.Collectors;
import java.util.zip.GZIPInputStream;
import java.util.zip.GZIPOutputStream;
@ -87,7 +84,7 @@ public class XBDHttpHelper {
private static String UsePost(String methodName, RequestBody requestBody){
OkHttpClient httpClient = OkHttpHelper.creatClient();
Headers.Builder headersBuilder = new Headers.Builder();
HttpUrl.Builder urlBuilder = Objects.requireNonNull(HttpUrl.parse(XBDHelper.MEDICAL_RECORD_REMAKE_URL + "/api/SqlContext/PostMethodByNameEncryption")).newBuilder();
HttpUrl.Builder urlBuilder = Objects.requireNonNull(HttpUrl.parse(XBDHelper.MED_RECORD_COPY_URL + "/api/SqlContext/PostMethodByNameEncryption")).newBuilder();
try (Response response = httpClient.newCall(new Request.Builder().url(urlBuilder.build()).post(requestBody).headers(headersBuilder.build()).build()).execute()) {
JSONObject JSON = JSONObject.parseObject(response.body().string());
if(response.isSuccessful()){
@ -107,7 +104,7 @@ public class XBDHttpHelper {
private static String UseGet(String methodName, Object paramDic) {
try {
OkHttpClient httpClient = OkHttpHelper.creatClient();
HttpUrl.Builder urlBuilder = Objects.requireNonNull(HttpUrl.parse(XBDHelper.MEDICAL_RECORD_REMAKE_URL + "/api/SqlContext/ExecMethodByNameEncryption")).newBuilder();
HttpUrl.Builder urlBuilder = Objects.requireNonNull(HttpUrl.parse(XBDHelper.MED_RECORD_COPY_URL + "/api/SqlContext/ExecMethodByNameEncryption")).newBuilder();
// 加密序列化
String methodNameEnv = URLEncoder.encode(EncHelper.AES_Encrypt(methodName), StandardCharsets.UTF_8.toString());
urlBuilder.addQueryParameter("methodNameEnc", methodNameEnv);

@ -143,7 +143,7 @@ public class MedicalService {
*/
public static Result createOrder(String payCode, String openid, String patientId, String cardNo, String realName, String ip, String payOrdId, String payAuthNo, String mdTrtId, String chrgBchno, String mdUserId, BigDecimal totalFee, BigDecimal acctFee, BigDecimal hifpFee, BigDecimal insuranceFee, BigDecimal cashFee, String notifyType,
String recipeJson, String treatNum, String payWay) {
Result result = PayService.isNoPay();
Result result = PayService.isPaymentPermittedByTime();
if (result != null) {
return result;
}
@ -233,7 +233,7 @@ public class MedicalService {
* 挂号下单
*/
public static Result createRegOrder(String payCode, String openid, String cardNo, String realName, String ip, String payOrdId, String payAuthNo, String mdTrtId, String chrgBchno, String mdUserId, BigDecimal totalFee, BigDecimal acctFee, BigDecimal hifpFee, BigDecimal insuranceFee, BigDecimal cashFee, String notifyType, Register reg) {
Result result = PayService.isNoPay();
Result result = PayService.isPaymentPermittedByTime();
if (result != null) {
return result;
}

@ -5,7 +5,6 @@ import com.ynxbd.common.helper.http.OkHttpHelper;
import lombok.extern.slf4j.Slf4j;
import okhttp3.FormBody;
import okhttp3.RequestBody;
import org.apache.poi.hpsf.Decimal;
import java.math.BigDecimal;
@ -18,7 +17,7 @@ import java.math.BigDecimal;
@Slf4j
public class MicroService {
public void InternetHospNotice(String outTradeNo, String bankTransNo, String openid, BigDecimal totalFee, String payDate, String payTime) {
public void OLReg(String openid, BigDecimal totalFee, String outTradeNo, String bankTransNo, String payDate, String payTime) {
RequestBody body = new FormBody.Builder().
add("callNo", "ol_register").
add("outTradeNo", AesHelper.enCode(outTradeNo)).

@ -17,6 +17,7 @@ import com.ynxbd.common.result.ServiceException;
import com.ynxbd.common.service.cache.PayCache;
import com.ynxbd.wx.wxfactory.WxMedicalHelper;
import com.ynxbd.wx.wxfactory.WxPayHelper;
import com.ynxbd.wx.wxfactory.bean.WxPayNotify;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
@ -38,8 +39,69 @@ public class PayService {
}
}
/**
* 微信回调处理
*
* @param notifyInfo 回调信息
*/
public static void WxNotify(WxPayNotify notifyInfo) throws ServiceException {
String openid = notifyInfo.getOpenid();
String bankTransNo = notifyInfo.getTransactionId();
String outTradeNo = notifyInfo.getOutTradeNo();
String payInfo = notifyInfo.getPayInfo();
BigDecimal totalFee = notifyInfo.getTotalFee();
String payDate = notifyInfo.getPayDate();
String payTime = notifyInfo.getPayTime();
String notifyType = notifyInfo.getAttach();
log.info("【微信】[{}]收到通知 outTradeNo={}, bankTransNo={}", notifyType, outTradeNo, bankTransNo);
switch (PEnum.toEnum(notifyType)) {
case RECIPE:
new RecipeService().recipeListPay(MerchantEnum.WX, totalFee.toString(), openid, outTradeNo, bankTransNo, null, payDate, payTime, payInfo);
break;
case REG: // 挂号
try {
new RegService().regPaidNotify(MerchantEnum.WX, totalFee, openid, bankTransNo, outTradeNo, null, payDate, payTime, payInfo, new Date());
} catch (ServiceException e) {
log.info("【微信】[挂号]通知异常 outTradeNo={}, bankTransNo={}, message={}", outTradeNo, bankTransNo, e.getMessage());
}
break;
case IN_HOSP:
boolean isInsert = new InHospService().inHospNotify(MerchantEnum.WX, openid, totalFee, outTradeNo, bankTransNo, payDate, payTime, payInfo);
log.info("【微信】[住院预交金] 预存{}", (isInsert ? "成功" : "失败"));
break;
case CASEBOOK:
new CasebookService().payNotify(MerchantEnum.WX, openid, totalFee, outTradeNo, bankTransNo, payInfo);
break;
case OUT_COLLECT:
new OutCollectService().ocPayNotify(MerchantEnum.WX, openid, totalFee, outTradeNo, bankTransNo, payInfo);
break;
case OL_REG:
new MicroService().OLReg(openid, totalFee, outTradeNo, bankTransNo, payDate, payTime);
break;
public static Result isNoPay() {
case TPP_QR_REG:
new ThirdPartyPayService().tppQRRegNotify(MerchantEnum.WX, openid, totalFee, outTradeNo, bankTransNo, payDate, payTime, payInfo);
break;
default:
log.info("【微信】通知类型错误,结束请求");
break;
}
}
/**
* 是否允许付款
*/
public static Result isPaymentPermittedByTime() {
if (DateHelper.inTimeRangeH_m_s("23:55:00", "23:59:59") || DateHelper.inTimeRangeH_m_s("00:00:00", "00:00:30")) {
return Result.error(ResultEnum.SYSTEM_IS_BILLING);
}

@ -2,7 +2,7 @@ package com.ynxbd.common.service;
import com.alibaba.fastjson.JSONObject;
import com.ynxbd.common.action.pay.PEnum;
import com.ynxbd.common.action.pay.SelfHelpCount;
import com.ynxbd.common.bean.SelfHelpCount;
import com.ynxbd.common.bean.ConfigSelfHelp;
import com.ynxbd.common.bean.StandardPrice;
import com.ynxbd.common.bean.enums.MerchantEnum;
@ -90,7 +90,7 @@ public class RecipeService {
* @return 是否完成操作
*/
public Result recipeHand(MerchantEnum merchantEnum, String openid, String patientId, String treatNum, String totalFee, String recipeJson, String payWay, Integer awaitSecond) {
Result result = PayService.isNoPay();
Result result = PayService.isPaymentPermittedByTime();
if (result != null) {
return result;
}

@ -148,7 +148,6 @@ public class RegService {
log.info("{} 开始调用HIS挂号:patientId={}, bankTransNo={}", merchantEnum.NAME, patientId, bankTransNo);
String hisTransNo = null, treatNum = null, hisQueueNo, callNum = null, invoiceTransNo = null;
// 挂号类型:1:预约挂号,2:现场挂号;3:分时段预约挂号,4:分时段现场挂号
JsonResult jsonResult;
@ -735,7 +734,7 @@ public class RegService {
* 挂号下单
*/
public Result regPlaceOrder(String payCode, String ip, Boolean isOccupySource, Boolean isZeroPay, Register reg) {
Result noPayTime = PayService.isNoPay();
Result noPayTime = PayService.isPaymentPermittedByTime();
if (noPayTime != null) {
return noPayTime;
}

@ -0,0 +1,110 @@
package com.ynxbd.common.service;
import com.ynxbd.common.action.pay.PEnum;
import com.ynxbd.common.bean.enums.MerchantEnum;
import com.ynxbd.common.bean.pay.Register;
import com.ynxbd.common.dao.RegisterDao;
import com.ynxbd.common.dao.his.HisRegisterDao;
import com.ynxbd.common.helper.his.HisHelper;
import com.ynxbd.common.result.JsonResult;
import com.ynxbd.common.result.ResultEnum;
import com.ynxbd.common.result.ServiceException;
import com.ynxbd.wx.config.MessagePushConfig;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.ObjectUtils;
import java.math.BigDecimal;
@Slf4j
public class ThirdPartyPayService {
/**
* 挂号回调
*
* @param merchantEnum 商户类型
* @param totalFee 订单金额
* @param openid openid
* @param bankTransNo 商户返回流水号
* @param outTradeNo 订单号
* @param payDate 支付日期
* @param payTime 支付时间
* @return 是否完成
*/
public boolean tppQRRegNotify(MerchantEnum merchantEnum, String openid, BigDecimal totalFee, String outTradeNo, String bankTransNo, String payDate, String payTime, String payInfo) throws ServiceException {
RegisterDao registerDao = new RegisterDao();
Register reg;
String regType, patientId;
String tradeNo = HisHelper.getHisTradeNo(bankTransNo, PEnum.TPP_QR_REG);
try {
reg = registerDao.selectByOutTradeNo(outTradeNo);
if (reg == null) {
throw new ServiceException(ResultEnum.DATA_NOT_FOUND,
String.format("{%s} [第三方][扫码挂号]数据库中未找到订单 outTradeNo={%s}, bankTransNo={%s}, tradeNo={%s}", merchantEnum.NAME, outTradeNo, bankTransNo, tradeNo));
}
Integer hisStatus = reg.getHisStatus();
Integer payStatus = reg.getPayStatus();
if (payStatus == null || hisStatus == null || payStatus == 0 || hisStatus == 0) { // 状态不明确
log.info("{{}} [第三方][扫码挂号]订单已支付,停止向下执行 outTradeNo={{}}, bankTransNo={{}}, tradeNo={{}}", merchantEnum.NAME, outTradeNo, bankTransNo, tradeNo);
return false;
}
// 更新商户支付状态
if (!registerDao.updateMerPaidByOutTradeNo(outTradeNo, payDate, payTime, bankTransNo, tradeNo, null)) {
log.info("{{}} [第三方][扫码挂号]更新订单失败,停止向下执行 outTradeNo={{}}, bankTransNo={{}}, tradeNo={{}}", merchantEnum.NAME, outTradeNo, bankTransNo, tradeNo);
return false;
}
reg.setPayDate(payDate);
reg.setPayTime(payTime);
reg.setBankTransNo(bankTransNo);
reg.setTradeNo(tradeNo);
// 挂号类型:1:预约挂号,2:今日挂号;3:分时段预约挂号,4:分时段今日挂号
regType = reg.getRegType();
patientId = reg.getPatientId();
if (ObjectUtils.isEmpty(reg.getSourceId())) {
throw new ServiceException(ResultEnum.PARAM_IS_BLANK,
String.format("{%s} [第三方][扫码挂号]号源ID缺失 outTradeNo={%s}, bankTransNo={%s}, tradeNo={%s}", merchantEnum.NAME, outTradeNo, bankTransNo, tradeNo));
}
if (ObjectUtils.isEmpty(patientId) || ObjectUtils.isEmpty(regType) || ObjectUtils.isEmpty(reg.getRegDate())) {
throw new ServiceException(ResultEnum.PARAM_IS_BLANK,
String.format("{%s} [第三方][扫码挂号]参数缺失 outTradeNo={%s}, bankTransNo={%s}, tradeNo={%s}", merchantEnum.NAME, outTradeNo, bankTransNo, tradeNo));
}
} catch (ServiceException e) {
log.error(e.getMessage());
throw new ServiceException(e.getMessage());
}
log.info("{} [第三方][扫码挂号]开始调用HIS:patientId={}, bankTransNo={}", merchantEnum.NAME, patientId, bankTransNo);
JsonResult jsonResult = new HisRegisterDao().tppQRReg(merchantEnum, reg.getSourceId(), String.valueOf(totalFee), payDate, payTime, openid, bankTransNo, tradeNo);
String message = jsonResult.getMessage();
if (!jsonResult.success()) { // 调用HIS失败-->自动退款
log.info("{} [第三方][扫码挂号]调用HIS挂号失败:patientId={}", merchantEnum.NAME, patientId);
throw new ServiceException(message);
}
String invoiceTransNo = jsonResult.getDataMapString("InvoiceTransNo");
String hisTransNo = jsonResult.getDataMapString("HISTransNo");
String hisQueueNo = jsonResult.getDataMapString("QueueNo");
// 挂号成功-->更新挂号信息
log.info("{} [第三方][扫码挂号]更新HIS挂号信息[after] outTradeNo={}, tradeNo={}, patientId={}, bankTransNo={}", merchantEnum.NAME, outTradeNo, tradeNo, patientId, bankTransNo);
if (registerDao.updateHisRegInfo(outTradeNo, bankTransNo, hisTransNo, null, invoiceTransNo, null)) {
log.info("{} [第三方][扫码挂号]更新HIS挂号信息成功 patientId={}", merchantEnum.NAME, patientId);
}
if (MerchantEnum.WX.equals(merchantEnum)) {
MessagePushConfig.regPush(merchantEnum, reg);
}
return true;
}
public static void main(String[] args) {
System.out.println(0.1 + 0.2);
}
}

@ -81,7 +81,7 @@ public class RegParams {
log.info("[挂号类型]{}", (isSplitTime ? "分时段挂号" : "普通挂号"));
reg.setIsSplitTime(isSplitTime);
if (isSplitTime) {
if (isSplitTime) { // 分时段
String tName = params.getString("tName");
String queueNum = params.getString("queueNum");
String sourceId = params.getString("sourceId");

@ -1,7 +0,0 @@
package com.ynxbd.common.test;
import com.ynxbd.common.helper.common.Base64Helper;
public class PatientTest {
}

@ -0,0 +1,12 @@
package com.ynxbd.common.test;
import com.ynxbd.common.helper.common.AesHelper;
import com.ynxbd.wx.wxfactory.ReqParamHelper;
public class Test01 {
public static void main(String[] args) {
// 患者id
System.out.println(ReqParamHelper.encode("282466"));
}
}

@ -29,7 +29,8 @@ import java.util.Map;
*/
@Slf4j
public class MeTechnologyReConfig {
private MeTechnologyReConfig() {}
private MeTechnologyReConfig() {
}
public static final String MEDICAL_TECHNOLOGY_RESERVE_WEBSERVICE_URL;
public static final String MEDICAL_TECHNOLOGY_RESERVE_TERMINAL_NO;
@ -37,6 +38,7 @@ public class MeTechnologyReConfig {
public static final String MEDICAL_TECHNOLOGY_RESERVE_JSON_URL;
public static final MediaType JSON
= MediaType.parse("application/json; charset=utf-8");
static {
ProperHelper config = new ProperHelper().read("medical-technology-reserve.properties");
if (config == null) {
@ -44,8 +46,7 @@ public class MeTechnologyReConfig {
MEDICAL_TECHNOLOGY_RESERVE_TERMINAL_NO = null;
MEDICAL_TECHNOLOGY_RESERVE_TEST_PATIENT_ID = null;
MEDICAL_TECHNOLOGY_RESERVE_JSON_URL = null;
}
else {
} else {
MEDICAL_TECHNOLOGY_RESERVE_WEBSERVICE_URL = config.getString("medical_technology_reserve_webservice_url");
MEDICAL_TECHNOLOGY_RESERVE_TERMINAL_NO = config.getString("medical_technology_reserve_terminal_no");
MEDICAL_TECHNOLOGY_RESERVE_TEST_PATIENT_ID = config.getString("medical_technology_reserve_test_patientId");
@ -77,8 +78,7 @@ public class MeTechnologyReConfig {
log.info("[天助预约平台] 预约成功 message-{}", jsonResult.getMessage());
// MessagePushConfig.businessPush("天助预约平台",patientId,jsonResult.getMessage(),null);
}
}
catch (Exception e) {
} catch (Exception e) {
log.error("[天助预约平台] 调用医技预约出错,error-{}", e.toString());
}
}
@ -100,6 +100,7 @@ public class MeTechnologyReConfig {
/**
* 预约平台提供终端调用主要用来获取患者申请单列表用于预约改约
*
* @return 根据患者身份获得开立检查单情况
*/
public static Result getCanBookOrders(String patientId, String startDate, String endDate) {
@ -128,6 +129,7 @@ public class MeTechnologyReConfig {
/**
* 根据日期范围获得可使用资源概况
*
* @param patientId 患者id
* @param startDate 开始时间
* @param endDate 结束时间
@ -162,6 +164,7 @@ public class MeTechnologyReConfig {
/**
* 预约平台提供终端调用主要用来获取号池明细信息
*
* @param examRoomOrQueue 检查室或队列
* @param startDate 开始时间
* @param endDate 结束时间
@ -194,6 +197,7 @@ public class MeTechnologyReConfig {
/**
* 根据提交时段锁定号池资源
*
* @param appFormID 检查室或队列
* @param examRoomOrQueue 检查室或队列
* @param beginDateTime 开始时间
@ -254,5 +258,4 @@ public class MeTechnologyReConfig {
}
}

@ -18,6 +18,8 @@ public class WeChatConfig {
public static final String MCH_KEY;
//
public static final String PASSWORD;
public static final String DEV_OPEN_IDS;
//
private static String BASE_URL;
private static String WEB_PATH;
@ -39,6 +41,8 @@ public class WeChatConfig {
MCH_ID = config.getString("wx.mchId");
MCH_KEY = config.getString("wx.mchKey");
DEV_OPEN_IDS = config.getString("wx.dev_open_ids", "");
WEB_PATH = config.getString("wx.webPath");
if (WEB_PATH == null) {
WEB_PATH = "";
@ -132,6 +136,17 @@ public class WeChatConfig {
return CACHE_WEB_URL;
}
/**
* 判断是否为开发用户
*/
public static boolean isDevUser(String openid) {
if (ObjectUtils.isEmpty(openid)) {
return false;
}
String openIds = DEV_OPEN_IDS == null ? "" : DEV_OPEN_IDS;
return openIds.contains(openid);
}
// public static String getAccessToken() {
// String accessToken = ACCESS_TOKEN_CACHE.get(ACCESS_TOKEN_KEY);

@ -18,14 +18,9 @@ package com.ynxbd.wx.utils;
public class DesEncryptHelper {
private static final String KEY = "2018ynhm8321";
public static void main(String[] args) {
String s = enCode("oeso-t62kkoRwLVVkSkwmmjPfUXk");
String a= deCode("2235AE2E1563DF971CBF4C3F2D4DC06F1D0AA3BF5EA65B865C5DF0E0694DF3FFBA5360D9607A60F80CC71F9C7D7E8F241E00310C63D5C5B414D5FEB43A0B2E7A2AA335CD601DB3727BAF0DFEDB48388CFEA7A8301CDEAA42817F7316E6CBF0B7AC2671148FCA0E2DA337CF664C0C4FD85F7D799D496125D2186D82889E6B81D25107616591DDC46D");
System.out.println(a);
}
/**
* 加密
*
* @param s 加密的字符串
* @return 加密后的字符
*/
@ -35,6 +30,7 @@ public class DesEncryptHelper {
/**
* 解密
*
* @param s 需要解密的字符串
* @return 解密后的内容
*/
@ -44,6 +40,7 @@ public class DesEncryptHelper {
/**
* 自定义key的加密
*
* @param s
* @param strKey 自定义的key
* @return
@ -54,6 +51,7 @@ public class DesEncryptHelper {
/**
* 自定义key的解密
*
* @param s
* @param strKey 自定义的key
* @return
@ -61,15 +59,20 @@ public class DesEncryptHelper {
public static String deCode(String s, String strKey) {
return new DesHelper().stringDec(s, strKey);
}
public static char[] enCodeChar(String s, String strKey) {
return new DesHelper().charEnc(s, strKey);
}
public static char[] deCodeChar(String s, String strKey) {
return new DesHelper().charDec(s, strKey);
}
// public static void main(String[] args) throws Exception {
//// System.out.println(DesEncryptHelper.enCode("oeso-t5DIu2qpb0LJaKeJ06TRgzw", KEY));
// System.out.println(DesEncryptHelper.deCode("39E1BBDCA603241A017F6ABE802153ED94B2C5CD51DE268E63ECC53A8EE8241AF4D8E90E7C01D67D096AC60B3942817CBA8EEAF25B3BAA360566BE598C989659F6DC8A37E07FA5BD266A255BF3BE7256A82D9541864884310EA1F949CDAA9DEB3494C2EE12F16D7C27CF0E8A56BE1D6F9F90987EC1614A7F6C1541EDB5C496174054C25180DA77270F93E7A6564708BCA688FC09355CD0AC9605D6E07CBC7FA3", KEY));
// String s = enCode("oeso-t62kkoRwLVVkSkwmmjPfUXk");
// String a = deCode("2235AE2E1563DF971CBF4C3F2D4DC06F1D0AA3BF5EA65B865C5DF0E0694DF3FFBA5360D9607A60F80CC71F9C7D7E8F241E00310C63D5C5B414D5FEB43A0B2E7A2AA335CD601DB3727BAF0DFEDB48388CFEA7A8301CDEAA42817F7316E6CBF0B7AC2671148FCA0E2DA337CF664C0C4FD85F7D799D496125D2186D82889E6B81D25107616591DDC46D");
// System.out.println(a);
// }
}

@ -10,6 +10,7 @@ import com.ynxbd.common.service.PatientService;
import com.ynxbd.wx.config.WeChatConfig;
import com.ynxbd.wx.wxfactory.bean.SnsOath2AccessToken;
import com.ynxbd.wx.wxfactory.bean.SnsUserInfo;
import lombok.extern.slf4j.Slf4j;
import org.ehcache.Cache;
import javax.servlet.http.HttpServletRequest;
@ -21,6 +22,7 @@ import java.util.Date;
import java.util.HashMap;
import java.util.Map;
@Slf4j
public class WxAuthHelper {
public static String auth(HttpServletRequest request, HttpServletResponse response, boolean isUserInfo) {
@ -43,7 +45,7 @@ public class WxAuthHelper {
request.getSession().setAttribute("openid", openid);
Cache<String, User> cache = WxCacheHelper.getUserCache();
if (!cache.containsKey(openid)) {
if (WeChatConfig.isDevUser(openid) || !cache.containsKey(openid)) {
String unionId = snsToken.getUnionid();
User user = new User();
user.setUnionId(unionId);

@ -16,16 +16,18 @@
#wx.baseURL=http://wx.mzsrmyy.net/wx/
#wx.webPath=/web
#wx.password=ynxbd@6910
## 开启处方预结算(第2开关)(注意该配置需联系HIS开发者确认支持才能开启,否则存在风险!)
## \u5F00\u542F\u5904\u65B9\u9884\u7ED3\u7B97\uFF08\u7B2C2\u5F00\u5173\uFF09\uFF08\u6CE8\u610F\u8BE5\u914D\u7F6E\u9700\u8054\u7CFBHIS\u5F00\u53D1\u8005\u786E\u8BA4\u652F\u6301\u624D\u80FD\u5F00\u542F\uFF0C\u5426\u5219\u5B58\u5728\u98CE\u9669\uFF01\uFF09
#wx.is_recipe_prepay=true
# 芒市妇幼配置
# \u8292\u5E02\u5987\u5E7C\u914D\u7F6E
wx.appId=wx7d33a52af019f134
wx.appSecret=56ac2bc26672f05f06d6c557d978c0b1
wx.token=ynxbd
wx.aesKey=SvUOQUIaawWoB6ptViNqcYkrTs1bmq5cbhiBglhtkct
wx.mchId=1605084861
wx.mchKey=MsfyBJ8871934EKFJA03jdslkfajAaBC
wx.baseURL=http://www.msfyy.com/wx/
wx.baseURL=http://127.0.0.1/wx/
wx.webPath=/web
wx.password=ynxbd@6910
# \u7ED5\u8FC7\u7528\u6237\u7F13\u5B58\uFF1A\u82F1\u6587\u9017\u53F7\u9694\u5F00
wx.dev_open_ids=1,2,3

@ -1,9 +1,9 @@
# \u4E91\u80F6\u7247\u5730\u5740
xbd.out_team_cloud_film_link= http://192.168.10.43:3307/wx3307
xbd.200.token_url=http://10.20.10.41:8082
# \u75C5\u5386\u590D\u5370
xbd.medical_record_remake_url = http://192.168.12.66:8081
xbd.200.med_record_copy_url=http://192.168.12.66:8081
# \u4F53\u68C0
xbd.peis = http://192.168.12.102:3000/peisReserve
xbd.100.peis_url=http://192.168.12.102:3000/peisReserve
#location /wx3303{

Loading…
Cancel
Save