TaskLogic.php 3.6 KB
<?php

namespace App\Http\Logic\Aside\Task;


use App\Helper\Arr;
use App\Http\Logic\Aside\BaseLogic;
use App\Http\Logic\Aside\LoginLogic;
use App\Http\Logic\Aside\Manage\ManageLogic;
use App\Models\File\File;
use App\Models\Task\Task;
use App\Models\Task\TaskOwner;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Str;

/**
 * Class TaskLogic
 * @package App\Http\Logic\Aside\Task
 * @author zbj
 * @date 2023/4/27
 */
class TaskLogic extends BaseLogic
{
    public function __construct()
    {
        parent::__construct();
        $this->param = $this->requestAll;
        $this->model = new Task();
    }

    /**
     * @remark :获取数据详情
     * @name   :getTaskInfo
     * @author :lyh
     * @method :post
     * @time   :2023/8/23 16:42
     */
    public function getTaskInfo()
    {
        $info = $this->model->where(['id'=>$this->param['id']])->with('owner')->with('follow')->first();
        if($info === false){
            $this->fail('error');
        }
        $info = $this->getFileUrl($info);
        $info['follow'] = $this->getFileUrl($info['follow']);
        return $this->success($info);
    }

    /**
     * @remark :处理文件
     * @name   :getFileUrl
     * @author :lyh
     * @method :post
     * @time   :2023/8/23 16:15
     */
    public function getFileUrl(&$v){
        $fileModel = new File();
        $file_info = $fileModel->read(['hash'=>$v['attachment']]);
        if($file_info !== false){
            $v['attachment_name'] = basename($file_info['path']);
            if($file_info['is_cos'] == 1){
                $cos = config('filesystems.disks.cos');
                $cosCdn = $cos['cdn'];
                $v['attachment'] = $cosCdn.$file_info['path'];
            }else{
                $v['attachment'] = url('a/download_files?hash='.$v['attachment']);
            }
        }
        return $v;
    }


    /**
     * @remark :保存
     * @name   :save
     * @author :lyh
     * @method :post
     * @time   :2023/8/23 17:19
     */
    public function save($param){

        DB::beginTransaction();
        try {
            $res = parent::save($param);
            $data['task_id'] = $res['id'];
            //支持分配多人
            $owner = Arr::splitFilterToArray($param['owner']);
            foreach ($owner as $manage_id){
                $data['manage_ids'][] = $manage_id;
                (new TaskOwnerLogic)->save($data);
            }
            DB::commit();
        }catch (\Exception $e){
            DB::rollBack();
            errorLog('工单保存失败', $param, $e);
            $this->fail('保存失败');
        }
        return $this->success();
    }

    /**
     * 修改状态
     * @param $param
     * @return array
     * @throws \App\Exceptions\AsideGlobalException
     * @throws \App\Exceptions\BsideGlobalException
     * @author zbj
     * @date 2023/4/27
     */
    public function status(){
        $taskOwnerModel = new TaskOwner();
        $ownerInfo = $taskOwnerModel->read(['task_id'=>$this->param['id'],'manager_id'=>$this->manager['id']]);
        if($ownerInfo === false){
            $this->fail('当前工单不属于您');
        }
        DB::beginTransaction();
        try {
            $this->model->edit(['status'=>$this->param['status']],['id'=>$this->param['id']]);
            $taskOwnerModel->edit(['status'=>$this->param['status']],['task_id'=>$this->param['id']]);
        }catch (\Exception $e){
            $this->fail('error');
        }
        return $this->success();
    }

    public function clearCache($id)
    {
        parent::clearCache($id);

        parent::setWith(['owner', 'follow']);
        parent::clearCache($id);
    }
}