diff --git a/src/main/java/au/com/royalpay/payment/manage/mappers/riskbusiness/RiskMaterialMapper.java b/src/main/java/au/com/royalpay/payment/manage/mappers/riskbusiness/RiskMaterialMapper.java index 4fed8604f..0c4731b95 100644 --- a/src/main/java/au/com/royalpay/payment/manage/mappers/riskbusiness/RiskMaterialMapper.java +++ b/src/main/java/au/com/royalpay/payment/manage/mappers/riskbusiness/RiskMaterialMapper.java @@ -1,10 +1,14 @@ package au.com.royalpay.payment.manage.mappers.riskbusiness; +import cn.yixblog.support.mybatis.autosql.annotations.AdvanceSelect; import cn.yixblog.support.mybatis.autosql.annotations.AutoMapper; import cn.yixblog.support.mybatis.autosql.annotations.AutoSql; import cn.yixblog.support.mybatis.autosql.annotations.SqlType; import com.alibaba.fastjson.JSONObject; import org.apache.ibatis.annotations.Param; +import org.apache.catalina.LifecycleState; + +import java.util.List; @AutoMapper(tablename = "risk_material", pkName = "material_id") public interface RiskMaterialMapper { @@ -12,4 +16,7 @@ public interface RiskMaterialMapper { void save(JSONObject material); JSONObject findOperatorById(@Param("risk_id") String risk_id); + + List getRiskMaterial(JSONObject param); + } diff --git a/src/main/java/au/com/royalpay/payment/manage/riskbusiness/bean/RiskEventQuery.java b/src/main/java/au/com/royalpay/payment/manage/riskbusiness/bean/RiskEventQuery.java index d9121b1db..255f873d9 100644 --- a/src/main/java/au/com/royalpay/payment/manage/riskbusiness/bean/RiskEventQuery.java +++ b/src/main/java/au/com/royalpay/payment/manage/riskbusiness/bean/RiskEventQuery.java @@ -1,8 +1,13 @@ package au.com.royalpay.payment.manage.riskbusiness.bean; +import au.com.royalpay.payment.core.exceptions.ParamInvalidException; import com.alibaba.fastjson.JSONObject; import org.apache.commons.lang3.StringUtils; +import java.text.DateFormat; +import java.text.ParseException; +import java.text.SimpleDateFormat; + /** * @Author lvjian * @Date 2018/10/10 11:27 @@ -24,9 +29,18 @@ public class RiskEventQuery { // 邮件发送状态 private Integer emailStatus; + // 行业 + private String industry; + // 处理结果 private Integer resultType; + // 收到调单邮件日期 + private String receiveEmailDate; + + // 邮件回复截止日期 + private String replyEmailDate; + public Integer getOrderType() { return orderType; } @@ -59,6 +73,46 @@ public class RiskEventQuery { this.orderIds = orderIds; } + public Integer getEmailStatus() { + return emailStatus; + } + + public void setEmailStatus(Integer emailStatus) { + this.emailStatus = emailStatus; + } + + public String getIndustry() { + return industry; + } + + public void setIndustry(String industry) { + this.industry = industry; + } + + public Integer getResultType() { + return resultType; + } + + public void setResultType(Integer resultType) { + this.resultType = resultType; + } + + public String getReceiveEmailDate() { + return receiveEmailDate; + } + + public void setReceiveEmailDate(String receiveEmailDate) { + this.receiveEmailDate = receiveEmailDate; + } + + public String getReplyEmailDate() { + return replyEmailDate; + } + + public void setReplyEmailDate(String replyEmailDate) { + this.replyEmailDate = replyEmailDate; + } + public JSONObject toJSON() { JSONObject params = new JSONObject(); @@ -76,6 +130,7 @@ public class RiskEventQuery { } if (StringUtils.isNotBlank(orderIds)) { + orderIds = orderIds.trim().replace(",", ","); params.put("order_ids", orderIds); } @@ -87,6 +142,18 @@ public class RiskEventQuery { params.put("result_type", resultType); } + if (StringUtils.isNotBlank(industry)) { + params.put("industry", industry); + } + + if (receiveEmailDate != null) { + params.put("receive_email_date", receiveEmailDate); + } + + if (replyEmailDate != null) { + params.put("reply_email_date", replyEmailDate); + } + return params; } } 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 77b63ec15..fbac2cb82 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 @@ -71,4 +71,11 @@ public interface RiskBusinessService { */ void sendRefuseEmail(String riskId) throws IOException; + + /** + * 获取最新上传的审核材料 + * @param param + * @return + */ + JSONObject getRiskMaterial(JSONObject param); } 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 7a181ea24..0894aa819 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 @@ -4,11 +4,13 @@ import au.com.royalpay.payment.core.exceptions.EmailException; import au.com.royalpay.payment.core.exceptions.InvalidShortIdException; import au.com.royalpay.payment.manage.mappers.payment.OrderMapper; import au.com.royalpay.payment.manage.mappers.riskbusiness.RiskEventMapper; +import au.com.royalpay.payment.manage.mappers.riskbusiness.RiskMaterialMapper; import au.com.royalpay.payment.manage.mappers.system.ClientMapper; import au.com.royalpay.payment.manage.mappers.system.ClientBDMapper; import au.com.royalpay.payment.manage.notice.core.MailService; import au.com.royalpay.payment.manage.riskbusiness.core.RiskBusinessService; import au.com.royalpay.payment.manage.tradelog.core.TradeLogService; +import au.com.royalpay.payment.manage.riskbusiness.enums.RiskOrderTypeEnum; import au.com.royalpay.payment.tools.env.PlatformEnvironment; import au.com.royalpay.payment.tools.exceptions.BadRequestException; import au.com.royalpay.payment.tools.threadpool.RoyalThreadPoolExecutor; @@ -73,6 +75,9 @@ public class RiskBusinessServiceImpl implements RiskBusinessService { private RoyalThreadPoolExecutor royalThreadPoolExecutor; private final String UPLOAD_MAIL_PREFIX = "UPLOAD_MAIL"; + @Autowired + private RiskMaterialMapper riskMaterialMapper; + @Override public List getRiskEvents(JSONObject params) { return riskEventMapper.findAll(params); @@ -87,31 +92,34 @@ public class RiskBusinessServiceImpl implements RiskBusinessService { @Override public JSONObject getRiskEventDetail(String riskId) { + JSONObject riskEventDetail = riskEventMapper.findById(riskId); // 获取商户信息 + JSONObject client = null; String clientMoniker = riskEventDetail.getString("client_moniker"); - JSONObject client = clientMapper.findClientByMonikerAll(clientMoniker); - if (client == null) { - throw new InvalidShortIdException(); - } else { - riskEventDetail.put("clientInfo", client); + if (clientMoniker != null) { + client = clientMapper.findClientByMonikerAll(clientMoniker); + if (client == null) { + throw new InvalidShortIdException(); + } } - + riskEventDetail.put("clientInfo", client); return riskEventDetail; } @Override public List getRiskEventOrderList(String orderIds) { - String[] orderIdArray = orderIds.trim().split(","); - JSONObject query = new JSONObject(); List tradeLogs = new ArrayList<>(); - - // 获取每笔订单的信息 - for (int i = 0; i < orderIdArray.length; i++) { - query.put("order_id", orderIdArray[i]); - PageList logs = orderMapper.listOrders(query, new PageBounds()); - if (logs != null && logs.size() != 0) { - tradeLogs.add(logs.get(0)); + if (StringUtils.isNotBlank(orderIds)) { + String[] orderIdArray = orderIds.trim().split(","); + JSONObject query = new JSONObject(); + // 获取每笔订单的信息 + for (int i = 0; i < orderIdArray.length; i++) { + query.put("order_id", orderIdArray[i]); + PageList logs = orderMapper.listOrders(query, new PageBounds()); + if (logs != null && logs.size() != 0) { + tradeLogs.add(logs.get(0)); + } } } return tradeLogs; @@ -119,12 +127,14 @@ public class RiskBusinessServiceImpl implements RiskBusinessService { @Override public void addRiskEvent(JSONObject params) { - JSONObject client = clientMapper.findClientByMoniker(params.getString("client_moniker")); - if(client == null){ - throw new InvalidShortIdException(); - } - if(client.containsKey("sub_merchant_id")){ - params.put("sub_merchant_id",client.getString("sub_merchant_id")); + // 通用号调单不需要填写client_moniker + JSONObject client = null; + String clientMoniker = params.getString("client_moniker"); + if (clientMoniker != null) { + client = clientMapper.findClientByMoniker(clientMoniker); + if(client == null){ + throw new InvalidShortIdException(); + } } riskEventMapper.save(params); } @@ -139,23 +149,29 @@ public class RiskBusinessServiceImpl implements RiskBusinessService { JSONObject riskEvent = riskEventMapper.findById(riskId); String clientMoniker = riskEvent.getString("client_moniker"); + JSONObject param = new JSONObject(); + param.put("risk_id", riskId); + param.put("orderby_type", "update_time"); + JSONObject riskMaterial = getRiskMaterial(param); try { String downloadFilename = clientMoniker + "_audit_materials_" + DateFormatUtils.format(new Date(), "dd/MM/yyyy HH:mm:ss").toString() + ".zip";// 文件的名称 response.setContentType("application/octet-stream"); response.setHeader("Content-Disposition", "attachment;filename=" + downloadFilename); ZipOutputStream zos = new ZipOutputStream(response.getOutputStream()); - String filePath = "https://file.royalpay.com.au/open/2018/09/20/1537438083143_tqIYPEDYPr40Y9Cyj4Ps1xgSRrDrVb.jpg"; - zos.putNextEntry(new ZipEntry(filePath.substring(filePath.lastIndexOf("/")))); - InputStream inputStream = new URL(filePath).openConnection().getInputStream(); - byte[] buffer = new byte[1024]; - int result = 0; - while ((result = inputStream.read(buffer)) != -1) { - zos.write(buffer, 0, result); + String filePath = null; + for (int i = 1; i <= 10; i++) { + filePath = riskMaterial.getString("file" + i + "_url"); + if (filePath != null) { + zos.putNextEntry(new ZipEntry(filePath.substring(filePath.lastIndexOf("/")))); + InputStream inputStream = new URL(filePath).openConnection().getInputStream(); + byte[] buffer = new byte[1024]; + int result = 0; + while ((result = inputStream.read(buffer)) != -1) { + zos.write(buffer, 0, result); + } + inputStream.close(); + } } - inputStream.close(); - zos.flush(); - zos.close(); - zos.flush(); zos.close(); } catch (IOException e) { @@ -284,6 +300,14 @@ public class RiskBusinessServiceImpl implements RiskBusinessService { return UPLOAD_MAIL_PREFIX + codeKey; } + @Override + public JSONObject getRiskMaterial(JSONObject param) { + List riskMaterialList = riskMaterialMapper.getRiskMaterial(param); + if (riskMaterialList != null && riskMaterialList.size() > 0) + return riskMaterialList.get(0); + return null; + } + private byte[] generateRiskOrders(JSONObject event) throws IOException { String[] orderIds = event.getString("order_ids").split(","); Workbook wb = new XSSFWorkbook(); diff --git a/src/main/java/au/com/royalpay/payment/manage/riskbusiness/enums/RiskOrderTypeEnum.java b/src/main/java/au/com/royalpay/payment/manage/riskbusiness/enums/RiskOrderTypeEnum.java new file mode 100644 index 000000000..c45c2358d --- /dev/null +++ b/src/main/java/au/com/royalpay/payment/manage/riskbusiness/enums/RiskOrderTypeEnum.java @@ -0,0 +1,27 @@ +package au.com.royalpay.payment.manage.riskbusiness.enums; + +/** + * @Author lvjian + * @Date 2018/10/16 20:18 + */ +public enum RiskOrderTypeEnum { + WECHAT_ORDER(1), + ALIPAY_ORDER(2), + ROYALPAY_ORDER(3), + WARNING_ORDER(4), + ALREADY_HANDLED(5); + + private Integer orderType; + + public Integer getOrderType() { + return orderType; + } + + public void setOrderType(Integer orderType) { + this.orderType = orderType; + } + + RiskOrderTypeEnum(Integer orderType) { + this.orderType = orderType; + } +} diff --git a/src/main/java/au/com/royalpay/payment/manage/riskbusiness/enums/RiskResultTypeEnum.java b/src/main/java/au/com/royalpay/payment/manage/riskbusiness/enums/RiskResultTypeEnum.java new file mode 100644 index 000000000..f26606a8c --- /dev/null +++ b/src/main/java/au/com/royalpay/payment/manage/riskbusiness/enums/RiskResultTypeEnum.java @@ -0,0 +1,29 @@ +package au.com.royalpay.payment.manage.riskbusiness.enums; + +/** + * @Author lvjian + * @Date 2018/10/16 20:40 + */ +public enum RiskResultTypeEnum { + + NOT_HANDLED(0), + SEND_EMAIL_TO_BD(1), + WAIT_FOR_AUDIT(2), + MATERIAL_AUDIT_PASS(3), + MATERIAL_NOT_PASS(4), + ALREADY_HANDLED(5); + + private Integer orderType; + + public Integer getOrderType() { + return orderType; + } + + public void setOrderType(Integer orderType) { + this.orderType = orderType; + } + + RiskResultTypeEnum(Integer orderType) { + this.orderType = orderType; + } +} 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 1614e94be..5575b5480 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 @@ -1,11 +1,15 @@ package au.com.royalpay.payment.manage.riskbusiness.web; +import au.com.royalpay.payment.manage.merchants.core.ClientManager; import au.com.royalpay.payment.manage.permission.manager.ManagerMapping; import au.com.royalpay.payment.manage.riskbusiness.bean.RiskEventQuery; import au.com.royalpay.payment.manage.riskbusiness.core.RiskBusinessService; import au.com.royalpay.payment.tools.CommonConsts; import au.com.royalpay.payment.tools.permission.enums.ManagerRole; import com.alibaba.fastjson.JSONObject; +import com.sun.org.apache.xerces.internal.impl.dv.xs.BooleanDV; +import com.sun.org.apache.xpath.internal.operations.Bool; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @@ -23,13 +27,15 @@ import java.util.List; * @Date 2018/10/10 1:12 */ @RestController -//@ManagerMapping(value = "/risk/business/", role = {ManagerRole.OPERATOR, ManagerRole.ADMIN}) -@RequestMapping(value = "/risk/business/") +@ManagerMapping(value = "/risk/business/", role = {ManagerRole.OPERATOR, ManagerRole.ADMIN}) public class RiskBusinessController { @Autowired private RiskBusinessService riskBusinessService; + @Autowired + private ClientManager clientManager; + @GetMapping(value = "events") public JSONObject getRiskEvents(RiskEventQuery riskEventQuery) { JSONObject params = riskEventQuery.toJSON(); @@ -50,6 +56,11 @@ public class RiskBusinessController { @ModelAttribute(CommonConsts.MANAGER_STATUS) JSONObject manager) { 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)) { + orderIds = orderIds.trim().replace(",", ","); + params.put("order_ids", orderIds); + } riskBusinessService.addRiskEvent(params); } @@ -74,6 +85,34 @@ public class RiskBusinessController { riskBusinessService.sendRefuseEmail(risk_id); } + @GetMapping(value = "/{risk_id}/material") + public JSONObject getRiskMaterial(@PathVariable("risk_id") String riskId) { + JSONObject param = new JSONObject(); + param.put("risk_id", riskId); + param.put("orderby_type", "update_time"); + return riskBusinessService.getRiskMaterial(param); + } + @PutMapping(value = "/channel/{channel}/permission/{channelFlag}") + public void updateMerchantChannel(@RequestBody JSONObject params, + @PathVariable("channelFlag") Boolean channelFlag, + @PathVariable("channel") String channel, + @ModelAttribute(CommonConsts.MANAGER_STATUS) JSONObject manager) { + clientManager.switchChannelPermission(manager, params.getString("client_moniker"), channel, channelFlag); + riskBusinessService.updateRiskEvent(params); + } + + @PutMapping(value = "/partner/{isValid}") + public void updateMerchantValid(@RequestBody JSONObject params, + @PathVariable("isValid") Boolean isValid, + @ModelAttribute(CommonConsts.MANAGER_STATUS) JSONObject manager) { + String clientMoniker = params.getString("client_moniker"); + if (isValid) + clientManager.disableClient(clientMoniker, manager); + else + clientManager.revertClient(clientMoniker, manager); + riskBusinessService.updateRiskEvent(params); + + } } diff --git a/src/main/resources/application-dev.properties b/src/main/resources/application-dev.properties index 91173a856..51ea1ca57 100644 --- a/src/main/resources/application-dev.properties +++ b/src/main/resources/application-dev.properties @@ -1,6 +1,6 @@ spring.datasource.driver-class-name=com.mysql.jdbc.Driver spring.datasource.schema-name=royalpay_production -spring.datasource.host=192.168.0.49:3306 +spring.datasource.host=192.168.0.111:3306 spring.datasource.url=jdbc:mysql://${spring.datasource.host}/${spring.datasource.schema-name}?useUnicode=true&characterEncoding=utf8&useSSL=false spring.datasource.username=root spring.datasource.password=root \ No newline at end of file diff --git a/src/main/resources/au/com/royalpay/payment/manage/mappers/riskbusiness/RiskEventMapper.xml b/src/main/resources/au/com/royalpay/payment/manage/mappers/riskbusiness/RiskEventMapper.xml index 6f8274362..dab194f4f 100644 --- a/src/main/resources/au/com/royalpay/payment/manage/mappers/riskbusiness/RiskEventMapper.xml +++ b/src/main/resources/au/com/royalpay/payment/manage/mappers/riskbusiness/RiskEventMapper.xml @@ -2,18 +2,62 @@ \ No newline at end of file diff --git a/src/main/resources/au/com/royalpay/payment/manage/mappers/riskbusiness/RiskMaterialMapper.xml b/src/main/resources/au/com/royalpay/payment/manage/mappers/riskbusiness/RiskMaterialMapper.xml index 5179b5180..fffa7aa0a 100644 --- a/src/main/resources/au/com/royalpay/payment/manage/mappers/riskbusiness/RiskMaterialMapper.xml +++ b/src/main/resources/au/com/royalpay/payment/manage/mappers/riskbusiness/RiskMaterialMapper.xml @@ -11,4 +11,36 @@ WHERE r.risk_id = #{risk_id} LIMIT 1 - + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/ui/static/analysis/monitoring/templates/analysis_monitoring.html b/src/main/ui/static/analysis/monitoring/templates/analysis_monitoring.html index 69b0c0df7..b5489a634 100644 --- a/src/main/ui/static/analysis/monitoring/templates/analysis_monitoring.html +++ b/src/main/ui/static/analysis/monitoring/templates/analysis_monitoring.html @@ -23,7 +23,7 @@ 风控记录|Risk Records -
  • +
  • 风控业务
  • diff --git a/src/main/ui/static/analysis/risk_business.js b/src/main/ui/static/analysis/risk_business.js index 24e7de473..f598240f4 100644 --- a/src/main/ui/static/analysis/risk_business.js +++ b/src/main/ui/static/analysis/risk_business.js @@ -18,7 +18,7 @@ define(['angular', 'jquery', 'uiRouter', './monitoring/analysis-monitoring'], "2": "BD已提交材料,等待审核", "3": "材料审核通过", "4": "材料审核不通过,已打回", - "5": "已处理()", + "5": "已处理", }; var emailStatusMap = { @@ -55,15 +55,19 @@ define(['angular', 'jquery', 'uiRouter', './monitoring/analysis-monitoring'], }]); - app.controller('riskBusinessCtrl', ['$scope', '$state', '$http', '$uibModal', 'commonDialog', - function ($scope, $state, $http, $uibModal, commonDialog) { + app.controller('riskBusinessCtrl', ['$scope', '$state', '$http', '$uibModal', '$filter', 'commonDialog', 'industryMap', + function ($scope, $state, $http, $uibModal, $filter, commonDialog, industryMap) { $scope.orderTypes = orderTypesMap; + $scope.resultTypes = resultTypesMap; + $scope.industries = industryMap.configs(); $scope.pagination = {}; $scope.params = {}; $scope.loadRiskEvents = function (page) { var params = angular.copy($scope.params); params.page = page || $scope.pagination.page || 1; + params.replyEmailDate = $filter('date')(params.replyEmailDate, 'yyyy-MM-dd'); + params.receiveEmailDate = $filter('date')(params.receiveEmailDate, 'yyyy-MM-dd'); $http.get('/risk/business/events', {params: params}).then(function (resp) { $scope.riskEvents = resp.data.data; $scope.pagination = resp.data.pagination; @@ -80,7 +84,14 @@ define(['angular', 'jquery', 'uiRouter', './monitoring/analysis-monitoring'], $scope.orderTypes = orderTypesMap; $scope.riskEvent = riskEvent.data; - + var orderChannel = 'enable_'; + if ($scope.riskEvent.order_type == 1) { + orderChannel += 'wechat'; + } else if ($scope.riskEvent.order_type == 2) { + orderChannel += 'alipay'; + } else { + orderChannel = null; + } // 编辑表格的数据保存对象,重新从源数据复制,从而取消保存操作时不会更新视图 $scope.riskEventEdit = angular.copy(riskEvent.data); @@ -92,6 +103,8 @@ define(['angular', 'jquery', 'uiRouter', './monitoring/analysis-monitoring'], // 商户信息 $scope.clientInfo = $scope.riskEvent.clientInfo; + if (orderChannel != null) + $scope.enableChannel = $scope.clientInfo[orderChannel]; // 控制编辑表格的显示 $scope.editFlag = false; @@ -100,8 +113,10 @@ define(['angular', 'jquery', 'uiRouter', './monitoring/analysis-monitoring'], // 如果是在编辑状态,需要将日期转换为date类型(前端控件需要) // 如果是在非编辑状态,需要将日期转换为yyyy-MM-dd格式 if ($scope.editFlag) { + $scope.riskEventEdit.receive_email_date = new Date($scope.riskEventEdit.receive_email_date.replace(/-/g, "/")); $scope.riskEventEdit.reply_email_date = new Date($scope.riskEventEdit.reply_email_date.replace(/-/g, "/")); } else { + $scope.riskEvent.receive_email_date = $filter('date')($scope.riskEvent.receive_email_date, 'yyyy-MM-dd'); $scope.riskEvent.reply_email_date = $filter('date')($scope.riskEvent.reply_email_date, 'yyyy-MM-dd'); } }; @@ -118,6 +133,7 @@ define(['angular', 'jquery', 'uiRouter', './monitoring/analysis-monitoring'], // 保存时需要重新将日期转换为yyyy-MM-dd格式传入后端 $scope.riskEventEdit.reply_email_date = $filter('date')($scope.riskEventEdit.reply_email_date, 'yyyy-MM-dd'); + $scope.riskEventEdit.receive_email_date = $filter('date')($scope.riskEventEdit.receive_email_date, 'yyyy-MM-dd'); $http.put('/risk/business/events', $scope.riskEventEdit).then(function (resp) { commonDialog.alert({ title: 'Success', @@ -134,14 +150,40 @@ define(['angular', 'jquery', 'uiRouter', './monitoring/analysis-monitoring'], }); }; - // 关停渠道 - $scope.updateChannel = function (orderType) { + /** + * 关停渠道 + * @param orderType 调单类型 + * @param channelFlag + * @param temporaryFlag 是否临时关闭 + + $scope.updateChannel = function (orderType, channelFlag, temporaryFlag) { + var channel; + if (orderType == "1") + channel = 'wechat'; + else if (orderType == "2") + channel = 'alipay'; + $http.put('/sys/partners/' + $scope.riskEvent.client_moniker + '/channels/' + channel + '/permission', {allow: channelFlag}).then(function () { + + $state.reload('analysis_monitoring.riskEvent_detail'); + }, function (resp) { + commonDialog.alert({ + title: 'Failed to change ' + channel + ' channel permission status', + content: resp.data.message, + type: 'error' + }) + }); + };*/ + + + $scope.updateChannel = function (orderType, channelFlag, temporaryFlag) { var channel; if (orderType == "1") channel = 'wechat'; else if (orderType == "2") channel = 'alipay'; - $http.put('/sys/partners/' + $scope.riskEvent.client_moniker + '/channels/' + channel + '/permission', {allow: $scope.clientInfo['enable_' + channel]}).then(function () { + $scope.riskEvent.temporary_close_channel = temporaryFlag; + $http.put('/risk/business/channel/' + channel + '/permission/' + channelFlag, $scope.riskEvent).then(function () { + $state.reload('analysis_monitoring.riskEvent_detail'); }, function (resp) { commonDialog.alert({ @@ -153,20 +195,13 @@ define(['angular', 'jquery', 'uiRouter', './monitoring/analysis-monitoring'], }; // 关停商户 - $scope.updateClient = function(isValid) { - if (isValid) { - $http.put('/sys/partners/' + $scope.riskEvent.client_moniker + '/revert').then(function () { - $state.reload('analysis_monitoring.riskEvent_detail'); - }, function (resp) { - commonDialog.alert({title: 'Error', content: resp.data.message, type: 'error'}); - }) - } else { - $http.delete('/sys/partners/' + $scope.riskEvent.client_moniker).then(function () { - $state.reload('analysis_monitoring.riskEvent_detail'); - }, function (resp) { - commonDialog.alert({title: 'Error', content: resp.data.message, type: 'error'}); - }) - } + $scope.updateClient = function(isValid, temporaryFlag) { + $scope.riskEvent.temporary_close_merchant = temporaryFlag; + $http.put('/risk/business/partner/' + isValid, $scope.riskEvent).then(function () { + $state.reload('analysis_monitoring.riskEvent_detail'); + }, function (resp) { + commonDialog.alert({title: 'Error', content: resp.data.message, type: 'error'}); + }) }; @@ -191,16 +226,62 @@ define(['angular', 'jquery', 'uiRouter', './monitoring/analysis-monitoring'], app.controller('auditMaterialCtrl', ['$scope', '$state', '$http', '$uibModal', '$filter', 'commonDialog', function ($scope, $state, $http, $uibModal, $filter, commonDialog) { + + // 一键下载功能 $scope.downloadAsZip = function () { var url = '/risk/business/' + $scope.riskEvent.risk_id + '/download/materialsAsZIP'; return url; }; + + // 加载提交材料 + $scope.fileObject = {}; + $scope.loadRiskMaterial = function() { + $http.get('/risk/business/' + $scope.riskEvent.risk_id + '/material').then(function(resp) { + var riskMaterial = resp.data; + for (var i = 1; i <= 10; i++) { + var key = "file" + i; + if (riskMaterial[key + '_url'] != null) + $scope.fileObject[key] = riskMaterial[key + '_url']; + } + $scope.fileLength = Object.keys($scope.fileObject).length; + }) + }; + $scope.loadRiskMaterial(); + + // 材料审核 + $scope.auditMaterial = function(auditType) { + $scope.riskEvent.result_type = auditType; + // 后面把url当做参数传递进去,删除重复的代码 + if (auditType == 3) { + $http.put('/risk/business/events', $scope.riskEvent).then(function (resp) { + $state.go('^', {}, {reload: true}); + }, function (resp) { + commonDialog.alert({ + title: 'Error', + content: resp.data.message, + type: 'error' + }); + }); + } else if (auditType == 4) { + $http.put('/risk/business/' + $scope.riskEvent.risk_id + '/refuse').then(function(resp) { + $state.go('^', {}, {reload: true}); + }, function (resp) { + commonDialog.alert({ + title: 'Error', + content: resp.data.message, + type: 'error' + }); + }); + } + + } } ]); app.controller('newRiskEventCtrl', ['$scope', '$state', '$http', '$uibModal', '$filter', 'commonDialog', function ($scope, $state, $http, $uibModal, $filter, commonDialog) { + $scope.today = new Date(); $scope.orderTypes = orderTypesMap; $scope.save = function(form) { @@ -213,11 +294,15 @@ define(['angular', 'jquery', 'uiRouter', './monitoring/analysis-monitoring'], return; } - // 默认设置邮件回复截止日期为七天后 - var replyDeadline = new Date(); + if ($scope.riskEvent.receive_email_date == null) + $scope.riskEvent.receive_email_date = new Date(); + // 默认设置邮件回复截止日期为收到邮件的七天后 + var replyDeadline = angular.copy($scope.riskEvent.receive_email_date); replyDeadline.setDate(replyDeadline.getDate() + 7); $scope.riskEvent.reply_email_date = $filter('date')(replyDeadline, 'yyyy-MM-dd'); + $scope.riskEvent.receive_email_date = $filter('date')($scope.riskEvent.receive_email_date, 'yyyy-MM-dd'); + $http.post('/risk/business/events', $scope.riskEvent).then(function (resp) { commonDialog.alert({ title: 'Success', diff --git a/src/main/ui/static/analysis/templates/audit_material.html b/src/main/ui/static/analysis/templates/audit_material.html index 028c8b6e4..58f5a2fe7 100644 --- a/src/main/ui/static/analysis/templates/audit_material.html +++ b/src/main/ui/static/analysis/templates/audit_material.html @@ -1,35 +1,31 @@ -
    +
    Audit Files     - - + 一键下载 + 通过 + + 打回 +
    -
    -
    - +
    +
    +
    - - - -
    -
    -
    -

    Example:请保证图片信息清晰可见,如下图

    - + +
    +
    -
    - check -
    -
    - - - - \ No newline at end of file +
    \ No newline at end of file diff --git a/src/main/ui/static/analysis/templates/new_riskEvent.html b/src/main/ui/static/analysis/templates/new_riskEvent.html index f5d337e82..9f665f80b 100644 --- a/src/main/ui/static/analysis/templates/new_riskEvent.html +++ b/src/main/ui/static/analysis/templates/new_riskEvent.html @@ -11,6 +11,29 @@
    + +
    + +
    +

    required field +

    +
    +
    +
    +
    + ng-if="riskEvent.order_type != 4" + ng-class="{'has-error':riskEventForm.order_ids.$invalid && riskEventForm.order_ids.$dirty}"> + for="order-ids-input">Order IDs
    - -
    + +

    required field

    @@ -64,18 +85,19 @@
    + ng-if="riskEvent.order_type == 5" + ng-class="{'has-error':riskEventForm.sub_merchant_id.$invalid && riskEventForm.sub_merchant_id.$dirty}"> + for="sub-merchant-id-input">Sub Merchant ID
    + ng-if="riskEventForm.sub_merchant_id.$dirty">

    required field

    @@ -83,6 +105,24 @@
    +
    + +
    + +
    +
    +
    + +
    + +
    + +
    +
    diff --git a/src/main/ui/static/analysis/templates/risk_business.html b/src/main/ui/static/analysis/templates/risk_business.html index a9bb884fb..3cb5d0421 100644 --- a/src/main/ui/static/analysis/templates/risk_business.html +++ b/src/main/ui/static/analysis/templates/risk_business.html @@ -4,7 +4,9 @@
    + +
    + +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    + +
    + + New Event +
    - - - New Event -
    @@ -81,7 +222,21 @@ - + + + {{riskEvent.result_type | resultType}}( + 临时关停商户 + 临时关停渠道 + ) + + + {{riskEvent.result_type | resultType}}( + 加入商户黑名单 + 加入用户黑名单 + ) + + +