哈尔滨美食地图

This commit is contained in:
2026-01-15 11:37:22 +08:00
commit 7817cb6ea4
84 changed files with 10258 additions and 0 deletions

145
后端设计文档.md Normal file
View File

@@ -0,0 +1,145 @@
# 🥟 哈尔滨美食地图 · 第一阶段
## **管理后台系统Admin Panel详细设计文档**
> 技术栈Go (Gin) + PostgreSQL + Vue3 + Element Plus
> 目标:为后续 Web 网站和抖音小程序提供数据支撑的**高可用、易维护的管理后台**
------
## 一、项目目标
构建一个**独立的 Web 管理后台**,供运营人员或管理员:
- 录入/编辑/删除哈尔滨本地美食店铺
- 管理分类、招牌菜、用户评论(审核)
- 查看数据统计与排行榜预览
- 支持图片上传与地理位置标注
该后台将作为整个美食地图项目的**唯一数据入口**。
------
## 二、整体架构
```
┌──────────────────────┐
│ Admin Frontend │ ← Vue3 + Element Plus (SPA)
└──────────┬───────────┘
│ HTTP / JSON
┌──────────▼───────────┐
│ Go Backend (Gin) │ ← RESTful API + JWT Auth
└──────────┬───────────┘
┌──────────▼───────────┐
│ Mysql │ ← 存储店铺、分类、评论等
└──────────┬───────────┘
┌──────────▼───────────┐
│ redis │ ← 缓存
└──────────┬───────────┘
┌──────────▼───────────┐
│ 阿里云 OSS / 本地存储 │ ← 图片文件存储
└──────────────────────┘
```
------
## 三、核心功能模块(管理后台)
### 1. **管理员登录 / 权限控制**
- 账号密码登录(支持初始超级管理员)
- JWT Token 认证
- 后续可扩展角色权限(当前 MVP 只需“管理员”角色)
### 2. **美食分类管理**
- 新增/编辑/删除分类(如:东北菜、俄餐、烧烤、小吃)
- 分类图标(可选)
- 排序权重(用于前端展示顺序)
### 3. **店铺管理(核心)**
- 创建新店铺:
- 店铺名称(必填)
- 所属分类(单选)
- 地址(文本 + 自动解析经纬度 via 高德 API
- 手动调整经纬度(地图选点组件)
- 营业时间、电话(可选)
- 封面图 + 多图上传最多6张
- 必点招牌菜(可添加多个,带名称+描述+图片)
- 编辑/下架/删除店铺
- 批量导入CSV 模板下载 + 上传解析MVP 可暂缓)
### 4. **评论管理**
- 列表展示所有用户评论(含评分、内容、图片)
- 支持审核状态:通过 / 屏蔽
- 可删除恶意评论
- 按店铺筛选
### 5. **数据概览Dashboard**
- 总店铺数、总评论数、分类分布饼图
- 最近7天新增店铺趋势
- 高评分店铺 Top5 预览
### 6. **系统设置(可选)**
- OSS 配置AccessKey、Bucket
- 高德地图 Key 配置(用于地址转经纬度)
------
## 四、技术选型详情
| 模块 | 技术 | 说明 |
| --------- | ----------------------------------------------- | ----------------------------------------------- |
| 后端语言 | Go 1.22+ | 高性能、编译快、并发好 |
| Web 框架 | [Gin](https://gin-gonic.com/) | 轻量、路由清晰、中间件丰富 |
| 数据库 | mysql:8.0 | 支持 JSON、数组、地理扩展未来可升级 PostGIS |
| ORM | [GORM](https://gorm.io/) | Go 最流行 ORM支持关联、事务、软删除 |
| 认证 | JWT + Bcrypt | 密码加密 + Token 验证 |
| 文件存储 | 阿里云 OSS生产 / 本地 static/upload开发 | 图片统一 CDN 加速 |
| 前端框架 | Vue 3 + Vite + TypeScript | 响应式、组件化 |
| UI 组件库 | [Element Plus](https://element-plus.org/) | 企业级后台 UI开箱即用 |
| 地图组件 | 高德地图 JS APIWeb 端选点) | 用于手动标注店铺位置 |
| 构建部署 | Docker + Nginx | |
## 五、设置添加前端调用apikey,做好加密防止别人随意调用接口内容。
## 六、补充不足,完善数据库表,api接口等。
## 七、数据库链接信息
根据docker-compose.yml信息进行链接,告诉我配置文件位置,后期可以自行修改
```yml
mysql:
image: swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/wechatpadpro/mysql:8.0
container_name: mysql-db
environment:
MYSQL_ROOT_PASSWORD: root123456
MYSQL_DATABASE: mydb
MYSQL_USER: user
MYSQL_PASSWORD: password123
ports:
- "3309:3306"
volumes:
- mysql_data:/var/lib/mysql
networks:
- app-network
redis:
image: swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/redis:7.0.8
container_name: redis-cache
ports:
- "6381:6379"
lumes:
- redis_data:/data
tworks:
- app-network
```