Merge branch 'develop'

# Conflicts:
#	pom.xml
#	src/main/java/au/com/royalpay/payment/manage/merchants/core/impls/ClientManagerImpl.java
master
yixian 5 years ago
commit 9d16507210

@ -9,7 +9,7 @@
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>manage</artifactId>
<version>2.3.43</version>
<version>2.3.45</version>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<jib-maven-plugin.version>2.4.0</jib-maven-plugin.version>

@ -13,7 +13,6 @@ import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
@ -158,7 +157,7 @@ public interface ClientManager {
JSONObject listClientBankAccounts(JSONObject manager, String clientMoniker);
JSONObject getBankAccountByClientId(int client_id);
JSONObject getBankAccountByClientId(int clientId);
void saveBankAccount(JSONObject manager, String clientMoniker, BankAccountInfo bankAccount);
@ -178,8 +177,7 @@ public interface ClientManager {
List<JSONObject> listSubClients(int clientId);
// void newSubClient(String clientMoniker, SubClientRegistry registry, JSONObject manager);
void validateClients(int client_id, JSONObject params) throws Exception;
void validateClients(int clientId, JSONObject params) throws Exception;
void updateClientBDUsers(JSONObject manager, String clientMoniker, JSONObject data) throws Exception;
@ -204,17 +202,17 @@ public interface ClientManager {
@Transactional
void updateTimeZone(JSONObject account, String clientMoniker, String timezone);
JSONObject listClientDevices(JSONObject manager, String clientMoniker, String remark, int page, int limit, String client_type, String[] client_ids);
JSONObject listClientDevices(JSONObject manager, String clientMoniker, String remark, int page, int limit, String clientType, String[] clientIds);
/**
* Id
*
* @param clientMoniker
* @param client_type
* @param client_ids
* @param clientType
* @param clientIds
* @return
*/
JSONObject listClientDeviceIds(String clientMoniker, String client_type, String[] client_ids);
JSONObject listClientDeviceIds(String clientMoniker, String clientType, String[] clientIds);
void updateDevie(JSONObject manager, String clientMoniker, String devId, String remark);
@ -222,7 +220,7 @@ public interface ClientManager {
List<JSONObject> listClientCurrentBDUsers(JSONObject manager, String clientMoniker);
JSONObject getBankInfo(JSONObject manager, String clientMoniker, String bsb_no);
JSONObject getBankInfo(JSONObject manager, String clientMoniker, String bsbNo);
void setMaxOrderAmount(JSONObject account, String clientMoniker, BigDecimal limit);
@ -246,7 +244,7 @@ public interface ClientManager {
void updateClientCleanDays(int clientId, int cleanDays);
void updateClientEmail(int clientId, String contact_email);
void updateClientEmail(int clientId, String contactEmail);
void disableClient(String clientMoniker, JSONObject manager);
@ -314,23 +312,23 @@ public interface ClientManager {
void commitToGreenChannel(String clientMoniker, JSONObject manager);
void changePaymentPage(JSONObject manager, String clientMoniker, String paypad_version);
void changePaymentPage(JSONObject manager, String clientMoniker, String paypadVersion);
void changeCBBankPaymentPage(JSONObject manager, String clientMoniker, String paypad_version);
void changeCBBankPaymentPage(JSONObject manager, String clientMoniker, String paypadVersion);
void changePaymentSuccessPage(JSONObject manager, String clientMoniker, String paysuccess_version);
void changePaymentSuccessPage(JSONObject manager, String clientMoniker, String paysuccessVersion);
void switchChildEachRefund(JSONObject manager, String clientMoniker, boolean childEachRefund);
void changeGatewayVersion(JSONObject account, boolean enable_v2);
void changeGatewayVersion(JSONObject account, boolean enableV2);
void changeVerifyIp(JSONObject account, boolean enable_v2);
void changeVerifyIp(JSONObject account, boolean enableV2);
void changePaymentPage(JSONObject account, String paypad_version);
void changePaymentPage(JSONObject account, String paypadVersion);
void changeCBBankPaymentPage(JSONObject account, String paypad_version);
void changeCBBankPaymentPage(JSONObject account, String paypadVersion);
void changeManualSettle(JSONObject account, int client_id, boolean manual_settle, String operator_id, int type, String operation);
void changeManualSettle(JSONObject account, int clientId, boolean manualSettle, String operatorId, int type, String operation);
void changeQRCodePaySurcharge(JSONObject account, boolean paySurcharge);
@ -346,21 +344,23 @@ public interface ClientManager {
void changeSurcharge(JSONObject account, JSONObject device, UpdateSurchargeDTO updateSurchargeDTO);
void refusePartner(String clientMoniker, JSONObject manager, String refuse_remark);
void refusePartner(String clientMoniker, JSONObject manager, String refuseRemark);
void cardRefusePartner(String clientMoniker, JSONObject manager, String refuse_remark);
void cardRefusePartner(String clientMoniker, JSONObject manager, String refuseRemark);
JSONArray getAllClientIds(int clientId);
void updateAppClient(JSONObject account, int client_id, AppClientBean appClientBean);
void updateAppClient(JSONObject account, int clientId, AppClientBean appClientBean);
void setSkipClearing(JSONObject account, String clientMoniker, Boolean skip_clearing, String remark);
void setSkipClearing(JSONObject account, String clientMoniker, Boolean skipClearing, String remark);
void setSurchargeMode(JSONObject account, String clientMoniker, String surcharge_mode);
void modifyMinSettle(JSONObject manager, String clientMoniker, BigDecimal minSettle);
void setSurchargeMode(JSONObject account, String clientMoniker, String surchargeMode);
JSONObject surchargeAccount(JSONObject account, String clientMoniker);
void setAllowSurchargeCredit(JSONObject account, String clientMoniker, Boolean allow_surcharge_credit);
void setAllowSurchargeCredit(JSONObject account, String clientMoniker, Boolean allowSurchargeCredit);
List<JSONObject> getAccountTransactions(JSONObject account, String clientMoniker);
@ -376,7 +376,7 @@ public interface ClientManager {
void enableGatewayAlipayOnline(JSONObject account, String clientMoniker, boolean gatewayAlipayOnline);
void setCustomerSurchargeRate(JSONObject account, String clientMoniker, BigDecimal customer_surcharge_rate);
void setCustomerSurchargeRate(JSONObject account, String clientMoniker, BigDecimal customerSurchargeRate);
void setPartnerPublicKeyConfig(JSONObject account, String ipWhitelistConfig);
@ -404,11 +404,11 @@ public interface ClientManager {
void cardCompleteAgree(String clientMoniker, JSONObject manager);
void downloadComplianceZip(@PathVariable String clientMoniker, HttpServletResponse response) throws Exception;
void downloadComplianceZip(String clientMoniker, HttpServletResponse response) throws Exception;
void downloadMWComplianceZip(@PathVariable String clientMoniker, HttpServletResponse response) throws Exception;
void downloadMWComplianceZip(String clientMoniker, HttpServletResponse response) throws Exception;
void configMasterMerchant(JSONObject manager, String clientMoniker, String master_merchant);
void configMasterMerchant(JSONObject manager, String clientMoniker, String masterMerchant);
JSONObject getSettlementLog(JSONObject manager, String clientMoniker, TradeLogQuery query);
@ -425,7 +425,7 @@ public interface ClientManager {
void validRefundPwd(JSONObject account, String pwd);
void setWeekendDelay(JSONObject account, String client_moniker, int clientId, boolean delay);
void setWeekendDelay(JSONObject account, String clientMoniker, int clientId, boolean delay);
List<JSONObject> listSubMerchantIdApplys(JSONObject manager, String clientMoniker);

@ -1813,8 +1813,8 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid
}
@Override
public JSONObject getBankAccountByClientId(int client_id) {
List<JSONObject> list = clientBankAccountMapper.clientBankAccounts(client_id);
public JSONObject getBankAccountByClientId(int clientId) {
List<JSONObject> list = clientBankAccountMapper.clientBankAccounts(clientId);
return list.isEmpty() ? new JSONObject() : list.get(0);
}
@ -2169,11 +2169,11 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid
}
@Override
public void validateClients(int client_id, JSONObject params) throws Exception {
public void validateClients(int clientId, JSONObject params) throws Exception {
if (params.containsKey("client_ids") && params.getString("client_ids") != null) {
String[] client_ids = (String[]) params.get("client_ids");
if (client_ids.length == 1) {
if (client_ids[0].equals(String.valueOf(client_id))) {
if (client_ids[0].equals(String.valueOf(clientId))) {
return;
}
}
@ -2181,7 +2181,7 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid
JSONObject clientInfo = getClientInfo(Integer.parseInt(currentClientId));
if (clientInfo.containsKey("parent_client_id")) {
int parentClientId = clientInfo.getIntValue("parent_client_id");
if (parentClientId != client_id && client_id != Integer.parseInt(currentClientId) && !listLevel3Client(client_id).contains(parentClientId)) {
if (parentClientId != clientId && clientId != Integer.parseInt(currentClientId) && !listLevel3Client(clientId).contains(parentClientId)) {
throw new Exception("partner has no permission");
}
}
@ -2617,7 +2617,7 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid
}
@Override
public JSONObject listClientDevices(JSONObject manager, String clientMoniker, String remark, int page, int limit, String client_type, String[] client_ids) {
public JSONObject listClientDevices(JSONObject manager, String clientMoniker, String remark, int page, int limit, String clientType, String[] clientIds) {
JSONObject client = getClientInfoByMoniker(clientMoniker);
if (client == null) {
throw new InvalidShortIdException();
@ -2632,11 +2632,11 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid
if (remark != null) {
params.put("remark", remark);
}
if (client_type != null) {
params.put("client_type", client_type);
if (clientType != null) {
params.put("client_type", clientType);
}
if (client_ids != null) {
params.put("client_ids", Arrays.asList(client_ids));
if (clientIds != null) {
params.put("client_ids", Arrays.asList(clientIds));
params.remove("client_id");
} else {
queryModifyClientIds(client.getIntValue("client_id"), params);
@ -2646,7 +2646,7 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid
}
@Override
public JSONObject listClientDeviceIds(String clientMoniker, String client_type, String[] client_ids) {
public JSONObject listClientDeviceIds(String clientMoniker, String clientType, String[] clientIds) {
JSONObject client = getClientInfoByMoniker(clientMoniker);
if (client == null) {
throw new InvalidShortIdException();
@ -2660,8 +2660,8 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
sdf.setTimeZone(TimeZone.getTimeZone(client.getString("timezone") != null ? client.getString("timezone") : "Australia/Melbourne"));
params.put("client_id", client.getIntValue("client_id"));
if (client_ids != null) {
params.put("client_ids", Arrays.asList(client_ids));
if (clientIds != null) {
params.put("client_ids", Arrays.asList(clientIds));
params.remove("client_id");
} else {
queryModifyClientIds(client.getIntValue("client_id"), params);
@ -2792,7 +2792,7 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid
}
@Override
public JSONObject getBankInfo(JSONObject manager, String clientMoniker, String bsb_no) {
public JSONObject getBankInfo(JSONObject manager, String clientMoniker, String bsbNo) {
JSONObject client = getClientInfoByMoniker(clientMoniker);
if (client == null) {
throw new InvalidShortIdException();
@ -2800,7 +2800,7 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid
checkOrgPermission(manager, client);
// bd451cc3e3ad66c75165dc852507e8f0
// 收费 ab9379cfdab559509bbdcdd11923489f
String url = "https://api.bank.codes/au-bsb/json/ab9379cfdab559509bbdcdd11923489f/" + bsb_no;
String url = "https://api.bank.codes/au-bsb/json/ab9379cfdab559509bbdcdd11923489f/" + bsbNo;
JSONObject res = new JSONObject();
try {
HttpRequestResult result = new HttpRequestGenerator(url, RequestMethod.GET).execute();
@ -2823,21 +2823,21 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid
}
@Override
public void setCustomerSurchargeRate(JSONObject account, String clientMoniker, BigDecimal customer_surcharge_rate) {
public void setCustomerSurchargeRate(JSONObject account, String clientMoniker, BigDecimal customerSurchargeRate) {
JSONObject client = getClientInfoByMoniker(clientMoniker);
if (client == null) {
throw new InvalidShortIdException();
}
if (customer_surcharge_rate == null) {
if (customerSurchargeRate == null) {
clientModifySupport.processClientConfigModify(new CustomerSurchargeRateModify(account, clientMoniker, null));
} else {
BigDecimal rate_value = merchantInfoProvider.clientCurrentRate(client.getIntValue("client_id"), new Date(), "Wechat").getBigDecimal("rate_value");
if (customer_surcharge_rate.compareTo(PlatformEnvironment.getEnv().getMaxCustomerSurchargeRate()) > 0
|| customer_surcharge_rate.compareTo(rate_value) <= 0) {
if (customerSurchargeRate.compareTo(PlatformEnvironment.getEnv().getMaxCustomerSurchargeRate()) > 0
|| customerSurchargeRate.compareTo(rate_value) <= 0) {
throw new ForbiddenException("Invalid Range");
}
clientModifySupport.processClientConfigModify(new CustomerSurchargeRateModify(account, clientMoniker, customer_surcharge_rate));
clientModifySupport.processClientConfigModify(new CustomerSurchargeRateModify(account, clientMoniker, customerSurchargeRate));
}
}
@ -3319,16 +3319,16 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid
}
@Override
public void configMasterMerchant(JSONObject manager, String clientMoniker, String master_merchant) {
public void configMasterMerchant(JSONObject manager, String clientMoniker, String masterMerchant) {
JSONObject client = getClientInfoByMoniker(clientMoniker);
if (client == null) {
throw new InvalidShortIdException();
}
checkOrgPermission(manager, client);
if (StringUtils.isNotBlank(master_merchant)) {
if (StringUtils.isNotBlank(masterMerchant)) {
// throw new NotFoundException("Invalid Input");
JSONObject master_client = getClientInfoByMoniker(master_merchant);
JSONObject master_client = getClientInfoByMoniker(masterMerchant);
if (master_client == null) {
throw new InvalidShortIdException();
}
@ -3455,8 +3455,8 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid
}
@Override
public void updateClientEmail(int clientId, String contact_email) {
clientMapper.updateClientEmail(clientId, contact_email);
public void updateClientEmail(int clientId, String contactEmail) {
clientMapper.updateClientEmail(clientId, contactEmail);
clientInfoCacheSupport.clearClientCache(clientId);
}
@ -4635,31 +4635,31 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid
}
@Override
public void changePaymentPage(JSONObject manager, String clientMoniker, String paypad_version) {
public void changePaymentPage(JSONObject manager, String clientMoniker, String paypadVersion) {
JSONObject client = getClientInfoByMoniker(clientMoniker);
if (client == null) {
throw new InvalidShortIdException();
}
checkOrgPermission(manager, client);
clientModifySupport.processClientConfigModify(new PaypadVersionModify(manager, clientMoniker, paypad_version));
clientModifySupport.processClientConfigModify(new PaypadVersionModify(manager, clientMoniker, paypadVersion));
clientInfoCacheSupport.clearClientMonikerConfigCache(clientMoniker);
}
@Override
public void changeCBBankPaymentPage(JSONObject manager, String clientMoniker, String paypad_version) {
public void changeCBBankPaymentPage(JSONObject manager, String clientMoniker, String paypadVersion) {
JSONObject client = getClientInfoByMoniker(clientMoniker);
if (client == null) {
throw new InvalidShortIdException();
}
checkOrgPermission(manager, client);
JSONObject clientConfig = clientConfigMapper.find(client.getIntValue("client_id"));
clientConfig.put("cbbank_paypad_version", paypad_version);
clientConfig.put("cbbank_paypad_version", paypadVersion);
clientConfigMapper.update(clientConfig);
clientInfoCacheSupport.clearClientMonikerConfigCache(clientMoniker);
}
@Override
public void changeGatewayVersion(JSONObject account, boolean enable_gateway_v2) {
public void changeGatewayVersion(JSONObject account, boolean enableV2) {
int clientId = account.getIntValue("client_id");
JSONObject client = getClientInfo(clientId);
if (client == null) {
@ -4679,17 +4679,17 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid
gatewaySignInfo.put("last_update_date", new Date());
merchantSignInfoMapper.insert(gatewaySignInfo);
}
clientModifySupport.processClientGatewaySignModify(new SwitchGatewaySignPermissionModify(account, client.getString("client_moniker"), "is_valid", enable_gateway_v2));
clientModifySupport.processClientGatewaySignModify(new SwitchGatewaySignPermissionModify(account, client.getString("client_moniker"), "is_valid", enableV2));
}
@Override
public void changeVerifyIp(JSONObject account, boolean verify_ip) {
public void changeVerifyIp(JSONObject account, boolean enableV2) {
int clientId = account.getIntValue("client_id");
JSONObject client = getClientInfo(clientId);
if (client == null) {
throw new InvalidShortIdException();
}
clientModifySupport.processClientGatewaySignModify(new SwitchGatewaySignPermissionModify(account, client.getString("client_moniker"), "verify_ip", verify_ip));
clientModifySupport.processClientGatewaySignModify(new SwitchGatewaySignPermissionModify(account, client.getString("client_moniker"), "verify_ip", enableV2));
}
@Override
@ -4724,21 +4724,19 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid
if (client == null) {
throw new InvalidShortIdException();
}
JSONObject update = new JSONObject();
update.put("client_id", client.getIntValue("client_id"));
if (StringUtils.isNotBlank(publicKey)) {
clientModifySupport.processClientGatewaySignModify(new GatewayInfoModify(account, client.getString("client_moniker"), "mch_public_key", publicKey, "重新设置商户公钥"));
}
}
@Override
public void changePaymentSuccessPage(JSONObject manager, String clientMoniker, String paysuccess_version) {
public void changePaymentSuccessPage(JSONObject manager, String clientMoniker, String paysuccessVersion) {
JSONObject client = getClientInfoByMoniker(clientMoniker);
if (client == null) {
throw new InvalidShortIdException();
}
checkOrgPermission(manager, client);
client.put("paysuccess_version", paysuccess_version);
client.put("paysuccess_version", paysuccessVersion);
clientMapper.update(client);
}
@ -4756,40 +4754,40 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid
}
@Override
public void changePaymentPage(JSONObject account, String paypad_version) {
public void changePaymentPage(JSONObject account, String paypadVersion) {
int clientId = account.getIntValue("client_id");
JSONObject client = getClientInfo(clientId);
if (client == null) {
throw new InvalidShortIdException();
}
clientModifySupport.processClientConfigModify(new PaypadVersionModify(account, client.getString("client_moniker"), paypad_version));
clientModifySupport.processClientConfigModify(new PaypadVersionModify(account, client.getString("client_moniker"), paypadVersion));
clientInfoCacheSupport.clearClientMonikerConfigCache(client.getString("client_moniker"));
}
@Override
public void changeCBBankPaymentPage(JSONObject account, String paypad_version) {
public void changeCBBankPaymentPage(JSONObject account, String paypadVersion) {
int clientId = account.getIntValue("client_id");
JSONObject client = getClientInfo(clientId);
if (client == null) {
throw new InvalidShortIdException();
}
JSONObject clientConfig = clientConfigMapper.find(client.getIntValue("client_id"));
clientConfig.put("cbbank_paypad_version", paypad_version);
clientConfig.put("cbbank_paypad_version", paypadVersion);
clientConfigMapper.update(clientConfig);
clientInfoCacheSupport.clearClientMonikerConfigCache(client.getString("client_moniker"));
}
@Override
@Transactional
public void changeManualSettle(JSONObject account, int client_id, boolean manual_settle, String operator_id, int type, String operation) {
JSONObject client = getClientInfo(client_id);
public void changeManualSettle(JSONObject account, int clientId, boolean manualSettle, String operatorId, int type, String operation) {
JSONObject client = getClientInfo(clientId);
if (client == null) {
throw new BadRequestException("merchant not found");
}
clientModifySupport.processClientConfigModify(new SwitchPermissionModify(account, client.getString("client_moniker"), "manual_settle", manual_settle));
clientModifySupport.processClientConfigModify(new SwitchPermissionModify(account, client.getString("client_moniker"), "manual_settle", manualSettle));
JSONObject actClientLog = new JSONObject();
actClientLog.put("client_id", client_id);
actClientLog.put("operator_id", operator_id);
actClientLog.put("client_id", clientId);
actClientLog.put("operator_id", operatorId);
actClientLog.put("operation", operation);
actClientLog.put("create_time", new Date());
actClientLog.put("operator_type", type);
@ -4895,18 +4893,18 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid
}
@Override
public void refusePartner(String clientMoniker, JSONObject manager, String refuse_remark) {
public void refusePartner(String clientMoniker, JSONObject manager, String refuseRemark) {
JSONObject client = getClientInfoByMoniker(clientMoniker);
if (client == null) {
throw new InvalidShortIdException();
}
int open_status = client.getIntValue("open_status");
int openStatus = client.getIntValue("open_status");
AuditModify auditModify = new AuditModify(manager, clientMoniker, client.getInteger("approve_result"), manager.getString("manager_id"), new Date());
if (open_status == 1) {
if (openStatus == 1) {
auditModify.setOpen_status(null);
} else {
auditModify.setOpen_status(open_status - 1);
auditModify.setOpen_status(openStatus - 1);
}
if (client.getInteger("approve_result") == null || client.getIntValue("approve_result") == 4) {
auditModify.setApprove_result(5);
@ -4914,23 +4912,22 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid
if (client.getIntValue("source") == 4) {
auditModify.setApprove_result(5);
}
if (refuse_remark != null && !refuse_remark.isEmpty()) {
auditModify.setRefuse_remark(refuse_remark);
if (refuseRemark != null && !refuseRemark.isEmpty()) {
auditModify.setRefuse_remark(refuseRemark);
}
saveClientAuditProcess(client.getIntValue("client_id"), open_status, client.getInteger("open_status"), "打回," + refuse_remark, manager, 1);
saveClientAuditProcess(client.getIntValue("client_id"), openStatus, client.getInteger("open_status"), "打回," + refuseRemark, manager, 1);
clientModifySupport.processClientModify(auditModify);
try {
// sendMessageToBD(client, refuse_remark);
if (client.getIntValue("source") == 4) {
String contact_phone = client.getString("contact_phone");
if (contact_phone.startsWith("+61")) {
String contactPhone = client.getString("contact_phone");
if (contactPhone.startsWith("+61")) {
ArrayList<String> param = new ArrayList<>();
param.add(refuse_remark);
param.add(refuseRemark);
try {
smsSender.getSender().sendWithParam("61", contact_phone.replace("+61", ""), REFUSE_CLIENT_TEMPLID, param, "RoyalPay", "", "");
smsSender.getSender().sendWithParam("61", contactPhone.replace("+61", ""), REFUSE_CLIENT_TEMPLID, param, "RoyalPay", "", "");
} catch (Exception ignore) {
throw new ServerErrorException("Phone number is wrong :" + contact_phone);
throw new ServerErrorException("Phone number is wrong :" + contactPhone);
}
}
}
@ -4938,48 +4935,46 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid
gatewayMerchantApply.notifyOrgMerchantStatus(client);
}
} catch (Exception e) {
logger.error("RefusePartnerError=======:" + clientMoniker + "," + e.getMessage());
logger.error("RefusePartnerError=======:{},{}", clientMoniker, e.getMessage());
}
}
@Override
public void cardRefusePartner(String clientMoniker, JSONObject manager, String refuse_remark) {
public void cardRefusePartner(String clientMoniker, JSONObject manager, String refuseRemark) {
JSONObject client = getClientInfoByMoniker(clientMoniker);
if (client == null) {
throw new InvalidShortIdException();
}
Integer clientId = client.getInteger("client_id");
JSONObject cardFlowInfo = sysClientUpayProfileMapper.findInfo(clientId);
Integer open_status = null;
Integer openStatus = null;
if (null != cardFlowInfo) {
open_status = cardFlowInfo.getIntValue("upay_open_status");
if (open_status == 1) {
openStatus = cardFlowInfo.getIntValue("upay_open_status");
if (openStatus == 1) {
cardFlowInfo.put("upay_open_status", null);
} else {
cardFlowInfo.put("upay_open_status", open_status - 1);
cardFlowInfo.put("upay_open_status", openStatus - 1);
}
if (cardFlowInfo.getIntValue("upay_approve_result") == 4 || client.getIntValue("source") == 4) {
cardFlowInfo.put("upay_approve_result", 5);
}
if (refuse_remark != null && !refuse_remark.isEmpty()) {
cardFlowInfo.put("upay_refuse_remark", refuse_remark);
}
} else {
cardFlowInfo.put("upay_open_status", null);
if (refuseRemark != null && !refuseRemark.isEmpty()) {
cardFlowInfo.put("upay_refuse_remark", refuseRemark);
}
saveClientAuditProcess(client.getIntValue("client_id"), open_status, cardFlowInfo.getIntValue("open_status"), "打回," + refuse_remark, manager, 2);
saveClientAuditProcess(client.getIntValue("client_id"), openStatus, cardFlowInfo.getIntValue("open_status"), "打回," + refuseRemark, manager, 2);
sysClientUpayProfileMapper.update(cardFlowInfo);
}
try {
if (client.getIntValue("source") == 4) {
String contact_phone = client.getString("contact_phone");
if (contact_phone.startsWith("+61")) {
String contactPhone = client.getString("contact_phone");
if (contactPhone.startsWith("+61")) {
ArrayList<String> param = new ArrayList<>();
param.add(refuse_remark);
param.add(refuseRemark);
try {
smsSender.getSender().sendWithParam("61", contact_phone.replace("+61", ""), REFUSE_CLIENT_TEMPLID, param, "RoyalPay", "", "");
smsSender.getSender().sendWithParam("61", contactPhone.replace("+61", ""), REFUSE_CLIENT_TEMPLID, param, "RoyalPay", "", "");
} catch (Exception ignore) {
throw new ServerErrorException("Phone number is wrong :" + contact_phone);
throw new ServerErrorException("Phone number is wrong :" + contactPhone);
}
}
}
@ -4987,36 +4982,36 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid
gatewayMerchantApply.notifyOrgMerchantStatus(client);
}
} catch (Exception e) {
logger.error("RefusePartnerError=======:" + clientMoniker + "," + e.getMessage());
logger.error("RefusePartnerError=======:{},{}", clientMoniker, e.getMessage());
}
}
@Override
@Cacheable(value = ":all_clients:", key = "''+#clientId")
public JSONArray getAllClientIds(int clientId) {
JSONArray client_ids = new JSONArray();
JSONArray clientIds = new JSONArray();
List<JSONObject> children = clientMapper.listChildClients(clientId);
client_ids.add(String.valueOf(clientId));
clientIds.add(String.valueOf(clientId));
if (!children.isEmpty()) {
for (JSONObject client : children) {
client_ids.add(client.getString("client_id"));
clientIds.add(client.getString("client_id"));
}
}
return client_ids;
return clientIds;
}
@Override
public void updateAppClient(JSONObject account, int client_id, AppClientBean appClientBean) {
JSONObject client = getClientInfo(client_id);
public void updateAppClient(JSONObject account, int clientId, AppClientBean appClientBean) {
JSONObject client = getClientInfo(clientId);
JSONObject updateObj = appClientBean.updateObject();
if (updateObj.size() > 0) {
updateObj.put("client_id", client_id);
updateObj.put("client_id", clientId);
clientMapper.update(updateObj);
}
JSONObject clientLegal = appClientBean.legalObject();
if (clientLegal.size() > 0) {
clientLegal.put("client_id", client_id);
JSONObject oldClienetLegal = sysClientLegalPersonMapper.findRepresentativeInfo(client_id);
clientLegal.put("client_id", clientId);
JSONObject oldClienetLegal = sysClientLegalPersonMapper.findRepresentativeInfo(clientId);
if (oldClienetLegal == null) {
sysClientLegalPersonMapper.save(clientLegal);
} else {
@ -5024,7 +5019,7 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid
}
}
if (appClientBean.getCustomerSurchargeRate() != null) {
BigDecimal customerSurchargeRate = new BigDecimal(appClientBean.getCustomerSurchargeRate()).setScale(2, RoundingMode.HALF_DOWN);
BigDecimal customerSurchargeRate = BigDecimal.valueOf(appClientBean.getCustomerSurchargeRate()).setScale(2, RoundingMode.HALF_DOWN);
BigDecimal rateValue = merchantInfoProvider.clientCurrentRate(client.getIntValue("client_id"), new Date(), "Wechat").getBigDecimal("rate_value");
if (customerSurchargeRate.compareTo(PlatformEnvironment.getEnv().getMaxCustomerSurchargeRate()) > 0
|| customerSurchargeRate.compareTo(rateValue) <= 0) {
@ -5032,19 +5027,19 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid
}
setCustomerSurchargeRate(account, client.getString("client_moniker"), customerSurchargeRate);
}
clientInfoCacheSupport.clearClientCache(client_id);
clientInfoCacheSupport.clearClientCache(clientId);
}
@Override
@Transactional
public void setSkipClearing(JSONObject account, String clientMoniker, Boolean skip_clearing, String remark) {
public void setSkipClearing(JSONObject account, String clientMoniker, Boolean skipClearing, String remark) {
JSONObject client = getClientInfoByMoniker(clientMoniker);
if (client == null) {
throw new InvalidShortIdException();
}
clientModifySupport.processClientConfigModify(new SwitchPermissionModify(account, clientMoniker, "skip_clearing", skip_clearing));
clientModifySupport.processClientConfigModify(new SwitchPermissionModify(account, clientMoniker, "skip_clearing", skipClearing));
if (!skip_clearing) {
if (Boolean.TRUE.equals(skipClearing)) {
if ("".equals(remark) || remark == null) {
throw new ServerErrorException("请填写关闭清算原因");
}
@ -5054,22 +5049,28 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid
}
client.put("skip_clearing", skip_clearing);
// if (client.getString("rpay_enterprise_id") != null) {
// rpayApi.switchMerchantSettle(client);
// }
client.put("skip_clearing", skipClearing);
}
@Override
public void modifyMinSettle(JSONObject manager, String clientMoniker, BigDecimal minSettle) {
JSONObject client = getClientInfoByMoniker(clientMoniker);
if (client == null) {
throw new InvalidShortIdException();
}
clientModifySupport.processClientConfigModify(new ClientMinSettleModify(manager, clientMoniker, minSettle));
}
@Override
@Transactional
public void setSurchargeMode(JSONObject account, String clientMoniker, String surcharge_mode) {
public void setSurchargeMode(JSONObject account, String clientMoniker, String surchargeMode) {
JSONObject client = getClientInfoByMoniker(clientMoniker);
if (client == null) {
throw new InvalidShortIdException();
}
clientModifySupport.processClientModify(new SurchargeModeModify(account, clientMoniker, surcharge_mode));
clientModifySupport.processClientModify(new SurchargeModeModify(account, clientMoniker, surchargeMode));
if ("distributed".equals(surcharge_mode)) {
if ("distributed".equals(surchargeMode)) {
JSONObject surchargeAccount = clientsSurchargeAccountsMapper.find(client.getIntValue("client_id"));
if (surchargeAccount == null) {
@ -5094,12 +5095,12 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid
@Override
@Transactional
public void setAllowSurchargeCredit(JSONObject account, String clientMoniker, Boolean allow_surcharge_credit) {
public void setAllowSurchargeCredit(JSONObject account, String clientMoniker, Boolean allowSurchargeCredit) {
JSONObject client = getClientInfoByMoniker(clientMoniker);
if (client == null) {
throw new InvalidShortIdException();
}
clientModifySupport.processClientModify(new SwitchAllowSurchargeCreditModify(account, clientMoniker, "allow_surcharge_credit", allow_surcharge_credit));
clientModifySupport.processClientModify(new SwitchAllowSurchargeCreditModify(account, clientMoniker, "allow_surcharge_credit", allowSurchargeCredit));
}
@Override

@ -0,0 +1,27 @@
package au.com.royalpay.payment.manage.merchants.entity.impls;
import au.com.royalpay.payment.manage.merchants.entity.ClientModify;
import com.alibaba.fastjson.JSONObject;
import java.math.BigDecimal;
public class ClientMinSettleModify extends ClientModify {
private final BigDecimal minSettle;
public ClientMinSettleModify(JSONObject account, String clientMoniker, BigDecimal minSettle) {
super(account, clientMoniker);
this.minSettle = minSettle;
}
@Override
protected String business() {
return "设置起结金额:" + minSettle.toPlainString();
}
@Override
protected JSONObject getModifyResult() {
JSONObject modify = new JSONObject();
modify.put("min_settle", minSettle);
return modify;
}
}

@ -10,6 +10,7 @@ import au.com.royalpay.payment.manage.pos.datasource.ReadOnlyConnection;
import au.com.royalpay.payment.manage.tradelog.beans.TradeLogQuery;
import au.com.royalpay.payment.manage.tradelog.core.TradeLogService;
import au.com.royalpay.payment.tools.CommonConsts;
import au.com.royalpay.payment.tools.exceptions.BadRequestException;
import au.com.royalpay.payment.tools.http.HttpUtils;
import au.com.royalpay.payment.tools.merchants.beans.QRCodeConfig;
import au.com.royalpay.payment.tools.permission.enums.ManagerRole;
@ -22,7 +23,9 @@ import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import java.io.IOException;
import java.io.OutputStream;
import java.math.BigDecimal;
import java.util.List;
import java.util.Optional;
/**
* Created by yixian on 2016-06-27.
@ -449,6 +452,15 @@ public class PartnerManageController {
clientManager.setSkipClearing(manager, clientMoniker, skip_clearing.getBooleanValue("skip_clearing"), skip_clearing.getString("remark"));
}
@ManagerMapping(value = "/{clientMoniker}/min_settle", method = RequestMethod.PUT, role = {ManagerRole.ADMIN, ManagerRole.OPERATOR, ManagerRole.FINANCIAL_STAFF})
public void setClientMinSettle(@PathVariable String clientMoniker, @ModelAttribute(CommonConsts.MANAGER_STATUS) JSONObject manager, @RequestBody JSONObject data) {
BigDecimal minSettle = Optional.ofNullable(data.getBigDecimal("min_settle")).orElse(BigDecimal.ZERO);
if (minSettle.compareTo(BigDecimal.ZERO) < 0) {
throw new BadRequestException("min settle must not be less than 0");
}
clientManager.modifyMinSettle(manager, clientMoniker, minSettle);
}
@ManagerMapping(value = "/{clientMoniker}/surcharge_mode", method = RequestMethod.PUT, role = {ManagerRole.ADMIN, ManagerRole.OPERATOR})
public void updateSurchargeMode(@ModelAttribute(CommonConsts.MANAGER_STATUS) JSONObject manager, @PathVariable String clientMoniker, @RequestBody JSONObject surcharge_mode) {
clientManager.setSurchargeMode(manager, clientMoniker, surcharge_mode.getString("surcharge_mode"));

@ -290,7 +290,7 @@
<select id="analysisTransFlow" resultType="com.alibaba.fastjson.JSONObject">
SELECT
count(DISTINCT o.order_id) order_count,
count(t.transaction_id) order_count,
ifnull(sum(if(t.transaction_type='Credit' and t.refund_id is null and t.system_generate=0 and
o.currency!='CNY',o.display_amount,0)),0)
display_amount,

@ -69,7 +69,7 @@ define(['angular', 'angularSanitize', 'angularAnimate', 'angularMessages', 'uiRo
if ($scope.currentUser.role == 1 || $scope.currentUser.role == 2) {
$scope.getAgStatus();
}
$scope.loadPartnerNotice();
}, function (resp) {
if (resp.status == 403) {
location.href = 'login.html?f=' + encodeURIComponent(location.href);
@ -100,7 +100,6 @@ define(['angular', 'angularSanitize', 'angularAnimate', 'angularMessages', 'uiRo
}
})
};
$scope.loadPartnerNotice();
$scope.loadSignEvents = function () {
$http.get('/client/partner_info/sign_events').then(function (resp) {

@ -142,8 +142,11 @@ define(['angular', 'decimal', 'uiRouter', 'angularEcharts', '../../analysis/repo
}]);
app.controller('platformRevenueRootCtrl', ['$scope', '$http', '$filter', 'chartParser', function ($scope, $http, $filter, chartParser) {
$scope.params = {year: new Date().getFullYear()};
$scope.availableYears = [new Date().getFullYear() - 1, new Date().getFullYear()];
$scope.availableYears = [];
var years = new Date().getFullYear() - 2016;
for( var i = years ; i>=0 ; i-- ){
$scope.availableYears.push(new Date().getFullYear() - i) ;
}
$scope.initMonth = function (year) {
$scope.months = [];
for (var i = 1; i < 13; i++) {

@ -2500,7 +2500,7 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter
}]);
app.controller('partnerRatesCtrl', ['$scope', '$rootScope', '$http', '$uibModal', 'commonDialog', '$sce', '$state', function ($scope, $rootScope, $http, $uibModal, commonDialog, $sce, $state) {
$scope.bankCtrl = {edit: true, rate_name: 'Wechat'};
$scope.bankCtrl = {edit: true, rate_name: 'Wechat', modify_min_settle: false};
$scope.init = {
skip_clearing: false,
tax_in_surcharge: false,
@ -2514,7 +2514,7 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter
});
};
$scope.switchSurchargeMode = function () {
if ($scope.partner.surcharge_mode == "balance") {
if ($scope.partner.surcharge_mode === "balance") {
commonDialog.confirm({
title: 'Warning',
content: '启用收支分离模式清算将使消费者支付手续费模式失效,请确认是否切换?'
@ -2540,11 +2540,18 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter
})
})
}
}
};
$scope.modifyMinSettle = function () {
$http.put('/sys/partners/' + $scope.partner.client_moniker + '/min_settle', {min_settle: $scope.partner.min_settle}).then(function () {
commonDialog.alert({title: 'Success', content: '修改起结金额成功', type: 'success'});
}, function (resp) {
commonDialog.alert({title: 'Error', content: resp.data.message, type: 'error'});
})
};
$scope.getBalance = function () {
$scope.surcharge = {};
if ($scope.partner.surcharge_mode != undefined && $scope.partner.surcharge_mode == "distributed") {
if ($scope.partner.surcharge_mode != undefined && $scope.partner.surcharge_mode === "distributed") {
$http.get('/sys/partners/' + $scope.partner.client_moniker + '/surcharge_account').then(function (resp) {
$scope.surcharge = resp.data;
})
@ -2567,12 +2574,12 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter
$scope.init.skip_clearing = true;
return;
}
if (!skipClearing) {
if (skipClearing) {
commonDialog.confirm({
title: 'Warning',
content: 'This operation will switch skip clearing status. Are you sure?'
}).then(function () {
commonDialog.inputText({title: '请输入关闭跳过清算的原因'}).then(function (text) {
commonDialog.inputText({title: '请输入跳过清算的原因'}).then(function (text) {
$http.put('/sys/partners/' + $scope.partner.client_moniker + '/skip_clearing', {
skip_clearing: skipClearing,
remark: text

@ -76,6 +76,22 @@
switch-change="switchPreSettle(partner.enable_presettle)">
</div>
</div>
<div class="form-group" ng-if="'modify_min_settle'|withFunc">
<label class="col-sm-4" for="minSettleEdit">Min Settle</label>
<div class="col-sm-6">
<p ng-if="!bankCtrl.modify_min_settle" class="form-control-static">
{{partner.min_settle||'Not Configure'}}
<a role="button" ng-click="bankCtrl.modify_min_settle=true"><i class="fa fa-edit"></i></a>
</p>
<div class="input-group" ng-if="bankCtrl.modify_min_settle">
<input ng-model="partner.min_settle" type="number" id="minSettleEdit" min="0">
<div class="input-group-btn">
<button class="btn btn-success" ng-click="modifyMinSettle()"><i class="fa fa-check"></i>
</button>
</div>
</div>
</div>
</div>
<div class="form-group">
<label class="col-sm-4">Manual Settle</label>

Loading…
Cancel
Save