# 后端开发规划 ## 一、技术选型 | 项目 | 技术方案 | 说明 | |------|----------|------| | 框架 | Node.js + Express / Koa | 或 Python FastAPI / Java Spring Boot | | 数据库 | MySQL / PostgreSQL | 关系型数据库存储业务数据 | | 缓存 | Redis | 缓存热点数据、会话管理 | | 文件存储 | 阿里云OSS / 腾讯云COS | 图片、文件存储 | | 认证 | JWT + 微信登录 | 用户身份认证 | ## 二、数据库设计 ### 2.1 用户表 (users) ```sql 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) ```sql 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) ```sql 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) ```sql 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) ```sql 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) ```sql 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) ```sql 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),我将为你生成完整的后端代码。