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);
 | |
|     }
 | |
| }
 |