getExtra(JpushMessage message){
+ Map map = message.getParams();
+ return map;
+ }
+}
diff --git a/src/main/java/au/com/royalpay/payment/manage/pushMessage/bean/JpushMessage.java b/src/main/java/au/com/royalpay/payment/manage/pushMessage/bean/JpushMessage.java
new file mode 100644
index 000000000..b74e8a993
--- /dev/null
+++ b/src/main/java/au/com/royalpay/payment/manage/pushMessage/bean/JpushMessage.java
@@ -0,0 +1,44 @@
+package au.com.royalpay.payment.manage.pushMessage.bean;
+
+import com.alibaba.fastjson.JSONObject;
+
+public class JpushMessage implements java.io.Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 消息标题
+ */
+ private String title;
+
+ /**
+ * 消息内容
+ */
+ private String text;
+
+ private JSONObject params;
+
+ public String getTitle() {
+ return title;
+ }
+
+ public void setTitle(String title) {
+ this.title = title;
+ }
+
+ public String getText() {
+ return text;
+ }
+
+ public void setText(String text) {
+ this.text = text;
+ }
+
+ public JSONObject getParams() {
+ return params;
+ }
+
+ public void setParams(JSONObject params) {
+ this.params = params;
+ }
+}
From 633a128c81a259d6e4a7fff7e85b2543d6d2e18e Mon Sep 17 00:00:00 2001
From: yuan <1551130722@qq.com>
Date: Wed, 3 Jan 2018 18:58:48 +0800
Subject: [PATCH 02/31] fix~
---
.../manage/mappers/customers/CustomerMembershipMapper.xml | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/main/resources/au/com/royalpay/payment/manage/mappers/customers/CustomerMembershipMapper.xml b/src/main/resources/au/com/royalpay/payment/manage/mappers/customers/CustomerMembershipMapper.xml
index 28127795d..387f73791 100644
--- a/src/main/resources/au/com/royalpay/payment/manage/mappers/customers/CustomerMembershipMapper.xml
+++ b/src/main/resources/au/com/royalpay/payment/manage/mappers/customers/CustomerMembershipMapper.xml
@@ -52,8 +52,8 @@
\ No newline at end of file
From b7abc5b78fc49a677bdf8bb7785a06525775bfab Mon Sep 17 00:00:00 2001
From: yuan <1551130722@qq.com>
Date: Thu, 4 Jan 2018 15:03:51 +0800
Subject: [PATCH 03/31] =?UTF-8?q?=E5=95=86=E6=88=B7=E8=AF=A6=E6=83=85?=
=?UTF-8?q?=E9=87=8C=E5=A2=9E=E5=8A=A0Local=20Merchant=E6=8C=89=E9=92=AE?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/db/modify.sql | 5 ++++-
.../web/PartnerManageController.java | 5 +++++
.../static/payment/partner/partner-manage.js | 20 ++++++++++++++++++-
.../partner/templates/partner_detail.html | 7 +++++++
4 files changed, 35 insertions(+), 2 deletions(-)
diff --git a/src/db/modify.sql b/src/db/modify.sql
index 246464dcc..3d0650c51 100644
--- a/src/db/modify.sql
+++ b/src/db/modify.sql
@@ -106,7 +106,7 @@ ALTER TABLE `sys_accounts`
MODIFY COLUMN `creator` varchar(50) NOT NULL COMMENT '开户者';
ALTER TABLE `sys_clients_audit_process`
- MODIFY COLUMN `operator_id` varchar(50) NOT NULL ;
+ MODIFY COLUMN `operator_id` tinyint(1) NOT NULL ;
ALTER TABLE `pmt_refunds`
MODIFY COLUMN `operator_id` varchar(50) DEFAULT NULL COMMENT '退款操作者账号';
@@ -117,5 +117,8 @@ ALTER TABLE `sys_clients_apply`
ALTER TABLE `cashback_draw_deposits`
MODIFY COLUMN `operator_id` varchar(50) NOT NULL ;
+ ALTER TABLE `sys_clients`
+ ADD COLUMN `local_merchant` tinyint(1) DEFAULT 0;
+
diff --git a/src/main/java/au/com/royalpay/payment/manage/merchants/web/PartnerManageController.java b/src/main/java/au/com/royalpay/payment/manage/merchants/web/PartnerManageController.java
index 35d9091c2..f9d090a2c 100644
--- a/src/main/java/au/com/royalpay/payment/manage/merchants/web/PartnerManageController.java
+++ b/src/main/java/au/com/royalpay/payment/manage/merchants/web/PartnerManageController.java
@@ -477,4 +477,9 @@ public class PartnerManageController {
public void wechatCcompliancePermission(@PathVariable String clientMoniker, @RequestBody JSONObject pass, @ModelAttribute(CommonConsts.MANAGER_STATUS) JSONObject manager) {
clientManager.switchPermission(manager, clientMoniker, "wechat_compliance", pass.getBooleanValue("allow"));
}
+
+ @ManagerMapping(value = "/{clientMoniker}/local_merchant_permission",method = RequestMethod.PUT,role = {ManagerRole.OPERATOR,ManagerRole.ADMIN})
+ public void localMerchantPermission(@PathVariable String clientMoniker, @RequestBody JSONObject pass, @ModelAttribute(CommonConsts.MANAGER_STATUS) JSONObject manager) {
+ clientManager.switchPermission(manager, clientMoniker, "local_merchant", pass.getBooleanValue("allow"));
+ }
}
diff --git a/src/main/ui/static/payment/partner/partner-manage.js b/src/main/ui/static/payment/partner/partner-manage.js
index 9324a9fd7..2d8a28884 100644
--- a/src/main/ui/static/payment/partner/partner-manage.js
+++ b/src/main/ui/static/payment/partner/partner-manage.js
@@ -378,7 +378,7 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter
}
}]);
app.controller('partnerDetailCtrl', ['$scope', '$http', '$state', '$uibModal', '$rootScope', 'Upload', 'commonDialog', 'partner', function ($scope, $http, $state, $uibModal, $rootScope, Upload, commonDialog, partner) {
- $scope.init = {wechatcompliance: false};
+ $scope.init = {wechat_compliance: false,local_merchant:false};
$scope.partner = partner.data;
$scope.showDBUsers = function () {
$http.get('/sys/partners/' + $scope.partner.client_moniker + '/bd_user').then(function (resp) {
@@ -730,6 +730,24 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter
})
})
};
+ $scope.changeLocalMerchant = function () {
+ if (!$scope.partner) {
+ return;
+ }
+ if (!$scope.init.local_merchant) {
+ $scope.init.local_merchant = true;
+ return;
+ }
+ $http.put('/sys/partners/' + $scope.partner.client_moniker + '/local_merchant_permission', {allow: $scope.partner.local_merchant}).then(function () {
+
+ }, function (resp) {
+ commonDialog.alert({
+ title: 'failed to change local_merchant permission status',
+ content: resp.data.message,
+ type: 'error'
+ })
+ })
+ };
}]);
app.controller('partnerEditCtrl', ['$scope', '$http', '$state', 'Upload', 'commonDialog', 'timezone', 'partner',
function ($scope, $http, $state, Upload, commonDialog, timezone, partner) {
diff --git a/src/main/ui/static/payment/partner/templates/partner_detail.html b/src/main/ui/static/payment/partner/templates/partner_detail.html
index 05bd827ee..bf258e9aa 100644
--- a/src/main/ui/static/payment/partner/templates/partner_detail.html
+++ b/src/main/ui/static/payment/partner/templates/partner_detail.html
@@ -357,6 +357,13 @@
+
From e4c8f7de62a4d9bc6b5105840e679565b0f5a3a2 Mon Sep 17 00:00:00 2001
From: wangning <164851225@qq.com>
Date: Fri, 5 Jan 2018 13:37:42 +0800
Subject: [PATCH 04/31] update
---
.../manage/pushMessage/JpushMessageHelper.java | 11 ++++-------
1 file changed, 4 insertions(+), 7 deletions(-)
diff --git a/src/main/java/au/com/royalpay/payment/manage/pushMessage/JpushMessageHelper.java b/src/main/java/au/com/royalpay/payment/manage/pushMessage/JpushMessageHelper.java
index d27d4e998..d31cb2869 100644
--- a/src/main/java/au/com/royalpay/payment/manage/pushMessage/JpushMessageHelper.java
+++ b/src/main/java/au/com/royalpay/payment/manage/pushMessage/JpushMessageHelper.java
@@ -15,7 +15,6 @@ import cn.jpush.api.push.model.Platform;
import cn.jpush.api.push.model.PushPayload;
import cn.jpush.api.push.model.audience.Audience;
import cn.jpush.api.push.model.notification.AndroidNotification;
-import cn.jpush.api.push.model.notification.IosNotification;
import cn.jpush.api.push.model.notification.Notification;
/**
@@ -36,22 +35,20 @@ public class JpushMessageHelper {
return client;
}
- public PushPayload makeSinglePayload(Set clientIds, JpushMessage pushMessage) {
+ public PushPayload generateSinglePayload(Set alias, JpushMessage pushMessage) {
Notification notify = getNotify(pushMessage);
return PushPayload.newBuilder()
- .setPlatform(Platform.android_ios())
- .setAudience(Audience.registrationId(clientIds))
+ .setPlatform(Platform.android())
+ .setAudience(Audience.alias(alias))
.setNotification(notify)
// 设置离线时长
- .setOptions(
- Options.newBuilder().setTimeToLive(600).build()).build();
+ .setOptions(Options.newBuilder().setTimeToLive(60*60*4).build()).build();
}
private Notification getNotify(JpushMessage pushMessage) {
String alert = getText(pushMessage);
return Notification
.newBuilder()
- .addPlatformNotification(IosNotification.newBuilder().setAlert(alert).setSound("default").addExtras(getExtra(pushMessage)).build())
.addPlatformNotification(AndroidNotification.newBuilder().setTitle(pushMessage.getTitle()).setAlert(alert).addExtras(getExtra(pushMessage)).build()).build();
}
From 0327de0101ec1fa743a62e62950c3d337a744746 Mon Sep 17 00:00:00 2001
From: wangning <164851225@qq.com>
Date: Fri, 5 Jan 2018 15:51:49 +0800
Subject: [PATCH 05/31] tmp
---
.../core/impls/RetailAppServiceImp.java | 133 ++++++++++++------
.../pushMessage/JpushMessageHelper.java | 44 +++---
.../system/ClientDeviceTokenMapper.xml | 25 +++-
3 files changed, 144 insertions(+), 58 deletions(-)
diff --git a/src/main/java/au/com/royalpay/payment/manage/appclient/core/impls/RetailAppServiceImp.java b/src/main/java/au/com/royalpay/payment/manage/appclient/core/impls/RetailAppServiceImp.java
index 219893af7..785c3f000 100644
--- a/src/main/java/au/com/royalpay/payment/manage/appclient/core/impls/RetailAppServiceImp.java
+++ b/src/main/java/au/com/royalpay/payment/manage/appclient/core/impls/RetailAppServiceImp.java
@@ -1,5 +1,39 @@
package au.com.royalpay.payment.manage.appclient.core.impls;
+import java.math.BigDecimal;
+import java.text.DateFormat;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.Collections;
+import java.util.Date;
+import java.util.List;
+import java.util.TimeZone;
+import java.util.concurrent.LinkedBlockingQueue;
+import java.util.concurrent.ThreadPoolExecutor;
+import java.util.concurrent.TimeUnit;
+
+import javax.annotation.Resource;
+
+import org.apache.commons.lang3.RandomUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.lang3.time.DateFormatUtils;
+import org.apache.commons.lang3.time.DateUtils;
+import org.jsoup.Jsoup;
+import org.jsoup.nodes.Document;
+import org.slf4j.LoggerFactory;
+import org.springframework.cache.annotation.Cacheable;
+import org.springframework.stereotype.Service;
+import org.springframework.util.Assert;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.github.miemiedev.mybatis.paginator.domain.Order;
+import com.github.miemiedev.mybatis.paginator.domain.PageBounds;
+import com.github.miemiedev.mybatis.paginator.domain.PageList;
+
import au.com.royalpay.payment.core.PaymentApi;
import au.com.royalpay.payment.manage.analysis.mappers.CustomerAndOrdersStatisticsMapper;
import au.com.royalpay.payment.manage.analysis.mappers.TransactionAnalysisMapper;
@@ -14,12 +48,18 @@ import au.com.royalpay.payment.manage.mappers.log.ClearingDetailAnalysisMapper;
import au.com.royalpay.payment.manage.mappers.log.ClearingDetailMapper;
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.*;
+import au.com.royalpay.payment.manage.mappers.system.ClientAccountMapper;
+import au.com.royalpay.payment.manage.mappers.system.ClientDeviceTokenMapper;
+import au.com.royalpay.payment.manage.mappers.system.ClientSettleDelayConfMapper;
+import au.com.royalpay.payment.manage.mappers.system.CustomerMapper;
+import au.com.royalpay.payment.manage.mappers.system.CustomerRelationAlipayMapper;
import au.com.royalpay.payment.manage.merchants.core.ClientManager;
import au.com.royalpay.payment.manage.notice.beans.NoticeInfo;
import au.com.royalpay.payment.manage.notice.core.NoticeManage;
import au.com.royalpay.payment.manage.notice.core.NoticePartner;
import au.com.royalpay.payment.manage.pushMessage.APNSMessageHelper;
+import au.com.royalpay.payment.manage.pushMessage.JpushMessageHelper;
+import au.com.royalpay.payment.manage.pushMessage.bean.JpushMessage;
import au.com.royalpay.payment.manage.signin.beans.ChangePwdBean;
import au.com.royalpay.payment.manage.signin.core.SignInAccountService;
import au.com.royalpay.payment.manage.signin.core.impls.SignInAccountServiceImpl;
@@ -36,37 +76,9 @@ import au.com.royalpay.payment.tools.merchants.core.MerchantInfoProvider;
import au.com.royalpay.payment.tools.permission.enums.PartnerRole;
import au.com.royalpay.payment.tools.utils.PageListUtils;
import au.com.royalpay.payment.tools.utils.TimeZoneUtils;
-import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONArray;
-import com.alibaba.fastjson.JSONObject;
-import com.github.miemiedev.mybatis.paginator.domain.Order;
-import com.github.miemiedev.mybatis.paginator.domain.PageBounds;
-import com.github.miemiedev.mybatis.paginator.domain.PageList;
-import com.notnoop.apns.APNS;
-import com.notnoop.apns.ApnsService;
-import org.apache.commons.lang3.RandomUtils;
-import org.apache.commons.lang3.StringUtils;
-import org.apache.commons.lang3.time.DateFormatUtils;
-import org.apache.commons.lang3.time.DateUtils;
-import org.jsoup.Jsoup;
-import org.jsoup.nodes.Document;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.cache.annotation.Cacheable;
-import org.springframework.stereotype.Service;
-import org.springframework.util.Assert;
-import javax.annotation.Resource;
-import java.io.IOException;
-import java.io.InputStream;
-import java.math.BigDecimal;
-import java.text.DateFormat;
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
-import java.util.*;
-import java.util.concurrent.LinkedBlockingQueue;
-import java.util.concurrent.ThreadPoolExecutor;
-import java.util.concurrent.TimeUnit;
+import cn.jpush.api.JPushClient;
+import cn.jpush.api.push.model.PushPayload;
/**
* Created by yishuqian on 28/03/2017.
@@ -120,6 +132,8 @@ public class RetailAppServiceImp implements RetailAppService {
private APNSMessageHelper apnsMessageHelper;
@Resource
private ClientDeviceTokenMapper clientDeviceTokenMapper;
+ @Resource
+ private JpushMessageHelper jpushMessageHelper;
private ThreadPoolExecutor sendingAppleMsgPool = new ThreadPoolExecutor(10, 30, 5, TimeUnit.SECONDS, new LinkedBlockingQueue());
@@ -455,10 +469,24 @@ public class RetailAppServiceImp implements RetailAppService {
JSONObject type = new JSONObject();
type.put("send_type", "payment");
type.put("id", order.getString("order_id"));
- apnsMessageHelper.sendAppleMessage(LocaleSupport.localeMessage("app.message.title.payment"),
- LocaleSupport.localeMessage("app.message.body.payment") + order.getString("currency") + order.getDoubleValue("total_amount"), token,
- order, type);
- log.put("status", 2);
+ if("iphone".equals(devToken.getString("client_type"))) {
+ apnsMessageHelper.sendAppleMessage(LocaleSupport.localeMessage("app.message.title.payment"),
+ LocaleSupport.localeMessage("app.message.body.payment") + order.getString("currency") + order.getDoubleValue("total_amount"), token,
+ order, type);
+ }
+ if("android".equals(devToken.getString("client_type"))) {
+ JPushClient jPushClient= JpushMessageHelper.getPush();
+ JpushMessage jpushMessage = new JpushMessage();
+ jpushMessage.setTitle(LocaleSupport.localeMessage("app.message.title.payment"));
+ jpushMessage.setText(LocaleSupport.localeMessage("app.message.body.payment") + order.getString("currency") + order.getDoubleValue("total_amount"));
+ JSONObject param = new JSONObject();
+ param.put("data",order);
+ param.put("type",type);
+ jpushMessage.setParams(param);
+ PushPayload pushPayload =JpushMessageHelper.generateSinglePayload(token,jpushMessage);
+ jPushClient.sendPush(pushPayload);
+ }
+ log.put("status", 2);
appMessageLogMapper.update(log);
} catch (Exception e) {
logger.error("出错了:" + e.getMessage());
@@ -501,9 +529,14 @@ public class RetailAppServiceImp implements RetailAppService {
JSONObject type = new JSONObject();
type.put("send_type", "refund");
type.put("id", order.getString("order_id"));
- apnsMessageHelper.sendAppleMessage("Refund JpushMessage", LocaleSupport.localeMessage("app.message.body.refund") + refundAmount, token,
- order, type);
- log.put("status", 2);
+ if("iphone".equals(devToken.getString("client_type"))) {
+ apnsMessageHelper.sendAppleMessage("Refund JpushMessage", LocaleSupport.localeMessage("app.message.body.refund") + refundAmount, token,
+ order, type);
+ }
+ if("android".equals(devToken.getString("client_type"))) {
+ sendAppleMessage
+ }
+ log.put("status", 2);
appMessageLogMapper.update(log);
} catch (Exception e) {
logger.error("出错了:" + e.getMessage());
@@ -535,8 +568,23 @@ public class RetailAppServiceImp implements RetailAppService {
JSONObject type = new JSONObject();
type.put("send_type", "notice");
type.put("id", notice.getNotice_id());
- apnsMessageHelper.sendAppleMessage(LocaleSupport.localeMessage("app.message.title.notice"), notice.getTitle(), token, noticeObj,
- type);
+ if("iphone".equals(devToken.getString("client_type"))){
+ apnsMessageHelper.sendAppleMessage(LocaleSupport.localeMessage("app.message.title.notice"), notice.getTitle(), token, noticeObj,
+ type);
+ }
+ if("android".equals(devToken.getString("client_type"))){
+ JPushClient jPushClient= JpushMessageHelper.getPush();
+ JpushMessage jpushMessage = new JpushMessage();
+ jpushMessage.setTitle(notice.getTitle());
+ jpushMessage.setText(LocaleSupport.localeMessage("app.message.title.notice"));
+ JSONObject param = new JSONObject();
+ param.put("data",noticeObj);
+ param.put("type",type);
+ jpushMessage.setParams(param);
+ PushPayload pushPayload =JpushMessageHelper.generateSinglePayload(token,jpushMessage);
+ jPushClient.sendPush(pushPayload);
+ }
+
log.put("status", 2);
appMessageLogMapper.update(log);
} catch (Exception e) {
@@ -1147,4 +1195,9 @@ public class RetailAppServiceImp implements RetailAppService {
String regex = "[A-Za-z0-9]{8}";
return str.matches(regex);
}
+
+ private void sendJpush(int client_id,JpushMessage message){
+
+
+ }
}
diff --git a/src/main/java/au/com/royalpay/payment/manage/pushMessage/JpushMessageHelper.java b/src/main/java/au/com/royalpay/payment/manage/pushMessage/JpushMessageHelper.java
index d31cb2869..d30322181 100644
--- a/src/main/java/au/com/royalpay/payment/manage/pushMessage/JpushMessageHelper.java
+++ b/src/main/java/au/com/royalpay/payment/manage/pushMessage/JpushMessageHelper.java
@@ -2,13 +2,17 @@ package au.com.royalpay.payment.manage.pushMessage;
import au.com.royalpay.payment.manage.pushMessage.bean.JpushMessage;
+import com.alibaba.fastjson.JSONObject;
+
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
+import java.io.IOException;
import java.util.Map;
-import java.util.Set;
+import cn.jiguang.common.resp.APIConnectionException;
+import cn.jiguang.common.resp.APIRequestException;
import cn.jpush.api.JPushClient;
import cn.jpush.api.push.model.Options;
import cn.jpush.api.push.model.Platform;
@@ -25,8 +29,8 @@ public class JpushMessageHelper {
Logger logger = LoggerFactory.getLogger(getClass());
// 推送文本最大长度
- private final Integer NOTIFICATION_MAX_LENGTH = 54;
- private static JPushClient client=null;
+ private static final Integer NOTIFICATION_MAX_LENGTH = 54;
+ private static JPushClient client = null;
public static JPushClient getPush() {
if (client == null) {
@@ -35,24 +39,33 @@ public class JpushMessageHelper {
return client;
}
- public PushPayload generateSinglePayload(Set alias, JpushMessage pushMessage) {
+ public void sendAppleMessage(String title, String body, String token, JSONObject data, JSONObject type) throws IOException, APIConnectionException, APIRequestException {
+ JPushClient jPushClient= JpushMessageHelper.getPush();
+ JpushMessage jpushMessage = new JpushMessage();
+ jpushMessage.setTitle(title);
+ jpushMessage.setText(body);
+ JSONObject param = new JSONObject();
+ param.put("data",data);
+ param.put("type",type);
+ jpushMessage.setParams(param);
+ PushPayload pushPayload =JpushMessageHelper.generateSinglePayload(token,jpushMessage);
+ jPushClient.sendPush(pushPayload);
+ }
+
+ public static PushPayload generateSinglePayload(String alias, JpushMessage pushMessage) {
Notification notify = getNotify(pushMessage);
- return PushPayload.newBuilder()
- .setPlatform(Platform.android())
- .setAudience(Audience.alias(alias))
- .setNotification(notify)
+ return PushPayload.newBuilder().setPlatform(Platform.android()).setAudience(Audience.alias(alias)).setNotification(notify)
// 设置离线时长
- .setOptions(Options.newBuilder().setTimeToLive(60*60*4).build()).build();
+ .setOptions(Options.newBuilder().setTimeToLive(60 * 60 * 4).build()).build();
}
- private Notification getNotify(JpushMessage pushMessage) {
+ private static Notification getNotify(JpushMessage pushMessage) {
String alert = getText(pushMessage);
- return Notification
- .newBuilder()
- .addPlatformNotification(AndroidNotification.newBuilder().setTitle(pushMessage.getTitle()).setAlert(alert).addExtras(getExtra(pushMessage)).build()).build();
+ return Notification.newBuilder().addPlatformNotification(
+ AndroidNotification.newBuilder().setTitle(pushMessage.getTitle()).setAlert(alert).addExtras(getExtra(pushMessage)).build()).build();
}
- private String getText(JpushMessage pushMessage) {
+ private static String getText(JpushMessage pushMessage) {
String text = pushMessage.getText();
int length = text.length();
int trueLength = 0;
@@ -77,8 +90,7 @@ public class JpushMessageHelper {
return cutString;
}
-
- private Map getExtra(JpushMessage message){
+ private static Map getExtra(JpushMessage message) {
Map map = message.getParams();
return map;
}
diff --git a/src/main/resources/au/com/royalpay/payment/manage/mappers/system/ClientDeviceTokenMapper.xml b/src/main/resources/au/com/royalpay/payment/manage/mappers/system/ClientDeviceTokenMapper.xml
index 3551b3c64..66996e519 100644
--- a/src/main/resources/au/com/royalpay/payment/manage/mappers/system/ClientDeviceTokenMapper.xml
+++ b/src/main/resources/au/com/royalpay/payment/manage/mappers/system/ClientDeviceTokenMapper.xml
@@ -1,10 +1,31 @@
-
+
+
From 835246c24ae586ddcbeba00eb187a31be1e49c5b Mon Sep 17 00:00:00 2001
From: wangning <164851225@qq.com>
Date: Fri, 5 Jan 2018 16:20:32 +0800
Subject: [PATCH 06/31] tmp
---
.../core/impls/RetailAppServiceImp.java | 3 ++-
.../manage/pushMessage/JpushMessageHelper.java | 16 ++++++++--------
2 files changed, 10 insertions(+), 9 deletions(-)
diff --git a/src/main/java/au/com/royalpay/payment/manage/appclient/core/impls/RetailAppServiceImp.java b/src/main/java/au/com/royalpay/payment/manage/appclient/core/impls/RetailAppServiceImp.java
index 785c3f000..93d7933f1 100644
--- a/src/main/java/au/com/royalpay/payment/manage/appclient/core/impls/RetailAppServiceImp.java
+++ b/src/main/java/au/com/royalpay/payment/manage/appclient/core/impls/RetailAppServiceImp.java
@@ -534,7 +534,8 @@ public class RetailAppServiceImp implements RetailAppService {
order, type);
}
if("android".equals(devToken.getString("client_type"))) {
- sendAppleMessage
+ jpushMessageHelper.sendAppleMessage("Refund JpushMessage", LocaleSupport.localeMessage("app.message.body.refund") + refundAmount,token,
+ order, type);
}
log.put("status", 2);
appMessageLogMapper.update(log);
diff --git a/src/main/java/au/com/royalpay/payment/manage/pushMessage/JpushMessageHelper.java b/src/main/java/au/com/royalpay/payment/manage/pushMessage/JpushMessageHelper.java
index d30322181..337233c8e 100644
--- a/src/main/java/au/com/royalpay/payment/manage/pushMessage/JpushMessageHelper.java
+++ b/src/main/java/au/com/royalpay/payment/manage/pushMessage/JpushMessageHelper.java
@@ -29,10 +29,10 @@ public class JpushMessageHelper {
Logger logger = LoggerFactory.getLogger(getClass());
// 推送文本最大长度
- private static final Integer NOTIFICATION_MAX_LENGTH = 54;
+ private final Integer NOTIFICATION_MAX_LENGTH = 54;
private static JPushClient client = null;
- public static JPushClient getPush() {
+ private JPushClient getPush() {
if (client == null) {
client = new JPushClient("c235e93f6b91abd72ca5d74e", "c235e93f6b91abd72ca5d74e");
}
@@ -40,7 +40,7 @@ public class JpushMessageHelper {
}
public void sendAppleMessage(String title, String body, String token, JSONObject data, JSONObject type) throws IOException, APIConnectionException, APIRequestException {
- JPushClient jPushClient= JpushMessageHelper.getPush();
+ JPushClient jPushClient= getPush();
JpushMessage jpushMessage = new JpushMessage();
jpushMessage.setTitle(title);
jpushMessage.setText(body);
@@ -48,24 +48,24 @@ public class JpushMessageHelper {
param.put("data",data);
param.put("type",type);
jpushMessage.setParams(param);
- PushPayload pushPayload =JpushMessageHelper.generateSinglePayload(token,jpushMessage);
+ PushPayload pushPayload = generateSinglePayload(token,jpushMessage);
jPushClient.sendPush(pushPayload);
}
- public static PushPayload generateSinglePayload(String alias, JpushMessage pushMessage) {
+ private PushPayload generateSinglePayload(String alias, JpushMessage pushMessage) {
Notification notify = getNotify(pushMessage);
return PushPayload.newBuilder().setPlatform(Platform.android()).setAudience(Audience.alias(alias)).setNotification(notify)
// 设置离线时长
.setOptions(Options.newBuilder().setTimeToLive(60 * 60 * 4).build()).build();
}
- private static Notification getNotify(JpushMessage pushMessage) {
+ private Notification getNotify(JpushMessage pushMessage) {
String alert = getText(pushMessage);
return Notification.newBuilder().addPlatformNotification(
AndroidNotification.newBuilder().setTitle(pushMessage.getTitle()).setAlert(alert).addExtras(getExtra(pushMessage)).build()).build();
}
- private static String getText(JpushMessage pushMessage) {
+ private String getText(JpushMessage pushMessage) {
String text = pushMessage.getText();
int length = text.length();
int trueLength = 0;
@@ -90,7 +90,7 @@ public class JpushMessageHelper {
return cutString;
}
- private static Map getExtra(JpushMessage message) {
+ private Map getExtra(JpushMessage message) {
Map map = message.getParams();
return map;
}
From 2323459f31d1208b98f966e1e79cef0279b336ac Mon Sep 17 00:00:00 2001
From: wangning <164851225@qq.com>
Date: Fri, 5 Jan 2018 16:55:41 +0800
Subject: [PATCH 07/31] finish refactor the message
---
.../core/impls/RetailAppServiceImp.java | 99 ++++++++++---------
.../ui/static/config/devtools/devtools.js | 1 +
.../devtools/templates/send_message.html | 7 ++
3 files changed, 61 insertions(+), 46 deletions(-)
diff --git a/src/main/java/au/com/royalpay/payment/manage/appclient/core/impls/RetailAppServiceImp.java b/src/main/java/au/com/royalpay/payment/manage/appclient/core/impls/RetailAppServiceImp.java
index 93d7933f1..0c8713957 100644
--- a/src/main/java/au/com/royalpay/payment/manage/appclient/core/impls/RetailAppServiceImp.java
+++ b/src/main/java/au/com/royalpay/payment/manage/appclient/core/impls/RetailAppServiceImp.java
@@ -469,24 +469,17 @@ public class RetailAppServiceImp implements RetailAppService {
JSONObject type = new JSONObject();
type.put("send_type", "payment");
type.put("id", order.getString("order_id"));
- if("iphone".equals(devToken.getString("client_type"))) {
+ if ("iphone".equals(devToken.getString("client_type"))) {
apnsMessageHelper.sendAppleMessage(LocaleSupport.localeMessage("app.message.title.payment"),
- LocaleSupport.localeMessage("app.message.body.payment") + order.getString("currency") + order.getDoubleValue("total_amount"), token,
- order, type);
+ LocaleSupport.localeMessage("app.message.body.payment") + order.getString("currency") + order.getDoubleValue("total_amount"),
+ token, order, type);
}
- if("android".equals(devToken.getString("client_type"))) {
- JPushClient jPushClient= JpushMessageHelper.getPush();
- JpushMessage jpushMessage = new JpushMessage();
- jpushMessage.setTitle(LocaleSupport.localeMessage("app.message.title.payment"));
- jpushMessage.setText(LocaleSupport.localeMessage("app.message.body.payment") + order.getString("currency") + order.getDoubleValue("total_amount"));
- JSONObject param = new JSONObject();
- param.put("data",order);
- param.put("type",type);
- jpushMessage.setParams(param);
- PushPayload pushPayload =JpushMessageHelper.generateSinglePayload(token,jpushMessage);
- jPushClient.sendPush(pushPayload);
+ if ("android".equals(devToken.getString("client_type"))) {
+ jpushMessageHelper.sendAppleMessage(LocaleSupport.localeMessage("app.message.title.payment"),
+ LocaleSupport.localeMessage("app.message.body.payment") + order.getString("currency") + order.getDoubleValue("total_amount"),
+ token, order, type);
}
- log.put("status", 2);
+ log.put("status", 2);
appMessageLogMapper.update(log);
} catch (Exception e) {
logger.error("出错了:" + e.getMessage());
@@ -529,15 +522,15 @@ public class RetailAppServiceImp implements RetailAppService {
JSONObject type = new JSONObject();
type.put("send_type", "refund");
type.put("id", order.getString("order_id"));
- if("iphone".equals(devToken.getString("client_type"))) {
- apnsMessageHelper.sendAppleMessage("Refund JpushMessage", LocaleSupport.localeMessage("app.message.body.refund") + refundAmount, token,
- order, type);
+ if ("iphone".equals(devToken.getString("client_type"))) {
+ apnsMessageHelper.sendAppleMessage("Refund JpushMessage", LocaleSupport.localeMessage("app.message.body.refund") + refundAmount,
+ token, order, type);
}
- if("android".equals(devToken.getString("client_type"))) {
- jpushMessageHelper.sendAppleMessage("Refund JpushMessage", LocaleSupport.localeMessage("app.message.body.refund") + refundAmount,token,
- order, type);
+ if ("android".equals(devToken.getString("client_type"))) {
+ jpushMessageHelper.sendAppleMessage("Refund JpushMessage", LocaleSupport.localeMessage("app.message.body.refund") + refundAmount,
+ token, order, type);
}
- log.put("status", 2);
+ log.put("status", 2);
appMessageLogMapper.update(log);
} catch (Exception e) {
logger.error("出错了:" + e.getMessage());
@@ -569,21 +562,13 @@ public class RetailAppServiceImp implements RetailAppService {
JSONObject type = new JSONObject();
type.put("send_type", "notice");
type.put("id", notice.getNotice_id());
- if("iphone".equals(devToken.getString("client_type"))){
+ if ("iphone".equals(devToken.getString("client_type"))) {
apnsMessageHelper.sendAppleMessage(LocaleSupport.localeMessage("app.message.title.notice"), notice.getTitle(), token, noticeObj,
type);
}
- if("android".equals(devToken.getString("client_type"))){
- JPushClient jPushClient= JpushMessageHelper.getPush();
- JpushMessage jpushMessage = new JpushMessage();
- jpushMessage.setTitle(notice.getTitle());
- jpushMessage.setText(LocaleSupport.localeMessage("app.message.title.notice"));
- JSONObject param = new JSONObject();
- param.put("data",noticeObj);
- param.put("type",type);
- jpushMessage.setParams(param);
- PushPayload pushPayload =JpushMessageHelper.generateSinglePayload(token,jpushMessage);
- jPushClient.sendPush(pushPayload);
+ if ("android".equals(devToken.getString("client_type"))) {
+ jpushMessageHelper.sendAppleMessage(LocaleSupport.localeMessage("app.message.title.notice"), notice.getTitle(), token,
+ noticeObj, type);
}
log.put("status", 2);
@@ -616,10 +601,19 @@ public class RetailAppServiceImp implements RetailAppService {
JSONObject type = new JSONObject();
type.put("send_type", "cashback");
type.put("id", order.getString("order_id"));
- apnsMessageHelper.sendAppleMessage(LocaleSupport.localeMessage("app.message.title.notice"),
- LocaleSupport.localeMessage("app.message.body.cashback") + PlatformEnvironment.getEnv().getForeignCurrency() + " "
- + cashbackAmount,
- token, order, type);
+ if ("iphone".equals(devToken.getString("client_type"))) {
+
+ apnsMessageHelper.sendAppleMessage(LocaleSupport.localeMessage("app.message.title.notice"),
+ LocaleSupport.localeMessage("app.message.body.cashback") + PlatformEnvironment.getEnv().getForeignCurrency() + " "
+ + cashbackAmount,
+ token, order, type);
+ }
+ if ("android".equals(devToken.getString("client_type"))) {
+ jpushMessageHelper.sendAppleMessage(LocaleSupport.localeMessage("app.message.title.notice"),
+ LocaleSupport.localeMessage("app.message.body.cashback") + PlatformEnvironment.getEnv().getForeignCurrency() + " "
+ + cashbackAmount,
+ token, order, type);
+ }
log.put("status", 2);
appMessageLogMapper.update(log);
} catch (Exception e) {
@@ -653,9 +647,20 @@ public class RetailAppServiceImp implements RetailAppService {
JSONObject type = new JSONObject();
type.put("send_type", "clean");
type.put("id", log_clearing_detail_id);
- apnsMessageHelper.sendAppleMessage(LocaleSupport.localeMessage("app.message.title.clean"), LocaleSupport.localeMessage("app.message.body.clean")
- + PlatformEnvironment.getEnv().getForeignCurrency() + " " + clearing_amount + " (" + settle_date_from + "-" + settle_date_to + ")",
- token, log_clearing_detail, type);
+ if ("iphone".equals(devToken.getString("client_type"))) {
+
+ apnsMessageHelper.sendAppleMessage(LocaleSupport.localeMessage("app.message.title.clean"),
+ LocaleSupport.localeMessage("app.message.body.clean") + PlatformEnvironment.getEnv().getForeignCurrency() + " " + clearing_amount
+ + " (" + settle_date_from + "-" + settle_date_to + ")",
+ token, log_clearing_detail, type);
+ }
+
+ if ("android".equals(devToken.getString("client_type"))) {
+ jpushMessageHelper.sendAppleMessage(LocaleSupport.localeMessage("app.message.title.clean"),
+ LocaleSupport.localeMessage("app.message.body.clean") + PlatformEnvironment.getEnv().getForeignCurrency() + " " + clearing_amount
+ + " (" + settle_date_from + "-" + settle_date_to + ")",
+ token, log_clearing_detail, type);
+ }
log.put("status", 2);
appMessageLogMapper.update(log);
} catch (Exception e) {
@@ -698,7 +703,6 @@ public class RetailAppServiceImp implements RetailAppService {
}
}
-
@Override
public void updateReadStatus(JSONObject device, String noticeId) {
String clientType = device.getString("client_type");
@@ -1125,9 +1129,13 @@ public class RetailAppServiceImp implements RetailAppService {
}
public void sending(String devToken, JSONObject params, JSONObject log) {
-
try {
- apnsMessageHelper.sendAppleMessage(params.getString("title"), params.getString("content"), devToken, new JSONObject(), new JSONObject());
+ if ("iphone".equals(params.getString("client_type"))) {
+ apnsMessageHelper.sendAppleMessage(params.getString("title"), params.getString("content"), devToken, new JSONObject(), new JSONObject());
+ }
+ if ("android".equals(params.getString("client_type"))) {
+ jpushMessageHelper.sendAppleMessage(params.getString("title"), params.getString("content"), devToken, new JSONObject(), new JSONObject());
+ }
log.put("status", 2);
appMessageLogMapper.update(log);
} catch (Exception e) {
@@ -1197,8 +1205,7 @@ public class RetailAppServiceImp implements RetailAppService {
return str.matches(regex);
}
- private void sendJpush(int client_id,JpushMessage message){
-
+ private void sendJpush(int client_id, JpushMessage message) {
}
}
diff --git a/src/main/ui/static/config/devtools/devtools.js b/src/main/ui/static/config/devtools/devtools.js
index cd653273d..709fc4f53 100644
--- a/src/main/ui/static/config/devtools/devtools.js
+++ b/src/main/ui/static/config/devtools/devtools.js
@@ -216,6 +216,7 @@ define(['angular', 'uiRouter', 'uiBootstrap'], function (angular) {
app.controller('devSendMessageCtrl', ['$scope', '$http', '$filter', function ($scope, $http, $filter) {
$scope.params = {type:'Merchant'};
+ alert($scope.params.client_type);
$scope.sendMessage = function () {
var params = angular.copy($scope.params);
$http.put('/dev/send_message',params).then(function (resp) {
diff --git a/src/main/ui/static/config/devtools/templates/send_message.html b/src/main/ui/static/config/devtools/templates/send_message.html
index 378f1bbcb..dc37ff46a 100644
--- a/src/main/ui/static/config/devtools/templates/send_message.html
+++ b/src/main/ui/static/config/devtools/templates/send_message.html
@@ -31,6 +31,13 @@
+
+
+
+
From 9b8b9639c0a31337afd7a1585605e8e77858268b Mon Sep 17 00:00:00 2001
From: wangning <164851225@qq.com>
Date: Fri, 5 Jan 2018 18:03:01 +0800
Subject: [PATCH 08/31] update
---
.../com/royalpay/payment/manage/dev/bean/Message.java | 10 +++++++++-
src/main/ui/static/config/devtools/devtools.js | 1 -
.../static/config/devtools/templates/send_message.html | 4 ++--
3 files changed, 11 insertions(+), 4 deletions(-)
diff --git a/src/main/java/au/com/royalpay/payment/manage/dev/bean/Message.java b/src/main/java/au/com/royalpay/payment/manage/dev/bean/Message.java
index 2ded3cb61..b4d3ce22c 100644
--- a/src/main/java/au/com/royalpay/payment/manage/dev/bean/Message.java
+++ b/src/main/java/au/com/royalpay/payment/manage/dev/bean/Message.java
@@ -16,7 +16,7 @@ public class Message {
public String title;
@NotEmpty(message = "content can not be null")
public String content;
-
+ public String client_type;
public JSONObject insertObject() {
JSONObject res = (JSONObject) JSON.toJSON(this);
return res;
@@ -53,4 +53,12 @@ public class Message {
public void setContent(String content) {
this.content = content;
}
+
+ public String getClient_type() {
+ return client_type;
+ }
+
+ public void setClient_type(String client_type) {
+ this.client_type = client_type;
+ }
}
diff --git a/src/main/ui/static/config/devtools/devtools.js b/src/main/ui/static/config/devtools/devtools.js
index 709fc4f53..cd653273d 100644
--- a/src/main/ui/static/config/devtools/devtools.js
+++ b/src/main/ui/static/config/devtools/devtools.js
@@ -216,7 +216,6 @@ define(['angular', 'uiRouter', 'uiBootstrap'], function (angular) {
app.controller('devSendMessageCtrl', ['$scope', '$http', '$filter', function ($scope, $http, $filter) {
$scope.params = {type:'Merchant'};
- alert($scope.params.client_type);
$scope.sendMessage = function () {
var params = angular.copy($scope.params);
$http.put('/dev/send_message',params).then(function (resp) {
diff --git a/src/main/ui/static/config/devtools/templates/send_message.html b/src/main/ui/static/config/devtools/templates/send_message.html
index dc37ff46a..84aa5393b 100644
--- a/src/main/ui/static/config/devtools/templates/send_message.html
+++ b/src/main/ui/static/config/devtools/templates/send_message.html
@@ -34,8 +34,8 @@
From 4644f30cad81bd155fe168d80c6773f36d3162e4 Mon Sep 17 00:00:00 2001
From: "eason.qian"
Date: Fri, 5 Jan 2018 18:10:00 +0800
Subject: [PATCH 09/31] fix
---
.../java/au/com/royalpay/payment/manage/package-info.java | 4 ++++
1 file changed, 4 insertions(+)
create mode 100644 src/test/java/au/com/royalpay/payment/manage/package-info.java
diff --git a/src/test/java/au/com/royalpay/payment/manage/package-info.java b/src/test/java/au/com/royalpay/payment/manage/package-info.java
new file mode 100644
index 000000000..8035e9d82
--- /dev/null
+++ b/src/test/java/au/com/royalpay/payment/manage/package-info.java
@@ -0,0 +1,4 @@
+/**
+ * Created by yishuqian on 05/01/2018.
+ */
+package au.com.royalpay.payment.manage;
\ No newline at end of file
From 4eec126f95e36f98857c6bad8eddab74848463f5 Mon Sep 17 00:00:00 2001
From: wangning <164851225@qq.com>
Date: Fri, 5 Jan 2018 18:16:16 +0800
Subject: [PATCH 10/31] test
---
.../impls/CustomerImpressionImplTest.java | 27 +++++++++++++++++++
1 file changed, 27 insertions(+)
create mode 100644 src/test/java/au/com/royalpay/payment/manage/apps/core/impls/CustomerImpressionImplTest.java
diff --git a/src/test/java/au/com/royalpay/payment/manage/apps/core/impls/CustomerImpressionImplTest.java b/src/test/java/au/com/royalpay/payment/manage/apps/core/impls/CustomerImpressionImplTest.java
new file mode 100644
index 000000000..dcb24d4f8
--- /dev/null
+++ b/src/test/java/au/com/royalpay/payment/manage/apps/core/impls/CustomerImpressionImplTest.java
@@ -0,0 +1,27 @@
+package au.com.royalpay.payment.manage.apps.core.impls;
+
+import au.com.royalpay.payment.manage.apps.core.CustomerImpression;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.ActiveProfiles;
+import org.springframework.test.context.junit4.SpringRunner;
+
+import javax.annotation.Resource;
+
+/**
+ * Created by wangning on 05/01/2018.
+ */
+@SpringBootTest
+@ActiveProfiles({"proxy","alipay","wechat","jd","bestpay"})
+@RunWith(SpringRunner.class)
+public class CustomerImpressionImplTest {
+ @Resource
+ private CustomerImpression customerImpression;
+ @Test
+ public void generate() throws Exception {
+ customerImpression.generate(9);
+ }
+
+}
\ No newline at end of file
From f41e4c2ab799988f7beb85efd7eb4ef93a7e75c4 Mon Sep 17 00:00:00 2001
From: wangning <164851225@qq.com>
Date: Fri, 5 Jan 2018 18:19:16 +0800
Subject: [PATCH 11/31] update
---
src/db/modify.sql | 17 +++++++++++++++++
1 file changed, 17 insertions(+)
diff --git a/src/db/modify.sql b/src/db/modify.sql
index 3d0650c51..b5502c9fc 100644
--- a/src/db/modify.sql
+++ b/src/db/modify.sql
@@ -120,5 +120,22 @@ ALTER TABLE `cashback_draw_deposits`
ALTER TABLE `sys_clients`
ADD COLUMN `local_merchant` tinyint(1) DEFAULT 0;
+--用户画像
+
+ALTER TABLE sys_clients_customers ADD COLUMN headimg VARCHAR(200) DEFAULT NULL COMMENT '头像地址';
+
+ALTER TABLE sys_clients_customers ADD COLUMN nick_name VARCHAR(80) DEFAULT NULL COMMENT '昵称';
+
+ALTER TABLE sys_clients_customers ADD COLUMN tag VARCHAR(100) DEFAULT NULL COMMENT '标签';
+
+ALTER TABLE sys_clients_customers ADD COLUMN payment_times INT DEFAULT 1 COMMENT '消费次数';
+
+ALTER TABLE sys_clients_customers ADD COLUMN total_amount decimal(10 , 2) DEFAULT NULL COMMENT '消费总金额';
+
+ALTER TABLE sys_clients_customers ADD COLUMN update_time datetime default NULL COMMENT '创建时间';
+
+ALTER TABLE sys_clients_customers ADD COLUMN channel varchar(15) not NULL ;
+
+ALTER TABLE sys_clients_customers ADD COLUMN last_payment_time datetime DEFAULT NULL COMMENT '最后一次付款时间';
From 66775e24c23317815b5216fdda1797058be42d20 Mon Sep 17 00:00:00 2001
From: yuan <1551130722@qq.com>
Date: Mon, 8 Jan 2018 16:31:41 +0800
Subject: [PATCH 12/31] =?UTF-8?q?=E7=BB=84=E7=BB=87=E7=AE=A1=E7=90=86?=
=?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=BA=8C=E7=BA=A7=E7=AD=9B=E9=80=89=EF=BC=8C?=
=?UTF-8?q?=E7=94=A8=E6=88=B7=E7=AE=A1=E7=90=86=EF=BC=8C=E4=BA=A4=E6=98=93?=
=?UTF-8?q?=E6=B5=81=E6=B0=B4=EF=BC=8C=E5=A2=9E=E5=8A=A0=E4=BA=8C=E7=BA=A7?=
=?UTF-8?q?=E4=BB=A3=E7=90=86=E7=AD=9B=E9=80=89?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../manage/mappers/system/OrgMapper.java | 6 +-
.../manage/merchants/beans/PartnerQuery.java | 12 +++
.../core/impls/ClientManagerImpl.java | 97 ++++++++++---------
.../manage/organizations/beans/OrgInfo.java | 32 +++++-
.../manage/organizations/core/OrgManager.java | 6 +-
.../core/impls/OrgManagerImpl.java | 50 +++++++++-
.../web/OrgManageController.java | 22 +++--
.../core/impls/ManagerAccountServiceImpl.java | 26 ++++-
.../core/impls/SignInAccountServiceImpl.java | 34 ++++++-
.../signin/web/ManagerAccountsController.java | 8 +-
.../manage/tradelog/beans/TradeLogQuery.java | 12 +++
.../core/impls/TradeLogServiceImpl.java | 25 ++++-
.../manage/mappers/payment/OrderMapper.xml | 2 +
.../manage/mappers/system/ClientMapper.xml | 2 +
.../manage/mappers/system/OrgMapper.xml | 30 ++++++
.../config/organizations/organizations.js | 20 +++-
.../organizations/templates/new_org.html | 5 +-
.../organizations/templates/org_detail.html | 3 +-
.../config/organizations/templates/orgs.html | 16 ++-
.../static/payment/partner/partner-manage.js | 18 +++-
.../payment/partner/templates/partners.html | 27 +++++-
.../tradelog/templates/trade_logs.html | 10 ++
.../payment/tradelog/tradelog-manage.js | 10 +-
23 files changed, 382 insertions(+), 91 deletions(-)
diff --git a/src/main/java/au/com/royalpay/payment/manage/mappers/system/OrgMapper.java b/src/main/java/au/com/royalpay/payment/manage/mappers/system/OrgMapper.java
index 59cacde68..28bdac865 100644
--- a/src/main/java/au/com/royalpay/payment/manage/mappers/system/OrgMapper.java
+++ b/src/main/java/au/com/royalpay/payment/manage/mappers/system/OrgMapper.java
@@ -25,6 +25,10 @@ public interface OrgMapper {
List listOrgs(@Param("type") int type, PageBounds order);
+ List listOrgsWithParent(JSONObject params);
+
+ List listOrgsWithChid(JSONObject params);
+
@AutoSql(type = SqlType.INSERT)
void saveOrg(JSONObject org);
@@ -35,7 +39,7 @@ public interface OrgMapper {
void updateOrg(JSONObject org);
@AutoSql(type = SqlType.SELECT)
- @AdvanceSelect(addonWhereClause = "is_valid=1")
+ @AdvanceSelect(addonWhereClause = "is_valid=1 and parent_org_id IS NULL")
List listAllOrgs();
JSONObject findOrgByBDId(@Param("bd_id") int bd_id);
diff --git a/src/main/java/au/com/royalpay/payment/manage/merchants/beans/PartnerQuery.java b/src/main/java/au/com/royalpay/payment/manage/merchants/beans/PartnerQuery.java
index d89677a80..44643a4bc 100644
--- a/src/main/java/au/com/royalpay/payment/manage/merchants/beans/PartnerQuery.java
+++ b/src/main/java/au/com/royalpay/payment/manage/merchants/beans/PartnerQuery.java
@@ -22,6 +22,7 @@ public class PartnerQuery {
private String short_name;
private String sub_merchant_id;
private String org_id;
+ private String org_ids;
private Integer bd;
private String business_structure;
private String industry;
@@ -117,6 +118,9 @@ public class PartnerQuery {
if (org_id != null) {
param.put("org_id", org_id);
}
+ if (org_ids != null) {
+ param.put("org_ids", org_ids);
+ }
if (bd != null) {
param.put("bd_user", bd);
}
@@ -440,4 +444,12 @@ public class PartnerQuery {
public boolean isIs_valid() {
return is_valid;
}
+
+ public String getOrg_ids() {
+ return org_ids;
+ }
+
+ public void setOrg_ids(String org_ids) {
+ this.org_ids = org_ids;
+ }
}
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 62364635e..008a48d03 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
@@ -10,25 +10,8 @@ import au.com.royalpay.payment.manage.analysis.mappers.TransactionAnalysisMapper
import au.com.royalpay.payment.manage.appclient.beans.AppClientBean;
import au.com.royalpay.payment.manage.mappers.payment.TransactionMapper;
import au.com.royalpay.payment.manage.mappers.redpack.ActClientInvitationCodeMapper;
-import au.com.royalpay.payment.manage.mappers.system.ClientAccountMapper;
-import au.com.royalpay.payment.manage.mappers.system.ClientApplyMapper;
-import au.com.royalpay.payment.manage.mappers.system.ClientAuditProcessMapper;
-import au.com.royalpay.payment.manage.mappers.system.ClientBDMapper;
-import au.com.royalpay.payment.manage.mappers.system.ClientBankAccountMapper;
-import au.com.royalpay.payment.manage.mappers.system.ClientDeviceMapper;
-import au.com.royalpay.payment.manage.mappers.system.ClientFilesMapper;
-import au.com.royalpay.payment.manage.mappers.system.ClientMapper;
-import au.com.royalpay.payment.manage.mappers.system.ClientRateMapper;
-import au.com.royalpay.payment.manage.mappers.system.CommoditiesMapper;
-import au.com.royalpay.payment.manage.mappers.system.ManagerMapper;
-import au.com.royalpay.payment.manage.mappers.system.OrgMapper;
-import au.com.royalpay.payment.manage.merchants.beans.ActivityPosterBuilder;
-import au.com.royalpay.payment.manage.merchants.beans.BankAccountInfo;
-import au.com.royalpay.payment.manage.merchants.beans.ClientAuthFilesInfo;
-import au.com.royalpay.payment.manage.merchants.beans.ClientRateConfig;
-import au.com.royalpay.payment.manage.merchants.beans.ClientRegisterInfo;
-import au.com.royalpay.payment.manage.merchants.beans.NewAccountBean;
-import au.com.royalpay.payment.manage.merchants.beans.PartnerQuery;
+import au.com.royalpay.payment.manage.mappers.system.*;
+import au.com.royalpay.payment.manage.merchants.beans.*;
import au.com.royalpay.payment.manage.merchants.core.ClientComplyValidator;
import au.com.royalpay.payment.manage.merchants.core.ClientManager;
import au.com.royalpay.payment.manage.notice.core.MailService;
@@ -56,22 +39,16 @@ import au.com.royalpay.payment.tools.merchants.qrboard.QRBoard;
import au.com.royalpay.payment.tools.merchants.qrboard.QRBoardProvider;
import au.com.royalpay.payment.tools.permission.enums.ManagerRole;
import au.com.royalpay.payment.tools.permission.enums.PartnerRole;
-import au.com.royalpay.payment.tools.utils.ImageUtils;
-import au.com.royalpay.payment.tools.utils.PageListUtils;
-import au.com.royalpay.payment.tools.utils.PasswordUtils;
-import au.com.royalpay.payment.tools.utils.PdfUtils;
-import au.com.royalpay.payment.tools.utils.QRCodeUtils;
-import au.com.royalpay.payment.tools.utils.TimeZoneUtils;
+import au.com.royalpay.payment.tools.utils.*;
import au.com.royalpay.payment.tools.websocket.notify.PartnerPageEvent;
-
+import cn.yixblog.platform.http.HttpRequestGenerator;
+import cn.yixblog.platform.http.HttpRequestResult;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.github.miemiedev.mybatis.paginator.domain.Order;
import com.github.miemiedev.mybatis.paginator.domain.PageBounds;
import com.github.miemiedev.mybatis.paginator.domain.PageList;
-import com.mysql.jdbc.exceptions.MySQLIntegrityConstraintViolationException;
-
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang3.RandomStringUtils;
import org.apache.commons.lang3.StringUtils;
@@ -93,34 +70,22 @@ import org.springframework.web.bind.annotation.RequestMethod;
import org.thymeleaf.context.Context;
import org.thymeleaf.spring4.SpringTemplateEngine;
+import javax.annotation.Resource;
+import javax.imageio.ImageIO;
+import javax.servlet.ServletOutputStream;
+import javax.servlet.http.HttpServletResponse;
import java.awt.*;
import java.awt.image.BufferedImage;
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
+import java.io.*;
import java.math.BigDecimal;
import java.net.URISyntaxException;
import java.net.URL;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Date;
+import java.util.*;
import java.util.List;
-import java.util.Objects;
import java.util.concurrent.TimeUnit;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
-import javax.annotation.Resource;
-import javax.imageio.ImageIO;
-import javax.servlet.ServletOutputStream;
-import javax.servlet.http.HttpServletResponse;
-
-import cn.yixblog.platform.http.HttpRequestGenerator;
-import cn.yixblog.platform.http.HttpRequestResult;
-
import static au.com.royalpay.payment.manage.permission.utils.OrgCheckUtils.checkOrgPermission;
/**
@@ -327,8 +292,18 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid
params.put("bd_user", manager.getString("manager_id"));
}
}
+
+ if(params.getString("org_id") != null){
+ if(params.getString("org_ids") == null){
+ orgIds(params,Integer.parseInt(params.getString("org_id")));
+ }else {
+ params.put("org_id",params.getString("org_ids"));
+ params.remove("org_ids");
+ }
+ }
+ JSONObject org = null;
if (params.getString("org_id") != null) {
- JSONObject org = orgMapper.findOne(params.getIntValue("org_id"));
+ org = orgMapper.findOne(params.getIntValue("org_id"));
if (org.getIntValue("type") == 1) {
params.put("referrer_id", org.getString("org_id"));
params.remove("org_id");
@@ -336,7 +311,18 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid
}
int orgId = manager.getIntValue("org_id");
if (orgId > 0) {
- params.put("org_id", orgId);
+ if(params.getString("org_ids") == null){
+ JSONObject org2 = orgMapper.findOne(orgId);
+ if(org2.getString("parent_org_id") != null){
+ params.put("org_id",orgId);
+ }else {
+ params.put("org_id",orgId);
+ orgIds(params,orgId);
+ }
+ }else {
+ params.put("org_id", params.getIntValue("org_ids"));
+ params.remove("org_ids");
+ }
}
String tempSubMchId = sysConfigManager.getSysConfig().getString("temp_sub_mch_id");
String tempSubMchSource = sysConfigManager.getSysConfig().getString("temp_sub_mch_id_source");
@@ -361,6 +347,21 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid
}
return PageListUtils.buildPageListResult(partners);
}
+ private void orgIds(JSONObject params,int orgId){
+ JSONObject param = new JSONObject();
+ param.put("parent_org_id",params.getString("org_id"));
+ param.put("type",0);
+ List orgIds = new ArrayList<>();
+ List childOrgs = orgMapper.listOrgsWithChid(param);
+ if(childOrgs.size() > 0){
+ for(JSONObject object : childOrgs ){
+ orgIds.add(object.getIntValue("org_id"));
+ }
+ orgIds.add(orgId);
+ params.put("org_ids",orgIds);
+ params.remove("org_id");
+ }
+ }
@Override
public List listPartners(JSONObject manager, PartnerQuery query) {
diff --git a/src/main/java/au/com/royalpay/payment/manage/organizations/beans/OrgInfo.java b/src/main/java/au/com/royalpay/payment/manage/organizations/beans/OrgInfo.java
index 86be29bc4..3eda2a10d 100644
--- a/src/main/java/au/com/royalpay/payment/manage/organizations/beans/OrgInfo.java
+++ b/src/main/java/au/com/royalpay/payment/manage/organizations/beans/OrgInfo.java
@@ -10,7 +10,7 @@ import org.hibernate.validator.constraints.NotEmpty;
public class OrgInfo {
@NotEmpty
private String name;
- private int type = 0;
+ private String type;
private String logo;
@NotEmpty
private String location;
@@ -32,6 +32,8 @@ public class OrgInfo {
private String search_text;
private int page = 1;
private int limit = 10;
+ private String parent_org_id;
+ private String org_id;
public JSONObject toJsonParam() {
JSONObject param = new JSONObject();
@@ -44,9 +46,15 @@ public class OrgInfo {
if (StringUtils.isNotBlank(search_text)) {
param.put("search_text", search_text);
}
- if (StringUtils.isNotBlank(String.valueOf(type))){
+ if (type != null){
param.put("type", type);
}
+ if (StringUtils.isNotBlank(parent_org_id)){
+ param.put("parent_org_id", parent_org_id);
+ }
+ if (StringUtils.isNotBlank(org_id)){
+ param.put("org_id", org_id);
+ }
return param;
}
@@ -126,11 +134,11 @@ public class OrgInfo {
this.rate_value = rate_value;
}
- public int getType() {
+ public String getType() {
return type;
}
- public void setType(int type) {
+ public void setType(String type) {
this.type = type;
}
@@ -205,4 +213,20 @@ public class OrgInfo {
public void setLimit(int limit) {
this.limit = limit;
}
+
+ public String getParent_org_id() {
+ return parent_org_id;
+ }
+
+ public void setParent_org_id(String parent_org_id) {
+ this.parent_org_id = parent_org_id;
+ }
+
+ public String getOrg_id() {
+ return org_id;
+ }
+
+ public void setOrg_id(String org_id) {
+ this.org_id = org_id;
+ }
}
diff --git a/src/main/java/au/com/royalpay/payment/manage/organizations/core/OrgManager.java b/src/main/java/au/com/royalpay/payment/manage/organizations/core/OrgManager.java
index 006eb8acc..c682aee4f 100644
--- a/src/main/java/au/com/royalpay/payment/manage/organizations/core/OrgManager.java
+++ b/src/main/java/au/com/royalpay/payment/manage/organizations/core/OrgManager.java
@@ -11,9 +11,11 @@ import java.util.List;
public interface OrgManager {
List listOrgs(boolean detail);
- JSONObject listAllOrgs(OrgInfo orgInfo);
+ List listOrgsWithChid(JSONObject manager,OrgInfo orgInfo);
- JSONObject getOrgDetail(int orgId);
+ JSONObject listAllOrgs(OrgInfo orgInfo,JSONObject manager);
+
+ JSONObject getOrgDetail(int orgId,JSONObject manager);
JSONObject saveNewOrg(OrgInfo org);
diff --git a/src/main/java/au/com/royalpay/payment/manage/organizations/core/impls/OrgManagerImpl.java b/src/main/java/au/com/royalpay/payment/manage/organizations/core/impls/OrgManagerImpl.java
index 11cda86db..76ece5f19 100644
--- a/src/main/java/au/com/royalpay/payment/manage/organizations/core/impls/OrgManagerImpl.java
+++ b/src/main/java/au/com/royalpay/payment/manage/organizations/core/impls/OrgManagerImpl.java
@@ -3,7 +3,10 @@ package au.com.royalpay.payment.manage.organizations.core.impls;
import au.com.royalpay.payment.manage.mappers.system.OrgMapper;
import au.com.royalpay.payment.manage.organizations.beans.OrgInfo;
import au.com.royalpay.payment.manage.organizations.core.OrgManager;
+import au.com.royalpay.payment.tools.exceptions.BadRequestException;
+import au.com.royalpay.payment.tools.permission.enums.ManagerRole;
import au.com.royalpay.payment.tools.utils.PageListUtils;
+import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.github.miemiedev.mybatis.paginator.domain.Order;
import com.github.miemiedev.mybatis.paginator.domain.PageBounds;
@@ -11,6 +14,7 @@ import com.github.miemiedev.mybatis.paginator.domain.PageList;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
+import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@@ -29,16 +33,47 @@ public class OrgManagerImpl implements OrgManager {
}
@Override
- public JSONObject listAllOrgs(OrgInfo orgInfo) {
+ public List listOrgsWithChid(JSONObject manager,OrgInfo orgInfo) {
+ JSONObject params = new JSONObject();
+ params.put("type",0);
+ List listOrgsByChild = orgMapper.listOrgsWithChid(params);
+ if(orgInfo.getOrg_id() != null){
+ params.put("org_id", orgInfo.getOrg_id());
+ }else {
+ if (manager.getInteger("org_id") != null) {
+ params.put("org_id", manager.getIntValue("org_id"));
+ }
+ }
+ List listOrgs = orgMapper.listOrgsWithParent(params);
+ List orgs = new ArrayList<>();
+ for(JSONObject org : listOrgs){
+ org.put("type",org.getString("name"));
+ orgs.add(org);
+ for(JSONObject orgChild : listOrgsByChild){
+ if(org.getIntValue("org_id") == orgChild.getIntValue("parent_org_id")){
+ orgChild.put("type",org.getString("name"));
+ orgs.add(orgChild);
+ }
+ }
+ }
+ return orgs;
+ }
+
+
+
+ @Override
+ public JSONObject listAllOrgs(OrgInfo orgInfo,JSONObject manager) {
/* PageBounds sort = new PageBounds(Order.formString("sort_no.asc"));
return orgMapper.listsOrgWithDetail(sort);*/
+ checkBdRole(manager);
JSONObject params = orgInfo.toJsonParam();
PageList listOrg = orgMapper.listOrgWithPages(params,new PageBounds(orgInfo.getPage(),orgInfo.getLimit(),Order.formString("sort_no.asc")));
return PageListUtils.buildPageListResult(listOrg);
}
@Override
- public JSONObject getOrgDetail(int orgId) {
+ public JSONObject getOrgDetail(int orgId,JSONObject manager) {
+ checkBdRole(manager);
return orgMapper.findOne(orgId);
}
@@ -86,4 +121,15 @@ public class OrgManagerImpl implements OrgManager {
return listAllOrgs;
}
+ private void checkBdRole(JSONObject manager){
+ if(ManagerRole.BD_USER.hasRole(manager.getIntValue("role"))){
+ if(manager.getString("org_id") != null){
+ JSONObject org = orgMapper.findOne(manager.getIntValue("org_id"));
+ if(org != null && org.getIntValue("type") == 0 && org.getString("parent_org_id") != null){
+ throw new BadRequestException("Invalid Role");
+ }
+ }
+ }
+ }
+
}
diff --git a/src/main/java/au/com/royalpay/payment/manage/organizations/web/OrgManageController.java b/src/main/java/au/com/royalpay/payment/manage/organizations/web/OrgManageController.java
index 3f0b7faa3..28f4698bd 100644
--- a/src/main/java/au/com/royalpay/payment/manage/organizations/web/OrgManageController.java
+++ b/src/main/java/au/com/royalpay/payment/manage/organizations/web/OrgManageController.java
@@ -3,9 +3,11 @@ package au.com.royalpay.payment.manage.organizations.web;
import au.com.royalpay.payment.manage.organizations.beans.OrgInfo;
import au.com.royalpay.payment.manage.organizations.core.OrgManager;
import au.com.royalpay.payment.manage.permission.manager.ManagerMapping;
+import au.com.royalpay.payment.tools.CommonConsts;
import au.com.royalpay.payment.tools.permission.enums.ManagerRole;
import au.com.royalpay.payment.manage.permission.manager.RequireManager;
import au.com.royalpay.payment.tools.http.HttpUtils;
+import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import org.springframework.validation.Errors;
import org.springframework.web.bind.annotation.*;
@@ -29,10 +31,16 @@ public class OrgManageController {
return orgManager.listOrgs(detail);
}
+ @RequestMapping(value = "/orgChild",method = RequestMethod.GET)
+ @RequireManager
+ public List listOrgsWithChid(@ModelAttribute(CommonConsts.MANAGER_STATUS) JSONObject manager,OrgInfo orgInfo) {
+ return orgManager.listOrgsWithChid(manager,orgInfo);
+ }
+
@RequestMapping(value = "/listsOrg", method = RequestMethod.GET)
@RequireManager
- public JSONObject listsOrg(OrgInfo orgInfo) {
- return orgManager.listAllOrgs(orgInfo);
+ public JSONObject listsOrg(OrgInfo orgInfo,@ModelAttribute(CommonConsts.MANAGER_STATUS) JSONObject manager) {
+ return orgManager.listAllOrgs(orgInfo,manager);
}
@RequestMapping(value = "/list_all_Org", method = RequestMethod.GET)
@@ -41,15 +49,15 @@ public class OrgManageController {
return orgManager.listAllOrg();
}
- @ManagerMapping(method = RequestMethod.POST, role = ManagerRole.ADMIN)
+ @ManagerMapping(method = RequestMethod.POST, role = {ManagerRole.ADMIN,ManagerRole.BD_USER})
public JSONObject saveOrg(@RequestBody @Valid OrgInfo org, Errors errors) {
HttpUtils.handleValidErrors(errors);
return orgManager.saveNewOrg(org);
}
- @ManagerMapping(value = "/{orgId}", method = RequestMethod.GET, role = ManagerRole.ADMIN)
- public JSONObject getOrgDetail(@PathVariable int orgId) {
- return orgManager.getOrgDetail(orgId);
+ @ManagerMapping(value = "/{orgId}", method = RequestMethod.GET, role = {ManagerRole.ADMIN,ManagerRole.BD_USER})
+ public JSONObject getOrgDetail(@PathVariable int orgId,@ModelAttribute(CommonConsts.MANAGER_STATUS) JSONObject manager) {
+ return orgManager.getOrgDetail(orgId,manager);
}
@ManagerMapping(value = "/{orgId}", method = RequestMethod.PUT)
@@ -58,7 +66,7 @@ public class OrgManageController {
orgManager.updateOrg(orgId, org);
}
- @ManagerMapping(value = "/{orgId}/enable_change_rate",method = RequestMethod.PUT,role = {ManagerRole.ADMIN})
+ @ManagerMapping(value = "/{orgId}/enable_change_rate",method = RequestMethod.PUT,role = {ManagerRole.ADMIN,ManagerRole.BD_USER})
public void switchEnableChangeRate(@PathVariable int orgId, @RequestBody JSONObject enable){
boolean enabled = enable.getBooleanValue("enabled");
orgManager.switchPermission(orgId,"rate_editable",enabled);
diff --git a/src/main/java/au/com/royalpay/payment/manage/signin/core/impls/ManagerAccountServiceImpl.java b/src/main/java/au/com/royalpay/payment/manage/signin/core/impls/ManagerAccountServiceImpl.java
index 4598f9434..a8a4ef3f9 100644
--- a/src/main/java/au/com/royalpay/payment/manage/signin/core/impls/ManagerAccountServiceImpl.java
+++ b/src/main/java/au/com/royalpay/payment/manage/signin/core/impls/ManagerAccountServiceImpl.java
@@ -2,6 +2,7 @@ package au.com.royalpay.payment.manage.signin.core.impls;
import au.com.royalpay.payment.manage.mappers.financial.FinancialBDConfigMapper;
import au.com.royalpay.payment.manage.mappers.system.ManagerMapper;
+import au.com.royalpay.payment.manage.mappers.system.OrgMapper;
import au.com.royalpay.payment.tools.permission.enums.ManagerRole;
import au.com.royalpay.payment.manage.signin.beans.ManagerInfo;
import au.com.royalpay.payment.manage.signin.core.ManagerAccountsService;
@@ -22,11 +23,15 @@ import java.util.List;
public class ManagerAccountServiceImpl implements ManagerAccountsService {
@Resource
private ManagerMapper managerMapper;
+
+ @Resource
+ private OrgMapper orgMapper;
@Resource
private FinancialBDConfigMapper financialBDConfigMapper;
@Override
public List listManagers(JSONObject loginManager) {
+ checkBdRole(loginManager);
JSONObject params = new JSONObject();
if (loginManager.getInteger("org_id") != null) {
params.put("org_id", loginManager.getIntValue("org_id"));
@@ -52,7 +57,8 @@ public class ManagerAccountServiceImpl implements ManagerAccountsService {
@Override
public void saveManager(ManagerInfo manager, JSONObject loginManager) {
- if (!ManagerRole.ADMIN.hasRole(loginManager.getIntValue("role"))) {
+ checkBdRole(loginManager);
+ if (!ManagerRole.ADMIN.hasRole(loginManager.getIntValue("role")) && !ManagerRole.BD_USER.hasRole(loginManager.getIntValue("role"))) {
if (manager.isAdmin() || manager.isFinacial() || manager.isOperator() || manager.isServant() || manager.isSitemanager() || manager.isDeveloper()) {
throw new BadRequestException("Invalid Role");
}
@@ -67,12 +73,13 @@ public class ManagerAccountServiceImpl implements ManagerAccountsService {
@Override
public void modify(String userId, ManagerInfo manager, JSONObject loginManager) {
+ checkBdRole(loginManager);
JSONObject managerFromDb = managerMapper.findById(userId);
if (managerFromDb == null) {
throw new NotFoundException("manager not exists or invalid");
}
JSONObject obj = manager.accountJson(false);
- if (!ManagerRole.ADMIN.hasRole(loginManager.getIntValue("role"))) {
+ if (!ManagerRole.ADMIN.hasRole(loginManager.getIntValue("role")) && !ManagerRole.BD_USER.hasRole(loginManager.getIntValue("role"))) {
if (managerFromDb.getIntValue("org_id") != loginManager.getIntValue("org_id")) {
throw new BadRequestException("You cannot modify accounts belong to other organizations");
}
@@ -87,8 +94,9 @@ public class ManagerAccountServiceImpl implements ManagerAccountsService {
@Override
public void disable(String userId, JSONObject loginManager) {
+ checkBdRole(loginManager);
JSONObject manager = managerMapper.findById(userId);
- if (!ManagerRole.ADMIN.hasRole(loginManager.getIntValue("role"))) {
+ if (!ManagerRole.ADMIN.hasRole(loginManager.getIntValue("role")) && !ManagerRole.BD_USER.hasRole(loginManager.getIntValue("role"))){
if (manager.getIntValue("org_id") != loginManager.getIntValue("org_id")) {
throw new BadRequestException("You cannot disable accounts belong to other organizations");
}
@@ -117,4 +125,16 @@ public class ManagerAccountServiceImpl implements ManagerAccountsService {
public JSONObject getBDConfig(String bd_id){
return financialBDConfigMapper.getBdConfig(bd_id);
}
+
+ private void checkBdRole(JSONObject loginManager){
+ if(ManagerRole.BD_USER.hasRole(loginManager.getIntValue("role"))){
+ JSONObject manager = managerMapper.findById(loginManager.getString("manager_id"));
+ if(manager.getString("org_id") != null){
+ JSONObject org = orgMapper.findOne(manager.getIntValue("org_id"));
+ if(org != null && org.getIntValue("type") == 0 && org.getString("parent_org_id") != null){
+ throw new BadRequestException("Invalid Role");
+ }
+ }
+ }
+ }
}
diff --git a/src/main/java/au/com/royalpay/payment/manage/signin/core/impls/SignInAccountServiceImpl.java b/src/main/java/au/com/royalpay/payment/manage/signin/core/impls/SignInAccountServiceImpl.java
index 042a1149d..4d20ee720 100644
--- a/src/main/java/au/com/royalpay/payment/manage/signin/core/impls/SignInAccountServiceImpl.java
+++ b/src/main/java/au/com/royalpay/payment/manage/signin/core/impls/SignInAccountServiceImpl.java
@@ -32,10 +32,7 @@ import org.thymeleaf.context.Context;
import org.thymeleaf.spring4.SpringTemplateEngine;
import javax.annotation.Resource;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
/**
* account service for sign in
@@ -67,11 +64,14 @@ public class SignInAccountServiceImpl implements SignInAccountService, Applicati
@Cacheable(value = ":login:managers:", key = "''+#accountId")
public JSONObject getManager(String accountId) {
JSONObject manager = managerMapper.findById(accountId);
+ JSONObject org = null;
if (manager == null) {
throw new ForbiddenException("用户不存在或已禁用");
}
if (manager.getInteger("org_id") != null) {
- manager.put("org", orgMapper.findOne(manager.getIntValue("org_id")));
+ org = orgMapper.findOne(manager.getIntValue("org_id"));
+ manager.put("org", org);
+ manager.put("parent_org_id",org.getIntValue("parent_org_id"));
}
List funcs = permissionManager.listUserFunctions(manager.getIntValue("role"));
List funcIds = new ArrayList<>();
@@ -90,12 +90,36 @@ public class SignInAccountServiceImpl implements SignInAccountService, Applicati
modules.put(module, mod);
}
}
+ if(org != null && org.getIntValue("type")==0 && org.getString("parent_org_id") != null){
+ if(modules.containsKey("org")){
+ deleteOrgModule(modules,"org");
+ }
+ if(modules.containsKey("manager_accounts")){
+ deleteOrgModule(modules,"manager_accounts");
+ }
+ }
+ if(org != null && org.getIntValue("type")==0 && org.getString("parent_org_id") == null){
+ if(modules.containsKey("manager_accounts")){
+ deleteOrgModule(modules,"manager_accounts");
+ }
+ }
+
manager.put("available_func_ids", funcIds);
manager.put("available_func_names", funcNames);
manager.put("modules", modules.values());
manager.put("module_names", modules.keySet());
return manager;
}
+ private void deleteOrgModule(Map modules,String module){
+ Iterator iterator = modules.keySet().iterator();
+ while (iterator.hasNext()) {
+ String key = (String) iterator.next();
+ if (module.equals(key)) {
+ iterator.remove();
+ modules.remove(key);
+ }
+ }
+ }
@Override
@Cacheable(value = ":login:clients:", key = "''+#accountId")
diff --git a/src/main/java/au/com/royalpay/payment/manage/signin/web/ManagerAccountsController.java b/src/main/java/au/com/royalpay/payment/manage/signin/web/ManagerAccountsController.java
index 2d0aad18b..7e539b1a4 100644
--- a/src/main/java/au/com/royalpay/payment/manage/signin/web/ManagerAccountsController.java
+++ b/src/main/java/au/com/royalpay/payment/manage/signin/web/ManagerAccountsController.java
@@ -33,14 +33,14 @@ public class ManagerAccountsController {
// }
@RequestMapping(method = RequestMethod.GET)
- @RequireManager(role = {ManagerRole.ADMIN, ManagerRole.ACCOUNT_MANAGER})
+ @RequireManager(role = {ManagerRole.ADMIN, ManagerRole.ACCOUNT_MANAGER,ManagerRole.BD_USER})
public List listManagerss(@ModelAttribute(CommonConsts.MANAGER_STATUS) JSONObject loginManager, @RequestParam Map map) {
loginManager.putAll(map);
return managerAccountsService.listManagers(loginManager);
}
@RequestMapping(method = RequestMethod.POST)
- @RequireManager(role = {ManagerRole.ADMIN, ManagerRole.ACCOUNT_MANAGER})
+ @RequireManager(role = {ManagerRole.ADMIN, ManagerRole.ACCOUNT_MANAGER,ManagerRole.BD_USER})
public void saveManager(@RequestBody @Valid ManagerInfo manager, Errors errors, @ModelAttribute(CommonConsts.MANAGER_STATUS) JSONObject loginManager) {
HttpUtils.handleValidErrors(errors);
managerAccountsService.saveManager(manager, loginManager);
@@ -55,12 +55,12 @@ public class ManagerAccountsController {
return managerAccountsService.listBDUsers((JSONObject) JSON.toJSON(map));
}
- @ManagerMapping(value = "/{userId}", method = RequestMethod.PUT, role = {ManagerRole.ADMIN, ManagerRole.ACCOUNT_MANAGER})
+ @ManagerMapping(value = "/{userId}", method = RequestMethod.PUT, role = {ManagerRole.ADMIN, ManagerRole.ACCOUNT_MANAGER,ManagerRole.BD_USER})
public void modify(@PathVariable String userId, @RequestBody ManagerInfo manager, @ModelAttribute(CommonConsts.MANAGER_STATUS) JSONObject loginManager) {
managerAccountsService.modify(userId, manager, loginManager);
}
- @ManagerMapping(value = "/{userId}", method = RequestMethod.DELETE, role = {ManagerRole.ADMIN, ManagerRole.ACCOUNT_MANAGER})
+ @ManagerMapping(value = "/{userId}", method = RequestMethod.DELETE, role = {ManagerRole.ADMIN, ManagerRole.ACCOUNT_MANAGER,ManagerRole.BD_USER})
public void disableUser(@PathVariable String userId, @ModelAttribute(CommonConsts.MANAGER_STATUS) JSONObject loginManager) {
managerAccountsService.disable(userId, loginManager);
}
diff --git a/src/main/java/au/com/royalpay/payment/manage/tradelog/beans/TradeLogQuery.java b/src/main/java/au/com/royalpay/payment/manage/tradelog/beans/TradeLogQuery.java
index 6773cbb08..d21fded04 100644
--- a/src/main/java/au/com/royalpay/payment/manage/tradelog/beans/TradeLogQuery.java
+++ b/src/main/java/au/com/royalpay/payment/manage/tradelog/beans/TradeLogQuery.java
@@ -36,6 +36,7 @@ public class TradeLogQuery {
private int trans_type;
private boolean onlyGroup = false;
private int group_bd;
+ private String org_id;
public JSONObject toParams(String timezone) {
JSONObject params = new JSONObject();
@@ -91,6 +92,9 @@ public class TradeLogQuery {
if (getDev_id() != null) {
params.put("dev_id", getDev_id());
}
+ if (org_id != null && org_id != "ALL") {
+ params.put("org_id", org_id);
+ }
return params;
}
@@ -214,4 +218,12 @@ public class TradeLogQuery {
public void setChannel(PayChannel channel) {
this.channel = channel;
}
+
+ public String getOrg_id() {
+ return org_id;
+ }
+
+ public void setOrg_id(String org_id) {
+ this.org_id = org_id;
+ }
}
diff --git a/src/main/java/au/com/royalpay/payment/manage/tradelog/core/impls/TradeLogServiceImpl.java b/src/main/java/au/com/royalpay/payment/manage/tradelog/core/impls/TradeLogServiceImpl.java
index 6848bd064..fe9ed3449 100644
--- a/src/main/java/au/com/royalpay/payment/manage/tradelog/core/impls/TradeLogServiceImpl.java
+++ b/src/main/java/au/com/royalpay/payment/manage/tradelog/core/impls/TradeLogServiceImpl.java
@@ -18,6 +18,7 @@ import au.com.royalpay.payment.manage.mappers.payment.TransactionMapper;
import au.com.royalpay.payment.manage.mappers.system.ClientAccountMapper;
import au.com.royalpay.payment.manage.mappers.system.CustomerMapper;
import au.com.royalpay.payment.manage.mappers.system.CustomerRelationAlipayMapper;
+import au.com.royalpay.payment.manage.mappers.system.OrgMapper;
import au.com.royalpay.payment.manage.merchants.core.ClientManager;
import au.com.royalpay.payment.manage.tradelog.beans.PreRefundQueryBean;
import au.com.royalpay.payment.manage.tradelog.beans.TradeLogQuery;
@@ -119,6 +120,9 @@ public class TradeLogServiceImpl implements TradeLogService {
@Resource
private ClientCustomersMapper clientCustomersMapper;
+ @Resource
+ private OrgMapper orgMapper;
+
// @Value("classpath:/jasper/trans_flow.jasper")
// @Value("classpath:/jasper/trans_flow_new.jasper")
@Value("classpath:/jasper/partner_invoice.jasper")
@@ -176,7 +180,26 @@ public class TradeLogServiceImpl implements TradeLogService {
}
}
if (manager.getInteger("org_id") != null) {
- params.put("org_id", manager.getIntValue("org_id"));
+ if(params.getString("org_id") == null) {
+ JSONObject org = orgMapper.findOne(manager.getInteger("org_id"));
+ if(org.getString("parent_org_id") != null){
+ params.put("org_id",manager.getInteger("org_id"));
+ }else {
+ JSONObject param = new JSONObject();
+ param.put("parent_org_id", manager.getIntValue("org_id"));
+ param.put("type", 0);
+ List orgIds = new ArrayList<>();
+ List childOrgs = orgMapper.listOrgsWithChid(param);
+ if(childOrgs.size()>0){
+ for (JSONObject object : childOrgs) {
+ orgIds.add(object.getIntValue("org_id"));
+ }
+ orgIds.add(manager.getIntValue("org_id"));
+ params.put("org_ids", orgIds);
+ }
+ }
+
+ }
}
PageList logs = orderMapper.listOrders(params, new PageBounds(query.getPage(), query.getLimit(), Order.formString("create_time.desc")));
JSONObject result = PageListUtils.buildPageListResult(logs);
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 d9476cdbf..c9893b8d6 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
@@ -172,6 +172,8 @@
and o.order_id=#{order_id}
+ and p.org_id in
+ #{org_id}
and o.gateway in
#{gateway}
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 77c69f77f..59fce38fe 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
@@ -150,6 +150,8 @@
and c.org_id=#{org_id}
+ and c.org_id in
+ #{org_id}
and c.referrer_id=#{referrer_id}
and c.is_valid=1
diff --git a/src/main/resources/au/com/royalpay/payment/manage/mappers/system/OrgMapper.xml b/src/main/resources/au/com/royalpay/payment/manage/mappers/system/OrgMapper.xml
index 7c5036341..fd1772188 100644
--- a/src/main/resources/au/com/royalpay/payment/manage/mappers/system/OrgMapper.xml
+++ b/src/main/resources/au/com/royalpay/payment/manage/mappers/system/OrgMapper.xml
@@ -8,6 +8,29 @@
+
+
+
+
@@ -37,6 +60,13 @@
and org.name=#{name}
+
+ and org.parent_org_id=#{parent_org_id}
+
+
+ and (org.org_id=#{org_id} or org.parent_org_id=#{org_id})
+
+
\ No newline at end of file
diff --git a/src/main/ui/static/config/organizations/organizations.js b/src/main/ui/static/config/organizations/organizations.js
index c1ee8557a..ee9c14165 100644
--- a/src/main/ui/static/config/organizations/organizations.js
+++ b/src/main/ui/static/config/organizations/organizations.js
@@ -33,17 +33,26 @@ define(['angular', 'uiRouter', 'uiBootstrap'], function (angular) {
})
}]);
app.controller('orgsCtrl', ['$scope', '$http','commonDialog', function ($scope, $http,commonDialog ) {
- $scope.params = {type:0};
+ $scope.params = {};
+ if($scope.currentUser.org_id !=null && !angular.equals({}, $scope.currentUser.org_id)) {
+ $scope.params.org_id = $scope.currentUser.org_id;
+ }
$scope.pagination = {};
$scope.types = angular.copy(types);
$scope.listOrgs = function (page) {
var params = angular.copy( $scope.params);
params.page = page || $scope.pagination.page || 1;
$http.get('/sys/orgs/listsOrg',{params:params}).then(function (resp) {
- $scope.orgs = resp.data.data;
+ $scope.orgs_detail = resp.data.data;
$scope.pagination = resp.data.pagination;
})
};
+ if (($scope.currentUser.role & parseInt('1000011', 2)) > 0 && !$scope.currentUser.org_id) {
+ $scope.showOrg = 'Organization';
+ $http.get('/sys/orgs/list_all_Org', {params: {}}).then(function (resp) {
+ $scope.orgs = resp.data;
+ });
+ }
$scope.disableOrg = function (org) {
$scope.org =angular.copy(org);
$scope.org.is_valid = 0;
@@ -63,6 +72,9 @@ define(['angular', 'uiRouter', 'uiBootstrap'], function (angular) {
app.controller('orgDetailCtrl', ['$scope', '$http', '$state', 'Upload', '$uibModal','commonDialog', 'org', function ($scope, $http, $state, Upload,$uibModal,commonDialog, org) {
$scope.types = angular.copy(types);
$scope.org = angular.copy(org.data);
+ if ($scope.currentUser.org_id != null) {
+ $scope.org.type = 0;
+ }
$scope.uploadLogo = function (file) {
if (file == null) {
return;
@@ -183,6 +195,10 @@ define(['angular', 'uiRouter', 'uiBootstrap'], function (angular) {
});
return;
}
+ if($scope.currentUser.org_id !=null && !angular.equals({}, $scope.currentUser.org_id)) {
+ $scope.org.parent_org_id = angular.copy($scope.currentUser.org.org_id);
+ $scope.org.type = '0';
+ }
$http.post('/sys/orgs', $scope.org).then(function (resp) {
commonDialog.alert({
title: 'Succeed',
diff --git a/src/main/ui/static/config/organizations/templates/new_org.html b/src/main/ui/static/config/organizations/templates/new_org.html
index 8b9348340..0682ae4c9 100644
--- a/src/main/ui/static/config/organizations/templates/new_org.html
+++ b/src/main/ui/static/config/organizations/templates/new_org.html
@@ -64,7 +64,8 @@
required>
-
-