From 2684490dd0782f95c98df749ff357e2843a440ee Mon Sep 17 00:00:00 2001 From: TermiNexus Date: Mon, 28 Sep 2026 17:29:15 +0800 Subject: [PATCH] =?UTF-8?q?fix(talk):=20=E4=BF=AE=E6=AD=A3=E6=88=90?= =?UTF-8?q?=E5=91=98=E6=90=9C=E7=B4=A2=E7=9A=84=20Manager=20=E8=B0=83?= =?UTF-8?q?=E7=94=A8=E5=B9=B6=E6=8A=8A=E6=88=90=E5=91=98=E5=88=A4=E5=AE=9A?= =?UTF-8?q?=E5=BD=92=E4=B8=80=E4=B8=BA=20bytes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - SearchCompanyUsers 与 _IsCompanyUser 改用 RoleManager.GetCompanyUserUUIDs (原误用 CompanyManager,该类没有此方法,成员搜索接口 500) - _IsCompanyUser 统一转 bytes 后再比对(GetCompanyUserUUIDs 返回 UUIDObj 集合, UUIDObj 与 bytes 的 hash 不同,原写法成员判定恒为 False,导致邀请成员必失败) - 菜单链接由 pages/talk/index.html 改为 pages/talk.html (前端 normalizeMenuPath 只去 pages/ 前缀与 .html 后缀,原写法规范化为 /talk/index 会 404) --- gvsds/apps/gerp/apps/talk/apps.gerp_manifests | 2 +- gvsds/apps/gerp/apps/talk/manager.py | 14 ++++++++++---- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/gvsds/apps/gerp/apps/talk/apps.gerp_manifests b/gvsds/apps/gerp/apps/talk/apps.gerp_manifests index 9b1cb890..b5b477b5 100644 --- a/gvsds/apps/gerp/apps/talk/apps.gerp_manifests +++ b/gvsds/apps/gerp/apps/talk/apps.gerp_manifests @@ -12,7 +12,7 @@ { "MenuName": "talk", "MenuTitle": "Talk", - "MenuLink": "pages/talk/index.html", + "MenuLink": "pages/talk.html", "MenuIcon": "ChatDotRound", "MenuSort": 8, "ParentMenuName": "company" diff --git a/gvsds/apps/gerp/apps/talk/manager.py b/gvsds/apps/gerp/apps/talk/manager.py index ca158b63..cd152e31 100644 --- a/gvsds/apps/gerp/apps/talk/manager.py +++ b/gvsds/apps/gerp/apps/talk/manager.py @@ -681,8 +681,8 @@ class TalkManager: company_bytes = _ToBytes(CompanyUUID) if not company_bytes: return [] - from gvsdsdk.auth.managers import CompanyManager - company_user_uuids = list(CompanyManager.GetCompanyUserUUIDs(company_bytes)) + from gvsdsdk.auth.managers import RoleManager + company_user_uuids = list(RoleManager.GetCompanyUserUUIDs(company_bytes)) if not company_user_uuids: return [] User = _GetUserModel() @@ -756,8 +756,14 @@ class TalkManager: """判断用户是否属于该公司""" if CompanyUUID is None or UserUUIDBytes is None: return False - from gvsdsdk.auth.managers import CompanyManager - return UserUUIDBytes in CompanyManager.GetCompanyUserUUIDs(CompanyUUID) + company_bytes = _ToBytes(CompanyUUID) + if not company_bytes: + return False + from gvsdsdk.auth.managers import RoleManager + # 注意:GetCompanyUserUUIDs 返回的是 UUIDObj 集合,与 bytes 的 hash 不同, + # 必须先统一归一成 bytes 再比对(否则成员判定恒为 False) + member_uuids = {_ToBytes(u) for u in RoleManager.GetCompanyUserUUIDs(company_bytes)} + return UserUUIDBytes in member_uuids @staticmethod def _FindSingle(UserA, UserB, CompanyUUID):