243 lines
		
	
	
		
			5.3 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
		
		
			
		
	
	
			243 lines
		
	
	
		
			5.3 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| 
								 | 
							
								<?php
							 | 
						|||
| 
								 | 
							
								// +----------------------------------------------------------------------
							 | 
						|||
| 
								 | 
							
								// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
							 | 
						|||
| 
								 | 
							
								// +----------------------------------------------------------------------
							 | 
						|||
| 
								 | 
							
								// | Copyright (c) 2016~2023 https://www.crmeb.com All rights reserved.
							 | 
						|||
| 
								 | 
							
								// +----------------------------------------------------------------------
							 | 
						|||
| 
								 | 
							
								// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
							 | 
						|||
| 
								 | 
							
								// +----------------------------------------------------------------------
							 | 
						|||
| 
								 | 
							
								// | Author: CRMEB Team <admin@crmeb.com>
							 | 
						|||
| 
								 | 
							
								// +----------------------------------------------------------------------
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								namespace app\model\system;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								use crmeb\basic\BaseModel;
							 | 
						|||
| 
								 | 
							
								use crmeb\traits\ModelTrait;
							 | 
						|||
| 
								 | 
							
								use think\Model;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								/**
							 | 
						|||
| 
								 | 
							
								 * 菜单规则模型
							 | 
						|||
| 
								 | 
							
								 * Class SystemMenus
							 | 
						|||
| 
								 | 
							
								 * @package app\model\system
							 | 
						|||
| 
								 | 
							
								 */
							 | 
						|||
| 
								 | 
							
								class SystemMenus extends BaseModel
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
								    use ModelTrait;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								    /**
							 | 
						|||
| 
								 | 
							
								     * 数据表主键
							 | 
						|||
| 
								 | 
							
								     * @var string
							 | 
						|||
| 
								 | 
							
								     */
							 | 
						|||
| 
								 | 
							
								    protected $pk = 'id';
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								    /**
							 | 
						|||
| 
								 | 
							
								     * 模型名称
							 | 
						|||
| 
								 | 
							
								     * @var string
							 | 
						|||
| 
								 | 
							
								     */
							 | 
						|||
| 
								 | 
							
								    protected $name = 'system_menus';
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								    /**
							 | 
						|||
| 
								 | 
							
								     * 参数修改器
							 | 
						|||
| 
								 | 
							
								     * @param $value
							 | 
						|||
| 
								 | 
							
								     * @return false|string
							 | 
						|||
| 
								 | 
							
								     */
							 | 
						|||
| 
								 | 
							
								    public function setParamsAttr($value)
							 | 
						|||
