فهرست منبع

fix: 编辑改为全体员工时不传ID给支付宝+保留配额同步

alphah 2 هفته پیش
والد
کامیت
348a4b03a4

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

@@ -331,17 +331,17 @@ async def modify_institution_controller(
             "adapter_type": new_adapter,
             "owner_type": "EMPLOYEE",
         }
-        if add_ids:
-            scope_info["add_owner_id_list"] = add_ids
-        if delete_ids:
-            scope_info["delete_owner_id_list"] = delete_ids
-        log.info(
-            f"scope 差异: add={add_ids}, delete={delete_ids}, "
-            f"old_count={len(old_ids)}, new_count={len(new_ids)}"
-        )
-        if not add_ids and not delete_ids:
-            scope_info = None
-            log.info("scope 无变化,跳过")
+        if new_adapter == "EMPLOYEE_ALL":
+            # 全体员工模式:不传员工ID给支付宝(但本地同步仍然需要)
+            log.info(f"全体员工模式,跳过员工ID传参")
+        else:
+            if add_ids:
+                scope_info["add_owner_id_list"] = add_ids
+            if delete_ids:
+                scope_info["delete_owner_id_list"] = delete_ids
+            if not add_ids and not delete_ids:
+                scope_info = None
+                log.info("scope 无变化,跳过")
     elif applicable_scope in ("NONE", "none"):
         # 暂不设置:清空支付宝范围(调用 scope.modify 删除所有成员)
         try:

+ 6 - 1
backend/app/plugin/module_payment/expense/institution/service.py

@@ -860,9 +860,14 @@ class InstitutionService:
 
         # 第1.5步:单独调用 scope.modify(不与基础修改在同一请求中)
         if scope_info:
+            # 全体员工模式:传去支付宝时剥离员工ID
+            scope_data_for_alipay = scope_info.copy() if scope_info else {}
+            if scope_info.get("adapter_type") == "EMPLOYEE_ALL":
+                scope_data_for_alipay.pop("add_owner_id_list", None)
+                scope_data_for_alipay.pop("delete_owner_id_list", None)
             try:
                 await InstitutionScopeService.scope_modify_service(
-                    auth=auth, institution_id=institution_id, data=scope_info
+                    auth=auth, institution_id=institution_id, data=scope_data_for_alipay
                 )
                 log.info(f"适用范围已单独同步: adapter_type={scope_info.get('adapter_type')}")
             except Exception as e: