首页/新闻资讯/正文详情

Lottery 分布式抽奖系统:Lottery-ERP 运营后台 UI 工程搭建 —— DDD 分层结构与 layui 落地实践

发布时间:2026/9/26 15:49:50 来源:云帆数科 栏目:资讯中心
Lottery 分布式抽奖系统:Lottery-ERP 运营后台 UI 工程搭建 —— DDD 分层结构与 layui 落地实践
文档教程后端【免费下载链接】CodeGuide:books: 本代码库是作者小傅哥多年从事一线互联网 Java 开发的学习历程技术汇总旨在为大家提供一个清晰详细的学习教程侧重点更倾向编写Java核心内容。如果本仓库能为您提供帮助请给予支持(关注、点赞、分享)项目地址https://gitcode.com/gh_mirrors/code/CodeGuide点击查看免费下载Lottery 分布式抽奖系统在完成核心抽奖服务Lottery 工程之后还需要一套面向运营人员的 B 端管理系统用来配置活动、查询数据、审核状态。本篇基于「第01节UI工程搭建」展开系统讲解 Lottery-ERP 运营后台的选型思路、DDD 分层工程结构与 layui 前端资源的整合方式读完你将掌握后端 Java 团队在没有专职前端的情况下如何快速搭建一套内部运营后台的完整方案。一、为什么需要一个独立的运营后台在整个营销体系中抽奖系统只是众多微服务之一而支撑运营人员日常工作的管理端必不可少。参考 Lottery 抽奖系统整体介绍 中对六个工程的拆分其中Lottery-ERP 就是 B 端运营系统用于满足运营人员对活动的查询、配置、修改、审核等操作它与面向 C 端用户的 H5 抽奖页面Lottery-Front职责完全不同Lottery分布式部署的抽奖服务提供抽奖业务领域功能以 RPC 方式对外提供服务Lottery-ERPB 端运营系统运营人员在这里管理活动与查看数据Lottery-FrontC 端用户系统vue H5 大转盘抽奖界面。运营后台面向的是内部运营人员用户量小、功能集中、迭代以内部需求为主因此在技术选型上与 C 端系统有本质差异。二、UI 方案选型三套方案对比与取舍在考虑运营后台搭建时第一个要解决的问题是UI 方案怎么选。如果公司里有前端人员来开发后台运营页面基本会使用 vue、react、angular 等前端框架但如果没有专职前端而是需要后端 Java 人员来开发就必须考虑迭代和维护成本——并不是所有后端研发都需要去学习 vue 这类前端开发语言。当时汇总并对比了三套运营后台 UI 方案方案定位特点适用场景layui经典的前端 UI 组件库以 jQuery 为基础用法贴近传统 Web 开发后端 Java 人员上手成本极低内部运营后台、管理类页面vue-element-admin基于 vue Element UI 的后台管理模板组件丰富、工程化程度高适合完整的前端工程体系有前端资源、需要复杂交互的后台Ant Design Pro基于 React Ant Design 的企业级中后台前端框架组件与设计规范成熟功能强大但学习成本更高大型企业级中后台最终选择layui 作为运营后台的搭建框架核心原因有两点上手成本低layui 是基于 jQuery 的经典组件库页面结构、写法与传统的服务端渲染页面接近Java 后端研发几乎不需要额外学习前端工程化体系就能直接上手够用且稳定虽然 layui 已经停止更新维护但对于内部运营后台这类以表单、表格、查询为主的页面来说日常使用完全够用。同时原文档也给出了明确的规划后续开发 C 端抽奖页面大转盘 H5时再使用 vue 语言这样一套系统里两种前端方式都能覆盖到如果对 vue 很感兴趣也可以直接使用 vue 的方式搭建运营后台页面本方案并非唯一答案。三、工程整体结构DDD 分层 layui 的组合确定 UI 方案后运营后台工程采用DDD 架构分层结构 layui的组合方式来搭建。为什么在运营后台也要坚持 DDD 结构原因在于这是 DDD 在没有 RPC 引入时的紧凑结构模型可以非常直观地体现Application 应用层定义接口 → Domain 领域层做实现 → 最终交给 interfaces 接口层使用的完整调用链。运营后台的代码规模比核心抽奖服务小用它来演示和巩固 DDD 分层思想是非常合适的场景。下图展示了 Lottery-ERP 工程的整体目录结构图片位于 docs/.vuepress/public/images/article/project/lottery/Part-3/1-01.png从图中可以看到整个工程分为两大部分1. 按照 DDD 分层的运营后台服务端Java 部分项目根目录为Lottery-ERPJava 代码位于src/main/java下的cn.itedus.lottery.erp包包含四个核心模块application应用层负责协调领域逻辑、封装用例流程定义对外的应用服务接口domain领域层如domain.activity活动领域模块承载核心业务规则与领域服务实现infrastructure基础设施层提供通用技术能力、实现数据持久化等支撑性内容interfaces接口层负责对外提供服务接口的定义与暴露。入口类LotteryErpApplication是 Spring Boot 项目的启动类。2. 运营后台 UIWeb 端前端代码位于src/main/webapp路径下包含的模块有api前端接口调用定义css样式文件images资源图片js前端脚本lib依赖库layui 等组件库存放处lottery业务相关代码page页面组件index.html前端入口页面。这种Java 分层 webapp 静态资源并存的结构正是非前后端分离模式在内部运营后台中的典型应用。四、DDD 分层中各层的职责边界要真正理解上面的工程结构需要先明确 DDD 四层架构中各层的职责。在 Part-2 第02节搭建DDD四层架构 中对分层原则做了详细说明这里结合运营后台工程归纳如下应用层application用来表述应用和用户行为负责服务的组合、编排和转发负责处理业务用例的执行顺序以及结果的拼装。在运营后台中页面请求先到达应用层定义的服务接口领域层domain领域服务位于领域层为完成领域中跨实体或值对象的操作转换而封装服务。领域服务封装了核心的业务逻辑实体自身的行为在实体类内部实现向上封装成领域服务暴露为隐藏领域层业务逻辑实现所有领域方法和服务均须通过领域服务对外暴露基础设施层infrastructure提供数据持久化、缓存、文件等通用技术能力接口层interfaces对外暴露 HTTP 接口接收前端请求并返回响应。这样Application 定义接口、Domain 实现业务、Infrastructure 提供支撑、Interfaces 对外暴露的调用链与 MVC 结构相比新增功能扩展时结构依旧清晰——只要结构清晰、地基打得好后续盖房子加功能就非常容易这也是在运营后台中坚持 DDD 结构的重要价值。五、UI 直接放入工程非前后端分离的务实选择值得特别说明的是这里的 UI 部分不是前后端分离的而是直接放到工程中src/main/webapp这算是一种比较古老的实现方式。但从实际业务场景看这种选择非常合适运营后台通常只是内部运营人员使用不面向外部 C 端用户对页面交互复杂度、并发量要求都不高前后端代码放在同一工程中部署、版本管理、联调都更简单Java 研发人员可以一条链路完成从页面到接口的全部开发一般部署 2 台应用实例做个互备就足够了不需要复杂的前端 CDN、网关等基础设施。六、工程搭建之后的业务延伸运营后台的基础工程结构搭建完成后后续章节围绕它逐步填充业务功能形成了完整的 Part-3 系列参见 Part-3 章节目录第02节活动列表数据展示在运营后台中提供活动列表查询。因为活动的配置在单库单表中直接提供查询服务即可同时要注意给运营后台查询的数据通常直接使用LIMIT x,y分页即可而如果是 C 端用户展示列表数据则应使用 id LIMIT x的方式两者有本质区别第03节用户抽奖数据展示继续填充用户抽奖数据的可视化展示能力。而在 C 端侧Part-4 第02节vue H5 大转盘抽奖 则使用 vue 语言开发面向用户的抽奖页面与运营后台的 layui 形成B 端 layui C 端 vue的双前端格局完整覆盖了两类不同场景的技术栈实践。七、小结本节的要点可以归纳为四句话选型看场景没有专职前端时layui 这类基于 jQuery 的组件库是 Java 后端搭建内部运营后台的低成本选择有前端资源或对扩展性要求高时再考虑 vue/react 方案结构坚持 DDD运营后台虽然规模小但正好用紧凑的Application 定义接口、Domain 实现、interfaces 使用结构来落地 DDD 分层思想为后续功能扩展打好地基非前后端分离够用UI 直接放入工程的src/main/webapp配合api/css/images/js/lib/lottery/page的目录划分让 Java 研发能独立完成运营页面的开发与维护部署从简内部运营后台通常部署 2 台应用实例互备即可不需要为它引入复杂的前端工程体系。后续章节将在这一工程基础上逐步开发活动列表查询、用户抽奖数据展示等运营功能把 DDD 分层与 layui 的组合持续落到实处。赞分享文档教程后端【免费下载链接】CodeGuide:books: 本代码库是作者小傅哥多年从事一线互联网 Java 开发的学习历程技术汇总旨在为大家提供一个清晰详细的学习教程侧重点更倾向编写Java核心内容。如果本仓库能为您提供帮助请给予支持(关注、点赞、分享)项目地址https://gitcode.com/gh_mirrors/code/CodeGuide点击查看免费下载相关推荐Lottery 分布式抽奖系统用简单工厂搭建发奖领域服务Lottery 分布式抽奖系统用简单工厂搭建发奖领域服务 本文以 Lottery 分布式抽奖系统 Part 2 第 07 节“简单工厂搭建发奖领域”为主线讲文档教程后端Lottery 分布式抽奖系统开发起点环境搭建、工程结构与研发规范全解Lottery 分布式抽奖系统开发起点环境搭建、工程结构与研发规范全解 本篇基于 CodeGuide 仓库中的《第01节环境、配置、规范》文档展开围绕 L文档教程后端Lottery 抽奖系统 DDD 实战在应用层编排领取活动、执行抽奖与中奖落库的完整流程Lottery 抽奖系统 DDD 实战在应用层编排领取活动、执行抽奖与中奖落库的完整流程 本文基于 CodeGuide 仓库中 Lottery 分布式抽奖系统文档教程后端创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关推荐

