fix(talk): 修正成员搜索的 Manager 调用并把成员判定归一为 bytes

- 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)
This commit is contained in:
TermiNexus committed 2026-09-28 17:29:15 +08:00
1 parent e8d85034e8
commit 2684490dd0
2 files changed
+11 -5

No files matched your search

@@ -12,7 +12,7 @@
{
"MenuName": "talk",
"MenuTitle": "Talk",
"MenuLink": "pages/talk/index.html",
"MenuLink": "pages/talk.html",
"MenuIcon": "ChatDotRound",
"MenuSort": 8,
"ParentMenuName": "company"
+10 -4
View File
@@ -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):