where('is_dev', 0); //开发者模式 return parent::parentLists($_op, 0); } /** * 新增或修改前 * @param Model $model * @return mixed|void */ public static function onBeforeWrite(Model $model) { //设定child_list if (empty($model->getAttr('parent_id'))) { //parent_id = 0 一级栏目填充 $child_list = self::where('parent_id', 0)->max('child_list'); $child_list = !empty($child_list) ? (int)$child_list + 1 : 100; //如果不存在设置默认值 100起始 $model->setAttr('child_list', $child_list); } else { //子栏目填充 $child_list = self::where('parent_id', $model->getAttr('parent_id'))->max('child_list'); //同级最大 $parent_child_list = self::where('id', $model->getAttr('parent_id'))->value('child_list'); //父级初始 $child_list = !empty($child_list) ? (int)$child_list + 1 : $parent_child_list . '100'; $model->setAttr('child_list', $child_list); } parent::onBeforeWrite($model); } public static function onAfterDelete(Model $model) { //删除父级栏目下所有子栏目 if ($model->getAttr('child_list')) { self::where('child_list', 'like', $model->getAttr('child_list') . '%')->useSoftDelete('delete_time', time())->delete(); } parent::onAfterDelete($model); } /** * swagger response返回数据引用 * @OA\Schema( * schema="MenuMsgExport", * required={"code","msg","count","data"}, * @OA\Property( * property="code", * type="integer", * format="int32", * description="状态码" * ), * @OA\Property( * property="msg", * type="string", * description="提示消息" * ), * @OA\Property( * property="count", * type="integer", * format="int32", * description="记录总数", * ), * @OA\Property( * property="data", * type="array", * description="请求结果", * @OA\Items( * @OA\Property( * property="id", * type="integer", * description="菜单ID" * ), * @OA\Property( * property="site_id", * type="integer", * description="站点ID" * ), * @OA\Property( * property="name", * type="string", * description="菜单名称", * ), * @OA\Property( * property="parent_id", * type="integer", * description="父级ID", * ), * @OA\Property( * property="model_name", * type="string", * description="模块名/控制器/方法" * ), * @OA\Property( * property="path", * type="string", * description="对应前台的模板的路由地址" * ), * @OA\Property( * property="component", * type="string", * description="前台对应的组件路径", * ), * @OA\Property( * property="authority", * type="string", * description="按钮权限标识", * ), * @OA\Property( * property="icon", * type="string", * description="菜单图标", * ), * @OA\Property( * property="color", * type="string", * description="icon颜色", * ), * @OA\Property( * property="target", * type="string", * description="是否新窗口 _target/_self", * ), * @OA\Property( * property="iframe", * type="integer", * description="是否为 iframe模式 0:不是 1:是", * ), * @OA\Property( * property="hide", * type="integer", * description="是否显示 0:显示 1:隐藏", * ), * @OA\Property( * property="type", * type="integer", * description="在think_auth_rule 表中定义一条规则时,如果type为1, condition字段就可以定义规则表达式。 如定义{score}>5 and {score}<100 表示用户的分数在5-100之间时这条规则才会通过。", * ), * @OA\Property( * property="sort", * type="integer", * description="排序", * ), * @OA\Property( * property="menu_type", * type="integer", * description="菜单类型 0:菜单 1:按钮", * ), * @OA\Property( * property="open_type", * type="integer", * description="打开方式 0:组件 1:内链 2:外链", * ), * @OA\Property( * property="is_dev", * type="integer", * description="1:开发者模式(即tp调试模式开启)", * ), * @OA\Property( * property="status", * type="integer", * description="状态:为1正常,为0禁用", * ), * @OA\Property( * property="condition", * type="string", * description="规则表达式,为空表示存在就验证,不为空表示按照条件验证", * ), * @OA\Property( * property="remarks", * type="string", * description="备注", * ), * @OA\Property( * property="child_list", * type="string", * description="100100 子集菜单集合", * ), * @OA\Property( * property="children", * type="object", * description="子集菜单对象", * ), * @OA\Property( * property="delete_time", * type="integer", * description="是否删除 null:未删除" * ), * @OA\Property( * property="update_time", * type="integer", * description="更新时间" * ), * @OA\Property( * property="create_time", * type="integer", * description="创建时间" * ), * ) * ), * * ), */ }