创之星花店
创之星花店是一个前后端分离、多端共用的鲜花电商演示项目。项目以 Spring Boot REST API 为核心,包含顾客 H5、管理后台、微信小程序和 Flutter 客户端,覆盖从浏览花礼、加入购物车、下单支付到后台履约和在线咨询的完整业务流程。
项目首次启动时会自动初始化门店信息、12 款花礼、送花场景、首页轮播、会员、收花地址、示例订单、定制需求和咨询会话,可直接用于功能演示与联调。
项目结构
| 目录 | 说明 | 默认地址 |
|---|---|---|
springboot-flower-shop |
Spring Boot 后端服务与业务 API | http://127.0.0.1:8080 |
flower-shop-h5 |
Vue 3 顾客端 H5 | http://localhost:5173 |
flower-shop-web-manager |
Vue 3 + Element Plus 管理后台 | http://localhost:5174 |
flower-shop-wechat |
TypeScript 微信原生小程序 | 微信开发者工具 |
flower-shop-namager-h5 |
Vue 3 门店老板端 H5 | Vite 开发服务器 |
flower-shop-manager-wechat |
Vue 3 + Vite 门店端微信小程序 | 微信开发者工具 |
flower-shop-app |
Flutter 移动客户端 | Android / iOS |
主要功能
顾客端
- 首页轮播、门店信息、配送说明和搜索热词
- 按送花场景或价格区间筛选花礼
- 花礼搜索、详情、图集、规格选择和加购
- 购物车数量修改、删除和批量结算
- 收花地址新增、编辑、删除及默认地址
- 确认订单、配送日期与时段、贺卡留言、匿名送花
- 模拟支付、取消订单、确认收货和订单状态跟踪
- 特殊定制需求提交与进度查询
- 在线咨询与历史消息查看
- 手机验证码登录、会员信息和退出登录
管理后台
- 管理员登录与 Bearer Token 鉴权
- 经营数据概览、订单状态分布和最近订单
- 订单筛选、分页、详情、发货、完成和取消
- 花礼新增、编辑、删除、上下架、推荐、图集和多规格价格
- 定制需求筛选、跟进、状态更新和内部备注
- 首页轮播和送花场景管理
- 在线咨询会话查看与回复
- 会员列表和增长概览
- 门店资料、配送费、配送时段、营业时间和搜索热词设置
- 图片上传与静态资源访问
技术栈
| 模块 | 技术 |
|---|---|
| 后端 | Java 21、Spring Boot 3.4、Spring MVC、Spring Data JPA、Bean Validation、MySQL、Maven |
| 顾客 H5 | Vue 3、TypeScript、Vite、Pinia、Vue Router、Vant |
| 管理后台 | Vue 3、TypeScript、Vite、Pinia、Vue Router、Element Plus、ECharts、Axios |
| 微信小程序 | 微信原生小程序、TypeScript |
| Flutter App | Flutter、Dart、Dio、Provider、GoRouter、SharedPreferences |
| 数据存储 | MySQL 8,数据库名 flower_shop |
环境要求
- JDK 21
- Maven 3.9+
- MySQL 8+
- Node.js 20.19+ 或 22.12+
- npm 10+
- 微信开发者工具(运行小程序)
- Flutter SDK 与对应的 Android / iOS 开发环境(运行 App)
本地运行
1. 启动 MySQL
后端默认连接本机 MySQL:
text
地址:127.0.0.1:3306
数据库:flower_shop
用户名:root
密码:12345678
首次运行可先创建数据库:
bash
mysql -uroot -p12345678 -h127.0.0.1 \
-e "CREATE DATABASE IF NOT EXISTS flower_shop DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
数据库连接配置位于 springboot-flower-shop/src/main/resources/application.yml,可按本机环境修改。
2. 启动后端
bash
cd springboot-flower-shop
mvn spring-boot:run
服务启动后可访问:
bash
curl http://127.0.0.1:8080/api/home
JPA 的 ddl-auto 为 update,首次启动会自动建表并写入演示数据。
3. 启动顾客 H5
bash
cd flower-shop-h5
npm install
npm run dev
访问 http://localhost:5173。开发服务器会将 /api 和 /uploads 代理到后端 8080 端口。
4. 启动管理后台
bash
cd flower-shop-web-manager
npm install
npm run dev
访问 http://localhost:5174。开发服务器会将 /api、/images 和 /uploads 代理到后端 8080 端口。
5. 运行门店端微信小程序
门店端对接管理接口 /api/admin/**,演示账号 admin / admin123。
bash
cd flower-shop-manager-wechat
npm install
npm run dev:mp-weixin
用微信开发者工具导入 flower-shop-manager-wechat/dist/dev/mp-weixin,并关闭合法域名校验。真机调试时把 src/config.ts 中的接口地址改为电脑局域网 IP。
6. 运行顾客微信小程序
- 启动后端并确认
http://127.0.0.1:8080可访问。 - 使用微信开发者工具导入
flower-shop-wechat目录。 - 确认开发者工具已关闭合法域名校验。
- 真机调试时,将
flower-shop-wechat/utils/config.ts中的API_BASE改为电脑局域网 IP。
7. 运行 Flutter App
bash
cd flower-shop-app
flutter pub get
flutter run
默认接口地址:
- Android 模拟器:
http://10.0.2.2:8080 - iOS 模拟器:
http://127.0.0.1:8080
真机或自定义环境可通过参数覆盖:
bash
flutter run --dart-define=API_BASE=http://192.168.1.8:8080
测试账号
| 角色 | 账号 | 密码 / 验证码 | 使用位置 |
|---|---|---|---|
| 后台管理员 | admin |
admin123 |
管理后台 |
| 预置会员 | 13800138000 |
短信验证码 123456 |
H5、小程序、Flutter |
| 新顾客 | 任意合法 11 位手机号 | 短信验证码 123456 |
H5、小程序、Flutter |
顾客首次使用新手机号登录时会自动创建会员。预置会员"林小姐"带有默认收花地址、两笔示例订单、一条定制需求和一段咨询记录。
常用示例数据:
| 类型 | 数据 |
|---|---|
| 配送中订单 | FS202609250001 |
| 已完成订单 | FS202609180002 |
| 店铺电话 | 400-820-5200 |
配置说明
后端
springboot-flower-shop/src/main/resources/application.yml 包含:
- 服务端口:
8080 - MySQL 连接信息
- 演示短信验证码:
flower.sms-code - 上传文件目录:
flower.upload-dir
上传文件默认保存在后端运行目录下的 uploads/,并通过 /uploads/** 对外访问。
前端接口地址
- H5:设置
VITE_API_BASE,例如VITE_API_BASE=http://127.0.0.1:8080 - 管理后台:设置
VITE_API_BASE - 微信小程序:修改
flower-shop-wechat/utils/config.ts中的API_BASE - Flutter:使用
--dart-define=API_BASE=...
本地开发使用 Vite 代理或默认本机地址时,通常无需额外配置。
构建与检查
后端
bash
cd springboot-flower-shop
mvn test
mvn clean package
顾客 H5
bash
cd flower-shop-h5
npm run typecheck
npm run build
管理后台
bash
cd flower-shop-web-manager
npm run typecheck
npm run build
微信小程序
bash
cd flower-shop-wechat
npm install
npm run typecheck
Flutter App
bash
cd flower-shop-app
flutter analyze
flutter build apk
主要 API
后端统一返回:
json
{
"code": 200,
"message": "success",
"data": {}
}
顾客端常用接口:
GET /api/home、GET /api/store、GET /api/scenesGET /api/products、GET /api/products/{id}POST /api/auth/sms、POST /api/auth/login、GET /api/auth/meGET|POST|PUT|DELETE /api/addressesGET|POST|PUT|DELETE /api/cartGET|POST /api/orders、POST /api/orders/{id}/pay|cancel|confirmGET|POST /api/custom-requestsGET /api/chat/session、POST /api/chat/messages
管理端接口统一位于 /api/admin/**,登录接口为 POST /api/admin/login。除登录外,请求需携带:
http
Authorization: Bearer <token>
说明
当前项目定位为演示和开发样板,验证码、固定管理密码和本地 MySQL 凭据均为演示配置。用于生产环境前,应替换为真实短信服务、安全的密钥管理、密码哈希方案、文件存储与 HTTPS 部署。