AlphaPayUS 账户创建bug修复

master
liuxinxin 5 years ago
parent 5ccff0ef78
commit 2367e27ed8

@ -5,6 +5,8 @@ import cn.yixblog.support.mybatis.autosql.annotations.AutoMapper;
import cn.yixblog.support.mybatis.autosql.annotations.AutoSql;
import cn.yixblog.support.mybatis.autosql.annotations.SqlType;
import com.alibaba.fastjson.JSONObject;
import com.github.miemiedev.mybatis.paginator.domain.PageBounds;
import com.github.miemiedev.mybatis.paginator.domain.PageList;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@ -22,4 +24,10 @@ public interface ClientComplianceCompanyMapper {
@AutoSql(type = SqlType.SELECT)
JSONObject findFileByClientId(@Param("client_id") int client_id);
PageList<JSONObject> listClientCompliances(JSONObject params, PageBounds pageBounds);
void passComplianceFiles(JSONObject pass);
void refuseComplianceFiles(JSONObject pass);
}

@ -43,4 +43,8 @@ public interface ClientFilesMapper {
void updateBeforeCompliance(@Param("client_id") int client_id);
void passComplianceFiles(@Param("client_id") int client_id);
void refuseComplianceFiles(@Param("client_id") int client_id);
}

@ -0,0 +1,77 @@
package au.com.royalpay.payment.manage.merchants.beans;
import au.com.royalpay.payment.core.exceptions.ParamInvalidException;
import com.alibaba.fastjson.JSONObject;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.time.DateUtils;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
/**
* Created by yixian on 2016-07-01.
*/
public class ClientComplianceQuery {
private int limit = 10;
private int page = 1;
private String status;
private String client_order_id;
private String client_moniker;
public JSONObject toJson(){
JSONObject jason = new JSONObject();
if(StringUtils.isNotEmpty(status)){
jason.put("status",status);
}
if(StringUtils.isNotEmpty(client_order_id)){
jason.put("client_order_id",client_order_id);
}
if(StringUtils.isNotEmpty(client_moniker)){
jason.put("client_moniker",client_moniker);
}
return jason;
}
public int getLimit() {
return limit;
}
public void setLimit(int limit) {
this.limit = limit;
}
public int getPage() {
return page;
}
public void setPage(int page) {
this.page = page;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public String getClient_order_id() {
return client_order_id;
}
public void setClient_order_id(String client_order_id) {
this.client_order_id = client_order_id;
}
public String getClient_moniker() {
return client_moniker;
}
public void setClient_moniker(String client_moniker) {
this.client_moniker = client_moniker;
}
}

@ -0,0 +1,21 @@
package au.com.royalpay.payment.manage.merchants.core;
import au.com.royalpay.payment.manage.merchants.beans.ClientApplyInfo;
import au.com.royalpay.payment.manage.merchants.beans.ClientComplianceQuery;
import au.com.royalpay.payment.manage.merchants.beans.PartnerQuery;
import com.alibaba.fastjson.JSONObject;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
/**
* Created by yishuqian on 18/10/2016.
*/
public interface ClientComplianceApply {
JSONObject listClientComplianceApply(JSONObject manager, ClientComplianceQuery apply);
void passComplianceFiles(JSONObject manager,JSONObject passInfo);
void refuseComplianceFiles(JSONObject manager,JSONObject refuseInfo);
JSONObject complianceAuthFile(JSONObject client);
}

@ -462,4 +462,6 @@ public interface ClientManager {
void updateRefundCreditLine(JSONObject manager, String clientMoniker, JSONObject refundLineInfo);
JSONObject getComplianceFiles(JSONObject account);
JSONObject getComplianceFilesForBD(JSONObject account);
}

@ -0,0 +1,124 @@
package au.com.royalpay.payment.manage.merchants.core.impls;
import au.com.royalpay.payment.core.exceptions.InvalidShortIdException;
import au.com.royalpay.payment.manage.mappers.system.*;
import au.com.royalpay.payment.manage.merchants.beans.ClientApplyInfo;
import au.com.royalpay.payment.manage.merchants.beans.ClientComplianceQuery;
import au.com.royalpay.payment.manage.merchants.beans.PartnerQuery;
import au.com.royalpay.payment.manage.merchants.core.ClientApply;
import au.com.royalpay.payment.manage.merchants.core.ClientComplianceApply;
import au.com.royalpay.payment.manage.merchants.core.ClientConfigService;
import au.com.royalpay.payment.manage.merchants.core.ClientModifySupport;
import au.com.royalpay.payment.manage.merchants.entity.impls.SourceModify;
import au.com.royalpay.payment.manage.merchants.events.ClientApplyEvent;
import au.com.royalpay.payment.manage.merchants.events.ClientApplyNotifyBDEvent;
import au.com.royalpay.payment.tools.exceptions.BadRequestException;
import au.com.royalpay.payment.tools.exceptions.ForbiddenException;
import au.com.royalpay.payment.tools.exceptions.NotFoundException;
import au.com.royalpay.payment.tools.permission.enums.ManagerRole;
import au.com.royalpay.payment.tools.utils.PageListUtils;
import com.alibaba.fastjson.JSONObject;
import com.github.miemiedev.mybatis.paginator.domain.Order;
import com.github.miemiedev.mybatis.paginator.domain.PageBounds;
import com.github.miemiedev.mybatis.paginator.domain.PageList;
import org.apache.commons.lang3.RandomStringUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.time.DateFormatUtils;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFFont;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.util.HSSFColor;
import org.apache.poi.ss.usermodel.*;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.ApplicationEventPublisher;
import org.springframework.context.ApplicationEventPublisherAware;
import org.springframework.data.redis.core.BoundValueOperations;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.Assert;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.io.OutputStream;
import java.util.Date;
import java.util.List;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
/**
* Created by yishuqian on 18/10/2016.
*/
@Service
public class ClientComplianceApplyImpl implements ClientComplianceApply
{
@Resource
private ClientComplianceCompanyMapper clientComplianceCompanyMapper;
@Resource
private ClientFilesMapper clientFilesMapper;
@Override
public JSONObject listClientComplianceApply(JSONObject manager, ClientComplianceQuery applyQuery) {
JSONObject params = applyQuery.toJson();
if (ManagerRole.BD_USER.hasRole(manager.getIntValue("role"))) {
params.put("bd_user", manager.getString("manager_id"));
}
PageList<JSONObject> partners = clientComplianceCompanyMapper.listClientCompliances(params, new PageBounds(applyQuery.getPage(), applyQuery.getLimit(), Order.formString("create_time.desc")));
return PageListUtils.buildPageListResult(partners);
}
@Override
public void passComplianceFiles(JSONObject manager, JSONObject passInfo) {
JSONObject pass = new JSONObject();
pass.put("operator_id", manager.getString("manager_id"));
pass.put("client_id",passInfo.getIntValue("client_id"));
clientComplianceCompanyMapper.passComplianceFiles(pass);
clientFilesMapper.passComplianceFiles(passInfo.getIntValue("client_id"));
}
@Override
public void refuseComplianceFiles(JSONObject manager, JSONObject refuseInfo) {
JSONObject refuse = new JSONObject();
refuse.put("operator_id", manager.getString("manager_id"));
refuse.put("client_id",refuseInfo.getIntValue("client_id"));
refuse.put("description",refuseInfo.getIntValue("description"));
clientComplianceCompanyMapper.refuseComplianceFiles(refuse);
clientFilesMapper.refuseComplianceFiles(refuseInfo.getIntValue("client_id"));
}
@Override
public JSONObject complianceAuthFile(JSONObject client)
{
String[] fileKeys = {"client_bank_file", "client_company_file", "client_id_file", "client_agree_file", "client_apply_file"};
if (client == null) {
throw new InvalidShortIdException();
}
List<JSONObject> clientFiles = clientFilesMapper.findAllClientFile(client.getIntValue("client_id"));
JSONObject fileJson = new JSONObject();
if (clientFiles != null && clientFiles.size() > 0) {
for (String fileKey : fileKeys) {
List<JSONObject> clientFileUrl = clientFiles.stream()
.filter(json -> (fileKey.equals(json.getString("file_name"))))
.sorted((log1, log2) -> log2.getDate("last_update_date").compareTo(log1.getDate("last_update_date")))
.map(json -> {
JSONObject params = new JSONObject();
params.put("file_id", json.getString("file_id"));
params.put("status", json.getString("status"));
params.put("file_value", json.getString("file_value"));
return params;
})
.collect(Collectors.toList());
if (clientFileUrl != null && clientFileUrl.size() > 0) {
fileJson.put(fileKey, clientFileUrl);
}
}
}
return fileJson;
};
}

@ -158,6 +158,9 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid
private AttachmentClient attachmentClient;
@Resource
private StringRedisTemplate stringRedisTemplate;
@Resource
private ClientComplianceApply clientComplianceApply;
@Value("${app.redis.prefix}")
private String redisPrefix;
private ApplicationEventPublisher publisher;
@ -1998,6 +2001,20 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid
return file;
}
@Override
public JSONObject getComplianceFilesForBD(JSONObject account)
{
JSONObject client = getClientInfo(account.getIntValue("client_id"));
if (client == null) {
throw new InvalidShortIdException();
}
JSONObject file = clientComplianceApply.complianceAuthFile(client);
file.put("file_company",clientComplianceCompanyMapper.findFileByClientId(account.getIntValue("client_id")));
file.put("client",client);
return file;
}
@Override
@Transactional
public void updateClientBDUsers(JSONObject manager, String clientMoniker, JSONObject data) throws Exception {

@ -1,5 +1,9 @@
package au.com.royalpay.payment.manage.merchants.web;
import au.com.royalpay.payment.manage.mappers.system.ClientComplianceCompanyMapper;
import au.com.royalpay.payment.manage.merchants.beans.ClientComplianceQuery;
import au.com.royalpay.payment.manage.merchants.core.ClientComplianceApply;
import au.com.royalpay.payment.manage.merchants.core.ClientManager;
import com.google.code.kaptcha.Producer;
import au.com.royalpay.payment.manage.merchants.beans.ClientApplyInfo;
@ -40,6 +44,13 @@ public class PartnerApplyController {
private ClientApply clientApply;
@Resource
private Producer captchaProducer;
@Resource
private ClientComplianceCompanyMapper clientComplianceCompanyMapper;
@Resource
private ClientComplianceApply clientComplianceApply;
@Resource
private ClientManager clientManager;
@RequestMapping(method = RequestMethod.POST)
public void applyPartner(@CookieValue(CommonConsts.CODE_KEY) String codeKey, @RequestBody @Valid ClientApplyInfo apply,
@ -67,6 +78,39 @@ public class PartnerApplyController {
return clientApply.listPartnerApply(manager,apply);
}
@RequestMapping(value = "/listClientCompliances",method = RequestMethod.GET)
@RequireManager(role = {ManagerRole.ADMIN, ManagerRole.BD_USER, ManagerRole.OPERATOR, ManagerRole.SERVANT})
public JSONObject clientComplianceList(@ModelAttribute(CommonConsts.MANAGER_STATUS) JSONObject manager, ClientComplianceQuery apply) {
/*return clientApply.listPartnerApply(manager,apply);*/
return clientComplianceApply.listClientComplianceApply(manager,apply);
}
@RequestMapping(value = "/pass/complianceFiles",method = RequestMethod.GET)
@RequireManager(role = {ManagerRole.ADMIN, ManagerRole.BD_USER, ManagerRole.OPERATOR, ManagerRole.SERVANT})
public void passCompliances(@ModelAttribute(CommonConsts.MANAGER_STATUS) JSONObject manager, JSONObject passInfo) {
clientComplianceApply.passComplianceFiles(manager,passInfo);
}
@RequestMapping(value = "/refuse/complianceFiles",method = RequestMethod.GET)
@RequireManager(role = {ManagerRole.ADMIN, ManagerRole.BD_USER, ManagerRole.OPERATOR, ManagerRole.SERVANT})
public void refuseCompliances(@ModelAttribute(CommonConsts.MANAGER_STATUS) JSONObject manager, JSONObject refuseInfo) {
clientComplianceApply.passComplianceFiles(manager,refuseInfo);
}
@RequestMapping(value = "/compliance/clientViewFiles/{client_id}",method = RequestMethod.GET)
@RequireManager(role = {ManagerRole.ADMIN, ManagerRole.BD_USER, ManagerRole.OPERATOR, ManagerRole.SERVANT})
public JSONObject searchCompliances(@PathVariable int client_id) {
JSONObject clientId = new JSONObject();
clientId.put("client_id",client_id);
return clientManager.getComplianceFilesForBD(clientId);
}
@RequestMapping(value = "/{client_id}",method = RequestMethod.GET)
@RequireManager(role = {ManagerRole.ADMIN, ManagerRole.BD_USER, ManagerRole.OPERATOR, ManagerRole.SERVANT})
public JSONObject getComplianceCompanyDetail(@PathVariable String client_apply_id) {
return clientApply.getPartnerApplicationDetail(client_apply_id);
}
@RequestMapping(value = "/{client_apply_id}",method = RequestMethod.GET)
@RequireManager(role = {ManagerRole.ADMIN, ManagerRole.BD_USER, ManagerRole.OPERATOR, ManagerRole.SERVANT})
public JSONObject getApplicationDetail(@PathVariable String client_apply_id) {

@ -693,7 +693,7 @@ public class SignInAccountServiceImpl implements SignInAccountService, Applicati
return result;
}
@Override
public JSONObject checkAuthFileStatus(JSONObject client) {
JSONObject result = new JSONObject();
result.put("client_less_file", false);

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="au.com.royalpay.payment.manage.mappers.system.ClientComplianceCompanyMapper">
<select id="listClientCompliances" resultType="com.alibaba.fastjson.JSONObject">
SELECT c.* FROM client_authfile_compliance c
</select>
</mapper>

@ -407,7 +407,7 @@
</div>
<div class="col-sm-2 col-xs-6">
<a ui-sref="complianceDocumentAudit" ui-sref-opts="{reload:true}">
<a ui-sref="partner_compliance_auth" ui-sref-opts="{reload:true}">
<div class="description-block">
<img src="/static/images/main_menu/compliance_merchant.png"/>
<div class="description-text">

@ -6,6 +6,10 @@ define(['angular', 'static/commons/commons', 'uiBootstrap', 'uiRouter', 'ngBootS
url: '/partner/apply',
templateUrl: '/static/payment/partner/templates/partners_apply.html',
controller: 'partnerApplyCtrl'
}).state('partner_compliance_auth', {
url: '/partners/complianceForClient',
templateUrl: 'static/sys/templates/partner_compliance_for_client.html',
controller: 'compliancePartnerForClientCtrl'
}).state('partner_apply.partner_application', {
url: '/application',
templateUrl: '/static/payment/partner/templates/partner_application.html',
@ -19,8 +23,36 @@ define(['angular', 'static/commons/commons', 'uiBootstrap', 'uiRouter', 'ngBootS
return $http.get('/partners/application/' + $stateParams.client_apply_id);
}]
}
}).state('partner_apply.compliance_detail', {
url: '/{client_id}/compliance_detail',
templateUrl: '/static/payment/partner/templates/client_compliance_to_auth.html',
controller: 'partnerComplianceCompanyDetail',
resolve: {
file: ['$http','$stateParams',function ($http, $stateParams) {
return $http.get('/partners/application/compliance/clientViewFiles/'+ $stateParams.client_id);
}]
}
})
}]);
app.controller('compliancePartnerForClientCtrl', ['$scope', '$sce', '$http', '$filter', '$uibModal', 'businessStructuresMap', 'industryMap', 'stateMap', 'sectorMap', 'countryMap',
function ($scope, $sce, $http, $filter, $uibModal, businessStructuresMap, industryMap, stateMap, sectorMap, countryMap) {
$scope.pagination = {};
$scope.industries = industryMap.configs()
$scope.states = stateMap.configs();
$scope.countries = countryMap.configs();
$scope.params = {};
$scope.loadClientCompliance = function (page) {
var params = angular.copy($scope.params);
params.page = page || $scope.pagination.page || 1;
$http.get('/partners/application/listClientCompliances', {params: params}).then(function (resp) {
debugger;
$scope.compliances = resp.data.data;
$scope.pagination = resp.data.pagination;
});
};
$scope.loadClientCompliance(1);
}]);
app.controller('partnerApplyCtrl', ['$rootScope','$state', function ($rootScope,$state) {
if ($state.is('partner_apply')){
$state.go('.partner_application');
@ -163,6 +195,24 @@ define(['angular', 'static/commons/commons', 'uiBootstrap', 'uiRouter', 'ngBootS
}
}]);
app.controller('partnerComplianceCompanyDetail', ['$rootScope', '$scope', '$http', '$state', '$uibModal', 'commonDialog', 'file', function ($rootScope, $scope, $http, $state, $uibModal, commonDialog, file) {
debugger;
$scope.file = file.data || {};
$scope.filesrc = $scope.file.client_bank_file;
/*未完成*/
$scope.passPartnerComplianceFiles = function () {
$http.put('partners/application/unregister_accounts/' + $scope.account.account_id, $scope.account).then(function (resp) {
$scope.$close();
}, function (resp) {
commonDialog.alert({title: 'Error', content: resp.data.message, type: 'error'});
})
}
}]);
app.controller('passApplicationCtrl', ['$scope', '$http', '$state', 'partner', function ($scope, $http, $state, partner) {
$scope.partner = angular.copy(partner);
$scope.submit = function (form) {
@ -226,4 +276,4 @@ define(['angular', 'static/commons/commons', 'uiBootstrap', 'uiRouter', 'ngBootS
};
});
return app;
});
});

@ -0,0 +1,107 @@
<style type="text/css">
img {
width: 100%;
}
</style>
<div class="panel panel-default">
<div class="panel-heading">Audit Files &nbsp;&nbsp;&nbsp;
<button class="btn-group btn btn-warning" type="button"
ng-click="passPartnerComplianceFiles()" >PASS
</button>
<button class="btn btn-danger" type="button"
ng-click="">REFUSE
</button>
</p>
</div>
<div class="panel-body">
<div class="form-horizontal">
<div class="form-group">
<label class="control-label col-sm-2">* bank statement</label>
<div class="col-sm-4">
<table>
<tbody>
<tr ng-repeat="file_src in file.client_bank_file track by $index">
<td ng-bind="$index+1+'.'" ALIGN="left" VALIGN="top" class="btn">1</td>
<td><a target="_blank" ng-href="{{file_src.file_value}}">
<img class="col-sm-6" style="border: 1px solid #ddd" ng-src="{{file_src.file_value}}" class="col-sm-8" onerror="this.src='https://static.easyicon.net/preview/118/1184255.gif'">
</a>
<button class="btn btn-success" type="button" ng-if="file_src.status == 1">已通过审核</button>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="form-group">
<label class="control-label col-sm-2">* Certificate of Registration</label>
<div class="col-sm-4">
<table>
<tbody>
<tr ng-repeat="file_src in file.client_company_file track by $index">
<td ng-bind="$index+1+'.'" class="btn">1</td>
<td><a target="_blank" ng-href="{{file_src.file_value}}">
<img class="col-sm-6" style="border: 1px solid #ddd" ng-src="{{file_src.file_value}}" class="col-sm-8" onerror="this.src='https://static.easyicon.net/preview/118/1184255.gif'">
</a>
<button class="btn btn-success" type="button" ng-if="file_src.status == 1">已通过审核</button>
</td>
</tr>
</tbody></table>
</div>
</div>
<div class="form-group">
<label class="control-label col-sm-2">* ID </label>
<div class="col-sm-4">
<table>
<tbody>
<tr ng-repeat="file_src in file.client_id_file track by $index">
<td ng-bind="$index+1+'.'" class="btn">1</td>
<td><a target="_blank" ng-href="{{file_src.file_value}}">
<img class="col-sm-6" style="border: 1px solid #ddd" ng-src="{{file_src.file_value}}" class="col-sm-8" onerror="this.src='https://static.easyicon.net/preview/118/1184255.gif'">
</a>
<button class="btn btn-success" type="button" ng-if="file_src.status == 1">已通过审核</button>
</td>
</tr>
</tbody></table>
</div>
</div>
<div class="form-horizontal">
<div class="form-group">
<label class="control-label col-sm-2">* Agreement</label>
<div class="col-sm-4">
<table>
<tbody>
<tr ng-repeat="file_src in file.client_agree_file track by $index">
<td ng-bind="$index+1+'.'" class="btn">1</td>
<td><a target="_blank" ng-href="{{file_src.file_value}}">
<img class="col-sm-6" style="border: 1px solid #ddd" ng-src="{{file_src.file_value}}" class="col-sm-8" onerror="this.src='https://static.easyicon.net/preview/118/1184255.gif'">
</a>
<button class="btn btn-success" type="button" ng-if="file_src.status == 1">已通过审核</button>
</td>
</tr>
</tbody></table>
</div>
</div>
</div>
</div>
</div>
</div>
<!--<div class="margin-bottom margin-top">-->
<!--<button class="btn-group btn btn-success" type="button" ng-click="updateFile()">Save-->
<!--</button>-->
<!--</div>-->

@ -34,12 +34,11 @@
<table>
<tbody>
<tr ng-repeat="file_src in client_files.client_bank_file.file_value track by $index">
<td ng-bind="$index+1">1</td>
<td ng-bind="$index+1+'.'" ALIGN="left" VALIGN="top" class="btn">1</td>
<td><a ng-if="bankIsImage" target="_blank" ng-href="{{file_src.file_value}}">
<img ng-src="{{file_src.file_value}}" class="col-sm-8">
</a></td>
<td >
<button class="btn-group btn btn-warning" type="button" ng-click="deleteComplianceFiles(file_src.file_id)" ng-if="client_files.client_bank_file.file_write && file_src.status !=1 && file.file_company.status != 0 && file.file_company.status!=1">X</button>
<img class="col-sm-6" style="border: 1px solid #ddd" ng-src="{{file_src.file_value}}" class="col-sm-8" onerror="this.src='https://static.easyicon.net/preview/118/1184255.gif'">
</a>
<button class="btn btn-danger" type="button" ng-click="deleteComplianceFiles(file_src.file_id)" ng-if="client_files.client_bank_file.file_write && file_src.status !=1 && file.file_company.status != 0 && file.file_company.status!=1">X</button>
</td>
</tr>
</tbody>
@ -73,12 +72,11 @@
<img ng-src="{{src}}" class="col-sm-8"></a>-->
<table><tbody>
<tr ng-repeat="file_src in client_files.client_company_file.file_value track by $index">
<td ng-bind="$index+1">1</td>
<td ng-bind="$index+1+'.'" class="btn">1</td>
<td><a ng-if="bankIsImage" target="_blank" ng-href="{{file_src.file_value}}">
<img ng-src="{{file_src.file_value}}" class="col-sm-8">
</a></td>
<td >
<button class="btn-group btn btn-warning" type="button" ng-click="deleteComplianceFiles(file_src.file_id)" ng-if="client_files.client_company_file.file_write && file_src.status !=1 && file.file_company.status != 0 && file.file_company.status!=1">X</button>
</a>
<button class="btn btn-danger" type="button" ng-click="deleteComplianceFiles(file_src.file_id)" ng-if="client_files.client_company_file.file_write && file_src.status !=1 && file.file_company.status != 0 && file.file_company.status!=1">X</button>
</td>
</tr>
</tbody></table>
@ -118,12 +116,11 @@
<table>
<tbody>
<tr ng-repeat="file_src in client_files.client_id_file.file_value track by $index">
<td ng-bind="$index+1">1</td>
<td ng-bind="$index+1+'.'" class="btn">1</td>
<td><a ng-if="bankIsImage" target="_blank" ng-href="{{file_src.file_value}}">
<img ng-src="{{file_src.file_value}}" class="col-sm-8">
</a></td>
<td >
<button class="btn-group btn btn-warning" type="button" ng-click="deleteComplianceFiles(file_src.file_id)" ng-if="client_files.client_id_file.file_write && file_src.status !=1 && file.file_company.status != 0 && file.file_company.status!=1 ">X</button>
</a>
<button class="btn btn-danger" type="button" ng-click="deleteComplianceFiles(file_src.file_id)" ng-if="client_files.client_id_file.file_write && file_src.status !=1 && file.file_company.status != 0 && file.file_company.status!=1 ">X</button>
</td>
</tr>
</tbody></table>
@ -164,12 +161,11 @@
<table>
<tbody>
<tr ng-repeat="file_src in client_files.client_agree_file.file_value track by $index">
<td ng-bind="$index+1">1</td>
<td ng-bind="$index+1+'.'" class="btn">1</td>
<td><a ng-if="bankIsImage" target="_blank" ng-href="{{file_src.file_value}}">
<img ng-src="{{file_src.file_value}}" class="col-sm-8">
</a></td>
<td >
<button class="btn-group btn btn-warning" type="button" ng-click="deleteComplianceFiles(file_src.file_id)" ng-if="client_files.client_agree_file.file_write && file_src.status !=1 && file.file_company.status != 0 && file.file_company.status!=1">X</button>
</a>
<button class="btn btn-danger" type="button" ng-click="deleteComplianceFiles(file_src.file_id)" ng-if="client_files.client_agree_file.file_write && file_src.status !=1 && file.file_company.status != 0 && file.file_company.status!=1">X</button>
</td>
</tr>
</tbody></table>

@ -33,12 +33,12 @@
<table>
<tbody>
<tr ng-repeat="file_src in file.client_bank_file track by $index">
<td ng-bind="$index+1">1</td>
<td ng-bind="$index+1+'.'" ALIGN="left" VALIGN="top" class="btn">1</td>
<td><a ng-if="bankIsImage" target="_blank" ng-href="{{file_src.file_value}}">
<img ng-src="{{file_src.file_value}}" class="col-sm-8">
</a></td>
<td >
<button class="btn-group btn btn-warning" type="button" ng-click="deleteComplianceFiles(file_src.file_id)">X</button>
<img ng-src="{{file_src.file_value}}"class="col-sm-6" style="border: 1px solid #ddd" onerror="this.src='https://static.easyicon.net/preview/118/1184255.gif'">
</a>
<button class="btn btn-danger" type="button" ng-click="deleteComplianceFiles(file_src.file_id)">X</button>
</td>
</tr>
</tbody>
@ -71,12 +71,11 @@
<img ng-src="{{src}}" class="col-sm-8"></a>-->
<table><tbody>
<tr ng-repeat="file_src in file.client_company_file track by $index">
<td ng-bind="$index+1">1</td>
<td ng-bind="$index+1+'.'" class="btn">1</td>
<td><a ng-if="bankIsImage" target="_blank" ng-href="{{file_src.file_value}}">
<img ng-src="{{file_src.file_value}}" class="col-sm-8">
</a></td>
<td >
<button class="btn-group btn btn-warning" type="button" ng-click="deleteComplianceFiles(file_src.file_id)">X</button>
<img ng-src="{{file_src.file_value}}" class="col-sm-6" style="border: 1px solid #ddd" onerror="this.src='https://static.easyicon.net/preview/118/1184255.gif'">
</a>
<button class="btn btn-danger" type="button" ng-click="deleteComplianceFiles(file_src.file_id)">X</button>
</td>
</tr>
</tbody></table>
@ -115,12 +114,11 @@
<table>
<tbody>
<tr ng-repeat="file_src in file.client_id_file track by $index">
<td ng-bind="$index+1">1</td>
<td ng-bind="$index+1+'.'" class="btn">1</td>
<td><a ng-if="bankIsImage" target="_blank" ng-href="{{file_src.file_value}}">
<img ng-src="{{file_src.file_value}}" class="col-sm-8">
</a></td>
<td >
<button class="btn-group btn btn-warning" type="button" ng-click="deleteComplianceFiles(file_src.file_id)">X</button>
<img ng-src="{{file_src.file_value}}" class="col-sm-6" style="border: 1px solid #ddd" onerror="this.src='https://static.easyicon.net/preview/118/1184255.gif'">
</a>
<button class="btn btn-danger" type="button" ng-click="deleteComplianceFiles(file_src.file_id)">X</button>
</td>
</tr>
</tbody></table>
@ -160,12 +158,11 @@
<table>
<tbody>
<tr ng-repeat="file_src in file.client_agree_file track by $index">
<td ng-bind="$index+1">1</td>
<td ng-bind="$index+1+'.'" class="btn">1</td>
<td><a ng-if="bankIsImage" target="_blank" ng-href="{{file_src.file_value}}">
<img ng-src="{{file_src.file_value}}" class="col-sm-8">
</a></td>
<td >
<button class="btn-group btn btn-warning" type="button" ng-click="deleteComplianceFiles(file_src.file_id)">X</button>
<img ng-src="{{file_src.file_value}}" class="col-sm-6" style="border: 1px solid #ddd" onerror="this.src='https://static.easyicon.net/preview/118/1184255.gif'">
</a>
<button class="btn btn-danger" type="button" ng-click="deleteComplianceFiles(file_src.file_id)">X</button>
</td>
</tr>
</tbody></table>
@ -198,12 +195,11 @@
<table>
<tbody>
<tr ng-repeat="file_src in file.client_apply_file track by $index">
<td ng-bind="$index+1">1</td>
<td ng-bind="$index+1+'.'" class="btn">1</td>
<td><a ng-if="bankIsImage" target="_blank" ng-href="{{file_src.file_value}}">
<img ng-src="{{file_src.file_value}}" class="col-sm-8">
</a></td>
<td >
<button class="btn-group btn btn-warning" type="button" ng-click="deleteComplianceFiles(file_src.file_id)">X</button>
<img ng-src="{{file_src.file_value}}"class="col-sm-6" style="border: 1px solid #ddd" onerror="this.src='https://static.easyicon.net/preview/118/1184255.gif'">
</a>
<button class="btn btn-danger" type="button" ng-click="deleteComplianceFiles(file_src.file_id)">X</button>
</td>
</tr>
</tbody></table>

@ -0,0 +1,256 @@
<section class="content-header">
<h1>
<span ng-bind="partner.company_name"></span>
</h1>
</section>
<div class="content">
<div class="row">
<div class="col-sm-12">
<div class="nav-tabs-custom">
<div class="tab-content" ui-view>
<div class="panel panel-default">
<div class="panel-heading">
Partner Basic Information
<span ng-if="partner.apply_approve_result==3||partner.apply_approve_result==4"
style="color: red">(Refused)</span>
<span ng-if="partner.apply_approve_result==2 && partner.client_id" style="color: green">(Pass)</span>
<span class="form-inline" ng-if="('10'|withRole) && partner.apply_approve_result==1" style="color: blue">
({{partner.bd_user_name}} is following)
<div class="form-group"
style="padding-left: 10px">
<div class="form-group">
<ui-select ng-model="choosed.selected" theme="bootstrap" reset-search-input="false" title="Choose a BD"
append-to-body="true" style="min-width: 150px;max-width: 300px">
<ui-select-match placeholder="Select a BD To Follow Up">{{$select.selected.display_name}}</ui-select-match>
<ui-select-choices group-by="'org_name'"
repeat="bd in bds | filter:$select.search">
<div ng-bind-html="bd.display_name | highlight: $select.search"></div>
</ui-select-choices>
</ui-select>
</div>
<button type="button" class="btn btn-success" ng-class="{'disabled':!choosed.selected}"
ng-click="chooseBD(choosed.selected)">Change BD</button>
</div>
</span>
<span style="float: right;margin-top: -7px" class="form-inline"
ng-if="(partner.apply_approve_result==0 && ('10'|withRole))||(partner.apply_approve_result==1 && ('100'|withRole))">
<!--<div uib-dropdown ng-if="partner.apply_approve_result==0 && ('10'|withRole)" class="btn-group pull-right">-->
<!--<button id="single-button" type="button" class="btn btn-success" uib-dropdown-toggle ng-disabled="disabled">-->
<!--Choose BD To Follow Up <span class="caret"></span>-->
<!--</button>-->
<!--<ul class="dropdown-menu" uib-dropdown-menu aria-labelledby="single-button">-->
<!--<li ng-repeat="bd in bds"><a ng-click="chooseBD(bd)">{{bd.display_name}}</a></li>-->
<!--</ul>-->
<!--</div>-->
<div class="form-group">
<a role="button" class="btn btn-danger" ng-click="refuse()">
Refuse
</a>
</div>
<div class="form-group" ng-if="partner.apply_approve_result==0 && ('10'|withRole)"
style="padding-left: 10px">
<div class="form-group">
<ui-select ng-model="choosed.selected" theme="bootstrap" reset-search-input="false" title="Choose a BD"
append-to-body="true" style="min-width: 150px;max-width: 300px">
<ui-select-match placeholder="Select a BD To Follow Up">{{$select.selected.display_name}}</ui-select-match>
<ui-select-choices group-by="'org_name'"
repeat="bd in bds | filter:$select.search">
<div ng-bind-html="bd.display_name | highlight: $select.search"></div>
</ui-select-choices>
</ui-select>
</div>
<button type="button" class="btn btn-success" ng-class="{'disabled':!choosed.selected}"
ng-click="chooseBD(choosed.selected)">Next</button>
</div>
<div class="form-group">
<a ng-click="pass(partner)" ng-if="partner.apply_approve_result==1 && ('100'|withRole)"
role="button" class="btn btn-success">
PASS
</a>
</div>
</span>
</div>
<div class="panel-body">
<div class="form-horizontal">
<div class="form-group">
<label class="control-label col-sm-2">Full Name</label>
<div class="col-sm-10">
<p class="form-control-static" ng-bind="partner.company_name"></p>
</div>
</div>
<div class="form-group">
<label class="control-label col-sm-2">Short Name</label>
<div class="col-sm-10">
<p class="form-control-static" ng-bind="partner.short_name"></p>
</div>
</div>
<div class="form-group">
<label class="control-label col-sm-2">Business License No. (ABN/ACN)</label>
<div class="col-sm-10">
<p class="form-control-static" ng-bind="partner.abn"></p>
</div>
</div>
<!--<div class="form-group">-->
<!--<label class="control-label col-sm-2">Industry</label>-->
<!--<div class="col-sm-10">-->
<!--<p class="form-control-static" ng-bind="partner.industry|partner_industry"></p>-->
<!--</div>-->
<!--</div>-->
<!--<div class="form-group" ng-if="partner.company_email">-->
<!--<label class="control-label col-sm-2">Email Address</label>-->
<!--<div class="col-sm-10">-->
<!--<p class="form-control-static" target="_blank" ng-bind="partner.company_email"></p>-->
<!--</div>-->
<!--</div>-->
<div class="form-group" ng-if="partner.company_website">
<label class="control-label col-sm-2">Website</label>
<div class="col-sm-10">
<a class="form-control-static" target="_blank" ng-bind="partner.company_website"
ng-href="http://{{partner.company_website}}"></a>
</div>
</div>
<div class="form-group">
<label class="control-label col-sm-2">Office Telephone Number</label>
<div class="col-sm-10">
<p class="form-control-static" ng-bind="partner.company_phone||'-'"></p>
</div>
</div>
<!--<div class="form-group col-sm-6">-->
<!--<label class="control-label col-sm-4">Mobile Number (China)</label>-->
<!--<div class="col-sm-8">-->
<!--<p class="form-control-static" ng-bind="partner.mobile_chn||'-'"></p>-->
<!--</div>-->
<!--</div>-->
<!--<div class="form-group col-sm-6">-->
<!--<label class="control-label col-sm-4">Mobile Number (Aus)</label>-->
<!--<div class="col-sm-8">-->
<!--<p class="form-control-static" ng-bind="partner.mobile_aus||'-'"></p>-->
<!--</div>-->
<!--</div>-->
<div class="form-group col-sm-12">
<label class="control-label col-sm-2">Address</label>
<div class="col-sm-10">
<p class="form-control-static" ng-bind="partner.address"></p>
</div>
</div>
<div class="form-group col-sm-6">
<label class="control-label col-sm-4">City</label>
<div class="col-sm-8">
<p class="form-control-static" ng-bind="partner.suburb"></p>
</div>
</div>
<div class="form-group col-sm-6">
<label class="control-label col-sm-4">Post Code</label>
<div class="col-sm-8">
<p class="form-control-static" ng-bind="partner.postcode"></p>
</div>
</div>
<div class="form-group col-sm-6">
<label class="control-label col-sm-4">State</label>
<div class="col-sm-8">
<p class="form-control-static" ng-bind="partner.state||partner_state"></p>
</div>
</div>
<div class="form-group col-sm-6">
<label class="control-label col-sm-4">Country</label>
<div class="col-sm-8">
<p class="form-control-static" ng-bind="partner.country"></p>
</div>
</div>
<div class="form-group col-sm-6">
<label class="control-label col-sm-4">Business category</label>
<div class="col-sm-8">
<p class="form-control-static" ng-bind="(partner.aus_mch_category |aus_mch_category).categoryLabel"></p>
</div>
</div>
<div class="form-group col-sm-6">
<label class="control-label col-sm-4">Business industry</label>
<div class="col-sm-8">
<p class="form-control-static" ng-bind="(partner.aus_mch_category |aus_mch_category).industryLabel"></p>
</div>
</div>
</div>
</div>
</div>
<!--end 商户基本资料-->
<div class="panel panel-default">
<div class="panel-heading">Contact Information</div>
<div class="panel-body">
<div class="form-horizontal">
<div class="form-group col-sm-12">
<label class="control-label col-sm-2">Contact Person</label>
<div class="col-sm-10">
<p class="form-control-static" ng-bind="partner.contact_person"></p>
</div>
</div>
<!--<div class="form-group col-sm-6">-->
<!--<label class="control-label col-sm-4">Job Title</label>-->
<!--<div class="col-sm-8">-->
<!--<p class="form-control-static" ng-bind="partner.contact_person_job"></p>-->
<!--</div>-->
<!--</div>-->
<div class="form-group col-sm-6">
<label class="control-label col-sm-4">Telephone No.</label>
<div class="col-sm-8">
<p class="form-control-static" ng-bind="partner.contact_phone"></p>
</div>
</div>
<div class="form-group col-sm-6">
<label class="control-label col-sm-4">E-mail</label>
<div class="col-sm-8">
<p class="form-control-static" ng-bind="partner.contact_email"></p>
</div>
</div>
</div>
</div>
</div>
<!--end 商户联系资料-->
<div class="panel panel-default" ng-if="partner.apply_approve_result>0">
<div class="panel-heading">Approaching Progress </div>
<div class="panel-body">
<div class="form-horizontal">
<div class="form-group col-sm-12">
<div class="col-sm-12" ng-if="('100'|withRole)">
<textarea class="form-control" ng-model="partner.remark" name="remark"
id="remark-input" maxlength="500"></textarea>
<a ng-if="('100'|withRole)" class="btn btn-success" role="button" ng-click="updateRemark()">Save</a>
</div>
<div class="col-sm-12" ng-if="partner.apply_approve_result>0 && ('10'|withRole)">
<p class="form-control-static" ng-bind="partner.remark"></p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>

@ -0,0 +1,85 @@
<section class="content-header">
<h1>商户合规文件审核</h1>
<ol class="breadcrumb">
<li>
<i class="fa fa-sitemap"></i> Compliance Management
</li>
<li class="active">商户合规文件审核</li>
</ol>
</section>
<!--<ul class="nav nav-tabs">
<li ui-sref-active-eq="active" class="active">
<a ui-sref="contract">Contract</a>
</li>
<li ui-sref-active-eq="active" class="active">
<a ui-sref="manual_settle">Manual Settle</a>
</li>
</ul>
<br>-->
<div class="box box-danger">
<div class="modal-body">
<div class="form-inline">
<div class="form-group">
<label class="control-label" for="title-search">Partner Code</label>
<input class="form-control" id="title-search" ng-model="params.client_moniker">
</div>
<div class="form-group">
<button class="btn btn-primary" type="button" ng-click="loadClientCompliance(1)"><i
class="fa fa-search"></i></button>
</div>
</div>
</div>
</div>
<div class="box box-danger">
<div class="modal-body">
<div class="box-body table-responsive">
<table class="table table-bordered table-striped table-hover">
<thead>
<tr>
<th>Client Moniker</th>
<th>Compliance Id</th>
<th>Create Time</th>
<th>Compliance Status</th>
<th>Operator Id</th>
<th>Refuse Reason</th>
<th>Operation</th>
</tr>
</thead>
<tbody>
<tr ng-repeat="compliance_company in compliances">
<td ng-bind="compliance_company.client_id"></td>
<td ng-bind="compliance_company.compliance_id"></td>
<td ng-bind="compliance_company.create_time|date:'dd/MMM/yyyy'"></td>
<td ng-bind="compliance_company.status"></td>
<td ng-bind="compliance_company.operator_id"></td>
<td ng-bind="compliance_company.description"></td>
<td><a class="text-primary" role="button" title="Detail"
ui-sref="partner_apply.compliance_detail({client_id:compliance_company.client_id})"
<i class="fa fa-search"></i> Detail
</a></td>
<!--({client_id:compliance_company.client_id})-->
</tr>
</tbody>
</table>
</div>
<div class="modal-footer">
<uib-pagination ng-if="compliances.length"
class="pagination"
total-items="pagination.totalCount"
boundary-links="true"
ng-model="pagination.page"
items-per-page="pagination.limit"
max-size="10"
ng-change="getContractAnalysis()"
previous-text="&lsaquo;"
next-text="&rsaquo;"
first-text="&laquo;"
last-text="&raquo;"></uib-pagination>
</div>
</div>
</div>
Loading…
Cancel
Save