post('uids'); $action = $request->post('action'); if(empty($miniprogram_id) || empty($uids) || empty($action) || !in_array($action,['on','off'])){ ChannelBusinessException::throwError(Errors::PARAM_EMPTY); } $miniprogram_info = $this->miniprogram->find($miniprogram_id); if(!$miniprogram_info || $miniprogram_info->status == 0){ ChannelBusinessException::throwError(Errors::MINIPROGRAM_STATUS_ERROR); } collect(explode(',',$uids))->filter(function (int $value, int $key) use($miniprogram_id,$action){ $user_simple = UserService::getUserInfo($value,['roles.identify']); if($user_simple && $user_simple->identify == self::COMPANY_ROLE){ $result = $this->userHasMiniprograms->where('uid',$value)->where('miniprogram_id',$miniprogram_id)->first(); if($action == 'off'){ if($result){ $result->is_enabled = 0; $result->save(); } return true; } if($result){ if($result->is_enabled == 0){ $result->is_enabled = 1; $result->save(); } return true; } $this->userHasMiniprograms->create([ 'uid'=>$value,'miniprogram_id'=>$miniprogram_id,'is_enabled'=>1 ]); return true; } return false; }); return []; } public function getAllocationInfo($miniprogram_id){ $all_company_account = UserService::listByRole(self::COMPANY_ROLE,['users.username','users.id']); $result = $all_company_account->map(function ($item,$key) use($miniprogram_id) { $info = $this->userHasMiniprograms->where('uid',$item->id)->where('miniprogram_id',$miniprogram_id)->where('is_enabled',1)->count(); if($info){ $item->user_has_miniprogram = 1; $item->user_has_miniprogram_flag = 'on'; }else{ $item->user_has_miniprogram = 0; $item->user_has_miniprogram_flag = 'off'; } return $item; }); $group = $result->groupBy('user_has_miniprogram_flag')->toArray(); if(!isset($group['on'])){ $group['on'] = []; } if(!isset($group['off'])){ $group['off'] = []; } $group['all'] = $result->toArray(); return $group; } }