Commit 552affa0 authored by suntao's avatar suntao

sonar

parent bc96f8c3
......@@ -102,27 +102,25 @@ public class ChannelConfUtil {
public static List<ClfOrderCallBack> convert2ClfOrderCallback(Long channelId, ChannelConfAddModel addModel) {
List<ClfOrderCallBack> list = new ArrayList<>();
if (StringUtils.isNotEmpty(addModel.getApproveCallBackUrl())) {
//审批
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);
approveCallbackUrl(channelId, addModel, 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);
orderStatusOrderCallback(channelId, addModel, list);
if (StringUtils.isNotEmpty(addModel.getRepaymentPlanCallBackUrl())) {
ClfOrderCallBack clfOrderCallBack10 = new ClfOrderCallBack();
clfOrderCallBack10.setCallbackStatus(KANoticeType.REPAYMENT);
clfOrderCallBack10.setRegisteredFrom(channelId);
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();
clfOrderCallBack0.setCallbackStatus(KANoticeType.CREDIT_SUCC);
......@@ -188,18 +186,27 @@ public class ChannelConfUtil {
clfOrderCallBack9.setCreatedAt(new Timestamp(System.currentTimeMillis()));
list.add(clfOrderCallBack9);
}
if (StringUtils.isNotEmpty(addModel.getRepaymentPlanCallBackUrl())) {
ClfOrderCallBack clfOrderCallBack10 = new ClfOrderCallBack();
clfOrderCallBack10.setCallbackStatus(KANoticeType.REPAYMENT);
clfOrderCallBack10.setRegisteredFrom(channelId);
clfOrderCallBack10.setCallbackUrl(addModel.getRepaymentPlanCallBackUrl());
clfOrderCallBack10.setIsActive(true);
clfOrderCallBack10.setCreatedAt(new Timestamp(System.currentTimeMillis()));
list.add(clfOrderCallBack10);
}
return list;
private static void approveCallbackUrl(Long channelId, ChannelConfAddModel addModel, List<ClfOrderCallBack> list) {
if (StringUtils.isNotEmpty(addModel.getApproveCallBackUrl())) {
//审批
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();
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) {
......
......@@ -33,10 +33,10 @@ public interface OrderService {
* @param channelOrderNumber
* @return 《是否成功 , msg》
*/
@Transactional
@Transactional(rollbackFor = Exception.class)
Tuple<Boolean, String> secondAudit(String channelOrderNumber);
@Transactional
@Transactional(rollbackFor = Exception.class)
Tuple<Boolean, String> lending(LendingFormModel lendingFormModel);
HistoryOrderStatusVoModel getOrderHistoryStatus(String channelOrderNumber);
......
......@@ -2,7 +2,6 @@ package cn.quantgroup.cashloanflowboss.api.user.model;
import cn.quantgroup.cashloanflowboss.api.login.model.Principal;
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.dictionary.ApplicationStatus;
import com.google.common.collect.Lists;
......@@ -20,10 +19,10 @@ public class UserDetailInfo {
@Data
static class RoleInfo {
List<roleView> roleInfos;
List<RoleView> roleInfos;
@Data
static class roleView {
static class RoleView {
private Long roleId;
private String roleName;
}
......@@ -40,9 +39,9 @@ public class UserDetailInfo {
if (null != roles && roles.size() > 0) {
RoleInfo roleInfo = new RoleInfo();
List<RoleInfo.roleView> roleInfos = Lists.newArrayList();
List<RoleInfo.RoleView> roleInfos = Lists.newArrayList();
roles.forEach(role -> {
RoleInfo.roleView roleView = new RoleInfo.roleView();
RoleInfo.RoleView roleView = new RoleInfo.RoleView();
roleView.setRoleId(role.getId());
roleView.setRoleName(role.getName());
roleInfos.add(roleView);
......
......@@ -23,6 +23,9 @@ import java.util.regex.Pattern;
*/
public class IDValidator {
private static final int int17 = 17;
private static final String s19 = "19";
/**
* 校验码
*/
......@@ -96,11 +99,11 @@ public class IDValidator {
return false;
}
if (Pattern.matches("^[\\d]{15}$", idNumber)) {
if (Pattern.matches(getRegex(), 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);
......@@ -110,6 +113,14 @@ public class IDValidator {
}
private String getRegex2() {
return "^([\\d]{17}((?i)X))|([\\d]{18})$";
}
private String getRegex() {
return "^[\\d]{15}$";
}
/**
* 验证15位身份证号
*
......@@ -137,12 +148,12 @@ public class IDValidator {
*/
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;
for (int i = 0; i < 17; i++) {
for (int i = 0; i < int17; i++) {
int ai = Integer.parseInt(String.valueOf(newIdNumber.charAt(i)));
sum = sum + ai * weights[i];
}
......@@ -219,7 +230,7 @@ public class IDValidator {
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];
}
......
......@@ -4,6 +4,7 @@ import cn.quantgroup.cashloanflowboss.api.login.model.Principal;
import cn.quantgroup.cashloanflowboss.core.Application;
import cn.quantgroup.cashloanflowboss.core.annotation.channelrole.CheckChannelRole;
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.spi.clf.entity.ClfOrderMapping;
import cn.quantgroup.cashloanflowboss.spi.clf.repository.ClfOrderMappingRepository;
......@@ -75,7 +76,7 @@ public class ChannelRoleCheckAspect {
if (StringUtils.isNotEmpty(channelIdSPEL)) {
// 通过channelId 判断
try {
if (channelIdSPEL.startsWith("#this")) {
if (channelIdSPEL.startsWith(Constants.START_THIS)) {
Expression expression = new SpelExpressionParser().parseExpression(channelIdSPEL);
if (!Application.getPrincipal().getChannelId().equals(expression.getValue(args, Long.class))) {
......@@ -92,7 +93,7 @@ public class ChannelRoleCheckAspect {
} else if (StringUtils.isNotEmpty(channelOrderNumberSPEL)){
// 通过channelOrderNumber 判断
String channelOrderNumber = "";
if (channelOrderNumberSPEL.startsWith("#this")) {
if (channelOrderNumberSPEL.startsWith(Constants.START_THIS)) {
Expression expression = new SpelExpressionParser().parseExpression(channelOrderNumberSPEL);
channelOrderNumber = expression.getValue(args, String.class);
} else {
......
......@@ -4,6 +4,7 @@ import cn.quantgroup.cashloanflowboss.api.login.model.Principal;
import cn.quantgroup.cashloanflowboss.core.Application;
import cn.quantgroup.cashloanflowboss.core.annotation.channelrole.ChannelIdInit;
import cn.quantgroup.cashloanflowboss.core.base.Result;
import cn.quantgroup.cashloanflowboss.core.constants.Constants;
import cn.quantgroup.cashloanflowboss.core.exception.ApplicationException;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
......@@ -59,7 +60,7 @@ public class ChannelRoleLoadAspect {
if (principal.isChannel()) {
if (StringUtils.isNotEmpty(channelIdSPEL)) {
try {
if (channelIdSPEL.startsWith("#this")) {//判断是否是spel表达式
if (channelIdSPEL.startsWith(Constants.START_THIS)) {//判断是否是spel表达式
Expression expression = new SpelExpressionParser().parseExpression(channelIdSPEL);
expression.setValue(args, principal.getChannelId());
} else {
......
......@@ -6,6 +6,7 @@ import cn.quantgroup.cashloanflowboss.api.optlog.model.OptEnumName;
import cn.quantgroup.cashloanflowboss.api.optlog.service.OptHistoryLogServiceImpl;
import cn.quantgroup.cashloanflowboss.core.Application;
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.service.CLFCenterService;
import lombok.extern.slf4j.Slf4j;
......@@ -52,23 +53,19 @@ public class OperationAspect {
*/
@Around("operationAnno()")
private Object operationAnnoAndSave(ProceedingJoinPoint pjp) throws Throwable {
try {
MethodSignature methodSignature = (MethodSignature) pjp.getSignature();
Method method = methodSignature.getMethod();
OperationAnno annotation = method.getAnnotation(OperationAnno.class);
Object[] args = pjp.getArgs();
OptEnumName opt = annotation.opt();
String succSPEL = annotation.succSPEL();
String optDetailSPEL = annotation.optDetailSPEL();
String channelOrderNumber = "";
if (StringUtils.isNotBlank(annotation.channelNo())) {
String keySPEL = annotation.channelNo();
try {
if (keySPEL.startsWith("#this")) {//判断是否是spel表达式
if (keySPEL.startsWith(Constants.START_THIS)) {//判断是否是spel表达式
Expression expression = new SpelExpressionParser().parseExpression(keySPEL);
String value = expression.getValue(args, String.class);
channelOrderNumber = value;
......@@ -85,14 +82,7 @@ public class OperationAspect {
ClfOrderMapping orderMapping = clfCenterService.findOrderMappingByChannelOrderNo(channelOrderNumber);
if (orderMapping != null) {
// do some
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());
getOptHistoryLogBean(opt, channelOrderNumber, optHistoryLog, orderMapping);
} else {
log.warn("[operationAnnoAnnSave]orderMapping is null, channelOrderNumber={}" , channelOrderNumber );
return pjp.proceed();
......@@ -101,36 +91,8 @@ public class OperationAspect {
log.warn("[operationAnnoAnnSave]channelOrderNumber is empty, channelOrderNumber={}" , channelOrderNumber );
return pjp.proceed();
}
// 是否成功SPEL 表达式解析
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;
}
}
Expression expressionsuccSPEL = getIsSuccExpressionSPEL(succSPEL);
Expression expressionMsgSPEL = getMegExpression(optDetailSPEL);
if (StringUtils.isNotEmpty(channelOrderNumber)) {
// 判断是否 已经请求成功过
OptHistoryLog optHistoryLogSuccess = optHistoryLogService.findByChannelOrderNumberAndOptNameAndSuccess(channelOrderNumber, opt);
......@@ -148,23 +110,17 @@ public class OperationAspect {
log.info("[operationAnnoAnnSave]该操作已经操作成功,无须重复操作,切面返回");
return ret;
}
}
}
// 代理执行方法
Object proceed = pjp.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) {
......@@ -172,4 +128,50 @@ public class OperationAspect {
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;
@Repository
public interface UserDetailRepository extends JpaRepository<UserDetail,Long>{
@Transactional
@Transactional(rollbackFor = Exception.class)
@Modifying
@Query(value = "delete from user_detail where user_id = ?1", nativeQuery = true)
int deleteByUserId(Long userId);
......
......@@ -12,7 +12,7 @@ import org.springframework.transaction.annotation.Transactional;
@Repository
public interface UserExtInfoRepository extends JpaRepository<UserExtInfo,Long>{
@Transactional
@Transactional(rollbackFor = Exception.class)
@Modifying
@Query(value = "delete from user_ext_info where user_id = ?1", nativeQuery = true)
void deleteByUserId(Long userId);
......
......@@ -30,7 +30,7 @@ public interface XYQBCenterService {
WaitingFundingCorpOperatePeople findWaitingFundingCorpOperatePeopleByLoanId(Long loanId);
@Transactional
@Transactional(rollbackOn = Exception.class)
void saveWaitingFundingCorpOperatePeople(WaitingFundingCorpOperatePeople waitingFundingCorpOperatePeople);
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;
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