diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 000000000..b42cb9074 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,11 @@ +FROM nginx:alpine + +COPY uidocker/conf.d /etc/nginx/conf.d + +COPY src/main/ui /var/www/royalpay + +COPY uidocker/upstream.conf.tpl /opt/upstream.conf.tpl + +EXPOSE 80 + +CMD envsubst < /opt/upstream.conf.tpl > /etc/nginx/conf.d/upstream.conf && cat /etc/nginx/conf.d/upstream.conf && exec nginx -g 'daemon off;' \ No newline at end of file diff --git a/pom.xml b/pom.xml index 5242a10a6..8bb9d2e4a 100644 --- a/pom.xml +++ b/pom.xml @@ -9,7 +9,7 @@ 4.0.0 manage - 1.3.92 + 1.3.93 UTF-8 1.8.0 diff --git a/src/main/java/au/com/royalpay/payment/manage/analysis/core/impls/DashboardServiceImpl.java b/src/main/java/au/com/royalpay/payment/manage/analysis/core/impls/DashboardServiceImpl.java index c5b5c0142..5071c1b04 100644 --- a/src/main/java/au/com/royalpay/payment/manage/analysis/core/impls/DashboardServiceImpl.java +++ b/src/main/java/au/com/royalpay/payment/manage/analysis/core/impls/DashboardServiceImpl.java @@ -155,6 +155,9 @@ public class DashboardServiceImpl implements DashboardService,DashboardAnalysisT if(tradeInTypes != null){ return tradeInTypes; } + if (params.containsKey("client_id")) { + clientManager.queryModifyClientIds(params.getInteger("client_id"), params); + } List res = transactionAnalysisMapper.getTradeAmountInTypes(params); stringRedisTemplate.boundValueOps("tradeInTypes"+params.getString("org_id")+ params.getString("begin")).set(res.toString(), 5, TimeUnit.MINUTES); return res; @@ -323,6 +326,7 @@ public class DashboardServiceImpl implements DashboardService,DashboardAnalysisT JSONObject mchConfig = merchantInfoProvider.getMchExtParams(partner.getIntValue("client_id")); params.put("hide_sub_mch", mchConfig.getBooleanValue("hide_sub_mch")); params.put("client_id", partner.getIntValue("client_id")); + clientManager.queryModifyClientIds(partner.getIntValue("client_id"), params); JSONObject today = getTransJSONO(params); params.put("begin",DateUtils.addDays(params.getDate("begin"),-1)); params.put("end",DateUtils.addDays(params.getDate("end"),-1)); @@ -450,6 +454,7 @@ public class DashboardServiceImpl implements DashboardService,DashboardAnalysisT params.remove("client_ids"); } params.put("client_id", partner.getIntValue("client_id")); + clientManager.queryModifyClientIds(partner.getIntValue("client_id"), params); return customerAndOrdersStatisticsMapper.getSumCustomersAnalysis(params); } @@ -619,6 +624,7 @@ public class DashboardServiceImpl implements DashboardService,DashboardAnalysisT params.remove("client_ids"); } params.put("client_id", partner.getIntValue("client_id")); + clientManager.queryModifyClientIds(partner.getIntValue("client_id"), params); return customerAndOrdersStatisticsMapper.getAvgOrderAndCustomerStatistics(params); } @@ -633,6 +639,7 @@ public class DashboardServiceImpl implements DashboardService,DashboardAnalysisT params.remove("client_ids"); } params.put("client_id", partner.getIntValue("client_id")); + clientManager.queryModifyClientIds(partner.getInteger("client_id"), params); return customerAndOrdersStatisticsMapper.getPartnerCustomerAndOrderStatistics(params); } } diff --git a/src/main/java/au/com/royalpay/payment/manage/analysis/core/impls/PartnerCardDashboardServiceImp.java b/src/main/java/au/com/royalpay/payment/manage/analysis/core/impls/PartnerCardDashboardServiceImp.java index 063e582df..fc60a39c4 100644 --- a/src/main/java/au/com/royalpay/payment/manage/analysis/core/impls/PartnerCardDashboardServiceImp.java +++ b/src/main/java/au/com/royalpay/payment/manage/analysis/core/impls/PartnerCardDashboardServiceImp.java @@ -52,32 +52,33 @@ public class PartnerCardDashboardServiceImp implements PartnerCardDashboardServi private LogSettleMailMapper logSettleMailMapper; @Resource private PaymentApi paymentApi; + @Override public JSONObject getCommonAnalysis(String client_moniker) { JSONObject client = clientManager.getClientInfoByMoniker(client_moniker); client.putAll(clientConfigService.find(client.getIntValue("client_id"))); JSONObject earlistOrder = transactionAnalysisMapper.getEarliestOrder(client.getIntValue("client_id")); Date data = new Date(); - if (earlistOrder != null){ - client.put("transaction_time", DateFormatUtils.format(earlistOrder.getDate("transaction_time"),"yyyy-MM-dd")); + if (earlistOrder != null) { + client.put("transaction_time", DateFormatUtils.format(earlistOrder.getDate("transaction_time"), "yyyy-MM-dd")); } - JSONObject res = merchantInfoProvider.clientCurrentRate(client.getIntValue("client_id"), data,"Wechat"); - JSONObject best_pay = merchantInfoProvider.clientCurrentRate(client.getIntValue("client_id"), data,"Bestpay"); - JSONObject ali_pay = merchantInfoProvider.clientCurrentRate(client.getIntValue("client_id"), data,"Alipay"); + JSONObject res = merchantInfoProvider.clientCurrentRate(client.getIntValue("client_id"), data, "Wechat"); + JSONObject best_pay = merchantInfoProvider.clientCurrentRate(client.getIntValue("client_id"), data, "Bestpay"); + JSONObject ali_pay = merchantInfoProvider.clientCurrentRate(client.getIntValue("client_id"), data, "Alipay"); JSONObject rate_value = new JSONObject(); - if (res!= null){ - rate_value.put("wechat_rate_value",res.getBigDecimal("rate_value").setScale(1, BigDecimal.ROUND_DOWN)); + if (res != null) { + rate_value.put("wechat_rate_value", res.getBigDecimal("rate_value").setScale(1, BigDecimal.ROUND_DOWN)); if (res.getInteger("clean_days") != null) { client.put("clean_days", res.getIntValue("clean_days")); } } - if(best_pay != null){ - rate_value.put("best_rate_value",best_pay.getBigDecimal("rate_value").setScale(1, BigDecimal.ROUND_DOWN)); + if (best_pay != null) { + rate_value.put("best_rate_value", best_pay.getBigDecimal("rate_value").setScale(1, BigDecimal.ROUND_DOWN)); } - if(ali_pay != null){ - rate_value.put("ali_rate_value",ali_pay.getBigDecimal("rate_value").setScale(1, BigDecimal.ROUND_DOWN)); + if (ali_pay != null) { + rate_value.put("ali_rate_value", ali_pay.getBigDecimal("rate_value").setScale(1, BigDecimal.ROUND_DOWN)); } - client.put("rate_value",rate_value); + client.put("rate_value", rate_value); return client; } @@ -86,7 +87,7 @@ public class PartnerCardDashboardServiceImp implements PartnerCardDashboardServi JSONObject client = clientManager.getClientInfoByMoniker(client_moniker); Assert.notNull(client); JSONObject params = new JSONObject(); - params.put("client_id",client.getIntValue("client_id")); + params.put("client_id", client.getIntValue("client_id")); return transactionAnalysisMapper.getTransactionCommonAnalysis(params); } @@ -95,7 +96,7 @@ public class PartnerCardDashboardServiceImp implements PartnerCardDashboardServi JSONObject client = clientManager.getClientInfoByMoniker(client_moniker); Assert.notNull(client); JSONObject params = new JSONObject(); - params.put("client_id",client.getIntValue("client_id")); + params.put("client_id", client.getIntValue("client_id")); return customerAndOrdersStatisticsMapper.getPartnerCustomerAndOrderStatistics(params); } @@ -104,16 +105,16 @@ public class PartnerCardDashboardServiceImp implements PartnerCardDashboardServi JSONObject client = clientManager.getClientInfoByMoniker(client_moniker); Assert.notNull(client); JSONObject params = new JSONObject(); - params.put("client_id",client.getIntValue("client_id")); + params.put("client_id", client.getIntValue("client_id")); return dashboardService.getTradeInTypes(params); } @Override - public JSONObject getOrderAndCustomerPerDay(String client_moniker){ + public JSONObject getOrderAndCustomerPerDay(String client_moniker) { JSONObject client = clientManager.getClientInfoByMoniker(client_moniker); Assert.notNull(client); JSONObject params = new JSONObject(); - params.put("client_id",client.getIntValue("client_id")); + params.put("client_id", client.getIntValue("client_id")); return customerAndOrdersStatisticsMapper.getAvgOrderAndCustomerStatistics(params); } @@ -124,38 +125,38 @@ public class PartnerCardDashboardServiceImp implements PartnerCardDashboardServi JSONObject earlistOrder = transactionAnalysisMapper.getEarliestOrder(client.getIntValue("client_id")); String timezone = client.getString("timezone"); AnalysisBean analysisBean = new AnalysisBean(); - if (earlistOrder != null){ - analysisBean.setBegin(DateFormatUtils.format(earlistOrder.getDate("transaction_time"),"yyyyMMdd")); + if (earlistOrder != null) { + analysisBean.setBegin(DateFormatUtils.format(earlistOrder.getDate("transaction_time"), "yyyyMMdd")); } - analysisBean.setEnd(DateFormatUtils.format(new Date(),"yyyyMMdd")); + analysisBean.setEnd(DateFormatUtils.format(new Date(), "yyyyMMdd")); JSONObject params = analysisBean.toParams(timezone); - params.put("client_id",client.getIntValue("client_id")); + params.put("client_id", client.getIntValue("client_id")); return dashboardService.getTradeAnalysisInHours(params); } @Override - public JSONObject getSettlementLog(String client_moniker,TradeLogQuery query) { + public JSONObject getSettlementLog(String client_moniker, TradeLogQuery query) { JSONObject client = clientManager.getClientInfoByMoniker(client_moniker); Assert.notNull(client); int client_id = client.getIntValue("client_id"); String timezone = client.getString("timezone"); JSONObject earlistOrder = transactionAnalysisMapper.getEarliestOrder(client_id); - if (earlistOrder!= null){ - query.setDatefrom(DateFormatUtils.format(earlistOrder.getDate("transaction_time"),"yyyyMMdd")); + if (earlistOrder != null) { + query.setDatefrom(DateFormatUtils.format(earlistOrder.getDate("transaction_time"), "yyyyMMdd")); } - query.setDateto(DateFormatUtils.format(new Date(),"yyyyMMdd")); + query.setDateto(DateFormatUtils.format(new Date(), "yyyyMMdd")); JSONObject params = query.toParams(timezone); params.put("client_id", client_id); PageList logs = transactionMapper.listSettlementLog(params, new PageBounds(query.getPage(), query.getLimit(), Order.formString("clearing_time.desc"))); JSONObject result = PageListUtils.buildPageListResult(logs); - if (query.getPage()==1){ - if (!logs.isEmpty() && logs.size()>0){ - JSONObject sendMailLog = logSettleMailMapper.findByDate(logs.get(0).getDate("clearing_time")); - if (sendMailLog == null) { - result.put("padding",true); + if (query.getPage() == 1) { + if (!logs.isEmpty()) { + List sendMailLogs = logSettleMailMapper.findByDate(logs.get(0).getDate("clearing_time")); + if (sendMailLogs.isEmpty()) { + result.put("padding", true); } - if (sendMailLog!=null && sendMailLog.getIntValue("mail_status") != 1) { - result.put("padding",true); + if (!sendMailLogs.isEmpty() && sendMailLogs.stream().anyMatch(mail -> mail.getIntValue("mail_status") != 1)) { + result.put("padding", true); } } } diff --git a/src/main/java/au/com/royalpay/payment/manage/management/clearing/core/CleanService.java b/src/main/java/au/com/royalpay/payment/manage/management/clearing/core/CleanService.java index 2becdc015..254ef3f7d 100644 --- a/src/main/java/au/com/royalpay/payment/manage/management/clearing/core/CleanService.java +++ b/src/main/java/au/com/royalpay/payment/manage/management/clearing/core/CleanService.java @@ -43,9 +43,11 @@ public interface CleanService { void settlementXlsx(Date date, HttpServletResponse response) throws IOException; - List getXlsx(Date dt, String bank) throws IOException; + List getXlsx(Date dt, String bank, List logs) throws IOException; - List getAba(Date dt, String bank) throws IOException; + List getSettleLogs(Date dt, List clearIds); + + List getAba(Date dt, String bank, List logs) throws IOException; void settlementAba(Date date, HttpServletResponse response) throws IOException; @@ -79,11 +81,11 @@ public interface CleanService { void getTodaySettlementLogs(); - JSONObject sendSettlementMail(Date date, String checkCode); + JSONObject sendSettlementMail(Date date, List clearIds, boolean autoMarkSent); void sendCheckCode(Date date, JSONObject manager); - JSONObject findLogSettleByDate(Date date); + List findLogSettleByDate(Date date); JSONObject validTransactions(Date date, boolean fix, boolean b, boolean b1); 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 7f1cb41ec..21b54171e 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 @@ -64,7 +64,6 @@ import org.springframework.format.number.CurrencyStyleFormatter; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.Assert; -import org.springframework.util.CollectionUtils; import org.thymeleaf.context.Context; import org.thymeleaf.spring5.SpringTemplateEngine; @@ -256,6 +255,12 @@ public class CleanServiceImpl implements CleanService, ManagerTodoNoticeProvider return data; }).collect(Collectors.toList()); log.put("bank_statistics", bankStatistics); + if (StringUtils.isNotEmpty(log.getString("plan_detail"))) { + try { + log.put("plan_detail", JSON.parseObject(log.getString("plan_detail"))); + } catch (JSONException ignore) { + } + } log.put("editable", DateUtils.isSameDay(log.getDate("settle_date"), new Date()) && log.getBooleanValue("editable")); log.put("channel_analysis", clearingDetailAnalysisMapper.analysisChannelReport(clearingId)); } @@ -390,12 +395,7 @@ public class CleanServiceImpl implements CleanService, ManagerTodoNoticeProvider } @Override - public List getXlsx(Date dt, String bank) throws IOException { - List logs = clearingLogMapper.findByDate(dt); - logs = logs.stream().filter(log -> log.getBooleanValue("editable")).collect(Collectors.toList()); - if (logs.isEmpty()) { - throw new NotFoundException(); - } + public List getXlsx(Date dt, String bank, List logs) throws IOException { List result = new ArrayList<>(); int fileIndex = 1; if (logs.size() > 1) { @@ -424,6 +424,18 @@ public class CleanServiceImpl implements CleanService, ManagerTodoNoticeProvider return result; } + @Override + public List getSettleLogs(Date dt, List clearIds) { + List logs = clearingLogMapper.findByDate(dt); + logs = logs.stream().filter(log -> log.getBooleanValue("editable")) + .filter(log -> clearIds.isEmpty() || clearIds.contains(log.getString("clearing_id"))) + .collect(Collectors.toList()); + if (logs.isEmpty()) { + throw new NotFoundException(); + } + return logs; + } + private List mergeBatchSettleClients(List details) { Map> sameBankDetails = details.stream() .filter(this::detailEnabledMergeSettle) @@ -486,21 +498,24 @@ public class CleanServiceImpl implements CleanService, ManagerTodoNoticeProvider } @Override - public List getAba(Date dt, String bank) { - List logs = clearingLogMapper.findByDate(dt); - logs = logs.stream().filter(log -> log.getBooleanValue("editable")).collect(Collectors.toList()); - if (logs.isEmpty()) { - throw new NotFoundException(); - } + public List getAba(Date dt, String bank, List logs) { List files = new ArrayList<>(); for (JSONObject log : logs) { List details = clearingDetailMapper.listReportsOfSettlement(log.getIntValue("clearing_id")); details = mergeBatchSettleClients(details); - files.addAll(generateSettleAbaFiles(dt, details, log.getDate("operate_time"))); + String remark = extractSettleRemark(log); + files.addAll(generateSettleAbaFiles(dt, details, log.getDate("operate_time"), remark)); } return files.stream().filter(file -> bank.equals(file.bank())).collect(Collectors.toList()); } + public String extractSettleRemark(JSONObject log) { + return Optional.ofNullable(StringUtils.defaultIfEmpty(log.getString("plan_detail"), null)) + .map(JSON::parseObject) + .map(plan -> StringUtils.defaultIfEmpty(plan.getString("remark"), plan.getString("plan_id"))) + .orElse(""); + } + private byte[] generateSettleXlsxFile(Date dt, List settlements, String bank) throws IOException { try (Workbook wb = new XSSFWorkbook()) { Sheet sheet = wb.createSheet("Merchant_Settlement_Info_" + DateFormatUtils.format(dt, "yyyyMMdd")); @@ -536,7 +551,7 @@ public class CleanServiceImpl implements CleanService, ManagerTodoNoticeProvider for (JSONObject log : logs) { List details = clearingDetailMapper.listReportsOfSettlement(log.getIntValue("clearing_id")); details = mergeBatchSettleClients(details); - files.addAll(generateSettleAbaFiles(dt, details, log.getDate("operate_time"))); + files.addAll(generateSettleAbaFiles(dt, details, log.getDate("operate_time"), extractSettleRemark(log))); } OutputStream ous = resp.getOutputStream(); if (files.size() == 1) { @@ -580,7 +595,7 @@ public class CleanServiceImpl implements CleanService, ManagerTodoNoticeProvider resp.addHeader("Content-Disposition", "attachment; filename=" + zipName); OutputStream ous = resp.getOutputStream(); - List abaFiles = generateSettleAbaFiles(settleDate, details, opTime); + List abaFiles = generateSettleAbaFiles(settleDate, details, opTime, extractSettleRemark(clearing)); try (ZipOutputStream zos = new ZipOutputStream(ous)) { for (ABAFile aba : abaFiles) { zos.putNextEntry(new ZipEntry(aba.filename())); @@ -591,9 +606,12 @@ public class CleanServiceImpl implements CleanService, ManagerTodoNoticeProvider } } - private List generateSettleAbaFiles(Date dt, List settlements, Date operateTime) { + private List generateSettleAbaFiles(Date dt, List settlements, Date operateTime, String remark) { List banks = settlements.stream().map(detail -> detail.getString("settle_bank")).distinct().collect(Collectors.toList()); - return banks.stream().map(bank -> generateSettleAbaFile(bank, dt, settlements)).peek(file -> file.setOperateTime(operateTime)).collect(Collectors.toList()); + return banks.stream().map(bank -> generateSettleAbaFile(bank, dt, settlements)) + .peek(file -> file.setOperateTime(operateTime)) + .peek(file -> file.setRemark(remark)) + .collect(Collectors.toList()); } private ABAFile generateSettleAbaFile(String bank, Date dt, List settlements) { @@ -1092,36 +1110,17 @@ public class CleanServiceImpl implements CleanService, ManagerTodoNoticeProvider } @Override - public JSONObject sendSettlementMail(Date date, String checkCode) { + public JSONObject sendSettlementMail(Date date, List clearIds, boolean autoMarkSent) { JSONObject result = new JSONObject(); - String redisCode = stringRedisTemplate.boundValueOps(reidsCheckCodeKey).get(); - if (StringUtils.isEmpty(redisCode)) { - result.put("result", 1); - result.put("msg", "The verification code has expired ,Please send the verification code again"); - return result; - } - if (!redisCode.equals(checkCode)) { - result.put("result", 1); - result.put("msg", "The verification code is incorrect"); - return result; - } - JSONObject settleMail = logSettleMailMapper.findByDate(date); - if (settleMail != null) { - List emailStatus = mailService.checkEmailStatus(settleMail.getString("email_id")); - if (!CollectionUtils.isEmpty(emailStatus) && emailStatus.get(0).getIntValue("status") == 1 && settleMail.getIntValue("mail_status") == 1) { - result.put("result", 0); - result.put("msg", "Excel has been sent"); - return result; - } - } try { - String title = "Royalpay Settlement File " + DateFormatUtils.format(date, "yyyyMMdd"); + 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(); - List xlsxFileList = getXlsx(date, "CBA"); + List clearLogs = getSettleLogs(date, clearIds); + List xlsxFileList = getXlsx(date, "CBA", clearLogs); if (xlsxFileList.size() > 1) { fileName1 += ".zip"; attach1.put("content", Base64.encodeBase64String(getZipByteArr(xlsxFileList))); @@ -1133,7 +1132,7 @@ public class CleanServiceImpl implements CleanService, ManagerTodoNoticeProvider attachList.add(attach1); JSONObject attach2 = new JSONObject(); - List abaFileList = getAba(date, "CBA"); + List abaFileList = getAba(date, "CBA", clearLogs); String fileName2 = "Merchant_Settlement_Info_aba_" + DateFormatUtils.format(date, "yyyyMMdd"); if (abaFileList.size() > 1) { fileName2 += ".zip"; @@ -1157,6 +1156,7 @@ public class CleanServiceImpl implements CleanService, ManagerTodoNoticeProvider Context ctx = new Context(); ctx.setVariable("date", DateFormatUtils.format(date, "dd-MM-yyyy")); ctx.setVariable("abaFiles", abaFileList); + ctx.setVariable("totalAmount", abaFileList.stream().map(ABAFile::getTotalSettleAmount).reduce(BigDecimal::add)); final String content = thymeleaf.process("mail/settlement_mail", ctx); // 测试用地址 // String mailId = mailService.sendEmail(title, "164851225@qq.com", "1029811920@qq.com", content, @@ -1164,38 +1164,30 @@ public class CleanServiceImpl implements CleanService, ManagerTodoNoticeProvider JSONObject config = sysConfigManager.getSysConfig(); String mailId = mailService.sendEmail(title, config.getString("settle_mail_to"), config.getString("settle_mail_cc"), content, attachList); - if (settleMail == null) { - JSONObject settleMailRecord = new JSONObject(); - settleMailRecord.put("send_date", new Date()); - settleMailRecord.put("clearing_date", date); - settleMailRecord.put("email_id", mailId); - if (StringUtils.isEmpty(mailId)) { - result.put("result", 1); - result.put("msg", "System error"); - settleMailRecord.put("mail_status", 0); - settleMailRecord.put("notice_status", 0); - logSettleMailMapper.save(settleMailRecord); - return result; - } else { - settleMailRecord.put("mail_status", 1); - settleMailRecord.put("notice_status", 0); - logSettleMailMapper.save(settleMailRecord); - } + JSONObject settleMailRecord = new JSONObject(); + settleMailRecord.put("send_date", new Date()); + settleMailRecord.put("clearing_date", date); + settleMailRecord.put("email_id", mailId); + if (StringUtils.isEmpty(mailId)) { + result.put("result", 1); + result.put("msg", "System error"); + settleMailRecord.put("mail_status", 0); + settleMailRecord.put("notice_status", 0); + logSettleMailMapper.save(settleMailRecord); + return result; } else { - if (!StringUtils.isEmpty(mailId)) { - JSONObject updateRecord = new JSONObject(); - updateRecord.put("id", settleMail.getString("id")); - updateRecord.put("mail_status", 1); - updateRecord.put("email_id", mailId); - logSettleMailMapper.update(updateRecord); + settleMailRecord.put("mail_status", 1); + settleMailRecord.put("notice_status", 0); + logSettleMailMapper.save(settleMailRecord); + } + sendTaskFinishMessages(ManagerRole.FINANCIAL_STAFF, "清算文件已发送清算方", "发送清算通知"); + if (autoMarkSent) { + if (!clearIds.isEmpty()) { + clearingLogMapper.lockSettlementsById(clearLogs.stream().map(log -> log.getString("clearing_id")).collect(Collectors.toList())); } else { - result.put("result", 0); - result.put("msg", "System error"); - return result; + clearingLogMapper.lockSettlements(date); } } - sendTaskFinishMessages(ManagerRole.FINANCIAL_STAFF, "清算文件已发送清算方", "发送清算通知"); - clearingLogMapper.lockSettlements(date); } catch (IOException e) { logger.error("生成excel字节数组发生错误"); } catch (URISyntaxException e) { @@ -1246,7 +1238,7 @@ public class CleanServiceImpl implements CleanService, ManagerTodoNoticeProvider } @Override - public JSONObject findLogSettleByDate(Date date) { + public List findLogSettleByDate(Date date) { return logSettleMailMapper.findByDate(date); } diff --git a/src/main/java/au/com/royalpay/payment/manage/management/clearing/web/SettlementDevController.java b/src/main/java/au/com/royalpay/payment/manage/management/clearing/web/SettlementDevController.java index ad48c2b8b..03a392d5b 100644 --- a/src/main/java/au/com/royalpay/payment/manage/management/clearing/web/SettlementDevController.java +++ b/src/main/java/au/com/royalpay/payment/manage/management/clearing/web/SettlementDevController.java @@ -121,14 +121,16 @@ public class SettlementDevController { } } - @ManagerMapping(value = "/reports/{date}/send_settlement_xlsx/{checkCode}", role = {ManagerRole.FINANCIAL_STAFF}) - public JSONObject sendSettlementMail(@PathVariable("date") String date, @PathVariable("checkCode") String checkCode) { + @ManagerMapping(value = "/reports/{date}/send_settlement_xlsx", role = {ManagerRole.FINANCIAL_STAFF}, method = RequestMethod.POST) + public JSONObject sendSettlementMail(@PathVariable("date") String date, @RequestBody JSONObject data) { Date dt = null; try { dt = dateFormat.parse(date); } catch (ParseException e) { } - return cleanService.sendSettlementMail(dt, checkCode); + List clearIds = data.getJSONArray("clearing_ids").toJavaList(String.class); + boolean autoMarkSent = data.getBooleanValue("mark_sent"); + return cleanService.sendSettlementMail(dt, clearIds, autoMarkSent); } @ManagerMapping(value = "/reports/send_checkcode", role = {ManagerRole.FINANCIAL_STAFF}) @@ -137,7 +139,7 @@ public class SettlementDevController { } @RequestMapping(value = "/reports/{date}/send_status") - public JSONObject sendStatus(@PathVariable String date) { + public List sendStatus(@PathVariable String date) { Date dt = null; try { dt = dateFormat.parse(date); diff --git a/src/main/java/au/com/royalpay/payment/manage/mappers/log/ClearingLogMapper.java b/src/main/java/au/com/royalpay/payment/manage/mappers/log/ClearingLogMapper.java index e6c3dbd14..8b6bbebfc 100644 --- a/src/main/java/au/com/royalpay/payment/manage/mappers/log/ClearingLogMapper.java +++ b/src/main/java/au/com/royalpay/payment/manage/mappers/log/ClearingLogMapper.java @@ -42,6 +42,8 @@ public interface ClearingLogMapper { void lockSettlements(@Param("date") Date date); + void lockSettlementsById(@Param("clearing_ids") List clearingIds); + @AutoSql(type = SqlType.SELECT) JSONObject findById(@Param("clearing_id") int clearingId); diff --git a/src/main/java/au/com/royalpay/payment/manage/mappers/log/LogSettleMailMapper.java b/src/main/java/au/com/royalpay/payment/manage/mappers/log/LogSettleMailMapper.java index 3d9bf9e1e..bc1177425 100644 --- a/src/main/java/au/com/royalpay/payment/manage/mappers/log/LogSettleMailMapper.java +++ b/src/main/java/au/com/royalpay/payment/manage/mappers/log/LogSettleMailMapper.java @@ -6,6 +6,7 @@ import cn.yixblog.support.mybatis.autosql.annotations.SqlType; import com.alibaba.fastjson.JSONObject; import java.util.Date; +import java.util.List; /** * Created by davep on 2016-09-04. @@ -16,7 +17,7 @@ public interface LogSettleMailMapper { @AutoSql(type = SqlType.INSERT) void save(JSONObject clearingLog); - JSONObject findByDate(Date date); + List findByDate(Date date); @AutoSql(type = SqlType.UPDATE) void update(JSONObject update); diff --git a/src/main/java/au/com/royalpay/payment/manage/mappers/system/ClientMapper.java b/src/main/java/au/com/royalpay/payment/manage/mappers/system/ClientMapper.java index 4d8542198..716329908 100644 --- a/src/main/java/au/com/royalpay/payment/manage/mappers/system/ClientMapper.java +++ b/src/main/java/au/com/royalpay/payment/manage/mappers/system/ClientMapper.java @@ -82,10 +82,7 @@ public interface ClientMapper { @AdvanceSelect(addonWhereClause = "is_valid=1") List listChildClients(@Param("parent_client_id") int parentClientId); - @AutoSql(type = SqlType.SELECT) - @AdvanceSelect(addonWhereClause = "is_valid=1") - PageList listChildClientsByPage(@Param("parent_client_id") int parentClientId, PageBounds pageBounds); - + PageList listChildClientsByPage(JSONObject params, PageBounds pageBounds); @AutoSql(type = SqlType.SELECT) @AdvanceSelect(addonWhereClause = "is_valid=1") diff --git a/src/main/java/au/com/royalpay/payment/manage/merchants/core/ClientManager.java b/src/main/java/au/com/royalpay/payment/manage/merchants/core/ClientManager.java index b3cb551ac..975e0cb13 100644 --- a/src/main/java/au/com/royalpay/payment/manage/merchants/core/ClientManager.java +++ b/src/main/java/au/com/royalpay/payment/manage/merchants/core/ClientManager.java @@ -173,7 +173,7 @@ public interface ClientManager { List listSubClients(JSONObject manager, String clientMoniker); - JSONObject listSubClientsByPage(JSONObject manager, String clientMoniker,int page); + JSONObject listSubClientsByPage(JSONObject manager, String clientMoniker,String searchText, int page); List listSubClients(int clientId); @@ -557,4 +557,5 @@ public interface ClientManager { RSvcMchBean findSvcMchByAccountId(String accountId); + void queryModifyClientIds(int clientId, JSONObject params); } diff --git a/src/main/java/au/com/royalpay/payment/manage/merchants/core/impls/ClientManagerImpl.java b/src/main/java/au/com/royalpay/payment/manage/merchants/core/impls/ClientManagerImpl.java index c795264cb..83b28df4e 100644 --- a/src/main/java/au/com/royalpay/payment/manage/merchants/core/impls/ClientManagerImpl.java +++ b/src/main/java/au/com/royalpay/payment/manage/merchants/core/impls/ClientManagerImpl.java @@ -2097,7 +2097,7 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid if(mchConfig.getBooleanValue("hide_sub_mch")){ return new ArrayList<>(); } - if (!mchConfig.getBooleanValue("disable_level3_mch")) { + if (!mchConfig.getBooleanValue("disable_level3_mch") && listChildClients.size()<100) { for (JSONObject partner : listChildClients) { List clients = clientMapper.listChildClients(partner.getIntValue("client_id")); if (clients.size() > 0) { @@ -2111,9 +2111,8 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid return listChildClients; } - @Override - public JSONObject listSubClientsByPage(JSONObject manager, String clientMoniker,int page) { + public JSONObject listSubClientsByPage(JSONObject manager, String clientMoniker,String searchText, int page) { JSONObject client = getClientInfoByMoniker(clientMoniker); if (client == null) { throw new InvalidShortIdException(); @@ -2121,9 +2120,23 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid checkOrgPermission(manager, client); PageBounds pageBounds; - pageBounds= new PageBounds(page, 5, Order.formString("create_time.desc")); - - PageList childClients = clientMapper.listChildClientsByPage(client.getIntValue("client_id"), pageBounds); + pageBounds= new PageBounds(page, 20, Order.formString("create_time.desc")); + JSONObject params = new JSONObject() {{ + put("parent_client_id", client.getIntValue("client_id")); + }}; + if (StringUtils.isNotBlank(searchText)) { + params.put("search_text", searchText); + } + PageList childClients = clientMapper.listChildClientsByPage(params, pageBounds); + for (JSONObject partner : childClients) { + List clients = clientMapper.listChildClients(partner.getIntValue("client_id")); + if (clients.size() > 0) { + partner.put("level3Clients", clients); + clients.forEach(e -> { + e.put("parent_client_moniker", partner.getString("client_moniker")); + }); + } + } return PageListUtils.buildPageListResult(childClients); } @@ -2209,7 +2222,6 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid throw new Exception("partner has no permission"); } } - } } } @@ -2676,6 +2688,8 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid if (client_ids != null) { params.put("client_ids", Arrays.asList(client_ids)); params.remove("client_id"); + }else { + queryModifyClientIds(client.getIntValue("client_id"), params); } PageList devices = clientDeviceMapper.listClientDevices(params, new PageBounds(page, limit, Order.formString("create_time.desc"))); return PageListUtils.buildPageListResult(devices); @@ -2695,6 +2709,8 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid if (client_ids != null) { params.put("client_ids", Arrays.asList(client_ids)); params.remove("client_id"); + }else { + queryModifyClientIds(client.getIntValue("client_id"), params); } List deviceIds = clientDeviceMapper.listClientDeviceIds(params); return new JSONObject() {{ @@ -3969,6 +3985,7 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid } JSONObject params = query.toParams(timezone); params.put("client_id", client_id); + queryModifyClientIds(client_id, params); PageList logs = transactionMapper.listSettlementLog(params, new PageBounds(query.getPage(), query.getLimit(), Order.formString("clearing_time.desc"))); JSONObject result = PageListUtils.buildPageListResult(logs); @@ -4011,6 +4028,7 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid } JSONObject params = query.toParams(timezone); params.put("client_id", client_id); + queryModifyClientIds(client_id, params); PageList logs = transactionMapper.listSettlementLog(params, new PageBounds(query.getPage(), 10000, Order.formString("clearing_time.desc"))); //Excel 多sheet导出 try (HSSFWorkbook workbook = new HSSFWorkbook()) { @@ -6621,6 +6639,26 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid return svcMchBean; } + @Override + public void queryModifyClientIds(int clientId, JSONObject params) { + if (StringUtils.isBlank(params.getString("client_ids"))) { + String[] clientIds = getChildClientIds(clientId); + if (clientIds.length > 1) { + params.put("client_ids", clientIds); + } + } + } + + private String[] getChildClientIds(int clientId) { + List clientIds = new ArrayList<>(); + List childs = clientMapper.listChildClients(clientId); + clientIds.add(String.valueOf(clientId)); + childs.forEach(p -> { + clientIds.add(p.getString("client_id")); + }); + return clientIds.toArray(new String[]{}); + } + private void clientApproveIdInfo(JSONObject params, JSONObject client) { if (StringUtils.isBlank(params.getString("id_type"))) { params.remove("id_type"); diff --git a/src/main/java/au/com/royalpay/payment/manage/merchants/web/PartnerManageController.java b/src/main/java/au/com/royalpay/payment/manage/merchants/web/PartnerManageController.java index dbec29599..44467674a 100644 --- a/src/main/java/au/com/royalpay/payment/manage/merchants/web/PartnerManageController.java +++ b/src/main/java/au/com/royalpay/payment/manage/merchants/web/PartnerManageController.java @@ -500,9 +500,11 @@ public class PartnerManageController { return clientManager.listSubClients(manager, clientMoniker); } - @ManagerMapping(value = "/{clientMoniker}/sub_clients/{page}", method = RequestMethod.GET) - public JSONObject listSubClientsByPage(@PathVariable String clientMoniker,@PathVariable int page, @ModelAttribute(CommonConsts.MANAGER_STATUS) JSONObject manager) { - return clientManager.listSubClientsByPage(manager, clientMoniker,page); + @ManagerMapping(value = "/{clientMoniker}/sub_clients/page", method = RequestMethod.GET) + public JSONObject listSubClientsByPage(@PathVariable String clientMoniker,@RequestParam(defaultValue = "1") int page, + @RequestParam(required = false) String searchText, + @ModelAttribute(CommonConsts.MANAGER_STATUS) JSONObject manager) { + return clientManager.listSubClientsByPage(manager, clientMoniker,searchText,page); } //创建子商户 diff --git a/src/main/java/au/com/royalpay/payment/manage/merchants/web/PartnerViewController.java b/src/main/java/au/com/royalpay/payment/manage/merchants/web/PartnerViewController.java index a69b63949..f8fa9b919 100644 --- a/src/main/java/au/com/royalpay/payment/manage/merchants/web/PartnerViewController.java +++ b/src/main/java/au/com/royalpay/payment/manage/merchants/web/PartnerViewController.java @@ -348,6 +348,14 @@ public class PartnerViewController { return clientManager.listSubClients(null, account.getString("client_moniker")); } + @PartnerMapping(value = "/sub_partners/page", method = RequestMethod.GET) + @ResponseBody + public JSONObject listSubPartnersByPage(@RequestParam(defaultValue = "1") int page, + @RequestParam(required = false) String searchText, + @ModelAttribute(CommonConsts.PARTNER_STATUS) JSONObject account) { + return clientManager.listSubClientsByPage(null, account.getString("client_moniker"), searchText,page); + } + @PartnerMapping(value = "/devices", method = RequestMethod.GET, roles = PartnerRole.ADMIN) @ResponseBody public JSONObject listClientDevices(@ModelAttribute(CommonConsts.PARTNER_STATUS) JSONObject account, @RequestParam(required = false) String remark, diff --git a/src/main/java/au/com/royalpay/payment/manage/support/abafile/ABAFile.java b/src/main/java/au/com/royalpay/payment/manage/support/abafile/ABAFile.java index 9e0f0d2e2..889f3d0c5 100644 --- a/src/main/java/au/com/royalpay/payment/manage/support/abafile/ABAFile.java +++ b/src/main/java/au/com/royalpay/payment/manage/support/abafile/ABAFile.java @@ -21,6 +21,7 @@ public class ABAFile { private List settlements; private BigDecimal totalSettleAmount; private Date operateTime; + private String remark; public ABAFile(ABAConfig.ABABase base, Date settleDate) { this.base = base; @@ -34,6 +35,15 @@ public class ABAFile { totalSettleAmount = totalSettleAmount.add(settleAmount); } + public String getRemark() { + return remark; + } + + public ABAFile setRemark(String remark) { + this.remark = remark; + return this; + } + public boolean manualSending() { return base.isManualSending(); } @@ -62,6 +72,10 @@ public class ABAFile { return format.format(totalSettleAmount); } + public BigDecimal getTotalSettleAmount(){ + return totalSettleAmount; + } + private String generateFinalLine() { StringBuilder lineBuilder = new StringBuilder(baseLine); lineBuilder.replace(0, 1, "7"); diff --git a/src/main/java/au/com/royalpay/payment/manage/tradelog/core/TradeLogService.java b/src/main/java/au/com/royalpay/payment/manage/tradelog/core/TradeLogService.java index a325c662c..50703c227 100644 --- a/src/main/java/au/com/royalpay/payment/manage/tradelog/core/TradeLogService.java +++ b/src/main/java/au/com/royalpay/payment/manage/tradelog/core/TradeLogService.java @@ -65,4 +65,5 @@ public interface TradeLogService { void exportPDFSettlement(TradeLogQuery query, JSONObject partner, HttpServletResponse response); void exportExcelAllPartner(TradeLogQuery query, JSONObject partner, HttpServletResponse httpResponse) throws Exception; + } 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 0e7bf4bd6..49f153ba1 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 @@ -157,6 +157,7 @@ public class TradeLogServiceImpl implements TradeLogService { JSONObject params = query.toParams(timezone); clientManager.validateClients(client.getIntValue("client_id"), params); params.put("client_id", client.getIntValue("client_id")); + clientManager.queryModifyClientIds(client.getIntValue("client_id"), params); if (manager != null && manager.getInteger("org_id") != null) { params.put("org_id", manager.getIntValue("org_id")); } @@ -529,9 +530,12 @@ public class TradeLogServiceImpl implements TradeLogService { String timezone = partner.getJSONObject("client").getString("timezone"); JSONObject params = query.toParams(timezone); clientManager.validateClients(client_id, params); + clientManager.queryModifyClientIds(client_id, params); + params.put("client_id", client_id); JSONObject mchConfig = merchantInfoProvider.getMchExtParams(partner.getIntValue("client_id")); params.put("hide_sub_mch", mchConfig.getBooleanValue("hide_sub_mch")); + List logs = transactionMapper.listTransFlow(params); TimeZoneUtils.switchTimeZone(logs, timezone, "create_time", "confirm_time", "transaction_time"); Paginator paginator = new Paginator(query.getPage(), query.getLimit(), logs.size()); @@ -555,6 +559,7 @@ public class TradeLogServiceImpl implements TradeLogService { JSONObject params = query.toParams(timezone); clientManager.validateClients(clientId, params); params.put("client_id", clientId); + clientManager.queryModifyClientIds(clientId, params); List logs = transactionMapper.listTransFlow(params); TimeZoneUtils.switchTimeZoneToString(logs, timezone, "dd/MM/yyyy HH:mm:ss", Collections.singletonList("transaction_time")); TimeZoneUtils.switchTimeZoneToString(logs, timezone, "dd/MM/yyyy", Collections.singletonList("clearing_time")); @@ -998,6 +1003,7 @@ public class TradeLogServiceImpl implements TradeLogService { String timezone = partner.getJSONObject("client").getString("timezone"); JSONObject params = query.toParams(timezone); params.put("client_id", clientId); + clientManager.queryModifyClientIds(clientId, params); PageList logs = transactionMapper.listSettlementLog(params, new PageBounds(query.getPage(), query.getLimit(), Order.formString("clearing_time.desc"))); JSONObject result = PageListUtils.buildPageListResult(logs); @@ -1031,6 +1037,7 @@ public class TradeLogServiceImpl implements TradeLogService { } JSONObject params = query.toParams(timezone); params.put("client_id", clientId); + clientManager.queryModifyClientIds(clientId, params); PageList logs = transactionMapper.listSettlementLog(params, new PageBounds(1, 100000000, Order.formString("clearing_time.desc"))); try (HSSFWorkbook workbook = new HSSFWorkbook()) { @@ -1465,6 +1472,8 @@ public class TradeLogServiceImpl implements TradeLogService { if (params.get("client_ids") == null) { params.put("client_id", partner.getJSONObject("client").getString("client_id")); } + clientManager.queryModifyClientIds(partner.getIntValue("client_id"), params); + List clientOrderList = transactionMapper.getClientOrderByTransactionTime(params); List clientOrders = new ArrayList<>(clientOrderList.size()); clientOrderList.parallelStream().forEach(p -> clientOrders.add(p.getInteger("clearing_order"))); @@ -1575,6 +1584,7 @@ public class TradeLogServiceImpl implements TradeLogService { if (params.get("client_ids") == null) { params.put("client_id", partner.getJSONObject("client").getString("client_id")); } + clientManager.queryModifyClientIds(partner.getIntValue("client_id"), params); List clientOrderList = transactionMapper.getClientOrderByTransactionTime(params); List clientOrders = new ArrayList<>(clientOrderList.size()); clientOrderList.parallelStream().forEach(p -> clientOrders.add(p.getInteger("clearing_order"))); @@ -1666,6 +1676,7 @@ public class TradeLogServiceImpl implements TradeLogService { if (params.get("client_ids") == null) { params.put("client_id", client.getString("client_id")); } + clientManager.queryModifyClientIds(partner.getIntValue("client_id"), params); List clientOrderList = transactionMapper.getClientOrderByTransactionTime(params); List clientOrders = new ArrayList<>(clientOrderList.size()); clientOrderList.parallelStream().forEach(p -> clientOrders.add(p.getInteger("clearing_order"))); @@ -1713,6 +1724,7 @@ public class TradeLogServiceImpl implements TradeLogService { JSONObject params = query.toParams(timezone); clientManager.validateClients(clientId1, params); params.put("client_id", clientId1); + clientManager.queryModifyClientIds(clientId1, params); List logs = transactionMapper.listTransFlow(params); TimeZoneUtils.switchTimeZoneToString(logs, timezone, "dd/MM/yyyy HH:mm:ss", Collections.singletonList("transaction_time")); @@ -1805,4 +1817,6 @@ public class TradeLogServiceImpl implements TradeLogService { } } } + + } diff --git a/src/main/resources/application-dev.properties b/src/main/resources/application-dev.properties index 9ace52739..6f4d63ef2 100644 --- a/src/main/resources/application-dev.properties +++ b/src/main/resources/application-dev.properties @@ -2,15 +2,15 @@ spring.datasource.type = com.zaxxer.hikari.HikariDataSource #数据源master -spring.datasource.master.schema-name=royalpay_dev -spring.datasource.master.host=127.0.0.1:3306 +spring.datasource.master.schema-name=royalpay_production +spring.datasource.master.host=192.168.0.4:3306 spring.datasource.master.jdbc-url=jdbc:mysql://${spring.datasource.master.host}/${spring.datasource.master.schema-name}?useUnicode=true&characterEncoding=utf8&useSSL=false -spring.datasource.master.username=root -spring.datasource.master.password=root +spring.datasource.master.username=taylor +spring.datasource.master.password=taylor #数据源salve -spring.datasource.slave.schema-name=royalpay_dev -spring.datasource.slave.host=127.0.0.1:3306 +spring.datasource.slave.schema-name=royalpay_production +spring.datasource.slave.host=192.168.0.4:3306 spring.datasource.slave.jdbc-url=jdbc:mysql://${spring.datasource.slave.host}/${spring.datasource.slave.schema-name}?useUnicode=true&characterEncoding=utf8&useSSL=false -spring.datasource.slave.username=root -spring.datasource.slave.password=root +spring.datasource.slave.username=taylor +spring.datasource.slave.password=taylor diff --git a/src/main/resources/application-officedev.properties b/src/main/resources/application-officedev.properties index 599663cb0..13dbe1448 100644 --- a/src/main/resources/application-officedev.properties +++ b/src/main/resources/application-officedev.properties @@ -1,12 +1,18 @@ spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.master.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.schema-name=royalpay +spring.datasource.user=root +spring.datasource.pwd=rpayplus spring.datasource.host=192.168.0.84:3306 spring.datasource.master.jdbc-url=jdbc:mysql://${spring.datasource.host}/${spring.datasource.schema-name}?useUnicode=true&characterEncoding=utf8&useSSL=false -spring.datasource.master.username=root -spring.datasource.master.password=rpayplus +spring.datasource.master.username=${spring.datasource.user} +spring.datasource.master.password=${spring.datasource.pwd} spring.datasource.slave.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.slave.jdbc-url=jdbc:mysql://${spring.datasource.host}/${spring.datasource.schema-name}?useUnicode=true&characterEncoding=utf8&useSSL=false -spring.datasource.slave.username=root -spring.datasource.slave.password=rpayplus \ No newline at end of file +spring.datasource.slave.username=${spring.datasource.user} +spring.datasource.slave.password=${spring.datasource.pwd} + +spring.redis.host=192.168.0.84 +spring.redis.port=6379 +spring.redis.database=9 \ No newline at end of file diff --git a/src/main/resources/au/com/royalpay/payment/manage/mappers/log/ClearingLogMapper.xml b/src/main/resources/au/com/royalpay/payment/manage/mappers/log/ClearingLogMapper.xml index cf8c2181a..75f117f77 100644 --- a/src/main/resources/au/com/royalpay/payment/manage/mappers/log/ClearingLogMapper.xml +++ b/src/main/resources/au/com/royalpay/payment/manage/mappers/log/ClearingLogMapper.xml @@ -2,7 +2,16 @@ - update log_clearing set editable=0 where settle_date=#{date} + update log_clearing + set editable=0 + where settle_date = #{date} + + + update log_clearing set editable=0 + where clearing_id in + + #{id} + SELECT SUM(royalpay_charge) royalpay_charge - FROM log_clearing - WHERE year(settle_date) = #{year} - AND month(settle_date) = #{month} + FROM log_clearing + WHERE year(settle_date) = #{year} + AND month(settle_date) = #{month} \ No newline at end of file diff --git a/src/main/resources/au/com/royalpay/payment/manage/mappers/payment/TransactionMapper.xml b/src/main/resources/au/com/royalpay/payment/manage/mappers/payment/TransactionMapper.xml index 73dd48ed8..aff9a9845 100644 --- a/src/main/resources/au/com/royalpay/payment/manage/mappers/payment/TransactionMapper.xml +++ b/src/main/resources/au/com/royalpay/payment/manage/mappers/payment/TransactionMapper.xml @@ -359,8 +359,16 @@ SUM(t.clearing_amount) total FROM pmt_transactions t WHERE t.channel='Settlement' - and t.client_id=#{client_id} ]]> + + AND t.client_id IN + + #{client_id} + + + + and t.client_id=#{client_id} + and t.transaction_time >= #{from} and t.transaction_time < #{to} diff --git a/src/main/resources/au/com/royalpay/payment/manage/mappers/system/ClientMapper.xml b/src/main/resources/au/com/royalpay/payment/manage/mappers/system/ClientMapper.xml index a5a1804e7..5d79f6cf0 100644 --- a/src/main/resources/au/com/royalpay/payment/manage/mappers/system/ClientMapper.xml +++ b/src/main/resources/au/com/royalpay/payment/manage/mappers/system/ClientMapper.xml @@ -555,6 +555,17 @@ and contact_email = #{contact_email} + - +
    +
  • + [{{log.remark}}]{{log.id}} + +
  • +
+ +
+
+
+
@@ -34,6 +45,24 @@
+
diff --git a/src/main/ui/static/payment/partner/templates/partner_pay_logs.html b/src/main/ui/static/payment/partner/templates/partner_pay_logs.html index 1b269b062..311ed6a48 100644 --- a/src/main/ui/static/payment/partner/templates/partner_pay_logs.html +++ b/src/main/ui/static/payment/partner/templates/partner_pay_logs.html @@ -1,4 +1,45 @@ -
+ +
@@ -164,13 +205,110 @@
-

+

All

+

+ All + +

+
+
+
+
+ +
+
+ +
+
+
+
+ + + + + + + + + + + + + + + +
Partner CodePartner NameOperation
+ {{subPartner.client_moniker}} + + +
+
+
+ + + + + + + + + + + + + + + +
Partner CodePartner NameOperation
+ {{subPartner.client_moniker}} + + +
+
+
+ +
+ +
diff --git a/src/main/ui/static/payment/partner/templates/partner_settlement.html b/src/main/ui/static/payment/partner/templates/partner_settlement.html index 068607521..4ecc13fbe 100644 --- a/src/main/ui/static/payment/partner/templates/partner_settlement.html +++ b/src/main/ui/static/payment/partner/templates/partner_settlement.html @@ -1,4 +1,45 @@ -
+ +
@@ -53,7 +94,7 @@
-

+

All

+

+ All + +

+
+
+
+
+ +
+
+ +
+
+
+
+ + + + + + + + + + + + + + + +
Partner CodePartner NameOperation
+ {{subPartner.client_moniker}} + + +
+
+
+ + + + + + + + + + + + + + + +
Partner CodePartner NameOperation
+ {{subPartner.client_moniker}} + + +
+
+
+ +
+ +
+
+
+
+
+ + + + + + + + + + + + + + + +
Partner CodePartner NameOperation
+ {{subPartner.client_moniker}} + + +
+
+
+ + + + + + + + + + + + + + + +
Partner CodePartner NameOperation
+ {{subPartner.client_moniker}} + + +
+
+
+ +
+ +
Search - -
-
diff --git a/src/main/ui/static/payment/tradelog/templates/partner_settlement_logs.html b/src/main/ui/static/payment/tradelog/templates/partner_settlement_logs.html index cb24010e1..355d14fbe 100644 --- a/src/main/ui/static/payment/tradelog/templates/partner_settlement_logs.html +++ b/src/main/ui/static/payment/tradelog/templates/partner_settlement_logs.html @@ -9,6 +9,45 @@ .alignCen,.alignCen th{ text-align: center; } + .white_content { + display: none; + position: absolute; + width: 80%; + height: 400px; + padding: 20px; + border: 1px solid orange; + background-color: white; + z-index:1002; + overflow: auto; + } + .white_content::-webkit-scrollbar:vertical { + width: 11px; + } + /*定义滚动条高宽及背景 + 高宽分别对应横竖滚动条的尺寸*/ + .white_content::-webkit-scrollbar + { + -webkit-appearance: none; + width:16px; + height:16px; + background-color:#F5F5F5; + } + /*定义滚动条轨道 + 内阴影+圆角*/ + .white_content::-webkit-scrollbar-track + { + -webkit-box-shadow:inset 0 0 6px rgba(0,0,0,0.3); + border-radius:10px; + background-color:#F5F5F5; + } + /*定义滑块 + 内阴影+圆角*/ + .white_content::-webkit-scrollbar-thumb + { + border-radius:10px; + -webkit-box-shadow:inset 0 0 6px rgba(0,0,0,.3); + background-color:#555; + }

Settlement

@@ -19,7 +58,7 @@
  • Settlement
  • -
    +
    @@ -74,7 +113,7 @@
    -

    +

    All

    +

    + All + +

    +
    +
    +
    +
    + +
    +
    + +
    +
    +
    +
    + + + + + + + + + + + + + + + +
    Partner CodePartner NameOperation
    + {{subPartner.client_moniker}} + + +
    +
    +
    + + + + + + + + + + + + + + + +
    Partner CodePartner NameOperation
    + {{subPartner.client_moniker}} + + +
    +
    +
    + +
    + +
    diff --git a/src/main/ui/static/payment/tradelog/templates/partner_trade_logs.html b/src/main/ui/static/payment/tradelog/templates/partner_trade_logs.html index f283ffee2..a6b9760d8 100644 --- a/src/main/ui/static/payment/tradelog/templates/partner_trade_logs.html +++ b/src/main/ui/static/payment/tradelog/templates/partner_trade_logs.html @@ -78,6 +78,45 @@ .line_height_ { line-height: 22px; } + .white_content { + display: none; + position: absolute; + width: 80%; + height: 400px; + padding: 20px; + border: 1px solid orange; + background-color: white; + z-index:1002; + overflow: auto; + } + .white_content::-webkit-scrollbar:vertical { + width: 11px; + } + /*定义滚动条高宽及背景 + 高宽分别对应横竖滚动条的尺寸*/ + .white_content::-webkit-scrollbar + { + -webkit-appearance: none; + width:16px; + height:16px; + background-color:#F5F5F5; + } + /*定义滚动条轨道 + 内阴影+圆角*/ + .white_content::-webkit-scrollbar-track + { + -webkit-box-shadow:inset 0 0 6px rgba(0,0,0,0.3); + border-radius:10px; + background-color:#F5F5F5; + } + /*定义滑块 + 内阴影+圆角*/ + .white_content::-webkit-scrollbar-thumb + { + border-radius:10px; + -webkit-box-shadow:inset 0 0 6px rgba(0,0,0,.3); + background-color:#555; + }

    Orders

    @@ -88,7 +127,7 @@
  • Orders
  • -
    +

    {{order.display_amount|currency:order.currency+' '}} Paid Success!

    @@ -290,7 +329,7 @@ ng-if="currentUser.client.has_children && !currentUser.client.hide_sub_mch">
    -

    +

    All

    +

    + All + +

    +
    +
    +
    +
    + +
    +
    + +
    +
    +
    +
    + + + + + + + + + + + + + + + +
    Partner CodePartner NameOperation
    + {{subPartner.client_moniker}} + + +
    +
    +
    + + + + + + + + + + + + + + + +
    Partner CodePartner NameOperation
    + {{subPartner.client_moniker}} + + +
    +
    +
    + +
    + +
    abaFileList = cleanService.getAba(date, "CBA"); + final ArrayList clearIds = new ArrayList<>(); + List abaFileList = cleanService.getAba(date, "CBA", cleanService.getSettleLogs(date, clearIds)); Context ctx = new Context(); ctx.setVariable("date", DateFormatUtils.format(date, "dd-MM-yyyy")); diff --git a/uidocker/conf.d/default.conf b/uidocker/conf.d/default.conf new file mode 100644 index 000000000..e8dd7dba8 --- /dev/null +++ b/uidocker/conf.d/default.conf @@ -0,0 +1,211 @@ +server { + listen 80; + server_name _ default; + underscores_in_headers on; + proxy_ignore_client_abort on; + client_max_body_size 0; + + + location / { + root /var/www/royalpay/; + try_files $uri $uri/login.html @route; + } + + location @route { + proxy_pass http://127.0.0.1:3000; + proxy_set_header Host $host; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + } +} +server { + listen 3000; + server_name _ default; + + location ~ ^/api/v1.0/retail/((?!(app|rsvc)).)+ { + proxy_pass http://rppaycenter; + + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "upgrade"; + + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto https; + proxy_set_header Host $host; + proxy_set_header Real-IP $remote_addr; + + proxy_read_timeout 300s; + + } + + location /oauth { + proxy_pass http://rpgateway; + + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "upgrade"; + + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto https; + proxy_set_header Host $host; + proxy_set_header Real-IP $remote_addr; + + proxy_read_timeout 300s; + } + + location /api/v1.0/retail/app { + proxy_pass http://rpgateway; + + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "upgrade"; + + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto https; + proxy_set_header Host $host; + proxy_set_header Real-IP $remote_addr; + + proxy_read_timeout 300s; + } + + + location ~ ^/api/v1.0/((jd)|(customs)|(alipay)|(rpay)|(yeepay)|(lakala_pay)|(cb_bankpay)|(bestpay)|(hf)|(wechat_jsapi_gateway)|(h5_payment)|(gateway)|(hf_gateway)|(jd_gateway)|(micropay)|(retail_qrcode)|(jsapi_gateway)|(share_code)|(payment))/ { + proxy_pass http://rppaycenter; + + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "upgrade"; + + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto https; + proxy_set_header Host $host; + proxy_set_header Real-IP $remote_addr; + + proxy_read_timeout 300s; + + } + + location /static { + proxy_pass http://rppaycenter; + + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "upgrade"; + + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto https; + proxy_set_header Host $host; + proxy_set_header Real-IP $remote_addr; + + proxy_read_timeout 300s; + } + + location /api/wechat { + proxy_pass http://rppaycenter; + + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "upgrade"; + + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto https; + proxy_set_header Host $host; + proxy_set_header Real-IP $remote_addr; + + proxy_read_timeout 300s; + + } + + location /api/payment/v1.0/wechat_jsapi_payment/ { + proxy_pass http://rppaycenter; + + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "upgrade"; + + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto https; + proxy_set_header Host $host; + proxy_set_header Real-IP $remote_addr; + + proxy_read_timeout 300s; + + } + + location /partner/cashiers/payment { + proxy_pass http://rppaycenter; + + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "upgrade"; + + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto https; + proxy_set_header Host $host; + proxy_set_header Real-IP $remote_addr; + + proxy_read_timeout 300s; + + } + + location /client/goods { + proxy_pass http://rppaycenter; + + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "upgrade"; + + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto https; + proxy_set_header Host $host; + proxy_set_header Real-IP $remote_addr; + + proxy_read_timeout 300s; + + } + + location /goods/payment { + proxy_pass http://rppaycenter; + + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "upgrade"; + + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto https; + proxy_set_header Host $host; + proxy_set_header Real-IP $remote_addr; + + proxy_read_timeout 300s; + } + + location /dev/status { + proxy_pass http://rppaycenter; + + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "upgrade"; + + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto https; + proxy_set_header Host $host; + proxy_set_header Real-IP $remote_addr; + + proxy_read_timeout 300s; + } + + location / { + proxy_pass http://rpmanage; + + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "upgrade"; + + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto https; + proxy_set_header Host $host; + proxy_set_header Real-IP $remote_addr; + + proxy_read_timeout 300s; + } + +} \ No newline at end of file diff --git a/uidocker/upstream.conf.tpl b/uidocker/upstream.conf.tpl new file mode 100644 index 000000000..2653e9ee0 --- /dev/null +++ b/uidocker/upstream.conf.tpl @@ -0,0 +1,12 @@ +upstream rpmanage{ + server ${MANAGE_SVC}; +} +upstream rppaycenter{ + server ${PAYCENTER_SVC}; +} +upstream rptrans{ + server ${TRANS_SVC}; +} +upstream rpgateway{ + server ${GTWAY_SVC}; +}