Merge remote-tracking branch 'origin/develop' into develop

master
james.zhao 6 years ago
commit cb99428bcc

@ -546,8 +546,10 @@ public class CleanServiceImpl implements CleanService, ManagerTodoNoticeProvider
if (settle.getBigDecimal("clearing_amount").compareTo(BigDecimal.ZERO) == 0) {
continue;
}
aba.addSettleMerchant(settle.getString("client_moniker"), settle.getString("bsb_no"), settle.getString("account_no"), settle.getString("account_name"),
settle.getBigDecimal("clearing_amount"));
String clientMoniker = settle.getString("client_moniker");
String remark = "RoyalPay" + DateFormatUtils.format(dt, "MMdd") + clientMoniker;
aba.addSettleMerchant(settle.getString("bsb_no"), settle.getString("account_no"), settle.getString("account_name"),
settle.getBigDecimal("clearing_amount"), remark);
}
return aba;
}

@ -0,0 +1,66 @@
package au.com.royalpay.payment.manage.management.clearing.web;
import au.com.royalpay.payment.manage.mappers.log.ValidationLogMapper;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import netscape.javascript.JSObject;
import org.apache.commons.lang3.time.DateUtils;
import org.apache.xerces.impl.validation.ValidationManager;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import javax.annotation.Resource;
import java.text.ParseException;
import java.util.*;
/**
* @Description:
* @Author: lujian
* @Date: 2019/1/30 13:50
*/
@Controller
@RequestMapping("/sys/financial")
public class ArrivalNoticeController {
@Resource
private ValidationLogMapper validationLogMapper;
@GetMapping("/notice")
public String noticePage(HashMap<String, Object> map,
@RequestParam("date") String date) throws ParseException {
JSONArray reports = new JSONArray();
Date dt = DateUtils.parseDate(date, new String[]{"yyyyMMdd"});
JSONObject reportItem = validationLogMapper.findByDate(dt);
if (reportItem != null) {
JSONObject result = JSON.parseObject(reportItem.getString("result"));
reports = result.getJSONArray("channel_details");
for (int i = 0; i < reports.size(); i++) {
JSONObject channelItem = reports.getJSONObject(i);
String channel = channelItem.getString("channel");
if (channel.equals("Wechat") && result.containsKey("wechat_analysis")) {
JSONObject wechatAnalysis = result.getJSONObject("wechat_analysis");
List<JSONObject> analysis = new ArrayList<>();
for (Map.Entry<String, Object> entry : wechatAnalysis.entrySet()) {
JSONObject oneMerchant = new JSONObject();
oneMerchant.put("merchant_id", entry.getKey());
oneMerchant.put("order_amount", ((JSONObject) JSON.toJSON(entry.getValue())).getJSONObject("wechat_analysis").getBigDecimal("order_amount"));
analysis.add(oneMerchant);
}
channelItem.put("analysis", analysis);
}
if (channel.equals("Bestpay") && result.containsKey("bestpay_valid_analysis")) {
List<JSONObject> analysis = new ArrayList<>();
analysis.add(result.getJSONObject("bestpay_valid_analysis"));
reports.getJSONObject(i).put("analysis", analysis);
}
}
}
map.put("reports", reports);
map.put("title", "到账提醒");
return "reports/arrival_notice";
}
}

@ -9,4 +9,6 @@ public interface ManagerWechatBindService {
JSONObject newBindRequest(String managerId);
void bindWechatUser(String bindId, String openid);
JSONObject removeBindWechat(String managerId);
}

