Merge branch 'local_HF' into develop

master
yuan 6 years ago
commit 744a9b8463

@ -574,6 +574,11 @@ CREATE TABLE `sys_mail_unsub` (
alter table sys_clients add column ali_sub_merchant_id varchar(20) DEFAULT NULL;
update sys_clients set ali_sub_merchant_id = client_moniker;
alter table sys_clients add column enable_hf tinyint(0) NOT NULL;
ALTER TABLE sys_org ADD COLUMN min_hf_rate DECIMAL(3,2) DEFAULT NULL COMMENT '旗下商户最低hf费率';
ALTER TABLE sys_org ADD COLUMN hf_rate_value DECIMAL(3,2) DEFAULT NULL COMMENT '旗下商户hf费率';
ALTER TABLE `log_clearing_detail`
ADD COLUMN `settle_bank` varchar(10) NULL DEFAULT NULL COMMENT '清算来源银行(RoyalPay)' AFTER `account_name`;
update log_clearing_detail set settle_bank='CBA';

@ -29,6 +29,7 @@ public class ChannelsAnalysisServiceImpl implements ChannelsAnalysisService {
listChannel.add(putParam(params,"Alipay"));
listChannel.add(putParam(params,"AlipayOnline"));
listChannel.add(putParam(params,"jd"));
listChannel.add(putParam(params,"hf"));
return listChannel;
}
@ -39,7 +40,7 @@ public class ChannelsAnalysisServiceImpl implements ChannelsAnalysisService {
}
List<JSONObject> list = new ArrayList<>();
Map<Date,JSONObject> analysisMap = new TreeMap<>();
String[] channels = {"Wechat","Bestpay","Alipay","jd","AlipayOnline"};
String[] channels = {"Wechat","Bestpay","Alipay","jd","AlipayOnline","hf"};
for (String channel:channels){
analysisChannelCustomers(params, analysisMap, channel);
}

@ -109,6 +109,13 @@ public class CustomersAnalysisServiceImp implements CustomersAnalysisService {
} else {
result.put("aliOnlineAmount", 0.00);
}
params.put("channel", "hf");
JSONObject hfPayAmount = customerAndOrdersStatisticsMapper.getSumCustomersChannelAnalysis(params);
if (hfPayAmount != null) {
result.put("hfPayAmount", hfPayAmount.getBigDecimal("total_amount"));
} else {
result.put("hfPayAmount", 0.00);
}
return result;
}

@ -553,7 +553,7 @@ public class DashboardServiceImpl implements DashboardService,DashboardAnalysisT
}
}
private JSONObject getTodayChannelCount(JSONObject params){
String[] channels = new String[]{"Bestpay","Wechat","Alipay","jd","AlipayOnline"};
String[] channels = new String[]{"Bestpay","Wechat","Alipay","jd","AlipayOnline","hf"};
JSONObject resp = new JSONObject();
for(String channel:channels) {
params.put("channel", channel);

@ -320,4 +320,7 @@ public interface ClientManager {
void removeSub(String client_moniker, JSONObject manager);
String getShortLink(String client_moniker);
@Transactional
void switchHfLink(JSONObject manager, String clientMoniker,boolean allow);
}

@ -262,6 +262,9 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid
private ClearingDetailMapper clearingDetailMapper;
@Resource
private ClearingLogMapper clearingLogMapper;
@Resource
private ClientConfigMapper clientConfigMapper;
private static final String SOURCE_AGREE_FILE = "source_agree_file";
@ -1480,12 +1483,14 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid
checkAddRate(config, "AlipayOnline", "alipayonline_rate_value", org, "min_alipayonline_rate");
checkAddRate(config, "Bestpay", "bestpay_rate_value", org, "min_bestpay_rate");
checkAddRate(config, "jd", "jd_rate_value", org, "min_jd_rate");
checkAddRate(config, "hf", "hf_rate_value", org, "min_hf_rate");
configNewClientRate(config, clientId, "Wechat", "wechat_rate_value", org, "min_wechat_rate");
configNewClientRate(config, clientId, "Alipay", "alipay_rate_value", org, "min_alipay_rate");
configNewClientRate(config, clientId, "AlipayOnline", "alipayonline_rate_value", org, "min_alipayonline_rate");
configNewClientRate(config, clientId, "Bestpay", "bestpay_rate_value", org, "min_bestpay_rate");
configNewClientRate(config, clientId, "jd", "jd_rate_value", org, "min_jd_rate");
configNewClientRate(config, clientId, "hf", "hf_rate_value", org, "min_hf_rate");
}
@ -3666,6 +3671,30 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid
mailService.removeUnsub(sub.getLong("id"));
}
@Override
public void switchHfLink(JSONObject manager, String clientMoniker, boolean allow) {
JSONObject client = getClientInfoByMoniker(clientMoniker);
if (client == null) {
throw new InvalidShortIdException();
}
checkOrgPermission(manager, client);
if(allow){
if(StringUtils.isEmpty(client.getString("hf_pay_url"))){
String hf_pay_url = getShortLink(clientMoniker);
client.put("hf_pay_url",hf_pay_url);
JSONObject clientConfig = new JSONObject();
clientConfig.put("hf_pay_url",hf_pay_url);
clientConfig.put("client_id",client.getIntValue("client_id"));
clientConfigMapper.update(clientConfig);
clientMapper.update(client);
}
}
clientModifySupport.processClientConfigModify(new SwitchPermissionModify(manager, clientMoniker, "enable_link", allow));
}
@Override
public String getShortLink(String client_moniker){
String longUrl = PlatformEnvironment.getEnv().concatUrl("/api/v1.0/hf_gateway/partners/"+client_moniker+"/jump");

@ -536,4 +536,9 @@ public class PartnerManageController {
clientManager.removeSub(clientMoniker,manager);
}
@ManagerMapping(value = "/{clientMoniker}/hf", method = RequestMethod.PUT, role = {ManagerRole.SERVANT, ManagerRole.DEVELOPER})
public void switchHfPermission(@PathVariable String clientMoniker, @RequestBody JSONObject pass, @ModelAttribute(CommonConsts.MANAGER_STATUS) JSONObject manager) {
clientManager.switchHfLink(manager, clientMoniker, pass.getBooleanValue("allow"));
}
}

