网站推送庆阳网站设计价格
目录
- 1. 引言
- 1.1 文档目的
- 1.2 范围
- 2. 系统架构设计
- 2.1 技术选型
- 2.2 系统架构图
- 3. 数据库设计
- 3.1 核心实体关系 (E-R) 图
- 3.2 完整数据表结构
- 3.2.1 用户与权限模块 (User & Permissions)
- 3.2.2 机构与内容模块 (Institution & Content)
- 3.2.3 课程与商城模块 (Courses & Products)
- 3.2.4 教学与互动模块 (Teaching & Interaction)
- 3.2.5 订单与资产模块 (Orders & Assets)
- 4. 模块化功能详细设计
- 通用设计
- 4.1 首页模块 (FE-001 \~ FE-005)
- 4.2 商城模块 (FE-006 \~ FE-007)
- 4.3 服务模块 (FE-008 \~ FE-010)
- 4.4 我的模块 (FE-011 \~ FE-013)
- 5. 非功能需求设计
- 6. 后台管理系统设计
1. 引言
1.1 文档目的
本技术设计文档(TDD)基于《少儿舞蹈小程序项目需求文档 V1.0》,旨在提供一个全面的技术实现蓝图。本文档详细阐述了系统架构、完整的数据库结构、核心功能模块的接口设计和前后端交互逻辑,作为开发、测试和后续维护工作的核心技术依据。
1.2 范围
本文档覆盖了小程序前端(用户端)和后台管理系统(管理端)的所有功能模块,以及相关的非功能性需求实现方案。
2. 系统架构设计
2.1 技术选型
-
小程序端 (Frontend):
- 框架: 使用腾讯云开发作为前端页面搭建平台
-
后台服务端 (Backend):
- 语言/框架: Node.js 。
- 数据库: MySQL 8.0 ,作为主业务数据库。
- 对象存储: 腾讯云COS,用于存储图片、视频等静态资源。
-
后台管理系统 (Admin Panel):
- 框架: 使用腾讯云开发作为后端系统搭建平台。
2.2 系统架构图

架构说明:
采用模块化的后端架构,将业务逻辑拆分为独立的服务模块(如用户、课程、订单等),便于独立开发、部署和扩展。API网关统一处理请求路由、认证和限流。
3. 数据库设计
3.1 核心实体关系 (E-R) 图

