<?php
/**
 * 页面管理
 * @copyright 2021-浙江引擎力营销策划有限公司
 * @author Lc<sunshinecc1@163.com>
 * @since 2021-08-01
 */

namespace App\Http\Controllers\Admin\Stencil;

use App\Http\Controllers\Controller;
use App\Http\Models\Site;
use App\Http\Services\TemplateLibraryApiService;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Illuminate\Contracts\View\Factory;
use Illuminate\View\View;
use Illuminate\Http\JsonResponse;


class IndexController extends Controller
{
    private $templateLibraryApiService;

    /**
     * 模版库服务类
     * IndexController constructor.
     * @param TemplateLibraryApiService $templateLibraryApiService
     */
    public function __construct(TemplateLibraryApiService $templateLibraryApiService)
    {
        $this->templateLibraryApiService = $templateLibraryApiService;
    }

    /**
     * 页面管理
     * @param $siteId
     * @return Factory|View
     */
    public function index($siteId)
    {
        try {
            $site = DB::connection($this->templateLibraryApiService->connection($siteId))->table('content_template')->first();
            $trees = list_to_tree($this->templateLibraryApiService->getWebSitePage($siteId), 'id', 'parent_id', 'children');
            $templateList = DB::connection($this->templateLibraryApiService->connection($siteId))->table('content_template')
                    ->where('level', 2)
                    ->orderBy('rank', 'ASC')
                    ->orderBy('id', 'ASC')->get() ?? [];
            return view('admin.stencil.index', [
                'trees' => $trees,
                'siteId' => $siteId,
                'templateList' => $templateList,
                'site' => $site,
            ]);
        } catch (\Throwable $exception) {
            echo $exception->getMessage();
        }
    }

    /**
     * 内容列表以及选中
     * @param Request $request
     * @param $siteId
     * @return JsonResponse
     */
    public function getResourceList(Request $request, $siteId)
    {
        $result = $request->all();
        $connection = DB::connection($this->templateLibraryApiService->connection($siteId));
        $contentModel = $connection->table('content');
        if (!empty($result['content'])) {
            $contentModel = $contentModel->where('title', 'like', '%' . $result['content'] . '%');
        }
        $list = $contentModel->where('is_enabled', 1)->paginate($request->input('pageSize') ?? 6);
        $defaultList = $connection->table('content_var')->where('content_id', $result['contentId'] ?? 0)->get() ?? [];

        $defaultResultList = [];
        foreach ($defaultList as $value) {
            $result = unserialize($value->value);
            foreach ($result as $vv) {
                $defaultResultList[] = $vv;
            }
        }

        foreach ($list as $value) {
            $value->default = 0;
            $value->sort = 0;

            foreach ($defaultResultList as $vv) {
                if ($value->id == $vv['id']) {
                    $value->default = 1;
                    $value->sort = 1;
                }
            }
        }

        return response()->json(['message' => '操作成功', 'list' => $list]);
    }

    /**
     * 添加页面管理顶级菜单
     * @param Request $request
     * @param $siteId
     * @return JsonResponse
     */
    public function addParentMenu(Request $request, $siteId)
    {
        $result = $request->all();
        $connection = DB::connection($this->templateLibraryApiService->connection($siteId));
        $list = $this->templateLibraryApiService->getIndexFieldList(0, $result['name'] ?? '');

        $connection->table('content')->insert($list);
        return response()->json(['message' => '操作成功']);
    }

