CustomModuleContent.php 5.1 KB
<?php
/**
 * @remark :
 * @name   :CustomModuleContent.php
 * @author :lyh
 * @method :post
 * @time   :2023/11/6 10:04
 */

namespace App\Models\CustomModule;

use App\Helper\Arr;
use App\Models\Base;
use App\Models\Module\CustomModule;
use App\Models\Module\ModuleCategory;
use App\Services\Html\PageService;

class CustomModuleContent extends Base
{
    protected $table = 'gl_custom_module_content';
    //连接数据库
    protected $connection = 'custom_mysql';

    public function getCategoryIdAttribute($value)
    {
        return explode(',', trim($value, ','));
    }

    /**
     * @remark :视频
     * @name   :getVideoAttribute
     * @author :lyh
     * @method :post
     * @time   :2024/1/23 14:31
     */
    public function getVideoAttribute($value)
    {
        if (!empty($value)) {
            $value = Arr::s2a($value);
        }
        return $value;
    }

    /**
     * 根据路由获取模块信息
     */
    public static function getModuleAndExtendById($projectId, $id)
    {
        return self::with("getExtend")->where("project_id", $projectId)->where("id", $id)->where("status", 0)->first();
    }

    /**
     * 关联模块信息
     */
    public function getExtend(): \Illuminate\Database\Eloquent\Relations\HasOne
    {
        return $this->hasOne(CustomModule::class, 'id', 'module_id');
    }

    /**
     * module数据处理
     */
    public static function modulesListDataHandle($moduleCategoryInfo, $modules): array
    {
        $newT = [];
        $pageService = new PageService();
        if (!empty($modules)) {
            foreach ($modules as $key => $item) {
                if (!empty($item->remark)) {
                    $remark = $item->remark;
                } else {
                    $text = strip_tags($item->content);
                    $remark = strlen($text) > 260 ? substr($text, 0, 260) . '...' : $text;
                }
                $newT[$key]["id"] = $item->id;
                if (!empty($item->category_id)) {
                    $categoryIdArr = explode(",", $item->category_id);
                    if (!empty($categoryIdArr)) {
                        $categoryIdArr = array_filter($categoryIdArr);
                        $categoryId = (int)array_shift($categoryIdArr);
                        $newT[$key]["category_id"] = $categoryId;
                    }
                }
                //视频
                $newT[$key]["video"] = !empty($item->video) ? json_decode($item->video) : null;
                $newT[$key]["image"] = !empty($item->image) ? $pageService->getImageUrl($item->image) : "";
                $newT[$key]["content"] = !empty($item->content) ? $item->content : "";
                $newT[$key]["name"] = !empty($item->name) ? $item->name : "";
                $newT[$key]["remark"] = $remark;
                if (isset($item->release_at) && !empty(isset($item->release_at))) {
                    $newT[$key]["created_at"] = $item->release_at;
                } else {
                    $time = !empty($item->created_at) ? $item->created_at->toArray()['formatted'] : "";
                    $newT[$key]["created_at"] = $time;
                }
                $newT[$key]["created_at"] = strtotime($newT[$key]["created_at"]);
                $newT[$key]["created_at"] = date("Y-m-d", $newT[$key]["created_at"]);

                if (isset($newT[$key]["category_id"]) && !empty($newT[$key]["category_id"])) {
                    $categoryInfo = CustomModuleCategory::getModuleCategoryAndExtendById($item->project_id, $newT[$key]["category_id"]);
                    $newT[$key]["aUrl"] = !empty($categoryInfo) ? $categoryInfo->route . "/" . $item->route : "";
                } else {
                    $newT[$key]["aUrl"] = !empty($item->route) ? $moduleCategoryInfo->route . "/" . $item->route : "";
                }
            }
        }
        return $newT;
    }

    /**
     * 根据模块查找自定义模块分类数据
     */
    public static function getModuleCategory($projectId, $modules)
    {
        $moduleCategoryInfo = null;
        if (isset($modules->category_id) && !empty($modules->category_id) && $modules->category_id != ",,") {
            $cateArr = explode(",", $modules->category_id);
            $cateArr = array_filter($cateArr);
            if (!empty($cateArr)) {
                $cateId = (int)array_shift($cateArr);
                $moduleCategoryInfo = CustomModuleCategory::getModuleCategoryAndExtendById($projectId, $cateId);
            }
        }
        return $moduleCategoryInfo;
    }

    /**
     * 是否是自定义扩展模块
     */
    public static function isModule($moduleDataModule)
    {
        $moduleDataModuleArr = explode("-", $moduleDataModule);
        if (count($moduleDataModuleArr) == 2) {
            $moduleArr = $moduleDataModuleArr;
            if (!empty($moduleArr)) {
                $moduleArr[0] = isset($moduleArr[0]) && !empty($moduleArr[0]) ? $moduleArr[0] : null;
                $moduleArr[1] = isset($moduleArr[1]) && !empty($moduleArr[1]) ? (int)$moduleArr[1] : null;
            }
            return $moduleArr;
        } else {
//            return $moduleDataModule;
            return null;
        }

    }
}