diff --git a/src/main/java/au/com/royalpay/payment/manage/management/clearing/core/impl/CleanServiceImpl.java b/src/main/java/au/com/royalpay/payment/manage/management/clearing/core/impl/CleanServiceImpl.java index 2880b4554..7b899fe9e 100644 --- a/src/main/java/au/com/royalpay/payment/manage/management/clearing/core/impl/CleanServiceImpl.java +++ b/src/main/java/au/com/royalpay/payment/manage/management/clearing/core/impl/CleanServiceImpl.java @@ -151,16 +151,11 @@ public class CleanServiceImpl implements CleanService, ManagerTodoNoticeProvider @Resource private ClientDeviceMapper clientDeviceMapper; private static final int MAX_TRACK_DAYS = 31; - @Value("${app.settlement.email-to}") - private String settlementEmailTo; - @Value("${app.settlement.email-cc}") - private String settlementEmailCC; @Value("${app.redis.settle.check-code.prefix}") private String reidsCheckCodeKey; private final String[] open_ids = {"o32MzuEeb5ZT_DJQYbzZf6VCu1HQ", "o32MzuIsa3OBOkvC9pL90h9pgHPg", "o32MzuCpqGQJTlvTK7VQ7m_LVXiQ"}; private ApplicationEventPublisher publisher; - // private final String[] open_ids = { "o32MzuO4s8c7iFOVxnxejkbhMoEc" }; @Override public List listValidatedDays(Date month) { @@ -1394,8 +1389,6 @@ public class CleanServiceImpl implements CleanService, ManagerTodoNoticeProvider JSONObject result = new JSONObject(); try { String title = (PlatformEnvironment.getEnv().isDebug() ? "[TEST]" : "") + "Royalpay Settlement File " + DateFormatUtils.format(date, "yyyyMMdd"); - JSONObject model = new JSONObject(); - model.put("date", DateFormatUtils.format(date, "dd-MM-yyyy")); String fileName1 = "Merchant_Settlement_Info_xlsx_" + DateFormatUtils.format(date, "yyyyMMdd"); List attachList = new ArrayList<>(); JSONObject attach1 = new JSONObject(); @@ -1440,8 +1433,6 @@ public class CleanServiceImpl implements CleanService, ManagerTodoNoticeProvider ctx.setVariable("totalAmount", total.setScale(2, RoundingMode.DOWN).toPlainString()); final String content = thymeleaf.process("mail/settlement_mail", ctx); // 测试用地址 - // String mailId = mailService.sendEmail(title, "164851225@qq.com", "1029811920@qq.com", content, - // attachList); JSONObject config = sysConfigManager.getSysConfig(); String mailId = mailService.sendEmail(title, config.getString("settle_mail_to"), config.getString("settle_mail_cc"), content, attachList); diff --git a/src/main/java/au/com/royalpay/payment/manage/system/core/impl/TradeSecureServiceHanyinImpl.java b/src/main/java/au/com/royalpay/payment/manage/system/core/impl/TradeSecureServiceHanyinImpl.java index 3dc14142a..1ddf13f51 100644 --- a/src/main/java/au/com/royalpay/payment/manage/system/core/impl/TradeSecureServiceHanyinImpl.java +++ b/src/main/java/au/com/royalpay/payment/manage/system/core/impl/TradeSecureServiceHanyinImpl.java @@ -147,8 +147,9 @@ public class TradeSecureServiceHanyinImpl implements TradeSecureService { }); } + @Override - public void sendSecurePayInvoiceFile(String begin,String end) { + public void sendSecurePayInvoiceFile(String begin, String end) { List scpayMchs = clientAnalysisMapper.listSecurePayMchs(); scpayMchs.forEach(mch -> { TradeLogQuery query = new TradeLogQuery(); @@ -157,7 +158,7 @@ public class TradeSecureServiceHanyinImpl implements TradeSecureService { query.setClearing_status(-1); byte[] fileData = new byte[0]; try { - fileData=tradeLogService.exportTransFlowForSecurePay(query, mch); + fileData = tradeLogService.exportTransFlowForSecurePay(query, mch); } catch (Exception e) { e.printStackTrace(); } @@ -168,6 +169,7 @@ public class TradeSecureServiceHanyinImpl implements TradeSecureService { }); } + private void sendSftpFile(String dateStr, String fileName, byte[] data) { Session session = null; ChannelSftp command = null; @@ -179,12 +181,13 @@ public class TradeSecureServiceHanyinImpl implements TradeSecureService { try { command.mkdir(StringUtils.substring(dateStr, 0, 6)); } catch (SftpException e) { - logger.error(e.getMessage()); + logger.error("failed to create dir:{}---{}", fileName, e.getMessage(), e); } try { command.put(new ByteArrayInputStream(data), StringUtils.substring(dateStr, 0, 6) + "/" + fileName); - logger.info("文件发送成功!"); - } catch (SftpException ignore) { + logger.info("File send success!{}", fileName); + } catch (SftpException e) { + logger.error("failed to upload file:{}", fileName, e); } } catch (IOException | JSchException e) { throw new ChannelNetworkException("Send Settlement file failed", e); diff --git a/src/main/java/au/com/royalpay/payment/manage/tradelog/core/impls/TradeLogServiceImpl.java b/src/main/java/au/com/royalpay/payment/manage/tradelog/core/impls/TradeLogServiceImpl.java index 967c730de..fda25eebf 100644 --- a/src/main/java/au/com/royalpay/payment/manage/tradelog/core/impls/TradeLogServiceImpl.java +++ b/src/main/java/au/com/royalpay/payment/manage/tradelog/core/impls/TradeLogServiceImpl.java @@ -593,6 +593,7 @@ public class TradeLogServiceImpl implements TradeLogService { result.put("analysis", analysis); return result; } + private JSONObject listPartnerTransFlowByExportPdfSecurePay(TradeLogQuery query, JSONObject client, String[] channels) throws Exception { int clientId = client.getIntValue("client_id"); String timezone = client.getString("timezone"); @@ -802,8 +803,8 @@ public class TradeLogServiceImpl implements TradeLogService { JSONObject client = clientManager.getClientInfo(partner.getIntValue("client_id")); Context ctx = new Context(); JSONObject parmerters = new JSONObject(); - int recordsSize=transFlow.getJSONArray("data").isEmpty()?0:transFlow.getJSONArray("data").size(); - parmerters.put("records",recordsSize); + int recordsSize = transFlow.getJSONArray("data").isEmpty() ? 0 : transFlow.getJSONArray("data").size(); + parmerters.put("records", recordsSize); parmerters.put("dateFrom", StringUtils.isNotBlank(query.getDatefrom()) ? DateFormatUtils.format(DateUtils.parseDate(query.getDatefrom(), "yyyyMMdd"), "dd/MM/yyyy") : ""); parmerters.put("dateTo", @@ -838,7 +839,7 @@ public class TradeLogServiceImpl implements TradeLogService { try { OutputStream outs = response.getOutputStream(); ByteArrayOutputStream os = new ByteArrayOutputStream(); - List dataList= transTransform(transFlow); + List dataList = transTransform(transFlow); ctx.setVariable("dataList", dataList); final String html = thymeleaf.process("app/invoice.html", ctx); response.setContentType("application/pdf"); @@ -853,15 +854,13 @@ public class TradeLogServiceImpl implements TradeLogService { outs.write(bytes, 0, bytes.length); outs.flush(); renderer.finishPDF(); - } - - catch (Exception e) { + } catch (Exception e) { e.printStackTrace(); } - } + @Override public byte[] exportTransFlowForSecurePay(TradeLogQuery query, JSONObject client) throws Exception { JSONObject transFlow = listPartnerTransFlowByExportPdfSecurePay(query, client, new String[]{"Wechat", "Alipay", "AlipayOnline"}); @@ -869,8 +868,8 @@ public class TradeLogServiceImpl implements TradeLogService { // JSONObject client = clientManager.getClientInfo(partner.getIntValue("client_id")); Context ctx = new Context(); JSONObject parmerters = new JSONObject(); - int recordsSize=transFlow.getJSONArray("data").isEmpty()?0:transFlow.getJSONArray("data").size(); - parmerters.put("records",recordsSize); + int recordsSize = transFlow.getJSONArray("data").isEmpty() ? 0 : transFlow.getJSONArray("data").size(); + parmerters.put("records", recordsSize); parmerters.put("dateFrom", StringUtils.isNotBlank(query.getDatefrom()) ? DateFormatUtils.format(DateUtils.parseDate(query.getDatefrom(), "yyyyMMdd"), "dd/MM/yyyy") : ""); parmerters.put("dateTo", @@ -904,7 +903,7 @@ public class TradeLogServiceImpl implements TradeLogService { ctx.setVariable("orgInfo", orgInfo); try { ByteArrayOutputStream os = new ByteArrayOutputStream(); - List dataList= transTransform(transFlow); + List dataList = transTransform(transFlow); ctx.setVariable("dataList", dataList); final String html = thymeleaf.process("app/invoice.html", ctx); @@ -917,17 +916,15 @@ public class TradeLogServiceImpl implements TradeLogService { renderer.finishPDF(); os.close(); - return bytes; - - } + return bytes; - catch (Exception e) { + } catch (Exception e) { e.printStackTrace(); } return null; } - private List transTransform( JSONObject transFlow ){ + private List transTransform(JSONObject transFlow) { List dataList; if (!transFlow.getJSONArray("data").isEmpty()) { dataList = transFlow.getJSONArray("data").toJavaList(JSONObject.class); @@ -958,20 +955,20 @@ public class TradeLogServiceImpl implements TradeLogService { item.put("credit", credit); item.putIfAbsent("settle_amount", "-"); }); - }else{ - dataList=new ArrayList<>(); - JSONObject jsonObject=new JSONObject(); - jsonObject.put("transaction_time","-"); - jsonObject.put("client_order_id","-"); - jsonObject.put("order_id","-"); - jsonObject.put("debit","-"); - jsonObject.put("credit","-"); - jsonObject.put("real_royalpay_surcharge","-"); - jsonObject.put("incremental_surcharge","-"); - jsonObject.put("settle_amount","-"); + } else { + dataList = new ArrayList<>(); + JSONObject jsonObject = new JSONObject(); + jsonObject.put("transaction_time", "-"); + jsonObject.put("client_order_id", "-"); + jsonObject.put("order_id", "-"); + jsonObject.put("debit", "-"); + jsonObject.put("credit", "-"); + jsonObject.put("real_royalpay_surcharge", "-"); + jsonObject.put("incremental_surcharge", "-"); + jsonObject.put("settle_amount", "-"); dataList.add(jsonObject); } - return dataList; + return dataList; } @@ -2088,8 +2085,8 @@ public class TradeLogServiceImpl implements TradeLogService { @Override public byte[] exportPDFSettlement(TradeLogQuery query, JSONObject client) { + logger.info("exporting settlement pdf for {}", client.getString("client_moniker")); String begin = query.getDatefrom() == null ? "" : query.getDatefrom(); - String end = query.getDateto() == null ? "" : query.getDateto(); String timezone = client.getString("timezone"); JSONObject params = query.toParams(timezone); if (params.get("client_ids") == null) { @@ -2099,8 +2096,8 @@ public class TradeLogServiceImpl implements TradeLogService { List clientOrderList = transactionMapper.getClientOrderByTransactionTime(params); JSONObject parmerters = new JSONObject(); try { - String beginParse= DateFormatUtils.format(DateUtils.parseDate(begin,"yyyyMMdd"),"dd.MM.yyyy"); - parmerters.put("dateRange", "Your Statement For:"+beginParse+""); + String beginParse = DateFormatUtils.format(DateUtils.parseDate(begin, "yyyyMMdd"), "dd.MM.yyyy"); + parmerters.put("dateRange", "Your Statement For:" + beginParse + ""); } catch (ParseException e) { e.printStackTrace(); @@ -2127,8 +2124,7 @@ public class TradeLogServiceImpl implements TradeLogService { item.put("gateway", item.getInteger("gateway") == null ? "-" : TradeType.fromGatewayNumber(item.getIntValue("gateway")).getTradeType()); item.put("rate", item.getBigDecimal("rate") == null ? "-" : item.getBigDecimal("rate").stripTrailingZeros().toPlainString() + "%"); }); - } - if (clientOrderList.size() <= 0) { + } else { JSONObject mockJson = new JSONObject(); mockJson.put("order_id", "-"); mockJson.put("client_order_id", "-"); @@ -2154,9 +2150,9 @@ public class TradeLogServiceImpl implements TradeLogService { orgInfo.put("logo", "none"); } ctx.setVariable("orgInfo", orgInfo); - ctx.setVariable("parmerters",parmerters); - ctx.setVariable("settlementLogDetailList",settlementLogDetailList); - System.out.println("=====>reports/securepay_settlement.html:"); + ctx.setVariable("parmerters", parmerters); + ctx.setVariable("settlementLogDetailList", settlementLogDetailList); + logger.info("=====>reports/securepay_settlement.html:"); ByteArrayOutputStream os = new ByteArrayOutputStream(); final String html = thymeleaf.process("reports/securepay_settlement.html", ctx); @@ -2172,9 +2168,9 @@ public class TradeLogServiceImpl implements TradeLogService { // JRDataSource jrDataSource = new JRBeanCollectionDataSource(settlementLogDetailList); // return JasperRunManager.runReportToPdf(securepay_settlement_flow.getInputStream(), parmerters, jrDataSource); - return bytes; + return bytes; } catch (Exception e) { - throw new ServerErrorException(e); + throw new ServerErrorException("Failed to export settlement report pdf for " + client.getString("client_moniker"), e); } } diff --git a/src/main/ui/static/analysis/clearing-log.js b/src/main/ui/static/analysis/clearing-log.js index 7872bc1b1..bfdde620b 100644 --- a/src/main/ui/static/analysis/clearing-log.js +++ b/src/main/ui/static/analysis/clearing-log.js @@ -444,7 +444,7 @@ define(['angular', 'decimal', 'uiBootstrap', 'uiRouter', 'angularEcharts'], func scope.$close({operation: 'modify', holiday: scope.holiday}) } scope.deleteHoliday = function () { - scope.$close({operation: 'delete', holiday: scope.holiday.holiday.replace('/', '-')}) + scope.$close({operation: 'delete', holiday: scope.holiday.holiday.replaceAll(/\//g, '-')}) } }], resolve: { diff --git a/src/test/java/au/com/royalpay/payment/manage/process/aes/AESTest.java b/src/test/java/au/com/royalpay/payment/manage/process/aes/AESTest.java index 8d01280c3..83c1400ef 100644 --- a/src/test/java/au/com/royalpay/payment/manage/process/aes/AESTest.java +++ b/src/test/java/au/com/royalpay/payment/manage/process/aes/AESTest.java @@ -28,8 +28,8 @@ public class AESTest { @Test public void decode() { - String mailPwdEncrypted = "Vr5rSY1PsttfWVGuoq8zxQ=="; - String decodeKey = "Vr5rSY1PsttfWVGuoq8zxQ=="; + String mailPwdEncrypted = "pLkLTFw8Xf3aa6US7USSwOQ2v/q+m7HTTFhk39l4BWI="; + String decodeKey = "EPrfsM2JE69ZPR7BhXn34g=="; Key aesKey = AESCrypt.fromKeyString(Base64.decodeBase64(decodeKey)); String mailPwd = new String(AESCrypt.decrypt(Base64.decodeBase64(mailPwdEncrypted), aesKey), StandardCharsets.UTF_8); System.out.println(mailPwd);