/**
* 获取组织分类后群数据
* @param UrlManager $urlManager
* @param Request $request
* @return \Illuminate\Http\JsonResponse
*/
public function getOfficialGroupMy(UrlManager $urlManager,Request $request){
//用户id
$user_id = $request->user()->id;
$in_group = ImCluster::where('affiliations','like',"%\":\"{$user_id}\"}%")
->select(['cluster_id','id as im_group_id','name','description','affiliations_count',
'owner','member','deleted_at','group_level','privacy']
)->get()->toArray();
$push_config=ImGroupMessageConfig::where('user_id',$user_id)->get()->toArray();
$in_group_ids=[];
foreach ($in_group as $key =>$val){
$in_group_ids[]=$val['im_group_id'];
$in_group[$key]['em_ignore_notification'] = false;
foreach ($push_config as $key_push => $push){
if ($push['im_group_id'] == $val['im_group_id']){
$in_group[$key]['em_ignore_notification'] = (bool)$push['em_ignore_notification'];
break;
}
}
}
//查出组织关联的群
$organize = ImOrganize::where('status',1)->select('id','name','sorts')->orderBy('sorts','desc')->get()->toArray();
$withs=ImGroupOrganize::whereIn('im_group_id',$in_group_ids)->get()->toArray();
$withs_ids=[];
foreach ($withs as $key =>$val){
$withs_ids[]=$val['organize_id'];
}
$withs_ids=array_unique($withs_ids);
$group_with_org_ids = [];
foreach ($organize as $key =>$org_group){
if(in_array($org_group['id'],$withs_ids)){
//如果$with_ids中包含有该遍历的 org_id
$organize[$key]['group'] = [];
foreach ($withs as $key_org =>$org){
//拿到相对应的群组id
foreach ($in_group as $key_group =>$group){
if($org['organize_id'] == $org_group['id'] &&
$org['im_group_id'] == $group['im_group_id']){
array_push($organize[$key]['group'],$group);
//记录已关联组织的群组id
array_push($group_with_org_ids,$group['im_group_id']);
}
}
}
}else{
$organize[$key]['group'] = null;
}
}
//拿到未与组织绑定的群组
$group_without_org_ids = array_diff($in_group_ids,$group_with_org_ids);
//如果有未与组织绑定的群组,手动添加未选组织
if($group_without_org_ids){
$ssss['id']=null;
$ssss['name']='未选组织';
$ssss['group'] = [];
foreach ($group_without_org_ids as $key_group =>$group_id){
foreach ($in_group as $key_group =>$group){
if($group['im_group_id'] == $group_id){
array_push($ssss['group'],$group);
break;
}
}
}
array_push($organize,$ssss);
}
return response()->json($organize)->setStatusCode(200);
}