    /**
     * 复制模版库列表节点
     * @param Request $request
     * @param $siteId
     * @return JsonResponse
     */
    public function indexCopyNode(Request $request, $siteId)
    {
        $result = $request->all();
        $connection = DB::connection($this->templateLibraryApiService->connection($siteId));

        $array = \GuzzleHttp\json_decode($connection->table('content')->get()->toJson(), true) ?? [];
        $parentList = get_object_vars($connection->table('content')->where('id', $result['id'])->first()) ?? [];

        $childList = $this->getIndexList($array, $result['id']);
        $childList[] = $parentList;

        $list = $this->arraySort($childList, 'id');
        $list = array_merge($list);

        $ids = [];
        foreach ($list as $key => $item) {
            if ($item['parent_id'] == 0 && $key == 0) {
                $update = $this->templateLibraryApiService->getFieldList2($item, $ids);

            } elseif ($item['parent_id'] != 0 && $key == 0) {

                $ids[$item['parent_id']] = $item['parent_id'];
                $update = $this->templateLibraryApiService->getFieldList2($item, $ids);
            } else {
                $update = $this->templateLibraryApiService->getFieldList2($item, $ids);
            }
            $id = $connection->table('content')->insertGetId($update);
            $ids[$item['id']] = $id;
        }
        return response()->json(['message' => '添加成功']);
    }

    /**
     * 递归父级目录
     * @param $array
     * @param int $pid
     * @return array
     */
    public function getIndexList($array, $pid = 0)
    {
        static $data = [];
        foreach ($array as $key => $item) {
            if ($item['parent_id'] == $pid) {
                $data[] = $this->templateLibraryApiService->getFieldList($item);
                unset($array[$key]);
                $this->getIndexList($array, $item['id']);
            }
        }
        return $data;
    }

    /**
     * 添加页面管理子菜单
     * @param Request $request
     * @param $siteId
     * @return JsonResponse
     */
    public function indexAddNode(Request $request, $siteId)
    {
        $result = $request->all();
        $connection = DB::connection($this->templateLibraryApiService->connection($siteId));

        $filed = $this->templateLibraryApiService->getIndexFieldList($result['pid'], $result['node']);
        $connection->table('content')->insert($filed);
        return response()->json(['message' => '操作成功']);
    }

    /**
     * 拖动子节点
     * @param Request $request
     * @param $siteId
     * @return JsonResponse
     */
    public function indexMoveNode(Request $request, $siteId)
    {
        $result = $request->all();
        $connection = DB::connection($this->templateLibraryApiService->connection($siteId));

        $parent = $connection->table('content')->where('id', $result['pid'])->first();
        $child = $connection->table('content')
            ->select('id', 'title', 'rank')
            ->where('id', '=', $result['id'])
            ->first();

        if ($result['type'] == 'next') {
            $contentList = $connection->table('content')
                ->select('id', 'title', 'rank')
                ->where('id', '!=', $result['id'])
                ->where('parent_id', $parent->parent_id)
                ->orderBy('rank', 'asc')
                ->get()->toArray();

            $list = [];
            foreach ($contentList as $value) {
                if ($value->id == $result['pid']) {
                    $list[] = $value;
                    $list[] = $child;
                } else {
                    $list[] = $value;
                }
            }

            $num = 0;
            foreach ($list as $item) {
                $connection->table('content')
                    ->where('id', $item->id)
                    ->update(['parent_id' => $parent->parent_id ?? 0, 'rank' => ++$num]);
            }
        }

        if ($result['type'] == 'prev') {
            $connection->table('content')
                ->where('id', $result['id'])
                ->update(['parent_id' => $parent->id ?? 0, 'rank' => 1]);
        }
        if ($result['type'] == 'inner') {
            $contentList = $connection->table('content')
                ->select('id', 'title', 'rank')
                ->where('id', '!=', $result['id'])
                ->where('parent_id', $parent->id)
                ->orderBy('rank', 'asc')
                ->get()->toArray();

            if (!empty($contentList)) {

                $contentList[] = $child;
                $num = 0;
                foreach ($contentList as $item) {
                    $connection->table('content')
                        ->where('id', $item->id)
                        ->update(['parent_id' => $parent->id ?? 0, 'rank' => ++$num]);
                }
            } else {
                $connection->table('content')
                    ->where('id', $result['id'])
                    ->update(['parent_id' => $parent->id ?? 0, 'rank' => 1]);
            }
        }
        return response()->json(['message' => '操作成功']);
    }


