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}
+
\ 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}
+
+ select * from sys_clients
+ where
+ parent_client_id = #{parent_client_id}
+ and is_valid = 1
+
+
+ and (client_moniker=#{search_text} or short_name like #{name_pattern} or company_name like
+ #{name_pattern} or business_name like #{name_pattern} or contact_email=#{search_text})
+
+
select distinct t.client_id
from pmt_transactions t
diff --git a/src/main/resources/templates/mail/settlement_mail.html b/src/main/resources/templates/mail/settlement_mail.html
index 3eb798957..6ca340d91 100644
--- a/src/main/resources/templates/mail/settlement_mail.html
+++ b/src/main/resources/templates/mail/settlement_mail.html
@@ -5,11 +5,12 @@
Please find the attached settlement files data up to
+
File Validation:
diff --git a/src/main/ui/static/analysis/clearing-log.js b/src/main/ui/static/analysis/clearing-log.js
index f8a642d0f..ab22ba781 100644
--- a/src/main/ui/static/analysis/clearing-log.js
+++ b/src/main/ui/static/analysis/clearing-log.js
@@ -323,11 +323,15 @@ define(['angular', 'decimal', 'uiBootstrap', 'uiRouter', 'angularEcharts'], func
if ($scope.datePattern == nowStr) {
$scope.sendNotice = true;
}
- $scope.displaySendCheckCode = function () {
+ $scope.displaySendCheck = function () {
$uibModal.open({
templateUrl: '/static/analysis/templates/settlement_send_check_code.html',
controller: 'settlementSendCheckCodeCtrl',
- size: 'sm'
+ resolve: {
+ settleLogs: function () {
+ return $scope.detail.logs.filter(log => log.editable);
+ }
+ }
});
};
@@ -348,15 +352,6 @@ define(['angular', 'decimal', 'uiBootstrap', 'uiRouter', 'angularEcharts'], func
})[0];
};
- $http.get('/sys/settlement/reports/' + $stateParams.date + '/send_status/').then(function (resp) {
- if (resp.data != null && resp.data.mail_status == 1) {
- $scope.hasSentMail = true;
- }
- });
- $scope.$on("sendMailSuccess",
- function (event, msg) {
- $scope.hasSentMail = true;
- });
$scope.confirmSendSettlementMail = function () {
commonDialog.confirm({
@@ -497,25 +492,29 @@ define(['angular', 'decimal', 'uiBootstrap', 'uiRouter', 'angularEcharts'], func
};
}]);
- app.controller('settlementSendCheckCodeCtrl', ['$scope', '$http', '$rootScope', '$stateParams', function ($scope, $http, $rootScope, $stateParams) {
+ app.controller('settlementSendCheckCodeCtrl', ['$scope', '$http', '$rootScope', '$stateParams', 'settleLogs', function ($scope, $http, $rootScope, $stateParams, settleLogs) {
+ $scope.settleLogs = settleLogs.map(log => {
+ let info = {
+ 'id': log.clearing_id,
+ 'time':log.operate_time,
+ 'amount':log.net_amount,
+ 'remark': log.plan_detail.remark || log.plan_detail.plan_id,
+ 'send': false
+ };
+ return info
+ });
+ $scope.config = {mark_sent: true};
+ $scope.switchSendFlag=function(info){
+ info.send=!info.send
+ };
$scope.sendCheckCodeButton = false;
$scope.sendMailButton = false;
- $scope.check_code = '';
- $scope.sendCheckCode = function () {
- $scope.error_msg = '';
- $http.get('/sys/settlement/reports/send_checkcode').then(function (resp) {
- });
- $scope.sendCheckCodeButton = true;
- };
$scope.sendSettlementMail = function () {
$scope.error_msg = '正在发送,请稍后。';
- if ($scope.check_code == '' || $scope.check_code == null) {
- $scope.error_msg = '请输入验证码';
- return;
- }
$scope.sendMailButton = true;
- $http.get('/sys/settlement/reports/' + $stateParams.date + '/send_settlement_xlsx/' + $scope.check_code).then(function (resp) {
+ $http.post('/sys/settlement/reports/' + $stateParams.date + '/send_settlement_xlsx',
+ {clearing_ids:$scope.settleLogs.filter(log=>log.send).map(log=>log.id),mark_sent:$scope.config.mark_sent}).then(function (resp) {
$scope.error_msg = resp.data.msg;
$scope.sendMailButton = false;
if (resp.data.result == 0) {
diff --git a/src/main/ui/static/analysis/partner-customers-orders.js b/src/main/ui/static/analysis/partner-customers-orders.js
index 8da0f613c..78a97a53d 100644
--- a/src/main/ui/static/analysis/partner-customers-orders.js
+++ b/src/main/ui/static/analysis/partner-customers-orders.js
@@ -104,6 +104,9 @@ define(['angular', 'uiBootstrap', 'uiRouter', 'angularEcharts'], function (angul
} else {
params.end = $filter('date')(new Date(), 'yyyyMMdd');
}
+ if ($scope.chooseShow === 'All') {
+ delete params.client_ids;
+ }
$http.get('/dashboard/partner/customers', {params: params}).then(function (resp) {
var dates = [];
var new_customers = [];
@@ -118,7 +121,7 @@ define(['angular', 'uiBootstrap', 'uiRouter', 'angularEcharts'], function (angul
// $scope.customersHistory = chartParser.parse(customersHistoryConfig, resp.data.reverse());
$scope.perCustomerTransactionHistory = chartParser.parse(perCustomerTransactionHistoryConfig, resp.data);
//$scope.ordersHistory = chartParser.parse(ordersHistoryConfig, resp.data);
- })
+ });
};
$scope.chooseLast7Days();
diff --git a/src/main/ui/static/analysis/partner-trans-analysis.js b/src/main/ui/static/analysis/partner-trans-analysis.js
index d48990998..ed8185c3f 100644
--- a/src/main/ui/static/analysis/partner-trans-analysis.js
+++ b/src/main/ui/static/analysis/partner-trans-analysis.js
@@ -104,6 +104,9 @@ define(['angular', 'uiBootstrap', 'uiRouter', 'angularEcharts'], function (angul
} else {
params.end = $filter('date')(new Date(), 'yyyyMMdd');
}
+ if ($scope.chooseShow === 'All') {
+ delete params.client_ids;
+ }
$http.get('/dashboard/partner/customers', {params: params}).then(function (resp) {
$scope.transactionAmountHistory = chartParser.parse(transactionAmountHistoryConfig, resp.data.reverse());
$scope.ordersHistory = chartParser.parse(ordersHistoryConfig, resp.data);
diff --git a/src/main/ui/static/analysis/templates/settlement_detail.html b/src/main/ui/static/analysis/templates/settlement_detail.html
index 195557b90..3e8a67a2e 100644
--- a/src/main/ui/static/analysis/templates/settlement_detail.html
+++ b/src/main/ui/static/analysis/templates/settlement_detail.html
@@ -29,7 +29,7 @@
Settlement.aba
diff --git a/src/main/ui/static/analysis/templates/settlement_send_check_code.html b/src/main/ui/static/analysis/templates/settlement_send_check_code.html
index 515eb2fa1..16a683a05 100644
--- a/src/main/ui/static/analysis/templates/settlement_send_check_code.html
+++ b/src/main/ui/static/analysis/templates/settlement_send_check_code.html
@@ -1,13 +1,21 @@
-
-
+
+ -
+ [{{log.remark}}]{{log.id}}
+
+
+
+
+
+