From 97c885237bd8fa847572fdc742951391dafff12e Mon Sep 17 00:00:00 2001 From: Tayl0r Date: Thu, 21 Jun 2018 15:06:33 +0800 Subject: [PATCH 01/21] =?UTF-8?q?[Y]=20=E6=97=A5=E5=BF=97=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=E8=8A=82=E7=82=B9ip?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/resources/logback_cfg.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/resources/logback_cfg.xml b/src/main/resources/logback_cfg.xml index b1755ab54..086174451 100644 --- a/src/main/resources/logback_cfg.xml +++ b/src/main/resources/logback_cfg.xml @@ -15,7 +15,7 @@ 200MB - ${FILE_LOG_PATTERN} + [ Server--${ROYALOS_NODE_IP} ] ${FILE_LOG_PATTERN} UTF-8 From c5059d5917e7afef715f29e391b30555e1d9da24 Mon Sep 17 00:00:00 2001 From: yuan <1551130722@qq.com> Date: Thu, 21 Jun 2018 18:45:31 +0800 Subject: [PATCH 02/21] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=BA=A4=E6=98=93?= =?UTF-8?q?=E9=A2=9D=E5=91=A8=E6=9C=9F=E6=80=A7=E5=AF=B9=E6=AF=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impls/AreaMerchantTradeAnalysisImpl.java | 175 +++++++++++++++--- .../CustomerAndOrdersStatisticsMapper.java | 2 + .../mappers/TransactionAnalysisMapper.java | 2 + .../CustomerAndOrdersStatisticsMapper.xml | 42 ++++- .../mappers/TransactionAnalysisMapper.xml | 33 +++- 5 files changed, 229 insertions(+), 25 deletions(-) diff --git a/src/main/java/au/com/royalpay/payment/manage/analysis/core/impls/AreaMerchantTradeAnalysisImpl.java b/src/main/java/au/com/royalpay/payment/manage/analysis/core/impls/AreaMerchantTradeAnalysisImpl.java index f68b05a02..704a82249 100644 --- a/src/main/java/au/com/royalpay/payment/manage/analysis/core/impls/AreaMerchantTradeAnalysisImpl.java +++ b/src/main/java/au/com/royalpay/payment/manage/analysis/core/impls/AreaMerchantTradeAnalysisImpl.java @@ -23,7 +23,12 @@ import org.springframework.stereotype.Service; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.OutputStream; +import java.math.BigDecimal; +import java.text.NumberFormat; import java.util.Date; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; /** * Created by yuan on 2018/6/5. @@ -68,13 +73,21 @@ public class AreaMerchantTradeAnalysisImpl implements AreaMerchantTradeAnalysis{ JSONObject params = queryBean.toParams(); orgManager.checkOrgIds(manager,params); PageList clientAmount = null; + List clientAmountLastCycle = null; + if(params.containsKey("begin") && params.containsKey("end")){ if (params.getDate("end").after(new Date()) && params.getDate("begin").compareTo(DateUtils.addDays(params.getDate("end"), -1))==0){ clientAmount = transactionAnalysisMapper.getAreaMerchantAmountAnalysis(params,new PageBounds()); + clientAmountLastCycle = transactionAnalysisMapper.getAreaMerchantAmountByCycle(params); }else { clientAmount = customerAndOrdersStatisticsMapper.getAreaMerchantTradeAnalysis(params,new PageBounds()); + clientAmountLastCycle = customerAndOrdersStatisticsMapper.getAreaMerchantTradeByLastCycle(params); } } + Map cycleMap = clientAmountLastCycle.stream().collect( + Collectors.toMap(cylce -> cylce.getString("client_moniker"), cylce -> cylce)); + List allAmount = clientAmount.stream().map(amount -> {return toAmount(cycleMap.get(amount.getString("client_moniker")), amount);}).collect(Collectors.toList()); + HSSFWorkbook workbook = new HSSFWorkbook(); // 声明一个工作薄 // 生成一个表格 @@ -111,6 +124,33 @@ public class AreaMerchantTradeAnalysisImpl implements AreaMerchantTradeAnalysis{ font2.setBoldweight(HSSFFont.BOLDWEIGHT_NORMAL); // 把字体应用到当前的样式 style2.setFont(font2); + + HSSFCellStyle style3 = workbook.createCellStyle(); + style3.setFillForegroundColor(HSSFColor.WHITE.index); + style3.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND); + style3.setBorderBottom(HSSFCellStyle.BORDER_THIN); + style3.setBorderLeft(HSSFCellStyle.BORDER_THIN); + style3.setBorderRight(HSSFCellStyle.BORDER_THIN); + style3.setBorderTop(HSSFCellStyle.BORDER_THIN); + style3.setAlignment(HSSFCellStyle.ALIGN_CENTER); + HSSFFont font3 = workbook.createFont(); + font3.setFontHeightInPoints((short) 12); + font3.setBoldweight(HSSFFont.BOLDWEIGHT_NORMAL); + font3.setColor(HSSFColor.RED.index); + style3.setFont(font3); + HSSFCellStyle style4 = workbook.createCellStyle(); + style4.setFillForegroundColor(HSSFColor.WHITE.index); + style4.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND); + style4.setBorderBottom(HSSFCellStyle.BORDER_THIN); + style4.setBorderLeft(HSSFCellStyle.BORDER_THIN); + style4.setBorderRight(HSSFCellStyle.BORDER_THIN); + style4.setBorderTop(HSSFCellStyle.BORDER_THIN); + style4.setAlignment(HSSFCellStyle.ALIGN_CENTER); + HSSFFont font4 = workbook.createFont(); + font4.setFontHeightInPoints((short) 12); + font4.setBoldweight(HSSFFont.BOLDWEIGHT_NORMAL); + font4.setColor(HSSFColor.GREEN.index); + style4.setFont(font4); HSSFRow row0 = sheet.createRow(0); HSSFCell cell00 = row0.createCell(0); HSSFCell cell01 = row0.createCell(1); @@ -124,6 +164,9 @@ public class AreaMerchantTradeAnalysisImpl implements AreaMerchantTradeAnalysis{ HSSFCell cell09 = row0.createCell(9); HSSFCell cell10 = row0.createCell(10); HSSFCell cell11 = row0.createCell(11); + HSSFCell cell12 = row0.createCell(12); + HSSFCell cell13 = row0.createCell(13); + HSSFCell cell14 = row0.createCell(14); cell00.setCellStyle(style); cell01.setCellStyle(style); cell02.setCellStyle(style); @@ -136,6 +179,9 @@ public class AreaMerchantTradeAnalysisImpl implements AreaMerchantTradeAnalysis{ cell09.setCellStyle(style); cell10.setCellStyle(style); cell11.setCellStyle(style); + cell12.setCellStyle(style); + cell13.setCellStyle(style); + cell14.setCellStyle(style); HSSFRichTextString text00 = new HSSFRichTextString("Partner Code"); HSSFRichTextString text01 = new HSSFRichTextString("Short name"); @@ -144,11 +190,14 @@ public class AreaMerchantTradeAnalysisImpl implements AreaMerchantTradeAnalysis{ HSSFRichTextString text04 = new HSSFRichTextString("Suburb"); HSSFRichTextString text05 = new HSSFRichTextString("Industry"); HSSFRichTextString text06 = new HSSFRichTextString("Amount"); - HSSFRichTextString text07 = new HSSFRichTextString("Orders"); - HSSFRichTextString text08 = new HSSFRichTextString("Alipay Amount"); - HSSFRichTextString text09 = new HSSFRichTextString("Alipay Orders"); - HSSFRichTextString text10 = new HSSFRichTextString("Wechat Amount"); - HSSFRichTextString text11 = new HSSFRichTextString("Wechat Orders"); + HSSFRichTextString text07 = new HSSFRichTextString("Last Cycle"); + HSSFRichTextString text08 = new HSSFRichTextString("Orders"); + HSSFRichTextString text09 = new HSSFRichTextString("Alipay Amount"); + HSSFRichTextString text10 = new HSSFRichTextString("Last Cycle"); + HSSFRichTextString text11 = new HSSFRichTextString("Alipay Orders"); + HSSFRichTextString text12 = new HSSFRichTextString("Wechat Amount"); + HSSFRichTextString text13 = new HSSFRichTextString("Last Cycle"); + HSSFRichTextString text14 = new HSSFRichTextString("Wechat Orders"); cell00.setCellValue(text00); cell01.setCellValue(text01); cell02.setCellValue(text02); @@ -161,10 +210,13 @@ public class AreaMerchantTradeAnalysisImpl implements AreaMerchantTradeAnalysis{ cell09.setCellValue(text09); cell10.setCellValue(text10); cell11.setCellValue(text11); + cell12.setCellValue(text12); + cell13.setCellValue(text13); + cell14.setCellValue(text14); JSONObject sysConfig = sysConfigManager.getSysConfig(); String json = sysConfig.getString("royalpayindustry.json"); JSONArray jsonArray = JSONObject.parseArray(json); - for (int i = 0; i < clientAmount.size(); i++) { + for (int i = 0; i < allAmount.size(); i++) { HSSFRow row = sheet.createRow(i + 1); HSSFCell cell0 = row.createCell(0); HSSFCell cell1 = row.createCell(1); @@ -178,6 +230,9 @@ public class AreaMerchantTradeAnalysisImpl implements AreaMerchantTradeAnalysis{ HSSFCell cell9 = row.createCell(9); HSSFCell cel10 = row.createCell(10); HSSFCell cel11 = row.createCell(11); + HSSFCell cel12 = row.createCell(12); + HSSFCell cel13 = row.createCell(13); + HSSFCell cel14 = row.createCell(14); cell0.setCellStyle(style2); cell1.setCellStyle(style2); cell2.setCellStyle(style2); @@ -185,24 +240,94 @@ public class AreaMerchantTradeAnalysisImpl implements AreaMerchantTradeAnalysis{ cell4.setCellStyle(style2); cell5.setCellStyle(style2); cell6.setCellStyle(style2); - cell7.setCellStyle(style2); cell8.setCellStyle(style2); cell9.setCellStyle(style2); - cel10.setCellStyle(style2); cel11.setCellStyle(style2); - String industry = getRoyalpayIindustry(clientAmount.get(i).getString("royalpayindustry"),jsonArray); - HSSFRichTextString text0 = new HSSFRichTextString(clientAmount.get(i).getString("client_moniker")); - HSSFRichTextString text1 = new HSSFRichTextString(clientAmount.get(i).getString("short_name")); - HSSFRichTextString text2 = new HSSFRichTextString(clientAmount.get(i).getString("bd_user_name")); - HSSFRichTextString text3 = new HSSFRichTextString(clientAmount.get(i).getString("state")); - HSSFRichTextString text4 = new HSSFRichTextString(clientAmount.get(i).getString("suburb")); + cel12.setCellStyle(style2); + cel14.setCellStyle(style2); + JSONObject thisAmount =clientAmount.get(i); + NumberFormat percent = NumberFormat.getPercentInstance(); + BigDecimal lastTotal = new BigDecimal(1); + BigDecimal alipayTotal = new BigDecimal(1); + BigDecimal wechatToatl = new BigDecimal(1); + + if(thisAmount.containsKey("old_total")){ + if(thisAmount.getBigDecimal("total").compareTo(BigDecimal.ZERO)==0){ + lastTotal = new BigDecimal(-1); + if(thisAmount.getBigDecimal("old_total").compareTo(BigDecimal.ZERO) == 0){ + lastTotal = BigDecimal.ZERO; + } + } + if(thisAmount.getBigDecimal("total").compareTo(BigDecimal.ZERO)>0 && thisAmount.getBigDecimal("old_total").compareTo(BigDecimal.ZERO)>0) { + lastTotal = (thisAmount.getBigDecimal("total").subtract(thisAmount.getBigDecimal("old_total"))).divide(thisAmount.getBigDecimal("old_total"), 4, BigDecimal.ROUND_HALF_UP); + } + }else { + if(thisAmount.getBigDecimal("total").compareTo(BigDecimal.ZERO) == 0){ + lastTotal = BigDecimal.ZERO; + } + } + if(thisAmount.containsKey("old_alipay_total")){ + if(thisAmount.getBigDecimal("alipay_total").compareTo(BigDecimal.ZERO)==0){ + alipayTotal = new BigDecimal(-1); + if(thisAmount.getBigDecimal("old_alipay_total").compareTo(BigDecimal.ZERO) == 0){ + alipayTotal = BigDecimal.ZERO; + } + } + if(thisAmount.getBigDecimal("alipay_total").compareTo(BigDecimal.ZERO)>0 && thisAmount.getBigDecimal("old_alipay_total").compareTo(BigDecimal.ZERO)>0){ + alipayTotal = (thisAmount.getBigDecimal("alipay_total").subtract(thisAmount.getBigDecimal("old_alipay_total"))).divide(thisAmount.getBigDecimal("old_alipay_total"),4,BigDecimal.ROUND_HALF_UP); + } + }else { + if(thisAmount.getBigDecimal("alipay_total").compareTo(BigDecimal.ZERO) == 0){ + alipayTotal = BigDecimal.ZERO; + } + } + + if(thisAmount.containsKey("old_wechat_toatl")){ + if(thisAmount.getBigDecimal("wechat_toatl").compareTo(BigDecimal.ZERO)==0){ + wechatToatl = new BigDecimal(-1); + if(thisAmount.getBigDecimal("old_wechat_toatl").compareTo(BigDecimal.ZERO) == 0){ + wechatToatl = BigDecimal.ZERO; + } + } + if(thisAmount.getBigDecimal("wechat_toatl").compareTo(BigDecimal.ZERO)>0 && thisAmount.getBigDecimal("old_wechat_toatl").compareTo(BigDecimal.ZERO)>0){ + wechatToatl = (thisAmount.getBigDecimal("wechat_toatl").subtract(thisAmount.getBigDecimal("old_wechat_toatl"))).divide(thisAmount.getBigDecimal("old_wechat_toatl"),4,BigDecimal.ROUND_HALF_UP); + } + }else { + if(thisAmount.getBigDecimal("wechat_toatl").compareTo(BigDecimal.ZERO) == 0){ + wechatToatl = BigDecimal.ZERO; + } + } + if(lastTotal.compareTo(BigDecimal.ZERO)>=0){ + cell7.setCellStyle(style4); + }else { + cell7.setCellStyle(style3); + } + if(alipayTotal.compareTo(BigDecimal.ZERO)>=0){ + cel10.setCellStyle(style4); + }else { + cel10.setCellStyle(style3); + } + if(wechatToatl.compareTo(BigDecimal.ZERO)>=0){ + cel13.setCellStyle(style4); + }else { + cel13.setCellStyle(style3); + } + String industry = getRoyalpayIindustry(thisAmount.getString("royalpayindustry"),jsonArray); + HSSFRichTextString text0 = new HSSFRichTextString(thisAmount.getString("client_moniker")); + HSSFRichTextString text1 = new HSSFRichTextString(thisAmount.getString("short_name")); + HSSFRichTextString text2 = new HSSFRichTextString(thisAmount.getString("bd_user_name")); + HSSFRichTextString text3 = new HSSFRichTextString(thisAmount.getString("state")); + HSSFRichTextString text4 = new HSSFRichTextString(thisAmount.getString("suburb")); HSSFRichTextString text5 = new HSSFRichTextString(industry == null?"":industry); - HSSFRichTextString text6 = new HSSFRichTextString(clientAmount.get(i).getString("total")); - HSSFRichTextString text7 = new HSSFRichTextString(clientAmount.get(i).getString("orders")); - HSSFRichTextString text8 = new HSSFRichTextString(clientAmount.get(i).getString("alipay_total")); - HSSFRichTextString text9 = new HSSFRichTextString(clientAmount.get(i).getString("alipay_order")); - HSSFRichTextString text_10 = new HSSFRichTextString(clientAmount.get(i).getString("wechat_toatl")); - HSSFRichTextString text_11 = new HSSFRichTextString(clientAmount.get(i).getString("wechat_order")); + HSSFRichTextString text6 = new HSSFRichTextString(thisAmount.getString("total")); + HSSFRichTextString text7 = new HSSFRichTextString(percent.format(lastTotal.doubleValue())); + HSSFRichTextString text8 = new HSSFRichTextString(thisAmount.getString("orders")); + HSSFRichTextString text9 = new HSSFRichTextString(thisAmount.getString("alipay_total")); + HSSFRichTextString text_10 = new HSSFRichTextString(percent.format(alipayTotal.doubleValue())); + HSSFRichTextString text_11 = new HSSFRichTextString(thisAmount.getString("alipay_order")); + HSSFRichTextString text_12 = new HSSFRichTextString(thisAmount.getString("wechat_toatl")); + HSSFRichTextString text_13 = new HSSFRichTextString(percent.format(wechatToatl.doubleValue())); + HSSFRichTextString text_14 = new HSSFRichTextString(thisAmount.getString("wechat_order")); cell0.setCellValue(text0); cell1.setCellValue(text1); cell2.setCellValue(text2); @@ -215,6 +340,9 @@ public class AreaMerchantTradeAnalysisImpl implements AreaMerchantTradeAnalysis{ cell9.setCellValue(text9); cel10.setCellValue(text_10); cel11.setCellValue(text_11); + cel12.setCellValue(text_12); + cel13.setCellValue(text_13); + cel14.setCellValue(text_14); } JSONObject parmerters = new JSONObject(); parmerters.put("dateFrom", StringUtils.isNotBlank(queryBean.getBegin()) ? queryBean.getBegin() : ""); @@ -232,7 +360,12 @@ public class AreaMerchantTradeAnalysisImpl implements AreaMerchantTradeAnalysis{ e.printStackTrace(); } } - + private JSONObject toAmount(JSONObject cycle, JSONObject amount) { + if(amount != null && cycle!= null){ + amount.putAll(cycle); + } + return amount; + } private String getRoyalpayIindustry(String industryMccCode,JSONArray jsonArray) { String industry = null; for(int i = 0;i getAreaMerchantTradeAnalysis(JSONObject params, PageBounds pageBounds); List countTradedClientsByDate(JSONObject parasm); + + List getAreaMerchantTradeByLastCycle(JSONObject parasm); } 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 5d070545f..a60d93f7e 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 @@ -74,4 +74,6 @@ public interface TransactionAnalysisMapper { JSONObject getClientTransaction(JSONObject params); PageList getAreaMerchantAmountAnalysis(JSONObject params,PageBounds pagination); + + List getAreaMerchantAmountByCycle(JSONObject params); } diff --git a/src/main/resources/au/com/royalpay/payment/manage/analysis/mappers/CustomerAndOrdersStatisticsMapper.xml b/src/main/resources/au/com/royalpay/payment/manage/analysis/mappers/CustomerAndOrdersStatisticsMapper.xml index 8213b5ba3..d97efacef 100644 --- a/src/main/resources/au/com/royalpay/payment/manage/analysis/mappers/CustomerAndOrdersStatisticsMapper.xml +++ b/src/main/resources/au/com/royalpay/payment/manage/analysis/mappers/CustomerAndOrdersStatisticsMapper.xml @@ -358,10 +358,15 @@ + + + SELECT c.client_moniker,c.short_name,c.bd_user_name,sum(if(t.transaction_type='Credit',t.clearing_amount,0)) total, COUNT(DISTINCT t.order_id) orders, - c.suburb,c.state,c.royalpayindustry,sum(if(t.channel='Alipay',t.clearing_amount,0)) alipay_total, - sum(if(t.channel='Alipay'AND t.channel='AlipayOnline',1,0)) alipay_order,sum(if(t.channel='Wechat',t.clearing_amount,0)) wechat_toatl, + c.suburb,c.state,c.royalpayindustry,sum(if(t.channel='Alipay' OR t.channel='AlipayOnline',t.clearing_amount,0)) alipay_total, + sum(if(t.channel='Alipay'OR t.channel='AlipayOnline',1,0)) alipay_order,sum(if(t.channel='Wechat',t.clearing_amount,0)) wechat_toatl, sum(if(t.channel='Wechat',1,0)) wechat_order FROM pmt_transactions t INNER JOIN pmt_orders ord on ord.order_id = t.order_id @@ -824,4 +824,33 @@ GROUP BY c.client_id order by total desc + + + \ No newline at end of file From 01128264950d0476b7077dc0234a1dc13ddb457a Mon Sep 17 00:00:00 2001 From: eason Date: Thu, 21 Jun 2018 19:39:25 +0800 Subject: [PATCH 03/21] =?UTF-8?q?=E6=B1=87=E4=BB=98=E7=9F=AD=E9=93=BE?= =?UTF-8?q?=E6=8E=A5=E6=94=AF=E4=BB=98=E9=A1=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/ui/static/css/hf_gateway.css | 119 ++++++++++++++++++++++++ src/main/ui/static/css/img/hf_bg.jpg | Bin 0 -> 307909 bytes src/main/ui/static/css/img/logo_eg.png | Bin 0 -> 5674 bytes src/main/ui/static/css/img/rp_logo.png | Bin 0 -> 12043 bytes src/main/ui/static/css/img/rp_logo1.png | Bin 0 -> 13289 bytes src/main/ui/static/css/img/success.png | Bin 0 -> 3828 bytes 6 files changed, 119 insertions(+) create mode 100644 src/main/ui/static/css/hf_gateway.css create mode 100644 src/main/ui/static/css/img/hf_bg.jpg create mode 100644 src/main/ui/static/css/img/logo_eg.png create mode 100644 src/main/ui/static/css/img/rp_logo.png create mode 100644 src/main/ui/static/css/img/rp_logo1.png create mode 100644 src/main/ui/static/css/img/success.png diff --git a/src/main/ui/static/css/hf_gateway.css b/src/main/ui/static/css/hf_gateway.css new file mode 100644 index 000000000..d366bda2f --- /dev/null +++ b/src/main/ui/static/css/hf_gateway.css @@ -0,0 +1,119 @@ +.hf-gateway-background { + width:100%; + height:100%; + position: fixed; + background: url("img/hf_bg.jpg"); + top: 0; + bottom: 0; + right: 0; + left: 0; + z-index: -1; + overflow-y: auto; + background-size:100% 100%; +} + +.head-bar{ + display: inline; + text-align: center; +} +.head-bar img{ + height: 38px; + top: 60px; + margin-top: 40px; +} + +.order-box{ + height: 600px; + width: 800px; + margin: 2% auto; + box-shadow: 0px 0px 25px 0px rgba(0,0,0,0.21); +} +.order-box:after{ + content:''; + display:block; + clear:both; +} +.order-box .left{ + display: inline; + opacity: 0.84; + background: #FF6600; + width:40%; + float: left; + height: 100%; + text-align: center; +} +.order-box .left .m-logo{ + background: #FFFFFF; + border-radius: 100px; + width: 120px; + height: 120px; + margin-top: 15%; + display: inline-block; +} +.m-logo p{ + height: 120px; + line-height: 120px; +} +.m-logo img{ + max-height: 100px; + max-width: 100px; + padding: 10px; +} +.short-name{ + margin-top: 40px; + font-family: PingFangSC-Regular; + font-size: 18px; + color: #FFFFFF; +} +.intro{ + line-height: 550px; + color: #FFFFFF; +} +.order-box .right{ + display: inline; + background: #FFFFFF; + width:60%; + float: left; + height: 100%; + padding: 20px 40px; +} + +.order-box .right .title { + font-family: PingFang-SC-Medium; + font-size: 20px; + color: #434343; + letter-spacing: 0px; + padding-bottom: 10px; + padding-top: 20px; +} +.footer-bottom{ + font-family: PingFangSC-Regular; + color: #FFFFFF; + letter-spacing: 0px; + margin-top: 50px; +} + +.footer-bottom-success{ + margin-top: 100px; + color: #444444; +} +/*成功页*/ +.order-box .success-logo{ + text-align: center; + height: 200px; + background: #F0F3FA; + line-height: 200px; + font-family: PingFangSC-Regular; + font-size: 22px; + color: #444444; + letter-spacing: 0px; + +} + +.order-info{ + padding: 50px 100px; + font-family: PingFangSC-Regular; + font-size: 17px; + color: #444444; + letter-spacing: 0px; +} \ No newline at end of file diff --git a/src/main/ui/static/css/img/hf_bg.jpg b/src/main/ui/static/css/img/hf_bg.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c227c5a18bbb26e7ec3bef1e387f57708440fc5a GIT binary patch literal 307909 zcmeFacT`hb*Dt(7=u$+Z(yKs%QUZ}42y$qlCb33Dib{e~L(w2j6g5&rB4B6{5&|mL zaDamd7QjYJILM(YAQ%uhNB}9~w>{7EKJWeRxPM%~KkgXcxNNdVRyK3*?Dbo7&H0;i zt-bQ2_s0idGuGM78Gt|_fIs*L{P?K7?sSHH5&%3s0RsR4Bmr??6CeVX^uP~+kSzcd zEJMIQ0D}C_@yig?f66dW=H4YTAo`CCAo+Y!6_5ar$$*~^0DywC>Lgf_1ow??1Az?$ zHW1iAU;}{-1pco?;2=5dcz7H|(}xru9j@tgoE#k`ixNOLnw6!5<% zWom-7v^FufHbrV8&8+vBS);4~K>Ql?zgUTa>NU~-lufQ@|5JvVnFGM}>;GM5LjIfG z{5Nxv+WfP5Hkix*l}fr%=?w%n5ZFLq1Az?${)52(n{A*_)}|)F|LPccf;a^FZ%!c& zW=xa;G4L3eJ5iuRRQ^*gguwqT1Lj#oApey;QDBLP{HKij_m}(s>-?X&8UXU6_eVeA z2uO;HONfg}N=QgZNl8k}z+`1MZIV&ivQ-|YrmUf^rmU)}xzk8rQ+v0Lsw&(9vD*ZR zLZLMDt z321BA8Qs6FNumR8n|zd1R( zxVm8p`}Q9=c<3-O==h0~!6b4BB|0WH?#x+g>V=DGmo8tSUC*K4$j!^Y$tW#jvCBCX zmA4-~=2rh+Q(O1P^A|6hTUuYee#7H;|Jn1t_piQ>Bco%V#wR`tCg;A+3l|obzAdl( ztk=(a{@3=eiv3UZQUL2EA}R_MmH1gNh)5i`Lls2Dw2i=kz2J*QzT(~vu{0o zCZ%JB|9e|tRG0Mjov4qxb3d#0PtE@KDt7+=Q_cQUvHz}DA0PvTfQ<)L0PKPJWbWV9 zae6NvI>T#Uzyhy{!<$XE!UB`QJw=M_E@aLx-0%-#C=#oXe+ z&h7F@vPBkF!hZ-Yt2Y}W^6VSV>!Uvl<-1!~3-;0i#zPG3#RsNjXy-ctx+q#4M6!J3 znv8Z?fQNJOn+U?}A;#6T1r&3S$c_MZFFE=2Vp(uCVD!e^N8}5;A9Jyf)bG@ElpB~V z?coEBbfd*><{^+?9|KqfS5Cx(G=|d-2n(+agqkNSlhff)Cm$+*PH=cTTs%+wYVs3) z@?z-+8wp+>nTZLKs9=3PIQ%!t7jVhESUH?hIwIS;$`O_(KZtbm5Jl0O9NjRoEbU|! zPt*)j7S$Cgi|PYHQJqlN@@%gUAsLN>oQ$V8F1DSv`6Og7lWOm(Qt@LxyTqN0oJ1br zKoKQY8}g7x7eic+Y=)6yc()`gQ@)Qb6V9$Le@6`Lmar?&nd3xk=6hp}L_nZfJRhw( z77E~dpdg%ad7?M!z=1t5cdYtV$=G@4Ns%VsPncHy61LG~fd3GD2);QSR?uwnAiOL_ zKkWk^P6;qT#0$;y28eQ`%m;Pq$*YrUM&`Rxv|3EaBbY-KwzR-n7N3H- zpjW^E_LA#Z5YNFcR9s~5-6&T2y7P?)7e5#5y$i`vQi`n&HoK99ozSacpRHzH-52(= zBQp*kJ>wrCFJAn}HR4$mYoQFYbKqrRR*?Jks@4!A5hbZskCHIDY=51<%REzb{y0G( zIFQ7Pt%P87c;&u#A`WT~?kq9(<-K0K&=ln|+H>_z?;f4`2sy>n!YE6YsklG$QTnJT zA2J{2tJXTqsG{iU;Og(|U6@JvY(6wr3qNuyKCbeU?gM$db?!5?B$S@SVPkh%$|){P z^rUH}os_-ix#zk#%tSQs7zp30l?8Ydh=R!fN#{jP*N|k2#H)nx>6j zm-j@Bt7O)qL%#Is2~2i`y>WG{jcapUyb@bjlUR+_j#AW%IBTC$DVme;;f!8o zZ^45dTcFp^pk1mCt@Cm;VJeswNF^PX#tzVVvi}-V0y%y%Az(BrX)I}`e*+5 z7R;f0Me^c?XH~f?B@?i$sOmSS)-Aa$fwl8>zsbrRh>ng*Yk0OBKmQ* zW}S562g`-B+>h@pI&@z{mCB~Qw2>2^^et~Sn~dvRkBtFFvmCIG(t|8fhqj`0oJ=)L zX7E;T)w!?FRa^riTEE{81K79RXSe3Ow%vdKk#*CfsH7(n_HWAZIMI97nnd%jWj9<^ zZz$b5 z4_=7Ia>V<(l>+cq_Q}xXL@r884%tGX84ui%?;kg5Jz&Xs^7XZrt8<`3x_W+Pcx~5? zHxoc;xZ|(@_o#Sz;IVyRxLl%AC`sYbOj43fhM^DPAk| zhw|;XbuJOnGPR1pqME%y@U`Tia2QYA4MskH*VH7!M%w>kJXps=Vqf#Dnh#go5nanN zdfB>6!NAo2 zx#bFHlgN@5?zrb?&rA0XZ@xxJ*LYr3J90rNQXVVP9|eIjZu}Nj|K2u6sdU8kT9E4g z!ygiw7u7hoIMFFp62yCoHyxg-22aW!%r$L|nC-hxy^`LCVcDEtRlcR1O!Mt|nMQVC zN?ex`xHUuNbLpWAOfePY58yrX^b8qjtY6r(JJIiKn+%EKtnA1|E^&4n)!C@%^gSwA zI_-Oa<@G5-Cd7_OixRswN;0y%cTm0JFH?(@(wx(`wr1r`JZsjv5GHePIQ0jxFgfG= zVXl6Z@;W{4bw#esSJfF|2kPifRP~Of2eP-{iBr<~fjOs}d&4@y=yw^RF|t=T?Q}@7 zxiaZ&_AQbA= z+_lBz8`5O7V$W%piM>}EKS6gD-A*bdAMFj@{JQ-0!z=#1s&VVi6)J&S^*mNW$CPVd zb`PJyt7I3ZFzy9JUH{a2?z@xTQpeyApw%-vpSIKTldJs3Z5?C|*UFMQT3R5EO)s%bA)QS)EM%@o!3Rg_UD~3(5E$zhjLWdb1q~B}u zeQe7;mY)3pq*G>YJiJmOm|A(SziYw#51lPqO5{gTc8i|cm%F|`7LoU%cy&A=8Lg$( zmD;7+k9q`Wg(DGm?Qplu(E~`Wz=r_vYK*dsUryVp0`WRK%C=AsRdk6gKZ(2k@hjxn zwCnX2l{m+}$^8#a-%8@HM0oq`V`O|v7VDePlvzt<wEaC+uyKr4>1ZnG!uqV@u#OuHhvE|Q!EVKpL{P0qqFAec){l4a6oxHkLF?EGym+_ zdW=S&hDzI$;sal{%_H0PDAts18xC-<+o~XPKHu;Uj~{>*PDyt#4(m zR-ChV!qe&=e?;r)#C-#CqxM*F_(~!@sVNB?xHXJgfjX`9$yL3MCGy30uB1KPc&X8Z zqeZK|o6zDvG-%D3HGdEj2x^W0tom5KI9@2}J9 zpImZlb+WTUn&;<_Ze!CrLM4CC|1cv8I-`B>Tu3daNN=WaheO<8GOvwx_E%HRhsZuL zemAgi=RllxUvr$gp=wJYHcFKyF49n6e-!a{u3HSrtax~6lSeXUgyk8m|swjdj)A# zYHjnetxHe8Z&)l#Ry=&Yw>W%D5*Jbb=&Z16x995=ogct`ucf}~%KVw{+lyK&m;o(` z3nu5~hnP@_P6o2W5hEw<{o8kPy*CpE+`drbu*|eXVhzSEkGN&-*amw!pC98x`-W{d5ymb8RfOU2z z(yQ+(^IEjMCHq`j`y9vt%RZZE1Gv*VN(dO(?)-TN?A~mx`VHA#8OW6Un)f~2s^jn{MzS8)eB0{> z9=(3GeEU*jwR^x8?gf_`bcn)xS|sK#gBrVP9eXuFuc(-tl2Yl>`da7$ryFxYA+sby zU-PT{gloV&B|V84v_mb@^N^$IPCA~)_pgh3cavwE+7#^vnb2`z83SWHidjN6 z`O?6!0%K4M8#PAJ>I~jRb|qO`)cD(R@7i3J>cA}%4h4Tpu_xx5?0+`4Zh0sB5^!#n zvfg8cZ@LrBlzC{i@~08xc4m{_q!>!;1OKXOw8jkpy)QdEm3At1zz2$9R<17qic1w8 zJr|&)HNoYGX3NNZn7^OrMKA+Ou+C$h(D*LQCTAxApv4~SUPs9sZBJjrMW?F67czs~HL%|EJt>YVdO0S%+lLhX98$np`N;8pEp z$v|njqJ-_cmLA3b=|}H0VV7$;+2}NWWo|N`H~5|BJY4Q{O6SgtqTBm2TOKkVBa|#? zPfs4a&#OGkQa{hltnfHyW>+Tgv|PHq`9fq*LBC$|4qJ#CJK`Fc;dCmY7iehu`6^e*oGkX*Pw*_R4_o+z+6qY>JjmldOc!otIopFLq)0Uo`BWg18e2-yZfZ1_FB=UHGVZd=Sq~UQh zv*Q+fkd~$=k%8L(b%UW1|M~j=B^2QIfmO10j5-kj4&3bv4?k`9zcp58Yy3Z-_TSez z@moOj3A>-EG(!_}LsR5Fa4_$m^qP^`9;^T1#DB@z8vm@||4?DOe;ola1WW%x9E4x< z|G>8KCBFpn23#9({SpGdB)p+r8*u#+0>31@p31@p31@p31@p31@p31@p31@p31@p31@p_?^n+F)<&oLQK8>ohfl_URXvFG^tr9YD@@@mTM+R_}%RI zw4TWQQVdxEpHsD?&(05JJc0Da@4F1cuhVgu^Lb%sIB-rJQ~b*`;|%7hFcf?yst6DSW8js0=wTeh#FjN99D<=qA>0Dg`_Am=T0M{A7Z4M%4mcI z7E^2u&OY`gC$l?E?_(+a;@r!EJPH1c=tlFl* z`s&3r)6pvZWr0^1H(${D2_vyQlI?QtBt3|YSSCT(2^GXRq7N5%jQr)FWj zpBH82^9rRMl~TUp6QgIJ=Y;|m%Xr)Z$3M1QOM;h)M!HO4ldK)L!h*_ex~ARxGBBaA z8Th)!dNop(J=y^Cfi&wHANv99*9BlWcOg@hwH`g`0KT)?ET#wzUJh{rWjtSVa2P2k zL;d9+fPIzb)+sFd4<8atQnF2AzD-l2jzfR|I+@*rb(7?7E>PfP@f6WtDPhR32K0tQ zoP8&tC`zB>KSrAj&T)SCMtrsl$D%v%Mdey@S2baqXw03*9Ai|WZ*Y__B!_N)DY=Z&)UtO<%YSz*Q9vsgdLX24{=-@c-J`T(dKC9P~I ze}Spk6gy@z)gp$Fep#VtkEO`0tMVwtBgxvMu|wyx#@wEGABa zLlD&CIA;*r4kh-^!eZgzlORw-Hx-pJPHE(P;zX-+3&$qP;gAbUt++P*#6rSceIemU z`tbxfVA+na^i@7!I~FH!9elX#19;7Fi{PzFZ8qxPD>-Ivf zi4VN`u#UPgn)&@38~2`X8|ju60(d^pt5R&YY;BNG%>)}HpB0vB`yH&bD5Ye6tx~@2 z+Yg{*exY1*@Ef7BZnm4BX3vIh9m@X!#9O{@g^l*E__##&obw9MBr3Fa_fDpztU?VJKUk9C3QYXy|7aY zt~BMo^e~Gp8f1S1FwepwF#2r3BAnW3^7OSjCUmOJLd}I5YwA$`yF>`!H6*0p5x6{L ziu2}L;C9_lg+R$g3#%!wvfoLNMk1oOe8mT{hH81$QHlEA+YxdKk{m&T+_gH!h9u%W zZ6ZEsgdhvmQyTy?US2rCdFYbW_>HK)#*-Bq$nqh6XVogLs{z$GMb>w6f|pGfzk(^c zh=#M+Owkn{o@aptoW~ja2;V&|8Z?!itt{6N$U=sEIec)rJNcrgu6+&Lq*Fwhya-!y z_8UpoVe%_w0dpD=i!oU!EAc}_wv#G%2FVv>(p!~w#_zkNM&<%7tsWHDgX!z^HR-U9 zg1(e=)`>yy)5j+m-ozlZehKAUQVBNd9-8_Cz#@y8>cbZe9j@WLHZk_A!6D|WCyTPe zTW-WhwnlobAzcAE_^em6G1W*U6je{5MXg8I3f2?sJ4P`rG~6nDD%~;@MsCC835C#kF-6kBGxuClWQ*j2ty-Fn@4`qPj1ZQE zPfYzhQ-ZxG?JN|w0vEB>z{YlYmFCNyCO8{lJ$IYA@~UPR0mO1`$JcaZLv+~j{6j>*--M<8GfW!%g17Rs#P;!te2gJ=q`H2 z42n;LB_xo~PN;Tubo*%4mch6gn7bO@J=gO%pjo%;p01r;PXgs+b&XGhhT5SMPeaG! zJGU!7r}Hb7Q+mnEm9gnT{jjI`%+6i1tG67+({M}m{0er|sKRZ?bk_5f;{0ao?7XOv zt9ftI3Lia$-F7@a-K-IlAW@}V=_d;bIE=O|FU8j1U;+ftJbi*10JhB@34^!+Lv zqO)&|?ILIr2wAEMH18KM01s-K7;4O4ItB)mv}X#rbReU1f?+-<@Tyo`KqHdxBHP6* z)UT#|K}?-T7V_i^eis9f&gjZBzSIP?AaM#GWY-N|rFt7i7Y3e;b6?ZGp1e7ucZGMl z>2#E*v4N!$^WMx8`4AvWBR2bw(Y~UZaUCGRQ)>zG_%mtqpDOhy&)Ys~8C`EcUZ!>4F_FpSf0=du`$~9Kum+ARkE&W=Jopk^C*>NRX<`eC8bO z;7THDhzsBYbMtDd092+hzdgwy@&nHYYF_M$77QL7S7ZUvqjn=D7zO_@9mQL&e%7gY zys<+G79j8X#-}F6=s}OC2S2R%9?t-_Q6q}7nQ zq;=!x=^DP^t?hZ-E@oGdQ&R6Lo+R(}7i-jZ-uv_}`EsOZ|1c^!Y^FhgNV>|vH&$t? zv{T0j^3)`>HIJ(5-wBOun)c*8v|Rz$3wtWWGq8X>Hh>e4S2y_0G*wudnIw%dEjT~u zh4_L%&SEaKR#yA~WcJm93#AZL15=9gu!v{qGaz-iJL8lJn`L$^qu`_V6KuPbE2(@X zm_L<3kDPLHm9`wu8%mF5mySM2<~MdMe}-&`6I7{2m7y~J z*^24EhypLK1>MkUHz8jQ0X*WFU^nU4tP^z!FpJ{EjIhsDSCM6d(w)~WI3@~yTXr> zsIN=Ln$G<-I`FatD8XmYH9c9-YqnolctI*TFm--{sr{vDjtE3Y_q$btWsaH z-k`)$KXdCKsTt5QX;v*xqi4Jj&k7OWvu`1&1gjb*=q5CfSwX#VOwky9RmuXa74Mu)3)jF2AUUD$YaAsxscg@F-P zij)v^rkx@QA3I>m@HVLOi(&-wnO=$Wa1s>=u7wSezdWT6s6uD=X|leE8Ny^v$z(c{ zG%PAOR308u;u|!~*gvWXa-qnj^4r;kg$&?mSuB;2rS!`F1>;&t0c<#^-HN%}?AsaK zGH+k)7|2pjX|2qAIHD1Ves6tMJf)Kd5Up`;*iVND^D!$ti;B|JSx+Pic1fMi-KQ+u zhlX$Z#;>&YC)D0G>r1E5j`1=t_1#V3#`9|Qz&-*h`vtq&*Q{qdw|bRcdr^fl5nw5O z`F4LVlxrbgbQk(GjTc}f(CuVX%Qo=#JsZuFqyub@0+48z*7&DP;{EAlC6{UXEFp*-YhmZ-?F`6U{^D^m@!ar5W zKY%xx+^0`(T$8@z1xP!!S?)t#Zm{Cu(s3SQe$I$}_)!@5P@tjpwXNT zGrxZx1(#SvkXnB#w-KBLoZXp{72xJ2edup9A+u7^@`I3t!Yo za;ewtOTLz6cC#a_By3~9C*43SSqZ};Ft66>X?kXSh9~O*^g0#NK|HX0$@fFFyHW}X-@Y{e9xwxML&(dn}v+Xoi)r%L9( z`P7}X{Z!Duv+xIC4TQoz{)w5W_07p?nijJ5zlASnp7}s|4|*Ppz9J#(3pxQog22ZX zz9UFVXmL-F5c}f0A|CX`f(@`WROP3w>32quSWptXStaD&b|@cpK?drz+8w*d62bkR zQzue{kzuo&VJ~6yC(=mQKpYK0z8ngxT?0{X0-F+}RaRwLJXi^baPggpugg`u z%L_CbSVSx@5VWiKk!w;;ie(G{&R*du|Kx`LAgR@q_9Bz(K!*?&xef~|31=IT+IDQa zaJsk~-b(c4g`s?{91REX*KO9hC$DwAvypUJZZ?weNTe6g?pJ9B{`G2P5sy#G>MQK-kvSF->(5)d)J~b=f0!Y$>ppDwQq!Fe(e_( z?^~=-i3{*0r4=7}?>v<60Uh5(jzzUiEET%UmuK%V=o|3%rXmI?>t|R3*8rNg2YzOv z8ak9B+h%CIJmmycCc!u`86$)Y7VBfvd&kI7hik$iW7_gQex-O(&X*g z`{cUs_LDm969Eh}o@bibKn9(d?ZX;qj_d6s0&Lv?`9lybPQ*xfW0#z~(jMik{3IgD zVk=w59_pniVavaYn09*UfN}GkU*%D=m%xY z^W^QK){=Mfh%mHsPTqdEtMz!fd?@^UuN4KX(SiFLRc*N>pR>}`D*6N(*^Mp zf0uVZIyXR2ay}zi;6xq@Rjgc}aUB~e>wj-=yb402#9a`$edA@8q2w;TuSQBaSw5U~ zP2@IVy{RCJWN%90uQXofXF>A=Ru$FWXypaoQsd4~ufRXYH4`{Q$o#VOO@DQV5rk-}gZcfOt{sCOnhbOfpKj>-ylAX?r2}4Zh zKAT#rl-vI}8Q!`3<(d_XZI664ka2k4HaZ2AO;pXzWKbM0Vl~4-bA9o%ndn=B_3Xa#SZOHxk5z&|Ii;_aGZxH-FHX5l71KX8b%c!99e^d$ zKf2zf#+3CXKbS=9D2(pl<=JP5JotDWL5=wVpvl`F_vN7$)KZHnyj)sbPx1pQzAOE2 zC!LeYJHnaGhK8_vCZ#k45SaCx=4X?-+$rK8KTe;Y;;R-emSu5Zk^Ly3xFKcA#gTCg zE2&e_4CtAyEwfsy4UJECimX6e72gJDQnEe1NQBjLRPVoWmb5G6sTT{I_SQ}!!9>`N zXDh-oSlM~`pQ*d2gN;~3;%r$o8g#ROH?F@y=?7q0wl+?~=c%Hn9NK zid~v4^D``xU3dj%D$5}benK!q>4GH^fl$!o^K!3V4&#FnP&eIIoKMGpz&SN}kLXW^hru@Fl{}xP1-brQ@m498ABk0o7|*=`M$_TdMrZ*^aj=2XtS7H79PLZb zox&r{SLWQ@>#MXv0xIbKypg;TtT?I@K^o;HD|?x_e*^Ogy819M6bB-w+RV)d3l}+Z zb!8+!I`F4NI>U?n4V6f5I<-)~!Y^p7xaIt1f&qk&y0w1v4sY<>#0Y}W92v1_61cKh z7%zVOdI>kPdx*-1Sg|T4!l@FU7)DS80`%88BFVDdeT0QJ_ySXOJvtJbIIXL7Q9sO{ zNc6J^sy0z^P^)uJ@(4;iO{kAt;qj=-7>jW~3d3)J*M*VF94Sa0 zDse)}JY!483(LMe?8}LJ7f%!4Wvogt=hrZBGhnO$x#+sc20B~yGM%7Xt{1iGnn+`D zvrYht7B=i_mcYJhjlMuy4JXDFD zb;}ek9>c;SGr6W?9DaVsSbjx+h|XrbDXr33YF#vEq=-!CPrFWu|78~ zvXE$jy>#@=L6@H70T0~oxtRygBQY)6ZeC?D@ZO%Wo^iUc9|P#2?0&Cio69E=cN-1e zJ)d>dG^oCKP|R&>NW#WP0JB2YYJ;-`uf*i8S=h%cD!$P?e$HWO$|cdV^wS|va1G6c zk^Fr#Q!VHa$BqVF*Om{)sGA*{WBA{x3t&#`iGmf)OC9jjVSMv250w}~EXZQwl>@Vu0F-*}?dg{;M4Ua@uKqyXoB8&4mJ}>hL zD*E=s1T_frc)T~;>R^Km)u&AWMrU05tYc3eRDaJwy%%tf$@A6mo9zjem%|3Y1l#@= zSsPU2i&^aGL-oNsj8ONQOqXpcMgwwV>-#8TX_*|=l`i2J;e5tR<^Ab06D3%yYhPTl zh@MYV`>WivmuA2<968$%8J7nu%9im2{|kLKN!G`zV0gvB#tfq_f!8cZ1EjJ-h;T5$ zH(u^))rQVQROPlRm0vj?jJlz@IJQDaoOSGQbgxJ&p=Om}bJQE)%-@c9v(*fUK?$QC z2UI}zu(@!eYEQ$mkb^goZPUu;naNQ3b+c}~WW_@(vK>1wPYeq|PY(4LULl8}$Ro_V6>28ZVU80Mpz_)<(PJ)zDxl zzmwq5npiTif}asEfHPoHoJO)-DvQ|xnQ~{G{1VLA9{^$rl5(u)i$dw6O$#u|2=+v^ zMQmhNl~E+7x%Ao|Bht3>G>@)YYFA`$jIJJ;;`ID^m)jrdo!ht5!ag#Hz%gGM0%75^ zORkLHmlLBmc~I?Ar&(t9qLE0py`|sEi zj4wrapz)Lf3!0@gxY~Jepa(1cbm8ZeNS{oYx zYuc%YP;I)pIM_wI&)9M7i3iZD_%ImFv4(FBGXBbPWq+5SO;!31pBEE(tl{QC7Snz`g;_qV3vXqcy*oy< z{gb)7l}9-D%q9ORSNdI?I`b zzeX;Ot7Xk2`65M~%ZGI)B4G7rS{-o9m+H#ip(!i4h)+RFa&;`jtouIzKL#&$+H)RW z8})GVh3!gU9<{iobO22nu;bo4h%ovx7Q2EETWWKu#XSMf)2P1>yX&ADiJO5HRE*2v z!FHbz-Z~;3Vr-i6{OTq6_rXd;N+qfGi%ndEQkw;|ah^TZIqz{`N5p5+;CiITcwS*J z>iP2-SY5erk~HPI#qqHVF&q}GDo0Yg6udT)T>vWvqZb3k;3>>qn@M=v9umtWprlHV z-&eHuS*g{FJa{qf_BC>x##aPs+WRK$g@k%HezmKnmtQMpo|^+k5~b<;B@yx<%fX5o z>NkLSxe_eVt0;j?f;^dL9OwwK$2yh}fs@{tv$q~ui5K3sS3U)wPVpM+4R>r-WyIws zR1)pLCD=uyxij)=&8Y7qVt^V#Y!{_X7b$Mtd4LA5l|8Z609O@iTtu)JP(Vp+!F$_8 z`YeHA*=C|Ryo>kmj@X3<*1Rp!Lb3y zv?)i`7$xQevjslUNCfQuE`MNyETr3jhrOYDS~sUf&o2D{}k+BcHLL! zGxdnwrlr;q5)?ss-{9I3>E_k410ApI{n4Iy{7Og2-m(%Rkqidd^Xd2)L2H8>=uqg%035A_S& zCn9lkSY~if%AuS#*sKY)+s4Tl_Wb2@hb-*=@b+7MwXZ{t?Oq_z0^VF%Qb!C0d)ZY> zq0`Y3Ei|Hv1ZDtW24MvlI zUjhXK4h_#bHXGYM~#uu9PM$?0T4v-n=Cy0qSPJ8xy_U+9sCMkX& zE>h{Ja+;s$E118}pYk}zT7AVnEZ=kIt2O>?I(+MuQ}68PQu52&j5IU-1Y*lEZs`;LU84BMmP5Y}fl~ zfW#c?ySv7r?Xx{8Uvp;Ex%HQ-4jOF-G1)|aT*wPsS>F%THfxZ|RqsA@a+nzXc2U1i zzCrWT37SD=ZJTP@y`_|?JE`^9*EBBKD{lc<#MTtEJ+lk(mRPdxS6ZZUi zHK84LHnp4gVA(w}u7`1Q@%9i&tML})VQ1#V8sNjE#FIQ<3}r|pn&FJbr(fW(J$ z{52X;Vdc2CT{1cEP-oL_wke_xNrZuiK6Jfj?-FYbx6ja<7p&kz?Jrd+S}NZDq&Hd< z-}Qvb3uX6OT8(q)aSnfEwDx4dR~Y8%f3?|&y&ND7PJ8u|rAx58ckIRUzMyWo$9(AW zuN@+dmt=*A2w6KE5zYw)p4^*C%_6nW*%b=aZZ7(4q;D4aR!#IaeftbWrsPk`h_6IH z{?<(oU1EyQum@YjjE0kVIb?9;e8BQn#F?`222H|Hvf4@)7gwVuAcK=OR7exWaHR=U zlX>S0?aZ?aY;b)(V^^VSmFq+qq8^=`c|^=iIYK7W!x#?F)k4ZLlHSj8nzcqv4RdWfAJ#gJ1ww z+{-T4HbA_yYBs+n28*KNFjB>3LzxYg)Gm*`%8u^Mx;_`e=`qbR^?7Lds!hcWmHlrPeYj@*`Wd(AZN0%c5T)LS3!$(le5@rt;q zHVwATTpOUdz(RwG&ng{CcVM!Lo4Xt4c`BHl;)3Ii0898Ye-S>&hT&*{m#}AQ)(f1{ zV%&E91x&{Il}!pO>mRmu5=zdr~A-k7;i_bUc4Fy?tM zdIJe!*LYEaMi96SbV85Vc*$z6)~asxnwoYVSQt;zz)U}hbH&z?aWR>3&z!qt)L<}5{?8{LNRwY0{?g$`&O-(;Tb9wA3`03zkYZ?$_ zG~+Viv45~5fI!&hEXn-McO4eXnYMd^huPg^I?9UTzglFbRs-CX& zlSPa7tp7w;m4uuMZsgq_k2Pk$zrPJd5iUPwypf4bEk-hqAumzy##c>5bzlLwWDE6-=nNxi4N?V4h=x1X|kj;~y4+edp#sBYvCc_A$Z>lFsoHJ8jbC z76=^^99VJW`1!kUOGv&SC@%RKeHD*qrc*t?!{rDrpOz}#8u~2feXE#P3?2uij+q+j z=Qo(`v+Zd`Jtdd#+Oc%sgLh?rd{0t7xxZnVWrv^lvYvn?lyMyQSxodKgAUzj?+>64 z-K-uF9=UMa%4(54kU+jl|0CFrJB&(5Qs&fme}@mm|Gd>Q&4u!tXPd_FjCEn6a&4dW zo-7z&4J;iXwV^?8_D*B0^Q2*S_hA&Bt9Iqwi+c*XPTA8E-hcmW?)vSs)TLWYRlvh?&h$m>j(>J&!@tA7bT|H zfE~S{-8+eDo{oFqBLe!suu)W`z?lU83I(hni)}PSaT3`Yn@}m9K#pDE&11xr$`}aW zfIl(@s0k!RHF%StFaIJ79GJS&N$qmS!b-s8e~ey&vw>&vTGuCKDMdwaT!WjYR<&l?|f$5;TmGB`KxK5R{(2=m$-8m=s6?Rtk-F(WLY7^-W&n5NaLkBxh z+t3KHS5F>0^WRsyrwTbq)(4d&(^v2p7u(#@I~%b^P%DA!!EOp({t1~>d$~eWD8P^B zq?LZylOTB0m|+O>g@P$+tT-8Ri|+`W*N!*x`--WlK%O|7HgklI;C8Rcuv@r-nVraL|vY3)EB4w zu-FWHAi1`UdzxdKGL+Hi(YY(V-|aE__FfY+H;iw9FU_+cp3uu1jSxvmXU;o;<6y<( z8Rv6prOwNV!i$(uTfRUkP9tQGEI2|#7PBcHL{}cP94~4jzaoZtqMwGX;m@ATmo3c; zZx9X4|99xBxCIHu?=NQ*7jD&UnqtJl$0B=@<>bzmPjAYm#q7zW1TXtQ+-Qjjzt5iv=eq#eVtoan>@<>3s&qxjDuvge}Stmun%2Pi*)}4?fg#0o~xZ+U?H>g zh0m{p*2pL!tl4uiP2 zZVICiH8f7I+*G))_yx_AP1R^GY7R6S65h2L4aM%Wz_mFy$=Qr2EA?fKl;%x&IJkjs zg)D=GgLArEgH&b-c^U-Qzh-&GWg;nBRhf+!r5hYL3eQ*?aeB!rnS%lqT2f>?qCN?n zRT4H-4iaO;3kh(fQimB=!I_vR^l3^_$f3MW{4`Utf78-gGy=Q!G_9zW zs8R(u_l~CHFTUZw$?nDzHp!f5b#aQW z6LhO8UY$M}HWWpcIRy-cY_V$g&dMJzJ3a~o-ZWQwv#K1{g*Qz}VUSh45Wcb2eMgym zQ*xa0{9UT;i{JUNtN4j3B``oErlraR=7hTObC&Tzdx+P+ScGa3bI3wgpLd8Dv#EBG z6KW}Fb_WNIZyz7k1Ks*;EvFpu$(qt8MvX!Y9MI8R!KE*8xW_-FX0cT$UL&72BSvMH z3FmLjGBEX2LMoNNNkXSuX$?L}j*taZyWEz@QPw9J5Q+<`#EVPGq6VtfuJFR_xH!zF z!bo1;Y$B}hXe(PQldXO}2UT!ox_K9J!0%>Ri7&4EIBxAbyc;D`Lc~pB0;#-sACb`U zjHkjcINHw+$gC6;Bfga>m0v*J#~y7!L^8m0#IsA-fP9rrKv_6AZN_=Hy>KfyFBeka zMc&JZ3TAjVPQZWySru>Cr`49c5-P^z{@YC9Epo4YhEnMVv+xGQF>I_vl@X-Ul=@COfNdu_gwz6yGmK*xrLZ|*S4d0QDNaPyE{R9)%ZmqpEk6)GEv#(S!Gy0udM zxW1A%lBAJ*w1Edc#i{8MBUaWv%%-bmsHj&VZpwRqhs{IxPgz8tdQz>-X!$I!h%28I zVt%nKbO$h!^A^mH*&E3_;+v ze^axei46YuBAeBbBybfg&3c|Lj|IRVKqPwjXzpq=R4h%o_|pb;u;FDWA3*#kr^}$< z_vi*^YT&#^9;(2n>rq4dCM33*CwyM%iqP(Br|^nuRCBx(KO@xQ;+mn_ufvm`XOh_%37MR7$<-Q)iRPG{ zxJu<}LQ*=+I?Z9*B{@gY5-to8uJ2Rt&-?TH-M-&HcBxB-*Is)(?vMN9e!oAF^z6Re z7eJ_E;lG;@FCPKtp^!+THl=+(q(Q2I#*qQmg1tav7@%O+k4#U{iuJ23ePQ>_*ED_% zxs1zgEp5ro=5^(#yT${cs1KOg8uH7iR7 zlMH3rYjUQfQ$MsEX`7=@QeCP^`Wy&yd0>@MOr4!wlFW-kQU{L%N!L*z|IUB&)!$8A zBFgMv3RrO;@9x-Vb^`6sB|Tc*vdiKwLCCSXo6`U1?{-}|%hTTOKsi;n3;dEeZwwH0 zt`SlAPOo*XL>CI$kDKFRwfP%W5||X)>}yZ|M+?zZEB&~1u0pYF%f2YbMit*fNDVIdAvYn*QElU}eZx3#`VL8<-;8@-lu zpd`HHdAtMrBu-)oSFmb&Xq1ewN}R9Wrt?zAt<;X(2il4J#m1E(Ux)OFG0uMX!@97) z5aBOjm#lJ9pXD1#SDiE{1I6`pzzG4JtQmau99T;~r}-I`_QJFah|ng4>#5j2f=p)_ zOcb^w)$MiGO_KV}FF9wb7SS@)rHupS_anhUfH*gA3G}UBvZb1Y;RboEa{%`nWC-R|JRet+~M+4q0UPdIEn~4HttL2mIWHQ z3y^oIDxptagJv4f3y1~hXib6s*KnNGDBPlNJL12X`&J7^l_W1Aro(b%BKoZpc|h9FlA)2y%9U>u4%$x~NW+XE=Y!8xR17I* zV80?wD+@_&*0i&{0BYCo8kMD=zKa)AgCM_dF)y5}@Jv?ugxc8I9awgxD|c^Cnkmb? zi_?<~@3sfR?EVSQsg}Urz|n#*buZQU+$los%*cN8>yH_Ur>>-LeTqFYTYaGxeI2e~ zjXo1sec|Rf=95Ih(c1R@QezyYc=ATmsx!jn;r0*%+*Q$DJnTS-&(bo``#$_Z_tC|983GO*TyO<|@6 z)2Q|Qd02^j3O}V-G15~QIoArVr^l!K?haFz$m4H>$gg7@=vhr($7*2TA!hV-yYRF| ztwAzr;H0Qym_0_OTw?bPfL3J_@-3uq}D9u0(-aBW#^Os5JH|aSpB;tm_J>crH>Ku#PMr1u{N&%1MHT2VTafj!m zCdBTne28ZCNWM_vsbo1|&4k#q$DisNV-E@M0KWX@kq&&?wsh|`p7)>ulPqYnO5rcT zp(W%tH$Ammn_}li%h5;(_y!2TVFA{_O2r*$fYxy5GU5o$_PZFWWC<52-mEwPN;fYG z;0EqCQ-R8Uv-W6l_6->!MrZxRa@7F%ee3j9#8s%qDKxS|&$gVp4u+pFeGC*xY@;H9 z6PehXj#`gdrAlf&L6HaIp>nMCxB&1Dg(R2i_y9#+P_K3Vg*fm)!T0Ka%m*w&$iI+$ z?_4S(sxAuQg?O=qgqVAV5pVV3T!NCUS?$v<)?816i)}FMtHcNsz_K zVB6zH1cyeFwK)Nrz2KB7H^*di<+RO}%qWM#XkD%Z?2^{@N&k7U0XGb^F1ZVt+k-Vm z*#gr&hhEr-^GaUFC~Xf8|8scL+5!q}iF1;~9oAY}NvEz>wW5($&P#eeA5d)MPZ65T zkST!|?+(d!UO0j}>YLG3Twijk^kE^*{q#P%o{IX7L(UhFX zOJU$OFHOv|h&+4>Uu#6y-Bq4Jc5tR{7MDFADE>r`WkPK4oOPlG9`g@LwJ4@{e(R+4 z9x&uN)6U+M^XvwI2P15JkakMXQLIOK4d~mH{RhB7&9qoc1mwAglYXvJjvb>)vp z#VN=Z_l5i42*-9N%UWqiblOf<2~3mXTs$zoA=+kF=%?oA|Apus9@80<`Tul-KM&e8 zwbSopL8A`)GbJbT_nokF6{llSFMtlW=ywO%!6Z6ZU}&!UV<{H9CdU=ox;Gg$^3I*f z&q3U70-8a)sF!X2?(RDer3M|p88}&S=WA+wnx0E5$>ps3a-<(1lYA7*52952MvMKY ze1SCyfp~l#IQDl^%_d`Ss3TwTErkJl=Ix)jAxC`$texfvI2T6|B#cojL`T^yEw)`9N%{yd3!|i)1}r9PxlEg zRT(0_B%B^K#f12a^P@#&^3-iz*Nd(X+a?(hT=_Fz+y@FHH9Kr=^R8c&>^E_{BRz2X4)jIdC?v{!&fx?74E!^pIfPhCa1I zh3v=DIR)e0IKEbatxMJWd_WF!sb4 z^%3T2_VNm#}LCFR;dnC%TPyXtbJuDgV zdE54xr0^T}M+Lw1dP-2i>8IKfIWws})eo4qt4P6F;~h(#AIpP^zg6|3g0H+X;wPGR zae6&_iZfqc00;Qate!~Rza4g}C^)>szn}HSsK8_?<=iG0Yt+WXFd5cVy?4K*l9I{^ zso<0_`~HW)dc<|&jL5B|91E8o zw8aCE`6XCS;bW550xR4>;F?j|P+@6Rqn~6{w{s_yQcN^a1UsyMcpGPOlH?VZ9`%|T zemxexO^t2D86j5T<9X#mBG1xMFL;khLkH^~C^hh1J%vO$Tk!zx;pR67XVxe z)0yxCA}es@I+3GJ1J%%$27G2~A9Jy48C{ue%2Y8hm!Ty}oqU__l|tT$@ogjw!x$%2}C zRE26)Whwt}AgTh*;QwXh1?SYv6gOOwBa#hPxfWp2s z1b_ZJ|Cwu8U{MhRKTIbyXpT$qQM`@fT%12j8gaKy$Hm$^hrbneY5R%c{BN<|;OiF> zL21G!NSI)6(0abI;GQd=u?bct=L0)x52Cwb2B=mz$p}QtC2slkw0rx3xM4e-!)7Za zPfDYVO7I=hmavg`OtQ@&$9as4c>K#$;AQCbR;O5OEI3gT`(|d^_Y5T?LxySz#i%S2 z{Ef$u|3db<1x2_#g{k@uNVDJ3V%``z09sQrJ&sa=4ajSH=%>F2Ac4WsE423-%}+&F zu*ZNJp!iEd0{gu%DA~-Pvn|AQFUKz0ADfpya3!r(X9-vTQ`r$@8`?+GpjpWnO6tsB zQ{7{OjzFzF;id!EYWpaDL))X?E9M`lCrg{^DN?+x&h%4G%so0w8te65rHq7~V1tWj zM@H~x&?CM;1svp7087KdfsN0^PWdWTOUe&V+iVb4ha53J$D~9TY2c$4lim73~fFyAo&n<#usiLF!5Dq2P~W5WOoj zV)<}h+UBy-X5yh;C9_ipL;fM2uvdgZY&HOV&b_~d>@WxWy4*te<-z>u)n^B1E~1gN z#i4W>s_8H7fdzJNn{@^X+HyiGQO@SHIgChP**U^BIo}e_14_~EA7i2(8Ob@h&IDx_ z%C~^+ZhD$9z0>qPb(qQn{h5|ig&88xw};O99hF{Ra4fgKCWKXn$pY>;ZT7okT6H5L zno51!fB8=-3ki)7ksEo5B6^_eqlg`Z&k8u}`AUal>C(XSGVl8XX|;}x(b27ii4(8> z{7~CbA}PoXp7lCx{t7VGkz2x-NrT|*Q>DvxdUk|0{Iq|=Kf-r&EDAS7JbQ?u^@>Gd zR~D%^%nxU`=H(<4p}kMqi0w5y4Q5eln&v5~Sk0YQhD<1%1J0iPd#$0MNU`XuqvcVi z)KqFEA!EY-$iI-sO{WPRhj;Xjd%7U5nAhyR0T!s|6d%yTV0@r#(Tgr|fj?B=6x%~L z#**@L8Ke1c-N43t$7mjN$NX~jg|~ArmjUCnwGdXEsh<_*H+9OK|n$sN&ap)ygtI#=4A(|bH;9?L&~w_FM= zR_Tww{Zo`IB^`RHu-0G6PfGXiN{d2I%^7j&W0(fZP7_hr(B`x1jAE(UjQ+ncXQ@O85Ar`P?t zV7Q7shj0dEZ%!1p=lO`jhn6Mrq6n-M{oIBE8+C%;_kKmhFZ3Qgak}(QuW``Xc8h-@ zZ`#NF3;uXNBeHz`%KLKh>M`Xd>8seEMq+QW3es=h=OLqX*@t(tt|li|TcAidndj4S zKY?XCXV)LuglQC-4)7nP#ph z?2*B$)86&Wd^yYT^G4m=<>72r7rWPMTO$Y?SYZ9?L<}FaK04|V8k>qtScfqWEG{HL)TrJ{N54{n)_D0(E}s`~8vLd126Rh&?{*dPpvR zdVc3t0=NH3Dt66C@V^e(wLhCF#&*#&hcof4fs5`#9o9S*O^l!L4H)5%R0AVe(>Nx# zmAyzEF7^onZW;>aK~dW2cs36#xMS`yij%7awceaJfJeSz+<0(b!Y^!Vz!pJ`KRcRNQf2bGBWP0a#{hZ?7UQk!nzAkjV7(Or5Iu zf-^CZPjz*;Ta1b-lx?*A`tTd;Y1bYmBPw+DU4ZK>`=!W^2pJbZ-SlH8sjDN6=VNQ__H~0x0+U#*NZPcW(3FU_T(^Dnx|>M zY2adjxbYBi&jA{oL+N&$MN1ZOU)Qe*BvW@QDnXZ`0A(jBofRbxok+Ms9A*@gwRiNv=$q{a#r(Xn;R-d~-+(yN@Da z1}Cr`zEV6oj^dWYVWaH+9G1ex=ebnNtkByPz~LR@k~`*ijna0O1OvN3RiD^*uoOm9 zsxe1{jo0aM(z9+OF0Dzzqj$^+KX^S-SPwK$-BYNI4?N+l!8$W1!VauoGl^uOxv{g; zZ>CpV{>kY4aHD4HpZR$Z&dGvHDrRN(?kUn&VgEw*JZVB{0*0i1!Pn)Kiwq(-gD{l6 zxul4k`<+VYvT{_jRJ_26JapN^31DdUo`WGlC*VEFh}-Oc;2WCZ{kS5GqFMe|x$x8( z@z_Ac%+Yg^=P1|SIq+g?Es010IJ_P^Y}hnFmr%TJFbe+Wj zjD8BncWf^P6+$g;&$bOBUM(PgQn4w|>7!Sx4L!C&!Sc@xC~>8@7(K#2oL+Bl{t_-; z5v(PymC1*HkLUC~z2v)1!Kwl;EsLlh_x#W|29Wb-1jJYY$ouq~f=%3;F>9&%m zZQHge9-Ua-x2y8IW0EALEn6CXs|4*ZAMbPRC3mIl7uTsR;*~PjV*4fhZR@)~59d&b zp_PL>LJwYbE!YuzqVxer~co~52sbND@M&)l<><-pD_nmL z>)hFuf%@H9UU@y=nE+uUn^#C~Cpi%F)H7nj197a6q736rb68`A*LW7cqyTFoSWF+$n${2j@ZJbf2!!f?pA}K;8jb5J z$1p=|ev8Nuc4f2g_y;Ag8ZL21in#?bX~-|8LYjOnWOEncA> zuqbvi+-8`$Oaf{_C(t&acb=0J6{p$$g=M29loo+$SQ-D$R=o{T zV;K{^q4hGq5wa8E*r@%)IL&ga7WeABLJsVoSUGpa0lWZ+*ck4h>PSI|Y zb|A(#k`||&87;WqYn-j2yp%bP$$JZteI*_8>-%_-D&7?}bkWyp%U|ymn4*$+(;6u4 z5>gN4`hxzTdC>Tm7|4cx-Ny4Jq|S%-)^ru`f9W1 z^&J|YFlSPV$4WQvteYcw zQgz&$zHuP`=CZ|Q=#m($k?VVFEZ@$q0_gLZ2YkLQYu!-qP07-5(fj^yQm_MaRKUCx zVj(nI?63FBeI)(_T3*hpP{XIZ#ozpRl<{D*k;AU`6MjeALz!nso|q#6RWu?_*O>Vx zL*@1&zb3RQIa`GbOiYi?BNC}0#jlZ zeHO!{?3(gvnX3qGP;-9j^-`M}hL&}uYtJfKe!wN}8OS{FnBP*oHhzZyK>rATw+@O< z{e<5gnx%Z@QU<*GQSB;<^#+!9DPv~7`sc7G$l;q0X^^`Q^W%Iva{4394m4M%krz1J zOcn=XN$mIb>?>2!Q&ptmF#K8CS(cGh!&lfv#dJ^ z+wy}x>z$vD`)|6?ObLi`W&D{1?r~@cxB_jFTj+Zakfdra%H)k>TMQk5z5$rP?B_Tl zg*DIb+QWEM&!asuYLCK}qx4vJjehs#YOtClfcF7Byq&NpUM?F=)6a7>Ah7gvv?EiC z;4LRm;N2iiTHuoRKFe)Qy92iT#vVW2amx2bse9}MZlrD;7FH&0^5;NoOS`hUV75rx zl*d-c-5s!t&KWM}Q*nH1!1nS?o%t2uVTNX+mO7tKVc#@0qjyAuZ5WDm575WuoWS$u zCm+68MW&MjPG20%wz8a-@aoL$TP^++QA!do1m4z9aLJp`ZT37 zCjgn+4og@qC|E7Y>X581~-$n4@o0U9E62`%+;Pn6;&8lfvMJrl;G zMM2g@fQ2J9z$Cnv7V`aBIVeTD(IEKfuLX8BEMIzx*>W8$0Xwn!up1TbU_%M@fZc#; zz}a8k3qeH-y9obqr04q8r7)yww)DQSKb7>w|BR&9<)x{(ko?K``H{1i@cSk>6`z_q zDcMh1X8AF45h98otdLh|2$YBGTs)M{#$u%@l?Bh9rSP-p-|;g*4B$FA2F$Qt$|FpF zYVfQK?Khb1l=(Zkk;QafsIxx@Kyv7rbTrkbsT*&nbJO}*KqTN&D4AydZUvUa3T62c zK7Rt!vD870fI$Y_TkR*@0~~W(v)QpyYQXywS29o;M3azdpAeOUc=||LGD#Pm0&n>0 z=^ECK#ik5$>|m2#3|ucVknR+oj~v$iFvq>Bg-8p#nk2Tn_lkYk=?_yFue``0X*hjj zy@P#=484;|=_*MHSFBh)cN^_9M9}GARXackh~9_V*eD1rfXD?BrZuT4l0N`C&}pNF z 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%0D!1>sYO-RxP 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

d1N-ntn^;7%|NV_!%6%;OD=iXzIAE62-o$F(_g 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 z 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%0DZWrqe)>*2HFo^#M31E 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

jmDBPQnTJr_ zv}g#Qxn&GMBs5Jw8J6ohWIY!Aj3Tq>Ee0}agF{z&$RoR2y5KHvxUVPk?4|Ebyreez z0aW*ACk;+w{TVrCmS^?=M|L^ws&r^lDAqwIUm;v61Hm5_KGC+-!D7B@dv4BsN3_Xx zW*nG%wYWX!qkH6K9ya;h-43o`;@m${qjBzW4*v~^&vfo#C91v5BZnPvocaq_F20YE zprKQJZ3izgD>y`N2|e(wg5^eB_>%8*=upq2?5}V+fPJ{aON}>rCVvoqVa4reT!l_n zBA`9s#ObP3tj5_Yw6KTWAB&$3ie|?}Br?UD3BF-&n`8%OnAROm+P^(tQpEN6!5NWaE}WZ`8*#VtFISJc(FSA{@QqwM6Ez$G94mwVef`m!@0_f8esjwEcCDcZA+5t}$+g zB4^`(>N!QV*4+eCnc1K?_>U;pwPcvCEu_U8$EWBmPl=7*n;tWe?hPJDrDDB_C{CUh z#=pfb944S)!wiJ{vO<3G3*d<=JH0g9ag(*ay@D7Xx^wX zPau-m= zK3jwgUgWsuE}|>;aXh%s*=8biA`pIBT3CD&f_HaLeyWBMzAyQbWM_ve+& zwqX2Pl=Ed$zV?afIe&q?T9a@o0BEdk=K@L7kP&05RHQlzeH-?(tC#is0&&ieyoVw! zZKr@Zw%fpx-$ka~dJD$o=V1O`Hg;{h2$eY-gM2=&?NI0^usYAi=9+CPUR;>f-ZBGa z9p{0IU1)WXW(`;6ZDyGNJH?Cv1{ZtqCo@OV_*C5N8cX6n)cI8EzK7rzcWz&cqsGp zpccG!{Ia%f7y{10BL7V&f-IXmOGqq|{F-pxo7Z(I3t5TZc&1m~$WeEHgzz-|RJ<5D z0h6hb5bXkRHIg_Z?~@!Ae{i|~x!7JYZfK|Z`6W~`R-n(pFj7u&D9)6@;KY)uju71^ zhF+}|CnoOCduhn|7+=ov<{4vNe{g`UrMF1m#iRVI2^N#fY{s0fN;jN8pGv8O7WC)a zAjG{rG4ETx2beLK@itx4Z|kWT-zXN1G3qjk2mWxF?kHLwz1f9*O(SqpF*3yh6pAGT z{*GYU8LFKt4jo;6GsfEU&F1F3p_*p;aXY71X!|?vE^7SZ7kJi@-kS6O1B*HcYTE^N Q`Tzg`07*qoM6N<$g4As0V*mgE literal 0 HcmV?d00001 diff --git a/src/main/ui/static/css/img/rp_logo.png b/src/main/ui/static/css/img/rp_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..4a26a9647ce1418ae89082b8d34e16d72e51ebe3 GIT binary patch literal 12043 zcmV+mFZ9rfP)PyO#Ysd#RCodHeFuP5#r5}jWqYSrK|qQH6ctp&h6?r$_7W3gG-@;^Vk34jni#=< z>``NjV(*}0ZwT1HLS3ZF!Y!+XLs#nRCvZncL2snLBsZ zBc0HB27bk7AQFj8#o^rwyx8OM%xuY_ZvXbMkrE0{6mMi;B<#s;iH#PNsY8A1B;tK< z&qH?mXqIPIs0B7+ij15c$tkbed??Pzu0HYh_IM&`F$!BD6PC!9aKu~emB{Sk6TAJ; z+A20pnKHs#P;|Dppm4mT`MQYDm)=^NDV2{z!jVw0Hc}T@8Q!$<`K}_fJdZtAol;p_ zY3;B+!$M)t8Jb--o7H}P<7 zF=U-&=NZ^$XP`AsfAH+VJBK_n6E+UmW(R(i!RF8Tv7RtNLBS8BH^%CmG|JxL?Spr z+Kqwc*%GF95f?>62{-v)!MH7knR+G&)i;6H!1;fjda+K;&NI;VXP~7{f57a)hlwXL z3;rXOpr`E{?zHGZ%pdVwv2x<_+nu6B`R!iaQj`}A&8=t%@0v)jy=3WLPk4A?+MiyV zP>}MdD{|6FzD;TA^CC5MqobY}4R*NrCWnx$PcWUhRXEn7?oXH!oc27pLBKq{`}4D& zv^3)X{xrD%u_B=t;%l^z#N+pl^2e#_FLC&(uxay1;Nf`S?ne4&IDd8oo#1i?aE|(e zJ-`r!L4S^O*6QKBVY8EL#u*qgcgRi+!EncM_-s4e3#Ll`zWtmb#VZe8HY=6GIpE!h ze^W*2?D7uc@Y&`7=6V)yX}Igu56VlP+^^t&sT@aXX702|WyNR}#VZeN#j5BBQ5>#U zr7o5rR+_fcR@(TnvvAoF%YyCInPAFG4IXGsIe9#ddLW_X;M?j*BOXsi+C!U8I_dpx zvu3SzX+e~QzAiniE2fRyJdr%00eI$(9P5qEQ-%Ds|-GjX{YBG@8k(2YFx>0ev=p4QgxN( zXtme0Qp??=H?&+kE}2DJt{e^$hN-Dtr*fDu6m^`M)?S86$tJ#UIJ66i8n1xyk4(D+9v9}PBq`>^To)uu9mx{v=OPRlaezgOW>=8(WZIf zkaK_!0Ly@{MJ0{I^DvkYpqdRF2K*!NJD>>%BlEDy=%i!LfW9Y9rW?8$Zzh2C`FbnkXbnqr-jrmjv+nmkjNWpp{6DjkIC(bS;Bq3~hJj>D8U?70`_>bw#T zhZTlGA=stuM$|IRW1h6hH+fpmOeyzdW=iJ%2b$FjBYm!H_^r)ll<$Oc80rP)D?p!9 zXy^GNmoIUj295+?4!i|uy>Jnk3>$ONbKD1BC$!)U;QT$0VuPAdl(%^~ki*V*fiL0w zmmuwgL}wrrJS360Bgk+su#Jx=YRiCU%XX`52o@#MNkulSz%ReuAxpeQ81kQ`wX%3i z>t}2?)P_$$8!k)K4*&2W`v$)JMyb#N(^;z&9GnLg{W4YHNO8Xl*4#uRd!>)kTHkW$ zc4t9*wk}fzc6k`EveW_UQ^661vQbl;uM|@Jp~I)6XY@|T%!ph$XuBS^Ps>c2=C!U# ztB777yQ2-NW3cUN5uN_wI+Gyn0@)r34_H5<{R<>X=nw zdSA(yDj9Oh$wy1@Z31|~uUJVZz1hFIP1E%*gg zh#Q?#m2C#OzFf)lWyt10sd5l)VmJ~>+QwYJ^r{N9No`xrNL7QRB{lBzr%S~0sct@< zlBjc1M5B{e9Ref!sD`FZdvN1cHriikKdJ5N)N-PhGiAH2{-v?Lq{pHaGHb+x)tekp z;8n0S)q|AwiFDvh32wC3G3C0fE~oR<38&RDi2@^i`;enNH-hW#xwbam^iFrkdK(4# z@@OjXTHxtGUB{82JDomG!Zrjh-J1=^zc+3SPXBa58=Zj+Z@NtAK0)^FI!^X3+DrOm z^^pv(6(tA5K`9B8$WJw^mZaKu1os7DTr+o`WomY@^1Q`>;Wu)SBj`fdNLilp)r z&MOrudDCtcoN_9KTA`Dd(=Fy^pwmwZI8p1NG&+$YPUJC=KLgZX$XyDW?+fMw^$LRV zpnsKsO}Qh$;yURwn~IWiaIB4EQg?L(FnUnzuJCK(=J;~t z?Cs8!bGAEMx@EX8eDiz#(mS)a!m(Y($koHHl+R1&$&E{HmPHkdeod#NjgN(nS)0^! zoX1S*X`RMm(c*YKtxm!&@6cC|uja8zO-BuA+s^u(dEMSPX>)stIA&VPPRZ$~VjK_o zOK=7cLH7@~KHmcj0rHO4PQM5`e(1Ws1%ixoe8&L~2eK@ugsA%k@FJ93iPRNPb{GU- zIfNgh%)t(xYZm1>0y)hgJQn3=J9sJ!{R2Q858NNv7uXe;5K!iiu=jrnl~NampvrTU z=p9Kv$j1Yx0eL-4I34Zz2io(s$#l}t;War4cr=jbm?Jvfv4eC41_^yk3G5UiPrf;% zUyl4vXoKth;3$7H@|>PB;rA%}kjZFodUU~PxoekyO8@Ns&90ix|K+hS$p6+pEjRsm zi`0Y?UCL&f*WqoPVgqx1^347PaiopxoV2D6?e;x#<)%>b6|Jvh?*F>4sv3>8l(IZE zd@`LbJh1IFaZklW?mT2GZr5$5w&}p9qG|vZ*&M=p9oC&kq*ky-i1JOdXe7b zS>QHd>*q|&1;U=+GYYiG)!UI!p#> zQfvNiJ4gD?X*AQx>Be)`|6(8=HX)(Iv{Z1SB5Ly{MuZx8#fyQAHZ@e^;deUxfe^j~ zjO)f3LOKsS@0Q#Nrs?#la|tlnG0>qn&&5pC6%&D?{_~)BH_(h$k?q)kdvuo*wqWG zWzM?#rpjA`qoe#3Y&)GcyprYQ?MUBp;+(;^dIddb&{b%MZ~A0Q)2^HzjbNwF@|H09 zuW3KIcH3(>9bHdUF&W4RQA1xifhjr@C*{-z@77U<{9VwD^7k`%%M6+w1*Zx=0y5H0 z2Fta>M>*bwj9Qn1XZOph_zUs$$;MZ$lqh~ zeqr=mXm0?RZnS%VK`Ro+Sp?#J;1H**wRv2Fd9eR6?3kmZy}%m_+2?NdA>(t$AjAY- z^BE?iJ?VZ~{p9aEO>Z-Yzp{FzJh18^d2Zcv?Rgl#kh*aBwUb4Qc{AAAChb=;2$@=- zDLYj%(6#}^HT5-Z%b8He&PHk5npK5XvT`Z?`qxy7r+-)aKg+gCVaWP#v>)~B9s;SZ z*W|H6#nxWO1JD1Op`CI0<&UlKYx6AR#PDM^P&{%j_J|ELq7~Rz`z64kM=i0C= z+}sdbsHHh{?`9;PdEkEd%G8QmxSA%seuLD1y;!o3o+O@h@Rf&-Na*K{Qvb;psxa>H znA-h)dP(L%`$^qLpGmOzrx=;er0+OP(svpz)z80*O^>X{nr7&O({|ZO(s$iOYF~O? zLgf`H-}q76GwJrW9mK!dEpHQ}Fiw}O06OPfA2Q6I1Df;WPN)UrX5bsZZ-GIFQ+fbA zI())*zz2bQF=GSkxE`3V8AyMJ3x7TAFoJi&B@PDf5Oy3U{0kYkbM+4R*8snQZBC0t z0rhpLkpbGnDI3$_v#lG=a|@kgz&n%z2UH+`CGchFuW`uO5pM?1?A)CyW}bKaO5pYe z^F-LV9JbdQJWV>U5BYa$VSA@L5FRG&gr9N@UsdyedB|}_7)aMxUxzz_SjYY zI}DQ2b1xQeUanxfV+n8CESU$67yqy!vSsQG5?K6$~w`;N#8WV7wuG3>NrBlejP8jEuohmz04ZN-l6t2 z4qm%ukMDD=YhAO}J}bxcK3dYTR^JWk!}apwx|dXBzr2RGxdq4dK31+AI#qgPbk{7I z*yB*?mflr11=yEvU3hzaK#D&MwYZYww#$%{24uvPe`9TZOun@lM%cb?T_t^&5h|L` z*k@0vyysz+r)^&!#xowt9KW|z+;yLL&;bxaC7Z>Un=9S|JN|*z^*Vy$?3bOY|oyJHQ!59_NrV`xflnt&Ckrtix6a+o8E_HgtQY;TW^xlZF8qzu&3;$a*RXhrR6l7yCfF+{YvO^Dd+uq{@a=c9<(gY1Tpv(h&Ds_GA`++5 zr*obS{0lHMg(KjLT1IR~0#C5@2O^yUoDMt*$SIX6II%w?)o`FDjFj`V9~=323AQ&wfSugI!f~+YR{a6!8!J=skr5CRZZH?BgBts znz}h3NNCw=@onE!$G&UB!5`YdtDo&f3r-`kQ&V)@~ z4>Rz%1bOB3k#c0>Jf8nUo7>*2prTYEJI)JSF5$d&$!%(@g=@Z_=4x(A-^p^t4u6p@ z>0MmqCX<~*tDteQhpU-xnO+&!BTa_n`K4bDc6r1d5kyp76^zL0>X7^dT!yHfX*@V} zd%B87Kyi6)m3d1w%34L)>-~N9+FpP6wH&eY|EbI~4L9d1hC+@Y;lh`nmGzIT+)pPy_$q&LPOm1zxC`c1mw@pM%%# z*)_FmT%9&wz@CMz817j1k0xyzl|NE$z*Nqtf{{&R@faKGHpCOPir){bb*>qiBZu~Z zgXG&DjIpDk=9R#L zuOzs}I=30)$4J4Y=Sz4?g_QsOZoIhN46l+d-l9SYf4)%C@RGQG{x?!^?PXZ8Gh9Ne z){1|~Ky`S*)oWD`!c|wzb^N~GebCWxV2fe-48DWNlTE)pQ}Bn^70>M_TvCGeHQp2H zdyJ7Dk3NMFOTBD7^JHmQ^i52$oRd$NqHC|0vg@wKsO5h#GCKVfE`3ZHXJ%JCs0V^M z9jKi?b*2JeCE)^%t#1_W3i7{=*|^jQNKA)M#Z7P`Zg(5!e@&;)V`Vh?JbI-*RGMG>u*hHq56ecQuXLVQJuo8{wAJ` zOewwQ3P~TitHP)dMCO>ilsp4}rAyM%r3U3Awbu1XCDNY-8&{YHUFfxVAh{0w3&{4g z<>Qdw7yOT0^q0BtxaDu$eR&LhzCUn+n?3404=e@_1Zp@F1jdIkz$t@!VmOVNB_K_w z&%6ILAm^kz3fzx|Fxnp#r$Goy)E~IH4cEhY?79e#(+Q{InoLI-%ZoXst<1x&+s9gm z!R!zh)BkeewL9x|?2dVK@1tDnElMwvllxAQ$5uZsr}sZi{*1Z%f;4Ar;aW6?xf-L1 zZz{fx;k7n17}GfS?~|__b$LTX9$r=_UzRpRU%KX}d88=AE5q{rGOCMTb_4dy_BN?@ zcdXGTI^mVo0a;!dKT>t-r<%uL8^JW@=C|vM`Sg!bEF#&Hk5?3JA4wdp-@0RQ%4@R#MkkAIkAK2>$Q%@daPkd!K$xr12_u&1& zJ<{#|N0ieqIp zc#Td!SwB^YhjXQ}ko@|t`N1nXtwtzkzHR|But3}*@lG!(pPPCoLk zBMP*eA8XBkoDro4PJ;~889RLnx^ANnieCaAK*E4KV0RA6tTK4pj6^#s&>nWSdjYL+ zqtzOY0MITOs9WY@A`&1Df@kz|~TVO~$sOxh?X> z`jVI>mS$U~4ZlV%8gyaY-8N0#c=WSt%||GnR`d8*jm%aK|HF+9a^Yu{vL#@L&ki&1 zZwN#=JL4to5&bgcnEn~A9Y9nO#K2syoHi&^X0Hp#CVL9Vl(&?|SR40)2hOXz_%NUD z>(di2Tenw{dT7H2titK3Onb63RqD;kRC*COX35A9PktWwn93To6F$h=8!vr_U?tFI zwbnmt66W-=oHKw`LBZlR5<>Lv#ne&Yi?1sEA7Jc6qDTXHPXXfr$3)iw6NOxfqR6LF z_7B_f7JsHZtJo=@Y42R`~|F4 z)nPgBlM1QE%i2_6QCU!kx8q|gz60Q&O&rtB-DPkU&&Z-&eCUO>)0=|wCf4e+1K>;H z)_`g$e)RN>f5-r-nf0nvKZ~znH(Jp)6p5?A7PF>EcGAG6VBad zj6=iF5!Ajk8&URC=nQft2TnbG?5>h`$!}wt7^%a+Hq9>$3%-@=r(P1iwDolNWv51%7zLr-6=E!*$@D4OxX|*eOQ=hXT#|IZJpo z@MM&ki`rmPpX*q%$BGCThsbiRrs6Uf%1{2h>A>(CjB z{D+XyX?+I#4!8pP-y@9&L!iF{be6_bu=!)4$GwJ1ljyaz_<9&T188=T9OGXBJOOQb z1?d9dYT%b>UnNpE@IjZ?>wV~i+!QpAa_HWLe7ugALByL{zaym2Vvn2&-4Bw(dQNK7 z=7i9PWH4~=D(BC%S%B%FoRdybMGCLDMhY*Vs%TGMzM3lPyP)ZycJ1D~sZNWE zn=U?Ix=c4l1Gqlrx8Ew=A9_qOFqdCHkM1ZwxOdy}^;3~N1|>R=ezx*)NRPsUJrn5_ zI6;g^dBVN~?f%ECw2MtG&=z&a0=}m z;Eq6Eqh!Dl9PgO|7sY>}4*i_Fh_?;vFN>~_!n8u!y9;O3S`T6DF>u+pm&-?`oVRXU z=!&^|LRp+Com6TYgf;n(?wcRu@axc>C+YxbcSL~?m?eK2ktOUj-a_<02l#1;asx@L z=1myg>KGYD*xJWxnkj+&z>?yq+;YsA3Ru3{RzLz>wI-p@+M>?B$OYf$JY)K`(LFm#Hc^Sq1Ra`0Yt z;m5F09(RTMBO<9duruHc_l16SjFI@6czV3w+Z}MMoX+|S(0-KSHlaHtH`&s7#}K!$ zDL|bZF+6DUY?>pT|GMzEIjbsEC1))-N8aAZzO8jo-cT+VeEmmxX~WB{GZd$EZOFQm z1F+(zB`^SgaOLsw1z4)ucuR6U|B3HykqL9Q$gEZMf_KA7p?8*7&K#TxTlw*crKB3YC03e`_{8z1QO zt(q(yYCB7)Lyd1DRsx4t2+q;5+-UBPQ3?bec5d-_CP;P$K~t85{s?mJw?n6$DlBqQ zybCtW<9AW9SkT)Dijn?vag`bcj959wO2u~DhjxwaXc2{D<=BxUG=w$@K}Y6oaSU!9 z>iuX-M_L*ib20*vfL#6kwK2TrX1MvYC;>&D5lA zBl^o&rizA+PL(s~)2MjlH`2mtv|hZ3fTLh%!a07cMj@gNA^31lw+jWGwx7u zW>F_sGMxzi1mJr>H>dss_;aDR6zSi9$>0$vIL~>qGFx4a_P>Nm1_7r7`Nqr*{%td_ zKx&Vn-PBUzUFgta5YVpETaNlu%5Im{KSr-ASQV3Z%ajI6g)4L>eR8;*`{nOseSLEu zF*mF6dE5)`Iv<$kQ|&x3>3K!^WZybPYVDRz2> z`}a)$wpzx%Rw~ziRV~F;ZjXkx(#(|eF$z&Gnv!-P&61Zg=;LB)(v|`E4Mi|D>6FdK zQRMpioMVocEz@t3NToGV!4I~$qNm~8Z=$8bWo1%+$8^a#esc61gQzeL(Xi-SbZ8+- z+j$q&=7z=JHqoRrd=HOy@_)Nub7V0%?|iKfCAB4T+PpG31vnV$g$y~Ix8`1-Tw9U?r?ffs~wMeOV z6Lj7I$@c+W$OFW@Wq}S~WF7`SBkM6hy-Mg~&?fLjr+Ey?qHwcpi)gfs!|yB6zN?Xr z1+ruA4dgrlmr;I%l*h@hYbiSgI1ETRpZaycq=2&Hp|qPraTe_Ie0FFU*VTG-xVHYr zA8wL4C2vWAzW{sh>?VV-@mgV8kz`=!&C)=bY{ssc-&KAmi-GM8)8L3-JP7T=`uh(L zE0RaBPM2UAKjJwr|P)Gz!3o5M|uDO~;Z6OxNjLDnIYr1te!Vr20$MbmCn zD|^bWx*Q*>ecwclpPXiZ`vH&+#|c;B!DFP?EP&06P+*3m5bu;zVDDK6zs<9#pAo8d zvUHUH2GUt+K)fP@(Uw)3(V4d28Nl@!h}!h^;Jbm_fkS~NjKTH!!eq3BMqN`;?pEN% zus1WAjRA88&qRpy$7Fh1K5f`F*#Evl?pb+X^h;bV+gd4H(Y)e`E7%Fgg`Hm7d|5>x z{0~!st9b6;J72mY;x~btZ2B=a$M;!r;So6To4=`+di(uATtyebj)i_X7t1}l-rq61 z#E&}7K&DCQEjP@3qIS-QYJLOPk^x3E>SlB4qT@E3QylCh?5U0@tvilna%I`9LDNhd z0d0!(`sf*)!T7LdNZ-j=1;zJevF(Xpq)}qFUvv3E82S9txH;hSjo}xt^*EXPquf=% zlY#w#p8&ZOau(8N1Io>WO-6}-0`36(9C!!#bC9+NypBp3amEAg?Y}CXu#>;l&%i^d z;h+Sye2nYUYKNb|ew&GI`0=JTv(=V{Lg7g4{0oeKfhn0o-YS#7?wljXBbwI^IE&*l z7bpuvdQYQFl;n63bMyq| z`}hTH)XS?Gc1o1I$q&m>*)C5jh;pNqqWiG=0h^=x2b)J*N^YmjD_dqKqRPdoTNQ}& zqdT2A;wEf2ee5*aQsDFsjzz6b;kbg>CIFj{!w_*>K%CoHHHFun-x74fwmSm}qarlx zwr$lkFP1#F{BdfhR(q1ZV3*pUnrdv)Abu_T*ZGxd{+)aA?1}aCy|Ai=FL)WnSKvkL za=ZiJOWJoa{S&YqW)nj#U~H}r%Z%@9RXIPCJek;_~Vw3R8Ny}#Vzm)nW z!G5$@DID;NKh*)Ftac+B(2=~nx?alg4S2Fj!)4WLl&7U4owxG3wv$%0<&2|t42x*pcclg#{MQS6envKXYGf`u5@bs_LwXhhuw+p7=Yy&x#j2 zb!H!TBL0rRk5c>AZ2Ym8!_~e#{8+02JiZjxkSyZTdcTI07v^pt-#2tZ$2$Xj(jEiy zW$-owk0+Z`gDs!SXor>~zD?RGt~$DKC8khTw?lJUTt$ye-+jpnV*|DK=(H8$367?= zo7Ep~(T;ZRT3OHy#_#U5f1)ij)og^J{hb|HT15YU2Y)`7&<= zB1rz>kPiJoqn-ah0AFZ5Xyd&|uK;q7rZa){ptl*UJb2O1c&Z=SW(`PEF@oK%&N=jq z*-6xtI2iGE*Z^l(fq&z__RQsqw1m)W$NZ0d8JQKz;o1&dd1%m;^4p=lUu~pEhW)WbCsqwvfnE9S3RZhw*oQ z1K7wd`>-RW=Czlbw9D$cny@<=ooC?JaRw0eHEZ<_k9z34L%Y>C1n0paY~R7oLQR_A zJAT=OWeZbn*SI%IpZ=*TG&xoM_R#B<<*OgpH*5I6cFQVGrM{oXpMF9p5O|i(iauI9 zElo3R2{g55cM_@=T8!0*%~@^n`^XZ*<_Yfb<)jM?Bp-r36S=0;v7)rwr z-@%DjVSoMZ>PuX~-vaO!7D=QbfS1r=>39Ax2xa_hNi^=ZB9!ht1F) zV3bXNtfFm2H%9vwlX5Cpda82(&D5l|ys15Fq+opj##occKG1?Bi^b`r>{;?=TGMuh&=-<4qdU-pYO$1A95=lZmhKZa&S5I zc!Bwt*CV4=9K7W1=GKfa+(I88-sQCXH1DL|S-xekMVHv_knQ)>@6|p1o?y?SuCE7C_xZc0m6er^#lE)#!r^dUOKdd1jHeENk!fwVFa6WS2QF^Wm*Z}A z4tTD*H&$qmf-~!t?(wwpQ(3nfVtH8VU*YjaR_<|Z*9Gi=Vx`T`Mb0}fZNoPexcGUMb-(2b?Lg7%jrnWq^dc#-YjU{jO{OHLQsTa01ONI^0s}EI8MAuT# p+_J6J_ljpzpN#xBJc}0x{vSg1FI#+xOj-Z{002ovPDHLkV1n)JBE|p! literal 0 HcmV?d00001 diff --git a/src/main/ui/static/css/img/rp_logo1.png b/src/main/ui/static/css/img/rp_logo1.png new file mode 100644 index 0000000000000000000000000000000000000000..7efe373a891cafbf36d6e8b52c98ddbbc5c30f11 GIT binary patch literal 13289 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 Date: Fri, 22 Jun 2018 15:56:35 +0800 Subject: [PATCH 04/21] fix color --- .../analysis/core/impls/AreaMerchantTradeAnalysisImpl.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/au/com/royalpay/payment/manage/analysis/core/impls/AreaMerchantTradeAnalysisImpl.java b/src/main/java/au/com/royalpay/payment/manage/analysis/core/impls/AreaMerchantTradeAnalysisImpl.java index 704a82249..22f4b26be 100644 --- a/src/main/java/au/com/royalpay/payment/manage/analysis/core/impls/AreaMerchantTradeAnalysisImpl.java +++ b/src/main/java/au/com/royalpay/payment/manage/analysis/core/impls/AreaMerchantTradeAnalysisImpl.java @@ -136,7 +136,7 @@ public class AreaMerchantTradeAnalysisImpl implements AreaMerchantTradeAnalysis{ HSSFFont font3 = workbook.createFont(); font3.setFontHeightInPoints((short) 12); font3.setBoldweight(HSSFFont.BOLDWEIGHT_NORMAL); - font3.setColor(HSSFColor.RED.index); + font3.setColor(HSSFColor.GREEN.index); style3.setFont(font3); HSSFCellStyle style4 = workbook.createCellStyle(); style4.setFillForegroundColor(HSSFColor.WHITE.index); @@ -149,7 +149,7 @@ public class AreaMerchantTradeAnalysisImpl implements AreaMerchantTradeAnalysis{ HSSFFont font4 = workbook.createFont(); font4.setFontHeightInPoints((short) 12); font4.setBoldweight(HSSFFont.BOLDWEIGHT_NORMAL); - font4.setColor(HSSFColor.GREEN.index); + font4.setColor(HSSFColor.RED.index); style4.setFont(font4); HSSFRow row0 = sheet.createRow(0); HSSFCell cell00 = row0.createCell(0); From 440cacb1943c041590f1e935b775570f5528e49d Mon Sep 17 00:00:00 2001 From: yuan <1551130722@qq.com> Date: Fri, 22 Jun 2018 17:15:57 +0800 Subject: [PATCH 05/21] fix bug --- .../core/impls/DashboardServiceImpl.java | 2 +- .../CustomerAndOrdersStatisticsMapper.java | 2 ++ .../CustomerAndOrdersStatisticsMapper.xml | 32 +++++++++++++++++++ 3 files changed, 35 insertions(+), 1 deletion(-) 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 f6e07eeba..e5b6bb77a 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 @@ -130,7 +130,7 @@ public class DashboardServiceImpl implements DashboardService,DashboardAnalysisT } private JSONObject getYesOrLasMonth(JSONObject params){ JSONObject res = new JSONObject(); - res.put("traded_partners", clientCustomersMapper.countTradedClients(params)); + res.put("traded_partners", customerAndOrdersStatisticsMapper.countTradedClients(params)); res.put("total_customers", clientCustomersMapper.countTotalCustomers(params)); res.put("old_customers", clientCustomersMapper.countTotalOldCustomers(params)); return res; diff --git a/src/main/java/au/com/royalpay/payment/manage/analysis/mappers/CustomerAndOrdersStatisticsMapper.java b/src/main/java/au/com/royalpay/payment/manage/analysis/mappers/CustomerAndOrdersStatisticsMapper.java index 752d8a4f0..a88d66264 100644 --- a/src/main/java/au/com/royalpay/payment/manage/analysis/mappers/CustomerAndOrdersStatisticsMapper.java +++ b/src/main/java/au/com/royalpay/payment/manage/analysis/mappers/CustomerAndOrdersStatisticsMapper.java @@ -55,4 +55,6 @@ public interface CustomerAndOrdersStatisticsMapper { List countTradedClientsByDate(JSONObject parasm); List getAreaMerchantTradeByLastCycle(JSONObject parasm); + + int countTradedClients(JSONObject params); } diff --git a/src/main/resources/au/com/royalpay/payment/manage/analysis/mappers/CustomerAndOrdersStatisticsMapper.xml b/src/main/resources/au/com/royalpay/payment/manage/analysis/mappers/CustomerAndOrdersStatisticsMapper.xml index d97efacef..41964808b 100644 --- a/src/main/resources/au/com/royalpay/payment/manage/analysis/mappers/CustomerAndOrdersStatisticsMapper.xml +++ b/src/main/resources/au/com/royalpay/payment/manage/analysis/mappers/CustomerAndOrdersStatisticsMapper.xml @@ -456,4 +456,36 @@ GROUP BY datelist ORDER BY datelist + + \ No newline at end of file From 6c5680f78e7895b88f1aad77cb46ecd8c7395401 Mon Sep 17 00:00:00 2001 From: yuan <1551130722@qq.com> Date: Mon, 25 Jun 2018 10:22:28 +0800 Subject: [PATCH 06/21] fix dashboard --- .../core/impls/DashboardServiceImpl.java | 4 +- .../CustomerAndOrdersStatisticsMapper.java | 4 ++ .../mappers/client/ClientCustomersMapper.java | 5 -- .../CustomerAndOrdersStatisticsMapper.xml | 66 ++++++++++++++++++- .../mappers/client/ClientCustomersMapper.xml | 38 ----------- 5 files changed, 71 insertions(+), 46 deletions(-) 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 e5b6bb77a..04a1322c1 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 @@ -131,8 +131,8 @@ public class DashboardServiceImpl implements DashboardService,DashboardAnalysisT private JSONObject getYesOrLasMonth(JSONObject params){ JSONObject res = new JSONObject(); res.put("traded_partners", customerAndOrdersStatisticsMapper.countTradedClients(params)); - res.put("total_customers", clientCustomersMapper.countTotalCustomers(params)); - res.put("old_customers", clientCustomersMapper.countTotalOldCustomers(params)); + res.put("total_customers", customerAndOrdersStatisticsMapper.countTotalCustomers(params)); + res.put("old_customers", customerAndOrdersStatisticsMapper.countTotalOldCustomers(params)); return res; } diff --git a/src/main/java/au/com/royalpay/payment/manage/analysis/mappers/CustomerAndOrdersStatisticsMapper.java b/src/main/java/au/com/royalpay/payment/manage/analysis/mappers/CustomerAndOrdersStatisticsMapper.java index a88d66264..fdb90019a 100644 --- a/src/main/java/au/com/royalpay/payment/manage/analysis/mappers/CustomerAndOrdersStatisticsMapper.java +++ b/src/main/java/au/com/royalpay/payment/manage/analysis/mappers/CustomerAndOrdersStatisticsMapper.java @@ -57,4 +57,8 @@ public interface CustomerAndOrdersStatisticsMapper { List getAreaMerchantTradeByLastCycle(JSONObject parasm); int countTradedClients(JSONObject params); + + int countTotalCustomers(JSONObject params); + + int countTotalOldCustomers(JSONObject params); } diff --git a/src/main/java/au/com/royalpay/payment/manage/mappers/client/ClientCustomersMapper.java b/src/main/java/au/com/royalpay/payment/manage/mappers/client/ClientCustomersMapper.java index a14fa2289..4fad42598 100644 --- a/src/main/java/au/com/royalpay/payment/manage/mappers/client/ClientCustomersMapper.java +++ b/src/main/java/au/com/royalpay/payment/manage/mappers/client/ClientCustomersMapper.java @@ -30,10 +30,5 @@ public interface ClientCustomersMapper { PageList listCustomerInfo(JSONObject params, PageBounds pageBounds); - int countTradedClients(JSONObject params); - - int countTotalCustomers(JSONObject params); - - int countTotalOldCustomers(JSONObject params); } diff --git a/src/main/resources/au/com/royalpay/payment/manage/analysis/mappers/CustomerAndOrdersStatisticsMapper.xml b/src/main/resources/au/com/royalpay/payment/manage/analysis/mappers/CustomerAndOrdersStatisticsMapper.xml index 41964808b..8364cc935 100644 --- a/src/main/resources/au/com/royalpay/payment/manage/analysis/mappers/CustomerAndOrdersStatisticsMapper.xml +++ b/src/main/resources/au/com/royalpay/payment/manage/analysis/mappers/CustomerAndOrdersStatisticsMapper.xml @@ -458,7 +458,7 @@ + + + + \ No newline at end of file diff --git a/src/main/resources/au/com/royalpay/payment/manage/mappers/client/ClientCustomersMapper.xml b/src/main/resources/au/com/royalpay/payment/manage/mappers/client/ClientCustomersMapper.xml index a7b8534b1..497e19d7a 100644 --- a/src/main/resources/au/com/royalpay/payment/manage/mappers/client/ClientCustomersMapper.xml +++ b/src/main/resources/au/com/royalpay/payment/manage/mappers/client/ClientCustomersMapper.xml @@ -44,42 +44,4 @@ - - - - - \ No newline at end of file From a8e4f6ef33fdd0e62953d4803461c4f8682b8d03 Mon Sep 17 00:00:00 2001 From: eason Date: Mon, 25 Jun 2018 18:39:01 +0800 Subject: [PATCH 07/21] fix hf css --- src/main/ui/static/css/hf_gateway.css | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/main/ui/static/css/hf_gateway.css b/src/main/ui/static/css/hf_gateway.css index d366bda2f..3d39f2bfa 100644 --- a/src/main/ui/static/css/hf_gateway.css +++ b/src/main/ui/static/css/hf_gateway.css @@ -84,7 +84,7 @@ color: #434343; letter-spacing: 0px; padding-bottom: 10px; - padding-top: 20px; + padding-top: 15px; } .footer-bottom{ font-family: PingFangSC-Regular; @@ -97,6 +97,11 @@ margin-top: 100px; color: #444444; } + +.hf-warning{ + font-size: x-small; + color: #FF6600; +} /*成功页*/ .order-box .success-logo{ text-align: center; From c557a7f93982867a1a23ef50f9627aa0d121b193 Mon Sep 17 00:00:00 2001 From: eason Date: Mon, 25 Jun 2018 20:10:40 +0800 Subject: [PATCH 08/21] fix hf css --- src/main/ui/static/css/hf_gateway.css | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/ui/static/css/hf_gateway.css b/src/main/ui/static/css/hf_gateway.css index 3d39f2bfa..ebc34860d 100644 --- a/src/main/ui/static/css/hf_gateway.css +++ b/src/main/ui/static/css/hf_gateway.css @@ -84,7 +84,7 @@ color: #434343; letter-spacing: 0px; padding-bottom: 10px; - padding-top: 15px; + padding-top: 20px; } .footer-bottom{ font-family: PingFangSC-Regular; @@ -94,7 +94,7 @@ } .footer-bottom-success{ - margin-top: 100px; + margin-top: 60px; color: #444444; } From 20addb778a9f1545fb190ef2fd02359f4d04888c Mon Sep 17 00:00:00 2001 From: yixian Date: Mon, 25 Jun 2018 20:23:18 +0800 Subject: [PATCH 09/21] display multi banks --- .../impls/AreaMerchantTradeAnalysisImpl.java | 7 +- .../core/impls/DashboardServiceImpl.java | 6 +- .../beans/AgentCommissionAnalysis.java | 19 +- .../beans/CityPartnerCommissionAnalysis.java | 18 +- .../beans/ReferrerCommissionAnalysis.java | 2 +- .../impls/XPlanFundConfigServiceImpl.java | 2 +- .../clearing/core/CleanService.java | 3 +- .../clearing/core/impl/CleanServiceImpl.java | 223 +++++++++--------- .../core/impl/SettleDelayConfigurerImpl.java | 2 +- .../core/impls/ActRedPackServiceImpl.java | 2 +- .../manage/support/abafile/ABAConfig.java | 111 +++++++++ .../manage/support/abafile/ABAFile.java | 68 ++++-- .../manage/support/abafile/ABATemplate.java | 27 +++ src/main/resources/application.properties | 17 ++ 14 files changed, 348 insertions(+), 159 deletions(-) create mode 100644 src/main/java/au/com/royalpay/payment/manage/support/abafile/ABAConfig.java create mode 100644 src/main/java/au/com/royalpay/payment/manage/support/abafile/ABATemplate.java diff --git a/src/main/java/au/com/royalpay/payment/manage/analysis/core/impls/AreaMerchantTradeAnalysisImpl.java b/src/main/java/au/com/royalpay/payment/manage/analysis/core/impls/AreaMerchantTradeAnalysisImpl.java index 22f4b26be..5f62099df 100644 --- a/src/main/java/au/com/royalpay/payment/manage/analysis/core/impls/AreaMerchantTradeAnalysisImpl.java +++ b/src/main/java/au/com/royalpay/payment/manage/analysis/core/impls/AreaMerchantTradeAnalysisImpl.java @@ -24,6 +24,7 @@ import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.OutputStream; import java.math.BigDecimal; +import java.math.RoundingMode; import java.text.NumberFormat; import java.util.Date; import java.util.List; @@ -259,7 +260,7 @@ public class AreaMerchantTradeAnalysisImpl implements AreaMerchantTradeAnalysis{ } } if(thisAmount.getBigDecimal("total").compareTo(BigDecimal.ZERO)>0 && thisAmount.getBigDecimal("old_total").compareTo(BigDecimal.ZERO)>0) { - lastTotal = (thisAmount.getBigDecimal("total").subtract(thisAmount.getBigDecimal("old_total"))).divide(thisAmount.getBigDecimal("old_total"), 4, BigDecimal.ROUND_HALF_UP); + lastTotal = (thisAmount.getBigDecimal("total").subtract(thisAmount.getBigDecimal("old_total"))).divide(thisAmount.getBigDecimal("old_total"), 4, RoundingMode.HALF_UP); } }else { if(thisAmount.getBigDecimal("total").compareTo(BigDecimal.ZERO) == 0){ @@ -274,7 +275,7 @@ public class AreaMerchantTradeAnalysisImpl implements AreaMerchantTradeAnalysis{ } } if(thisAmount.getBigDecimal("alipay_total").compareTo(BigDecimal.ZERO)>0 && thisAmount.getBigDecimal("old_alipay_total").compareTo(BigDecimal.ZERO)>0){ - alipayTotal = (thisAmount.getBigDecimal("alipay_total").subtract(thisAmount.getBigDecimal("old_alipay_total"))).divide(thisAmount.getBigDecimal("old_alipay_total"),4,BigDecimal.ROUND_HALF_UP); + alipayTotal = (thisAmount.getBigDecimal("alipay_total").subtract(thisAmount.getBigDecimal("old_alipay_total"))).divide(thisAmount.getBigDecimal("old_alipay_total"),4,RoundingMode.HALF_UP); } }else { if(thisAmount.getBigDecimal("alipay_total").compareTo(BigDecimal.ZERO) == 0){ @@ -290,7 +291,7 @@ public class AreaMerchantTradeAnalysisImpl implements AreaMerchantTradeAnalysis{ } } if(thisAmount.getBigDecimal("wechat_toatl").compareTo(BigDecimal.ZERO)>0 && thisAmount.getBigDecimal("old_wechat_toatl").compareTo(BigDecimal.ZERO)>0){ - wechatToatl = (thisAmount.getBigDecimal("wechat_toatl").subtract(thisAmount.getBigDecimal("old_wechat_toatl"))).divide(thisAmount.getBigDecimal("old_wechat_toatl"),4,BigDecimal.ROUND_HALF_UP); + wechatToatl = (thisAmount.getBigDecimal("wechat_toatl").subtract(thisAmount.getBigDecimal("old_wechat_toatl"))).divide(thisAmount.getBigDecimal("old_wechat_toatl"),4,RoundingMode.HALF_UP); } }else { if(thisAmount.getBigDecimal("wechat_toatl").compareTo(BigDecimal.ZERO) == 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 04a1322c1..ce393d720 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 @@ -303,9 +303,9 @@ public class DashboardServiceImpl implements DashboardService,DashboardAnalysisT res.put("today",today); res.put("yes",yes); res.put("not_settled", new BigDecimal(transactionAnalysisMapper.analysisNotSettled(params))); - res.put("trade_amount_rise",yes.getBigDecimal("trade_amount").compareTo(BigDecimal.ZERO)>0 ? (today.getBigDecimal("trade_amount").subtract(yes.getBigDecimal("trade_amount"))).divide(yes.getBigDecimal("trade_amount"), 4, BigDecimal.ROUND_HALF_UP):BigDecimal.ZERO); - res.put("trade_count_rise", yes.getIntValue("trade_count") > 0 ? (today.getBigDecimal("trade_count").subtract(yes.getBigDecimal("trade_count"))).divide(yes.getBigDecimal("trade_count"), 4, BigDecimal.ROUND_HALF_UP) : 0); - res.put("customers_rise", yes.getIntValue("customers") > 0 ? (today.getBigDecimal("customers").subtract(yes.getBigDecimal("customers"))).divide(yes.getBigDecimal("customers"), 4, BigDecimal.ROUND_HALF_UP) : 0); + res.put("trade_amount_rise",yes.getBigDecimal("trade_amount").compareTo(BigDecimal.ZERO)>0 ? (today.getBigDecimal("trade_amount").subtract(yes.getBigDecimal("trade_amount"))).divide(yes.getBigDecimal("trade_amount"), 4, RoundingMode.HALF_UP):BigDecimal.ZERO); + res.put("trade_count_rise", yes.getIntValue("trade_count") > 0 ? (today.getBigDecimal("trade_count").subtract(yes.getBigDecimal("trade_count"))).divide(yes.getBigDecimal("trade_count"), 4, RoundingMode.HALF_UP) : 0); + res.put("customers_rise", yes.getIntValue("customers") > 0 ? (today.getBigDecimal("customers").subtract(yes.getBigDecimal("customers"))).divide(yes.getBigDecimal("customers"), 4, RoundingMode.HALF_UP) : 0); params.remove("begin"); params.remove("end"); List logs = transactionMapper.listSettlementLogTotal(params); diff --git a/src/main/java/au/com/royalpay/payment/manage/citypartner/beans/AgentCommissionAnalysis.java b/src/main/java/au/com/royalpay/payment/manage/citypartner/beans/AgentCommissionAnalysis.java index d6d98fc9c..353c549cf 100644 --- a/src/main/java/au/com/royalpay/payment/manage/citypartner/beans/AgentCommissionAnalysis.java +++ b/src/main/java/au/com/royalpay/payment/manage/citypartner/beans/AgentCommissionAnalysis.java @@ -5,6 +5,7 @@ import au.com.royalpay.payment.tools.CommonConsts; import com.alibaba.fastjson.JSONObject; import java.math.BigDecimal; +import java.math.RoundingMode; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; @@ -49,25 +50,25 @@ public class AgentCommissionAnalysis { Date tradeDate = dayAnalysis.getDate("trade_date"); BigDecimal grossAmount = dayAnalysis.getBigDecimal("total"); BigDecimal dayRate = dayAnalysis.getBigDecimal(channel+"_rate_value"); - BigDecimal agentCharge = grossAmount.multiply(dayRate.divide(CommonConsts.HUNDRED, 2, BigDecimal.ROUND_HALF_UP)); + BigDecimal agentCharge = grossAmount.multiply(dayRate.divide(CommonConsts.HUNDRED, 2, RoundingMode.HALF_UP)); BigDecimal orgCharge = BigDecimal.ZERO; BigDecimal orgNetCharge = BigDecimal.ZERO; switch (channel){ case "alipay": - orgCharge = grossAmount.multiply(org.getBigDecimal("alipay_rate_value").divide(CommonConsts.HUNDRED, 2, BigDecimal.ROUND_HALF_UP)); - orgNetCharge = orgCharge.subtract(grossAmount.multiply(parentOrg.getBigDecimal("alipay_rate_value").divide(CommonConsts.HUNDRED, 2, BigDecimal.ROUND_HALF_UP))); + orgCharge = grossAmount.multiply(org.getBigDecimal("alipay_rate_value").divide(CommonConsts.HUNDRED, 2, RoundingMode.HALF_UP)); + orgNetCharge = orgCharge.subtract(grossAmount.multiply(parentOrg.getBigDecimal("alipay_rate_value").divide(CommonConsts.HUNDRED, 2, RoundingMode.HALF_UP))); break; case "wechat": - orgCharge = grossAmount.multiply(org.getBigDecimal("wechat_rate_value").divide(CommonConsts.HUNDRED, 2, BigDecimal.ROUND_HALF_UP)); - orgNetCharge = orgCharge.subtract(grossAmount.multiply(parentOrg.getBigDecimal("wechat_rate_value").divide(CommonConsts.HUNDRED, 2, BigDecimal.ROUND_HALF_UP))); + orgCharge = grossAmount.multiply(org.getBigDecimal("wechat_rate_value").divide(CommonConsts.HUNDRED, 2, RoundingMode.HALF_UP)); + orgNetCharge = orgCharge.subtract(grossAmount.multiply(parentOrg.getBigDecimal("wechat_rate_value").divide(CommonConsts.HUNDRED, 2, RoundingMode.HALF_UP))); break; case "jd": - orgCharge = grossAmount.multiply(org.getBigDecimal("jd_rate_value").divide(CommonConsts.HUNDRED, 2, BigDecimal.ROUND_HALF_UP)); - orgNetCharge = orgCharge.subtract(grossAmount.multiply(parentOrg.getBigDecimal("jd_rate_value").divide(CommonConsts.HUNDRED, 2, BigDecimal.ROUND_HALF_UP))); + orgCharge = grossAmount.multiply(org.getBigDecimal("jd_rate_value").divide(CommonConsts.HUNDRED, 2, RoundingMode.HALF_UP)); + orgNetCharge = orgCharge.subtract(grossAmount.multiply(parentOrg.getBigDecimal("jd_rate_value").divide(CommonConsts.HUNDRED, 2, RoundingMode.HALF_UP))); break; case "alipayonline": - orgCharge = grossAmount.multiply(org.getBigDecimal("alipayonline_rate_value").divide(CommonConsts.HUNDRED, 2, BigDecimal.ROUND_HALF_UP)); - orgNetCharge = orgCharge.subtract(grossAmount.multiply(parentOrg.getBigDecimal("alipayonline_rate_value").divide(CommonConsts.HUNDRED, 2, BigDecimal.ROUND_HALF_UP))); + orgCharge = grossAmount.multiply(org.getBigDecimal("alipayonline_rate_value").divide(CommonConsts.HUNDRED, 2, RoundingMode.HALF_UP)); + orgNetCharge = orgCharge.subtract(grossAmount.multiply(parentOrg.getBigDecimal("alipayonline_rate_value").divide(CommonConsts.HUNDRED, 2, RoundingMode.HALF_UP))); break; default: break; diff --git a/src/main/java/au/com/royalpay/payment/manage/citypartner/beans/CityPartnerCommissionAnalysis.java b/src/main/java/au/com/royalpay/payment/manage/citypartner/beans/CityPartnerCommissionAnalysis.java index b026765bc..0f0a9133b 100644 --- a/src/main/java/au/com/royalpay/payment/manage/citypartner/beans/CityPartnerCommissionAnalysis.java +++ b/src/main/java/au/com/royalpay/payment/manage/citypartner/beans/CityPartnerCommissionAnalysis.java @@ -67,9 +67,9 @@ public class CityPartnerCommissionAnalysis { Date tradeDate = dayAnalysis.getDate("trade_date"); BigDecimal total = dayAnalysis.getBigDecimal("total"); BigDecimal dayRate = dayAnalysis.getBigDecimal(channel + "_rate_value"); - BigDecimal dayCharge = total.multiply(dayRate).divide(CommonConsts.HUNDRED, 2, BigDecimal.ROUND_HALF_UP); + BigDecimal dayCharge = total.multiply(dayRate).divide(CommonConsts.HUNDRED, 2, RoundingMode.HALF_UP); - BigDecimal royalpayCharge = total.multiply(rate).divide(CommonConsts.HUNDRED, 2, BigDecimal.ROUND_HALF_UP); + BigDecimal royalpayCharge = total.multiply(rate).divide(CommonConsts.HUNDRED, 2, RoundingMode.HALF_UP); BigDecimal thirdPartyPaymentCharge = getThirdPartyCharge(channel, total); BigDecimal netCharge = royalpayCharge.subtract(thirdPartyPaymentCharge); @@ -161,13 +161,13 @@ public class CityPartnerCommissionAnalysis { Date tradeDate = dayAnalysis.getDate("trade_date"); BigDecimal total = dayAnalysis.getBigDecimal("total"); BigDecimal dayRate = dayAnalysis.getBigDecimal(channel + "_rate_value"); - BigDecimal dayCharge = total.multiply(dayRate).divide(CommonConsts.HUNDRED, 2, BigDecimal.ROUND_HALF_UP); + BigDecimal dayCharge = total.multiply(dayRate).divide(CommonConsts.HUNDRED, 2, RoundingMode.HALF_UP); - BigDecimal royalpayCharge = total.multiply(rate).divide(CommonConsts.HUNDRED, 2, BigDecimal.ROUND_HALF_UP); + BigDecimal royalpayCharge = total.multiply(rate).divide(CommonConsts.HUNDRED, 2, RoundingMode.HALF_UP); BigDecimal thirdPartyPaymentCharge = getThirdPartyCharge(channel, total); BigDecimal netCharge = royalpayCharge.subtract(thirdPartyPaymentCharge); - BigDecimal orgCharge = netCharge.multiply(orgRate).divide(CommonConsts.HUNDRED, 2, BigDecimal.ROUND_HALF_UP); + BigDecimal orgCharge = netCharge.multiply(orgRate).divide(CommonConsts.HUNDRED, 2, RoundingMode.HALF_UP); totalGrossAmount = totalGrossAmount.add(total); totalChargeSum = totalChargeSum.add(dayCharge); totalRoyalPayCharge = totalRoyalPayCharge.add(royalpayCharge); @@ -216,16 +216,16 @@ public class CityPartnerCommissionAnalysis { BigDecimal thirdPartyPaymentCharge = BigDecimal.ZERO; switch (channel) { case "alipay": - thirdPartyPaymentCharge = total.multiply(alipayChargeRate).divide(CommonConsts.HUNDRED, 2, BigDecimal.ROUND_HALF_UP); + thirdPartyPaymentCharge = total.multiply(alipayChargeRate).divide(CommonConsts.HUNDRED, 2, RoundingMode.HALF_UP); break; case "wechat": - thirdPartyPaymentCharge = total.multiply(wechatChargeRate).divide(CommonConsts.HUNDRED, 2, BigDecimal.ROUND_HALF_UP); + thirdPartyPaymentCharge = total.multiply(wechatChargeRate).divide(CommonConsts.HUNDRED, 2, RoundingMode.HALF_UP); break; case "jd": - thirdPartyPaymentCharge = total.multiply(jdChargeRate).divide(CommonConsts.HUNDRED, 2, BigDecimal.ROUND_HALF_UP); + thirdPartyPaymentCharge = total.multiply(jdChargeRate).divide(CommonConsts.HUNDRED, 2, RoundingMode.HALF_UP); break; case "alipayonline": - thirdPartyPaymentCharge = total.multiply(alipayonlineChargeRate).divide(CommonConsts.HUNDRED, 2, BigDecimal.ROUND_HALF_UP); + thirdPartyPaymentCharge = total.multiply(alipayonlineChargeRate).divide(CommonConsts.HUNDRED, 2, RoundingMode.HALF_UP); break; default: break; diff --git a/src/main/java/au/com/royalpay/payment/manage/citypartner/beans/ReferrerCommissionAnalysis.java b/src/main/java/au/com/royalpay/payment/manage/citypartner/beans/ReferrerCommissionAnalysis.java index f3c71e8b6..af2bc0ea4 100644 --- a/src/main/java/au/com/royalpay/payment/manage/citypartner/beans/ReferrerCommissionAnalysis.java +++ b/src/main/java/au/com/royalpay/payment/manage/citypartner/beans/ReferrerCommissionAnalysis.java @@ -34,7 +34,7 @@ public class ReferrerCommissionAnalysis { } BigDecimal total = dayAnalysis.getBigDecimal("total"); - BigDecimal orgCharge = total.multiply(referrerRate).divide(CommonConsts.HUNDRED, 2, BigDecimal.ROUND_HALF_UP); + BigDecimal orgCharge = total.multiply(referrerRate).divide(CommonConsts.HUNDRED, 2, RoundingMode.HALF_UP); Date tradeDate = dayAnalysis.getDate("trade_date"); totalGrossAmount = totalGrossAmount.add(total); diff --git a/src/main/java/au/com/royalpay/payment/manage/fund/core/impls/XPlanFundConfigServiceImpl.java b/src/main/java/au/com/royalpay/payment/manage/fund/core/impls/XPlanFundConfigServiceImpl.java index 0b9453fac..826c05081 100644 --- a/src/main/java/au/com/royalpay/payment/manage/fund/core/impls/XPlanFundConfigServiceImpl.java +++ b/src/main/java/au/com/royalpay/payment/manage/fund/core/impls/XPlanFundConfigServiceImpl.java @@ -113,7 +113,7 @@ public class XPlanFundConfigServiceImpl implements XPlanFundConfigService { } public static BigDecimal calculateInterest(BigDecimal interestRate, BigDecimal amount) { - return amount.multiply(interestRate.divide(CommonConsts.HUNDRED, 4, BigDecimal.ROUND_DOWN)).divide(BigDecimal.valueOf(365), 2, BigDecimal.ROUND_HALF_UP); + return amount.multiply(interestRate.divide(CommonConsts.HUNDRED, 4, BigDecimal.ROUND_DOWN)).divide(BigDecimal.valueOf(365), 2, RoundingMode.HALF_UP); } private JSONObject getClient(String clientMoniker) { 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 f4d0e7a41..097b8668a 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 @@ -1,5 +1,6 @@ package au.com.royalpay.payment.manage.management.clearing.core; +import au.com.royalpay.payment.manage.support.abafile.ABAFile; import au.com.royalpay.payment.manage.tradelog.beans.ClearingLogQuery; import com.alibaba.fastjson.JSONObject; import org.springframework.transaction.annotation.Transactional; @@ -44,7 +45,7 @@ public interface CleanService { List getXlsx(Date date) throws IOException; - List getAba(Date dt) throws IOException; + List getAba(Date dt, String bank) throws IOException; void settlementAba(Date date, HttpServletResponse response) throws IOException; 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 e5ee243f2..fd8336fd0 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 @@ -4,11 +4,7 @@ import au.com.royalpay.payment.core.PaymentApi; import au.com.royalpay.payment.core.exceptions.InvalidShortIdException; import au.com.royalpay.payment.core.tasksupport.SettlementSupport; import au.com.royalpay.payment.manage.management.clearing.core.CleanService; -import au.com.royalpay.payment.manage.mappers.log.ClearingDetailAnalysisMapper; -import au.com.royalpay.payment.manage.mappers.log.ClearingDetailMapper; -import au.com.royalpay.payment.manage.mappers.log.ClearingLogMapper; -import au.com.royalpay.payment.manage.mappers.log.LogSettleMailMapper; -import au.com.royalpay.payment.manage.mappers.log.ValidationLogMapper; +import au.com.royalpay.payment.manage.mappers.log.*; import au.com.royalpay.payment.manage.mappers.payment.TransactionMapper; import au.com.royalpay.payment.manage.mappers.system.CalendarMapper; import au.com.royalpay.payment.manage.mappers.system.ClientRateMapper; @@ -20,6 +16,7 @@ import au.com.royalpay.payment.manage.notice.core.MailService; import au.com.royalpay.payment.manage.signin.beans.TodoNotice; import au.com.royalpay.payment.manage.signin.core.ManagerTodoNoticeProvider; import au.com.royalpay.payment.manage.support.abafile.ABAFile; +import au.com.royalpay.payment.manage.support.abafile.ABATemplate; import au.com.royalpay.payment.manage.tradelog.beans.ClearingLogQuery; import au.com.royalpay.payment.tools.connections.mpsupport.MpWechatApi; import au.com.royalpay.payment.tools.connections.mpsupport.MpWechatApiProvider; @@ -34,14 +31,12 @@ import au.com.royalpay.payment.tools.permission.enums.ManagerRole; import au.com.royalpay.payment.tools.tasksupport.TaskFinishNotifyEvent; import au.com.royalpay.payment.tools.utils.PageListUtils; import au.com.royalpay.payment.tools.utils.TimeZoneUtils; - import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.github.miemiedev.mybatis.paginator.domain.Order; import com.github.miemiedev.mybatis.paginator.domain.PageBounds; import com.github.miemiedev.mybatis.paginator.domain.PageList; - import org.apache.commons.codec.binary.Base64; import org.apache.commons.csv.CSVFormat; import org.apache.commons.csv.CSVPrinter; @@ -50,12 +45,7 @@ import org.apache.commons.lang3.RandomStringUtils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.time.DateFormatUtils; import org.apache.commons.lang3.time.DateUtils; -import org.apache.poi.ss.usermodel.Cell; -import org.apache.poi.ss.usermodel.CellStyle; -import org.apache.poi.ss.usermodel.Font; -import org.apache.poi.ss.usermodel.Row; -import org.apache.poi.ss.usermodel.Sheet; -import org.apache.poi.ss.usermodel.Workbook; +import org.apache.poi.ss.usermodel.*; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.joda.time.DateTime; import org.joda.time.Days; @@ -72,13 +62,9 @@ import org.springframework.util.CollectionUtils; import org.thymeleaf.context.Context; import org.thymeleaf.spring4.SpringTemplateEngine; -import java.io.BufferedWriter; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.OutputStream; -import java.io.OutputStreamWriter; -import java.io.PrintWriter; -import java.io.Writer; +import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; +import java.io.*; import java.math.BigDecimal; import java.math.RoundingMode; import java.net.URISyntaxException; @@ -90,9 +76,6 @@ import java.util.stream.Collectors; import java.util.zip.ZipEntry; import java.util.zip.ZipOutputStream; -import javax.annotation.Resource; -import javax.servlet.http.HttpServletResponse; - import static au.com.royalpay.payment.manage.permission.utils.OrgCheckUtils.checkOrgPermission; /** @@ -145,7 +128,7 @@ public class CleanServiceImpl implements CleanService, ManagerTodoNoticeProvider @Value("${app.redis.settle.check-code.prefix}") private String reidsCheckCodeKey; - private final String[] open_ids = { "o32MzuEeb5ZT_DJQYbzZf6VCu1HQ", "o32MzuIsa3OBOkvC9pL90h9pgHPg", "o32MzuCpqGQJTlvTK7VQ7m_LVXiQ" }; + private final String[] open_ids = {"o32MzuEeb5ZT_DJQYbzZf6VCu1HQ", "o32MzuIsa3OBOkvC9pL90h9pgHPg", "o32MzuCpqGQJTlvTK7VQ7m_LVXiQ"}; private ApplicationEventPublisher publisher; // private final String[] open_ids = { "o32MzuO4s8c7iFOVxnxejkbhMoEc" }; @@ -226,8 +209,22 @@ public class CleanServiceImpl implements CleanService, ManagerTodoNoticeProvider addBigDecimal(total, log, "wechat_charge"); addBigDecimal(total, log, "royalpay_charge"); addBigDecimal(total, log, "net_amount"); - details.addAll(clearingDetailMapper.listReportsOfSettlement(log.getIntValue("clearing_id"))); + List logDetails = clearingDetailMapper.listReportsOfSettlement(log.getIntValue("clearing_id")); + details.addAll(logDetails); + List banks = logDetails.stream().map(detail -> detail.getString("settle_bank")).distinct().collect(Collectors.toList()); + List bankStatistics = banks.stream().map(bank -> { + JSONObject data = new JSONObject(); + data.put("bank", bank); + data.put("total_settle", logDetails.stream() + .filter(detail -> bank.equals(detail.getString("settle_bank"))) + .map(detail -> detail.getBigDecimal("net_amount")) + .reduce(BigDecimal::add) + ); + return data; + }).collect(Collectors.toList()); + log.put("bank_statistics", bankStatistics); } + total.put("logs", logs); total.put("details", details); List channels = clearingDetailAnalysisMapper.analysisChannelReportDaily(settleDate); total.put("channel_analysis", channels); @@ -260,7 +257,7 @@ public class CleanServiceImpl implements CleanService, ManagerTodoNoticeProvider } @Override - public Map getDayAndChannelOfAnalysisMap(int detailId,String channel,JSONObject manager) { + public Map getDayAndChannelOfAnalysisMap(int detailId, String channel, JSONObject manager) { JSONObject cleanLog = clearingDetailMapper.findByDetailId(detailId); if (cleanLog == null) { throw new NotFoundException(); @@ -269,7 +266,7 @@ public class CleanServiceImpl implements CleanService, ManagerTodoNoticeProvider Assert.notNull(client, "Client ID invalid"); checkOrgPermission(manager, client); - return getDayAnalysisMap(String.valueOf(detailId),channel,client); + return getDayAnalysisMap(String.valueOf(detailId), channel, client); } @Override @@ -378,34 +375,17 @@ public class CleanServiceImpl implements CleanService, ManagerTodoNoticeProvider } @Override - public List getAba(Date dt) throws IOException { + public List getAba(Date dt, String bank) { List logs = clearingLogMapper.findByDate(dt); if (logs.isEmpty()) { throw new NotFoundException(); } - List result = new ArrayList<>(); - int index = 1; - if (logs.size() > 1) { - // todo email edit - for (JSONObject log : logs) { - JSONObject file = new JSONObject(); - List details = clearingDetailMapper.listReportsOfSettlement(log.getIntValue("clearing_id")); - String filename = "Merchant_Settlement_Info_" + DateFormatUtils.format(dt, "yyyyMMdd") + "_" + index + ".aba"; - file.put("name", filename); - file.put("byteArr", generateSettleAbaFile(dt, details, index++)); - result.add(file); - } - } else { - for (JSONObject log : logs) { - List details = clearingDetailMapper.listReportsOfSettlement(log.getIntValue("clearing_id")); - String filename = "Merchant_Settlement_Info_" + DateFormatUtils.format(dt, "yyyyMMdd") + ".aba"; - JSONObject file = new JSONObject(); - file.put("name", filename); - file.put("byteArr", generateSettleAbaFile(dt, details, index++)); - result.add(file); - } + List files = new ArrayList<>(); + for (JSONObject log : logs) { + List details = clearingDetailMapper.listReportsOfSettlement(log.getIntValue("clearing_id")); + files.addAll(generateSettleAbaFiles(dt, details, log.getDate("operate_time"))); } - return result; + return files.stream().filter(file -> bank.equals(file.bank())).collect(Collectors.toList()); } private byte[] generateSettleXlsxFile(Date dt, List settlements) throws IOException { @@ -434,34 +414,56 @@ public class CleanServiceImpl implements CleanService, ManagerTodoNoticeProvider if (logs.isEmpty()) { throw new NotFoundException(); } - String zipName = "Merchant_Settlement_Info_" + DateFormatUtils.format(dt, "yyyyMMdd") + RandomStringUtils.random(8, false, true) + "_aba.zip"; - resp.setContentType("application/octet-stream;"); - resp.addHeader("Content-Disposition", "attachment; filename=" + zipName); - OutputStream ous = resp.getOutputStream(); - ZipOutputStream zos = new ZipOutputStream(ous); - int index = 1; + List files = new ArrayList<>(); + for (JSONObject log : logs) { - String dateString = DateFormatUtils.format(log.getDate("operate_time"), "yyyyMMddHHmmss"); - String filename = "Merchant_Settlement_Info_" + dateString + RandomStringUtils.random(8, false, true) + ".aba"; - zos.putNextEntry(new ZipEntry(filename)); List details = clearingDetailMapper.listReportsOfSettlement(log.getIntValue("clearing_id")); - byte[] file = generateSettleAbaFile(dt, details, index++); - IOUtils.write(file, zos); + files.addAll(generateSettleAbaFiles(dt, details, log.getDate("operate_time"))); } - zos.flush(); - IOUtils.closeQuietly(zos); + OutputStream ous = resp.getOutputStream(); + if (files.size() == 1) { + ABAFile file = files.get(0); + resp.setContentType("application/octet-stream;"); + resp.addHeader("Content-Disposition", "attachment; filename=" + file.filename()); + ous.write(file.output(1)); + ous.flush(); + IOUtils.closeQuietly(ous); + } else { + String zipName = "Merchant_Settlement_Info_" + DateFormatUtils.format(dt, "yyyyMMdd") + RandomStringUtils.random(8, false, true) + "_aba.zip"; + resp.setContentType("application/octet-stream;"); + resp.addHeader("Content-Disposition", "attachment; filename=" + zipName); + ZipOutputStream zos = new ZipOutputStream(ous); + Map bankCounts = new HashMap<>(); + for (ABAFile file : files) { + String filename = file.filename(); + zos.putNextEntry(new ZipEntry(filename)); + int serializeNo = bankCounts.get(file.bank()) == null ? 1 : bankCounts.get(file.bank()) + 1; + bankCounts.put(file.bank(), serializeNo); + IOUtils.write(file.output(serializeNo), zos); + } + zos.flush(); + IOUtils.closeQuietly(zos); + } + } + + private List generateSettleAbaFiles(Date dt, List settlements, Date operateTime) { + 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()); } - private byte[] generateSettleAbaFile(Date dt, List settlements, int index) { - ABAFile aba = new ABAFile(dt, index); + private ABAFile generateSettleAbaFile(String bank, Date dt, List settlements) { + ABAFile aba = ABATemplate.getConfig().initFile(bank, dt); for (JSONObject settle : settlements) { + if (!bank.equals(settle.getString("settle_bank"))) { + continue; + } if (settle.getBigDecimal("clearing_amount").compareTo(BigDecimal.ZERO) == 0) { continue; } aba.addSettleMerchant(settle.getString("bsb_no"), settle.getString("account_no"), settle.getString("account_name"), settle.getBigDecimal("clearing_amount")); } - return aba.output(); + return aba; } private byte[] generateSettleCSVFile(Date settleDate, List details) throws IOException { @@ -474,12 +476,12 @@ public class CleanServiceImpl implements CleanService, ManagerTodoNoticeProvider if (detail.getDoubleValue("clearing_amount") == 0) { continue; } - String grossAmount = detail.getBigDecimal("gross_amount").setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString() + " @ " - + detail.getBigDecimal("rate").setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString() + "%"; - String totalCharge = detail.getBigDecimal("total_charge").setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString(); - String clearingAmount = detail.getBigDecimal("clearing_amount").setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString(); - String[] values = { detail.getString("client_moniker"), "AUD", grossAmount, totalCharge, clearingAmount, detail.getString("bsb_no"), - detail.getString("account_no"), detail.getString("account_name"), settlementDate }; + String grossAmount = detail.getBigDecimal("gross_amount").setScale(2, RoundingMode.HALF_UP).toPlainString() + " @ " + + detail.getBigDecimal("rate").setScale(2, RoundingMode.HALF_UP).toPlainString() + "%"; + String totalCharge = detail.getBigDecimal("total_charge").setScale(2, RoundingMode.HALF_UP).toPlainString(); + String clearingAmount = detail.getBigDecimal("clearing_amount").setScale(2, RoundingMode.HALF_UP).toPlainString(); + String[] values = {detail.getString("client_moniker"), "AUD", grossAmount, totalCharge, clearingAmount, detail.getString("bsb_no"), + detail.getString("account_no"), detail.getString("account_name"), settlementDate}; csv.printRecord((Object[]) values); } csv.flush(); @@ -500,9 +502,9 @@ public class CleanServiceImpl implements CleanService, ManagerTodoNoticeProvider BigDecimal.ROUND_HALF_DOWN); BigDecimal clearingAmount = transaction.getBigDecimal("clearing_amount").multiply(BigDecimal.valueOf(multiply)).setScale(2, BigDecimal.ROUND_HALF_DOWN); - String[] values = { transaction.getString("system_transaction_id"), transaction.getString("order_id"), transaction.getString("client_id"), + String[] values = {transaction.getString("system_transaction_id"), transaction.getString("order_id"), transaction.getString("client_id"), transaction.getString("device_id"), transaction.getString("transaction_currency"), transactionAmount.toPlainString(), - transaction.getString("clearing_currency"), clearingAmount.toPlainString(), transaction.getString("channel"), transactionTime, "0" }; + transaction.getString("clearing_currency"), clearingAmount.toPlainString(), transaction.getString("channel"), transactionTime, "0"}; csv.printRecord((Object[]) values); } csv.flush(); @@ -650,7 +652,7 @@ public class CleanServiceImpl implements CleanService, ManagerTodoNoticeProvider String timezone_client = client.getString("timezone"); if (timezone_client != null) { transactions.parallelStream().forEach(p -> { - TimeZoneUtils.switchTimeZone(p, timezone_client, "transaction_time"); + TimeZoneUtils.switchTimeZone(p, timezone_client, "transaction_time"); }); } clearClient.put("report", transactions); @@ -665,7 +667,7 @@ public class CleanServiceImpl implements CleanService, ManagerTodoNoticeProvider } @Override - public Map channelAndDayOfAnalysis(int client_id, String clearingDetailId,String channel,JSONObject partner) { + public Map channelAndDayOfAnalysis(int client_id, String clearingDetailId, String channel, JSONObject partner) { JSONObject client = clientManager.getClientInfo(client_id); Assert.notNull(client, "Client not exists"); int parent_client_id = client.getIntValue("parent_client_id"); @@ -673,15 +675,15 @@ public class CleanServiceImpl implements CleanService, ManagerTodoNoticeProvider if (client_id != partner.getIntValue("client_id") && parent_client_id != partner.getIntValue("client_id")) { throw new ForbiddenException("No Permission"); } - return getDayAnalysisMap(clearingDetailId,channel,client); + return getDayAnalysisMap(clearingDetailId, channel, client); } - private Map getDayAnalysisMap(String clearingDetailId,String channel,JSONObject client){ + private Map getDayAnalysisMap(String clearingDetailId, String channel, JSONObject client) { List transactions = transactionMapper.listTransactionsOfClearingOrder(Integer.parseInt(clearingDetailId), new PageBounds(Order.formString("order_id.asc"))); String timezone_client = client.getString("timezone"); - if(!channel.equals("null")){ - transactions = transactions.stream().filter(t->t.getString("channel").equals(channel)).collect(Collectors.toList()); + if (!channel.equals("null")) { + transactions = transactions.stream().filter(t -> t.getString("channel").equals(channel)).collect(Collectors.toList()); } List dateKeysList = new ArrayList<>(); dateKeysList.add("transaction_time"); @@ -689,35 +691,36 @@ public class CleanServiceImpl implements CleanService, ManagerTodoNoticeProvider transactions.parallelStream().forEach(p -> { TimeZoneUtils.switchTimeZone(p, timezone_client, "transaction_time"); }); - TimeZoneUtils.switchTimeZoneToString(transactions,timezone_client,TimeZoneUtils.PATTERN_DATE,dateKeysList); + TimeZoneUtils.switchTimeZoneToString(transactions, timezone_client, TimeZoneUtils.PATTERN_DATE, dateKeysList); } - Map> dayTransactionsMap = transactions.stream().collect(Collectors.groupingBy(x -> x.getString("transaction_time").substring(0,10))); - Map dayAnalysisMap = new TreeMap<>(); - for (Map.Entry> entry : dayTransactionsMap.entrySet()){ + Map> dayTransactionsMap = transactions.stream().collect(Collectors.groupingBy(x -> x.getString("transaction_time").substring(0, 10))); + Map dayAnalysisMap = new TreeMap<>(); + for (Map.Entry> entry : dayTransactionsMap.entrySet()) { JSONObject analysis = new JSONObject(); List transactionsOfDay = entry.getValue(); - BigDecimal total_credit = transactionsOfDay.stream().filter(t->t.getString("transaction_type").equals("Credit")).filter(t->t.containsKey("clearing_amount")).map(t-> t.getBigDecimal("clearing_amount")).reduce(BigDecimal.ZERO, BigDecimal::add); - BigDecimal total_debit = transactionsOfDay.stream().filter(t->t.getString("transaction_type").equals("Debit")).filter(t->t.containsKey("clearing_amount")).map(t-> t.getBigDecimal("clearing_amount")).reduce(BigDecimal.ZERO, BigDecimal::add); - BigDecimal total_charge_credit = transactionsOfDay.stream().filter(t->t.getString("transaction_type").equals("Credit")).filter(t->t.containsKey("total_surcharge")).map(t-> t.getBigDecimal("total_surcharge")).reduce(BigDecimal.ZERO, BigDecimal::add); - BigDecimal total_charge_debit = transactionsOfDay.stream().filter(t->t.getString("transaction_type").equals("Debit")).filter(t->t.containsKey("total_surcharge")).map(t-> t.getBigDecimal("total_surcharge")).reduce(BigDecimal.ZERO, BigDecimal::add); - BigDecimal net_amount_credit = transactionsOfDay.stream().filter(t->t.getString("transaction_type").equals("Credit")).filter(t->t.containsKey("settle_amount")).map(t-> t.getBigDecimal("settle_amount")).reduce(BigDecimal.ZERO, BigDecimal::add); - BigDecimal net_amount_debit = transactionsOfDay.stream().filter(t->t.getString("transaction_type").equals("Debit")).filter(t->t.containsKey("settle_amount")).map(t-> t.getBigDecimal("settle_amount")).reduce(BigDecimal.ZERO, BigDecimal::add); - BigDecimal tax_amount_credit = transactionsOfDay.stream().filter(t->t.getString("transaction_type").equals("Credit")).filter(t->t.containsKey("tax_amount")).map(t-> t.getBigDecimal("tax_amount")).reduce(BigDecimal.ZERO, BigDecimal::add); - BigDecimal tax_amount_debit = transactionsOfDay.stream().filter(t->t.getString("transaction_type").equals("Debit")).filter(t->t.containsKey("tax_amount")).map(t-> t.getBigDecimal("tax_amount")).reduce(BigDecimal.ZERO, BigDecimal::add); + BigDecimal total_credit = transactionsOfDay.stream().filter(t -> t.getString("transaction_type").equals("Credit")).filter(t -> t.containsKey("clearing_amount")).map(t -> t.getBigDecimal("clearing_amount")).reduce(BigDecimal.ZERO, BigDecimal::add); + BigDecimal total_debit = transactionsOfDay.stream().filter(t -> t.getString("transaction_type").equals("Debit")).filter(t -> t.containsKey("clearing_amount")).map(t -> t.getBigDecimal("clearing_amount")).reduce(BigDecimal.ZERO, BigDecimal::add); + BigDecimal total_charge_credit = transactionsOfDay.stream().filter(t -> t.getString("transaction_type").equals("Credit")).filter(t -> t.containsKey("total_surcharge")).map(t -> t.getBigDecimal("total_surcharge")).reduce(BigDecimal.ZERO, BigDecimal::add); + BigDecimal total_charge_debit = transactionsOfDay.stream().filter(t -> t.getString("transaction_type").equals("Debit")).filter(t -> t.containsKey("total_surcharge")).map(t -> t.getBigDecimal("total_surcharge")).reduce(BigDecimal.ZERO, BigDecimal::add); + BigDecimal net_amount_credit = transactionsOfDay.stream().filter(t -> t.getString("transaction_type").equals("Credit")).filter(t -> t.containsKey("settle_amount")).map(t -> t.getBigDecimal("settle_amount")).reduce(BigDecimal.ZERO, BigDecimal::add); + BigDecimal net_amount_debit = transactionsOfDay.stream().filter(t -> t.getString("transaction_type").equals("Debit")).filter(t -> t.containsKey("settle_amount")).map(t -> t.getBigDecimal("settle_amount")).reduce(BigDecimal.ZERO, BigDecimal::add); + BigDecimal tax_amount_credit = transactionsOfDay.stream().filter(t -> t.getString("transaction_type").equals("Credit")).filter(t -> t.containsKey("tax_amount")).map(t -> t.getBigDecimal("tax_amount")).reduce(BigDecimal.ZERO, BigDecimal::add); + BigDecimal tax_amount_debit = transactionsOfDay.stream().filter(t -> t.getString("transaction_type").equals("Debit")).filter(t -> t.containsKey("tax_amount")).map(t -> t.getBigDecimal("tax_amount")).reduce(BigDecimal.ZERO, BigDecimal::add); BigDecimal tax_amount = tax_amount_credit.subtract(tax_amount_debit); - analysis.put("total_credit",total_credit.setScale(2,BigDecimal.ROUND_HALF_UP)); - analysis.put("total_debit",total_debit.setScale(2,BigDecimal.ROUND_HALF_UP)); - analysis.put("net_amount",net_amount_credit.subtract(net_amount_debit).setScale(2,BigDecimal.ROUND_HALF_UP)); - analysis.put("tax_amount",tax_amount.setScale(2,BigDecimal.ROUND_HALF_UP)); - analysis.put("total_charge",total_charge_credit.subtract(total_charge_debit).add(tax_amount).setScale(2,BigDecimal.ROUND_HALF_UP)); - analysis.put("gross_amount",total_credit.subtract(total_debit).setScale(2,BigDecimal.ROUND_HALF_UP)); - dayAnalysisMap.put(entry.getKey(),analysis); + analysis.put("total_credit", total_credit.setScale(2, RoundingMode.HALF_UP)); + analysis.put("total_debit", total_debit.setScale(2, RoundingMode.HALF_UP)); + analysis.put("net_amount", net_amount_credit.subtract(net_amount_debit).setScale(2, RoundingMode.HALF_UP)); + analysis.put("tax_amount", tax_amount.setScale(2, RoundingMode.HALF_UP)); + analysis.put("total_charge", total_charge_credit.subtract(total_charge_debit).add(tax_amount).setScale(2, RoundingMode.HALF_UP)); + analysis.put("gross_amount", total_credit.subtract(total_debit).setScale(2, RoundingMode.HALF_UP)); + dayAnalysisMap.put(entry.getKey(), analysis); } return dayAnalysisMap; } + @Override public void exportListClearingTransactions(int client_id, String clearingDetailId, JSONObject partner, HttpServletResponse resp) { OutputStream ous = null; @@ -738,9 +741,9 @@ public class CleanServiceImpl implements CleanService, ManagerTodoNoticeProvider Sheet sheet = wb.createSheet("Merchant_Settlement_Info_" + DateFormatUtils.format(reportDate, "yyyyMMdd")); int rowNum = 0; Row row = sheet.createRow(rowNum); - String[] title = { "order Id", "Client Order Id", "Transaction Time", "Channel", "Gateway", "Exchange Rate", "Transaction Type", "Currency", - "Input Amount", "Total Amount", "Clearing Amount", "Sruchange Rate", "Settle Amount", "Remark" }; - String[] analysis = { "Total Credit", "Total Debit", "Gross Amount", "Total Charge", "Net Amount" }; + String[] title = {"order Id", "Client Order Id", "Transaction Time", "Channel", "Gateway", "Exchange Rate", "Transaction Type", "Currency", + "Input Amount", "Total Amount", "Clearing Amount", "Sruchange Rate", "Settle Amount", "Remark"}; + String[] analysis = {"Total Credit", "Total Debit", "Gross Amount", "Total Charge", "Net Amount"}; for (int i = 0; i < title.length; i++) { row.createCell(i, Cell.CELL_TYPE_STRING).setCellValue(title[i]); } @@ -755,7 +758,7 @@ public class CleanServiceImpl implements CleanService, ManagerTodoNoticeProvider row.createCell(0, Cell.CELL_TYPE_STRING).setCellValue(settle.getString("order_id")); row.createCell(1, Cell.CELL_TYPE_STRING).setCellValue(settle.getString("client_order_id")); Calendar calendar = (Calendar) settle.get("transaction_time"); - row.createCell(2, Cell.CELL_TYPE_STRING).setCellValue(DateFormatUtils.format(calendar, "yyyy-MM-dd HH:mm:ss",calendar.getTimeZone())); + row.createCell(2, Cell.CELL_TYPE_STRING).setCellValue(DateFormatUtils.format(calendar, "yyyy-MM-dd HH:mm:ss", calendar.getTimeZone())); row.createCell(3, Cell.CELL_TYPE_STRING).setCellValue(settle.getString("channel")); if (settle.getInteger("gateway") != null) { row.createCell(4, Cell.CELL_TYPE_STRING).setCellValue(TradeType.fromGatewayNumber(settle.getIntValue("gateway")).getTradeType()); @@ -937,15 +940,23 @@ public class CleanServiceImpl implements CleanService, ManagerTodoNoticeProvider attachList.add(attach1); JSONObject attach2 = new JSONObject(); - List abaFileList = getAba(date); + List abaFileList = getAba(date, "CBA"); String fileName2 = "Merchant_Settlement_Info_aba_" + DateFormatUtils.format(date, "yyyyMMdd"); if (abaFileList.size() > 1) { fileName2 += ".zip"; - attach2.put("content", Base64.encodeBase64String(getZipByteArr(abaFileList))); + List entities = new ArrayList<>(); + int index = 0; + for (ABAFile file : abaFileList) { + JSONObject entity = new JSONObject(); + entity.put("name", file.filename()); + entity.put("byteArr", file.output(index++)); + entities.add(entity); + } + attach2.put("content", Base64.encodeBase64String(getZipByteArr(entities))); } else { fileName2 += ".aba"; - attach2.put("content", Base64.encodeBase64String((byte[]) abaFileList.get(0).get("byteArr"))); + attach2.put("content", Base64.encodeBase64String(abaFileList.get(0).output(1))); } attach2.put("name", fileName2); attachList.add(attach2); diff --git a/src/main/java/au/com/royalpay/payment/manage/management/clearing/core/impl/SettleDelayConfigurerImpl.java b/src/main/java/au/com/royalpay/payment/manage/management/clearing/core/impl/SettleDelayConfigurerImpl.java index 253071598..f791d1d1f 100644 --- a/src/main/java/au/com/royalpay/payment/manage/management/clearing/core/impl/SettleDelayConfigurerImpl.java +++ b/src/main/java/au/com/royalpay/payment/manage/management/clearing/core/impl/SettleDelayConfigurerImpl.java @@ -258,7 +258,7 @@ public class SettleDelayConfigurerImpl implements SettleDelayConfigurer { } totalSurcharge = totalSurcharge.add(surcharge); } - BigDecimal cashbackAmount = CurrencyAmountUtils.scale(totalSurcharge.multiply(attend.getBigDecimal("surcharge_discount")).divide(CommonConsts.HUNDRED, 2, BigDecimal.ROUND_HALF_UP), PlatformEnvironment.getEnv().getForeignCurrency()); + BigDecimal cashbackAmount = CurrencyAmountUtils.scale(totalSurcharge.multiply(attend.getBigDecimal("surcharge_discount")).divide(CommonConsts.HUNDRED, 2, RoundingMode.HALF_UP), PlatformEnvironment.getEnv().getForeignCurrency()); String remark = "Surcharge cashback for " + saturday.toString("dd/MMM/yyyy", Locale.ENGLISH) + " ~ " + sunday.toString("dd/MMM/yyyy", Locale.ENGLISH); if (cashbackAmount.compareTo(BigDecimal.ZERO) > 0) { cashbackService.saveSurchargeDiscountCashback(clientId, clientMoniker, transactionOrderId, cashbackAmount, date, remark); diff --git a/src/main/java/au/com/royalpay/payment/manage/redpack/core/impls/ActRedPackServiceImpl.java b/src/main/java/au/com/royalpay/payment/manage/redpack/core/impls/ActRedPackServiceImpl.java index c56780750..8b93b74b1 100644 --- a/src/main/java/au/com/royalpay/payment/manage/redpack/core/impls/ActRedPackServiceImpl.java +++ b/src/main/java/au/com/royalpay/payment/manage/redpack/core/impls/ActRedPackServiceImpl.java @@ -119,7 +119,7 @@ public class ActRedPackServiceImpl implements ActRedPackService { if ("CNY".equals(currency)) { JSONObject income = transactionService.findIncomeByOrderId(orderId); BigDecimal exchange = income.getBigDecimal("exchange_rate"); - currencyAmount = exchange.multiply(currencyAmount).setScale(2, BigDecimal.ROUND_HALF_UP); + currencyAmount = exchange.multiply(currencyAmount).setScale(2, RoundingMode.HALF_UP); } if (ruleOrderTotal != null) { if (!(currencyAmount.compareTo(ruleOrderTotal) >= 0)) { diff --git a/src/main/java/au/com/royalpay/payment/manage/support/abafile/ABAConfig.java b/src/main/java/au/com/royalpay/payment/manage/support/abafile/ABAConfig.java new file mode 100644 index 000000000..37fff489b --- /dev/null +++ b/src/main/java/au/com/royalpay/payment/manage/support/abafile/ABAConfig.java @@ -0,0 +1,111 @@ +package au.com.royalpay.payment.manage.support.abafile; + +import au.com.royalpay.payment.tools.exceptions.BadRequestException; +import org.springframework.boot.context.properties.ConfigurationProperties; + +import java.util.Date; +import java.util.HashMap; +import java.util.Map; + +/** + * Create by yixian at 2018-06-25 17:39 + */ +@ConfigurationProperties("settle.abafile") +public class ABAConfig { + + private Map bank = new HashMap<>(); + private String defaultBank; + + public ABAFile initFile(String bank, Date settleDate) { + ABABase base = this.bank.get(bank); + if (base == null) { + throw new BadRequestException("Invalid bank:" + bank); + } + return base.initFile(settleDate); + } + + public String getDefaultBank() { + return defaultBank; + } + + public ABAConfig setDefaultBank(String defaultBank) { + this.defaultBank = defaultBank; + return this; + } + + public Map getBank() { + return bank; + } + + public ABAConfig setBank(Map bank) { + this.bank = bank; + return this; + } + + public static class ABABase { + private boolean manualSending = false; + private String bank; + private String apca; + private String bsb; + private String accountNo; + private String accountName; + + public ABAFile initFile(Date settleDate) { + return new ABAFile(this, settleDate); + } + + public boolean isManualSending() { + return manualSending; + } + + public ABABase setManualSending(boolean manualSending) { + this.manualSending = manualSending; + return this; + } + + public String getBank() { + return bank; + } + + public ABABase setBank(String bank) { + this.bank = bank; + return this; + } + + public String getApca() { + return apca; + } + + public ABABase setApca(String apca) { + this.apca = apca; + return this; + } + + public String getBsb() { + return bsb; + } + + public ABABase setBsb(String bsb) { + this.bsb = bsb; + return this; + } + + public String getAccountNo() { + return accountNo; + } + + public ABABase setAccountNo(String accountNo) { + this.accountNo = accountNo; + return this; + } + + public String getAccountName() { + return accountName; + } + + public ABABase setAccountName(String accountName) { + this.accountName = accountName; + return this; + } + } +} 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 e84458bb1..7c55303b1 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 @@ -15,21 +15,17 @@ import java.util.List; public class ABAFile { private final String baseLine = StringUtils.repeat(" ", 120); - private int sequenceNo = 1; - private String bank = "CBA"; - private String company = "Tunnel Show Pty Ltd"; - private String selfBSB = "063109"; - private String selfAccountNo = "11655861"; - private String apca = "301500"; + private final ABAConfig.ABABase base; private final Date settleDate; private List settlements; private BigDecimal totalSettleAmount; + private Date operateTime; - public ABAFile(Date settleDate, int index) { + public ABAFile(ABAConfig.ABABase base, Date settleDate) { + this.base = base; this.settleDate = settleDate; settlements = new ArrayList<>(); totalSettleAmount = BigDecimal.ZERO; - sequenceNo = index; } public void addSettleMerchant(String bsbNo, String accountNo, String accountName, BigDecimal settleAmount) { @@ -37,11 +33,19 @@ public class ABAFile { totalSettleAmount = totalSettleAmount.add(settleAmount); } - public byte[] output() { + public boolean manualSending() { + return base.isManualSending(); + } + + public String bank() { + return base.getBank(); + } + + public byte[] output(int serializeNo) { StringWriter out = new StringWriter(); PrintWriter writer = new PrintWriter(out); - writer.print(generateTopLine() + "\r\n"); + writer.print(generateTopLine(serializeNo) + "\r\n"); for (SettleMerchantInfo info : settlements) { String line = info.settleLine(); writer.print(line + "\r\n"); @@ -66,27 +70,27 @@ public class ABAFile { private String generateBalanceLine() { StringBuilder lineBuilder = new StringBuilder(baseLine); lineBuilder.replace(0, 1, "1"); - lineBuilder.replace(1, 8, bsbNo(selfBSB)); - lineBuilder.replace(8, 17, StringUtils.leftPad(selfAccountNo, 9)); + lineBuilder.replace(1, 8, bsbNo(base.getBsb())); + lineBuilder.replace(8, 17, StringUtils.leftPad(base.getAccountNo(), 9)); lineBuilder.replace(18, 20, "13"); lineBuilder.replace(20, 30, amountString(totalSettleAmount, 10)); - lineBuilder.replace(30, 62, StringUtils.rightPad(StringUtils.substring(company, 0, 32), 32)); + lineBuilder.replace(30, 62, StringUtils.rightPad(StringUtils.substring(base.getAccountName(), 0, 32), 32)); lineBuilder.replace(62, 80, StringUtils.rightPad(DateFormatUtils.format(settleDate, "yyyyMMdd"), 18)); - lineBuilder.replace(80, 87, bsbNo(selfBSB)); - lineBuilder.replace(87, 96, StringUtils.leftPad(selfAccountNo, 9)); - lineBuilder.replace(96, 112, StringUtils.left(StringUtils.rightPad(company, 16), 16)); + lineBuilder.replace(80, 87, bsbNo(base.getBsb())); + lineBuilder.replace(87, 96, StringUtils.leftPad(base.getAccountNo(), 9)); + lineBuilder.replace(96, 112, StringUtils.left(StringUtils.rightPad(base.getAccountName(), 16), 16)); lineBuilder.replace(112, 120, StringUtils.leftPad("0", 8, "0")); return lineBuilder.toString(); } - private String generateTopLine() { + private String generateTopLine(int serializeNo) { StringBuilder topLineBuilder = new StringBuilder(baseLine); topLineBuilder.replace(0, 1, "0"); topLineBuilder.replace(18, 20, StringUtils.leftPad("1", 2, "0")); - Assert.isTrue(bank.length() == 3, "Invalid Bank Code:" + bank); - topLineBuilder.replace(20, 23, bank); - topLineBuilder.replace(30, 56, StringUtils.rightPad(company, 26)); - topLineBuilder.replace(56, 62, StringUtils.leftPad(apca, 6, "0")); + Assert.isTrue(base.getBank().length() == 3, "Invalid Bank Code:" + base.getBank()); + topLineBuilder.replace(20, 23, base.getBank()); + topLineBuilder.replace(30, 56, StringUtils.rightPad(base.getAccountName(), 26)); + topLineBuilder.replace(56, 62, StringUtils.leftPad(base.getApca(), 6, "0")); topLineBuilder.replace(62, 74, StringUtils.rightPad(DateFormatUtils.format(settleDate, "yyyyMMdd"), 12)); topLineBuilder.replace(74, 80, DateFormatUtils.format(settleDate, "ddMMyy")); return topLineBuilder.toString(); @@ -102,6 +106,22 @@ public class ABAFile { return StringUtils.leftPad("" + amount, size, "0"); } + public void setOperateTime(Date operateTime) { + this.operateTime = operateTime; + } + + public String getOperateTimeString() { + return operateTime == null ? "" : DateFormatUtils.format(operateTime, "yyyyMMddHHmmss"); + } + + public Date getOperateTime() { + return operateTime; + } + + public String filename() { + return "Merchant_Settlement_Info_" + bank() + "_" + getOperateTimeString() + ".aba"; + } + private class SettleMerchantInfo { private final String bsbNo; private final String accountNo; @@ -124,9 +144,9 @@ public class ABAFile { lineBuilder.replace(20, 30, getSettleAmount()); lineBuilder.replace(30, 62, getAccountName()); lineBuilder.replace(62, 80, StringUtils.rightPad("RoyalPay" + DateFormatUtils.format(settleDate, "yyyyMMdd"), 18)); - lineBuilder.replace(80, 87, bsbNo(selfBSB)); - lineBuilder.replace(87, 96, StringUtils.leftPad(selfAccountNo, 9)); - lineBuilder.replace(96, 112, StringUtils.left(StringUtils.rightPad(company, 16), 16)); + lineBuilder.replace(80, 87, bsbNo(base.getBsb())); + lineBuilder.replace(87, 96, StringUtils.leftPad(base.getAccountNo(), 9)); + lineBuilder.replace(96, 112, StringUtils.left(StringUtils.rightPad(base.getAccountName(), 16), 16)); lineBuilder.replace(112, 120, StringUtils.leftPad("0", 8, "0")); return lineBuilder.toString(); } diff --git a/src/main/java/au/com/royalpay/payment/manage/support/abafile/ABATemplate.java b/src/main/java/au/com/royalpay/payment/manage/support/abafile/ABATemplate.java new file mode 100644 index 000000000..0a82a12bf --- /dev/null +++ b/src/main/java/au/com/royalpay/payment/manage/support/abafile/ABATemplate.java @@ -0,0 +1,27 @@ +package au.com.royalpay.payment.manage.support.abafile; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.context.properties.EnableConfigurationProperties; +import org.springframework.stereotype.Component; + +import javax.annotation.PostConstruct; + +/** + * Create by yixian at 2018-06-25 17:16 + */ +@Component +@EnableConfigurationProperties(ABAConfig.class) +public class ABATemplate { + private static ABATemplate tpl; + @Autowired + private ABAConfig config; + + @PostConstruct + public void init() { + tpl = this; + } + + public static ABAConfig getConfig() { + return tpl.config; + } +} diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 456d70c5e..055ba877d 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -111,3 +111,20 @@ mail.mailgun.default.merchantlist=merchants@mail.royalpay.com.au ############## royalpay.sms.appid=1400094878 royalpay.sms.appkey=43390d81e20c5191c278fbf4cd275be2 + + +#清算银行配置 +settle.abafile.default-bank=CBA + +settle.abafile.bank.CBA.bank=CBA +settle.abafile.bank.CBA.apca=301500 +settle.abafile.bank.CBA.bsb=063109 +settle.abafile.bank.CBA.account-no=11655861 +settle.abafile.bank.CBA.account-name=Tunnel Show Pty Ltd + +settle.abafile.bank.ANZ.manual-sending=true +settle.abafile.bank.ANZ.bank=ANZ +settle.abafile.bank.ANZ.apca=514624 +settle.abafile.bank.ANZ.bsb=013006 +settle.abafile.bank.ANZ.account-no=837022519 +settle.abafile.bank.ANZ.account-name=Tunnel Show Pty Ltd \ No newline at end of file From 418a84b7bde39bd6aff7b060461fee4bde294cbd Mon Sep 17 00:00:00 2001 From: yuan <1551130722@qq.com> Date: Tue, 26 Jun 2018 10:42:55 +0800 Subject: [PATCH 10/21] fix invoice bug --- .../web/PartnerInvoiceController.java | 21 +++++++++++++++++-- .../ui/static/invoice/invoice_assistant.js | 6 ++++-- 2 files changed, 23 insertions(+), 4 deletions(-) diff --git a/src/main/java/au/com/royalpay/payment/manage/partnerinvoice/web/PartnerInvoiceController.java b/src/main/java/au/com/royalpay/payment/manage/partnerinvoice/web/PartnerInvoiceController.java index 24698d698..83d792f9c 100644 --- a/src/main/java/au/com/royalpay/payment/manage/partnerinvoice/web/PartnerInvoiceController.java +++ b/src/main/java/au/com/royalpay/payment/manage/partnerinvoice/web/PartnerInvoiceController.java @@ -1,9 +1,11 @@ package au.com.royalpay.payment.manage.partnerinvoice.web; +import au.com.royalpay.payment.manage.merchants.core.ClientManager; import au.com.royalpay.payment.manage.permission.manager.PartnerMapping; import au.com.royalpay.payment.manage.tradelog.beans.TradeLogQuery; import au.com.royalpay.payment.manage.tradelog.core.TradeLogService; import au.com.royalpay.payment.tools.CommonConsts; +import au.com.royalpay.payment.tools.exceptions.NotFoundException; import au.com.royalpay.payment.tools.permission.enums.PartnerRole; import com.alibaba.fastjson.JSONObject; import org.springframework.web.bind.annotation.*; @@ -21,13 +23,28 @@ public class PartnerInvoiceController { @Resource private TradeLogService tradeLogService; + @Resource + private ClientManager clientManager; + @PartnerMapping(value = "/trans_flow",method = RequestMethod.GET,roles = PartnerRole.ADMIN) public JSONObject listTransFlow(TradeLogQuery query,@ModelAttribute(CommonConsts.PARTNER_STATUS) JSONObject partner) throws Exception { return tradeLogService.listPartnerTransFlowPage(query,partner); } @PartnerMapping(value = "/trans_flow/pdf", method = RequestMethod.GET,roles = PartnerRole.ADMIN) - public void exportTransFlowPDF(TradeLogQuery query,@ModelAttribute(CommonConsts.PARTNER_STATUS) JSONObject partner, HttpServletResponse httpResponse) throws Exception { - tradeLogService.exportTransFlow(query,partner,httpResponse); + public void exportTransFlowPDF(TradeLogQuery query,HttpServletResponse httpResponse) throws Exception { + tradeLogService.exportTransFlow(query,getPartnerParams(query.getClient_ids()[0]),httpResponse); + } + + private JSONObject getPartnerParams(String client_id){ + JSONObject client = clientManager.getClientInfo(Integer.parseInt(client_id)); + if(client==null){ + throw new NotFoundException("Client Not Exists"); + } + JSONObject params = new JSONObject(); + params.put("client_id",client.getIntValue("client_id")); + params.put("client",client); + params.put("client_moniker",client.getString("client_moniker")); + return params; } } diff --git a/src/main/ui/static/invoice/invoice_assistant.js b/src/main/ui/static/invoice/invoice_assistant.js index b8332ca1a..239828ae3 100644 --- a/src/main/ui/static/invoice/invoice_assistant.js +++ b/src/main/ui/static/invoice/invoice_assistant.js @@ -12,13 +12,12 @@ define(['angular','decimal'], function (angular,decimal) { }) }]); app.controller('partnerInvoiceApp', ['$scope', '$http','$filter', 'commonDialog', function ($scope, $http,$filter, commonDialog) { - $scope.params = {channel:'ALL',clearing_status:-1}; + $scope.params = {channel:'ALL',clearing_status:-1,client_ids:[$scope.currentUser.client.client_id]}; $scope.today = new Date(); $scope.pagination = {}; $scope.today = new Date(); $scope.clients = [$scope.currentUser.client]; if ($scope.currentUser.client.has_children) { - $scope.params.client_ids = [$scope.currentUser.client.client_id]; $http.get('/client/partner_info/sub_partners').then(function (resp) { var clientList = resp.data; clientList.forEach(function (client) { @@ -126,6 +125,9 @@ define(['angular','decimal'], function (angular,decimal) { params.page = page || $scope.pagination.page || 1; url += connectSymbol + 'page=' + params.page; url+="&channel=ALL&clearing_status=-1"; + if(params.client_ids){ + url+=connectSymbol +'client_ids='+params.client_ids; + } return url; } From 0de03e2364ed25df938934c5a716d509548295ea Mon Sep 17 00:00:00 2001 From: yixian Date: Tue, 26 Jun 2018 10:48:47 +0800 Subject: [PATCH 11/21] distribute bank --- .../clearing/core/CleanService.java | 4 ++ .../clearing/core/impl/CleanServiceImpl.java | 58 +++++++++++++++++++ .../clearing/web/SettlementDevController.java | 42 ++++++++++++-- .../mappers/log/ClearingDetailMapper.java | 5 ++ .../manage/mappers/log/ClearingLogMapper.java | 10 +++- .../manage/support/abafile/ABAConfig.java | 22 ++++++- src/main/resources/application.properties | 1 + .../mappers/log/ClearingDetailMapper.xml | 3 + .../manage/mappers/log/ClearingLogMapper.xml | 3 + 9 files changed, 138 insertions(+), 10 deletions(-) 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 097b8668a..36a053966 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 @@ -84,4 +84,8 @@ public interface CleanService { JSONObject findLogSettleByDate(Date date); JSONObject validTransactions(Date dt, boolean fix, boolean b, boolean b1); + + void distributeBank(Date dt, int clearingId, JSONObject bankDistribution); + + void lockClearingLog(Date dt, int clearingId); } 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 fd8336fd0..0779043c8 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 @@ -15,6 +15,7 @@ import au.com.royalpay.payment.manage.merchants.core.ClientManager; import au.com.royalpay.payment.manage.notice.core.MailService; import au.com.royalpay.payment.manage.signin.beans.TodoNotice; import au.com.royalpay.payment.manage.signin.core.ManagerTodoNoticeProvider; +import au.com.royalpay.payment.manage.support.abafile.ABAConfig; import au.com.royalpay.payment.manage.support.abafile.ABAFile; import au.com.royalpay.payment.manage.support.abafile.ABATemplate; import au.com.royalpay.payment.manage.tradelog.beans.ClearingLogQuery; @@ -57,6 +58,7 @@ import org.springframework.context.ApplicationEventPublisherAware; import org.springframework.data.redis.core.StringRedisTemplate; 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; @@ -223,6 +225,7 @@ public class CleanServiceImpl implements CleanService, ManagerTodoNoticeProvider return data; }).collect(Collectors.toList()); log.put("bank_statistics", bankStatistics); + log.put("editable", DateUtils.isSameDay(log.getDate("settle_date"), new Date()) && log.getBooleanValue("editable")); } total.put("logs", logs); total.put("details", details); @@ -998,6 +1001,7 @@ public class CleanServiceImpl implements CleanService, ManagerTodoNoticeProvider } } sendTaskFinishMessages(ManagerRole.FINANCIAL_STAFF, "清算文件已发送清算方", "发送清算通知"); + clearingLogMapper.lockSettlements(date); } catch (IOException e) { logger.error("生成excel字节数组发生错误"); } catch (URISyntaxException e) { @@ -1070,6 +1074,60 @@ public class CleanServiceImpl implements CleanService, ManagerTodoNoticeProvider return report; } + @Override + @Transactional + public void distributeBank(Date date, int clearingId, JSONObject bankDistribution) { + if (!DateUtils.isSameDay(date, new Date())) { + throw new ForbiddenException("Only today's settlement file can be modified"); + } + JSONObject log = clearingLogMapper.findById(clearingId); + if (log == null || !DateUtils.isSameDay(log.getDate("settle_date"), date)) { + throw new NotFoundException("Settlement log not found"); + } + if (!log.getBooleanValue("editable")) { + throw new ForbiddenException("Settlement log has been sent and unable to edit"); + } + ABAConfig config = ABATemplate.getConfig(); + String defaultBank = config.getRemainsTo(); + clearingDetailMapper.updateAllBanks(defaultBank, clearingId); + List details = clearingDetailMapper.listReportsOfSettlement(clearingId); + details.sort((log1, log2) -> log2.getBigDecimal("clearing_amount").compareTo(log1.getBigDecimal("clearing_amount"))); + bankDistribution.remove(defaultBank); + for (String bank : bankDistribution.keySet()) { + List detailIds = new ArrayList<>(); + ABAConfig.ABABase base = config.getBankBase(bank); + if (base == null) { + throw new BadRequestException("Invalid bank code:" + bank); + } + BigDecimal bankAmount = bankDistribution.getBigDecimal(bank); + for (JSONObject detail : details) { + String detailBank = detail.getString("settle_bank"); + if (defaultBank.equals(detailBank)) { + BigDecimal amount = detail.getBigDecimal("clearing_amount"); + if (amount.compareTo(BigDecimal.ZERO) > 0 && bankAmount.compareTo(amount) > 0) { + detailIds.add(detail.getString("clear_detail_id")); + bankAmount = bankAmount.subtract(amount); + detail.put("settle_bank", bank); + } + } + } + clearingDetailMapper.updateBanks(bank, detailIds); + + } + } + + @Override + public void lockClearingLog(Date date, int clearingId) { + if (!DateUtils.isSameDay(date, new Date())) { + throw new ForbiddenException("Only today's settlement file can be modified"); + } + JSONObject log = clearingLogMapper.findById(clearingId); + if (log == null || !DateUtils.isSameDay(log.getDate("settle_date"), date)) { + throw new NotFoundException("Settlement log not found"); + } + clearingLogMapper.setLogEditable(false, clearingId); + } + private byte[] getZipByteArr(List fileByteArrWithName) throws IOException { ByteArrayOutputStream bos = new ByteArrayOutputStream(); ZipOutputStream zos = new ZipOutputStream(bos); 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 d07bb5ea7..74f00e973 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 @@ -2,6 +2,7 @@ package au.com.royalpay.payment.manage.management.clearing.web; import au.com.royalpay.payment.manage.management.clearing.core.CleanService; import au.com.royalpay.payment.manage.permission.manager.ManagerMapping; +import au.com.royalpay.payment.manage.support.abafile.ABATemplate; import au.com.royalpay.payment.tools.permission.enums.ManagerRole; import au.com.royalpay.payment.tools.CommonConsts; import au.com.royalpay.payment.tools.exceptions.BadRequestException; @@ -49,6 +50,35 @@ public class SettlementDevController { } } + @GetMapping("/available_banks") + public JSONObject getAvailableBanks() { + List banks = ABATemplate.getConfig().availableBanks(); + JSONObject res = new JSONObject(); + res.put("remains_to", ABATemplate.getConfig().getRemainsTo()); + res.put("banks", banks); + return res; + } + + @PutMapping("/reports/{date}/clearings/{clearingId}/bank_distribution") + public void modifyClearingBank(@PathVariable String date, @PathVariable int clearingId, @RequestBody JSONObject bankDistribution) { + try { + Date dt = dateFormat.parse(date); + cleanService.distributeBank(dt, clearingId, bankDistribution); + } catch (ParseException e) { + throw new BadRequestException("error.payment.valid.invalid_date_format"); + } + } + + @PutMapping("/reports/{date}/clearings/{clearingId}/lock") + public void lockClearingLog(@PathVariable String date,@PathVariable int clearingId){ + try { + Date dt = dateFormat.parse(date); + cleanService.lockClearingLog(dt, clearingId); + } catch (ParseException e) { + throw new BadRequestException("error.payment.valid.invalid_date_format"); + } + } + @RequestMapping("/reports/{date}/settlement_csv") public void getSettlementCsv(@PathVariable String date, HttpServletResponse resp) throws IOException { try { @@ -79,23 +109,23 @@ public class SettlementDevController { } } - @ManagerMapping(value = "/reports/{date}/send_settlement_xlsx/{checkCode}",role = {ManagerRole.FINANCIAL_STAFF}) + @ManagerMapping(value = "/reports/{date}/send_settlement_xlsx/{checkCode}", role = {ManagerRole.FINANCIAL_STAFF}) public JSONObject sendSettlementMail(@PathVariable("date") String date, @PathVariable("checkCode") String checkCode) { Date dt = null; try { dt = dateFormat.parse(date); } catch (ParseException e) { } - return cleanService.sendSettlementMail(dt,checkCode); + return cleanService.sendSettlementMail(dt, checkCode); } - @ManagerMapping(value = "/reports/send_checkcode",role = {ManagerRole.FINANCIAL_STAFF}) - public void sendCheckCode(@ModelAttribute(CommonConsts.MANAGER_STATUS) JSONObject manager){ - cleanService.sendCheckCode(new Date(),manager); + @ManagerMapping(value = "/reports/send_checkcode", role = {ManagerRole.FINANCIAL_STAFF}) + public void sendCheckCode(@ModelAttribute(CommonConsts.MANAGER_STATUS) JSONObject manager) { + cleanService.sendCheckCode(new Date(), manager); } @RequestMapping(value = "/reports/{date}/send_status") - public JSONObject sendStatus(@PathVariable String date){ + public JSONObject 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/ClearingDetailMapper.java b/src/main/java/au/com/royalpay/payment/manage/mappers/log/ClearingDetailMapper.java index b4542d52c..e37ac76e9 100644 --- a/src/main/java/au/com/royalpay/payment/manage/mappers/log/ClearingDetailMapper.java +++ b/src/main/java/au/com/royalpay/payment/manage/mappers/log/ClearingDetailMapper.java @@ -40,4 +40,9 @@ public interface ClearingDetailMapper { JSONObject listReportByDate(@Param("report_date") Date date, @Param("client_id") int clientId); PageList listClientSettlementLog(JSONObject params, PageBounds pagination); + + void updateAllBanks(@Param("settle_bank") String bank, @Param("clearing_id") int clearingId); + + @AutoSql(type = SqlType.UPDATE) + void updateBanks(@Param("settle_bank") String bank,@Param("clear_detail_id") List clearingDetailIds); } 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 fa7395a18..ca402dab9 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 @@ -31,11 +31,19 @@ public interface ClearingLogMapper { @AutoSql(type = SqlType.UPDATE) void update(JSONObject update); - List getSettlementChannelsMonthReport(@Param("year") int year, @Param("month") int month); + List getSettlementChannelsMonthReport(@Param("year") int year, @Param("month") int month); List getMondayClearing(@Param("begin") Date begin, @Param("end") Date end); List getSettlementChannelsDailyReport(@Param("date") Date date); JSONObject getSettleDataDailyReport(@Param("date") Date date); + + void lockSettlements(@Param("date") Date date); + + @AutoSql(type = SqlType.SELECT) + JSONObject findById(@Param("clearing_id") int clearingId); + + @AutoSql(type = SqlType.UPDATE) + void setLogEditable(@Param("editable") boolean editable, @Param("clearing_id") int clearingId); } diff --git a/src/main/java/au/com/royalpay/payment/manage/support/abafile/ABAConfig.java b/src/main/java/au/com/royalpay/payment/manage/support/abafile/ABAConfig.java index 37fff489b..a7b70591f 100644 --- a/src/main/java/au/com/royalpay/payment/manage/support/abafile/ABAConfig.java +++ b/src/main/java/au/com/royalpay/payment/manage/support/abafile/ABAConfig.java @@ -3,9 +3,7 @@ package au.com.royalpay.payment.manage.support.abafile; import au.com.royalpay.payment.tools.exceptions.BadRequestException; import org.springframework.boot.context.properties.ConfigurationProperties; -import java.util.Date; -import java.util.HashMap; -import java.util.Map; +import java.util.*; /** * Create by yixian at 2018-06-25 17:39 @@ -15,6 +13,7 @@ public class ABAConfig { private Map bank = new HashMap<>(); private String defaultBank; + private String remainsTo; public ABAFile initFile(String bank, Date settleDate) { ABABase base = this.bank.get(bank); @@ -37,11 +36,28 @@ public class ABAConfig { return bank; } + public ABABase getBankBase(String bank) { + return this.bank.get(bank); + } + public ABAConfig setBank(Map bank) { this.bank = bank; return this; } + public String getRemainsTo() { + return remainsTo; + } + + public ABAConfig setRemainsTo(String remainsTo) { + this.remainsTo = remainsTo; + return this; + } + + public List availableBanks() { + return new ArrayList<>(bank.keySet()); + } + public static class ABABase { private boolean manualSending = false; private String bank; diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 055ba877d..4c7992c26 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -115,6 +115,7 @@ royalpay.sms.appkey=43390d81e20c5191c278fbf4cd275be2 #清算银行配置 settle.abafile.default-bank=CBA +settle.abafile.remains-to=ANZ settle.abafile.bank.CBA.bank=CBA settle.abafile.bank.CBA.apca=301500 diff --git a/src/main/resources/au/com/royalpay/payment/manage/mappers/log/ClearingDetailMapper.xml b/src/main/resources/au/com/royalpay/payment/manage/mappers/log/ClearingDetailMapper.xml index ef0029c88..76f5845c9 100644 --- a/src/main/resources/au/com/royalpay/payment/manage/mappers/log/ClearingDetailMapper.xml +++ b/src/main/resources/au/com/royalpay/payment/manage/mappers/log/ClearingDetailMapper.xml @@ -1,6 +1,9 @@ + + update log_clearing_detail set settle_bank=#{bank} where clearing_id=#{clearing_id} + Date: Tue, 26 Jun 2018 12:37:02 +0800 Subject: [PATCH 12/21] settle log view edit --- .../core/impls/DashboardServiceImpl.java | 1 + .../beans/CityPartnerCommissionAnalysis.java | 1 + .../beans/ReferrerCommissionAnalysis.java | 1 + .../impls/XPlanFundConfigServiceImpl.java | 3 +- .../clearing/core/CleanService.java | 2 +- .../clearing/core/impl/CleanServiceImpl.java | 21 ++- .../core/impl/SettleDelayConfigurerImpl.java | 1 + .../core/impls/ActRedPackServiceImpl.java | 1 + src/main/ui/static/analysis/clearing-log.js | 176 ++++++++++++------ .../analysis/templates/settlement_detail.html | 93 +++++++-- 10 files changed, 210 insertions(+), 90 deletions(-) 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 ce393d720..c9937503d 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 @@ -27,6 +27,7 @@ import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.stereotype.Service; import java.math.BigDecimal; +import java.math.RoundingMode; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; diff --git a/src/main/java/au/com/royalpay/payment/manage/citypartner/beans/CityPartnerCommissionAnalysis.java b/src/main/java/au/com/royalpay/payment/manage/citypartner/beans/CityPartnerCommissionAnalysis.java index 0f0a9133b..ff589afc3 100644 --- a/src/main/java/au/com/royalpay/payment/manage/citypartner/beans/CityPartnerCommissionAnalysis.java +++ b/src/main/java/au/com/royalpay/payment/manage/citypartner/beans/CityPartnerCommissionAnalysis.java @@ -6,6 +6,7 @@ import au.com.royalpay.payment.tools.exceptions.ServerErrorException; import com.alibaba.fastjson.JSONObject; import java.math.BigDecimal; +import java.math.RoundingMode; import java.util.*; /** diff --git a/src/main/java/au/com/royalpay/payment/manage/citypartner/beans/ReferrerCommissionAnalysis.java b/src/main/java/au/com/royalpay/payment/manage/citypartner/beans/ReferrerCommissionAnalysis.java index af2bc0ea4..611b090a8 100644 --- a/src/main/java/au/com/royalpay/payment/manage/citypartner/beans/ReferrerCommissionAnalysis.java +++ b/src/main/java/au/com/royalpay/payment/manage/citypartner/beans/ReferrerCommissionAnalysis.java @@ -4,6 +4,7 @@ import au.com.royalpay.payment.tools.CommonConsts; import com.alibaba.fastjson.JSONObject; import java.math.BigDecimal; +import java.math.RoundingMode; import java.util.*; /** diff --git a/src/main/java/au/com/royalpay/payment/manage/fund/core/impls/XPlanFundConfigServiceImpl.java b/src/main/java/au/com/royalpay/payment/manage/fund/core/impls/XPlanFundConfigServiceImpl.java index 826c05081..56ee61c21 100644 --- a/src/main/java/au/com/royalpay/payment/manage/fund/core/impls/XPlanFundConfigServiceImpl.java +++ b/src/main/java/au/com/royalpay/payment/manage/fund/core/impls/XPlanFundConfigServiceImpl.java @@ -24,6 +24,7 @@ import com.github.miemiedev.mybatis.paginator.domain.PageList; import org.springframework.stereotype.Service; import java.math.BigDecimal; +import java.math.RoundingMode; import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -118,10 +119,10 @@ public class XPlanFundConfigServiceImpl implements XPlanFundConfigService { private JSONObject getClient(String clientMoniker) { JSONObject client = clientManager.getClientInfoByMoniker(clientMoniker); - client.putAll(clientConfigService.find(client.getIntValue("client_id"))); if (client == null) { throw new InvalidShortIdException(); } + client.putAll(clientConfigService.find(client.getIntValue("client_id"))); return client; } 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 36a053966..3fbe1e9ac 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,7 +43,7 @@ public interface CleanService { void settlementXlsx(Date date, HttpServletResponse response) throws IOException; - List getXlsx(Date date) throws IOException; + List getXlsx(Date dt, String bank) throws IOException; List getAba(Date dt, String bank) throws IOException; 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 0779043c8..4b2e53e46 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 @@ -211,7 +211,8 @@ public class CleanServiceImpl implements CleanService, ManagerTodoNoticeProvider addBigDecimal(total, log, "wechat_charge"); addBigDecimal(total, log, "royalpay_charge"); addBigDecimal(total, log, "net_amount"); - List logDetails = clearingDetailMapper.listReportsOfSettlement(log.getIntValue("clearing_id")); + int clearingId = log.getIntValue("clearing_id"); + List logDetails = clearingDetailMapper.listReportsOfSettlement(clearingId); details.addAll(logDetails); List banks = logDetails.stream().map(detail -> detail.getString("settle_bank")).distinct().collect(Collectors.toList()); List bankStatistics = banks.stream().map(bank -> { @@ -219,13 +220,14 @@ public class CleanServiceImpl implements CleanService, ManagerTodoNoticeProvider data.put("bank", bank); data.put("total_settle", logDetails.stream() .filter(detail -> bank.equals(detail.getString("settle_bank"))) - .map(detail -> detail.getBigDecimal("net_amount")) + .map(detail -> detail.getBigDecimal("clearing_amount")) .reduce(BigDecimal::add) ); return data; }).collect(Collectors.toList()); log.put("bank_statistics", bankStatistics); log.put("editable", DateUtils.isSameDay(log.getDate("settle_date"), new Date()) && log.getBooleanValue("editable")); + log.put("channel_analysis", clearingDetailAnalysisMapper.analysisChannelReport(clearingId)); } total.put("logs", logs); total.put("details", details); @@ -340,7 +342,7 @@ public class CleanServiceImpl implements CleanService, ManagerTodoNoticeProvider String filename = "Merchant_Settlement_Info_" + dateString + RandomStringUtils.random(8, false, true) + ".xlsx"; zos.putNextEntry(new ZipEntry(filename)); List details = clearingDetailMapper.listReportsOfSettlement(log.getIntValue("clearing_id")); - byte[] xlsx = generateSettleXlsxFile(dt, details); + byte[] xlsx = generateSettleXlsxFile(dt, details, null); IOUtils.write(xlsx, zos); } zos.flush(); @@ -348,7 +350,7 @@ public class CleanServiceImpl implements CleanService, ManagerTodoNoticeProvider } @Override - public List getXlsx(Date dt) throws IOException { + public List getXlsx(Date dt, String bank) throws IOException { List logs = clearingLogMapper.findByDate(dt); if (logs.isEmpty()) { throw new NotFoundException(); @@ -360,7 +362,7 @@ public class CleanServiceImpl implements CleanService, ManagerTodoNoticeProvider String filename = "Merchant_Settlement_Info_" + DateFormatUtils.format(dt, "yyyyMMdd") + "_" + fileIndex + ".xlsx"; JSONObject file = new JSONObject(); file.put("name", filename); - file.put("byteArr", generateSettleXlsxFile(dt, clearingDetailMapper.listReportsOfSettlement(log.getIntValue("clearing_id")))); + file.put("byteArr", generateSettleXlsxFile(dt, clearingDetailMapper.listReportsOfSettlement(log.getIntValue("clearing_id")), bank)); result.add(file); fileIndex++; } @@ -369,7 +371,7 @@ public class CleanServiceImpl implements CleanService, ManagerTodoNoticeProvider String filename = "Merchant_Settlement_Info_" + DateFormatUtils.format(dt, "yyyyMMdd") + ".xlsx"; JSONObject file = new JSONObject(); file.put("name", filename); - file.put("byteArr", generateSettleXlsxFile(dt, clearingDetailMapper.listReportsOfSettlement(log.getIntValue("clearing_id")))); + file.put("byteArr", generateSettleXlsxFile(dt, clearingDetailMapper.listReportsOfSettlement(log.getIntValue("clearing_id")), bank)); result.add(file); } } @@ -391,7 +393,7 @@ public class CleanServiceImpl implements CleanService, ManagerTodoNoticeProvider return files.stream().filter(file -> bank.equals(file.bank())).collect(Collectors.toList()); } - private byte[] generateSettleXlsxFile(Date dt, List settlements) throws IOException { + private byte[] generateSettleXlsxFile(Date dt, List settlements, String bank) throws IOException { Workbook wb = new XSSFWorkbook(); Sheet sheet = wb.createSheet("Merchant_Settlement_Info_" + DateFormatUtils.format(dt, "yyyyMM")); int rowNum = 0; @@ -399,6 +401,9 @@ public class CleanServiceImpl implements CleanService, ManagerTodoNoticeProvider if (settle.getBigDecimal("clearing_amount").compareTo(BigDecimal.ZERO) == 0) { continue; } + if (bank != null && Objects.equals(settle.getString("settle_bank"), bank)) { + continue; + } Row row = sheet.createRow(rowNum++); row.createCell(0, Cell.CELL_TYPE_STRING).setCellValue(settle.getString("bsb_no")); row.createCell(1, Cell.CELL_TYPE_STRING).setCellValue(settle.getString("account_no")); @@ -931,7 +936,7 @@ public class CleanServiceImpl implements CleanService, ManagerTodoNoticeProvider String fileName1 = "Merchant_Settlement_Info_xlsx_" + DateFormatUtils.format(date, "yyyyMMdd"); List attachList = new ArrayList<>(); JSONObject attach1 = new JSONObject(); - List xlsxFileList = getXlsx(date); + List xlsxFileList = getXlsx(date, "CBA"); if (xlsxFileList.size() > 1) { fileName1 += ".zip"; attach1.put("content", Base64.encodeBase64String(getZipByteArr(xlsxFileList))); diff --git a/src/main/java/au/com/royalpay/payment/manage/management/clearing/core/impl/SettleDelayConfigurerImpl.java b/src/main/java/au/com/royalpay/payment/manage/management/clearing/core/impl/SettleDelayConfigurerImpl.java index f791d1d1f..d5eb104f7 100644 --- a/src/main/java/au/com/royalpay/payment/manage/management/clearing/core/impl/SettleDelayConfigurerImpl.java +++ b/src/main/java/au/com/royalpay/payment/manage/management/clearing/core/impl/SettleDelayConfigurerImpl.java @@ -34,6 +34,7 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.util.Assert; import java.math.BigDecimal; +import java.math.RoundingMode; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; diff --git a/src/main/java/au/com/royalpay/payment/manage/redpack/core/impls/ActRedPackServiceImpl.java b/src/main/java/au/com/royalpay/payment/manage/redpack/core/impls/ActRedPackServiceImpl.java index 8b93b74b1..231fb5f48 100644 --- a/src/main/java/au/com/royalpay/payment/manage/redpack/core/impls/ActRedPackServiceImpl.java +++ b/src/main/java/au/com/royalpay/payment/manage/redpack/core/impls/ActRedPackServiceImpl.java @@ -34,6 +34,7 @@ import org.springframework.stereotype.Service; import org.springframework.util.Assert; import java.math.BigDecimal; +import java.math.RoundingMode; import java.util.Collections; import java.util.Date; import java.util.List; diff --git a/src/main/ui/static/analysis/clearing-log.js b/src/main/ui/static/analysis/clearing-log.js index 4067e4606..5ff29eb1a 100644 --- a/src/main/ui/static/analysis/clearing-log.js +++ b/src/main/ui/static/analysis/clearing-log.js @@ -241,65 +241,119 @@ define(['angular', 'decimal', 'uiBootstrap', 'uiRouter', 'angularEcharts'], func }) } }]); - app.controller('settlementDetailCtrl', ['$scope', '$stateParams', '$http','$uibModal','$filter','detail','commonDialog', function ($scope, $stateParams,$http,$uibModal,$filter, detail,commonDialog) { - $scope.detail = detail.data; - $scope.hasSentMail = false; - $scope.sendNotice = false; - $scope.noticeResend = false; + app.controller('settlementDetailCtrl', ['$scope', '$stateParams', '$http', '$uibModal', '$filter', '$state', 'detail', 'commonDialog', + function ($scope, $stateParams, $http, $uibModal, $filter, $state, detail, commonDialog) { + $scope.detail = detail.data; + $scope.hasSentMail = false; + $scope.sendNotice = false; + $scope.noticeResend = false; + $scope.analysisFilter = {}; + $scope.currentAnalysis = $scope.detail; - $scope.settleAnalysis = [ - {settleDays: 1, clients: 0, settleAmount: 0, settles: []}, - {settleDays: 2, clients: 0, settleAmount: 0, settles: []}, - {settleDays: 3, clients: 0, settleAmount: 0, settles: []} - ]; - angular.forEach($scope.detail.details, function (settleItem) { - var settleDays = settleItem.clear_days; - var analysisItem = $scope.settleAnalysis[Math.min(settleDays - 1, 2)]; - analysisItem.settles.push(settleItem); - analysisItem.clients++; - analysisItem.settleAmount = Decimal.add(analysisItem.settleAmount, settleItem.clearing_amount).toFixed(2, Decimal.ROUND_FLOOR) - }); - var nowStr = $filter('date')(new Date(), "yyyy-MM-dd"); - $scope.datePattern = $stateParams.date; - if($scope.datePattern == nowStr){ - $scope.sendNotice = true; - } - $scope.displaySendCheckCode = function () { - $uibModal.open({ - templateUrl: '/static/analysis/templates/settlement_send_check_code.html', - controller: 'settlementSendCheckCodeCtrl', - size: 'sm' - }); - }; + function getAnalysisTemplate() { + return [ + {settleDays: 1, clients: 0, settleAmount: 0, settles: []}, + {settleDays: 2, clients: 0, settleAmount: 0, settles: []}, + {settleDays: 3, clients: 0, settleAmount: 0, settles: []} + ]; + } - $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.settleAnalysis = getAnalysisTemplate(); + + $scope.batchAnalysis = { + 'All': $scope.settleAnalysis + }; + angular.forEach($scope.detail.logs, function (batch) { + $scope.batchAnalysis[batch.clearing_id+''] = getAnalysisTemplate(); + }); + + angular.forEach($scope.detail.details, function (settleItem) { + var settleDays = settleItem.clear_days; + attachAnalysis($scope.settleAnalysis[Math.min(settleDays - 1, 2)]); + attachAnalysis($scope.batchAnalysis[settleItem.clearing_id+''][Math.min(settleDays - 1, 2)]); + function attachAnalysis(analysisItem) { + analysisItem.settles.push(settleItem); + analysisItem.clients++; + analysisItem.settleAmount = Decimal.add(analysisItem.settleAmount, settleItem.clearing_amount).toFixed(2, Decimal.ROUND_FLOOR); + } + }); + var nowStr = $filter('date')(new Date(), "yyyy-MM-dd"); + $scope.datePattern = $stateParams.date; + if ($scope.datePattern == nowStr) { + $scope.sendNotice = true; } - }) - $scope.$on("sendMailSuccess", - function (event, msg) { - $scope.hasSentMail = true; - }); + $scope.displaySendCheckCode = function () { + $uibModal.open({ + templateUrl: '/static/analysis/templates/settlement_send_check_code.html', + controller: 'settlementSendCheckCodeCtrl', + size: 'sm' + }); + }; + + $scope.switchSettleBatch = function (batch) { + if (batch == null) { + $scope.currentAnalysis = $scope.detail; + $scope.analysisFilter.clearing_id = null; + } else { + $scope.analysisFilter.clearing_id = batch.clearing_id; + $scope.currentAnalysis = batch; + } + + }; - $scope.confirmSendSettlementMail = function () { - commonDialog.confirm({ - title: 'Confirm to send notice', - content: '请确认账户已扣款后再发送清算通知', - choises : [{label: 'Send', className: 'btn-success', key: '1'}, - {label: 'Cancel', className: 'btn-danger', key: '2', dismiss: true}] - }).then(function () { - $scope.noticeResend=true; - $http.post('/sys/settlement/settlement_notice').then(function () { - commonDialog.alert({title: 'Success', content: '发送成功', type: 'success'}); - $scope.noticeResend=false; - },function (resp) { - commonDialog.alert({title: 'Error', content: resp.data.message, type: 'error'}); - $scope.noticeResend=false; + $scope.getCurrentLog = function () { + return $scope.detail.logs.filter(function (log) { + return log.clearing_id === $scope.analysisFilter.clearing_id + })[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({ + title: 'Confirm to send notice', + content: '请确认账户已扣款后再发送清算通知', + choises: [{label: 'Send', className: 'btn-success', key: '1'}, + {label: 'Cancel', className: 'btn-danger', key: '2', dismiss: true}] + }).then(function () { + $scope.noticeResend = true; + $http.post('/sys/settlement/settlement_notice').then(function () { + commonDialog.alert({title: 'Success', content: '发送成功', type: 'success'}); + $scope.noticeResend = false; + }, function (resp) { + commonDialog.alert({title: 'Error', content: resp.data.message, type: 'error'}); + $scope.noticeResend = false; + }); + }) + }; + + $scope.lockSettleLog = function (clearingId) { + commonDialog.confirm({title: '确认操作', content: '当前操作将标记本批次清算已发送,无法撤回,确认操作?'}).then(function () { + $http.put('/sys/settlement/reports/' + $stateParams.date + '/clearings/' + clearingId + '/lock').then(function () { + $scope.detail.logs.filter(function (log) { + return log.clearing_id === clearingId + }).forEach(function (log) { + log.editable = 0 + }); + commonDialog.alert({title: 'Success', content: 'Operation success', type: 'success'}); + }, function (resp) { + commonDialog.alert({title: 'Error', content: resp.data.message, type: 'error'}); + }) + }) + }; + + $scope.distributeBankDialog = function () { + var log = $scope.getCurrentLog(); + } + }]); app.controller('settlementTransactionsCtrl', ['$scope', '$stateParams', 'detail', function ($scope, $stateParams, detail) { $scope.ctrl = {channel: null}; $scope.report = detail.data; @@ -341,7 +395,7 @@ 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', function ($scope, $http, $rootScope, $stateParams) { $scope.sendCheckCodeButton = false; $scope.sendMailButton = false; $scope.check_code = ''; @@ -354,15 +408,15 @@ define(['angular', 'decimal', 'uiBootstrap', 'uiRouter', 'angularEcharts'], func $scope.sendSettlementMail = function () { $scope.error_msg = '正在发送,请稍后。'; - if($scope.check_code =='' || $scope.check_code == null){ + 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) { - $scope.error_msg =resp.data.msg; - $scope.sendMailButton= false; - if(resp.data.result==0){ + $scope.sendMailButton = true; + $http.get('/sys/settlement/reports/' + $stateParams.date + '/send_settlement_xlsx/' + $scope.check_code).then(function (resp) { + $scope.error_msg = resp.data.msg; + $scope.sendMailButton = false; + if (resp.data.result == 0) { $scope.sendMailButton = true; $rootScope.$broadcast("sendMailSuccess", '123'); } diff --git a/src/main/ui/static/analysis/templates/settlement_detail.html b/src/main/ui/static/analysis/templates/settlement_detail.html index 216373876..3d71c89be 100644 --- a/src/main/ui/static/analysis/templates/settlement_detail.html +++ b/src/main/ui/static/analysis/templates/settlement_detail.html @@ -28,69 +28,118 @@ class="btn btn-primary"> Settlement.aba - - - - +

