Parcourir la source

fix: SDK单元素对象属性为None,统一用to_alipay_dict()转完整dict取值

alphah il y a 1 semaine
Parent
commit
8223d1e73d

+ 10 - 14
backend/app/plugin/module_payment/expense/institution/controller.py

@@ -383,26 +383,24 @@ async def modify_institution_controller(
 
             # 构建 modify_standard_detail_info
             modify_standard_list = []
-            if detail_dict:
-                std_list = detail_dict.get("standard_info_list") or []
-                import sys; sys.stderr.write(f"STD_DEBUG std_list type={type(std_list)}, len={len(std_list) if isinstance(std_list, list) else 'N/A'}\n")
+            if detail_dict and detail_dict.get("standard_info_list"):
+                std_list = detail_dict["standard_info_list"]
                 if not isinstance(std_list, list):
                     std_list = [std_list]
                 for std in std_list:
-                    std_id = getattr(std, 'standard_id', None) or (std.get("standard_id") if isinstance(std, dict) else None)
-                    sys.stderr.write(f"STD_DEBUG std_id={std_id}\n")
+                    std_dict = std.to_alipay_dict() if hasattr(std, 'to_alipay_dict') else (std if isinstance(std, dict) else {})
+                    std_id = std_dict.get("standard_id", "")
                     if not std_id:
                         continue
-                    conditions = getattr(std, 'standard_condition_info_list', None) or (std.get("standard_condition_info_list") if isinstance(std, dict) else [])
+                    conditions = std_dict.get("standard_condition_info_list") or []
                     if not isinstance(conditions, list):
                         conditions = [conditions]
-                    sys.stderr.write(f"STD_DEBUG conditions_len={len(conditions)}, grant_mode={grant_mode}, new_amount={new_amount}\n")
                     modify_condition_list = []
 
                     for cond in conditions:
-                        cond_factor = getattr(cond, 'rule_factor', None) or (cond.get("rule_factor") if isinstance(cond, dict) else "")
-                        cond_id = getattr(cond, 'rule_id', None) or (cond.get("rule_id") if isinstance(cond, dict) else "")
-                        sys.stderr.write(f"STD_DEBUG cond: factor={cond_factor}, id={cond_id}, in_factors={cond_factor in PERIOD_FACTORS}\n")
+                        cond_dict = cond.to_alipay_dict() if hasattr(cond, 'to_alipay_dict') else (cond if isinstance(cond, dict) else {})
+                        cond_factor = cond_dict.get("rule_factor", "")
+                        cond_id = cond_dict.get("rule_id", "")
 
                         PERIOD_FACTORS = {"QUOTA_DAY", "QUOTA_WEEK", "QUOTA_MONTH", "QUOTA_QUARTER", "QUOTA_YEAR"}
 
@@ -416,13 +414,10 @@ async def modify_institution_controller(
 
                     if modify_condition_list:
                         modify_standard_list.append({"standard_id": std_id, "modify_condition_list": modify_condition_list})
-                        import sys; sys.stderr.write(f"STD_DEBUG added modify_standard, len={len(modify_standard_list)}\n")
 
             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}")
-            else:
-                import sys; sys.stderr.write(f"STD_DEBUG modify_standard_list EMPTY\n")
 
             # 周期发放制度:独立调 issuerule.modify
             if grant_mode == "period" and new_amount is not None and detail_dict:
@@ -430,7 +425,8 @@ async def modify_institution_controller(
                 if not isinstance(issue_rule_list, list):
                     issue_rule_list = [issue_rule_list]
                 for rule in issue_rule_list:
-                    ir_id = getattr(rule, 'issue_rule_id', None) or (rule.get("issue_rule_id") if isinstance(rule, dict) else "")
+                    rule_dict = rule.to_alipay_dict() if hasattr(rule, 'to_alipay_dict') else (rule if isinstance(rule, dict) else {})
+                    ir_id = rule_dict.get("issue_rule_id", "")
                     if ir_id:
                         await IssueruleService.modify_issuerule_service(
                             auth=auth, institution_id=institution_id,