# 结伴客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年* 📅