Merge branch 'merchant_application' into clientApply

master
yuan 7 years ago
commit 3569ec32e9

@ -255,8 +255,8 @@ public class RetailAppServiceImp implements RetailAppService {
JSONObject res = new JSONObject();
res.put("url", url);
res.put("qrcode", QRCodeUtils.qrcodeImageCode(url, 250, false));
// res.put("qrcode_board", merchantInfoProvider.getQrCodeBoard(client, config,clientAccountMapper.findById(device.getString("account_id")),"APP"));
res.put("qrcode_board", merchantInfoProvider.getQrCodeBoard(client, config));
res.put("qrcode_board", merchantInfoProvider.getQrCodeBoard(client, config,clientAccountMapper.findById(device.getString("account_id")),"APP"));
// res.put("qrcode_board", merchantInfoProvider.getQrCodeBoard(client, config));
return res;
}

@ -27,4 +27,7 @@ public interface ClientConfigMapper {
@AutoSql(type = SqlType.SELECT)
JSONObject find(@Param("client_id") int client_id);
@AutoSql(type = SqlType.SELECT)
List<JSONObject> getAll();
}

@ -74,4 +74,7 @@ public interface ClientMapper {
List<JSONObject> listSubMerchantId();
List<JSONObject> listBySubMerchantId(@Param("sub_merchant_id") String sub_merchant_id);
@AutoSql(type = SqlType.SELECT)
List<JSONObject> AllClients();
}

@ -47,4 +47,7 @@ public interface OrgMapper {
PageList<JSONObject> listOrgWithPages(JSONObject paraams, PageBounds order);
List<JSONObject> listOrgAndChild(@Param("org_id") int org_id);
JSONObject test(@Param("client_id") int client_id);
}

@ -706,7 +706,7 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid
} else if (checkGreenChannel && client.getIntValue("open_status") == 5) {
// 绿色通道通过后不发邮件
logger.info("PASS 绿色通道:" + clientMoniker);
saveClientAuditProcess(client.getIntValue("client_id"), open_status, 5, "绿色通道申请通过", manager);
saveClientAuditProcess(client.getIntValue("client_id"), open_status, 5, "合规通过", manager);
} else {
initAdminUserAndSendEmail(manager, clientMoniker, client);
saveClientAuditProcess(client.getIntValue("client_id"), open_status, 5, "合规通过", manager);
@ -1633,8 +1633,8 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid
@Override
public String getQrCodeBoard(JSONObject client, QRCodeConfig config,JSONObject account,String plantform) {
// JSONObject org = orgMapper.findOne(client.getIntValue("org_id"));
return merchantInfoProvider.getQrCodeBoard(client, config);
// return merchantInfoProvider.getQrCodeBoard(client, config,account,plantform);
// return merchantInfoProvider.getQrCodeBoard(client, config);
return merchantInfoProvider.getQrCodeBoard(client, config,account,plantform);
}
@Override
@ -1658,8 +1658,8 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid
qrboardConfig.put("brandw", "600");
qrboardConfig.put("brandh", "200");
String type = qrboardConfig.getString("type");
// QRBoard board = QRBoardProvider.getQRBoard(type, qrboardConfig, client, config,mongoTemplate,manager,plantform);
QRBoard board = QRBoardProvider.getQRBoard(type, qrboardConfig, client, config);
QRBoard board = QRBoardProvider.getQRBoard(type, qrboardConfig, client, config,mongoTemplate,manager,plantform);
// QRBoard board = QRBoardProvider.getQRBoard(type, qrboardConfig, client, config);
board.drawBoardImage(ous);
} catch (Exception e) {
throw new ServerErrorException("QR board config not set for current organize", e);
@ -1679,8 +1679,8 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid
JSONObject qrboardConfig = JSON.parseObject(qrBoardConfigString);
String type = qrboardConfig.getString("type");
// QRBoard board = QRBoardProvider.getQRBoard(type, qrboardConfig, client, config,mongoTemplate,manager,plantform);
QRBoard board = QRBoardProvider.getQRBoard(type, qrboardConfig, client, config);
QRBoard board = QRBoardProvider.getQRBoard(type, qrboardConfig, client, config,mongoTemplate,manager,plantform);
// QRBoard board = QRBoardProvider.getQRBoard(type, qrboardConfig, client, config);
board.drawBoardImage(ous);
} catch (Exception e) {
throw new ServerErrorException("QR board config not set for current organize", e);

@ -234,4 +234,5 @@ public class NoticeManageImpl implements NoticeManage {
noticeManageMapper.updateNotice(notice);
}
}

@ -1,6 +1,6 @@
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.schema-name=royalpay_production
spring.datasource.host=192.168.0.49:3306
spring.datasource.host=192.168.99.100:3306
spring.datasource.url=jdbc:mysql://${spring.datasource.host}/${spring.datasource.schema-name}?useUnicode=true&characterEncoding=utf8&useSSL=false
spring.datasource.username=root
spring.datasource.password=root

@ -70,4 +70,17 @@
</where>
</select>
<select id="test" resultType="com.alibaba.fastjson.JSONObject">
<![CDATA[
select sum(clearing_amount) sum,count(DISTINCT(order_id)) counts
from pmt_transactions
where channel !='Settlement' and
transaction_type = 'Credit' and
transaction_time>'2018-01-01' and
transaction_time<'2018-05-01' and
client_id = #{client_id} and system_generate = 0
]]>
</select>
</mapper>

