Skip to content
On this page

项目架构与源码结构

在对 Tduck 社区版进行二次开发前,有必要先了解其整体的技术栈选型及前后端工程的源码模块划分。


🛠️ 技术栈选型

后端核心技术

  • 核心框架:SpringBoot 2.x
  • 持久层框架:MyBatis-Plus 3.x
  • 权限校验:基于 JWT (Json Web Token) 的轻量级鉴权
  • 数据库:MySQL 5.7+
  • 缓存与缓存淘汰:Redis / Guava Cache
  • 工具类库:Hutool, Guava, Lombok, Apache Commons

前端核心技术

  • 核心框架:Vue 2.x
  • UI 组件库:Element UI
  • 状态管理与路由:Vuex, Vue Router
  • 图表展示:Apache ECharts

📂 后端工程结构 (tduck-platform)

后端采用 Maven 多模块 (Multi-Module) 结构进行管理,主要模块拆分如下:

tduck-platform (父工程)
├── tduck-common         # 通用工具模块 (异常定义、本地Ehcache缓存、基础常量、工具类)
├── tduck-account        # 用户账号模块 (登录注册、密码加密、图形/短信验证码、JWT鉴权)
├── tduck-storage        # 统一文件存储模块 (对接本地存储、阿里云OSS、七牛云、又拍云、S3协议存储等)
├── tduck-form           # 问卷表单核心业务 (表单设计、数据收集、数据统计大屏后台)
├── tduck-webhook        # Webhook数据推送模块 (实现数据提交/更新/删除时的自定义URL实时回调)
├── tduck-wx-mp          # 微信公众号模块 (扫码登录、模板消息推送、微信授权与交互)
├── tduck-ai             # AI智能问卷助手模块 (集成 DeepSeek 实现通过自然语言提示词自动生成问卷)
└── tduck-api            # 对外API服务层 (最终打包部署运行的入口模块,依赖上述所有业务模块)

模块依赖关系

tduck-api ➔ 依赖 tduck-form & tduck-account & tduck-wx-mp & tduck-webhook & tduck-ai ➔ 各业务模块依赖 tduck-storage ➔ 均依赖 tduck-common


📂 前端工程结构 (tduck-front)

前端基于 Vue CLI (Vue 2 + Element UI) 构建,整体目录结构如下:

tduck-front
├── public               # 静态资源 (HTML入口、Favicon等)
├── scripts              # 实用脚本 (如 toggle-formgen.js 用于切换本地表单生成器模块)
├── src
│   ├── api              # 统一的接口请求方法封装 (与后端 tduck-api 接口对应)
│   ├── assets           # 静态资源、矢量图标 (svg) 和 SCSS 样式
│   ├── components       # 系统的通用公共组件
│   ├── router           # Vue Router 路由配置 (支持模块化自动注册)
│   ├── store            # Vuex 全局状态管理
│   ├── utils            # 工具类封装 (如 request.js 网络请求拦截、cookie/storage 处理)
│   └── views            # 业务视图页面
│       ├── account      # 登录、注册、修改密码、找回密码
│       ├── form         # 表单操作的核心包
│       │   ├── editor   # 表单编辑器入口 (集成自 tduck-form-generator)
│       │   ├── logic    # 题目显隐逻辑设置
│       │   ├── preview  # 表单预览
│       │   ├── publish  # 表单发布 (二维码、嵌入代码、链接分享)
│       │   ├── setting  # 表单配置 (提交设置、回收设置、通知设置、数据推送/WebHook)
│       │   ├── data     # 数据明细表格 (使用 vxe-table 渲染)
│       │   └── statistics # 报表统计分析与图表展示 (使用 ECharts 渲染)
│       ├── project      # 问卷表单项目管理 (我的项目、模板中心、回收站)
│       ├── manage       # 后台系统管理 (用户管理、系统参数配置)
│       └── ai           # AI 问卷助手相关模块

💡 关于表单编辑器核心组件

社区版中的表单设计器(FormDesign)和运行态渲染器(FormRender)属于核心商业或高级套件的一部分,目前前端是通过 npm 包 tduck-form-generator 的形式直接引用的,其源码并不在 tduck-front 仓库中。 若需要二次开发设计器本身的交互或增加组件,需要获取 tduck-front-full 源码或通过特定的本地软链接模式进行联调。

湖南省众达数蔚信息技术有限公司-湘ICP备19005498号-3