<?php
namespace app\adminVue\controller;

use think\facade\Db;

class V2Menu extends V2Base
{
    public static function navigation($actor=[])
    {
        $items=V2MenuCatalog::merge(Db::name('admin_menus')->select()->toArray());
        if((int)($actor['rightid']??0)<=98)unset($items['system.mobile-menus']);
        if((int)($actor['rightid']??0)<=98)unset($items['logistics.radio-settings']);
        return V2MenuCatalog::tree($items,true);
    }

    public function index()
    {
        $items=V2MenuCatalog::merge(Db::name('admin_menus')->select()->toArray());
        return json(['code'=>0,'msg'=>'','data'=>V2MenuCatalog::tree($items)]);
    }

    public function update()
    {
        $data=$this->request->post();
        try { $row=V2MenuCatalog::validate($data['key'] ?? null,$data); }
        catch (\InvalidArgumentException $error) { $this->fail($error->getMessage()); }
        if(!Db::name('admin_menus')->where('menu_key',$row['menu_key'])->find())$this->fail('菜单记录不存在，请先完成菜单初始化',404);
        if($row['parent_key']!==''&&!Db::name('admin_menus')->where('menu_key',$row['parent_key'])->find())$this->fail('目标分组不存在，请重新选择');
        Db::name('admin_menus')->where('menu_key',$row['menu_key'])->update($row);
        return json(['code'=>0,'msg'=>'菜单已保存','data'=>null]);
    }
}