    /**
     * 删除页面管理子菜单
     * @param Request $request
     * @param $siteId
     * @return JsonResponse
     */
    public function indexDelNode(Request $request, $siteId)
    {
        $result = $request->all();
        if (empty($result['id']) || $result['id'] == 1) {
            return response()->json(['message' => '操作失败'], 400);
        }
        $connection = DB::connection($this->templateLibraryApiService->connection($siteId));
        $contentInfo = $connection->table('content')->where('id', $result['id'])->first();
        if (!empty($contentInfo)) {
            if ($contentInfo->status == 2 && $result['type'] == 2) {
                $result['type'] = 99;//如果已经被删掉了,再次删除就隐藏
            }
            $array[] = $contentInfo;
            $array = $this->templateLibraryApiService->recursion($array, $siteId);
            $ids = array_column($array, 'id');
            $connection->table('content')
                ->whereIn('id', $ids)
                ->update(['status' => $result['type']]);
        }
        return response()->json(['message' => '操作成功']);
    }

    /**
     * 图片上传页面
     * @param Request $request
     * @param $siteId
     * @param $type
     * @return Factory|JsonResponse|View
     */
    public function images(Request $request, $siteId, $type)
    {
        if (!$request->ajax()) {
            return view('admin.stencil.image', [
                'siteId' => $siteId,
                'type' => $type
            ]);
        }
        $result = $request->all();
        $connection = DB::connection($this->templateLibraryApiService->connection($siteId))->table('image');
        if (!empty($result['title'])) {
            $connection->where('name', 'like', '%' . $result['title'] . '%');
        }
        $items = $connection->orderByDesc('id')->paginate(12);
        return response()->json([
            'rows' => $items->items(),
            'total' => $items->total(),
        ]);
    }

    /**
     * 批量上传图片
     * @param Request $request
     * @param $siteId
     * @return JsonResponse
     */
    public function uploadImages(Request $request, $siteId)
    {
        $images = [];
        if ($request->hasFile('files')) {

            foreach ($request->file('files') as $file) {

                [$name, $alt] = $this->fileRename($file);
                $fileData['file_url'] = $file->storeAs($siteId, $name, 'download');
                $fileData['file_url'] = asset('download/' . $fileData['file_url']);
                $fileData['original_name'] = $name;
                $fileData['time'] = time();
                $images[] = [
                    'ref' =>'',
                    'sign' => md5($fileData['file_url']),
                    'name' => $alt,
                    'src' => $fileData['file_url'],
                    'size' => $file->getSize(),//bytes
                    'format' => '',
                    'site_id' => $siteId,
                    'create_time' => time(),
                ];
            }
        }
        DB::connection($this->templateLibraryApiService->connection($siteId))->table('image')->insert($images);
        return response()->json(['message' => '上传成功', 'data' => $images]);
    }

