Merge branch 'hotfix-add-copy-upay-profile' into develop

master
yixian 5 years ago
commit 5b7bae6caf

@ -0,0 +1,8 @@
package au.com.royalpay.payment.manage.merchants.core;
import au.com.royalpay.payment.channels.rpaypaymentsvc.runtime.request.entities.RPayMerchantEntity;
import com.alibaba.fastjson.JSONObject;
public interface MerchantChannelPermissionService {
RPayMerchantEntity copyMerchantWarriorConfig(JSONObject manager, String targetClientMoniker, String sourceClientMoniker);
}

@ -0,0 +1,81 @@
package au.com.royalpay.payment.manage.merchants.core.impls;
import au.com.royalpay.payment.channels.rpaypaymentsvc.mappers.RPayMerchantMapper;
import au.com.royalpay.payment.channels.rpaypaymentsvc.runtime.request.entities.RPayMerchantEntity;
import au.com.royalpay.payment.manage.mappers.system.ClientRateMapper;
import au.com.royalpay.payment.manage.mappers.system.SysClientUpayProfileMapper;
import au.com.royalpay.payment.manage.merchants.core.ClientManager;
import au.com.royalpay.payment.manage.merchants.core.MerchantChannelPermissionService;
import au.com.royalpay.payment.tools.defines.PayChannel;
import au.com.royalpay.payment.tools.exceptions.BadRequestException;
import au.com.royalpay.payment.tools.exceptions.NotFoundException;
import au.com.royalpay.payment.tools.merchants.core.MerchantInfoProvider;
import au.com.royalpay.payment.tools.merchants.exceptions.NoRateConfigException;
import com.alibaba.fastjson.JSONObject;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.Date;
@Service
public class MerchantChannelPermissionServiceImpl implements MerchantChannelPermissionService {
@Resource
private MerchantInfoProvider merchantInfoProvider;
@Resource
private ClientManager clientManager;
@Resource
private SysClientUpayProfileMapper sysClientUpayProfileMapper;
@Resource
private RPayMerchantMapper rPayMerchantMapper;
@Resource
private ClientRateMapper clientRateMapper;
@Override
@Transactional
public RPayMerchantEntity copyMerchantWarriorConfig(JSONObject manager, String targetClientMoniker, String sourceClientMoniker) {
JSONObject targetMerchant = merchantInfoProvider.getClientInfoByMoniker(targetClientMoniker);
if (targetMerchant == null) {
throw new NotFoundException("Merchant not found:" + targetClientMoniker);
}
JSONObject sourceMerchant = merchantInfoProvider.getClientInfoByMoniker(sourceClientMoniker);
if (sourceMerchant == null) {
throw new NotFoundException("Merchant not found:" + sourceClientMoniker);
}
int sourceClientId = sourceMerchant.getIntValue("client_id");
int targetClientId = targetMerchant.getIntValue("client_id");
JSONObject targetProfile = sysClientUpayProfileMapper.findInfo(targetClientId);
if (targetProfile == null) {
JSONObject sourceProfile = sysClientUpayProfileMapper.findInfo(sourceClientId);
if (sourceProfile == null) {
throw new BadRequestException("Missing merchant's UPay profile");
}
targetProfile = new JSONObject(sourceProfile);
targetProfile.put("client_id", targetClientId);
targetProfile.put("client_moniker", targetMerchant.getString("client_moniker"));
sysClientUpayProfileMapper.save(targetProfile);
}
RPayMerchantEntity targetRPayMch = rPayMerchantMapper.findMerchant(targetClientId);
if (targetRPayMch == null) {
RPayMerchantEntity sourceRPayMch = rPayMerchantMapper.findMerchant(sourceClientId);
if (sourceRPayMch == null) {
throw new BadRequestException("Source merchant not enabled card payment");
}
targetRPayMch = sourceRPayMch;
targetRPayMch.setClientId(targetMerchant.getIntValue("client_id"));
targetRPayMch.setClientMoniker(targetMerchant.getString("client_moniker"));
rPayMerchantMapper.save(targetRPayMch);
}
clientManager.switchPermission(manager, targetClientMoniker, "enable_rpaypmt_card", sourceMerchant.getBooleanValue("enable_rpaypmt_card"));
clientManager.switchPermission(manager, targetClientMoniker, "enable_rpaypmt_dd", sourceMerchant.getBooleanValue("enable_rpaypmt_dd"));
try {
merchantInfoProvider.clientCurrentRate(targetClientId, new Date(), PayChannel.RPAY_CHANNEL_CARD.getChannelCode());
} catch (NoRateConfigException e) {
JSONObject rate = merchantInfoProvider.clientCurrentRate(sourceClientId, new Date(), PayChannel.RPAY_CHANNEL_CARD.getChannelCode());
rate.put("client_id", targetClientId);
rate.remove("client_rate_id");
clientRateMapper.saveRate(rate);
}
return targetRPayMch;
}
}

