Merge remote-tracking branch 'origin/develop' into develop

master
yixian 7 years ago
commit 489ef0ed4d

@ -5,12 +5,12 @@
<parent> <parent>
<groupId>au.com.royalpay.payment</groupId> <groupId>au.com.royalpay.payment</groupId>
<artifactId>payment-parent</artifactId> <artifactId>payment-parent</artifactId>
<version>1.1.0</version> <version>1.1.1</version>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<artifactId>manage</artifactId> <artifactId>manage</artifactId>
<version>1.2.0</version> <version>1.2.6</version>
<properties> <properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

@ -198,7 +198,7 @@ public class BDAnalysisServiceImpl implements BDAnalysisService {
List<JSONObject> bdSaleList = bdAnalysisMapper.getOneDayBDSaleList(params); List<JSONObject> bdSaleList = bdAnalysisMapper.getOneDayBDSaleList(params);
if (bdSaleList.size() != 0) { if (bdSaleList.size() != 0) {
for (JSONObject item : bdSaleList) { for (JSONObject item : bdSaleList) {
JSONObject existBDSalesReport = bdSalesReportMapper.findByBDIdAndLogDate(item.getString("bd_id"),beginTime,0); JSONObject existBDSalesReport = bdSalesReportMapper.findByBDIdAndLogDate(item.getString("org_id"),item.getString("bd_id"),beginTime,0);
if(existBDSalesReport==null){ if(existBDSalesReport==null){
JSONObject object = new JSONObject(item); JSONObject object = new JSONObject(item);
object.put("log_id", UUID.randomUUID().toString()); object.put("log_id", UUID.randomUUID().toString());
@ -216,7 +216,7 @@ public class BDAnalysisServiceImpl implements BDAnalysisService {
List<JSONObject> orgSaleList= transactionAnalysisMapper.getOneDayOrgMerchantSaleList(params); List<JSONObject> orgSaleList= transactionAnalysisMapper.getOneDayOrgMerchantSaleList(params);
if (orgSaleList.size() != 0) { if (orgSaleList.size() != 0) {
for (JSONObject item : orgSaleList) { for (JSONObject item : orgSaleList) {
JSONObject existOrgSalesReport = bdSalesReportMapper.findByBDIdAndLogDate(item.getString("bd_id"),beginTime,1); JSONObject existOrgSalesReport = bdSalesReportMapper.findByBDIdAndLogDate(item.getString("org_id"),item.getString("bd_id"),beginTime,1);
if(existOrgSalesReport==null){ if(existOrgSalesReport==null){
JSONObject object = new JSONObject(item); JSONObject object = new JSONObject(item);
object.put("log_id", UUID.randomUUID().toString()); object.put("log_id", UUID.randomUUID().toString());

@ -208,5 +208,5 @@ public interface RetailAppService {
void deleteGreenChannelAuthFiles(JSONObject device, String filesInfo); void deleteGreenChannelAuthFiles(JSONObject device, String filesInfo);
void commitAuthFilesToCompliance(JSONObject device); void commitAuthFilesToCompliance(JSONObject device,JSONObject photoInfo);
} }

@ -49,6 +49,7 @@ import au.com.royalpay.payment.tools.device.message.AppMsgSender;
import au.com.royalpay.payment.tools.device.support.DeviceRegister; import au.com.royalpay.payment.tools.device.support.DeviceRegister;
import au.com.royalpay.payment.tools.env.PlatformEnvironment; import au.com.royalpay.payment.tools.env.PlatformEnvironment;
import au.com.royalpay.payment.tools.env.RequestEnvironment; import au.com.royalpay.payment.tools.env.RequestEnvironment;
import au.com.royalpay.payment.tools.env.SysConfigManager;
import au.com.royalpay.payment.tools.exceptions.BadRequestException; import au.com.royalpay.payment.tools.exceptions.BadRequestException;
import au.com.royalpay.payment.tools.exceptions.ForbiddenException; import au.com.royalpay.payment.tools.exceptions.ForbiddenException;
import au.com.royalpay.payment.tools.exceptions.NotFoundException; import au.com.royalpay.payment.tools.exceptions.NotFoundException;
@ -208,6 +209,8 @@ public class RetailAppServiceImp implements RetailAppService {
@Resource @Resource
private ClientBankAccountMapper clientBankAccountMapper; private ClientBankAccountMapper clientBankAccountMapper;
@Resource @Resource
private SysConfigManager sysConfigManager;
@Resource
private StringRedisTemplate stringRedisTemplate; private StringRedisTemplate stringRedisTemplate;
private final String CBBANK_AGGREGATE_FILE = "https://file.royalpay.com.au/open/2019/08/05/1564972204689_uwZvpTBjtLUMcN8c540xcZvux1Rd3O.pdf"; private final String CBBANK_AGGREGATE_FILE = "https://file.royalpay.com.au/open/2019/08/05/1564972204689_uwZvpTBjtLUMcN8c540xcZvux1Rd3O.pdf";
private final String IMG_AGGREGATE_FILE = "https://file.royalpay.com.au/open/2019/08/22/1566440384256_R7Jc3cl5JPZsmVznKffzStwVMELwsl.pdf"; private final String IMG_AGGREGATE_FILE = "https://file.royalpay.com.au/open/2019/08/22/1566440384256_R7Jc3cl5JPZsmVznKffzStwVMELwsl.pdf";
@ -2269,6 +2272,8 @@ public class RetailAppServiceImp implements RetailAppService {
client.put("wechat_rate", weChatRate.getBigDecimal("rate_value").setScale(2, BigDecimal.ROUND_DOWN)); client.put("wechat_rate", weChatRate.getBigDecimal("rate_value").setScale(2, BigDecimal.ROUND_DOWN));
client.put("clean", "T+" + weChatRate.getString("clean_days")); client.put("clean", "T+" + weChatRate.getString("clean_days"));
client.put("clean_days", weChatRate.getString("clean_days")); client.put("clean_days", weChatRate.getString("clean_days"));
String rateConfig = sysConfigManager.getSysConfig().getString("sys_rates");
JSONObject sysConfigRate = JSONObject.parseObject(rateConfig);
try { try {
JSONObject alipayRate = merchantInfoProvider.clientCurrentRate(client.getIntValue("client_id"), new Date(), "Alipay"); JSONObject alipayRate = merchantInfoProvider.clientCurrentRate(client.getIntValue("client_id"), new Date(), "Alipay");
@ -2276,16 +2281,6 @@ public class RetailAppServiceImp implements RetailAppService {
client.put("alipay_rate", alipayRate.getBigDecimal("rate_value").setScale(2, BigDecimal.ROUND_DOWN)); client.put("alipay_rate", alipayRate.getBigDecimal("rate_value").setScale(2, BigDecimal.ROUND_DOWN));
} }
JSONObject bestPayRate = merchantInfoProvider.clientCurrentRate(client.getIntValue("client_id"), new Date(), "Bestpay");
if (bestPayRate != null) {
client.put("bestpay_rate", bestPayRate.getBigDecimal("rate_value").setScale(2, BigDecimal.ROUND_DOWN));
}
JSONObject jdRate = merchantInfoProvider.clientCurrentRate(client.getIntValue("client_id"), new Date(), "jd");
if (jdRate != null) {
client.put("jd_rate", jdRate.getBigDecimal("rate_value").setScale(2, BigDecimal.ROUND_DOWN));
}
JSONObject alipayOnlineRate = merchantInfoProvider.clientCurrentRate(client.getIntValue("client_id"), new Date(), "AlipayOnline"); JSONObject alipayOnlineRate = merchantInfoProvider.clientCurrentRate(client.getIntValue("client_id"), new Date(), "AlipayOnline");
if (alipayOnlineRate != null) { if (alipayOnlineRate != null) {
client.put("alipay_online_rate", alipayOnlineRate.getBigDecimal("rate_value").setScale(2, BigDecimal.ROUND_DOWN)); client.put("alipay_online_rate", alipayOnlineRate.getBigDecimal("rate_value").setScale(2, BigDecimal.ROUND_DOWN));
@ -2299,6 +2294,22 @@ public class RetailAppServiceImp implements RetailAppService {
throw new BadRequestException("Merchant Rate Not Configure,Please Contact Customer Service"); throw new BadRequestException("Merchant Rate Not Configure,Please Contact Customer Service");
} }
try {
JSONObject bestPayRate = merchantInfoProvider.clientCurrentRate(client.getIntValue("client_id"), new Date(), "Bestpay");
if (bestPayRate != null) {
client.put("bestpay_rate", bestPayRate.getBigDecimal("rate_value").setScale(2, BigDecimal.ROUND_DOWN));
}
JSONObject jdRate = merchantInfoProvider.clientCurrentRate(client.getIntValue("client_id"), new Date(), "jd");
if (jdRate != null) {
client.put("jd_rate", jdRate.getBigDecimal("rate_value").setScale(2, BigDecimal.ROUND_DOWN));
}
} catch (Exception ignored) {
JSONObject rate = sysConfigRate.getJSONObject("t" + weChatRate.getString("clean_days"));
client.put("bestpay_rate", rate.getBigDecimal("Bestpay").setScale(2, BigDecimal.ROUND_DOWN));
client.put("jd_rate", rate.getBigDecimal("JDpay").setScale(2, BigDecimal.ROUND_DOWN));
}
JSONObject bankAccount = getBankAccountByClientId(client.getIntValue("client_id")); JSONObject bankAccount = getBankAccountByClientId(client.getIntValue("client_id"));
if (bankAccount == null || bankAccount.size() <= 0) { if (bankAccount == null || bankAccount.size() <= 0) {
throw new BadRequestException("The Partner's Account is not config!"); throw new BadRequestException("The Partner's Account is not config!");
@ -2349,11 +2360,12 @@ public class RetailAppServiceImp implements RetailAppService {
} }
@Override @Override
public void commitAuthFilesToCompliance(JSONObject device) { public void commitAuthFilesToCompliance(JSONObject device, JSONObject photoInfo) {
String clientType = device.getString("client_type"); String clientType = device.getString("client_type");
deviceSupport.findRegister(clientType); deviceSupport.findRegister(clientType);
JSONObject client = clientManager.getClientInfo(device.getIntValue("client_id")); JSONObject client = clientManager.getClientInfo(device.getIntValue("client_id"));
JSONObject account = clientAccountMapper.findById(device.getString("account_id")); JSONObject account = clientAccountMapper.findById(device.getString("account_id"));
account.put("photo_info", photoInfo);
clientManager.commitAuthFilesToCompliance(client.getString("client_moniker"), account,"App"); clientManager.commitAuthFilesToCompliance(client.getString("client_moniker"), account,"App");
} }

@ -781,7 +781,16 @@ public class RetailAppController {
*/ */
@RequestMapping(value = "/client/auth_file/commit_to_compliance", method = RequestMethod.POST) @RequestMapping(value = "/client/auth_file/commit_to_compliance", method = RequestMethod.POST)
public void commitToComplianceAuthFiles(@ModelAttribute(CommonConsts.RETAIL_DEVICE) JSONObject device){ public void commitToComplianceAuthFiles(@ModelAttribute(CommonConsts.RETAIL_DEVICE) JSONObject device){
retailAppService.commitAuthFilesToCompliance(device); retailAppService.commitAuthFilesToCompliance(device, null);
} }
/**
* 提交审核
* @param device
* @params photoInfo 图片或网站
*/
@RequestMapping(value = "/client/auth_file/commit_to_compliance_new", method = RequestMethod.POST)
public void commitToComplianceAuthFiles(@ModelAttribute(CommonConsts.RETAIL_DEVICE) JSONObject device, @RequestBody JSONObject photoInfo){
retailAppService.commitAuthFilesToCompliance(device, photoInfo);
}
} }

@ -6,6 +6,8 @@ import au.com.royalpay.payment.manage.complianceAudit.bean.ClientComplianceQuery
import au.com.royalpay.payment.manage.complianceAudit.core.ClientComplianceApply; import au.com.royalpay.payment.manage.complianceAudit.core.ClientComplianceApply;
import au.com.royalpay.payment.manage.mappers.system.ClientComplianceCompanyMapper; import au.com.royalpay.payment.manage.mappers.system.ClientComplianceCompanyMapper;
import au.com.royalpay.payment.manage.mappers.system.ClientFilesMapper; import au.com.royalpay.payment.manage.mappers.system.ClientFilesMapper;
import au.com.royalpay.payment.manage.mappers.system.ClientMapper;
import au.com.royalpay.payment.manage.merchants.core.ClientManager;
import au.com.royalpay.payment.tools.exceptions.BadRequestException; import au.com.royalpay.payment.tools.exceptions.BadRequestException;
import au.com.royalpay.payment.tools.permission.enums.ManagerRole; import au.com.royalpay.payment.tools.permission.enums.ManagerRole;
import au.com.royalpay.payment.tools.utils.PageListUtils; import au.com.royalpay.payment.tools.utils.PageListUtils;
@ -13,6 +15,7 @@ import com.alibaba.fastjson.JSONObject;
import com.github.miemiedev.mybatis.paginator.domain.Order; import com.github.miemiedev.mybatis.paginator.domain.Order;
import com.github.miemiedev.mybatis.paginator.domain.PageBounds; import com.github.miemiedev.mybatis.paginator.domain.PageBounds;
import com.github.miemiedev.mybatis.paginator.domain.PageList; import com.github.miemiedev.mybatis.paginator.domain.PageList;
import org.apache.commons.lang3.StringUtils;
import org.omg.CORBA.SystemException; import org.omg.CORBA.SystemException;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
@ -31,6 +34,10 @@ public class ClientComplianceApplyImpl implements ClientComplianceApply
private ClientComplianceCompanyMapper clientComplianceCompanyMapper; private ClientComplianceCompanyMapper clientComplianceCompanyMapper;
@Resource @Resource
private ClientFilesMapper clientFilesMapper; private ClientFilesMapper clientFilesMapper;
@Resource
private ClientManager clientManager;
@Resource
private ClientMapper clientMapper;
@Override @Override
public JSONObject listClientComplianceApply(JSONObject manager, ClientComplianceQuery applyQuery) { public JSONObject listClientComplianceApply(JSONObject manager, ClientComplianceQuery applyQuery) {
@ -88,6 +95,24 @@ public class ClientComplianceApplyImpl implements ClientComplianceApply
complianceDetail.put("description",' '); complianceDetail.put("description",' ');
clientComplianceCompanyMapper.update(complianceDetail); clientComplianceCompanyMapper.update(complianceDetail);
clientFilesMapper.passCompliance(clientId); clientFilesMapper.passCompliance(clientId);
JSONObject client = clientManager.getClientInfo(clientId);
boolean clientChanged = false;
if (StringUtils.isNotBlank(complianceDetail.getString("company_photo"))) {
client.put("company_photo", complianceDetail.getString("company_photo"));
clientChanged = true;
}
if (StringUtils.isNotBlank(complianceDetail.getString("store_photo"))) {
client.put("store_photo", complianceDetail.getString("store_photo"));
clientChanged = true;
}
if (StringUtils.isNotBlank(complianceDetail.getString("company_website"))) {
client.put("company_website", complianceDetail.getString("company_website"));
clientChanged = true;
}
if (clientChanged) {
clientMapper.update(client);
}
} }
@Override @Override

@ -275,6 +275,17 @@ public class TestController implements ApplicationEventPublisherAware {
return list.isEmpty() ? new JSONObject() : list.get(0); return list.isEmpty() ? new JSONObject() : list.get(0);
} }
@ManagerMapping(value = "/fix_transaction/{orderId}", method = RequestMethod.GET, role = ManagerRole.DEVELOPER)
public void fixTransactionsByOrderId(@PathVariable String orderId) {
JSONObject order = orderMapper.find(orderId);
try {
String orderChannel = StringUtils.defaultIfEmpty(order.getString("order_channel"), order.getString("channel"));
paymentApi.checkOrderStatus(order.getString("order_id"), orderChannel, true);
} catch (Exception e) {
logger.error("fix transaction error:" + order.getString("order_id"));
}
}
@ManagerMapping(value = "/fix_transaction", method = RequestMethod.PUT, role = ManagerRole.DEVELOPER) @ManagerMapping(value = "/fix_transaction", method = RequestMethod.PUT, role = ManagerRole.DEVELOPER)
public void fixTransactions() { public void fixTransactions() {
List<JSONObject> orders = orderMapper.listOrdersWithNoTransactions(); List<JSONObject> orders = orderMapper.listOrdersWithNoTransactions();

@ -22,7 +22,7 @@ public interface StatisticsBDSalesReportMapper {
List<JSONObject> getPartnerAmountList(JSONObject params); List<JSONObject> getPartnerAmountList(JSONObject params);
JSONObject findByBDIdAndLogDate(@Param("bd_id") String bd_id, @Param("log_date")Date beginTime,@Param("isOrg") int isOrg); JSONObject findByBDIdAndLogDate(@Param("org_id") String org_id,@Param("bd_id") String bd_id, @Param("log_date")Date beginTime,@Param("isOrg") int isOrg);
@AutoSql(type = SqlType.UPDATE) @AutoSql(type = SqlType.UPDATE)
void update(JSONObject existBDSalesReport); void update(JSONObject existBDSalesReport);

@ -6,6 +6,7 @@ import cn.yixblog.support.mybatis.autosql.annotations.AutoSql;
import cn.yixblog.support.mybatis.autosql.annotations.SqlType; import cn.yixblog.support.mybatis.autosql.annotations.SqlType;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import org.springframework.core.annotation.Order;
import java.util.List; import java.util.List;
@ -32,8 +33,6 @@ public interface ClientFilesMapper {
@AdvanceSelect(addonWhereClause = "is_valid = 1 and (status = 0 or status = 3) and file_name='client_agree_file'") @AdvanceSelect(addonWhereClause = "is_valid = 1 and (status = 0 or status = 3) and file_name='client_agree_file'")
List<JSONObject> findClientAggreeFileCommit(@Param("client_id") int clientId); List<JSONObject> findClientAggreeFileCommit(@Param("client_id") int clientId);
@AutoSql(type = SqlType.SELECT)
@AdvanceSelect(addonWhereClause = "is_valid = 1")
List<JSONObject> findAllClientFile(@Param("client_id") int clientId); List<JSONObject> findAllClientFile(@Param("client_id") int clientId);
@AutoSql(type = SqlType.SELECT) @AutoSql(type = SqlType.SELECT)

@ -2036,7 +2036,24 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid
throw new InvalidShortIdException(); throw new InvalidShortIdException();
} }
JSONObject file = signInAccountService.checkAuthFileStatus(client); JSONObject file = signInAccountService.checkAuthFileStatus(client);
file.put("file_company", clientComplianceCompanyMapper.findFileByClientId(account.getIntValue("client_id"))); JSONObject compliance = clientComplianceCompanyMapper.findFileByClientId(account.getIntValue("client_id"));
file.put("file_company", compliance);
JSONObject photoInfo = new JSONObject();
photoInfo.put("company_photo", client.getString("company_photo"));
photoInfo.put("store_photo", client.getString("store_photo"));
photoInfo.put("web_site", client.getString("company_website"));
if (compliance != null) {
if (StringUtils.isNotBlank(compliance.getString("company_photo"))) {
photoInfo.put("company_photo", compliance.getString("company_photo"));
}
if (StringUtils.isNotBlank(compliance.getString("store_photo"))) {
photoInfo.put("store_photo", compliance.getString("store_photo"));
}
if (StringUtils.isNotBlank(compliance.getString("company_website"))) {
photoInfo.put("web_site", compliance.getString("company_website"));
}
}
file.put("photo_info", photoInfo);
return file; return file;
} }
@ -2066,6 +2083,8 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid
client.put("wechat_rate", weChatRate.getBigDecimal("rate_value").setScale(2, BigDecimal.ROUND_DOWN)); client.put("wechat_rate", weChatRate.getBigDecimal("rate_value").setScale(2, BigDecimal.ROUND_DOWN));
client.put("clean", "T+" + weChatRate.getString("clean_days")); client.put("clean", "T+" + weChatRate.getString("clean_days"));
client.put("clean_days", weChatRate.getString("clean_days")); client.put("clean_days", weChatRate.getString("clean_days"));
String rateConfig = sysConfigManager.getSysConfig().getString("sys_rates");
JSONObject sysConfigRate = JSONObject.parseObject(rateConfig);
try { try {
JSONObject alipayRate = merchantInfoProvider.clientCurrentRate(client.getIntValue("client_id"), new Date(), "Alipay"); JSONObject alipayRate = merchantInfoProvider.clientCurrentRate(client.getIntValue("client_id"), new Date(), "Alipay");
@ -2073,16 +2092,6 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid
client.put("alipay_rate", alipayRate.getBigDecimal("rate_value").setScale(2, BigDecimal.ROUND_DOWN)); client.put("alipay_rate", alipayRate.getBigDecimal("rate_value").setScale(2, BigDecimal.ROUND_DOWN));
} }
JSONObject bestPayRate = merchantInfoProvider.clientCurrentRate(client.getIntValue("client_id"), new Date(), "Bestpay");
if (bestPayRate != null) {
client.put("bestpay_rate", bestPayRate.getBigDecimal("rate_value").setScale(2, BigDecimal.ROUND_DOWN));
}
JSONObject jdRate = merchantInfoProvider.clientCurrentRate(client.getIntValue("client_id"), new Date(), "jd");
if (jdRate != null) {
client.put("jd_rate", jdRate.getBigDecimal("rate_value").setScale(2, BigDecimal.ROUND_DOWN));
}
JSONObject alipayOnlineRate = merchantInfoProvider.clientCurrentRate(client.getIntValue("client_id"), new Date(), "AlipayOnline"); JSONObject alipayOnlineRate = merchantInfoProvider.clientCurrentRate(client.getIntValue("client_id"), new Date(), "AlipayOnline");
if (alipayOnlineRate != null) { if (alipayOnlineRate != null) {
client.put("alipay_online_rate", alipayOnlineRate.getBigDecimal("rate_value").setScale(2, BigDecimal.ROUND_DOWN)); client.put("alipay_online_rate", alipayOnlineRate.getBigDecimal("rate_value").setScale(2, BigDecimal.ROUND_DOWN));
@ -2093,7 +2102,23 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid
client.put("cbbank_rate", cbBankPayRate.getBigDecimal("rate_value").setScale(2, BigDecimal.ROUND_DOWN)); client.put("cbbank_rate", cbBankPayRate.getBigDecimal("rate_value").setScale(2, BigDecimal.ROUND_DOWN));
} }
} catch (Exception ignored) { } catch (Exception ignored) {
throw new BadRequestException("Merchant Rate Not Configure"); throw new BadRequestException("Merchant Rate Not Configure,Please Contact Customer Service");
}
try {
JSONObject bestPayRate = merchantInfoProvider.clientCurrentRate(client.getIntValue("client_id"), new Date(), "Bestpay");
if (bestPayRate != null) {
client.put("bestpay_rate", bestPayRate.getBigDecimal("rate_value").setScale(2, BigDecimal.ROUND_DOWN));
}
JSONObject jdRate = merchantInfoProvider.clientCurrentRate(client.getIntValue("client_id"), new Date(), "jd");
if (jdRate != null) {
client.put("jd_rate", jdRate.getBigDecimal("rate_value").setScale(2, BigDecimal.ROUND_DOWN));
}
} catch (Exception ignored) {
JSONObject rate = sysConfigRate.getJSONObject("t" + weChatRate.getString("clean_days"));
client.put("bestpay_rate", rate.getBigDecimal("Bestpay").setScale(2, BigDecimal.ROUND_DOWN));
client.put("jd_rate", rate.getBigDecimal("JDpay").setScale(2, BigDecimal.ROUND_DOWN));
} }
JSONObject bankAccount = getBankAccountByClientId(client.getIntValue("client_id")); JSONObject bankAccount = getBankAccountByClientId(client.getIntValue("client_id"));
@ -2940,7 +2965,7 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid
file.put("file_id", existFile.getString("file_id")); file.put("file_id", existFile.getString("file_id"));
clientFilesMapper.update(file); clientFilesMapper.update(file);
} }
if (!renewal && client.getIntValue("source") != 4) { if (!renewal) {
clientModifySupport.processClientModify(new OpenStatusModify(manager, clientMoniker, 2)); clientModifySupport.processClientModify(new OpenStatusModify(manager, clientMoniker, 2));
} }
@ -3329,6 +3354,10 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid
@Transactional @Transactional
public void commitAuthFilesToCompliance(String clientMoniker, JSONObject account, String source) { public void commitAuthFilesToCompliance(String clientMoniker, JSONObject account, String source) {
JSONObject client = getClientInfoByMoniker(clientMoniker); JSONObject client = getClientInfoByMoniker(clientMoniker);
String clientPayType = "";
String companyPhoto = "";
String storePhoto= "";
String webSite= "";
int sourceEnum = 2; int sourceEnum = 2;
if (client == null) { if (client == null) {
throw new InvalidShortIdException(); throw new InvalidShortIdException();
@ -3353,13 +3382,21 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid
if ("app".equals(source.toLowerCase())) { if ("app".equals(source.toLowerCase())) {
sourceEnum = 1; sourceEnum = 1;
} }
JSONObject photoInfo = account.getJSONObject("photo_info");
if (photoInfo != null) {
companyPhoto = photoInfo.getString("company_photo");
storePhoto = photoInfo.getString("store_photo");
webSite = photoInfo.getString("web_site");
}
JSONObject fileComp = clientComplianceCompanyMapper.findFileByClientId(client.getIntValue("client_id")); JSONObject fileComp = clientComplianceCompanyMapper.findFileByClientId(client.getIntValue("client_id"));
if (fileComp == null) { if (fileComp == null) {
fileComp = new JSONObject(); fileComp = new JSONObject();
fileComp.put("client_id", client.getIntValue("client_id")); fileComp.put("client_id", client.getIntValue("client_id"));
fileComp.put("submit_time", new Date()); fileComp.put("submit_time", new Date());
fileComp.put("status", 0); fileComp.put("status", 0);
fileComp.put("company_photo", companyPhoto);
fileComp.put("store_photo", storePhoto);
fileComp.put("company_website", webSite);
fileComp.put("source", sourceEnum); fileComp.put("source", sourceEnum);
fileComp.put("commit_by_id", account.getString("account_id")); fileComp.put("commit_by_id", account.getString("account_id"));
clientComplianceCompanyMapper.save(fileComp); clientComplianceCompanyMapper.save(fileComp);
@ -3367,6 +3404,9 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid
} else if (fileComp.getIntValue("status") == 2) { } else if (fileComp.getIntValue("status") == 2) {
fileComp.put("status", 0); fileComp.put("status", 0);
fileComp.put("submit_time", new Date()); fileComp.put("submit_time", new Date());
fileComp.put("company_photo", companyPhoto);
fileComp.put("store_photo", storePhoto);
fileComp.put("company_website", webSite);
fileComp.put("source", sourceEnum); fileComp.put("source", sourceEnum);
fileComp.put("commit_by_id", account.getString("account_id")); fileComp.put("commit_by_id", account.getString("account_id"));
clientComplianceCompanyMapper.update(fileComp); clientComplianceCompanyMapper.update(fileComp);
@ -3403,6 +3443,8 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid
client.put("wechat_rate", weChatRate.getBigDecimal("rate_value").setScale(2, BigDecimal.ROUND_DOWN)); client.put("wechat_rate", weChatRate.getBigDecimal("rate_value").setScale(2, BigDecimal.ROUND_DOWN));
client.put("clean", "T+" + weChatRate.getString("clean_days")); client.put("clean", "T+" + weChatRate.getString("clean_days"));
client.put("clean_days", weChatRate.getString("clean_days")); client.put("clean_days", weChatRate.getString("clean_days"));
String rateConfig = sysConfigManager.getSysConfig().getString("sys_rates");
JSONObject sysConfigRate = JSONObject.parseObject(rateConfig);
try { try {
JSONObject alipayRate = merchantInfoProvider.clientCurrentRate(client.getIntValue("client_id"), new Date(), "Alipay"); JSONObject alipayRate = merchantInfoProvider.clientCurrentRate(client.getIntValue("client_id"), new Date(), "Alipay");
@ -3410,16 +3452,6 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid
client.put("alipay_rate", alipayRate.getBigDecimal("rate_value").setScale(2, BigDecimal.ROUND_DOWN)); client.put("alipay_rate", alipayRate.getBigDecimal("rate_value").setScale(2, BigDecimal.ROUND_DOWN));
} }
JSONObject bestPayRate = merchantInfoProvider.clientCurrentRate(client.getIntValue("client_id"), new Date(), "Bestpay");
if (bestPayRate != null) {
client.put("bestpay_rate", bestPayRate.getBigDecimal("rate_value").setScale(2, BigDecimal.ROUND_DOWN));
}
JSONObject jdRate = merchantInfoProvider.clientCurrentRate(client.getIntValue("client_id"), new Date(), "jd");
if (jdRate != null) {
client.put("jd_rate", jdRate.getBigDecimal("rate_value").setScale(2, BigDecimal.ROUND_DOWN));
}
JSONObject alipayOnlineRate = merchantInfoProvider.clientCurrentRate(client.getIntValue("client_id"), new Date(), "AlipayOnline"); JSONObject alipayOnlineRate = merchantInfoProvider.clientCurrentRate(client.getIntValue("client_id"), new Date(), "AlipayOnline");
if (alipayOnlineRate != null) { if (alipayOnlineRate != null) {
client.put("alipay_online_rate", alipayOnlineRate.getBigDecimal("rate_value").setScale(2, BigDecimal.ROUND_DOWN)); client.put("alipay_online_rate", alipayOnlineRate.getBigDecimal("rate_value").setScale(2, BigDecimal.ROUND_DOWN));
@ -3430,7 +3462,23 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid
client.put("cbbank_rate", cbBankPayRate.getBigDecimal("rate_value").setScale(2, BigDecimal.ROUND_DOWN)); client.put("cbbank_rate", cbBankPayRate.getBigDecimal("rate_value").setScale(2, BigDecimal.ROUND_DOWN));
} }
} catch (Exception ignored) { } catch (Exception ignored) {
throw new BadRequestException("Merchant Rate Not Configure"); throw new BadRequestException("Merchant Rate Not Configure,Please Contact Customer Service");
}
try {
JSONObject bestPayRate = merchantInfoProvider.clientCurrentRate(client.getIntValue("client_id"), new Date(), "Bestpay");
if (bestPayRate != null) {
client.put("bestpay_rate", bestPayRate.getBigDecimal("rate_value").setScale(2, BigDecimal.ROUND_DOWN));
}
JSONObject jdRate = merchantInfoProvider.clientCurrentRate(client.getIntValue("client_id"), new Date(), "jd");
if (jdRate != null) {
client.put("jd_rate", jdRate.getBigDecimal("rate_value").setScale(2, BigDecimal.ROUND_DOWN));
}
} catch (Exception ignored) {
JSONObject rate = sysConfigRate.getJSONObject("t" + weChatRate.getString("clean_days"));
client.put("bestpay_rate", rate.getBigDecimal("Bestpay").setScale(2, BigDecimal.ROUND_DOWN));
client.put("jd_rate", rate.getBigDecimal("JDpay").setScale(2, BigDecimal.ROUND_DOWN));
} }
JSONObject bankAccount = getBankAccountByClientId(client.getIntValue("client_id")); JSONObject bankAccount = getBankAccountByClientId(client.getIntValue("client_id"));
@ -4129,7 +4177,7 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid
transactions.forEach(e -> { transactions.forEach(e -> {
if ("Credit".equals(e.getString("type")) && !"settle revoke".equals(e.getString("remark"))) { if ("Credit".equals(e.getString("type")) && !"settle revoke".equals(e.getString("remark"))) {
JSONObject manager = managerMapper.findDetail(e.getString("operation")); JSONObject manager = managerMapper.findDetail(e.getString("operation"));
e.put("operator_displayname", manager.getString("display_name")); e.put("operator", manager.getString("display_name"));
} }
}); });
return transactions; return transactions;
@ -4150,7 +4198,14 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid
if (client == null) { if (client == null) {
throw new InvalidShortIdException(); throw new InvalidShortIdException();
} }
return clearingDistributedSurchargeMapper.findSurchargeTransactionsByDetailId(client.getIntValue("client_id"), detailId); List<JSONObject> transactions = clearingDistributedSurchargeMapper.findSurchargeTransactionsByDetailId(client.getIntValue("client_id"), detailId);
transactions.forEach(e -> {
if ("Credit".equals(e.getString("type")) && !"settle revoke".equals(e.getString("remark"))) {
JSONObject manager = managerMapper.findDetail(e.getString("operation"));
e.put("operator", manager.getString("display_name"));
}
});
return transactions;
} }
@Override @Override

@ -55,9 +55,11 @@ public class PartnerManageController {
} }
@RequestMapping(value = "/init/merchant_code", method = RequestMethod.GET) @RequestMapping(value = "/init/merchant_code", method = RequestMethod.GET,produces = "application/json")
public String initMerchantCode() { public JSONObject initMerchantCode() {
return clientManager.initMerchantCode(); JSONObject result = new JSONObject();
result.put("partner_code", clientManager.initMerchantCode());
return result;
} }
@RequestMapping(value = "/init/check_code_isvalid", method = RequestMethod.GET) @RequestMapping(value = "/init/check_code_isvalid", method = RequestMethod.GET)
@ -680,8 +682,10 @@ public class PartnerManageController {
} }
@ManagerMapping(value = "/{clientMoniker}/query/alipay_gms", method = RequestMethod.GET, role = {ManagerRole.OPERATOR, ManagerRole.ADMIN}) @ManagerMapping(value = "/{clientMoniker}/query/alipay_gms", method = RequestMethod.GET, role = {ManagerRole.OPERATOR, ManagerRole.ADMIN})
public String queryAlipayGmsStatus(@PathVariable String clientMoniker, @ModelAttribute(CommonConsts.MANAGER_STATUS) JSONObject manager) { public JSONObject queryAlipayGmsStatus(@PathVariable String clientMoniker, @ModelAttribute(CommonConsts.MANAGER_STATUS) JSONObject manager) {
return clientManager.queryAlipayGmsStatus(clientMoniker, manager); JSONObject result = new JSONObject();
result.put("result_status", clientManager.queryAlipayGmsStatus(clientMoniker, manager));
return result;
} }
@ManagerMapping(value = "/{clientMoniker}/register/alipayOnline_gms", method = RequestMethod.POST, role = {ManagerRole.OPERATOR, ManagerRole.ADMIN}) @ManagerMapping(value = "/{clientMoniker}/register/alipayOnline_gms", method = RequestMethod.POST, role = {ManagerRole.OPERATOR, ManagerRole.ADMIN})
@ -690,8 +694,10 @@ public class PartnerManageController {
} }
@ManagerMapping(value = "/{clientMoniker}/query/alipayOnline_gms", method = RequestMethod.GET, role = {ManagerRole.OPERATOR, ManagerRole.ADMIN}) @ManagerMapping(value = "/{clientMoniker}/query/alipayOnline_gms", method = RequestMethod.GET, role = {ManagerRole.OPERATOR, ManagerRole.ADMIN})
public String queryAlipayOnlineGmsStatus(@PathVariable String clientMoniker, @ModelAttribute(CommonConsts.MANAGER_STATUS) JSONObject manager) { public JSONObject queryAlipayOnlineGmsStatus(@PathVariable String clientMoniker, @ModelAttribute(CommonConsts.MANAGER_STATUS) JSONObject manager) {
return clientManager.queryAlipayOnlineGmsStatus(clientMoniker, manager); JSONObject result = new JSONObject();
result.put("result_status", clientManager.queryAlipayOnlineGmsStatus(clientMoniker, manager));
return result;
} }
@ManagerMapping(value = "/{clientMoniker}/query/alipay_gms_json", method = RequestMethod.GET, role = {ManagerRole.OPERATOR, ManagerRole.ADMIN}) @ManagerMapping(value = "/{clientMoniker}/query/alipay_gms_json", method = RequestMethod.GET, role = {ManagerRole.OPERATOR, ManagerRole.ADMIN})

@ -44,6 +44,7 @@ import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid; import javax.validation.Valid;
import java.io.IOException; import java.io.IOException;
import java.io.OutputStream; import java.io.OutputStream;
import java.util.Arrays;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
@ -583,7 +584,8 @@ public class PartnerViewController {
@PartnerMapping(value = "/clientCompliance/{clientMoniker}/viewCommit", method = RequestMethod.POST) @PartnerMapping(value = "/clientCompliance/{clientMoniker}/viewCommit", method = RequestMethod.POST)
@ResponseBody @ResponseBody
public void clientComplianceViewCommit(@PathVariable String clientMoniker ,@ModelAttribute(CommonConsts.PARTNER_STATUS) JSONObject account) { public void clientComplianceViewCommit(@PathVariable String clientMoniker ,@ModelAttribute(CommonConsts.PARTNER_STATUS) JSONObject account, @RequestBody JSONObject photoInfo) {
account.put("photo_info", photoInfo);
clientManager.commitAuthFilesToCompliance(clientMoniker, account, "Web"); clientManager.commitAuthFilesToCompliance(clientMoniker, account, "Web");
} }

@ -782,6 +782,7 @@ public class RiskBusinessServiceImpl implements RiskBusinessService, ManagerTodo
} }
List<String> clientEmails = new ArrayList<>(); List<String> clientEmails = new ArrayList<>();
clientEmails.add(client.getString("contact_email")); clientEmails.add(client.getString("contact_email"));
client.put("is_resend",new Date().compareTo(event.getDate("reply_email_date")));
String bdNamesStr = bdNames.isEmpty() ? "" : StringUtils.join(bdNames, ","); String bdNamesStr = bdNames.isEmpty() ? "" : StringUtils.join(bdNames, ",");
String reply_date = DateFormatUtils.format(DateUtils.addDays(event.getDate("reply_email_date"),-1),"yyyy年MM月dd日"); String reply_date = DateFormatUtils.format(DateUtils.addDays(event.getDate("reply_email_date"),-1),"yyyy年MM月dd日");
String reply_date_english = DateFormatUtils.format(DateUtils.addDays(event.getDate("reply_email_date"),-1),"dd/MM/yyyy"); String reply_date_english = DateFormatUtils.format(DateUtils.addDays(event.getDate("reply_email_date"),-1),"dd/MM/yyyy");

@ -166,7 +166,7 @@ public class SignInAccountServiceImpl implements SignInAccountService, Applicati
client.putAll(clientConfigService.find(client_id)); client.putAll(clientConfigService.find(client_id));
client = clientInfoWithNoSecretInfo(client); client = clientInfoWithNoSecretInfo(client);
client.put("client_less_file", false); client.put("client_less_file", false);
if (client.getIntValue("client_id")==9 && (client.getIntValue("approve_result") == 2 || client.getIntValue("open_status") == 10 || client.getIntValue("approve_result") ==1 || client.getIntValue("open_status") == 5) && client.getIntValue("source")!=4) { if ((client.getIntValue("approve_result") == 2 || client.getIntValue("open_status") == 10 || client.getIntValue("approve_result") ==1 || client.getIntValue("open_status") == 5) && client.getIntValue("source")!=4) {
List<JSONObject> clientFiles = clientFilesMapper.findAllClientFile(client.getIntValue("client_id")); List<JSONObject> clientFiles = clientFilesMapper.findAllClientFile(client.getIntValue("client_id"));
if (clientFiles != null && clientFiles.size() > 0) { if (clientFiles != null && clientFiles.size() > 0) {
clientFiles = clientFiles.stream().filter(fileJson -> ((fileJson.getIntValue("status") == 1 || fileJson.getIntValue("status") == 2))).collect(Collectors.toList()); clientFiles = clientFiles.stream().filter(fileJson -> ((fileJson.getIntValue("status") == 1 || fileJson.getIntValue("status") == 2))).collect(Collectors.toList());
@ -464,7 +464,7 @@ public class SignInAccountServiceImpl implements SignInAccountService, Applicati
"company_phone", "suburb", "postcode", "state", "contact_person", "contact_phone", "contact_email", "short_name", "logo_url", "enable_refund", "company_phone", "suburb", "postcode", "state", "contact_person", "contact_phone", "contact_email", "short_name", "logo_url", "enable_refund",
"enable_refund_auth", "retail_surcharge", "require_custinfo", "require_remark", "logo_thumbnail", "creator", "create_time", "approver", "enable_refund_auth", "retail_surcharge", "require_custinfo", "require_remark", "logo_thumbnail", "creator", "create_time", "approver",
"approve_result", "approve_time", "open_status", "timezone", "has_children", "source", "customer_surcharge_rate", "enable_alipay", "enable_wechat", "approve_result", "approve_time", "open_status", "timezone", "has_children", "source", "customer_surcharge_rate", "enable_alipay", "enable_wechat",
"enable_bestpay", "manual_settle", "skip_clearing", "mail_confirm", "surcharge_mode"}; "enable_bestpay", "manual_settle", "skip_clearing", "mail_confirm", "surcharge_mode", "company_photo", "store_photo", "company_website"};
for (String col : columns) { for (String col : columns) {
simpleClient.put(col, client.get(col)); simpleClient.put(col, client.get(col));
} }
@ -644,7 +644,7 @@ public class SignInAccountServiceImpl implements SignInAccountService, Applicati
JSONObject result = new JSONObject(); JSONObject result = new JSONObject();
result.put("client_less_file", false); result.put("client_less_file", false);
result.put("put_fail_pdf", "https://file.royalpay.com.au/open/2019/08/28/1566959635986_P1GuvCkuWINPhUJUqUQnz8E0u6Lgpx.pdf"); result.put("put_fail_pdf", "https://file.royalpay.com.au/open/2019/08/28/1566959635986_P1GuvCkuWINPhUJUqUQnz8E0u6Lgpx.pdf");
if (client.getIntValue("client_id")==9 && (client.getIntValue("approve_result") == 2 || client.getIntValue("open_status") == 10 || client.getIntValue("approve_result") == 1 || client.getIntValue("open_status") == 5) && client.getIntValue("source")!=4) { if ((client.getIntValue("approve_result") == 2 || client.getIntValue("open_status") == 10 || client.getIntValue("approve_result") == 1 || client.getIntValue("open_status") == 5) && client.getIntValue("source")!=4) {
List<JSONObject> clientFiles = clientFilesMapper.findAllClientFile(client.getIntValue("client_id")); List<JSONObject> clientFiles = clientFilesMapper.findAllClientFile(client.getIntValue("client_id"));
boolean clientFilesIsLess = false; boolean clientFilesIsLess = false;
for (int i = 0; i < FILE_KEYS.length; i++) { for (int i = 0; i < FILE_KEYS.length; i++) {
@ -707,13 +707,33 @@ public class SignInAccountServiceImpl implements SignInAccountService, Applicati
} }
result.put("client_less_file", clientFilesIsLess); result.put("client_less_file", clientFilesIsLess);
if (clientFilesIsLess) { if (clientFilesIsLess) {
JSONObject authFileCompliance = clientComplianceCompanyMapper.findFileByClientId(client.getIntValue("client_id")); whenClientLessFile(client, result);
if (authFileCompliance != null && StringUtils.isNotBlank(authFileCompliance.getString("description"))) {
result.put("client_refuse_reason", "Refuse reason/打回原因:" + authFileCompliance.getString("description"));
}
} }
} }
} }
return result; return result;
} }
private void whenClientLessFile(JSONObject client,JSONObject result) {
JSONObject authFileCompliance = clientComplianceCompanyMapper.findFileByClientId(client.getIntValue("client_id"));
if (authFileCompliance != null && StringUtils.isNotBlank(authFileCompliance.getString("description"))) {
result.put("client_refuse_reason", "Refuse reason/打回原因:" + authFileCompliance.getString("description"));
}
JSONObject photoInfo = new JSONObject();
photoInfo.put("company_photo", client.getString("company_photo"));
photoInfo.put("store_photo", client.getString("store_photo"));
photoInfo.put("web_site", client.getString("company_website"));
if (authFileCompliance != null) {
if (StringUtils.isNotBlank(authFileCompliance.getString("company_photo"))) {
photoInfo.put("company_photo", authFileCompliance.getString("company_photo"));
}
if (StringUtils.isNotBlank(authFileCompliance.getString("store_photo"))) {
photoInfo.put("store_photo", authFileCompliance.getString("store_photo"));
}
if (StringUtils.isNotBlank(authFileCompliance.getString("company_website"))) {
photoInfo.put("web_site", authFileCompliance.getString("company_website"));
}
}
result.put("photo_info", photoInfo);
}
} }

@ -135,7 +135,7 @@ public class SurchargeAccountServiceImpl implements SurchargeAccountService {
surchargeAccount.put("balance", surchargeAccount.getBigDecimal("balance").add(transaction.getBigDecimal("amount"))); surchargeAccount.put("balance", surchargeAccount.getBigDecimal("balance").add(transaction.getBigDecimal("amount")));
clientsSurchargeAccountsMapper.update(surchargeAccount); clientsSurchargeAccountsMapper.update(surchargeAccount);
detail.put("checkout", 1); detail.put("checkout", 1);
detail.put("operator_id", manager.getString("display_name")); detail.put("operator_id", manager.getString("manager_id"));
financialSurchargeAccountDetailMapper.update(detail); financialSurchargeAccountDetailMapper.update(detail);
} finally { } finally {
locker.unlock(detail.getIntValue("client_id") + "_" + detail.getString("settle_month") + "_fill"); locker.unlock(detail.getIntValue("client_id") + "_" + detail.getString("settle_month") + "_fill");

@ -1044,10 +1044,10 @@
AND org.org_id = #{org_id} AND org.org_id = #{org_id}
</if> </if>
<if test="begin != null"> <if test="begin != null">
AND trans.create_time &gt;= #{begin} AND trans.transaction_time &gt;= #{begin}
</if> </if>
<if test="end != null"> <if test="end != null">
AND trans.create_time &lt; #{end} AND trans.transaction_time &lt; #{end}
</if> </if>

@ -79,7 +79,10 @@
create_time, create_time,
clearing_amount clearing_amount
FROM statistics_bd_sales FROM statistics_bd_sales
WHERE bd_id = #{bd_id} AND log_date = #{log_date} AND isOrg = #{isOrg} WHERE org_id = #{org_id}
AND log_date = #{log_date}
AND isOrg = #{isOrg}
<if test="bd_id != null"> AND bd_id = #{bd_id}</if>
</select> </select>
</mapper> </mapper>

@ -19,6 +19,11 @@
and file_name='client_agree_file' and file_name='client_agree_file'
and status != 1 and status != 1
</select> </select>
<select id="findAllClientFile" resultType="com.alibaba.fastjson.JSONObject">
select * from sys_files where is_valid = 1
and client_id = #{client_id}
order by last_update_date asc
</select>
<update id="confirmAgreeFile"> <update id="confirmAgreeFile">
update sys_files update sys_files
set state = 2 set state = 2

@ -1,7 +1,13 @@
<html xmlns:th="http://www.thymeleaf.org" lang="zh"> <html xmlns:th="http://www.thymeleaf.org" lang="zh">
<b>Dear RoyalPay Merchant/BD :</b> <b>Dear RoyalPay Merchant/BD :</b>
<p>您好,您的风控材料—<span th:text="${client.company_name}"></span> 【<span th:text="${client.client_moniker}"></span>】提交期限即将于<span style="background: #FCE824" th:text="${reply_date}"></span>到期,请及时提交风控材料。未能按时提交完整证明材料,支付渠道将被关停,请您务必配合调查。感谢。</p> <p>您好,您的风控材料—<span th:text="${client.company_name}"></span> 【<span th:text="${client.client_moniker}"></span>】
<p>Your deadline for submission of risk materials for <span th:text="${client.company_name}"></span>【<span th:text="${client.client_moniker}"></span>】 is about to expire by <span th:text="${reply_date_english}" style="background: #FCE824"></span>, please submit the risk materials in time.If you can not provide qualified materials on time, the payment channels would be suspended or restricted with amount limit. Please be sure to assist the investigation. Thanks.</p> <span th:if="${client.is_resend>0}">已逾期</span>
<span th:if="${client.is_resend<0}">提交期限即将于<span style="background: #FCE824" th:text="${reply_date}"></span>到期</span>
,请及时提交风控材料。未能按时提交完整证明材料,支付渠道将被关停,请您务必配合调查。感谢。</p>
<p>Your deadline for submission of risk materials for <span th:text="${client.company_name}"></span>【<span th:text="${client.client_moniker}"></span>】
<span th:if="${client.is_resend>0}">has expired</span>
<span th:if="${client.is_resend<0}">is about to expire by <span th:text="${reply_date_english}" style="background: #FCE824"></span></span>
, please submit the risk materials in time.If you can not provide qualified materials on time, the payment channels would be suspended or restricted with amount limit. Please be sure to assist the investigation. Thanks.</p>
<h4>Best Regards</h4> <h4>Best Regards</h4>
<p> <p>
<img style="width: 120px;height: 120px" <img style="width: 120px;height: 120px"
@ -9,7 +15,7 @@
Contact Us<br> Contact Us<br>
Email:<br> Email:<br>
<a href="mailto:info@royalpay.com.au">info@royalpay.com.au</a> <br> <a href="mailto:info@royalpay.com.au">info@royalpay.com.au</a> <br>
Tel:<br> Tel:<br>与调查交易金额对应的购物小票/发票存根照片 要求:照片应清晰
1300 10 77 50<br> 1300 10 77 50<br>
<br> <br>
Service WeChat Account:<br> Service WeChat Account:<br>

@ -121,12 +121,12 @@ margin-bottom: 10%;"/>
ng-class="currentUser.org?(currentUser.org.banner_class||'fxplus'):'royalpay'"> ng-class="currentUser.org?(currentUser.org.banner_class||'fxplus'):'royalpay'">
<header class="main-header"> <header class="main-header">
<!--Logo--> <!--Logo-->
<a href="#" class="logo logo-yedian shine" ng-if="!currentUser.org"> <a href="#" class="logo logo-yedian shine" ng-if="!currentUser.org">
<!--mini logo for sidebar mini 50x50 pixels --> <!--mini logo for sidebar mini 50x50 pixels -->
<span class="logo-mini"><img src="static/images/r_white_logo.svg" <span class="logo-mini"><img src="static/images/r_white_logo.svg"
style="max-height: 35px;margin-left: 15%;"></span> style="max-height: 35px;margin-left: 15%;"></span>
<!--logo for regular state and mobile devices --> <!--logo for regular state and mobile devices -->
<span class="logo-lg"><img src="static/images/rp_white_logo.svg" <span class="logo-lg"><img src="static/images/rp_white_logo.svg"
style="max-height: 35px;"> style="max-height: 35px;">
<!--<b>RoyalPay</b>--> <!--<b>RoyalPay</b>-->
@ -141,7 +141,7 @@ margin-bottom: 10%;"/>
style="max-height: 35px;margin-bottom: 8px;margin-right: 5px;"><b style="max-height: 35px;margin-bottom: 8px;margin-right: 5px;"><b
ng-bind="currentUser.org.name"></b></span> ng-bind="currentUser.org.name"></b></span>
</a> </a>
<!--Header Navbar: style can be found in header.less --> <!--Header Navbar: style can be found in header.less -->
<!--顶部导航栏--> <!--顶部导航栏-->
<nav class="navbar navbar-static-top navbar-static-top-yedian" role="navigation"> <nav class="navbar navbar-static-top navbar-static-top-yedian" role="navigation">
@ -180,32 +180,32 @@ margin-bottom: 10%;"/>
<span class="label label-warning" ng-if="notifyCounts">{{notifyCounts}}</span> <span class="label label-warning" ng-if="notifyCounts">{{notifyCounts}}</span>
</a> </a>
<ul class="dropdown-menu"> <ul class="dropdown-menu">
<!-- <!--
<li class="header">System notifications,please resolve it!</li> <li class="header">System notifications,please resolve it!</li>
--> -->
<li> <li>
<!--inner menu: contains the actual data--> <!--inner menu: contains the actual data-->
<div class="slimScrollDiv" style="position: relative; overflow: hidden; width: auto; max-height: 200px;"><ul class="menu" style="overflow: hidden; width: 100%;"> <div class="slimScrollDiv" style="position: relative; overflow: hidden; width: auto; max-height: 200px;"><ul class="menu" style="overflow: hidden; width: 100%;">
<li> <li>
<a ng-if="partner_application_new" ui-sref="partner_apply"> <a ng-if="partner_application_new" ui-sref="partner_apply">
<i class="fa fa-commenting"></i> <i class="fa fa-commenting"></i>
新的自主申请商户<span style="font-size:smaller;float:right;right: 0"></span> 新的自主申请商户<span style="font-size:smaller;float:right;right: 0"></span>
</a> </a>
</li> </li>
<li> <li>
<a ng-if="refundReviews && ('10000000000'|withRole)" ui-sref="refundReview"> <a ng-if="refundReviews && ('10000000000'|withRole)" ui-sref="refundReview">
<i class="fa fa-commenting"></i> <i class="fa fa-commenting"></i>
新的退款申请<span style="font-size:smaller;float:right;right: 0"></span> 新的退款申请<span style="font-size:smaller;float:right;right: 0"></span>
</a> </a>
</li> </li>
</ul><div class="slimScrollBar" style="background: rgb(0, 0, 0); width: 3px; position: absolute; top: 0px; opacity: 0.4; display: none; border-radius: 7px; z-index: 99; right: 1px; height: 195.122px;"></div><div class="slimScrollRail" style="width: 3px; height: 100%; position: absolute; top: 0px; display: none; border-radius: 7px; background: rgb(51, 51, 51); opacity: 0.2; z-index: 90; right: 1px;"></div></div> </ul><div class="slimScrollBar" style="background: rgb(0, 0, 0); width: 3px; position: absolute; top: 0px; opacity: 0.4; display: none; border-radius: 7px; z-index: 99; right: 1px; height: 195.122px;"></div><div class="slimScrollRail" style="width: 3px; height: 100%; position: absolute; top: 0px; display: none; border-radius: 7px; background: rgb(51, 51, 51); opacity: 0.2; z-index: 90; right: 1px;"></div></div>
</li> </li>
</ul> </ul>
</li> </li>
<!-- <!--
User Account: style can be found in dropdown.less User Account: style can be found in dropdown.less
--> -->
<li class="dropdown user user-menu" uib-dropdown> <li class="dropdown user user-menu" uib-dropdown>
<a href class="dropdown-toggle" uib-dropdown-toggle> <a href class="dropdown-toggle" uib-dropdown-toggle>
<img ng-src="{{currentUser.org.logo||'static/images/r_white_logo.svg'}}" <img ng-src="{{currentUser.org.logo||'static/images/r_white_logo.svg'}}"
@ -214,7 +214,7 @@ margin-bottom: 10%;"/>
<span class="hidden-xs" ng-bind="currentUser.display_name"></span> <span class="hidden-xs" ng-bind="currentUser.display_name"></span>
</a> </a>
<ul class="dropdown-menu user-dropdown-menu" ng-cloak> <ul class="dropdown-menu user-dropdown-menu" ng-cloak>
<!--User image--> <!--User image-->
<li class="user-header user-header-yedian"> <li class="user-header user-header-yedian">
<img ng-src="{{currentUser.org.logo||'static/images/r_white_logo.svg'}}" class="img-circle" <img ng-src="{{currentUser.org.logo||'static/images/r_white_logo.svg'}}" class="img-circle"
alt="User Image"> alt="User Image">
@ -233,7 +233,7 @@ margin-bottom: 10%;"/>
<i class="fa fa-tty" title="Service" <i class="fa fa-tty" title="Service"
ng-class="{'text-orange':!('10000'|withRole),'text-gray':('10000'|withRole)}"></i> ng-class="{'text-orange':!('10000'|withRole),'text-gray':('10000'|withRole)}"></i>
<!--<i class="fa fa-university" title="Account Manager"--> <!--<i class="fa fa-university" title="Account Manager"-->
<!--ng-class="{'text-orange':!('100000'|withRole),'text-gray':('100000'|withRole)}"></i>--> <!--ng-class="{'text-orange':!('100000'|withRole),'text-gray':('100000'|withRole)}"></i>-->
<i class="fa fa-line-chart" title="Director" <i class="fa fa-line-chart" title="Director"
ng-class="{'text-orange':!('1000000'|withRole),'text-gray':('1000000'|withRole)}"></i> ng-class="{'text-orange':!('1000000'|withRole),'text-gray':('1000000'|withRole)}"></i>
<i class="fa fa-map-o" title="Markting" <i class="fa fa-map-o" title="Markting"
@ -247,16 +247,16 @@ margin-bottom: 10%;"/>
<i class="fa fa-user-plus" title="Org Manager" <i class="fa fa-user-plus" title="Org Manager"
ng-class="{'text-orange':!('1000000000000'|withRole),'text-gray':('1000000000000'|withRole)}"></i> ng-class="{'text-orange':!('1000000000000'|withRole),'text-gray':('1000000000000'|withRole)}"></i>
<i class="fa fa-ticket" title="Sales Manager" <i class="fa fa-ticket" title="Sales Manager"
ng-class="{'text-orange':!('10000000000000'|withRole),'text-gray':('1000000000000'|withRole)}"></i> ng-class="{'text-orange':!('10000000000000'|withRole),'text-gray':('1000000000000'|withRole)}"></i>
<!--<i class="fa fa-save" title="Data content"--> <!--<i class="fa fa-save" title="Data content"-->
<!--ng-class="{'text-orange':!('100000000000000'|withRole),'text-gray':('1000000000000'|withRole)}"></i>--> <!--ng-class="{'text-orange':!('100000000000000'|withRole),'text-gray':('1000000000000'|withRole)}"></i>-->
</small> </small>
</p> </p>
</li> </li>
<!-- <!--
Menu Footer Menu Footer
--> -->
<li class="user-footer"> <li class="user-footer">
<div class="pull-left"> <div class="pull-left">
<a href class="btn btn-default btn-flat" ng-click="changePwd()">Change Password</a> <a href class="btn btn-default btn-flat" ng-click="changePwd()">Change Password</a>
@ -267,7 +267,7 @@ margin-bottom: 10%;"/>
</li> </li>
</ul> </ul>
</li> </li>
<!--Control Sidebar Toggle Button --> <!--Control Sidebar Toggle Button -->
</ul> </ul>
</div> </div>
</nav> </nav>
@ -664,11 +664,11 @@ margin-bottom: 10%;"/>
</li> </li>
<!-- <li ui-sref-active="active" ng-if="'citypartner'|withModule"> <!-- <li ui-sref-active="active" ng-if="'citypartner'|withModule">
<a ui-sref="citypartner_reg" ui-sref-opts="{reload:true}"> <a ui-sref="citypartner_reg" ui-sref-opts="{reload:true}">
<i class="fa fa-users"></i> <span>City Partners</span> <i class="fa fa-users"></i> <span>City Partners</span>
</a> </a>
</li>--> </li>-->
<!-- <!--
<li ui-sref-active="active" ng-if="('activities'|withModule) && (currentUser.org_id==1 || currentUser.org_id==null)"> <li ui-sref-active="active" ng-if="('activities'|withModule) && (currentUser.org_id==1 || currentUser.org_id==null)">
<a ui-sref="activity.detail({act_id:'3'})" ui-sref-opts="{reload:true}"> <a ui-sref="activity.detail({act_id:'3'})" ui-sref-opts="{reload:true}">
@ -690,21 +690,21 @@ margin-bottom: 10%;"/>
<i class="fa fa-gift"></i> <span>红包返现</span> <i class="fa fa-gift"></i> <span>红包返现</span>
</a> </a>
</li>--> </li>-->
<!-- <li ui-sref-active="active" ng-if="('funds'|withModule)"> <!-- <li ui-sref-active="active" ng-if="('funds'|withModule)">
<a ui-sref="funds"> <a ui-sref="funds">
<i class="fa fa-money"></i> <span>增值计划</span> <i class="fa fa-money"></i> <span>增值计划</span>
</a> </a>
</li>--> </li>-->
<!--<li class="header nav-header" ng-if="('1000000000000'|withRole)">机构|Agent</li>--> <!--<li class="header nav-header" ng-if="('1000000000000'|withRole)">机构|Agent</li>-->
<!--<li ui-sref-active="active" ng-if="('1000000000000'|withRole)">--> <!--<li ui-sref-active="active" ng-if="('1000000000000'|withRole)">-->
<!--<a ui-sref="analysis_agent" ui-sref-opts="{reload:true}">--> <!--<a ui-sref="analysis_agent" ui-sref-opts="{reload:true}">-->
<!--<i class="fa fa-hand-peace-o"></i> <span>机构数据分析|Agent Analysis</span>--> <!--<i class="fa fa-hand-peace-o"></i> <span>机构数据分析|Agent Analysis</span>-->
<!--</a>--> <!--</a>-->
<!--</li>--> <!--</li>-->
<!--<li ui-sref-active="active" ng-if="('clearing_org'|withModule) && currentUser.org_id>1">--> <!--<li ui-sref-active="active" ng-if="('clearing_org'|withModule) && currentUser.org_id>1">-->
<!--<a ui-sref="clearingLogsForOrg" ui-sref-opts="{reload:true}">--> <!--<a ui-sref="clearingLogsForOrg" ui-sref-opts="{reload:true}">-->
<!--<i class="fa fa-line-chart"></i> <span>清算记录|Settlement Logs</span>--> <!--<i class="fa fa-line-chart"></i> <span>清算记录|Settlement Logs</span>-->
<!--</a>--> <!--</a>-->
<!--</li>--> <!--</li>-->
<li class="menu-group" ng-if="roleNow=='sitemanager'"> <li class="menu-group" ng-if="roleNow=='sitemanager'">
<p role="button" ng-class="{'active': Content,'is-hide':hideSideBar}" ng-click="Content = !Content"> <p role="button" ng-class="{'active': Content,'is-hide':hideSideBar}" ng-click="Content = !Content">

@ -107,7 +107,7 @@ define(['angular', 'jquery', 'uiRouter', './monitoring/analysis-monitoring'],
templateUrl: '/static/analysis/templates/risk_business_bd.html', templateUrl: '/static/analysis/templates/risk_business_bd.html',
cache: false, cache: false,
controller: 'riskBusinessCtrl' controller: 'riskBusinessCtrl'
}).state('analysis_monitoring.riskEvent_detail', { }).state('analysis_monitoring.risk_business.riskEvent_detail', {
url: '/{risk_id}/detail', url: '/{risk_id}/detail',
templateUrl: '/static/analysis/templates/riskEvent_detail.html', templateUrl: '/static/analysis/templates/riskEvent_detail.html',
controller: 'riskEventDetailCtrl', controller: 'riskEventDetailCtrl',
@ -116,6 +116,10 @@ define(['angular', 'jquery', 'uiRouter', './monitoring/analysis-monitoring'],
return $http.get('/risk/business/events/' + $stateParams.risk_id); return $http.get('/risk/business/events/' + $stateParams.risk_id);
}] }]
} }
}).state('analysis_monitoring.risk_business.riskEvent_detail.audit_material', {
url: '/audit_material',
templateUrl: '/static/analysis/templates/audit_material.html',
controller: 'auditMaterialCtrl'
}).state('analysis_monitoring.riskEvent_detail_bd', { }).state('analysis_monitoring.riskEvent_detail_bd', {
url: '/{risk_id}/bd/detail', url: '/{risk_id}/bd/detail',
templateUrl: '/static/analysis/templates/riskEvent_detail_bd.html', templateUrl: '/static/analysis/templates/riskEvent_detail_bd.html',
@ -129,10 +133,6 @@ define(['angular', 'jquery', 'uiRouter', './monitoring/analysis-monitoring'],
url: '/new_riskEvent', url: '/new_riskEvent',
templateUrl: '/static/analysis/templates/new_riskEvent.html', templateUrl: '/static/analysis/templates/new_riskEvent.html',
controller: 'newRiskEventCtrl' controller: 'newRiskEventCtrl'
}).state('analysis_monitoring.riskEvent_detail.audit_material', {
url: '/audit_material',
templateUrl: '/static/analysis/templates/audit_material.html',
controller: 'auditMaterialCtrl'
}); });
}]); }]);
@ -153,6 +153,10 @@ define(['angular', 'jquery', 'uiRouter', './monitoring/analysis-monitoring'],
industries.push(industry.label); industries.push(industry.label);
}); });
industries.push('未知行业'); industries.push('未知行业');
$scope.$watch('params',function (newVal) {
console.log('params changed--->',newVal)
});
console.log('riskBusinessCtrl loaded')
// console.log(industries); // console.log(industries);
// 加载风险注册事件 // 加载风险注册事件
$scope.loadRiskEvents = function (page) { $scope.loadRiskEvents = function (page) {
@ -423,7 +427,7 @@ define(['angular', 'jquery', 'uiRouter', './monitoring/analysis-monitoring'],
content: 'Update riskEvent successfully', content: 'Update riskEvent successfully',
type: 'success' type: 'success'
}); });
$state.reload('analysis_monitoring.riskEvent_detail'); $state.reload('analysis_monitoring.risk_business.riskEvent_detail');
}, function (resp) { }, function (resp) {
commonDialog.alert({ commonDialog.alert({
title: 'Error', title: 'Error',
@ -451,7 +455,7 @@ define(['angular', 'jquery', 'uiRouter', './monitoring/analysis-monitoring'],
content: 'Are you sure?' content: 'Are you sure?'
}).then(function () { }).then(function () {
$http.put('/risk/business/channel/' + channel + '/permission/' + channelFlag, $scope.riskEvent).then(function () { $http.put('/risk/business/channel/' + channel + '/permission/' + channelFlag, $scope.riskEvent).then(function () {
$state.reload('analysis_monitoring.riskEvent_detail'); $state.reload('analysis_monitoring.risk_business.riskEvent_detail');
}, function (resp) { }, function (resp) {
commonDialog.alert({ commonDialog.alert({
title: 'Failed to change ' + channel + ' channel permission status', title: 'Failed to change ' + channel + ' channel permission status',
@ -470,7 +474,7 @@ define(['angular', 'jquery', 'uiRouter', './monitoring/analysis-monitoring'],
content: 'Are you sure?' content: 'Are you sure?'
}).then(function () { }).then(function () {
$http.put('/risk/business/partner/' + isValid, $scope.riskEvent).then(function () { $http.put('/risk/business/partner/' + isValid, $scope.riskEvent).then(function () {
$state.reload('analysis_monitoring.riskEvent_detail'); $state.reload('analysis_monitoring.risk_business.riskEvent_detail');
}, function (resp) { }, function (resp) {
commonDialog.alert({title: 'Error', content: resp.data.message, type: 'error'}); commonDialog.alert({title: 'Error', content: resp.data.message, type: 'error'});
}) })
@ -738,20 +742,20 @@ define(['angular', 'jquery', 'uiRouter', './monitoring/analysis-monitoring'],
$scope.increase = function ($index) { $scope.increase = function ($index) {
$scope.materials.splice($index + 1, 0, $scope.materials.splice($index + 1, 0,
{key: new Date().getTime(), value: ""}); // 用时间戳作为每个item的key {key: new Date().getTime(), value: ""}); // 用时间戳作为每个item的key
// 增加新的input后允许删除 // 增加新的input后允许删除
$scope.canMinus = true; $scope.canMinus = true;
}; };
$scope.decrease = function($index) { $scope.decrease = function($index) {
// 如果input大于1,删除 // 如果input大于1,删除
if ($scope.materials.length > 1) { if ($scope.materials.length > 1) {
$scope.materials.splice($index, 1); $scope.materials.splice($index, 1);
} }
// 如果回复数为1,不允许删除 // 如果回复数为1,不允许删除
if ($scope.materials.length == 1) { if ($scope.materials.length == 1) {
$scope.canMinus = false; $scope.canMinus = false;
} }
}; };
var array=new Array(); var array=new Array();
var validIndex = 0; var validIndex = 0;
@ -773,11 +777,9 @@ define(['angular', 'jquery', 'uiRouter', './monitoring/analysis-monitoring'],
$scope.is_send_client = false; $scope.is_send_client = false;
$scope.changeIsSendClient = function(flag) { $scope.changeIsSendClient = function(flag) {
$scope.is_send_client = flag $scope.is_send_client = flag
};
$scope.send_clean_days = false;
$scope.changeIsSendClient = function (flag) {
$scope.send_clean_days = flag $scope.send_clean_days = flag
}; };
$scope.send_clean_days = false;
$scope.save = function (form) { $scope.save = function (form) {
if (form.$invalid) { if (form.$invalid) {
angular.forEach(form, function (item, key) { angular.forEach(form, function (item, key) {
@ -809,6 +811,7 @@ define(['angular', 'jquery', 'uiRouter', './monitoring/analysis-monitoring'],
var saveRiskBtn = document.getElementById('save-risk-btn'); var saveRiskBtn = document.getElementById('save-risk-btn');
var saveRiskBtnInnerHtmlBak = saveRiskBtn.innerHTML; var saveRiskBtnInnerHtmlBak = saveRiskBtn.innerHTML;
saveRiskBtn.disabled = true; saveRiskBtn.disabled = true;
debugger
saveRiskBtn.innerHTML = "<i class='fa fa-spinner fa-spin '></i> Processing"; saveRiskBtn.innerHTML = "<i class='fa fa-spinner fa-spin '></i> Processing";
$http.post('/risk/business/events', $scope.riskEvent).then(function (resp) { $http.post('/risk/business/events', $scope.riskEvent).then(function (resp) {
saveRiskBtn.innerHTML = saveRiskBtnInnerHtmlBak; saveRiskBtn.innerHTML = saveRiskBtnInnerHtmlBak;

@ -83,8 +83,8 @@
</form> </form>
</div> </div>
<div class="panel-footer"> <div class="panel-footer">
<a role="button" <a role="button" id="test-btn"
ui-sref="analysis_monitoring.risk_business" ui-sref="^.^"
class="btn btn-info">返回 class="btn btn-info">返回
</a> </a>

@ -18,10 +18,10 @@
<div class="nav-tabs-custom"> <div class="nav-tabs-custom">
<ul class="nav nav-tabs"> <ul class="nav nav-tabs">
<li ui-sref-active-eq="active"> <li ui-sref-active-eq="active">
<a ui-sref="analysis_monitoring.riskEvent_detail" ui-sref-opts="{reload:true}">Risk Detail</a> <a ui-sref="analysis_monitoring.risk_business.riskEvent_detail" ui-sref-opts="{reload:true}">Risk Detail</a>
</li> </li>
<li ui-sref-active="active"> <li ui-sref-active="active">
<a ui-sref=".audit_material" ui-sref-opts="{reload:true}">Audit material</a> <a ui-sref=".audit_material">Audit material</a>
</li> </li>
<li> <li>
<div class="btn-group pull-right" role="group" aria-label="..." ng-if="('10000000000'|withRole) && (riskEvent.result_type==1 || riskEvent.result_type==4)"> <div class="btn-group pull-right" role="group" aria-label="..." ng-if="('10000000000'|withRole) && (riskEvent.result_type==1 || riskEvent.result_type==4)">
@ -40,7 +40,7 @@
<a role="button" <a role="button"
class="pull-right" class="pull-right"
ng-click="changeEditFlag(editFlag)" ng-click="changeEditFlag(editFlag)"
ng-if="('10000000000'|withRole)"> ng-if="('10000000000'|withRole)">
<i class="fa fa-edit"></i> Edit <i class="fa fa-edit"></i> Edit
</a> </a>
</div> </div>
@ -367,6 +367,7 @@
</tr> </tr>
</tbody> </tbody>
</table> </table>
<p ng-if="tradeLogs.length != 0" style="text-align: center;margin: 5px 9px">共计<span>{{tradeLogs.length}}</span>条</p>
</div> </div>
</div> </div>
@ -464,11 +465,11 @@
</label> </label>
<div class="col-sm-8"> <div class="col-sm-8">
<textarea class="form-control" <textarea class="form-control"
ng-model="riskEventEdit.order_ids" ng-model="riskEventEdit.order_ids"
type="text" type="text"
name="order_ids" name="order_ids"
id="order-ids-input" id="order-ids-input"
required> required>
</textarea> </textarea>
<div ng-messages="riskEventForm.order_ids.$error" <div ng-messages="riskEventForm.order_ids.$error"
ng-if="riskEventForm.order_ids.$dirty"> ng-if="riskEventForm.order_ids.$dirty">
@ -607,17 +608,17 @@
<div class="col-sm-8"> <div class="col-sm-8">
<textarea class="form-control" <textarea class="form-control"
ng-model="riskEventEdit.channel_result" ng-model="riskEventEdit.channel_result"
type="text" type="text"
name="channel_result" name="channel_result"
id="channel-result-input"/> id="channel-result-input"/>
<!--<select class="form-control"--> <!--<select class="form-control"-->
<!--name="channel_result"--> <!--name="channel_result"-->
<!--ng-model="riskEventEdit.channel_result"--> <!--ng-model="riskEventEdit.channel_result"-->
<!--id="channel-result-input"--> <!--id="channel-result-input"-->
<!--ng-options="item for item in channelResults">--> <!--ng-options="item for item in channelResults">-->
<!--<option value="">Please Choose</option>--> <!--<option value="">Please Choose</option>-->
<!--</select>--> <!--</select>-->
</div> </div>
</div> </div>

@ -224,52 +224,52 @@
<div class="box-body no-padding table-responsive"> <div class="box-body no-padding table-responsive">
<table class="table table-striped"> <table class="table table-striped">
<thead> <thead>
<tr> <tr>
<th>Partner</th> <th>Partner</th>
<th>Order Type</th> <th>Order Type</th>
<th>Result Type</th> <th>Result Type</th>
<th>Sub Merchant ID</th> <th>Sub Merchant ID</th>
<th>Email Status</th> <th>Email Status</th>
<th>Description</th> <th>Description</th>
<th>Channel Result</th> <th>Channel Result</th>
<th>Risk Manager</th> <th>Risk Manager</th>
<th>Create Time</th> <th>Create Time</th>
<th>Operation</th> <th>Operation</th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
<tr ng-repeat="riskEvent in riskEvents"> <tr ng-repeat="riskEvent in riskEvents">
<td> <td>
<a role="button" <a role="button"
ng-if="riskEvent.client_moniker != null" ng-if="riskEvent.client_moniker != null"
ui-sref="partners.detail({clientMoniker: riskEvent.client_moniker})"> ui-sref="partners.detail({clientMoniker: riskEvent.client_moniker})">
{{riskEvent.short_name}}({{riskEvent.client_moniker}}) {{riskEvent.short_name}}({{riskEvent.client_moniker}})
</a> </a>
</td> </td>
<td ng-bind="riskEvent.order_type | orderType"></td> <td ng-bind="riskEvent.order_type | orderType"></td>
<td ng-class="{'bg-red': riskEvent.result_type == 2, 'pass_timeout': riskEvent.pass_timeout}"> <td ng-class="{'bg-red': riskEvent.result_type == 2, 'pass_timeout': riskEvent.pass_timeout}">
<span ng-if="riskEvent.order_type == 5">-</span> <span ng-if="riskEvent.order_type == 5">-</span>
<span ng-if="riskEvent.order_type != 5">{{riskEvent.result_type | resultType:resultSearchTypes}}</span> <span ng-if="riskEvent.order_type != 5">{{riskEvent.result_type | resultType:resultSearchTypes}}</span>
</td> </td>
<td ng-bind="riskEvent.sub_merchant_id"></td> <td ng-bind="riskEvent.sub_merchant_id"></td>
<td> <td>
<span ng-if="riskEvent.order_type != 5">{{riskEvent.email_status | emailStatus}}</span> <span ng-if="riskEvent.order_type != 5">{{riskEvent.email_status | emailStatus}}</span>
<span ng-if="riskEvent.order_type == 5">-</span> <span ng-if="riskEvent.order_type == 5">-</span>
</td> </td>
<td ng-bind="riskEvent.description | limitTo:20"></td> <td ng-bind="riskEvent.description | limitTo:20"></td>
<td ng-bind="riskEvent.channel_result"></td> <td ng-bind="riskEvent.channel_result"></td>
<td ng-bind="riskEvent.fillin_person"></td> <td ng-bind="riskEvent.fillin_person"></td>
<td ng-bind="riskEvent.create_time"></td> <td ng-bind="riskEvent.create_time"></td>
<td> <td>
<a class="text-primary" <a class="text-primary"
role="button" role="button"
title="Detail" title="Detail"
ui-sref="analysis_monitoring.riskEvent_detail({risk_id:riskEvent.risk_id})"> ui-sref="analysis_monitoring.risk_business.riskEvent_detail({risk_id:riskEvent.risk_id})">
<i class="fa fa-search"></i> Detail <i class="fa fa-search"></i> Detail
</a> </a>
</td> </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> </div>

@ -152,7 +152,7 @@
<a class="text-primary" <a class="text-primary"
role="button" role="button"
title="Detail" title="Detail"
ui-sref="analysis_monitoring.riskEvent_detail_bd({risk_id:riskEvent.risk_id})"> ui-sref="analysis_monitoring.risk_business.riskEvent_detail_bd({risk_id:riskEvent.risk_id})">
<i class="fa fa-search"></i> Detail <i class="fa fa-search"></i> Detail
</a> </a>
</td> </td>

@ -395,7 +395,7 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter
} }
$scope.initMerchantCode = function () { $scope.initMerchantCode = function () {
$http.get('/sys/partners/init/merchant_code').then(function (response) { $http.get('/sys/partners/init/merchant_code').then(function (response) {
$scope.partner.client_moniker = response.data; $scope.partner.client_moniker = response.data.partner_code;
$scope.merchantCodeChecked = true; $scope.merchantCodeChecked = true;
$scope.merchantIsValid = true; $scope.merchantIsValid = true;
}); });
@ -1908,7 +1908,7 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter
}; };
$scope.queryAlipayGms = function () { $scope.queryAlipayGms = function () {
$http.get('/sys/partners/' + $scope.partner.client_moniker + '/query/alipay_gms').then(function (resp) { $http.get('/sys/partners/' + $scope.partner.client_moniker + '/query/alipay_gms').then(function (resp) {
commonDialog.alert({title: 'Success', content: resp.data, type: 'success'}); commonDialog.alert({title: 'Success', content: resp.data.result_status, type: 'success'});
}, function (resp) { }, function (resp) {
commonDialog.alert({title: 'Error', content: "查询失败:" + resp.data.message, type: 'error'}); commonDialog.alert({title: 'Error', content: "查询失败:" + resp.data.message, type: 'error'});
}) })
@ -1931,7 +1931,7 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter
}; };
$scope.queryAlipayOnlineGms = function () { $scope.queryAlipayOnlineGms = function () {
$http.get('/sys/partners/' + $scope.partner.client_moniker + '/query/alipayOnline_gms').then(function (resp) { $http.get('/sys/partners/' + $scope.partner.client_moniker + '/query/alipayOnline_gms').then(function (resp) {
commonDialog.alert({title: 'Success', content: resp.data, type: 'success'}); commonDialog.alert({title: 'Success', content: resp.data.result_status, type: 'success'});
}, function (resp) { }, function (resp) {
commonDialog.alert({title: 'Error', content: "查询失败:" + resp.data.message, type: 'error'}); commonDialog.alert({title: 'Error', content: "查询失败:" + resp.data.message, type: 'error'});
}) })
@ -2969,7 +2969,7 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter
} }
$scope.initMerchantCode = function () { $scope.initMerchantCode = function () {
$http.get('/sys/partners/init/merchant_code').then(function (response) { $http.get('/sys/partners/init/merchant_code').then(function (response) {
$scope.partner.client_moniker = response.data; $scope.partner.client_moniker = response.data.partner_code;
$scope.merchantCodeChecked = true; $scope.merchantCodeChecked = true;
$scope.merchantIsValid = true; $scope.merchantIsValid = true;
}); });

@ -812,6 +812,50 @@ define(['angular', 'decimal', 'uiRouter', 'ngBootSwitch', 'ngFileUpload', 'uiBoo
app.controller('clientCommitToComplianceFilesCtrl', ['$scope', '$http', '$rootScope', 'commonDialog', '$state', 'Upload', 'file','partner', function ($scope, $http, $rootScope, commonDialog, $state, Upload, file, partner) { app.controller('clientCommitToComplianceFilesCtrl', ['$scope', '$http', '$rootScope', 'commonDialog', '$state', 'Upload', 'file','partner', function ($scope, $http, $rootScope, commonDialog, $state, Upload, file, partner) {
$scope.file = file.data || {}; $scope.file = file.data || {};
$scope.partner = partner.data || {}; $scope.partner = partner.data || {};
$scope.uploadStorePhoto = function (file) {
if (file != null) {
if (file.size > 2 * 1024 * 1024) {
commonDialog.alert({title: 'Error', content: '文件大小不能超过2MB,请压缩后重试', type: 'error'})
} else {
$scope.storePhotoProgress = {value: 0};
Upload.upload({
url: '/attachment/files',
data: {file: file}
}).then(function (resp) {
delete $scope.storePhotoProgress;
$scope.file.photo_info.store_photo = resp.data.url;
}, function (resp) {
delete $scope.storePhotoProgress;
commonDialog.alert({title: 'Upload Failed', content: resp.data.message, type: 'error'})
}, function (evt) {
$scope.storePhotoProgress.value = parseInt(100 * evt.loaded / evt.total);
})
}
}
};
$scope.uploadShopPhoto = function (file) {
if (file != null) {
if (file.size > 2 * 1024 * 1024) {
commonDialog.alert({title: 'Error', content: '文件大小不能超过2MB,请压缩后重试', type: 'error'})
} else {
$scope.shopPhotoProgress = {value: 0};
Upload.upload({
url: '/attachment/files',
data: {file: file}
}).then(function (resp) {
delete $scope.shopPhotoProgress;
$scope.file.photo_info.company_photo = resp.data.url;
}, function (resp) {
delete $scope.shopPhotoProgress;
commonDialog.alert({title: 'Upload Failed', content: resp.data.message, type: 'error'})
}, function (evt) {
$scope.shopPhotoProgress.value = parseInt(100 * evt.loaded / evt.total);
})
}
}
};
//audit files //audit files
$scope.uploadBankFile = function (file) { $scope.uploadBankFile = function (file) {
if (file != null) { if (file != null) {
@ -860,7 +904,6 @@ define(['angular', 'decimal', 'uiRouter', 'ngBootSwitch', 'ngFileUpload', 'uiBoo
if ($scope.file.file_id_info && $scope.file.file_id_info.endsWith('pdf')) { if ($scope.file.file_id_info && $scope.file.file_id_info.endsWith('pdf')) {
$scope.idIsImage = false; $scope.idIsImage = false;
} }
$scope.uploadCompanyFile = function (file) { $scope.uploadCompanyFile = function (file) {
if (file != null) { if (file != null) {
if (file.size > 3 * 1024 * 1024) { if (file.size > 3 * 1024 * 1024) {
@ -1017,12 +1060,16 @@ define(['angular', 'decimal', 'uiRouter', 'ngBootSwitch', 'ngFileUpload', 'uiBoo
commonDialog.alert({title: 'Error', content: '请提交* Certificate of Registration', type: 'error'}); commonDialog.alert({title: 'Error', content: '请提交* Certificate of Registration', type: 'error'});
return; return;
} }
; if ((!$scope.file.photo_info.company_photo || !$scope.file.photo_info.store_photo) && !$scope.file.photo_info.web_site) {
alert('Please upload two photos or fill out the website');
return;
}
commonDialog.confirm({ commonDialog.confirm({
title: 'Warning', title: 'Warning',
content: 'Are you sure to submit files?' content: 'Are you sure to submit files?'
}).then(function () { }).then(function () {
$http.post('/client/partner_info/clientCompliance/' + $scope.partner.client_moniker + '/viewCommit', $scope.file).then(function () { $http.post('/client/partner_info/clientCompliance/' + $scope.partner.client_moniker + '/viewCommit', $scope.file.photo_info).then(function () {
commonDialog.alert({ commonDialog.alert({
title: 'Success', title: 'Success',
content: 'Commit Successful', content: 'Commit Successful',
@ -1855,6 +1902,17 @@ define(['angular', 'decimal', 'uiRouter', 'ngBootSwitch', 'ngFileUpload', 'uiBoo
$scope.$close(signInfo); $scope.$close(signInfo);
}; };
}]); }]);
var compare = function (x, y) {
x = parseInt(x);
y = parseInt(y);
if (x < y) {
return -1;
} else if (x > y) {
return 1;
} else {
return 0;
}
};
return app; return app;
}); });

@ -676,7 +676,7 @@
<div class="col-sm-8"> <div class="col-sm-8">
<input class="form-control" ng-model="partner.contact_job" <input class="form-control" ng-model="partner.contact_job"
required required
name="legal_representative_job" id="contact_job-id" name="contact_job" id="contact_job-id"
maxlength="50"> maxlength="50">
</div> </div>
<div ng-messages="partnerForm.contact_job.$error" <div ng-messages="partnerForm.contact_job.$error"
@ -718,7 +718,7 @@
</div> </div>
</div> </div>
<div class="form-group" <div class="form-group"
ng-class="{'has-error':partnerForm.contact_phone_p.$invalid && partnerForm.contact_phone_p.$dirty}"> ng-class="{'has-error':partnerForm.legal_representative_phone_p.$invalid && partnerForm.legal_representative_phone_p.$dirty}">
<label class="control-label col-sm-2" for="legal_representative_phone_p-input">* <label class="control-label col-sm-2" for="legal_representative_phone_p-input">*
Phone</label> Phone</label>
<div class="col-sm-2"> <div class="col-sm-2">
@ -938,7 +938,7 @@
<div class="panel-body"> <div class="panel-body">
<div class="form-horizontal"> <div class="form-horizontal">
<div class="form-group col-sm-6" <div class="form-group col-sm-6"
ng-class="{'has-error':partnerForm.address.$invalid && partnerForm.address.$dirty}"> ng-class="{'has-error':partnerForm.registered_address.$invalid && partnerForm.registered_address.$dirty}">
<label class="control-label col-sm-4" for="registered_address-input">* <label class="control-label col-sm-4" for="registered_address-input">*
Registered Office Address</label> Registered Office Address</label>
<div class="col-sm-8"> <div class="col-sm-8">

@ -581,7 +581,7 @@
<div class="col-sm-8"> <div class="col-sm-8">
<input class="form-control" ng-model="partner.contact_job" <input class="form-control" ng-model="partner.contact_job"
required required
name="legal_representative_job" id="contact_job-id" name="contact_job" id="contact_job-id"
maxlength="50"> maxlength="50">
</div> </div>
<div ng-messages="partnerForm.contact_job.$error" <div ng-messages="partnerForm.contact_job.$error"
@ -621,7 +621,7 @@
</div> </div>
</div> </div>
<div class="form-group" <div class="form-group"
ng-class="{'has-error':partnerForm.contact_phone_p.$invalid && partnerForm.contact_phone_p.$dirty}"> ng-class="{'has-error':partnerForm.legal_representative_phone_p.$invalid && partnerForm.legal_representative_phone_p.$dirty}">
<label class="control-label col-sm-2" for="legal_representative_phone_p-input">* <label class="control-label col-sm-2" for="legal_representative_phone_p-input">*
Phone</label> Phone</label>
<div class="col-sm-2"> <div class="col-sm-2">
@ -697,8 +697,8 @@
name="legal_representative_job" id="legal_representative_job-id" name="legal_representative_job" id="legal_representative_job-id"
maxlength="50"> maxlength="50">
</div> </div>
<div ng-messages="partnerForm.legal_representative_email.$error" <div ng-messages="partnerForm.legal_representative_job.$error"
ng-if="partnerForm.legal_representative_email.$dirty"> ng-if="partnerForm.legal_representative_job.$dirty">
<p class="small text-danger" ng-message="required">Required <p class="small text-danger" ng-message="required">Required
Field</p> Field</p>
<p class="small text-danger" ng-message="maxlength">Less Than 50 <p class="small text-danger" ng-message="maxlength">Less Than 50
@ -810,7 +810,7 @@
<div class="panel-body"> <div class="panel-body">
<div class="form-horizontal"> <div class="form-horizontal">
<div class="form-group col-sm-6" <div class="form-group col-sm-6"
ng-class="{'has-error':partnerForm.address.$invalid && partnerForm.address.$dirty}"> ng-class="{'has-error':partnerForm.registered_address.$invalid && partnerForm.registered_address.$dirty}">
<label class="control-label col-sm-4" for="registered_address-input">* <label class="control-label col-sm-4" for="registered_address-input">*
Registered Office Address</label> Registered Office Address</label>
<div class="col-sm-8"> <div class="col-sm-8">

@ -35,7 +35,11 @@
<div class="col-sm-10"> <div class="col-sm-10">
<p class="form-control-static"> <p class="form-control-static">
<span id="parent_code">{{partner.client_moniker}}</span>
<a class="text-primary" role="button" title="Detail"
ui-sref="partners.detail({clientMoniker:partner.client_moniker})">
<span id="parent_code">{{partner.client_moniker}}</span>
</a>
</p> </p>
</div> </div>
</div> </div>
@ -70,6 +74,41 @@
</div> </div>
<div class="panel-body"> <div class="panel-body">
<div class="form-horizontal"> <div class="form-horizontal">
<div class="form-group">
<label class="control-label col-sm-4" style="text-align: center;">
Website
</label>
<div class="col-sm-6">
<input type="text" class="form-control" ng-if="file.file_company.company_website"
ng-model="file.file_company.company_website"
maxlength="200" readonly>
</div>
</div>
<div class="form-group">
<label class="control-label col-sm-4" style="text-align: center;">Shop Photo
</label>
<div class="col-sm-3">
<div class="form-control-static"><em>1:</em>&nbsp;
</div>
<uib-progressbar value="shopPhotoProgress.value"
ng-if="shopPhotoProgress"></uib-progressbar>
<a target="_blank" ng-if="file.file_company.company_photo" ng-href="{{file.file_company.company_photo}}">
<img ng-src="{{file.file_company.company_photo}}"
ng-if="file.file_company.company_photo"
class="thumbnail img-size col-sm-9">
</a>
</div>
<div class="col-sm-3">
<div class="form-control-static"><em>2:</em>&nbsp;
</div>
<uib-progressbar value="storePhotoProgress.value"
ng-if="storePhotoProgress"></uib-progressbar>
<a target="_blank" ng-if="file.file_company.store_photo" ng-href="{{file.file_company.store_photo}}">
<img ng-src="{{file.file_company.store_photo}}" ng-if="file.file_company.store_photo"
class="thumbnail img-size col-sm-9">
</a>
</div>
</div>
<div class="form-group"> <div class="form-group">
<label class="control-label col-sm-4" style="text-align: center;">* bank statement <label class="control-label col-sm-4" style="text-align: center;">* bank statement
<span ng-if="file.client_bank_file[0].status == 0" class="small text-dark">(未提交)</span> <span ng-if="file.client_bank_file[0].status == 0" class="small text-dark">(未提交)</span>

@ -2,6 +2,19 @@
img { img {
width: 100%; width: 100%;
} }
.btn btn-default:active{
position: relative;
top: 1px;
box-shadow: inset 0 3px 5px 0 rgba(0,0,0, 0.2);
outline: 0;
}
.btn-default:active,
.btn-default.active,
.open > .dropdown-toggle.btn-default {
color: #333;
background-color: #f7bf90;
border-color: #adadad;
}
</style> </style>
<section class="content-header"> <section class="content-header">
<h1>商户合规文件补充 <h1>商户合规文件补充
@ -11,6 +24,64 @@
</section> </section>
<div class="panel-body box box-warning ng-scope" style="margin-top: 20px;"> <div class="panel-body box box-warning ng-scope" style="margin-top: 20px;">
<div class="form-horizontal"> <div class="form-horizontal">
<div class="form-group">
<div class="panel-body">
<div class="form-horizontal">
<div class="form-group">
<label class="control-label col-sm-3">Shop Photo</label>
<div class="col-sm-3">
<div class="form-control-static"><em>1:</em>&nbsp;
<button class="btn btn-primary" type="button" ng-if="file.client_less_file && file.file_company.status != 0 && file.file_company.status!=1"
ngf-select="uploadShopPhoto($file)" accept="image/*">
<i class="fa fa-upload"></i> Upload Shop Photo1
</button>
</div>
<uib-progressbar value="shopPhotoProgress.value"
ng-if="shopPhotoProgress"></uib-progressbar>
<a target="_blank" ng-if="file.photo_info.company_photo" ng-href="{{file.photo_info.company_photo}}">
<img ng-src="{{file.photo_info.company_photo}}"
ng-if="file.photo_info.company_photo"
class="thumbnail img-size col-sm-9">
</a>
</div>
<div class="col-sm-3">
<div class="form-control-static"><em>2:</em>&nbsp;
<button class="btn btn-primary" type="button" ng-if="file.client_less_file && file.file_company.status != 0 && file.file_company.status!=1"
ngf-select="uploadStorePhoto($file)" accept="image/*">
<i class="fa fa-upload"></i> Upload Shop Photo2
</button>
</div>
<uib-progressbar value="storePhotoProgress.value"
ng-if="storePhotoProgress"></uib-progressbar>
<a target="_blank" ng-if="file.photo_info.store_photo" ng-href="{{file.photo_info.store_photo}}">
<img ng-src="{{file.photo_info.store_photo}}" ng-if="file.photo_info.store_photo"
class="thumbnail img-size col-sm-9">
</a>
</div>
</div>
<div class="form-group">
<label class="control-label col-sm-3">
Website</label>
<div class="col-sm-6">
<input type="text" class="form-control" ng-if="file.client_less_file && file.file_company.status != 0 && file.file_company.status!=1"
ng-model="file.photo_info.web_site"
maxlength="200">
<input type="text" class="form-control" ng-if="!file.client_less_file"
ng-model="file.photo_info.web_site"
maxlength="200" readonly>
<p class="text-info">
<i class="fa fa-info"></i> We are dedicated to provide you and your customers a better payment experience. To achieve this, we would like to request a fully completed trading information from you according to your actual payment scenarios:<br>
1) please provide a website link if the transactions take place in online scenario;<br>
2) provide two shop photos with inside and outside scenes if the transactions take place in offline scenario.<br>
<i class="fa fa-info"></i> Please be aware that failing to submit the related documents may affect your payment service. Thank you very much for your cooperation.<br>
<i class="fa fa-info"></i> 请根据您的实际交易场景完善网站信息和店铺照片,如您使用线上交易,请补充网站信息。如您使用线下交易,请补充店铺照片两张。如未根据实际交易场景选择提交材料,将会影响交易
</p>
</div>
</div>
</div>
</div>
</div>
<div class="form-group"> <div class="form-group">
<label class="control-label col-sm-3">* bank statement</label> <label class="control-label col-sm-3">* bank statement</label>
<div class="col-sm-3"> <div class="col-sm-3">

@ -382,7 +382,6 @@
id="contact_person-input" maxlength="50"> id="contact_person-input" maxlength="50">
<div ng-messages="partnerForm.contact_person.$error" <div ng-messages="partnerForm.contact_person.$error"
ng-if="partnerForm.contact_person.$dirty"> ng-if="partnerForm.contact_person.$dirty">
<p class="small text-danger" ng-message="required">Required Field</p>
<p class="small text-danger" ng-message="maxlength">Less Than 50 <p class="small text-danger" ng-message="maxlength">Less Than 50
Characters(including symbols and spaces)</p> Characters(including symbols and spaces)</p>
</div> </div>
@ -397,7 +396,6 @@
</div> </div>
<div ng-messages="partnerForm.contact_phone.$error" <div ng-messages="partnerForm.contact_phone.$error"
ng-if="partnerForm.contact_phone.$dirty"> ng-if="partnerForm.contact_phone.$dirty">
<p class="small text-danger" ng-message="required">Required Field</p>
<p class="small text-danger" ng-message="maxlength">Less Than 20 <p class="small text-danger" ng-message="maxlength">Less Than 20
Characters(including symbols and spaces)</p> Characters(including symbols and spaces)</p>
</div> </div>
@ -411,7 +409,6 @@
</div> </div>
<div ng-messages="partnerForm.contact_email.$error" <div ng-messages="partnerForm.contact_email.$error"
ng-if="partnerForm.contact_email.$dirty"> ng-if="partnerForm.contact_email.$dirty">
<p class="small text-danger" ng-message="required">Required Field</p>
<p class="small text-danger" ng-message="maxlength">Less Than 50 <p class="small text-danger" ng-message="maxlength">Less Than 50
Characters(including symbols and spaces)</p> Characters(including symbols and spaces)</p>
</div> </div>
@ -423,13 +420,11 @@
<div class="col-sm-8"> <div class="col-sm-8">
<input class="form-control" ng-model="partner.contact_job" <input class="form-control" ng-model="partner.contact_job"
required required
name="legal_representative_job" id="contact_job-id" name="contact_job" id="contact_job-id"
maxlength="50"> maxlength="50">
</div> </div>
<div ng-messages="partnerForm.contact_job.$error" <div ng-messages="partnerForm.contact_job.$error"
ng-if="partnerForm.contact_job.$dirty"> ng-if="partnerForm.contact_job.$dirty">
<p class="small text-danger" ng-message="required">Required
Field</p>
<p class="small text-danger" ng-message="maxlength">Less Than 50 <p class="small text-danger" ng-message="maxlength">Less Than 50
Characters(including symbols and spaces)</p> Characters(including symbols and spaces)</p>
</div> </div>
@ -508,8 +503,8 @@
name="legal_representative_job" id="legal_representative_job-id" name="legal_representative_job" id="legal_representative_job-id"
maxlength="50"> maxlength="50">
</div> </div>
<div ng-messages="partnerForm.legal_representative_email.$error" <div ng-messages="partnerForm.legal_representative_job.$error"
ng-if="partnerForm.legal_representative_email.$dirty"> ng-if="partnerForm.legal_representative_job.$dirty">
<p class="small text-danger" ng-message="required">Required <p class="small text-danger" ng-message="required">Required
Field</p> Field</p>
<p class="small text-danger" ng-message="maxlength">Less Than 50 <p class="small text-danger" ng-message="maxlength">Less Than 50

@ -545,7 +545,6 @@
id="contact_person-input" maxlength="50"> id="contact_person-input" maxlength="50">
<div ng-messages="partnerForm.contact_person.$error" <div ng-messages="partnerForm.contact_person.$error"
ng-if="partnerForm.contact_person.$dirty"> ng-if="partnerForm.contact_person.$dirty">
<p class="small text-danger" ng-message="required">Required Field</p>
<p class="small text-danger" ng-message="maxlength">Less Than 50 <p class="small text-danger" ng-message="maxlength">Less Than 50
Characters(including symbols and spaces)</p> Characters(including symbols and spaces)</p>
</div> </div>
@ -560,7 +559,7 @@
</div> </div>
<div ng-messages="partnerForm.contact_phone.$error" <div ng-messages="partnerForm.contact_phone.$error"
ng-if="partnerForm.contact_phone.$dirty"> ng-if="partnerForm.contact_phone.$dirty">
<p class="small text-danger" ng-message="required">Required Field</p>
<p class="small text-danger" ng-message="maxlength">Less Than 20 <p class="small text-danger" ng-message="maxlength">Less Than 20
Characters(including symbols and spaces)</p> Characters(including symbols and spaces)</p>
</div> </div>
@ -574,7 +573,7 @@
</div> </div>
<div ng-messages="partnerForm.contact_email.$error" <div ng-messages="partnerForm.contact_email.$error"
ng-if="partnerForm.contact_email.$dirty"> ng-if="partnerForm.contact_email.$dirty">
<p class="small text-danger" ng-message="required">Required Field</p>
<p class="small text-danger" ng-message="maxlength">Less Than 50 <p class="small text-danger" ng-message="maxlength">Less Than 50
Characters(including symbols and spaces)</p> Characters(including symbols and spaces)</p>
</div> </div>
@ -587,17 +586,17 @@
<div class="col-sm-8"> <div class="col-sm-8">
<input class="form-control" ng-model="partner.contact_job" <input class="form-control" ng-model="partner.contact_job"
required required
name="legal_representative_job" id="contact_job-id" name="contact_job" id="contact_job-id"
maxlength="50"> maxlength="50">
</div> </div>
<div ng-messages="partnerForm.contact_job.$error" <div ng-messages="partnerForm.contact_job.$error"
ng-if="partnerForm.contact_job.$dirty"> ng-if="partnerForm.contact_job.$dirty">
<p class="small text-danger" ng-message="required">Required
Field</p>
<p class="small text-danger" ng-message="maxlength">Less Than 50 <p class="small text-danger" ng-message="maxlength">Less Than 50
Characters(including symbols and spaces)</p> Characters(including symbols and spaces)</p>
</div> </div>
</div> </div>
<div> <div>
<label><input type="checkbox" ng-click="checkboxOnclick(this)">Legal Representative Same As Contact Information</label> <label><input type="checkbox" ng-click="checkboxOnclick(this)">Legal Representative Same As Contact Information</label>
</div> </div>
@ -672,8 +671,8 @@
name="legal_representative_job" id="legal_representative_job-id" name="legal_representative_job" id="legal_representative_job-id"
maxlength="50"> maxlength="50">
</div> </div>
<div ng-messages="partnerForm.legal_representative_email.$error" <div ng-messages="partnerForm.legal_representative_job.$error"
ng-if="partnerForm.legal_representative_email.$dirty"> ng-if="partnerForm.legal_representative_job.$dirty">
<p class="small text-danger" ng-message="required">Required <p class="small text-danger" ng-message="required">Required
Field</p> Field</p>
<p class="small text-danger" ng-message="maxlength">Less Than 50 <p class="small text-danger" ng-message="maxlength">Less Than 50
@ -747,8 +746,8 @@
name="legal_representative_job" id="legal_representative_job-id" name="legal_representative_job" id="legal_representative_job-id"
maxlength="50"> maxlength="50">
</div> </div>
<div ng-messages="partnerForm.legal_representative_email.$error" <div ng-messages="partnerForm.legal_representative_job.$error"
ng-if="partnerForm.legal_representative_email.$dirty"> ng-if="partnerForm.legal_representative_job.$dirty">
<p class="small text-danger" ng-message="required">Required <p class="small text-danger" ng-message="required">Required
Field</p> Field</p>
<p class="small text-danger" ng-message="maxlength">Less Than 50 <p class="small text-danger" ng-message="maxlength">Less Than 50
@ -867,7 +866,7 @@
<div class="panel-body" ng-if="role !='compliance'"> <div class="panel-body" ng-if="role !='compliance'">
<div class="form-horizontal"> <div class="form-horizontal">
<div class="form-group col-sm-6" <div class="form-group col-sm-6"
ng-class="{'has-error':partnerForm.address.$invalid && partnerForm.address.$dirty}"> ng-class="{'has-error':partnerForm.registered_address.$invalid && partnerForm.registered_address.$dirty}">
<label class="control-label col-sm-4" for="registered_address-input">* <label class="control-label col-sm-4" for="registered_address-input">*
Registered Office Address</label> Registered Office Address</label>
<div class="col-sm-8"> <div class="col-sm-8">
@ -945,7 +944,7 @@
<div class="panel-body" ng-if="role=='compliance'"> <div class="panel-body" ng-if="role=='compliance'">
<div class="form-horizontal"> <div class="form-horizontal">
<div class="form-group col-sm-6" <div class="form-group col-sm-6"
ng-class="{'has-error':partnerForm.address.$invalid && partnerForm.address.$dirty}"> ng-class="{'has-error':partnerForm.registered_address.$invalid && partnerForm.registered_address.$dirty}">
<label class="control-label col-sm-4" for="registered_address-input">* <label class="control-label col-sm-4" for="registered_address-input">*
Registered Office Address</label> Registered Office Address</label>
<div class="col-sm-8"> <div class="col-sm-8">

@ -37,20 +37,17 @@ define(['angular', 'decimal', 'uiBootstrap', 'uiRouter', 'angularEcharts'], func
}) })
}; };
$scope.getDetailByMonths(); $scope.getDetailByMonths();
$scope.surchargeAccountDetail = function (client_moniker,mon) { $scope.surchargeAccountDetail = function (detail) {
$uibModal.open({ $uibModal.open({
templateUrl: '/static/payment/surchargeaccount/templates/client_surcharge_account_dialog.html', templateUrl: '/static/payment/surchargeaccount/templates/client_surcharge_account_dialog.html',
controller: 'accountDetailCtrl', controller: 'accountDetailCtrl',
size: 'lg', size: 'lg',
resolve: { resolve: {
client_moniker: function () { detail: function(){
return client_moniker; return detail;
}, },
month: function () { surchargeDetailData: ['$http', function ($http) {
return mon; return $http.get('/client/partner_info/' + detail.client_moniker + '/account/transactions/date?detailId=' + detail.detail_id);
},
transactions: ['$http', function ($http) {
return $http.get('/client/partner_info/' + client_moniker + '/account/transactions/date?date=' + mon);
}] }]
} }
}); });

@ -25,13 +25,13 @@
<td ng-bind="details.total_surcharge|currency:'$'" <td ng-bind="details.total_surcharge|currency:'$'"
style="color: red;vertical-align:middle"></td> style="color: red;vertical-align:middle"></td>
<td style="vertical-align:middle"> <td style="vertical-align:middle">
<span ng-if="details.is_valid">Yes</span> <span ng-if="details.checkout">Yes</span>
<span ng-if="!details.is_valid">No</span> <span ng-if="!details.checkout">No</span>
</td> </td>
<td style="vertical-align:middle"> <td style="vertical-align:middle">
<i class="fa fa-bars" <i class="fa fa-bars"
style="font-size: 15px;color: #3c8dbc;cursor: pointer;padding-left: 15px" style="font-size: 15px;color: #3c8dbc;cursor: pointer;padding-left: 15px"
ng-click="surchargeAccountDetail(details.client_moniker,details.settle_month)"></i> ng-click="surchargeAccountDetail(details)"></i>
</td> </td>
</tr> </tr>
</tbody> </tbody>

@ -2,6 +2,30 @@
<h4>Surcharge Accountdddd Detail{{partner.client_moniker?'('+partner.client_moniker+')':''}}</h4> <h4>Surcharge Accountdddd Detail{{partner.client_moniker?'('+partner.client_moniker+')':''}}</h4>
</div> </div>
<div class="modal-body"> <div class="modal-body">
<div class="box box-default">
<div class="box-header">Credits</div>
<div class="box-body">
<div class="table-responsive col-sm-12">
<table class="table table-bordered table-striped table-hover">
<thead>
<tr>
<th>Create Time</th>
<th>Amount</th>
<th>Remark</th>
<th>Operator</th>
</tr>
</thead>
<tbody>
<tr ng-repeat="surcharge in surchargeDetailData|propsFilter:{type:'Credit'}:true">
<td ng-bind="surcharge.create_time|date:'yyyy-MM-dd HH:mm:ss'"></td>
<td ng-bind="surcharge.amount|currency:'AUD'"></td>
<td ng-bind="surcharge.remark"></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="box box-default"> <div class="box box-default">
<div class="box-header">Debits</div> <div class="box-header">Debits</div>
<div class="box-body"> <div class="box-body">
@ -17,7 +41,7 @@
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
<tr ng-repeat="detail in surchargeDetailData"> <tr ng-repeat="detail in surchargeDetailData|propsFilter:{type:'Debit'}:true">
<td ng-bind="detail.settle_date|date:'yyyy-MM-dd'"></td> <td ng-bind="detail.settle_date|date:'yyyy-MM-dd'"></td>
<td ng-bind="detail.amount|currency:'AUD'"></td> <td ng-bind="detail.amount|currency:'AUD'"></td>
<td ng-bind="detail.total_surcharge|currency:'AUD'"></td> <td ng-bind="detail.total_surcharge|currency:'AUD'"></td>

Loading…
Cancel
Save