Skip to content
网游世界
网游世界

吾生有涯,而知无涯。

  • 首页
  • PHP
    • ThinkPHP
    • FastAdmin
    • webman
  • JavaScript
    • jQuery
    • AdminLTE
  • Free Pascal
  • Java
    • JeeSite
    • 若依
    • ruoyi-vue-pro
  • 其它
    • 操作系统
    • 树莓派
    • 前端
    • Null
  • 关于
网游世界

吾生有涯,而知无涯。

JeeSite 树型表自动生成 ID

3Vshej, 2024年1月11日 周四

JeeSite 树型表通常用于存储分类,比如文章分类,存在树型结构。


但是,默认 ID 是手动输入的,当多次创建分类后,在某些情况下,会提示编码已存在,这时候还得再手动更改 ID。

树型表,通常有 ID,父ID,它用来存储层级关系,像下面这张表结构:

树型表结构示例
字段名类型备注
parent_codevarchar(64)父级编号
parent_codesvarchar(1000)所有父级编号
tree_sortdecimal(10)本级排序号(升序)
tree_sortsvarchar(1000)所有级别排序号
tree_leafchar(1)是否最末级
tree_leveldecimal(4)层次级别
tree_namesnvarchar(1000)全节点名

通常情况下,ID 字段默认不显示,只需要自动生成就可以了:

首页隐藏 编码字段,增加 hide 类。

<div class="row hide">
    <div class="col-xs-12">
        <div class="form-group">
            <label class="control-label col-sm-2" title=""><span class="required ">*</span> ${text('类型编码')}:<i class="fa icon-question hide"></i></label>
                <div class="col-sm-4">
                    <#form:hidden path="isNewRecord"/>
                    <#form:input path="categoryCode" maxlength="64" readonly="${!cmsfileCategory.isNewRecord}" class="form-control required abc"/>
                </div>
        </div>
    </div>
</div>

控制器中 createNextNode 方法,修改生成 ID 规则为 IdGen.randomBase62(19):

/**
 * 创建并初始化下一个节点信息,如:排序号、默认值
 */
@RequiresPermissions("category:cmsfileCategory:edit")
@RequestMapping(value = "createNextNode")
@ResponseBody
public CmsfileCategory createNextNode(CmsfileCategory cmsfileCategory) {
    if (StringUtils.isNotBlank(cmsfileCategory.getParentCode())){
        cmsfileCategory.setParent(cmsfileCategoryService.get(cmsfileCategory.getParentCode()));
    }
    if (cmsfileCategory.getIsNewRecord()) {
        CmsfileCategory where = new CmsfileCategory();
        where.setParentCode(cmsfileCategory.getParentCode());
        CmsfileCategory last = cmsfileCategoryService.getLastByParentCode(where);

        // 获取到下级最后一个节点
        if (last != null){
            cmsfileCategory.setTreeSort(last.getTreeSort() + 30);
            cmsfileCategory.setCategoryCode(IdGen.randomBase62(19));
        }else if (cmsfileCategory.getParent() != null){
            cmsfileCategory.setCategoryCode(IdGen.randomBase62(19));
        } else {
            cmsfileCategory.setCategoryCode(IdGen.randomBase62(19));
        }
    }
    // 以下设置表单默认数据
    if (cmsfileCategory.getTreeSort() == null){
        cmsfileCategory.setTreeSort(CmsfileCategory.DEFAULT_TREE_SORT);
    }
    return cmsfileCategory;
}

相关文章:

  1. JeeSite treeselect 自定义请求地址 JeeSite treeselect 组件封装 layer + zTree 实现树结构选择组件、支持......
  2. JeeSite treeselect 获取父级信息 业务是这样的,当选择责任人时,同步选择后面的责任部门。因为 JeeSite 选择用户信息时,默认是包......
  3. JeeSite 表中新增字段 在后期维护项目时,因业务要求需要向表中新加字段,以适应新业务。但重新生成代码又不适用,这时候需要手动......
  4. JeeSite 删除数据拦截 单表操作删除时,默认框架已提供了,但有时候需要根据条件判断是否允许删除;如,客户表,如果客户信息已被......
Java JeeSite JeeSite 框架treeselect树型表

文章导航

Previous post
Next post

近期文章

  • FreePascal 、Lazarus IDE、Lazarus 包镜像
  • Android Studio Gradle 配置国内镜像
  • 为什么重新发明轮子
  • ruoyi-vue-pro 匿名访问
  • VUE 中接收 code 异常

归档

  • 2025 年 5 月
  • 2025 年 4 月
  • 2025 年 3 月
  • 2025 年 2 月
  • 2025 年 1 月
  • 2024 年 12 月
  • 2024 年 11 月
  • 2024 年 10 月
  • 2024 年 9 月
  • 2024 年 8 月
  • 2024 年 7 月
  • 2024 年 6 月
  • 2024 年 5 月
  • 2024 年 4 月
  • 2024 年 3 月
  • 2024 年 2 月
  • 2024 年 1 月
  • 2023 年 12 月
除非特殊说明,本站作品采用知识共享署名 4.0 国际许可协议进行许可。
豫公网安备 41010402002622号 豫ICP备2020029609号-3
©2025 3Vshej