Origin叠层图制作全攻略:多组数据对比与图层偏移技巧
Origin叠层图制作全攻略:多组数据对比与图层偏移技巧

散点图叠成层叠图这件事,我前前后后帮人改过不下几十张图。最常见的场景是:手头有五六组实验数据,每组都是"横坐标时间、纵坐标某个测量值"的点线结构,单独画出来都挺好看,可一旦要放进同一张图里对比&#… · 2026/9/26 15:49:50

Codex 不是“一个东西“,是“三个东西共用一个名“:CLI、Cloud、IDE 三形态配 TaoToken 的 config.toml 骨架
Codex 不是“一个东西“,是“三个东西共用一个名“:CLI、Cloud、IDE 三形态配 TaoToken 的 config.toml 骨架

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

用Python写集成脚本:从接口对接到数据同步的实战指南
用Python写集成脚本:从接口对接到数据同步的实战指南

说实话,我上周刚帮一个做电商运营的朋友排查了个问题:他们每天手工从供应商后台导出订单数据,再整理成Excel发给仓库,旺季一天能在这件事上耗掉一个多小时。后来我花了两个晚上,写了一个一百来行的Python脚本&#xff… · 2026/9/26 15:49:50

硅基流动实测复盘:开源模型MaaS与全模型聚合平台的搭配策略
硅基流动实测复盘:开源模型MaaS与全模型聚合平台的搭配策略

