1、新增:新增注解标识的参数可以自动解密。

2、部分参数调整为自动解密
debug
wangsq 1 week ago
parent 2afb724ed5
commit b5ef61e167
  1. 13
      src/main/java/com/ynxbd/common/action/ApiAction.java
  2. 3
      src/main/java/com/ynxbd/common/action/QRAction.java
  3. 26
      src/main/java/com/ynxbd/common/action/RecipeAction.java
  4. 34
      src/main/java/com/ynxbd/common/action/RegisterAction.java
  5. 7
      src/main/java/com/ynxbd/common/action/pay/PayAction.java
  6. 16
      src/main/java/com/ynxbd/common/config/interceptor/AesDecode.java
  7. 27
      src/main/java/com/ynxbd/common/config/interceptor/MethodInterceptor.java
  8. 6
      src/main/java/com/ynxbd/common/helper/common/AesMicroHelper.java
  9. 6
      src/main/java/com/ynxbd/wx/wxfactory/AesWxHelper.java

@ -220,8 +220,7 @@ public class ApiAction extends BaseAction {
* 第三方使用勿动 * 第三方使用勿动
*/ */
@Action("smsHelp") @Action("smsHelp")
public String smsHelp() { public String smsHelp(String phoneNo, String callNo, String codeNo) {
String phoneNo = getString("phoneno");
if (phoneNo == null) { if (phoneNo == null) {
return respEnd("ERROR:电话号码无效"); return respEnd("ERROR:电话号码无效");
} }
@ -230,18 +229,14 @@ public class ApiAction extends BaseAction {
return respEnd("ERROR:电话号码长度异常"); return respEnd("ERROR:电话号码长度异常");
} }
String code = getString("codeno"); if (codeNo == null) {
if (code == null) {
return respEnd("ERROR:验证码无效"); return respEnd("ERROR:验证码无效");
} }
if (code.length() > 6 || code.length() < 4) { if (codeNo.length() > 6 || codeNo.length() < 4) {
return respEnd("ERROR:验证码长度异常"); return respEnd("ERROR:验证码长度异常");
} }
String callNo = getString("callno");
// 判断是否60s内重复请求 // 判断是否60s内重复请求
SmsTemplate sms = SmsHelper.isRepeat(phoneNo); SmsTemplate sms = SmsHelper.isRepeat(phoneNo);
if (sms != null) { if (sms != null) {
@ -253,7 +248,7 @@ public class ApiAction extends BaseAction {
switch (callNo) { switch (callNo) {
case "dhzzyyy001": // 东软自助机 case "dhzzyyy001": // 东软自助机
template = "SMS_173475681"; template = "SMS_173475681";
isFlag = SmsHelper.sendCode(template, phoneNo, code); isFlag = SmsHelper.sendCode(template, phoneNo, codeNo);
break; break;

@ -24,8 +24,7 @@ import java.util.UUID;
public class QRAction extends BaseAction { public class QRAction extends BaseAction {
@Action("qrCodeLogin") @Action("qrCodeLogin")
public Result qrCodeLogin() { public Result qrCodeLogin(String msgInterface) {
String msgInterface = getString("msgInterface");
if (msgInterface == null) { if (msgInterface == null) {
msgInterface = "bind"; msgInterface = "bind";
} }

@ -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") @Action("addNatRecord")
public Result addNatRecord() { public Result addNatRecord(String openid, String patientId, String temperature, String country, String greenCode, String tripCode, String symptom, String info, Boolean isRepeat) {
String openid = getString("openid");
String patientId = getString("patientId");
if (patientId == null || openid == null) { if (patientId == null || openid == null) {
return Result.error(ResultEnum.PARAM_IS_DEFECT); return Result.error(ResultEnum.PARAM_IS_DEFECT);
} }
Boolean isRepeat = getBoolean("isRepeat"); // 开启重复填写检查 if (isRepeat == null) {
if (isRepeat == null) isRepeat = false; isRepeat = false;
}
NatRecordDao natRecordDao = new NatRecordDao(); NatRecordDao natRecordDao = new NatRecordDao();
if (isRepeat && natRecordDao.hasRecord(patientId, DateHelper.getCurDate())) { if (isRepeat && natRecordDao.hasRecord(patientId, DateHelper.getCurDate())) {
return Result.success(); 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); log.info("[核酸检测]记录 country={}, temperature={}, greenCode={}, tripCode={}, symptom={}", country, temperature, greenCode, tripCode, symptom);
if (temperature == null || greenCode == null || tripCode == null) { if (temperature == null || greenCode == null || tripCode == null) {
return Result.error(ResultEnum.PARAM_IS_DEFECT); return Result.error(ResultEnum.PARAM_IS_DEFECT);

@ -7,6 +7,7 @@ import com.ynxbd.common.action.base.BaseAction;
import com.ynxbd.common.bean.*; import com.ynxbd.common.bean.*;
import com.ynxbd.common.bean.enums.MerchantEnum; import com.ynxbd.common.bean.enums.MerchantEnum;
import com.ynxbd.common.bean.pay.Register; 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.RegisterDao;
import com.ynxbd.common.dao.his.HisRegisterDao; import com.ynxbd.common.dao.his.HisRegisterDao;
import com.ynxbd.common.helper.common.DateHelper; import com.ynxbd.common.helper.common.DateHelper;
@ -209,13 +210,12 @@ public class RegisterAction extends BaseAction {
* [挂号]查询挂号记录 * [挂号]查询挂号记录
*/ */
@Action("getSiteHistory") @Action("getSiteHistory")
public Result getSiteHistory(String begDate, String endDate, String patientId) { public Result getSiteHistory(String begDate, String endDate, @AesDecode String patientId) {
try { try {
log.info("[挂号]查询挂号记录 patientId={}, begDate={},endDate={}", patientId, begDate, endDate); log.info("[挂号]查询挂号记录 patientId={}, begDate={},endDate={}", patientId, begDate, endDate);
if (patientId == null || begDate == null || endDate == null) { if (patientId == null || begDate == null || endDate == null) {
return Result.error(ResultEnum.PARAM_IS_DEFECT); return Result.error(ResultEnum.PARAM_IS_DEFECT);
} }
patientId = decodeReqString(patientId);
List<Register> regRecords = new RegService().getHisRegRecordsByRegDate(patientId, begDate, endDate); List<Register> regRecords = new RegService().getHisRegRecordsByRegDate(patientId, begDate, endDate);
return Result.success(regRecords); return Result.success(regRecords);
@ -228,9 +228,8 @@ public class RegisterAction extends BaseAction {
* [挂号]查询挂号历史记录 * [挂号]查询挂号历史记录
*/ */
@Action("getHisRegHistoryRecords") @Action("getHisRegHistoryRecords")
public Result getHisRegHistoryRecords(String begDate, String endDate, String patientId) { public Result getHisRegHistoryRecords(String begDate, String endDate, @AesDecode String patientId) {
try { try {
patientId = decodeReqString(patientId);
log.info("[挂号]查询挂号记录 patientId={}, begDate={},endDate={}", patientId, begDate, endDate); log.info("[挂号]查询挂号记录 patientId={}, begDate={},endDate={}", patientId, begDate, endDate);
if (patientId == null || begDate == null || endDate == null) { if (patientId == null || begDate == null || endDate == null) {
return Result.error(ResultEnum.PARAM_IS_DEFECT); return Result.error(ResultEnum.PARAM_IS_DEFECT);
@ -247,8 +246,7 @@ public class RegisterAction extends BaseAction {
* [预约挂号]查询预约记录 * [预约挂号]查询预约记录
*/ */
@Action("getHisRegReserveRecords") @Action("getHisRegReserveRecords")
public Result getHisRegReserveRecords(String begDate, String endDate, String patientId) { public Result getHisRegReserveRecords(String begDate, String endDate, @AesDecode String patientId) {
patientId = decodeReqString(patientId);
log.info("[预约挂号]查询预约记录 patientId={}, begDate={},endDate={}", patientId, begDate, endDate); log.info("[预约挂号]查询预约记录 patientId={}, begDate={},endDate={}", patientId, begDate, endDate);
if (patientId == null || begDate == null || endDate == null) { if (patientId == null || begDate == null || endDate == null) {
return Result.error(ResultEnum.PARAM_IS_DEFECT); return Result.error(ResultEnum.PARAM_IS_DEFECT);
@ -372,10 +370,9 @@ public class RegisterAction extends BaseAction {
* @return 待预约记录 * @return 待预约记录
*/ */
@Action("getReLineSignInRecord") @Action("getReLineSignInRecord")
public Result getReLineSignInRecord(String patientId, String begDate, String endDate) { public Result getReLineSignInRecord(@AesDecode String patientId, String begDate, String endDate) {
String decodePatientId = decodeReqString(patientId); log.info("[查询预约待签到记录(包含今日挂号)] patientId-{} begDate={}, endDate={}", patientId, begDate, endDate);
log.info("[查询预约待签到记录(包含今日挂号)] patientId-{} begDate={}, endDate={}", decodePatientId, begDate, endDate); if (patientId == null) {
if (decodePatientId == null) {
return Result.error(ResultEnum.PARAM_IS_INVALID); return Result.error(ResultEnum.PARAM_IS_INVALID);
} }
@ -390,7 +387,7 @@ public class RegisterAction extends BaseAction {
dataMap.put("list", new ArrayList<>()); dataMap.put("list", new ArrayList<>());
return Result.success(dataMap); return Result.success(dataMap);
} }
List<Object> findDataList = dataList.stream().filter(iter -> Objects.equals(((JSONObject) iter).getString("PatientId"), decodePatientId)).collect(Collectors.toList()); List<Object> findDataList = dataList.stream().filter(iter -> Objects.equals(((JSONObject) iter).getString("PatientId"), patientId)).collect(Collectors.toList());
dataMap.put("list", findDataList); dataMap.put("list", findDataList);
return Result.success(dataMap); return Result.success(dataMap);
} }
@ -404,8 +401,7 @@ public class RegisterAction extends BaseAction {
* @return 待预约记录 * @return 待预约记录
*/ */
@Action("getRegSignInByPatientId") @Action("getRegSignInByPatientId")
public Result getRegSignInByPatientId(String patientId, String begDate, String endDate) { public Result getRegSignInByPatientId(@AesDecode String patientId, String begDate, String endDate) {
patientId = decodeReqString(patientId);
log.info("[挂号待签到记录]查询 patientId={} begDate={}, endDate={}", patientId, begDate, endDate); log.info("[挂号待签到记录]查询 patientId={} begDate={}, endDate={}", patientId, begDate, endDate);
if (patientId == null) { if (patientId == null) {
return Result.error(ResultEnum.PARAM_IS_INVALID); return Result.error(ResultEnum.PARAM_IS_INVALID);
@ -421,8 +417,7 @@ public class RegisterAction extends BaseAction {
* @return 待预约记录 * @return 待预约记录
*/ */
@Action("getRegSignInByTreatNum") @Action("getRegSignInByTreatNum")
public Result getRegSignInByTreatNum(String treatNum) { public Result getRegSignInByTreatNum(@AesDecode String treatNum) {
treatNum = decodeReqString(treatNum);
log.info("[挂号待签到记录]查询 treatNum={}", treatNum); log.info("[挂号待签到记录]查询 treatNum={}", treatNum);
if (treatNum == null) { if (treatNum == null) {
return Result.error(ResultEnum.PARAM_IS_INVALID); return Result.error(ResultEnum.PARAM_IS_INVALID);
@ -574,9 +569,8 @@ public class RegisterAction extends BaseAction {
* [就医助手]查询HIS挂号记录 * [就医助手]查询HIS挂号记录
*/ */
@Action("getHisRegInfo") @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); log.info("[就医助手]查询HIS挂号信息 regDate={}, patientId={}, hisTransNo={} openId={}", regDate, patientId, hisTransNo, openId);
patientId = decodeReqString(patientId);
if (ObjectUtils.isEmpty(regDate) || ObjectUtils.isEmpty(patientId)) { if (ObjectUtils.isEmpty(regDate) || ObjectUtils.isEmpty(patientId)) {
return Result.error(ResultEnum.PARAM_IS_DEFECT); return Result.error(ResultEnum.PARAM_IS_DEFECT);
} }
@ -592,8 +586,7 @@ public class RegisterAction extends BaseAction {
* [挂号订单]查询信息 * [挂号订单]查询信息
*/ */
@Action("getRegOrder") @Action("getRegOrder")
public Result getRegOrder(String patientId, String tradeNo, String hisTransNo) { public Result getRegOrder(@AesDecode String patientId, String tradeNo, String hisTransNo) {
patientId = decodeReqString(patientId);
log.info("[挂号订单]查询信息 patientId={}, tradeNo={}, hisTransNo={}", patientId, tradeNo, hisTransNo); log.info("[挂号订单]查询信息 patientId={}, tradeNo={}, hisTransNo={}", patientId, tradeNo, hisTransNo);
if (ObjectUtils.isEmpty(patientId) || ObjectUtils.isEmpty(hisTransNo)) { if (ObjectUtils.isEmpty(patientId) || ObjectUtils.isEmpty(hisTransNo)) {
return Result.error(ResultEnum.PARAM_IS_DEFECT); return Result.error(ResultEnum.PARAM_IS_DEFECT);
@ -614,9 +607,8 @@ public class RegisterAction extends BaseAction {
* [就医助手]修改流程标记 * [就医助手]修改流程标记
*/ */
@Action("completeRegTreatNum") @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 { try {
patientId = decodeReqString(patientId);
log.info("[就医助手]修改流程标记 treatNum={}, processMark={}, openId={}, patientId={}, tradeNo={}, hisTransNo={}, orderFromOwner={}", treatNum, processMark, openId, patientId, tradeNo, hisTransNo, orderFromOwner); log.info("[就医助手]修改流程标记 treatNum={}, processMark={}, openId={}, patientId={}, tradeNo={}, hisTransNo={}, orderFromOwner={}", treatNum, processMark, openId, patientId, tradeNo, hisTransNo, orderFromOwner);
if (ObjectUtils.isEmpty(treatNum) || ObjectUtils.isEmpty(patientId)) { if (ObjectUtils.isEmpty(treatNum) || ObjectUtils.isEmpty(patientId)) {
return Result.error(ResultEnum.PARAM_IS_DEFECT); return Result.error(ResultEnum.PARAM_IS_DEFECT);

@ -516,7 +516,7 @@ public class PayAction extends BaseAction {
* * @param tradeNo HIS交易流水号 * * @param tradeNo HIS交易流水号
*/ */
@Action("thirdPartyRefund") @Action("thirdPartyRefund")
public Result thirdPartyRefund() { public Result thirdPartyRefund(String refundUser, String refundDesc) {
String configPwd = WeChatConfig.PASSWORD; String configPwd = WeChatConfig.PASSWORD;
if (ObjectUtils.isEmpty(configPwd)) { if (ObjectUtils.isEmpty(configPwd)) {
return Result.error(ResultEnum.SYSTEM_CONFIG_ERROR); return Result.error(ResultEnum.SYSTEM_CONFIG_ERROR);
@ -526,8 +526,6 @@ public class PayAction extends BaseAction {
String tradeNo = RSAHelper.decrypt(request.getHeader("tradeNo")); String tradeNo = RSAHelper.decrypt(request.getHeader("tradeNo"));
String bankTransNo = RSAHelper.decrypt(request.getHeader("bankTransNo")); 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); 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)) { if (ObjectUtils.isEmpty(bankTransNo) || ObjectUtils.isEmpty(tradeNo) || ObjectUtils.isEmpty(refundUser) || ObjectUtils.isEmpty(callNo)) {
return Result.error(ResultEnum.PARAM_IS_DEFECT); return Result.error(ResultEnum.PARAM_IS_DEFECT);
@ -573,11 +571,10 @@ public class PayAction extends BaseAction {
* * @param tradeNo HIS交易流水号 * * @param tradeNo HIS交易流水号
*/ */
@Action("handRefund") @Action("handRefund")
public Result handRefund() { public Result handRefund(String refundDesc) {
String tradeNo = RSAHelper.decrypt(request.getHeader("tradeNo")); String tradeNo = RSAHelper.decrypt(request.getHeader("tradeNo"));
String bankTransNo = RSAHelper.decrypt(request.getHeader("bankTransNo")); String bankTransNo = RSAHelper.decrypt(request.getHeader("bankTransNo"));
String password = RSAHelper.decrypt(request.getHeader("password")); String password = RSAHelper.decrypt(request.getHeader("password"));
String refundDesc = getString("refundDesc");
String token = request.getHeader("AuthToken"); String token = request.getHeader("AuthToken");
log.info("[微官网手动退费]bankTransNo={}, tradeNo={}, refundDesc={}", bankTransNo, tradeNo, refundDesc); log.info("[微官网手动退费]bankTransNo={}, tradeNo={}, refundDesc={}", bankTransNo, tradeNo, refundDesc);

@ -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<? extends AesHelper> respAesClass() default AesWxHelper.class;
}

@ -1,12 +1,12 @@
package com.ynxbd.common.config.interceptor; 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.ErrorHelper;
import com.ynxbd.common.helper.common.JsonHelper; import com.ynxbd.common.helper.common.JsonHelper;
import com.ynxbd.common.result.Result; import com.ynxbd.common.result.Result;
import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.ObjectUtils;
import org.apache.struts2.ActionContext; import org.apache.struts2.ActionContext;
import org.apache.struts2.ActionInvocation; import org.apache.struts2.ActionInvocation;
import org.apache.struts2.interceptor.ServletConfigInterceptor;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
@ -40,11 +40,36 @@ public class MethodInterceptor extends org.apache.struts2.interceptor.AbstractIn
List<Object> params = new ArrayList<>(); List<Object> params = new ArrayList<>();
String simpleName; String simpleName;
String value; String value;
Object decodeValue;
AesDecode annoAesDecode;
for (Parameter parameter : method.getParameters()) { for (Parameter parameter : method.getParameters()) {
simpleName = parameter.getType().getSimpleName(); simpleName = parameter.getType().getSimpleName();
value = request.getParameter(parameter.getName()); value = request.getParameter(parameter.getName());
if ("String".equals(simpleName)) { 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<? extends AesHelper> 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); params.add(ObjectUtils.isEmpty(value) ? null : value);
continue; continue;
} }

@ -3,16 +3,16 @@ package com.ynxbd.common.helper.common;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@Slf4j @Slf4j
public class AesMicroHelper { public class AesMicroHelper extends AesHelper {
private final static String KEY = "ynxbdysdssjtwrin"; private final static String KEY = "ynxbdysdssjtwrin";
private final static String IV = "ynxbdqsdsbjtwrin"; private final static String IV = "ynxbdqsdsbjtwrin";
public static String encode(String data) { public static String encode(String data) {
return AesHelper.encryptHex(data, KEY, IV); return encryptHex(data, KEY, IV);
} }
public static String decode(String data) { public static String decode(String data) {
return AesHelper.decryptHex(data, KEY, IV); return decryptHex(data, KEY, IV);
} }
} }

@ -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 KEY = "wsqysqsdssjtwmyd";
private static final String IV = "xbdynwdykkrinkll"; private static final String IV = "xbdynwdykkrinkll";
public static String encode(String data) { public static String encode(String data) {
return AesHelper.encryptHex(data, KEY, IV); return encryptHex(data, KEY, IV);
} }
public static String decode(String enData) { public static String decode(String enData) {
if (ObjectUtils.isEmpty(enData)) return null; if (ObjectUtils.isEmpty(enData)) return null;
return AesHelper.decryptHex(enData, KEY, IV); return decryptHex(enData, KEY, IV);
} }
public static void main(String[] args) { public static void main(String[] args) {

Loading…
Cancel
Save