+
Settlement Batches [{{datePattern}}]
+
+
+
+
+ + +
+
+
+
+ + +
+
+
+
+
+
    +
  • + Bank Statistics +
  • +
  • +
    + + +
    +
  • +
+
+
-
Settlement analysis at {{datePattern}}
+
Settlement analysis
Total Credit - +
Total Debit - +
Gross Amount - +
Net Amount - +
Total Charge + ng-bind="(currentAnalysis.wechat_charge+currentAnalysis.royalpay_charge)|currency:''">
Channel Charge - +
RoyalPay Charge - +
Operate Time - +
+ +
    -
  • +
  • T+{{group.settleDays}} @@ -104,9 +153,11 @@
      -
    • +
    • - + Gross Amount:{{ channel.gross_amount|currency:''}} RoyalPay Charge:{{channel.royalpay_charge|currency:''}} @@ -115,8 +166,12 @@
    -
    -
    T+{{group.settleDays}}: Clients:{{group.clients}} Amount:{{group.settleAmount|currency:''}}
    + +
    +
    T+{{group.settleDays}}: Clients:{{group.clients}} + Amount:{{group.settleAmount|currency:''}} +
    From 4fa475fbb1cdc4a4239fd58f6449d63fb6081ebd Mon Sep 17 00:00:00 2001 From: yuan <1551130722@qq.com> Date: Tue, 26 Jun 2018 13:49:28 +0800 Subject: [PATCH 13/21] fix invoice bug --- .../partnerinvoice/web/PartnerInvoiceController.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/au/com/royalpay/payment/manage/partnerinvoice/web/PartnerInvoiceController.java b/src/main/java/au/com/royalpay/payment/manage/partnerinvoice/web/PartnerInvoiceController.java index 83d792f9c..9e18eaa75 100644 --- a/src/main/java/au/com/royalpay/payment/manage/partnerinvoice/web/PartnerInvoiceController.java +++ b/src/main/java/au/com/royalpay/payment/manage/partnerinvoice/web/PartnerInvoiceController.java @@ -32,17 +32,17 @@ public class PartnerInvoiceController { } @PartnerMapping(value = "/trans_flow/pdf", method = RequestMethod.GET,roles = PartnerRole.ADMIN) - public void exportTransFlowPDF(TradeLogQuery query,HttpServletResponse httpResponse) throws Exception { - tradeLogService.exportTransFlow(query,getPartnerParams(query.getClient_ids()[0]),httpResponse); + public void exportTransFlowPDF(TradeLogQuery query,@ModelAttribute(CommonConsts.PARTNER_STATUS) JSONObject partner,HttpServletResponse httpResponse) throws Exception { + tradeLogService.exportTransFlow(query,getPartnerParams(partner,query.getClient_ids()[0]),httpResponse); } - private JSONObject getPartnerParams(String client_id){ + private JSONObject getPartnerParams(JSONObject partner,String client_id){ JSONObject client = clientManager.getClientInfo(Integer.parseInt(client_id)); if(client==null){ throw new NotFoundException("Client Not Exists"); } JSONObject params = new JSONObject(); - params.put("client_id",client.getIntValue("client_id")); + params.put("client_id",partner.getIntValue("client_id")); params.put("client",client); params.put("client_moniker",client.getString("client_moniker")); return params; From 0d48030501ea9526b46b1f39b1fa6332e1d3d8eb Mon Sep 17 00:00:00 2001 From: yixian Date: Tue, 26 Jun 2018 15:35:47 +0800 Subject: [PATCH 14/21] distribute bank ui --- .../clearing/core/CleanService.java | 8 ++- .../clearing/core/impl/CleanServiceImpl.java | 24 +++++++ .../clearing/web/SettlementDevController.java | 14 +++- .../log/ClearingDetailAnalysisMapper.java | 2 + .../mappers/log/ClearingDetailMapper.java | 3 + .../manage/mappers/log/ClearingLogMapper.java | 3 + .../payment/TaskManualSettleMapper.java | 2 + .../mappers/payment/TransactionMapper.java | 3 + .../log/ClearingDetailAnalysisMapper.xml | 5 ++ .../payment/TaskManualSettleMapper.xml | 24 +++++-- .../mappers/payment/TransactionMapper.xml | 11 ++++ src/main/ui/static/analysis/clearing-log.js | 64 ++++++++++++++++++- .../settlement_bank_distribution_dialog.html | 24 +++++++ .../analysis/templates/settlement_detail.html | 23 ++++--- .../CustomerImpressionServiceImplTest.java | 27 -------- 15 files changed, 187 insertions(+), 50 deletions(-) create mode 100644 src/main/ui/static/analysis/templates/settlement_bank_distribution_dialog.html delete mode 100644 src/test/au/com/royalpay/payment/manage/apps/core/impls/CustomerImpressionServiceImplTest.java 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 3fbe1e9ac..09518584a 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 @@ -83,9 +83,11 @@ public interface CleanService { JSONObject findLogSettleByDate(Date date); - JSONObject validTransactions(Date dt, boolean fix, boolean b, boolean b1); + JSONObject validTransactions(Date date, boolean fix, boolean b, boolean b1); - void distributeBank(Date dt, int clearingId, JSONObject bankDistribution); + void distributeBank(Date date, int clearingId, JSONObject bankDistribution); - void lockClearingLog(Date dt, int clearingId); + void lockClearingLog(Date date, int clearingId); + + void undoSettle(Date date, int clearingId); } 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 4b2e53e46..2eafe4324 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 @@ -5,6 +5,7 @@ import au.com.royalpay.payment.core.exceptions.InvalidShortIdException; import au.com.royalpay.payment.core.tasksupport.SettlementSupport; import au.com.royalpay.payment.manage.management.clearing.core.CleanService; import au.com.royalpay.payment.manage.mappers.log.*; +import au.com.royalpay.payment.manage.mappers.payment.TaskManualSettleMapper; import au.com.royalpay.payment.manage.mappers.payment.TransactionMapper; import au.com.royalpay.payment.manage.mappers.system.CalendarMapper; import au.com.royalpay.payment.manage.mappers.system.ClientRateMapper; @@ -97,6 +98,8 @@ public class CleanServiceImpl implements CleanService, ManagerTodoNoticeProvider @Resource private ClearingDetailAnalysisMapper clearingDetailAnalysisMapper; @Resource + private TaskManualSettleMapper taskManualSettleMapper; + @Resource private ValidationLogMapper validationLogMapper; @Resource private ManagerMapper managerMapper; @@ -1133,6 +1136,27 @@ public class CleanServiceImpl implements CleanService, ManagerTodoNoticeProvider clearingLogMapper.setLogEditable(false, clearingId); } + @Override + @Transactional + public void undoSettle(Date date, int clearingId) { + if (!DateUtils.isSameDay(date, new Date())) { + throw new ForbiddenException("Only today's settlement file can be modified"); + } + JSONObject log = clearingLogMapper.findById(clearingId); + if (log == null || !DateUtils.isSameDay(log.getDate("settle_date"), date)) { + throw new NotFoundException("Settlement log not found"); + } + if (!log.getBooleanValue("editable")) { + throw new ForbiddenException("Settlement log has been sent and unable to edit"); + } + transactionMapper.deleteSettlementTransaction(clearingId); + transactionMapper.removeSettleRemark(clearingId); + clearingDetailAnalysisMapper.clearAnalysis(clearingId); + taskManualSettleMapper.rollbackExecutedTask(clearingId); + clearingDetailMapper.deleteSettleLogs(clearingId); + clearingLogMapper.deleteSettleLogs(clearingId); + } + private byte[] getZipByteArr(List fileByteArrWithName) throws IOException { ByteArrayOutputStream bos = new ByteArrayOutputStream(); ZipOutputStream zos = new ZipOutputStream(bos); 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 74f00e973..f4dea7830 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 @@ -2,6 +2,7 @@ package au.com.royalpay.payment.manage.management.clearing.web; import au.com.royalpay.payment.manage.management.clearing.core.CleanService; import au.com.royalpay.payment.manage.permission.manager.ManagerMapping; +import au.com.royalpay.payment.manage.permission.manager.RequireManager; import au.com.royalpay.payment.manage.support.abafile.ABATemplate; import au.com.royalpay.payment.tools.permission.enums.ManagerRole; import au.com.royalpay.payment.tools.CommonConsts; @@ -70,7 +71,7 @@ public class SettlementDevController { } @PutMapping("/reports/{date}/clearings/{clearingId}/lock") - public void lockClearingLog(@PathVariable String date,@PathVariable int clearingId){ + public void lockClearingLog(@PathVariable String date, @PathVariable int clearingId) { try { Date dt = dateFormat.parse(date); cleanService.lockClearingLog(dt, clearingId); @@ -79,6 +80,17 @@ public class SettlementDevController { } } + @DeleteMapping("/reports/{date}/clearings/{clearingId}") + @RequireManager(role = ManagerRole.DEVELOPER) + public void undoSettle(@PathVariable String date, @PathVariable int clearingId) { + try { + Date dt = dateFormat.parse(date); + cleanService.undoSettle(dt, clearingId); + } catch (ParseException e) { + throw new BadRequestException("error.payment.valid.invalid_date_format"); + } + } + @RequestMapping("/reports/{date}/settlement_csv") public void getSettlementCsv(@PathVariable String date, HttpServletResponse resp) throws IOException { try { diff --git a/src/main/java/au/com/royalpay/payment/manage/mappers/log/ClearingDetailAnalysisMapper.java b/src/main/java/au/com/royalpay/payment/manage/mappers/log/ClearingDetailAnalysisMapper.java index ffe560d10..f97a11d43 100644 --- a/src/main/java/au/com/royalpay/payment/manage/mappers/log/ClearingDetailAnalysisMapper.java +++ b/src/main/java/au/com/royalpay/payment/manage/mappers/log/ClearingDetailAnalysisMapper.java @@ -26,4 +26,6 @@ public interface ClearingDetailAnalysisMapper { List listReportChannels(@Param("clearing_detail_id") String clearDetailId); BigDecimal getSysCleaingAmount(@Param("settle_date") String settle_date, @Param("channel") String channel); + + void clearAnalysis(@Param("clearing_id") int clearingId); } diff --git a/src/main/java/au/com/royalpay/payment/manage/mappers/log/ClearingDetailMapper.java b/src/main/java/au/com/royalpay/payment/manage/mappers/log/ClearingDetailMapper.java index e37ac76e9..62ff594d9 100644 --- a/src/main/java/au/com/royalpay/payment/manage/mappers/log/ClearingDetailMapper.java +++ b/src/main/java/au/com/royalpay/payment/manage/mappers/log/ClearingDetailMapper.java @@ -45,4 +45,7 @@ public interface ClearingDetailMapper { @AutoSql(type = SqlType.UPDATE) void updateBanks(@Param("settle_bank") String bank,@Param("clear_detail_id") List clearingDetailIds); + + @AutoSql(type = SqlType.DELETE) + void deleteSettleLogs(@Param("clearing_id") int clearingId); } 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 ca402dab9..2a7d47b66 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 @@ -46,4 +46,7 @@ public interface ClearingLogMapper { @AutoSql(type = SqlType.UPDATE) void setLogEditable(@Param("editable") boolean editable, @Param("clearing_id") int clearingId); + + @AutoSql(type = SqlType.DELETE) + void deleteSettleLogs(@Param("clearing_id") int clearingId); } diff --git a/src/main/java/au/com/royalpay/payment/manage/mappers/payment/TaskManualSettleMapper.java b/src/main/java/au/com/royalpay/payment/manage/mappers/payment/TaskManualSettleMapper.java index 910343d73..5116e391d 100644 --- a/src/main/java/au/com/royalpay/payment/manage/mappers/payment/TaskManualSettleMapper.java +++ b/src/main/java/au/com/royalpay/payment/manage/mappers/payment/TaskManualSettleMapper.java @@ -31,4 +31,6 @@ public interface TaskManualSettleMapper { List getEveryLatestRecord(); + void rollbackExecutedTask(@Param("clearing_id") int clearingId); + } diff --git a/src/main/java/au/com/royalpay/payment/manage/mappers/payment/TransactionMapper.java b/src/main/java/au/com/royalpay/payment/manage/mappers/payment/TransactionMapper.java index e31fdb1d5..5e153fda9 100644 --- a/src/main/java/au/com/royalpay/payment/manage/mappers/payment/TransactionMapper.java +++ b/src/main/java/au/com/royalpay/payment/manage/mappers/payment/TransactionMapper.java @@ -133,4 +133,7 @@ public interface TransactionMapper { List listClientUnsettleDataByDate(@Param("client_id") int clientId, @Param("max_settle_to") Date maxSettleTo); + void deleteSettlementTransaction(@Param("clearing_id") int clearingId); + + void removeSettleRemark(@Param("clearing_id") int clearingId); } diff --git a/src/main/resources/au/com/royalpay/payment/manage/mappers/log/ClearingDetailAnalysisMapper.xml b/src/main/resources/au/com/royalpay/payment/manage/mappers/log/ClearingDetailAnalysisMapper.xml index 37c80398e..4db57c4ab 100644 --- a/src/main/resources/au/com/royalpay/payment/manage/mappers/log/ClearingDetailAnalysisMapper.xml +++ b/src/main/resources/au/com/royalpay/payment/manage/mappers/log/ClearingDetailAnalysisMapper.xml @@ -1,6 +1,11 @@ + + DELETE a FROM log_clearing_detail_analysis a + inner JOIN log_clearing_detail d on d.clear_detail_id = a.clearing_detail_id + where d.clearing_id = #{clearing_id} + - SELECT - s.request_time,c.client_id,c.client_moniker + SELECT + s.request_time, + c.client_id, + c.client_moniker FROM - task_client_manual_settle s - right join sys_clients c on s.client_id = c.client_id - inner join sys_client_config cc on cc.client_id = c.client_id - where (s.request_time=(select max(B.request_time) from task_client_manual_settle B where s.client_id =B.client_id) or s.request_time is null) - and cc.manual_settle = 1 + task_client_manual_settle s + right join sys_clients c on s.client_id = c.client_id + inner join sys_client_config cc on cc.client_id = c.client_id + where (s.request_time = (select max(B.request_time) + from task_client_manual_settle B + where s.client_id = B.client_id) or s.request_time is null) + and cc.manual_settle = 1 \ 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 dececd472..ad74bfa4d 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 @@ -1,6 +1,17 @@ + + UPDATE pmt_transactions AS t + INNER JOIN log_clearing_detail d ON d.clear_detail_id = t.clearing_order + SET clearing_status = 0, clearing_order = NULL, clearing_time = NULL + WHERE d.clearing_id = #{clearing_id} + + + DELETE t FROM pmt_transactions t + INNER JOIN log_clearing_detail d ON d.clear_detail_id = t.clearing_order + WHERE d.clearing_id = #{clearing_id} AND t.transaction_type = 'Debit' AND t.refund_id IS NULL and t.channel='Settlement' + + + +
    + +
    +

    +
    +
    + +
    + + \ No newline at end of file diff --git a/src/main/ui/static/analysis/templates/settlement_detail.html b/src/main/ui/static/analysis/templates/settlement_detail.html index 3d71c89be..5cdcce1b5 100644 --- a/src/main/ui/static/analysis/templates/settlement_detail.html +++ b/src/main/ui/static/analysis/templates/settlement_detail.html @@ -47,7 +47,7 @@
    Settlement Batches [{{datePattern}}]
    -
    +
    -
    - - +
    +
    + + + +
    diff --git a/src/test/au/com/royalpay/payment/manage/apps/core/impls/CustomerImpressionServiceImplTest.java b/src/test/au/com/royalpay/payment/manage/apps/core/impls/CustomerImpressionServiceImplTest.java deleted file mode 100644 index f165f4a3b..000000000 --- a/src/test/au/com/royalpay/payment/manage/apps/core/impls/CustomerImpressionServiceImplTest.java +++ /dev/null @@ -1,27 +0,0 @@ -package au.com.royalpay.payment.manage.apps.core.impls; - -import au.com.royalpay.payment.manage.apps.core.CustomerImpressionService; - -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.test.context.ActiveProfiles; -import org.springframework.test.context.junit4.SpringRunner; - -import javax.annotation.Resource; - -/** - * Created by wangning on 08/01/2018. - */ -@SpringBootTest -@ActiveProfiles({"local","alipay","wechat","jd","bestpay"}) -@RunWith(SpringRunner.class) -public class CustomerImpressionServiceImplTest { - @Resource - private CustomerImpressionService customerImpressionService; - @Test - public void generate() throws Exception { - customerImpressionService.generate(9); - } - -} \ No newline at end of file From 8e78d70a7e27294307dd9ba88639ae05543dfaa0 Mon Sep 17 00:00:00 2001 From: yixian Date: Tue, 26 Jun 2018 15:38:41 +0800 Subject: [PATCH 15/21] Round Half Down edit to prevent deprecated warnings --- .../manage/appclient/core/impls/RetailAppServiceImp.java | 3 ++- .../management/clearing/core/impl/CleanServiceImpl.java | 4 ++-- .../manage/merchants/core/impls/ClientManagerImpl.java | 3 ++- 3 files changed, 6 insertions(+), 4 deletions(-) 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 2295275b3..dc50ae7f1 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 @@ -79,6 +79,7 @@ import org.springframework.stereotype.Service; import org.springframework.util.Assert; import java.math.BigDecimal; +import java.math.RoundingMode; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; @@ -1012,7 +1013,7 @@ public class RetailAppServiceImp implements RetailAppService { @Override public void sendCleanMessage(JSONObject log_clearing_detail, int client_id) { - String clearing_amount = log_clearing_detail.getBigDecimal("clearing_amount").setScale(2, BigDecimal.ROUND_HALF_DOWN).toString(); + String clearing_amount = log_clearing_detail.getBigDecimal("clearing_amount").setScale(2, RoundingMode.HALF_DOWN).toString(); String settle_date_from = DateFormatUtils.format(log_clearing_detail.getDate("settle_date_from"), "MM/dd/yyyy"); String settle_date_to = DateFormatUtils.format(log_clearing_detail.getDate("settle_date_to"), "MM/dd/yyyy"); logger.debug("sendCleanMessage-" + log_clearing_detail.getString("client_moniker") + "- " + PlatformEnvironment.getEnv().getForeignCurrency() + " " 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 2eafe4324..196ccd952 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 @@ -510,9 +510,9 @@ public class CleanServiceImpl implements CleanService, ManagerTodoNoticeProvider String transactionTime = DateFormatUtils.format(transaction.getDate("transaction_time"), "dd/MM/yyyy h:mm:ss a", Locale.ENGLISH); int multiply = "Credit".equals(transaction.getString("transaction_type")) ? 1 : -1; BigDecimal transactionAmount = transaction.getBigDecimal("transaction_amount").multiply(BigDecimal.valueOf(multiply)).setScale(2, - BigDecimal.ROUND_HALF_DOWN); + RoundingMode.HALF_DOWN); BigDecimal clearingAmount = transaction.getBigDecimal("clearing_amount").multiply(BigDecimal.valueOf(multiply)).setScale(2, - BigDecimal.ROUND_HALF_DOWN); + RoundingMode.HALF_DOWN); String[] values = {transaction.getString("system_transaction_id"), transaction.getString("order_id"), transaction.getString("client_id"), transaction.getString("device_id"), transaction.getString("transaction_currency"), transactionAmount.toPlainString(), transaction.getString("clearing_currency"), clearingAmount.toPlainString(), transaction.getString("channel"), transactionTime, "0"}; 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 044205045..92399242b 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 @@ -129,6 +129,7 @@ import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.math.BigDecimal; +import java.math.RoundingMode; import java.net.URISyntaxException; import java.net.URL; import java.util.ArrayList; @@ -3040,7 +3041,7 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid if (appClientBean.getCustomerSurchargeRate() <= 0) { throw new ForbiddenException("customerSurchargeRate is 0"); } - BigDecimal customerSurchargeRate = new BigDecimal(appClientBean.getCustomerSurchargeRate()).setScale(2, BigDecimal.ROUND_HALF_DOWN); + BigDecimal customerSurchargeRate = new BigDecimal(appClientBean.getCustomerSurchargeRate()).setScale(2, RoundingMode.HALF_DOWN); setCustomerSurchargeRate(account, client.getString("client_moniker"), customerSurchargeRate); } clientInfoCacheSupport.clearClientCache(client_id); From f4899470bd8966cb7eeb01d1d1401d4cbe1e7348 Mon Sep 17 00:00:00 2001 From: yuan <1551130722@qq.com> Date: Tue, 26 Jun 2018 15:45:49 +0800 Subject: [PATCH 16/21] fix bug --- .../manage/appclient/core/impls/RetailAppServiceImp.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) 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 2295275b3..ca220dbaf 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 @@ -320,8 +320,6 @@ public class RetailAppServiceImp implements RetailAppService { String clientType = device.getString("client_type"); deviceSupport.findRegister(clientType); int client_id = device.getIntValue("client_id"); - JSONObject client = clientManager.getClientInfo(client_id); - device.put("client_moniker", client.getString("client_moniker")); TradeLogQuery tradeLogQuery = new TradeLogQuery(); tradeLogQuery.setDatefrom(appQueryBean.getBegin()); tradeLogQuery.setDateto(appQueryBean.getEnd()); @@ -329,6 +327,12 @@ public class RetailAppServiceImp implements RetailAppService { appQueryBean.setApp_client_ids(String.valueOf(client_id)); } tradeLogQuery.setClient_ids(appQueryBean.getApp_client_ids().split(",")); + JSONObject client = clientManager.getClientInfo(Integer.parseInt(tradeLogQuery.getClient_ids()[0])); + if(client==null){ + throw new NotFoundException("Client Not Exists"); + } + device.put("client_moniker", client.getString("client_moniker")); + device.put("client",client); tradeLogService.exportTransFlow(tradeLogQuery, device, httpResponse); } From b5156708f098e640659bda618118edd3b2f6d2ec Mon Sep 17 00:00:00 2001 From: eason Date: Tue, 26 Jun 2018 17:19:03 +0800 Subject: [PATCH 17/21] =?UTF-8?q?fix=20=E6=B8=85=E7=AE=97=E8=AE=B0?= =?UTF-8?q?=E5=BD=95=E6=9C=AA=E5=AE=8C=E6=88=90=E5=8C=BA=E5=88=AB=E6=98=BE?= =?UTF-8?q?=E7=A4=BA=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/db/modify.sql | 7 ++++++ .../core/impls/RetailAppServiceImp.java | 21 +++++++++--------- .../core/impls/ClientManagerImpl.java | 22 +++++++++++-------- .../core/impls/TradeLogServiceImpl.java | 15 ++++++++----- 4 files changed, 39 insertions(+), 26 deletions(-) diff --git a/src/db/modify.sql b/src/db/modify.sql index 0e60bfca6..b2e1be0e5 100644 --- a/src/db/modify.sql +++ b/src/db/modify.sql @@ -574,3 +574,10 @@ CREATE TABLE `sys_mail_unsub` ( alter table sys_clients add column ali_sub_merchant_id varchar(20) DEFAULT NULL; update sys_clients set ali_sub_merchant_id = client_moniker; +ALTER TABLE `log_clearing_detail` +ADD COLUMN `settle_bank` varchar(10) NULL DEFAULT NULL COMMENT '清算来源银行(RoyalPay)' AFTER `account_name`; +update log_clearing_detail set settle_bank='CBA'; + + +ALTER TABLE `log_clearing` +ADD COLUMN `editable` tinyint(1) NULL DEFAULT 1 COMMENT '是否可编辑' AFTER `balance`; \ No newline at end of file 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 dc50ae7f1..447419470 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 @@ -11,10 +11,7 @@ import au.com.royalpay.payment.manage.cashback.core.CashbackService; import au.com.royalpay.payment.manage.customers.core.CouponValidateService; import au.com.royalpay.payment.manage.fund.core.impls.XPlanFundConfigServiceImpl; import au.com.royalpay.payment.manage.management.clearing.core.CleanService; -import au.com.royalpay.payment.manage.mappers.log.AppMessageLogMapper; -import au.com.royalpay.payment.manage.mappers.log.ClearingDetailAnalysisMapper; -import au.com.royalpay.payment.manage.mappers.log.ClearingDetailMapper; -import au.com.royalpay.payment.manage.mappers.log.LogSettleMailMapper; +import au.com.royalpay.payment.manage.mappers.log.*; import au.com.royalpay.payment.manage.mappers.notice.NoticePartnerMapper; import au.com.royalpay.payment.manage.mappers.payment.OrderMapper; import au.com.royalpay.payment.manage.mappers.payment.TransactionMapper; @@ -167,6 +164,8 @@ public class RetailAppServiceImp implements RetailAppService { private ClientMapper clientMapper; @Resource private ClientModifySupport clientModifySupport; + @Resource + private ClearingLogMapper clearingLogMapper; private Map senderMap = new HashMap<>(); private final String fileName[] = { "client_bank_file", "client_id_file", "client_company_file" }; @@ -547,18 +546,18 @@ public class RetailAppServiceImp implements RetailAppService { PageList logs = clearingDetailMapper.listClientSettlementLog(params, new PageBounds(appQueryBean.getPage(), appQueryBean.getLimit(), Order.formString("report_date.desc"))); logs.forEach(log -> log.put("total_charge", log.getBigDecimal("total_charge").add(log.getBigDecimal("tax_amount")))); + JSONObject result = PageListUtils.buildPageListResult(logs); if (appQueryBean.getPage() == 1) { if (!logs.isEmpty() && logs.size() > 0) { - JSONObject sendMailLog = logSettleMailMapper.findByDate(logs.get(0).getDate("report_date")); - if (sendMailLog == null) { - logs.remove(0); - }else if (sendMailLog != null && sendMailLog.getIntValue("mail_status") != 1) { - logs.remove(0); + JSONObject clearingDetail = clearingDetailMapper.findByDetailId(logs.get(0).getIntValue("clearing_order")); + if (clearingDetail!=null){ + JSONObject clearingLog = clearingLogMapper.findById(clearingDetail.getIntValue("clearing_id")); + if(clearingLog.getBooleanValue("editable")){ + result.put("padding", true); + } } } } - JSONObject result = PageListUtils.buildPageListResult(logs); - return result; } 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 92399242b..258bbf04b 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 @@ -14,9 +14,7 @@ import au.com.royalpay.payment.manage.appclient.beans.AppClientBean; import au.com.royalpay.payment.manage.application.core.SimpleClientApplyService; import au.com.royalpay.payment.manage.device.core.DeviceManager; import au.com.royalpay.payment.manage.mappers.financial.FinancialBDConfigMapper; -import au.com.royalpay.payment.manage.mappers.log.ClientsOperationLogMapper; -import au.com.royalpay.payment.manage.mappers.log.LogClientSubMerchantIdMapper; -import au.com.royalpay.payment.manage.mappers.log.LogSettleMailMapper; +import au.com.royalpay.payment.manage.mappers.log.*; import au.com.royalpay.payment.manage.mappers.payment.TransactionMapper; import au.com.royalpay.payment.manage.mappers.redpack.ActClientInvitationCodeMapper; import au.com.royalpay.payment.manage.mappers.system.*; @@ -260,6 +258,11 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid private MailGunService mailGunService; @Resource private MailSendMapper mailSendMapper; + @Resource + private ClearingDetailMapper clearingDetailMapper; + @Resource + private ClearingLogMapper clearingLogMapper; + private static final String SOURCE_AGREE_FILE = "source_agree_file"; private static final String CLIENT_BANK_FILE = "client_bank_file"; @@ -2648,17 +2651,18 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid 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) { - logs.remove(0); - }else if (sendMailLog != null && sendMailLog.getIntValue("mail_status") != 1) { - logs.remove(0); + JSONObject clearingDetail = clearingDetailMapper.findByDetailId(logs.get(0).getIntValue("clearing_order")); + if (clearingDetail!=null){ + JSONObject clearingLog = clearingLogMapper.findById(clearingDetail.getIntValue("clearing_id")); + if(clearingLog.getBooleanValue("editable")){ + result.put("padding", true); + } } } } - JSONObject result = PageListUtils.buildPageListResult(logs); return result; } 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 6264b3f83..cdd48cdaa 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 @@ -12,6 +12,7 @@ import au.com.royalpay.payment.core.exceptions.ParamInvalidException; import au.com.royalpay.payment.manage.mappers.client.ClientCustomersMapper; import au.com.royalpay.payment.manage.mappers.log.ClearingDetailAnalysisMapper; import au.com.royalpay.payment.manage.mappers.log.ClearingDetailMapper; +import au.com.royalpay.payment.manage.mappers.log.ClearingLogMapper; import au.com.royalpay.payment.manage.mappers.log.LogSettleMailMapper; import au.com.royalpay.payment.manage.mappers.payment.AustracDataMapper; import au.com.royalpay.payment.manage.mappers.payment.OrderMapper; @@ -132,6 +133,8 @@ public class TradeLogServiceImpl implements TradeLogService { private ClientCustomersMapper clientCustomersMapper; @Resource LogSettleMailMapper logSettleMailMapper; + @Resource + private ClearingLogMapper clearingLogMapper; @Resource private OrgManager orgManager; @@ -830,12 +833,12 @@ public class TradeLogServiceImpl implements TradeLogService { result.put("analysis", transactionMapper.getClientAmountAnalysis(params)); 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 (sendMailLog != null && sendMailLog.getIntValue("mail_status") != 1) { - result.put("padding", true); + JSONObject clearingDetail = clearingDetailMapper.findByDetailId(logs.get(0).getIntValue("clearing_order")); + if (clearingDetail!=null){ + JSONObject clearingLog = clearingLogMapper.findById(clearingDetail.getIntValue("clearing_id")); + if(clearingLog.getBooleanValue("editable")){ + result.put("padding", true); + } } } } From c4622ada47cba939fbf73095ee4e6effac3b0510 Mon Sep 17 00:00:00 2001 From: yixian Date: Tue, 26 Jun 2018 17:57:18 +0800 Subject: [PATCH 18/21] fix ui bug --- src/main/ui/static/analysis/clearing-log.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/ui/static/analysis/clearing-log.js b/src/main/ui/static/analysis/clearing-log.js index c6d5ca200..c23aa5710 100644 --- a/src/main/ui/static/analysis/clearing-log.js +++ b/src/main/ui/static/analysis/clearing-log.js @@ -389,8 +389,8 @@ define(['angular', 'decimal', 'uiBootstrap', 'uiRouter', 'angularEcharts'], func $scope.report = detail.data; }]); - app.controller('bankDistributionDialogCtrl', ['$scope', '$http', 'decimal', 'clearingBatch', 'banksConfig', 'settleDate', - function ($scope, $http, Decimal, clearingBatch, banksConfig, settleDate) { + app.controller('bankDistributionDialogCtrl', ['$scope', '$http', 'clearingBatch', 'banksConfig', 'settleDate', + function ($scope, $http, clearingBatch, banksConfig, settleDate) { $scope.banksConfig = banksConfig.data; $scope.bankData = []; angular.forEach($scope.banksConfig.banks, function (bank) { From ca67b30db2df152b30a9c20d22caefccb17b72bd Mon Sep 17 00:00:00 2001 From: yixian Date: Tue, 26 Jun 2018 18:05:03 +0800 Subject: [PATCH 19/21] fix ui bug --- src/main/ui/static/analysis/clearing-log.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/ui/static/analysis/clearing-log.js b/src/main/ui/static/analysis/clearing-log.js index c23aa5710..5f145da55 100644 --- a/src/main/ui/static/analysis/clearing-log.js +++ b/src/main/ui/static/analysis/clearing-log.js @@ -399,7 +399,7 @@ define(['angular', 'decimal', 'uiBootstrap', 'uiRouter', 'angularEcharts'], func } }); $scope.remainingAmount = function () { - var total = clearingBatch.clearing_amount; + var total = clearingBatch.net_amount; angular.forEach($scope.bankData, function (config) { total = Decimal.sub(total, config.amount); }); From 76600c5dfd3cacbbb8aaa9d6e574eeaf4fdb05c4 Mon Sep 17 00:00:00 2001 From: yixian Date: Tue, 26 Jun 2018 18:15:15 +0800 Subject: [PATCH 20/21] fix ui bug --- .../payment/manage/mappers/log/ClearingDetailMapper.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/resources/au/com/royalpay/payment/manage/mappers/log/ClearingDetailMapper.xml b/src/main/resources/au/com/royalpay/payment/manage/mappers/log/ClearingDetailMapper.xml index 76f5845c9..473d41a81 100644 --- a/src/main/resources/au/com/royalpay/payment/manage/mappers/log/ClearingDetailMapper.xml +++ b/src/main/resources/au/com/royalpay/payment/manage/mappers/log/ClearingDetailMapper.xml @@ -2,7 +2,7 @@ - update log_clearing_detail set settle_bank=#{bank} where clearing_id=#{clearing_id} + update log_clearing_detail set settle_bank=#{settle_bank} where clearing_id=#{clearing_id}
    + @@ -192,6 +193,7 @@ +
    Source Bank Client Moniker Transaction Date Gross Amount
    {{settleItem.settle_date_from|limitTo:10}}