结伴客Java微服务系统数据库设计文档
1. 数据库概览
1.1 数据库配置
开发环境
- 主机: localhost
- 端口: 3306
- 用户名: root
- 密码: root
- 数据库: jiebanke
测试环境
- 主机: 192.168.0.240
- 端口: 3306
- 用户名: root
- 密码: aiot$Aiot123
- 数据库: jiebandata_test
生产环境
- 主机: 129.211.213.226
- 端口: 9527
- 用户名: root
- 密码: aiotAiot123!
- 数据库: jiebandata
1.2 ER图
2. 核心表结构设计
2.1 用户表 (users)
| 字段名 |
类型 |
约束 |
描述 |
| id |
BIGINT |
PRIMARY KEY, AUTO_INCREMENT |
用户ID |
| username |
VARCHAR(50) |
UNIQUE, NOT NULL |
用户名 |
| password |
VARCHAR(255) |
NOT NULL |
密码(bcrypt加密) |
| email |
VARCHAR(100) |
UNIQUE |
邮箱地址 |
| phone |
VARCHAR(20) |
UNIQUE |
手机号码 |
| real_name |
VARCHAR(100) |
|
真实姓名 |
| id_card |
VARCHAR(20) |
UNIQUE |
身份证号 |
| status |
VARCHAR(20) |
DEFAULT 'active' |
状态(active/inactive) |
| balance |
DECIMAL(15,2) |
DEFAULT 0.00 |
账户余额 |
| credit_score |
INT |
DEFAULT 100 |
信用分 |
| last_login |
TIMESTAMP |
|
最后登录时间 |
| created_at |
TIMESTAMP |
DEFAULT CURRENT_TIMESTAMP |
创建时间 |
| updated_at |
TIMESTAMP |
DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP |
更新时间 |
2.2 管理员表 (admins)
| 字段名 |
类型 |
约束 |
描述 |
| id |
BIGINT |
PRIMARY KEY, AUTO_INCREMENT |
管理员ID |
| username |
VARCHAR(50) |
UNIQUE, NOT NULL |
管理员用户名 |
| password |
VARCHAR(255) |
NOT NULL |
密码(bcrypt加密) |
| email |
VARCHAR(100) |
UNIQUE |
邮箱地址 |
| role |
VARCHAR(20) |
DEFAULT 'admin' |
角色(super_admin/admin/operator) |
| status |
VARCHAR(20) |
DEFAULT 'active' |
状态(active/inactive) |
| last_login |
TIMESTAMP |
|
最后登录时间 |
| created_at |
TIMESTAMP |
DEFAULT CURRENT_TIMESTAMP |
创建时间 |
| updated_at |
TIMESTAMP |
DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP |
更新时间 |
2.3 商家表 (merchants)
| 字段名 |
类型 |
约束 |
描述 |
| id |
BIGINT |
PRIMARY KEY, AUTO_INCREMENT |
商家ID |
| user_id |
BIGINT |
FOREIGN KEY, NOT NULL |
关联的用户ID |
| merchant_type |
VARCHAR(50) |
NOT NULL |
商家类型(flower_shop/activity_organizer/farm_owner) |
| business_name |
VARCHAR(100) |
NOT NULL |
商家名称 |
| business_license |
VARCHAR(255) |
|
营业执照图片URL |
| contact_person |
VARCHAR(50) |
NOT NULL |
联系人 |
| contact_phone |
VARCHAR(20) |
NOT NULL |
联系电话 |
| address |
VARCHAR(255) |
|
地址 |
| description |
TEXT |
|
商家介绍 |
| status |
VARCHAR(20) |
DEFAULT 'pending' |
商家状态(pending/approved/rejected/suspended) |
| created_at |
TIMESTAMP |
DEFAULT CURRENT_TIMESTAMP |
创建时间 |
| updated_at |
TIMESTAMP |
DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP |
更新时间 |
2.4 订单表 (orders)
| 字段名 |
类型 |
约束 |
描述 |
| id |
BIGINT |
PRIMARY KEY, AUTO_INCREMENT |
订单ID |
| user_id |
BIGINT |
FOREIGN KEY, NOT NULL |
用户ID |
| merchant_id |
BIGINT |
FOREIGN KEY, NOT NULL |
商家ID |
| order_number |
VARCHAR(50) |
UNIQUE, NOT NULL |
订单编号 |
| total_amount |
DECIMAL(15,2) |
NOT NULL |
订单总金额 |
| status |
VARCHAR(20) |
DEFAULT 'pending' |
订单状态(pending/paid/shipped/completed/cancelled) |
| delivery_address |
VARCHAR(255) |
|
配送地址 |
| ordered_at |
TIMESTAMP |
DEFAULT CURRENT_TIMESTAMP |
下单时间 |
| completed_at |
TIMESTAMP |
|
完成时间 |
| created_at |
TIMESTAMP |
DEFAULT CURRENT_TIMESTAMP |
创建时间 |
| updated_at |
TIMESTAMP |
DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP |
更新时间 |
2.5 商品表 (products)
| 字段名 |
类型 |
约束 |
描述 |
| id |
BIGINT |
PRIMARY KEY, AUTO_INCREMENT |
商品ID |
| merchant_id |
BIGINT |
FOREIGN KEY, NOT NULL |
商家ID |
| name |
VARCHAR(100) |
NOT NULL |
商品名称 |
| description |
TEXT |
|
商品描述 |
| price |
DECIMAL(10,2) |
NOT NULL |
商品价格 |
| image_url |
VARCHAR(255) |
|
商品图片URL |
| category |
VARCHAR(50) |
NOT NULL |
商品分类 |
| status |
VARCHAR(20) |
DEFAULT 'active' |
商品状态(active/inactive/deleted) |
| created_at |
TIMESTAMP |
DEFAULT CURRENT_TIMESTAMP |
创建时间 |
| updated_at |
TIMESTAMP |
DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP |
更新时间 |
2.6 动物表 (animals)
| 字段名 |
类型 |
约束 |
描述 |
| id |
BIGINT |
PRIMARY KEY, AUTO_INCREMENT |
动物ID |
| merchant_id |
BIGINT |
FOREIGN KEY, NOT NULL |
关联的农场商家ID |
| name |
VARCHAR(50) |
NOT NULL |
动物名称 |
| species |
VARCHAR(50) |
NOT NULL |
动物种类 |
| breed |
VARCHAR(50) |
|
品种 |
| birth_date |
DATE |
|
出生日期 |
| personality |
TEXT |
|
性格特点 |
| farm_location |
VARCHAR(255) |
|
农场位置 |
| images |
JSON |
|
动物图片列表 |
| price |
DECIMAL(10,2) |
NOT NULL |
认领价格 |
| claim_count |
INT |
DEFAULT 0 |
认领次数 |
| status |
VARCHAR(20) |
DEFAULT 'available' |
状态(available/claimed/unavailable) |
| created_at |
TIMESTAMP |
DEFAULT CURRENT_TIMESTAMP |
创建时间 |
| updated_at |
TIMESTAMP |
DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP |
更新时间 |
2.7 动物认领表 (animal_claims)
| 字段名 |
类型 |
约束 |
描述 |
| id |
BIGINT |
PRIMARY KEY, AUTO_INCREMENT |
认领ID |
| user_id |
BIGINT |
FOREIGN KEY, NOT NULL |
用户ID |
| animal_id |
BIGINT |
FOREIGN KEY, NOT NULL |
动物ID |
| price_paid |
DECIMAL(10,2) |
NOT NULL |
支付金额 |
| agreement_url |
VARCHAR(255) |
|
电子协议URL |
| status |
VARCHAR(20) |
DEFAULT 'active' |
认领状态(active/ended/cancelled) |
| claimed_at |
TIMESTAMP |
DEFAULT CURRENT_TIMESTAMP |
认领时间 |
| ended_at |
TIMESTAMP |
|
结束时间 |
| created_at |
TIMESTAMP |
DEFAULT CURRENT_TIMESTAMP |
创建时间 |
| updated_at |
TIMESTAMP |
DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP |
更新时间 |
2.8 送花商品表 (flower_products)
| 字段名 |
类型 |
约束 |
描述 |
| id |
BIGINT |
PRIMARY KEY, AUTO_INCREMENT |
商品ID |
| merchant_id |
BIGINT |
FOREIGN KEY, NOT NULL |
商家ID |
| name |
VARCHAR(100) |
NOT NULL |
商品名称 |
| description |
TEXT |
|
商品描述 |
| price |
DECIMAL(10,2) |
NOT NULL |
商品价格 |
| original_price |
DECIMAL(10,2) |
|
原价 |
| images |
JSON |
|
商品图片列表 |
| category |
VARCHAR(50) |
NOT NULL |
商品分类 |
| sales_count |
INT |
DEFAULT 0 |
销售数量 |
| rating |
DECIMAL(3,2) |
DEFAULT 0 |
评分 |
| status |
VARCHAR(20) |
DEFAULT 'active' |
商品状态(active/inactive/deleted) |
| created_at |
TIMESTAMP |
DEFAULT CURRENT_TIMESTAMP |
创建时间 |
| updated_at |
TIMESTAMP |
DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP |
更新时间 |
2.9 送花订单表 (flower_orders)
| 字段名 |
类型 |
约束 |
描述 |
| id |
BIGINT |
PRIMARY KEY, AUTO_INCREMENT |
订单ID |
| user_id |
BIGINT |
FOREIGN KEY, NOT NULL |
用户ID |
| product_id |
BIGINT |
FOREIGN KEY, NOT NULL |
商品ID |
| order_number |
VARCHAR(50) |
UNIQUE, NOT NULL |
订单编号 |
| quantity |
INT |
NOT NULL |
数量 |
| total_amount |
DECIMAL(15,2) |
NOT NULL |
订单总金额 |
| recipient_info |
JSON |
|
收花人信息 |
| delivery_date |
DATE |
|
配送日期 |
| message |
VARCHAR(500) |
|
祝福语 |
| status |
VARCHAR(20) |
DEFAULT 'pending' |
订单状态(pending/paid/shipped/completed/cancelled) |
| created_at |
TIMESTAMP |
DEFAULT CURRENT_TIMESTAMP |
创建时间 |
| updated_at |
TIMESTAMP |
DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP |
更新时间 |
2.10 旅行邀请表 (travel_invitations)
| 字段名 |
类型 |
约束 |
描述 |
| id |
BIGINT |
PRIMARY KEY, AUTO_INCREMENT |
邀请ID |
| travel_plan_id |
BIGINT |
FOREIGN KEY, NOT NULL |
旅行计划ID |
| inviter_id |
BIGINT |
FOREIGN KEY, NOT NULL |
邀请人ID |
| invitee_id |
BIGINT |
FOREIGN KEY, NOT NULL |
被邀请人ID |
| message |
VARCHAR(500) |
|
邀请消息 |
| status |
VARCHAR(20) |
DEFAULT 'pending' |
邀请状态(pending/accepted/rejected/cancelled) |
| created_at |
TIMESTAMP |
DEFAULT CURRENT_TIMESTAMP |
创建时间 |
| updated_at |
TIMESTAMP |
DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP |
更新时间 |
2.11 旅行匹配表 (travel_matches)
| 字段名 |
类型 |
约束 |
描述 |
| id |
BIGINT |
PRIMARY KEY, AUTO_INCREMENT |
匹配ID |
| plan_id |
BIGINT |
FOREIGN KEY, NOT NULL |
旅行计划ID |
| matched_plan_id |
BIGINT |
FOREIGN KEY, NOT NULL |
匹配的旅行计划ID |
| match_score |
DECIMAL(5,4) |
NOT NULL |
匹配分数 |
| created_at |
TIMESTAMP |
DEFAULT CURRENT_TIMESTAMP |
创建时间 |
2.12 旅行计划表 (travel_plans)
| 字段名 |
类型 |
约束 |
描述 |
| id |
BIGINT |
PRIMARY KEY, AUTO_INCREMENT |
计划ID |
| user_id |
BIGINT |
FOREIGN KEY, NOT NULL |
用户ID |
| destination |
VARCHAR(100) |
NOT NULL |
目的地 |
| start_date |
DATE |
NOT NULL |
开始日期 |
| end_date |
DATE |
NOT NULL |
结束日期 |
| budget |
DECIMAL(10,2) |
|
预算 |
| interests |
TEXT |
|
兴趣偏好 |
| description |
TEXT |
|
描述 |
| visibility |
VARCHAR(20) |
DEFAULT 'public' |
可见范围(public/friends/private) |
| status |
VARCHAR(20) |
DEFAULT 'active' |
状态(active/completed/cancelled) |
| created_at |
TIMESTAMP |
DEFAULT CURRENT_TIMESTAMP |
创建时间 |
| updated_at |
TIMESTAMP |
DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP |
更新时间 |
2.13 推广活动表 (promotion_activities)
| 字段名 |
类型 |
约束 |
描述 |
| id |
BIGINT |
PRIMARY KEY, AUTO_INCREMENT |
活动ID |
| name |
VARCHAR(100) |
NOT NULL |
活动名称 |
| description |
TEXT |
|
活动描述 |
| reward_type |
VARCHAR(20) |
|
奖励类型(cash/coupon/points) |
| reward_amount |
DECIMAL(10,2) |
|
奖励金额 |
| status |
VARCHAR(20) |
DEFAULT 'active' |
活动状态(active/inactive/expired) |
| start_time |
TIMESTAMP |
|
开始时间 |
| end_time |
TIMESTAMP |
|
结束时间 |
| max_participants |
INT |
|
最大参与人数 |
| current_participants |
INT |
DEFAULT 0 |
当前参与人数 |
| created_at |
TIMESTAMP |
DEFAULT CURRENT_TIMESTAMP |
创建时间 |
| updated_at |
TIMESTAMP |
DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP |
更新时间 |
2.14 奖励记录表 (reward_records)
| 字段名 |
类型 |
约束 |
描述 |
| id |
BIGINT |
PRIMARY KEY, AUTO_INCREMENT |
记录ID |
| user_id |
BIGINT |
|
用户ID |
| user_name |
VARCHAR(50) |
|
用户姓名 |
| user_phone |
VARCHAR(20) |
|
用户手机号 |
| activity_id |
BIGINT |
|
活动ID |
| activity_name |
VARCHAR(100) |
|
活动名称 |
| reward_type |
VARCHAR(20) |
|
奖励类型 |
| reward_amount |
DECIMAL(10,2) |
|
奖励金额 |
| status |
VARCHAR(20) |
DEFAULT 'pending' |
状态(pending/issued/cancelled) |
| issued_at |
TIMESTAMP |
|
发放时间 |
| created_at |
TIMESTAMP |
DEFAULT CURRENT_TIMESTAMP |
创建时间 |
2.15 管理员操作日志表 (admin_operation_logs)
| 字段名 |
类型 |
约束 |
描述 |
| id |
BIGINT |
PRIMARY KEY, AUTO_INCREMENT |
日志ID |
| admin_id |
BIGINT |
FOREIGN KEY REFERENCES admins(id), NOT NULL |
操作管理员ID |
| admin_name |
VARCHAR(50) |
NOT NULL |
管理员名称 |
| action_type |
VARCHAR(50) |
NOT NULL |
操作类型 |
| target_type |
VARCHAR(50) |
|
目标类型 |
| target_id |
BIGINT |
|
目标ID |
| target_name |
VARCHAR(100) |
|
目标名称 |
| old_value |
TEXT |
|
操作前值 |
| new_value |
TEXT |
|
操作后值 |
| ip_address |
VARCHAR(45) |
|
操作IP地址 |
| user_agent |
VARCHAR(500) |
|
用户代理信息 |
| created_at |
TIMESTAMP |
DEFAULT CURRENT_TIMESTAMP |
创建时间 |
3. 微服务API接口规范
3.1 接口统一格式
请求格式
响应格式
3.2 通用状态码
| 状态码 |
描述 |
| 200 |
成功 |
| 400 |
请求参数错误 |
| 401 |
未授权 |
| 403 |
权限不足 |
| 404 |
资源不存在 |
| 500 |
服务器内部错误 |
3.3 认证接口
3.3.1 微信用户登录
- Endpoint: POST /auth/wechat-login
- 认证要求: 无
- 请求体:
3.3.2 获取用户信息
- Endpoint: GET /users/profile
- 认证要求: Bearer Token
3.4 用户管理接口
3.4.1 获取用户列表
- Endpoint: GET /admin/users
- 认证要求: Bearer Token
- 查询参数: page, limit, username, status
3.4.2 获取用户详情
- Endpoint: GET /admin/users/{id}
- 认证要求: Bearer Token
3.4.3 更新用户状态
- Endpoint: PUT /admin/users/{id}/status
- 认证要求: Bearer Token
3.5 商家管理接口
3.5.1 获取商家列表
- Endpoint: GET /admin/merchants
- 认证要求: Bearer Token
- 查询参数: page, limit, business_name, status
3.5.2 审核商家申请
- Endpoint: PUT /admin/merchants/{id}/approve
- 认证要求: Bearer Token
3.5.3 拒绝商家申请
- Endpoint: PUT /admin/merchants/{id}/reject
- 认证要求: Bearer Token
3.6 订单管理接口
3.6.1 获取订单列表
- Endpoint: GET /admin/orders
- 认证要求: Bearer Token
- 查询参数: page, limit, order_no, status
3.6.2 更新订单状态
- Endpoint: PUT /admin/orders/{id}/status
- 认证要求: Bearer Token
3.7 推广活动接口
3.7.1 获取推广活动列表
- Endpoint: GET /admin/promotions
- 认证要求: Bearer Token
- 查询参数: page, limit, name, status
3.7.2 创建推广活动
- Endpoint: POST /admin/promotions
- 认证要求: Bearer Token
3.7.3 更新推广活动
- Endpoint: PUT /admin/promotions/{id}
- 认证要求: Bearer Token
4. 数据库初始化脚本
4.1 创建数据库和表
-- 创建数据库
CREATE DATABASE IF NOT EXISTS jiebanke CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
USE jiebanke;
-- 创建管理员表
CREATE TABLE IF NOT EXISTS admins (
id BIGINT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) NOT NULL UNIQUE,
password VARCHAR(255) NOT NULL,
email VARCHAR(100),
role VARCHAR(20) DEFAULT 'admin',
status VARCHAR(20) DEFAULT 'active',
last_login TIMESTAMP NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
-- 创建用户表
CREATE TABLE IF NOT EXISTS users (
id BIGINT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) NOT NULL UNIQUE,
password VARCHAR(255) NOT NULL,
email VARCHAR(100) UNIQUE,
phone VARCHAR(20),
real_name VARCHAR(100),
id_card VARCHAR(20),
status VARCHAR(20) DEFAULT 'active',
balance DECIMAL(15,2) DEFAULT 0.00,
credit_score INT DEFAULT 100,
last_login TIMESTAMP NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
-- 创建订单表
CREATE TABLE IF NOT EXISTS orders (
id BIGINT AUTO_INCREMENT PRIMARY KEY,
user_id BIGINT NOT NULL,
order_no VARCHAR(50) NOT NULL UNIQUE,
amount DECIMAL(15,2) NOT NULL,
status VARCHAR(20) DEFAULT 'pending',
type VARCHAR(20) NOT NULL,
description TEXT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
-- 创建旅行计划表
CREATE TABLE IF NOT EXISTS travel_plans (
id BIGINT AUTO_INCREMENT PRIMARY KEY,
user_id BIGINT NOT NULL,
destination VARCHAR(100) NOT NULL,
start_date DATE NOT NULL,
end_date DATE NOT NULL,
budget DECIMAL(10,2),
interests TEXT,
description TEXT,
visibility VARCHAR(20) DEFAULT 'public',
status VARCHAR(20) DEFAULT 'active',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
-- 创建动物表
CREATE TABLE IF NOT EXISTS animals (
id BIGINT AUTO_INCREMENT PRIMARY KEY,
merchant_id BIGINT NOT NULL,
name VARCHAR(50) NOT NULL,
species VARCHAR(50) NOT NULL,
breed VARCHAR(50),
birth_date DATE,
personality TEXT,
farm_location VARCHAR(255),
price DECIMAL(10,2) NOT NULL,
claim_count INT DEFAULT 0,
status VARCHAR(20) DEFAULT 'available',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
-- 创建推广活动表
CREATE TABLE IF NOT EXISTS promotion_activities (
id BIGINT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
description TEXT,
reward_type VARCHAR(20),
reward_amount DECIMAL(10,2),
status VARCHAR(20) DEFAULT 'active',
start_time TIMESTAMP,
end_time TIMESTAMP,
max_participants INT,
current_participants INT DEFAULT 0,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
-- 创建奖励记录表
CREATE TABLE IF NOT EXISTS reward_records (
id BIGINT AUTO_INCREMENT PRIMARY KEY,
user_id BIGINT,
user_name VARCHAR(50),
user_phone VARCHAR(20),
activity_id BIGINT,
activity_name VARCHAR(100),
reward_type VARCHAR(20),
reward_amount DECIMAL(10,2),
status VARCHAR(20) DEFAULT 'pending',
issued_at TIMESTAMP,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
4.2 插入默认数据
4.3 创建索引
5. 数据库维护
5.1 备份策略
5.2 性能优化
- 为常用查询字段创建索引
- 定期分析慢查询日志
- 数据库连接池配置优化
5.3 安全措施
- 定期更换数据库密码
- 限制数据库访问IP
- 启用SSL加密连接
6. 微服务数据分片建议
6.1 用户服务数据表
- users
- user_profiles
- user_settings
6.2 旅行服务数据表
- travel_plans
- travel_invitations
- travel_matches
6.3 动物服务数据表
- animals
- animal_claims
- animal_updates
6.4 订单服务数据表
- orders
- order_items
- payments
6.5 推广服务数据表
- promotion_activities
- reward_records
- participant_records
最后更新: 2025年 📅