OperationHeartbeatController.php 3.3 KB
<?php
/**
 * @remark :
 * @name   :OperationHeartbeatController.php
 * @author :lyh
 * @method :post
 * @time   :2024/8/28 14:02
 */

namespace App\Http\Controllers\Bside\BCom;

use App\Enums\Common\Code;
use App\Http\Controllers\Bside\BaseController;
use App\Models\Log\OperationHeartbeat;

class OperationHeartbeatController extends BaseController
{
    /**
     * @remark :保存数据
     * @name   :saveHeartbeat
     * @author :lyh
     * @method :post
     * @time   :2024/8/28 14:03
     */
    public function saveHeartbeat(){
        $this->request->validate([
            'source'=>'required',
            'source_id'=>'required',
            'is_list' => 'required',
            'is_custom'=>'required',
            'is_template'=>'required',
        ], [
            'source.required' => '请选择页面',
            'source_id.required' => '请选择数据id',
            'is_list.required' => '列表页/详情页',
            'is_custom.required' => '是否为扩展模版',
            'is_template.required' => '详情页/可视化',
        ]);
        $condition = ['project_id'=>$this->user['project_id'],'source'=>$this->param['source'],'source_id'=>$this->param['source_id'],
            'is_list'=>$this->param['is_list'],'is_custom'=>$this->param['is_custom'],'is_template'=>$this->param['is_template']];
        $operationHeartbeatModel = new OperationHeartbeat();
        $info = $operationHeartbeatModel->read($condition,['id','status']);
        $condition['status'] = $this->param['status'] ?? 0;
        if($info === false){
            $condition['operator_id'] = $this->user['id'];
            $condition['project_id'] = $this->user['project_id'];
            $operationHeartbeatModel->addReturnId($condition);
        }else{
            $operationHeartbeatModel->edit(['status'=>$condition['status'] ?? 0],['id'=>$info['id']]);
        }
        $this->response('success');
    }

    /**
     * @remark :获取当前详情
     * @name   :getInfo
     * @author :lyh
     * @method :post
     * @time   :2024/8/28 14:29
     */
    public function getInfo(){
        $this->request->validate([
            'source'=>'required',
            'source_id'=>'required',
            'is_list' => 'required',
            'is_custom'=>'required',
            'is_template'=>'required',
        ], [
            'source.required' => '请选择页面',
            'source_id.required' => '请选择数据id',
            'is_list.required' => '列表页/详情页',
            'is_custom.required' => '是否为扩展模版',
            'is_template.required' => '详情页/可视化',
        ]);
        $condition = ['project_id'=>$this->user['project_id'],'source'=>$this->param['source'],'source_id'=>$this->param['source_id'],
            'is_list'=>$this->param['is_list'],'is_custom'=>$this->param['is_custom'],'is_template'=>$this->param['is_template']];
        $operationHeartbeatModel = new OperationHeartbeat();
        $info = $operationHeartbeatModel->read($condition,['id','status','updated_at']);
        if($info === false){
            $info = [];
        }else{
            $date_time = strtotime($info['updated_at']) + (90 * 60);
            if($date_time > time()){
                $operationHeartbeatModel->edit(['status'=>0],$condition);
                $info['status'] = 0;
            }
        }
        $this->response('success',Code::SUCCESS,$info);
    }
}