|
@@ -742,7 +742,8 @@ public class InstitutionService {
|
|
|
|
|
|
|
|
// 调用支付宝 alipay.ebpp.invoice.institution.modify 同步
|
|
// 调用支付宝 alipay.ebpp.invoice.institution.modify 同步
|
|
|
try {
|
|
try {
|
|
|
- AlipayEbppInvoiceInstitutionModifyModel modifyModel = new AlipayEbppInvoiceInstitutionModifyModel();
|
|
|
|
|
|
|
+ com.payment.platform.core.alipay.ExtendedInstitutionModifyModel modifyModel =
|
|
|
|
|
+ new com.payment.platform.core.alipay.ExtendedInstitutionModifyModel();
|
|
|
modifyModel.setInstitutionId(existing.getInstitutionId());
|
|
modifyModel.setInstitutionId(existing.getInstitutionId());
|
|
|
modifyModel.setEnterpriseId(existing.getEnterpriseId());
|
|
modifyModel.setEnterpriseId(existing.getEnterpriseId());
|
|
|
if (StrUtil.isNotBlank(existing.getInstitutionName())) {
|
|
if (StrUtil.isNotBlank(existing.getInstitutionName())) {
|
|
@@ -764,6 +765,60 @@ public class InstitutionService {
|
|
|
modifyModel.setConsultMode(existing.getConsultMode());
|
|
modifyModel.setConsultMode(existing.getConsultMode());
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ // 金额/限额变更 → 构建 modify_standard_detail_info 同步支付宝
|
|
|
|
|
+ boolean amountChanged = dto.getAmount() != null
|
|
|
|
|
+ && !dto.getAmount().equals(existing.getAmount());
|
|
|
|
|
+ boolean limitChanged = dto.getSingleLimit() != null
|
|
|
|
|
+ && !dto.getSingleLimit().equals(existing.getSingleLimit());
|
|
|
|
|
+ if ((amountChanged || limitChanged) && StrUtil.isNotBlank(existing.getEnterpriseId())) {
|
|
|
|
|
+ try {
|
|
|
|
|
+ // 查询支付宝制度详情获取已有 standard_id
|
|
|
|
|
+ var detailModel = new AlipayEbppInvoiceInstitutionDetailinfoQueryModel();
|
|
|
|
|
+ detailModel.setInstitutionId(existing.getInstitutionId());
|
|
|
|
|
+ detailModel.setEnterpriseId(existing.getEnterpriseId());
|
|
|
|
|
+ var detailReq = new AlipayEbppInvoiceInstitutionDetailinfoQueryRequest();
|
|
|
|
|
+ detailReq.setBizModel(detailModel);
|
|
|
|
|
+ var detailResp = alipayClientFactory.getClient(existing.getEnterpriseId()).execute(detailReq);
|
|
|
|
|
+ if (detailResp.isSuccess() && detailResp.getStandardIdInfoList() != null) {
|
|
|
|
|
+ String periodFactor = mapPeriodTypeToFactor(existing.getPeriodType());
|
|
|
|
|
+ java.util.List<com.payment.platform.core.alipay.ExtendedInstitutionModifyModel.ModifyStandardItem>
|
|
|
|
|
+ modifyList = new java.util.ArrayList<>();
|
|
|
|
|
+ for (com.alipay.api.domain.StandardIdInfo info : detailResp.getStandardIdInfoList()) {
|
|
|
|
|
+ if (info.getStandardId() == null) continue;
|
|
|
|
|
+ java.util.List<com.payment.platform.core.alipay.ExtendedInstitutionModifyModel.ModifyCondition>
|
|
|
|
|
+ condList = new java.util.ArrayList<>();
|
|
|
|
|
+ if (amountChanged && periodFactor != null) {
|
|
|
|
|
+ var c = new com.payment.platform.core.alipay.ExtendedInstitutionModifyModel.ModifyCondition();
|
|
|
|
|
+ c.setRuleFactor(periodFactor);
|
|
|
|
|
+ c.setRuleValue(dto.getAmount().toPlainString());
|
|
|
|
|
+ condList.add(c);
|
|
|
|
|
+ }
|
|
|
|
|
+ if (limitChanged) {
|
|
|
|
|
+ var c = new com.payment.platform.core.alipay.ExtendedInstitutionModifyModel.ModifyCondition();
|
|
|
|
|
+ c.setRuleFactor("QUOTA_TOTAL");
|
|
|
|
|
+ c.setRuleValue(dto.getSingleLimit().toPlainString());
|
|
|
|
|
+ condList.add(c);
|
|
|
|
|
+ }
|
|
|
|
|
+ if (!condList.isEmpty()) {
|
|
|
|
|
+ var item = new com.payment.platform.core.alipay.ExtendedInstitutionModifyModel.ModifyStandardItem();
|
|
|
|
|
+ item.setStandardId(info.getStandardId());
|
|
|
|
|
+ item.setModifyConditionList(condList);
|
|
|
|
|
+ modifyList.add(item);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ if (!modifyList.isEmpty()) {
|
|
|
|
|
+ var detailInfo = new com.payment.platform.core.alipay.ExtendedInstitutionModifyModel.ModifyStandardDetailInfo();
|
|
|
|
|
+ detailInfo.setModifyStandardList(modifyList);
|
|
|
|
|
+ modifyModel.setModifyStandardDetailInfo(detailInfo);
|
|
|
|
|
+ log.info("已构建 modify_standard_detail_info: amountChanged={}, limitChanged={}",
|
|
|
|
|
+ amountChanged, limitChanged);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
|
+ log.warn("构建 modify_standard_detail_info 失败(不影响基础修改): {}", e.getMessage());
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
AlipayEbppInvoiceInstitutionModifyRequest modifyRequest =
|
|
AlipayEbppInvoiceInstitutionModifyRequest modifyRequest =
|
|
|
new AlipayEbppInvoiceInstitutionModifyRequest();
|
|
new AlipayEbppInvoiceInstitutionModifyRequest();
|
|
|
modifyRequest.setBizModel(modifyModel);
|
|
modifyRequest.setBizModel(modifyModel);
|
|
@@ -1403,6 +1458,19 @@ public class InstitutionService {
|
|
|
};
|
|
};
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ /** 周期类型 → 支付宝 QUOTA 因子 */
|
|
|
|
|
+ private static String mapPeriodTypeToFactor(String periodType) {
|
|
|
|
|
+ if (periodType == null) return null;
|
|
|
|
|
+ return switch (periodType) {
|
|
|
|
|
+ case "daily" -> "QUOTA_DAY";
|
|
|
|
|
+ case "weekly" -> "QUOTA_WEEK";
|
|
|
|
|
+ case "monthly" -> "QUOTA_MONTH";
|
|
|
|
|
+ case "quarterly" -> "QUOTA_QUARTER";
|
|
|
|
|
+ case "yearly" -> "QUOTA_YEAR";
|
|
|
|
|
+ default -> null;
|
|
|
|
|
+ };
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
/**
|
|
/**
|
|
|
* 构建发放规则数据 (对应 Python controller create_institution_controller)
|
|
* 构建发放规则数据 (对应 Python controller create_institution_controller)
|
|
|
* <p>
|
|
* <p>
|