@ -28,6 +28,7 @@ public class OrgInfo {
private Double bestpay_rate_value;
private Double alipayonline_rate_value;
private Double jd_rate_value;
private Double hf_rate_value;
private int is_valid;
private String search_text;
private int page = 1;
@ -40,6 +41,7 @@ public class OrgInfo {
private Double min_bestpay_rate;
private Double min_jd_rate;
private Double min_alipayonline_rate;
private Double min_hf_rate;
public JSONObject toJsonParam() {
JSONObject param = new JSONObject();
@ -283,4 +285,20 @@ public class OrgInfo {
public void setMin_alipayonline_rate(Double min_alipayonline_rate) {
this.min_alipayonline_rate = min_alipayonline_rate;
}
public Double getHf_rate_value() {
return hf_rate_value;
}
public void setHf_rate_value(Double hf_rate_value) {
this.hf_rate_value = hf_rate_value;
}
public Double getMin_hf_rate() {
return min_hf_rate;
}
public void setMin_hf_rate(Double min_hf_rate) {
this.min_hf_rate = min_hf_rate;
}
}

@ -314,7 +314,9 @@
ifnull(sum(CASE WHEN s.channel = 'jd' THEN s.total ELSE 0 END),0) jdamount,
ifnull(sum(CASE WHEN s.channel = 'jd' THEN s.orders ELSE 0 END),0) jd_order_count,
ifnull(sum(CASE WHEN s.channel = 'AlipayOnline' THEN s.total ELSE 0 END),0) alipayonlineamount,
ifnull(sum(CASE WHEN s.channel = 'AlipayOnline' THEN s.orders ELSE 0 END),0) alipayonline_order_count
ifnull(sum(CASE WHEN s.channel = 'AlipayOnline' THEN s.orders ELSE 0 END),0) alipayonline_order_count,
ifnull(sum(CASE WHEN s.channel = 'hf' THEN s.total ELSE 0 END),0) hfamount,
ifnull(sum(CASE WHEN s.channel = 'hf' THEN s.orders ELSE 0 END),0) hf_order_count,
FROM statistics_customer_order s
LEFT JOIN sys_clients c ON c.client_id = s.client_id and c.is_valid=1
]]>

@ -200,6 +200,8 @@
THEN 'MICROAPP'
WHEN 13
THEN 'Native QR Code'
WHEN 14
THEN 'Share Link'
END AS gateway_label,
ifnull(sum(if(l.transaction_type='Credit',l.clearing_amount,0)), 0) aud_fee
FROM pmt_transactions l
@ -463,6 +465,8 @@
THEN 'MICROAPP'
WHEN 13
THEN 'Native QR Code'
WHEN 14
THEN 'Share Link'
END AS gateway_label,
ifnull(COUNT(DISTINCT l.client_id), 0) partner_count
FROM pmt_transactions l
@ -526,6 +530,9 @@
<if test="trade_type=='Native QR Code'">
and o.gateway=13
</if>
<if test="trade_type=='Share Link'">
and o.gateway=14
</if>
<if test="org_id!=null and org_ids==null">and l.org_id=#{org_id}</if>
<if test="org_ids!=null">and l.org_id in
<foreach collection="org_ids" item="org_id" open="(" close=")" separator=",">#{org_id}</foreach></if>
@ -615,6 +622,9 @@
<if test="trade_type=='Native QR Code'">
and o.gateway=13
</if>
<if test="trade_type=='Share Link'">
and o.gateway=14
</if>
<if test="org_id!=null and org_ids==null">and ptran.org_id=#{org_id}</if>
<if test="org_ids!=null">and ptran.org_id in
<foreach collection="org_ids" item="org_id" open="(" close=")" separator=",">#{org_id}</foreach></if>

@ -89,6 +89,8 @@
THEN 'MICROAPP'
WHEN 13
THEN 'Native QR Code'
WHEN 14
THEN 'Share Link'
END AS gateway,
p.client_moniker partner_code,
p.short_name partner_name,

@ -119,7 +119,7 @@ define(['angular', 'static/commons/commons', 'static/commons/angular-ueditor', '
trigger: 'item',
formatter :"{a} {b} : {c} ({d}%)"
},
color: ['#09bb07','#FF2D96','#00a0e9','00a0e9','#DC0808'],
color: ['#09bb07','#FF2D96','#00a0e9','00a0e9','#DC0808',"#FFFF33"],
legend: {
orient: 'vertical',
y: '450px',
@ -158,7 +158,7 @@ define(['angular', 'static/commons/commons', 'static/commons/angular-ueditor', '
trigger: 'axis'
},
legend: {
data: ['Alipay交易金额','AlipayOnline交易金额', 'Bestpay交易金额','Wechat交易金额',"JD Pay交易金额"],
data: ['Alipay交易金额','AlipayOnline交易金额', 'Bestpay交易金额','Wechat交易金额',"JD Pay交易金额","HF Pay交易金额"],
bottom: 0,
height: '15%',
width: '80%',
@ -170,7 +170,7 @@ define(['angular', 'static/commons/commons', 'static/commons/angular-ueditor', '
type: 'value'
}
],
color: ['#00a0e9','#00a0e9','#FF2D96','#09bb07','#DC0808'],
color: ['#00a0e9','#00a0e9','#FF2D96','#09bb07','#DC0808',"#FFFF33"]
},
xAxis: {
basic: {type: 'category', boundaryGap: false},
@ -231,6 +231,17 @@ define(['angular', 'static/commons/commons', 'static/commons/angular-ueditor', '
yAxisIndex: 0
},
column: {key: 'jd.total'}
},
{
basic: {
name: 'HF Pay交易金额',
type: 'line',
label: {normal: {show: true}},
showAllSymbols: true,
showSymbol: true,
yAxisIndex: 0
},
column: {key: 'hf.total'}
}
]
};
@ -241,7 +252,7 @@ define(['angular', 'static/commons/commons', 'static/commons/angular-ueditor', '
trigger: 'axis'
},
legend: {
data: ['Alipay交易订单','AlipayOnline交易订单', 'Bestpay交易订单','Wechat交易订单',"JD Pay交易订单"],
data: ['Alipay交易订单','AlipayOnline交易订单', 'Bestpay交易订单','Wechat交易订单',"JD Pay交易订单","HF Pay交易订单"],
bottom: 0,
height: '15%',
width: '80%',
@ -253,7 +264,7 @@ define(['angular', 'static/commons/commons', 'static/commons/angular-ueditor', '
type: 'value'
}
],
color: ['#00a0e9','00a0e9','#FF2D96','#09bb07','#DC0808'],
color: ['#00a0e9','00a0e9','#FF2D96','#09bb07','#DC0808',"#FFFF33"]
},
xAxis: {
basic: {type: 'category', boundaryGap: false},
@ -314,6 +325,17 @@ define(['angular', 'static/commons/commons', 'static/commons/angular-ueditor', '
yAxisIndex: 0
},
column: {key: 'jd.orders'}
},
{
basic: {
name: 'HF Pay交易订单',
type: 'line',
label: {normal: {show: true}},
showAllSymbols: true,
showSymbol: true,
yAxisIndex: 0
},
column: {key: 'hf.orders'}
}
]
};
@ -323,7 +345,7 @@ define(['angular', 'static/commons/commons', 'static/commons/angular-ueditor', '
trigger: 'axis'
},
legend: {
data: ['Alipay交易客单价','AlipayOnline交易客单价', 'Bestpay交易客单价','Wechat交易客单价',"JD Pay交易客单价"],
data: ['Alipay交易客单价','AlipayOnline交易客单价', 'Bestpay交易客单价','Wechat交易客单价',"JD Pay交易客单价","HF Pay交易客单价"],
bottom: 0,
},
yAxis: [
@ -332,7 +354,7 @@ define(['angular', 'static/commons/commons', 'static/commons/angular-ueditor', '
type: 'value'
}
],
color: ['#00a0e9','#00a0e9','#FF2D96','#09bb07','#DC0808'],
color: ['#00a0e9','#00a0e9','#FF2D96','#09bb07','#DC0808',"#FFFF33"]
},
xAxis: {
basic: {type: 'category', boundaryGap: false},
@ -393,6 +415,17 @@ define(['angular', 'static/commons/commons', 'static/commons/angular-ueditor', '
yAxisIndex: 0
},
column: {key: 'jd.single_amount'}
},
{
basic: {
name: 'HF Pay交易客单价',
type: 'line',
label: {normal: {show: true}},
showAllSymbols: true,
showSymbol: true,
yAxisIndex: 0
},
column: {key: 'hf.single_amount'}
}
]
};

@ -502,6 +502,8 @@ define(['angular', 'decimal', 'uiBootstrap', 'uiRouter', 'angularEcharts'], func
return '/static/images/wechatpay_sign_lg.png';
case 'jd':
return '/static/images/jd_sign_lg.png';
case 'hf':
return '/static/images/hf_sign_lg.png';
}
}
});

