CustomModuleLogic.php 5.8 KB
<?php
/**
 * @remark :
 * @name   :CustomModuleLogic.php
 * @author :lyh
 * @method :post
 * @time   :2023/12/4 15:46
 */

namespace App\Http\Logic\Aside\CustomModule;

use App\Http\Logic\Aside\BaseLogic;
use App\Models\CustomModule\CustomModule;
use App\Models\CustomModule\CustomModuleCategory;
use App\Models\CustomModule\CustomModuleContent;
use App\Models\IsCom\ProjectComConfig;
use App\Models\RouteMap\RouteMap;
use App\Services\ProjectServer;
use Illuminate\Support\Facades\DB;

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

    /**
     * @remark :获取当前数据详情
     * @name   :getCustomModuleInfo
     * @author :lyh
     * @method :post
     * @time   :2023/12/4 16:10
     */
    public function getCustomModuleInfo(){
        ProjectServer::useProject($this->param['project_id']);
        $info = (new CustomModule())->read($this->param);
        if($info === false){
            $this->fail('当前数据不存在或已被删除');
        }
        DB::disconnect('custom_mysql');
        return $this->success($info);
    }

    /**
     * @remark :保存数据
     * @name   :ModuleSave
     * @author :lyh
     * @method :post
     * @time   :2023/12/4 15:47
     */
    public function customModuleSave(){
        ProjectServer::useProject($this->param['project_id']);
        $this->param = $this->handleParam($this->param);
        $this->checkIsName($this->param['name'],$this->param['id'] ?? 0);
        if(isset($this->param['id']) && !empty($this->param['id'])){
            $this->moduleEdit();
        }else{
            $this->moduleAdd();
        }
        DB::disconnect('custom_mysql');
        return $this->success();
    }

    /**
     * @name   :(参数处理)paramProcessing
     * @author :lyh
     * @method :post
     * @time   :2023/6/13 11:30
     */
    public function handleParam($param)
    {
        $param['operator_id'] = $this->manager['id'];
        if(!isset($param['id']) || empty($param['id'])){
            $param['project_id'] = $this->param['project_id'];
        }
        if(in_array($param['route'],['blogs','news','top_blog','blog','product','products'])){
            $this->fail('不允许使用项目默认模块路由');
        }
        return $this->success($param);
    }

    /**
     * @remark :新增
     * @name   :moduleAdd
     * @author :lyh
     * @method :post
     * @time   :2023/12/5 9:39
     */
    public function moduleAdd(){
        $id = (new CustomModule())->addReturnId($this->param);
        if($id){
            //同时创建对应route的分类
            $customModuleCateModel = new CustomModuleCategory();
            $data = [
                'name'=>$this->param['route'],
                'module_id'=>$id,
                'project_id'=>$this->param['project_id'],
                'route'=>$this->param['route']
            ];
            $cateId = $customModuleCateModel->addReturnId($data);
            $route = RouteMap::setRoute($this->param['route'],RouteMap::SOURCE_MODULE_CATE,$cateId,$this->param['project_id']);
            $customModuleCateModel->edit(['route'=>$route],['id'=>$cateId]);
        }
        return $this->success();
    }

    /**
     * @remark :编辑
     * @name   :moduleEdit
     * @author :lyh
     * @method :post
     * @time   :2023/12/5 9:39
     */
    public function moduleEdit(){
        $rs = (new CustomModule())->edit($this->param,['id'=>$this->param['id']]);
        if($rs === false){
            $this->fail('系统错误,请联系管理员');
        }
        return $this->success();
    }

    /**
     * @remark :验证名称是否存在
     * @name   :checkIsName
     * @author :lyh
     * @method :post
     * @time   :2024/1/6 14:06
     */
    public function checkIsName($name,$id = 0){
        $param['name'] = $name;
        if(!empty($id)){
            $param['id'] = ['!=',$id];
        }
        $info = (new CustomModule())->read($param);
        if($info !== false){
            $this->fail('当前名称已存在');
        }
        return $this->success();
    }
    /**
     * @remark :删除数据
     * @name   :ModuleDel
     * @author :lyh
     * @method :post
     * @time   :2023/12/4 15:47
     */
    public function customModuleDel(){
        ProjectServer::useProject($this->param['project_id']);
        //查看当前模块是否拥有数据
        $contentModel = new CustomModuleContent();
        $contentInfo = $contentModel->read(['module_id'=>$this->param['id']],['id']);
        if($contentInfo !== false){
            $this->fail('当前模块拥有内容不允许删除');
        }
        $categoryModel = new CustomModuleCategory();
        $categoryInfo = $categoryModel->read(['module_id'=>$this->param['id']],['id']);
        if($categoryInfo !== false){
            $this->fail('当前模块拥有分类不允许删除');
        }
        $rs = (new CustomModule())->del($this->param);
        //对应删除项目头部底部配置
        $projectComConfigModel = new ProjectComConfig();
        $projectComConfigModel->del(['source'=>$this->param['id'],'is_custom'=>1]);
        if($rs === false){
            $this->fail('系统错误,请联系管理员');
        }
        DB::disconnect('custom_mysql');
        return $this->success();
    }

    /**
     * @remark :设置排序
     * @name   :setTopping
     * @author :lyh
     * @method :post
     * @time   :2023/12/21 11:03
     */
    public function setTopping(){
        ProjectServer::useProject($this->param['project_id']);
        $moduleModel = new CustomModule();
        $rs = $moduleModel->edit(['topping_time'=>date('Y-m-d H:i:s')],['id'=>$this->param['id']]);
        if($rs === false){
            $this->fail('置顶失败,请联系管理员');
        }
        DB::disconnect('custom_mysql');
    }
}