# question **Repository Path**: kenny_xujz/question ## Basic Information - **Project Name**: question - **Description**: 问卷调查,sql表结构是在doc目录里,数据库使用mysql - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2023-11-05 - **Last Updated**: 2026-04-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # TDUCK 填鸭平台 - 项目概述 ## 1. 项目简介 **TDUCK(填鸭平台)** 是一个开源的在线数据收集/问卷调查系统,支持表单设计、数据收集、数据统计分析等功能。用户可以通过拖拽的方式快速创建问卷调查、信息登记、在线考试等表单,并通过多种渠道收集数据。 ### 核心特性 - 🎨 **可视化表单设计** - 拖拽式表单构建器,支持50+种组件类型 - 📊 **数据统计分析** - 多维度数据分析,支持导出Excel - 🎯 **表单逻辑** - 支持条件显示、跳转逻辑 - 🎨 **主题定制** - 多种主题样式,支持自定义配色 - 📱 **多端适配** - 支持PC端和移动端访问 - 🔗 **多渠道发布** - 链接分享、二维码、微信集成 - 🔐 **权限控制** - 支持密码保护、白名单等 --- ## 2. 技术架构 ### 2.1 系统架构图 ``` ┌─────────────────────────────────────────────────────────────┐ │ 前端层 (Vue.js) │ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │ │ 表单设计 │ │ 数据管理 │ │ 统计分析 │ │ 用户管理 │ │ │ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │ └─────────────────────────────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────────┐ │ API网关层 (Spring Boot) │ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │ │ 认证授权 │ │ 限流熔断 │ │ 日志追踪 │ │ 参数校验 │ │ │ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │ └─────────────────────────────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────────┐ │ 业务服务层 │ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │ │ 账户服务 │ │ 表单服务 │ │ 存储服务 │ │ 微信服务 │ │ │ │ tduck- │ │ tduck- │ │ tduck- │ │ tduck- │ │ │ │ account │ │ form │ │ storage │ │ wx-mp │ │ │ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │ └─────────────────────────────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────────┐ │ 数据存储层 │ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │ │ MySQL │ │ OSS存储 │ │ Redis │ │ │ │ 业务数据 │ │ 文件存储 │ │ 缓存 │ │ │ └──────────┘ └──────────┘ └──────────┘ │ └─────────────────────────────────────────────────────────────┘ ``` ### 2.2 技术栈总览 | 层级 | 技术选型 | |------|---------| | **前端框架** | Vue.js 2.6 + Vue Router + Vuex | | **前端UI** | Element UI 2.15 + Vant 2.12 | | **后端框架** | Spring Boot 2.7.8 | | **ORM框架** | MyBatis-Plus 3.5.3 | | **数据库** | MySQL 8.0 | | **认证方式** | JWT Token | | **文件存储** | 本地/阿里云OSS/七牛云/又拍云/S3 | | **API文档** | SpringDoc OpenAPI (Swagger) | | **构建工具** | Maven 3.x / npm/yarn | --- ## 3. 项目结构 ``` question/ ├── tduck-platform/ # 后端项目 │ ├── tduck-api/ # API入口模块 │ ├── tduck-common/ # 公共模块 │ ├── tduck-account/ # 账户模块 │ ├── tduck-form/ # 表单模块 │ ├── tduck-storage/ # 存储模块 │ ├── tduck-wx-mp/ # 微信公众号模块 │ ├── doc/ # SQL脚本 │ └── docker/ # Docker部署配置 │ ├── tduck-front/ # 前端项目 │ ├── src/ │ │ ├── api/ # API接口 │ │ ├── assets/ # 静态资源 │ │ ├── components/ # 公共组件 │ │ ├── router/ # 路由配置 │ │ ├── store/ # Vuex状态管理 │ │ ├── utils/ # 工具函数 │ │ └── views/ # 页面视图 │ └── public/ # 公共资源 │ └── logs/ # 日志目录 ``` --- ## 4. 功能模块 ### 4.1 用户管理 - 用户注册/登录(邮箱、手机号) - 第三方登录(微信扫码、QQ) - 密码找回 - 用户信息管理 - 账户绑定/解绑 ### 4.2 表单管理 - 表单创建/编辑/删除 - 表单模板使用 - 表单主题设置 - 表单逻辑配置 - 表单发布/停止 ### 4.3 数据收集 - 表单填写提交 - 数据查看/编辑 - 数据导出(Excel) - 数据导入 - 附件下载 ### 4.4 数据统计 - 填写趋势分析 - 地理位置分布 - 设备/浏览器统计 - 来源渠道分析 - 选项统计分析 ### 4.5 系统管理 - 用户管理(管理员) - 系统配置 - 存储配置 --- ## 5. 快速开始 ### 5.1 环境要求 - JDK 1.8+ - Maven 3.6+ - MySQL 8.0+ - Node.js 14+ - npm/yarn ### 5.2 后端启动 ```bash # 1. 导入数据库 mysql -u root -p < tduck-platform/doc/tduck-v4.sql # 2. 修改配置 # 编辑 tduck-platform/tduck-api/src/main/resources/application-dev.yml # 配置数据库连接、Redis等 # 3. 构建项目 cd tduck-platform mvn clean install -DskipTests # 4. 启动服务 cd tduck-api mvn spring-boot:run ``` ### 5.3 前端启动 ```bash # 1. 安装依赖 cd tduck-front yarn install # 或 npm install # 2. 启动开发服务器 yarn serve # 或 npm run serve # 3. 访问系统 # 打开浏览器访问 https://localhost:8888 ``` --- ## 6. 文档目录 | 文档 | 说明 | |------|------| | [后端开发文档](./backend.md) | 后端架构、模块设计、开发规范 | | [前端开发文档](./frontend.md) | 前端架构、组件设计、开发规范 | | [API接口文档](./api.md) | 接口列表、请求参数、响应格式 | | [数据库设计文档](./database.md) | 表结构设计、字段说明 | | [部署文档](./deployment.md) | 部署方式、环境配置 | --- ## 7. 更新日志 ### v1.0.1 (2024-03-16) - 安全修复与Bug修复 #### 安全修复 - **SQL注入防护**: 新增`SqlValidator`工具类,对formKey、formItemId、dataIds进行白名单验证 - **JSON值转义**: 修复`JsonLambdaQueryWrapper`中的SQL注入漏洞 #### 后端Bug修复 | 问题 | 文件 | 修复内容 | |------|------|---------| | NoSuchElementException | OssTypeEnum.java | 使用orElseThrow替代.get() | | NPE风险 | UserFormSettingController.java | 添加null检查 | | NPE风险 | FormAuthUtils.java | 使用Objects.equals | | 资源泄漏 | FormDataExportUtils.java | 使用try-with-resources | | 索引越界 | UserFormSettingServiceImpl.java | 添加列表大小验证 | | 死代码 | PasswordUtils.java | 移除未使用的计算 | | 逻辑错误 | FormDataImportUtils.java | 修复条件判断 | #### 前端Bug修复 | 问题 | 文件 | 修复内容 | |------|------|---------| | 内存泄漏 | VerifySlide.vue | 正确移除事件监听器 | | 缺少错误处理 | form/write/index.vue | 添加catch和loading状态 | | 定时器泄漏 | login/index.vue | 添加定时器清理方法 | | 密码验证错误 | member.vue | 修正比较逻辑 | | 错误提示不明确 | api/index.js | 提供详细错误类型 | #### 文档更新 - 后端文档:新增安全最佳实践章节 - 前端文档:新增错误处理与内存管理章节 --- ## 8. 相关链接 - 后端默认端口:4003 - 前端默认端口:8888 - API文档地址:http://localhost:4003/swagger-ui.html - 项目仓库:[GitHub/Gitee]