@ -177,6 +177,8 @@
uib-tooltip="AlipayOnline" ng-if="order.channel=='AlipayOnline'"/>
<img src="/static/images/jd_sign.png"
uib-tooltip="JD Pay" ng-if="order.channel=='jd'"/>
<img src="/static/images/hf_sign.png"
uib-tooltip="HF Pay" ng-if="order.channel=='hf'"/>
{{order.order_id}}
</td>
<td>{{order.short_name}}(<a class="text-primary" role="button" title="Detail"

@ -88,7 +88,9 @@
<a role="button" ng-class="{'bg-primary':params.channel=='BESTPAY'}"
ng-click="params.channel='BESTPAY';doAnalysis(1)">BestPay</a> |
<a role="button" ng-class="{'bg-primary':params.channel=='jd'}"
ng-click="params.channel='jd';doAnalysis(1)">JD Pay</a>
ng-click="params.channel='jd';doAnalysis(1)">JD Pay</a> |
<a role="button" ng-class="{'bg-primary':params.channel=='hf'}"
ng-click="params.channel='hf';doAnalysis(1)">HF Pay</a>
</p>
</div>
</div>

@ -98,7 +98,9 @@
<a role="button" ng-class="{'bg-primary':params.channel=='BESTPAY'}"
ng-click="params.channel='BESTPAY';doAnalysis(1)">BestPay</a> |
<a role="button" ng-class="{'bg-primary':params.channel=='jd'}"
ng-click="params.channel='jd';doAnalysis(1)">JD Pay</a>
ng-click="params.channel='jd';doAnalysis(1)">JD Pay</a> |
<a role="button" ng-class="{'bg-primary':params.channel=='HF'}"
ng-click="params.channel='HF';doAnalysis(1)">HF Pay</a>
</p>
</div>
</div>

@ -98,7 +98,9 @@
<a role="button" ng-class="{'bg-primary':params.channel=='BESTPAY'}"
ng-click="params.channel='BESTPAY';doAnalysis(1)">BestPay</a> |
<a role="button" ng-class="{'bg-primary':params.channel=='jd'}"
ng-click="params.channel='jd';doAnalysis(1)">JD Pay</a>
ng-click="params.channel='jd';doAnalysis(1)">JD Pay</a> |
<a role="button" ng-class="{'bg-primary':params.channel=='hf'}"
ng-click="params.channel='hf';doAnalysis(1)">HF Pay</a>
</p>
</div>
</div>

@ -43,6 +43,11 @@
<img src="/static/images/jd_sign_lg.png" class="channel-icon-lg">
</a>
</li>
<li ng-class="{active:ctrl.channel=='hf'}" ng-if="report.channels.hf">
<a role="button" ng-click="ctrl.channel='hf';channelAndDayOfAnalysis()" title="HF">
<img src="/static/images/hf_sign_lg.png" class="channel-icon-lg">
</a>
</li>
</ul>
</div>
</div>

@ -95,7 +95,9 @@
<a role="button" ng-class="{'bg-primary':params.channel=='BESTPAY'}"
ng-click="params.channel='BESTPAY';doAnalysis(1)">BestPay</a> |
<a role="button" ng-class="{'bg-primary':params.channel=='jd'}"
ng-click="params.channel='jd';doAnalysis(1)">JD Pay</a>
ng-click="params.channel='jd';doAnalysis(1)">JD Pay</a> |
<a role="button" ng-class="{'bg-primary':params.channel=='hf'}"
ng-click="params.channel='hf';doAnalysis(1)">HF Pay</a>
</p>
</div>
</div>
@ -135,11 +137,73 @@
<div class="box box-warning" ng-if="currentUser.org==null">
<div class="box-header with-border">各平台交易总额</div>
<div class="box-body table-responsive">
<table class="table">
<div class="row">
<div class="col-sm-2 col-xs-6">
<div class="description-block">
<div class="description-header text-bold"><img src="/static/images/wechatpay_sign.png"/>Wechat</div>
<div class="description-text">
<label class="description-text text-red"
ng-bind="totalChannelAmount.wechatPayAmount|currency: ' $ '"></label>
</div>
</div>
</div>
<div class="col-sm-2 col-xs-6">
<div class="description-block">
<div class="description-text">
<div class="description-header text-bold"><img src="/static/images/bestpay_sign.png"/>Bestpay</div>
<label class="description-text text-red"
ng-bind="totalChannelAmount.bestPayAmount|currency: ' $ '"></label>
</div>
</div>
</div>
<div class="col-sm-2 col-xs-6">
<div class="description-block">
<div class="description-header text-bold"><img src="/static/images/alipay_sign.png"/>Alipay</div>
<div class="description-text text-red">
<label class="description-text"
ng-bind="totalChannelAmount.aliPayAmount|currency: ' $ '"></label>
</div>
</div>
</div>
<div class="col-sm-2 col-xs-6">
<div class="description-block">
<div class="description-header text-bold"><img src="/static/images/alipay_sign.png"/>AlipayOnline</div>
<div class="description-text text-red">
<label class="description-text"
ng-bind="totalChannelAmount.aliOnlineAmount|currency: ' $ '"></label>
</div>
</div>
</div>
<div class="col-sm-2 col-xs-6">
<div class="description-block">
<div class="description-header text-bold"><img src="/static/images/wechatpay_sign.png"/>JD Pay</div>
<div class="description-text text-red">
<label class="description-text"
ng-bind="totalChannelAmount.wechatPayAmount|currency: ' $ '"></label>
</div>
</div>
</div>
<div class="col-sm-2 col-xs-6">
<div class="description-block">
<div class="description-header text-bold"><img src="/static/images/hf_sign.png"/>HF Pay</div>
<div class="description-text text-red">
<label class="description-text"
ng-bind="totalChannelAmount.hfPayAmount|currency: ' $ '"></label>
</div>
</div>
</div>
</div>
<!--<table class="table">
<tr>
<th>
<img src="/static/images/wechatpay_sign.png"/>
Wechat:{{totalChannelAmount.wechatPayAmount|currency: ' $ '}}</th>
<span>交易额:{{totalChannelAmount.wechatPayAmount|currency: ' $ '}}</span><br>
<img src="/static/images/wechatpay_sign.png"/>Wechat
</th>
<th>
<img src="/static/images/bestpay_sign.png"/>
Bestpay:{{totalChannelAmount.bestPayAmount|currency: ' $ '}}</th>
@ -152,11 +216,14 @@
<th>
<img src="/static/images/jd_sign.png"/>
JD Pay:{{totalChannelAmount.jdPayAmount|currency: ' $ '}}</th>
<!--<th>-->
<!--<img src="/static/images/wechatpay_sign.png"/>-->
<!--Znyoo:{{totalChannelAmount.znyooAmount|currency: ' $ '}}</th>-->
<th>
<img src="/static/images/hf_sign.png"/>
JD Pay:{{totalChannelAmount.hfPayAmount|currency: ' $ '}}</th>
&lt;!&ndash;<th>&ndash;&gt;
&lt;!&ndash;<img src="/static/images/wechatpay_sign.png"/>&ndash;&gt;
&lt;!&ndash;Znyoo:{{totalChannelAmount.znyooAmount|currency: ' $ '}}</th>&ndash;&gt;
</tr>
</table>
</table>-->
</div>
</div>
<div class="box box-warning settle-forecast" ng-if="currentUser.org==null">

@ -65,7 +65,9 @@
<a role="button" ng-class="{'bg-primary':params.channel=='BESTPAY'}"
ng-click="params.channel='BESTPAY';doAnalysis(1)">BestPay</a> |
<a role="button" ng-class="{'bg-primary':params.channel=='jd'}"
ng-click="params.channel='jd';doAnalysis(1)">JD Pay</a>
ng-click="params.channel='jd';doAnalysis(1)">JD Pay</a> |
<a role="button" ng-class="{'bg-primary':params.channel=='hf'}"
ng-click="params.channel='hf';doAnalysis(1)">HF Pay</a>
</p>
</div>
</div>
@ -95,7 +97,68 @@
<div class="box box-warning" ng-if="currentUser.org==null">
<div class="box-header with-border">各平台交易总额</div>
<div class="box-body table-responsive">
<table class="table">
<div class="row">
<div class="col-sm-2 col-xs-6">
<div class="description-block">
<div class="description-header text-bold"><img src="/static/images/wechatpay_sign.png"/>Wechat</div>
<div class="description-text">
<label class="description-text text-red"
ng-bind="totalChannelAmount.wechatPayAmount|currency: ' $ '"></label>
</div>
</div>
</div>
<div class="col-sm-2 col-xs-6">
<div class="description-block">
<div class="description-text">
<div class="description-header text-bold"><img src="/static/images/bestpay_sign.png"/>Bestpay</div>
<label class="description-text text-red"
ng-bind="totalChannelAmount.bestPayAmount|currency: ' $ '"></label>
</div>
</div>
</div>
<div class="col-sm-2 col-xs-6">
<div class="description-block">
<div class="description-header text-bold"><img src="/static/images/alipay_sign.png"/>Alipay</div>
<div class="description-text">
<label class="description-text text-red"
ng-bind="totalChannelAmount.aliPayAmount|currency: ' $ '"></label>
</div>
</div>
</div>
<div class="col-sm-2 col-xs-6">
<div class="description-block">
<div class="description-header text-bold"><img src="/static/images/alipay_sign.png"/>AlipayOnline</div>
<div class="description-text">
<label class="description-text text-red"
ng-bind="totalChannelAmount.aliOnlineAmount|currency: ' $ '"></label>
</div>
</div>
</div>
<div class="col-sm-2 col-xs-6">
<div class="description-block">
<div class="description-header text-bold"><img src="/static/images/wechatpay_sign.png"/>JD Pay</div>
<div class="description-text">
<label class="description-text text-red"
ng-bind="totalChannelAmount.wechatPayAmount|currency: ' $ '"></label>
</div>
</div>
</div>
<div class="col-sm-2 col-xs-6">
<div class="description-block">
<div class="description-header text-bold"><img src="/static/images/hf_sign.png"/>HF Pay</div>
<div class="description-text">
<label class="description-text text-red"
ng-bind="totalChannelAmount.hfPayAmount|currency: ' $ '"></label>
</div>
</div>
</div>
</div>
<!-- <table class="table">
<tr>
<th>
<img src="/static/images/wechatpay_sign.png"/>
@ -112,8 +175,11 @@
<th>
<img src="/static/images/jd_sign.png"/>
JD Pay:{{totalChannelAmount.jdPayAmount|currency: ' $ '}}</th>
<th>
<img src="/static/images/hf_sign.png"/>
JD Pay:{{totalChannelAmount.hfPayAmount|currency: ' $ '}}</th>
</tr>
</table>
</table>-->
</div>
</div>
<div class="box">

@ -29,7 +29,9 @@
<a role="button" ng-class="{'bg-primary':params.channel=='BESTPAY'}"
ng-click="params.channel='BESTPAY';loadTradeLogs()">BestPay</a> |
<a role="button" ng-class="{'bg-primary':params.channel=='jd'}"
ng-click="params.channel='jd';loadTradeLogs()">JD Pay</a>
ng-click="params.channel='jd';loadTradeLogs()">JD Pay</a> |
<a role="button" ng-class="{'bg-primary':params.channel=='hf'}"
ng-click="params.channel='hf';loadTradeLogs()">HF Pay</a>
</p>
</div>
</div>

@ -544,7 +544,9 @@ define(['angular', 'angularSanitize', 'angularAnimate', 'angularMessages', 'uiRo
case '12':
return 'MICROAPP';
case '13':
return 'Native QR Code'
return 'Native QR Code';
case '14':
return 'Share Link'
}
}
});

