基于gin关于多级菜单的处理
多级菜单是很多业务场景需要的。下面是一种处理方式
// 生成树结构
func tree(menus []*video.XkVideoCategory, parentId uint) []*video.XkVideoCategory {//定义子节点目录var nodes []*video.XkVideoCategoryif reflect.ValueOf(menus).IsValid() {//循环所有一级菜单for _, v := range menus {//查询所有该菜单下的所有子菜单if v.ParentId == parentId {//特别注意压入元素不是单个所有加三个 **...** 告诉切片无论多少元素一并压入v.Children = append(v.Children, tree(menus, v.ID)...)nodes = append(nodes, v)}}}return nodes
}
下面是model
type XkVideoCategory struct {ID uint `gorm:"primarykey;comment:主键ID" json:"id" form:"id"`CategoryName string `json:"categoryName" gorm:"not null;default:'';comment:分类名称"`Description string `json:"description" gorm:"not null;default:'';comment:分类描述"`CreateTime time.Time `gorm:"type:datetime(0);comment:创建时间" json:"createTime"`UpdatedTime time.Time `gorm:"type:datetime(0);comment:更新时间" json:"updatedTime"`ParentId uint `json:"parentId" gorm:"not null;default:0;comment:分类的主ID"`Status int8 `json:"status" gorm:"not null;default:1;comment:0 未发布 1 发布"`Sorted int8 `json:"sorted" gorm:"not null;default:1;comment:0 排序"`IsDelete int8 `json:"isDelete" gorm:"not null;default:0;comment:0 未删除 1 删除"`// 忽略该字段,- 表示无读写,-:migration 表示无迁移权限,-:all 表示无读写迁移权限Children []*XkVideoCategory `gorm:"-" json:"children"`
}
相关文章:
基于gin关于多级菜单的处理
多级菜单是很多业务场景需要的。下面是一种处理方式 // 生成树结构 func tree(menus []*video.XkVideoCategory, parentId uint) []*video.XkVideoCategory {//定义子节点目录var nodes []*video.XkVideoCategoryif reflect.ValueOf(menus).IsValid() {//循环所有一级菜单for …...
Oracle/PL/SQL奇技淫巧之Lable标签与循环控制
在一些存储过程场景中,可能存在需要在满足某些条件时跳出循环的场景, 但是在PL/SQL中,不能使用break语句直接跳出循环, 但是可以通过lable标签的方式跳出循环,例: <<outer_loop>> FOR i IN 1..5 LOOPDBMS…...
Docker基础操作
1.安装docker服务,配置镜像加速器 安装docker服务 清理缓存 sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-enginesystemctl enable --now docker 脚…...
AMBA总线协议(8)——AHB(六):分割传输
一、前言 在之前的文章中,我们重点介绍了AHB传输的仲裁,首先介绍了仲裁相关的信号,然后分别介绍了请求总线访问,授权总线访问,猝发提前终止,锁定传输和默认主机总线,在本文中我们将继续介绍AHB的…...
时序分解 | MATLAB实现基于SWD群体分解的信号分解分量可视化
时序分解 | MATLAB实现基于SWD群体分解的信号分解分量可视化 目录 时序分解 | MATLAB实现基于SWD群体分解的信号分解分量可视化效果一览基本介绍程序设计参考资料 效果一览 基本介绍 基于SWD群体分解的分量可视化,基于群体分解的信号分解技术,MATLAB程序…...
【makefile】自动化变量的简述及实例
文章目录 10. env20. 简述百度百科常用的自动化变量 30. 实例90. 附件下载 10. env ubuntu1804 GNU Make 4.120. 简述 百度百科 https://baike.baidu.com/item/Makefile/4619787?frge_ala makefile 文件的格式: 目标:依赖命令软件编译的流程概述&am…...
IntelliJ IDEA 官方网站 idea官网 http://www.jetbrains.com/idea/
IntelliJ IDEA 官方网站 idea官网 http://www.jetbrains.com/idea/ Idea下载官网一键直达: 官网一键直达...
C#,《小白学程序》第一课:初识程序
曰:扫地僧练就绝世武功的目的是为了扫地更干净。 1 文本格式 /// <summary> /// 《小白学程序》第一课:初识程序 /// </summary> /// <param name"sender"></param> /// <param name"e"></param&…...
LeetCode--HOT100题(38)
目录 题目描述:226. 翻转二叉树(简单)题目接口解题思路代码 PS: 题目描述:226. 翻转二叉树(简单) 给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。 LeetCode做题链…...
C语言:指针(超深度讲解)
目录 指针: 学习目标: 指针可以理解为: 字符指针: 定义:字符指针 char*。 字符指针的使用: 练习: 指针数组: 概念:指针数组是一个存放指针的数组。 实现模拟二维…...
Docker详解
文章目录 Docker详解一、Docker简介什么是容器 ?容器技术有哪些优点 ?什么是Docker ?Docker的特点Docker的使用场景 二、Docker的基本组成Docker 客户端 / 守护进程Docker Image 镜像Docker Container 容器Docker Registry 仓库 三、Docker 依…...
软件开发方法:复用与扩展
软件开发方法:复用与扩展 一、面向对象二、进一步认识 一、面向对象 封装 工程上的意义:屏蔽细节,隔离变化 public、protected、private 继承 工程上的意义:复用 多态工程上的意义:高内聚,低耦合 —— 面…...
C++新经典09--函数新特性、inline内联函数与const详解
函数回顾与后置返回类型 函数定义中如果有形参则形参应该有名字,而不光是只有类型,但是如果并不想使用这个形参,换句话说这个形参并不在这个函数中使用,则不给形参名也可以,但在调用这个函数的时候,该位置…...
C++中机器人应用程序的行为树(ROS2)
马库斯布赫霍尔茨 一、说明 以下文章为您提供了对机器人应用程序或框架中经常使用的行为树的一般直觉:ROS,Moveit和NAV2。了解行为 Tress (BT) 框架的原理为您提供了在游戏领域应用知识的绝佳机会。BT可以与Unity或Unreal集成。 由…...
像Vuex一样使用redux
redux基础知识 本篇文章主要介绍redux的基本使用方法,并简单封装,像vuex一样写redux 学习文档 英文文档: https://redux.js.org/ 中文文档: http://www.redux.org.cn/ Github: https://github.com/reactjs/redux redux是什么 redux和vuex几乎是一…...
关于模板的大致认识【C++】
文章目录 函数模板函数模板的原理函数模板的实例化模板参数的匹配原则 类模板类模板的定义格式类模板的实例化 非类型模板参数typename 与class模板的特化函数模板特化类模板特化全特化偏特化 模板的分离编译 函数模板 函数模板的原理 template <typename T> //模板参数…...
C#如何遍历类的属性,并获取描述/注释
要获取属性的描述/注释,需要使用System.ComponentModel命名空间中的DescriptionAttribute。可以通过反射获取属性上的DescriptionAttribute,并获取其Description属性值。 首先,需要引入System.ComponentModel命名空间: using Sy…...
ffmpeg 子进程从内存读取文件、提取图片到内存
除了网络、文件io,由python或java或go或c等语言开启的ffmpeg子进程还支持pipe,可以从stdin读入数据,输出转化后的图像到stdout。无需编译 ffmpeg,直接调用 ffmpeg.exe不香么! “从内存读”可用于边下载边转码…...
Springboot+Netty+WebSocket搭建简单的消息通知
SpringbootNettyWebSocket搭建简单的消息通知 一、快速开始 1、添加依赖 <dependency><groupId>io.netty</groupId><artifactId>netty-all</artifactId><version>4.1.36.Final</version> </dependency> <dependency>…...
@RefreshScope静态变量注入
RefreshScope注解通常用于注入实例变量,而不是静态变量。由于静态变量与类直接关联,刷新操作无法直接影响它们。 如果你需要动态刷新静态变量的值,一种可行的方案是使用一个通过Value注解注入的实例变量,并在该实例变量的getter方…...
tao-8k嵌入模型实战体验:WebUI操作详解,一键计算文本相似度
tao-8k嵌入模型实战体验:WebUI操作详解,一键计算文本相似度 1. 认识tao-8k嵌入模型 1.1 模型核心能力解析 tao-8k是一个专为长文本处理优化的嵌入模型,由Hugging Face开发者amu研发并开源。它的核心能力是将任意长度的文本转换为固定维度的…...
专业流媒体视频下载工具技术解析与使用指南
专业流媒体视频下载工具技术解析与使用指南 价值主张:高效解决流媒体内容本地化需求 在数字内容消费日益普及的今天,用户对在线视频资源的本地保存需求持续增长。m3u8-downloader作为一款专业的流媒体下载工具,专注于解决m3u8格式视频的高效…...
导师推荐!盘点2026年最受欢迎的AI论文工具
一天写完毕业论文在2026年已不再是天方夜谭。2026年AI论文工具全面升级,实测提速超50%,覆盖选题、文献分析、内容生成、降重润色、格式排版等全流程场景,真正帮你高效搞定论文。 一、全流程王者:一站式搞定论文全链路(…...
解锁Online3DViewer:浏览器端3D模型可视化的核心价值与实践指南
解锁Online3DViewer:浏览器端3D模型可视化的核心价值与实践指南 【免费下载链接】Online3DViewer A solution to visualize and explore 3D models in your browser. 项目地址: https://gitcode.com/gh_mirrors/on/Online3DViewer 在数字化设计与开发领域&am…...
字节跳动“卷”到离谱!裸辞后我投身大模型风口,90天逆袭成“AI小子”!
个人自我介绍 鄙人出生于南方小乡镇,为了走出小镇,在当地够拼够努力,不是自夸,确确实实也算得上“别人家的小孩”,至少在学习这件事情少,没有要家里人操过心。 高考特别顺利,一个老牌985&#x…...
OpenClaw+GLM-4.7-Flash:学术论文辅助写作全流程
OpenClawGLM-4.7-Flash:学术论文辅助写作全流程 1. 为什么需要AI辅助学术写作 作为一名经常需要撰写学术论文的研究者,我深刻体会到写作过程中的痛点。从海量文献中筛选关键信息、整理参考文献格式、反复修改论文结构,这些工作往往耗费大量…...
计算机专业毕业设计题目效率提升指南:从选题到部署的工程化实践
作为一名刚刚完成毕业设计的计算机专业学生,我深刻体会到了从选题到最终部署答辩这一路上的“坑”与“痛”。很多同学和我一样,前期选题纠结,中期开发混乱,后期部署手忙脚乱,最终答辩演示时还可能出现各种意外。为了帮…...
MobaXterm远程免密登录疑难杂症全解析:从pk.pub到authorized_keys的避坑指南
1. 密钥文件格式的坑:从pk.pub到ppk的生死局 第一次用MobaXterm配置SSH免密登录时,我对着那个死活弹不出警告的"pk.pub"文件发了半小时呆。后来才发现Windows这个老狐狸默认隐藏了文件扩展名,我的"pk.pub"其实是个披着羊…...
IPv6支持不足?选用双栈兼容IP离线库,平滑过渡
上个月,我接手了一个线上报修:某客户的内网监控系统突然查不到部分IP的归属地了。登录服务器一看,日志里全是这种报错: Error: IP format not supported: 240e:3a0:xxxx::1 查代码发现,这套系统三年前上线时嵌了一个…...
3步掌握开源卡牌编辑器:批量制作桌游卡牌的终极指南
3步掌握开源卡牌编辑器:批量制作桌游卡牌的终极指南 【免费下载链接】CardEditor 一款专为桌游设计师开发的批处理数值填入卡牌生成器/A card batch generator specially developed for board game designers 项目地址: https://gitcode.com/gh_mirrors/ca/CardEd…...