| 
								 | 
							
								    {
							 | 
						|||
| 
								 | 
							
								        $value = $value ? explode('/', $value) : [];
							 | 
						|||
| 
								 | 
							
								        $params = array_chunk($value, 2);
							 | 
						|||
| 
								 | 
							
								        $data = [];
							 | 
						|||
| 
								 | 
							
								        foreach ($params as $param) {
							 | 
						|||
| 
								 | 
							
								            if (isset($param[0]) && isset($param[1])) $data[$param[0]] = $param[1];
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								        return json_encode($data);
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								    /**
							 | 
						|||
| 
								 | 
							
								     * 参数获取器
							 | 
						|||
| 
								 | 
							
								     * @param $_value
							 | 
						|||
| 
								 | 
							
								     * @return mixed
							 | 
						|||
| 
								 | 
							
								     */
							 | 
						|||
| 
								 | 
							
								    public function getParamsAttr($_value)
							 | 
						|||
| 
								 | 
							
								    {
							 | 
						|||
| 
								 | 
							
								        return json_decode($_value, true);
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								    /**
							 | 
						|||
| 
								 | 
							
								     * pid获取器
							 | 
						|||
| 
								 | 
							
								     * @param $value
							 | 
						|||
| 
								 | 
							
								     * @return mixed|string
							 | 
						|||
| 
								 | 
							
								     */
							 | 
						|||
| 
								 | 
							
								    public function getPidStrAttr($value)
							 | 
						|||
| 
								 | 
							
								    {
							 | 
						|||
| 
								 | 
							
								        return !$value ? '顶级' : $this->where('pid', $value)->value('menu_name');
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								    /**
							 | 
						|||
| 
								 | 
							
								     * 默认条件查询器
							 | 
						|||
| 
								 | 
							
								     * @param Model $query
							 | 
						|||
| 
								 | 
							
								     * @param $value
							 | 
						|||
| 
								 | 
							
								     */
							 | 
						|||
| 
								 | 
							
								    public function searchDefaultAttr($query)
							 | 
						|||
| 
								 | 
							
								    {
							 | 
						|||
| 
								 | 
							
								        $query->where(['is_show' => 1, 'access' => 1]);
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								    /**
							 | 
						|||
| 
								 | 
							
								     * 是否显示搜索器
							 | 
						|||
| 
								 | 
							
								     * @param Model $query
							 | 
						|||
| 
								 | 
							
								     * @param $value
							 | 
						|||
| 
								 | 
							
								     */
							 | 
						|||
| 
								 | 
							
								    public function searchIsShowAttr($query, $value)
							 | 
						|||
| 
								 | 
							
								    {
							 | 
						|||
| 
								 | 
							
								        if ($value != '') {
							 | 
						|||
| 
								 | 
							
								            $query->where('is_show', $value);
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								    /**
							 | 
						|||
| 
								 | 
							
								     * 是否删除搜索器
							 | 
						|||
| 
								 | 
							
								     * @param Model $query
							 | 
						|||
| 
								 | 
							
								     * @param $value
							 | 
						|||
| 
								 | 
							
								     */
							 | 
						|||
| 
								 | 
							
								    public function searchIsDelAttr($query, $value)
							 | 
						|||
| 
								 | 
							
								    {
							 | 
						|||
| 
								 | 
							
								        $query->where('is_del', $value);
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								    /**
							 | 
						|||
| 
								 | 
							
								     * Pid搜索器
							 | 
						|||
| 
								 | 
							
								     * @param Model $query
							 | 
						|||
| 
								 | 
							
								     * @param $value
							 | 
						|||
| 
								 | 
							
								     */
							 | 
						|||
| 
								 | 
							
								    public function searchPidAttr($query, $value)
							 | 
						|||
| 
								 | 
							
								    {
							 | 
						|||
| 
								 | 
							
								        $query->where('pid', $value ?? 0);
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								    /**
							 | 
						|||
| 
								 | 
							
								     * 规格搜索器
							 | 
						|||
| 
								 | 
							
								     * @param Model $query
							 | 
						|||
| 
								 | 
							
								     * @param $value
							 | 
						|||
| 
								 | 
							
								     */
							 | 
						|||
| 
								 | 
							
								    public function searchRuleAttr($query, $value)
							 | 
						|||
| 
								 | 
							
								    {
							 | 
						|||
| 
								 | 
							
								        $query->whereIn('id', $value)->where('is_del', 0)->whereOr('pid', 0);
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								    /**
							 | 
						|||
| 
								 | 
							
								     * 搜索菜单
							 | 
						|||
| 
								 | 
							
								     * @param Model $query
							 | 
						|||
| 
								 | 
							
								     * @param $value
							 | 
						|||
| 
								 | 
							
								     */
							 | 
						|||
| 
								 | 
							
								    public function searchKeywordAttr($query, $value)
							 | 
						|||
| 
								 | 
							
								    {
							 | 
						|||
| 
								 | 
							
								        if ($value != '') {
							 | 
						|||
| 
								 | 
							
								            $query->whereLike('menu_name|id|pid', "%$value%");
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								    /**
							 | 
						|||
| 
								 | 
							
								     * 方法搜索器
							 | 
						|||
| 
								 | 
							
								     * @param Model $query
							 | 
						|||
| 
								 | 
							
								     * @param $value
							 | 
						|||
| 
								 | 
							
								     */
							 | 
						|||
| 
								 | 
							
								    public function searchActionAttr($query, $value)
							 | 
						|||
| 
								 | 
							
								    {
							 | 
						|||
| 
								 | 
							
								        $query->where('action', $value);
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								    /**
							 | 
						|||
| 
								 | 
							
								     * 控制器搜索器
							 | 
						|||
| 
								 | 
							
								     * @param Model $query
							 | 
						|||
| 
								 | 
							
								     * @param $value
							 | 
						|||
| 
								 | 
							
								     */
							 | 
						|||
| 
								 | 
							
								    public function searchControllerAttr($query, $value)
							 | 
						|||
| 
								 | 
							
								    {
							 | 
						|||
| 
								 | 
							
								        $query->where('controller', lcfirst($value));
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								    /**
							 | 
						|||
| 
								 | 
							
								     * 访问地址搜索器
							 | 
						|||
| 
								 | 
							
								     * @param Model $query
							 | 
						|||
| 
								 | 
							
								     * @param $value
							 | 
						|||
| 
								 | 
							
								     */
							 | 
						|||
| 
								 | 
							
								    public function searchUrlAttr($query, $value)
							 | 
						|||
| 
								 | 
							
								    {
							 | 
						|||
| 
								 | 
							
								        $query->where('api_url', $value);
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								    /**
							 | 
						|||
| 
								 | 
							
								     * 参数搜索器
							 | 
						|||
| 
								 | 
							
								     * @param Model $query
							 | 
						|||
| 
								 | 
							
								     * @param $value
							 | 
						|||
| 
								 | 
							
								     */
							 | 
						|||
| 
								 | 
							
								    public function searchParamsAttr($query, $value)
							 | 
						|||
| 
								 | 
							
								    {
							 | 
						|||
| 
								 | 
							
								        $query->where(function ($query) use ($value) {
							 | 
						|||
| 
								 | 
							
								            $query->where('params', $value)->whereOr('params', "'[]'");
							 | 
						|||
| 
								 | 
							
								        });
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								    /**
							 | 
						|||
| 
								 | 
							
								     * 权限标识搜索器
							 | 
						|||
| 
								 | 
							
								     * @param Model $query
							 | 
						|||
| 
								 | 
							
								     * @param $value
							 | 
						|||
| 
								 | 
							
								     */
							 | 
						|||
| 
								 | 
							
								    public function searchUniqueAttr($query, $value)
							 | 
						|||
| 
								 | 
							
								    {
							 | 
						|||
| 
								 | 
							
								        $query->where('is_del', 0);
							 | 
						|||
| 
								 | 
							
								        if ($value) {
							 | 
						|||
| 
								 | 
							
								            $query->whereIn('id', $value);
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								    /**
							 | 
						|||
| 
								 | 
							
								     * 菜单规格搜索
							 | 
						|||
| 
								 | 
							
								     * @param Model $query
							 | 
						|||
| 
								 | 
							
								     * @param $value
							 | 
						|||
| 
								 | 
							
								     */
							 | 
						|||
| 
								 | 
							
								    public function searchRouteAttr($query, $value)
							 | 
						|||
| 
								 | 
							
								    {
							 | 
						|||
| 
								 | 
							
								        $query->where('auth_type', 1)->where('is_del', 0);
							 | 
						|||
| 
								 | 
							
								        if ($value) {
							 | 
						|||
| 
								 | 
							
								            $query->whereIn('id', $value);
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								    /**
							 | 
						|||
| 
								 | 
							
								     * Id搜索器
							 | 
						|||
| 
								 | 
							
								     * @param Model $query
							 | 
						|||
| 
								 | 
							
								     * @param $value
							 | 
						|||
| 
								 | 
							
								     */
							 | 
						|||
| 
								 | 
							
								    public function searchIdAttr($query, $value)
							 | 
						|||
| 
								 | 
							
								    {
							 | 
						|||
| 
								 | 
							
								        $query->whereIn('id', $value);
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								    /**
							 | 
						|||
| 
								 | 
							
								     * is_show_path
							 | 
						|||
| 
								 | 
							
								     * @param Model $query
							 | 
						|||
| 
								 | 
							
								     * @param $value
							 | 
						|||
| 
								 | 
							
								     */
							 | 
						|||
| 
								 | 
							
								    public function searchIsShowPathAttr($query, $value)
							 | 
						|||
| 
								 | 
							
								    {
							 | 
						|||
| 
								 | 
							
								        $query->where('is_show_path', $value);
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								    /**
							 | 
						|||
| 
								 | 
							
								     * auth_type
							 | 
						|||
| 
								 | 
							
								     * @param Model $query
							 | 
						|||
| 
								 | 
							
								     * @param $value
							 | 
						|||
| 
								 | 
							
								     */
							 | 
						|||
| 
								 | 
							
								    public function searchAuthTypeAttr($query, $value)
							 | 
						|||
| 
								 | 
							
								    {
							 | 
						|||
| 
								 | 
							
								        if ($value !== '') {
							 | 
						|||
| 
								 | 
							
								            if ($value == 3) {
							 | 
						|||
| 
								 | 
							
								                $query->whereIn('auth_type', [1, 3]);
							 | 
						|||
| 
								 | 
							
								            } else {
							 | 
						|||
| 
								 | 
							
								                $query->where('auth_type', $value);
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								}
							 |