where("sys_user_id",$adminId) ->where("is_delete",0) ->pluck("corpid")->toArray(); } # 获取已授权账号列表 list($list, $total) = AuthorizeCorp::getCorpList($keyword, $page, $pageSize, $active, $only_manage_corp_id_arr); if($getUserScale) { # 提取企微ID,批量查询用户规模 $corpIdList = array_column($list->toArray(), 'corpid'); $corpUserScaleList = CorpService::getMultipleCorpUserScaleFromRds($corpIdList); foreach ($list as $item) { $userScale = $corpUserScaleList[$item->corpid] ?? 0; $item->user_scale = $userScale; } } return [$list, $total]; } /** * 获取用户规模 * @param $corpId * @return numeric */ public static function getCorpUserScale($corpId) { if(empty($corpId)) { return 0; } return CustomerDetails::getCorpUserScale($corpId); } /** * 设置用户规模 * @param $corpId * @param $userScale * @return void */ public static function setCorpUserScale($corpId, $userScale) { $redisKey = 'Playlet::corpUserScale' . '-' . $corpId; return RedisModel::set($redisKey, $userScale); } public static function getMultipleCorpUserScaleFromRds($corpIdList) { $result = RedisModel::get(CorpUserScaleWarningConf::CORP_USER_SCALE); if(empty($result)) return self::getMultipleCorpUserScale($corpIdList); return json_decode($result, 1); } public static function getMultipleCorpUserScale($corpIdList) { # 对相同取模的ID进行合并处理 $idList = []; foreach($corpIdList as $corpid) { $suffix = get_hash_code($corpid, 50); $idList[$suffix][] = $corpid; } $result = []; foreach($idList as $suffix => $item) { $res = CustomerDetails::suffix($suffix)->whereIn('corpid', $item)->selectRaw('corpid, count(external_userid) as count') ->groupBy('corpid')->get(); foreach ($res as $value) { $result[$value->corpid] = $value->count; } } return $result; } }