    /**
     * 保存页面信息
     * @param Request $request
     * @param $siteId
     * @return JsonResponse
     */
    public function indexSave(Request $request, $siteId)
    {
        $request = $request->all();
        $connection = DB::connection($this->templateLibraryApiService->connection($siteId));

        if (empty($request['title'])) {
            return response()->json(['message' => '请填写标题'], 400);
        }
        if (empty($request['tpl_id'])) {
            return response()->json(['message' => '请选择模版'], 400);
        }
        if (!empty($request['new_pid']) && empty($request['index_id'])) {
            $filed = $this->templateLibraryApiService->getIndexFieldList($request['new_pid'], $request['title']);
            $insertGetId = $connection->table('content')->insertGetId($filed);
            $request['index_id'] = $insertGetId;
            $request['parent_id'] = $request['new_pid'];
        }
        if (empty($request['index_id'])) {
            return response()->json(['message' => '请选择页面'], 400);
        }

        $publishTime = time();
        if (!empty($request['publish_time'])) {
            $publishTime = strtotime($request['publish_time']);
        }
        $expiredTime = time();
        if (!empty($request['expired_time'])) {
            $expiredTime = strtotime($request['expired_time']);
        }

        $alias = strtolower(str_replace(' ', '-', $request['title'])) ?? '';

        $template = $connection->table('content_template')
            ->where('id', $request['tpl_id'])
            ->value('name');
        if ($template == 'basic' || $template == 'product_faq') {
            $request['deny_spider'] = 1;
            $request['is_hidemenu'] = 1;
            $request['is_enabled'] = 1;
        }

        //没有绑定绑定uri就自动生成uri
        if (empty($request['is_freeze_url'])) {
            $urlLevel = $connection->table('content_template')
                    ->where('id', $request['tpl_id'])
                    ->value('url_level') ?? 0;
            $parentId = $connection->table('content')
                    ->where('id', $request['index_id'])
                    ->value('parent_id') ?? 0;

            if (empty($urlLevel)) {
                $uri = $alias;
                if ($template == 'basic') {
                    $uri = $request['index_id'] . '-' . $alias;
                }
            } elseif ($parentId == 0) {
                $uri = $alias;
                if ($template == 'basic') {
                    $uri = $request['index_id'] . '-' . $alias;
                }
            } else {
                $uri = $this->getUriLevel($siteId, $parentId);
                $uri = array_reverse($uri);
                $uri = array_splice($uri, 0, $urlLevel - 1);
                if ($template == 'basic') {
                    $uri = implode('/', $uri) . '/' . $request['index_id'] . '-' . $alias;
                } else {
                    $uri = implode('/', $uri) . '/' . $alias;
                }
            }
        } else {
            //绑定的以手写的为主
            $uri = $request['uri'] ?? '';
        }
        //查询生成的uri是否是重复的
        $uriResult = $connection->table('content')
            ->where('status', 1)
            ->where('id', '!=', $request['index_id'])
            ->where('uri', $uri)
            ->first();

        if (!empty($uriResult)) {
            if (!empty($insertGetId)) {
                $connection->table('content')->where('id', $insertGetId)->delete();
            }
            return response()->json(['message' => 'uri重复'], 400);
        }

        $data = [
            'parent_id' => $request['parent_id'] ?? 0,      //父级id
            'tpl_id' => $request['tpl_id'] ?? 0,            //模版id
            'title' => $request['title'] ?? '',             //标题
            'subtitle' => $request['subtitle'] ?? '',       //副标题
            'summary' => $request['summary'] ?? '',         //内容摘要
            'thumb' => $request['thumb'] ?? '',             //缩略图
            'content' => $request['content'] ?? '',         //内容
            'menu_text' => $request['menu_text'] ?? '',     //导航标题
            'alias' => $request['index_id'] . '-' . $alias, //URL别名
            'uri' => $uri,
            'seo_title' => $request['seo_title'] ?? '{$title} - {$setting.sitename}',
            'seo_keywords' => $request['seo_keywords'] ?? '',
            'seo_description' => $request['seo_description'] ?? '{$summary}',
            'path_ids' => $request['path_ids'] ?? '',
            'lang' => $request['lang'] ?? '',
            'rank' => $request['rank'] ?? 0,
            'level' => $request['level'] ?? 0,
            'redirect' => $request['redirect'] ?? '',
            'content_type' => $request['content_type'] ?? 'html',
            'childs_num' => $request['childs_num'] ?? 0,
            'views_num' => $request['views_num'] ?? 0,
            'is_enabled' => $request['is_enabled'] ?? 0,
            'is_hidemenu' => $request['is_hidemenu'] ?? 0,
            'is_translated' => $request['is_translated'] ?? 0,
            'is_freeze_url' => $request['is_freeze_url'] ?? 0,
            'is_301' => $request['is_301'] ?? 0,
            'deny_spider' => $request['deny_spider'] ?? 0,
            'trans_src_id' => $request['trans_src_id'] ?? 0,
            'create_time' => time(),
            'update_time' => time(),
            'publish_time' => $publishTime,
            'expired_time' => $expiredTime,
            'tmp_xcode' => $request['tmp_xcode'] ?? '',
            'css_id' => $request['css_id'] ?? '',
        ];

        $connection->table('content')->where('id', $request['index_id'])->update($data);

        $templateVarList = $connection->table('content_template_var')->get();
        $variable = [];
        foreach ($templateVarList as $item) {
            $variable[] = [
                'type' => $item->input_type,
                'key' => $item->name,
                'value' => $request[$item->name] ?? '',
                'content_id' => $request['index_id'],
                'lang' => 'en',
                'allow_translate' => 0,
            ];
        }

        foreach ($variable as $key => $item) {
            if ($item['type'] == 'resource' || $item['type'] == 'checkbox' || $item['type'] == 'file' || $item['type'] == 'image') {
                $variable[$key]['value'] = serialize($item['value'] ?? '');
            }
        }

        //事务
        DB::transaction(function () use ($connection, $variable, $request) {
            $connection->table('content_var')->where('content_id', $request['index_id'])->delete();
            $connection->table('content_var')->insert($variable);
        });

        return response()->json(['message' => '保存成功']);
    }