@ -329,7 +329,9 @@ define(['angular', 'angularSanitize', 'angularAnimate', 'angularMessages', 'uiRo
case '12':
return '小程序';
case '13':
return '原生二维码'
return '原生二维码';
case '14':
return '账单链接'
}
}
});

@ -58,6 +58,8 @@ define(['../app','decimal'], function (app,Decimal) {
return '/static/images/wechatpay_sign_lg.png';
case 'jd':
return '/static/images/jd_sign_lg.png';
case 'hf':
return '/static/images/hf_sign_lg.png';
}
}
});

@ -43,6 +43,8 @@
uib-tooltip=AlipayOnline" ng-if="order.channel=='AlipayOnline'"/>
<img src="/static/images/jd_sign.png"
uib-tooltip="JD Pay" ng-if="order.channel=='jd'"/>
<img src="/static/images/hf_sign.png"
uib-tooltip="HF Pay" ng-if="order.channel=='hf'"/>
{{order.order_id}}
</td>
</p>

@ -328,6 +328,8 @@ define(['angular', '../../analysis/bd/analysis-bd'], function (angular) {
return '/static/images/wechatpay_sign_lg.png';
case 'jd':
return '/static/images/jd_sign_lg.png';
case 'hf':
return '/static/images/hf_sign_lg.png';
}
}
});

