第 0 阶段:项目初始化
This commit is contained in:
@@ -0,0 +1,248 @@
|
||||
CREATE TABLE users (
|
||||
id BIGINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
|
||||
phone VARCHAR(32) NOT NULL,
|
||||
nickname VARCHAR(64) NOT NULL DEFAULT '',
|
||||
avatar_url VARCHAR(512) NOT NULL DEFAULT '',
|
||||
realname_status VARCHAR(32) NOT NULL DEFAULT 'unverified',
|
||||
risk_status VARCHAR(32) NOT NULL DEFAULT 'normal',
|
||||
credit_score INT NOT NULL DEFAULT 100,
|
||||
status VARCHAR(32) NOT NULL DEFAULT 'active',
|
||||
last_login_at DATETIME NULL,
|
||||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
UNIQUE KEY uk_users_phone (phone)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
CREATE TABLE user_realname (
|
||||
id BIGINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
|
||||
user_id BIGINT UNSIGNED NOT NULL,
|
||||
provider VARCHAR(32) NOT NULL,
|
||||
provider_order_no VARCHAR(128) NOT NULL DEFAULT '',
|
||||
status VARCHAR(32) NOT NULL DEFAULT 'pending',
|
||||
masked_name VARCHAR(64) NOT NULL DEFAULT '',
|
||||
masked_id_no VARCHAR(64) NOT NULL DEFAULT '',
|
||||
verified_at DATETIME NULL,
|
||||
fail_reason VARCHAR(255) NOT NULL DEFAULT '',
|
||||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
UNIQUE KEY uk_user_realname_user_id (user_id),
|
||||
KEY idx_user_realname_provider_order_no (provider_order_no)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
CREATE TABLE game_accounts (
|
||||
id BIGINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
|
||||
owner_id BIGINT UNSIGNED NOT NULL,
|
||||
game_name VARCHAR(64) NOT NULL DEFAULT 'delta_force',
|
||||
server_region VARCHAR(64) NOT NULL,
|
||||
login_platform VARCHAR(64) NOT NULL,
|
||||
title VARCHAR(128) NOT NULL,
|
||||
description TEXT NULL,
|
||||
rank_level VARCHAR(64) NOT NULL DEFAULT '',
|
||||
haf_coin_amount BIGINT NOT NULL DEFAULT 0,
|
||||
asset_summary JSON NULL,
|
||||
season_tags JSON NULL,
|
||||
screenshot_urls JSON NULL,
|
||||
status VARCHAR(32) NOT NULL DEFAULT 'draft',
|
||||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
KEY idx_game_accounts_owner_id (owner_id),
|
||||
KEY idx_game_accounts_filter (game_name, server_region, login_platform)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
CREATE TABLE rental_listings (
|
||||
id BIGINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
|
||||
account_id BIGINT UNSIGNED NOT NULL,
|
||||
owner_id BIGINT UNSIGNED NOT NULL,
|
||||
price_hourly DECIMAL(12,2) NOT NULL DEFAULT 0.00,
|
||||
price_daily DECIMAL(12,2) NOT NULL DEFAULT 0.00,
|
||||
price_weekly DECIMAL(12,2) NOT NULL DEFAULT 0.00,
|
||||
deposit_amount DECIMAL(12,2) NOT NULL DEFAULT 0.00,
|
||||
min_rent_hours INT NOT NULL DEFAULT 1,
|
||||
max_rent_hours INT NOT NULL DEFAULT 168,
|
||||
status VARCHAR(32) NOT NULL DEFAULT 'draft',
|
||||
review_status VARCHAR(32) NOT NULL DEFAULT 'none',
|
||||
review_reason VARCHAR(255) NOT NULL DEFAULT '',
|
||||
published_at DATETIME NULL,
|
||||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
KEY idx_rental_listings_account_id (account_id),
|
||||
KEY idx_rental_listings_owner_id (owner_id),
|
||||
KEY idx_rental_listings_filter (status, review_status, price_hourly)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
CREATE TABLE rental_orders (
|
||||
id BIGINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
|
||||
order_no VARCHAR(64) NOT NULL,
|
||||
listing_id BIGINT UNSIGNED NOT NULL,
|
||||
account_id BIGINT UNSIGNED NOT NULL,
|
||||
owner_id BIGINT UNSIGNED NOT NULL,
|
||||
renter_id BIGINT UNSIGNED NOT NULL,
|
||||
rent_start_at DATETIME NULL,
|
||||
rent_end_at DATETIME NULL,
|
||||
rent_hours INT NOT NULL,
|
||||
rent_amount DECIMAL(12,2) NOT NULL DEFAULT 0.00,
|
||||
deposit_amount DECIMAL(12,2) NOT NULL DEFAULT 0.00,
|
||||
platform_fee DECIMAL(12,2) NOT NULL DEFAULT 0.00,
|
||||
account_snapshot JSON NULL,
|
||||
status VARCHAR(32) NOT NULL DEFAULT 'pending_confirm',
|
||||
handoff_status VARCHAR(32) NOT NULL DEFAULT 'none',
|
||||
settlement_status VARCHAR(32) NOT NULL DEFAULT 'unsettled',
|
||||
owner_settled_at DATETIME NULL,
|
||||
settled_at DATETIME NULL,
|
||||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
UNIQUE KEY uk_rental_orders_order_no (order_no),
|
||||
KEY idx_rental_orders_renter_status (renter_id, status),
|
||||
KEY idx_rental_orders_owner_status (owner_id, status),
|
||||
KEY idx_rental_orders_listing_id (listing_id)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
CREATE TABLE handoff_records (
|
||||
id BIGINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
|
||||
order_id BIGINT UNSIGNED NOT NULL,
|
||||
from_user_id BIGINT UNSIGNED NOT NULL,
|
||||
to_user_id BIGINT UNSIGNED NOT NULL,
|
||||
type VARCHAR(32) NOT NULL,
|
||||
content TEXT NULL,
|
||||
attachment_urls JSON NULL,
|
||||
confirmed_by_renter_at DATETIME NULL,
|
||||
confirmed_by_owner_at DATETIME NULL,
|
||||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
KEY idx_handoff_records_order_id (order_id)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
CREATE TABLE wallet_accounts (
|
||||
id BIGINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
|
||||
user_id BIGINT UNSIGNED NOT NULL,
|
||||
available_balance DECIMAL(12,2) NOT NULL DEFAULT 0.00,
|
||||
frozen_balance DECIMAL(12,2) NOT NULL DEFAULT 0.00,
|
||||
status VARCHAR(32) NOT NULL DEFAULT 'active',
|
||||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
UNIQUE KEY uk_wallet_accounts_user_id (user_id)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
CREATE TABLE wallet_ledger (
|
||||
id BIGINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
|
||||
ledger_no VARCHAR(64) NOT NULL,
|
||||
user_id BIGINT UNSIGNED NOT NULL,
|
||||
order_id BIGINT UNSIGNED NULL,
|
||||
direction VARCHAR(16) NOT NULL,
|
||||
amount DECIMAL(12,2) NOT NULL,
|
||||
balance_after DECIMAL(12,2) NOT NULL,
|
||||
balance_type VARCHAR(32) NOT NULL,
|
||||
biz_type VARCHAR(32) NOT NULL,
|
||||
biz_no VARCHAR(64) NOT NULL,
|
||||
remark VARCHAR(255) NOT NULL DEFAULT '',
|
||||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
UNIQUE KEY uk_wallet_ledger_ledger_no (ledger_no),
|
||||
KEY idx_wallet_ledger_user_created (user_id, created_at),
|
||||
KEY idx_wallet_ledger_biz (biz_type, biz_no)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
CREATE TABLE disputes (
|
||||
id BIGINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
|
||||
order_id BIGINT UNSIGNED NOT NULL,
|
||||
initiator_id BIGINT UNSIGNED NOT NULL,
|
||||
target_user_id BIGINT UNSIGNED NOT NULL,
|
||||
type VARCHAR(32) NOT NULL,
|
||||
status VARCHAR(32) NOT NULL DEFAULT 'open',
|
||||
description TEXT NULL,
|
||||
evidence_urls JSON NULL,
|
||||
arbitration_result VARCHAR(32) NOT NULL DEFAULT '',
|
||||
arbitration_remark TEXT NULL,
|
||||
handled_by BIGINT UNSIGNED NULL,
|
||||
handled_at DATETIME NULL,
|
||||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
KEY idx_disputes_order_id (order_id),
|
||||
KEY idx_disputes_status (status)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
CREATE TABLE notifications (
|
||||
id BIGINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
|
||||
user_id BIGINT UNSIGNED NOT NULL,
|
||||
type VARCHAR(32) NOT NULL,
|
||||
title VARCHAR(128) NOT NULL,
|
||||
content TEXT NULL,
|
||||
biz_type VARCHAR(32) NOT NULL DEFAULT '',
|
||||
biz_id BIGINT UNSIGNED NULL,
|
||||
read_at DATETIME NULL,
|
||||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
KEY idx_notifications_user_read_created (user_id, read_at, created_at)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
CREATE TABLE audit_logs (
|
||||
id BIGINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
|
||||
actor_type VARCHAR(32) NOT NULL,
|
||||
actor_id BIGINT UNSIGNED NOT NULL,
|
||||
action VARCHAR(64) NOT NULL,
|
||||
biz_type VARCHAR(32) NOT NULL,
|
||||
biz_id BIGINT UNSIGNED NULL,
|
||||
ip VARCHAR(64) NOT NULL DEFAULT '',
|
||||
user_agent VARCHAR(512) NOT NULL DEFAULT '',
|
||||
detail JSON NULL,
|
||||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
KEY idx_audit_logs_actor_created (actor_id, created_at),
|
||||
KEY idx_audit_logs_biz (biz_type, biz_id)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
CREATE TABLE admin_users (
|
||||
id BIGINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
|
||||
username VARCHAR(64) NOT NULL,
|
||||
password_hash VARCHAR(255) NOT NULL,
|
||||
nickname VARCHAR(64) NOT NULL DEFAULT '',
|
||||
status VARCHAR(32) NOT NULL DEFAULT 'active',
|
||||
last_login_at DATETIME NULL,
|
||||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
UNIQUE KEY uk_admin_users_username (username)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
CREATE TABLE roles (
|
||||
id BIGINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
|
||||
code VARCHAR(64) NOT NULL,
|
||||
name VARCHAR(64) NOT NULL,
|
||||
description VARCHAR(255) NOT NULL DEFAULT '',
|
||||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
UNIQUE KEY uk_roles_code (code)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
CREATE TABLE permissions (
|
||||
id BIGINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
|
||||
code VARCHAR(128) NOT NULL,
|
||||
name VARCHAR(64) NOT NULL,
|
||||
resource VARCHAR(128) NOT NULL,
|
||||
action VARCHAR(64) NOT NULL,
|
||||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
UNIQUE KEY uk_permissions_code (code)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
CREATE TABLE admin_user_roles (
|
||||
id BIGINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
|
||||
admin_user_id BIGINT UNSIGNED NOT NULL,
|
||||
role_id BIGINT UNSIGNED NOT NULL,
|
||||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
UNIQUE KEY uk_admin_user_roles_user_role (admin_user_id, role_id)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
CREATE TABLE role_permissions (
|
||||
id BIGINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
|
||||
role_id BIGINT UNSIGNED NOT NULL,
|
||||
permission_id BIGINT UNSIGNED NOT NULL,
|
||||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
UNIQUE KEY uk_role_permissions_role_permission (role_id, permission_id)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
CREATE TABLE system_configs (
|
||||
id BIGINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
|
||||
`key` VARCHAR(128) NOT NULL,
|
||||
`value` TEXT NOT NULL,
|
||||
description VARCHAR(255) NOT NULL DEFAULT '',
|
||||
updated_by BIGINT UNSIGNED NULL,
|
||||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
UNIQUE KEY uk_system_configs_key (`key`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
Reference in New Issue
Block a user