Merge branch 'hotfix' into develop

master
yuan 7 years ago
commit 9c06de37d9

@ -128,6 +128,6 @@ public interface TransactionMapper {
List<JSONObject> getClientRank(@Param("begin") Date begin, @Param("end") Date end);
List<JSONObject> listClientUnsettleDataByDate(@Param("client_id") int clientId);
List<JSONObject> listClientUnsettleDataByDate(@Param("client_id") int clientId, @Param("max_settle_to") Date maxSettleTo);
}

@ -3,6 +3,7 @@ package au.com.royalpay.payment.manage.settlement.core.impls;
import au.com.royalpay.payment.manage.mappers.log.ClearingLogMapper;
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.ClientAccountMapper;
import au.com.royalpay.payment.manage.settlement.core.ManualSettleSupport;
import au.com.royalpay.payment.tools.exceptions.BadRequestException;
@ -18,6 +19,7 @@ import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
@ -37,6 +39,8 @@ public class ManualSettleSupportImpl implements ManualSettleSupport {
private ClearingLogMapper clearingLogMapper;
@Resource
private ClientAccountMapper clientAccountMapper;
@Resource
private CalendarMapper calendarMapper;
@Override
public JSONObject requestManualSettle(Date settleTo, String accountId) {
@ -49,6 +53,9 @@ public class ManualSettleSupportImpl implements ManualSettleSupport {
throw new BadRequestException("Cannot settle today's transactions");
}
JSONObject currentTask = findCurrentSettle(clientId, false);
if (currentTask.getBooleanValue("locked")) {
throw new BadRequestException("You cannot do this at the moment");
}
String taskId = currentTask.getString("task_id");
currentTask.put("request_time", new Date());
currentTask.put("client_id", clientId);
@ -69,6 +76,9 @@ public class ManualSettleSupportImpl implements ManualSettleSupport {
if (!client.getBooleanValue("manual_settle")) {
throw new ForbiddenException("Manual Settlement Not Enabled");
}
if (client.getBooleanValue("skip_clearing")) {
throw new ForbiddenException("Manual Settlement Not Enabled");
}
JSONObject todayTask = taskManualSettleMapper.findTodayTask(clientId);
if (todayTask != null) {
todayTask.put("settle_to", DateFormatUtils.format(todayTask.getDate("settle_to"), "yyyy-MM-dd"));
@ -76,10 +86,12 @@ public class ManualSettleSupportImpl implements ManualSettleSupport {
todayTask = new JSONObject();
}
List<JSONObject> settleLogs = clearingLogMapper.findByDate(new Date());
List<JSONObject> unsettleRequests = taskManualSettleMapper.listActiveTasks(clientId);
//今天未清算则锁定
todayTask.put("locked", settleLogs.isEmpty());
todayTask.put("locked", settleLogs.isEmpty() || !unsettleRequests.isEmpty());
if (includingUnsettleData) {
List<JSONObject> unsettleReports = transactionMapper.listClientUnsettleDataByDate(clientId);
Date end = findSettleTo(clientId);
List<JSONObject> unsettleReports = transactionMapper.listClientUnsettleDataByDate(clientId, end);
unsettleReports.parallelStream().forEach(report -> {
report.put("clearing_amount", CurrencyAmountUtils.scalePlatformCurrency(report.getBigDecimal("clearing_amount")));
BigDecimal settleAmount = report.getBigDecimal("settle_amount");
@ -96,4 +108,18 @@ public class ManualSettleSupportImpl implements ManualSettleSupport {
}
return todayTask;
}
private Date findSettleTo(int clientId) {
Date today = DateUtils.truncate(new Date(), Calendar.DATE);
JSONObject rateConfig = merchantInfoProvider.clientCurrentRate(clientId, today, "Wechat");
int cleanDays = rateConfig.getIntValue("clean_days");
List<Date> settleDateRange = calendarMapper.findClearingDateRange(today, cleanDays - 1);
Date end;
if (settleDateRange.size() < 2) {
end = DateUtils.addDays(today, -cleanDays);
} else {
end = DateUtils.addDays(settleDateRange.get(0), -1);
}
return end;
}
}

@ -750,7 +750,7 @@
sum(if(transaction_type = 'Credit', clearing_amount, -clearing_amount)) clearing_amount,
sum(if(transaction_type = 'Credit', settle_amount, -settle_amount)) settle_amount
FROM pmt_transactions t
WHERE t.client_id = #{client_id} AND t.clearing_status = 0
WHERE t.client_id = #{client_id} AND t.clearing_status = 0 AND date(t.transaction_time)&lt;=date(#{max_settle_to})
GROUP BY trans_date
ORDER BY trans_date DESC
</select>

@ -1 +1 @@
manual_settle.notice=Settlement will be made on second work day after submitted this application. Your balance will not update during this time.
manual_settle.notice=Settlement will be executed on second work day after submitted this application. Your balance will not update during this time.

@ -131,7 +131,7 @@
} else if (/(iPhone|iPad|iPod|iOS)/i.test(navigator.userAgent)) {
window.webkit.messageHandlers.appCmd.postMessage({type:'cmd_join_mondelay'});
} else if (/(Android)/i.test(navigator.userAgent)) {
android.appCmd('{\"type\":\"cmd_join_mondelay\"}');
android.appCmd('{\"type\":\"cmd_join_mondelay\",\"cancel_waring\":\"'+cancel_waring+'\"}');
} else {
}
@ -145,8 +145,7 @@
} else if (/(iPhone|iPad|iPod|iOS)/i.test(navigator.userAgent)) {
window.webkit.messageHandlers.appCmd.postMessage({type:'cmd_cancel_mondelay',cancel_waring:cancel_waring});
} else if (/(Android)/i.test(navigator.userAgent)) {
android.appCmd('{\"type\":\"cmd_cancel_mondelay\"}');
} else {
android.appCmd('{\"type\":\"cmd_cancel_mondelay\",\"cancel_waring\":\"'+cancel_waring+'\"}'); } else {
}

@ -4,6 +4,11 @@
<div class="col-sm-6">
<input type="checkbox" ng-model="partner.manual_settle" bs-switch
switch-change="manualSettle(partner.manual_settle)">
<p class="text-info">
<i class="fa fa-info"></i> If you open it ,system will not execute settlement automatically.
You can withdraw deposit when you need.Settlement amount will be send to your bank account in the next day<br>
<i class="fa fa-info"></i> 如果打开手动提现开关则系统不自动进行清算。您可以根据您的需要自行提现提现金额会在T+1到账<br>
</p>
</div>
</div>
<div class="col-sm-12">

Loading…
Cancel
Save