@ -71,6 +71,14 @@ public class ManagerWechatBindServiceImpl implements ManagerWechatBindService,Ap
publisher.publishEvent(new CommonPageEvent(this, bindId, "manager_bind_success",manager));
}
@Override
public JSONObject removeBindWechat(String managerId) {
JSONObject manager = managerMapper.findById(managerId);
manager.put("wx_openid", null);
managerMapper.update(manager);
return managerMapper.findById(managerId);
}
private void setOpenId(String managerId, String openId) {
JSONObject manager = new JSONObject();
manager.put("manager_id", managerId);

@ -1,6 +1,7 @@
package au.com.royalpay.payment.manage.signin.web;
import au.com.royalpay.payment.manage.permission.manager.RequireManager;
import au.com.royalpay.payment.manage.signin.beans.ManagerInfo;
import au.com.royalpay.payment.manage.signin.core.ManagerWechatBindService;
import au.com.royalpay.payment.tools.CommonConsts;
import au.com.royalpay.payment.tools.connections.mpsupport.beans.WxOauthType;
@ -32,4 +33,11 @@ public class ManagerWechatBindController {
public JSONObject newBindRequest(@ModelAttribute(CommonConsts.MANAGER_STATUS) JSONObject manager) {
return managerWechatBindService.newBindRequest(manager.getString("manager_id"));
}
@PutMapping(value = "/remove/{manager_id}")
@ResponseBody
public JSONObject removeBind(@PathVariable("manager_id") String managerId) {
return managerWechatBindService.removeBindWechat(managerId);
}
}

@ -29,8 +29,8 @@ public class ABAFile {
totalSettleAmount = BigDecimal.ZERO;
}
public void addSettleMerchant(String clientMoniker, String bsbNo, String accountNo, String accountName, BigDecimal settleAmount) {
settlements.add(new SettleMerchantInfo(clientMoniker, bsbNo, accountNo, accountName, settleAmount));
public void addSettleMerchant(String bsbNo, String accountNo, String accountName, BigDecimal settleAmount, String remark) {
settlements.add(new SettleMerchantInfo(bsbNo, accountNo, accountName, settleAmount, remark));
totalSettleAmount = totalSettleAmount.add(settleAmount);
}
@ -129,18 +129,18 @@ public class ABAFile {
}
private class SettleMerchantInfo {
private final String clientMoniker;
private final String bsbNo;
private final String accountNo;
private final String accountName;
private final BigDecimal settleAmount;
private final String remark;
public SettleMerchantInfo(String clientMoniker, String bsbNo, String accountNo, String accountName, BigDecimal settleAmount) {
this.clientMoniker = clientMoniker;
public SettleMerchantInfo(String bsbNo, String accountNo, String accountName, BigDecimal settleAmount, String remark) {
this.bsbNo = bsbNo;
this.accountNo = accountNo.replaceAll("\\D", "");
this.accountName = accountName;
this.settleAmount = settleAmount;
this.remark = remark;
}
public String settleLine() {
@ -151,7 +151,7 @@ public class ABAFile {
lineBuilder.replace(18, 20, "50");
lineBuilder.replace(20, 30, getSettleAmount());
lineBuilder.replace(30, 62, getAccountName());
lineBuilder.replace(62, 80, StringUtils.rightPad("RoyalPay" + DateFormatUtils.format(settleDate, "MMdd") + clientMoniker, 18));
lineBuilder.replace(62, 80, StringUtils.rightPad(getRemark(), 18));
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));
@ -159,19 +159,23 @@ public class ABAFile {
return lineBuilder.toString();
}
private String getBsbNo() {
protected String getRemark() {
return remark;
}
protected String getBsbNo() {
return bsbNo(bsbNo);
}
private String getAccountNo() {
protected String getAccountNo() {
return StringUtils.leftPad(StringUtils.right(accountNo, 9), 9);
}
private String getAccountName() {
protected String getAccountName() {
return StringUtils.rightPad(StringUtils.substring(accountName, 0, 32), 32);
}
private String getSettleAmount() {
protected String getSettleAmount() {
Assert.isTrue(settleAmount.compareTo(BigDecimal.ZERO) > 0, "Invalid Settle Amount:" + settleAmount.toPlainString());
return amountString(settleAmount, 10);
}

@ -15,7 +15,7 @@
m.org_id,
m.display_name,
m.username,m.role,m.is_valid,m.create_time,m.last_login,o.name org_name,
m.email,m.phone,m.wechat,
m.email,m.phone,m.wechat,m.wx_openid,
co.headimg,
co.nickname,
o.parent_org_id

@ -0,0 +1,46 @@
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org" lang="zh">
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=0">
<meta http-equiv="cache-control" content="max-age=0">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="expires" content="Tue, 01 Jan 1980 1:00:00 GMT">
<meta http-equiv="pragma" content="no-cache">
<title th:text="${title}"></title>
<link rel="stylesheet" href="https://pay.unifpay.com/static/lib/weui/weui_new.css">
<link rel="stylesheet" href="https://pay.unifpay.com/static/lib/weui/example.css">
<script type="text/javascript" src="https://pay.unifpay.com/static/lib/jquery/jquery-2.1.4.min.js"></script>
<script type="text/javascript" src="https://res.wx.qq.com/open/js/jweixin-1.2.0.js"></script>
<style type="text/css">
</style>
</head>
<body>
<div class="page__bd" th:each="report : ${reports}">
<div class="weui-form-preview">
<div class="weui-form-preview__hd">
<div class="weui-form-preview__item">
<em class="weui-form-preview__value" th:text="${report.channel}" style="text-align: center;"></em>
</div>
</div>
<div class="weui-form-preview__bd">
<div class="weui-form-preview__item">
<label class="weui-form-preview__label">对账状态</label>
<span class="weui-form-preview__value" th:text="${report.success} ? '成功' : '失败'" th:style="'color: ' + (${report.success} ? 'green' : 'red')"></span>
</div>
</div>
<div class="weui-form-preview__bd" th:each="item : ${report['analysis']}">
<div class="weui-form-preview__item">
<label class="weui-form-preview__label" th:text="${item['merchant_id']} ? ${item['merchant_id']} : 'order_amount'"></label>
<span class="weui-form-preview__value" th:text="${item.order_amount}"></span>
</div>
</div>
</div>
<br>
</div>
</body>
</html>

@ -275,7 +275,7 @@
</div>
</div>
<div class="form-group col-sm-6">
<label class="control-label col-sm-5">订单数:</label>
<label class="control-label col-sm-5">订单数:</label>
<div class="col-sm-6">
<input class="form-control" ng-model="paymentconfig['cheat_monitor.min_orders']">
</div>
@ -283,7 +283,7 @@
<div class="form-group col-sm-6">
<label class="control-label col-sm-5">交易金额在检测金额范围内的订单占总订单的最大百分比:</label>
<div class="col-sm-6">
<input class="form-control" ng-model="paymentconfig['cheat_monitor.min_orders']">
<input class="form-control" ng-model="paymentconfig['cheat_monitor.warning_rate']">
</div>
</div>
<div class="form-group col-sm-6">

@ -64,6 +64,26 @@ define(['angular', 'uiRouter', 'static/commons/angular-ueditor'], function (angu
{
"style_key":"home_gray",
"style_value":""
},
{
"style_key":"balance",
"style_value":""
},
{
"style_key":"pro_collection",
"style_value":""
},
{
"style_key":"pro_tralogs",
"style_value":""
},
{
"style_key":"pro_qrcode",
"style_value":""
},
{
"style_key":"pro_coupon",
"style_value":""
}];
app.config(['$stateProvider', function ($stateProvider) {
$stateProvider.state('cms', {

@ -71,6 +71,14 @@ define(['angular', 'uiRouter', 'uiBootstrap'], function (angular) {
}).result.then(function () {
$scope.listManagers();
})
};
$scope.removeWechatBind = function (manager) {
$http.put('/system/manager_wechat_binds/remove/' + manager.manager_id).then(function () {
console.log(manager)
$scope.listManagers();
}, function (resp) {
commonDialog.alert({title: 'Error', content: resp.data.message, type: 'error'})
})
}
}]);
app.controller('modifyManagerDialogCtrl', ['$scope', '$http', 'manager', function ($scope, $http, manager) {

@ -96,7 +96,11 @@
<tr ng-repeat="manager in managers">
<td ng-bind="manager.username"></td>
<td ng-bind="manager.display_name"></td>
<td style="white-space: nowrap;overflow: hidden;text-overflow:ellipsis;"><img ng-src="{{manager.headimg}}" style="height: 30px;width:30px;" class="img-circle" ng-if="manager.headimg"> {{manager.nickname}}</td>
<td style="white-space: nowrap;overflow: hidden;text-overflow:ellipsis;">
<img ng-src="{{manager.headimg}}" style="height: 30px;width:30px;" class="img-circle" ng-if="manager.headimg">
{{manager.nickname}}
<i role="button" class="fa fa-remove text-danger" ng-if="manager.headimg" title="Unbind" ng-click="removeWechatBind(manager)"></i>
</td>
<td ng-bind="manager.create_time|date:'yyyy-MM-dd'"></td>
<td ng-bind="manager.email"></td>
<td ng-bind="manager.org_name"></td>

@ -97,7 +97,7 @@ define(['angular','../../analysis/org/analysis-org'], function (angular) {
})
})
};
$scope.availableYears = [new Date().getFullYear() - 1, new Date().getFullYear()];
$scope.availableYears = [new Date().getFullYear() - 2,new Date().getFullYear() - 1, new Date().getFullYear()];
$scope.params = {};
$scope.months = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12];
$scope.loadAvailableMonths = function (year) {

@ -0,0 +1,66 @@
package au.com.royalpay.payment.manage.process;
import au.com.royalpay.payment.manage.support.abafile.ABAConfig;
import au.com.royalpay.payment.manage.support.abafile.ABAFile;
import au.com.royalpay.payment.tools.env.PlatformEnvironment;
import org.apache.commons.csv.CSVFormat;
import org.apache.commons.csv.CSVParser;
import org.apache.commons.csv.CSVRecord;
import org.apache.commons.io.FileUtils;
import org.junit.Before;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.test.util.ReflectionTestUtils;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
/**
* Create by yixian at 2019-01-17 12:47
*/
public class ABAGenerator {
private ABAConfig.ABABase config;
private Logger logger = LoggerFactory.getLogger(getClass());
private String csvFile = "C:\\Users\\yixian\\Documents\\royalpay\\2019\\cemtexaba-template-csv.csv";
@Before
public void prepareEnv() {
PlatformEnvironment env = new PlatformEnvironment();
env.afterInitialize();
ReflectionTestUtils.setField(env, "foreignCurrency", "AUD");
config = new ABAConfig.ABABase()
.setBank("CBA")
.setApca("301500")
.setBsb("063109")
.setAccountNo("11505847")
.setAccountName("Tunnel Show Pty Ltd");
}
@Test
public void generate() {
ABAFile file = config.initFile(new Date());
try (FileReader reader = new FileReader(csvFile)) {
CSVParser parser = new CSVParser(reader, CSVFormat.newFormat(','));
List<CSVRecord> records = parser.getRecords();
for (CSVRecord record : records) {
logger.debug("reading record:{}", record.toString());
String bsb = record.get(0).replace("-", "");
String accountNo = record.get(1);
String accountName = record.get(2);
BigDecimal amount = new BigDecimal(record.get(3));
String remark = record.get(4);
file.addSettleMerchant(bsb, accountNo, accountName, amount, remark);
}
byte[] bytes = file.output(0);
FileUtils.writeByteArrayToFile(new File("C:\\Users\\yixian\\Documents\\royalpay\\2019\\cemtexaba-template.aba"), bytes);
logger.info("output done");
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}
Loading…
Cancel
Save