|
|
@@ -468,53 +468,70 @@ async def modify_scope_controller(
|
|
|
raw_new = data.get("add_owner_id_list") or []
|
|
|
new_employee_ids = set(str(i) for i in raw_new if i is not None and str(i).strip())
|
|
|
|
|
|
- # ====== 3. 计算差异 ======
|
|
|
- add_ids = list(new_employee_ids - old_employee_ids)
|
|
|
- delete_ids = list(old_employee_ids - new_employee_ids)
|
|
|
- # 全体员工(ALL)模式:支付宝端不需要传员工ID列表,但本地配额同步需要
|
|
|
- send_ids_to_alipay = new_adapter not in ("EMPLOYEE_ALL",)
|
|
|
+ # ====== 3. 计算员工级差异(用于配额联动) ======
|
|
|
+ add_emp_ids = list(new_employee_ids - old_employee_ids)
|
|
|
+ delete_emp_ids = list(old_employee_ids - new_employee_ids)
|
|
|
+
|
|
|
+ # 提取传给支付宝的原始ID(部门模式传部门ID,员工模式传员工ID) ======
|
|
|
+ alipay_add_ids: list[str] = []
|
|
|
+ alipay_delete_ids: list[str] = []
|
|
|
+ if new_adapter == "EMPLOYEE_DEPARTMENT":
|
|
|
+ dept_ids = data.get("add_owner_id_list") or []
|
|
|
+ alipay_add_ids = [str(d) for d in dept_ids if d]
|
|
|
+ elif new_adapter == "EMPLOYEE_SELECT":
|
|
|
+ alipay_add_ids = list(new_employee_ids - old_employee_ids)
|
|
|
+ alipay_delete_ids = list(old_employee_ids - new_employee_ids)
|
|
|
|
|
|
# ====== 4. 调用支付宝 scope.modify ======
|
|
|
- # 如果适配类型变更,需先单独改类型(不加员工ID),再增删员工
|
|
|
- if old_adapter != new_adapter:
|
|
|
- # 第1步:只改适配类型
|
|
|
+ # 部门模式:需一次性传部门ID,不支持分步
|
|
|
+ if new_adapter == "EMPLOYEE_DEPARTMENT":
|
|
|
+ scope_data = {
|
|
|
+ "enterprise_id": enterprise_id,
|
|
|
+ "adapter_type": "EMPLOYEE_DEPARTMENT",
|
|
|
+ "owner_type": data.get("owner_type", "EMPLOYEE"),
|
|
|
+ }
|
|
|
+ if alipay_add_ids:
|
|
|
+ scope_data["add_owner_id_list"] = alipay_add_ids
|
|
|
+ result = await InstitutionScopeService.scope_modify_service(
|
|
|
+ auth=auth, institution_id=institution_id, data=scope_data,
|
|
|
+ )
|
|
|
+ elif old_adapter != new_adapter and new_adapter != "EMPLOYEE_ALL":
|
|
|
+ # SELECT模式 + 适配类型变更:先改类型,再加员工
|
|
|
await InstitutionScopeService.scope_modify_service(
|
|
|
- auth=auth,
|
|
|
- institution_id=institution_id,
|
|
|
+ auth=auth, institution_id=institution_id,
|
|
|
data={
|
|
|
"enterprise_id": enterprise_id,
|
|
|
"adapter_type": new_adapter,
|
|
|
"owner_type": data.get("owner_type", "EMPLOYEE"),
|
|
|
},
|
|
|
)
|
|
|
- # 第2步:增删员工(ALL模式跳过,支付宝不传员工列表)
|
|
|
- if send_ids_to_alipay and (add_ids or delete_ids):
|
|
|
+ if alipay_add_ids or alipay_delete_ids:
|
|
|
scope_data = {
|
|
|
"enterprise_id": enterprise_id,
|
|
|
"adapter_type": new_adapter,
|
|
|
"owner_type": data.get("owner_type", "EMPLOYEE"),
|
|
|
}
|
|
|
- if add_ids:
|
|
|
- scope_data["add_owner_id_list"] = add_ids
|
|
|
- if delete_ids:
|
|
|
- scope_data["delete_owner_id_list"] = delete_ids
|
|
|
+ if alipay_add_ids:
|
|
|
+ scope_data["add_owner_id_list"] = alipay_add_ids
|
|
|
+ if alipay_delete_ids:
|
|
|
+ scope_data["delete_owner_id_list"] = alipay_delete_ids
|
|
|
result = await InstitutionScopeService.scope_modify_service(
|
|
|
auth=auth, institution_id=institution_id, data=scope_data,
|
|
|
)
|
|
|
else:
|
|
|
result = {"result": True}
|
|
|
else:
|
|
|
- # 适配类型不变,直接增删员工(ALL模式跳过)
|
|
|
- if send_ids_to_alipay and (add_ids or delete_ids):
|
|
|
+ # ALL模式 或 类型不变
|
|
|
+ if alipay_add_ids or alipay_delete_ids:
|
|
|
scope_data = {
|
|
|
"enterprise_id": enterprise_id,
|
|
|
"adapter_type": new_adapter,
|
|
|
"owner_type": data.get("owner_type", "EMPLOYEE"),
|
|
|
}
|
|
|
- if add_ids:
|
|
|
- scope_data["add_owner_id_list"] = add_ids
|
|
|
- if delete_ids:
|
|
|
- scope_data["delete_owner_id_list"] = delete_ids
|
|
|
+ if alipay_add_ids:
|
|
|
+ scope_data["add_owner_id_list"] = alipay_add_ids
|
|
|
+ if alipay_delete_ids:
|
|
|
+ scope_data["delete_owner_id_list"] = alipay_delete_ids
|
|
|
result = await InstitutionScopeService.scope_modify_service(
|
|
|
auth=auth, institution_id=institution_id, data=scope_data,
|
|
|
)
|
|
|
@@ -539,8 +556,8 @@ async def modify_scope_controller(
|
|
|
scope_info = {
|
|
|
"adapter_type": new_adapter,
|
|
|
"owner_type": "EMPLOYEE",
|
|
|
- "add_owner_id_list": add_ids,
|
|
|
- "delete_owner_id_list": delete_ids,
|
|
|
+ "add_owner_id_list": add_emp_ids,
|
|
|
+ "delete_owner_id_list": delete_emp_ids,
|
|
|
}
|
|
|
await InstitutionService._sync_modify_quotas_by_scope(
|
|
|
auth=auth,
|