@ -155,6 +155,18 @@
</div>
</div>
</div>
<div class="form-group"
ng-class="{'has-error':org_form.hf_rate_value.$invalid && org_form.hf_rate_value.$dirty}">
<label class="control-label col-sm-2" for="hf_rate_value_input">HF Rate *</label>
<div class="col-sm-8">
<div class="input-group">
<input class="form-control" type="number" ng-model="org.hf_rate_value"
id="hf_rate_value_input" name="hf_rate_value"
max="100" min="0">
<span class="input-group-addon">%</span>
</div>
</div>
</div>
</div>
<div>
@ -219,6 +231,18 @@
</div>
</div>
</div>
<div class="form-group"
ng-class="{'has-error':org_form.min_hf_rate.$invalid && org_form.min_hf_rate.$dirty}">
<label class="control-label col-sm-2" for="min_hf_rate_input">Min HF Rate *</label>
<div class="col-sm-8">
<div class="input-group">
<input class="form-control" type="number" ng-model="org.min_hf_rate"
id="min_hf_rate_input" name="min_hf_rate" max="100"
min="0" required>
<span class="input-group-addon">%</span>
</div>
</div>
</div>
</div>
</div>
<div class="form-group"

@ -134,6 +134,13 @@
<span class="input-group-addon form-control-span">%</span>
</div>
</div>
<div class="form-group" ng-class="{'has-error':org_form.hf_rate_value.$invalid && org_form.hf_rate_value.$dirty}">
<label class="control-label col-sm-2" for="hf_rate_value_input">HF Rate *</label>
<div class="col-sm-8">
<input class="form-control form-control-float" type="number" ng-model="org.hf_rate_value" id="hf_rate_value_input" name="hf_rate_value" max="100" min="0">
<span class="input-group-addon form-control-span">%</span>
</div>
</div>
</div>
@ -186,6 +193,15 @@
<span class="input-group-addon form-control-span">%</span>
</div>
</div>
<div class="form-group"
ng-class="{'has-error':org_form.min_hf_rate.$invalid && org_form.min_hf_rate.$dirty}">
<label class="control-label col-sm-2" for="min_hf_rate_input">Min HF Rate *</label>
<div class="col-sm-8">
<input class="form-control form-control-float" type="number" ng-model="org.min_hf_rate"
id="min_hf_rate_input" name="min_hf_rate" max="100" min="0">
<span class="input-group-addon form-control-span">%</span>
</div>
</div>
</div>
</div>

