Commit 552affa0 authored by suntao's avatar suntao

sonar

parent bc96f8c3
...@@ -102,27 +102,25 @@ public class ChannelConfUtil { ...@@ -102,27 +102,25 @@ public class ChannelConfUtil {
public static List<ClfOrderCallBack> convert2ClfOrderCallback(Long channelId, ChannelConfAddModel addModel) { public static List<ClfOrderCallBack> convert2ClfOrderCallback(Long channelId, ChannelConfAddModel addModel) {
List<ClfOrderCallBack> list = new ArrayList<>(); List<ClfOrderCallBack> list = new ArrayList<>();
if (StringUtils.isNotEmpty(addModel.getApproveCallBackUrl())) { approveCallbackUrl(channelId, addModel, list);
//审批
ClfOrderCallBack clfOrderCallBack1 = new ClfOrderCallBack();
clfOrderCallBack1.setCallbackStatus(KANoticeType.FUAD_ASSIFN_SUCC);
clfOrderCallBack1.setRegisteredFrom(channelId);
clfOrderCallBack1.setCallbackUrl(addModel.getApproveCallBackUrl());
clfOrderCallBack1.setIsActive(true);
clfOrderCallBack1.setCreatedAt(new Timestamp(System.currentTimeMillis()));
list.add(clfOrderCallBack1);
ClfOrderCallBack clfOrderCallBack2 = new ClfOrderCallBack(); orderStatusOrderCallback(channelId, addModel, list);
clfOrderCallBack2.setCallbackStatus(KANoticeType.REJECT);
clfOrderCallBack2.setRegisteredFrom(channelId); if (StringUtils.isNotEmpty(addModel.getRepaymentPlanCallBackUrl())) {
clfOrderCallBack2.setCallbackUrl(addModel.getApproveCallBackUrl()); ClfOrderCallBack clfOrderCallBack10 = new ClfOrderCallBack();
clfOrderCallBack2.setIsActive(true); clfOrderCallBack10.setCallbackStatus(KANoticeType.REPAYMENT);
clfOrderCallBack2.setCreatedAt(new Timestamp(System.currentTimeMillis())); clfOrderCallBack10.setRegisteredFrom(channelId);
list.add(clfOrderCallBack2); clfOrderCallBack10.setCallbackUrl(addModel.getRepaymentPlanCallBackUrl());
clfOrderCallBack10.setIsActive(true);
clfOrderCallBack10.setCreatedAt(new Timestamp(System.currentTimeMillis()));
list.add(clfOrderCallBack10);
} }
if (StringUtils.isNotEmpty(addModel.getOrderStatusCallBackUrl())) { return list;
}
private static void orderStatusOrderCallback(Long channelId, ChannelConfAddModel addModel, List<ClfOrderCallBack> list) {
if (StringUtils.isNotEmpty(addModel.getOrderStatusCallBackUrl())) {
// 状态 // 状态
ClfOrderCallBack clfOrderCallBack0 = new ClfOrderCallBack(); ClfOrderCallBack clfOrderCallBack0 = new ClfOrderCallBack();
clfOrderCallBack0.setCallbackStatus(KANoticeType.CREDIT_SUCC); clfOrderCallBack0.setCallbackStatus(KANoticeType.CREDIT_SUCC);
...@@ -188,18 +186,27 @@ public class ChannelConfUtil { ...@@ -188,18 +186,27 @@ public class ChannelConfUtil {
clfOrderCallBack9.setCreatedAt(new Timestamp(System.currentTimeMillis())); clfOrderCallBack9.setCreatedAt(new Timestamp(System.currentTimeMillis()));
list.add(clfOrderCallBack9); list.add(clfOrderCallBack9);
} }
}
if (StringUtils.isNotEmpty(addModel.getRepaymentPlanCallBackUrl())) { private static void approveCallbackUrl(Long channelId, ChannelConfAddModel addModel, List<ClfOrderCallBack> list) {
ClfOrderCallBack clfOrderCallBack10 = new ClfOrderCallBack(); if (StringUtils.isNotEmpty(addModel.getApproveCallBackUrl())) {
clfOrderCallBack10.setCallbackStatus(KANoticeType.REPAYMENT); //审批
clfOrderCallBack10.setRegisteredFrom(channelId); ClfOrderCallBack clfOrderCallBack1 = new ClfOrderCallBack();
clfOrderCallBack10.setCallbackUrl(addModel.getRepaymentPlanCallBackUrl()); clfOrderCallBack1.setCallbackStatus(KANoticeType.FUAD_ASSIFN_SUCC);
clfOrderCallBack10.setIsActive(true); clfOrderCallBack1.setRegisteredFrom(channelId);
clfOrderCallBack10.setCreatedAt(new Timestamp(System.currentTimeMillis())); clfOrderCallBack1.setCallbackUrl(addModel.getApproveCallBackUrl());
list.add(clfOrderCallBack10); clfOrderCallBack1.setIsActive(true);
} clfOrderCallBack1.setCreatedAt(new Timestamp(System.currentTimeMillis()));
list.add(clfOrderCallBack1);
return list; ClfOrderCallBack clfOrderCallBack2 = new ClfOrderCallBack();
clfOrderCallBack2.setCallbackStatus(KANoticeType.REJECT);
clfOrderCallBack2.setRegisteredFrom(channelId);
clfOrderCallBack2.setCallbackUrl(addModel.getApproveCallBackUrl());
clfOrderCallBack2.setIsActive(true);
clfOrderCallBack2.setCreatedAt(new Timestamp(System.currentTimeMillis()));
list.add(clfOrderCallBack2);
}
} }
public static Integer getFundIdByType(Integer fundType, ChannelConf channelConf) { public static Integer getFundIdByType(Integer fundType, ChannelConf channelConf) {
......
...@@ -33,10 +33,10 @@ public interface OrderService { ...@@ -33,10 +33,10 @@ public interface OrderService {
* @param channelOrderNumber * @param channelOrderNumber
* @return 《是否成功 , msg》 * @return 《是否成功 , msg》
*/ */
@Transactional @Transactional(rollbackFor = Exception.class)
Tuple<Boolean, String> secondAudit(String channelOrderNumber); Tuple<Boolean, String> secondAudit(String channelOrderNumber);
@Transactional @Transactional(rollbackFor = Exception.class)
Tuple<Boolean, String> lending(LendingFormModel lendingFormModel); Tuple<Boolean, String> lending(LendingFormModel lendingFormModel);
HistoryOrderStatusVoModel getOrderHistoryStatus(String channelOrderNumber); HistoryOrderStatusVoModel getOrderHistoryStatus(String channelOrderNumber);
......
...@@ -4,6 +4,7 @@ import cn.quantgroup.cashloanflowboss.api.optlog.model.OptEnumName; ...@@ -4,6 +4,7 @@ import cn.quantgroup.cashloanflowboss.api.optlog.model.OptEnumName;
import cn.quantgroup.cashloanflowboss.api.optlog.service.OptHistoryLogServiceImpl; import cn.quantgroup.cashloanflowboss.api.optlog.service.OptHistoryLogServiceImpl;
import cn.quantgroup.cashloanflowboss.core.annotation.opt.OperationAnno; import cn.quantgroup.cashloanflowboss.core.annotation.opt.OperationAnno;
import cn.quantgroup.cashloanflowboss.core.base.Tuple; import cn.quantgroup.cashloanflowboss.core.base.Tuple;
import cn.quantgroup.cashloanflowboss.core.constants.Constants;
import cn.quantgroup.cashloanflowboss.spi.clf.entity.CallbackFailRecord; import cn.quantgroup.cashloanflowboss.spi.clf.entity.CallbackFailRecord;
import cn.quantgroup.cashloanflowboss.spi.clf.entity.ClfChannelConfiguration; import cn.quantgroup.cashloanflowboss.spi.clf.entity.ClfChannelConfiguration;
import cn.quantgroup.cashloanflowboss.spi.clf.model.KANoticeType; import cn.quantgroup.cashloanflowboss.spi.clf.model.KANoticeType;
...@@ -188,65 +189,33 @@ public class OrderServiceImpl implements OrderService{ ...@@ -188,65 +189,33 @@ public class OrderServiceImpl implements OrderService{
@OperationAnno(channelNo = "#this[0].channelOrderNumber", opt = OptEnumName.AUDIT, succSPEL = "#this.key", optDetailSPEL = "#this.value") @OperationAnno(channelNo = "#this[0].channelOrderNumber", opt = OptEnumName.AUDIT, succSPEL = "#this.key", optDetailSPEL = "#this.value")
@Override @Override
public Tuple<Boolean, String> approveOpt(ApproveVo approveVo) { public Tuple<Boolean, String> approveOpt(ApproveVo approveVo) {
log.info("approveOpt,审批操作入参,approveVo={}", JSONTools.serialize(approveVo)); log.info("approveOpt,审批操作入参,approveVo={}", JSONTools.serialize(approveVo));
if (StringUtils.isEmpty(approveVo.getAmount())) { if (StringUtils.isEmpty(approveVo.getAmount())) {
// 如果UI 金额为空 默认4000
approveVo.setAmount("4000"); approveVo.setAmount("4000");
} }
if (approveVo.getPeriod() == null) { if (approveVo.getPeriod() == null) {
// 如果UI 期数为空 3期
approveVo.setPeriod(3); approveVo.setPeriod(3);
} }
ClfOrderMapping orderMapping = clfOrderMappingRepository.findByChannelOrderNoLastOne(approveVo.getChannelOrderNumber()); ClfOrderMapping orderMapping = clfOrderMappingRepository.findByChannelOrderNoLastOne(approveVo.getChannelOrderNumber());
if (orderMapping == null) { if (orderMapping == null) {
log.info("approveOpt,审批失败,无订单 channelOrderNumber={}", approveVo.getChannelOrderNumber()); log.info("approveOpt,审批失败,无订单 channelOrderNumber={}", approveVo.getChannelOrderNumber());
return new Tuple(false, "审批失败,无订单"); return new Tuple(false, "审批失败,无订单");
} }
XUser xUser = xyqbUserService.findXUserById(orderMapping.getQgUserId()); XUser xUser = xyqbUserService.findXUserById(orderMapping.getQgUserId());
if (xUser == null) { if (xUser == null) {
log.info("approveOpt,审批失败,未找到用户 channelOrderNumber={}", approveVo.getChannelOrderNumber()); log.info("approveOpt,审批失败,未找到用户 channelOrderNumber={}", approveVo.getChannelOrderNumber());
return new Tuple(false, "审批失败,未找到用户"); return new Tuple(false, "审批失败,未找到用户");
} }
ChannelConf channelConf = channelConfRepository.getByChannelId(orderMapping.getRegisteredFrom()); ChannelConf channelConf = channelConfRepository.getByChannelId(orderMapping.getRegisteredFrom());
if (channelConf == null) { if (channelConf == null) {
log.info("approveOpt,审批失败,boss渠道配置为空 channelOrderNumber={}", approveVo.getChannelOrderNumber()); log.info("approveOpt,审批失败,boss渠道配置为空 channelOrderNumber={}", approveVo.getChannelOrderNumber());
return new Tuple(false, "审批失败,boss渠道配置为空"); return new Tuple(false, "审批失败,boss渠道配置为空");
} }
// 额度有效期
Calendar calendar = Calendar.getInstance();
calendar.setTime(new Date());
calendar.add(Calendar.DAY_OF_YEAR, 7);
Integer fundId = ChannelConfUtil.getFundIdByType(approveVo.getFundType(), channelConf); Integer fundId = ChannelConfUtil.getFundIdByType(approveVo.getFundType(), channelConf);
// 资方 及 期数额度规则 // 资方 及 期数额度规则
String fundFormat = String.format(OrderUtil.financeProductsFormat, approveVo.getAmount(), approveVo.getAmount(), String fundFormat = String.format(OrderUtil.financeProductsFormat, approveVo.getAmount(), approveVo.getAmount(),
approveVo.getPeriod(), fundId); approveVo.getPeriod(), fundId);
saveOrUpdateOrderApprove(approveVo, orderMapping, fundId);
OrderApprove orderApproveExsit = orderApproveRepository.findByChannelOrderNumber(approveVo.getChannelOrderNumber());
if (orderApproveExsit != null) {
orderApproveExsit.setFundId(fundId);
orderApproveExsit.setFundType(approveVo.getFundType());
orderApproveExsit.setUpdateTime(new Date());
orderApproveRepository.save(orderApproveExsit);
} else {
OrderApprove orderApprove = new OrderApprove();
orderApprove.setChannelOrderNumber(approveVo.getChannelOrderNumber());
orderApprove.setCreditNumber(orderMapping.getApplyNo());
orderApprove.setChannelId(orderMapping.getRegisteredFrom());
orderApprove.setFundId(fundId);
orderApprove.setFundType(approveVo.getFundType());
orderApprove.setCreateTime(new Date());
orderApprove.setUpdateTime(new Date());
orderApproveRepository.save(orderApprove);
}
ClfChannelConfiguration clfChannelConfiguration = clfCenterService.findChannelConfigurationByChannelId(orderMapping.getRegisteredFrom()); ClfChannelConfiguration clfChannelConfiguration = clfCenterService.findChannelConfigurationByChannelId(orderMapping.getRegisteredFrom());
if (clfChannelConfiguration == null) { if (clfChannelConfiguration == null) {
return new Tuple(false, "审批失败,clfChannelConfiguration渠道配置为空"); return new Tuple(false, "审批失败,clfChannelConfiguration渠道配置为空");
...@@ -255,20 +224,7 @@ public class OrderServiceImpl implements OrderService{ ...@@ -255,20 +224,7 @@ public class OrderServiceImpl implements OrderService{
if (quotaProduct == null) { if (quotaProduct == null) {
return new Tuple(false, "审批失败,xyqb.quota_product配置为空(".concat(clfChannelConfiguration.getXyqbProductId()).concat(")")); return new Tuple(false, "审批失败,xyqb.quota_product配置为空(".concat(clfChannelConfiguration.getXyqbProductId()).concat(")"));
} }
Map<String, Object> data = getApproveObjectMap(approveVo, orderMapping, xUser, fundFormat, quotaProduct);
Map<String, Object> data = new HashMap<>(16);
data.put("code", 0);
data.put("msg", "success");
data.put("bizChannel", orderMapping.getRegisteredFrom());
data.put("uuid", xUser.getUuid());
data.put("bizNo", orderMapping.getApplyNo());
data.put("bizType", quotaProduct.getProductType());
data.put("auditResult", approveVo.getIsPass());
data.put("amount", approveVo.getAmount());
data.put("deadLine", calendar.getTime().getTime());
data.put("financeProducts", fundFormat);
// 发起审批 // 发起审批
log.info("[approveOpt] 向clotho发起审批,data={}", JSONTools.serialize(data)); log.info("[approveOpt] 向clotho发起审批,data={}", JSONTools.serialize(data));
String approveStringResult = clothoCenterService.approve(data); String approveStringResult = clothoCenterService.approve(data);
...@@ -278,12 +234,11 @@ public class OrderServiceImpl implements OrderService{ ...@@ -278,12 +234,11 @@ public class OrderServiceImpl implements OrderService{
} catch (Exception e) { } catch (Exception e) {
log.error("[approveOpt]审批,资方校验异常,channelOrderNumber={},fundId={}, e={}", orderMapping.getChannelOrderNo(), fundId, ExceptionUtils.getStackTrace(e)); log.error("[approveOpt]审批,资方校验异常,channelOrderNumber={},fundId={}, e={}", orderMapping.getChannelOrderNo(), fundId, ExceptionUtils.getStackTrace(e));
} }
// 操作记录 // 操作记录
String optLogDetail = approveVo.getIsPass() ? "审批通过:(".concat(fundId + "").concat(")") : "审批拒绝:"; String optLogDetail = approveVo.getIsPass() ? "审批通过:(".concat(fundId + "").concat(")") : "审批拒绝:";
Boolean optResult; Boolean optResult;
if ("success".equals(approveStringResult)) { if (Constants.SUCCESS.equals(approveStringResult)) {
optLogDetail = optLogDetail.concat(corpPolicyValidate ? "审批操作成功" : "请检查资产配置,请联系管理员配置,审批操作成功"); optLogDetail = optLogDetail.concat(corpPolicyValidate ? "审批操作成功" : "请检查资产配置,请联系管理员配置,审批操作成功");
optResult = true; optResult = true;
log.info("[approveOpt]审批申请成功,channelOrderNumber={}", orderMapping.getChannelOrderNo()); log.info("[approveOpt]审批申请成功,channelOrderNumber={}", orderMapping.getChannelOrderNo());
...@@ -300,7 +255,7 @@ public class OrderServiceImpl implements OrderService{ ...@@ -300,7 +255,7 @@ public class OrderServiceImpl implements OrderService{
* @param channelOrderNumber * @param channelOrderNumber
* @return * @return
*/ */
@Transactional @Transactional(rollbackFor = Exception.class)
@Override @Override
@OperationAnno(channelNo = "#this[0]", opt = OptEnumName.SECORD_AUDIT, succSPEL = "#this.key", optDetailSPEL = "#this.value") @OperationAnno(channelNo = "#this[0]", opt = OptEnumName.SECORD_AUDIT, succSPEL = "#this.key", optDetailSPEL = "#this.value")
public Tuple<Boolean, String> secondAudit(String channelOrderNumber) { public Tuple<Boolean, String> secondAudit(String channelOrderNumber) {
...@@ -375,7 +330,7 @@ public class OrderServiceImpl implements OrderService{ ...@@ -375,7 +330,7 @@ public class OrderServiceImpl implements OrderService{
* @param lendingFormModel * @param lendingFormModel
* @return * @return
*/ */
@Transactional @Transactional(rollbackFor = Exception.class)
@Override @Override
@OperationAnno(channelNo = "#this[0].channelOrderNumber", opt = OptEnumName.PAY, succSPEL = "#this.key", optDetailSPEL = "#this.value") @OperationAnno(channelNo = "#this[0].channelOrderNumber", opt = OptEnumName.PAY, succSPEL = "#this.key", optDetailSPEL = "#this.value")
public Tuple<Boolean, String> lending(LendingFormModel lendingFormModel) { public Tuple<Boolean, String> lending(LendingFormModel lendingFormModel) {
...@@ -416,8 +371,8 @@ public class OrderServiceImpl implements OrderService{ ...@@ -416,8 +371,8 @@ public class OrderServiceImpl implements OrderService{
} }
log.info("[order_lending][queryLendingRecordCount]查询待打款数量,channelOrderNumber={}, data={}", lendingFormModel.getChannelOrderNumber(), data); log.info("[order_lending][queryLendingRecordCount]查询待打款数量,channelOrderNumber={}, data={}", lendingFormModel.getChannelOrderNumber(), data);
if (data !=null && 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(Constants.TOTAL_AMOUNT)) && Objects.nonNull(data.get(Constants.TOTAL_COUNT))) {
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(Constants.TOTAL_AMOUNT))), Integer.valueOf(String.valueOf(data.get(Constants.TOTAL_COUNT))));
log.info("[order_lending]直投打款,channelOrderNumber={}, result={}", lendingFormModel.getChannelOrderNumber(), result); log.info("[order_lending]直投打款,channelOrderNumber={}, result={}", lendingFormModel.getChannelOrderNumber(), result);
} }
} }
...@@ -485,10 +440,10 @@ public class OrderServiceImpl implements OrderService{ ...@@ -485,10 +440,10 @@ public class OrderServiceImpl implements OrderService{
Long id = cancelPreLoanRepository.cancelPreLoan(orderMapping.getApplyNo()); Long id = cancelPreLoanRepository.cancelPreLoan(orderMapping.getApplyNo());
String response = opCenter.getToken(auth); String response = opCenter.getToken(auth);
JSONObject responseJ = JSONObject.parseObject(response); JSONObject responseJ = JSONObject.parseObject(response);
if(responseJ != null && responseJ.containsKey("data")){ if(responseJ != null && responseJ.containsKey(Constants.DATA)){
JSONObject data = (JSONObject) responseJ.get("data"); JSONObject data = (JSONObject) responseJ.get(Constants.DATA);
if(data != null && data.containsKey("token")){ if(data != null && data.containsKey(Constants.TOKEN)){
token = String.valueOf(data.get("token")); token = String.valueOf(data.get(Constants.TOKEN));
} }
} }
...@@ -504,7 +459,7 @@ public class OrderServiceImpl implements OrderService{ ...@@ -504,7 +459,7 @@ public class OrderServiceImpl implements OrderService{
result = clothoCenterService.cancelPreLoan(data,token); result = clothoCenterService.cancelPreLoan(data,token);
} }
JSONObject resp = JSONObject.parseObject(result); JSONObject resp = JSONObject.parseObject(result);
if(Objects.isNull(resp) || Objects.isNull(resp.get("success")) || !"true".equals(String.valueOf(resp.get("success")))){ if(Objects.isNull(resp) || Objects.isNull(resp.get(Constants.SUCCESS)) || !Constants.TRUE.equals(String.valueOf(resp.get(Constants.SUCCESS)))){
cancel = false; cancel = false;
} }
}catch (Exception e){ }catch (Exception e){
...@@ -582,7 +537,7 @@ public class OrderServiceImpl implements OrderService{ ...@@ -582,7 +537,7 @@ public class OrderServiceImpl implements OrderService{
callbackRecordVoModel.setChannelId(callbackRecord.getChannelId()); callbackRecordVoModel.setChannelId(callbackRecord.getChannelId());
callbackRecordVoModel.setCreatedAt(callbackRecord.getCreatedAt()); callbackRecordVoModel.setCreatedAt(callbackRecord.getCreatedAt());
callbackRecordVoModel.setUpdatedAt(callbackRecord.getUpdatedAt()); callbackRecordVoModel.setUpdatedAt(callbackRecord.getUpdatedAt());
callbackRecordVoModel.setTableName("Success"); callbackRecordVoModel.setTableName(Constants.SUCCESS);
callbackRecordVoModelList.add(callbackRecordVoModel); callbackRecordVoModelList.add(callbackRecordVoModel);
} }
} }
...@@ -672,7 +627,6 @@ public class OrderServiceImpl implements OrderService{ ...@@ -672,7 +627,6 @@ public class OrderServiceImpl implements OrderService{
private Tuple<String, List<OrderVo.OptButton>> getCurrentStatusAndButtons(QueryXyqbOrderStatus currentStatus, ClfOrderMapping orderMapping) { private Tuple<String, List<OrderVo.OptButton>> getCurrentStatusAndButtons(QueryXyqbOrderStatus currentStatus, ClfOrderMapping orderMapping) {
Tuple tuple = new Tuple(); Tuple tuple = new Tuple();
List<OrderVo.OptButton> buttonList = new ArrayList<>(); List<OrderVo.OptButton> buttonList = new ArrayList<>();
if (currentStatus != null) { if (currentStatus != null) {
if (StringUtils.isNotEmpty(currentStatus.getStatus())) { if (StringUtils.isNotEmpty(currentStatus.getStatus())) {
OrderVo.OptButton buttonBeforeCancel = new OrderVo.OptButton(); OrderVo.OptButton buttonBeforeCancel = new OrderVo.OptButton();
...@@ -680,28 +634,9 @@ public class OrderServiceImpl implements OrderService{ ...@@ -680,28 +634,9 @@ public class OrderServiceImpl implements OrderService{
buttonBeforeCancel.setName(OrderVo.OptButtonAction.cancel.getDesc()); buttonBeforeCancel.setName(OrderVo.OptButtonAction.cancel.getDesc());
switch (currentStatus.getStatus()) { switch (currentStatus.getStatus()) {
case "CREDIT_SUCC" : case "CREDIT_SUCC" :
// 授信成功 需要 审批 return getCreditSuccessTuple(tuple, buttonList);
OrderVo.OptButton buttonApprove = new OrderVo.OptButton();
buttonApprove.setAction(OrderVo.OptButtonAction.audit.name());
buttonApprove.setName(OrderVo.OptButtonAction.audit.getDesc());
buttonList.add(buttonApprove);
tuple.setKey("授信成功");
tuple.setValue(buttonList);
return tuple;
case "APPROVE_ING" : case "APPROVE_ING" :
OptHistoryLog optHistoryLog = optHistoryLogService.findByChannelOrderNumberAndOptNameAndSuccess(orderMapping.getChannelOrderNo(), OptEnumName.AUDIT); return getApprovingTuple(orderMapping, tuple, buttonList);
if (optHistoryLog != null) {
tuple.setKey("审批中");
tuple.setValue(buttonList);
} else {
OrderVo.OptButton buttonApprove2 = new OrderVo.OptButton();
buttonApprove2.setAction(OrderVo.OptButtonAction.audit.name());
buttonApprove2.setName(OrderVo.OptButtonAction.audit.getDesc());
buttonList.add(buttonApprove2);
tuple.setKey("授信成功,待审批");
tuple.setValue(buttonList);
}
return tuple;
case "REJECT" : case "REJECT" :
tuple.setKey("审批拒绝"); tuple.setKey("审批拒绝");
tuple.setValue(buttonList); tuple.setValue(buttonList);
...@@ -712,41 +647,9 @@ public class OrderServiceImpl implements OrderService{ ...@@ -712,41 +647,9 @@ public class OrderServiceImpl implements OrderService{
tuple.setValue(buttonList); tuple.setValue(buttonList);
return tuple; return tuple;
case "WITHDRAW_APPROVING" : case "WITHDRAW_APPROVING" :
tuple.setKey("提现成功,待二次风控审批"); return getWithdrawApprovingTuple(tuple, buttonList, buttonBeforeCancel);
// 更改放款时间,二次风控回调
OrderVo.OptButton secondAudit2 = new OrderVo.OptButton();
secondAudit2.setAction(OrderVo.OptButtonAction.second_audit.name());
secondAudit2.setName(OrderVo.OptButtonAction.second_audit.getDesc());
buttonList.add(secondAudit2);
buttonList.add(buttonBeforeCancel);
tuple.setValue(buttonList);
return tuple;
case "WITHDRAW" : case "WITHDRAW" :
LoanApplicationHistory loanApplicationHistory = xyqbCenterService.findLoanApplicationHistoryById(orderMapping.getLoanId()); return getWithdrawTuple(orderMapping, tuple, buttonList, buttonBeforeCancel);
if (loanApplicationHistory != null) {
if (LoanProgress.WAITING_FUND.equals(loanApplicationHistory.getProgress())) {
// 更改放款时间,二次风控回调
// 提现申请成功 需要放款
tuple.setKey("二次风控审批中");
} else if (LoanProgress.FINAL_SENDED_TO_FUNDING_CORP.equals(loanApplicationHistory.getProgress())) {
tuple.setKey("待放款");
OrderVo.OptButton buttonPaySucc = new OrderVo.OptButton();
buttonPaySucc.setAction(OrderVo.OptButtonAction.pay_succ.name());
buttonPaySucc.setName(OrderVo.OptButtonAction.pay_succ.getDesc());
buttonList.add(buttonPaySucc);
OrderApprove orderApprove = orderApproveRepository.findByCreditNumber(orderMapping.getApplyNo());
if (orderApprove != null && orderApprove.getFundType() == 0) {
// 非存管 才有放款失败按钮
OrderVo.OptButton buttonPayFail = new OrderVo.OptButton();
buttonPayFail.setAction(OrderVo.OptButtonAction.pay_fail.name());
buttonPayFail.setName(OrderVo.OptButtonAction.pay_fail.getDesc());
buttonList.add(buttonPayFail);
}
buttonList.add(buttonBeforeCancel);
}
tuple.setValue(buttonList);
}
return tuple;
case "PAY_ING" : case "PAY_ING" :
tuple.setKey("放款中(等待几分钟)"); tuple.setKey("放款中(等待几分钟)");
buttonList.add(buttonBeforeCancel); buttonList.add(buttonBeforeCancel);
...@@ -789,7 +692,6 @@ public class OrderServiceImpl implements OrderService{ ...@@ -789,7 +692,6 @@ public class OrderServiceImpl implements OrderService{
return tuple; return tuple;
} }
} }
} else { } else {
tuple.setKey("未知状态"); tuple.setKey("未知状态");
tuple.setValue(buttonList); tuple.setValue(buttonList);
...@@ -799,4 +701,116 @@ public class OrderServiceImpl implements OrderService{ ...@@ -799,4 +701,116 @@ public class OrderServiceImpl implements OrderService{
tuple.setValue(buttonList); tuple.setValue(buttonList);
return tuple; return tuple;
} }
private Tuple<String, List<OrderVo.OptButton>> getWithdrawTuple(ClfOrderMapping orderMapping, Tuple tuple, List<OrderVo.OptButton> buttonList, OrderVo.OptButton buttonBeforeCancel) {
LoanApplicationHistory loanApplicationHistory = xyqbCenterService.findLoanApplicationHistoryById(orderMapping.getLoanId());
if (loanApplicationHistory != null) {
if (LoanProgress.WAITING_FUND.equals(loanApplicationHistory.getProgress())) {
// 更改放款时间,二次风控回调
// 提现申请成功 需要放款
tuple.setKey("二次风控审批中");
} else if (LoanProgress.FINAL_SENDED_TO_FUNDING_CORP.equals(loanApplicationHistory.getProgress())) {
tuple.setKey("待放款");
OrderVo.OptButton buttonPaySucc = new OrderVo.OptButton();
buttonPaySucc.setAction(OrderVo.OptButtonAction.pay_succ.name());
buttonPaySucc.setName(OrderVo.OptButtonAction.pay_succ.getDesc());
buttonList.add(buttonPaySucc);
OrderApprove orderApprove = orderApproveRepository.findByCreditNumber(orderMapping.getApplyNo());
if (orderApprove != null && orderApprove.getFundType() == 0) {
// 非存管 才有放款失败按钮
OrderVo.OptButton buttonPayFail = new OrderVo.OptButton();
buttonPayFail.setAction(OrderVo.OptButtonAction.pay_fail.name());
buttonPayFail.setName(OrderVo.OptButtonAction.pay_fail.getDesc());
buttonList.add(buttonPayFail);
}
buttonList.add(buttonBeforeCancel);
}
tuple.setValue(buttonList);
}
return tuple;
}
private Tuple<String, List<OrderVo.OptButton>> getWithdrawApprovingTuple(Tuple tuple, List<OrderVo.OptButton> buttonList, OrderVo.OptButton buttonBeforeCancel) {
tuple.setKey("提现成功,待二次风控审批");
// 更改放款时间,二次风控回调
OrderVo.OptButton secondAudit2 = new OrderVo.OptButton();
secondAudit2.setAction(OrderVo.OptButtonAction.second_audit.name());
secondAudit2.setName(OrderVo.OptButtonAction.second_audit.getDesc());
buttonList.add(secondAudit2);
buttonList.add(buttonBeforeCancel);
tuple.setValue(buttonList);
return tuple;
}
private Tuple<String, List<OrderVo.OptButton>> getApprovingTuple(ClfOrderMapping orderMapping, Tuple tuple, List<OrderVo.OptButton> buttonList) {
OptHistoryLog optHistoryLog = optHistoryLogService.findByChannelOrderNumberAndOptNameAndSuccess(orderMapping.getChannelOrderNo(), OptEnumName.AUDIT);
if (optHistoryLog != null) {
tuple.setKey("审批中");
tuple.setValue(buttonList);
} else {
OrderVo.OptButton buttonApprove2 = new OrderVo.OptButton();
buttonApprove2.setAction(OrderVo.OptButtonAction.audit.name());
buttonApprove2.setName(OrderVo.OptButtonAction.audit.getDesc());
buttonList.add(buttonApprove2);
tuple.setKey("授信成功,待审批");
tuple.setValue(buttonList);
}
return tuple;
}
private Tuple<String, List<OrderVo.OptButton>> getCreditSuccessTuple(Tuple tuple, List<OrderVo.OptButton> buttonList) {
// 授信成功 需要 审批
OrderVo.OptButton buttonApprove = new OrderVo.OptButton();
buttonApprove.setAction(OrderVo.OptButtonAction.audit.name());
buttonApprove.setName(OrderVo.OptButtonAction.audit.getDesc());
buttonList.add(buttonApprove);
tuple.setKey("授信成功");
tuple.setValue(buttonList);
return tuple;
}
private Calendar getCalendar() {
// 额度有效期
Calendar calendar = Calendar.getInstance();
calendar.setTime(new Date());
calendar.add(Calendar.DAY_OF_YEAR, 7);
return calendar;
}
private Map<String, Object> getApproveObjectMap(ApproveVo approveVo, ClfOrderMapping orderMapping, XUser xUser, String fundFormat, QuotaProduct quotaProduct) {
Map<String, Object> data = new HashMap<>(16);
data.put("code", 0);
data.put("msg", "success");
data.put("bizChannel", orderMapping.getRegisteredFrom());
data.put("uuid", xUser.getUuid());
data.put("bizNo", orderMapping.getApplyNo());
data.put("bizType", quotaProduct.getProductType());
data.put("auditResult", approveVo.getIsPass());
data.put("amount", approveVo.getAmount());
data.put("deadLine", getCalendar().getTime().getTime());
data.put("financeProducts", fundFormat);
return data;
}
private void saveOrUpdateOrderApprove(ApproveVo approveVo, ClfOrderMapping orderMapping, Integer fundId) {
OrderApprove orderApproveExsit = orderApproveRepository.findByChannelOrderNumber(approveVo.getChannelOrderNumber());
if (orderApproveExsit != null) {
orderApproveExsit.setFundId(fundId);
orderApproveExsit.setFundType(approveVo.getFundType());
orderApproveExsit.setUpdateTime(new Date());
orderApproveRepository.save(orderApproveExsit);
} else {
OrderApprove orderApprove = new OrderApprove();
orderApprove.setChannelOrderNumber(approveVo.getChannelOrderNumber());
orderApprove.setCreditNumber(orderMapping.getApplyNo());
orderApprove.setChannelId(orderMapping.getRegisteredFrom());
orderApprove.setFundId(fundId);
orderApprove.setFundType(approveVo.getFundType());
orderApprove.setCreateTime(new Date());
orderApprove.setUpdateTime(new Date());
orderApproveRepository.save(orderApprove);
}
}
} }
...@@ -2,7 +2,6 @@ package cn.quantgroup.cashloanflowboss.api.user.model; ...@@ -2,7 +2,6 @@ package cn.quantgroup.cashloanflowboss.api.user.model;
import cn.quantgroup.cashloanflowboss.api.login.model.Principal; import cn.quantgroup.cashloanflowboss.api.login.model.Principal;
import cn.quantgroup.cashloanflowboss.api.role.entity.Role; import cn.quantgroup.cashloanflowboss.api.role.entity.Role;
import cn.quantgroup.cashloanflowboss.api.user.entity.User;
import cn.quantgroup.cashloanflowboss.core.asserts.Assert; import cn.quantgroup.cashloanflowboss.core.asserts.Assert;
import cn.quantgroup.cashloanflowboss.core.dictionary.ApplicationStatus; import cn.quantgroup.cashloanflowboss.core.dictionary.ApplicationStatus;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
...@@ -20,10 +19,10 @@ public class UserDetailInfo { ...@@ -20,10 +19,10 @@ public class UserDetailInfo {
@Data @Data
static class RoleInfo { static class RoleInfo {
List<roleView> roleInfos; List<RoleView> roleInfos;
@Data @Data
static class roleView { static class RoleView {
private Long roleId; private Long roleId;
private String roleName; private String roleName;
} }
...@@ -40,9 +39,9 @@ public class UserDetailInfo { ...@@ -40,9 +39,9 @@ public class UserDetailInfo {
if (null != roles && roles.size() > 0) { if (null != roles && roles.size() > 0) {
RoleInfo roleInfo = new RoleInfo(); RoleInfo roleInfo = new RoleInfo();
List<RoleInfo.roleView> roleInfos = Lists.newArrayList(); List<RoleInfo.RoleView> roleInfos = Lists.newArrayList();
roles.forEach(role -> { roles.forEach(role -> {
RoleInfo.roleView roleView = new RoleInfo.roleView(); RoleInfo.RoleView roleView = new RoleInfo.RoleView();
roleView.setRoleId(role.getId()); roleView.setRoleId(role.getId());
roleView.setRoleName(role.getName()); roleView.setRoleName(role.getName());
roleInfos.add(roleView); roleInfos.add(roleView);
......
...@@ -23,6 +23,9 @@ import java.util.regex.Pattern; ...@@ -23,6 +23,9 @@ import java.util.regex.Pattern;
*/ */
public class IDValidator { public class IDValidator {
private static final int int17 = 17;
private static final String s19 = "19";
/** /**
* 校验码 * 校验码
*/ */
...@@ -96,11 +99,11 @@ public class IDValidator { ...@@ -96,11 +99,11 @@ public class IDValidator {
return false; return false;
} }
if (Pattern.matches("^[\\d]{15}$", idNumber)) { if (Pattern.matches(getRegex(), idNumber)) {
return this.validate15(idNumber); return this.validate15(idNumber);
} else if (Pattern.matches("^([\\d]{17}((?i)X))|([\\d]{18})$", idNumber)) { } else if (Pattern.matches(getRegex2(), idNumber)) {
return this.validate18(idNumber); return this.validate18(idNumber);
...@@ -110,6 +113,14 @@ public class IDValidator { ...@@ -110,6 +113,14 @@ public class IDValidator {
} }
private String getRegex2() {
return "^([\\d]{17}((?i)X))|([\\d]{18})$";
}
private String getRegex() {
return "^[\\d]{15}$";
}
/** /**
* 验证15位身份证号 * 验证15位身份证号
* *
...@@ -137,12 +148,12 @@ public class IDValidator { ...@@ -137,12 +148,12 @@ public class IDValidator {
*/ */
private String convert(String idNumber) { private String convert(String idNumber) {
String newIdNumber = idNumber.substring(0, 6) + "19" + idNumber.substring(6); String newIdNumber = idNumber.substring(0, 6) + s19 + idNumber.substring(6);
// 校验码 // 校验码
int sum = 0; int sum = 0;
for (int i = 0; i < 17; i++) { for (int i = 0; i < int17; i++) {
int ai = Integer.parseInt(String.valueOf(newIdNumber.charAt(i))); int ai = Integer.parseInt(String.valueOf(newIdNumber.charAt(i)));
sum = sum + ai * weights[i]; sum = sum + ai * weights[i];
} }
...@@ -219,7 +230,7 @@ public class IDValidator { ...@@ -219,7 +230,7 @@ public class IDValidator {
int sum = 0; int sum = 0;
for (int i = 0; i < 17; i++) { for (int i = 0; i < int17; i++) {
sum = sum + Integer.parseInt(String.valueOf(idNumber.charAt(i))) * weights[i]; sum = sum + Integer.parseInt(String.valueOf(idNumber.charAt(i))) * weights[i];
} }
......
...@@ -4,6 +4,7 @@ import cn.quantgroup.cashloanflowboss.api.login.model.Principal; ...@@ -4,6 +4,7 @@ import cn.quantgroup.cashloanflowboss.api.login.model.Principal;
import cn.quantgroup.cashloanflowboss.core.Application; import cn.quantgroup.cashloanflowboss.core.Application;
import cn.quantgroup.cashloanflowboss.core.annotation.channelrole.CheckChannelRole; import cn.quantgroup.cashloanflowboss.core.annotation.channelrole.CheckChannelRole;
import cn.quantgroup.cashloanflowboss.core.base.Result; import cn.quantgroup.cashloanflowboss.core.base.Result;
import cn.quantgroup.cashloanflowboss.core.constants.Constants;
import cn.quantgroup.cashloanflowboss.core.dictionary.ApplicationStatus; import cn.quantgroup.cashloanflowboss.core.dictionary.ApplicationStatus;
import cn.quantgroup.cashloanflowboss.spi.clf.entity.ClfOrderMapping; import cn.quantgroup.cashloanflowboss.spi.clf.entity.ClfOrderMapping;
import cn.quantgroup.cashloanflowboss.spi.clf.repository.ClfOrderMappingRepository; import cn.quantgroup.cashloanflowboss.spi.clf.repository.ClfOrderMappingRepository;
...@@ -75,7 +76,7 @@ public class ChannelRoleCheckAspect { ...@@ -75,7 +76,7 @@ public class ChannelRoleCheckAspect {
if (StringUtils.isNotEmpty(channelIdSPEL)) { if (StringUtils.isNotEmpty(channelIdSPEL)) {
// 通过channelId 判断 // 通过channelId 判断
try { try {
if (channelIdSPEL.startsWith("#this")) { if (channelIdSPEL.startsWith(Constants.START_THIS)) {
Expression expression = new SpelExpressionParser().parseExpression(channelIdSPEL); Expression expression = new SpelExpressionParser().parseExpression(channelIdSPEL);
if (!Application.getPrincipal().getChannelId().equals(expression.getValue(args, Long.class))) { if (!Application.getPrincipal().getChannelId().equals(expression.getValue(args, Long.class))) {
...@@ -92,7 +93,7 @@ public class ChannelRoleCheckAspect { ...@@ -92,7 +93,7 @@ public class ChannelRoleCheckAspect {
} else if (StringUtils.isNotEmpty(channelOrderNumberSPEL)){ } else if (StringUtils.isNotEmpty(channelOrderNumberSPEL)){
// 通过channelOrderNumber 判断 // 通过channelOrderNumber 判断
String channelOrderNumber = ""; String channelOrderNumber = "";
if (channelOrderNumberSPEL.startsWith("#this")) { if (channelOrderNumberSPEL.startsWith(Constants.START_THIS)) {
Expression expression = new SpelExpressionParser().parseExpression(channelOrderNumberSPEL); Expression expression = new SpelExpressionParser().parseExpression(channelOrderNumberSPEL);
channelOrderNumber = expression.getValue(args, String.class); channelOrderNumber = expression.getValue(args, String.class);
} else { } else {
......
...@@ -4,6 +4,7 @@ import cn.quantgroup.cashloanflowboss.api.login.model.Principal; ...@@ -4,6 +4,7 @@ import cn.quantgroup.cashloanflowboss.api.login.model.Principal;
import cn.quantgroup.cashloanflowboss.core.Application; import cn.quantgroup.cashloanflowboss.core.Application;
import cn.quantgroup.cashloanflowboss.core.annotation.channelrole.ChannelIdInit; import cn.quantgroup.cashloanflowboss.core.annotation.channelrole.ChannelIdInit;
import cn.quantgroup.cashloanflowboss.core.base.Result; import cn.quantgroup.cashloanflowboss.core.base.Result;
import cn.quantgroup.cashloanflowboss.core.constants.Constants;
import cn.quantgroup.cashloanflowboss.core.exception.ApplicationException; import cn.quantgroup.cashloanflowboss.core.exception.ApplicationException;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
...@@ -59,7 +60,7 @@ public class ChannelRoleLoadAspect { ...@@ -59,7 +60,7 @@ public class ChannelRoleLoadAspect {
if (principal.isChannel()) { if (principal.isChannel()) {
if (StringUtils.isNotEmpty(channelIdSPEL)) { if (StringUtils.isNotEmpty(channelIdSPEL)) {
try { try {
if (channelIdSPEL.startsWith("#this")) {//判断是否是spel表达式 if (channelIdSPEL.startsWith(Constants.START_THIS)) {//判断是否是spel表达式
Expression expression = new SpelExpressionParser().parseExpression(channelIdSPEL); Expression expression = new SpelExpressionParser().parseExpression(channelIdSPEL);
expression.setValue(args, principal.getChannelId()); expression.setValue(args, principal.getChannelId());
} else { } else {
......
...@@ -6,6 +6,7 @@ import cn.quantgroup.cashloanflowboss.api.optlog.model.OptEnumName; ...@@ -6,6 +6,7 @@ import cn.quantgroup.cashloanflowboss.api.optlog.model.OptEnumName;
import cn.quantgroup.cashloanflowboss.api.optlog.service.OptHistoryLogServiceImpl; import cn.quantgroup.cashloanflowboss.api.optlog.service.OptHistoryLogServiceImpl;
import cn.quantgroup.cashloanflowboss.core.Application; import cn.quantgroup.cashloanflowboss.core.Application;
import cn.quantgroup.cashloanflowboss.core.annotation.opt.OperationAnno; import cn.quantgroup.cashloanflowboss.core.annotation.opt.OperationAnno;
import cn.quantgroup.cashloanflowboss.core.constants.Constants;
import cn.quantgroup.cashloanflowboss.spi.clf.entity.ClfOrderMapping; 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;
...@@ -52,23 +53,19 @@ public class OperationAspect { ...@@ -52,23 +53,19 @@ public class OperationAspect {
*/ */
@Around("operationAnno()") @Around("operationAnno()")
private Object operationAnnoAndSave(ProceedingJoinPoint pjp) throws Throwable { private Object operationAnnoAndSave(ProceedingJoinPoint pjp) throws Throwable {
try { try {
MethodSignature methodSignature = (MethodSignature) pjp.getSignature(); MethodSignature methodSignature = (MethodSignature) pjp.getSignature();
Method method = methodSignature.getMethod(); Method method = methodSignature.getMethod();
OperationAnno annotation = method.getAnnotation(OperationAnno.class); OperationAnno annotation = method.getAnnotation(OperationAnno.class);
Object[] args = pjp.getArgs(); Object[] args = pjp.getArgs();
OptEnumName opt = annotation.opt(); OptEnumName opt = annotation.opt();
String succSPEL = annotation.succSPEL(); String succSPEL = annotation.succSPEL();
String optDetailSPEL = annotation.optDetailSPEL(); String optDetailSPEL = annotation.optDetailSPEL();
String channelOrderNumber = ""; String channelOrderNumber = "";
if (StringUtils.isNotBlank(annotation.channelNo())) { if (StringUtils.isNotBlank(annotation.channelNo())) {
String keySPEL = annotation.channelNo(); String keySPEL = annotation.channelNo();
try { try {
if (keySPEL.startsWith("#this")) {//判断是否是spel表达式 if (keySPEL.startsWith(Constants.START_THIS)) {//判断是否是spel表达式
Expression expression = new SpelExpressionParser().parseExpression(keySPEL); Expression expression = new SpelExpressionParser().parseExpression(keySPEL);
String value = expression.getValue(args, String.class); String value = expression.getValue(args, String.class);
channelOrderNumber = value; channelOrderNumber = value;
...@@ -85,14 +82,7 @@ public class OperationAspect { ...@@ -85,14 +82,7 @@ public class OperationAspect {
ClfOrderMapping orderMapping = clfCenterService.findOrderMappingByChannelOrderNo(channelOrderNumber); ClfOrderMapping orderMapping = clfCenterService.findOrderMappingByChannelOrderNo(channelOrderNumber);
if (orderMapping != null) { if (orderMapping != null) {
// do some // do some
optHistoryLog.setChannelOrderNumber(channelOrderNumber); getOptHistoryLogBean(opt, channelOrderNumber, optHistoryLog, orderMapping);
optHistoryLog.setCreditNumber(orderMapping.getApplyNo());
optHistoryLog.setLoanId(orderMapping.getLoanId());
optHistoryLog.setChannelId(orderMapping.getRegisteredFrom());
optHistoryLog.setOptEnumName(opt);
optHistoryLog.setOptName(opt.getDesc());
optHistoryLog.setOptUser(Application.getPrincipal().getUserInfo().getNickname() + "_" + Application.getPrincipal().getUserInfo().getUsername());
optHistoryLog.setCreateTime(new Date());
} else { } else {
log.warn("[operationAnnoAnnSave]orderMapping is null, channelOrderNumber={}" , channelOrderNumber ); log.warn("[operationAnnoAnnSave]orderMapping is null, channelOrderNumber={}" , channelOrderNumber );
return pjp.proceed(); return pjp.proceed();
...@@ -101,36 +91,8 @@ public class OperationAspect { ...@@ -101,36 +91,8 @@ public class OperationAspect {
log.warn("[operationAnnoAnnSave]channelOrderNumber is empty, channelOrderNumber={}" , channelOrderNumber ); log.warn("[operationAnnoAnnSave]channelOrderNumber is empty, channelOrderNumber={}" , channelOrderNumber );
return pjp.proceed(); return pjp.proceed();
} }
Expression expressionsuccSPEL = getIsSuccExpressionSPEL(succSPEL);
// 是否成功SPEL 表达式解析 Expression expressionMsgSPEL = getMegExpression(optDetailSPEL);
Expression expressionsuccSPEL = null;
if (StringUtils.isNotEmpty(succSPEL)) {
try {
if (succSPEL.startsWith("#this")) {//判断是否是spel表达式
expressionsuccSPEL = new SpelExpressionParser().parseExpression(succSPEL);
} else {
log.warn("[operationAnnoAnnSave]optResult获取失败");
}
} catch (ExpressionException e) {
log.error("[operationAnnoAnnSave]key表达式“" + succSPEL + "”错误:{}", e);
throw e;
}
}
Expression expressionMsgSPEL = null;
if (StringUtils.isNotEmpty(optDetailSPEL)) {
try {
if (optDetailSPEL.startsWith("#this")) {//判断是否是spel表达式
expressionMsgSPEL = new SpelExpressionParser().parseExpression(optDetailSPEL);
} else {
log.warn("[operationAnnoAnnSave]optDetail获取失败");
}
} catch (ExpressionException e) {
log.error("[operationAnnoAnnSave]key表达式“" + optDetailSPEL + "”错误:{}", e);
throw e;
}
}
if (StringUtils.isNotEmpty(channelOrderNumber)) { if (StringUtils.isNotEmpty(channelOrderNumber)) {
// 判断是否 已经请求成功过 // 判断是否 已经请求成功过
OptHistoryLog optHistoryLogSuccess = optHistoryLogService.findByChannelOrderNumberAndOptNameAndSuccess(channelOrderNumber, opt); OptHistoryLog optHistoryLogSuccess = optHistoryLogService.findByChannelOrderNumberAndOptNameAndSuccess(channelOrderNumber, opt);
...@@ -148,23 +110,17 @@ public class OperationAspect { ...@@ -148,23 +110,17 @@ public class OperationAspect {
log.info("[operationAnnoAnnSave]该操作已经操作成功,无须重复操作,切面返回"); log.info("[operationAnnoAnnSave]该操作已经操作成功,无须重复操作,切面返回");
return ret; return ret;
} }
} }
} }
// 代理执行方法
Object proceed = pjp.proceed(); Object proceed = pjp.proceed();
// 获取方法返回 是否成功 // 获取方法返回 是否成功
if (expressionsuccSPEL != null) { if (expressionsuccSPEL != null) {
optHistoryLog.setOptResult(expressionsuccSPEL.getValue(proceed, Boolean.class)); optHistoryLog.setOptResult(expressionsuccSPEL.getValue(proceed, Boolean.class));
} }
// 获取方法详细信息 // 获取方法详细信息
if (expressionMsgSPEL != null) { if (expressionMsgSPEL != null) {
optHistoryLog.setOptLogDetail(expressionMsgSPEL.getValue(proceed, String.class)); optHistoryLog.setOptLogDetail(expressionMsgSPEL.getValue(proceed, String.class));
} }
optHistoryLogService.save(optHistoryLog); optHistoryLogService.save(optHistoryLog);
return proceed; return proceed;
} catch (Throwable throwable) { } catch (Throwable throwable) {
...@@ -172,4 +128,50 @@ public class OperationAspect { ...@@ -172,4 +128,50 @@ public class OperationAspect {
return pjp.proceed(); return pjp.proceed();
} }
} }
private void getOptHistoryLogBean(OptEnumName opt, String channelOrderNumber, OptHistoryLog optHistoryLog, ClfOrderMapping orderMapping) {
optHistoryLog.setChannelOrderNumber(channelOrderNumber);
optHistoryLog.setCreditNumber(orderMapping.getApplyNo());
optHistoryLog.setLoanId(orderMapping.getLoanId());
optHistoryLog.setChannelId(orderMapping.getRegisteredFrom());
optHistoryLog.setOptEnumName(opt);
optHistoryLog.setOptName(opt.getDesc());
optHistoryLog.setOptUser(Application.getPrincipal().getUserInfo().getNickname() + "_" + Application.getPrincipal().getUserInfo().getUsername());
optHistoryLog.setCreateTime(new Date());
}
private Expression getMegExpression(String optDetailSPEL) {
Expression expressionMsgSPEL = null;
if (StringUtils.isNotEmpty(optDetailSPEL)) {
try {
if (optDetailSPEL.startsWith(Constants.START_THIS)) {//判断是否是spel表达式
expressionMsgSPEL = new SpelExpressionParser().parseExpression(optDetailSPEL);
} else {
log.warn("[operationAnnoAnnSave]optDetail获取失败");
}
} catch (ExpressionException e) {
log.error("[operationAnnoAnnSave]key表达式“" + optDetailSPEL + "”错误:{}", e);
throw e;
}
}
return expressionMsgSPEL;
}
private Expression getIsSuccExpressionSPEL(String succSPEL) {
// 是否成功SPEL 表达式解析
Expression expressionsuccSPEL = null;
if (StringUtils.isNotEmpty(succSPEL)) {
try {
if (succSPEL.startsWith(Constants.START_THIS)) {//判断是否是spel表达式
expressionsuccSPEL = new SpelExpressionParser().parseExpression(succSPEL);
} else {
log.warn("[operationAnnoAnnSave]optResult获取失败");
}
} catch (ExpressionException e) {
log.error("[operationAnnoAnnSave]key表达式“" + succSPEL + "”错误:{}", e);
throw e;
}
}
return expressionsuccSPEL;
}
} }
package cn.quantgroup.cashloanflowboss.core.constants;
/**
* @description:
* @author:tao
* @create: 2019-12-26 14:35
*/
public interface Constants {
String SUCCESS = "success";
String TOTAL_COUNT = "totalCount";
String TOTAL_AMOUNT = "totalAmount";
String DATA = "data";
String TOKEN = "token";
String TRUE = "true";
String START_THIS = "#this";
}
...@@ -12,7 +12,7 @@ import org.springframework.transaction.annotation.Transactional; ...@@ -12,7 +12,7 @@ import org.springframework.transaction.annotation.Transactional;
@Repository @Repository
public interface UserDetailRepository extends JpaRepository<UserDetail,Long>{ public interface UserDetailRepository extends JpaRepository<UserDetail,Long>{
@Transactional @Transactional(rollbackFor = Exception.class)
@Modifying @Modifying
@Query(value = "delete from user_detail where user_id = ?1", nativeQuery = true) @Query(value = "delete from user_detail where user_id = ?1", nativeQuery = true)
int deleteByUserId(Long userId); int deleteByUserId(Long userId);
......
...@@ -12,7 +12,7 @@ import org.springframework.transaction.annotation.Transactional; ...@@ -12,7 +12,7 @@ import org.springframework.transaction.annotation.Transactional;
@Repository @Repository
public interface UserExtInfoRepository extends JpaRepository<UserExtInfo,Long>{ public interface UserExtInfoRepository extends JpaRepository<UserExtInfo,Long>{
@Transactional @Transactional(rollbackFor = Exception.class)
@Modifying @Modifying
@Query(value = "delete from user_ext_info where user_id = ?1", nativeQuery = true) @Query(value = "delete from user_ext_info where user_id = ?1", nativeQuery = true)
void deleteByUserId(Long userId); void deleteByUserId(Long userId);
......
...@@ -30,7 +30,7 @@ public interface XYQBCenterService { ...@@ -30,7 +30,7 @@ public interface XYQBCenterService {
WaitingFundingCorpOperatePeople findWaitingFundingCorpOperatePeopleByLoanId(Long loanId); WaitingFundingCorpOperatePeople findWaitingFundingCorpOperatePeopleByLoanId(Long loanId);
@Transactional @Transactional(rollbackOn = Exception.class)
void saveWaitingFundingCorpOperatePeople(WaitingFundingCorpOperatePeople waitingFundingCorpOperatePeople); void saveWaitingFundingCorpOperatePeople(WaitingFundingCorpOperatePeople waitingFundingCorpOperatePeople);
FundingCorpPolicy findFundingCorpPolicyByCorpPolicyId(Long corpPolicyId); FundingCorpPolicy findFundingCorpPolicyByCorpPolicyId(Long corpPolicyId);
......
CREATE DATABASE IF NOT EXISTS cash_loan_flow_boss CHARACTER SET utf8 COLLATE utf8_general_ci;
use cash_loan_flow_boss; use cash_loan_flow_boss;
CREATE TABLE IF NOT EXISTS `channel_conf` ( CREATE TABLE IF NOT EXISTS `channel_conf` (
......
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