add copy upay profile api

master
yixian 4 years ago
parent 15bf9390f3
commit dabc492fa9

@ -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,73 @@
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.RateMapper;
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.merchants.core.MerchantInfoProvider;
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);
JSONObject sourceMerchant = merchantInfoProvider.getClientInfoByMoniker(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"));
JSONObject targetRate = merchantInfoProvider.clientCurrentRate(targetClientId,new Date(),PayChannel.RPAY_CHANNEL_CARD.getChannelCode());
if (targetRate==null) {
JSONObject sourceRate = merchantInfoProvider.clientCurrentRate(sourceClientId, new Date(), PayChannel.RPAY_CHANNEL_CARD.getChannelCode());
targetRate = new JSONObject(sourceRate);
targetRate.put("client_id", targetClientId);
clientRateMapper.saveRate(targetRate);
}
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)
@ -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);

Loading…
Cancel
Save