From fd4c89fdbf7d871eb166db4804c56418a4e5dfb9 Mon Sep 17 00:00:00 2001 From: lujian Date: Mon, 12 Nov 2018 19:43:55 +0800 Subject: [PATCH] =?UTF-8?q?[fix]=E9=A3=8E=E6=8E=A7=E9=9C=80=E6=B1=82?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mappers/payment/TransactionMapper.java | 12 +++ .../mappers/riskbusiness/RiskEventMapper.java | 3 + .../core/RiskBusinessService.java | 7 ++ .../core/impl/RiskBusinessServiceImpl.java | 94 ++++++++++++++----- .../web/RiskBusinessController.java | 13 +++ .../manage/mappers/payment/OrderMapper.xml | 11 +-- src/main/ui/static/analysis/risk_business.js | 2 + .../analysis/templates/riskEvent_detail.html | 14 ++- .../analysis/templates/risk_business.html | 8 +- 9 files changed, 126 insertions(+), 38 deletions(-) diff --git a/src/main/java/au/com/royalpay/payment/manage/mappers/payment/TransactionMapper.java b/src/main/java/au/com/royalpay/payment/manage/mappers/payment/TransactionMapper.java index d2b2a2dac..8f4ab97b4 100644 --- a/src/main/java/au/com/royalpay/payment/manage/mappers/payment/TransactionMapper.java +++ b/src/main/java/au/com/royalpay/payment/manage/mappers/payment/TransactionMapper.java @@ -9,6 +9,7 @@ import com.github.miemiedev.mybatis.paginator.domain.PageBounds; import com.github.miemiedev.mybatis.paginator.domain.PageList; import org.apache.ibatis.annotations.Param; import org.joda.time.DateTime; +import org.springframework.beans.factory.annotation.Autowired; import java.math.BigDecimal; import java.util.Date; @@ -145,4 +146,15 @@ public interface TransactionMapper { List getHfClearAmount(JSONObject params); List analysisForATOReport(@Param("clientId") int clientId, @Param("from") Date startOfMon, @Param("to") Date endOfMon); + + /** + * 付款退款都是同一个退款单号 + * @param clientId + * @param systemTransactionId + * @return + */ + @AutoSql(type = SqlType.SELECT) + PageList findByClientIdAndSystemTransactionId(@Param("client_id") int clientId, + @Param("system_transaction_id") String systemTransactionId, + PageBounds pageBounds); } diff --git a/src/main/java/au/com/royalpay/payment/manage/mappers/riskbusiness/RiskEventMapper.java b/src/main/java/au/com/royalpay/payment/manage/mappers/riskbusiness/RiskEventMapper.java index d27b4351b..200a00356 100644 --- a/src/main/java/au/com/royalpay/payment/manage/mappers/riskbusiness/RiskEventMapper.java +++ b/src/main/java/au/com/royalpay/payment/manage/mappers/riskbusiness/RiskEventMapper.java @@ -31,4 +31,7 @@ public interface RiskEventMapper { @AutoSql(type = SqlType.SELECT) JSONObject findById(@Param("risk_id") String riskId); + @AutoSql(type = SqlType.DELETE) + void deleteRiskEvent(@Param("risk_id") String risk_id); + } diff --git a/src/main/java/au/com/royalpay/payment/manage/riskbusiness/core/RiskBusinessService.java b/src/main/java/au/com/royalpay/payment/manage/riskbusiness/core/RiskBusinessService.java index 52ccf932d..bb6a2be17 100644 --- a/src/main/java/au/com/royalpay/payment/manage/riskbusiness/core/RiskBusinessService.java +++ b/src/main/java/au/com/royalpay/payment/manage/riskbusiness/core/RiskBusinessService.java @@ -84,4 +84,11 @@ public interface RiskBusinessService { * @return */ JSONObject getRiskMaterial(JSONObject param); + + /** + * 补全历史数据的real_order_ids + */ + void completeEventRealOrderIds(); + + void deleteRiskEvent(String riskId); } diff --git a/src/main/java/au/com/royalpay/payment/manage/riskbusiness/core/impl/RiskBusinessServiceImpl.java b/src/main/java/au/com/royalpay/payment/manage/riskbusiness/core/impl/RiskBusinessServiceImpl.java index a547c05b8..b6b9f3510 100644 --- a/src/main/java/au/com/royalpay/payment/manage/riskbusiness/core/impl/RiskBusinessServiceImpl.java +++ b/src/main/java/au/com/royalpay/payment/manage/riskbusiness/core/impl/RiskBusinessServiceImpl.java @@ -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.manage.mappers.log.AppMessageLogMapper; 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.RiskFileMapper; import au.com.royalpay.payment.manage.mappers.riskbusiness.RiskMaterialMapper; @@ -77,6 +78,8 @@ public class RiskBusinessServiceImpl implements RiskBusinessService, ManagerTodo @Resource private OrderMapper orderMapper; @Resource + private TransactionMapper transactionMapper; + @Resource private StringRedisTemplate stringRedisTemplate; @Resource private SpringTemplateEngine thymeleaf; @@ -146,21 +149,20 @@ public class RiskBusinessServiceImpl implements RiskBusinessService, ManagerTodo @Override public List 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")); List tradeLogs = new ArrayList<>(); /** * 通用号调单会有client为空的情况,所以无法查到订单信息 */ - if (client != null && StringUtils.isNotBlank(orderIds)) { - String[] orderIdArray = orderIds.trim().split(","); + if (client != null && StringUtils.isNotBlank(realOrderIds)) { + String[] orderIdArray = realOrderIds.trim().split(","); JSONObject orderInfo = new JSONObject(); - String realOrderId = ""; // 获取订单信息 if (riskEvent.getIntValue("order_type") == 3) { 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"), realOrderId, null); + orderInfo = tradeLogService.getOrderDetail(new JSONObject(), riskEvent.getString("client_moniker"), orderIdArray[i], null); tradeLogs.add(orderInfo); } } else { @@ -173,8 +175,7 @@ public class RiskBusinessServiceImpl implements RiskBusinessService, ManagerTodo return tradeLogs; } - @Override - public void addRiskEvent(JSONObject params, JSONObject manager) { + private JSONObject getEvent(JSONObject params) { // 通用号调单不需要填写client_moniker JSONObject client = null; 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"); if (StringUtils.isNotBlank(orderIds)) { // 去除所有空格与中文逗号',' @@ -195,6 +194,7 @@ public class RiskBusinessServiceImpl implements RiskBusinessService, ManagerTodo params.put("order_ids", orderIds); String[] orderIdArray = orderIds.split(","); List orderAmountList = new ArrayList<>(); + List realOrderIdList = new ArrayList<>(); /** * 通用号调单的时候,是不用填写client_moniker的,但是系统需要client_id关联查询订单信息, * 所以当client为空的时候,就不去校验订单的信息了,从而order_amounts字段为空 @@ -202,10 +202,10 @@ public class RiskBusinessServiceImpl implements RiskBusinessService, ManagerTodo */ if (client != null) { for (int i = 0; i < orderIdArray.length; i++) { - JSONObject orderInfo = orderMapper.findOrderById(orderIdArray[i],client.getIntValue("client_id")); + PageList 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(); /* else { @@ -215,15 +215,27 @@ public class RiskBusinessServiceImpl implements RiskBusinessService, ManagerTodo 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("real_order_ids", StringUtils.join(realOrderIdList, ",")); } } + return params; + } + @Override + public void addRiskEvent(JSONObject params, JSONObject manager) { + params = getEvent(params); riskEventMapper.save(params); } @Override public void updateRiskEvent(JSONObject params) { + params = getEvent(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("submit_url",uploadUrl); 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()); } riskEventMapper.update(event); @@ -291,8 +303,6 @@ public class RiskBusinessServiceImpl implements RiskBusinessService, ManagerTodo if(event.getIntValue("order_type")==3){ sendAppRiskMessage(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("warning_order_type", event.getIntValue("warning_order_type")); 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 orders = new ArrayList(); switch (event.getIntValue("order_type")){ case 1: case 2: - for(String orderId : orderIds){ + for(String orderId : realOrderIds){ JSONObject order = orderMapper.findOrderById(orderId,client.getIntValue("client_id")); if(order==null){ throw new BadRequestException("Order: "+orderId+" not exists"); @@ -465,10 +476,8 @@ public class RiskBusinessServiceImpl implements RiskBusinessService, ManagerTodo ctx.setVariable("emailsTos", bdEmails); break; case 3: - String realOrderId = ""; - for(String orderId : orderIds){ - realOrderId = orderMapper.findOrderById(orderId,client.getIntValue("client_id")).getString("order_id"); - JSONObject order = tradeLogService.getOrderDetail(new JSONObject(), clientMoniker, realOrderId, null); + for(String orderId : realOrderIds){ + JSONObject order = tradeLogService.getOrderDetail(new JSONObject(), clientMoniker, orderId, null); if(order==null){ throw new BadRequestException("Order: "+orderId+" not exists"); } @@ -526,16 +535,42 @@ public class RiskBusinessServiceImpl implements RiskBusinessService, ManagerTodo return null; } + @Override + public void completeEventRealOrderIds() { + List 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 realOrderIds = new ArrayList<>(); + if (client == null) + continue; + for (int i = 0; i < systemTransactionIdArr.length; i++) { + PageList 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 { String[] orderIds = event.getString("order_ids").split(","); JSONObject client = clientMapper.findClientByMonikerAll(event.getString("client_moniker")); Workbook wb = new XSSFWorkbook(); - String realOrderId = ""; 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"), realOrderId, null); + JSONObject orderDetail = tradeLogService.getOrderDetail(new JSONObject(), event.getString("client_moniker"), orderId, null); Sheet sheet = wb.createSheet(orderId); sheet.setDefaultColumnWidth((short) 40); Row row0 = sheet.createRow(0); @@ -652,6 +687,11 @@ public class RiskBusinessServiceImpl implements RiskBusinessService, ManagerTodo @Override public void checkTodo(JSONObject manager, List notices) { + /** + * 1、判断登录的角色是不是BD + * 2、列出BD管理的商户 + * 3、 + */ if (ManagerRole.BD_USER.hasRole(manager.getIntValue("role"))) { JSONObject params = new JSONObject(); 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); + } + } diff --git a/src/main/java/au/com/royalpay/payment/manage/riskbusiness/web/RiskBusinessController.java b/src/main/java/au/com/royalpay/payment/manage/riskbusiness/web/RiskBusinessController.java index b92252ec5..837a29134 100644 --- a/src/main/java/au/com/royalpay/payment/manage/riskbusiness/web/RiskBusinessController.java +++ b/src/main/java/au/com/royalpay/payment/manage/riskbusiness/web/RiskBusinessController.java @@ -56,6 +56,8 @@ public class RiskBusinessController { @PostMapping(value = "events") public void RegisterRiskEvent(@RequestBody JSONObject params, @ModelAttribute(CommonConsts.MANAGER_STATUS) JSONObject manager) { + params.put("fillin_id", manager.getString("manager_id")); + params.put("fillin_person", manager.getString("display_name")); riskBusinessService.addRiskEvent(params, manager); } @@ -128,5 +130,16 @@ public class RiskBusinessController { JSONObject param = partnerQuery.toJsonParam(); return clientManager.getClientBySimpleQuery(param); } + + // 更新库中的orderIds + @GetMapping(value = "/complete/real_order_id") + public void completeEventRealOrderIds() { + riskBusinessService.completeEventRealOrderIds(); + } + + @GetMapping(value = "/delete/event") + public void deleteRiskEvent(@RequestParam("risk_id") String riskId) { + riskBusinessService.deleteRiskEvent(riskId); + } } diff --git a/src/main/resources/au/com/royalpay/payment/manage/mappers/payment/OrderMapper.xml b/src/main/resources/au/com/royalpay/payment/manage/mappers/payment/OrderMapper.xml index 818a9fd68..4c51f4555 100644 --- a/src/main/resources/au/com/royalpay/payment/manage/mappers/payment/OrderMapper.xml +++ b/src/main/resources/au/com/royalpay/payment/manage/mappers/payment/OrderMapper.xml @@ -739,14 +739,6 @@ -