diff --git a/src/main/java/com/ynxbd/common/action/PushAction.java b/src/main/java/com/ynxbd/common/action/PushAction.java index ad0c119..32f28d7 100644 --- a/src/main/java/com/ynxbd/common/action/PushAction.java +++ b/src/main/java/com/ynxbd/common/action/PushAction.java @@ -25,11 +25,11 @@ public class PushAction extends BaseAction { @Action("getRedis") public Result getRedis(String name) { RequestBody requestBody = new FormBody.Builder() - .add("name",name) + .add("name", name) .build(); String url = "http://127.0.0.1:8123/MessagePlatform/api/getRedis"; - String requestResult = OkHttpHelper.post(url,requestBody); - log.info("[获取推送缓存]requestResult-{},url-{}",requestResult,url); + String requestResult = OkHttpHelper.post(url, requestBody); + log.info("[获取推送缓存]requestResult-{},url-{}", requestResult, url); return Result.success(JsonHelper.parseObject(requestResult)); } } diff --git a/src/main/java/com/ynxbd/common/action/RegisterAction.java b/src/main/java/com/ynxbd/common/action/RegisterAction.java index e53db12..83696b5 100644 --- a/src/main/java/com/ynxbd/common/action/RegisterAction.java +++ b/src/main/java/com/ynxbd/common/action/RegisterAction.java @@ -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; /** @@ -358,18 +355,29 @@ 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) { + log.info("[查询预约待签到记录(包含今日挂号)] patientId-{} begDate={}, endDate={}", patientId, begDate, endDate); + 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); + } + + if (begDate == null || endDate == null) { + begDate = DateHelper.getCurDate() + " 06:00:00"; + endDate = DateHelper.getCurDate() + " 23:59:59"; } - JSONArray reLineSignInRecord = new HisRegisterDao().getReLineSignInRecord(begDate, endDate); - if (reLineSignInRecord == null) { - return Result.success(); + JSONArray dataList = new HisRegisterDao().getReLineSignInRecord(begDate, endDate); + Map 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 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)); diff --git a/src/main/java/com/ynxbd/common/action/SmsAction.java b/src/main/java/com/ynxbd/common/action/SmsAction.java index df88528..066a4d4 100644 --- a/src/main/java/com/ynxbd/common/action/SmsAction.java +++ b/src/main/java/com/ynxbd/common/action/SmsAction.java @@ -196,14 +196,14 @@ public class SmsAction extends BaseAction { } /** - * 天助平台短信推送 + * 天助平台短信推送(红河州第一人民医院(影像报告使用)) * @param tel 电话号码 * @param content 内容 * @return 返回发送结果 */ @Action("danMiSms") public Result DanMiSms(String tel, String content) { - log.info("[天助平台短信]url-{},content={}", tel, content); + log.info("[天助平台短信]url-{}, content={}", tel, content); if (tel == null || content == null) { return Result.error(ResultEnum.PARAM_IS_INVALID); } diff --git a/src/main/java/com/ynxbd/common/action/WechatMiniAction.java b/src/main/java/com/ynxbd/common/action/WechatMiniAction.java index a580a04..e62e1b0 100644 --- a/src/main/java/com/ynxbd/common/action/WechatMiniAction.java +++ b/src/main/java/com/ynxbd/common/action/WechatMiniAction.java @@ -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; } diff --git a/src/main/java/com/ynxbd/common/action/XBDAction.java b/src/main/java/com/ynxbd/common/action/XBDAction.java index 8c907aa..2aa1a71 100644 --- a/src/main/java/com/ynxbd/common/action/XBDAction.java +++ b/src/main/java/com/ynxbd/common/action/XBDAction.java @@ -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("请求异常"); + } } /** diff --git a/src/main/java/com/ynxbd/common/action/pay/MedicalAction.java b/src/main/java/com/ynxbd/common/action/pay/MedicalAction.java index 924f2c8..eef453a 100644 --- a/src/main/java/com/ynxbd/common/action/pay/MedicalAction.java +++ b/src/main/java/com/ynxbd/common/action/pay/MedicalAction.java @@ -111,10 +111,10 @@ public class MedicalAction extends BaseAction { @Action("medicalAuth") - public Result medicalAuth(String openid,String qrCode) { + public Result medicalAuth(String openid, String qrCode) { log.info("[医保建档] openid-{},qrCode={}", openid, qrCode); MedicalUserInfo info = WxFactory.Medical.Common().getUserInfo(MdConfig.PARTNER_URL, openid, qrCode); - log.info("[医保建档获取用户信息] resp-{}",info); + log.info("[医保建档获取用户信息] resp-{}", info); return Result.success(info); } diff --git a/src/main/java/com/ynxbd/common/action/pay/NotifyAction.java b/src/main/java/com/ynxbd/common/action/pay/NotifyAction.java index af841ab..6c0bb66 100644 --- a/src/main/java/com/ynxbd/common/action/pay/NotifyAction.java +++ b/src/main/java/com/ynxbd/common/action/pay/NotifyAction.java @@ -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)); // 收到请求-解析失败 } diff --git a/src/main/java/com/ynxbd/common/action/pay/PEnum.java b/src/main/java/com/ynxbd/common/action/pay/PEnum.java index 6e79b98..fa8c787 100644 --- a/src/main/java/com/ynxbd/common/action/pay/PEnum.java +++ b/src/main/java/com/ynxbd/common/action/pay/PEnum.java @@ -24,6 +24,7 @@ public enum PEnum { OL_REG("问诊挂号", "ol_register", "OG"), + TPP_QR_REG("第三方-扫码挂号", "tpp_qr_reg", "G"), ; public final String NAME; diff --git a/src/main/java/com/ynxbd/common/action/pay/PayAction.java b/src/main/java/com/ynxbd/common/action/pay/PayAction.java index b3296ee..16034a3 100644 --- a/src/main/java/com/ynxbd/common/action/pay/PayAction.java +++ b/src/main/java/com/ynxbd/common/action/pay/PayAction.java @@ -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 diff --git a/src/main/java/com/ynxbd/common/action/pay/ThirdPartyPayAction.java b/src/main/java/com/ynxbd/common/action/pay/ThirdPartyPayAction.java new file mode 100644 index 0000000..5dd142d --- /dev/null +++ b/src/main/java/com/ynxbd/common/action/pay/ThirdPartyPayAction.java @@ -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); + } +} diff --git a/src/main/java/com/ynxbd/common/action/pay/WxPayAction.java b/src/main/java/com/ynxbd/common/action/pay/WxPayAction.java index e80ca50..c70659c 100644 --- a/src/main/java/com/ynxbd/common/action/pay/WxPayAction.java +++ b/src/main/java/com/ynxbd/common/action/pay/WxPayAction.java @@ -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)); // 收到请求-解析失败 } diff --git a/src/main/java/com/ynxbd/common/action/pay/SelfHelpCount.java b/src/main/java/com/ynxbd/common/bean/SelfHelpCount.java similarity index 82% rename from src/main/java/com/ynxbd/common/action/pay/SelfHelpCount.java rename to src/main/java/com/ynxbd/common/bean/SelfHelpCount.java index 604be83..5877962 100644 --- a/src/main/java/com/ynxbd/common/action/pay/SelfHelpCount.java +++ b/src/main/java/com/ynxbd/common/bean/SelfHelpCount.java @@ -1,16 +1,16 @@ -package com.ynxbd.common.action.pay; - -import lombok.Getter; -import lombok.NoArgsConstructor; -import lombok.Setter; -import lombok.ToString; - -@Getter -@Setter -@ToString -@NoArgsConstructor -public class SelfHelpCount { - private int endTotal; - private int begTotal; - private int payTotal; -} +package com.ynxbd.common.bean; + +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import lombok.ToString; + +@Getter +@Setter +@ToString +@NoArgsConstructor +public class SelfHelpCount { + private int endTotal; + private int begTotal; + private int payTotal; +} diff --git a/src/main/java/com/ynxbd/common/dao/ReportDao.java b/src/main/java/com/ynxbd/common/dao/ReportDao.java index 5525aae..a040a35 100644 --- a/src/main/java/com/ynxbd/common/dao/ReportDao.java +++ b/src/main/java/com/ynxbd/common/dao/ReportDao.java @@ -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 统计报表 表的一些增删改查 diff --git a/src/main/java/com/ynxbd/common/dao/SelfHelpDao.java b/src/main/java/com/ynxbd/common/dao/SelfHelpDao.java index cc4bce2..1873b99 100644 --- a/src/main/java/com/ynxbd/common/dao/SelfHelpDao.java +++ b/src/main/java/com/ynxbd/common/dao/SelfHelpDao.java @@ -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; diff --git a/src/main/java/com/ynxbd/common/dao/his/HisRegisterDao.java b/src/main/java/com/ynxbd/common/dao/his/HisRegisterDao.java index 51d8e53..b1c65dd 100644 --- a/src/main/java/com/ynxbd/common/dao/his/HisRegisterDao.java +++ b/src/main/java/com/ynxbd/common/dao/his/HisRegisterDao.java @@ -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 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); + } + } diff --git a/src/main/java/com/ynxbd/common/helper/common/SmsHelper.java b/src/main/java/com/ynxbd/common/helper/common/SmsHelper.java index ed0a9c1..006a384 100644 --- a/src/main/java/com/ynxbd/common/helper/common/SmsHelper.java +++ b/src/main/java/com/ynxbd/common/helper/common/SmsHelper.java @@ -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,22 +187,30 @@ 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"; String timestamp = String.valueOf(new Date().getTime()); RequestBody requestBody = new FormBody.Builder() - .add("accountSid",accountSid) - .add("templateid",templateId) - .add("to",tel) - .add("timestamp",timestamp) - .add("param",content) - .add("sig", DigestUtils.md5Hex(accountSid+authToken+timestamp)) + .add("accountSid", accountSid) + .add("templateid", templateId) + .add("to", tel) + .add("timestamp", timestamp) + .add("param", content) + .add("sig", DigestUtils.md5Hex(accountSid + authToken + timestamp)) .build(); - String result = OkHttpHelper.post("https://openapi.danmi.com/textSMS/sendSMS/V1",requestBody, headers -> { - headers.add("content-type","application/x-www-form-urlencoded"); + String result = OkHttpHelper.post("https://openapi.danmi.com/textSMS/sendSMS/V1", requestBody, headers -> { + headers.add("content-type", "application/x-www-form-urlencoded"); }); - log.info("[天助平台] 短信发送 result-{},tel-{},templateId-{},content-{}",result,tel,templateId,content); + log.info("[天助平台] 短信发送 result-{},tel-{},templateId-{},content-{}", result, tel, templateId, content); return result; } @@ -299,7 +302,6 @@ public class SmsHelper { // send("SMS_462460638","18206787486",sms); - // Map sms = new HashMap<>(); // sms.put("address", "四号楼2楼6号诊室骨伤科(脊柱)"); // sms.put("deptName", "骨伤科-骨伤科专家门诊"); @@ -310,8 +312,7 @@ public class SmsHelper { // sms.put("time", "2024-12-05 10:00:00-10:03:00"); // send("SMS_475980406","18206787486",sms); - sendDanMi("1000000002608","13608818101","影像报告已经出,请及时到医院自助机进行报告打印或点击链接 https://wx.hhzyy.com/smsPacs?token=A88A6D089&inHosNum=1579733"); - + sendDanMi("1000000002608", "13608818101", "影像报告已经出,请及时到医院自助机进行报告打印或点击链接 https://wx.hhzyy.com/smsPacs?token=A88A6D089&inHosNum=1579733"); // Map sms = new HashMap<>(); diff --git a/src/main/java/com/ynxbd/common/helper/his/HisEnum.java b/src/main/java/com/ynxbd/common/helper/his/HisEnum.java index 98ebfab..de04409 100644 --- a/src/main/java/com/ynxbd/common/helper/his/HisEnum.java +++ b/src/main/java/com/ynxbd/common/helper/his/HisEnum.java @@ -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), diff --git a/src/main/java/com/ynxbd/common/helper/xbd/XBDHelper.java b/src/main/java/com/ynxbd/common/helper/xbd/XBDHelper.java index bba4005..c9f14d4 100644 --- a/src/main/java/com/ynxbd/common/helper/xbd/XBDHelper.java +++ b/src/main/java/com/ynxbd/common/helper/xbd/XBDHelper.java @@ -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); } } diff --git a/src/main/java/com/ynxbd/common/helper/xbd/XBDHttpHelper.java b/src/main/java/com/ynxbd/common/helper/xbd/XBDHttpHelper.java index cd35e84..7eae7c7 100644 --- a/src/main/java/com/ynxbd/common/helper/xbd/XBDHttpHelper.java +++ b/src/main/java/com/ynxbd/common/helper/xbd/XBDHttpHelper.java @@ -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); diff --git a/src/main/java/com/ynxbd/common/service/MedicalService.java b/src/main/java/com/ynxbd/common/service/MedicalService.java index e317af6..ba434bc 100644 --- a/src/main/java/com/ynxbd/common/service/MedicalService.java +++ b/src/main/java/com/ynxbd/common/service/MedicalService.java @@ -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; } diff --git a/src/main/java/com/ynxbd/common/service/MicroService.java b/src/main/java/com/ynxbd/common/service/MicroService.java index 9ec57d5..ec9753b 100644 --- a/src/main/java/com/ynxbd/common/service/MicroService.java +++ b/src/main/java/com/ynxbd/common/service/MicroService.java @@ -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)). diff --git a/src/main/java/com/ynxbd/common/service/PayService.java b/src/main/java/com/ynxbd/common/service/PayService.java index 2fd9927..e0a421d 100644 --- a/src/main/java/com/ynxbd/common/service/PayService.java +++ b/src/main/java/com/ynxbd/common/service/PayService.java @@ -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); } diff --git a/src/main/java/com/ynxbd/common/service/RecipeService.java b/src/main/java/com/ynxbd/common/service/RecipeService.java index 4445816..5775e29 100644 --- a/src/main/java/com/ynxbd/common/service/RecipeService.java +++ b/src/main/java/com/ynxbd/common/service/RecipeService.java @@ -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; } diff --git a/src/main/java/com/ynxbd/common/service/RegService.java b/src/main/java/com/ynxbd/common/service/RegService.java index 3eac7c3..0808075 100644 --- a/src/main/java/com/ynxbd/common/service/RegService.java +++ b/src/main/java/com/ynxbd/common/service/RegService.java @@ -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; } diff --git a/src/main/java/com/ynxbd/common/service/ThirdPartyPayService.java b/src/main/java/com/ynxbd/common/service/ThirdPartyPayService.java new file mode 100644 index 0000000..bc2f310 --- /dev/null +++ b/src/main/java/com/ynxbd/common/service/ThirdPartyPayService.java @@ -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); + } +} diff --git a/src/main/java/com/ynxbd/common/service/params/RegParams.java b/src/main/java/com/ynxbd/common/service/params/RegParams.java index 6153495..c9e930a 100644 --- a/src/main/java/com/ynxbd/common/service/params/RegParams.java +++ b/src/main/java/com/ynxbd/common/service/params/RegParams.java @@ -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"); diff --git a/src/main/java/com/ynxbd/common/test/PatientTest.java b/src/main/java/com/ynxbd/common/test/PatientTest.java deleted file mode 100644 index c08f41c..0000000 --- a/src/main/java/com/ynxbd/common/test/PatientTest.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.ynxbd.common.test; - -import com.ynxbd.common.helper.common.Base64Helper; - -public class PatientTest { - -} diff --git a/src/main/java/com/ynxbd/common/test/Test01.java b/src/main/java/com/ynxbd/common/test/Test01.java new file mode 100644 index 0000000..0870dee --- /dev/null +++ b/src/main/java/com/ynxbd/common/test/Test01.java @@ -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")); + } +} diff --git a/src/main/java/com/ynxbd/wx/config/MeTechnologyReConfig.java b/src/main/java/com/ynxbd/wx/config/MeTechnologyReConfig.java index db9c318..c216f62 100644 --- a/src/main/java/com/ynxbd/wx/config/MeTechnologyReConfig.java +++ b/src/main/java/com/ynxbd/wx/config/MeTechnologyReConfig.java @@ -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,90 +38,90 @@ 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){ - MEDICAL_TECHNOLOGY_RESERVE_WEBSERVICE_URL = null; + if (config == null) { + MEDICAL_TECHNOLOGY_RESERVE_WEBSERVICE_URL = null; MEDICAL_TECHNOLOGY_RESERVE_TERMINAL_NO = null; MEDICAL_TECHNOLOGY_RESERVE_TEST_PATIENT_ID = null; MEDICAL_TECHNOLOGY_RESERVE_JSON_URL = null; - } - else { - MEDICAL_TECHNOLOGY_RESERVE_WEBSERVICE_URL = config.getString("medical_technology_reserve_webservice_url"); + } 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"); MEDICAL_TECHNOLOGY_RESERVE_JSON_URL = config.getString("medical_technology_reserve_json_url"); } } - public static void reserveRun(String patientId){ + public static void reserveRun(String patientId) { try { - if(MEDICAL_TECHNOLOGY_RESERVE_WEBSERVICE_URL==null){ + if (MEDICAL_TECHNOLOGY_RESERVE_WEBSERVICE_URL == null) { return; } - if(MEDICAL_TECHNOLOGY_RESERVE_TEST_PATIENT_ID!=null){ - if(!patientId.equals(MEDICAL_TECHNOLOGY_RESERVE_TEST_PATIENT_ID)){ + if (MEDICAL_TECHNOLOGY_RESERVE_TEST_PATIENT_ID != null) { + if (!patientId.equals(MEDICAL_TECHNOLOGY_RESERVE_TEST_PATIENT_ID)) { log.info("[天助预约平台] 不是测试账号,不允许调用接口 patientId-{}", patientId); return; } } - String result = OkHttpHelper.get(MEDICAL_TECHNOLOGY_RESERVE_WEBSERVICE_URL, params->{ - params.put("patientID",patientId); - params.put("terminalNo",MEDICAL_TECHNOLOGY_RESERVE_TERMINAL_NO); + String result = OkHttpHelper.get(MEDICAL_TECHNOLOGY_RESERVE_WEBSERVICE_URL, params -> { + params.put("patientID", patientId); + params.put("terminalNo", MEDICAL_TECHNOLOGY_RESERVE_TERMINAL_NO); }); JsonResult jsonResult = JsonResult.xmlToBean(result, JsonResultEnum.SYS_RESERVE); - if(jsonResult==null){ - log.info("[天助预约平台] xml转换出错,result-{}",result); + if (jsonResult == null) { + log.info("[天助预约平台] xml转换出错,result-{}", result); return; } - if(jsonResult.success()){ - log.info("[天助预约平台] 预约成功 message-{}",jsonResult.getMessage()); + if (jsonResult.success()) { + log.info("[天助预约平台] 预约成功 message-{}", jsonResult.getMessage()); // MessagePushConfig.businessPush("天助预约平台",patientId,jsonResult.getMessage(),null); } - } - catch (Exception e) { + } catch (Exception e) { log.error("[天助预约平台] 调用医技预约出错,error-{}", e.toString()); } } - public static String getToken(){ - String result = OkHttpHelper.get(MEDICAL_TECHNOLOGY_RESERVE_JSON_URL + "/Tools/Tool/GetToken",params-> { - params.put("clientName","WXAPP"); - params.put("clientCode","wxapp"); + public static String getToken() { + String result = OkHttpHelper.get(MEDICAL_TECHNOLOGY_RESERVE_JSON_URL + "/Tools/Tool/GetToken", params -> { + params.put("clientName", "WXAPP"); + params.put("clientCode", "wxapp"); }); JSONObject jsonObject = JsonHelper.parseObject(result); - if(jsonObject==null){ - log.info("[天助预约平台] token获取失败,result-{}",result); + if (jsonObject == null) { + log.info("[天助预约平台] token获取失败,result-{}", result); return null; } String token = jsonObject.getString("token"); - log.info("[天助预约平台] token获取成功,token={}",token); + log.info("[天助预约平台] token获取成功,token={}", token); return token; } /** * 预约平台提供,终端调用,主要用来获取患者申请单列表,用于预约改约 + * * @return 根据患者身份获得开立检查单情况 */ - public static Result getCanBookOrders(String patientId,String startDate,String endDate){ + public static Result getCanBookOrders(String patientId, String startDate, String endDate) { Map params = new HashMap<>(); params.put("PatientId", patientId); params.put("StartDate", startDate); params.put("EndDate", endDate); params.put("TerminalNo", MEDICAL_TECHNOLOGY_RESERVE_TERMINAL_NO); params.put("IsBooked", "2"); - RequestBody requestBody = RequestBody.create(JSON,JsonHelper.toJsonString(params)); + RequestBody requestBody = RequestBody.create(JSON, JsonHelper.toJsonString(params)); - String result = OkHttpHelper.post(MEDICAL_TECHNOLOGY_RESERVE_JSON_URL+"/BookDetails/BookDetails/GetCanBookOrders",requestBody,headers -> { - headers.add("token",getToken()); + String result = OkHttpHelper.post(MEDICAL_TECHNOLOGY_RESERVE_JSON_URL + "/BookDetails/BookDetails/GetCanBookOrders", requestBody, headers -> { + headers.add("token", getToken()); }); JSONObject jsonObject = JsonHelper.parseObject(result); - if(jsonObject==null){ - log.info("[天助预约平台] patientId-{},startDate-{},endDate-{} 获取患者申请信息失败,result-{}",patientId,startDate,endDate,result); + if (jsonObject == null) { + log.info("[天助预约平台] patientId-{},startDate-{},endDate-{} 获取患者申请信息失败,result-{}", patientId, startDate, endDate, result); return Result.error(); } - if(!"0".equals(jsonObject.getString("ResultCode"))){ - log.info("[天助预约平台] 获取患者申请信息失败,失败原因-{}",jsonObject.getString("ResultContent")); + if (!"0".equals(jsonObject.getString("ResultCode"))) { + log.info("[天助预约平台] 获取患者申请信息失败,失败原因-{}", jsonObject.getString("ResultContent")); return Result.error(jsonObject.getString("ResultCode")); } return Result.success(jsonObject.getJSONArray("OrderLists").toJavaList(BookOrder.class)); @@ -128,14 +129,15 @@ public class MeTechnologyReConfig { /** * 根据日期范围获得可使用资源概况 - * @param patientId 患者id - * @param startDate 开始时间 - * @param endDate 结束时间 - * @param docDetailedNo 申请单编号 + * + * @param patientId 患者id + * @param startDate 开始时间 + * @param endDate 结束时间 + * @param docDetailedNo 申请单编号 * @param intervalTimeType 上午或者下午 * @return 日期范围获得可使用资源概况 */ - public static Result getNumberSourceStatistics(String patientId, String startDate, String endDate, String docDetailedNo, String intervalTimeType){ + public static Result getNumberSourceStatistics(String patientId, String startDate, String endDate, String docDetailedNo, String intervalTimeType) { Map params = new HashMap<>(); params.put("PatientId", patientId); params.put("StartDate", startDate); @@ -145,16 +147,16 @@ public class MeTechnologyReConfig { String json = JsonHelper.toJsonString(params); RequestBody requestBody = RequestBody.create(JSON, json); - String result = OkHttpHelper.post(MEDICAL_TECHNOLOGY_RESERVE_JSON_URL+"/BookDetails/BookDetails/GetNumberSourceStatistics",requestBody,headers -> { - headers.add("token",getToken()); + String result = OkHttpHelper.post(MEDICAL_TECHNOLOGY_RESERVE_JSON_URL + "/BookDetails/BookDetails/GetNumberSourceStatistics", requestBody, headers -> { + headers.add("token", getToken()); }); JSONObject jsonObject = JsonHelper.parseObject(result); - if(jsonObject==null){ - log.info("[天助预约平台] patientId-{},startDate-{},endDate-{},docDetailedNo-{},intervalTimeType-{} 根据日期范围获得可使用资源概况失败,result-{}",patientId,startDate,endDate,docDetailedNo,intervalTimeType,result); + if (jsonObject == null) { + log.info("[天助预约平台] patientId-{},startDate-{},endDate-{},docDetailedNo-{},intervalTimeType-{} 根据日期范围获得可使用资源概况失败,result-{}", patientId, startDate, endDate, docDetailedNo, intervalTimeType, result); return Result.error(); } - if(!"0".equals(jsonObject.getString("resultCode"))){ - log.info("[天助预约平台] 根据日期范围获得可使用资源概况失败,失败原因-{}",jsonObject.getString("resultContent")); + if (!"0".equals(jsonObject.getString("resultCode"))) { + log.info("[天助预约平台] 根据日期范围获得可使用资源概况失败,失败原因-{}", jsonObject.getString("resultContent")); return Result.error(jsonObject.getString("resultCode")); } return Result.success(jsonObject.getJSONArray("numberSourceStatisticsApplyDTO").toJavaList(NumberSourceStatistics.class)); @@ -162,31 +164,32 @@ public class MeTechnologyReConfig { /** * 预约平台提供,终端调用,主要用来获取号池明细信息 + * * @param examRoomOrQueue 检查室或队列 - * @param startDate 开始时间 - * @param endDate 结束时间 - * @param appFromID 医嘱申请单号 + * @param startDate 开始时间 + * @param endDate 结束时间 + * @param appFromID 医嘱申请单号 * @return 号池明细信息 */ - public static Result getNumberSourceDetails(String examRoomOrQueue, String startDate, String endDate, String appFromID){ + public static Result getNumberSourceDetails(String examRoomOrQueue, String startDate, String endDate, String appFromID) { JSONObject jsonParams = new JSONObject(); - jsonParams.put("examRoomOrQueue",examRoomOrQueue); - jsonParams.put("StartDate",startDate); - jsonParams.put("EndDate",endDate); - jsonParams.put("appFromID",appFromID); + jsonParams.put("examRoomOrQueue", examRoomOrQueue); + jsonParams.put("StartDate", startDate); + jsonParams.put("EndDate", endDate); + jsonParams.put("appFromID", appFromID); RequestBody requestBody = RequestBody.create(JSON, jsonParams.toJSONString()); - String result = OkHttpHelper.post(MEDICAL_TECHNOLOGY_RESERVE_JSON_URL+"/BookDetails/BookDetails/GetNumberSourceDetails",requestBody,headers -> { - headers.add("token",getToken()); + String result = OkHttpHelper.post(MEDICAL_TECHNOLOGY_RESERVE_JSON_URL + "/BookDetails/BookDetails/GetNumberSourceDetails", requestBody, headers -> { + headers.add("token", getToken()); }); JSONObject jsonObject = JsonHelper.parseObject(result); - if(jsonObject==null){ - log.info("[天助预约平台] examRoomOrQueue-{},startDate-{},endDate-{},appFromID-{}, 获取号池明细失败,result-{}",examRoomOrQueue,startDate,endDate,appFromID,result); + if (jsonObject == null) { + log.info("[天助预约平台] examRoomOrQueue-{},startDate-{},endDate-{},appFromID-{}, 获取号池明细失败,result-{}", examRoomOrQueue, startDate, endDate, appFromID, result); return Result.error(); } - if(!"0".equals(jsonObject.getString("resultCode"))){ - log.info("[天助预约平台] 获取号池明细失败,失败原因-{}",jsonObject.getString("resultContent")); + if (!"0".equals(jsonObject.getString("resultCode"))) { + log.info("[天助预约平台] 获取号池明细失败,失败原因-{}", jsonObject.getString("resultContent")); return Result.error(jsonObject.getString("resultCode")); } return Result.success(jsonObject.getJSONArray("numPoolDetailsDTOList").toJavaList(NumberSourceDetails.class)); @@ -194,14 +197,15 @@ public class MeTechnologyReConfig { /** * 根据提交时段锁定号池资源 - * @param appFormID 检查室或队列 + * + * @param appFormID 检查室或队列 * @param examRoomOrQueue 检查室或队列 - * @param beginDateTime 开始时间 - * @param endDateTime 结束时间 - * @param lockStatus 锁定状态 + * @param beginDateTime 开始时间 + * @param endDateTime 结束时间 + * @param lockStatus 锁定状态 * @return 是否锁定成功 */ - public static Boolean lockedBookNo(String appFormID,String examRoomOrQueue,String beginDateTime,String endDateTime,Boolean lockStatus){ + public static Boolean lockedBookNo(String appFormID, String examRoomOrQueue, String beginDateTime, String endDateTime, Boolean lockStatus) { Map params = new HashMap<>(); params.put("appFormID", appFormID); params.put("examRoomOrQueue", examRoomOrQueue); @@ -209,50 +213,49 @@ public class MeTechnologyReConfig { params.put("endDateTime", endDateTime); params.put("lockStatus", lockStatus); RequestBody requestBody = RequestBody.create(JSON, JsonHelper.toJsonString(params)); - String result = OkHttpHelper.post(MEDICAL_TECHNOLOGY_RESERVE_JSON_URL+"/BookDetails/BookDetails/LockedBookNo",requestBody,headers -> { - headers.add("token",getToken()); + String result = OkHttpHelper.post(MEDICAL_TECHNOLOGY_RESERVE_JSON_URL + "/BookDetails/BookDetails/LockedBookNo", requestBody, headers -> { + headers.add("token", getToken()); }); JSONObject jsonObject = JsonHelper.parseObject(result); - if(jsonObject==null){ - log.info("[天助预约平台] examRoomOrQueue-{},beginDateTime-{},endDateTime-{},lockStatus-{}, 根据提交时段锁定号池资源失败,result-{}",examRoomOrQueue,beginDateTime,endDateTime,lockStatus,result); + if (jsonObject == null) { + log.info("[天助预约平台] examRoomOrQueue-{},beginDateTime-{},endDateTime-{},lockStatus-{}, 根据提交时段锁定号池资源失败,result-{}", examRoomOrQueue, beginDateTime, endDateTime, lockStatus, result); return false; } - if(!"0".equals(jsonObject.getString("resultCode"))){ - log.info("[天助预约平台] 根据提交时段锁定号池资源失败,失败原因-{}",jsonObject.getString("resultContent")); + if (!"0".equals(jsonObject.getString("resultCode"))) { + log.info("[天助预约平台] 根据提交时段锁定号池资源失败,失败原因-{}", jsonObject.getString("resultContent")); return false; } return true; } - public static Result getBookedDateTime(String appFormID, String examRoomOrQueue, String beginDateTime, String endDateTime, String patientId, String patientName){ - Map param = new HashMap<>(); - param.put("AppFormID",appFormID); - param.put("ExamRoomOrQueue",examRoomOrQueue); - param.put("BeginDateTime",beginDateTime); - param.put("EndDateTime",endDateTime); - List> paramList = new ArrayList<>(); + public static Result getBookedDateTime(String appFormID, String examRoomOrQueue, String beginDateTime, String endDateTime, String patientId, String patientName) { + Map param = new HashMap<>(); + param.put("AppFormID", appFormID); + param.put("ExamRoomOrQueue", examRoomOrQueue); + param.put("BeginDateTime", beginDateTime); + param.put("EndDateTime", endDateTime); + List> paramList = new ArrayList<>(); paramList.add(param); - Map params = new HashMap<>(); - params.put("BookedDateTimeDTOList",paramList); - params.put("ScheduleUserId",patientId); - params.put("ScheduleUser",patientName); - log.info("[天助预约平台] 确定预约json={}",JsonHelper.toProJsonString(params)); + Map params = new HashMap<>(); + params.put("BookedDateTimeDTOList", paramList); + params.put("ScheduleUserId", patientId); + params.put("ScheduleUser", patientName); + log.info("[天助预约平台] 确定预约json={}", JsonHelper.toProJsonString(params)); RequestBody requestBody = RequestBody.create(JSON, JsonHelper.toProJsonString(params)); - String result = OkHttpHelper.post(MEDICAL_TECHNOLOGY_RESERVE_JSON_URL+"/BookDetails/BookDetails/GetBookedDateTime",requestBody,headers -> { - headers.add("token",getToken()); + String result = OkHttpHelper.post(MEDICAL_TECHNOLOGY_RESERVE_JSON_URL + "/BookDetails/BookDetails/GetBookedDateTime", requestBody, headers -> { + headers.add("token", getToken()); }); JSONObject jsonObject = JsonHelper.parseObject(result); - if(jsonObject==null){ - log.info("[天助预约平台] examRoomOrQueue-{},startDate-{},endDate-{},appFromID-{}, patientId-{},patientName-{}, 提交预约具体时间失败,result-{}",examRoomOrQueue,beginDateTime,endDateTime,appFormID,patientId,patientName,result); + if (jsonObject == null) { + log.info("[天助预约平台] examRoomOrQueue-{},startDate-{},endDate-{},appFromID-{}, patientId-{},patientName-{}, 提交预约具体时间失败,result-{}", examRoomOrQueue, beginDateTime, endDateTime, appFormID, patientId, patientName, result); return Result.error(); } - if(!"0".equals(jsonObject.getString("resultCode"))){ - log.info("[天助预约平台] 提交预约具体时间失败,失败原因-{}",jsonObject.getString("resultContent")); + if (!"0".equals(jsonObject.getString("resultCode"))) { + log.info("[天助预约平台] 提交预约具体时间失败,失败原因-{}", jsonObject.getString("resultContent")); return Result.error(jsonObject.getString("resultCode")); } return Result.success(jsonObject.getJSONArray("bookedInfos").toJavaList(BookedInfo.class).get(0)); } - } diff --git a/src/main/java/com/ynxbd/wx/config/WeChatConfig.java b/src/main/java/com/ynxbd/wx/config/WeChatConfig.java index c658920..5c5ae49 100644 --- a/src/main/java/com/ynxbd/wx/config/WeChatConfig.java +++ b/src/main/java/com/ynxbd/wx/config/WeChatConfig.java @@ -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); diff --git a/src/main/java/com/ynxbd/wx/servlet/QServlet.java b/src/main/java/com/ynxbd/wx/servlet/QServlet.java index 63db59d..65d8ce3 100644 --- a/src/main/java/com/ynxbd/wx/servlet/QServlet.java +++ b/src/main/java/com/ynxbd/wx/servlet/QServlet.java @@ -33,11 +33,11 @@ public class QServlet extends HttpServlet { MDC.remove("ip"); MDC.put("ip", HttpHelper.getIpAddress(request)); -// if (StringUtils.isEmpty(userAgent)) { +// if (StringUtils.isEmpty(userAgent)) { // log.info(ResultEnum.PAY_TYPE_NOT_SUPPORT.message); // HttpHelper.outRespAlert(response, ResultEnum.PAY_TYPE_NOT_SUPPORT.message); // return; -// } +// } MerchantEnum merchantEnum = MerchantEnum.WX; String userAgent = request.getHeader("user-agent"); diff --git a/src/main/java/com/ynxbd/wx/utils/DesEncryptHelper.java b/src/main/java/com/ynxbd/wx/utils/DesEncryptHelper.java index cf65837..2fd3b64 100644 --- a/src/main/java/com/ynxbd/wx/utils/DesEncryptHelper.java +++ b/src/main/java/com/ynxbd/wx/utils/DesEncryptHelper.java @@ -18,16 +18,11 @@ 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 加密后的字符 + * @return 加密后的字符 */ public static String enCode(String s) { return new DesHelper().stringEnc(s, KEY); @@ -35,8 +30,9 @@ public class DesEncryptHelper { /** * 解密 + * * @param s 需要解密的字符串 - * @return 解密后的内容 + * @return 解密后的内容 */ public static String deCode(String s) { return new DesHelper().stringDec(s, KEY); @@ -44,6 +40,7 @@ public class DesEncryptHelper { /** * 自定义key的加密 + * * @param s * @param strKey 自定义的key * @return @@ -54,22 +51,28 @@ public class DesEncryptHelper { /** * 自定义key的解密 + * * @param s - * @param strKey 自定义的key + * @param strKey 自定义的key * @return */ 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); // } } diff --git a/src/main/java/com/ynxbd/wx/wxfactory/WxAuthHelper.java b/src/main/java/com/ynxbd/wx/wxfactory/WxAuthHelper.java index 77ce522..7f8f7d1 100644 --- a/src/main/java/com/ynxbd/wx/wxfactory/WxAuthHelper.java +++ b/src/main/java/com/ynxbd/wx/wxfactory/WxAuthHelper.java @@ -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 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); diff --git a/src/main/resources/wx.properties b/src/main/resources/wx.properties index 29083f5..c782a58 100644 --- a/src/main/resources/wx.properties +++ b/src/main/resources/wx.properties @@ -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 \ No newline at end of file +wx.password=ynxbd@6910 +# \u7ED5\u8FC7\u7528\u6237\u7F13\u5B58\uFF1A\u82F1\u6587\u9017\u53F7\u9694\u5F00 +wx.dev_open_ids=1,2,3 \ No newline at end of file diff --git a/src/main/resources/xbd.properties b/src/main/resources/xbd.properties index b4d8e06..7079d1c 100644 --- a/src/main/resources/xbd.properties +++ b/src/main/resources/xbd.properties @@ -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{