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")
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;

@ -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";
}

@ -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);

@ -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<Register> 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<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);
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);

@ -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);

@ -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;
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<Object> 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<? 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);
continue;
}

@ -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);
}
}

@ -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) {

Loading…
Cancel
Save