@ -5,6 +5,7 @@ import au.com.royalpay.payment.core.exceptions.InvalidShortIdException;
import au.com.royalpay.payment.manage.dev.core.MerchantLocationService;
import au.com.royalpay.payment.manage.merchants.beans.*;
import au.com.royalpay.payment.manage.merchants.core.ClientManager;
import au.com.royalpay.payment.manage.merchants.core.MerchantChannelPermissionService;
import au.com.royalpay.payment.manage.merchants.core.bank.AustraliaBankClientNullException;
import au.com.royalpay.payment.manage.permission.manager.ManagerMapping;
import au.com.royalpay.payment.manage.permission.manager.RequireManager;
@ -41,6 +42,8 @@ public class PartnerManageController {
@Resource
private TradeLogService tradeLogService;
@Resource
private MerchantChannelPermissionService merchantChannelPermissionService;
@Resource
private MerchantLocationService merchantLocationService;
@RequestMapping(method = RequestMethod.GET)
@ -441,7 +444,7 @@ public class PartnerManageController {
@ModelAttribute(CommonConsts.MANAGER_STATUS) JSONObject manager) {
try {
return clientManager.getBankInfo(manager, clientMoniker, bsbNo);
}catch (AustraliaBankClientNullException e){
} catch (AustraliaBankClientNullException e) {
throw new InvalidShortIdException();
}
}
@ -850,13 +853,13 @@ public class PartnerManageController {
@ManagerMapping(value = "/{clientMoniker}/get_merchant_ids/{merchantAppId}", method = RequestMethod.PUT, role = {ManagerRole.OPERATOR, ManagerRole.ADMIN})
public void changeSubMerchantApplication(@PathVariable("clientMoniker") String clientMoniker, @PathVariable("merchantAppId") String merchantAppId,
@RequestBody NewSubMerchantIdApply subMerchantIdApply, @ModelAttribute(CommonConsts.MANAGER_STATUS) JSONObject manager) {
clientManager.changeApplicationSubMerchantById(clientMoniker, merchantAppId,subMerchantIdApply,manager);
@RequestBody NewSubMerchantIdApply subMerchantIdApply, @ModelAttribute(CommonConsts.MANAGER_STATUS) JSONObject manager) {
clientManager.changeApplicationSubMerchantById(clientMoniker, merchantAppId, subMerchantIdApply, manager);
}
@ManagerMapping(value = "/{clientMoniker}/get_merchant_ids/{subMerchantId}/status", method = RequestMethod.GET, role = {ManagerRole.OPERATOR, ManagerRole.ADMIN})
public JSONObject querySubMerchantStatus(@PathVariable("clientMoniker") String clientMoniker,@PathVariable("subMerchantId") String subMerchantId){
return clientManager.querySubMerchantStatus(clientMoniker,subMerchantId);
public JSONObject querySubMerchantStatus(@PathVariable("clientMoniker") String clientMoniker, @PathVariable("subMerchantId") String subMerchantId) {
return clientManager.querySubMerchantStatus(clientMoniker, subMerchantId);
}
@ManagerMapping(value = "/{clientMoniker}/register/alipay_gms", method = RequestMethod.POST, role = {ManagerRole.OPERATOR, ManagerRole.ADMIN})
@ -1031,6 +1034,12 @@ public class PartnerManageController {
return clientManager.queryMWMerchantIdStatus(clientMoniker, manager);
}
@ManagerMapping(value = "/{clientMoniker}/copy_mw_config", method = RequestMethod.POST, role = {ManagerRole.DEVELOPER})
public RPayMerchantEntity copyMWConfig(@PathVariable String clientMoniker, @ModelAttribute(CommonConsts.MANAGER_STATUS) JSONObject manager,
@RequestBody JSONObject body) {
return merchantChannelPermissionService.copyMerchantWarriorConfig(manager, clientMoniker, body.getString("client_moniker"));
}
@ManagerMapping(value = "/{clientMoniker}/query/mw_info", method = RequestMethod.GET, role = {ManagerRole.OPERATOR, ManagerRole.ADMIN})
public RPayMerchantEntity queryMWMerchantInfo(@PathVariable String clientMoniker, @ModelAttribute(CommonConsts.MANAGER_STATUS) JSONObject manager) {
return clientManager.queryMWMerchantInfo(clientMoniker, manager);

@ -5,8 +5,8 @@ spring:
master:
driver-class-name: com.mysql.cj.jdbc.Driver
jdbc-url: jdbc:mysql://${spring.datasource.host}/${spring.datasource.schema-name}?useUnicode=true&characterEncoding=utf8&useSSL=false
password: read0nly
username: readonly
password: ZOIBhellor0yalpay
username: root
schema-name: royalpay_production
slave:
driver-class-name: com.mysql.cj.jdbc.Driver

@ -106,7 +106,7 @@ define(['../app', 'angular'], function (app, angular) {
}
},
controller:['$scope','cfg',function ($scope, cfg) {
$scope.title = cfg.title || 'Input Amount';
$scope.title = cfg.title || 'Input Text';
$scope.data = {};
$scope.submit = function () {
$scope.$close($scope.data.text);

@ -5685,6 +5685,21 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter
});
};
$scope.copyMWProfile = function () {
commonDialog.inputText({title:'请输入复制来源商户编码'}).then(function (text) {
$http.put('/sys/partners/' + $scope.partner.client_moniker + '/copy_mw_config',{client_moniker: text}).then(function (resp) {
commonDialog.alert({
title: 'Success',
content: 'Modify successfully',
type: 'success'
});
$scope.loadPartnerInfo();
},function (resp) {
commonDialog.alert({ title: 'Error', content: resp.data.message, type: 'error' });
})
});
};
// $scope.showMoreMerchantInfo = false;
// $scope.hideMerchantInfo = function () {
// $scope.showMoreMerchantInfo = !$scope.showMoreMerchantInfo;

@ -281,6 +281,11 @@
<i class="fa fa-plus"></i>
Apply
</button>
<button role="button" class="btn btn-info" title="Copy From other merchant"
ng-click="copyMWProfile()" ng-if="'copy_mw_config'|withFunc">
<i class="fa fa-copy"></i>
Copy
</button>
</div>
</div>
<div class="panel-body">

@ -153,6 +153,7 @@
<p><label class="control-label" style="cursor: pointer">Payer Card Information</label></p>
</div>
<div ng-if="showPayerCardInfo">
<p class="tradeCardInfo"><label style="padding-right: 20%;">Card Holder Name: </label> {{order.name}}</p>
<p class="tradeCardInfo"><label style="padding-right: 20%;">Card Bank: </label> {{order.card_bank}}</p>
<p class="tradeCardInfo"><label style="padding-right: 20%;">Card Type: </label> {{order.card_type}}</p>
<p class="tradeCardInfo"><label style="padding-right: 20%;">Card Alias: </label> {{order.card_alias}}</p>

@ -0,0 +1,30 @@
package au.com.royalpay.payment.manage.merchants.core.impls;
import au.com.royalpay.payment.manage.mappers.system.ManagerMapper;
import au.com.royalpay.payment.manage.merchants.core.MerchantChannelPermissionService;
import com.alibaba.fastjson.JSONObject;
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;
@RunWith(SpringRunner.class)
@SpringBootTest
@ActiveProfiles({"proxy","common", "alipay", "wechat", "rpay", "rppaysvc"})
public class MerchantChannelPermissionServiceImplTest {
@Resource
private MerchantChannelPermissionService merchantChannelPermissionService;
@Resource
private ManagerMapper managerMapper;
@Test
public void test() {
JSONObject manager = managerMapper.findByLoginId("yixian");
merchantChannelPermissionService.copyMerchantWarriorConfig(manager, "DV11", "DV02");
}
}
Loading…
Cancel
Save