Commit 03b29c42 authored by suntao's avatar suntao

操作的重复 在切面中判断

parent 2120c03f
...@@ -309,12 +309,6 @@ public class OrderServiceImpl implements OrderService{ ...@@ -309,12 +309,6 @@ public class OrderServiceImpl implements OrderService{
return new Tuple<>(false, "orderMapping为空或者loanId为空"); return new Tuple<>(false, "orderMapping为空或者loanId为空");
} }
OptHistoryLog optHistoryLogExsit = optHistoryLogService.findByChannelOrderNumberAndOptNameAndSuccess(channelOrderNumber, secondAudit);
if (optHistoryLogExsit != null) {
log.info("secondAudit,已经操作成功,channelOrderNumber=".concat(channelOrderNumber));
return new Tuple<>(true, "已经操作成功. 重复操作");
}
// 更新合同状态 // 更新合同状态
Contract conscont= xyqbCenterService.findContractByUserId(orderMapping.getQgUserId()); Contract conscont= xyqbCenterService.findContractByUserId(orderMapping.getQgUserId());
if (conscont != null) { if (conscont != null) {
...@@ -403,14 +397,21 @@ public class OrderServiceImpl implements OrderService{ ...@@ -403,14 +397,21 @@ public class OrderServiceImpl implements OrderService{
} else { } else {
// p2p // p2p
Map data = this.xyqbCenterService.queryLendingRecordCount(Long.valueOf(orderApprove.getFundId())); Map data = null;
try {
data = this.xyqbCenterService.queryLendingRecordCount(Long.valueOf(orderApprove.getFundId()));
} catch (Exception e) {
log.error("[order_lending][queryLendingRecordCount]查询待打款数量 失败,channelOrderNumber={}, data={}", lendingFormModel.getChannelOrderNumber(), data);
}
log.info("[order_lending][queryLendingRecordCount]查询待打款数量,channelOrderNumber={}, data={}", lendingFormModel.getChannelOrderNumber(), data); log.info("[order_lending][queryLendingRecordCount]查询待打款数量,channelOrderNumber={}, data={}", lendingFormModel.getChannelOrderNumber(), data);
if (data.size() > 0) { if (data !=null && data.size() > 0) {
if (Objects.nonNull(data.get("totalAmount")) && Objects.nonNull(data.get("totalCount"))) { if (Objects.nonNull(data.get("totalAmount")) && Objects.nonNull(data.get("totalCount"))) {
result = this.clothoCenterService.lending(orderApprove.getFundId(), new BigDecimal(String.valueOf(data.get("totalAmount"))), Integer.valueOf(String.valueOf(data.get("totalCount")))); result = this.clothoCenterService.lending(orderApprove.getFundId(), new BigDecimal(String.valueOf(data.get("totalAmount"))), Integer.valueOf(String.valueOf(data.get("totalCount"))));
log.info("[order_lending]直投打款,channelOrderNumber={}, result={}", lendingFormModel.getChannelOrderNumber(), result); log.info("[order_lending]直投打款,channelOrderNumber={}, result={}", lendingFormModel.getChannelOrderNumber(), result);
} }
} }
result = true;
} }
if (result) { if (result) {
......
...@@ -10,6 +10,7 @@ import cn.quantgroup.cashloanflowboss.spi.clf.entity.ClfOrderMapping; ...@@ -10,6 +10,7 @@ import cn.quantgroup.cashloanflowboss.spi.clf.entity.ClfOrderMapping;
import cn.quantgroup.cashloanflowboss.spi.clf.service.CLFCenterService; import cn.quantgroup.cashloanflowboss.spi.clf.service.CLFCenterService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.exception.ExceptionUtils;
import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Aspect;
...@@ -51,87 +52,124 @@ public class OperationAspect { ...@@ -51,87 +52,124 @@ public class OperationAspect {
*/ */
@Around("operationAnno()") @Around("operationAnno()")
private Object operationAnnoAndSave(ProceedingJoinPoint pjp) throws Throwable { private Object operationAnnoAndSave(ProceedingJoinPoint pjp) throws Throwable {
MethodSignature methodSignature = (MethodSignature) pjp.getSignature();
Method method = methodSignature.getMethod(); try {
OperationAnno annotation = method.getAnnotation(OperationAnno.class); MethodSignature methodSignature = (MethodSignature) pjp.getSignature();
Object[] args = pjp.getArgs(); Method method = methodSignature.getMethod();
OperationAnno annotation = method.getAnnotation(OperationAnno.class);
OptEnumName opt = annotation.opt(); Object[] args = pjp.getArgs();
String succSPEL = annotation.succSPEL();
String optDetailSPEL = annotation.optDetailSPEL(); OptEnumName opt = annotation.opt();
String channelOrderNumber = ""; String succSPEL = annotation.succSPEL();
String optDetailSPEL = annotation.optDetailSPEL();
String channelOrderNumber = "";
if (StringUtils.isNotBlank(annotation.channelNo())) {
String keySPEL = annotation.channelNo();
try { if (StringUtils.isNotBlank(annotation.channelNo())) {
if (keySPEL.startsWith("#this")) {//判断是否是spel表达式 String keySPEL = annotation.channelNo();
Expression expression = new SpelExpressionParser().parseExpression(keySPEL); try {
String value = expression.getValue(args, String.class); if (keySPEL.startsWith("#this")) {//判断是否是spel表达式
channelOrderNumber = value; Expression expression = new SpelExpressionParser().parseExpression(keySPEL);
} else { String value = expression.getValue(args, String.class);
log.warn("[operationAnnoAnnSave]channelOrderNumber获取失败"); channelOrderNumber = value;
} else {
log.warn("[operationAnnoAnnSave]channelOrderNumber获取失败");
}
} catch (ExpressionException e) {
log.error("[operationAnnoAnnSave]key表达式“" + keySPEL + "”错误:{}", e);
throw e;
} }
} catch (ExpressionException e) {
log.error("[operationAnnoAnnSave]key表达式“" + keySPEL + "”错误:{}", e);
throw e;
} }
} OptHistoryLog optHistoryLog = new OptHistoryLog();
OptHistoryLog optHistoryLog = new OptHistoryLog(); if (StringUtils.isNotEmpty(channelOrderNumber)) {
if (StringUtils.isNotEmpty(channelOrderNumber)) { ClfOrderMapping orderMapping = clfCenterService.findOrderMappingByChannelOrderNo(channelOrderNumber);
ClfOrderMapping orderMapping = clfCenterService.findOrderMappingByChannelOrderNo(channelOrderNumber); if (orderMapping != null) {
if (orderMapping != null) { // do some
// do some optHistoryLog.setChannelOrderNumber(channelOrderNumber);
optHistoryLog.setChannelOrderNumber(channelOrderNumber); optHistoryLog.setCreditNumber(orderMapping.getApplyNo());
optHistoryLog.setCreditNumber(orderMapping.getApplyNo()); optHistoryLog.setLoanId(orderMapping.getLoanId());
optHistoryLog.setLoanId(orderMapping.getLoanId()); optHistoryLog.setChannelId(orderMapping.getRegisteredFrom());
optHistoryLog.setChannelId(orderMapping.getRegisteredFrom()); optHistoryLog.setOptEnumName(opt);
optHistoryLog.setOptEnumName(opt); optHistoryLog.setOptName(opt.getDesc());
optHistoryLog.setOptName(opt.getDesc()); optHistoryLog.setOptUser(Application.getPrincipal().getUserInfo().getNickname() + "_" + Application.getPrincipal().getUserInfo().getUsername());
optHistoryLog.setOptUser(Application.getPrincipal().getUserInfo().getNickname() + "_" + Application.getPrincipal().getUserInfo().getUsername()); optHistoryLog.setCreateTime(new Date());
optHistoryLog.setCreateTime(new Date()); } else {
log.warn("[operationAnnoAnnSave]orderMapping is null, channelOrderNumber={}" , channelOrderNumber );
return pjp.proceed();
}
} else { } else {
log.warn("[operationAnnoAnnSave]orderMapping is null, channelOrderNumber={}" , channelOrderNumber ); log.warn("[operationAnnoAnnSave]channelOrderNumber is empty, channelOrderNumber={}" , channelOrderNumber );
return pjp.proceed(); return pjp.proceed();
} }
} else {
log.warn("[operationAnnoAnnSave]channelOrderNumber is empty, channelOrderNumber={}" , channelOrderNumber ); // 是否成功SPEL 表达式解析
return pjp.proceed(); Expression expressionsuccSPEL = null;
} if (StringUtils.isNotEmpty(succSPEL)) {
Object proceed = pjp.proceed(); try {
if (succSPEL.startsWith("#this")) {//判断是否是spel表达式
if (StringUtils.isNotEmpty(succSPEL)) { expressionsuccSPEL = new SpelExpressionParser().parseExpression(succSPEL);
try { } else {
if (succSPEL.startsWith("#this")) {//判断是否是spel表达式 log.warn("[operationAnnoAnnSave]optResult获取失败");
Expression expression = new SpelExpressionParser().parseExpression(succSPEL); }
Boolean isSuccess = expression.getValue(proceed, Boolean.class); } catch (ExpressionException e) {
optHistoryLog.setOptResult(isSuccess); log.error("[operationAnnoAnnSave]key表达式“" + succSPEL + "”错误:{}", e);
} else { throw e;
log.warn("[operationAnnoAnnSave]optResult获取失败");
} }
} catch (ExpressionException e) {
log.error("[operationAnnoAnnSave]key表达式“" + succSPEL + "”错误:{}", e);
throw e;
} }
}
if (StringUtils.isNotEmpty(optDetailSPEL)) { Expression expressionMsgSPEL = null;
try { if (StringUtils.isNotEmpty(optDetailSPEL)) {
if (optDetailSPEL.startsWith("#this")) {//判断是否是spel表达式 try {
Expression expression = new SpelExpressionParser().parseExpression(optDetailSPEL); if (optDetailSPEL.startsWith("#this")) {//判断是否是spel表达式
String optDetail = expression.getValue(proceed, String.class); expressionMsgSPEL = new SpelExpressionParser().parseExpression(optDetailSPEL);
optHistoryLog.setOptLogDetail(optDetail); } else {
} else { log.warn("[operationAnnoAnnSave]optDetail获取失败");
log.warn("[operationAnnoAnnSave]optDetail获取失败"); }
} catch (ExpressionException e) {
log.error("[operationAnnoAnnSave]key表达式“" + optDetailSPEL + "”错误:{}", e);
throw e;
}
}
if (StringUtils.isNotEmpty(channelOrderNumber)) {
// 判断是否 已经请求成功过
OptHistoryLog optHistoryLogSuccess = optHistoryLogService.findByChannelOrderNumberAndOptNameAndSuccess(channelOrderNumber, opt);
if (optHistoryLogSuccess != null) {
Class returnType = ((MethodSignature) pjp.getSignature()).getReturnType();
if (returnType != null) {
Object ret = returnType.newInstance();
if (expressionsuccSPEL != null) {
expressionsuccSPEL.setValue(ret, true);
}
if (expressionMsgSPEL != null) {
expressionMsgSPEL.setValue(ret, "该操作已经操作成功,无须重复操作!");
}
// 直接返回 重复操作结果
log.info("[operationAnnoAnnSave]该操作已经操作成功,无须重复操作,切面返回");
return ret;
}
} }
} catch (ExpressionException e) {
log.error("[operationAnnoAnnSave]key表达式“" + optDetailSPEL + "”错误:{}", e);
throw e;
} }
}
optHistoryLogService.save(optHistoryLog); // 代理执行方法
Object proceed = pjp.proceed();
return proceed; // 获取方法返回 是否成功
if (expressionsuccSPEL != null) {
optHistoryLog.setOptResult(expressionsuccSPEL.getValue(proceed, Boolean.class));
}
// 获取方法详细信息
if (expressionMsgSPEL != null) {
optHistoryLog.setOptLogDetail(expressionMsgSPEL.getValue(proceed, String.class));
}
optHistoryLogService.save(optHistoryLog);
return proceed;
} catch (Throwable throwable) {
log.error("[operationAnnoAnnSave]异常,直接跳过,e={}", ExceptionUtils.getStackTrace(throwable));
return pjp.proceed();
}
} }
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment