|
|
|
<?php
|
|
|
|
/**
|
|
|
|
* @remark :
|
|
|
|
* @name :AfterDayCount.php
|
|
|
|
* @author :lyh
|
|
|
|
* @method :post
|
|
|
|
* @time :2025/3/26 15:28
|
|
|
|
*/
|
|
|
|
|
|
|
|
namespace App\Console\Commands\DayCount;
|
|
|
|
|
|
|
|
use App\Models\ASide\APublicModel;
|
|
|
|
use App\Models\Channel\Channel;
|
|
|
|
use App\Models\Manage\ManageHr;
|
|
|
|
use App\Models\Project\Project;
|
|
|
|
use App\Models\RankData\RankDataLog;
|
|
|
|
use Carbon\Carbon;
|
|
|
|
use App\Models\HomeCount\AfterCount as AfterCountModel;
|
|
|
|
use Illuminate\Console\Command;
|
|
|
|
|
|
|
|
class AfterDayCount extends Command
|
|
|
|
{
|
|
|
|
/**
|
|
|
|
* The name and signature of the console command.
|
|
|
|
*
|
|
|
|
* @var string
|
|
|
|
*/
|
|
|
|
protected $signature = 'after_count';
|
|
|
|
|
|
|
|
protected $managerHrModel;
|
|
|
|
|
|
|
|
public $after_manager = [
|
|
|
|
1 => ['许璐','王袁袁'],
|
|
|
|
2 => ['陈思蓓'],
|
|
|
|
3 => ['张国英']
|
|
|
|
];
|
|
|
|
|
|
|
|
/**
|
|
|
|
* The console command description.
|
|
|
|
*
|
|
|
|
* @var string
|
|
|
|
*/
|
|
|
|
protected $description = '统计昨日售后数据';
|
|
|
|
|
|
|
|
public function handle(){
|
|
|
|
echo date('Y-m-d H:i:s').'统计start->'.PHP_EOL;
|
|
|
|
$saveData = $this->_action();
|
|
|
|
$afterModel = new AfterCountModel();
|
|
|
|
//保存数据
|
|
|
|
$afterModel->insertAll($saveData);
|
|
|
|
echo date('Y-m-d H:i:s').'->统计end'.PHP_EOL;
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @remark :执行方法
|
|
|
|
* @name :_action
|
|
|
|
* @author :lyh
|
|
|
|
* @method :post
|
|
|
|
* @time :2025/3/26 15:29
|
|
|
|
*/
|
|
|
|
public function _action(){
|
|
|
|
$this->managerHrModel = new ManageHr();
|
|
|
|
$projectModel = new Project();
|
|
|
|
$rankDataLogModel = new RankDataLog();
|
|
|
|
$date = date('Y-m-d');
|
|
|
|
$saveData = [];
|
|
|
|
// $projectIdArr = $rankDataLogModel->selectField(['is_compliance'=>1,'lang'=>'','date'=>date('Y-m-d', strtotime('-3 months'))],'project_id');//3个月前达标的项目id
|
|
|
|
foreach ($this->after_manager as $key => $valM){
|
|
|
|
$idArr = $this->managerHrModel->selectField(['name'=>['in',$valM]],'id');
|
|
|
|
echo '对应优化师id:'.json_encode($idArr).PHP_EOL;
|
|
|
|
$project_count = $projectModel->where('gl_project.extend_type',0)
|
|
|
|
->where('gl_project.delete_status',0)
|
|
|
|
->where('gl_project.old_project_id',0)
|
|
|
|
->where('gl_project_deploy_optimize.start_date','<=',$date)
|
|
|
|
->whereIn('gl_project_deploy_optimize.optimist_mid',$idArr)
|
|
|
|
->whereIn('gl_project.type',[2,4,6])
|
|
|
|
->leftJoin('gl_project_deploy_optimize', 'gl_project.id', '=', 'gl_project_deploy_optimize.project_id')
|
|
|
|
->whereRaw("FIND_IN_SET('2', gl_project.level) = 0 AND FIND_IN_SET('3', gl_project.level) = 0")
|
|
|
|
->whereRaw("FIND_IN_SET('7', gl_project_deploy_optimize.special) = 0 AND FIND_IN_SET('8', gl_project_deploy_optimize.special) = 0")
|
|
|
|
->count();
|
|
|
|
$qualified_count = $projectModel->where('gl_project.extend_type',0)
|
|
|
|
->where('gl_project.delete_status',0)
|
|
|
|
->where('gl_project.old_project_id',0)
|
|
|
|
->where('gl_project_deploy_optimize.start_date','<=',$date)
|
|
|
|
->where('gl_project.is_remain_today',1)
|
|
|
|
->where('gl_project_deploy_build.plan','!=',0)
|
|
|
|
->whereIn('gl_project_deploy_optimize.optimist_mid',$idArr)
|
|
|
|
->whereIn('gl_project.type',[2,4,6])
|
|
|
|
->leftJoin('gl_project_deploy_optimize', 'gl_project.id', '=', 'gl_project_deploy_optimize.project_id')
|
|
|
|
->leftJoin('gl_project_deploy_build', 'gl_project.id', '=', 'gl_project_deploy_build.project_id')
|
|
|
|
->whereRaw("FIND_IN_SET('2', gl_project.level) = 0 AND FIND_IN_SET('3', gl_project.level) = 0")
|
|
|
|
->whereRaw("FIND_IN_SET('7', gl_project_deploy_optimize.special) = 0 AND FIND_IN_SET('8', gl_project_deploy_optimize.special) = 0")
|
|
|
|
->count();
|
|
|
|
$rate = number_format($qualified_count / $project_count, 2);
|
|
|
|
$threeMonthsAgo = date('Y-m', strtotime('-3 months'));
|
|
|
|
echo '3个月前的时间:'.$threeMonthsAgo.PHP_EOL;
|
|
|
|
$three_project_count = $projectModel->where('gl_project.extend_type',0)
|
|
|
|
->where('gl_project.delete_status',0)
|
|
|
|
->where('gl_project.old_project_id',0)
|
|
|
|
->where('gl_project_deploy_optimize.start_date','>=',$threeMonthsAgo.'-01')
|
|
|
|
->where('gl_project_deploy_optimize.start_date','<=',$threeMonthsAgo.'-31')
|
|
|
|
->whereIn('gl_project_deploy_optimize.optimist_mid',$idArr)
|
|
|
|
->whereIn('gl_project.type',[2,4,6])
|
|
|
|
->leftJoin('gl_project_deploy_optimize', 'gl_project.id', '=', 'gl_project_deploy_optimize.project_id')
|
|
|
|
->whereRaw("FIND_IN_SET('2', gl_project.level) = 0 AND FIND_IN_SET('3', gl_project.level) = 0")
|
|
|
|
->whereRaw("FIND_IN_SET('7', gl_project_deploy_optimize.special) = 0 AND FIND_IN_SET('8', gl_project_deploy_optimize.special) = 0")
|
|
|
|
->count();
|
|
|
|
$three_qualified_count = $projectModel->where('gl_project.extend_type',0)
|
|
|
|
->where('gl_project.delete_status',0)
|
|
|
|
->where('gl_project.old_project_id',0)
|
|
|
|
->where('gl_project.is_remain_today',1)
|
|
|
|
->where('gl_project_deploy_optimize.start_date','>=',$threeMonthsAgo.'-01')
|
|
|
|
->where('gl_project_deploy_optimize.start_date','<=',$threeMonthsAgo.'-31')
|
|
|
|
->whereIn('gl_project_deploy_optimize.optimist_mid',$idArr)
|
|
|
|
->whereIn('gl_project.type',[2,4,6])
|
|
|
|
->where('gl_project_deploy_build.plan','!=',0)
|
|
|
|
->leftJoin('gl_project_deploy_optimize', 'gl_project.id', '=', 'gl_project_deploy_optimize.project_id')
|
|
|
|
->leftJoin('gl_project_deploy_build', 'gl_project.id', '=', 'gl_project_deploy_build.project_id')
|
|
|
|
->whereRaw("FIND_IN_SET('2', gl_project.level) = 0 AND FIND_IN_SET('3', gl_project.level) = 0")
|
|
|
|
->whereRaw("FIND_IN_SET('7', gl_project_deploy_optimize.special) = 0 AND FIND_IN_SET('8', gl_project_deploy_optimize.special) = 0")
|
|
|
|
->count();
|
|
|
|
if($three_project_count != 0){
|
|
|
|
$three_rate = number_format($three_qualified_count / $three_project_count, 2);
|
|
|
|
}else{
|
|
|
|
$three_rate = 0;
|
|
|
|
}
|
|
|
|
$data = $projectModel->where('gl_project.extend_type',0)
|
|
|
|
->where('gl_project.delete_status',0)
|
|
|
|
->where('gl_project.old_project_id',0)
|
|
|
|
->where('gl_project_deploy_optimize.start_date','>=',$threeMonthsAgo.'-01')
|
|
|
|
->where('gl_project_deploy_optimize.start_date','<=',$threeMonthsAgo.'-31')
|
|
|
|
->where('gl_project.is_remain_today',1)
|
|
|
|
->whereIn('gl_project_deploy_optimize.optimist_mid',$idArr)
|
|
|
|
->whereIn('gl_project.type',[2,4,6])
|
|
|
|
->leftJoin('gl_project_payment', 'gl_project.id', '=', 'gl_project_payment.project_id')
|
|
|
|
->leftJoin('gl_project_deploy_build', 'gl_project.id', '=', 'gl_project_deploy_build.project_id')
|
|
|
|
->leftJoin('gl_domain_info', 'gl_project.id', '=', 'gl_domain_info.project_id')
|
|
|
|
->leftJoin('gl_project_deploy_optimize', 'gl_project.id', '=', 'gl_project_deploy_optimize.project_id')
|
|
|
|
->leftJoin('gl_project_online_check', 'gl_project.id', '=', 'gl_project_online_check.project_id')
|
|
|
|
->whereRaw("FIND_IN_SET('2', gl_project.level) = 0 AND FIND_IN_SET('3', gl_project.level) = 0")
|
|
|
|
->whereRaw("FIND_IN_SET('7', gl_project_deploy_optimize.special) = 0 AND FIND_IN_SET('8', gl_project_deploy_optimize.special) = 0")
|
|
|
|
->select($this->selectParam())->get()->toArray();
|
|
|
|
foreach ($data as $k=>$val){
|
|
|
|
$this->handleParam($val);
|
|
|
|
$data[$k] = $val;
|
|
|
|
}
|
|
|
|
$saveData[] = [
|
|
|
|
'date'=>date('Y-m-d'),
|
|
|
|
'type'=> $key,
|
|
|
|
'project_count'=>$project_count,
|
|
|
|
'qualified_count'=>$qualified_count,
|
|
|
|
'rate'=>$rate,
|
|
|
|
'three_project_count'=>$three_project_count,
|
|
|
|
'three_qualified_count'=>$three_qualified_count,
|
|
|
|
'three_rate'=>$three_rate,
|
|
|
|
'data' => json_encode($data,true)
|
|
|
|
];
|
|
|
|
}
|
|
|
|
return $saveData;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public function selectParam(){
|
|
|
|
$select = [
|
|
|
|
'gl_project.id AS id',
|
|
|
|
'gl_project.title AS title',
|
|
|
|
'gl_project.level AS level',
|
|
|
|
'gl_project.channel AS channel',
|
|
|
|
'gl_project.company AS company',
|
|
|
|
'gl_project.type AS type',
|
|
|
|
'gl_project.created_at AS created_at',
|
|
|
|
'gl_project.is_language AS is_language',
|
|
|
|
'gl_project.cooperate_date AS cooperate_date',
|
|
|
|
'gl_project.finish_remain_day AS finish_remain_day',
|
|
|
|
'gl_project.is_remain_today AS is_remain_today',
|
|
|
|
'gl_project.remain_day AS remain_day',
|
|
|
|
'gl_project.seo_remain_day AS seo_remain_day',
|
|
|
|
'gl_project.robots AS robots',
|
|
|
|
'gl_project.is_minor_languages AS is_minor_languages',
|
|
|
|
'gl_project.is_translate AS is_translate',
|
|
|
|
'gl_project.is_translate_tag AS is_translate_tag',
|
|
|
|
'gl_project.is_upgrade AS is_upgrade',
|
|
|
|
'gl_project.site_status AS site_status',
|
|
|
|
'gl_project_online_check.id AS online_check_id',
|
|
|
|
'gl_project_online_check.question AS question',
|
|
|
|
'gl_project_online_check.go_question AS go_question',
|
|
|
|
'gl_project_online_check.optimist_status AS optimist_status',
|
|
|
|
'gl_project_online_check.qa_status AS qa_status',
|
|
|
|
'gl_project_online_check.updated_at AS online_updated_at',
|
|
|
|
'gl_project_payment.amount AS amount',
|
|
|
|
'gl_project_deploy_build.dept_id AS dept_id',
|
|
|
|
'gl_project_deploy_build.keyword_num AS key',
|
|
|
|
'gl_project_deploy_build.service_duration AS day',
|
|
|
|
'gl_project_deploy_build.leader_mid AS leader_mid',
|
|
|
|
'gl_project_deploy_build.manager_mid AS manager_mid',
|
|
|
|
'gl_project_deploy_build.designer_mid AS designer_mid',
|
|
|
|
'gl_project_deploy_build.tech_mid AS tech_mid',
|
|
|
|
'gl_project_deploy_build.test_domain AS test_domain',
|
|
|
|
'gl_project_deploy_build.plan AS plan',
|
|
|
|
'gl_project_deploy_build.seo_plan AS seo_plan',
|
|
|
|
'gl_project_deploy_optimize.dept_id AS optimize_dept_id',
|
|
|
|
'gl_project_deploy_optimize.manager_mid AS optimize_manager_mid',
|
|
|
|
'gl_project_deploy_optimize.optimist_mid AS optimize_optimist_mid',
|
|
|
|
'gl_project_deploy_optimize.assist_mid AS optimize_assist_mid',
|
|
|
|
'gl_project_deploy_optimize.tech_mid AS optimize_tech_mid',
|
|
|
|
'gl_project_deploy_optimize.design_mid AS design_mid',
|
|
|
|
'gl_project_deploy_optimize.tech_leader AS tech_leader',
|
|
|
|
'gl_project_deploy_optimize.quality_mid AS quality_mid',
|
|
|
|
'gl_project_deploy_optimize.design_mid AS design_mid',
|
|
|
|
'gl_project_deploy_optimize.start_date AS start_date',
|
|
|
|
'gl_project_deploy_optimize.backlink AS backlink',
|
|
|
|
'gl_project_deploy_optimize.ai_video AS ai_video',
|
|
|
|
'gl_project_deploy_optimize.api_no AS api_no',
|
|
|
|
'gl_project_deploy_optimize.first_compliance_time AS first_compliance_time',
|
|
|
|
'gl_domain_info.amp_status AS amp_status',
|
|
|
|
'gl_domain_info.domain AS domain',
|
|
|
|
];
|
|
|
|
return $select;
|
|
|
|
}
|
|
|
|
|
|
|
|
public function handleParam(&$item){
|
|
|
|
$data = APublicModel::getNumByProjectId($item['id']);
|
|
|
|
$manageModel = new ManageHr();
|
|
|
|
$plan = Project::planMap();
|
|
|
|
$seo_plan = Project::seoMap();
|
|
|
|
$item['plan'] = $plan[$item['plan']] ?? $seo_plan[1];
|
|
|
|
$item['channel'] = Channel::getChannelText($item['channel']['user_id'] ?? 0);
|
|
|
|
$item['build_leader'] = $manageModel->getName($item['leader_mid']);
|
|
|
|
$item['build_manager'] = $manageModel->getName($item['manager_mid']);
|
|
|
|
$item['build_designer'] = $manageModel->getName($item['designer_mid']);
|
|
|
|
$item['build_tech'] = $manageModel->getName($item['tech_mid']);
|
|
|
|
$item['optimize_manager'] = $manageModel->getName($item['optimize_manager_mid']);
|
|
|
|
$item['optimize_optimist'] = $manageModel->getName($item['optimize_optimist_mid']);
|
|
|
|
$item['optimize_assist'] = $manageModel->getName($item['optimize_assist_mid']);
|
|
|
|
$item['optimize_tech'] = $manageModel->getName($item['optimize_tech_mid']);
|
|
|
|
$item['quality_mid_name'] = $manageModel->getName($item['quality_mid']);
|
|
|
|
$item['created_at'] = date('Y年m月d日', strtotime($item['cooperate_date']));
|
|
|
|
$item['autologin_code'] = getAutoLoginCode($item['id']);
|
|
|
|
$item['domain'] = 'https://'.$item['domain'].'/';
|
|
|
|
if(!empty($item['domain']) && $item['amp_status'] == 1){
|
|
|
|
$item['amp_domain'] = str_replace('www','m',$item['domain']);
|
|
|
|
}
|
|
|
|
$item['product_num'] = $data['product'] ?? 0;
|
|
|
|
$item['keyword_num'] = $item['key'] ?? 0;
|
|
|
|
$item['inquiry_num'] = $data['inquiry'] ?? 0;
|
|
|
|
$item['autologin_code'] = getAutoLoginCode($item['id']);
|
|
|
|
return $item;
|
|
|
|
}
|
|
|
|
} |