Files
ShaFaFanXin/前端/docs/backend-plan.md
2026-01-27 18:06:04 +08:00

12 KiB
Raw Blame History

后端开发规划

一、技术选型

项目 技术方案 说明
框架 Node.js + Express / Koa 或 Python FastAPI / Java Spring Boot
数据库 MySQL / PostgreSQL 关系型数据库存储业务数据
缓存 Redis 缓存热点数据、会话管理
文件存储 阿里云OSS / 腾讯云COS 图片、文件存储
认证 JWT + 微信登录 用户身份认证

二、数据库设计

2.1 用户表 (users)

CREATE TABLE users (
    id BIGINT PRIMARY KEY AUTO_INCREMENT,
    open_id VARCHAR(64) UNIQUE NOT NULL COMMENT '微信openid',
    union_id VARCHAR(64) COMMENT '微信unionid',
    nick_name VARCHAR(64) COMMENT '昵称',
    avatar VARCHAR(255) COMMENT '头像URL',
    phone VARCHAR(20) COMMENT '手机号',
    gender TINYINT DEFAULT 0 COMMENT '性别 0未知 1男 2女',
    status TINYINT DEFAULT 1 COMMENT '状态 0禁用 1正常',
    created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
    updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    INDEX idx_open_id (open_id),
    INDEX idx_phone (phone)
);

2.2 案例分类表 (categories)

CREATE TABLE categories (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(32) NOT NULL COMMENT '分类名称',
    code VARCHAR(32) UNIQUE NOT NULL COMMENT '分类编码',
    icon VARCHAR(255) COMMENT '图标URL',
    sort_order INT DEFAULT 0 COMMENT '排序',
    status TINYINT DEFAULT 1 COMMENT '状态 0禁用 1正常',
    created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);

-- 初始数据
INSERT INTO categories (name, code, sort_order) VALUES 
('皮沙发', 'leather', 1),
('布艺沙发', 'fabric', 2),
('功能沙发', 'functional', 3),
('古典沙发', 'antique', 4),
('办公沙发', 'office', 5);

2.3 案例表 (cases)

CREATE TABLE cases (
    id BIGINT PRIMARY KEY AUTO_INCREMENT,
    title VARCHAR(128) NOT NULL COMMENT '案例标题',
    category_id INT NOT NULL COMMENT '分类ID',
    cover_image VARCHAR(255) NOT NULL COMMENT '封面图',
    before_images JSON COMMENT '翻新前图片JSON数组',
    after_images JSON COMMENT '翻新后图片JSON数组',
    description TEXT COMMENT '案例描述',
    material VARCHAR(128) COMMENT '使用材质',
    duration VARCHAR(32) COMMENT '工期',
    price VARCHAR(32) COMMENT '参考价格',
    views INT DEFAULT 0 COMMENT '浏览量',
    likes INT DEFAULT 0 COMMENT '点赞数',
    is_hot TINYINT DEFAULT 0 COMMENT '是否热门 0否 1是',
    is_recommend TINYINT DEFAULT 0 COMMENT '是否推荐 0否 1是',
    status TINYINT DEFAULT 1 COMMENT '状态 0下架 1上架',
    created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
    updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    INDEX idx_category (category_id),
    INDEX idx_status (status),
    INDEX idx_hot (is_hot),
    INDEX idx_created (created_at)
);

2.4 预约表 (bookings)

CREATE TABLE bookings (
    id BIGINT PRIMARY KEY AUTO_INCREMENT,
    booking_no VARCHAR(32) UNIQUE NOT NULL COMMENT '预约编号',
    user_id BIGINT COMMENT '用户ID',
    user_name VARCHAR(32) NOT NULL COMMENT '客户姓名',
    phone VARCHAR(20) NOT NULL COMMENT '联系电话',
    address VARCHAR(255) NOT NULL COMMENT '地址',
    sofa_type VARCHAR(32) COMMENT '沙发类型',
    problem TEXT COMMENT '问题描述',
    images JSON COMMENT '上传图片JSON数组',
    status TINYINT DEFAULT 0 COMMENT '状态 0待确认 1已确认 2已上门 3已完成 4已取消',
    remark TEXT COMMENT '备注',
    assigned_to BIGINT COMMENT '指派给(员工ID)',
    visited_at DATETIME COMMENT '上门时间',
    completed_at DATETIME COMMENT '完成时间',
    created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
    updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    INDEX idx_user (user_id),
    INDEX idx_phone (phone),
    INDEX idx_status (status),
    INDEX idx_created (created_at)
);