    /**
     * 添加内容
     * @param Request $request
     * @param $siteId
     * @param $type
     * @return Factory|JsonResponse|View
     */
    public function resources(Request $request, $siteId, $type)
    {
        $connection = DB::connection($this->templateLibraryApiService->connection($siteId));
        if (!$request->ajax()) {
            $templateList = $connection->table('content_template')
                    ->where('level', 2)
                    ->pluck('name', 'id') ?? [];
            return view('admin.stencil.resources', [
                'templateList' => $templateList,
                'siteId' => $siteId,
                'type' => $type
            ]);
        }
        $resources = $connection->table('content');
        $title = $request->input('title');
        if (!empty($title)) {
            $resources = $resources->where('title', 'like', '%' . $title . '%');
        }
        $ref = $request->input('ref');
        if ($ref == 'now') {
            $resources = $resources->where('tpl_id', 193);
        }
        $tplId = $request->input('tplId');
        if (!empty($tplId)) {
            $resources = $resources->where('tpl_id', $tplId);
        }
        $resources = $resources->whereIn('status', [1, 2])->orderByDesc('id')->paginate(12);

        return response()->json([
            'rows' => $resources->items(),
            'total' => $resources->total(),
        ]);
    }

    /**
     * 批量上传保留上传文件名
     * @param Request $request
     * @return JsonResponse
     */
    public function bulkUpload(Request $request)
    {
        $files = [];
        $siteId = $request->input('siteId') ?? 0;
        if ($request->hasFile('files')) {

            foreach ($request->file('files') as $file) {

                [$name, $alt] = $this->fileRename($file);
                $fileUrl = $file->storeAs($siteId, $name, 'download');

                $fileData['file_url'] = asset('download/' . $fileUrl);
                $fileData['file_size'] = $file->getSize();
                $fileData['original_name'] = $file->getClientOriginalName();
                $fileData['time'] = date('Y-m-d H:i:s');
                $files[] = $fileData;
            }
        }
        return response()->json(['message' => '上传成功', 'data' => $files]);
    }


    /**
     * 文件重命名
     * @param $file object
     * @return array
     */
    protected function fileRename($file)
    {
        $name = strtolower(str_replace(' ', '-', $file->getClientOriginalName()));
        $array = explode('.', $name);
        $alt = str_replace('-', ' ', $array[0] ?? '');
        $rename = $array[0] . '-' . rand(1000000, 9999999) . '.' . $array[1];
        return [$rename, $alt];
    }

