2.3 KiB
2.3 KiB
腾讯 IM 账号存在性检查
官方契约
account_check为只读查询,单次最多 100 个账号。- 请求为
CheckItem数组,每项包含UserID。 - 响应
ResultItem每项包含UserID、ResultCode、ResultInfo、AccountStatus;不是CheckResult字段。 - 只有
ResultCode = 0且状态为Imported/NotImported,才能判断已导入 / 未导入。非零结果码表示检查失败,不能当作未导入。
实现
server/app/common/service/TencentImService.php 新增:
public function checkAccounts(array $accounts): array
// ['existing' => string[], 'missing' => string[]]
复用 project.trtc 配置和管理员签名,仅请求 im_open_login_svc/account_check,timeout 为 15 秒。单次方法调用最多发出一次 HTTP;上层负责分批和调度,方法内没有重试或账号导入。
输入必须为非空字符串,去重后不超过 100 个;超出限制在请求前抛错。空输入直接返回两个空数组。返回列表按原始输入顺序排列,不依赖云端结果顺序。
整批完整成功后才返回分类。顶层错误、单项错误、无效状态、结果遗漏、重复账号或未请求账号均抛出 RuntimeException。云端 ErrorInfo/ErrorCode 或 ResultInfo/ResultCode 保留为异常消息和 getCode();网络异常同样不会转成缺失账号或空成功结果。
验证
php server/tests/TencentImAccountCheckTest.php→TENCENT_IM_ACCOUNT_CHECK_TEST_OKphp server/tests/ImRoamMessagePagerTest.php→IM_ROAM_MESSAGE_PAGER_TEST_OK- 服务及新增测试的
php -l:通过。 - 服务
git diff --check:通过。
新增测试覆盖官方请求字段、管理员配置、只读端点、15 秒 timeout、空输入、100/101 边界、去重和结果排序、批次/单项错误、网络错误及错误码保留、非法和不完整响应。HTTP 全程由替身截获,任何导入调用都会令测试失败。
未请求真实腾讯云、未导入任何账号、未访问或修改业务数据库;未修改 DiagnosisLogic、同步 Session 或前端。本子任务未提交。