'array', 'area_text' => 'array', 'contract_ids' => 'array' ]; /** * 筛选出 除超管用户自己所分配的站点 * @param Builder $query * @return Builder */ public function scopeUser(Builder $query) { $filterUserIds = []; $propagandaUserId = request()->input('propagandaUserId'); $propagandaUserId && $filterUserIds[] = $propagandaUserId; $serverUserId = request()->input('serverUserId'); $serverUserId && $filterUserIds[] = $serverUserId; $mangerUserId = request()->input('mangerUserId'); $mangerUserId && $filterUserIds[] = $mangerUserId; $helpUserId = request()->input('helpUserId'); $helpUserId && $filterUserIds[] = $helpUserId; $optimizeUserId = request()->input('optimizeUserId'); $optimizeUserId && $filterUserIds[] = $optimizeUserId; $aeUserId = request()->input('aeUserId'); $aeUserId && $filterUserIds[] = $aeUserId; $planUserId = request()->input('planUserId'); $planUserId && $filterUserIds[] = $planUserId; $salesUserId = request()->input('salesUserId'); $salesUserId && $filterUserIds[] = $salesUserId; $optimizationEditingUserId = request()->input('optimizationEditingUserId'); $optimizationEditingUserId && $filterUserIds[] = $optimizationEditingUserId; $webUserId = request()->input('webUserId'); $webUserId && $filterUserIds[] = $webUserId; $designUserId = request()->input('designUserId'); $designUserId && $filterUserIds[] = $designUserId; $user = auth()->user(); if (!$filterUserIds && ($user->is_super || in_array($user->role_id, [Role::TYPE_PROPAGANDA, Role::TYPE_ARTICLE, Role::TYPE_LINK, Role::TYPE_MANAGE_LEADER, Role::TYPE_SERVER, Role::TYPE_financial, Role::TYPE_SELLER, Role::TYPE_DESIGN_DIRECTOR, Role::TYPE_HR, Role::TYPE_SOFT_TEXT_SEARCH, Role::TYPE_CHONGQING_MANAGER, Role::TYPE_QUALITY ]))) { return $query; } return $query->whereExists(function (\Illuminate\Database\Query\Builder $builder) use ($user, $filterUserIds) { if ($filterUserIds) { $raw = sprintf('SUM(CASE WHEN user_id in (%s) then 1 ELSE 0 end) as total', implode(',', $filterUserIds)); $builder->select(DB::raw($raw))->from('user_has_sites') ->whereRaw(sprintf('user_has_sites.site_id=sites.id HAVING total=%s', count($filterUserIds))); } else { $builder->select(DB::raw(1))->from('user_has_sites') ->whereRaw(sprintf('user_id=%s AND user_has_sites.site_id=sites.id', $user->id)); } }); } public function articles() { return $this->hasMany(Article::class, 'site_id', 'id'); } public function linkUrls() { return $this->hasManyThrough( LinkTaskUrl::class, LinkTaskDetail::class, 'redundant_site_id', 'link_tasks_detail_id', 'id', 'id' ); } public function linkDetails() { return $this->hasMany(LinkTaskDetail::class, 'redundant_site_id', 'id'); } public function linkTasks() { return $this->hasMany(LinkTask::class, 'site_id', 'id'); } public function company(): BelongsTo { return $this->belongsTo( Company::class, 'company_id', 'id' ); } public function users() { return $this->belongsToMany( User::class, 'user_has_sites', 'site_id', 'user_id' ); } public function sitesProcess() { return $this->hasMany(SiteProcess::class, 'site_id', 'id'); } public function server() { return $this->hasOne( Server::class, 'server_id', 'server_id' ); } public function siteInfo() { return $this->hasOne(SiteInfo::class, 'site_id', 'id'); } public function sitePayment() { return $this->hasOne(SitePayment::class, 'site_id', 'id'); } public function identifier() { return sprintf('R%s-%s', date('Y'), $this->newQuery()->max('id') + 1); } public function business() { return $this->hasOne( Business::class, 'id', 'business_id' ); } public function renewHistory() { return $this->hasMany(SiteRenewHistory::class, 'site_id', 'id'); } public function socialPublish() { return $this->hasMany(SocialPublish::class, 'site_id', 'id'); } public function projectProgressEditing() { return $this->hasOne(ProjectProgressEditing::class, 'site_id', 'id'); } public function projectProgressPlanner() { return $this->hasOne(ProjectProgressPlanner::class, 'site_id', 'id'); } public function projectProgress() { return $this->hasOne(ProjectProgress::class, 'site_id', 'id'); } public function bqProjectProgress() { return $this->hasOne(BqProjectProgress::class, 'site_id', 'id'); } public function projectProgressCurrentMonth() { return $this->hasOne(ProjectProgressCurrentMonth::class, 'site_id', 'id'); } public function scoreSummary() { return $this->hasOne(ScoreSummary::class, 'site_id', 'id'); } public function processProgress() { return $this->hasOne(ProcessProgress::class, 'site_id', 'id'); } public function projectProgressFlowStage() { return $this->hasMany(FlowStage::class, 'site_id', 'id'); } public function bqFlow() { return $this->hasMany(BqFlow::class, 'site_id', 'id'); } public function projectFlowMemo() { return $this->hasMany(ProjectFlowMemo::class, 'site_id', 'id'); } const NATURE_TYPE = [ ['inx' => 1, 'val' => '上市公司'], ['inx' => 2, 'val' => '集团公司'], ['inx' => 3, 'val' => '国企'], ['inx' => 4, 'val' => '外贸公司'], ['inx' => 5, 'val' => '工厂'], ['inx' => 6, 'val' => 'SOHO'], ]; const STATUS_MAP = [ 1 => '建站期', 2 => '实施期', 3 => '服务期', 4 => '建站期暂停', 5 => '续费期', 6 => '已过期', 7 => '已终止', 8 => '实施期暂停', 9 => '网站续费维护', 10 => '未续费', ]; }