717 lines
24 KiB
Markdown
717 lines
24 KiB
Markdown
|
|
# 结伴客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图
|
||
|
|
|
||
|
|
```mermaid
|
||
|
|
erDiagram
|
||
|
|
USERS ||--o{ TRAVEL_PLANS : creates
|
||
|
|
USERS ||--o{ ANIMAL_CLAIMS : claims
|
||
|
|
USERS ||--o{ MESSAGES : sends
|
||
|
|
USERS ||--o{ ORDERS : places
|
||
|
|
USERS ||--o{ REVIEWS : writes
|
||
|
|
|
||
|
|
MERCHANTS ||--o{ PRODUCTS : sells
|
||
|
|
MERCHANTS ||--o{ ORDERS : processes
|
||
|
|
MERCHANTS ||--o{ ACTIVITIES : organizes
|
||
|
|
MERCHANTS ||--o{ ANIMALS : manages
|
||
|
|
|
||
|
|
TRAVEL_PLANS ||--o{ TRAVEL_MATCHES : matches
|
||
|
|
|
||
|
|
ANIMALS ||--o{ ANIMAL_CLAIMS : claimed
|
||
|
|
ANIMALS ||--o{ ANIMAL_UPDATES : updates
|
||
|
|
|
||
|
|
PRODUCTS ||--o{ ORDER_ITEMS : contains
|
||
|
|
|
||
|
|
ORDERS ||--o{ ORDER_ITEMS : contains
|
||
|
|
ORDERS ||--o{ PAYMENTS : has
|
||
|
|
|
||
|
|
ACTIVITIES ||--o{ ACTIVITY_REGISTRATIONS : registers
|
||
|
|
|
||
|
|
ADMINS ||--o{ ADMIN_LOGS : creates
|
||
|
|
|
||
|
|
PROMOTION_ACTIVITIES ||--o{ REWARD_RECORDS : rewards
|
||
|
|
|
||
|
|
USERS {
|
||
|
|
bigint id PK
|
||
|
|
varchar username
|
||
|
|
varchar password
|
||
|
|
varchar email
|
||
|
|
varchar phone
|
||
|
|
varchar real_name
|
||
|
|
varchar id_card
|
||
|
|
varchar status
|
||
|
|
decimal balance
|
||
|
|
int credit_score
|
||
|
|
timestamp last_login
|
||
|
|
timestamp created_at
|
||
|
|
timestamp updated_at
|
||
|
|
}
|
||
|
|
|
||
|
|
ADMINS {
|
||
|
|
bigint id PK
|
||
|
|
varchar username
|
||
|
|
varchar password
|
||
|
|
varchar email
|
||
|
|
varchar role
|
||
|
|
varchar status
|
||
|
|
timestamp last_login
|
||
|
|
timestamp created_at
|
||
|
|
timestamp updated_at
|
||
|
|
}
|
||
|
|
|
||
|
|
MERCHANTS {
|
||
|
|
bigint id PK
|
||
|
|
bigint user_id FK
|
||
|
|
varchar merchant_type
|
||
|
|
varchar business_name
|
||
|
|
varchar business_license
|
||
|
|
varchar contact_person
|
||
|
|
varchar contact_phone
|
||
|
|
varchar address
|
||
|
|
varchar description
|
||
|
|
varchar status
|
||
|
|
timestamp created_at
|
||
|
|
timestamp updated_at
|
||
|
|
}
|
||
|
|
|
||
|
|
TRAVEL_PLANS {
|
||
|
|
bigint id PK
|
||
|
|
bigint user_id FK
|
||
|
|
varchar destination
|
||
|
|
date start_date
|
||
|
|
date end_date
|
||
|
|
decimal budget
|
||
|
|
text interests
|
||
|
|
varchar visibility
|
||
|
|
timestamp created_at
|
||
|
|
timestamp updated_at
|
||
|
|
}
|
||
|
|
|
||
|
|
ANIMALS {
|
||
|
|
bigint id PK
|
||
|
|
bigint merchant_id FK
|
||
|
|
varchar name
|
||
|
|
varchar species
|
||
|
|
varchar breed
|
||
|
|
date birth_date
|
||
|
|
text personality
|
||
|
|
varchar farm_location
|
||
|
|
decimal price
|
||
|
|
varchar status
|
||
|
|
timestamp created_at
|
||
|
|
timestamp updated_at
|
||
|
|
}
|
||
|
|
|
||
|
|
ORDERS {
|
||
|
|
bigint id PK
|
||
|
|
bigint user_id FK
|
||
|
|
bigint merchant_id FK
|
||
|
|
varchar order_number
|
||
|
|
decimal total_amount
|
||
|
|
varchar status
|
||
|
|
varchar delivery_address
|
||
|
|
timestamp ordered_at
|
||
|
|
timestamp completed_at
|
||
|
|
}
|
||
|
|
|
||
|
|
PRODUCTS {
|
||
|
|
bigint id PK
|
||
|
|
bigint merchant_id FK
|
||
|
|
varchar name
|
||
|
|
text description
|
||
|
|
decimal price
|
||
|
|
varchar image_url
|
||
|
|
varchar category
|
||
|
|
varchar status
|
||
|
|
timestamp created_at
|
||
|
|
timestamp updated_at
|
||
|
|
}
|
||
|
|
|
||
|
|
PROMOTION_ACTIVITIES {
|
||
|
|
bigint id PK
|
||
|
|
varchar name
|
||
|
|
text description
|
||
|
|
varchar reward_type
|
||
|
|
decimal reward_amount
|
||
|
|
varchar status
|
||
|
|
timestamp start_time
|
||
|
|
timestamp end_time
|
||
|
|
int max_participants
|
||
|
|
int current_participants
|
||
|
|
timestamp created_at
|
||
|
|
timestamp updated_at
|
||
|
|
}
|
||
|
|
|
||
|
|
REWARD_RECORDS {
|
||
|
|
bigint id PK
|
||
|
|
bigint user_id
|
||
|
|
varchar user_name
|
||
|
|
varchar user_phone
|
||
|
|
bigint activity_id
|
||
|
|
varchar activity_name
|
||
|
|
varchar reward_type
|
||
|
|
decimal reward_amount
|
||
|
|
varchar status
|
||
|
|
timestamp issued_at
|
||
|
|
timestamp created_at
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
## 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 接口统一格式
|
||
|
|
|
||
|
|
#### 请求格式
|
||
|
|
- **Base URL**: http://localhost:8080/api/
|
||
|
|
- **认证**: Bearer Token (需要认证的接口)
|
||
|
|
- **Content-Type**: application/json
|
||
|
|
|
||
|
|
#### 响应格式
|
||
|
|
```json
|
||
|
|
{
|
||
|
|
"code": 200,
|
||
|
|
"message": "操作成功",
|
||
|
|
"data": {
|
||
|
|
// 具体数据
|
||
|
|
},
|
||
|
|
"pagination": {
|
||
|
|
// 分页信息(列表接口)
|
||
|
|
}
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
### 3.2 通用状态码
|
||
|
|
| 状态码 | 描述 |
|
||
|
|
|--------|------|
|
||
|
|
| 200 | 成功 |
|
||
|
|
| 400 | 请求参数错误 |
|
||
|
|
| 401 | 未授权 |
|
||
|
|
| 403 | 权限不足 |
|
||
|
|
| 404 | 资源不存在 |
|
||
|
|
| 500 | 服务器内部错误 |
|
||
|
|
|
||
|
|
### 3.3 认证接口
|
||
|
|
|
||
|
|
#### 3.3.1 微信用户登录
|
||
|
|
- **Endpoint**: POST /auth/wechat-login
|
||
|
|
- **认证要求**: 无
|
||
|
|
- **请求体**:
|
||
|
|
```json
|
||
|
|
{
|
||
|
|
"code": "string, required",
|
||
|
|
"userInfo": {
|
||
|
|
"nickName": "string, required",
|
||
|
|
"avatarUrl": "string, required",
|
||
|
|
"gender": "number, optional",
|
||
|
|
"province": "string, optional",
|
||
|
|
"city": "string, optional"
|
||
|
|
}
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
#### 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 创建数据库和表
|
||
|
|
```sql
|
||
|
|
-- 创建数据库
|
||
|
|
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 插入默认数据
|
||
|
|
```sql
|
||
|
|
-- 插入默认管理员账号
|
||
|
|
INSERT INTO admins (username, password, email, role) VALUES
|
||
|
|
('admin', '$2a$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', 'admin@jiebanke.com', 'super_admin'),
|
||
|
|
('manager', '$2a$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', 'manager@jiebanke.com', 'admin');
|
||
|
|
|
||
|
|
-- 插入测试用户账号
|
||
|
|
INSERT INTO users (username, password, email, phone, real_name, id_card, balance, credit_score) VALUES
|
||
|
|
('user1', '$2a$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', 'user1@jiebanke.com', '13800138001', '张三', '110101199001011234', 1000.00, 95),
|
||
|
|
('user2', '$2a$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', 'user2@jiebanke.com', '13800138002', '李四', '110101199002022345', 500.00, 85);
|
||
|
|
```
|
||
|
|
|
||
|
|
### 4.3 创建索引
|
||
|
|
```sql
|
||
|
|
-- 创建索引
|
||
|
|
CREATE INDEX idx_admins_username ON admins(username);
|
||
|
|
CREATE INDEX idx_admins_email ON admins(email);
|
||
|
|
CREATE INDEX idx_users_username ON users(username);
|
||
|
|
CREATE INDEX idx_users_email ON users(email);
|
||
|
|
CREATE INDEX idx_users_phone ON users(phone);
|
||
|
|
CREATE INDEX idx_orders_user_id ON orders(user_id);
|
||
|
|
CREATE INDEX idx_orders_order_no ON orders(order_no);
|
||
|
|
CREATE INDEX idx_orders_status ON orders(status);
|
||
|
|
CREATE INDEX idx_travel_plans_user_id ON travel_plans(user_id);
|
||
|
|
CREATE INDEX idx_travel_plans_destination ON travel_plans(destination);
|
||
|
|
CREATE INDEX idx_animals_species ON animals(species);
|
||
|
|
CREATE INDEX idx_animals_status ON animals(status);
|
||
|
|
CREATE INDEX idx_promotion_activities_status ON promotion_activities(status);
|
||
|
|
CREATE INDEX idx_reward_records_user_id ON reward_records(user_id);
|
||
|
|
CREATE INDEX idx_reward_records_activity_id ON reward_records(activity_id);
|
||
|
|
```
|
||
|
|
|
||
|
|
## 5. 数据库维护
|
||
|
|
|
||
|
|
### 5.1 备份策略
|
||
|
|
- 每日全量备份
|
||
|
|
- 每小时增量备份
|
||
|
|
- 备份保留30天
|
||
|
|
|
||
|
|
### 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年* 📅
|