@ -271,6 +271,13 @@
<span class="input-group-addon form-control-span">%</span>
</div>
</div>
<div class="form-group" ng-class="{'has-error':org_form.hf_rate_value.$invalid && org_form.hf_rate_value.$dirty}">
<label class="control-label col-sm-2" for="hf_rate_value_input">HF Rate *</label>
<div class="col-sm-8">
<input class="form-control form-control-float" type="number" ng-model="org.hf_rate_value" id="hf_rate_value_input" name="hf_rate_value" max="100" min="0" readonly>
<span class="input-group-addon form-control-span">%</span>
</div>
</div>
</div>
<div>
@ -322,6 +329,16 @@
<span class="input-group-addon form-control-span">%</span>
</div>
</div>
<div class="form-group"
ng-class="{'has-error':org_form.min_jd_rate.$invalid && org_form.min_jd_rate.$dirty}">
<label class="control-label col-sm-2" for="min_hf_rate_input">Min Jd Rate *</label>
<div class="col-sm-8">
<input class="form-control form-control-float" type="number" ng-model="org.min_hf_rate"
id="min_hf_rate_input" name="min_jd_rate" max="100" min="0" readonly>
<span class="input-group-addon form-control-span">%</span>
</div>
</div>
</div>
</div>

@ -146,6 +146,19 @@
<div class="description-header text-bold"><img src="/static/images/jd_sign.png"/> JD Pay</div>
</div>
</div>
<div class="col-sm-4 col-xs-6">
<div class="description-block">
<div class="description-text">交易额:
<label class="description-text text-red"
ng-bind="totalChannelAmount.hfamount|currency: ' $ '"></label>
</div>
<div class="description-text">订单数:
<label class="description-text text-red"
ng-bind="totalChannelAmount.hf_order_count"></label>
</div>
<div class="description-header text-bold"><img src="/static/images/hf_sign.png"/>HF</div>
</div>
</div>
</div>
</div>
</div>

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

@ -204,6 +204,8 @@
uib-tooltip=Alipay" ng-if="trade.channel=='Alipay'"/>
<img src="/static/images/jd_sign.png"
uib-tooltip="JD Pay" ng-if="trade.channel=='jd'"/>
<img src="/static/images/hf_sign.png"
uib-tooltip="HF Pay" ng-if="trade.channel=='hf'"/>
{{trade.order_id2}}
</td>
<td ng-bind="trade.currency"></td>

@ -198,6 +198,8 @@
uib-tooltip=Alipay" ng-if="trade.channel=='Alipay'"/>
<img src="/static/images/jd_sign.png"
uib-tooltip="JD Pay" ng-if="trade.channel=='jd'"/>
<img src="/static/images/hf_sign.png"
uib-tooltip="HF Pay" ng-if="trade.channel=='hf'"/>
{{trade.order_id2}}
</td>
<td ng-bind="trade.currency"></td>

@ -1234,7 +1234,7 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter
})
})
};
$scope.init = {jsapi: false, gateway: false, offline: false, refund: false,common_sub_merchant_id:false, channel: {},gateway_alipay_online:false};
$scope.init = {jsapi: false, gateway: false, offline: false, refund: false,common_sub_merchant_id:false, channel: {},gateway_alipay_online:false,hf_Link:false};
$scope.switchCommonSubMerchantId = function () {
if (!$scope.paymentInfo) {
return;
@ -1274,6 +1274,28 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter
})
})
};
$scope.toggleHfLink = function (channel) {
if (!channel) {
return;
}
if (!$scope.paymentInfo) {
return;
}
if (!$scope.init.hf_Link) {
$scope.init.hf_Link = true;
return;
}
$http.put('/sys/partners/' + $scope.partner.client_moniker + '/hf', {allow: $scope.paymentInfo.enable_link}).then(function () {
$scope.loadPartnerPaymentInfo();
}, function (resp) {
commonDialog.alert({
title: 'Failed to change enable_link permission status',
content: resp.data.message,
type: 'error'
});
})
};
$scope.toggleJsApi = function () {
if (!$scope.paymentInfo) {
return;
@ -1654,6 +1676,7 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter
$scope.rate.alipayonline_rate_value = parseFloat($scope.sysRateConfig.t1.AlipayOnline);
$scope.rate.bestpay_rate_value = parseFloat($scope.sysRateConfig.t1.Bestpay);
$scope.rate.jd_rate_value = parseFloat($scope.sysRateConfig.t1.JDpay);
$scope.rate.hf_rate_value = parseFloat($scope.sysRateConfig.t1.HFpay);
break;
}
case '2': {
@ -1662,6 +1685,7 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter
$scope.rate.bestpay_rate_value = parseFloat($scope.sysRateConfig.t2.Bestpay);
$scope.rate.alipayonline_rate_value = parseFloat($scope.sysRateConfig.t2.AlipayOnline);
$scope.rate.jd_rate_value = parseFloat($scope.sysRateConfig.t2.JDpay);
$scope.rate.hf_rate_value = parseFloat($scope.sysRateConfig.t2.HFpay);
break;
}
case '3': {
@ -1670,6 +1694,7 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter
$scope.rate.bestpay_rate_value = parseFloat($scope.sysRateConfig.t3.Bestpay);
$scope.rate.alipayonline_rate_value = parseFloat($scope.sysRateConfig.t3.AlipayOnline);
$scope.rate.jd_rate_value = parseFloat($scope.sysRateConfig.t3.JDpay);
$scope.rate.hf_rate_value = parseFloat($scope.sysRateConfig.t3.HFpay);
break;
}
}

