add 新增aps组织的费率配置

master
Todking 4 years ago
parent a0d059ee9d
commit d68c514376

@ -1,6 +1,6 @@
package au.com.royalpay.payment.manage.merchants.core; package au.com.royalpay.payment.manage.merchants.core;
import au.com.royalpay.payment.manage.merchants.core.descriptor.ApsConfigDescriptor; import au.com.royalpay.payment.manage.merchants.deacriptor.ApsConfigDescriptor;
import au.com.royalpay.payment.manage.merchants.entity.ApsConfigData; import au.com.royalpay.payment.manage.merchants.entity.ApsConfigData;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;

@ -2,7 +2,7 @@ package au.com.royalpay.payment.manage.merchants.core.impls;
import au.com.royalpay.payment.manage.mappers.system.aps.ApsConfigMapper; import au.com.royalpay.payment.manage.mappers.system.aps.ApsConfigMapper;
import au.com.royalpay.payment.manage.merchants.core.ApsConfigService; import au.com.royalpay.payment.manage.merchants.core.ApsConfigService;
import au.com.royalpay.payment.manage.merchants.core.descriptor.ApsConfigDescriptor; import au.com.royalpay.payment.manage.merchants.deacriptor.ApsConfigDescriptor;
import au.com.royalpay.payment.manage.merchants.entity.ApsConfigData; import au.com.royalpay.payment.manage.merchants.entity.ApsConfigData;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;