    /**
     * 富文本多图上传接口
     * @param Request $request
     * @param $siteId
     * @return JsonResponse
     */
    public function editorUpload(Request $request, $siteId)
    {
        $imageFileList = [];
        $file = $request->file('editorFile');
        if ($file) {
            $imageFileList[] = $file;
        }
        $editorFile1 = $request->file('editorFile1');
        if ($editorFile1) {
            $imageFileList[] = $editorFile1;
        }
        $editorFile2 = $request->file('editorFile2');
        if ($editorFile2) {
            $imageFileList[] = $editorFile2;
        }
        $editorFile3 = $request->file('editorFile3');
        if ($editorFile3) {
            $imageFileList[] = $editorFile3;
        }
        $editorFile4 = $request->file('editorFile4');
        if ($editorFile4) {
            $imageFileList[] = $editorFile4;
        }
        $editorFile5 = $request->file('editorFile5');
        if ($editorFile5) {
            $imageFileList[] = $editorFile5;
        }
        $data = [];
        foreach ($imageFileList as $item) {

            [$name, $alt] = $this->fileRename($item);
            $fileUrl = $item->storeAs($siteId, $name, 'download');

            $data[] = [
                'url' => asset('download/' . $fileUrl),
                'alt' => $alt,
                'href' => asset('download/' . $fileUrl),
            ];
        }
        $result = [
            'errno' => 0,
            'data' => $data
        ];
        return response()->json($result);
    }

    /**
     * 获取模版下面的css列表
     * @param Request $request
     * @return JsonResponse
     */
    public function getCssList(Request $request)
    {
        $request = $request->all();
        $cssList = DB::connection($this->templateLibraryApiService->connection($request['siteId']))
                ->table('content_template')
                ->select('name', 'id')
                ->where('level', 3)//css
                ->where('parent_id', $request['tpl_id'])
                ->get() ?? [];
        return response()->json(['data' => $cssList]);
    }


    /**
     *根据模版ip 获取关联变量列表
     * @param Request $request
     * @return JsonResponse
     */
    public function getTemplateVariableByTplId(Request $request)
    {
        $request = $request->all();
        $connection = DB::connection($this->templateLibraryApiService->connection($request['siteId']));
        $variableIds = $connection
            ->table('content_template_relate')
            ->where('tid', $request['tpl_id'])
            ->pluck('vid');
        $variableList = $connection
                ->table('content_template_var')
                ->whereIn('id', $variableIds)
                ->get() ?? [];
        $variable = [];
        if (!empty($request['content_id'])) {
            $variable = $connection->table('content_var')
                    ->where('content_id', $request['content_id'])
                    ->pluck('value', 'key') ?? [];
        }
        foreach ($variableList as $item) {

            $item->input_opts = explode("\r\n", $item->input_opts) ?? [];
            $item->value = $item->input_value ?? '';
            if ($item->input_type == 'checkbox' || $item->input_type == 'resource' || $item->input_type == 'file' || $item->input_type == 'image') {
                $item->value = [];
            }
            if ($item->input_type == 'date') {
                $item->value = date('Y-m-d');
            }
            if (count($variable) > 0) {
                $item->value = $variable[$item->name] ?? '';
                if ($item->input_type == 'checkbox' || $item->input_type == 'resource' || $item->input_type == 'file' || $item->input_type == 'image') {
                    $item->value = unserialize($item->value) ?? '';
                }
                if ($item->input_type == 'date') {
                    $item->value = date('Y-m-d', strtotime($item->value));
                }
            }
        }
        return response()->json(['data' => $variableList]);
    }

    /**
     * 递归uri层级
     * @param $siteId
     * @param $parentId
     * @return array
     */
    public function getUriLevel($siteId, $parentId)
    {
        static $array = [];
        $connection = DB::connection($this->templateLibraryApiService->connection($siteId));
        $indexInfo = $connection->table('content')->where('id', $parentId)->first();
        if (!empty($indexInfo)) {
            $array[] = strtolower(str_replace(' ', '-', $indexInfo->title)) ?? '';
            $this->getUriLevel($siteId, $indexInfo->parent_id);
        }
        return $array;
    }


