72 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			PHP
		
	
	
			
		
		
	
	
			72 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			PHP
		
	
	
<?php
 | 
						|
 | 
						|
namespace app\model;
 | 
						|
 | 
						|
use Exception;
 | 
						|
 | 
						|
class Menu extends Base
 | 
						|
{
 | 
						|
    public const SHOW_YES = 1;
 | 
						|
    public const SHOW_NO  = 0;
 | 
						|
 | 
						|
    public const STATUS_NORMAL  = 1;
 | 
						|
    public const STATUS_DISABLE = 0;
 | 
						|
 | 
						|
    public const TYPE_MENU   = 'menu';
 | 
						|
    public const TYPE_ACTION = 'action';
 | 
						|
 | 
						|
    /**
 | 
						|
     * 默认操作
 | 
						|
     *
 | 
						|
     * @return string[]
 | 
						|
     */
 | 
						|
    public static function defaultAction(): array
 | 
						|
    {
 | 
						|
        return [
 | 
						|
            'index'  => '查看',
 | 
						|
            'add'    => '添加',
 | 
						|
            'edit'   => '编辑',
 | 
						|
            'del'    => '删除',
 | 
						|
            'sort'   => '排序',
 | 
						|
            'modify' => '属性设置',
 | 
						|
        ];
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * 自从生成常规操作权限
 | 
						|
     *
 | 
						|
     * @param  int  $id
 | 
						|
     * @param  string  $name
 | 
						|
     * @param  string  $path
 | 
						|
     * @throws Exception
 | 
						|
     */
 | 
						|
    public static function generate(int $id, string $name, string $path)
 | 
						|
    {
 | 
						|
        $actions = self::defaultAction();
 | 
						|
        $delete  = [];
 | 
						|
        $insert  = [];
 | 
						|
        $created = date('Y-m-d H:i:s');
 | 
						|
        foreach ($actions as $key => $action) {
 | 
						|
            $name     = explode(':', $name)[0];
 | 
						|
            $delete[] = $name.':'.$key;
 | 
						|
 | 
						|
            $arr               = [];
 | 
						|
            $arr['title']      = $action;
 | 
						|
            $arr['pid']        = $id;
 | 
						|
            $arr['name']       = $name.':'.$key;
 | 
						|
            $arr['type']       = self::TYPE_ACTION;
 | 
						|
            $arr['path']       = $path.$id.',';
 | 
						|
            $arr['remark']     = sprintf("自动生成[%s][%s]操作", $name, $action);
 | 
						|
            $arr['created_at'] = $created;
 | 
						|
 | 
						|
            $insert[] = $arr;
 | 
						|
        }
 | 
						|
 | 
						|
        //删除已有常规操作
 | 
						|
        self::where('pid', $id)->whereIn('name', $delete)->delete();
 | 
						|
 | 
						|
        //新增常规操作
 | 
						|
        (new self())->saveAll($insert);
 | 
						|
    }
 | 
						|
}
 |