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;
|
||||
}
|
||||
}
|
Loading…
Reference in new issue