获取组织分类后群数据

/**
     * 获取组织分类后群数据
     * @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); }

 

posted @ 2018-12-28 19:18  心之所依  阅读(204)  评论(0编辑  收藏  举报