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

5.4 KiB
Raw Permalink Blame History

🥟 哈尔滨美食地图 · 第一阶段

管理后台系统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 轻量、路由清晰、中间件丰富
数据库 mysql:8.0 支持 JSON、数组、地理扩展未来可升级 PostGIS
ORM GORM Go 最流行 ORM支持关联、事务、软删除
认证 JWT + Bcrypt 密码加密 + Token 验证
文件存储 阿里云 OSS生产 / 本地 static/upload开发 图片统一 CDN 加速
前端框架 Vue 3 + Vite + TypeScript 响应式、组件化
UI 组件库 Element Plus 企业级后台 UI开箱即用
地图组件 高德地图 JS APIWeb 端选点) 用于手动标注店铺位置
构建部署 Docker + Nginx

五、设置添加前端调用apikey,做好加密防止别人随意调用接口内容。

六、补充不足,完善数据库表,api接口等。

七、数据库链接信息

根据docker-compose.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