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

master
yixian 5 years ago
commit 489ef0ed4d

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

@ -198,7 +198,7 @@ public class BDAnalysisServiceImpl implements BDAnalysisService {
List<JSONObject> bdSaleList = bdAnalysisMapper.getOneDayBDSaleList(params);
if (bdSaleList.size() != 0) {
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){
JSONObject object = new JSONObject(item);
object.put("log_id", UUID.randomUUID().toString());
@ -216,7 +216,7 @@ public class BDAnalysisServiceImpl implements BDAnalysisService {
List<JSONObject> orgSaleList= transactionAnalysisMapper.getOneDayOrgMerchantSaleList(params);
if (orgSaleList.size() != 0) {
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){
JSONObject object = new JSONObject(item);
object.put("log_id", UUID.randomUUID().toString());

@ -208,5 +208,5 @@ public interface RetailAppService {
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.env.PlatformEnvironment;
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.ForbiddenException;
import au.com.royalpay.payment.tools.exceptions.NotFoundException;
@ -208,6 +209,8 @@ public class RetailAppServiceImp implements RetailAppService {
@Resource
private ClientBankAccountMapper clientBankAccountMapper;
@Resource
private SysConfigManager sysConfigManager;
@Resource
private StringRedisTemplate stringRedisTemplate;
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";
@ -2269,6 +2272,8 @@ public class RetailAppServiceImp implements RetailAppService {
client.put("wechat_rate", weChatRate.getBigDecimal("rate_value").setScale(2, BigDecimal.ROUND_DOWN));
client.put("clean", "T+" + 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 {
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));
}
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");
if (alipayOnlineRate != null) {
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");
}
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"));
if (bankAccount == null || bankAccount.size() <= 0) {
throw new BadRequestException("The Partner's Account is not config!");
@ -2349,11 +2360,12 @@ public class RetailAppServiceImp implements RetailAppService {
}
@Override
public void commitAuthFilesToCompliance(JSONObject device) {
public void commitAuthFilesToCompliance(JSONObject device, JSONObject photoInfo) {
String clientType = device.getString("client_type");
deviceSupport.findRegister(clientType);
JSONObject client = clientManager.getClientInfo(device.getIntValue("client_id"));
JSONObject account = clientAccountMapper.findById(device.getString("account_id"));
account.put("photo_info", photoInfo);
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)
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.mappers.system.ClientComplianceCompanyMapper;
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.permission.enums.ManagerRole;
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.PageBounds;
import com.github.miemiedev.mybatis.paginator.domain.PageList;
import org.apache.commons.lang3.StringUtils;
import org.omg.CORBA.SystemException;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@ -31,6 +34,10 @@ public class ClientComplianceApplyImpl implements ClientComplianceApply
private ClientComplianceCompanyMapper clientComplianceCompanyMapper;
@Resource
private ClientFilesMapper clientFilesMapper;
@Resource
private ClientManager clientManager;
@Resource
private ClientMapper clientMapper;
@Override
public JSONObject listClientComplianceApply(JSONObject manager, ClientComplianceQuery applyQuery) {
@ -88,6 +95,24 @@ public class ClientComplianceApplyImpl implements ClientComplianceApply
complianceDetail.put("description",' ');
clientComplianceCompanyMapper.update(complianceDetail);
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

@ -275,6 +275,17 @@ public class TestController implements ApplicationEventPublisherAware {
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)
public void fixTransactions() {
List<JSONObject> orders = orderMapper.listOrdersWithNoTransactions();

@ -22,7 +22,7 @@ public interface StatisticsBDSalesReportMapper {
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)
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 com.alibaba.fastjson.JSONObject;
import org.apache.ibatis.annotations.Param;
import org.springframework.core.annotation.Order;
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'")
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);
@AutoSql(type = SqlType.SELECT)

@ -2036,7 +2036,24 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid
throw new InvalidShortIdException();
}
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;
}
@ -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("clean", "T+" + 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 {
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));
}
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");
if (alipayOnlineRate != null) {
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));
}
} 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"));
@ -2940,7 +2965,7 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid
file.put("file_id", existFile.getString("file_id"));
clientFilesMapper.update(file);
}
if (!renewal && client.getIntValue("source") != 4) {
if (!renewal) {
clientModifySupport.processClientModify(new OpenStatusModify(manager, clientMoniker, 2));
}
@ -3329,6 +3354,10 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid
@Transactional
public void commitAuthFilesToCompliance(String clientMoniker, JSONObject account, String source) {
JSONObject client = getClientInfoByMoniker(clientMoniker);
String clientPayType = "";
String companyPhoto = "";
String storePhoto= "";
String webSite= "";
int sourceEnum = 2;
if (client == null) {
throw new InvalidShortIdException();
@ -3353,13 +3382,21 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid
if ("app".equals(source.toLowerCase())) {
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"));
if (fileComp == null) {
fileComp = new JSONObject();
fileComp.put("client_id", client.getIntValue("client_id"));
fileComp.put("submit_time", new Date());
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("commit_by_id", account.getString("account_id"));
clientComplianceCompanyMapper.save(fileComp);
@ -3367,6 +3404,9 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid
} else if (fileComp.getIntValue("status") == 2) {
fileComp.put("status", 0);
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("commit_by_id", account.getString("account_id"));
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("clean", "T+" + 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 {
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));
}
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");
if (alipayOnlineRate != null) {
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));
}
} 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"));
@ -4129,7 +4177,7 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid
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_displayname", manager.getString("display_name"));
e.put("operator", manager.getString("display_name"));
}
});
return transactions;
@ -4150,7 +4198,14 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid
if (client == null) {
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

@ -55,9 +55,11 @@ public class PartnerManageController {
}
@RequestMapping(value = "/init/merchant_code", method = RequestMethod.GET)
public String initMerchantCode() {
return clientManager.initMerchantCode();
@RequestMapping(value = "/init/merchant_code", method = RequestMethod.GET,produces = "application/json")
public JSONObject initMerchantCode() {
JSONObject result = new JSONObject();
result.put("partner_code", clientManager.initMerchantCode());
return result;
}
@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})
public String queryAlipayGmsStatus(@PathVariable String clientMoniker, @ModelAttribute(CommonConsts.MANAGER_STATUS) JSONObject manager) {
return clientManager.queryAlipayGmsStatus(clientMoniker, manager);
public JSONObject queryAlipayGmsStatus(@PathVariable String clientMoniker, @ModelAttribute(CommonConsts.MANAGER_STATUS) JSONObject 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})
@ -690,8 +694,10 @@ public class PartnerManageController {
}
@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) {
return clientManager.queryAlipayOnlineGmsStatus(clientMoniker, manager);
public JSONObject queryAlipayOnlineGmsStatus(@PathVariable String clientMoniker, @ModelAttribute(CommonConsts.MANAGER_STATUS) JSONObject 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})

