|
|
@@ -275,6 +275,7 @@ async def modify_institution_controller(
|
|
|
auth: Annotated[AuthSchema, Depends(AuthPermission(["module_payment:expense:institution:modify"]))],
|
|
|
) -> JSONResponse:
|
|
|
"""编辑费控制度"""
|
|
|
+ institution_id = data.get("institution_id", "")
|
|
|
# enterprise_id 推导
|
|
|
if not data.get("enterprise_id"):
|
|
|
from app.plugin.module_payment.enterprise.model import EnterpriseModel
|
|
|
@@ -366,6 +367,62 @@ async def modify_institution_controller(
|
|
|
# 从请求中移除 scope 数据,避免与基础修改冲突
|
|
|
data.pop("modify_scope_info", None)
|
|
|
|
|
|
+ # 构建金额/限额变更的标准规则信息(同步到支付宝)
|
|
|
+ new_amount = data.get("amount")
|
|
|
+ new_single_limit = data.get("single_limit")
|
|
|
+ period_type = data.get("period_type", "")
|
|
|
+ grant_mode = data.get("grant_mode", "")
|
|
|
+
|
|
|
+ if institution_id and (new_amount is not None or new_single_limit is not None):
|
|
|
+ try:
|
|
|
+ from app.plugin.module_payment.expense.rule.model import ExpenseRuleModel
|
|
|
+ from sqlalchemy import select as sa_select
|
|
|
+ stmt = sa_select(ExpenseRuleModel).where(
|
|
|
+ ExpenseRuleModel.institution_id == institution_id
|
|
|
+ )
|
|
|
+ exec_result = await auth.db.execute(stmt)
|
|
|
+ rules = exec_result.scalars().all()
|
|
|
+
|
|
|
+ modify_standard_list = []
|
|
|
+ for rule in rules:
|
|
|
+ if not rule.rule_id:
|
|
|
+ continue
|
|
|
+ std_item = {"standard_id": rule.rule_id}
|
|
|
+ condition_list = []
|
|
|
+
|
|
|
+ if new_single_limit is not None:
|
|
|
+ condition_list.append({
|
|
|
+ "rule_factor": "QUOTA_TOTAL",
|
|
|
+ "rule_name": "单次消费金额",
|
|
|
+ "rule_value": str(new_single_limit),
|
|
|
+ })
|
|
|
+
|
|
|
+ if grant_mode == "period" and period_type and new_amount:
|
|
|
+ PERIOD_FACTOR_MAP = {
|
|
|
+ "daily": "QUOTA_DAY", "weekly": "QUOTA_WEEK",
|
|
|
+ "monthly": "QUOTA_MONTH", "quarterly": "QUOTA_QUARTER",
|
|
|
+ "yearly": "QUOTA_YEAR",
|
|
|
+ }
|
|
|
+ factor = PERIOD_FACTOR_MAP.get(period_type)
|
|
|
+ if factor:
|
|
|
+ condition_list.append({
|
|
|
+ "rule_factor": factor,
|
|
|
+ "rule_name": f"{period_type}限额",
|
|
|
+ "rule_value": str(new_amount),
|
|
|
+ })
|
|
|
+
|
|
|
+ if condition_list:
|
|
|
+ std_item["standard_condition_info_list"] = condition_list
|
|
|
+ modify_standard_list.append(std_item)
|
|
|
+
|
|
|
+ if modify_standard_list:
|
|
|
+ data["modify_standard_detail_info"] = {
|
|
|
+ "modify_standard_list": modify_standard_list
|
|
|
+ }
|
|
|
+ log.info(f"已构建金额变更信息: amount={new_amount}, single_limit={new_single_limit}, rules_count={len(modify_standard_list)}")
|
|
|
+ except Exception as e:
|
|
|
+ log.warning(f"构建标准规则变更信息失败(将跳过金额同步): {e}")
|
|
|
+
|
|
|
# 第1次请求:仅修改制度基础信息(不含 scope)
|
|
|
base_data = {k: v for k, v in data.items() if k != "modify_scope_info"}
|
|
|
institution_modify_model = AlipayEbppInvoiceInstitutionModifyModel.from_alipay_dict(base_data)
|