|
|
|
@ -87,7 +87,8 @@ public class RefundServiceImpl implements RefundService, ApplicationEventPublish
|
|
|
|
|
throw new RefundExistException();
|
|
|
|
|
}
|
|
|
|
|
if (apply.isEmpty()) {
|
|
|
|
|
order.put("available", BigDecimal.valueOf(order.getDoubleValue("customer_payment_amount")).subtract(BigDecimal.valueOf(order.getDoubleValue("refund_fee"))).doubleValue());
|
|
|
|
|
order.put("available", BigDecimal.valueOf(order.getDoubleValue("customer_payment_amount"))
|
|
|
|
|
.subtract(BigDecimal.valueOf(order.getDoubleValue("refund_fee"))).doubleValue());
|
|
|
|
|
return order;
|
|
|
|
|
} else {
|
|
|
|
|
if (account != null) {
|
|
|
|
@ -118,7 +119,8 @@ public class RefundServiceImpl implements RefundService, ApplicationEventPublish
|
|
|
|
|
if (undoRefundOrder != null) {
|
|
|
|
|
throw new BadRequestException("该笔订单有退款正在处理,请稍后再试!");
|
|
|
|
|
}
|
|
|
|
|
order.put("available", BigDecimal.valueOf(order.getDoubleValue("customer_payment_amount")).subtract(BigDecimal.valueOf(order.getDoubleValue("refund_fee"))).doubleValue());
|
|
|
|
|
order.put("available", BigDecimal.valueOf(order.getDoubleValue("customer_payment_amount"))
|
|
|
|
|
.subtract(BigDecimal.valueOf(order.getDoubleValue("refund_fee"))).doubleValue());
|
|
|
|
|
return order;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -148,7 +150,8 @@ public class RefundServiceImpl implements RefundService, ApplicationEventPublish
|
|
|
|
|
Assert.notNull(client, "client not exists");
|
|
|
|
|
JSONObject clientConfig = clientConfigService.find(clientId);
|
|
|
|
|
OperatorType type = account != null ? OperatorType.PARTNER : OperatorType.MANAGER;
|
|
|
|
|
boolean requireAudit = type == OperatorType.PARTNER && PartnerRole.getRole(account.getIntValue("role")) == PartnerRole.CASHIER && clientConfig.getBooleanValue("enable_refund_auth");
|
|
|
|
|
boolean requireAudit = type == OperatorType.PARTNER && PartnerRole.getRole(account.getIntValue("role")) == PartnerRole.CASHIER
|
|
|
|
|
&& clientConfig.getBooleanValue("enable_refund_auth");
|
|
|
|
|
logger.debug("applyer type=" + type + "; require audit=" + requireAudit);
|
|
|
|
|
|
|
|
|
|
paymentApi.clientRefundBalanceCheck(clientId, orderId, currency, feeAmount);
|
|
|
|
@ -204,7 +207,8 @@ public class RefundServiceImpl implements RefundService, ApplicationEventPublish
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private JSONObject executeRefund(String orderId, BigDecimal amount, String remark, JSONObject partnerAccount, JSONObject manager, JSONObject order, JSONObject client) {
|
|
|
|
|
private JSONObject executeRefund(String orderId, BigDecimal amount, String remark, JSONObject partnerAccount, JSONObject manager, JSONObject order,
|
|
|
|
|
JSONObject client) {
|
|
|
|
|
checkOrderUseCustomerCoupon(order, amount);
|
|
|
|
|
JSONObject clientConfig = clientConfigService.find(client.getIntValue("client_id"));
|
|
|
|
|
OperatorType type = partnerAccount != null ? OperatorType.PARTNER : OperatorType.MANAGER;
|
|
|
|
@ -220,7 +224,8 @@ public class RefundServiceImpl implements RefundService, ApplicationEventPublish
|
|
|
|
|
operator.put("operator_id", manager.getIntValue("manager_id"));
|
|
|
|
|
operator.put("operator", manager.getString("display_name"));
|
|
|
|
|
}
|
|
|
|
|
boolean requireAudit = type == OperatorType.PARTNER && PartnerRole.getRole(partnerAccount.getIntValue("role")) == PartnerRole.CASHIER && clientConfig.getBooleanValue("enable_refund_auth");
|
|
|
|
|
boolean requireAudit = type == OperatorType.PARTNER && PartnerRole.getRole(partnerAccount.getIntValue("role")) == PartnerRole.CASHIER
|
|
|
|
|
&& clientConfig.getBooleanValue("enable_refund_auth");
|
|
|
|
|
logger.debug("applyer type=" + type + "; require audit=" + requireAudit);
|
|
|
|
|
return paymentApi.refundOrder(orderId, null, amount, remark, operator, type, requireAudit);
|
|
|
|
|
}
|
|
|
|
@ -338,7 +343,8 @@ public class RefundServiceImpl implements RefundService, ApplicationEventPublish
|
|
|
|
|
|
|
|
|
|
private void submitRefund(JSONObject account, JSONObject audition) {
|
|
|
|
|
JSONObject refundLog = refundMapper.find(audition.getString("refund_id"));
|
|
|
|
|
boolean platformAuditFlag = auditRefundAndCommitToPlatform(refundLog.getBigDecimal("amount"), audition.getString("remark"), refundLog.getString("order_id"), account);
|
|
|
|
|
boolean platformAuditFlag = auditRefundAndCommitToPlatform(refundLog.getBigDecimal("amount"), audition.getString("remark"),
|
|
|
|
|
refundLog.getString("order_id"), account);
|
|
|
|
|
if (!platformAuditFlag) {
|
|
|
|
|
paymentApi.submitRefund(audition.getString("refund_id"));
|
|
|
|
|
}
|
|
|
|
@ -347,8 +353,7 @@ public class RefundServiceImpl implements RefundService, ApplicationEventPublish
|
|
|
|
|
private boolean auditRefundAndCommitToPlatform(BigDecimal amount, String remark, String orderId, JSONObject account) {
|
|
|
|
|
if (amount.compareTo(BigDecimal.ZERO) > 0) {
|
|
|
|
|
JSONObject refundConfig = checkRefundAuditFlag();
|
|
|
|
|
if (refundConfig != null && refundConfig.getBoolean("refundAudit") &&
|
|
|
|
|
amount.compareTo(refundConfig.getBigDecimal("refundAuditAmount")) >= 0) {
|
|
|
|
|
if (refundConfig != null && refundConfig.getBoolean("refundAudit") && amount.compareTo(refundConfig.getBigDecimal("refundAuditAmount")) >= 0) {
|
|
|
|
|
// 订单需要审核
|
|
|
|
|
reviewNewRefundOrder(orderId, amount, remark, account, null);
|
|
|
|
|
return true;
|
|
|
|
@ -411,7 +416,8 @@ public class RefundServiceImpl implements RefundService, ApplicationEventPublish
|
|
|
|
|
}
|
|
|
|
|
review.put("bd_name", bdNameStr.deleteCharAt(bdNameStr.length() - 1).toString());
|
|
|
|
|
JSONObject order = orderMapper.find(review.getString("order_id"));
|
|
|
|
|
review.put("available", BigDecimal.valueOf(order.getDoubleValue("customer_payment_amount")).subtract(BigDecimal.valueOf(order.getDoubleValue("refund_fee"))).doubleValue());
|
|
|
|
|
review.put("available", BigDecimal.valueOf(order.getDoubleValue("customer_payment_amount"))
|
|
|
|
|
.subtract(BigDecimal.valueOf(order.getDoubleValue("refund_fee"))).doubleValue());
|
|
|
|
|
review.put("create_time", order.getDate("create_time"));
|
|
|
|
|
review.put("channel", order.getString("channel"));
|
|
|
|
|
return review;
|
|
|
|
@ -427,6 +433,15 @@ public class RefundServiceImpl implements RefundService, ApplicationEventPublish
|
|
|
|
|
return refundConfig;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public JSONObject listUnionAllApply(JSONObject params, PageBounds pagination) {
|
|
|
|
|
if(params.get("cleint_id")==null && params.get("client_ids")==null){
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
return PageListUtils.buildPageListResult(refundMapper.listUnionAllApply(params, pagination));
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public void setApplicationEventPublisher(ApplicationEventPublisher applicationEventPublisher) {
|
|
|
|
|
this.publisher = applicationEventPublisher;
|
|
|
|
|