@ -99,6 +99,9 @@
<li role="presentation" ng-class="{active:bankCtrl.rate_name=='Bestpay'}" ng-if="currentUser.client.enable_bestpay">
<a role="button" ng-click="bankCtrl.rate_name='Bestpay'">Bestpay</a>
</li>
<li role="presentation" ng-class="{active:bankCtrl.rate_name=='Bestpay'}" ng-if="currentUser.client.enable_hf">
<a role="button" ng-click="bankCtrl.rate_name='hf'">HF</a>
</li>
</ul>
<div class="table-responsive">
<table class="table table-bordered">

@ -170,6 +170,7 @@
<li role="presentation" ng-class="{active:bankCtrl.rate_name=='AlipayOnline'}"><a role="button" ng-click="bankCtrl.rate_name='AlipayOnline'">Alipay(Online)</a></li>
<li role="presentation" ng-class="{active:bankCtrl.rate_name=='Bestpay'}"><a role="button" ng-click="bankCtrl.rate_name='Bestpay'">Bestpay</a></li>
<li role="presentation" ng-class="{active:bankCtrl.rate_name=='jd'}"><a role="button" ng-click="bankCtrl.rate_name='jd'">JDpay</a></li>
<li role="presentation" ng-class="{active:bankCtrl.rate_name=='hf'}"><a role="button" ng-click="bankCtrl.rate_name='hf'">HFpay</a></li>
</ul>
<div class="table-responsive">
<table class="table table-bordered">

@ -136,6 +136,30 @@
</div>
</div>
<div class="form-group"
ng-class="{'has-error':rate_form.hf_rate_value.$invalid && rate_form.hf_rate_value.$dirty}">
<label class="control-label col-sm-4" for="hf_rate_value_input">HF Rate Value</label>
<div class="col-sm-6">
<div class="input-group">
<input type="number" name="jd_rate_value" stringToNumber2 class="form-control" ng-model="rate.hf_rate_value"
min="0.6" max="2.2" step="0.1" id="hf_rate_value_input" required>
<div class="input-group-addon">%</div>
</div>
<div ng-messages="rate_form.hf_rate_value.$error" ng-if="rate_form.hf_rate_value.$dirty">
<div class="small text-danger" ng-message="max">
<i class="glyphicon glyphicon-alert"></i> No more than 2.2%
</div>
<div class="small text-danger" ng-message="min">
<i class="glyphicon glyphicon-alert"></i> No less than 0.6%
</div>
<div class="small text-danger" ng-message="required">
<i class="glyphicon glyphicon-alert"></i> Required Field
</div>
</div>
</div>
</div>
<div class="form-group">
<label class="control-label col-sm-4" for="active_time_input">Active Date</label>
<div class="col-sm-6">

@ -62,7 +62,9 @@
<a role="button" ng-class="{'bg-primary':gatewaySelected([12])}"
ng-click="params.gateway=[12];loadTradeLogs(1)">MiniProgram</a> |
<a role="button" ng-class="{'bg-primary':gatewaySelected([13])}"
ng-click="params.gateway=[13];loadTradeLogs(1)">Native QR Code</a>
ng-click="params.gateway=[13];loadTradeLogs(1)">Native QR Code</a> |
<a role="button" ng-class="{'bg-primary':gatewaySelected([14])}"
ng-click="params.gateway=[14];loadTradeLogs(1)">Share Link</a>
</p>
</div>
</div>
@ -81,7 +83,9 @@
<a role="button" ng-class="{'bg-primary':params.channel=='BESTPAY'}"
ng-click="params.channel='BESTPAY';loadTradeLogs(1)">BestPay</a> |
<a role="button" ng-class="{'bg-primary':params.channel=='JD'}"
ng-click="params.channel='JD';loadTradeLogs(1)">JDpay</a>
ng-click="params.channel='JD';loadTradeLogs(1)">JDpay</a> |
<a role="button" ng-class="{'bg-primary':params.channel=='hf'}"
ng-click="params.channel='hf';loadTradeLogs(1)">HF</a>
</p>
</div>
</div>
@ -180,6 +184,7 @@
<img src="/static/images/alipay_sign.png" uib-tooltip="Alipay" ng-if="trade.channel=='Alipay'"/>
<img src="/static/images/alipay_sign.png" uib-tooltip="AlipayOnline" ng-if="trade.channel=='AlipayOnline'"/>
<img src="/static/images/jd_sign.png" uib-tooltip="JD Pay" ng-if="trade.channel=='jd'"/>
<img src="/static/images/hf_sign.png" uib-tooltip="HF Pay" ng-if="trade.channel=='hf'"/>
{{trade.order_id}}
</td>
<td>

@ -161,30 +161,36 @@
<div class="panel-heading">Channels</div>
<div class="panel-body">
<div class="form-horizontal">
<div class="form-group col-sm-6">
<div class="form-group col-sm-4">
<label class="col-xs-6 control-label">Alipay|支付宝</label>
<div class="col-xs-6">
<input type="checkbox" ng-model="paymentInfo.enable_alipay" bs-switch switch-change="toggleChannel('alipay')">
</div>
</div>
<div class="form-group col-sm-6">
<div class="form-group col-sm-4">
<label class="col-xs-6 control-label">Bestpay|翼支付</label>
<div class="col-xs-6">
<input type="checkbox" ng-model="paymentInfo.enable_bestpay" bs-switch switch-change="toggleChannel('bestpay')">
</div>
</div>
<div class="form-group col-sm-6">
<div class="form-group col-sm-4">
<label class="col-xs-6 control-label">WeChat|微信</label>
<div class="col-xs-6">
<input type="checkbox" ng-model="paymentInfo.enable_wechat" bs-switch switch-change="toggleChannel('wechat')">
</div>
</div>
<div class="form-group col-sm-6">
<div class="form-group col-sm-4">
<label class="col-xs-6 control-label">JD|京东</label>
<div class="col-xs-6">
<input type="checkbox" ng-model="paymentInfo.enable_jd" bs-switch switch-change="toggleChannel('jd')">
</div>
</div>
<div class="form-group col-sm-4">
<label class="col-xs-6 control-label">HF|汇付</label>
<div class="col-xs-6">
<input type="checkbox" ng-model="paymentInfo.enable_hf" bs-switch switch-change="toggleChannel('hf')">
</div>
</div>
</div>
</div>
@ -307,6 +313,14 @@
</p>
</div>
</div>
<hr>
<div class="form-group">
<label class="col-sm-2 control-label">HF Pay Link</label>
<div class="col-sm-10">
<input type="checkbox" ng-model="paymentInfo.enable_link" bs-switch switch-change="toggleHfLink('hf')">
&nbsp;&nbsp;<span ng-if="paymentInfo.enable_link">{{paymentInfo.hf_pay_url}}</span>
</div>
</div>
</div>
</div>
</div>

