OnlineCheckLogic.php 4.2 KB
<?php

namespace App\Http\Logic\Aside\Project;

use App\Http\Logic\Aside\BaseLogic;
use App\Models\Project\DeployOptimize;
use App\Models\Project\OnlineCheck;
use App\Models\Project\Project;

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

    /**
     * @remark :用户审核
     * @name   :onlineCheck
     * @author :lyh
     * @method :post
     * @time   :2023/9/22 11:01
     */
    public function onlineCheck(){
        $info = $this->model->read(['project_id'=>$this->param['id']]);
        if($info === false){
            $this->fail('项目未提交审核');
        }
        //获取项目优化人员
        $optimizeModel = new DeployOptimize();
        $optimizeInfo = $optimizeModel->read(['project_id'=>$this->param['id']]);
        if(!empty($this->manager['special'])){
            foreach ($this->manager['special'] as $value){
                if($value['name'] == 'examine'){
                    $info['qa_mid'] = $this->manager['id'];
                    $optimizeInfo['optimist_mid'] = $this->manager['id'];
                    $optimizeInfo['assist_mid'] = $this->manager['id'];
                }
            }
        }
        //查看当前用户是否有权限审核
        if($this->param['type'] == 'optimist'){
            if(($optimizeInfo['optimist_mid'] != $this->manager['id']) && ($optimizeInfo['assist_mid'] != $this->manager['id'])){
                $this->fail('你无权限提交审核');
            }
        }else{
            //查看当前优化师是否审核
            if($info['optimist_status'] != 1){
                $this->fail('请先优化师审核');
            }
            if(($info['qa_mid'] != 0) && ($info['qa_mid'] != $this->manager['id'])){
                $this->fail('你无权限提交审核');
            }
            $projectModel = new Project();
            $projectInfo = $projectModel->read(['id'=>$this->param['id']]);
            if(!empty($projectInfo['uptime'])){
                $param['uptime'] = date('Y-m-d H:i:s');
            }
            if(isset($this->param['project_type']) && !empty($this->param['project_type'])){
                $param['type'] = $this->param['project_type'];
            }
            if(isset($param)){
                $projectModel->edit($param,['id'=>$this->param['id']]);
            }
        }
        $data = [
            $this->param['type'] . '_mid' => $this->manager['id'],
            $this->param['type'] . '_check_time' => date('Y-m-d H:i:s'),
            $this->param['type'] . '_status' => $this->param['status'],
            'remark' => $this->param['remark'] ??'',
        ];
        return $this->model->edit($data,['id'=>$info['id']]);
    }

    /**
     * @remark :提交审核
     * @name   :submitCheck
     * @author :lyh
     * @method :post
     * @time   :2023/7/31 11:06
     */
    public function saveOnlineCheck(){
        $info = $this->model->read(['project_id'=>$this->param['id']]);
        $projectModel = new Project();
        if($info !== false){
            $projectInfo = $projectModel->read(['id'=>$this->param['id']],['id','status']);
            if($projectInfo['status'] != $projectModel::STATUS_ONE){
                $projectModel->edit(['status'=>$projectModel::STATUS_ONE],['id'=>$projectInfo['id']]);
            }
        }else{
            if(($this->param['optimist_mid'] == 0) || ($this->param['qa_mid'] == 0)){
                $this->fail('请先选择优化师和品控,在提交审核');
            }
            //组装数据
            $data = [
                'project_id' => $this->param['id'],
                'created_manage_id' => $this->manager['id'],
                'optimist_mid' => $this->param['optimist_mid'],
                'qa_mid' => $this->param['qa_mid'],
                'created_at'=>date('Y-m-d H:i:s')
            ];
            try {
                $projectModel->edit(['status'=>$projectModel::STATUS_ONE],['id'=>$this->param['id']]);
                $this->model->add($data);
            }catch (\Exception $e){
                $this->fail('提交失败,请联系开发人员');
            }
        }
        return $this->success();
    }
}