Ver código fonte

fix: 修改暂不设置时同步清空支付宝成员+删除额度记录

alphah 2 semanas atrás
pai
commit
d93fae1a49

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

@@ -342,8 +342,29 @@ async def modify_institution_controller(
         if not add_ids and not delete_ids:
             scope_info = None
             log.info("scope 无变化,跳过")
-        # 从请求中移除 scope 数据,避免与基础修改冲突
-        data.pop("modify_scope_info", None)
+    elif applicable_scope in ("NONE", "none"):
+        # 暂不设置:清空支付宝范围(调用 scope.modify 删除所有成员)
+        try:
+            scope_old = await InstitutionScopeService.scopepageinfo_query_service(
+                auth=auth, institution_id=institution_id, enterprise_id=enterprise_id,
+                page_num=1, page_size=500,
+            )
+            old_adapter = scope_old.get("adapter_type", "")
+            old_ids = [str(i) for i in (scope_old.get("owner_id_list") or []) if i]
+
+            # 对非NONE的旧范围,清空所有成员
+            if old_adapter and old_adapter not in ("NONE",) and old_ids:
+                scope_info = {
+                    "enterprise_id": enterprise_id,
+                    "adapter_type": old_adapter,
+                    "owner_type": "EMPLOYEE",
+                    "delete_owner_id_list": old_ids,
+                }
+                log.info(f"暂不设置 - 清空支付宝旧成员: {old_adapter}, count={len(old_ids)}")
+        except Exception:
+            log.warning(f"查询旧scope失败,跳过清空支付宝成员")
+    # 从请求中移除 scope 数据,避免与基础修改冲突
+    data.pop("modify_scope_info", None)
 
     # 第1次请求:仅修改制度基础信息(不含 scope)
     base_data = {k: v for k, v in data.items() if k != "modify_scope_info"}