@ -0,0 +1,929 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1" user-scalable="no">
<title>RoyalPay | Merchant Application</title>
<meta name="description"
content=" As Australias first WeChat Cross-Border payment gatewayWe are working to build a bridge between Australian merchants and Chinese consumers.Marketing Tools like WeChat Coupons,Membership Cards,Lucky Money are provided to all merchants to Increase sales which is proved effective in the wechat ecology.">
<meta name="keywords"
content="澳洲微信支付、澳洲跨境支付、行业解决方案、澳洲支付、澳洲商圈、微信营销、公众号、Wechat、Official Account、Industry Solution、Cross-Border Payment、Australia Wechat">
<!-- Bootstrap 3.3.5 -->
<link href="static/css/merchant_application.css" rel="stylesheet">
<link href="static/lib/bootstrap/css/bootstrap.min.css" rel="stylesheet">
<!-- Font Awesome -->
<link href="static/lib/font-awesome-4.6.3/css/font-awesome.min.css" rel="stylesheet">
<!-- Font Awesome -->
<!-- Ionicons -->
<!-- Theme style -->
<link rel="stylesheet" href="./static/css/index_register.css">
<link rel="stylesheet" href="static/lib/dist/css/AdminLTE.min.css">
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
<![endif]-->
<title>Partner Register</title>
<script type="text/javascript" src="/static/lib/jquery/jquery-2.1.4.min.js"></script>
<script type="text/javascript" src="/static/lib/angularjs/angular.min.js"></script>
<script type="text/javascript" src="/static/lib/angularjs/angular-messages.js"></script>
<script type="text/javascript" src="/static/lib/bootstrap/js/bootstrap.min.js"></script>
<script type="text/javascript" src="/static/lib/blocs.min.js"></script>
<script type="text/javascript" src="/static/merchantapplication/merchant_application.js"></script>
<style type="text/css">
.register-box-bg {
background-color: rgba(255, 255, 255, 0.9);
box-shadow: 0px 2px 20px 2px rgba(0, 0, 0, 0.3);
filter: alpha(opacity=40);
/*opacity: 0.7;*/
}
.captcha {
width: 30%;
height: 35px;
padding: 6px 12px;
font-size: 14px;
line-height: 1.42857143;
color: #555;
background-color: #fff;
background-image: none;
border: 1px solid #ccc;
border-radius: 4px;
}
@media (min-width: 544px) {
.content-with {
width: 800px;
}
.register-box {
margin-top: 10%;
}
body .progress {
display: block;
}
body .step_show {
display: none;
}
}
@media (max-width: 544px) {
body .progress {
display: none;
}
.content_align{
width: 80%;
}
body .step_show {
display: block;
}
.register-box {
width: 89%;
}
}
</style>
<script>
var _hmt = _hmt || [];
(function () {
var hm = document.createElement("script");
hm.src = "https://hm.baidu.com/hm.js?d7e727bd889ea69d369cba051844dfe5";
var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(hm, s);
})();
</script>
</head>
<body class="pace-done fp-viewing-0" ng-app="applyPartnerApp" ng-controller="applyPartnerCtrl">
<!--[if lte IE 8]>
<span class="lower-ie"></span>
<![endif]-->
<div class="pace pace-inactive">
<div class="pace-progress" data-progress-text="100%" data-progress="99"
style="transform: translate3d(100%, 0px, 0px);">
<div class="pace-progress-inner"></div>
</div>
<div class="pace-activity"></div>
</div>
<div id="main">
<div id="page-index" class="register-page">
<nav id="header" class="navbar navbar-dark navbar-full navbar-bg">
<div class="container">
<div class="navbar-header">
<button class="navbar-toggle collapsed" type="button" data-toggle="collapse"
data-target=".navbar-collapse">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="https://www.royalpay.com.au/">
<img src="/static/images/logo.svg" alt="" class="navbar--logo"
style="width: 275px;height: 32px;display: block;margin-top: 3.2%;">
</a>
</div>
<ul class="nav navbar-nav navbar-right navbar-collapse collapse">
<li id="nav-index" class="nav-item">
<a href="https://www.royalpay.com.au/" class="nav-link">Home</a>
</li>
<li class="nav-item dropdown">
<a role="button" class="nav-link dropdown-toggle" data-toggle="dropdown">Wechat</a>
<ul class="dropdown-menu">
<li><a href="https://www.royalpay.com.au/feature.html" target="_blank">Features</a></li>
<li><a href="https://www.royalpay.com.au/industry.html" target="_blank">Industry</a></li>
<li><a href="https://www.royalpay.com.au/marketing.html" target="_blank">Marketing</a></li>
</ul>
</li>
<li class="nav-item dropdown">
<a role="button" class="nav-link dropdown-toggle" data-toggle="dropdown">GATEWAY API</a>
<ul class="dropdown-menu">
<li><a href="https://mpay.royalpay.com.au/docs/en/" target="_blank">En</a></li>
<li><a href="https://mpay.royalpay.com.au/docs/cn/" target="_blank">中文</a></li>
</ul>
</li>
<li class="nav-item">
<a role="button" class="nav-link dropdown-toggle" data-toggle="dropdown">About Us</a>
<ul class="dropdown-menu">
<li><a href="https://www.royalpay.com.au/about.html" target="_blank">About Us</a></li>
<li><a href="https://www.royalpay.com.au/c_news.html">News</a></li>
<li><a href="https://www.royalpay.com.au/c_career.html">Career</a></li>
</ul>
</li>
<li class="nav-item">
<a href="https://www.royalpay.com.au/download.html" class="nav-link">App</a>
</li>
<li class="nav-item hidden-xs hidden-sm">
<a href="https://mpay.royalpay.com.au/login.html" target="_blank"
class="btn btn-success signin">Sign In</a>
</li>
<li class="nav-item hidden-xs hidden-sm">
<a href="https://mpay.royalpay.com.au/partner_register.html" target="_blank"
class="btn btn-success signin">Apply</a>
</li>
</ul>
</div>
</nav>
<div id="fullpage" class="fullpage-wrapper">
<div class='progress' style="height: 0px">
<div class='progress_inner'>
<div class='progress_inner__step' ng-class="{'body .dis_before:nth-child(1):before':!disabledArray[0],'dis_before':!disabledArray[0]}">
<label for='step-1'>Account Information</label>
</div>
<div class='progress_inner__step' ng-class="{'body .dis_before:nth-child(2):before':!disabledArray[1],'dis_before':!disabledArray[1]}">
<label for='step-2'>Company Information</label>
</div>
<div class='progress_inner__step' ng-class="{'body .dis_before:nth-child(3):before':!disabledArray[2],'dis_before':!disabledArray[2]}">
<label for='step-3'>Bank Account</label>
</div>
<div class='progress_inner__step' ng-class="{'body .dis_before:nth-child(4):before':!disabledArray[3],'dis_before':!disabledArray[3]}">
<label for='step-4'>Clean Days</label>
</div>
<div class='progress_inner__step' ng-class="{'body .dis_before:nth-child(5):before':!disabledArray[4],'dis_before':!disabledArray[4]}">
<label for='step-5'>Success</label>
</div>
<input checked='checked' id='step-1' name='step' type='radio' ng-disabled = "!disabledArray[0]" ng-checked="chooseArray[0]" ng-click="changeChoose(0);">
<input id='step-2' name='step' type='radio' ng-disabled = "!disabledArray[1]" ng-checked="chooseArray[1]" ng-click="changeChoose(1);">
<input id='step-3' name='step' type='radio' ng-disabled = "!disabledArray[2]" ng-checked="chooseArray[2]" ng-click="changeChoose(2);">
<input id='step-4' name='step' type='radio' ng-disabled = "!disabledArray[3]" ng-checked="chooseArray[3]" ng-click="changeChoose(3);">
<input id='step-5' name='step' type='radio' ng-disabled = "!disabledArray[4]" ng-checked="chooseArray[4]" ng-click="changeChoose(4);">
<div class='progress_inner__bar'></div>
<div class='progress_inner__bar--set'></div>
<div class='progress_inner__tabs'>
</div>
<!--<div class='progress_inner__status'>
<div class='box_base'></div>
<div class='box_lid'></div>
<div class='box_ribbon'></div>
<div class='box_bow'>
<div class='box_bow__left'></div>
<div class='box_bow__right'></div>
</div>
<div class='box_item'></div>
<div class='box_tag'></div>
<div class='box_string'></div>
</div>-->
</div>
</div>
<div class="step_show">
<div class="step_header" ng-show="chooseArray[0]">
<img src="static/images/step/num1_1.png">
<span class="text-bold">Account Information</span>
</div>
<div class="step_header" ng-show="chooseArray[1]">
<img src="static/images/step/num1_2.png">
<span class="text-bold">Company Information</span>
</div>
<div class="step_header" ng-show="chooseArray[2]">
<img src="static/images/step/num1_3.png">
<span class="text-bold">Bank Account</span>
</div>
<div class="step_header" ng-show="chooseArray[3]">
<img src="static/images/step/num1_4.png">
<span class="text-bold">Submit Materials</span>
</div>
<div class="step_header" ng-show="chooseArray[4]">
<img src="static/images/step/num1_5.png">
<span class="text-bold">Success</span>
</div>
</div>
<div class="register-box content-with">
<div class="register-box-body register-box-bg">
<p class="login-box-msg">Easy BusinessEasy Payment</p>
<form novalidate name="accountForm" action="" method="post" ng-show="chooseArray[0]">
<div class="form-group has-feedback"
ng-class="{'has-error':accountForm.short_name.$invalid && accountForm.short_name.$dirty}">
<input type="text" class="form-control" ng-model="partner.short_name" name="short_name"
placeholder="Account Name" required maxlength="80">
<span ng-messages="accountForm.short_name.$error" ng-if="accountForm.short_name.$dirty"
ng-message="required">
</span>
</div>
<div class="form-group has-feedback"
ng-class="{'has-error':accountForm.contact_person.$invalid && accountForm.contact_person.$dirty}">
<input class="form-control" ng-model="partner.contact_person" placeholder="Your Name"
required maxlength="50" name="contact_person">
<span ng-messages="accountForm.contact_person.$error"
ng-if="accountForm.contact_person.$dirty" ng-message="required">Required Field</span>
</div>
<div class="form-group has-feedback"
ng-class="{'has-error':accountForm.contact_email.$invalid && accountForm.contact_email.$dirty}">
<input class="form-control" ng-model="partner.contact_email" placeholder="Work Email"
required
maxlength="50" name="contact_email">
<span ng-messages="accountForm.contact_email.$error"
ng-if="accountForm.contact_email.$dirty" ng-message="required">Required Field</span>
</div>
<div class="form-group has-feedback"
ng-class="{'has-error':accountForm.password.$invalid && accountForm.password.$dirty}">
<input type="password" class="form-control" ng-model="partner.password" placeholder="Password" required
maxlength="50" name="password">
<span ng-messages="accountForm.password.$error"
ng-if="accountForm.password.$dirty" ng-message="required">Required Field</span>
</div>
<div class="form-group has-feedback"
ng-class="{'has-error':(accountForm.rePassword.$invalid && accountForm.rePassword.$dirty) ||partner.rePassword != partner.password}">
<input type="password" class="form-control" ng-model="partner.rePassword" placeholder="Confirm Password"
required
maxlength="50" name="rePassword">
<span ng-messages="accountForm.rePassword.$error"
ng-if="accountForm.rePassword.$dirty" ng-message="required">Required Field</span>
</div>
<div class="row">
<div class="form-group col-xs-12"
ng-class="{'has-error':accountForm.contact_phone.$invalid && accountForm.contact_phone.$dirty}">
<input type="text" name="contact_phone" required ng-model="partner.contact_phone"
class="form-control" style="width: 80%;display: inline" id="verifyCode"
placeholder="Your Phone">
<button type="button" class="btn btn-success" style="width:20%;display:inline;height: 34px;float: right;border-radius: 0px"
title="发送验证码" ng-click="sendVerificationCode()"
ng-bind="description" ng-disabled="canClick"></button>
<div style="margin-left: 40%" ng-messages="accountForm.contact_phone.$error"
ng-if="accountForm.contact_phone.$dirty">
<p class="small text-danger" ng-message="required">Required Field</p>
</div>
</div>
</div>
<div class="form-group has-feedback"
ng-class="{'has-error':accountForm.code.$invalid && accountForm.code.$dirty}">
<input class="form-control" ng-model="partner.code" placeholder="Code"
required maxlength="50" name="code">
<span ng-messages="accountForm.code.$error"
ng-if="accountForm.code.$dirty" ng-message="required">Required Field</span>
</div>
<div class="row">
<div class="col-xs-12 margin-bottom">
<button type="button" class="btn btn-success btn-block btn-flat"
ng-click="save(accountForm,1)" ng-disabled="accountForm.$invalid">Next
</button>
<div>
<p ng-if="resError" style="padding: 6px 12px;font-size: 14px;"
class="small text-danger">{{resError}}</p>
</div>
</div>
</div>
</form>
<form novalidate name="companyForm" action="" method="post" ng-show="chooseArray[1]">
<div class="form-group has-feedback"
ng-class="{'has-error':companyForm.company_name.$invalid && companyForm.company_name.$dirty}">
<input type="text" class="form-control" ng-model="partner.company_name" name="company_name"
placeholder="Company Name" required maxlength="80">
<span ng-messages="companyForm.company_name.$error" ng-if="companyForm.company_name.$dirty"
ng-message="required">
</span>
</div>
<div class="form-group has-feedback"
ng-class="{'has-error':companyForm.abn.$invalid && companyForm.abn.$dirty}">
<input class="form-control" ng-model="partner.abn" placeholder="ABN"
required maxlength="50" name="abn">
<span ng-messages="partnerForm.abn.$error"
ng-if="partnerForm.abn.$dirty" ng-message="required">Required Field</span>
</div>
<div class="form-group has-feedback"
ng-class="{'has-error':companyForm.short_name.$invalid && companyForm.short_name.$dirty}">
<input type="text" class="form-control" ng-model="partner.short_name" name="short_name"
placeholder="Merchant Name" required maxlength="80">
<span ng-messages="partnerForm.short_name.$error" ng-if="partnerForm.short_name.$dirty"
ng-message="required">
</span>
</div>
<div class="form-group has-feedback"
ng-class="{'has-error':companyForm.address.$invalid && companyForm.address.$dirty}">
<textarea class="form-control" ng-model="partner.address" placeholder="Address"
name="address" required maxlength="100"></textarea>
<span ng-messages="partnerForm.address.$error" ng-if="partnerForm.address.$dirty"
ng-message="required">Required Field</span>
</div>
<div class="form-group has-feedback"
ng-class="{'has-error':companyForm.suburb.$invalid && companyForm.suburb.$dirty}">
<input class="form-control" ng-model="partner.suburb" placeholder="Suburb" required
maxlength="50" name="suburb">
<span ng-messages="partnerForm.suburb.$error" ng-if="partnerForm.suburb.$dirty"
ng-message="required">Required Field</span>
</div>
<div class="form-group has-feedback"
ng-class="{'has-error':companyForm.state.$invalid && companyForm.state.$dirty}">
<select class="form-control" name="state"
ng-model="partner.state"
id="state-input" required
ng-options="state.value as state.label for state in states">
<option value="">State</option>
</select>
<span ng-messages="companyForm.state.$error" ng-if="companyForm.state.$dirty"
ng-message="required">Required Field</span>
</div>
<div class="form-group has-feedback"
ng-class="{'has-error':companyForm.postcode.$invalid && companyForm.postcode.$dirty}">
<input class="form-control" ng-model="partner.postcode" placeholder="Postcode" required
maxlength="50" name="postcode">
<span ng-messages="companyForm.postcode.$error" ng-if="companyForm.postcode.$dirty"
ng-message="required">Required Field</span>
</div>
<div class="form-group has-feedback"
ng-class="{'has-error':companyForm.industry.$invalid && companyForm.industry.$dirty}">
<select class="form-control" name="industry"
ng-model="partner.industry"
id="industry-input" required
ng-options="industry.value as industry.label for industry in industries">
<option value="">Industry</option>
</select>
<span ng-messages="companyForm.industry.$error" ng-if="companyForm.industry.$dirty"
ng-message="required">Required Field</span>
</div>
<div class="row">
<div class="col-xs-12 margin-bottom">
<button type="button" class="btn btn-success btn-block btn-flat"
ng-click="validateForm(companyForm,2)" ng-disabled="companyForm.$invalid">Next
</button>
<div>
<p ng-if="resError" style="padding: 6px 12px;font-size: 14px;"
class="small text-danger">{{resError}}</p>
</div>
</div>
</div>
</form>
<form novalidate name="bankForm" action="" method="post" ng-show="chooseArray[2]">
<div class="form-group has-feedback"
ng-class="{'has-error':bankForm.account_no.$invalid && bankForm.account_no.$dirty}">
<input class="form-control" ng-model="bankaccount.account_no" placeholder="Account No"
required
name="account_no">
<span ng-messages="bankForm.account_no.$error" ng-if="bankForm.account_no.$dirty"
ng-message="required">Required Field</span>
</div>
<div class="form-group has-feedback"
ng-class="{'has-error':bankForm.account_name.$invalid && bankForm.account_name.$dirty}">
<input class="form-control" ng-model="bankaccount.account_name" placeholder="Account Name"
required name="account_name">
<span ng-messages="bankForm.account_name.$error" ng-if="bankForm.account_name.$dirty"
ng-message="required">Required Field</span>
</div>
<div class="form-group has-feedback"
ng-class="{'has-error':bankForm.bsb_no.$invalid && bankForm.bsb_no.$dirty}">
<input class="form-control" ng-model="bankaccount.bsb_no" placeholder="BSB No" required
name="bsb_no">
<span ng-messages="bankForm.bsb_no.$error" ng-if="bankForm.bsb_no.$dirty"
ng-message="required">Required Field</span>
</div>
<div class="form-group has-feedback"
ng-class="{'has-error':bankForm.bank.$invalid && bankForm.bank.$dirty}">
<input class="form-control" ng-model="bankaccount.bank" placeholder="Bank" required
name="bank">
<span ng-messages="bankForm.bank.$error" ng-if="bankForm.bank.$dirty"
ng-message="required">Required Field</span>
</div>
<div class="form-group has-feedback"
ng-class="{'has-error':bankForm.city.$invalid && bankForm.city.$dirty}">
<input class="form-control" ng-model="bankaccount.city" placeholder="City" required
name="city">
<span ng-messages="bankForm.city.$error" ng-if="bankForm.city.$dirty"
ng-message="required">Required Field</span>
</div>
<div class="form-group has-feedback"
ng-class="{'has-error':bankForm.address.$invalid && bankForm.address.$dirty}">
<input class="form-control" ng-model="bankaccount.address" placeholder="Address" required
name="address">
<span ng-messages="bankForm.address.$error" ng-if="bankForm.address.$dirty"
ng-message="required">Required Field</span>
</div>
<div class="form-group has-feedback"
ng-class="{'has-error':bankForm.system.$invalid && bankForm.system.$dirty}">
<input class="form-control" ng-model="bankaccount.system" placeholder="System" required
name="system">
<span ng-messages="bankForm.bank.$error" ng-if="bankForm.bank.$dirty"
ng-message="required">Required Field</span>
</div>
<div class="form-group has-feedback"
ng-class="{'has-error':bankForm.postcode.$invalid && bankForm.postcode.$dirty}">
<input class="form-control" ng-model="bankaccount.postcode" placeholder="Postcode" required
name="postcode">
<span ng-messages="bankForm.postcode.$error" ng-if="bankForm.postcode.$dirty"
ng-message="required">Required Field</span>
</div>
<div class="form-group has-feedback"
ng-class="{'has-error':bankForm.state.$invalid && bankForm.state.$dirty}">
<input class="form-control" ng-model="bankaccount.state" placeholder="State" required
name="state">
<span ng-messages="bankForm.state.$error" ng-if="bankForm.state.$dirty"
ng-message="required">Required Field</span>
</div>
<div class="form-group has-feedback"
ng-class="{'has-error':bankForm.branch.$invalid && bankForm.branch.$dirty}">
<input class="form-control" ng-model="bankaccount.branch" placeholder="Branch" required
name="branch">
<span ng-messages="bankForm.branch.$error" ng-if="bankForm.branch.$dirty"
ng-message="required">Required Field</span>
</div>
<div class="row">
<div class="col-xs-12 margin-bottom">
<button type="button" class="btn btn-success btn-block btn-flat"
ng-click="validateForm(bankForm,3)" ng-disabled="bankForm.$invalid">Next
</button>
<div>
<p ng-if="resError" style="padding: 6px 12px;font-size: 14px;"
class="small text-danger">{{resError}}</p>
</div>
</div>
</div>
</form>
<form novalidate name="cleanForm" action="" method="post" ng-show="chooseArray[3]">
<div class="form-group has-feedback"
ng-class="{'has-error':cleanForm.clean_days.$invalid && cleanForm.clean_days.$dirty}">
<select class="form-control" ng-model="rate.clean_days" id="citySelect"
ng-change="changeDays()" name="clean_days">
<option value="">Clean Days</option>
<option value="1">T+1</option>
<option value="2">T+2</option>
<option value="3">T+3</option>
</select>
<div>{{rateConfig}}</div>
<span ng-messages="cleanForm.clean_days.$error" ng-if="cleanForm.clean_days.$dirty"
ng-message="required">Required Field</span>
</div>
<div class="form-group has-feedback"
ng-class="{'has-error':cleanForm.wechat_rate_value.$invalid && cleanForm.wechat_rate_value.$dirty}">
<div class="input-group">
<input type="number" placeholder="WeChat Rate Value" name="wechat_rate_value"
stringToNumber2 class="form-control" ng-model="rate.wechat_rate_value"
min="0.6" max="2.2" step="0.1" id="wechat_rate_value_input" required>
<div class="input-group-addon">%</div>
</div>
<span ng-messages="cleanForm.wechat_rate_value.$error"
ng-if="cleanForm.wechat_rate_value.$dirty"
ng-message="required">Required Field</span>
</div>
<div class="form-group has-feedback"
ng-class="{'has-error':cleanForm.alipay_rate_value.$invalid && cleanForm.alipay_rate_value.$dirty}">
<div class="input-group">
<input type="number" placeholder="Alipay Rate Value(Retail)" name="alipay_rate_value"
stringToNumber2 class="form-control" ng-model="rate.alipay_rate_value"
min="0.6" max="2.2" step="0.1" id="alipay_rate_value_input" required>
<div class="input-group-addon">%</div>
</div>
<span ng-messages="cleanForm.alipay_rate_value.$error"
ng-if="cleanForm.alipay_rate_value.$dirty"
ng-message="required">Required Field</span>
</div>
<div class="form-group has-feedback"
ng-class="{'has-error':cleanForm.alipayonline_rate_value.$invalid && cleanForm.alipayonline_rate_value.$dirty}">
<div class="input-group">
<input type="number" placeholder="Alipay Rate Value(Online)"
name="alipayonline_rate_value" stringToNumber2 class="form-control"
ng-model="rate.alipayonline_rate_value"
min="0.6" max="2.2" step="0.1" id="alipayonline_rate_value_input" required>
<div class="input-group-addon">%</div>
</div>
<span ng-messages="cleanForm.alipayonline_rate_value.$error"
ng-if="cleanForm.alipayonline_rate_value.$dirty"
ng-message="required">Required Field</span>
</div>
<div class="form-group has-feedback"
ng-class="{'has-error':cleanForm.bestpay_rate_value.$invalid && cleanForm.bestpay_rate_value.$dirty}">
<div class="input-group">
<input type="number" placeholder="Bestpay Rate Value" name="bestpay_rate_value"
stringToNumber2 class="form-control" ng-model="rate.bestpay_rate_value"
min="0.6" max="2.2" step="0.1" id="bestpay_rate_value_input" required>
<div class="input-group-addon">%</div>
</div>
<span ng-messages="cleanForm.bestpay_rate_value.$error"
ng-if="cleanForm.bestpay_rate_value.$dirty"
ng-message="required">Required Field</span>
</div>
<div class="form-group has-feedback"
ng-class="{'has-error':cleanForm.jd_rate_value.$invalid && cleanForm.jd_rate_value.$dirty}">
<div class="input-group">
<input type="number" placeholder="JD Rate Value" name="jd_rate_value" stringToNumber2
class="form-control" ng-model="rate.jd_rate_value"
min="0.6" max="2.2" step="0.1" id="jd_rate_value_input" required>
<div class="input-group-addon">%</div>
</div>
<span ng-messages="cleanForm.jd_rate_value.$error"
ng-if="cleanForm.jd_rate_value.$dirty"
ng-message="required">Required Field</span>
</div>
<div class="form-group has-feedback">
<div class="checkbox agree_left agree-text">
<label><input type="checkbox" ng-model="rate.agree">Agree to Terms & Conditions</label>
</div>
</div>
<div class="row">
<div class="col-xs-12 margin-bottom">
<button type="button" class="btn btn-success btn-block btn-flat"
ng-click="save(cleanForm,4)" ng-disabled="!rate.agree && cleanForm.$invalid" >Submit
</button>
<div>
<p ng-if="resError" style="padding: 6px 12px;font-size: 14px;"
class="small text-danger">{{resError}}</p>
</div>
</div>
</div>
</form>
<!-- <form novalidate name="materialsForm" action="" method="post" ng-show="chooseArray[4]">
<div class="form-horizontal" style="text-align: left">
<div class="form-group">
<label class="control-label col-sm-2">* Shop Photo</label>
<div class="col-sm-5">
<div class="form-control-static">
<button class="btn btn-primary" type="button"
ngf-select="uploadShopPhoto($file)" accept="image/*" ngf-max-size="2MB">
<i class="fa fa-upload"></i> Upload Shop Photo1
</button>
</div>
<uib-progressbar value="shopPhotoProgress.value"
ng-if="shopPhotoProgress"></uib-progressbar>
<img ng-src="{{partner.company_photo}}" ng-if="partner.company_photo"
class="thumbnail img-size col-sm-9">
</div>
<div class="col-sm-5">
<div class="form-control-static">
<button class="btn btn-primary" type="button"
ngf-select="uploadStorePhoto($file)" accept="image/*"
ngf-max-size="2MB">
<i class="fa fa-upload"></i> Upload Shop Photo2
</button>
</div>
<uib-progressbar value="storePhotoProgress.value"
ng-if="storePhotoProgress"></uib-progressbar>
<img ng-src="{{partner.store_photo}}" ng-if="partner.store_photo"
class="thumbnail img-size col-sm-9">
</div>
</div>
<div class="form-group">
<label class="control-label col-sm-2">Logo</label>
<div class="col-sm-8">
<div class="form-control-static">
<button class="btn btn-success" type="button" ngf-select="uploadLogo($file)"
accept="image/*" ngf-max-size="1MB">
<i class="fa fa-upload"></i> Upload Logo
</button>
</div>
<uib-progressbar value="logoProgress.value" ng-if="logoProgress"></uib-progressbar>
<img ng-src="{{partner.logo_url}}" ng-if="partner.logo_url" style="height: 100px;">
</div>
</div>
<div class="form-group">
<label class="control-label col-sm-2">* bank statement</label>
<div class="col-sm-4">
<div class="form-control-static">
<button class="btn btn-primary" type="button"
ngf-select="uploadBankFile($file)">
<i class="fa fa-upload"></i> Upload
</button>
<a ng-if="file.client_bank_file" role="button" class="btn-group btn btn-warning"
type="button" ng-href="{{file.client_bank_file}}" target="_blank"><i
class="fa fa-download"></i></a>
<i class="fa fa-check-square-o check-i" aria-hidden="true" style="float: none"
ng-if="$root.complianceCheck.authFile"></i>
</div>
<uib-progressbar value="bankFileProgress.value"
ng-if="bankFileProgress"></uib-progressbar>
<a ng-if="bankIsImage" target="_blank" ng-href="{{file.client_bank_file}}">
<img ng-src="{{file.client_bank_file}}" class="col-sm-8"></a>
</div>
<div class="col-sm-6">
<div class="form-control-static">
<p>Example请保证图片信息清晰可见,如下图</p>
<img class="col-sm-6 img-responsive" style="border: 1px solid #ddd"
src="https://file.royalpay.com.au/open/2017/03/07/1488859920633_5ruVtDa30yY2ytBSDAAqxg0Ob2nreh.jpeg">
</div>
</div>
</div>
<div class="form-group">
<label class="control-label col-sm-2">* Certificate of Registration</label>
<div class="col-sm-4">
<div class="form-control-static">
<button class="btn btn-primary" type="button"
ngf-select="uploadCompanyFile($file)">
<i class="fa fa-upload"></i> Upload
</button>
<a ng-if="file.client_company_file" role="button"
class="btn-group btn btn-warning" type="button"
ng-href="{{file.client_company_file}}" target="_blank"><i
class="fa fa-download"></i></a>
<i class="fa fa-check-square-o check-i" aria-hidden="true" style="float: none"
ng-if="$root.complianceCheck.authFile"></i>
</div>
<uib-progressbar value="companyFileProgress.value"
ng-if="companyFileProgress"></uib-progressbar>
<a ng-if="companyIsImage" ng-href="{{file.client_company_file}}" target="_blank">
<img ng-src="{{file.client_company_file}}" class="col-sm-8"></a>
</div>
<div class="col-sm-6">
<div class="form-control-static">
<div class="col-sm-6">
<p>Example公司请提供以下文件图片</p>
<img class="col-xs-12 img-responsive" style="border: 1px solid #ddd"
src="https://file.royalpay.com.au/open/2017/03/07/1488865011738_mW91ylSb5V1NJYu8jxvBPGNN49Zyel.jpeg">
&lt;!&ndash;<img class="col-sm-12" src="https://file.royalpay.com.au/open/2017/03/07/1488864017622_BppIfz1yhMeoF0Z49rHt2gZIfVOihA.jpeg">&ndash;&gt;
</div>
<div class="col-sm-6">
<p>sole
trade个体户),partnership合伙,trust信托请在http://abr.business.gov.au将查询结果截图上传</p>
<img class="col-sm-12 img-responsive" style="border: 1px solid #ddd"
src="https://file.royalpay.com.au/open/2017/03/07/1488860564017_37spL6phUySM27oRtO4cQ7FOJblYJ6.jpeg">
</div>
</div>
</div>
</div>
<div class="form-group">
<label class="control-label col-sm-2">* ID </label>
<div class="col-sm-4">
<div class="form-control-static">
<button class="btn btn-primary" type="button"
ngf-select="uploadIDFile($file)">
<i class="fa fa-upload"></i> Upload
</button>
<a ng-if="file.client_id_file" role="button" class="btn-group btn btn-warning"
type="button" ng-href="{{file.client_id_file}}" target="_blank"><i
class="fa fa-download"></i></a>
<i class="fa fa-check-square-o check-i" aria-hidden="true" style="float: none"
ng-if="$root.complianceCheck.authFile"></i>
</div>
<uib-progressbar value="idFileProgress.value"
ng-if="idFileProgress"></uib-progressbar>
<a ng-if="idIsImage" ng-href="{{file.client_id_file}}" target="_blank">
<img ng-src="{{file.client_id_file}}" class="col-sm-8"></a>
</div>
<div class="col-sm-6">
<div class="form-control-static">
<div class="col-sm-6">
<p>Example请保证图片(护照或驾照)信息清晰可见,如下图</p>
<img class="col-xs-12 img-responsive" style="border: 1px solid #ddd"
src="https://file.royalpay.com.au/open/2017/06/29/1498725651779_OPiqOP1dGnTpaxPsCR3P9lVrp4384b.jpg">
</div>
<div class="col-sm-6">
<br/>
<br/>
<img class="col-sm-12 img-responsive" style="border: 1px solid #ddd"
src="https://file.royalpay.com.au/open/2017/06/29/1498725678615_Bv2tzUtihY5U6YK9ScveXzKkVWOnrF.jpg">
</div>
</div>
</div>
</div>
<div class="form-horizontal">
<div class="form-group">
<label class="control-label col-sm-2">* Agreement</label>
<div class="col-sm-4">
<div class="form-control-static">
<button class="btn btn-primary" type="button"
ngf-select="uploadAgreementFile($file)">
<i class="fa fa-upload"></i> Upload
</button>
<a ng-if="file.client_agree_file" role="button"
class="btn-group btn btn-warning" type="button"
ng-href="{{file.client_agree_file}}" target="_blank"><i
class="fa fa-download"></i></a>
<i class="fa fa-check-square-o check-i" aria-hidden="true"
style="float: none" ng-if="$root.complianceCheck.authFile"></i>
</div>
<uib-progressbar value="agreementFileProgress.value"
ng-if="agreementFileProgress"></uib-progressbar>
<a ng-if="agreeIsImage" target="_blank" ng-href="{{file.client_agree_file}}">
<img ng-src="{{file.client_agree_file}}" class="col-sm-8"></a>
</div>
<div class="col-sm-6">
<div class="form-control-static">
<p>Example请保证图片信息清晰可见,如下图</p>
<img class="col-sm-6 img-responsive" style="border: 1px solid #ddd"
src="https://file.royalpay.com.au/open/2017/06/15/1497454561900_5mf5KC4WGkXyFynv025JlTukAq8BqX.png">
</div>
</div>
</div>
</div>
<div class="form-horizontal">
<div class="form-group">
<label class="control-label col-sm-2">Application Form(optional)</label>
<div class="col-sm-4">
<div class="form-control-static">
<button class="btn btn-primary" type="button"
ngf-select="uploadApplyFile($file)">
<i class="fa fa-upload"></i> Upload
</button>
<a ng-if="file.client_apply_file" role="button"
class="btn-group btn btn-warning" type="button"
ng-href="{{file.client_apply_file}}" target="_blank"><i
class="fa fa-download"></i></a>
<i class="fa fa-check-square-o check-i" style="float: none"
aria-hidden="true" ng-if="$root.complianceCheck.authFile"></i>
</div>
<uib-progressbar value="bankFileProgress.value"
ng-if="applyFileProgress"></uib-progressbar>
<a ng-if="applyIsImage" target="_blank" ng-href="{{file.client_apply_file}}">
<img ng-src="{{file.client_apply_file}}" class="col-sm-8"></a>
</div>
<div class="col-sm-6">
<div class="form-control-static">
<p>Example请保证图片信息清晰可见,如下图</p>
<img class="col-sm-6 img-responsive" style="border: 1px solid #ddd"
src="https://file.royalpay.com.au/open/2017/06/15/1497454548133_uSn0TP2uQNLEfnMB57CMrxG2jTOWHG.png">
</div>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-xs-12 margin-bottom">
<button type="button" class="btn btn-success btn-block btn-flat"
ng-click="submit(materialsForm)">Submit
</button>
<div>
<p ng-if="resError" style="padding: 6px 12px;font-size: 14px;"
class="small text-danger">{{resError}}</p>
</div>
</div>
</div>
</form>-->
<form ng-show="chooseArray[4]">
<div class="success_wrapper">
<div class="success_img">
<img height="40" width="40" src="static/images/step/gou.png">
</div>
<div class="success_text">
<div>恭喜注册成功</div>
<div class="success_text2">欢迎使用RoyalPay收单服务</div>
</div>
</div>
<div class="success_content">
<div class="content_align">
<div>注意事项:</div>
<p>1、需要完成 合规材料的提交具体请查看appxx菜单xx功能</p>
<p>2、在完成合规认证之前不会对交易进行清算</p>
<p>3、账户名和密码以及相关信息已发送至账户邮箱请妥善保护自己的密码及时进行修改。</p>
</div>
<div class="row">
<div class="col-xs-12 margin-bottom2">
<button type="button" id="login-btn7" class="btn btn-success btn-block btn-flat">
{{seconds}}秒后,将跳转登录页, 或点击直接跳转登录页
</button>
<div>
<p ng-if="resError" style="padding: 6px 12px;font-size: 14px;"
class="small text-danger">{{resError}}</p>
</div>
</div>
</div>
</div>
</form>
</div>
</div>
<div class="modal fade">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal"
aria-label="Close"><span
aria-hidden="true">&times;</span>
<span class="sr-only">Close</span></button>
<h4 class="modal-title">Success</h4>
</div>
<div class="modal-body">
Registered merchant application has been submitted successfully
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close
</button>
</div>
</div>
</div>
</div>
</div>
<section class="section section-six fp-auto-height footer">
<div class="container">
<div class="row margin-bottom">
<div class="col-md-4 footer-item">
CONTACT US
<hr>
Level 14<br>
383 Kent Street<br>
Sydney NSW 2000<br>
<br>
Level 11<br>
15 William Street<br>
Melbourne VIC 3000<br>
<br>
1300-10-77-50<br>
03 9448 8865<br>
info@royalpay.com.au
</div>
<div class="col-md-4 sitemap footer-item">
SITE MAP
<hr>
<div class="row">
<div class="col-xs-6">
<p><a href="/">RoyalPay</a></p>
<p><a href="https://mpay.royalpay.com.au/docs/en/">Gateway API</a></p>
<p><a href="https://www.royalpay.com.au/industry.html">Industry Solution</a></p>
<p><a href="https://www.royalpay.com.au/marketing.html">Marketing Service</a></p>
</div>
<div class="col-xs-6">
<p><a href="https://www.royalpay.com.au/about.html">About Us</a></p>
<p><a href="https://www.royalpay.com.au/c_news.html">News</a></p>
<p><a href="https://www.royalpay.com.au/c_career.html">Career</a></p>
<p><a href="https://www.royalpay.com.au/download.html">Downloads</a></p>
</div>
</div>
</div>
<div class="col-md-4 footer-item">
SUPPORT
<hr>
<div class="row">
<div class="col-xs-6 qr-box">
<img src="static/css/img/qr_royalpay.png">
RoyalPay WeChat Official Account
</div>
<div class="col-xs-6 qr-box">
<img src="static/css/img/qr_service.png">
Customer Service
</div>
</div>
</div>
</div>
</div>
<div class="copyright">
<div class="container">
<div class="row">
<div class="col-xs-12 text-center">
© 2016 Tunnel Show Pty. Ltd. | Representative of AFSL licensee 448066
</div>
</div>
</div>
</div>
</section>
</div>
</div>
</div>
<div id="fp-nav" class="right"></div>
<div id="cli_dialog_div"></div>
</body>
</html>

@ -0,0 +1,422 @@
body .progress_inner #step-5:checked + div + div + div + div > .box_base, body .progress_inner #step-4:checked + input + div + div + div + div > .box_base, body .progress_inner #step-2:checked + input + input + input + div + div + div + div > .box_base, body .progress_inner #step-3:checked + input + input + div + div + div + div > .box_base, body .progress_inner #step-1:checked + input + input + input + input + div + div + div + div > .box_base {
top: 50%;
left: 0px;
opacity: 1;
}
body .progress_inner #step-5:checked + div + div + div + div > .box_item, body .progress_inner #step-4:checked + input + div + div + div + div > .box_item, body .progress_inner #step-2:checked + input + input + input + div + div + div + div > .box_item, body .progress_inner #step-3:checked + input + input + div + div + div + div > .box_item, body .progress_inner #step-1:checked + input + input + input + input + div + div + div + div > .box_item {
top: -30px;
left: 0px;
opacity: 0;
}
body .progress_inner #step-5:checked + div + div + div + div > .box_lid, body .progress_inner #step-4:checked + input + div + div + div + div > .box_lid, body .progress_inner #step-2:checked + input + input + input + div + div + div + div > .box_lid {
top: -20px;
left: 0px;
opacity: 0;
}
body .progress_inner #step-5:checked + div + div + div + div > .box_item, body .progress_inner #step-4:checked + input + div + div + div + div > .box_item, body .progress_inner #step-2:checked + input + input + input + div + div + div + div > .box_item {
top: -10px;
left: 0px;
opacity: 1;
}
body .progress_inner #step-5:checked + div + div + div + div > .box_item, body .progress_inner #step-4:checked + input + div + div + div + div > .box_item, body .progress_inner #step-3:checked + input + input + div + div + div + div > .box_item {
top: 10px;
left: 0px;
opacity: 1;
}
body .progress_inner #step-5:checked + div + div + div + div > .box_lid, body .progress_inner #step-4:checked + input + div + div + div + div > .box_lid, body .progress_inner #step-3:checked + input + input + div + div + div + div > .box_lid {
top: -1px;
left: 0px;
opacity: 1;
}
body .progress_inner #step-5:checked + div + div + div + div > .box_ribbon, body .progress_inner #step-4:checked + input + div + div + div + div > .box_ribbon, body .progress_inner #step-3:checked + input + input + div + div + div + div > .box_ribbon {
top: 70%;
left: 0px;
opacity: 0;
}
body .progress_inner #step-5:checked + div + div + div + div > .box_bow, body .progress_inner #step-4:checked + input + div + div + div + div > .box_bow, body .progress_inner #step-3:checked + input + input + div + div + div + div > .box_bow {
top: 0px;
left: 0px;
opacity: 0;
}
body .progress_inner #step-5:checked + div + div + div + div > .box_ribbon, body .progress_inner #step-4:checked + input + div + div + div + div > .box_ribbon {
top: 50%;
left: 0px;
opacity: 1;
}
body .progress_inner #step-5:checked + div + div + div + div > .box_bow, body .progress_inner #step-4:checked + input + div + div + div + div > .box_bow {
top: -10px;
left: 0px;
opacity: 1;
}
body .progress_inner #step-5:checked + div + div + div + div > .box_tag {
top: 10px;
left: 20px;
opacity: 1;
}
body .progress_inner #step-5:checked + div + div + div + div > .box_string {
top: 10px;
left: 20px;
opacity: 1;
}
* {
box-sizing: border-box;
}
body .progress_inner__step:before, body .progress_inner, body .progress_inner__status .box_base, body .progress_inner__status .box_item, body .progress_inner__status .box_ribbon, body .progress_inner__status .box_bow, body .progress_inner__status .box_bow__left, body .progress_inner__status .box_bow__right, body .progress_inner__status .box_tag, body .progress_inner__status .box_string {
position: absolute;
left: 0;
right: 0;
top:42%;
-webkit-transform: translateY(-50%);
transform: translateY(-50%);
margin: auto;
}
body .progress_inner__bar, body .progress_inner__bar--set {
height: 6px;
left: 10%;
background: -webkit-repeating-linear-gradient(45deg, #1ea4ec, #1ea4ec 4px, #1f8bc5 4px, #1f8bc5 10px);
background: repeating-linear-gradient(45deg, #1ea4ec, #1ea4ec 4px, #1f8bc5 4px, #1f8bc5 10px);
-webkit-transition: width 800ms cubic-bezier(0.915, 0.015, 0.3, 1.005);
transition: width 800ms cubic-bezier(0.915, 0.015, 0.3, 1.005);
border-radius: 6px;
width: 0;
position: relative;
z-index: -1;
}
body .progress_inner__step:before {
width: 30px;
height: 30px;
color: #70afd0;
background: white;
line-height: 30px;
border: 3px solid #a6cde2;
font-size: 12px;
top: 3px;
border-radius: 100%;
-webkit-transition: all .4s;
transition: all .4s;
cursor: pointer;
pointer-events: none;
}
body .progress_inner__step {
width: 20%;
font-size: 14px;
padding: 0 10px;
-webkit-transition: all .4s;
transition: all .4s;
float: left;
text-align: center;
position: relative;
}
body .progress_inner__step label {
padding-top: 50px;
top: -20px;
display: block;
position: relative;
cursor: pointer;
}
/*body .progress_inner__step:hover {
color: white;
}
body .progress_inner__step:hover:before {
color: white;
background: #1ea4ec;
}*/
body {
font-family: "Nunito", sans-serif;
background: #a6cde2;
color: #2e6c8e;
text-align: center;
font-weight: 900;
}
body .progress_inner {
height: 200px;
width: 1000px;
}
body .progress_inner #step-5:checked + div {
width: 80%;
}
body .progress_inner #step-5:checked + div + div + div > .tab:nth-of-type(5) {
opacity: 1;
top: 0;
}
body .progress_inner #step-5:checked + div + div + div + div {
right: 10%;
}
body .progress_inner #step-4:checked + input + div {
width: 60%;
}
body .progress_inner #step-4:checked + input + div + div + div > .tab:nth-of-type(4) {
opacity: 1;
top: 0;
}
body .progress_inner #step-4:checked + input + div + div + div + div {
right: 30%;
}
body .progress_inner #step-3:checked + input + input + div {
width: 40%;
}
body .progress_inner #step-3:checked + input + input + div + div + div > .tab:nth-of-type(3) {
opacity: 1;
top: 0;
}
body .progress_inner #step-3:checked + input + input + div + div + div + div {
right: 50%;
}
body .progress_inner #step-2:checked + input + input + input + div {
width: 20%;
}
body .progress_inner #step-2:checked + input + input + input + div + div + div > .tab:nth-of-type(2) {
opacity: 1;
top: 0;
}
body .progress_inner #step-2:checked + input + input + input + div + div + div + div {
right: 70%;
}
body .progress_inner #step-1:checked + input + input + input + input + div {
width: 0%;
}
body .progress_inner #step-1:checked + input + input + input + input + div + div + div > .tab:nth-of-type(1) {
opacity: 1;
top: 0;
}
body .progress_inner #step-1:checked + input + input + input + input + div + div + div + div {
right: 90%;
}
body .progress_inner__step:nth-of-type(1):before {
content: "1";
}
body .progress_inner__step:nth-of-type(2):before {
content: "2";
}
body .progress_inner__step:nth-of-type(3):before {
content: "3";
}
body .progress_inner__step:nth-of-type(4):before {
content: "4";
}
body .progress_inner__step:nth-of-type(5):before {
content: "5";
}
body .progress_inner__step:nth-of-type(6):before {
content: "6";
}
body .progress_inner__bar--set {
width: 80%;
top: -6px;
background: #70afd0;
position: relative;
z-index: -2;
}
body .progress_inner__tabs .tab {
opacity: 0;
position: absolute;
top: 40px;
text-align: center;
margin-top: 80px;
box-shadow: 0px 2px 1px #80b7d5;
padding: 30px;
background: white;
border-radius: 10px;
-webkit-transition: all .2s;
transition: all .2s;
}
body .progress_inner__tabs .tab h1 {
margin: 0;
}
body .progress_inner__tabs .tab p {
font-weight: 400;
opacity: 0.8;
}
body .progress_inner__status {
width: 40px;
height: 40px;
top: -65px;
-webkit-transition: right 800ms cubic-bezier(0.915, 0.015, 0.3, 1.005);
transition: right 800ms cubic-bezier(0.915, 0.015, 0.3, 1.005);
-webkit-transform: translateX(50%);
transform: translateX(50%);
position: absolute;
}
body .progress_inner__status div {
opacity: 0;
-webkit-transition: all 600ms cubic-bezier(0.915, 0.015, 0.3, 1.005);
transition: all 600ms cubic-bezier(0.915, 0.015, 0.3, 1.005);
-webkit-transition-delay: 300ms;
transition-delay: 300ms;
}
body .progress_inner__status div {
position: absolute;
}
body .progress_inner__status .box_base {
background: -webkit-repeating-linear-gradient(45deg, #986c5d, #986c5d 2px, #775144 2px, #775144 4px);
background: repeating-linear-gradient(45deg, #986c5d, #986c5d 2px, #775144 2px, #775144 4px);
width: 36px;
height: 40px;
z-index: 1;
border-radius: 1px;
}
body .progress_inner__status .box_lid {
width: 40px;
height: 13.33333px;
background: #775144;
z-index: 2;
border-radius: 1px;
top: 0;
}
body .progress_inner__status .box_item {
width: 20px;
height: 20px;
background: #be69d2;
z-index: 0;
border-radius: 4px;
-webkit-transform: rotate(45deg);
transform: rotate(45deg);
}
body .progress_inner__status .box_ribbon {
width: 10px;
height: 42px;
background: #ee0f29;
z-index: 4;
border-radius: 1px;
}
body .progress_inner__status .box_bow__left, body .progress_inner__status .box_bow__right {
width: 6px;
height: 10px;
background: #be0c21;
position: absolute;
z-index: 3;
opacity: 1;
border-radius: 1px;
}
body .progress_inner__status .box_bow {
top: -6px;
z-index: 1;
-webkit-transition-delay: 500ms;
transition-delay: 500ms;
}
body .progress_inner__status .box_bow__left {
left: 6px;
-webkit-transform: rotate(45deg);
transform: rotate(45deg);
}
body .progress_inner__status .box_bow__right {
left: -4px;
-webkit-transform: rotate(-45deg);
transform: rotate(-45deg);
}
body .progress_inner__status .box_tag {
width: 20px;
height: 10px;
background: #487ac7;
z-index: 4;
-webkit-transform: rotate(-10deg) translateX(-40px) translateY(0px);
transform: rotate(-10deg) translateX(-40px) translateY(0px);
border-radius: 2px;
-webkit-transition-delay: 500ms;
transition-delay: 500ms;
}
body .progress_inner__status .box_string {
width: 17px;
height: 2px;
background: #343434;
z-index: 4;
-webkit-transform: rotate(-39deg) translateX(-22px) translateY(-12px);
transform: rotate(-39deg) translateX(-22px) translateY(-12px);
}
body .progress_inner input[type="radio"] {
display: none;
}
.step_header{
text-align: left;
padding-left:7%;
}
.step_header img{
height: 30px;
width: 30px;
}
.success_wrapper{
margin-top: 30px;
text-align: center;
}
.success_img{
display: inline-block;
}
.success_img img{
vertical-align: baseline;
}
.success_text{
text-align: left;
display: inline-block;
margin-left: 14px;
}
.success_text2{
font-family: PingFangSC-Regular;
font-size: 15px;
color: #8B919D;
letter-spacing: 0px;
}
.success_content{
margin-top: 50px;
font-family: PingFangSC-Regular;
font-size: 15px;
color: #8B919D;
letter-spacing: 0px;
}
.content_align{
margin:0 auto;
width:50%;
text-align:left;
}
.margin-bottom2{
margin-top: 120px;
}
.agree-text{
font-family: SanFranciscoText-Regular;
font-size: 15px;
color: #FF6600;
letter-spacing: 0px;
}
.agree-to{
border: 1px solid #FF6600;
padding: 6px 8px 6px 8px;
color: grey;
cursor: pointer;
}
.agree_left{
text-align: left;
}
body .dis_before:nth-child(1):before{
background: #1ea4ec;
}
body .dis_before:nth-child(2):before{
background: #1ea4ec;
}
body .dis_before:nth-child(3):before{
background: #1ea4ec;
}
body .dis_before:nth-child(4):before{
background: #1ea4ec;
}
body .dis_before:nth-child(5):before {
background: #1ea4ec;
}
/*.progress_inner__step:before{
background: #1ea4ec;
}
.step_submit_color{
color: white;
}*/

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

@ -0,0 +1,204 @@
angular.module('applyPartnerApp', ['ngMessages']).controller('applyPartnerCtrl', ['$scope', '$http','$interval', function ($scope, $http,$interval) {
var countryMap = [{
"label": "AUS",
"value": "AUS"
}, {
"label": "CHN",
"value": "CHN"
}];
var stateMap = [
{
"label": "ACT",
"value": "ACT"
},
{
"label": "NSW",
"value": "NSW"
},
{
"label": "NT",
"value": "NT"
},
{
"label": "QLD",
"value": "QLD"
},
{
"label": "SA",
"value": "SA"
},
{
"label": "TAS",
"value": "TAS"
},
{
"label": "VIC",
"value": "VIC"
},
{
"label": "WA",
"value": "WA"
}
];
var industryMap = [
{
"label": "综合商城 Integrated Store",
"value": 336
},
{
"label": "食品 Food",
"value": 335
},
{
"label": "化妆品 Cosmetics",
"value": 334
},
{
"label": "鞋包服饰 Clothes",
"value": 327
},
{
"label": "酒店行业 Hospitality industry",
"value": 328
},
{
"label": "数码电器 Electric appliances",
"value": 332
},
{
"label": "母婴 Baby and maternal products",
"value": 333
},
{
"label": "文具/办公用品 Office supplies",
"value": 337
},
{
"label": "机票行业 Airline tickets industry",
"value": 339
},
{
"label": "国际物流 International logistics",
"value": 330
},
{
"label": "教育行业 Education section",
"value": 329
},
{
"label": "其它服务行业 Other services industry",
"value": 331
},
{
"label": "其它货物贸易行业 Other goods trade industry",
"value": 338
}
];
function getQueryString(name) {
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
var r = window.location.search.substr(1).match(reg);
if (r != null)return unescape(r[2]);
return null;
}
var from = getQueryString("from");
$scope.industries = angular.copy(industryMap);
$scope.states = angular.copy(stateMap);
$scope.countries = angular.copy(countryMap);
$scope.seconds = 6;
$scope.canClick=false;
$scope.description = "Send Code";
$scope.disabledArray = new Array(true, false, false, false, false);
$scope.chooseArray = new Array(true, false, false, false, false);
$scope.changeChoose = function (index) {
$scope.chooseArray = new Array(false, false, false, false, false);
$scope.chooseArray[index] = true;
$scope.disabledArray[index] = true;
};
$scope.goToLogin = function () {
$scope.seconds = $scope.seconds -1;
if ($scope.seconds == 0) {
location.href = '/login.html';
}
};
$scope.partner = {};
if (from != null && from.toString().length == 1) {
$scope.partner.source = from;
}
$scope.validateForm = function (form,index) {
/* if (form.$invalid) {
angular.forEach(form, function (item, key) {
if (key.indexOf('$') < 0) {
item.$dirty = true;
}
});
return;
}*/
$scope.changeChoose(index);
};
$scope.getTestCode = function(){
var second=59;
var timerHandler;
timerHandler =$interval(function(){
if(second<=0){
$interval.cancel(timerHandler); //当执行的时间59s,结束时,取消定时器 cancle方法取消
second=59;
$scope.description="获取验证码";
$scope.canClick=false; //因为 ng-disabled属于布尔值设置按钮可以点击可点击发送
}else{
$scope.description=second+"s后重发";
second--;
$scope.canClick=true;
}
},1000) //每一秒执行一次$interval定时器方法
};
$scope.sendVerificationCode = function () {
$scope.getTestCode();
};
$scope.save = function (from,index) {
$scope.validateForm(from,index);
/* var timer = $interval(function(){
$scope.goToLogin();
},1000);*/
}
<!--/partners/application/captcha-image-->
/* $scope.captchaImage = '/partners/application/captcha-image';
$scope.changeCaptchaImage = function () {
$scope.captchaImage = '/partners/application/captcha-image?' + Math.floor(Math.random() * 100);
};
$scope.save = function (form) {
if (form.$invalid) {
angular.forEach(form, function (item, key) {
if (key.indexOf('$') < 0) {
item.$dirty = true;
}
});
return;
}
$scope.partner.company_name = $scope.partner.short_name;
$('#login-btn').attr('disabled', true);
$http.post('partners/application', $scope.partner).then(function (resp) {
alert("Registered merchant application has been submitted successfully");
location.href = 'partner_register_success.html';
//commonDialog.alert({title: 'Success', content: 'Registered merchant application has been submitted successfully', type: 'success'});
}, function (resp) {
alert(resp.data.message);
$scope.resError = resp.data.message;
$scope.changeCaptchaImage();
$('#login-btn').attr('disabled', false);
});
};*/
}]);

@ -1,6 +1,7 @@
package au.com.royalpay.payment.manage.apps.core.impls;
import au.com.royalpay.payment.manage.mappers.payment.OrderMapper;
import au.com.royalpay.payment.manage.mappers.system.ClientConfigMapper;
import au.com.royalpay.payment.manage.mappers.system.ClientMapper;
import au.com.royalpay.payment.manage.mappers.system.OrgMapper;
import au.com.royalpay.payment.tools.mail.MailGunClient;
@ -9,6 +10,7 @@ import au.com.royalpay.payment.tools.mail.SendMail;
import com.alibaba.fastjson.JSONObject;
import org.apache.commons.codec.binary.Base64;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.time.DateUtils;
import org.junit.Test;
import org.junit.runner.RunWith;
@ -21,8 +23,12 @@ import org.springframework.web.bind.annotation.RequestMethod;
import java.io.IOException;
import java.net.URISyntaxException;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import javax.annotation.Resource;
@ -34,7 +40,7 @@ import cn.yixblog.platform.http.HttpRequestResult;
* Created by wangning on 05/01/2018.
*/
@SpringBootTest
@ActiveProfiles({ "local", "alipay", "wechat", "jd", "bestpay" })
@ActiveProfiles({ "proxy", "alipay", "wechat", "jd", "bestpay" })
@RunWith(SpringRunner.class)
public class CustomerImpressionImplTest {
@Resource
@ -48,7 +54,8 @@ public class CustomerImpressionImplTest {
private OrgMapper orgMapper;
@Resource
private MailGunClient mailGunClient;
@Resource
private ClientConfigMapper clientConfigMapper;
// @Test
// public void redisQueue() {
@ -60,40 +67,39 @@ public class CustomerImpressionImplTest {
// }
// }
// @Test
// public void excel() {
// try {
// XSSFWorkbook workbook = new XSSFWorkbook(new FileInputStream(new File("/Users/wangning/Desktop/asd.xlsx")));
// XSSFSheet sheet = workbook.getSheetAt(0);
// Iterator<Row> rowIterator = sheet.rowIterator();
// Row row = null;
// Cell cell = null;
// while (rowIterator.hasNext()) {
// row = rowIterator.next();
// cell = row.getCell(3);
// cell.setCellType(HSSFCell.CELL_TYPE_STRING);
//
// JSONObject client = clientMapper.findClientByMoniker(cell.getStringCellValue().trim());
// if(client==null){
// System.out.println();
// continue;
// }
// JSONObject org = orgMapper.findOne(client.getIntValue("org_id"));
// if(org==null){
// continue;
// }
//
// row.createCell(5).setCellValue(org.getString("name"));
// }
//
// OutputStream out = new FileOutputStream("/Users/wangning/Desktop/春节活动报名结果通知(包含BD名称).xlsx");
// workbook.write(out);
// workbook.close();
// } catch (IOException e) {
// e.printStackTrace();
// }
// }
// @Test
// public void excel() {
// try {
// XSSFWorkbook workbook = new XSSFWorkbook(new FileInputStream(new File("/Users/wangning/Desktop/asd.xlsx")));
// XSSFSheet sheet = workbook.getSheetAt(0);
// Iterator<Row> rowIterator = sheet.rowIterator();
// Row row = null;
// Cell cell = null;
// while (rowIterator.hasNext()) {
// row = rowIterator.next();
// cell = row.getCell(3);
// cell.setCellType(HSSFCell.CELL_TYPE_STRING);
//
// JSONObject client = clientMapper.findClientByMoniker(cell.getStringCellValue().trim());
// if(client==null){
// System.out.println();
// continue;
// }
// JSONObject org = orgMapper.findOne(client.getIntValue("org_id"));
// if(org==null){
// continue;
// }
//
// row.createCell(5).setCellValue(org.getString("name"));
// }
//
// OutputStream out = new FileOutputStream("/Users/wangning/Desktop/春节活动报名结果通知(包含BD名称).xlsx");
// workbook.write(out);
// workbook.close();
// } catch (IOException e) {
// e.printStackTrace();
// }
// }
@Test
public void sendSimpleMessage() throws Exception {
@ -126,7 +132,7 @@ public class CustomerImpressionImplTest {
generator.addQueryString("ascending", "yes");
generator.addQueryString("v:my-custom-data", "123456789");
generator.addQueryString("limit", "12");
System.out.println(String.valueOf(DateUtils.addDays(new Date(),1)));
System.out.println(String.valueOf(DateUtils.addDays(new Date(), 1)));
HttpRequestResult res = null;
try {
res = generator.execute();
@ -155,13 +161,15 @@ public class CustomerImpressionImplTest {
public void sendSimpleMessages() throws Exception {
SendMail sendMail = new SendMail();
sendMail.setFrom("info@mail.royalpay.com.au");
sendMail.setContent("<html><p>Hi kira</p ></html>");
sendMail.setContent("<html><p>Hi</p ></html>");
List<String> list = new ArrayList<>();
list.add("testTag");
// sendMail.setTags(list);
Set<String> mailCCs = new HashSet<>();
mailCCs.add("asd1159111@163.com");
sendMail.setMailCcs(mailCCs);
Set<String> mailtos = new HashSet<>();
mailtos.add("eason.qian@royalpay.com.au");
mailtos.add("164851225@qq.com");
sendMail.setMailTos(mailtos);
sendMail.setTitle("Final Test");
@ -171,4 +179,43 @@ public class CustomerImpressionImplTest {
System.out.println(result.toJSONString());
}
@Test
public void asd() {
JSONObject client = clientMapper.findClient(9);
JSONObject var = new JSONObject();
var.put("client_moniker", client.getString("client_moniker"));
var.put("short_name", client.getString("short_name"));
JSONObject result = mailGunClient.addListMember(client.getString("contact_email"), "merchants@mail.royalpay.com.au", client.getString("contact_person"),
var);
}
@Test
public void qwe() {
List<JSONObject> clients = clientMapper.AllClients();
List<JSONObject> clientConfigs = clientConfigMapper.getAll();
Map<String, JSONObject> clientConfigMap = new HashMap<>();
Map<String, JSONObject> clientMap = new HashMap<>();
clientConfigs.forEach(p -> {
clientConfigMap.put(p.getString("client_moniker"), p);
});
clients.forEach(p -> {
clientMap.put(p.getString("client_moniker"), p);
});
String split = "--";
String cc = "cc:";
String c = "c";
clientConfigMap.values().forEach(p -> {
String clientMoniker = p.getString("client_moniker");
JSONObject tmpClient = clientMap.get(clientMoniker);
tmpClient.keySet().forEach(o->{
if(StringUtils.isNotEmpty(p.getString(o))){
if(!tmpClient.getString(o).equals(p.getString(o))){
System.out.println(clientMoniker+split+o+split+cc+p.getString(o)+split+c+tmpClient.getString(o));
}
}
});
});
}
}
Loading…
Cancel
Save