From b5ef61e1679f42b5b8b3268e4b0f5c3c501e4936 Mon Sep 17 00:00:00 2001 From: wangsq <944414428@qq.com> Date: Fri, 15 Aug 2025 14:04:27 +0800 Subject: [PATCH] =?UTF-8?q?1=E3=80=81=E6=96=B0=E5=A2=9E=EF=BC=9A=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=E6=B3=A8=E8=A7=A3=E6=A0=87=E8=AF=86=E7=9A=84=E5=8F=82?= =?UTF-8?q?=E6=95=B0=E5=8F=AF=E4=BB=A5=E8=87=AA=E5=8A=A8=E8=A7=A3=E5=AF=86?= =?UTF-8?q?=E3=80=82=202=E3=80=81=E9=83=A8=E5=88=86=E5=8F=82=E6=95=B0?= =?UTF-8?q?=E8=B0=83=E6=95=B4=E4=B8=BA=E8=87=AA=E5=8A=A8=E8=A7=A3=E5=AF=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ynxbd/common/action/ApiAction.java | 13 +++---- .../ynxbd/common/action/ChronicAction.java | 20 +++++------ .../com/ynxbd/common/action/QRAction.java | 3 +- .../com/ynxbd/common/action/RecipeAction.java | 26 ++++++++------ .../ynxbd/common/action/RegisterAction.java | 34 +++++++------------ .../ynxbd/common/action/pay/PayAction.java | 7 ++-- .../common/config/interceptor/AesDecode.java | 16 +++++++++ .../config/interceptor/MethodInterceptor.java | 27 ++++++++++++++- .../common/helper/common/AesMicroHelper.java | 6 ++-- .../com/ynxbd/wx/wxfactory/AesWxHelper.java | 6 ++-- 10 files changed, 93 insertions(+), 65 deletions(-) create mode 100644 src/main/java/com/ynxbd/common/config/interceptor/AesDecode.java diff --git a/src/main/java/com/ynxbd/common/action/ApiAction.java b/src/main/java/com/ynxbd/common/action/ApiAction.java index 2aa9fec..76ae55c 100644 --- a/src/main/java/com/ynxbd/common/action/ApiAction.java +++ b/src/main/java/com/ynxbd/common/action/ApiAction.java @@ -220,8 +220,7 @@ public class ApiAction extends BaseAction { * 第三方使用勿动! */ @Action("smsHelp") - public String smsHelp() { - String phoneNo = getString("phoneno"); + public String smsHelp(String phoneNo, String callNo, String codeNo) { if (phoneNo == null) { return respEnd("ERROR:电话号码无效"); } @@ -230,18 +229,14 @@ public class ApiAction extends BaseAction { return respEnd("ERROR:电话号码长度异常"); } - String code = getString("codeno"); - if (code == null) { + if (codeNo == null) { return respEnd("ERROR:验证码无效"); } - if (code.length() > 6 || code.length() < 4) { + if (codeNo.length() > 6 || codeNo.length() < 4) { return respEnd("ERROR:验证码长度异常"); } - String callNo = getString("callno"); - - // 判断是否60s内重复请求 SmsTemplate sms = SmsHelper.isRepeat(phoneNo); if (sms != null) { @@ -253,7 +248,7 @@ public class ApiAction extends BaseAction { switch (callNo) { case "dhzzyyy001": // 东软自助机 template = "SMS_173475681"; - isFlag = SmsHelper.sendCode(template, phoneNo, code); + isFlag = SmsHelper.sendCode(template, phoneNo, codeNo); break; diff --git a/src/main/java/com/ynxbd/common/action/ChronicAction.java b/src/main/java/com/ynxbd/common/action/ChronicAction.java index 8871697..10eafeb 100644 --- a/src/main/java/com/ynxbd/common/action/ChronicAction.java +++ b/src/main/java/com/ynxbd/common/action/ChronicAction.java @@ -27,13 +27,13 @@ import java.sql.SQLException; public class ChronicAction extends BaseAction { @Action("upload") - public Result Upload(String applyName,String reserveTime,String patientId,String openId,String idcard,String treatId,Integer patientType,String diagProve,String idcardFont,String idcardBack,String inHospProve,String chronicName,String chronicCode,String phone,String address) throws SQLException { + public Result Upload(String applyName, String reserveTime, String patientId, String openId, String idcard, String treatId, Integer patientType, String diagProve, String idcardFont, String idcardBack, String inHospProve, String chronicName, String chronicCode, String phone, String address) throws SQLException { log.info("[慢病预约] applyName-{}, reserveTime-{}, patientId-{}, openId-{}, idcard-{}, treatId-{}, patientType-{}, chronicName-{}, chronicCode-{}, phone-{}, address-{}", - applyName, reserveTime, patientId, openId, idcard, treatId, patientType, chronicName, chronicCode, phone, address); - if(applyName==null||patientId==null||openId==null||idcard==null||treatId==null||patientType==null){ + applyName, reserveTime, patientId, openId, idcard, treatId, patientType, chronicName, chronicCode, phone, address); + if (applyName == null || patientId == null || openId == null || idcard == null || treatId == null || patientType == null) { return Result.error(ResultEnum.PARAM_IS_DEFECT); } - if(new ChronicDao().selectIfApply(patientType,treatId)){ + if (new ChronicDao().selectIfApply(patientType, treatId)) { return Result.error(ResultEnum.APPLY_REPEAT); } Chronic chronic = new Chronic(); @@ -52,24 +52,24 @@ public class ChronicAction extends BaseAction { chronic.setChronicCode(chronicCode); chronic.setPhone(phone); chronic.setAddress(address); - if(new ChronicDao().insert(chronic)){ + if (new ChronicDao().insert(chronic)) { return Result.success(); } return Result.error(ResultEnum.ERROR); } @Action("listByPatientId") - public Result ListByPatientId(String patientId){ - log.info("[慢病预约]-获取列表 patientId-{}",patientId); - if(patientId==null){ + public Result ListByPatientId(String patientId) { + log.info("[慢病预约]-获取列表 patientId-{}", patientId); + if (patientId == null) { return Result.error(ResultEnum.PARAM_IS_DEFECT); } return Result.success(new ChronicDao().selectByPatientId(patientId)); } @Action("getChronicDict") - public Result getChronicDict(Integer chronicType){ - if(chronicType==null){ + public Result getChronicDict(Integer chronicType) { + if (chronicType == null) { return Result.error(ResultEnum.PARAM_IS_DEFECT); } return Result.success(new ChronicDao().selectDict(chronicType)); diff --git a/src/main/java/com/ynxbd/common/action/QRAction.java b/src/main/java/com/ynxbd/common/action/QRAction.java index 109300e..a3015e5 100644 --- a/src/main/java/com/ynxbd/common/action/QRAction.java +++ b/src/main/java/com/ynxbd/common/action/QRAction.java @@ -24,8 +24,7 @@ import java.util.UUID; public class QRAction extends BaseAction { @Action("qrCodeLogin") - public Result qrCodeLogin() { - String msgInterface = getString("msgInterface"); + public Result qrCodeLogin(String msgInterface) { if (msgInterface == null) { msgInterface = "bind"; } diff --git a/src/main/java/com/ynxbd/common/action/RecipeAction.java b/src/main/java/com/ynxbd/common/action/RecipeAction.java index 210caaf..42ca233 100644 --- a/src/main/java/com/ynxbd/common/action/RecipeAction.java +++ b/src/main/java/com/ynxbd/common/action/RecipeAction.java @@ -272,29 +272,33 @@ public class RecipeAction extends BaseAction { /** * 添加核酸检测记录(德宏) + * + * @param openid openid + * @param patientId patientId + * @param temperature 体温 + * @param country 国籍 + * @param greenCode 绿码情况 + * @param tripCode 行程码情况 + * @param symptom 症状 + * @param info info + * @param isRepeat 开启重复填写检查 + * @return result */ @Action("addNatRecord") - public Result addNatRecord() { - String openid = getString("openid"); - String patientId = getString("patientId"); + public Result addNatRecord(String openid, String patientId, String temperature, String country, String greenCode, String tripCode, String symptom, String info, Boolean isRepeat) { if (patientId == null || openid == null) { return Result.error(ResultEnum.PARAM_IS_DEFECT); } - Boolean isRepeat = getBoolean("isRepeat"); // 开启重复填写检查 - if (isRepeat == null) isRepeat = false; + if (isRepeat == null) { + isRepeat = false; + } NatRecordDao natRecordDao = new NatRecordDao(); if (isRepeat && natRecordDao.hasRecord(patientId, DateHelper.getCurDate())) { return Result.success(); } - String temperature = getString("temperature"); // 体温 - String country = getString("country"); // 国籍 - String greenCode = getString("greenCode"); // 绿码情况 - String tripCode = getString("tripCode"); // 行程码情况 - String symptom = getString("symptom"); // 症状 - String info = getString("info"); log.info("[核酸检测]记录 country={}, temperature={}, greenCode={}, tripCode={}, symptom={}", country, temperature, greenCode, tripCode, symptom); if (temperature == null || greenCode == null || tripCode == null) { return Result.error(ResultEnum.PARAM_IS_DEFECT); diff --git a/src/main/java/com/ynxbd/common/action/RegisterAction.java b/src/main/java/com/ynxbd/common/action/RegisterAction.java index 5a9b165..ca9d92d 100644 --- a/src/main/java/com/ynxbd/common/action/RegisterAction.java +++ b/src/main/java/com/ynxbd/common/action/RegisterAction.java @@ -7,6 +7,7 @@ import com.ynxbd.common.action.base.BaseAction; import com.ynxbd.common.bean.*; import com.ynxbd.common.bean.enums.MerchantEnum; import com.ynxbd.common.bean.pay.Register; +import com.ynxbd.common.config.interceptor.AesDecode; import com.ynxbd.common.dao.RegisterDao; import com.ynxbd.common.dao.his.HisRegisterDao; import com.ynxbd.common.helper.common.DateHelper; @@ -209,13 +210,12 @@ public class RegisterAction extends BaseAction { * [挂号]查询挂号记录(旧) */ @Action("getSiteHistory") - public Result getSiteHistory(String begDate, String endDate, String patientId) { + public Result getSiteHistory(String begDate, String endDate, @AesDecode String patientId) { try { log.info("[挂号]查询挂号记录 patientId={}, begDate={},endDate={}", patientId, begDate, endDate); if (patientId == null || begDate == null || endDate == null) { return Result.error(ResultEnum.PARAM_IS_DEFECT); } - patientId = decodeReqString(patientId); List regRecords = new RegService().getHisRegRecordsByRegDate(patientId, begDate, endDate); return Result.success(regRecords); @@ -228,9 +228,8 @@ public class RegisterAction extends BaseAction { * [挂号]查询挂号历史记录 */ @Action("getHisRegHistoryRecords") - public Result getHisRegHistoryRecords(String begDate, String endDate, String patientId) { + public Result getHisRegHistoryRecords(String begDate, String endDate, @AesDecode String patientId) { try { - patientId = decodeReqString(patientId); log.info("[挂号]查询挂号记录 patientId={}, begDate={},endDate={}", patientId, begDate, endDate); if (patientId == null || begDate == null || endDate == null) { return Result.error(ResultEnum.PARAM_IS_DEFECT); @@ -247,8 +246,7 @@ public class RegisterAction extends BaseAction { * [预约挂号]查询预约记录 */ @Action("getHisRegReserveRecords") - public Result getHisRegReserveRecords(String begDate, String endDate, String patientId) { - patientId = decodeReqString(patientId); + public Result getHisRegReserveRecords(String begDate, String endDate, @AesDecode String patientId) { log.info("[预约挂号]查询预约记录 patientId={}, begDate={},endDate={}", patientId, begDate, endDate); if (patientId == null || begDate == null || endDate == null) { return Result.error(ResultEnum.PARAM_IS_DEFECT); @@ -372,10 +370,9 @@ public class RegisterAction extends BaseAction { * @return 待预约记录 */ @Action("getReLineSignInRecord") - public Result getReLineSignInRecord(String patientId, String begDate, String endDate) { - String decodePatientId = decodeReqString(patientId); - log.info("[查询预约待签到记录(包含今日挂号)] patientId-{} begDate={}, endDate={}", decodePatientId, begDate, endDate); - if (decodePatientId == null) { + public Result getReLineSignInRecord(@AesDecode String patientId, String begDate, String endDate) { + log.info("[查询预约待签到记录(包含今日挂号)] patientId-{} begDate={}, endDate={}", patientId, begDate, endDate); + if (patientId == null) { return Result.error(ResultEnum.PARAM_IS_INVALID); } @@ -390,7 +387,7 @@ public class RegisterAction extends BaseAction { dataMap.put("list", new ArrayList<>()); return Result.success(dataMap); } - List findDataList = dataList.stream().filter(iter -> Objects.equals(((JSONObject) iter).getString("PatientId"), decodePatientId)).collect(Collectors.toList()); + List findDataList = dataList.stream().filter(iter -> Objects.equals(((JSONObject) iter).getString("PatientId"), patientId)).collect(Collectors.toList()); dataMap.put("list", findDataList); return Result.success(dataMap); } @@ -404,8 +401,7 @@ public class RegisterAction extends BaseAction { * @return 待预约记录 */ @Action("getRegSignInByPatientId") - public Result getRegSignInByPatientId(String patientId, String begDate, String endDate) { - patientId = decodeReqString(patientId); + public Result getRegSignInByPatientId(@AesDecode String patientId, String begDate, String endDate) { log.info("[挂号待签到记录]查询 patientId={} begDate={}, endDate={}", patientId, begDate, endDate); if (patientId == null) { return Result.error(ResultEnum.PARAM_IS_INVALID); @@ -421,8 +417,7 @@ public class RegisterAction extends BaseAction { * @return 待预约记录 */ @Action("getRegSignInByTreatNum") - public Result getRegSignInByTreatNum(String treatNum) { - treatNum = decodeReqString(treatNum); + public Result getRegSignInByTreatNum(@AesDecode String treatNum) { log.info("[挂号待签到记录]查询 treatNum={}", treatNum); if (treatNum == null) { return Result.error(ResultEnum.PARAM_IS_INVALID); @@ -574,9 +569,8 @@ public class RegisterAction extends BaseAction { * [就医助手]查询HIS挂号记录 */ @Action("getHisRegInfo") - public Result getHisRegInfo(String regDate, String patientId, String hisTransNo, String openId) { + public Result getHisRegInfo(String regDate, @AesDecode String patientId, String hisTransNo, String openId) { log.info("[就医助手]查询HIS挂号信息 regDate={}, patientId={}, hisTransNo={} openId={}", regDate, patientId, hisTransNo, openId); - patientId = decodeReqString(patientId); if (ObjectUtils.isEmpty(regDate) || ObjectUtils.isEmpty(patientId)) { return Result.error(ResultEnum.PARAM_IS_DEFECT); } @@ -592,8 +586,7 @@ public class RegisterAction extends BaseAction { * [挂号订单]查询信息 */ @Action("getRegOrder") - public Result getRegOrder(String patientId, String tradeNo, String hisTransNo) { - patientId = decodeReqString(patientId); + public Result getRegOrder(@AesDecode String patientId, String tradeNo, String hisTransNo) { log.info("[挂号订单]查询信息 patientId={}, tradeNo={}, hisTransNo={}", patientId, tradeNo, hisTransNo); if (ObjectUtils.isEmpty(patientId) || ObjectUtils.isEmpty(hisTransNo)) { return Result.error(ResultEnum.PARAM_IS_DEFECT); @@ -614,9 +607,8 @@ public class RegisterAction extends BaseAction { * [就医助手]修改流程标记 */ @Action("completeRegTreatNum") - public Result completeRegTreatNum(String treatNum, String processMark, String openId, String patientId, String tradeNo, String hisTransNo, String orderFromOwner) { + public Result completeRegTreatNum(String treatNum, String processMark, String openId, @AesDecode String patientId, String tradeNo, String hisTransNo, String orderFromOwner) { try { - patientId = decodeReqString(patientId); log.info("[就医助手]修改流程标记 treatNum={}, processMark={}, openId={}, patientId={}, tradeNo={}, hisTransNo={}, orderFromOwner={}", treatNum, processMark, openId, patientId, tradeNo, hisTransNo, orderFromOwner); if (ObjectUtils.isEmpty(treatNum) || ObjectUtils.isEmpty(patientId)) { return Result.error(ResultEnum.PARAM_IS_DEFECT); 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 c3e1f59..2242e8d 100644 --- a/src/main/java/com/ynxbd/common/action/pay/PayAction.java +++ b/src/main/java/com/ynxbd/common/action/pay/PayAction.java @@ -516,7 +516,7 @@ public class PayAction extends BaseAction { * * @param tradeNo HIS交易流水号 */ @Action("thirdPartyRefund") - public Result thirdPartyRefund() { + public Result thirdPartyRefund(String refundUser, String refundDesc) { String configPwd = WeChatConfig.PASSWORD; if (ObjectUtils.isEmpty(configPwd)) { return Result.error(ResultEnum.SYSTEM_CONFIG_ERROR); @@ -526,8 +526,6 @@ public class PayAction extends BaseAction { String tradeNo = RSAHelper.decrypt(request.getHeader("tradeNo")); String bankTransNo = RSAHelper.decrypt(request.getHeader("bankTransNo")); - String refundUser = getString("refundUser"); - String refundDesc = getString("refundDesc"); log.info("[第三方退款]callNo={}, bankTransNo={}, tradeNo={}, refundUser={}, refundDesc={}", callNo, bankTransNo, tradeNo, refundUser, refundDesc); if (ObjectUtils.isEmpty(bankTransNo) || ObjectUtils.isEmpty(tradeNo) || ObjectUtils.isEmpty(refundUser) || ObjectUtils.isEmpty(callNo)) { return Result.error(ResultEnum.PARAM_IS_DEFECT); @@ -573,11 +571,10 @@ public class PayAction extends BaseAction { * * @param tradeNo HIS交易流水号 */ @Action("handRefund") - public Result handRefund() { + public Result handRefund(String refundDesc) { String tradeNo = RSAHelper.decrypt(request.getHeader("tradeNo")); String bankTransNo = RSAHelper.decrypt(request.getHeader("bankTransNo")); String password = RSAHelper.decrypt(request.getHeader("password")); - String refundDesc = getString("refundDesc"); String token = request.getHeader("AuthToken"); log.info("[微官网手动退费]bankTransNo={}, tradeNo={}, refundDesc={}", bankTransNo, tradeNo, refundDesc); diff --git a/src/main/java/com/ynxbd/common/config/interceptor/AesDecode.java b/src/main/java/com/ynxbd/common/config/interceptor/AesDecode.java new file mode 100644 index 0000000..e010616 --- /dev/null +++ b/src/main/java/com/ynxbd/common/config/interceptor/AesDecode.java @@ -0,0 +1,16 @@ +package com.ynxbd.common.config.interceptor; + +import com.ynxbd.common.helper.common.AesHelper; +import com.ynxbd.wx.wxfactory.AesWxHelper; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Target({ElementType.PARAMETER}) +@Retention(RetentionPolicy.RUNTIME) +public @interface AesDecode { + + Class respAesClass() default AesWxHelper.class; +} diff --git a/src/main/java/com/ynxbd/common/config/interceptor/MethodInterceptor.java b/src/main/java/com/ynxbd/common/config/interceptor/MethodInterceptor.java index 87ad24c..cb8a0c6 100644 --- a/src/main/java/com/ynxbd/common/config/interceptor/MethodInterceptor.java +++ b/src/main/java/com/ynxbd/common/config/interceptor/MethodInterceptor.java @@ -1,12 +1,12 @@ package com.ynxbd.common.config.interceptor; +import com.ynxbd.common.helper.common.AesHelper; import com.ynxbd.common.helper.common.ErrorHelper; import com.ynxbd.common.helper.common.JsonHelper; import com.ynxbd.common.result.Result; import org.apache.commons.lang3.ObjectUtils; import org.apache.struts2.ActionContext; import org.apache.struts2.ActionInvocation; -import org.apache.struts2.interceptor.ServletConfigInterceptor; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -40,11 +40,36 @@ public class MethodInterceptor extends org.apache.struts2.interceptor.AbstractIn List params = new ArrayList<>(); String simpleName; String value; + Object decodeValue; + AesDecode annoAesDecode; for (Parameter parameter : method.getParameters()) { simpleName = parameter.getType().getSimpleName(); value = request.getParameter(parameter.getName()); if ("String".equals(simpleName)) { + if (ObjectUtils.isEmpty(value)) { + params.add(null); + continue; + } + annoAesDecode = parameter.getAnnotation(AesDecode.class); + if (annoAesDecode == null) { + params.add(value); + continue; + } + + try { + Class response = annoAesDecode.respAesClass(); + if (response == null) { + value = null; + } else { + Method decodeMethod = response.getMethod("decode", String.class); + decodeValue = decodeMethod.invoke(action, value); + value = decodeValue == null ? null : (String) decodeValue; + } + } catch (Exception e) { + ErrorHelper.println(e); + value = null; + } params.add(ObjectUtils.isEmpty(value) ? null : value); continue; } diff --git a/src/main/java/com/ynxbd/common/helper/common/AesMicroHelper.java b/src/main/java/com/ynxbd/common/helper/common/AesMicroHelper.java index 009d5ca..2666f19 100644 --- a/src/main/java/com/ynxbd/common/helper/common/AesMicroHelper.java +++ b/src/main/java/com/ynxbd/common/helper/common/AesMicroHelper.java @@ -3,16 +3,16 @@ package com.ynxbd.common.helper.common; import lombok.extern.slf4j.Slf4j; @Slf4j -public class AesMicroHelper { +public class AesMicroHelper extends AesHelper { private final static String KEY = "ynxbdysdssjtwrin"; private final static String IV = "ynxbdqsdsbjtwrin"; public static String encode(String data) { - return AesHelper.encryptHex(data, KEY, IV); + return encryptHex(data, KEY, IV); } public static String decode(String data) { - return AesHelper.decryptHex(data, KEY, IV); + return decryptHex(data, KEY, IV); } } diff --git a/src/main/java/com/ynxbd/wx/wxfactory/AesWxHelper.java b/src/main/java/com/ynxbd/wx/wxfactory/AesWxHelper.java index aead902..14d4440 100644 --- a/src/main/java/com/ynxbd/wx/wxfactory/AesWxHelper.java +++ b/src/main/java/com/ynxbd/wx/wxfactory/AesWxHelper.java @@ -6,18 +6,18 @@ import org.apache.commons.lang3.ObjectUtils; /** * 请求参数加密处理 */ -public class AesWxHelper { +public class AesWxHelper extends AesHelper { private static final String KEY = "wsqysqsdssjtwmyd"; private static final String IV = "xbdynwdykkrinkll"; public static String encode(String data) { - return AesHelper.encryptHex(data, KEY, IV); + return encryptHex(data, KEY, IV); } public static String decode(String enData) { if (ObjectUtils.isEmpty(enData)) return null; - return AesHelper.decryptHex(enData, KEY, IV); + return decryptHex(enData, KEY, IV); } public static void main(String[] args) {