|
|
@ -6,6 +6,7 @@ import au.com.royalpay.payment.core.exceptions.OrderNotExistsException;
|
|
|
|
import au.com.royalpay.payment.core.exceptions.OrderNotMatchException;
|
|
|
|
import au.com.royalpay.payment.core.exceptions.OrderNotMatchException;
|
|
|
|
import au.com.royalpay.payment.manage.mappers.log.AppMessageLogMapper;
|
|
|
|
import au.com.royalpay.payment.manage.mappers.log.AppMessageLogMapper;
|
|
|
|
import au.com.royalpay.payment.manage.mappers.payment.OrderMapper;
|
|
|
|
import au.com.royalpay.payment.manage.mappers.payment.OrderMapper;
|
|
|
|
|
|
|
|
import au.com.royalpay.payment.manage.mappers.payment.TransactionMapper;
|
|
|
|
import au.com.royalpay.payment.manage.mappers.riskbusiness.RiskEventMapper;
|
|
|
|
import au.com.royalpay.payment.manage.mappers.riskbusiness.RiskEventMapper;
|
|
|
|
import au.com.royalpay.payment.manage.mappers.riskbusiness.RiskFileMapper;
|
|
|
|
import au.com.royalpay.payment.manage.mappers.riskbusiness.RiskFileMapper;
|
|
|
|
import au.com.royalpay.payment.manage.mappers.riskbusiness.RiskMaterialMapper;
|
|
|
|
import au.com.royalpay.payment.manage.mappers.riskbusiness.RiskMaterialMapper;
|
|
|
@ -77,6 +78,8 @@ public class RiskBusinessServiceImpl implements RiskBusinessService, ManagerTodo
|
|
|
|
@Resource
|
|
|
|
@Resource
|
|
|
|
private OrderMapper orderMapper;
|
|
|
|
private OrderMapper orderMapper;
|
|
|
|
@Resource
|
|
|
|
@Resource
|
|
|
|
|
|
|
|
private TransactionMapper transactionMapper;
|
|
|
|
|
|
|
|
@Resource
|
|
|
|
private StringRedisTemplate stringRedisTemplate;
|
|
|
|
private StringRedisTemplate stringRedisTemplate;
|
|
|
|
@Resource
|
|
|
|
@Resource
|
|
|
|
private SpringTemplateEngine thymeleaf;
|
|
|
|
private SpringTemplateEngine thymeleaf;
|
|
|
@ -146,21 +149,20 @@ public class RiskBusinessServiceImpl implements RiskBusinessService, ManagerTodo
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
|
public List<JSONObject> getRiskEventOrderList(JSONObject riskEvent) {
|
|
|
|
public List<JSONObject> getRiskEventOrderList(JSONObject riskEvent) {
|
|
|
|
String orderIds = riskEvent.getString("order_ids");
|
|
|
|
//String orderIds = riskEvent.getString("order_ids");
|
|
|
|
|
|
|
|
String realOrderIds = riskEvent.getString("real_order_ids");
|
|
|
|
JSONObject client = clientMapper.findClientByMonikerAll(riskEvent.getString("client_moniker"));
|
|
|
|
JSONObject client = clientMapper.findClientByMonikerAll(riskEvent.getString("client_moniker"));
|
|
|
|
List<JSONObject> tradeLogs = new ArrayList<>();
|
|
|
|
List<JSONObject> tradeLogs = new ArrayList<>();
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* 通用号调单会有client为空的情况,所以无法查到订单信息
|
|
|
|
* 通用号调单会有client为空的情况,所以无法查到订单信息
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
if (client != null && StringUtils.isNotBlank(orderIds)) {
|
|
|
|
if (client != null && StringUtils.isNotBlank(realOrderIds)) {
|
|
|
|
String[] orderIdArray = orderIds.trim().split(",");
|
|
|
|
String[] orderIdArray = realOrderIds.trim().split(",");
|
|
|
|
JSONObject orderInfo = new JSONObject();
|
|
|
|
JSONObject orderInfo = new JSONObject();
|
|
|
|
String realOrderId = "";
|
|
|
|
|
|
|
|
// 获取订单信息
|
|
|
|
// 获取订单信息
|
|
|
|
if (riskEvent.getIntValue("order_type") == 3) {
|
|
|
|
if (riskEvent.getIntValue("order_type") == 3) {
|
|
|
|
for (int i = 0; i < orderIdArray.length; i++) {
|
|
|
|
for (int i = 0; i < orderIdArray.length; i++) {
|
|
|
|
realOrderId = orderMapper.findOrderById(orderIdArray[i],client.getIntValue("client_id")).getString("order_id");
|
|
|
|
orderInfo = tradeLogService.getOrderDetail(new JSONObject(), riskEvent.getString("client_moniker"), orderIdArray[i], null);
|
|
|
|
orderInfo = tradeLogService.getOrderDetail(new JSONObject(), riskEvent.getString("client_moniker"), realOrderId, null);
|
|
|
|
|
|
|
|
tradeLogs.add(orderInfo);
|
|
|
|
tradeLogs.add(orderInfo);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
@ -173,8 +175,7 @@ public class RiskBusinessServiceImpl implements RiskBusinessService, ManagerTodo
|
|
|
|
return tradeLogs;
|
|
|
|
return tradeLogs;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
private JSONObject getEvent(JSONObject params) {
|
|
|
|
public void addRiskEvent(JSONObject params, JSONObject manager) {
|
|
|
|
|
|
|
|
// 通用号调单不需要填写client_moniker
|
|
|
|
// 通用号调单不需要填写client_moniker
|
|
|
|
JSONObject client = null;
|
|
|
|
JSONObject client = null;
|
|
|
|
String clientMoniker = params.getString("client_moniker");
|
|
|
|
String clientMoniker = params.getString("client_moniker");
|
|
|
@ -185,8 +186,6 @@ public class RiskBusinessServiceImpl implements RiskBusinessService, ManagerTodo
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
params.put("fillin_id", manager.getString("manager_id"));
|
|
|
|
|
|
|
|
params.put("fillin_person", manager.getString("display_name"));
|
|
|
|
|
|
|
|
String orderIds = params.getString("order_ids");
|
|
|
|
String orderIds = params.getString("order_ids");
|
|
|
|
if (StringUtils.isNotBlank(orderIds)) {
|
|
|
|
if (StringUtils.isNotBlank(orderIds)) {
|
|
|
|
// 去除所有空格与中文逗号','
|
|
|
|
// 去除所有空格与中文逗号','
|
|
|
@ -195,6 +194,7 @@ public class RiskBusinessServiceImpl implements RiskBusinessService, ManagerTodo
|
|
|
|
params.put("order_ids", orderIds);
|
|
|
|
params.put("order_ids", orderIds);
|
|
|
|
String[] orderIdArray = orderIds.split(",");
|
|
|
|
String[] orderIdArray = orderIds.split(",");
|
|
|
|
List<String> orderAmountList = new ArrayList<>();
|
|
|
|
List<String> orderAmountList = new ArrayList<>();
|
|
|
|
|
|
|
|
List<String> realOrderIdList = new ArrayList<>();
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* 通用号调单的时候,是不用填写client_moniker的,但是系统需要client_id关联查询订单信息,
|
|
|
|
* 通用号调单的时候,是不用填写client_moniker的,但是系统需要client_id关联查询订单信息,
|
|
|
|
* 所以当client为空的时候,就不去校验订单的信息了,从而order_amounts字段为空
|
|
|
|
* 所以当client为空的时候,就不去校验订单的信息了,从而order_amounts字段为空
|
|
|
@ -202,10 +202,10 @@ public class RiskBusinessServiceImpl implements RiskBusinessService, ManagerTodo
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
if (client != null) {
|
|
|
|
if (client != null) {
|
|
|
|
for (int i = 0; i < orderIdArray.length; i++) {
|
|
|
|
for (int i = 0; i < orderIdArray.length; i++) {
|
|
|
|
JSONObject orderInfo = orderMapper.findOrderById(orderIdArray[i],client.getIntValue("client_id"));
|
|
|
|
PageList<JSONObject> transactionList = transactionMapper.findByClientIdAndSystemTransactionId(client.getIntValue("client_id"), orderIdArray[i], new PageBounds(Order.formString("transaction_time.desc")));
|
|
|
|
// 判断该笔订单是否存在,是否属于该商户
|
|
|
|
// 判断该笔订单是否存在,是否属于该商户
|
|
|
|
// 由于查询订单时已经关联商户了,所以只会抛出订单不匹配的异常
|
|
|
|
// 由于查询订单时已经关联商户了,所以只会抛出订单不匹配的异常
|
|
|
|
if (orderInfo == null)
|
|
|
|
if (transactionList == null || transactionList.size() <= 0)
|
|
|
|
throw new OrderNotMatchException();
|
|
|
|
throw new OrderNotMatchException();
|
|
|
|
/*
|
|
|
|
/*
|
|
|
|
else {
|
|
|
|
else {
|
|
|
@ -215,15 +215,27 @@ public class RiskBusinessServiceImpl implements RiskBusinessService, ManagerTodo
|
|
|
|
orderAmountList.add(orderInfo.getString("total_amount"));
|
|
|
|
orderAmountList.add(orderInfo.getString("total_amount"));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 将订单order_id存入数据库方便后面快速查询
|
|
|
|
|
|
|
|
JSONObject orderInfo = transactionList.get(0);
|
|
|
|
|
|
|
|
realOrderIdList.add(orderInfo.getString("order_id"));
|
|
|
|
|
|
|
|
orderAmountList.add(orderInfo.getString("transaction_amount"));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
params.put("order_amounts", StringUtils.join(orderAmountList, ","));
|
|
|
|
params.put("order_amounts", StringUtils.join(orderAmountList, ","));
|
|
|
|
|
|
|
|
params.put("real_order_ids", StringUtils.join(realOrderIdList, ","));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return params;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
|
|
|
public void addRiskEvent(JSONObject params, JSONObject manager) {
|
|
|
|
|
|
|
|
params = getEvent(params);
|
|
|
|
riskEventMapper.save(params);
|
|
|
|
riskEventMapper.save(params);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
|
public void updateRiskEvent(JSONObject params) {
|
|
|
|
public void updateRiskEvent(JSONObject params) {
|
|
|
|
|
|
|
|
params = getEvent(params);
|
|
|
|
riskEventMapper.update(params);
|
|
|
|
riskEventMapper.update(params);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
@ -280,7 +292,7 @@ public class RiskBusinessServiceImpl implements RiskBusinessService, ManagerTodo
|
|
|
|
event.put("result_type", RiskResultTypeEnum.SEND_EMAIL_TO_BD.getResultType());
|
|
|
|
event.put("result_type", RiskResultTypeEnum.SEND_EMAIL_TO_BD.getResultType());
|
|
|
|
event.put("submit_url",uploadUrl);
|
|
|
|
event.put("submit_url",uploadUrl);
|
|
|
|
Integer orderType = event.getInteger("order_type");
|
|
|
|
Integer orderType = event.getInteger("order_type");
|
|
|
|
if (orderType == RiskOrderTypeEnum.WARNING_ORDER.getOrderType()) {
|
|
|
|
if (orderType.equals(RiskOrderTypeEnum.WARNING_ORDER.getOrderType())) {
|
|
|
|
event.put("result_type", RiskResultTypeEnum.ALREADY_HANDLED.getResultType());
|
|
|
|
event.put("result_type", RiskResultTypeEnum.ALREADY_HANDLED.getResultType());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
riskEventMapper.update(event);
|
|
|
|
riskEventMapper.update(event);
|
|
|
@ -291,8 +303,6 @@ public class RiskBusinessServiceImpl implements RiskBusinessService, ManagerTodo
|
|
|
|
if(event.getIntValue("order_type")==3){
|
|
|
|
if(event.getIntValue("order_type")==3){
|
|
|
|
sendAppRiskMessage(event);
|
|
|
|
sendAppRiskMessage(event);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void sendAppRiskMessage(JSONObject event){
|
|
|
|
private void sendAppRiskMessage(JSONObject event){
|
|
|
@ -448,12 +458,13 @@ public class RiskBusinessServiceImpl implements RiskBusinessService, ManagerTodo
|
|
|
|
ctx.setVariable("royalpay_order_type", event.getIntValue("royalpay_order_type"));
|
|
|
|
ctx.setVariable("royalpay_order_type", event.getIntValue("royalpay_order_type"));
|
|
|
|
ctx.setVariable("warning_order_type", event.getIntValue("warning_order_type"));
|
|
|
|
ctx.setVariable("warning_order_type", event.getIntValue("warning_order_type"));
|
|
|
|
ctx.setVariable("description", event.getString("description"));
|
|
|
|
ctx.setVariable("description", event.getString("description"));
|
|
|
|
String[] orderIds = event.getString("order_ids").split(",");
|
|
|
|
//String[] orderIds = event.getString("order_ids").split(",");
|
|
|
|
|
|
|
|
String[] realOrderIds = event.getString("real_order_ids").split(",");
|
|
|
|
List<JSONObject> orders = new ArrayList();
|
|
|
|
List<JSONObject> orders = new ArrayList();
|
|
|
|
switch (event.getIntValue("order_type")){
|
|
|
|
switch (event.getIntValue("order_type")){
|
|
|
|
case 1:
|
|
|
|
case 1:
|
|
|
|
case 2:
|
|
|
|
case 2:
|
|
|
|
for(String orderId : orderIds){
|
|
|
|
for(String orderId : realOrderIds){
|
|
|
|
JSONObject order = orderMapper.findOrderById(orderId,client.getIntValue("client_id"));
|
|
|
|
JSONObject order = orderMapper.findOrderById(orderId,client.getIntValue("client_id"));
|
|
|
|
if(order==null){
|
|
|
|
if(order==null){
|
|
|
|
throw new BadRequestException("Order: "+orderId+" not exists");
|
|
|
|
throw new BadRequestException("Order: "+orderId+" not exists");
|
|
|
@ -465,10 +476,8 @@ public class RiskBusinessServiceImpl implements RiskBusinessService, ManagerTodo
|
|
|
|
ctx.setVariable("emailsTos", bdEmails);
|
|
|
|
ctx.setVariable("emailsTos", bdEmails);
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
case 3:
|
|
|
|
case 3:
|
|
|
|
String realOrderId = "";
|
|
|
|
for(String orderId : realOrderIds){
|
|
|
|
for(String orderId : orderIds){
|
|
|
|
JSONObject order = tradeLogService.getOrderDetail(new JSONObject(), clientMoniker, orderId, null);
|
|
|
|
realOrderId = orderMapper.findOrderById(orderId,client.getIntValue("client_id")).getString("order_id");
|
|
|
|
|
|
|
|
JSONObject order = tradeLogService.getOrderDetail(new JSONObject(), clientMoniker, realOrderId, null);
|
|
|
|
|
|
|
|
if(order==null){
|
|
|
|
if(order==null){
|
|
|
|
throw new BadRequestException("Order: "+orderId+" not exists");
|
|
|
|
throw new BadRequestException("Order: "+orderId+" not exists");
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -526,16 +535,42 @@ public class RiskBusinessServiceImpl implements RiskBusinessService, ManagerTodo
|
|
|
|
return null;
|
|
|
|
return null;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
|
|
|
public void completeEventRealOrderIds() {
|
|
|
|
|
|
|
|
List<JSONObject> riskEventList = getRiskEvents(null);
|
|
|
|
|
|
|
|
if (riskEventList != null && riskEventList.size() > 0) {
|
|
|
|
|
|
|
|
for (JSONObject riskEvent : riskEventList) {
|
|
|
|
|
|
|
|
String clientMoniker = riskEvent.getString("client_moniker");
|
|
|
|
|
|
|
|
JSONObject client = clientMapper.findClientByMonikerAll(clientMoniker);
|
|
|
|
|
|
|
|
String systemTransactionIds = riskEvent.getString("order_ids");
|
|
|
|
|
|
|
|
if (StringUtils.isBlank(systemTransactionIds))
|
|
|
|
|
|
|
|
continue;
|
|
|
|
|
|
|
|
String[] systemTransactionIdArr = riskEvent.getString("order_ids").split(",");
|
|
|
|
|
|
|
|
List<String> realOrderIds = new ArrayList<>();
|
|
|
|
|
|
|
|
if (client == null)
|
|
|
|
|
|
|
|
continue;
|
|
|
|
|
|
|
|
for (int i = 0; i < systemTransactionIdArr.length; i++) {
|
|
|
|
|
|
|
|
PageList<JSONObject> transactionList = transactionMapper.findByClientIdAndSystemTransactionId(
|
|
|
|
|
|
|
|
client.getIntValue("client_id"),
|
|
|
|
|
|
|
|
systemTransactionIdArr[i],
|
|
|
|
|
|
|
|
new PageBounds(Order.formString("transaction_time.desc")));
|
|
|
|
|
|
|
|
if (transactionList != null && transactionList.size() > 0)
|
|
|
|
|
|
|
|
realOrderIds.add(transactionList.get(0).getString("order_id"));
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
riskEvent.put("real_order_ids", StringUtils.join(realOrderIds, ","));
|
|
|
|
|
|
|
|
//updateRiskEvent(riskEvent);
|
|
|
|
|
|
|
|
riskEventMapper.update(riskEvent);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private byte[] generateRiskOrders(JSONObject event) throws IOException {
|
|
|
|
private byte[] generateRiskOrders(JSONObject event) throws IOException {
|
|
|
|
String[] orderIds = event.getString("order_ids").split(",");
|
|
|
|
String[] orderIds = event.getString("order_ids").split(",");
|
|
|
|
JSONObject client = clientMapper.findClientByMonikerAll(event.getString("client_moniker"));
|
|
|
|
JSONObject client = clientMapper.findClientByMonikerAll(event.getString("client_moniker"));
|
|
|
|
Workbook wb = new XSSFWorkbook();
|
|
|
|
Workbook wb = new XSSFWorkbook();
|
|
|
|
String realOrderId = "";
|
|
|
|
|
|
|
|
for(String orderId : orderIds){
|
|
|
|
for(String orderId : orderIds){
|
|
|
|
realOrderId = orderMapper.findOrderById(orderId,client.getIntValue("client_id")).getString("order_id");
|
|
|
|
JSONObject orderDetail = tradeLogService.getOrderDetail(new JSONObject(), event.getString("client_moniker"), orderId, null);
|
|
|
|
JSONObject orderDetail = tradeLogService.getOrderDetail(new JSONObject(), event.getString("client_moniker"), realOrderId, null);
|
|
|
|
|
|
|
|
Sheet sheet = wb.createSheet(orderId);
|
|
|
|
Sheet sheet = wb.createSheet(orderId);
|
|
|
|
sheet.setDefaultColumnWidth((short) 40);
|
|
|
|
sheet.setDefaultColumnWidth((short) 40);
|
|
|
|
Row row0 = sheet.createRow(0);
|
|
|
|
Row row0 = sheet.createRow(0);
|
|
|
@ -652,6 +687,11 @@ public class RiskBusinessServiceImpl implements RiskBusinessService, ManagerTodo
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
|
public void checkTodo(JSONObject manager, List<TodoNotice> notices) {
|
|
|
|
public void checkTodo(JSONObject manager, List<TodoNotice> notices) {
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* 1、判断登录的角色是不是BD
|
|
|
|
|
|
|
|
* 2、列出BD管理的商户
|
|
|
|
|
|
|
|
* 3、
|
|
|
|
|
|
|
|
*/
|
|
|
|
if (ManagerRole.BD_USER.hasRole(manager.getIntValue("role"))) {
|
|
|
|
if (ManagerRole.BD_USER.hasRole(manager.getIntValue("role"))) {
|
|
|
|
JSONObject params = new JSONObject();
|
|
|
|
JSONObject params = new JSONObject();
|
|
|
|
params.put("bd_id", manager.getString("manager_id"));
|
|
|
|
params.put("bd_id", manager.getString("manager_id"));
|
|
|
@ -681,4 +721,10 @@ public class RiskBusinessServiceImpl implements RiskBusinessService, ManagerTodo
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
|
|
|
public void deleteRiskEvent(String riskId) {
|
|
|
|
|
|
|
|
riskEventMapper.deleteRiskEvent(riskId);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|