    public function ftp()
    {
        try {

            $siteId = 360;
            $connection = DB::connection($this->templateLibraryApiService->connection($siteId));

            //同步所有页面的内容正文富文本图片
            $imagesList = $connection->table('content')->get();
            $images = [];
            foreach ($imagesList as $item) {
                preg_match_all('/<img(.*?)src=\"(.*?)\"(.*?)>/is', $item->content, $matches);//图片的url
                if (!empty($matches[2])) {
                    foreach ($matches[2] as $match) {
                        $images[] = urldecode($match);
                    }
                }
            }

            $imagesPathList = [];
            if (!empty($images)) {
                foreach ($images as $image) {
                    $imagePathArray = explode('storage', $image);
                    if (!empty($imagePathArray[1])) {
                        $imagesPathList[] = $imagePathArray[1];
                    }
                }
                $imagesPathList = array_unique($imagesPathList);
            }

            pre_dump($imagesPathList);

            //同步图片图里面的所有图片
            $images2 = [];
            $imagesList = $connection->table('image')->get();
            foreach ($imagesList as $item) {
                $imagePathArray = explode('storage', $item->src);
                if (!empty($imagePathArray)) {
                    $images2[] = $imagePathArray[1];
                }
            }
            $images2 = array_unique($images2);
            pre_dump($images2);

            //同步所有页面上面的file变量文件
            $file = [];
            $imagesList = $connection->table('content_var')
                ->where('type', 'file')->get();
            foreach ($imagesList as $item) {
                $fileList = unserialize($item->value);
                if (is_array($fileList)) {
                    foreach ($fileList as $value) {
                        $imagePathArray = explode('storage', $value['file']);
                        if (!empty($imagePathArray[1])) {
                            $file[] = $imagePathArray[1];
                        }
                    }
                }
            }
            $file = array_unique($file);
            pre_dump($file);

            //同步所有页面上面的file变量文件
            $richText = [];
            $imagesList = $connection->table('content_var')
                ->where('type', 'richtext')->get();
            foreach ($imagesList as $item) {
                preg_match_all('/<img(.*?)src=\"(.*?)\"(.*?)>/is', $item->value, $matches);//图片的url
                if (!empty($matches[2])) {
                    foreach ($matches[2] as $match) {
                        $richText[] = urldecode($match);
                    }
                }
            }
            $richTextImages = [];
            if (!empty($richText)) {
                foreach ($richText as $image) {
                    $imagePathArray = explode('storage', $image);
                    if (!empty($imagePathArray[1])) {
                        $imagesPathList[] = $imagePathArray[1];
                    }
                }
                $richTextImages = array_unique($imagesPathList);
            }

            pre_dump($richTextImages);

            $result = array_merge($imagesPathList, $images2, $file, $richTextImages);
            $result = array_unique($result);
            pre_dump($result);


            $ssh_host = '121.199.40.85';
            $ssh2 = ssh2_connect($ssh_host, 22);
            $user = 'root';
            $password = 'JGJHD84@8&a';
            ssh2_auth_password($ssh2, $user, $password);

            $domain = Site::query()
                ->where('id', $siteId)
                ->value('domain');
            //远程目录
            $targetDirectory = '/www/wwwroot/' . $domain . '/sepSsr/uploads';

            //递归创建目录
            $sftp = ssh2_sftp($ssh2);
            ssh2_sftp_mkdir($sftp, $targetDirectory, 0755, true);

            foreach ($result as $item) {

                $fileName = explode('/', $item);
                $file = array_pop($fileName);

                //本地目录
                $sourceDirectory = base_path() . '/storage/app/public' . $item;

                $stream = ssh2_scp_send($ssh2, $sourceDirectory, $targetDirectory . '/' . $file, 0644);
                pre_dump($stream);
            }

        } catch (\Exception $exception) {
            echo $exception->getMessage();
        }
    }


    /*public function automatedDeployment()
    {
        $db_config = [
            'connection_name' => 'new_db',
            'host' => $site->server->server_ip,
            'port' => '3306',
            'database' => 'sdb_sucocms',
            'username' => $site->server->mysql_user_name,
            'password' => $site->server->mysql_passwd
        ];
        $new_db = config_connection($db_config);
        DB::connection($new_db)->statement('create database ' . $dbName);
        Ssh::exec("mysqldump sdb_sucocms -u root -p" . $site->server->mysql_passwd . " --add-drop-table | mysql " . $dbName . " -u root -p" . $site->server->mysql_passwd);

    }*/

}