ProcessRecordsLogic.php 4.4 KB
<?php

namespace App\Http\Logic\Aside\Project;


use App\Http\Logic\Aside\BaseLogic;
use App\Models\Domain\DomainInfo;
use App\Models\Project\ProcessRecords;
use App\Models\Project\Project;

class ProcessRecordsLogic extends BaseLogic
{
    public function __construct()
    {
        parent::__construct();
        $this->param = $this->requestAll;
        $this->model = new ProcessRecords();
    }

    public function getInfo($project_id)
    {
        $data = $this->model->read(['project_id'=>$project_id]);
        $project = ProjectLogic::instance()->getProjectInfo($project_id);
        if(!$data){
            $data = [
                'project_id' => $project_id,
                'record' => [],
                'remark' => '',
                'project_record'=>0,
                'optimize_record'=>0,
                'type'=>$project['type']
            ];
        }
        $data['type'] = $project['type'] ?? '';
        $data['project_company'] = $project['company'] ?? '';
        $plan = Project::planMap();
        $seo_plan = Project::seoMap();
        $data['project_plan'] = $plan[$project['deploy_build']['plan']] ?? 0;
        $data['project_seo_plan'] = $seo_plan[$project['deploy_build']['seo_plan']] ?? 0;
        $data['project_service_duration'] = $project['deploy_build']['service_duration'] ?? '';
        $data['domain'] = (!empty($project['deploy_optimize']['domain']) ? ((new DomainInfo())->getDomain($project['deploy_optimize']['domain'])) :  '');;
        $data['test_domain'] = $project['deploy_build']['test_domain'] ?? '';
        $data['login_mobile'] = $project['deploy_build']['login_mobile'] ?? '';
        $data['data_source'] = [
            [
                'type' => '基础资料',
                'item' => ['Logo', 'banner素材', '基本信息', '公司介绍', '新闻']
            ],
            [
                'type' => '产品资料',
                'item' => ['都未准备', '不足10款', '描述较少', '重复度过高']
            ],
            [
                'type' => '关键词/域名',
                'item' => ['未提供', '筛选中', '未盖章', '域名未确认']
            ],
            [
                'type' => '建站进度',
                'item' => ['资料上传', '网站修改中', '网站搭建完成,客户确认中', '等待网站品控审核后上线']
            ]
        ];
        $data['record'] = array_filter($data['record'], function($item) {
            return $item['date'] > '2025-09-01';
        });
        if($project['type'] == 2){
            //优化项目  默认在seo优化中
            if($data['optimize_record'] == 0) {
                $data['optimize_record'] = 1;
            }
            //时间大于优化时间,默认
            if(date('Y-m-d') > $project['deploy_optimize']['start_date']){
                $data['optimize_record'] = 2;
            }
            //首次达标时间
            if(!empty($project['deploy_optimize']['first_compliance_time'])){
                $data['optimize_record'] = 3;
            }
            //无剩余时间
            if($project['project_type'] == 1){
                if($project['remain_day'] == 0){
                    $data['optimize_record'] = 4;
                }
            }else{
                if($project['seo_remain_day'] == 0){
                    $data['optimize_record'] = 4;
                }
            }
            if(in_array(2,$project['level'])){
                $data['date_project_record'] = ['暂停优化'];
            }else{
                $data['date_project_record'] = Project::projectProgress('optimize');
            }
        }else{
            $data['date_project_record'] = Project::projectProgress('build');
        }
        return $this->success($data);
    }

    /**
     * @remark :保存数据
     * @name   :recordSave
     * @author :lyh
     * @method :post
     * @time   :2023/8/30 9:25
     */
    public function recordSave(){
        $info = $this->model->read(['project_id'=>$this->param['project_id']]);
        $this->param['operator_id'] = $this->manager['id'];
        $this->param['date'] = $this->param['record'][0]['date'] ?? null;
        $this->param['record'] = json_encode($this->param['record']);
        if($info === false){
            $res = $this->model->add($this->param);
        }else{
            $res = $this->model->edit($this->param,['id'=>$info['id']]);
        }
        if($res === false){
            $this->fail('保存失败');
        }
        return $this->success();
    }
}