3.2 完整数据表结构
3.2.1 用户与权限模块 (User & Permissions)
-
用户表 (users)
字段名 数据类型 主键/索引 描述 idBIGINTPK 唯一标识符 wechat_openidVARCHAR(128)UK 微信用户唯一标识 (小程序) wechat_unionidVARCHAR(128)IDX 微信开放平台唯一标识 (可选) nicknameVARCHAR(255)用户昵称 avatar_urlVARCHAR(512)用户头像URL phone_numberVARCHAR(20)IDX 用户手机号 created_atDATETIME创建时间 updated_atDATETIME更新时间 -
学员表 (students)
字段名 数据类型 主键/索引 描述 idBIGINTPK 唯一标识符 user_idBIGINTFK 关联的家长用户ID ( users.id)nameVARCHAR(100)学员姓名 genderTINYINT性别 (0: 未知, 1: 男, 2: 女) birthdayDATE出生日期 statusTINYINT状态 (1: 正常, 0: 禁用) created_atDATETIME创建时间 updated_atDATETIME更新时间 -
后台管理员表 (admin_users)
字段名 数据类型 主键/索引 描述 idBIGINTPK 唯一标识符 usernameVARCHAR(100)UK 登录用户名 password_hashVARCHAR(255)加密后的密码 nameVARCHAR(100)真实姓名或昵称 role_idBIGINTFK 角色ID ( roles.id)statusTINYINT状态 (1: 启用, 0: 禁用) last_login_atDATETIME最后登录时间 created_atDATETIME创建时间 updated_atDATETIME更新时间 -
角色表 (roles)
字段名 数据类型 主键/索引 描述 idBIGINTPK 唯一标识符 nameVARCHAR(100)UK 角色名称 descriptionVARCHAR(255)角色描述 created_atDATETIME创建时间 updated_atDATETIME更新时间
3.2.2 机构与内容模块 (Institution & Content)
-
轮播图表 (banners)
字段名 数据类型 主键/索引 描述 idBIGINTPK 唯一标识符 titleVARCHAR(255)标题 image_urlVARCHAR(512)图片URL link_urlVARCHAR(512)跳转链接 (小程序内页面路径) sort_orderINT排序值,值越小越靠前 statusTINYINT状态 (1: 显示, 0: 隐藏) created_atDATETIME创建时间 -
文章/介绍表 (articles)
字段名 数据类型 主键/索引 描述 idBIGINTPK 唯一标识符 typeVARCHAR(50)IDX 类型 (e.g., ‘INTRODUCTION’, ‘HONOR’) titleVARCHAR(255)标题 contentLONGTEXT富文本内容 statusTINYINT状态 (1: 发布, 0: 草稿) created_atDATETIME创建时间 -
校区表 (campuses)
字段名 数据类型 主键/索引 描述 idBIGINTPK 唯一标识符 nameVARCHAR(255)校区名称 addressVARCHAR(512)详细地址 phoneVARCHAR(20)联系电话 latitudeDECIMAL(10, 7)纬度 longitudeDECIMAL(10, 7)经度 cover_image_urlVARCHAR(512)封面图 created_atDATETIME创建时间 -
教师表 (teachers)
字段名 数据类型 主键/索引 描述 idBIGINTPK 唯一标识符 admin_idBIGINTUK, FK 关联后台用户ID (可选) nameVARCHAR(100)教师姓名 avatar_urlVARCHAR(512)教师头像 bioTEXT教师简介 statusTINYINT状态 (1: 在职, 0: 离职) created_atDATETIME创建时间
3.2.3 课程与商城模块 (Courses & Products)
-
商品表 (products)
字段名 数据类型 主键/索引 描述 idBIGINTPK 唯一标识符 typeVARCHAR(20)IDX 类型 (‘COURSE’, ‘GOODS’, ‘PACKAGE’) nameVARCHAR(255)商品/课程名称 descriptionTEXT详细描述 cover_image_urlVARCHAR(512)封面图 priceDECIMAL(10, 2)售价 original_priceDECIMAL(10, 2)原价/划线价 statusTINYINT状态 (1: 上架, 0: 下架) stock_quantityINT库存数量 (-1表示无限) created_atDATETIME创建时间 -
班级/课时表 (classes)
字段名 数据类型 主键/索引 描述 idBIGINTPK 唯一标识符 product_idBIGINTFK 关联的课程ID ( products.id)teacher_idBIGINTFK 授课教师ID ( teachers.id)campus_idBIGINTFK 上课校区ID ( campuses.id)nameVARCHAR(255)班级名称 (如:周六上午启蒙班) start_timeDATETIMEIDX 上课开始时间 end_timeDATETIME上课结束时间 capacityINT班级容量 enrolled_countINT已报名人数 (冗余字段,需同步) created_atDATETIME创建时间 -
学员报名表 (student_enrollments)
字段名 数据类型 主键/索引 描述 idBIGINTPK 唯一标识符 student_idBIGINTFK, IDX 学员ID ( students.id)product_idBIGINTFK 报名的课程/套餐ID ( products.id)order_idBIGINTFK 关联的订单ID ( orders.id)contract_idBIGINTFK 关联的合同ID ( contracts.id) (可选)statusTINYINT状态 (1: 在读, 2: 已结课, 0: 已退费) start_dateDATE课程开始日期 end_dateDATE课程结束日期 created_atDATETIME创建时间
3.2.4 教学与互动模块 (Teaching & Interaction)
-
作业发布表 (homework_assignments)
字段名 数据类型 主键/索引 描述 idBIGINTPK 唯一标识符 class_idBIGINTFK 关联的班级ID ( classes.id)teacher_idBIGINTFK 发布教师ID ( teachers.id)titleVARCHAR(255)作业标题 contentTEXT作业内容 due_dateDATETIME截止日期 created_atDATETIME发布时间 -
作业提交表 (homework_submissions)
字段名 数据类型 主键/索引 描述 idBIGINTPK 唯一标识符 assignment_idBIGINTFK 作业ID ( homework_assignments.id)student_idBIGINTFK 提交学员ID ( students.id)contentTEXT文本内容 attachmentsJSON附件列表 (图片/视频URL) statusTINYINT状态 (1: 已提交, 2: 已批改) gradeVARCHAR(50)评分 (如: A+, 优秀) teacher_commentTEXT教师评语 submitted_atDATETIME提交时间 -
考勤记录表 (attendance_records)
字段名 数据类型 主键/索引 描述 idBIGINTPK 唯一标识符 class_idBIGINTFK 班级/课时ID ( classes.id)student_idBIGINTFK, IDX 学员ID ( students.id)check_in_timeDATETIME签到时间 statusTINYINT状态 (1:出勤, 2:迟到, 3:请假, 4:缺勤) notesVARCHAR(512)备注 -
学员请假表 (leave_requests)
字段名 数据类型 主键/索引 描述 idBIGINTPK 唯一标识符 student_idBIGINTFK 学员ID ( students.id)class_idBIGINTFK 申请的课程ID ( classes.id)reasonTEXT请假事由 statusTINYINT状态 (0:待审批, 1:已批准, 2:已驳回) approved_byBIGINTFK 审批人ID ( admin_users.id)created_atDATETIME申请时间 -
学员作品集 (student_portfolio)
字段名 数据类型 主键/索引 描述 idBIGINTPK 唯一标识符 student_idBIGINTFK 学员ID ( students.id)titleVARCHAR(255)作品标题 media_urlVARCHAR(512)媒体文件URL media_typeVARCHAR(20)类型 (‘IMAGE’, ‘VIDEO’) created_atDATETIME上传时间 -
预约试听表 (trial_requests)
字段名 数据类型 主键/索引 描述 idBIGINTPK 唯一标识符 student_nameVARCHAR(100)学员姓名 contact_phoneVARCHAR(20)IDX 联系电话 student_ageINT学员年龄 statusTINYINT状态 (0:待处理, 1:已联系, 2:已完成) notesTEXT管理员备注 created_atDATETIME预约时间
3.2.5 订单与资产模块 (Orders & Assets)
-
订单表 (orders)
字段名 数据类型 主键/索引 描述 idBIGINTPK 唯一标识符 order_snVARCHAR(64)UK 业务订单号 user_idBIGINTFK 下单用户ID ( users.id)total_amountDECIMAL(10, 2)订单总金额 coupon_amountDECIMAL(10, 2)优惠券抵扣金额 pay_amountDECIMAL(10, 2)实际支付金额 statusTINYINTIDX 状态 (0:待支付, 1:已支付, 2:已取消) payment_timeDATETIME支付时间 transaction_idVARCHAR(128)微信支付交易号 created_atDATETIME创建时间 -
订单明细表 (order_items)
字段名 数据类型 主键/索引 描述 idBIGINTPK 唯一标识符 order_idBIGINTFK 订单ID ( orders.id)product_idBIGINTFK 商品ID ( products.id)product_nameVARCHAR(255)商品名称 (快照) priceDECIMAL(10, 2)单价 (快照) quantityINT数量 -
优惠券模板表 (coupon_templates)
字段名 数据类型 主键/索引 描述 idBIGINTPK 唯一标识符 nameVARCHAR(255)优惠券名称 typeTINYINT类型 (1:满减, 2:折扣) valueDECIMAL(10, 2)面值或折扣率 min_spendDECIMAL(10, 2)最低消费门槛 valid_fromDATE有效期开始 valid_toDATE有效期结束 total_quantityINT总发行量 issued_quantityINT已领取数量 -
用户优惠券表 (user_coupons)
字段名 数据类型 主键/索引 描述 idBIGINTPK 唯一标识符 user_idBIGINTFK 用户ID ( users.id)template_idBIGINTFK 优惠券模板ID ( coupon_templates.id)statusTINYINT状态 (0:未使用, 1:已使用, 2:已过期) used_atDATETIME使用时间 order_idBIGINTFK 使用的订单ID ( orders.id)created_atDATETIME领取时间 -
合同表 (contracts)
字段名 数据类型 主键/索引 描述 idBIGINTPK 唯一标识符 contract_snVARCHAR(64)UK 合同编号 user_idBIGINTFK 签署用户ID ( users.id)student_idBIGINTFK 关学员ID ( students.id)titleVARCHAR(255)合同标题 contentLONGTEXT合同内容 (HTML或Markdown) signed_atDATETIME签署时间 created_atDATETIME创建时间
4. 模块化功能详细设计
通用设计
- 用户认证:
- 登录流程: 采用低代码平台自带的登录认证方式。
4.1 首页模块 (FE-001 ~ FE-005)
- 接口:
GET /api/v1/home/banners: 获取轮播图列表。GET /api/v1/home/summary: 聚合获取首页所需内容(机构介绍、师资、作品、校区等)。POST /api/v1/trial/apply: 提交预约试听表单。
- 后端逻辑: 主要为数据查询,查询
banners,articles,teachers,campuses等表。预约试听则是在trial_requests表中插入新记录。
4.2 商城模块 (FE-006 ~ FE-007)
- 接口:
GET /api/v1/products: 根据类型、关键词分页获取商品列表。POST /api/v1/cart/add: 添加商品到购物车(逻辑在Redis或数据库中实现)。POST /api/v1/orders: 创建订单,写入orders和order_items表,并调用微信支付API生成预支付订单。POST /api/v1/payment/notify: 接收微信支付回调,更新orders表状态。
- 后端逻辑: 涉及
products表的查询,以及orders,order_items表的事务性写入。
4.3 服务模块 (FE-008 ~ FE-010)
- 接口:
GET /api/v1/students/{student_id}/schedule?month=YYYY-MM: 获取学员月度课表。GET /api/v1/students/{student_id}/enrollments?status=1: 获取学员报读课程。POST /api/v1/homework/submit: 提交作业。POST /api/v1/leave/apply: 提交请假申请。
- 后端逻辑: 课表查询需要联结
student_enrollments和classes表。提交作业涉及文件上传至OSS,并在homework_submissions表记录信息。
4.4 我的模块 (FE-011 ~ FE-013)
- 接口:
GET /api/v1/user/profile: 获取当前用户信息及其管理的学员列表。GET /api/v1/user/coupons: 获取我的优惠券。GET /api/v1/user/contracts: 获取我的合同。
- 后端逻辑: 主要根据用户ID查询
users,students,user_coupons,contracts等关联表。
5. 非功能需求设计
- 5.1 性能要求
- 页面加载: 小程序分包加载,图片CDN,骨架屏。数据库查询建立合理索引。
- 并发支持: 采用套餐的默认并发支持
- 5.2 可用性
- UI/UX: 遵循微信官方设计指南,交互流程扁平化。
- 兼容性: 使用微信开发者工具的多设备模拟器测试,发布前在主流iOS和Android真机上进行测试。
- 5.3 安全性
- 数据传输: 全站强制使用HTTPS。
- 用户认证: 采用平台自带的登录验证机制,设置合理的过期时间。
- 数据安全: 后端对所有用户输入进行严格校验,防止SQL注入。敏感信息加密存储。
- 5.4 可扩展性
- 架构: 后端模块化设计,新功能可作为新服务独立开发。
- 接口设计: 遵循RESTful风格,接口进行版本管理(如 /api/v1/)。
6. 后台管理系统设计
后台管理系统通过调用为管理员设计的API来操作数据,并基于角色进行权限控制。
- 6.1 内容管理: 提供对
banners,articles,campuses,teachers等表的CRUD操作界面。 - 6.2 课程与学员管理:
- 课程: 管理
products表,并为课程类型的商品提供排课功能,操作classes表。 - 学员: 管理
students表,并能为其创建student_enrollments记录(后台报名)。 - 作业: 教师角色可创建
homework_assignments,并查看和批改homework_submissions。
- 课程: 管理
- 6.3 订单与数据统计: 查看
orders列表。提供数据看板,通过聚合查询分析用户、销售、出勤等关键数据。
