<?php namespace App\Http\Services; use App\Http\Controllers\Filter\SupplierFilter; use App\Model\RedisModel; use App\Model\SupplierChannelModel; use Illuminate\Support\Facades\DB; class SupplierStatisticsService { //获取供应商列表需要统计的信息 public function getSupplierListStatistics() { $statisticsKey = 'supplier_list_statistics_' . request()->user->userId; $redis = new RedisModel(); $result = json_decode($redis->get($statisticsKey), true); if ($result) { return $result; } $total = $this->getStatisticsCount('all'); //待复审 $needReview = $this->getStatisticsCount('need_review'); //待提审 $pending = $this->getStatisticsCount('pending'); //审核中 $inReview = $this->getStatisticsCount('in_review'); //通过 $passed = $this->getStatisticsCount('passed'); //未通过 $rejected = $this->getStatisticsCount('rejected'); //禁用 $disable = $this->getStatisticsCount('disable'); //没有渠道开发员 $noPurchaseUid = $this->getStatisticsCount('no_purchase_uid'); //没有采购 $noChannelUid = $this->getStatisticsCount('no_channel_uid'); //存在无效(离职)采购员 $invalidChannelUid = $this->getStatisticsCount('invalid_channel_uid'); //存在无效(离职)开发员 $invalidPurchaseUid = $this->getStatisticsCount('invalid_purchase_uid'); //需要跟进的 $toFollowUp = $this->getStatisticsCount('to_follow_up'); //没有sku的 $noSku = $this->getStatisticsCount('no_sku'); //拉黑的 $block = $this->getStatisticsCount('block'); //没有品牌协议附件的 $noQualityAssuranceAgreement = $this->getStatisticsCount('no_quality_assurance_agreement'); //有标签的(客户指定供应商) $hasTagSupplier = $this->getStatisticsCount('has_supplier_tag'); //联系人未完善 $concatNoComplete = $this->getStatisticsCount('contact_no_complete'); //历史检测异常 $historyAbnormal = $this->getStatisticsCount('history_abnormal'); //战略供应商(等级为A) $payTypeTerm = $this->getStatisticsCount('pay_type_term'); //账期供应商 $levelA = $this->getStatisticsCount('level_a'); $result = [ 'total' => $total, 'need_review' => $needReview, 'pending' => $pending, 'in_review' => $inReview, 'passed' => $passed, 'rejected' => $rejected, 'disable' => $disable, 'block' => $block, 'no_purchase_uid' => $noPurchaseUid, 'no_channel_uid' => $noChannelUid, 'invalid_channel_uid' => $invalidChannelUid, 'invalid_purchase_uid' => $invalidPurchaseUid, 'to_follow_up' => $toFollowUp, 'no_sku' => $noSku, 'no_quality_assurance_agreement' => $noQualityAssuranceAgreement, 'has_supplier_tag' => $hasTagSupplier, 'contact_no_complete' => $concatNoComplete, 'history_abnormal' => $historyAbnormal, 'pay_type_term' => $payTypeTerm, 'level_a' => $levelA, 'all_channel_user_resigned' => null, ]; $result = array_map(function ($value) { if ($value > 999) { $value = '999+'; } return $value; }, $result); $redis->set($statisticsKey, json_encode($result)); $redis->expire($statisticsKey, 50); return $result; } public function getStatisticsCount($type) { $model = new SupplierChannelModel(); //显示默认的数据(有权限逻辑) $filter = new SupplierFilter(); $model = $model->where('supplier_code', '!=', ''); if ($type=='contact_no_complete') { $subQuery = $filter->defaultFilter($model, $type); return $subQuery->get()->count(); } return $filter->defaultFilter($model, $type)->count(); } }