From 042c95fed11f42a71190bd203128e8609463e14d Mon Sep 17 00:00:00 2001 From: "taylor.dang" Date: Thu, 15 Aug 2019 16:21:49 +0800 Subject: [PATCH 01/25] =?UTF-8?q?[Y]=E7=A7=BB=E9=99=A4tax=5Fin=5Fsurcharge?= =?UTF-8?q?=E6=93=8D=E4=BD=9C=EF=BC=9A=E8=B4=B9=E7=8E=87=E8=87=AA=E5=8A=A8?= =?UTF-8?q?=E5=BB=B6=E6=9C=9F=E3=80=81=E4=B8=8A=E4=BC=A0=E5=95=86=E6=88=B7?= =?UTF-8?q?=E6=9D=90=E6=96=99=E7=AD=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 2 +- .../payment/manage/dev/core/impl/ManualServiceimpl.java | 1 - .../payment/manage/merchants/core/impls/ClientManagerImpl.java | 2 -- .../manage/system/core/impl/ClientContractServiceImpl.java | 1 - 4 files changed, 1 insertion(+), 5 deletions(-) diff --git a/pom.xml b/pom.xml index 52dd127ca..f169dc9b0 100644 --- a/pom.xml +++ b/pom.xml @@ -10,7 +10,7 @@ 4.0.0 manage - 1.1.15 + 1.1.16 UTF-8 diff --git a/src/main/java/au/com/royalpay/payment/manage/dev/core/impl/ManualServiceimpl.java b/src/main/java/au/com/royalpay/payment/manage/dev/core/impl/ManualServiceimpl.java index c5f08f985..485c09450 100644 --- a/src/main/java/au/com/royalpay/payment/manage/dev/core/impl/ManualServiceimpl.java +++ b/src/main/java/au/com/royalpay/payment/manage/dev/core/impl/ManualServiceimpl.java @@ -108,6 +108,5 @@ public class ManualServiceimpl implements ManualService { } }); - clientModifySupport.processClientConfigModify(new SwitchPermissionModify(null, client_moniker, "tax_in_surcharge", false)); } } 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 88d98677a..86bb56b45 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 @@ -4997,7 +4997,6 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid rpayApi.modifySurchargeConfig(clientMapper.findClient(client_id)); } } - clientModifySupport.processClientConfigModify(new SwitchPermissionModify(null, client.getString("client_moniker"), "tax_in_surcharge", false)); adminAccounts.forEach(o -> { sendClientPostponeNotify(o, expireDate); }); @@ -5017,7 +5016,6 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid public boolean postponeClientRate(int clientId, String clientMoniker, String nextYearExipryDate) { try { clientRateMapper.postponeMerchantRateByClientId(clientId); - clientModifySupport.processClientConfigModify(new SwitchPermissionModify(null, clientMoniker, "tax_in_surcharge", false)); List adminAccounts = clientAccountMapper.listAdminAccounts(clientId); adminAccounts.forEach(o -> { sendClientPostponeNotify(o, nextYearExipryDate); diff --git a/src/main/java/au/com/royalpay/payment/manage/system/core/impl/ClientContractServiceImpl.java b/src/main/java/au/com/royalpay/payment/manage/system/core/impl/ClientContractServiceImpl.java index b4082fb18..3b9102fbf 100644 --- a/src/main/java/au/com/royalpay/payment/manage/system/core/impl/ClientContractServiceImpl.java +++ b/src/main/java/au/com/royalpay/payment/manage/system/core/impl/ClientContractServiceImpl.java @@ -104,7 +104,6 @@ public class ClientContractServiceImpl implements ClientContractService { contract.put("confirm_time", now); contract.put("signatory", account.getString("display_name")); clientsContractMapper.update(contract); - clientManager.setClientTaxInSurcharge(clientAccountMapper.findById(account_id),client.getString("client_moniker"), false); } @Override From 2aa3f072fe855a2a9df9d84bce14e0821bf3e827 Mon Sep 17 00:00:00 2001 From: duLingLing Date: Fri, 16 Aug 2019 10:17:52 +0800 Subject: [PATCH 02/25] =?UTF-8?q?Upd:=E4=BC=98=E5=8C=96BD=E9=94=80?= =?UTF-8?q?=E9=87=8F=EF=BC=8C=E5=90=88=E4=BC=99=E4=BA=BA=E4=BA=A4=E6=98=93?= =?UTF-8?q?=E9=87=8F=E6=95=B0=E6=8D=AE=E6=9F=A5=E8=AF=A2=20Add:=E7=94=9F?= =?UTF-8?q?=E6=88=90BD=E9=94=80=E9=87=8F=E6=95=B0=E6=8D=AE=E6=AF=8F?= =?UTF-8?q?=E6=97=A5=E5=AE=9A=E6=97=B6=E8=AE=A1=E7=AE=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../analysis/core/BDAnalysisService.java | 6 + .../core/impls/BDAnalysisServiceImpl.java | 223 ++++++++++++------ .../core/impls/OrgAnalysisServiceImp.java | 49 +++- .../analysis/mappers/BDAnalysisMapper.java | 3 + .../manage/dev/web/AnalysisController.java | 28 +++ .../log/StatisticsBDSalesReportMapper.java | 29 +++ .../manage/task/DBSaleAnalysisTask.java | 34 +++ .../analysis/mappers/BDAnalysisMapper.xml | 148 +++++++----- .../mappers/TransactionAnalysisMapper.xml | 39 ++- .../log/StatisticsBDSalesReportMapper.xml | 86 +++++++ src/main/ui/static/analysis/bd-sale-volume.js | 2 +- .../analysis/org-tranaction-analysis.js | 2 + .../analysis/templates/bd_sale_analysis.html | 13 - .../analysis/templates/org_sale_analysis.html | 4 - .../manage/task/DBAnalysisTaskTest.java | 28 +++ 15 files changed, 523 insertions(+), 171 deletions(-) create mode 100644 src/main/java/au/com/royalpay/payment/manage/dev/web/AnalysisController.java create mode 100644 src/main/java/au/com/royalpay/payment/manage/mappers/log/StatisticsBDSalesReportMapper.java create mode 100644 src/main/java/au/com/royalpay/payment/manage/task/DBSaleAnalysisTask.java create mode 100644 src/main/resources/au/com/royalpay/payment/manage/mappers/log/StatisticsBDSalesReportMapper.xml create mode 100644 src/test/java/au/com/royalpay/payment/manage/task/DBAnalysisTaskTest.java diff --git a/src/main/java/au/com/royalpay/payment/manage/analysis/core/BDAnalysisService.java b/src/main/java/au/com/royalpay/payment/manage/analysis/core/BDAnalysisService.java index ae814453e..7f9360453 100644 --- a/src/main/java/au/com/royalpay/payment/manage/analysis/core/BDAnalysisService.java +++ b/src/main/java/au/com/royalpay/payment/manage/analysis/core/BDAnalysisService.java @@ -30,4 +30,10 @@ public interface BDAnalysisService { * @return bd_id, bd_name, num */ List approvedAnalysis(JSONObject params); + + /** + * BD销售每日数据统计 + * @param format + */ + void generateReport(String format); } diff --git a/src/main/java/au/com/royalpay/payment/manage/analysis/core/impls/BDAnalysisServiceImpl.java b/src/main/java/au/com/royalpay/payment/manage/analysis/core/impls/BDAnalysisServiceImpl.java index 579561871..96f113b02 100644 --- a/src/main/java/au/com/royalpay/payment/manage/analysis/core/impls/BDAnalysisServiceImpl.java +++ b/src/main/java/au/com/royalpay/payment/manage/analysis/core/impls/BDAnalysisServiceImpl.java @@ -3,10 +3,13 @@ package au.com.royalpay.payment.manage.analysis.core.impls; import au.com.royalpay.payment.manage.analysis.beans.AnalysisBean; import au.com.royalpay.payment.manage.analysis.core.BDAnalysisService; import au.com.royalpay.payment.manage.analysis.mappers.BDAnalysisMapper; +import au.com.royalpay.payment.manage.mappers.log.StatisticsBDSalesReportMapper; import au.com.royalpay.payment.tools.permission.enums.ManagerRole; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import org.apache.commons.io.IOUtils; +import org.apache.commons.lang3.time.DateFormatUtils; +import org.apache.commons.lang3.time.DateUtils; import org.apache.poi.hssf.usermodel.*; import org.apache.poi.hssf.util.HSSFColor; import org.apache.poi.ss.usermodel.*; @@ -18,8 +21,12 @@ import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.OutputStream; import java.math.BigDecimal; +import java.text.ParseException; +import java.text.SimpleDateFormat; import java.util.ArrayList; +import java.util.Date; import java.util.List; +import java.util.UUID; /** * Created by yishuqian on 30/09/2016. @@ -30,24 +37,50 @@ public class BDAnalysisServiceImpl implements BDAnalysisService { @Resource private BDAnalysisMapper bdAnalysisMapper; + @Resource + private StatisticsBDSalesReportMapper bdSalesReportMapper; + @Override public List getSalesAnalysis(JSONObject jsonObject) { return listSalesAnalysis(jsonObject); } - private List listSalesAnalysis(JSONObject jsonObject){ + private List listSalesAnalysis(JSONObject jsonObject) { List listCountApproved = bdAnalysisMapper.countApproved(jsonObject); - List bdSaleList = bdAnalysisMapper.getBDSaleList(jsonObject); - for(JSONObject countApproved : listCountApproved){ - for(JSONObject saleList : bdSaleList){ - if(countApproved.getString("bd_id").equals(saleList.getString("bd_id"))){ - saleList.put("num",countApproved.getString("num")); + List bdSaleList = bdSalesReportMapper.getBDSaleList(jsonObject); + for (JSONObject countApproved : listCountApproved) { + for (JSONObject saleList : bdSaleList) { + if (countApproved.getString("bd_id").equals(saleList.getString("bd_id"))) { + saleList.put("num", countApproved.getString("num")); + } + } + } + SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd"); + if (sd.format(jsonObject.getDate("end")).equals(sd.format(DateUtils.addDays(new Date(), 1)))) { + jsonObject.put("begin", DateUtils.addDays(jsonObject.getDate("end"), -1)); +// jsonObject.put("end", DateUtils.addDays(jsonObject.getDate("end"), -2)); + jsonObject.put("end",jsonObject.getDate("end")); + List todaySaleList = bdAnalysisMapper.getBDSaleList(jsonObject); + for (JSONObject todayBDSaleItem : todaySaleList) { + boolean flag = false; + for(JSONObject baSaleItem: bdSaleList){ + if (baSaleItem.getString("bd_id").equals(todayBDSaleItem.getString("bd_id"))) { + BigDecimal newAmount = baSaleItem.getBigDecimal("total").add(todayBDSaleItem.getBigDecimal("total")); + baSaleItem.put("total",newAmount); + flag = true; + } + } + if (!flag) { + bdSaleList.add(todayBDSaleItem); } } } + return bdSaleList; } + //单独计算当日数据 + @Override public List getSalesPartnersByBD(JSONObject jsonObject) { @@ -58,32 +91,32 @@ public class BDAnalysisServiceImpl implements BDAnalysisService { public List getSalesPartnersReportByBD(JSONObject jsonObject) { List bdAnalysis = bdAnalysisMapper.getBDSalePartnerReport(jsonObject); List result = new ArrayList<>(); - String keys_1[] = {"1","2","3","4","5","6","7","8","9"}; - String key_2[] = {"10","11","12"}; - result = getPartnerTypes(keys_1,result,1,5,bdAnalysis); - return getPartnerTypes(key_2,result,2,6,bdAnalysis); + String keys_1[] = {"1", "2", "3", "4", "5", "6", "7", "8", "9"}; + String key_2[] = {"10", "11", "12"}; + result = getPartnerTypes(keys_1, result, 1, 5, bdAnalysis); + return getPartnerTypes(key_2, result, 2, 6, bdAnalysis); } - private List getPartnerTypes(String keys[],List result,int short_length,int long_length,List bdAnalysis){ - for(String key : keys){ + private List getPartnerTypes(String keys[], List result, int short_length, int long_length, List bdAnalysis) { + for (String key : keys) { int countValue = 0; int countTotal = 0; JSONObject object = new JSONObject(); JSONArray list = new JSONArray(); - for(JSONObject type : bdAnalysis){ - if(type.getString("royalpayindustry") != null && type.getString("royalpayindustry").startsWith(key) && (type.getString("royalpayindustry").length()==short_length || type.getString("royalpayindustry").length()==long_length)){ + for (JSONObject type : bdAnalysis) { + if (type.getString("royalpayindustry") != null && type.getString("royalpayindustry").startsWith(key) && (type.getString("royalpayindustry").length() == short_length || type.getString("royalpayindustry").length() == long_length)) { countValue += type.getIntValue("partner_counts"); countTotal += type.getIntValue("total"); list.add(type); } } - if(countValue == 0){ + if (countValue == 0) { continue; } - object.put("count_value",countValue); - object.put("count_total",countTotal); - object.put("mccCode",key); - object.put("children",list); + object.put("count_value", countValue); + object.put("count_total", countTotal); + object.put("mccCode", key); + object.put("children", list); result.add(object); } return result; @@ -92,7 +125,7 @@ public class BDAnalysisServiceImpl implements BDAnalysisService { @Override public void exportSalesExcel(AnalysisBean analysisBean, HttpServletResponse httpResponse, JSONObject manager) throws IOException { httpResponse.setContentType("application/vnd.ms-excel"); - String fileName = analysisBean.getBegin_month()+"~"+analysisBean.getEnd_month(); + String fileName = analysisBean.getBegin_month() + "~" + analysisBean.getEnd_month(); // String fileName = new String(URLEncoder.encode(defaultname,"utf8")); httpResponse.setHeader("Content-Disposition", "attachment;filename=" + fileName + ".xls"); @@ -113,20 +146,20 @@ public class BDAnalysisServiceImpl implements BDAnalysisService { List bds = bdAnalysisMapper.getBDSaleList(params); HSSFWorkbook workbook = new HSSFWorkbook(); - for (JSONObject bd:bds){ + for (JSONObject bd : bds) { String bd_id = bd.getString("bd_id"); String bd_name = bd.getString("bd_name"); JSONObject monthParams = new JSONObject(); - monthParams.put("bd_id",bd_id); - monthParams.put("begin_month",analysisBean.getBegin_month()); - monthParams.put("end_month",analysisBean.getEnd_month()); + monthParams.put("bd_id", bd_id); + monthParams.put("begin_month", analysisBean.getBegin_month()); + monthParams.put("end_month", analysisBean.getEnd_month()); List monthTotalSale = bdAnalysisMapper.getMonthSalesList(monthParams); - for (JSONObject month:monthTotalSale){ - monthParams.put("month",month.getString("y_m")); - List clientsMonthSale = bdAnalysisMapper.getClientsMonthSale(bd_id,analysisBean.getBegin_month(),analysisBean.getEnd_month(),month.getString("y_m")); - month.put("clients",clientsMonthSale); + for (JSONObject month : monthTotalSale) { + monthParams.put("month", month.getString("y_m")); + List clientsMonthSale = bdAnalysisMapper.getClientsMonthSale(bd_id, analysisBean.getBegin_month(), analysisBean.getEnd_month(), month.getString("y_m")); + month.put("clients", clientsMonthSale); } - exportExcel(workbook,bd_name,monthTotalSale); + exportExcel(workbook, bd_name, monthTotalSale); } OutputStream outputStream = httpResponse.getOutputStream(); try { @@ -144,14 +177,52 @@ public class BDAnalysisServiceImpl implements BDAnalysisService { return bdAnalysisMapper.countApproved(params); } + /** + * BD销售每日数据统计 + * @param date + */ + @Override + public void generateReport(String date) { + try { + Date beginTime = DateUtils.parseDate(date, new String[]{"yyyy-MM-dd"}); + Date yesterdayEndTime = DateUtils.addDays(beginTime, 1); + String endDate = DateFormatUtils.format(yesterdayEndTime, "yyyy-MM-dd"); + Date endTime = DateUtils.parseDate(endDate, new String[]{"yyyy-MM-dd"}); + JSONObject params = new JSONObject(); + params.put("begin", beginTime); + params.put("end", endTime); + List bdSaleList = bdAnalysisMapper.getOneDayBDSaleList(params); + if (bdSaleList.size() != 0) { + for (JSONObject item : bdSaleList) { + JSONObject existBDSalesReport = bdSalesReportMapper.findByBDIdAndLogDate(item.getString("bd_id"),beginTime); + if(existBDSalesReport==null){ + JSONObject object = new JSONObject(item); + object.put("log_id", UUID.randomUUID().toString()); + object.put("log_date", beginTime); + object.put("create_time", new Date()); + bdSalesReportMapper.save(object); + }else{ + existBDSalesReport.put("pay_amount",item.getString("pay_amount")); + existBDSalesReport.put("refund_amount",item.getString("refund_amount")); + existBDSalesReport.put("net_amount",item.getString("net_amount")); + bdSalesReportMapper.update(existBDSalesReport); + } + + } + } + } catch (ParseException e) { + e.printStackTrace(); + } + } + @Override public void exportPartnerExcelByBd(AnalysisBean analysisBean, HttpServletResponse httpResponse, JSONObject manager) throws IOException { OutputStream ous = null; - try{ + try { JSONObject parmerters = analysisBean.toParams(null); List listPartnerByBd = bdAnalysisMapper.getBDSalePartnerList(parmerters); httpResponse.setContentType("application/octet-stream;"); - httpResponse.addHeader("Content-Disposition", "attachment; filename=" + "Merchant_list--" +parmerters.getString("bd_name") + analysisBean.getBegin() + "~" + analysisBean.getEnd() + ".xls"); + httpResponse.addHeader("Content-Disposition", "attachment; filename=" + "Merchant_list--" + parmerters.getString("bd_name") + analysisBean.getBegin() + "~" + analysisBean.getEnd() + ".xls"); ous = httpResponse.getOutputStream(); HSSFWorkbook wb = new HSSFWorkbook(); HSSFFont font = wb.createFont(); @@ -159,7 +230,7 @@ public class BDAnalysisServiceImpl implements BDAnalysisService { font.setFontHeightInPoints((short) 15); CellStyle analysisStyle = wb.createCellStyle(); analysisStyle.setFont(font); - Sheet sheet = wb.createSheet("Merchant list" ); + Sheet sheet = wb.createSheet("Merchant list"); sheet.createFreezePane(1, 2); sheet.setDefaultColumnWidth((short) 25); int rowNum = 0; @@ -168,7 +239,7 @@ public class BDAnalysisServiceImpl implements BDAnalysisService { for (int i = 0; i < title.length; i++) { row.createCell(i, Cell.CELL_TYPE_STRING).setCellValue(title[i]); } - for(JSONObject partner : listPartnerByBd){ + for (JSONObject partner : listPartnerByBd) { row = sheet.createRow(++rowNum); row.createCell(0, Cell.CELL_TYPE_STRING).setCellValue(partner.getString("short_name")); row.createCell(1, Cell.CELL_TYPE_STRING).setCellValue(partner.getString("client_moniker")); @@ -176,7 +247,7 @@ public class BDAnalysisServiceImpl implements BDAnalysisService { } wb.write(ous); ous.flush(); - }catch (IOException e){ + } catch (IOException e) { } finally { IOUtils.closeQuietly(ous); } @@ -186,7 +257,7 @@ public class BDAnalysisServiceImpl implements BDAnalysisService { @Override public void exportPartnerExcelByData(AnalysisBean analysisBean, HttpServletResponse httpResponse, JSONObject manager) throws IOException { OutputStream ous = null; - try{ + try { JSONObject parmerters = analysisBean.toParams(null); List listPartnerByData = listSalesAnalysis(parmerters); httpResponse.setContentType("application/octet-stream;"); @@ -198,31 +269,31 @@ public class BDAnalysisServiceImpl implements BDAnalysisService { font.setFontHeightInPoints((short) 15); CellStyle analysisStyle = wb.createCellStyle(); analysisStyle.setFont(font); - Sheet sheet = wb.createSheet("Merchant Sale List" ); + Sheet sheet = wb.createSheet("Merchant Sale List"); sheet.createFreezePane(1, 2); sheet.setDefaultColumnWidth((short) 25); int rowNum = 0; Row row = sheet.createRow(rowNum); - String[] title = {"BD Name", "AUD Amount", "Refund Fee","New Merchants"}; + String[] title = {"BD Name", "AUD Amount", "Refund Fee", "New Merchants"}; for (int i = 0; i < title.length; i++) { row.createCell(i, Cell.CELL_TYPE_STRING).setCellValue(title[i]); } - for(JSONObject dataSale : listPartnerByData){ + for (JSONObject dataSale : listPartnerByData) { row = sheet.createRow(++rowNum); row.createCell(0, Cell.CELL_TYPE_STRING).setCellValue(dataSale.getString("bd_name")); row.createCell(1, Cell.CELL_TYPE_STRING).setCellValue(dataSale.getString("total")); row.createCell(2, Cell.CELL_TYPE_STRING).setCellValue(dataSale.getString("refund_fee")); - row.createCell(3, Cell.CELL_TYPE_STRING).setCellValue(dataSale.getString("num") == null? "0" : dataSale.getString("num")); + row.createCell(3, Cell.CELL_TYPE_STRING).setCellValue(dataSale.getString("num") == null ? "0" : dataSale.getString("num")); } wb.write(ous); ous.flush(); - }catch (IOException e){ + } catch (IOException e) { } finally { IOUtils.closeQuietly(ous); } } - private void exportExcel(HSSFWorkbook workbook,String title,List monthTotalSale) { + private void exportExcel(HSSFWorkbook workbook, String title, List monthTotalSale) { // 声明一个工作薄 // 生成一个表格 HSSFSheet sheet = workbook.createSheet(title); @@ -271,9 +342,9 @@ public class BDAnalysisServiceImpl implements BDAnalysisService { // comment.setAuthor("leno"); //产生表格标题行 - HSSFRow row0= sheet.createRow(0); - HSSFRow row1= sheet.createRow(1); - HSSFRow row2= sheet.createRow(2); + HSSFRow row0 = sheet.createRow(0); + HSSFRow row1 = sheet.createRow(1); + HSSFRow row2 = sheet.createRow(2); HSSFCell cell00 = row0.createCell(0); HSSFCell cell01 = row0.createCell(1); HSSFCell cell20 = row2.createCell(0); @@ -294,15 +365,13 @@ public class BDAnalysisServiceImpl implements BDAnalysisService { cell20.setCellValue(text20); - - for (int i = 0; i < monthTotalSale.size(); i++) { - sheet.addMergedRegion(new CellRangeAddress(0,0,2*i+2,2*i+3)); - HSSFCell cell02 = row0.createCell(i*2+2); - HSSFCell cell12 = row1.createCell(i*2+2); - HSSFCell cell13 = row1.createCell(i*2+3); - HSSFCell cell22 = row2.createCell(i*2+2); - HSSFCell cell23 = row2.createCell(i*2+3); + sheet.addMergedRegion(new CellRangeAddress(0, 0, 2 * i + 2, 2 * i + 3)); + HSSFCell cell02 = row0.createCell(i * 2 + 2); + HSSFCell cell12 = row1.createCell(i * 2 + 2); + HSSFCell cell13 = row1.createCell(i * 2 + 3); + HSSFCell cell22 = row2.createCell(i * 2 + 2); + HSSFCell cell23 = row2.createCell(i * 2 + 3); cell02.setCellStyle(style); cell12.setCellStyle(style); @@ -314,19 +383,18 @@ public class BDAnalysisServiceImpl implements BDAnalysisService { HSSFRichTextString text13 = new HSSFRichTextString("增长百分比"); HSSFRichTextString text22 = new HSSFRichTextString(monthTotalSale.get(i).getString("total")); double rate = 0; - if (i>0){ - BigDecimal lastTotal = monthTotalSale.get(i-1).getBigDecimal("total"); - BigDecimal total = monthTotalSale.get(i).getBigDecimal("total"); - if (lastTotal.compareTo(new BigDecimal(0))==0 && total.compareTo(new BigDecimal(0)) !=0){ - rate=100; - } - else if (lastTotal.compareTo(new BigDecimal(0))==0 && total.compareTo(new BigDecimal(0)) ==0){ - rate=0; - }else { - rate = total.subtract(lastTotal).multiply(new BigDecimal(100)).divide(lastTotal,2,BigDecimal.ROUND_DOWN).doubleValue(); - } + if (i > 0) { + BigDecimal lastTotal = monthTotalSale.get(i - 1).getBigDecimal("total"); + BigDecimal total = monthTotalSale.get(i).getBigDecimal("total"); + if (lastTotal.compareTo(new BigDecimal(0)) == 0 && total.compareTo(new BigDecimal(0)) != 0) { + rate = 100; + } else if (lastTotal.compareTo(new BigDecimal(0)) == 0 && total.compareTo(new BigDecimal(0)) == 0) { + rate = 0; + } else { + rate = total.subtract(lastTotal).multiply(new BigDecimal(100)).divide(lastTotal, 2, BigDecimal.ROUND_DOWN).doubleValue(); + } } - HSSFRichTextString text23 = i==0?new HSSFRichTextString("-"):new HSSFRichTextString(String.valueOf(rate)); + HSSFRichTextString text23 = i == 0 ? new HSSFRichTextString("-") : new HSSFRichTextString(String.valueOf(rate)); cell02.setCellValue(text0); cell12.setCellValue(text12); cell13.setCellValue(text13); @@ -335,35 +403,34 @@ public class BDAnalysisServiceImpl implements BDAnalysisService { } List partnersSale = (List) monthTotalSale.get(0).get("clients"); - for (int m=0;m clients = (List) monthTotalSale.get(n).get("clients"); - HSSFCell celli2 = row.createCell(n*2+2); - HSSFCell celli3 = row.createCell(n*2+3); + HSSFCell celli2 = row.createCell(n * 2 + 2); + HSSFCell celli3 = row.createCell(n * 2 + 3); celli2.setCellStyle(style2); celli3.setCellStyle(style2); HSSFRichTextString texti2 = new HSSFRichTextString(clients.get(m).getString("month_total")); double rate = 0; - if (n>0){ - List lastClients = (List) monthTotalSale.get(n-1).get("clients"); + if (n > 0) { + List lastClients = (List) monthTotalSale.get(n - 1).get("clients"); BigDecimal lastTotal = lastClients.get(m).getBigDecimal("month_total"); BigDecimal total = clients.get(m).getBigDecimal("month_total"); - if (lastTotal.compareTo(new BigDecimal(0))==0 && total.compareTo(new BigDecimal(0)) !=0){ - rate=100; - } - else if (lastTotal.compareTo(new BigDecimal(0))==0 && total.compareTo(new BigDecimal(0)) ==0){ - rate=0; - }else { - rate = total.subtract(lastTotal).multiply(new BigDecimal(100)).divide(lastTotal,2,BigDecimal.ROUND_DOWN).doubleValue(); + if (lastTotal.compareTo(new BigDecimal(0)) == 0 && total.compareTo(new BigDecimal(0)) != 0) { + rate = 100; + } else if (lastTotal.compareTo(new BigDecimal(0)) == 0 && total.compareTo(new BigDecimal(0)) == 0) { + rate = 0; + } else { + rate = total.subtract(lastTotal).multiply(new BigDecimal(100)).divide(lastTotal, 2, BigDecimal.ROUND_DOWN).doubleValue(); } } HSSFRichTextString texti3 = new HSSFRichTextString(String.valueOf(rate)); diff --git a/src/main/java/au/com/royalpay/payment/manage/analysis/core/impls/OrgAnalysisServiceImp.java b/src/main/java/au/com/royalpay/payment/manage/analysis/core/impls/OrgAnalysisServiceImp.java index 66510785d..af9119612 100644 --- a/src/main/java/au/com/royalpay/payment/manage/analysis/core/impls/OrgAnalysisServiceImp.java +++ b/src/main/java/au/com/royalpay/payment/manage/analysis/core/impls/OrgAnalysisServiceImp.java @@ -1,12 +1,19 @@ package au.com.royalpay.payment.manage.analysis.core.impls; import au.com.royalpay.payment.manage.analysis.core.OrgAnalysisService; +import au.com.royalpay.payment.manage.analysis.mappers.CustomerAndOrdersStatisticsMapper; import au.com.royalpay.payment.manage.analysis.mappers.TransactionAnalysisMapper; +import au.com.royalpay.payment.manage.mappers.log.StatisticsBDSalesReportMapper; import au.com.royalpay.payment.manage.organizations.core.OrgManager; import com.alibaba.fastjson.JSONObject; +import org.apache.commons.lang3.time.DateUtils; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import java.math.BigDecimal; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; import java.util.List; /** @@ -17,14 +24,52 @@ public class OrgAnalysisServiceImp implements OrgAnalysisService { @Resource private TransactionAnalysisMapper transactionAnalysisMapper; + @Resource + private StatisticsBDSalesReportMapper statisticsBDSalesReportMapper; + @Resource private OrgManager orgManager; + @Resource + private CustomerAndOrdersStatisticsMapper customerAndOrdersStatisticsMapper; + @Override public List getSalesAnalysis(JSONObject params,JSONObject manager) { orgManager.checkOrgIds(manager,params); - List OrgTransaction = transactionAnalysisMapper.getOrgTransactionAnalysis(params); - return OrgTransaction; + params.put("org_type",0); + List OrgTransaction = statisticsBDSalesReportMapper.getPartnerAmountList(params); + List newOrgTransaction = new ArrayList<>(); + OrgTransaction.forEach(item->{ + newOrgTransaction.add(new JSONObject(){{ + put("org_id",item.getString("org_id")); + put("org_name",item.getString("org_name")); + put("amount",item.getString("clearing_amount")); + }} + ); + }); + //判断查询的最后一天是否是当日,若是当日,将当日数据添加至结果集内 + SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd"); + if (sd.format(params.getDate("end")).equals(sd.format(DateUtils.addDays(new Date(), 1)))) { + params.put("begin", DateUtils.addDays(params.getDate("end"), -1)); + params.put("end",params.getDate("end")); + List todayOrgTransaction = transactionAnalysisMapper.getOrgTransactionAnalysis(params); + if(todayOrgTransaction.size()!=0){ + for (JSONObject todayOrgTransactionItem : todayOrgTransaction) { + boolean flag = false; + for (JSONObject orgTransaction : newOrgTransaction) { + if (orgTransaction.getString("org_id").equals(todayOrgTransactionItem.getString("org_id"))) { + BigDecimal newAmount = orgTransaction.getBigDecimal("clearing_amount").add(todayOrgTransactionItem.getBigDecimal("amount")); + orgTransaction.put("amount", newAmount); + flag = true; + } + } + if (!flag) { + newOrgTransaction.add(todayOrgTransactionItem); + } + } + } + } + return newOrgTransaction; } @Override diff --git a/src/main/java/au/com/royalpay/payment/manage/analysis/mappers/BDAnalysisMapper.java b/src/main/java/au/com/royalpay/payment/manage/analysis/mappers/BDAnalysisMapper.java index 9d51ce7ba..c3cc1400c 100644 --- a/src/main/java/au/com/royalpay/payment/manage/analysis/mappers/BDAnalysisMapper.java +++ b/src/main/java/au/com/royalpay/payment/manage/analysis/mappers/BDAnalysisMapper.java @@ -26,4 +26,7 @@ public interface BDAnalysisMapper { List countApproved(JSONObject params); List getBDSalePartnerReport(JSONObject jsonObject); + + //获取指定一天销售数据 + List getOneDayBDSaleList(JSONObject params); } diff --git a/src/main/java/au/com/royalpay/payment/manage/dev/web/AnalysisController.java b/src/main/java/au/com/royalpay/payment/manage/dev/web/AnalysisController.java new file mode 100644 index 000000000..46216c5b4 --- /dev/null +++ b/src/main/java/au/com/royalpay/payment/manage/dev/web/AnalysisController.java @@ -0,0 +1,28 @@ +package au.com.royalpay.payment.manage.dev.web; + +import au.com.royalpay.payment.manage.analysis.core.BDAnalysisService; +import org.apache.commons.lang3.time.DateFormatUtils; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Date; + +@RestController +@RequestMapping("/analysis") +public class AnalysisController { + + @Resource + private BDAnalysisService bdAnalysisService; + + + @GetMapping("/report/bd/sales") + public void reportDBSalesList(@RequestParam("date") String date) throws ParseException { + Date newDate = new SimpleDateFormat("yyyy-MM-dd").parse(date); + bdAnalysisService.generateReport(DateFormatUtils.format(newDate, "yyyy-MM-dd")); + } +} diff --git a/src/main/java/au/com/royalpay/payment/manage/mappers/log/StatisticsBDSalesReportMapper.java b/src/main/java/au/com/royalpay/payment/manage/mappers/log/StatisticsBDSalesReportMapper.java new file mode 100644 index 000000000..eec5be137 --- /dev/null +++ b/src/main/java/au/com/royalpay/payment/manage/mappers/log/StatisticsBDSalesReportMapper.java @@ -0,0 +1,29 @@ +package au.com.royalpay.payment.manage.mappers.log; + +import cn.yixblog.support.mybatis.autosql.annotations.AutoMapper; +import cn.yixblog.support.mybatis.autosql.annotations.AutoSql; +import cn.yixblog.support.mybatis.autosql.annotations.SqlType; +import com.alibaba.fastjson.JSONObject; +import org.apache.ibatis.annotations.Param; + +import java.util.Date; +import java.util.List; + +/** + * Created by dulingling on 2019-08-14 + */ +@AutoMapper(tablename = "statistics_bd_sales", pkName = "log_id") +public interface StatisticsBDSalesReportMapper { + + @AutoSql(type = SqlType.INSERT) + void save(JSONObject report); + + List getBDSaleList(JSONObject params); + + List getPartnerAmountList(JSONObject params); + + JSONObject findByBDIdAndLogDate(@Param("bd_id") String bd_id, @Param("log_date")Date beginTime); + + @AutoSql(type = SqlType.UPDATE) + void update(JSONObject existBDSalesReport); +} diff --git a/src/main/java/au/com/royalpay/payment/manage/task/DBSaleAnalysisTask.java b/src/main/java/au/com/royalpay/payment/manage/task/DBSaleAnalysisTask.java new file mode 100644 index 000000000..4be3a3e08 --- /dev/null +++ b/src/main/java/au/com/royalpay/payment/manage/task/DBSaleAnalysisTask.java @@ -0,0 +1,34 @@ +package au.com.royalpay.payment.manage.task; + +import au.com.royalpay.payment.manage.analysis.core.BDAnalysisService; +import au.com.royalpay.payment.tools.scheduler.SynchronizedScheduler; +import org.apache.commons.lang3.time.DateFormatUtils; +import org.apache.commons.lang3.time.DateUtils; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.util.Date; + +/** + * Created by dulingling on 2019-08-14 + */ +@Component +@ConditionalOnProperty(value = "app.run-tasks", havingValue = "true") +public class DBSaleAnalysisTask { + + @Resource + private SynchronizedScheduler synchronizedScheduler; + + @Resource + private BDAnalysisService bdAnalysisService; + + @Scheduled(cron = "0 0 10 * * ?") + public void dailyReportAutoGenerateReport() { + synchronizedScheduler.executeProcess("manage_task:dailyReportAutoGenerateReport", 120_000, () -> { + Date yesterday = DateUtils.addDays(new Date(), -1); + bdAnalysisService.generateReport(DateFormatUtils.format(yesterday, "yyyy-MM-dd")); + }); + } +} diff --git a/src/main/resources/au/com/royalpay/payment/manage/analysis/mappers/BDAnalysisMapper.xml b/src/main/resources/au/com/royalpay/payment/manage/analysis/mappers/BDAnalysisMapper.xml index 2f2de891e..6e06c0c03 100644 --- a/src/main/resources/au/com/royalpay/payment/manage/analysis/mappers/BDAnalysisMapper.xml +++ b/src/main/resources/au/com/royalpay/payment/manage/analysis/mappers/BDAnalysisMapper.xml @@ -3,67 +3,41 @@ @@ -179,11 +153,11 @@ where client_id in(select client_id from sys_clients c where c.approve_time >= #{begin} AND c.approve_time < #{end} AND c.is_valid = 1 AND c.approve_result = 1 ]]> - and c.org_id=#{org_id} - and c.org_id in - #{org_id} - and c.source=1 - and c.source!=1 + and c.org_id=#{org_id} + and c.org_id in + #{org_id} + and c.source=1 + and c.source!=1 - group by bd_id - order by num desc + group by bd_id + order by num desc + + + diff --git a/src/main/resources/au/com/royalpay/payment/manage/analysis/mappers/TransactionAnalysisMapper.xml b/src/main/resources/au/com/royalpay/payment/manage/analysis/mappers/TransactionAnalysisMapper.xml index 96ee0b611..7990d193a 100644 --- a/src/main/resources/au/com/royalpay/payment/manage/analysis/mappers/TransactionAnalysisMapper.xml +++ b/src/main/resources/au/com/royalpay/payment/manage/analysis/mappers/TransactionAnalysisMapper.xml @@ -716,20 +716,37 @@ + SELECT + bd_id, + bd_name, + org_id, + org_name, + SUM(pay_amount) AS total, + SUM(refund_amount) AS refund_fee + FROM statistics_bd_sales + + + AND org_id = #{org_id} + + + AND org_type = #{org_type} + + + AND log_date >= #{begin} + + + AND log_date < #{end} + + + AND org.org_id in + #{org_id} + + + GROUP BY bd_id + ORDER BY total DESC + + + + + + + + \ No newline at end of file diff --git a/src/main/ui/static/analysis/bd-sale-volume.js b/src/main/ui/static/analysis/bd-sale-volume.js index 5230d2821..486c1ef05 100644 --- a/src/main/ui/static/analysis/bd-sale-volume.js +++ b/src/main/ui/static/analysis/bd-sale-volume.js @@ -76,7 +76,6 @@ define(['angular', 'uiBootstrap', 'uiRouter', 'angularEcharts', './bd/analysis-b }; $scope.loadSale = function () { - var params = angular.copy($scope.params); if (params.begin) { params.begin = $filter('date')(params.begin, 'yyyyMMdd'); @@ -88,6 +87,7 @@ define(['angular', 'uiBootstrap', 'uiRouter', 'angularEcharts', './bd/analysis-b } else { params.end = $filter('date')(new Date(), 'yyyyMMdd'); } + params.org_id =1; $http.get('/analysis/bd/sales', {params: params}).then(function (resp) { $scope.sales = resp.data; loadSaleChart(); diff --git a/src/main/ui/static/analysis/org-tranaction-analysis.js b/src/main/ui/static/analysis/org-tranaction-analysis.js index 8285fce69..e15d190dd 100644 --- a/src/main/ui/static/analysis/org-tranaction-analysis.js +++ b/src/main/ui/static/analysis/org-tranaction-analysis.js @@ -59,6 +59,7 @@ define(['angular', 'uiBootstrap', 'uiRouter', 'angularEcharts','./org/analysis-o $scope.showOrg = 'Organization'; $http.get('/sys/orgs', {params: {}}).then(function (resp) { $scope.orgs = resp.data; + $scope.orgs.splice($scope.orgs.findIndex(item => item.org_id === 1), 1) }); } @@ -98,6 +99,7 @@ define(['angular', 'uiBootstrap', 'uiRouter', 'angularEcharts','./org/analysis-o $scope.future_loading = false; }); }; + $scope.chooseToday() $scope.chooseOrgId = function (org) { if (org == 'all') { delete $scope.params.org_id; diff --git a/src/main/ui/static/analysis/templates/bd_sale_analysis.html b/src/main/ui/static/analysis/templates/bd_sale_analysis.html index f2e5b96fe..7fac5442d 100644 --- a/src/main/ui/static/analysis/templates/bd_sale_analysis.html +++ b/src/main/ui/static/analysis/templates/bd_sale_analysis.html @@ -68,19 +68,6 @@ This Year -
- - - -
diff --git a/src/main/ui/static/analysis/templates/org_sale_analysis.html b/src/main/ui/static/analysis/templates/org_sale_analysis.html index 191815499..f85c3c73b 100644 --- a/src/main/ui/static/analysis/templates/org_sale_analysis.html +++ b/src/main/ui/static/analysis/templates/org_sale_analysis.html @@ -60,10 +60,6 @@ Last Month -
+ From a664f2b79a63d0c720bcd7bc982dfd66222bf97e Mon Sep 17 00:00:00 2001 From: duLingLing Date: Thu, 22 Aug 2019 18:14:26 +0800 Subject: [PATCH 16/25] =?UTF-8?q?Upd:=E9=A3=8E=E6=8E=A7=E4=B8=9A=E5=8A=A1,?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=86=85=E9=83=A8=E8=B0=83=E7=94=A8=E4=BA=BA?= =?UTF-8?q?=E9=82=AE=E7=AE=B1=E4=BD=BF=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 2 +- src/db/modify.sql | 4 +++- .../core/impl/RiskBusinessServiceImpl.java | 12 +++++++++--- 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/pom.xml b/pom.xml index e30e5564d..5b39ee87c 100644 --- a/pom.xml +++ b/pom.xml @@ -10,7 +10,7 @@ 4.0.0 manage - 1.1.25 + 1.1.26 UTF-8 diff --git a/src/db/modify.sql b/src/db/modify.sql index 929d90dc1..982d51c8e 100644 --- a/src/db/modify.sql +++ b/src/db/modify.sql @@ -721,4 +721,6 @@ ADD INDEX `report_id` (`report_id`) USING HASH ; update pmt_custom_reports set report_serial=uuid(); alter pmt_custom_reports add PRIMARY key (report_serial); -alter table sys_org add COLUMN `state` varchar(20) DEFAULT NULL COMMENT '州 (使用标准码 NSW,QLD,WA,VIC,ACT,NT,TAS,SA)'; \ No newline at end of file +alter table sys_org add COLUMN `state` varchar(20) DEFAULT NULL COMMENT '州 (使用标准码 NSW,QLD,WA,VIC,ACT,NT,TAS,SA)'; + +INSERT INTO `royalpay`.`sys_configs`(`config_key`, `config_value`, `config_desc`) VALUES ('rick_interior_send_email', 'dll19920503@qq.com', '内部调用测试发送邮箱'); \ No newline at end of file diff --git a/src/main/java/au/com/royalpay/payment/manage/riskbusiness/core/impl/RiskBusinessServiceImpl.java b/src/main/java/au/com/royalpay/payment/manage/riskbusiness/core/impl/RiskBusinessServiceImpl.java index 1697bf419..ca2e41a7b 100644 --- a/src/main/java/au/com/royalpay/payment/manage/riskbusiness/core/impl/RiskBusinessServiceImpl.java +++ b/src/main/java/au/com/royalpay/payment/manage/riskbusiness/core/impl/RiskBusinessServiceImpl.java @@ -32,6 +32,7 @@ import au.com.royalpay.payment.tools.connections.mpsupport.exceptions.WechatExce import au.com.royalpay.payment.tools.device.message.AppMessage; import au.com.royalpay.payment.tools.device.message.AppMsgSender; import au.com.royalpay.payment.tools.env.PlatformEnvironment; +import au.com.royalpay.payment.tools.env.SysConfigManager; import au.com.royalpay.payment.tools.exceptions.BadRequestException; import au.com.royalpay.payment.tools.exceptions.event.WechatExceptionEvent; import au.com.royalpay.payment.tools.locale.LocaleSupport; @@ -134,6 +135,9 @@ public class RiskBusinessServiceImpl implements RiskBusinessService, ManagerTodo private MpWechatApiProvider mpWechatApiProvider; private ApplicationEventPublisher publisher; + @Resource + private SysConfigManager sysConfigManager; + @Resource public void setAppMsgSenders(AppMsgSender[] senders) { @@ -818,7 +822,7 @@ public class RiskBusinessServiceImpl implements RiskBusinessService, ManagerTodo * 如果是内部调单,密送bd与上面定义的‘emailsBccs’ * 如果没有勾选发送商户 * 如果不是内部调单,直接发送商户; - * 如果是内部调单,则自定义“"18852852189@163.com"为收件人,密送同上 + * 如果是内部调单,则自定义sys_configs配置中KEY为"rick_interior_send_email"为收件人,密送同上 * * Arrays.asList("18852852189@139.com", "1370256381@qq.com")为本地debug模式的测试邮箱 */ @@ -829,7 +833,8 @@ public class RiskBusinessServiceImpl implements RiskBusinessService, ManagerTodo ctx.setVariable("emailsCcs", null); if (PlatformEnvironment.getEnv().isDebug()) { emailsBccs = new ArrayList<>(Arrays.asList( - "18852852189@139.com", "1370256381@qq.com" + sysConfigManager.getSysConfig().getString("rick_interior_send_email"), + sysConfigManager.getSysConfig().getString("rick_interior_send_email") )); } emailsBccs.addAll(bdEmails); @@ -839,7 +844,8 @@ public class RiskBusinessServiceImpl implements RiskBusinessService, ManagerTodo if (orderType == RiskOrderTypeEnum.ROYALPAY_ORDER.getOrderType().intValue()) { if (PlatformEnvironment.getEnv().isDebug()) { emailsBccs = new ArrayList<>(Arrays.asList( - "18852852189@139.com", "1370256381@qq.com" + sysConfigManager.getSysConfig().getString("rick_interior_send_email"), + sysConfigManager.getSysConfig().getString("rick_interior_send_email") )); } emailsBccs.addAll(bdEmails); From d6f4c6419425f219d46b6aaca52f44eda8006663 Mon Sep 17 00:00:00 2001 From: duLingLing Date: Thu, 22 Aug 2019 19:01:59 +0800 Subject: [PATCH 17/25] =?UTF-8?q?Upd:=E9=A3=8E=E6=8E=A7=E4=B8=9A=E5=8A=A1,?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=86=85=E9=83=A8=E8=B0=83=E7=94=A8=E4=BA=BA?= =?UTF-8?q?=E9=82=AE=E7=AE=B1=E4=BD=BF=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 2 +- .../riskbusiness/core/impl/RiskBusinessServiceImpl.java | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/pom.xml b/pom.xml index 5b39ee87c..33420851f 100644 --- a/pom.xml +++ b/pom.xml @@ -10,7 +10,7 @@ 4.0.0 manage - 1.1.26 + 1.1.27 UTF-8 diff --git a/src/main/java/au/com/royalpay/payment/manage/riskbusiness/core/impl/RiskBusinessServiceImpl.java b/src/main/java/au/com/royalpay/payment/manage/riskbusiness/core/impl/RiskBusinessServiceImpl.java index ca2e41a7b..2eddba926 100644 --- a/src/main/java/au/com/royalpay/payment/manage/riskbusiness/core/impl/RiskBusinessServiceImpl.java +++ b/src/main/java/au/com/royalpay/payment/manage/riskbusiness/core/impl/RiskBusinessServiceImpl.java @@ -824,7 +824,7 @@ public class RiskBusinessServiceImpl implements RiskBusinessService, ManagerTodo * 如果不是内部调单,直接发送商户; * 如果是内部调单,则自定义sys_configs配置中KEY为"rick_interior_send_email"为收件人,密送同上 * - * Arrays.asList("18852852189@139.com", "1370256381@qq.com")为本地debug模式的测试邮箱 + * Arrays.asList(自定义sys_configs配置中KEY为"rick_interior_send_email")为本地debug模式的测试邮箱 */ if (isSendClient == 1) { ctx.setVariable("emailsTos", clientEmails); @@ -851,7 +851,7 @@ public class RiskBusinessServiceImpl implements RiskBusinessService, ManagerTodo emailsBccs.addAll(bdEmails); ctx.setVariable("emailsBccs", emailsBccs); ctx.setVariable("emailsTos", Arrays.asList( - "18852852189@163.com" + sysConfigManager.getSysConfig().getString("rick_interior_send_email") )); } } From 8ac67b1726fbdcd357706f24492694d683246dc1 Mon Sep 17 00:00:00 2001 From: luoyang Date: Fri, 23 Aug 2019 11:30:03 +0800 Subject: [PATCH 18/25] =?UTF-8?q?fix=20=E5=90=8E=E4=BB=98=E8=B4=B9?= =?UTF-8?q?=E6=89=8B=E7=BB=AD=E8=B4=B9=E5=89=8D=E7=AB=AF=E6=98=BE=E7=A4=BA?= =?UTF-8?q?=E3=80=81=E5=86=B2=E6=AD=A3=E9=87=91=E9=A2=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../surchargeAccount/core/impl/SurchargeAccountServiceImpl.java | 2 +- .../mappers/system/FinancialSurchargeAccountDetailMapper.xml | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/au/com/royalpay/payment/manage/surchargeAccount/core/impl/SurchargeAccountServiceImpl.java b/src/main/java/au/com/royalpay/payment/manage/surchargeAccount/core/impl/SurchargeAccountServiceImpl.java index fa09f6708..9a39adf81 100644 --- a/src/main/java/au/com/royalpay/payment/manage/surchargeAccount/core/impl/SurchargeAccountServiceImpl.java +++ b/src/main/java/au/com/royalpay/payment/manage/surchargeAccount/core/impl/SurchargeAccountServiceImpl.java @@ -125,7 +125,7 @@ public class SurchargeAccountServiceImpl implements SurchargeAccountService { transaction.put("bill_id", detailId); transaction.put("total_surcharge", BigDecimal.ZERO); transaction.put("tax_amount", BigDecimal.ZERO); - transaction.put("amount", detail.getBigDecimal("debit_amount").negate()); + transaction.put("amount", (detail.getBigDecimal("debit_amount").add(detail.getBigDecimal("credit_amount"))).negate()); transaction.put("post_balance", surchargeAccount.getBigDecimal("balance").add(transaction.getBigDecimal("amount"))); transaction.put("operation", manager.getString("manager_id")); transaction.put("create_time", new Date()); diff --git a/src/main/resources/au/com/royalpay/payment/manage/mappers/system/FinancialSurchargeAccountDetailMapper.xml b/src/main/resources/au/com/royalpay/payment/manage/mappers/system/FinancialSurchargeAccountDetailMapper.xml index 7576f7ee4..583edb902 100644 --- a/src/main/resources/au/com/royalpay/payment/manage/mappers/system/FinancialSurchargeAccountDetailMapper.xml +++ b/src/main/resources/au/com/royalpay/payment/manage/mappers/system/FinancialSurchargeAccountDetailMapper.xml @@ -17,6 +17,7 @@ fsad.total_surcharge, fsad.credit_amount, fsad.debit_amount, + fsad.checkout, sc.client_moniker, sc.short_name, sc.company_name From 12256773b69a3e601af1146a613bd863fd2e7d3c Mon Sep 17 00:00:00 2001 From: luoyang Date: Fri, 23 Aug 2019 11:31:50 +0800 Subject: [PATCH 19/25] fix pom.xml --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 33420851f..d88ede0f8 100644 --- a/pom.xml +++ b/pom.xml @@ -10,7 +10,7 @@ 4.0.0 manage - 1.1.27 + 1.1.28 UTF-8 From f5eb9ec4a4339cd269bab4539ce4d181516fa1b5 Mon Sep 17 00:00:00 2001 From: luoyang Date: Fri, 23 Aug 2019 11:46:21 +0800 Subject: [PATCH 20/25] =?UTF-8?q?fix=20=E5=90=8E=E6=89=8B=E7=BB=AD?= =?UTF-8?q?=E8=B4=B9=E5=8F=96=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../surchargeAccount/core/impl/SurchargeAccountServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/au/com/royalpay/payment/manage/surchargeAccount/core/impl/SurchargeAccountServiceImpl.java b/src/main/java/au/com/royalpay/payment/manage/surchargeAccount/core/impl/SurchargeAccountServiceImpl.java index 9a39adf81..960feab9c 100644 --- a/src/main/java/au/com/royalpay/payment/manage/surchargeAccount/core/impl/SurchargeAccountServiceImpl.java +++ b/src/main/java/au/com/royalpay/payment/manage/surchargeAccount/core/impl/SurchargeAccountServiceImpl.java @@ -125,7 +125,7 @@ public class SurchargeAccountServiceImpl implements SurchargeAccountService { transaction.put("bill_id", detailId); transaction.put("total_surcharge", BigDecimal.ZERO); transaction.put("tax_amount", BigDecimal.ZERO); - transaction.put("amount", (detail.getBigDecimal("debit_amount").add(detail.getBigDecimal("credit_amount"))).negate()); + transaction.put("amount", detail.getBigDecimal("total_surcharge").negate()); transaction.put("post_balance", surchargeAccount.getBigDecimal("balance").add(transaction.getBigDecimal("amount"))); transaction.put("operation", manager.getString("manager_id")); transaction.put("create_time", new Date()); From c01647f1d45d0f6af8005886e910a8ff8bef2a84 Mon Sep 17 00:00:00 2001 From: todking Date: Fri, 23 Aug 2019 18:24:23 +0800 Subject: [PATCH 21/25] =?UTF-8?q?add=20=E4=BA=A4=E6=98=93=E8=B6=8B?= =?UTF-8?q?=E5=8A=BF=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mappers/TransactionAnalysisMapper.java | 3 + .../appclient/core/RetailAppService.java | 2 + .../core/impls/RetailAppServiceImp.java | 115 +++++++++++------- .../appclient/web/RetailAppController.java | 6 + .../mappers/TransactionAnalysisMapper.xml | 29 +++++ 5 files changed, 108 insertions(+), 47 deletions(-) diff --git a/src/main/java/au/com/royalpay/payment/manage/analysis/mappers/TransactionAnalysisMapper.java b/src/main/java/au/com/royalpay/payment/manage/analysis/mappers/TransactionAnalysisMapper.java index 68a6317f3..6e9a570e9 100644 --- a/src/main/java/au/com/royalpay/payment/manage/analysis/mappers/TransactionAnalysisMapper.java +++ b/src/main/java/au/com/royalpay/payment/manage/analysis/mappers/TransactionAnalysisMapper.java @@ -77,6 +77,9 @@ public interface TransactionAnalysisMapper { JSONObject getClientTransaction(JSONObject params); + List getWeekClientTransaction(JSONObject params); + + @CountRef(".countAreaMerchantAmountAnalysis") PageList getAreaMerchantAmountAnalysis(JSONObject params, PageBounds pagination); diff --git a/src/main/java/au/com/royalpay/payment/manage/appclient/core/RetailAppService.java b/src/main/java/au/com/royalpay/payment/manage/appclient/core/RetailAppService.java index 69cedabf3..cca43a4c0 100644 --- a/src/main/java/au/com/royalpay/payment/manage/appclient/core/RetailAppService.java +++ b/src/main/java/au/com/royalpay/payment/manage/appclient/core/RetailAppService.java @@ -24,6 +24,8 @@ import javax.servlet.http.HttpServletResponse; public interface RetailAppService { JSONObject getTransactionCommonData(JSONObject device, AppQueryBean appQueryBean); + List getTransactionCommonWeekData(JSONObject device, AppQueryBean appQueryBean); + JSONObject getClientSettlementLog(JSONObject device, AppQueryBean appQueryBean); JSONObject getTransactionLogsByClearingDetailId(JSONObject device, int clearing_detail_id, String timezone); diff --git a/src/main/java/au/com/royalpay/payment/manage/appclient/core/impls/RetailAppServiceImp.java b/src/main/java/au/com/royalpay/payment/manage/appclient/core/impls/RetailAppServiceImp.java index af8b694ee..271de92c0 100644 --- a/src/main/java/au/com/royalpay/payment/manage/appclient/core/impls/RetailAppServiceImp.java +++ b/src/main/java/au/com/royalpay/payment/manage/appclient/core/impls/RetailAppServiceImp.java @@ -211,7 +211,7 @@ public class RetailAppServiceImp implements RetailAppService { private final int BIND_PHONE_TEMPLID = 126978; private Map senderMap = new HashMap<>(); - private final String fileName[] = { "client_bank_file", "client_id_file", "client_company_file" }; + private final String fileName[] = {"client_bank_file", "client_id_file", "client_company_file"}; @Resource public void setAppMsgSenders(AppMsgSender[] senders) { @@ -262,6 +262,27 @@ public class RetailAppServiceImp implements RetailAppService { return res; } + @Override + public List getTransactionCommonWeekData(JSONObject device, AppQueryBean appQueryBean) { + String clientType = device.getString("client_type"); + deviceSupport.findRegister(clientType); + int client_id = device.getIntValue("client_id"); + JSONObject client = clientManager.getClientInfo(client_id); + String timezone = client.getString("timezone"); + if (timezone != null && !timezone.isEmpty()) { + appQueryBean.setTimezone(timezone); + } + JSONObject params = appQueryBean.toParams(); + setAllClientIds(params, client_id); + params.put("client_id", client_id); + List res = transactionAnalysisMapper.getWeekClientTransaction(params); + res.forEach(r -> { + r.put("date",r.getDate("date").toString()); + }); + res.remove(res.size() - 1); + return res; + } + @Override public JSONObject getTradeCommonDate(JSONObject device, AppQueryBean appQueryBean) { String clientType = device.getString("client_type"); @@ -302,7 +323,7 @@ public class RetailAppServiceImp implements RetailAppService { @Override public JSONObject getQrcode(JSONObject device, QRCodeConfig config, int client_id) { JSONObject client = merchantInfoProvider.getClientInfo(client_id); - String url = PlatformEnvironment.getEnv().concatUrl("/api/payment/v1.0/partners/" + client.getString("client_moniker")); + String url = PlatformEnvironment.getEnv().concatUrl("/api/v1.0/payment/partners/" + client.getString("client_moniker")); if (config.isCNY()) { url += "_CNY"; } @@ -484,7 +505,7 @@ public class RetailAppServiceImp implements RetailAppService { @Override public JSONObject ctripCouponInfo(JSONObject device, String coupon_id) { - return couponVerificationService.ctripCouponInfo(coupon_id,device.getIntValue("client_id"), true); + return couponVerificationService.ctripCouponInfo(coupon_id, device.getIntValue("client_id"), true); } @@ -498,7 +519,7 @@ public class RetailAppServiceImp implements RetailAppService { PageList cusCouponLogs = couponAccuessLogMapper.getCouponAccuessLog( client.getIntValue("client_id"), keyword, new PageBounds(appQueryBean.getPage(), appQueryBean.getLimit(), Order.formString("creation_date.desc"))); HashMap couponMap = new HashMap<>(); - for(JSONObject cusCouponLog : cusCouponLogs) { + for (JSONObject cusCouponLog : cusCouponLogs) { cusCouponLog.put("client_moniker", client_moniker); if (couponMap.containsKey(cusCouponLog.getString("coupon_id"))) { cusCouponLog.put("coupon", couponMap.get(cusCouponLog.getString("coupon_id"))); @@ -521,7 +542,7 @@ public class RetailAppServiceImp implements RetailAppService { Date date = new Date(); couponAccuessLog.put("client_id", client_id); couponAccuessLog.put("order_id", "NON_PLATFORM_ORDER"); - couponAccuessLog.put("coupon_id", "CTRIP_"+coupon_id); + couponAccuessLog.put("coupon_id", "CTRIP_" + coupon_id); couponAccuessLog.put("customer_openid", "NON_PLATFORM_ORDER"); couponAccuessLog.put("coupon_deal_amount", 0); couponAccuessLog.put("currency", "AUD"); @@ -581,7 +602,7 @@ public class RetailAppServiceImp implements RetailAppService { || ("Company".equals(clientWithConfig.getString("business_structure")) && StringUtils.isEmpty(clientWithConfig.getString("acn"))) || (!"Company".equals(clientWithConfig.getString("business_structure")) && StringUtils.isEmpty(clientWithConfig.getString("abn"))) || (StringUtils.isEmpty(clientWithConfig.getString("company_website")) && StringUtils.isEmpty(clientWithConfig.getString("company_photo")) - && StringUtils.isEmpty(clientWithConfig.getString("store_photo")))) { + && StringUtils.isEmpty(clientWithConfig.getString("store_photo")))) { res.put("base_info_lack", true); } @@ -613,7 +634,7 @@ public class RetailAppServiceImp implements RetailAppService { || ("Company".equals(client.getString("business_structure")) && StringUtils.isEmpty(client.getString("acn"))) || (!"Company".equals(client.getString("business_structure")) && StringUtils.isEmpty(client.getString("abn"))) || (StringUtils.isEmpty(client.getString("company_website")) && StringUtils.isEmpty(client.getString("company_photo")) - && StringUtils.isEmpty(client.getString("store_photo")))) { + && StringUtils.isEmpty(client.getString("store_photo")))) { result.put("base_info_lack", true); } @@ -1288,10 +1309,10 @@ public class RetailAppServiceImp implements RetailAppService { String father = "
"; String html = doc.body().children().wrap(father).html(); // logger.debug("wrapped html---->"+html); - if (res.getIntValue("type")==2) { - List buttons = JSONObject.parseArray(res.getString("buttons"),JSONObject.class); + if (res.getIntValue("type") == 2) { + List buttons = JSONObject.parseArray(res.getString("buttons"), JSONObject.class); res.put("buttons", buttons); - }else { + } else { res.put("content", doc.html()); } return res; @@ -1323,14 +1344,14 @@ public class RetailAppServiceImp implements RetailAppService { if (latestConfirmNotice != null) { latestConfirmNotice.put("id", latestConfirmNotice.getString("notice_id")); latestConfirmNotice.remove("notice_id"); - List buttons = JSONObject.parseArray(latestConfirmNotice.getString("buttons"),JSONObject.class); + List buttons = JSONObject.parseArray(latestConfirmNotice.getString("buttons"), JSONObject.class); latestConfirmNotice.put("buttons", buttons); String content = latestConfirmNotice.getString("content"); - if (content.indexOf("%excharge_rate%")>0) { + if (content.indexOf("%excharge_rate%") > 0) { JSONObject rate = merchantInfoProvider.clientCurrentRate(client_id, new Date(), "CB_BankPay"); if (rate != null) { content = content.replace("%excharge_rate%", (rate.getBigDecimal("rate_value").setScale(2, BigDecimal.ROUND_DOWN).toPlainString() + "%")); - }else { + } else { content = content.replace("%excharge_rate%", "(暂未配置)"); } } @@ -1343,10 +1364,10 @@ public class RetailAppServiceImp implements RetailAppService { String EndDate = DateFormatUtils.format(rate.getDate("expiry_date"), "yyyy-MM-dd"); String[] rateName = {"清算时间", "签约费率", "结束时间"}; String[] rateKey = {cleanDays, rateValue, EndDate}; - for(int i =0;i { try { @@ -2008,23 +2029,23 @@ public class RetailAppServiceImp implements RetailAppService { throw new EmailException("Email Sending Failed", e); } }); - stringRedisTemplate.boundValueOps(getUpdateAccountEmailKey(codeKey)).set(codeKeyValue+"&"+email.getString("contact_email"), 5, TimeUnit.MINUTES); + stringRedisTemplate.boundValueOps(getUpdateAccountEmailKey(codeKey)).set(codeKeyValue + "&" + email.getString("contact_email"), 5, TimeUnit.MINUTES); } @Override public void updateAccountEmail(JSONObject device, JSONObject params) { String key = stringRedisTemplate.boundValueOps(getUpdateAccountEmailKey(device.getString("account_id"))).get(); - if(key == null){ + if (key == null) { throw new BadRequestException("Captcha has expired"); } String captcha = key.split("&")[0]; String email = key.split("&")[1]; - if(!StringUtils.equals(captcha,params.getString("captcha"))){ + if (!StringUtils.equals(captcha, params.getString("captcha"))) { throw new BadRequestException("Verification code is wrong"); } - JSONObject account = new JSONObject(); - account.put("account_id",device.getString("account_id")); - account.put("contact_email",email); + JSONObject account = new JSONObject(); + account.put("account_id", device.getString("account_id")); + account.put("contact_email", email); clientAccountMapper.update(account); deleteAccountEmailKey(device.getString("account_id")); } @@ -2033,7 +2054,7 @@ public class RetailAppServiceImp implements RetailAppService { public void bindAccountPhone(JSONObject device, JSONObject phone) { String codeKey = device.getString("account_id"); String codeKeyValueRedis = stringRedisTemplate.boundValueOps(getUpdateAccountPhoneKey(codeKey)).get(); - if(StringUtils.isNotEmpty(codeKeyValueRedis)){ + if (StringUtils.isNotEmpty(codeKeyValueRedis)) { throw new BadRequestException("Captcha has been sent.Please check your phone or try again in 5 minutes."); } String codeKeyValue = RandomStringUtils.random(6, false, true); @@ -2050,25 +2071,25 @@ public class RetailAppServiceImp implements RetailAppService { e.printStackTrace(); throw new ServerErrorException("Phone number is wrong.Please try again."); } - stringRedisTemplate.boundValueOps(getUpdateAccountPhoneKey(codeKey)).set(codeKeyValue+"&"+nationCode+"&"+phoneNumber, Long.parseLong(expireMin), TimeUnit.MINUTES); + stringRedisTemplate.boundValueOps(getUpdateAccountPhoneKey(codeKey)).set(codeKeyValue + "&" + nationCode + "&" + phoneNumber, Long.parseLong(expireMin), TimeUnit.MINUTES); } @Override public void updateAccountPhone(JSONObject device, JSONObject params) { String key = stringRedisTemplate.boundValueOps(getUpdateAccountPhoneKey(device.getString("account_id"))).get(); - if(key == null){ + if (key == null) { throw new BadRequestException("Captcha has expired"); } String captcha = key.split("&")[0]; String nation_code = key.split("&")[1]; String contact_phone = key.split("&")[2]; - if(!StringUtils.equals(captcha,params.getString("captcha"))){ + if (!StringUtils.equals(captcha, params.getString("captcha"))) { throw new BadRequestException("Verification code is wrong"); } - JSONObject account = new JSONObject(); - account.put("account_id",device.getString("account_id")); - account.put("contact_phone",contact_phone); - account.put("nation_code","+" + nation_code); + JSONObject account = new JSONObject(); + account.put("account_id", device.getString("account_id")); + account.put("contact_phone", contact_phone); + account.put("nation_code", "+" + nation_code); clientAccountMapper.update(account); deleteAccountPhoneKey(device.getString("account_id")); } @@ -2112,7 +2133,7 @@ public class RetailAppServiceImp implements RetailAppService { } @Override - public JSONObject toggleCBBankChannel(JSONObject device,String noticeId) { + public JSONObject toggleCBBankChannel(JSONObject device, String noticeId) { String clientType = device.getString("client_type"); deviceSupport.findRegister(clientType); JSONObject account = clientAccountMapper.findById(device.getString("account_id")); @@ -2135,7 +2156,7 @@ public class RetailAppServiceImp implements RetailAppService { } @Override - public JSONObject toggleCBBankCustomerSurcharge(JSONObject device,boolean customerSurcharge) { + public JSONObject toggleCBBankCustomerSurcharge(JSONObject device, boolean customerSurcharge) { String clientType = device.getString("client_type"); deviceSupport.findRegister(clientType); JSONObject account = clientAccountMapper.findById(device.getString("account_id")); @@ -2150,7 +2171,7 @@ public class RetailAppServiceImp implements RetailAppService { result.put("status", "Fail"); if (customerSurcharge) { result.put("message", "开启客户支付手续费失败,失败原因:" + e.getMessage()); - }else { + } else { result.put("message", "关闭客户支付手续费失败,失败原因:" + e.getMessage()); } @@ -2160,7 +2181,7 @@ public class RetailAppServiceImp implements RetailAppService { result.put("status", "Success"); if (customerSurcharge) { result.put("message", "开启客户支付手续费成功!"); - }else { + } else { result.put("message", "关闭客户支付手续费成功!"); } result.put("customerSurcharge", String.valueOf(customerSurcharge)); @@ -2219,20 +2240,20 @@ public class RetailAppServiceImp implements RetailAppService { } } - private void deleteAccountEmailKey(String codeKey){ + private void deleteAccountEmailKey(String codeKey) { stringRedisTemplate.delete(getUpdateAccountEmailKey(codeKey)); } - private void deleteAccountPhoneKey(String codeKey){ + private void deleteAccountPhoneKey(String codeKey) { stringRedisTemplate.delete(getUpdateAccountPhoneKey(codeKey)); } - private String getUpdateAccountEmailKey(String codeKey){ - return BIND_ACCOUNT_EMAIL_PREFIX+codeKey; + private String getUpdateAccountEmailKey(String codeKey) { + return BIND_ACCOUNT_EMAIL_PREFIX + codeKey; } - private String getUpdateAccountPhoneKey(String codeKey){ - return BIND_ACCOUNT_PHONE_PREFIX+codeKey; + private String getUpdateAccountPhoneKey(String codeKey) { + return BIND_ACCOUNT_PHONE_PREFIX + codeKey; } } diff --git a/src/main/java/au/com/royalpay/payment/manage/appclient/web/RetailAppController.java b/src/main/java/au/com/royalpay/payment/manage/appclient/web/RetailAppController.java index 011bad9b0..4f9da3115 100644 --- a/src/main/java/au/com/royalpay/payment/manage/appclient/web/RetailAppController.java +++ b/src/main/java/au/com/royalpay/payment/manage/appclient/web/RetailAppController.java @@ -103,6 +103,12 @@ public class RetailAppController { return retailAppService.getTransactionCommonData(device, appQueryBean); } + // 查询7天的交易金额 + @RequestMapping(value = "/common/week", method = RequestMethod.GET) + public List getTransactionCommonWeekData(@ModelAttribute(CommonConsts.RETAIL_DEVICE) JSONObject device, AppQueryBean appQueryBean) { + return retailAppService.getTransactionCommonWeekData(device, appQueryBean); + } + /** * 流水页今日数据 * diff --git a/src/main/resources/au/com/royalpay/payment/manage/analysis/mappers/TransactionAnalysisMapper.xml b/src/main/resources/au/com/royalpay/payment/manage/analysis/mappers/TransactionAnalysisMapper.xml index 8e83ce3af..9b24992e3 100644 --- a/src/main/resources/au/com/royalpay/payment/manage/analysis/mappers/TransactionAnalysisMapper.xml +++ b/src/main/resources/au/com/royalpay/payment/manage/analysis/mappers/TransactionAnalysisMapper.xml @@ -881,6 +881,35 @@ + +