2.5 收藏表 (favorites)

CREATE TABLE favorites (
    id BIGINT PRIMARY KEY AUTO_INCREMENT,
    user_id BIGINT NOT NULL COMMENT '用户ID',
    case_id BIGINT NOT NULL COMMENT '案例ID',
    created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
    UNIQUE KEY uk_user_case (user_id, case_id),
    INDEX idx_user (user_id)
);

2.6 轮播图表 (banners)

CREATE TABLE banners (
    id INT PRIMARY KEY AUTO_INCREMENT,
    title VARCHAR(64) COMMENT '标题',
    image VARCHAR(255) NOT NULL COMMENT '图片URL',
    link VARCHAR(255) COMMENT '跳转链接',
    sort_order INT DEFAULT 0 COMMENT '排序',
    status TINYINT DEFAULT 1 COMMENT '状态 0禁用 1正常',
    start_time DATETIME COMMENT '开始时间',
    end_time DATETIME COMMENT '结束时间',
    created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);

2.7 系统配置表 (settings)

CREATE TABLE settings (
    id INT PRIMARY KEY AUTO_INCREMENT,
    setting_key VARCHAR(64) UNIQUE NOT NULL COMMENT '配置键',
    setting_value TEXT COMMENT '配置值',
    description VARCHAR(255) COMMENT '说明',
    updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);

-- 初始配置
INSERT INTO settings (setting_key, setting_value, description) VALUES 
('company_name', '优艺家沙发翻新', '公司名称'),
('company_slogan', '让旧沙发焕发新生', '公司标语'),
('company_description', '优艺家是一家专业从事沙发翻新、维修、改色的服务公司...', '公司介绍'),
('contact_phone', '400-888-8888', '客服电话'),
('contact_wechat', 'youyijia2026', '微信号'),
('company_address', '上海市浦东新区张江高科技园区', '公司地址'),
('work_time', '周一至周日 9:00-18:00', '营业时间');

三、API接口设计

3.1 公共接口

接口 方法 说明 认证
POST /api/auth/wxlogin POST 微信登录
GET /api/banners GET 获取轮播图
GET /api/categories GET 获取分类列表
GET /api/company/info GET 获取公司信息
GET /api/service/process GET 获取服务流程

3.2 案例接口

接口 方法 说明 认证
GET /api/cases GET 获取案例列表
GET /api/cases/hot GET 获取热门案例
GET /api/cases/:id GET 获取案例详情
POST /api/cases/:id/view POST 增加浏览量
POST /api/cases/:id/like POST 点赞

3.3 用户接口

接口 方法 说明 认证
GET /api/user/info GET 获取用户信息
PUT /api/user/info PUT 更新用户信息
GET /api/user/favorites GET 获取收藏列表
POST /api/user/favorites POST 添加收藏
DELETE /api/user/favorites/:caseId DELETE 取消收藏

3.4 预约接口

接口 方法 说明 认证
POST /api/booking POST 提交预约
GET /api/user/bookings GET 获取我的预约
GET /api/user/bookings/:id GET 获取预约详情
PUT /api/user/bookings/:id/cancel PUT 取消预约

3.5 文件接口

接口 方法 说明 认证
POST /api/upload/image POST 上传图片

四、接口详细定义

4.1 微信登录

POST /api/auth/wxlogin

Request:
{
    "code": "微信登录code",
    "userInfo": {
        "nickName": "昵称",
        "avatarUrl": "头像"
    }
}

