Files
0451meishi/后端设计文档.md
2026-01-15 11:37:22 +08:00

146 lines
5.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 🥟 哈尔滨美食地图 · 第一阶段
## **管理后台系统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
```