@ -44,6 +44,7 @@ import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
@ -583,7 +584,8 @@ public class PartnerViewController {
@PartnerMapping(value = "/clientCompliance/{clientMoniker}/viewCommit", method = RequestMethod.POST)
@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");
}

@ -782,6 +782,7 @@ public class RiskBusinessServiceImpl implements RiskBusinessService, ManagerTodo
}
List<String> clientEmails = new ArrayList<>();
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 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");

@ -166,7 +166,7 @@ public class SignInAccountServiceImpl implements SignInAccountService, Applicati
client.putAll(clientConfigService.find(client_id));
client = clientInfoWithNoSecretInfo(client);
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"));
if (clientFiles != null && clientFiles.size() > 0) {
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",
"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",
"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) {
simpleClient.put(col, client.get(col));
}
@ -644,7 +644,7 @@ public class SignInAccountServiceImpl implements SignInAccountService, Applicati
JSONObject result = new JSONObject();
result.put("client_less_file", false);
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"));
boolean clientFilesIsLess = false;
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);
if (clientFilesIsLess) {
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"));
}
whenClientLessFile(client, 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")));
clientsSurchargeAccountsMapper.update(surchargeAccount);
detail.put("checkout", 1);
detail.put("operator_id", manager.getString("display_name"));
detail.put("operator_id", manager.getString("manager_id"));
financialSurchargeAccountDetailMapper.update(detail);
} finally {
locker.unlock(detail.getIntValue("client_id") + "_" + detail.getString("settle_month") + "_fill");

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

@ -79,7 +79,10 @@
create_time,
clearing_amount
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>
</mapper>

@ -19,6 +19,11 @@
and file_name='client_agree_file'
and status != 1
</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 sys_files
set state = 2

@ -1,7 +1,13 @@
<html xmlns:th="http://www.thymeleaf.org" lang="zh">
<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>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>
<p>您好,您的风控材料—<span th:text="${client.company_name}"></span><span th:text="${client.client_moniker}"></span>
<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>
<p>
<img style="width: 120px;height: 120px"
@ -9,7 +15,7 @@
Contact Us<br>
Email:<br>
<a href="mailto:info@royalpay.com.au">info@royalpay.com.au</a> <br>
Tel:<br>
Tel:<br>与调查交易金额对应的购物小票/发票存根照片 要求:照片应清晰
1300 10 77 50<br>
<br>
Service WeChat Account:<br>

@ -121,12 +121,12 @@ margin-bottom: 10%;"/>
ng-class="currentUser.org?(currentUser.org.banner_class||'fxplus'):'royalpay'">
<header class="main-header">
<!--Logo-->
<!--Logo-->
<a href="#" class="logo logo-yedian shine" ng-if="!currentUser.org">
<!--mini logo for sidebar mini 50x50 pixels -->
<span class="logo-mini"><img src="static/images/r_white_logo.svg"
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"
style="max-height: 35px;">
<!--<b>RoyalPay</b>-->
@ -141,7 +141,7 @@ margin-bottom: 10%;"/>
style="max-height: 35px;margin-bottom: 8px;margin-right: 5px;"><b
ng-bind="currentUser.org.name"></b></span>
</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">
@ -180,32 +180,32 @@ margin-bottom: 10%;"/>
<span class="label label-warning" ng-if="notifyCounts">{{notifyCounts}}</span>
</a>
<ul class="dropdown-menu">
<!--
<li class="header">System notifications,please resolve it!</li>
-->
<!--
<li class="header">System notifications,please resolve it!</li>
-->
<li>
<!--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%;">
<li>
<a ng-if="partner_application_new" ui-sref="partner_apply">
<i class="fa fa-commenting"></i>
新的自主申请商户<span style="font-size:smaller;float:right;right: 0"></span>
</a>
<a ng-if="partner_application_new" ui-sref="partner_apply">
<i class="fa fa-commenting"></i>
新的自主申请商户<span style="font-size:smaller;float:right;right: 0"></span>
</a>
</li>
<li>
<a ng-if="refundReviews && ('10000000000'|withRole)" ui-sref="refundReview">
<i class="fa fa-commenting"></i>
新的退款申请<span style="font-size:smaller;float:right;right: 0"></span>
</a>
<a ng-if="refundReviews && ('10000000000'|withRole)" ui-sref="refundReview">
<i class="fa fa-commenting"></i>
新的退款申请<span style="font-size:smaller;float:right;right: 0"></span>
</a>
</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>
</li>
</ul>
</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>
<a href class="dropdown-toggle" uib-dropdown-toggle>
<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>
</a>
<ul class="dropdown-menu user-dropdown-menu" ng-cloak>
<!--User image-->
<!--User image-->
<li class="user-header user-header-yedian">
<img ng-src="{{currentUser.org.logo||'static/images/r_white_logo.svg'}}" class="img-circle"
alt="User Image">
@ -233,7 +233,7 @@ margin-bottom: 10%;"/>
<i class="fa fa-tty" title="Service"
ng-class="{'text-orange':!('10000'|withRole),'text-gray':('10000'|withRole)}"></i>
<!--<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"
ng-class="{'text-orange':!('1000000'|withRole),'text-gray':('1000000'|withRole)}"></i>
<i class="fa fa-map-o" title="Markting"
@ -247,16 +247,16 @@ margin-bottom: 10%;"/>
<i class="fa fa-user-plus" title="Org Manager"
ng-class="{'text-orange':!('1000000000000'|withRole),'text-gray':('1000000000000'|withRole)}"></i>
<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"-->
<!--ng-class="{'text-orange':!('100000000000000'|withRole),'text-gray':('1000000000000'|withRole)}"></i>-->
</small>
</p>
</li>
<!--
Menu Footer
-->
<!--ng-class="{'text-orange':!('100000000000000'|withRole),'text-gray':('1000000000000'|withRole)}"></i>-->
</small>
</p>
</li>
<!--
Menu Footer
-->
<li class="user-footer">
<div class="pull-left">
<a href class="btn btn-default btn-flat" ng-click="changePwd()">Change Password</a>
@ -267,7 +267,7 @@ margin-bottom: 10%;"/>
</li>
</ul>
</li>
<!--Control Sidebar Toggle Button -->
<!--Control Sidebar Toggle Button -->
</ul>
</div>
</nav>
@ -664,11 +664,11 @@ margin-bottom: 10%;"/>
</li>
<!-- <li ui-sref-active="active" ng-if="'citypartner'|withModule">
<a ui-sref="citypartner_reg" ui-sref-opts="{reload:true}">
<i class="fa fa-users"></i> <span>City Partners</span>
</a>
</li>-->
<!-- <li ui-sref-active="active" ng-if="'citypartner'|withModule">
<a ui-sref="citypartner_reg" ui-sref-opts="{reload:true}">
<i class="fa fa-users"></i> <span>City Partners</span>
</a>
</li>-->
<!--
<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}">
@ -690,21 +690,21 @@ margin-bottom: 10%;"/>
<i class="fa fa-gift"></i> <span>红包返现</span>
</a>
</li>-->
<!-- <li ui-sref-active="active" ng-if="('funds'|withModule)">
<a ui-sref="funds">
<i class="fa fa-money"></i> <span>增值计划</span>
</a>
</li>-->
<!-- <li ui-sref-active="active" ng-if="('funds'|withModule)">
<a ui-sref="funds">
<i class="fa fa-money"></i> <span>增值计划</span>
</a>
</li>-->
<!--<li class="header nav-header" ng-if="('1000000000000'|withRole)">机构|Agent</li>-->
<!--<li ui-sref-active="active" ng-if="('1000000000000'|withRole)">-->
<!--<a ui-sref="analysis_agent" ui-sref-opts="{reload:true}">-->
<!--<i class="fa fa-hand-peace-o"></i> <span>机构数据分析|Agent Analysis</span>-->
<!--</a>-->
<!--<a ui-sref="analysis_agent" ui-sref-opts="{reload:true}">-->
<!--<i class="fa fa-hand-peace-o"></i> <span>机构数据分析|Agent Analysis</span>-->
<!--</a>-->
<!--</li>-->
<!--<li ui-sref-active="active" ng-if="('clearing_org'|withModule) && currentUser.org_id>1">-->
<!--<a ui-sref="clearingLogsForOrg" ui-sref-opts="{reload:true}">-->
<!--<i class="fa fa-line-chart"></i> <span>清算记录|Settlement Logs</span>-->
<!--</a>-->
<!--<a ui-sref="clearingLogsForOrg" ui-sref-opts="{reload:true}">-->
<!--<i class="fa fa-line-chart"></i> <span>清算记录|Settlement Logs</span>-->
<!--</a>-->
<!--</li>-->
<li class="menu-group" ng-if="roleNow=='sitemanager'">
<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',
cache: false,
controller: 'riskBusinessCtrl'
}).state('analysis_monitoring.riskEvent_detail', {
}).state('analysis_monitoring.risk_business.riskEvent_detail', {
url: '/{risk_id}/detail',
templateUrl: '/static/analysis/templates/riskEvent_detail.html',
controller: 'riskEventDetailCtrl',
@ -116,6 +116,10 @@ define(['angular', 'jquery', 'uiRouter', './monitoring/analysis-monitoring'],
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', {
url: '/{risk_id}/bd/detail',
templateUrl: '/static/analysis/templates/riskEvent_detail_bd.html',
@ -129,10 +133,6 @@ define(['angular', 'jquery', 'uiRouter', './monitoring/analysis-monitoring'],
url: '/new_riskEvent',
templateUrl: '/static/analysis/templates/new_riskEvent.html',
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('未知行业');
$scope.$watch('params',function (newVal) {
console.log('params changed--->',newVal)
});
console.log('riskBusinessCtrl loaded')
// console.log(industries);
// 加载风险注册事件
$scope.loadRiskEvents = function (page) {
@ -423,7 +427,7 @@ define(['angular', 'jquery', 'uiRouter', './monitoring/analysis-monitoring'],
content: 'Update riskEvent successfully',
type: 'success'
});
$state.reload('analysis_monitoring.riskEvent_detail');
$state.reload('analysis_monitoring.risk_business.riskEvent_detail');
}, function (resp) {
commonDialog.alert({
title: 'Error',
@ -451,7 +455,7 @@ define(['angular', 'jquery', 'uiRouter', './monitoring/analysis-monitoring'],
content: 'Are you sure?'
}).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) {
commonDialog.alert({
title: 'Failed to change ' + channel + ' channel permission status',
@ -470,7 +474,7 @@ define(['angular', 'jquery', 'uiRouter', './monitoring/analysis-monitoring'],
content: 'Are you sure?'
}).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) {
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.materials.splice($index + 1, 0,
{key: new Date().getTime(), value: ""}); // 用时间戳作为每个item的key
// 增加新的input后允许删除
{key: new Date().getTime(), value: ""}); // 用时间戳作为每个item的key
// 增加新的input后允许删除
$scope.canMinus = true;
};
$scope.decrease = function($index) {
// 如果input大于1删除
if ($scope.materials.length > 1) {
$scope.materials.splice($index, 1);
}
// 如果回复数为1不允许删除
if ($scope.materials.length == 1) {
$scope.canMinus = false;
}
if ($scope.materials.length > 1) {
$scope.materials.splice($index, 1);
}
// 如果回复数为1不允许删除
if ($scope.materials.length == 1) {
$scope.canMinus = false;
}
};
var array=new Array();
var validIndex = 0;
@ -773,11 +777,9 @@ define(['angular', 'jquery', 'uiRouter', './monitoring/analysis-monitoring'],
$scope.is_send_client = false;
$scope.changeIsSendClient = function(flag) {
$scope.is_send_client = flag
};
$scope.send_clean_days = false;
$scope.changeIsSendClient = function (flag) {
$scope.send_clean_days = flag
};
$scope.send_clean_days = false;
$scope.save = function (form) {
if (form.$invalid) {
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 saveRiskBtnInnerHtmlBak = saveRiskBtn.innerHTML;
saveRiskBtn.disabled = true;
debugger
saveRiskBtn.innerHTML = "<i class='fa fa-spinner fa-spin '></i> Processing";
$http.post('/risk/business/events', $scope.riskEvent).then(function (resp) {
saveRiskBtn.innerHTML = saveRiskBtnInnerHtmlBak;

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

@ -18,10 +18,10 @@
<div class="nav-tabs-custom">
<ul class="nav nav-tabs">
<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 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>
<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"
class="pull-right"
ng-click="changeEditFlag(editFlag)"
ng-if="('10000000000'|withRole)">
ng-if="('10000000000'|withRole)">
<i class="fa fa-edit"></i> Edit
</a>
</div>
@ -367,6 +367,7 @@
</tr>
</tbody>
</table>
<p ng-if="tradeLogs.length != 0" style="text-align: center;margin: 5px 9px">共计<span>{{tradeLogs.length}}</span></p>
</div>
</div>
@ -464,11 +465,11 @@
</label>
<div class="col-sm-8">
<textarea class="form-control"
ng-model="riskEventEdit.order_ids"
type="text"
name="order_ids"
id="order-ids-input"
required>
ng-model="riskEventEdit.order_ids"
type="text"
name="order_ids"
id="order-ids-input"
required>
</textarea>
<div ng-messages="riskEventForm.order_ids.$error"
ng-if="riskEventForm.order_ids.$dirty">
@ -607,17 +608,17 @@
<div class="col-sm-8">
<textarea class="form-control"
ng-model="riskEventEdit.channel_result"
type="text"
name="channel_result"
id="channel-result-input"/>
ng-model="riskEventEdit.channel_result"
type="text"
name="channel_result"
id="channel-result-input"/>
<!--<select class="form-control"-->
<!--name="channel_result"-->
<!--ng-model="riskEventEdit.channel_result"-->
<!--id="channel-result-input"-->
<!--ng-options="item for item in channelResults">-->
<!--<option value="">Please Choose</option>-->
<!--name="channel_result"-->
<!--ng-model="riskEventEdit.channel_result"-->
<!--id="channel-result-input"-->
<!--ng-options="item for item in channelResults">-->
<!--<option value="">Please Choose</option>-->
<!--</select>-->
</div>
</div>

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

@ -152,7 +152,7 @@
<a class="text-primary"
role="button"
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
</a>
</td>

@ -395,7 +395,7 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter
}
$scope.initMerchantCode = function () {
$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.merchantIsValid = true;
});
@ -1908,7 +1908,7 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter
};
$scope.queryAlipayGms = function () {
$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) {
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 () {
$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) {
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 () {
$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.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) {
$scope.file = file.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
$scope.uploadBankFile = function (file) {
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')) {
$scope.idIsImage = false;
}
$scope.uploadCompanyFile = function (file) {
if (file != null) {
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'});
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({
title: 'Warning',
content: 'Are you sure to submit files?'
}).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({
title: 'Success',
content: 'Commit Successful',
@ -1855,6 +1902,17 @@ define(['angular', 'decimal', 'uiRouter', 'ngBootSwitch', 'ngFileUpload', 'uiBoo
$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;
});

@ -676,7 +676,7 @@
<div class="col-sm-8">
<input class="form-control" ng-model="partner.contact_job"
required
name="legal_representative_job" id="contact_job-id"
name="contact_job" id="contact_job-id"
maxlength="50">
</div>
<div ng-messages="partnerForm.contact_job.$error"
@ -718,7 +718,7 @@
</div>
</div>
<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">*
Phone</label>
<div class="col-sm-2">
@ -938,7 +938,7 @@
<div class="panel-body">
<div class="form-horizontal">
<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">*
Registered Office Address</label>
<div class="col-sm-8">

@ -581,7 +581,7 @@
<div class="col-sm-8">
<input class="form-control" ng-model="partner.contact_job"
required
name="legal_representative_job" id="contact_job-id"
name="contact_job" id="contact_job-id"
maxlength="50">
</div>
<div ng-messages="partnerForm.contact_job.$error"
@ -621,7 +621,7 @@
</div>
</div>
<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">*
Phone</label>
<div class="col-sm-2">
@ -697,8 +697,8 @@
name="legal_representative_job" id="legal_representative_job-id"
maxlength="50">
</div>
<div ng-messages="partnerForm.legal_representative_email.$error"
ng-if="partnerForm.legal_representative_email.$dirty">
<div ng-messages="partnerForm.legal_representative_job.$error"
ng-if="partnerForm.legal_representative_job.$dirty">
<p class="small text-danger" ng-message="required">Required
Field</p>
<p class="small text-danger" ng-message="maxlength">Less Than 50
@ -810,7 +810,7 @@
<div class="panel-body">
<div class="form-horizontal">
<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">*
Registered Office Address</label>
<div class="col-sm-8">

@ -35,7 +35,11 @@
<div class="col-sm-10">
<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>
</div>
</div>
@ -70,6 +74,41 @@
</div>
<div class="panel-body">
<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">
<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>

@ -2,6 +2,19 @@
img {
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>
<section class="content-header">
<h1>商户合规文件补充
@ -11,6 +24,64 @@
</section>
<div class="panel-body box box-warning ng-scope" style="margin-top: 20px;">
<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">
<label class="control-label col-sm-3">* bank statement</label>
<div class="col-sm-3">

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

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

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

@ -25,13 +25,13 @@
<td ng-bind="details.total_surcharge|currency:'$'"
style="color: red;vertical-align:middle"></td>
<td style="vertical-align:middle">
<span ng-if="details.is_valid">Yes</span>
<span ng-if="!details.is_valid">No</span>
<span ng-if="details.checkout">Yes</span>
<span ng-if="!details.checkout">No</span>
</td>
<td style="vertical-align:middle">
<i class="fa fa-bars"
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>
</tr>
</tbody>

@ -2,6 +2,30 @@
<h4>Surcharge Accountdddd Detail{{partner.client_moniker?'('+partner.client_moniker+')':''}}</h4>
</div>
<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-header">Debits</div>
<div class="box-body">
@ -17,7 +41,7 @@
</tr>
</thead>
<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.amount|currency:'AUD'"></td>
<td ng-bind="detail.total_surcharge|currency:'AUD'"></td>

Loading…
Cancel
Save