Sfoglia il codice sorgente

fix(expense): 使用规则显示周期限额 - 创建制度时将 period_type+amount 写入 condition_info

- 定额发放时,将月/日/季/年限额作为 QUOTA_MONTH/QUOTA_DAY 等因子加入 standard_condition_info_list
- 后端 RuleListOutSchema 新增 max_day/max_month/max_quarter/max_year_amount 字段
- 后端 detailinfo 和 rule list 接口都从 condition_info 提取这些值
alphah 2 settimane fa
parent
commit
ce8a886d9f

+ 18 - 3
backend/app/plugin/module_payment/expense/institution/controller.py

@@ -83,6 +83,8 @@ async def create_institution_controller(
     # 默认使用规则(支付宝必填)
     if not data.get("standard_info_list"):
         single_limit = data.get("single_limit", 0)
+        period_type = data.get("period_type", "")
+        amount = data.get("amount", 0)
         standard_info = {
             "standard_name": data.get("institution_name", "默认规则"),
             "standard_desc": f"单笔限额{single_limit}元" if single_limit else "通用规则",
@@ -91,10 +93,23 @@ async def create_institution_controller(
             "personal_qrcode_mode": 0,
             "outer_source_id": str(uuid.uuid4()).replace("-", ""),
         }
+        condition_list = []
         if single_limit:
-            standard_info["standard_condition_info_list"] = [
-                {"rule_factor": "QUOTA_TOTAL", "rule_name": "单次消费金额", "rule_value": str(single_limit)}
-            ]
+            condition_list.append({"rule_factor": "QUOTA_TOTAL", "rule_name": "单次消费金额", "rule_value": str(single_limit)})
+        # 定额发放时,将周期限额写入使用规则条件
+        PERIOD_FACTOR_MAP = {
+            "daily": "QUOTA_DAY", "weekly": "QUOTA_WEEK",
+            "monthly": "QUOTA_MONTH", "quarterly": "QUOTA_QUARTER",
+            "yearly": "QUOTA_YEAR",
+        }
+        if data.get("grant_mode") == "period" and period_type in PERIOD_FACTOR_MAP and amount:
+            condition_list.append({
+                "rule_factor": PERIOD_FACTOR_MAP[period_type],
+                "rule_name": f"{period_type}限额",
+                "rule_value": str(amount),
+            })
+        if condition_list:
+            standard_info["standard_condition_info_list"] = condition_list
         data["standard_info_list"] = [standard_info]
     institution_create_model = AlipayEbppInvoiceInstitutionCreateModel.from_alipay_dict(data)