Response:
{
    "code": 0,
    "message": "success",
    "data": {
        "token": "jwt_token_xxx",
        "userInfo": {
            "id": "1",
            "nickName": "昵称",
            "avatar": "头像URL",
            "phone": ""
        }
    }
}

4.2 获取案例列表

GET /api/cases?category=leather&page=1&pageSize=10&keyword=

Request Params:
- category: 分类code可选
- page: 页码默认1
- pageSize: 每页数量默认10
- keyword: 搜索关键词,可选

Response:
{
    "code": 0,
    "message": "success",
    "data": {
        "list": [
            {
                "id": "1",
                "title": "欧式真皮沙发翻新",
                "category": "leather",
                "categoryName": "皮沙发",
                "coverImage": "https://xxx/cover.jpg",
                "material": "进口头层牛皮",
                "duration": "7天",
                "price": "¥3800",
                "views": 1256,
                "likes": 89,
                "createTime": "2026-01-15"
            }
        ],
        "total": 100,
        "page": 1,
        "pageSize": 10
    }
}

4.3 获取案例详情

GET /api/cases/:id

Response:
{
    "code": 0,
    "message": "success",
    "data": {
        "id": "1",
        "title": "欧式真皮沙发翻新",
        "category": "leather",
        "categoryName": "皮沙发",
        "beforeImages": ["https://xxx/before1.jpg"],
        "afterImages": ["https://xxx/after1.jpg"],
        "description": "案例描述...",
        "material": "进口头层牛皮",
        "duration": "7天",
        "price": "¥3800",
        "views": 1256,
        "likes": 89,
        "createTime": "2026-01-15",
        "isFavorite": false
    }
}

4.4 提交预约

POST /api/booking

Request:
{
    "userName": "张三",
    "phone": "13800138000",
    "address": "上海市浦东新区xxx",
    "sofaType": "leather",
    "problem": "皮面开裂、褪色",
    "images": ["https://xxx/1.jpg", "https://xxx/2.jpg"]
}

Response:
{
    "code": 0,
    "message": "success",
    "data": {
        "bookingId": "BK20260126001",
        "status": "pending",
        "message": "预约成功,我们会尽快与您联系"
    }
}

五、管理后台功能

5.1 功能模块

模块 功能
仪表盘 数据概览、预约统计、案例统计
案例管理 案例列表、新增/编辑/删除、上下架
分类管理 分类列表、新增/编辑/删除
预约管理 预约列表、状态更新、指派处理
用户管理 用户列表、状态管理
轮播图管理 轮播图列表、新增/编辑/删除
系统设置 公司信息、联系方式、服务流程

5.2 角色权限

角色 权限
超级管理员 所有权限
运营人员 案例管理、轮播图、系统设置
客服人员 预约管理、用户管理

六、部署架构

                    ┌─────────────┐
                    │   Nginx     │
                    │  (反向代理)  │
                    └──────┬──────┘
                           │
           ┌───────────────┼───────────────┐
           │               │               │
    ┌──────▼──────┐ ┌──────▼──────┐ ┌──────▼──────┐
    │  小程序API   │ │  管理后台   │ │  静态资源   │
    │   Server    │ │   Server   │ │    CDN     │
    └──────┬──────┘ └──────┬──────┘ └─────────────┘
           │               │
           └───────┬───────┘
                   │
           ┌───────▼───────┐
           │    MySQL      │
           │    Redis      │
           └───────────────┘

七、开发计划

阶段 时间 任务
第一阶段 3天 数据库设计、项目搭建、基础接口
第二阶段 3天 案例模块、分类模块、轮播图
第三阶段 2天 用户模块、微信登录、收藏功能
第四阶段 2天 预约模块、文件上传
第五阶段 3天 管理后台开发
第六阶段 2天 联调测试、部署上线

总计约15个工作日


准备好开始后端开发时告诉我你选择的技术栈Node.js/Python/Java我将为你生成完整的后端代码。