|
@@ -250,16 +250,17 @@ public class QuotaService {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// 5. 调支付宝 alipay.ebpp.invoice.expensecontrol.quota.modify (ADD/DEDUCT)
|
|
// 5. 调支付宝 alipay.ebpp.invoice.expensecontrol.quota.modify (ADD/DEDUCT)
|
|
|
- // 仅当 quota_id 是支付宝侧真实 ID(以"20"开头的时间戳格式)时才同步
|
|
|
|
|
- boolean isAlipayQuotaId = quotaId != null && quotaId.matches("^20\\d{26,}$");
|
|
|
|
|
- if (diff.compareTo(BigDecimal.ZERO) != 0 && isAlipayQuotaId) {
|
|
|
|
|
|
|
+ // quota_id 取自请求体(与 Python 一致),非本地 UUID
|
|
|
|
|
+ String alipayQuotaId = dto.getQuotaId();
|
|
|
|
|
+ if (diff.compareTo(BigDecimal.ZERO) != 0 && alipayQuotaId != null && !alipayQuotaId.isBlank()) {
|
|
|
try {
|
|
try {
|
|
|
AlipayEbppInvoiceExpensecontrolQuotaModifyModel model =
|
|
AlipayEbppInvoiceExpensecontrolQuotaModifyModel model =
|
|
|
new AlipayEbppInvoiceExpensecontrolQuotaModifyModel();
|
|
new AlipayEbppInvoiceExpensecontrolQuotaModifyModel();
|
|
|
- model.setQuotaId(quotaId);
|
|
|
|
|
|
|
+ model.setQuotaId(alipayQuotaId);
|
|
|
model.setAction(diff.compareTo(BigDecimal.ZERO) > 0 ? "ADD" : "DEDUCT");
|
|
model.setAction(diff.compareTo(BigDecimal.ZERO) > 0 ? "ADD" : "DEDUCT");
|
|
|
model.setOuterSourceId(UUID.randomUUID().toString().replace("-", ""));
|
|
model.setOuterSourceId(UUID.randomUUID().toString().replace("-", ""));
|
|
|
- model.setEnterpriseId(entity.getEnterpriseId());
|
|
|
|
|
|
|
+ model.setEnterpriseId(
|
|
|
|
|
+ dto.getEnterpriseId() != null ? dto.getEnterpriseId() : entity.getEnterpriseId());
|
|
|
// 元 → 分(取绝对值)
|
|
// 元 → 分(取绝对值)
|
|
|
model.setAmount(String.valueOf(diff.abs().multiply(new BigDecimal("100"))
|
|
model.setAmount(String.valueOf(diff.abs().multiply(new BigDecimal("100"))
|
|
|
.setScale(0, RoundingMode.DOWN).longValue()));
|
|
.setScale(0, RoundingMode.DOWN).longValue()));
|
|
@@ -277,8 +278,8 @@ public class QuotaService {
|
|
|
response.getCode(), response.getMsg(), response.getSubCode(), response.getSubMsg());
|
|
response.getCode(), response.getMsg(), response.getSubCode(), response.getSubMsg());
|
|
|
throw new BusinessException(400, "支付宝额度调整失败: " + subMsg);
|
|
throw new BusinessException(400, "支付宝额度调整失败: " + subMsg);
|
|
|
}
|
|
}
|
|
|
- log.info("支付宝额度调整成功, quotaId={}, action={}, amount={}",
|
|
|
|
|
- quotaId, model.getAction(), model.getAmount());
|
|
|
|
|
|
|
+ log.info("支付宝额度调整成功, alipayQuotaId={}, action={}, amount={}",
|
|
|
|
|
+ alipayQuotaId, model.getAction(), model.getAmount());
|
|
|
} catch (BusinessException e) {
|
|
} catch (BusinessException e) {
|
|
|
throw e;
|
|
throw e;
|
|
|
} catch (Exception e) {
|
|
} catch (Exception e) {
|
|
@@ -286,7 +287,7 @@ public class QuotaService {
|
|
|
throw new BusinessException(500, "支付宝额度调整异常: " + e.getMessage());
|
|
throw new BusinessException(500, "支付宝额度调整异常: " + e.getMessage());
|
|
|
}
|
|
}
|
|
|
} else if (diff.compareTo(BigDecimal.ZERO) != 0) {
|
|
} else if (diff.compareTo(BigDecimal.ZERO) != 0) {
|
|
|
- log.info("本地额度调整(无支付宝quota_id,仅更新本地): quotaId={}, diff={}", quotaId, diff);
|
|
|
|
|
|
|
+ log.info("本地额度调整(无支付宝quota_id,仅更新本地): localId={}, diff={}", quotaId, diff);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// 6. 更新本地额度记录(同时更新 totalAmount 和 availableAmount)
|
|
// 6. 更新本地额度记录(同时更新 totalAmount 和 availableAmount)
|