diff --git a/src/main/java/au/com/royalpay/payment/manage/analysis/core/impls/PartnersAnalysisServiceImpl.java b/src/main/java/au/com/royalpay/payment/manage/analysis/core/impls/PartnersAnalysisServiceImpl.java index f4c75d4dc..5d5ab581a 100644 --- a/src/main/java/au/com/royalpay/payment/manage/analysis/core/impls/PartnersAnalysisServiceImpl.java +++ b/src/main/java/au/com/royalpay/payment/manage/analysis/core/impls/PartnersAnalysisServiceImpl.java @@ -5,6 +5,7 @@ import java.util.List; import javax.annotation.Resource; +import au.com.royalpay.payment.manage.analysis.mappers.CustomerAndOrdersStatisticsMapper; import org.springframework.stereotype.Service; import org.springframework.util.StringUtils; @@ -23,6 +24,9 @@ public class PartnersAnalysisServiceImpl implements PartnersAnalysisService { @Resource private ClientAnalysisMapper clientAnalysisMapper; + @Resource + private CustomerAndOrdersStatisticsMapper customerAndOrdersStatisticsMapper; + @Override public List getNewPartnersAnalysis(JSONObject params) { return clientAnalysisMapper.countNewClientsHistory(params); @@ -30,7 +34,7 @@ public class PartnersAnalysisServiceImpl implements PartnersAnalysisService { @Override public List getTradePartnersAnalysis(JSONObject params){ - return clientAnalysisMapper.countTradePartnersHistory(params); + return customerAndOrdersStatisticsMapper.countTradedClientsByDate(params); } @Override diff --git a/src/main/java/au/com/royalpay/payment/manage/analysis/mappers/CustomerAndOrdersStatisticsMapper.java b/src/main/java/au/com/royalpay/payment/manage/analysis/mappers/CustomerAndOrdersStatisticsMapper.java index fb62cd83a..c8e14fa42 100644 --- a/src/main/java/au/com/royalpay/payment/manage/analysis/mappers/CustomerAndOrdersStatisticsMapper.java +++ b/src/main/java/au/com/royalpay/payment/manage/analysis/mappers/CustomerAndOrdersStatisticsMapper.java @@ -51,4 +51,6 @@ public interface CustomerAndOrdersStatisticsMapper { JSONObject getCommonCount(JSONObject params); PageList getAreaMerchantTradeAnalysis(JSONObject params, PageBounds pageBounds); + + List countTradedClientsByDate(JSONObject parasm); } diff --git a/src/main/java/au/com/royalpay/payment/manage/merchants/web/PartnerViewController.java b/src/main/java/au/com/royalpay/payment/manage/merchants/web/PartnerViewController.java index e1eb68b66..6ca899497 100644 --- a/src/main/java/au/com/royalpay/payment/manage/merchants/web/PartnerViewController.java +++ b/src/main/java/au/com/royalpay/payment/manage/merchants/web/PartnerViewController.java @@ -404,11 +404,12 @@ public class PartnerViewController { clientManager.sendVerifyEmail(account.getJSONObject("client"),account.getString("account_id")); } - @PartnerMapping(value = "/update/partnerInfo", method = RequestMethod.PUT) + @PartnerMapping(value = "/update/partnerInfo", method = RequestMethod.PUT,roles = PartnerRole.ADMIN) @ResponseBody public void updatePartnerInfo(@ModelAttribute(CommonConsts.PARTNER_STATUS) JSONObject account,@RequestBody ClientRegisterInfo info) { JSONObject client = account.getJSONObject("client"); - if (client.getIntValue("approve_result") != 1 && client.getIntValue("source") == 4){ + + if (client.getIntValue("approve_result") != 1){ clientManager.updateClientRegisterInfo(null,account.getString("client_moniker"),info); }else { throw new BadRequestException("已通过审核,暂不能提交和修改"); diff --git a/src/main/resources/au/com/royalpay/payment/manage/analysis/mappers/CustomerAndOrdersStatisticsMapper.xml b/src/main/resources/au/com/royalpay/payment/manage/analysis/mappers/CustomerAndOrdersStatisticsMapper.xml index a5de13b7f..da8477938 100644 --- a/src/main/resources/au/com/royalpay/payment/manage/analysis/mappers/CustomerAndOrdersStatisticsMapper.xml +++ b/src/main/resources/au/com/royalpay/payment/manage/analysis/mappers/CustomerAndOrdersStatisticsMapper.xml @@ -383,4 +383,36 @@ GROUP BY s.client_id ORDER BY total DESC + + + \ No newline at end of file diff --git a/src/main/ui/static/payment/partner/partner.js b/src/main/ui/static/payment/partner/partner.js index e4fe52ed7..47932a3e3 100644 --- a/src/main/ui/static/payment/partner/partner.js +++ b/src/main/ui/static/payment/partner/partner.js @@ -15,6 +15,15 @@ define(['angular', 'decimal', 'uiRouter', 'ngBootSwitch', 'ngFileUpload'], funct return $http.get('/client/partner_info'); }] } + }).state('edit', { + url: '/edit', + templateUrl: '/static/payment/partner/templates/client_partner_edit.html', + controller: 'clientPartnerEditCtrl', + resolve: { + partner: ['$http', function ($http) { + return $http.get('/client/partner_info'); + }] + } }).state('basic.payment_info', { url: '/payment', templateUrl: '/static/payment/partner/templates/client_payment_info.html', @@ -207,6 +216,112 @@ define(['angular', 'decimal', 'uiRouter', 'ngBootSwitch', 'ngFileUpload'], funct }); } }]); + app.controller('clientPartnerEditCtrl', ['$scope', '$http', 'commonDialog','stateMap','countryMap','partner','$state','Upload',function ($scope, $http, commonDialog,stateMap,countryMap,partner,$state,Upload) { + $scope.partner = partner.data; + $scope.states = stateMap.configs(); + $scope.countries = countryMap.configs(); + + $scope.uploadLogo = function (file) { + if (file != null) { + $scope.logoProgress = {value: 0}; + Upload.upload({ + url: '/attachment/files', + data: {file: file} + }).then(function (resp) { + delete $scope.logoProgress; + $scope.partner.logo_id = resp.data.fileid; + $scope.partner.logo_url = resp.data.url; + }, function (resp) { + delete $scope.logoProgress; + commonDialog.alert({title: 'Upload Failed', content: resp.data.message, type: 'error'}) + }, function (evt) { + $scope.logoProgress.value = parseInt(100 * evt.loaded / evt.total); + }) + } + }; + + $scope.uploadShopPhoto = function (file) { + if (file != null) { + $scope.shopPhotoProgress = {value: 0}; + Upload.upload({ + url: '/attachment/files', + data: {file: file} + }).then(function (resp) { + delete $scope.shopPhotoProgress; + $scope.partner.company_photo = resp.data.url; + }, function (resp) { + delete $scope.shopPhotoProgress; + commonDialog.alert({title: 'Upload Failed', content: resp.data.message, type: 'error'}) + }, function (evt) { + $scope.shopPhotoProgress.value = parseInt(100 * evt.loaded / evt.total); + }) + } + }; + + $scope.uploadStorePhoto = function (file) { + if (file != null) { + $scope.storePhotoProgress = {value: 0}; + Upload.upload({ + url: '/attachment/files', + data: {file: file} + }).then(function (resp) { + delete $scope.storePhotoProgress; + $scope.partner.store_photo = resp.data.url; + }, function (resp) { + delete $scope.storePhotoProgress; + commonDialog.alert({title: 'Upload Failed', content: resp.data.message, type: 'error'}) + }, function (evt) { + $scope.storePhotoProgress.value = parseInt(100 * evt.loaded / evt.total); + }) + } + }; + + $scope.updatePartner = function (form) { + if (form.$invalid) { + angular.forEach(form, function (item, key) { + if (key.indexOf('$') < 0) { + item.$dirty = true; + } + }); + return; + } + if (!$scope.partner.logo_url) { + alert("Logo is necessary!"); + return; + } + if($scope.partner.partner_type == 'photo'){ + if (!$scope.partner.company_photo) { + alert('Shop Photo1 is necessary'); + return; + } + if (!$scope.partner.store_photo) { + alert('Shop Photo2 is necessary'); + return; + } + } + + var content = ''; + $http.put('/client/partner_info/update/partnerInfo', $scope.partner).then(function () { + if (content != '') { + commonDialog.alert({ + title: 'Warning', + content: content, + type: 'error' + }); + } else { + commonDialog.alert({ + title: 'Success', + content: 'Update partner information successfully', + type: 'success' + }); + } + $state.go('basic', {reload: true}); + }, function (resp) { + commonDialog.alert({title: 'Error', content: resp.data.message, type: 'error'}) + }); + }; + + }]); app.controller('clientComplianceFilesCtrl', ['$scope', '$http', '$rootScope', 'commonDialog', '$state', 'Upload', 'file', function ($scope, $http, $rootScope, commonDialog, $state, Upload, file) { $scope.file = file.data || {}; diff --git a/src/main/ui/static/payment/partner/templates/client_partner_detail.html b/src/main/ui/static/payment/partner/templates/client_partner_detail.html index 9eb3a8814..ef00c50bd 100644 --- a/src/main/ui/static/payment/partner/templates/client_partner_detail.html +++ b/src/main/ui/static/payment/partner/templates/client_partner_detail.html @@ -48,6 +48,9 @@
Partner Basic Information + + Edit +
@@ -173,6 +176,41 @@
+
+
Alipay Information   (Optional)
+
+
+
+ +
+

+
+
+
+ +
+

+
+
+
+ +
+

+
+
+
+ +
+

+
+
+
+
+
Partner Contact Information
diff --git a/src/main/ui/static/payment/partner/templates/client_partner_edit.html b/src/main/ui/static/payment/partner/templates/client_partner_edit.html new file mode 100644 index 000000000..aa1c5e37e --- /dev/null +++ b/src/main/ui/static/payment/partner/templates/client_partner_edit.html @@ -0,0 +1,355 @@ + +
+

+ +
+ +
+
+
+
+
+
Partner Basic Information
+
+
+
+ +
+

+
+
+
+ +
+

+
+
+
+ +
+

+
+
+
+ +
+

+
+
+
+ +
+

+
+
+
+ +
+
+ +
+ + +
+
+
+ +
+

+
+
+
+ +
+

+
+
+
+ +
+ +

If the partner is a offline shop then a photo of shop is + required while an online store shall choose company website

+

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

+
+

Required Field

+
+
+
+
+ +
+
1:  + +
+ + +
+
+
2:  + +
+ + +
+
+
+ +
+ +
+

Required Field

+

Less Than 200 + Characters(including symbols and spaces)

+
+
+
+
+ +
+ +
+

Required Field

+

Less Than 20 Characters

+
+
+
+
+ +
+ +
+

Less Than 200 + Characters(including symbols and spaces)

+
+
+
+ +
+ +
+ +
+

Less Than 200 + Characters(including symbols and spaces)

+
+
+
+
+
+
+ +
+
Alipay Information   (Optional)
+
+
+
+ +
+ +

+ eg:Monday-Friday 09:00-20:00,Saturday-Sunday 10:00-22:00

+
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +

eg:https://www.baidu.com

+
+
+
+
+
+ +
+
Contact Information
+
+
+
+ +
+ +
+

Required Field

+

Less Than 50 + Characters(including symbols and spaces)

+
+
+
+
+ +
+ +
+
+

Required Field

+

Less Than 20 + Characters(including symbols and spaces)

+
+
+
+ +
+ +
+
+

Required Field

+

Less Than 50 + Characters(including symbols and spaces)

+
+
+
+
+
+ + +
+
Address Information
+
+
+
+ +
+ +
+

Less Than 200 + Characters(including symbols and spaces)

+
+
+
+
+ +
+ +
+

Less Than 50 + Characters(including symbols and spaces)

+
+
+
+
+ +
+ +
+

Less Than 10 + Characters(including symbols and spaces)

+
+
+
+
+ +
+ +
+

Required Field

+
+
+
+
+ +
+ +
+

Less Than 20 + Characters(including symbols and spaces)

+

Required Field

+
+
+
+
+
+
+ +
+ + Back +
+
+
+
+
\ No newline at end of file