From 7df4f40bd708eae69d184971be5cf279a3cbaf53 Mon Sep 17 00:00:00 2001 From: luoyang Date: Mon, 3 Jun 2019 17:07:43 +0800 Subject: [PATCH] =?UTF-8?q?add=20=E5=95=86=E6=88=B7=E5=9C=BA=E6=99=AF?= =?UTF-8?q?=E9=80=89=E6=8B=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 2 +- .../manage/dev/core/AliforexcelService.java | 2 + .../dev/core/impl/AliforexcelServiceImpl.java | 80 ++ .../manage/dev/web/TestController.java | 5 + .../manage/mappers/payment/OrderMapper.java | 2 +- .../manage/mappers/system/ClientMapper.java | 2 + .../core/impls/ClientManagerImpl.java | 5 + .../merchants/enums/paymentScenarioEnum.java | 48 + .../manage/mappers/payment/OrderMapper.xml | 6 + .../manage/mappers/system/ClientMapper.xml | 8 + .../static/commons/filters/commonFilters.js | 34 - .../static/payment/partner/partner-manage.js | 247 +++- .../partner/templates/add_partner.html | 1212 ++++++++--------- .../templates/add_sub_partner_dialog.html | 279 ++-- .../partner/templates/partner_detail.html | 212 +-- .../partner/templates/partner_edit.html | 282 ++-- 16 files changed, 1362 insertions(+), 1064 deletions(-) create mode 100644 src/main/java/au/com/royalpay/payment/manage/merchants/enums/paymentScenarioEnum.java diff --git a/pom.xml b/pom.xml index 314ed15ad..1b23f9df3 100644 --- a/pom.xml +++ b/pom.xml @@ -13,7 +13,7 @@ UTF-8 1.1.2 - 1.0.20 + 1.0.21 diff --git a/src/main/java/au/com/royalpay/payment/manage/dev/core/AliforexcelService.java b/src/main/java/au/com/royalpay/payment/manage/dev/core/AliforexcelService.java index d129c1eed..e19587901 100644 --- a/src/main/java/au/com/royalpay/payment/manage/dev/core/AliforexcelService.java +++ b/src/main/java/au/com/royalpay/payment/manage/dev/core/AliforexcelService.java @@ -16,4 +16,6 @@ public interface AliforexcelService { JSONObject registerAlipayMerchant(); JSONObject getLessPartnerInfo(); + + void initClientPayType(int begin,int end); } diff --git a/src/main/java/au/com/royalpay/payment/manage/dev/core/impl/AliforexcelServiceImpl.java b/src/main/java/au/com/royalpay/payment/manage/dev/core/impl/AliforexcelServiceImpl.java index f0c446ccf..b80021591 100644 --- a/src/main/java/au/com/royalpay/payment/manage/dev/core/impl/AliforexcelServiceImpl.java +++ b/src/main/java/au/com/royalpay/payment/manage/dev/core/impl/AliforexcelServiceImpl.java @@ -4,9 +4,12 @@ import au.com.royalpay.payment.channels.alipay.config.AlipayConfig; import au.com.royalpay.payment.channels.alipay.config.AlipayEnvironment; import au.com.royalpay.payment.channels.alipay.runtime.AlipayClient; import au.com.royalpay.payment.core.exceptions.InvalidShortIdException; +import au.com.royalpay.payment.core.mappers.PmtOrderMapper; import au.com.royalpay.payment.manage.dev.bean.AliExcel; import au.com.royalpay.payment.manage.dev.core.AliforexcelService; +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.system.ClientConfigMapper; import au.com.royalpay.payment.manage.mappers.system.ClientMapper; import au.com.royalpay.payment.tools.exceptions.BadRequestException; import au.com.royalpay.payment.tools.exceptions.ServerErrorException; @@ -26,6 +29,7 @@ import java.io.IOException; import java.io.OutputStream; import java.security.InvalidParameterException; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; @Service @@ -33,9 +37,13 @@ public class AliforexcelServiceImpl implements AliforexcelService { @Resource private ClientMapper clientMapper; @Resource + private ClientConfigMapper clientConfigMapper; + @Resource private TransactionMapper transactionMapper; @Resource private AlipayClient alipayClient; + @Resource + private OrderMapper orderMapper; @Override public JSONObject listClients(HttpServletResponse httpResponse,JSONObject manager, AliExcel query) { @@ -239,4 +247,76 @@ public class AliforexcelServiceImpl implements AliforexcelService { throw new InvalidParameterException("Alipay Industry can't be null"); } } + + + @Override + public void initClientPayType(int begin,int end) { + List merchants = clientMapper.clientPayTypeInfoByClientIdRange(begin, end); + for (JSONObject partner : merchants) { + JSONObject clientConfig = new JSONObject(); + List types = new ArrayList<>(); + List descs = new ArrayList<>(); + clientConfig.put("client_id", partner.getIntValue("client_id")); + clientConfig.put("client_moniker", partner.getString("client_moniker")); + List gateways = orderMapper.listGatewayByClientId(partner.getIntValue("client_id")); + if (gateways.size() == 0) { + unOrdersPartner(partner, clientConfig); + continue; + } + if (gateways.contains(0) || gateways.contains(1) || gateways.contains(2)) { + descs.add("6"); + } + if (gateways.contains(3) || gateways.contains(9) || gateways.contains(14)) { + descs.add("1"); + } + if (gateways.contains(4) || gateways.contains(7)) { + descs.add("4"); + } + if (gateways.contains(5) || gateways.contains(6) || gateways.contains(11)) { + descs.add("8"); + descs.add("12"); + } + if (gateways.contains(8)) { + descs.add("2"); + } + if (gateways.contains(10)) { + descs.add("3"); + } + if (gateways.contains(12)) { + descs.add("5"); + } + if (gateways.contains(13)) { + descs.add("6"); + } + if (descs.contains("1") || descs.contains("2") || descs.contains("3") || descs.contains("4") || + descs.contains("5")) { + types.add("1"); + } + if (descs.contains("6") || descs.contains("7") || descs.contains("8") || descs.contains("9") || + descs.contains("10") || descs.contains("11") || descs.contains("12") ||descs.contains("13")) { + types.add("2"); + } + clientConfig.put("client_pay_type", StringUtils.join(types, ',')); + clientConfig.put("client_pay_desc", StringUtils.join(descs, ',')); + clientConfigMapper.update(clientConfig); + } + } + + private void unOrdersPartner(JSONObject partner,JSONObject clientConfig) { + if (StringUtils.isBlank(partner.getString("client_pay_type"))) { + clientConfig.put("client_pay_type", "2"); + clientConfig.put("client_pay_desc", "6"); + } else { + String[] types = partner.getString("client_pay_type").split(","); + List descs = new ArrayList<>(); + if (Arrays.asList(types).contains("1")) { + descs.add("3"); + } + if (Arrays.asList(types).contains("2")) { + descs.add("6"); + } + clientConfig.put("client_pay_desc", StringUtils.join(descs, ',')); + } + clientConfigMapper.update(clientConfig); + } } diff --git a/src/main/java/au/com/royalpay/payment/manage/dev/web/TestController.java b/src/main/java/au/com/royalpay/payment/manage/dev/web/TestController.java index e8fd2d89f..2f2725959 100644 --- a/src/main/java/au/com/royalpay/payment/manage/dev/web/TestController.java +++ b/src/main/java/au/com/royalpay/payment/manage/dev/web/TestController.java @@ -464,4 +464,9 @@ public class TestController implements ApplicationEventPublisherAware { public JSONObject getLessPartnerInfo() { return aliforexcelService.getLessPartnerInfo(); } + + @ManagerMapping(value = "/init/client_pay_type", role = ManagerRole.DEVELOPER, method = RequestMethod.GET) + public void initClientPayType(@RequestParam int begin,@RequestParam int end) { + aliforexcelService.initClientPayType(begin,end); + } } diff --git a/src/main/java/au/com/royalpay/payment/manage/mappers/payment/OrderMapper.java b/src/main/java/au/com/royalpay/payment/manage/mappers/payment/OrderMapper.java index 3ca7e147d..88c534e0d 100644 --- a/src/main/java/au/com/royalpay/payment/manage/mappers/payment/OrderMapper.java +++ b/src/main/java/au/com/royalpay/payment/manage/mappers/payment/OrderMapper.java @@ -70,5 +70,5 @@ public interface OrderMapper { @AdvanceSelect(addonWhereClause = "status in (5,6,7) AND channel in('Wechat','Alipay')") List listNewYearOrdersByOpenId(@Param("customer_id") String open_id,@Param("transaction_date") String date); - + List listGatewayByClientId(@Param("client_id") int clientId); } diff --git a/src/main/java/au/com/royalpay/payment/manage/mappers/system/ClientMapper.java b/src/main/java/au/com/royalpay/payment/manage/mappers/system/ClientMapper.java index 28b157084..ea5068c86 100644 --- a/src/main/java/au/com/royalpay/payment/manage/mappers/system/ClientMapper.java +++ b/src/main/java/au/com/royalpay/payment/manage/mappers/system/ClientMapper.java @@ -120,4 +120,6 @@ public interface ClientMapper { List childClientId(@Param("parent_client_id") int parent_client_id); List createClientsByGroup(@Param("start_date") Date start_date,@Param("end_date") Date end_date,@Param("start_date_month") Date start_date_month); + + List clientPayTypeInfoByClientIdRange(@Param("begin") int begin, @Param("end") int end); } diff --git a/src/main/java/au/com/royalpay/payment/manage/merchants/core/impls/ClientManagerImpl.java b/src/main/java/au/com/royalpay/payment/manage/merchants/core/impls/ClientManagerImpl.java index f9ae1193a..c89858280 100644 --- a/src/main/java/au/com/royalpay/payment/manage/merchants/core/impls/ClientManagerImpl.java +++ b/src/main/java/au/com/royalpay/payment/manage/merchants/core/impls/ClientManagerImpl.java @@ -409,6 +409,11 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid String cbBankPayQrcodeUrl = PlatformEnvironment.getEnv().concatUrl("/sys/partners/" + client.getString("client_moniker") + "/cb_bankpay/link"); client.put("cbBankPayQrcodeUrl", QRCodeUtils.qrcodeImageCode(cbBankPayQrcodeUrl, 250, true)); } + //商户支付场景 + if (StringUtils.isNotBlank(client.getString("client_pay_type"))) { + client.put("client_pay_type",client.getString("client_pay_type").split(",")); + client.put("client_pay_desc",client.getString("client_pay_desc").split(",")); + } return client; } diff --git a/src/main/java/au/com/royalpay/payment/manage/merchants/enums/paymentScenarioEnum.java b/src/main/java/au/com/royalpay/payment/manage/merchants/enums/paymentScenarioEnum.java new file mode 100644 index 000000000..ad2e5269e --- /dev/null +++ b/src/main/java/au/com/royalpay/payment/manage/merchants/enums/paymentScenarioEnum.java @@ -0,0 +1,48 @@ +package au.com.royalpay.payment.manage.merchants.enums; + +/** + * @Author: luoyang + * @Date: 2019-05-29 10:30 + */ +public enum paymentScenarioEnum { + PC_WEB(1, "PC网站"), + + MOBILE_WEB(2, "手机端网站"), + + APP(3, "APP"), + + WECHAT_ALIPAY_WEB(4, "微信内、支付宝内网站"), + + MINIPROGRAM(5, "小程序"), + + QRCODE_BOARD(6, "二维码立牌"), + + ROYALPAY_POS(7,"Royalpay POS"), + + CASHIER_POS(8,"收银系统"), + + IPOS(9,"ipos"), + + POSPAL(10,"pospal"), + + AUPOS(11,"aupos"), + + OTHER(12,"other"), + + VENDING_MACHINE(13,"无人售货机"); + + private final int scenarioTypeId; + private final String desc; + + public int getScenarioTypeId() { + return scenarioTypeId; + } + + public String getDesc() { + return desc; + } + paymentScenarioEnum(int scenarioTypeId, String desc) { + this.scenarioTypeId = scenarioTypeId; + this.desc = desc; + } +} \ No newline at end of file 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 b4d1aa93a..e5f0f0017 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 @@ -846,4 +846,10 @@ and t.clearing_amount >= 1.99 ]]> + diff --git a/src/main/resources/au/com/royalpay/payment/manage/mappers/system/ClientMapper.xml b/src/main/resources/au/com/royalpay/payment/manage/mappers/system/ClientMapper.xml index de3f5474c..673aae015 100644 --- a/src/main/resources/au/com/royalpay/payment/manage/mappers/system/ClientMapper.xml +++ b/src/main/resources/au/com/royalpay/payment/manage/mappers/system/ClientMapper.xml @@ -591,4 +591,12 @@ WHERE t1.bd_type IN ( 1, 2, 6, 7 ) + + diff --git a/src/main/ui/static/commons/filters/commonFilters.js b/src/main/ui/static/commons/filters/commonFilters.js index 7106c5a49..af6d51e3e 100644 --- a/src/main/ui/static/commons/filters/commonFilters.js +++ b/src/main/ui/static/commons/filters/commonFilters.js @@ -70,17 +70,6 @@ define(['../app', 'jquery'], function (app, $) { } }); - var offlineDesc = []; - $.ajax({ - url: '/static/data/client_offline_desc.json', - method: 'GET', - async: false, - dataType: 'json', - success: function (data) { - offlineDesc = data; - - } - }); app.filter('partner_state', ['stateMap', function (stateMap) { return function (stateValue) { @@ -236,29 +225,6 @@ define(['../app', 'jquery'], function (app, $) { }]); - app.filter('partner_offline_desc', ['$http', function ($http) { - return function (industryCode) { - var industryLabel = ''; - angular.forEach(offlineDesc, function (category) { - if (category.value == industryCode) { - industryLabel = category.label; - } - angular.forEach(category.children, function (categoryChildren1) { - if (categoryChildren1.value == industryCode) { - industryLabel = categoryChildren1.label; - } - angular.forEach(categoryChildren1.children, function (categoryChildren2) { - if (categoryChildren2.value == industryCode) { - industryLabel = categoryChildren2.label; - } - }); - }); - }); - return industryLabel; - } - - }]); - app.filter('partner_sector', ['sectorMap', function (sectorMap) { return function (sectorValue) { var sectorLabel = ''; diff --git a/src/main/ui/static/payment/partner/partner-manage.js b/src/main/ui/static/payment/partner/partner-manage.js index 05d05cb5a..5b662825e 100644 --- a/src/main/ui/static/payment/partner/partner-manage.js +++ b/src/main/ui/static/payment/partner/partner-manage.js @@ -370,8 +370,52 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter } $scope.partner.company_phone_c = 61; $scope.partner.contact_phone_c = 61; + $scope.partner.client_pay_type = []; + $scope.partner.client_pay_desc = []; + var resetClientPayDescByTpey = function (type) { + type = parseInt(type); + if (type == 1) { + while (parseInt($scope.partner.client_pay_desc[0]) < 6) { + $scope.partner.client_pay_desc.splice(0, 1); + } + } + if (type == 2) { + while (parseInt($scope.partner.client_pay_desc[$scope.partner.client_pay_desc.length-1]) > 5) { + $scope.partner.client_pay_desc.splice($scope.partner.client_pay_desc.length-1, 1); + } + } + }; - + var compare = function (x, y) { + x = parseInt(x); + y = parseInt(y); + if (x < y) { + return -1; + } else if (x > y) { + return 1; + } else { + return 0; + } + } + $scope.toggleClientPayType = function (type) { + var $idx = $scope.partner.client_pay_type.indexOf(type); + if ($idx >= 0) { + $scope.partner.client_pay_type.splice($idx, 1); + resetClientPayDescByTpey(type); + } else { + $scope.partner.client_pay_type.push(type); + $scope.partner.client_pay_type.sort(compare); + } + }; + $scope.toggleClientPayDesc = function (type) { + var $idx = $scope.partner.client_pay_desc.indexOf(type); + if ($idx >= 0) { + $scope.partner.client_pay_desc.splice($idx, 1); + } else { + $scope.partner.client_pay_desc.push(type); + $scope.partner.client_pay_desc.sort(compare); + } + }; $scope.pagination = {}; $scope.industries = industryMap.configs(); $scope.states = stateMap.configs(); @@ -382,12 +426,6 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter $scope.bd_citys = angular.copy(bd_city_map); $scope.params = {textType: 'all', org_name: 'ALL'}; - - $scope.onOfflineDescSelect = function (selectedItem) { - $scope.partner.offline_label = selectedItem.label; - $scope.partner.client_offline_desc = selectedItem.value; - }; - function remove(arr, val) { if (angular.isArray(arr)) { for (var i = arr.length; i--;) { @@ -400,13 +438,6 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter return arr; } - $scope.loadOfflineDesc = function () { - $http.get('/static/data/client_offline_desc.json').then(function (resp) { - $scope.client_offline_select = resp.data; - }) - }; - $scope.loadOfflineDesc(); - var industries = angular.copy($scope.industries); $scope.industries = remove(industries, 331); @@ -538,7 +569,7 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter alert("Logo is necessary!"); return; } - if ($scope.partner.partner_type == 'photo') { + if ($scope.partner.client_pay_type.indexOf('2')>=0) { if (!$scope.partner.company_photo) { alert('Shop Photo1 is necessary'); return; @@ -557,20 +588,32 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter } }) } - // if ($scope.partner.client_pay_type =='online' || $scope.partner.client_pay_type =='all') { - // if (!$scope.partner.online_website && !$scope.partner.online_public_account && !$scope.partner.online_mini_program && !$scope.partner.online_app) { - // alert('线上支付场景至少填写一种方式'); - // return; - // } - // } - // if(!window.frames['merchant_detail'].merchant_location){ - // alert("Please Locate Merchant's Location"); - // return; - // } - if ($scope.params.client_pay_type == '') { + + if ($scope.partner.client_pay_type.length==0) { alert('请选择商户支付场景') + return; } - + if ($scope.partner.client_pay_desc.length==0) { + alert('请选择商户支付方式') + return; + } + if ($scope.partner.client_pay_type.indexOf('1') >= 0 && $scope.partner.client_pay_type.indexOf('2') >= 0) { + var fristDesc = $scope.partner.client_pay_desc[0]; + var lastDesc = $scope.partner.client_pay_desc[($scope.partner.client_pay_desc.length - 1)]; + if (parseInt(fristDesc) > 5 || parseInt(lastDesc) < 6) { + alert("请检查线上/线下支付场景是否已选择支付方式") + return; + } + } + if ($scope.partner.client_pay_desc.indexOf('8') >= 0) { + var lastDesc = $scope.partner.client_pay_desc[($scope.partner.client_pay_desc.length - 1)]; + if (parseInt(lastDesc) < 10) { + alert("请检查线下支付是否已选择收银系统类型") + return; + } + } + $scope.partner.client_pay_type = $scope.partner.client_pay_type.join(','); + $scope.partner.client_pay_desc = $scope.partner.client_pay_desc.join(','); $http.post('/sys/partners', $scope.partner).then(function (resp) { commonDialog.alert({title: 'Success', content: 'Register new partner successfully', type: 'success'}); $scope.updateMerchantLocation(); @@ -1130,18 +1173,48 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter $scope.timezones = timezone.configs(); $scope.partner = partner.data; var origin_referrer_id = angular.copy($scope.partner.referrer_id); - $scope.partner.partner_type = $scope.partner.website ? 'website' : 'photo'; - - $scope.loadOfflineDesc = function () { - $http.get('/static/data/client_offline_desc.json').then(function (resp) { - $scope.client_offline_select = resp.data; - }) + var resetClientPayDescByTpey = function (type) { + type = parseInt(type); + if (type == 1) { + while (parseInt($scope.partner.client_pay_desc[0]) < 6) { + $scope.partner.client_pay_desc.splice(0, 1); + } + } + if (type == 2) { + while (parseInt($scope.partner.client_pay_desc[$scope.partner.client_pay_desc.length-1]) > 5) { + $scope.partner.client_pay_desc.splice($scope.partner.client_pay_desc.length-1, 1); + } + } }; - $scope.loadOfflineDesc(); - - $scope.onOfflineDescSelect = function (selectedItem) { - $scope.partner.offline_label = selectedItem.label; - $scope.partner.client_offline_desc = selectedItem.value; + var compare = function (x, y) { + x = parseInt(x); + y = parseInt(y); + if (x < y) { + return -1; + } else if (x > y) { + return 1; + } else { + return 0; + } + } + $scope.toggleClientPayType = function (type) { + var $idx = $scope.partner.client_pay_type.indexOf(type); + if ($idx >= 0) { + $scope.partner.client_pay_type.splice($idx, 1); + resetClientPayDescByTpey(type); + } else { + $scope.partner.client_pay_type.push(type); + $scope.partner.client_pay_type.sort(compare); + } + }; + $scope.toggleClientPayDesc = function (type) { + var $idx = $scope.partner.client_pay_desc.indexOf(type); + if ($idx >= 0) { + $scope.partner.client_pay_desc.splice($idx, 1); + } else { + $scope.partner.client_pay_desc.push(type); + $scope.partner.client_pay_desc.sort(compare); + } }; $scope.listReferrers = function () { @@ -1239,7 +1312,7 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter alert('suburb can not contain two and more continuous space characters'); return; } - if ($scope.partner.partner_type == 'photo') { + if ($scope.partner.client_pay_type.indexOf('2') >= 0) { if (!$scope.partner.company_photo) { alert('Shop Photo1 is necessary'); return; @@ -1277,9 +1350,31 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter // alert("Please Locate Merchant Location!"); // return; // } - if ($scope.params.client_pay_type == '') { + if ($scope.partner.client_pay_type.length == 0) { alert('请选择商户支付场景') + return; + } + if ($scope.partner.client_pay_desc.length == 0) { + alert('请选择商户支付方式') + return; } + if ($scope.partner.client_pay_type.indexOf('1') >= 0 && $scope.partner.client_pay_type.indexOf('2') >= 0) { + var fristDesc = $scope.partner.client_pay_desc[0]; + var lastDesc = $scope.partner.client_pay_desc[($scope.partner.client_pay_desc.length - 1)]; + if (parseInt(fristDesc) > 5 || parseInt(lastDesc) < 6) { + alert("请检查线上/线下支付场景是否已选择支付方式") + return; + } + } + if ($scope.partner.client_pay_desc.indexOf('8') >= 0) { + var lastDesc = $scope.partner.client_pay_desc[($scope.partner.client_pay_desc.length - 1)]; + if (parseInt(lastDesc) < 10) { + alert("请检查线下支付是否已选择收银系统类型") + return; + } + } + $scope.partner.client_pay_type = $scope.partner.client_pay_type.join(','); + $scope.partner.client_pay_desc = $scope.partner.client_pay_desc.join(','); $http.put('/sys/partners/' + $scope.partner.client_moniker, $scope.partner).then(function () { if (content != '') { commonDialog.alert({ @@ -2624,6 +2719,52 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter } $scope.partner.company_phone_c = 61; $scope.partner.contact_phone_c = 61; + $scope.partner.client_pay_type = []; + $scope.partner.client_pay_desc = []; + var resetClientPayDescByTpey = function (type) { + type = parseInt(type); + if (type == 1) { + while (parseInt($scope.partner.client_pay_desc[0]) < 6) { + $scope.partner.client_pay_desc.splice(0, 1); + } + } + if (type == 2) { + while (parseInt($scope.partner.client_pay_desc[$scope.partner.client_pay_desc.length-1]) > 5) { + $scope.partner.client_pay_desc.splice($scope.partner.client_pay_desc.length-1, 1); + } + } + }; + + var compare = function (x, y) { + x = parseInt(x); + y = parseInt(y); + if (x < y) { + return -1; + } else if (x > y) { + return 1; + } else { + return 0; + } + } + $scope.toggleClientPayType = function (type) { + var $idx = $scope.partner.client_pay_type.indexOf(type); + if ($idx >= 0) { + $scope.partner.client_pay_type.splice($idx, 1); + resetClientPayDescByTpey(type); + } else { + $scope.partner.client_pay_type.push(type); + $scope.partner.client_pay_type.sort(compare); + } + }; + $scope.toggleClientPayDesc = function (type) { + var $idx = $scope.partner.client_pay_desc.indexOf(type); + if ($idx >= 0) { + $scope.partner.client_pay_desc.splice($idx, 1); + } else { + $scope.partner.client_pay_desc.push(type); + $scope.partner.client_pay_desc.sort(compare); + } + }; $scope.business_structures = businessStructuresMap.configs(); $scope.industries = industryMap.configs(); @@ -2762,7 +2903,7 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter alert("Logo is necessary!"); return; } - if ($scope.partner.partner_type == 'photo') { + if ($scope.partner.client_pay_type.indexOf('2')>=0) { if (!$scope.partner.company_photo) { alert('Shop Photo1 is necessary'); return; @@ -2776,9 +2917,31 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter // alert("Please Locate Merchant Location!"); // return; // } - if ($scope.partner.client_pay_type == '') { + if ($scope.partner.client_pay_type.length==0) { alert('请选择商户支付场景') + return; + } + if ($scope.partner.client_pay_desc.length==0) { + alert('请选择商户支付方式') + return; + } + if ($scope.partner.client_pay_type.indexOf('1') >= 0 && $scope.partner.client_pay_type.indexOf('2') >= 0) { + var fristDesc = $scope.partner.client_pay_desc[0]; + var lastDesc = $scope.partner.client_pay_desc[($scope.partner.client_pay_desc.length - 1)]; + if (parseInt(fristDesc) > 5 || parseInt(lastDesc) < 6) { + alert("请检查线上/线下支付场景是否已选择支付方式") + return; + } + } + if ($scope.partner.client_pay_desc.indexOf('8') >= 0) { + var lastDesc = $scope.partner.client_pay_desc[($scope.partner.client_pay_desc.length - 1)]; + if (parseInt(lastDesc) < 10) { + alert("请检查线下支付是否已选择收银系统类型") + return; + } } + $scope.partner.client_pay_type = $scope.partner.client_pay_type.join(','); + $scope.partner.client_pay_desc = $scope.partner.client_pay_desc.join(','); $http.post('/sys/partners/' + clientMoniker + '/sub_clients', $scope.partner).then(function () { $scope.updateMerchantLocation(); $scope.$close(); diff --git a/src/main/ui/static/payment/partner/templates/add_partner.html b/src/main/ui/static/payment/partner/templates/add_partner.html index d720b9170..dd3b64b72 100644 --- a/src/main/ui/static/payment/partner/templates/add_partner.html +++ b/src/main/ui/static/payment/partner/templates/add_partner.html @@ -3,6 +3,12 @@ max-height: 100px; margin-left: 20px; } + .btn btn-default:active{ + position: relative; + top: 1px; + box-shadow: inset 0 3px 5px 0 rgba(0,0,0, 0.2); + outline: 0; + }

New Partner

@@ -221,77 +227,6 @@ -
- -
- -

If the partner is a offline shop then - a photo of shop is - required while an online store shall choose - companyWebsite

-

- 只要有可能产生线下交易(商户静态码、POS),就必须上传照片,否则支付宝会禁止交易

-
-

Required - Field

-
-
-
-
- -
-
1:  - -
- - -
-
-
2:  - -
- - -
-
- -
- -
- -
-

Required - Field

-

Less - Than 200 - Characters(including symbols and spaces)

-
-
-