@ -93,7 +93,9 @@
<a role="button" ng-class="{'bg-primary':params.channel=='BESTPAY'}"
ng-click="params.channel='BESTPAY';loadTradeLogs(1)">BestPay</a> |
<a role="button" ng-class="{'bg-primary':params.channel=='JD'}"
ng-click="params.channel='JD';loadTradeLogs(1)">JD Pay</a><!--|
ng-click="params.channel='JD';loadTradeLogs(1)">JD Pay</a>
<a role="button" ng-class="{'bg-primary':params.channel=='hf'}"
ng-click="params.channel='hf';loadTradeLogs(1)">HF Pay</a><!--|
<a role="button" ng-class="{'bg-primary':params.channel=='ZNYOO'}"
ng-click="params.channel='ZNYOO';loadTradeLogs(1)">Znyoo</a>-->
</p>
@ -292,6 +294,8 @@
uib-tooltip="AlipayOnline" ng-if="trade.channel=='AlipayOnline'"/>
<img src="/static/images/jd_sign.png"
uib-tooltip="JD Pay" ng-if="trade.channel=='jd'"/>
<img src="/static/images/hf_sign.png"
uib-tooltip="HF Pay" ng-if="trade.channel=='hf'"/>
{{trade.order_id2}}
</td>
<td ng-bind="trade.currency"></td>

@ -35,6 +35,11 @@
<img src="/static/images/jd_sign_lg.png">
</a>
</li>
<li ng-class="{active:ctrl.channel=='hf'}" ng-if="report.channels.hf">
<a role="button" ng-click="ctrl.channel='hf';channelAndDayOfAnalysis()" title="HF Pay">
<img src="/static/images/hf_sign_lg.png">
</a>
</li>
</ul>
</div>
</div>

@ -93,7 +93,9 @@
<a role="button" ng-class="{'bg-primary':params.channel=='BESTPAY'}"
ng-click="params.channel='BESTPAY';loadTradeLogs(1)">BestPay</a> |
<a role="button" ng-class="{'bg-primary':params.channel=='JD'}"
ng-click="params.channel='JD';loadTradeLogs(1)">JD Pay</a>
ng-click="params.channel='JD';loadTradeLogs(1)">JD Pay</a> |
<a role="button" ng-class="{'bg-primary':params.channel=='HF'}"
ng-click="params.channel='HF';loadTradeLogs(1)">HF Pay</a>
</p>
</div>
</div>
@ -124,7 +126,9 @@
<a role="button" ng-class="{'bg-primary':gatewaySelected([12])}"
ng-click="params.gateway=[12];loadTradeLogs(1)">MiniProgram</a> |
<a role="button" ng-class="{'bg-primary':gatewaySelected([13])}"
ng-click="params.gateway=[13];loadTradeLogs(1)">Native QR Code</a>
ng-click="params.gateway=[13];loadTradeLogs(1)">Native QR Code</a> |
<a role="button" ng-class="{'bg-primary':gatewaySelected([14])}"
ng-click="params.gateway=[14];loadTradeLogs(1)">Share Link</a>
</p>
</div>
</div>
@ -317,6 +321,7 @@
<img src="/static/images/alipay_sign.png" uib-tooltip="Alipay" alt="Alipay" ng-if="trade.channel=='Alipay'"/>
<img src="/static/images/alipay_sign.png" uib-tooltip="AlipayOnline" alt="AlipayOnline" ng-if="trade.channel=='AlipayOnline'"/>
<img src="/static/images/jd_sign.png" uib-tooltip="JD Pay" ng-if="trade.channel=='jd'"/>
<img src="/static/images/hf_sign.png" uib-tooltip="HF Pay" ng-if="trade.channel=='hf'"/>
{{trade.order_id}}
</td>
<td>

@ -131,7 +131,9 @@
<a role="button" ng-class="{'bg-primary':params.channel=='BESTPAY'}"
ng-click="params.channel='BESTPAY';loadTradeLogs(1)">BestPay</a> |
<a role="button" ng-class="{'bg-primary':params.channel=='JD'}"
ng-click="params.channel='JD';loadTradeLogs(1)">JD Pay</a>
ng-click="params.channel='JD';loadTradeLogs(1)">JD Pay</a> |
<a role="button" ng-class="{'bg-primary':params.channel=='HF'}"
ng-click="params.channel='HF';loadTradeLogs(1)">HF Pay</a>
</p>
</div>
</div>
@ -162,7 +164,9 @@
<a role="button" ng-class="{'bg-primary':gatewaySelected([12])}"
ng-click="params.gateway=[12];loadTradeLogs(1)">MiniProgram</a> |
<a role="button" ng-class="{'bg-primary':gatewaySelected([13])}"
ng-click="params.gateway=[13];loadTradeLogs(1)">Native QR Code</a>
ng-click="params.gateway=[13];loadTradeLogs(1)">Native QR Code</a> |
<a role="button" ng-class="{'bg-primary':gatewaySelected([14])}"
ng-click="params.gateway=[14];loadTradeLogs(1)">Share Link</a>
</p>
</div>
</div>
@ -345,6 +349,8 @@
uib-tooltip="AlipayOnline" ng-if="trade.channel=='AlipayOnline'"/>
<img src="/static/images/jd_sign.png"
uib-tooltip="JD Pay" ng-if="trade.channel=='jd'"/>
<img src="/static/images/hf_sign.png"
uib-tooltip="HF Pay" ng-if="trade.channel=='hf'"/>
{{trade.order_id}}
</td>
<td>

Loading…
Cancel
Save