@ -62,7 +62,7 @@ import au.com.royalpay.payment.manage.merchants.core.*;
import au.com.royalpay.payment.manage.merchants.core.bank.AustraliaBank; import au.com.royalpay.payment.manage.merchants.core.bank.AustraliaBank;
import au.com.royalpay.payment.manage.merchants.core.bank.AustraliaBankClientNullException; import au.com.royalpay.payment.manage.merchants.core.bank.AustraliaBankClientNullException;
import au.com.royalpay.payment.manage.merchants.core.bank.AustraliaBankInfo; import au.com.royalpay.payment.manage.merchants.core.bank.AustraliaBankInfo;
import au.com.royalpay.payment.manage.merchants.core.descriptor.ApsConfigDescriptor; import au.com.royalpay.payment.manage.merchants.deacriptor.ApsConfigDescriptor;
import au.com.royalpay.payment.manage.merchants.entity.ApsConfigData; import au.com.royalpay.payment.manage.merchants.entity.ApsConfigData;
import au.com.royalpay.payment.manage.merchants.entity.impls.*; import au.com.royalpay.payment.manage.merchants.entity.impls.*;
import au.com.royalpay.payment.manage.merchants.enums.UPayAuthFileEnum; import au.com.royalpay.payment.manage.merchants.enums.UPayAuthFileEnum;
@ -564,7 +564,6 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid
apsConfig = apsConfigService.saveApsConfigClientId(manager.getString("manager_id"), client.getString("client_id"), new ApsConfigDescriptor()); apsConfig = apsConfigService.saveApsConfigClientId(manager.getString("manager_id"), client.getString("client_id"), new ApsConfigDescriptor());
} }
client.put("aps_config_id", apsConfig.getId()); client.put("aps_config_id", apsConfig.getId());
client.put("enable_alipayaps", apsConfig.getEnableAlipayAps());
client.put("alipay_cn_switch", apsConfig.getAlipayCnSwitch()); client.put("alipay_cn_switch", apsConfig.getAlipayCnSwitch());
return client; return client;
} }
@ -1594,18 +1593,12 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid
if (client == null) { if (client == null) {
throw new NotFoundException("Client Not Exists"); throw new NotFoundException("Client Not Exists");
} }
if (channelApi.channel().equalsIgnoreCase("alipayaps")) {
JSONObject jsonObject = new JSONObject();
jsonObject.put("enableAlipayAps", allow);
apsConfigService.updateApsConfigClientId(manager.getString("manager_id"), client.getString("client_id"), jsonObject);
} else {
merchantChannelPermissionManager.switchMerchantChannelPermission(channelApi.getMetadata().payChannel(), client.getIntValue("client_id"), allow); merchantChannelPermissionManager.switchMerchantChannelPermission(channelApi.getMetadata().payChannel(), client.getIntValue("client_id"), allow);
try { try {
clientModifySupport.processModify(new SwitchPermissionModify(manager, clientMoniker, "enable_" + channel.toLowerCase(), allow)); clientModifySupport.processModify(new SwitchPermissionModify(manager, clientMoniker, "enable_" + channel.toLowerCase(), allow));
} catch (Exception e) { } catch (Exception e) {
logger.error("Failed to change channel switch:{}", channel); logger.error("Failed to change channel switch:{}", channel);
} }
}
logger.info("{}({}) switched client {} channel {} to {}", manager.getString("display_name"), manager.getString("manager_id"), clientMoniker, channel, allow); logger.info("{}({}) switched client {} channel {} to {}", manager.getString("display_name"), manager.getString("manager_id"), clientMoniker, channel, allow);
if (allow && (StringUtils.equalsAnyIgnoreCase("Wechat", channel) || StringUtils.equalsAnyIgnoreCase("Alipay", channel))) { if (allow && (StringUtils.equalsAnyIgnoreCase("Wechat", channel) || StringUtils.equalsAnyIgnoreCase("Alipay", channel))) {
int clientId = client.getIntValue("client_id"); int clientId = client.getIntValue("client_id");
@ -2085,8 +2078,8 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid
if (newConfig.getBigDecimal("cb_bankpay_rate_value") != null) { if (newConfig.getBigDecimal("cb_bankpay_rate_value") != null) {
clientRateMapper.saveRate(newConfig); clientRateMapper.saveRate(newConfig);
} }
} else if("AlipayAps".equalsIgnoreCase(channel)){ } else if ("AlipayAps".equalsIgnoreCase(channel)) {
newConfig.put("transaction_fee",newConfig.getFloatValue("service_fee_value")); newConfig.put("transaction_fee", newConfig.getFloatValue("service_fee_value"));
clientRateMapper.saveRate(newConfig); clientRateMapper.saveRate(newConfig);
} else { } else {
clientRateMapper.saveRate(newConfig); clientRateMapper.saveRate(newConfig);
@ -7091,6 +7084,7 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid
/** /**
* alipayplus(aps) * alipayplus(aps)
*
* @param clientMoniker * @param clientMoniker
* @param apsMerchantApplication * @param apsMerchantApplication
* @param manager * @param manager
@ -7098,40 +7092,40 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid
*/ */
@Override @Override
public MerchantApplicationResult alipayPlusRegisterMerchant(String clientMoniker, ApsMerchantApplication apsMerchantApplication, JSONObject manager) { public MerchantApplicationResult alipayPlusRegisterMerchant(String clientMoniker, ApsMerchantApplication apsMerchantApplication, JSONObject manager) {
logger.info("====>getWebsiteType:"+apsMerchantApplication.getWebsiteType()); logger.info("====>getWebsiteType:" + apsMerchantApplication.getWebsiteType());
logger.info("====>getProductCodes:"+apsMerchantApplication.getProductCodes().toString()); logger.info("====>getProductCodes:" + apsMerchantApplication.getProductCodes().toString());
boolean offline = apsMerchantApplication.getProductCodes().stream().allMatch(s->s.equalsIgnoreCase(ProductCodeType.IN_STORE_PAYMENT.toString())); boolean offline = apsMerchantApplication.getProductCodes().stream().allMatch(s -> s.equalsIgnoreCase(ProductCodeType.IN_STORE_PAYMENT.toString()));
logger.info("====>offline:"+offline); logger.info("====>offline:" + offline);
if(offline){ if (offline) {
//todo 测试需要 先都改成线上,上线此处需要改成线下 //todo 测试需要 先都改成线上,上线此处需要改成线下
apsMerchantApplication.setPid( AlipayEnvironment.getEnv().getAlipayPlusApsRetailConfig().getPid()); apsMerchantApplication.setPid(AlipayEnvironment.getEnv().getAlipayPlusApsRetailConfig().getPid());
}else{ } else {
apsMerchantApplication.setPid( AlipayEnvironment.getEnv().getAlipayPlusApsOnlineConfig().getPid()); apsMerchantApplication.setPid(AlipayEnvironment.getEnv().getAlipayPlusApsOnlineConfig().getPid());
} }
apsMerchantApplication.setRegion("AU"); apsMerchantApplication.setRegion("AU");
JSONObject client= sysClientMapper.findClientByMoniker(clientMoniker); JSONObject client = sysClientMapper.findClientByMoniker(clientMoniker);
AlipayApsMerchantRegister alipayApsMerchantRegister = Optional.ofNullable(merchantChannelApplicationManager.getRegister(AlipayApsMerchantRegister.class)).orElseThrow(() -> new ServerErrorException("No AlipayAps registry found")); AlipayApsMerchantRegister alipayApsMerchantRegister = Optional.ofNullable(merchantChannelApplicationManager.getRegister(AlipayApsMerchantRegister.class)).orElseThrow(() -> new ServerErrorException("No AlipayAps registry found"));
MerchantApplicationResult result=alipayApsMerchantRegister.apply(client,apsMerchantApplication,manager); MerchantApplicationResult result = alipayApsMerchantRegister.apply(client, apsMerchantApplication, manager);
return result; return result;
} }
@Override @Override
public String queryAlipayPlusOnlineStatus(boolean isRetail,String clientMoniker, JSONObject manager) { public String queryAlipayPlusOnlineStatus(boolean isRetail, String clientMoniker, JSONObject manager) {
JSONObject client= sysClientMapper.findClientByMoniker(clientMoniker); JSONObject client = sysClientMapper.findClientByMoniker(clientMoniker);
client.put("isRetail",isRetail); client.put("isRetail", isRetail);
String pid=""; String pid = "";
if(isRetail){ if (isRetail) {
//todo 测试需要 先都改成线上,上线此处需要改成线下 //todo 测试需要 先都改成线上,上线此处需要改成线下
pid= AlipayEnvironment.getEnv().getAlipayPlusApsRetailConfig().getPid(); pid = AlipayEnvironment.getEnv().getAlipayPlusApsRetailConfig().getPid();
}else{ } else {
pid= AlipayEnvironment.getEnv().getAlipayPlusApsOnlineConfig().getPid(); pid = AlipayEnvironment.getEnv().getAlipayPlusApsOnlineConfig().getPid();
} }
client.put("pid",pid); client.put("pid", pid);
AlipayApsMerchantRegister alipayApsMerchantRegister = Optional.ofNullable(merchantChannelApplicationManager.getRegister(AlipayApsMerchantRegister.class)).orElseThrow(() -> new ServerErrorException("No AlipayAps registry found")); AlipayApsMerchantRegister alipayApsMerchantRegister = Optional.ofNullable(merchantChannelApplicationManager.getRegister(AlipayApsMerchantRegister.class)).orElseThrow(() -> new ServerErrorException("No AlipayAps registry found"));
AlipayPlusRegisterResult alipayPlusRegisterResult= alipayApsMerchantRegister.findMerchant(client); AlipayPlusRegisterResult alipayPlusRegisterResult = alipayApsMerchantRegister.findMerchant(client);
return alipayPlusRegisterResult.getRawResponse(); return alipayPlusRegisterResult.getRawResponse();
} }

@ -1,4 +1,4 @@
package au.com.royalpay.payment.manage.merchants.core.descriptor; package au.com.royalpay.payment.manage.merchants.deacriptor;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
@ -11,7 +11,5 @@ import lombok.experimental.Accessors;
@Accessors(chain = true) @Accessors(chain = true)
public class ApsConfigDescriptor { public class ApsConfigDescriptor {
private Boolean enableAlipayAps = false;
private Boolean alipayCnSwitch = false; private Boolean alipayCnSwitch = false;
} }

@ -1,8 +1,7 @@
package au.com.royalpay.payment.manage.merchants.entity; package au.com.royalpay.payment.manage.merchants.entity;
import au.com.royalpay.payment.manage.merchants.core.descriptor.ApsConfigDescriptor; import au.com.royalpay.payment.manage.merchants.deacriptor.ApsConfigDescriptor;
import com.alibaba.fastjson.JSONObject;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
@ -39,7 +38,6 @@ public class ApsConfigData implements Serializable {
.setClientId(clientId) .setClientId(clientId)
.setId(UUID.randomUUID().toString().replace("-", "")) .setId(UUID.randomUUID().toString().replace("-", ""))
.setAlipayCnSwitch(apsConfigDescriptor.getAlipayCnSwitch()) .setAlipayCnSwitch(apsConfigDescriptor.getAlipayCnSwitch())
.setEnableAlipayAps(apsConfigDescriptor.getEnableAlipayAps())
.setCreator(managerId) .setCreator(managerId)
.setCreateTime(new Date()); .setCreateTime(new Date());
} }

@ -1,7 +1,7 @@
package au.com.royalpay.payment.manage.merchants.web; package au.com.royalpay.payment.manage.merchants.web;
import au.com.royalpay.payment.manage.merchants.core.ApsConfigService; import au.com.royalpay.payment.manage.merchants.core.ApsConfigService;
import au.com.royalpay.payment.manage.merchants.core.descriptor.ApsConfigDescriptor; import au.com.royalpay.payment.manage.merchants.deacriptor.ApsConfigDescriptor;
import au.com.royalpay.payment.manage.merchants.entity.ApsConfigData; import au.com.royalpay.payment.manage.merchants.entity.ApsConfigData;
import au.com.royalpay.payment.manage.permission.manager.ManagerMapping; import au.com.royalpay.payment.manage.permission.manager.ManagerMapping;
import au.com.royalpay.payment.tools.CommonConsts; import au.com.royalpay.payment.tools.CommonConsts;
@ -36,7 +36,7 @@ public class ApsConfigController {
* @param apsConfigDescriptor * @param apsConfigDescriptor
* @return * @return
*/ */
@ManagerMapping(value = "/{clientId}", method = RequestMethod.POST, role = { ManagerRole.ADMIN,ManagerRole.OPERATOR,ManagerRole.SITE_MANAGER }) @ManagerMapping(value = "/{clientId}", method = RequestMethod.POST, role = {ManagerRole.ADMIN, ManagerRole.OPERATOR, ManagerRole.SITE_MANAGER})
public ApsConfigData saveApsConfigClientId(@ModelAttribute(CommonConsts.MANAGER_STATUS) JSONObject manager, @PathVariable("clientId") String clientId, @RequestBody ApsConfigDescriptor apsConfigDescriptor) { public ApsConfigData saveApsConfigClientId(@ModelAttribute(CommonConsts.MANAGER_STATUS) JSONObject manager, @PathVariable("clientId") String clientId, @RequestBody ApsConfigDescriptor apsConfigDescriptor) {
return apsConfigService.saveApsConfigClientId(manager.getString("managerId"), clientId, apsConfigDescriptor); return apsConfigService.saveApsConfigClientId(manager.getString("managerId"), clientId, apsConfigDescriptor);
} }
@ -48,8 +48,8 @@ public class ApsConfigController {
* @param apsConfig * @param apsConfig
* @return * @return
*/ */
@ManagerMapping(value = "/{clientId}", method = RequestMethod.PUT, role = { ManagerRole.ADMIN,ManagerRole.OPERATOR,ManagerRole.SITE_MANAGER }) @ManagerMapping(value = "/{clientId}", method = RequestMethod.PUT, role = {ManagerRole.ADMIN, ManagerRole.OPERATOR, ManagerRole.SITE_MANAGER})
public ApsConfigData updateApsConfigClientId(@ModelAttribute(CommonConsts.MANAGER_STATUS) JSONObject manager,@PathVariable("clientId") String clientId, @RequestBody JSONObject apsConfig) { public ApsConfigData updateApsConfigClientId(@ModelAttribute(CommonConsts.MANAGER_STATUS) JSONObject manager, @PathVariable("clientId") String clientId, @RequestBody JSONObject apsConfig) {
return apsConfigService.updateApsConfigClientId(manager.getString("managerId"),clientId, apsConfig); return apsConfigService.updateApsConfigClientId(manager.getString("managerId"), clientId, apsConfig);
} }
} }

@ -57,6 +57,11 @@ public class OrgInfo {
private Double min_rpaypmt_dd_rate; private Double min_rpaypmt_dd_rate;
private String state; private String state;
private String senior_parent_org_id; private String senior_parent_org_id;
private Double interchange_fee_value;
private Double min_interchange_fee_value;
private Double service_fee_value;
private Double min_service_fee_value;
public JSONObject toJsonParam() { public JSONObject toJsonParam() {
@ -417,4 +422,31 @@ public class OrgInfo {
this.min_rpaypmt_overseas_card_rate = min_rpaypmt_overseas_card_rate; this.min_rpaypmt_overseas_card_rate = min_rpaypmt_overseas_card_rate;
} }
public Double getInterchange_fee_value(){ return interchange_fee_value; }
public void setInterchange_fee_value(Double interchange_fee_value){ this.interchange_fee_value = interchange_fee_value; }
public Double getMin_interchange_fee_value() {
return min_interchange_fee_value;
}
public void setMin_interchange_fee_value(Double min_interchange_fee_value) {
this.min_interchange_fee_value = min_interchange_fee_value;
}
public Double getService_fee_value() {
return service_fee_value;
}
public void setService_fee_value(Double service_fee_value) {
this.service_fee_value = service_fee_value;
}
public Double getMin_service_fee_value() {
return min_service_fee_value;
}
public void setMin_service_fee_value(Double min_service_fee_value) {
this.min_service_fee_value = min_service_fee_value;
}
} }

@ -25,44 +25,57 @@
<uib-tab heading="Basic Info"> <uib-tab heading="Basic Info">
<form class="form-horizontal margin-top" name="org_form" novalidate> <form class="form-horizontal margin-top" name="org_form" novalidate>
<div class="panel"> <div class="panel">
<div class="form-group" ng-class="{'has-error':org_form.name.$invalid && org_form.name.$dirty}"> <div class="form-group"
ng-class="{'has-error':org_form.name.$invalid && org_form.name.$dirty}">
<label class="control-label col-sm-2" for="org_name_input">Name *</label> <label class="control-label col-sm-2" for="org_name_input">Name *</label>
<div class="col-sm-8"> <div class="col-sm-8">
<input class="form-control" ng-model="org.name" id="org_name_input" name="name" required /> <input class="form-control" ng-model="org.name" id="org_name_input" name="name"
required/>
</div> </div>
</div> </div>
<div class="form-group"> <div class="form-group">
<label class="control-label col-sm-2">Logo</label> <label class="control-label col-sm-2">Logo</label>
<div class="col-sm-8"> <div class="col-sm-8">
<p class="form-control-static"> <p class="form-control-static">
<button class="btn btn-primary" type="button" ngf-select="uploadLogo($file)" accept="image/*"><i class="fa fa-upload"></i> Upload</button> <button class="btn btn-primary" type="button" ngf-select="uploadLogo($file)"
<uib-progressbar value="logoProgress.value" ng-if="logoProgress"> </uib-progressbar> accept="image/*"><i class="fa fa-upload"></i> Upload
<img ng-src="{{org.logo}}" class="col-sm-3" ng-if="org.logo" /> </button>
<uib-progressbar value="logoProgress.value"
ng-if="logoProgress"></uib-progressbar>
<img ng-src="{{org.logo}}" class="col-sm-3" ng-if="org.logo"/>
</p> </p>
</div> </div>
</div> </div>
<div class="form-group" ng-class="{'has-error':org_form.state.$invalid && org_form.state.$dirty}"> <div class="form-group"
ng-class="{'has-error':org_form.state.$invalid && org_form.state.$dirty}">
<label class="control-label col-sm-2" for="org_state_input">State *</label> <label class="control-label col-sm-2" for="org_state_input">State *</label>
<div class="col-sm-8"> <div class="col-sm-8">
<select class="form-control" name="state" required ng-model="org.state" id="org_state_input" ng-options="state.value as state.label for state in states"> <select class="form-control" name="state" required ng-model="org.state"
id="org_state_input"
ng-options="state.value as state.label for state in states">
<option value="">Please Choose</option> <option value="">Please Choose</option>
</select> </select>
</div> </div>
</div> </div>
<div class="form-group" ng-class="{'has-error':org_form.location.$invalid && org_form.location.$dirty}"> <div class="form-group"
ng-class="{'has-error':org_form.location.$invalid && org_form.location.$dirty}">
<label class="control-label col-sm-2" for="org_location_input">Location *</label> <label class="control-label col-sm-2" for="org_location_input">Location *</label>
<div class="col-sm-8"> <div class="col-sm-8">
<input class="form-control" ng-model="org.location" id="org_location_input" name="location" required /> <input class="form-control" ng-model="org.location" id="org_location_input"
name="location" required/>
</div> </div>
</div> </div>
<div class="form-group" ng-class="{'has-error':org_form.type.$invalid && org_form.type.$dirty}" ng-if="!('1000000000000'|withRole)"> <div class="form-group"
ng-class="{'has-error':org_form.type.$invalid && org_form.type.$dirty}"
ng-if="!('1000000000000'|withRole)">
<label class="control-label col-sm-2" for="org_type_input">Type *</label> <label class="control-label col-sm-2" for="org_type_input">Type *</label>
<div class="col-sm-8"> <div class="col-sm-8">
<!--<select class="form-control" ng-model="org.type" ng-init="org.type=0" id="org_type_input">--> <!--<select class="form-control" ng-model="org.type" ng-init="org.type=0" id="org_type_input">-->
<!--<option value="0">代理人</option>--> <!--<option value="0">代理人</option>-->
<!--<option value="1">推荐人</option>--> <!--<option value="1">推荐人</option>-->
<!--</select>--> <!--</select>-->
<select class="form-control" name="type" required ng-model="org.type" id="org_type_input" ng-options="type.value as type.label for type in types"> <select class="form-control" name="type" required ng-model="org.type"
id="org_type_input" ng-options="type.value as type.label for type in types">
<!--<option value="">Please Choose</option>--> <!--<option value="">Please Choose</option>-->
</select> </select>
</div> </div>
@ -99,27 +112,35 @@
</div> </div>
</div> </div>
<div ng-if="org.type == 1"> <div ng-if="org.type == 1">
<div class="form-group" ng-class="{'has-error':org_form.rate_value.$invalid && org_form.rate_value.$dirty}"> <div class="form-group"
ng-class="{'has-error':org_form.rate_value.$invalid && org_form.rate_value.$dirty}">
<label class="control-label col-sm-2" for="rate_value_input">Rate *</label> <label class="control-label col-sm-2" for="rate_value_input">Rate *</label>
<div class="col-sm-8"> <div class="col-sm-8">
<input class="form-control form-control-float" type="number" ng-model="org.rate_value" id="rate_value_input" name="rate_value" max="100" min="0" /> <input class="form-control form-control-float" type="number"
ng-model="org.rate_value" id="rate_value_input" name="rate_value"
max="100" min="0"/>
<span class="input-group-addon form-control-span">%</span> <span class="input-group-addon form-control-span">%</span>
</div> </div>
</div> </div>
</div> </div>
<div ng-if="org.type == 0"> <div ng-if="org.type == 0">
<div ng-if="org.commission_type == 3"> <div ng-if="org.commission_type == 3">
<div class="form-group" ng-class="{'has-error':org_form.rate_value.$invalid && org_form.rate_value.$dirty}"> <div class="form-group"
ng-class="{'has-error':org_form.rate_value.$invalid && org_form.rate_value.$dirty}">
<label class="control-label col-sm-2" for="rate_value_input_3">Rate *</label> <label class="control-label col-sm-2" for="rate_value_input_3">Rate *</label>
<div class="col-sm-8"> <div class="col-sm-8">
<input class="form-control form-control-float" type="number" ng-model="org.rate_value" id="rate_value_input_3" name="rate_value" max="100" min="0" /> <input class="form-control form-control-float" type="number"
ng-model="org.rate_value" id="rate_value_input_3" name="rate_value"
max="100" min="0"/>
<span class="input-group-addon form-control-span">%</span> <span class="input-group-addon form-control-span">%</span>
</div> </div>
</div> </div>
</div> </div>
<div ng-if="org.commission_type == 1"> <div ng-if="org.commission_type == 1">
<div class="form-group" ng-class="{'has-error':org_form.wechat_rate_value.$invalid && org_form.wechat_rate_value.$dirty}"> <div class="form-group"
<label class="control-label col-sm-2" for="wechat_rate_value_input">Wechat Rate *</label> ng-class="{'has-error':org_form.wechat_rate_value.$invalid && org_form.wechat_rate_value.$dirty}">
<label class="control-label col-sm-2" for="wechat_rate_value_input">Wechat Rate
*</label>
<div class="col-sm-8"> <div class="col-sm-8">
<input <input
class="form-control form-control-float" class="form-control form-control-float"
@ -135,8 +156,10 @@
</div> </div>
</div> </div>
<div class="form-group" ng-class="{'has-error':org_form.alipay_rate_value.$invalid && org_form.alipay_rate_value.$dirty}"> <div class="form-group"
<label class="control-label col-sm-2" for="alipay_rate_value_input">Alipay Rate *</label> ng-class="{'has-error':org_form.alipay_rate_value.$invalid && org_form.alipay_rate_value.$dirty}">
<label class="control-label col-sm-2" for="alipay_rate_value_input">Alipay Rate
*</label>
<div class="col-sm-8"> <div class="col-sm-8">
<input <input
class="form-control form-control-float" class="form-control form-control-float"
@ -152,15 +175,21 @@
</div> </div>
</div> </div>
<div class="form-group" ng-class="{'has-error':org_form.alipayonlinecn_rate_value.$invalid && org_form.alipayonlinecn_rate_value.$dirty}"> <!-- APS config-->
<label class="control-label col-sm-2" for="alipayonlinecn_rate_value_input">AlipayOnlineCN(A+) Rate *</label> <div class="form-group">
<div class="col-sm-8"> <label class="control-label col-sm-2">A+(APS):</label>
</div>
<div class="form-group"
ng-class="{'has-error':org_form.interchange_fee_value.$invalid && org_form.interchange_fee_value.$dirty}">
<label class="control-label col-sm-3" for="interchange_fee_value_input">
Interchange Fee *</label>
<div class="col-sm-7">
<input <input
class="form-control form-control-float" class="form-control form-control-float"
type="number" type="number"
ng-model="org.alipayonlinecn_rate_value" ng-model="org.interchange_fee_value"
id="alipayonlinecn_rate_value_input" id="interchange_fee_value_input"
name="alipayonlinecn_rate_value" name="interchange_fee_value"
max="100" max="100"
min="0" min="0"
required required
@ -168,16 +197,17 @@
<span class="input-group-addon form-control-span">%</span> <span class="input-group-addon form-control-span">%</span>
</div> </div>
</div> </div>
<div class="form-group"
<div class="form-group" ng-class="{'has-error':org_form.alipayother_rate_value.$invalid && org_form.alipayother_rate_value.$dirty}"> ng-class="{'has-error':org_form.service_fee_value.$invalid && org_form.service_fee_value.$dirty}">
<label class="control-label col-sm-2" for="alipayother_rate_value_input">OtherWallet(A+) Rate *</label> <label class="control-label col-sm-3" for="service_fee_value_input">
<div class="col-sm-8"> Service Fee *</label>
<div class="col-sm-7">
<input <input
class="form-control form-control-float" class="form-control form-control-float"
type="number" type="number"
ng-model="org.alipayother_rate_value" ng-model="org.service_fee_value"
id="alipayother_rate_value_input" id="service_fee_value_input"
name="alipayother_rate_value" name="service_fee_value"
max="100" max="100"
min="0" min="0"
required required
@ -185,9 +215,47 @@
<span class="input-group-addon form-control-span">%</span> <span class="input-group-addon form-control-span">%</span>
</div> </div>
</div> </div>
<div class="form-group"
ng-class="{'has-error':org_form.min_interchange_fee.$invalid && org_form.min_interchange_fee.$dirty}">
<label class="control-label col-sm-3" for="min_interchange_fee_input">Min
Interchange Fee</label>
<div class="col-sm-7">
<input
class="form-control form-control-float"
type="number"
ng-model="org.min_interchange_fee_value"
id="min_interchange_fee_input"
name="min_interchange_fee"
max="100"
min="0"
/>
<span class="input-group-addon form-control-span">%</span>
</div>
</div>
<div class="form-group"
ng-class="{'has-error':org_form.min_service_fee.$invalid && org_form.min_service_fee.$dirty}">
<label class="control-label col-sm-3" for="min_service_fee_input">Min
Service Fee</label>
<div class="col-sm-7">
<input
class="form-control form-control-float"
type="number"
ng-model="org.min_service_fee_value"
id="min_service_fee_input"
name="min_service_fee"
max="100"
min="0"
/>
<span class="input-group-addon form-control-span">%</span>
</div>
</div>
<!-- APS end-->
<div class="form-group" ng-class="{'has-error':org_form.alipayonline_rate_value.$invalid && org_form.alipayonline_rate_value.$dirty}"> <div class="form-group"
<label class="control-label col-sm-2" for="alipayonline_rate_value_input">AlipayOnline Rate *</label> ng-class="{'has-error':org_form.alipayonline_rate_value.$invalid && org_form.alipayonline_rate_value.$dirty}">
<label class="control-label col-sm-2" for="alipayonline_rate_value_input">AlipayOnline
Rate *</label>
<div class="col-sm-8"> <div class="col-sm-8">
<input <input
class="form-control form-control-float" class="form-control form-control-float"
@ -202,8 +270,10 @@
<span class="input-group-addon form-control-span">%</span> <span class="input-group-addon form-control-span">%</span>
</div> </div>
</div> </div>
<div class="form-group" ng-class="{'has-error':org_form.cb_bankpay_rate_value.$invalid && org_form.cb_bankpay_rate_value.$dirty}"> <div class="form-group"
<label class="control-label col-sm-2" for="cb_bankpay_rate_value_input">CB BankPay Rate</label> ng-class="{'has-error':org_form.cb_bankpay_rate_value.$invalid && org_form.cb_bankpay_rate_value.$dirty}">
<label class="control-label col-sm-2" for="cb_bankpay_rate_value_input">CB
BankPay Rate</label>
<div class="col-sm-8"> <div class="col-sm-8">
<input <input
class="form-control form-control-float" class="form-control form-control-float"
@ -226,8 +296,11 @@
</div>--> </div>-->
<!-- 卡支付-国内卡费率配置 --> <!-- 卡支付-国内卡费率配置 -->
<div class="form-group" ng-class="{'has-error':org_form.rpaypmt_domestic_card_rate_value.$invalid && org_form.rpaypmt_domestic_card_rate_value.$dirty}"> <div class="form-group"
<label class="control-label col-sm-2" for="rpaypmt_domestic_card_rate_value_input">Domestic Card Payment Rate *</label> ng-class="{'has-error':org_form.rpaypmt_domestic_card_rate_value.$invalid && org_form.rpaypmt_domestic_card_rate_value.$dirty}">
<label class="control-label col-sm-2"
for="rpaypmt_domestic_card_rate_value_input">Domestic Card Payment Rate
*</label>
<div class="col-sm-8"> <div class="col-sm-8">
<input <input
class="form-control form-control-float" class="form-control form-control-float"
@ -244,8 +317,11 @@
</div> </div>
<!-- 卡支付-国际卡费率配置 --> <!-- 卡支付-国际卡费率配置 -->
<div class="form-group" ng-class="{'has-error':org_form.rpaypmt_overseas_card_rate_value.$invalid && org_form.rpaypmt_overseas_card_rate_value.$dirty}"> <div class="form-group"
<label class="control-label col-sm-2" for="rpaypmt_overseas_card_rate_value_input">International Card Payment Rate *</label> ng-class="{'has-error':org_form.rpaypmt_overseas_card_rate_value.$invalid && org_form.rpaypmt_overseas_card_rate_value.$dirty}">
<label class="control-label col-sm-2"
for="rpaypmt_overseas_card_rate_value_input">International Card Payment
Rate *</label>
<div class="col-sm-8"> <div class="col-sm-8">
<input <input
class="form-control form-control-float" class="form-control form-control-float"
@ -261,8 +337,10 @@
</div> </div>
</div> </div>
<div class="form-group" ng-class="{'has-error':org_form.rpaypmt_dd_rate_value.$invalid && org_form.rpaypmt_dd_rate_value.$dirty}"> <div class="form-group"
<label class="control-label col-sm-2" for="rpaypmt_dd_rate_value_input">Direct Debit Rate</label> ng-class="{'has-error':org_form.rpaypmt_dd_rate_value.$invalid && org_form.rpaypmt_dd_rate_value.$dirty}">
<label class="control-label col-sm-2" for="rpaypmt_dd_rate_value_input">Direct
Debit Rate</label>
<div class="col-sm-8"> <div class="col-sm-8">
<input <input
class="form-control form-control-float" class="form-control form-control-float"
@ -279,8 +357,10 @@
</div> </div>
<div> <div>
<div class="form-group" ng-class="{'has-error':org_form.min_wechat_rate.$invalid && org_form.min_wechat_rate.$dirty}"> <div class="form-group"
<label class="control-label col-sm-2" for="min_wechat_rate_input">Min Wechat Rate</label> ng-class="{'has-error':org_form.min_wechat_rate.$invalid && org_form.min_wechat_rate.$dirty}">
<label class="control-label col-sm-2" for="min_wechat_rate_input">Min Wechat
Rate</label>
<div class="col-sm-8"> <div class="col-sm-8">
<input <input
class="form-control form-control-float" class="form-control form-control-float"
@ -294,8 +374,10 @@
<span class="input-group-addon form-control-span">%</span> <span class="input-group-addon form-control-span">%</span>
</div> </div>
</div> </div>
<div class="form-group" ng-class="{'has-error':org_form.min_alipay_rate.$invalid && org_form.min_alipay_rate.$dirty}"> <div class="form-group"
<label class="control-label col-sm-2" for="min_alipay_rate_input">Min Alipay Rate</label> ng-class="{'has-error':org_form.min_alipay_rate.$invalid && org_form.min_alipay_rate.$dirty}">
<label class="control-label col-sm-2" for="min_alipay_rate_input">Min Alipay
Rate</label>
<div class="col-sm-8"> <div class="col-sm-8">
<input <input
class="form-control form-control-float" class="form-control form-control-float"
@ -310,40 +392,10 @@
</div> </div>
</div> </div>
<div class="form-group" ng-class="{'has-error':org_form.min_alipayonlinecn_rate.$invalid && org_form.min_alipayonlinecn_rate.$dirty}"> <div class="form-group"
<label class="control-label col-sm-2" for="min_alipayonlinecn_rate_input">Min AlipayOnlineCN(A+) Rate</label> ng-class="{'has-error':org_form.min_alipayonline_rate.$invalid && org_form.min_alipayonline_rate.$dirty}">
<div class="col-sm-8"> <label class="control-label col-sm-2" for="min_alipayonline_rate_input">Min
<input Alipayonline Rate</label>
class="form-control form-control-float"
type="number"
ng-model="org.min_alipayonlinecn_rate_value"
id="min_alipayonlinecn_rate_input"
name="min_alipayonlinecn_rate"
max="100"
min="0"
/>
<span class="input-group-addon form-control-span">%</span>
</div>
</div>
<div class="form-group" ng-class="{'has-error':org_form.min_alipayother_rate.$invalid && org_form.min_alipayother_rate.$dirty}">
<label class="control-label col-sm-2" for="min_alipayother_rate_input">Min OtherWallet(A+) Rate</label>
<div class="col-sm-8">
<input
class="form-control form-control-float"
type="number"
ng-model="org.min_alipayother_rate_value"
id="min_alipayother_rate_input"
name="min_alipayother_rate"
max="100"
min="0"
/>
<span class="input-group-addon form-control-span">%</span>
</div>
</div>
<div class="form-group" ng-class="{'has-error':org_form.min_alipayonline_rate.$invalid && org_form.min_alipayonline_rate.$dirty}">
<label class="control-label col-sm-2" for="min_alipayonline_rate_input">Min Alipayonline Rate</label>
<div class="col-sm-8"> <div class="col-sm-8">
<input <input
class="form-control form-control-float" class="form-control form-control-float"
@ -357,8 +409,10 @@
<span class="input-group-addon form-control-span">%</span> <span class="input-group-addon form-control-span">%</span>
</div> </div>
</div> </div>
<div class="form-group" ng-class="{'has-error':org_form.min_cb_bankpay_rate.$invalid && org_form.min_cb_bankpay_rate.$dirty}"> <div class="form-group"
<label class="control-label col-sm-2" for="min_cb_bankpay_rate_input">Min CB BankPay Rate</label> ng-class="{'has-error':org_form.min_cb_bankpay_rate.$invalid && org_form.min_cb_bankpay_rate.$dirty}">
<label class="control-label col-sm-2" for="min_cb_bankpay_rate_input">Min CB
BankPay Rate</label>
<div class="col-sm-8"> <div class="col-sm-8">
<input <input
class="form-control form-control-float" class="form-control form-control-float"
@ -383,8 +437,11 @@
</div>--> </div>-->
<!-- 卡支付-国内卡最小费率配置 --> <!-- 卡支付-国内卡最小费率配置 -->
<div class="form-group" ng-class="{'has-error':org_form.min_rpaypmt_domestic_card_rate.$invalid && org_form.min_rpaypmt_domestic_card_rate.$dirty}"> <div class="form-group"
<label class="control-label col-sm-2" for="min_rpaypmt_domestic_card_rate_input">Min Domestic Card Payment Rate</label> ng-class="{'has-error':org_form.min_rpaypmt_domestic_card_rate.$invalid && org_form.min_rpaypmt_domestic_card_rate.$dirty}">
<label class="control-label col-sm-2"
for="min_rpaypmt_domestic_card_rate_input">Min Domestic Card Payment
Rate</label>
<div class="col-sm-8"> <div class="col-sm-8">
<input <input
class="form-control form-control-float" class="form-control form-control-float"
@ -400,8 +457,11 @@
</div> </div>
<!-- 卡支付-国内卡最小费率配置 --> <!-- 卡支付-国内卡最小费率配置 -->
<div class="form-group" ng-class="{'has-error':org_form.min_rpaypmt_overseas_card_rate.$invalid && org_form.min_rpaypmt_overseas_card_rate.$dirty}"> <div class="form-group"
<label class="control-label col-sm-2" for="min_rpaypmt_overseas_card_rate_input">Min International Card Payment Rate</label> ng-class="{'has-error':org_form.min_rpaypmt_overseas_card_rate.$invalid && org_form.min_rpaypmt_overseas_card_rate.$dirty}">
<label class="control-label col-sm-2"
for="min_rpaypmt_overseas_card_rate_input">Min International Card Payment
Rate</label>
<div class="col-sm-8"> <div class="col-sm-8">
<input <input
class="form-control form-control-float" class="form-control form-control-float"
@ -416,8 +476,10 @@
</div> </div>
</div> </div>
<div class="form-group" ng-class="{'has-error':org_form.min_rpaypmt_dd_rate.$invalid && org_form.min_rpaypmt_dd_rate.$dirty}"> <div class="form-group"
<label class="control-label col-sm-2" for="min_rpaypmt_dd_rate_input">Min Direct Debit Rate</label> ng-class="{'has-error':org_form.min_rpaypmt_dd_rate.$invalid && org_form.min_rpaypmt_dd_rate.$dirty}">
<label class="control-label col-sm-2" for="min_rpaypmt_dd_rate_input">Min Direct
Debit Rate</label>
<div class="col-sm-8"> <div class="col-sm-8">
<input <input
class="form-control form-control-float" class="form-control form-control-float"
@ -434,34 +496,45 @@
</div> </div>
</div> </div>
<div class="form-group" ng-class="{'has-error':org_form.contact_person.$invalid && org_form.contact_person.$dirty}"> <div class="form-group"
<label class="control-label col-sm-2" for="org_contact_person_input">Contact Person *</label> ng-class="{'has-error':org_form.contact_person.$invalid && org_form.contact_person.$dirty}">
<label class="control-label col-sm-2" for="org_contact_person_input">Contact Person
*</label>
<div class="col-sm-8"> <div class="col-sm-8">
<input class="form-control" ng-model="org.contact_person" id="org_contact_person_input" name="contact_person" required /> <input class="form-control" ng-model="org.contact_person"
id="org_contact_person_input" name="contact_person" required/>
</div> </div>
</div> </div>
<div class="form-group" ng-class="{'has-error':org_form.contact_phone.$invalid && org_form.contact_phone.$dirty}"> <div class="form-group"
ng-class="{'has-error':org_form.contact_phone.$invalid && org_form.contact_phone.$dirty}">
<label class="control-label col-sm-2" for="org_contact_phone_input">Phone *</label> <label class="control-label col-sm-2" for="org_contact_phone_input">Phone *</label>
<div class="col-sm-8"> <div class="col-sm-8">
<input class="form-control" ng-model="org.contact_phone" id="org_contact_phone_input" name="contact_phone" required /> <input class="form-control" ng-model="org.contact_phone"
id="org_contact_phone_input" name="contact_phone" required/>
</div> </div>
</div> </div>
<div class="form-group" ng-class="{'has-error':org_form.contact_mail.$invalid && org_form.contact_mail.$dirty}"> <div class="form-group"
ng-class="{'has-error':org_form.contact_mail.$invalid && org_form.contact_mail.$dirty}">
<label class="control-label col-sm-2" for="org_contact_mail_input">Mail *</label> <label class="control-label col-sm-2" for="org_contact_mail_input">Mail *</label>
<div class="col-sm-8"> <div class="col-sm-8">
<input class="form-control" ng-model="org.contact_mail" id="org_contact_mail_input" name="contact_mail" required /> <input class="form-control" ng-model="org.contact_mail" id="org_contact_mail_input"
name="contact_mail" required/>
</div> </div>
</div> </div>
<div class="form-group"> <div class="form-group">
<label class="control-label col-sm-2" for="commission_checkbox">Enable Commission</label> <label class="control-label col-sm-2" for="commission_checkbox">Enable
Commission</label>
<div class="col-sm-8"> <div class="col-sm-8">
<input id="commission_checkbox" type="checkbox" class="checkbox-inline checkbox" ng-model="org.commission" /> <input id="commission_checkbox" type="checkbox" class="checkbox-inline checkbox"
ng-model="org.commission"/>
</div> </div>
</div> </div>
<div class="form-group" ng-class="{'has-error':org_form.remark.$invalid && org_form.remark.$dirty}"> <div class="form-group"
ng-class="{'has-error':org_form.remark.$invalid && org_form.remark.$dirty}">
<label class="control-label col-sm-2" for="remark-input">Remark</label> <label class="control-label col-sm-2" for="remark-input">Remark</label>
<div class="col-sm-8"> <div class="col-sm-8">
<textarea class="form-control" ng-model="org.remark" name="remark" id="remark-input" maxlength="500"></textarea> <textarea class="form-control" ng-model="org.remark" name="remark" id="remark-input"
maxlength="500"></textarea>
</div> </div>
</div> </div>
</div> </div>
@ -478,11 +551,13 @@
<form class="navbar-form navbar-left" role="search"> <form class="navbar-form navbar-left" role="search">
<div class="form-group"> <div class="form-group">
<label class="control-label" for="username-filter-input">Username</label> <label class="control-label" for="username-filter-input">Username</label>
<input type="text" class="form-control" ng-model="params.username" placeholder="Username" id="username-filter-input" /> <input type="text" class="form-control" ng-model="params.username"
placeholder="Username" id="username-filter-input"/>
</div> </div>
<div class="form-group" ng-if="'1'|withRole"> <div class="form-group" ng-if="'1'|withRole">
<label class="control-label" for="role-filter-select">Role</label> <label class="control-label" for="role-filter-select">Role</label>
<select ng-change="listManagers(1)" class="form-control" id="role-filter-select" ng-model="params.role"> <select ng-change="listManagers(1)" class="form-control"
id="role-filter-select" ng-model="params.role">
<option value="1111111">All</option> <option value="1111111">All</option>
<option value="1">Administrator</option> <option value="1">Administrator</option>
<option value="10">Compliance</option> <option value="10">Compliance</option>
@ -497,11 +572,15 @@
</select> </select>
</div> </div>
<div class="form-group"> <div class="form-group">
<button class="btn btn-primary" type="button" ng-click="listManagers(1)"><i class="fa fa-search"></i> Search</button> <button class="btn btn-primary" type="button" ng-click="listManagers(1)"><i
class="fa fa-search"></i> Search
</button>
</div> </div>
</form> </form>
<div class="navbar-form navbar-right"> <div class="navbar-form navbar-right">
<button class="btn btn-success" type="button" ng-click="newManager()"><i class="fa fa-plus"></i> New Manager Account</button> <button class="btn btn-success" type="button" ng-click="newManager()"><i
class="fa fa-plus"></i> New Manager Account
</button>
</div> </div>
</div> </div>
</div> </div>
@ -527,26 +606,39 @@
<td ng-bind="manager.username"></td> <td ng-bind="manager.username"></td>
<td ng-bind="manager.display_name"></td> <td ng-bind="manager.display_name"></td>
<td style="white-space: nowrap; overflow: hidden; text-overflow: ellipsis"> <td style="white-space: nowrap; overflow: hidden; text-overflow: ellipsis">
<img ng-src="{{manager.headimg}}" style="height: 30px; width: 30px" class="img-circle" ng-if="manager.headimg" /> {{manager.nickname}} <img ng-src="{{manager.headimg}}" style="height: 30px; width: 30px"
class="img-circle" ng-if="manager.headimg"/> {{manager.nickname}}
</td> </td>
<td ng-bind="manager.create_time|date:'yyyy-MM-dd'"></td> <td ng-bind="manager.create_time|date:'yyyy-MM-dd'"></td>
<td ng-bind="manager.email"></td> <td ng-bind="manager.email"></td>
<td> <td>
<i class="fa fa-user-secret" title="Administrator" ng-class="{'text-green':manager.admin,'text-gray':!manager.admin}"></i> <i class="fa fa-user-secret" title="Administrator"
<i class="fa fa-eye" title="Compliance" ng-class="{'text-green':manager.operator,'text-gray':!manager.operator}"></i> ng-class="{'text-green':manager.admin,'text-gray':!manager.admin}"></i>
<i class="fa fa-crosshairs" title="BD User" ng-class="{'text-green':manager.bd,'text-gray':!manager.bd}"></i> <i class="fa fa-eye" title="Compliance"
<i class="fa fa-balance-scale" title="Accountant" ng-class="{'text-green':manager.finacial,'text-gray':!manager.finacial}"></i> ng-class="{'text-green':manager.operator,'text-gray':!manager.operator}"></i>
<i class="fa fa-tty" title="Service" ng-class="{'text-green':manager.sevant,'text-gray':!manager.servant}"></i> <i class="fa fa-crosshairs" title="BD User"
<i class="fa fa-university" title="Account Manager" ng-class="{'text-green':manager.accountmanager,'text-gray':!manager.accountmanager}"></i> ng-class="{'text-green':manager.bd,'text-gray':!manager.bd}"></i>
<i class="fa fa-line-chart" title="Director" ng-class="{'text-green':manager.director,'text-gray':!manager.director}"></i> <i class="fa fa-balance-scale" title="Accountant"
<i class="fa fa-map-o" title="Site Manager" ng-class="{'text-green':manager.sitemanager,'text-gray':!manager.sitemanager}"></i> ng-class="{'text-green':manager.finacial,'text-gray':!manager.finacial}"></i>
<i class="fa fa-code" title="Developer" ng-class="{'text-green':manager.developer,'text-gray':!manager.developer}"></i> <i class="fa fa-tty" title="Service"
<i class="fa fa-user-plus" title="Org Manager" ng-class="{'text-green':manager.orgmanager,'text-gray':!manager.orgmanager}"></i> ng-class="{'text-green':manager.sevant,'text-gray':!manager.servant}"></i>
<i class="fa fa-university" title="Account Manager"
ng-class="{'text-green':manager.accountmanager,'text-gray':!manager.accountmanager}"></i>
<i class="fa fa-line-chart" title="Director"
ng-class="{'text-green':manager.director,'text-gray':!manager.director}"></i>
<i class="fa fa-map-o" title="Site Manager"
ng-class="{'text-green':manager.sitemanager,'text-gray':!manager.sitemanager}"></i>
<i class="fa fa-code" title="Developer"
ng-class="{'text-green':manager.developer,'text-gray':!manager.developer}"></i>
<i class="fa fa-user-plus" title="Org Manager"
ng-class="{'text-green':manager.orgmanager,'text-gray':!manager.orgmanager}"></i>
</td> </td>
<td> <td>
<a role="button" class="text-bold text-primary" ng-click="modifyManager(manager)">Modify</a> <a role="button" class="text-bold text-primary"
ng-click="modifyManager(manager)">Modify</a>
| |
<a class="text-bold text-danger" role="button" ng-click="disableManager(manager)">Disable</a> <a class="text-bold text-danger" role="button"
ng-click="disableManager(manager)">Disable</a>
</td> </td>
</tr> </tr>
</tbody> </tbody>
@ -567,7 +659,9 @@
last-text="&raquo;" last-text="&raquo;"
></uib-pagination> ></uib-pagination>
<div class="row"> <div class="row">
<div class="col-xs-12">Total Records:{{paginationa.totalCount}};Total Pages:{{paginationa.totalPages}}</div> <div class="col-xs-12">Total Records:{{paginationa.totalCount}};Total
Pages:{{paginationa.totalPages}}
</div>
</div> </div>
</div> </div>
</div> </div>
@ -581,12 +675,13 @@
<label class="control-label col-sm-2">Gateway Short Id</label> <label class="control-label col-sm-2">Gateway Short Id</label>
<div class="col-sm-8"> <div class="col-sm-8">
<p class="form-control-static"> <p class="form-control-static">
{{org.gateway_short_id||'初始化'}} {{org.gateway_short_id || '初始化'}}
<a role="button" ng-click="refreshMerchantCode()"><i class="fa fa-refresh"></i></a> <a role="button" ng-click="refreshMerchantCode()"><i class="fa fa-refresh"></i></a>
</p> </p>
</div> </div>
</div> </div>
<div class="form-group" ng-class="{'has-error':org_form.gateway_short_id.$invalid && org_form.gateway_short_id.$dirty}"> <div class="form-group"
ng-class="{'has-error':org_form.gateway_short_id.$invalid && org_form.gateway_short_id.$dirty}">
<label class="col-sm-2 control-label">RoyalPay Public Key</label> <label class="col-sm-2 control-label">RoyalPay Public Key</label>
<div class="col-sm-10" style="margin-top: 8px"> <div class="col-sm-10" style="margin-top: 8px">
<a role="button" ng-click="refreshPlatformPubliKey()"> View </a> <a role="button" ng-click="refreshPlatformPubliKey()"> View </a>
@ -605,7 +700,8 @@
<div class="form-group"> <div class="form-group">
<label class="col-xs-4 col-sm-2 control-label">Client Rate Editable</label> <label class="col-xs-4 col-sm-2 control-label">Client Rate Editable</label>
<div class="col-xs-8 col-sm-8"> <div class="col-xs-8 col-sm-8">
<input type="checkbox" ng-model="org.rate_editable" bs-switch switch-change="toggleRateEditable()" /> <input type="checkbox" ng-model="org.rate_editable" bs-switch
switch-change="toggleRateEditable()"/>
</div> </div>
</div> </div>
</form> </form>
@ -616,7 +712,8 @@
<div> <div>
<span style="float: right; font-size: 14px" class="del_client">禁用</span> <span style="float: right; font-size: 14px" class="del_client">禁用</span>
<span style="float: right; font-size: 14px" class="pass_timeout">&nbsp;&nbsp;超期提醒&nbsp;&nbsp;</span> <span style="float: right; font-size: 14px" class="pass_timeout">&nbsp;&nbsp;超期提醒&nbsp;&nbsp;</span>
<span style="float: right; font-size: 14px" class="bg-red">&nbsp;&nbsp;等待合规&nbsp;&nbsp;</span> <span style="float: right; font-size: 14px"
class="bg-red">&nbsp;&nbsp;等待合规&nbsp;&nbsp;</span>
<span style="float: right; font-size: 14px" class="bg-green">&nbsp;&nbsp;绿色通道&nbsp;&nbsp;</span> <span style="float: right; font-size: 14px" class="bg-green">&nbsp;&nbsp;绿色通道&nbsp;&nbsp;</span>
<span style="float: right; font-size: 14px">&nbsp;&nbsp;通过&nbsp;&nbsp;</span> <span style="float: right; font-size: 14px">&nbsp;&nbsp;通过&nbsp;&nbsp;</span>
</div> </div>
@ -648,15 +745,18 @@
> >
<span ng-bind="partner.client_moniker"></span <span ng-bind="partner.client_moniker"></span
></a> ></a>
<span ng-bind="partner.client_moniker" ng-if="partner.approve_result!=1 && !(partner.approve_result==2 && (partner.source==1 || partner.source==2))"></span> <span ng-bind="partner.client_moniker"
ng-if="partner.approve_result!=1 && !(partner.approve_result==2 && (partner.source==1 || partner.source==2))"></span>
<span ng-if="partner.is_valid==0" ng-class="{pass_timeout:partner.is_valid==0}">(已禁用)</span> <span ng-if="partner.is_valid==0" ng-class="{pass_timeout:partner.is_valid==0}">(已禁用)</span>
<i class="fa fa-sitemap" ng-if="partner.parent_client_id" title="Sub Partner"></i> <i class="fa fa-sitemap" ng-if="partner.parent_client_id"
title="Sub Partner"></i>
<i <i
class="text-danger fa fa-envelope-o" class="text-danger fa fa-envelope-o"
ng-if="(partner.approve_result==1 || (partner.approve_result == 2 && (partner.source==1 || partner.source==2))) && (partner.approve_email_send==2 || partner.approve_email_send==0)" ng-if="(partner.approve_result==1 || (partner.approve_result == 2 && (partner.source==1 || partner.source==2))) && (partner.approve_email_send==2 || partner.approve_email_send==0)"
title="Init email send failed" title="Init email send failed"
></i> ></i>
<i class="text-danger fa fa-clock-o" ng-if="partner.temp_sub_merchant" title="Using temp Sub Merchant ID"></i> <i class="text-danger fa fa-clock-o" ng-if="partner.temp_sub_merchant"
title="Using temp Sub Merchant ID"></i>
</td> </td>
<td ng-bind="partner.short_name"></td> <td ng-bind="partner.short_name"></td>
<td ng-bind="partner.sub_merchant_id"></td> <td ng-bind="partner.sub_merchant_id"></td>
@ -671,22 +771,25 @@
>自助开通试用中({{partner.approve_time}}~{{partner.expiry_time}})</span >自助开通试用中({{partner.approve_time}}~{{partner.expiry_time}})</span
> >
<span ng-if="partner.approve_result==0 && partner.approve_time">不通过({{partner.approve_time}})</span> <span ng-if="partner.approve_result==0 && partner.approve_time">不通过({{partner.approve_time}})</span>
<span ng-if="partner.approve_result==5 && partner.approve_time && partner.refuse_remark">申请打回({{partner.refuse_remark|limitTo:15}})</span> <span ng-if="partner.approve_result==5 && partner.approve_time && partner.refuse_remark">申请打回({{partner.refuse_remark | limitTo:15}})</span>
<span ng-if="(partner.open_status==1||partner.open_status==4) && partner.approve_result!=3" <span ng-if="(partner.open_status==1||partner.open_status==4) && partner.approve_result!=3"
><i ng-if="partner.refuse_remark.length>0" class="fa fa-reply" aria-hidden="true" title="被打回重新提交"></i>等待合规</span ><i ng-if="partner.refuse_remark.length>0" class="fa fa-reply"
aria-hidden="true" title="被打回重新提交"></i>等待合规</span
> >
<span ng-if="partner.approve_result==3 && (!partner.open_status || partner.open_status==4)">自助开通(等待合规)</span> <span ng-if="partner.approve_result==3 && (!partner.open_status || partner.open_status==4)">自助开通(等待合规)</span>
<span ng-if="partner.open_status==2">合同制作完成</span> <span ng-if="partner.open_status==2">合同制作完成</span>
<span ng-if="partner.open_status==3 && partner.approve_result!=5">等待BD上传材料审核</span> <span ng-if="partner.open_status==3 && partner.approve_result!=5">等待BD上传材料审核</span>
<span ng-if="partner.open_status==10">绿色通道申请中</span> <span ng-if="partner.open_status==10">绿色通道申请中</span>
<span ng-if="partner.approve_result==4 && !partner.open_status" <span ng-if="partner.approve_result==4 && !partner.open_status"
><i ng-if="partner.refuse_remark.length>0" class="fa fa-reply" aria-hidden="true" title="被打回重新提交"></i>等待合规</span ><i ng-if="partner.refuse_remark.length>0" class="fa fa-reply"
aria-hidden="true" title="被打回重新提交"></i>等待合规</span
> >
</td> </td>
<td ng-bind="partner.org_name"></td> <td ng-bind="partner.org_name"></td>
<td ng-bind="partner.bd_user_name"></td> <td ng-bind="partner.bd_user_name"></td>
<td ng-if="'client_detail_by_moniker'|withFunc"> <td ng-if="'client_detail_by_moniker'|withFunc">
<a class="text-primary" role="button" title="Detail" ui-sref="partners.detail({clientMoniker:partner.client_moniker})"> <a class="text-primary" role="button" title="Detail"
ui-sref="partners.detail({clientMoniker:partner.client_moniker})">
<i class="fa fa-search"></i> Detail <i class="fa fa-search"></i> Detail
</a> </a>
</td> </td>
@ -709,7 +812,9 @@
last-text="&raquo;" last-text="&raquo;"
></uib-pagination> ></uib-pagination>
<div class="row"> <div class="row">
<div class="col-xs-12">Total Records:{{pagination.totalCount}};Total Pages:{{pagination.totalPages}}</div> <div class="col-xs-12">Total Records:{{pagination.totalCount}};Total
Pages:{{pagination.totalPages}}
</div>
</div> </div>
</div> </div>
</div> </div>
@ -720,7 +825,8 @@
<div class="box box-warning"> <div class="box box-warning">
<div class="box-header with-border">商户新增趋势</div> <div class="box-header with-border">商户新增趋势</div>
<div class="box-body"> <div class="box-body">
<div class="chart" echarts="analysis.clients_line" style="height: 300px" ng-class="{nodata:analysis.clients_line.nodata}"></div> <div class="chart" echarts="analysis.clients_line" style="height: 300px"
ng-class="{nodata:analysis.clients_line.nodata}"></div>
</div> </div>
</div> </div>
</div> </div>
@ -730,7 +836,8 @@
<div class="box box-warning"> <div class="box box-warning">
<div class="box-header with-border">交易额趋势</div> <div class="box-header with-border">交易额趋势</div>
<div class="box-body"> <div class="box-body">
<div class="chart" echarts="analysis.trade_line" style="height: 300px" ng-class="{nodata:analysis.trade_line.nodata}"></div> <div class="chart" echarts="analysis.trade_line" style="height: 300px"
ng-class="{nodata:analysis.trade_line.nodata}"></div>
</div> </div>
</div> </div>
</div> </div>
@ -773,24 +880,31 @@
</div> </div>
<div class="btn-group"> <div class="btn-group">
<a role="button" class="btn btn-default btn-sm" ng-click="chooseToday()">Today</a> <a role="button" class="btn btn-default btn-sm"
ng-click="chooseToday()">Today</a>
</div> </div>
<div class="btn-group"> <div class="btn-group">
<a role="button" class="btn btn-default btn-sm" ng-click="chooseYesterday()">Yesterday</a> <a role="button" class="btn btn-default btn-sm"
ng-click="chooseYesterday()">Yesterday</a>
</div> </div>
<div class="btn-group"> <div class="btn-group">
<a role="button" class="btn btn-default btn-sm" ng-click="chooseLast7Days()">Last 7 Days</a> <a role="button" class="btn btn-default btn-sm"
ng-click="chooseLast7Days()">Last 7 Days</a>
</div> </div>
<div class="btn-group"> <div class="btn-group">
<a role="button" class="btn btn-default btn-sm" ng-click="thisMonth()">This Month</a> <a role="button" class="btn btn-default btn-sm"
ng-click="thisMonth()">This Month</a>
</div> </div>
<div class="btn-group"> <div class="btn-group">
<a role="button" class="btn btn-default btn-sm" ng-click="lastMonth()">Last Month</a> <a role="button" class="btn btn-default btn-sm"
ng-click="lastMonth()">Last Month</a>
</div> </div>
<div class="btn-group"> <div class="btn-group">
<a role="button" class="btn btn-default btn-sm" ng-click="thisYear()">This Year</a> <a role="button" class="btn btn-default btn-sm"
ng-click="thisYear()">This Year</a>
</div> </div>
<button class="btn btn-success" type="button" ng-click="loadTransactionAmountInOrg()"> <button class="btn btn-success" type="button"
ng-click="loadTransactionAmountInOrg()">
<i class="fa fa-search"></i> <i class="fa fa-search"></i>
</button> </button>
</div> </div>
@ -844,16 +958,20 @@
</thead> </thead>
<tbody> <tbody>
<tr ng-repeat="sale in partnerSalesList"> <tr ng-repeat="sale in partnerSalesList">
<td style="text-align: center; font-style: italic; font-size: larger" ng-bind="$index*2+1+'.'"></td> <td style="text-align: center; font-style: italic; font-size: larger"
ng-bind="$index*2+1+'.'"></td>
<td> <td>
<a class="text-primary" role="button" title="Detail" ui-sref="partners.detail({clientMoniker:sale[0].client_moniker})"> <a class="text-primary" role="button" title="Detail"
ui-sref="partners.detail({clientMoniker:sale[0].client_moniker})">
{{sale[0].client_moniker}} {{sale[0].client_moniker}}
</a> </a>
</td> </td>
<td ng-bind="sale[0].amount"></td> <td ng-bind="sale[0].amount"></td>
<td style="text-align: center; font-style: italic; font-size: larger" ng-bind="$index * 2 + 2 +'.'"></td> <td style="text-align: center; font-style: italic; font-size: larger"
ng-bind="$index * 2 + 2 +'.'"></td>
<td> <td>
<a class="text-primary" role="button" title="Detail" ui-sref="partners.detail({clientMoniker:sale[1].client_moniker})"> <a class="text-primary" role="button" title="Detail"
ui-sref="partners.detail({clientMoniker:sale[1].client_moniker})">
{{sale[1].client_moniker}} {{sale[1].client_moniker}}
</a> </a>
</td> </td>
@ -891,16 +1009,20 @@
<tbody> <tbody>
<tr ng-repeat="clientExtracts in client_extarct"> <tr ng-repeat="clientExtracts in client_extarct">
<td ng-bind="clientExtracts.name"></td> <td ng-bind="clientExtracts.name"></td>
<td>{{clientExtracts.year|limitTo:10}} - {{clientExtracts.month|limitTo:10}}</td> <td>{{clientExtracts.year | limitTo:10}} - {{clientExtracts.month | limitTo:10}}
</td>
<td ng-bind="clientExtracts.gross_amount|currency:'AUD'"></td> <td ng-bind="clientExtracts.gross_amount|currency:'AUD'"></td>
<td ng-bind="clientExtracts.total_charge|currency:'AUD'"></td> <td ng-bind="clientExtracts.total_charge|currency:'AUD'"></td>
<td ng-bind="clientExtracts.royalpay_charge|currency:'AUD'"></td> <td ng-bind="clientExtracts.royalpay_charge|currency:'AUD'"></td>
<td ng-bind="clientExtracts.org_charge|currency:'AUD'"></td> <td ng-bind="clientExtracts.org_charge|currency:'AUD'"></td>
<td ng-bind="clientExtracts.share_charge|currency:'AUD'"></td> <td ng-bind="clientExtracts.share_charge|currency:'AUD'"></td>
<td> <td>
<img ng-if='clientExtracts.channel=="Alipay"' src="/static/images/alipay_sign_lg.png" /> <img ng-if='clientExtracts.channel=="Alipay"'
<img ng-if='clientExtracts.channel=="AlipayOnline"' style="width: 48px; height: 48px" src="/static/images/alipay_online.png" /> src="/static/images/alipay_sign_lg.png"/>
<img ng-if='clientExtracts.channel=="Wechat"' src="/static/images/wechatpay_sign_lg.png" /> <img ng-if='clientExtracts.channel=="AlipayOnline"'
style="width: 48px; height: 48px" src="/static/images/alipay_online.png"/>
<img ng-if='clientExtracts.channel=="Wechat"'
src="/static/images/wechatpay_sign_lg.png"/>
{{clientExtracts.channel}} {{clientExtracts.channel}}
</td> </td>
</tr> </tr>
@ -922,7 +1044,9 @@
last-text="&raquo;" last-text="&raquo;"
></uib-pagination> ></uib-pagination>
<div class="row"> <div class="row">
<div class="col-xs-12">Total Records:{{paginationc.totalCount}};Total Pages:{{paginationc.totalPages}}</div> <div class="col-xs-12">Total Records:{{paginationc.totalCount}};Total
Pages:{{paginationc.totalPages}}
</div>
</div> </div>
</div> </div>
</div> </div>
@ -942,8 +1066,10 @@
</div> </div>
</div> </div>
</form> </form>
<button class="btn btn-warning" ng-click="loadClientProfile()"><i class="fa fa-refresh"></i> Reset</button> <button class="btn btn-warning" ng-click="loadClientProfile()"><i class="fa fa-refresh"></i> Reset
<button class="btn btn-success" ng-click="submitClientProfile()"><i class="fa fa-check"></i> Submit</button> </button>
<button class="btn btn-success" ng-click="submitClientProfile()"><i class="fa fa-check"></i> Submit
</button>
</uib-tab> </uib-tab>
</uib-tabset> </uib-tabset>
</div> </div>

@ -121,6 +121,40 @@
</div> </div>
</div> </div>
<!-- APS start -->
<div class="form-group">
<label class="control-label col-sm-2">A+(APS)</label>
</div>
<div class="form-group" ng-class="{'has-error':org_form.wechat_rate_value.$invalid && org_form.wechat_rate_value.$dirty}">
<label class="control-label col-sm-3" for="wechat_rate_value_input">Interchange Fee *</label>
<div class="col-sm-7">
<input class="form-control form-control-float" type="number" ng-model="org.interchange_fee_value" id="interchange_fee_value_input" name="interchange_fee_value" max="100" min="0" readonly>
<span class="input-group-addon form-control-span">%</span>
</div>
</div>
<div class="form-group" ng-class="{'has-error':org_form.service_fee_value.$invalid && org_form.service_fee_value.$dirty}">
<label class="control-label col-sm-3" for="service_fee_value_input">Service Fee *</label>
<div class="col-sm-7">
<input class="form-control form-control-float" type="number" ng-model="org.service_fee_value" id="service_fee_value_input" name="service_fee_value" max="100" min="0" readonly>
<span class="input-group-addon form-control-span">%</span>
</div>
</div>
<div class="form-group" ng-class="{'has-error':org_form.min_interchange_fee_value.$invalid && org_form.min_interchange_fee_value.$dirty}">
<label class="control-label col-sm-3" for="min_interchange_fee_value_input">Min Interchange Fee</label>
<div class="col-sm-7">
<input class="form-control form-control-float" type="number" ng-model="org.min_interchange_fee_value" id="min_interchange_fee_value_input" name="min_interchange_fee_value" max="100" min="0" readonly>
<span class="input-group-addon form-control-span">%</span>
</div>
</div>
<div class="form-group" ng-class="{'has-error':org_form.min_service_fee_value.$invalid && org_form.min_service_fee_value.$dirty}">
<label class="control-label col-sm-3" for="min_service_fee_value_input">Min Service Fee</label>
<div class="col-sm-7">
<input class="form-control form-control-float" type="number" ng-model="org.min_service_fee_value" id="min_service_fee_value_input" name="min_service_fee_value" max="100" min="0" readonly>
<span class="input-group-addon form-control-span">%</span>
</div>
</div>
<!-- APS end-->
<div class="form-group" ng-class="{'has-error':org_form.bestpay_rate_value.$invalid && org_form.bestpay_rate_value.$dirty}"> <div class="form-group" ng-class="{'has-error':org_form.bestpay_rate_value.$invalid && org_form.bestpay_rate_value.$dirty}">
<label class="control-label col-sm-2" for="bestpay_rate_value_input">Bestpay Rate *</label> <label class="control-label col-sm-2" for="bestpay_rate_value_input">Bestpay Rate *</label>
<div class="col-sm-8"> <div class="col-sm-8">

@ -17,7 +17,7 @@
<div class="form-group" ng-if="partner.surcharge_mode=='distributed'"> <div class="form-group" ng-if="partner.surcharge_mode=='distributed'">
<label class="col-sm-4">手续费账户余额</label> <label class="col-sm-4">手续费账户余额</label>
<div class="col-sm-6" style="font-size: 25px"> <div class="col-sm-6" style="font-size: 25px">
<p>{{surcharge.balance|currency:'AUD'}}<i class="fa fa-bars" <p>{{surcharge.balance | currency:'AUD'}}<i class="fa fa-bars"
style="font-size: 15px;color: #3c8dbc;cursor: pointer;padding-left: 15px" style="font-size: 15px;color: #3c8dbc;cursor: pointer;padding-left: 15px"
ng-click="surchargeAccountDetail()"></i></p> ng-click="surchargeAccountDetail()"></i></p>
</div> </div>
@ -80,7 +80,7 @@
<label class="col-sm-4" for="minSettleEdit">Min Settle</label> <label class="col-sm-4" for="minSettleEdit">Min Settle</label>
<div class="col-sm-6"> <div class="col-sm-6">
<p ng-if="!bankCtrl.modify_min_settle" class="form-control-static"> <p ng-if="!bankCtrl.modify_min_settle" class="form-control-static">
<span ng-if="partner.min_settle">AU$</span>{{partner.min_settle||'Not Configure'}} <span ng-if="partner.min_settle">AU$</span>{{partner.min_settle || 'Not Configure'}}
<a role="button" ng-click="bankCtrl.modify_min_settle=true"><i class="fa fa-edit"></i></a> <a role="button" ng-click="bankCtrl.modify_min_settle=true"><i class="fa fa-edit"></i></a>
</p> </p>
<div class="input-group" ng-if="bankCtrl.modify_min_settle"> <div class="input-group" ng-if="bankCtrl.modify_min_settle">
@ -281,7 +281,7 @@
Debit</a></li> Debit</a></li>
<a id="addCardPaymentRate" class="btn btn-warning" style="float: right" type="button" <a id="addCardPaymentRate" class="btn btn-warning" style="float: right" type="button"
ng-click="newCardPaymentRates()" ng-click="newCardPaymentRates()"
ng-if="(partner.card_rate_editable && ('100'|withRole)) || ('11'|withRole)"> ng-if="(bankCtrl.rate_name=='rpaypmt_card'||bankCtrl.rate_name=='rpaypmt_dd') && ((partner.card_rate_editable && ('100'|withRole)) || ('11'|withRole))">
Add Card Payment Rates Add Card Payment Rates
</a> </a>
<a id="addAlipayApsRate" class="btn btn-info" style="float: right;margin-right: 10px" type="button" <a id="addAlipayApsRate" class="btn btn-info" style="float: right;margin-right: 10px" type="button"
@ -374,7 +374,8 @@
ng-if="sysconfig.active_channels.indexOf('AlipayPlus')!=-1">AlipayCN</a> ng-if="sysconfig.active_channels.indexOf('AlipayPlus')!=-1">AlipayCN</a>
</li> </li>
<li role="presentation" ng-class="{active:!isAlipayCN}"><a role="button" <li role="presentation" ng-class="{active:!isAlipayCN}"><a role="button"
ng-click="changeAlipayPlusRateState(false)">Other Wallets</a> ng-click="changeAlipayPlusRateState(false)">Other
Wallets</a>
</li> </li>
</ul> </ul>
<div class="table-responsive"> <div class="table-responsive">

Loading…
Cancel
Save