尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
EzCloud 系统数据字典模块源码解析:全局枚举统一管理、多租户隔离、业务下拉复用实现
前言企业级多租户系统开发过程中业务存在大量固定选项订单类型、维修故障分类、客户等级、审批状态、物料规格等。常规开发习惯是硬编码枚举写在代码里极易出现问题修改分类需要改代码重启服务、各个业务模块枚举重复定义、多租户需要个性化选项时无法区分、前端下拉框需要前后端反复对齐字段。EzCloud 搭建独立数据字典通用模块统一管理全系统所有分类选项支持后台可视化新增、修改分类项所有业务下拉选择全部调用字典数据无需重复定义枚举同时支持租户自定义字典适配不同企业个性化选型需求。1、数据字典模块工程分层结构模块三层分层解耦和全业务解耦适配dict-base字典分类、字典项基础数据表维护管理大类编码、名称、状态排序dict-query字典缓存、租户过滤查询逻辑本地缓存减少数据库频繁查询dict-ref业务引用适配层提供统一工具类给 ERP、维保、CRM、OA 提供字典取值、翻译接口进销存单据、售后报修、客户档案、审批流程内所有下拉选项全部调用字典接口不再各自维护枚举。 项目完整源码、各业务模块示例、配套开发文档存放地址https://gitee.com/tan-tianming/ez-cloud2、核心源码带租户隔离的字典查询与字段翻译javaService public class DictDataServiceImpl implements DictDataService { Autowired private DictTypeMapper dictTypeMapper; Autowired private DictDataMapper dictDataMapper; Autowired private RedisTemplateString, Object redisTemplate; Override public ListDictDataVO getDictList(String dictCode, Long tenantId) { // 优先读取Redis缓存提升查询效率 String cacheKey dict: tenantId : dictCode; ListDictDataVO cacheList (ListDictDataVO) redisTemplate.opsForValue().get(cacheKey); if (CollUtil.isNotEmpty(cacheList)) { return cacheList; } // 数据库查询区分公共字典、租户私有字典 LambdaQueryWrapperDictDataDO wrapper Wrappers.lambdaQuery(); wrapper.eq(DictDataDO::getDictCode, dictCode); wrapper.and(w - w.eq(DictDataDO::getTenantId, tenantId).or(DictDataDO::getIsPublic, true)); wrapper.orderByAsc(DictDataDO::getSort); ListDictDataDO dataList dictDataMapper.selectList(wrapper); ListDictDataVO result BeanUtil.copyToList(dataList, DictDataVO.class); // 写入缓存 redisTemplate.opsForValue().set(cacheKey, result, 1, TimeUnit.HOURS); return result; } Override public String translateDict(String dictCode, String value, Long tenantId) { ListDictDataVO list getDictList(dictCode, tenantId); return list.stream() .filter(item - item.getValue().equals(value)) .map(DictDataVO::getLabel) .findFirst() .orElse(value); } }代码设计技术亮点区分公共全局字典、租户私有字典公共选项全企业通用每家企业可新增独有的字典项适配个性化分类Redis 做缓存优化高频下拉查询不用频繁查库保障前端页面加载速度提供通用翻译工具方法后端打印日志、导出 Excel 可一键把编码转为中文名称不用手写大量判断逻辑字典改动自动清理对应缓存修改后实时生效不用重启服务。3、模块核心技术能力可视化后台维护所有分类文字、编码、排序、启用状态页面直接编辑不用修改 Java 代码前端统一适配前端通过字典编码一键获取下拉列表ERP、维保、CRM 共用一套前端字典请求逻辑数据翻译全覆盖日志打印、Excel 导出、报表展示自动翻译编码阅读更直观字典启停管控可禁用无效选项实现软删除历史旧单据数据不受影响。4、二次开发拓展特性新增业务下拉选项无需新建枚举类后台新增字典即可完成全链路适配插件化独立模块无自定义分类需求可直接移除不影响其他业务模块支持字典批量导入导出新项目初始化可以批量批量预置分类适配多租户 SaaS不同企业同一字典编码可以配置不一样的选项互不干扰。总结EzCloud 数据字典模块统一收拢全系统分类枚举能力解决硬编码枚举维护麻烦、多租户无法个性化、前后端联调繁琐的开发痛点。依靠缓存加速、租户区分、通用翻译能力极大降低全业务的重复开发量是企业级多租户系统必备基础模块。
RELATED

相关推荐

PID参数调试实战:从单环到串级,手把手教你调出稳定温控曲线

PID参数调试实战:从单环到串级,手把手教你调出稳定温控曲线

1. 从“温控不准”到“稳定如磐石”:PID调试的实战心路搞过温控项目的朋友,十有八九都跟PID这三个字母“搏斗”过。你可能遇到过这样的情况:设定个50度,温度指针像过山车一样,要么冲到60度下不来,要么在45度…

📅 2026/9/12 2:34:59
Android开发中NoSuchMethodError的根源解析与解决方案

Android开发中NoSuchMethodError的根源解析与解决方案

1. 问题初探:当熟悉的API突然“消失” 如果你是一个Android开发者,或者正在折腾AOSP源码,那么你大概率见过这个让人心头一紧的报错: java.lang.NoSuchMethodError: No virtual method ... in class ... or its super classes 。…

📅 2026/9/9 20:01:08
智能体面试准备(十一):Agent 评估——怎么证明你的 Agent 真的“能用“

智能体面试准备(十一):Agent 评估——怎么证明你的 Agent 真的“能用“

智能体面试准备(十一):Agent 评估——怎么证明你的 Agent 真的"能用" 写在前面:B1 到 B10 我们把 Agent 的架构、ReAct、工具、规划、记忆、多智能体、框架、工作流、Agentic RAG 全过了一遍。能写一个 Agent 不难&…

📅 2026/9/13 5:24:32
MORE NEWS

更多资讯

📰

使用 Fleet GitOps 部署 Santa 并彻底告别 Sync Server

使用 Fleet GitOps 部署 Santa 并彻底告别 Sync Server 【免费下载链接】fleet Open device management 项目地址: https://gitcode.com/GitHub_Trending/fl/fleet Santa 是面向 macOS 的二进制授权(binary authorization)系统,能够让…

📰

工控协议实战指南:Modbus/S7Comm/MC/FINS四大协议破译方法论

1. 为什么一个个人开发者必须亲手“啃”下这12种工控协议?工控协议不是API文档,不是RESTful接口,更不是点几下鼠标就能调通的SDK。它是一套嵌在钢铁、水泥、传送带和电机里的语言——没有HTTP状态码,只有寄存器地址错一位就停机&a…

📰

Open FPV VTX与Betaflight的MSP协议深度协同原理

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

Agentic Awesome Skills 视觉指南:AAS Core 工作流与技能分发全景图解

Agentic Awesome Skills 视觉指南:AAS Core 工作流与技能分发全景图解 【免费下载链接】agentic-awesome-skills AAS Core is the local, agent-first control plane for complete catalog discovery, agent-owned selection, stack validation, and planning, back…

📰

RGB灯带PWM调光MOS管选型实战:HC90N03M低边开关与热设计

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

LangGraph状态持久化实战:用PyMySQLSaver解决进程重启丢失上下文

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