硅基流动作为国产MaaS第一梯队的代表,综合口碑扎实:150余款模型覆盖语言、图像、视频、语音,注册用户规模庞大,自研推理引擎宣称语言推理提速明显,注册即送体验额度,十分钟就能调通首个API。实测下来,它的开源模型生态与价格确实是强项,但闭源模型缺席也让它的适用边界清晰。本… · 2026/9/26 16:26:41

Agent Teams / Swarms 实战:用 Claude Code Subagents 搭一套可复用的智能体协作骨架
Agent Teams / Swarms 实战:用 Claude Code Subagents 搭一套可复用的智能体协作骨架

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

E2-10G网络测试模块:全速率、超线速与深协议解析技术解析
E2-10G网络测试模块:全速率、超线速与深协议解析技术解析

1. 这块“E2-10G”到底在解决什么真问题?“全速率超线速深协议”——这九个字不是宣传稿里的空洞口号,而是我过去三年在数据中心网络测试现场反复摔打出来的痛点清单。去年底给一家头部云厂商做400G交换机压力验证时,我们卡在了一个极其尴尬的… · 2026/9/26 16:26:35

Cursor 使用教程:从安装、订阅到高级技巧,附 TaoToken 统一 Key 配置
Cursor 使用教程:从安装、订阅到高级技巧,附 TaoToken 统一 Key 配置

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

cursor打开文本中文乱码解决方法:settings.json 配 TaoToken 统一 Key 通道
cursor打开文本中文乱码解决方法:settings.json 配 TaoToken 统一 Key 通道

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

统计信息搜集加SQL硬编码导致library cache lock 和cursor pin wait on x:TaoToken统一Key通道下的诊断配置与验证
统计信息搜集加SQL硬编码导致library cache lock 和cursor pin wait on x:TaoToken统一Key通道下的诊断配置与验证

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

数据库课后习题答案别硬背:当测试用例集刷,效率翻倍
数据库课后习题答案别硬背:当测试用例集刷,效率翻倍

简介:万常选版《数据库原理与设计》课后习题答案资源,覆盖第2至6章及第9章,适合正在学习关系模型、数据库建模、关系数据理论与模式求精的本科生、自学者作为复习与自测材料。压缩包共7个文件,含3个doc参考答案、2个sql示例脚本、… · 2026/9/26 0:00:21

OpenClaw 替代品?Hermes Agent 踩坑实录:macOS 飞书接入 TaoToken 配置
OpenClaw 替代品?Hermes Agent 踩坑实录:macOS 飞书接入 TaoToken 配置

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

向下兼容与向上兼容:接口设计中的兼容性策略与工程实践
向下兼容与向上兼容:接口设计中的兼容性策略与工程实践

一次版本升级事故,是很多团队绕不过去的坎。线上环境里,服务端明明已经上线了新版接口,老的移动端还在照着旧文档传参数。请求一到网关,校验直接拒绝,用户操作失败,客服群炸了锅,开发群里开始互… · 2026/9/26 0:00:46

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码