This commit is contained in:
zpc 2026-01-02 02:11:15 +08:00
parent 8e5a893563
commit 6e8d55cc15

View File

@ -37,6 +37,10 @@
- order (15条) - 订单主表
- order_list (67条) - 订单详情
钻石系统:
- diamond_orders (398条) - 钻石订单 (有实际交易数据)
- diamond_products (5条) - 钻石商品配置
财务相关:
- profit_money (26,061条) - 余额明细
- profit_integral (33,487条) - 积分明细
@ -109,6 +113,127 @@ VIP系统:
#### 任务描述
基于snake_case命名规范重新设计表结构
#### 商品表字段分析
基于数据库实际查询结果goods表共有54个字段按业务功能分类如下
##### 🔥 核心业务字段 (必须迁移)
```yaml
基础信息 (7字段):
- id: 主键
- category_id: 分类ID
- title: 商品标题
- imgurl: 商品图片
- imgurl_detail: 详情图片
- prize_imgurl: 奖品图片
- goods_describe: 商品描述 (402/503商品有描述)
价格库存 (4字段):
- price: 商品价格
- stock: 总库存
- sale_stock: 已售库存
- show_price: 显示价格(营销)
状态控制 (4字段):
- type: 商品类型 (1一番赏 2无限赏等)
- status: 状态 (0下架 1上架)
- sort: 排序权重
- new_is: 新品标识
时间字段 (4字段):
- sale_time: 开售时间
- addtime: 创建时间
- update_time: 更新时间
- delete_time: 删除时间
```
##### ⚡ 重要功能字段 (高使用率)
```yaml
福利屋功能 (5字段) - 383/503商品启用:
- is_flw: 福利屋开关
- flw_start_time: 开始时间
- flw_end_time: 结束时间
- open_time: 开放时间
- is_open: 是否开放
限购控制 (4字段):
- daily_xiangou: 每日限购 (重要业务逻辑)
- quanju_xiangou: 全局限购
- unlock_amount: 解锁金额门槛
- user_lv: 用户等级限制
抽奖核心 (3字段):
- prize_num: 奖品数量
- choujiang_xianzhi: 抽奖限制
- lock_is/lock_time: 锁箱功能
自动下架 (4字段) - 47/503商品启用:
- is_auto_xiajia: 自动下架开关
- xiajia_lirun: 利润阈值
- xiajia_auto_coushu: 自动抽数
- xiajia_jine: 金额阈值
```
##### 🎯 特色功能字段 (中等使用率)
```yaml
营销功能 (4字段):
- coupon_is/coupon_pro: 优惠券功能
- integral_is: 积分功能
- is_shou_zhe: 折扣标识
- show_is: 首页显示控制
定价策略 (4字段):
- day_price: 日价格
- mouth_price: 月价格
- mouth_pay_price: 月支付价格
- day_pay_price: 日支付价格
卡片系统 (5字段):
- card_banner: 卡片横幅
- card_set: 卡片设置JSON
- card_notice: 卡片通知
- card_num: 卡片数量
- item_card_id: 道具卡ID
同步功能 (2字段) - 21/503商品有异步代码:
- async_code: 异步同步代码
- async_date: 异步同步时间
```
##### 🔧 高级功能字段 (低使用率但重要)
```yaml
灵珠系统 (3字段) - 8个商品启用:
- lingzhu_is: 领主功能开关
- lingzhu_fan: 领主返还
- lingzhu_shang_id: 领主奖品ID
连击系统 (2字段):
- lian_ji_num: 连击数量
- lian_ji_shang_id: 连击奖品ID
暴怒系统 (2字段):
- rage_is: 暴怒功能开关
- rage: 暴怒值
拳王系统 (1字段):
- king_user_id: 拳王用户ID
```
##### 📊 字段使用统计
```yaml
高使用率字段 (>300个商品):
- is_flw: 383个商品 (福利屋功能)
- goods_describe: 402个商品 (商品描述)
中使用率字段 (20-100个商品):
- is_auto_xiajia: 47个商品 (自动下架)
- async_code: 21个商品 (异步同步)
低使用率字段 (<20个商品):
- lingzhu_is: 8个商品 (灵珠功能)
- 其他特殊功能字段
```
#### 具体工作
- [ ] 统一命名规范为snake_case
- [ ] 优化数据类型和字段长度
@ -122,27 +247,30 @@ VIP系统:
-- 用户主表
CREATE TABLE users (
id INT IDENTITY(1,1) PRIMARY KEY,
open_id NVARCHAR(50) NOT NULL,
union_id NVARCHAR(255) NULL,
gzh_open_id NVARCHAR(255) NULL,
mobile NVARCHAR(15) NULL,
nickname NVARCHAR(255) NOT NULL,
head_img NVARCHAR(500) NOT NULL,
parent_id INT NOT NULL DEFAULT 0,
money DECIMAL(18,2) NOT NULL DEFAULT 0,
money2 DECIMAL(18,2) NOT NULL DEFAULT 0,
integral DECIMAL(18,2) NOT NULL DEFAULT 0,
score DECIMAL(18,2) NOT NULL DEFAULT 0,
ou_qi INT NOT NULL DEFAULT 0,
ou_qi_level INT NOT NULL DEFAULT 0,
vip_level TINYINT NOT NULL DEFAULT 1,
status TINYINT NOT NULL DEFAULT 1,
is_test INT NOT NULL DEFAULT 0,
uid NVARCHAR(16) NOT NULL,
click_id INT NULL,
created_at DATETIME2 NOT NULL DEFAULT GETDATE(),
updated_at DATETIME2 NOT NULL DEFAULT GETDATE(),
last_login_at DATETIME2 NULL,
open_id NVARCHAR(50) NOT NULL COMMENT '微信OpenID',
union_id NVARCHAR(255) NULL COMMENT '微信UnionID',
gzh_open_id NVARCHAR(255) NULL COMMENT '公众号OpenID',
mobile NVARCHAR(15) NULL COMMENT '手机号',
nickname NVARCHAR(255) NOT NULL COMMENT '昵称',
head_img NVARCHAR(500) NOT NULL COMMENT '头像URL',
parent_id INT NOT NULL DEFAULT 0 COMMENT '推荐人ID',
money DECIMAL(18,2) NOT NULL DEFAULT 0 COMMENT '余额',
money2 DECIMAL(18,2) NOT NULL DEFAULT 0 COMMENT '积分货币',
integral DECIMAL(18,2) NOT NULL DEFAULT 0 COMMENT '积分',
score DECIMAL(18,2) NOT NULL DEFAULT 0 COMMENT '评分',
ou_qi INT NOT NULL DEFAULT 0 COMMENT '欧气值',
ou_qi_level INT NOT NULL DEFAULT 0 COMMENT '欧气等级',
vip_level TINYINT NOT NULL DEFAULT 1 COMMENT 'VIP等级',
status TINYINT NOT NULL DEFAULT 1 COMMENT '状态 0禁用 1正常',
is_test INT NOT NULL DEFAULT 0 COMMENT '是否测试账号',
uid NVARCHAR(16) NOT NULL COMMENT '用户唯一标识',
click_id INT NULL COMMENT '点击ID',
draw_num INT NOT NULL DEFAULT 0 COMMENT '抽奖次数',
password NVARCHAR(40) NULL COMMENT '密码',
is_use_coupon TINYINT NOT NULL DEFAULT 0 COMMENT '是否使用优惠券',
created_at DATETIME2 NOT NULL DEFAULT GETDATE() COMMENT '创建时间',
updated_at DATETIME2 NOT NULL DEFAULT GETDATE() COMMENT '更新时间',
last_login_at DATETIME2 NULL COMMENT '最后登录时间',
-- 索引
INDEX ix_users_open_id (open_id),
@ -155,23 +283,23 @@ CREATE TABLE users (
-- 约束
CONSTRAINT uk_users_open_id UNIQUE (open_id),
CONSTRAINT uk_users_uid UNIQUE (uid)
);
) COMMENT = '用户主表';
-- 用户账户表
CREATE TABLE user_accounts (
id INT IDENTITY(1,1) PRIMARY KEY,
user_id INT NOT NULL,
account_token NVARCHAR(255) NOT NULL,
token_num NVARCHAR(50) NOT NULL,
token_time BIGINT NOT NULL,
last_login_time BIGINT NOT NULL,
last_login_ip BIGINT NOT NULL,
last_login_ip_str NVARCHAR(45) NOT NULL,
ip_province NVARCHAR(50) NULL,
ip_city NVARCHAR(50) NULL,
ip_adcode NVARCHAR(20) NULL,
created_at DATETIME2 NOT NULL DEFAULT GETDATE(),
updated_at DATETIME2 NOT NULL DEFAULT GETDATE(),
user_id INT NOT NULL COMMENT '用户ID',
account_token NVARCHAR(255) NOT NULL COMMENT '账户令牌',
token_num NVARCHAR(50) NOT NULL COMMENT '令牌编号',
token_time BIGINT NOT NULL COMMENT '令牌时间',
last_login_time BIGINT NOT NULL COMMENT '最后登录时间戳',
last_login_ip BIGINT NOT NULL COMMENT '最后登录IP(数值)',
last_login_ip_str NVARCHAR(45) NOT NULL COMMENT '最后登录IP(字符串)',
ip_province NVARCHAR(50) NULL COMMENT 'IP省份',
ip_city NVARCHAR(50) NULL COMMENT 'IP城市',
ip_adcode NVARCHAR(20) NULL COMMENT 'IP区域代码',
created_at DATETIME2 NOT NULL DEFAULT GETDATE() COMMENT '创建时间',
updated_at DATETIME2 NOT NULL DEFAULT GETDATE() COMMENT '更新时间',
-- 索引
INDEX ix_user_accounts_user_id (user_id),
@ -179,81 +307,155 @@ CREATE TABLE user_accounts (
-- 外键
CONSTRAINT fk_user_accounts_user_id FOREIGN KEY (user_id) REFERENCES users(id)
);
) COMMENT = '用户账户信息表';
-- 用户登录日志表
CREATE TABLE user_login_logs (
id INT IDENTITY(1,1) PRIMARY KEY,
user_id INT NOT NULL,
platform NVARCHAR(50) NOT NULL,
ip_address NVARCHAR(45) NOT NULL,
location NVARCHAR(100) NULL,
device NVARCHAR(100) NULL,
device_info NVARCHAR(500) NULL,
login_time DATETIME2 NOT NULL DEFAULT GETDATE(),
user_id INT NOT NULL COMMENT '用户ID',
platform NVARCHAR(50) NOT NULL COMMENT '登录平台',
ip_address NVARCHAR(45) NOT NULL COMMENT 'IP地址',
location NVARCHAR(100) NULL COMMENT '登录地点',
device NVARCHAR(100) NULL COMMENT '设备信息',
device_info NVARCHAR(500) NULL COMMENT '详细设备信息',
login_time DATETIME2 NOT NULL DEFAULT GETDATE() COMMENT '登录时间',
-- 索引
INDEX ix_user_login_logs_user_id (user_id),
INDEX ix_user_login_logs_login_time (login_time),
INDEX ix_user_login_logs_platform (platform)
);
) COMMENT = '用户登录日志表';
```
##### 商品相关表
```sql
-- 商品主表
-- 商品主表 (完整54字段结构)
CREATE TABLE goods (
id INT IDENTITY(1,1) PRIMARY KEY,
category_id INT NOT NULL DEFAULT 0,
title NVARCHAR(255) NOT NULL,
img_url NVARCHAR(500) NOT NULL,
img_url_detail NVARCHAR(500) NOT NULL,
price DECIMAL(18,2) NOT NULL DEFAULT 0,
stock INT NOT NULL DEFAULT 0,
sale_stock INT NOT NULL DEFAULT 0,
type TINYINT NOT NULL DEFAULT 0,
status TINYINT NOT NULL DEFAULT 1,
is_lock TINYINT NOT NULL DEFAULT 0,
lock_time INT NOT NULL DEFAULT 0,
is_discount TINYINT NOT NULL DEFAULT 0,
is_new TINYINT NOT NULL DEFAULT 0,
is_show TINYINT NOT NULL DEFAULT 0,
unlock_amount DECIMAL(18,2) NOT NULL DEFAULT 0,
daily_limit INT NOT NULL DEFAULT 0,
global_limit INT NOT NULL DEFAULT 0,
sort_order INT NOT NULL DEFAULT 1,
sale_time DATETIME2 NULL,
created_at DATETIME2 NOT NULL DEFAULT GETDATE(),
updated_at DATETIME2 NOT NULL DEFAULT GETDATE(),
deleted_at DATETIME2 NULL,
-- 基础信息
category_id INT NOT NULL DEFAULT 0 COMMENT '分类ID',
title NVARCHAR(255) NOT NULL COMMENT '商品标题',
img_url NVARCHAR(500) NOT NULL COMMENT '商品图片URL',
img_url_detail NVARCHAR(500) NOT NULL COMMENT '商品详情图片URL',
prize_img_url NVARCHAR(500) NULL COMMENT '奖品图片URL',
goods_describe NVARCHAR(300) NULL COMMENT '商品描述',
-- 价格和库存
price DECIMAL(10,2) NOT NULL DEFAULT 0.00 COMMENT '商品价格',
stock INT NOT NULL DEFAULT 0 COMMENT '总库存',
sale_stock INT NOT NULL DEFAULT 0 COMMENT '已售库存',
show_price NVARCHAR(100) NULL COMMENT '显示价格(营销用)',
-- 定价策略
day_price DECIMAL(10,2) NOT NULL DEFAULT 0.00 COMMENT '日价格',
mouth_price DECIMAL(10,2) NOT NULL DEFAULT 0.00 COMMENT '月价格',
mouth_pay_price DECIMAL(10,2) NOT NULL DEFAULT 0.00 COMMENT '月支付价格',
day_pay_price DECIMAL(10,2) NOT NULL DEFAULT 0.00 COMMENT '日支付价格',
-- 商品状态和类型
type TINYINT NOT NULL DEFAULT 0 COMMENT '商品类型 1一番赏 2无限赏 3擂台赏等',
status TINYINT NOT NULL DEFAULT 1 COMMENT '状态 0下架 1上架 2待审核 3预售',
sort_order INT NOT NULL DEFAULT 1 COMMENT '排序权重',
-- 显示控制
is_show TINYINT NOT NULL DEFAULT 0 COMMENT '首页显示 0显示 1不显示',
is_discount TINYINT NOT NULL DEFAULT 0 COMMENT '是否折扣 0否 1是',
is_new TINYINT NOT NULL DEFAULT 0 COMMENT '是否新品 0否 1是',
-- 锁箱功能
is_lock TINYINT NOT NULL DEFAULT 0 COMMENT '是否锁箱 0否 1是',
lock_time INT NOT NULL DEFAULT 0 COMMENT '锁箱时间(秒)',
-- 功能开关
coupon_is TINYINT NOT NULL DEFAULT 0 COMMENT '优惠券功能 0关闭 1开启',
coupon_pro INT NOT NULL DEFAULT 0 COMMENT '优惠券概率',
integral_is TINYINT NOT NULL DEFAULT 0 COMMENT '积分功能 0关闭 1开启',
-- 抽奖相关
prize_num INT NOT NULL DEFAULT 0 COMMENT '奖品数量',
draw_limit INT NOT NULL DEFAULT 0 COMMENT '抽奖限制次数',
-- 限购控制
daily_limit INT NOT NULL DEFAULT 0 COMMENT '每日限购数量 0不限制',
global_limit INT NOT NULL DEFAULT 0 COMMENT '全局限购数量 0不限制',
unlock_amount DECIMAL(10,2) NOT NULL DEFAULT 0.00 COMMENT '解锁金额门槛',
user_level INT NOT NULL DEFAULT -1 COMMENT '用户等级限制 -1不限制',
-- 特殊功能
rage_is TINYINT NOT NULL DEFAULT 0 COMMENT '暴怒功能 0关闭 1开启',
rage INT NOT NULL DEFAULT 0 COMMENT '暴怒值',
lingzhu_is TINYINT NOT NULL DEFAULT 0 COMMENT '灵珠功能 0关闭 1开启',
lingzhu_fan INT NOT NULL DEFAULT 0 COMMENT '灵珠返还',
lingzhu_shang_id INT NOT NULL DEFAULT 0 COMMENT '灵珠奖品ID',
lian_ji_num INT NOT NULL DEFAULT 0 COMMENT '连击数量',
lian_ji_shang_id INT NOT NULL DEFAULT 0 COMMENT '连击奖品ID',
king_user_id INT NOT NULL DEFAULT 0 COMMENT '拳王用户ID',
-- 福利屋功能 (重要383个商品启用)
is_flw TINYINT NOT NULL DEFAULT 0 COMMENT '福利屋功能 0关闭 1开启',
flw_start_time INT NOT NULL DEFAULT 0 COMMENT '福利屋开始时间戳',
flw_end_time INT NOT NULL DEFAULT 0 COMMENT '福利屋结束时间戳',
open_time INT NOT NULL DEFAULT 0 COMMENT '开放时间戳',
is_open TINYINT NOT NULL DEFAULT 0 COMMENT '是否开放 0关闭 1开放',
-- 自动下架功能 (47个商品启用)
is_auto_xiajia TINYINT NOT NULL DEFAULT 0 COMMENT '自动下架 0关闭 1开启',
xiajia_lirun INT NOT NULL DEFAULT 0 COMMENT '下架利润阈值',
xiajia_auto_coushu INT NOT NULL DEFAULT 0 COMMENT '下架自动抽数',
xiajia_jine INT NOT NULL DEFAULT 0 COMMENT '下架金额阈值',
-- 卡片功能
card_banner NVARCHAR(500) NULL COMMENT '卡片横幅图片',
card_set NVARCHAR(MAX) NULL COMMENT '卡片设置JSON',
card_notice NVARCHAR(500) NULL COMMENT '卡片通知',
card_num INT NOT NULL DEFAULT 1 COMMENT '卡片数量',
item_card_id INT NOT NULL DEFAULT 0 COMMENT '道具卡ID',
-- 同步相关 (21个商品有异步代码)
async_code NVARCHAR(64) NULL COMMENT '异步同步代码',
async_date DATETIME2 NULL COMMENT '异步同步时间',
-- 时间字段
sale_time INT NOT NULL DEFAULT 0 COMMENT '开售时间戳',
created_at INT NOT NULL COMMENT '创建时间戳',
updated_at INT NOT NULL DEFAULT 0 COMMENT '更新时间戳',
deleted_at INT NULL COMMENT '删除时间戳',
-- 索引
INDEX ix_goods_type_status (type, status),
INDEX ix_goods_status_sort (status, sort_order DESC),
INDEX ix_goods_category_id (category_id),
INDEX ix_goods_created_at (created_at),
INDEX ix_goods_unlock_amount (unlock_amount)
);
INDEX ix_goods_unlock_amount (unlock_amount),
INDEX ix_goods_daily_limit (daily_limit),
INDEX ix_goods_global_limit (global_limit),
INDEX ix_goods_is_flw (is_flw),
INDEX ix_goods_is_auto_xiajia (is_auto_xiajia),
INDEX ix_goods_async_code (async_code),
INDEX ix_goods_user_level (user_level),
INDEX ix_goods_sale_time (sale_time)
) COMMENT = '商品主表 - 包含完整54个字段的业务逻辑';
-- 商品奖品列表
CREATE TABLE goods_items (
id INT IDENTITY(1,1) PRIMARY KEY,
goods_id INT NOT NULL,
box_number INT NOT NULL,
prize_id INT NOT NULL,
title NVARCHAR(255) NOT NULL,
stock INT NOT NULL DEFAULT 0,
surplus_stock INT NOT NULL DEFAULT 0,
img_url NVARCHAR(500) NOT NULL,
goods_type TINYINT NOT NULL DEFAULT 1,
price DECIMAL(18,2) NOT NULL DEFAULT 0,
market_price DECIMAL(18,2) NOT NULL DEFAULT 0,
real_probability DECIMAL(8,4) NOT NULL DEFAULT 0,
parent_item_id INT NOT NULL DEFAULT 0,
sale_time DATETIME2 NULL,
sort_order INT NOT NULL DEFAULT 1,
created_at DATETIME2 NOT NULL DEFAULT GETDATE(),
updated_at DATETIME2 NOT NULL DEFAULT GETDATE(),
goods_id INT NOT NULL COMMENT '商品ID',
box_number INT NOT NULL COMMENT '箱号',
prize_id INT NOT NULL COMMENT '奖品等级ID',
title NVARCHAR(255) NOT NULL COMMENT '奖品名称',
stock INT NOT NULL DEFAULT 0 COMMENT '奖品库存',
surplus_stock INT NOT NULL DEFAULT 0 COMMENT '剩余库存',
img_url NVARCHAR(500) NOT NULL COMMENT '奖品图片URL',
goods_type TINYINT NOT NULL DEFAULT 1 COMMENT '奖品类型',
price DECIMAL(18,2) NOT NULL DEFAULT 0 COMMENT '奖品价格',
market_price DECIMAL(18,2) NOT NULL DEFAULT 0 COMMENT '市场价格',
real_probability DECIMAL(8,4) NOT NULL DEFAULT 0 COMMENT '真实概率',
parent_item_id INT NOT NULL DEFAULT 0 COMMENT '父奖品ID(子奖品用)',
sale_time DATETIME2 NULL COMMENT '开售时间',
sort_order INT NOT NULL DEFAULT 1 COMMENT '排序权重',
created_at DATETIME2 NOT NULL DEFAULT GETDATE() COMMENT '创建时间',
updated_at DATETIME2 NOT NULL DEFAULT GETDATE() COMMENT '更新时间',
-- 索引
INDEX ix_goods_items_goods_box (goods_id, box_number),
@ -263,42 +465,42 @@ CREATE TABLE goods_items (
-- 外键
CONSTRAINT fk_goods_items_goods_id FOREIGN KEY (goods_id) REFERENCES goods(id)
);
) COMMENT = '商品奖品列表';
-- 商品类型配置
CREATE TABLE goods_types (
id INT IDENTITY(1,1) PRIMARY KEY,
type_value INT NOT NULL,
corner_text NVARCHAR(50) NOT NULL,
pay_wechat TINYINT NOT NULL DEFAULT 1,
pay_balance TINYINT NOT NULL DEFAULT 1,
pay_currency TINYINT NOT NULL DEFAULT 1,
pay_currency2 TINYINT NOT NULL DEFAULT 1,
pay_coupon TINYINT NOT NULL DEFAULT 1,
is_deduction TINYINT NOT NULL DEFAULT 1,
created_at DATETIME2 NOT NULL DEFAULT GETDATE(),
updated_at DATETIME2 NOT NULL DEFAULT GETDATE(),
type_value INT NOT NULL COMMENT '类型值',
corner_text NVARCHAR(50) NOT NULL COMMENT '角标文字',
pay_wechat TINYINT NOT NULL DEFAULT 1 COMMENT '支持微信支付 0否 1是',
pay_balance TINYINT NOT NULL DEFAULT 1 COMMENT '支持余额支付 0否 1是',
pay_currency TINYINT NOT NULL DEFAULT 1 COMMENT '支持积分支付 0否 1是',
pay_currency2 TINYINT NOT NULL DEFAULT 1 COMMENT '支持积分2支付 0否 1是',
pay_coupon TINYINT NOT NULL DEFAULT 1 COMMENT '支持优惠券 0否 1是',
is_deduction TINYINT NOT NULL DEFAULT 1 COMMENT '支持抵扣 0否 1是',
created_at DATETIME2 NOT NULL DEFAULT GETDATE() COMMENT '创建时间',
updated_at DATETIME2 NOT NULL DEFAULT GETDATE() COMMENT '更新时间',
-- 索引
INDEX ix_goods_types_value (type_value),
-- 约束
CONSTRAINT uk_goods_types_value UNIQUE (type_value)
);
) COMMENT = '商品类型配置表';
-- 商品扩展配置
CREATE TABLE goods_extensions (
id INT IDENTITY(1,1) PRIMARY KEY,
goods_id INT NOT NULL,
pay_wechat TINYINT NOT NULL DEFAULT 1,
pay_balance TINYINT NOT NULL DEFAULT 1,
pay_currency TINYINT NOT NULL DEFAULT 1,
pay_currency2 TINYINT NOT NULL DEFAULT 1,
pay_coupon TINYINT NOT NULL DEFAULT 1,
is_deduction TINYINT NOT NULL DEFAULT 1,
config_json NVARCHAR(MAX) NULL,
created_at DATETIME2 NOT NULL DEFAULT GETDATE(),
updated_at DATETIME2 NOT NULL DEFAULT GETDATE(),
goods_id INT NOT NULL COMMENT '商品ID',
pay_wechat TINYINT NOT NULL DEFAULT 1 COMMENT '支持微信支付 0否 1是',
pay_balance TINYINT NOT NULL DEFAULT 1 COMMENT '支持余额支付 0否 1是',
pay_currency TINYINT NOT NULL DEFAULT 1 COMMENT '支持积分支付 0否 1是',
pay_currency2 TINYINT NOT NULL DEFAULT 1 COMMENT '支持积分2支付 0否 1是',
pay_coupon TINYINT NOT NULL DEFAULT 1 COMMENT '支持优惠券 0否 1是',
is_deduction TINYINT NOT NULL DEFAULT 1 COMMENT '支持抵扣 0否 1是',
config_json NVARCHAR(MAX) NULL COMMENT '扩展配置JSON',
created_at DATETIME2 NOT NULL DEFAULT GETDATE() COMMENT '创建时间',
updated_at DATETIME2 NOT NULL DEFAULT GETDATE() COMMENT '更新时间',
-- 索引
INDEX ix_goods_extensions_goods_id (goods_id),
@ -306,35 +508,68 @@ CREATE TABLE goods_extensions (
-- 外键
CONSTRAINT fk_goods_extensions_goods_id FOREIGN KEY (goods_id) REFERENCES goods(id),
CONSTRAINT uk_goods_extensions_goods_id UNIQUE (goods_id)
);
) COMMENT = '商品扩展配置表';
```
##### 订单相关表
```sql
-- 订单主表
-- 订单主表 (完整33字段结构)
CREATE TABLE orders (
id INT IDENTITY(1,1) PRIMARY KEY,
order_no NVARCHAR(60) NOT NULL,
user_id INT NOT NULL,
goods_id INT NOT NULL,
box_number INT NOT NULL,
goods_title NVARCHAR(255) NOT NULL,
goods_img_url NVARCHAR(500) NULL,
order_type TINYINT NOT NULL DEFAULT 0,
order_total DECIMAL(18,2) NOT NULL,
discount_total DECIMAL(18,2) NOT NULL,
final_price DECIMAL(18,2) NOT NULL,
used_money DECIMAL(18,2) NOT NULL DEFAULT 0,
used_integral DECIMAL(18,2) NOT NULL DEFAULT 0,
used_money2 DECIMAL(18,2) NOT NULL DEFAULT 0,
coupon_id INT NULL DEFAULT 0,
used_coupon DECIMAL(18,2) NOT NULL DEFAULT 0,
draw_count INT NOT NULL DEFAULT 0,
pay_type TINYINT NOT NULL DEFAULT 1,
status TINYINT NOT NULL DEFAULT 0,
click_id INT NULL,
created_at DATETIME2 NOT NULL DEFAULT GETDATE(),
paid_at DATETIME2 NULL,
order_no NVARCHAR(60) NOT NULL COMMENT '订单号',
user_id INT NOT NULL COMMENT '用户ID',
goods_id INT NOT NULL COMMENT '商品ID',
box_number INT NOT NULL COMMENT '箱号',
-- 商品信息
goods_title NVARCHAR(255) NOT NULL COMMENT '商品标题',
goods_img_url NVARCHAR(500) NULL COMMENT '商品图片URL',
goods_price DECIMAL(10,2) NOT NULL COMMENT '商品单价',
-- 订单金额
order_total DECIMAL(10,2) NOT NULL COMMENT '订单总金额',
discount_total DECIMAL(10,2) NOT NULL COMMENT '折扣后金额',
final_price DECIMAL(10,2) NOT NULL COMMENT '最终支付金额',
discount_rate DECIMAL(10,2) NOT NULL COMMENT '折扣率',
-- 支付方式
used_money DECIMAL(10,2) NOT NULL DEFAULT 0 COMMENT '使用余额',
used_integral DECIMAL(10,2) NOT NULL DEFAULT 0 COMMENT '使用积分',
used_money2 DECIMAL(10,2) NOT NULL DEFAULT 0 COMMENT '使用积分2',
used_score DECIMAL(10,2) NOT NULL DEFAULT 0 COMMENT '使用评分',
used_draw INT NOT NULL DEFAULT 0 COMMENT '使用抽奖次数',
used_item_card INT NOT NULL DEFAULT 0 COMMENT '使用道具卡',
-- 优惠券
coupon_id INT NULL DEFAULT 0 COMMENT '优惠券ID',
used_coupon DECIMAL(10,2) NOT NULL DEFAULT 0 COMMENT '优惠券抵扣金额',
-- 抽奖相关
draw_count INT NOT NULL DEFAULT 0 COMMENT '抽奖次数',
prize_card_set NVARCHAR(MAX) NULL COMMENT '奖品卡片设置JSON',
-- 订单属性
order_type TINYINT NOT NULL DEFAULT 0 COMMENT '订单类型',
pay_type TINYINT NOT NULL DEFAULT 1 COMMENT '支付方式 1微信 2支付宝',
status TINYINT NOT NULL DEFAULT 0 COMMENT '订单状态 0待支付 1已支付 2已取消',
-- 特殊标识
is_treasure TINYINT NOT NULL DEFAULT 0 COMMENT '是否秘宝 0否 1是',
is_discount TINYINT NOT NULL DEFAULT 0 COMMENT '是否折扣 0否 1是',
is_flw TINYINT NOT NULL DEFAULT 0 COMMENT '是否福利屋 0否 1是',
-- 快递相关
is_express TINYINT NOT NULL DEFAULT 0 COMMENT '是否需要快递 0否 1是',
auto_ship TINYINT NOT NULL DEFAULT 0 COMMENT '自动发货 0否 1是',
auto_ship_time INT NULL COMMENT '自动发货时间戳',
-- 广告和推广
ad_id INT NULL COMMENT '广告ID',
click_id INT NULL COMMENT '点击ID',
-- 时间字段
created_at INT NOT NULL COMMENT '创建时间戳',
paid_at INT NOT NULL DEFAULT 0 COMMENT '支付时间戳',
-- 索引
INDEX ix_orders_user_status (user_id, status),
@ -343,6 +578,8 @@ CREATE TABLE orders (
INDEX ix_orders_created_at (created_at),
INDEX ix_orders_paid_at (paid_at),
INDEX ix_orders_status (status),
INDEX ix_orders_pay_type (pay_type),
INDEX ix_orders_order_type (order_type),
-- 约束
CONSTRAINT uk_orders_order_no UNIQUE (order_no),
@ -350,23 +587,23 @@ CREATE TABLE orders (
-- 外键
CONSTRAINT fk_orders_user_id FOREIGN KEY (user_id) REFERENCES users(id),
CONSTRAINT fk_orders_goods_id FOREIGN KEY (goods_id) REFERENCES goods(id)
);
) COMMENT = '订单主表 - 包含完整33个字段的订单逻辑';
-- 订单详情表 (抽奖结果)
CREATE TABLE order_items (
id INT IDENTITY(1,1) PRIMARY KEY,
order_id NVARCHAR(60) NOT NULL,
user_id INT NOT NULL,
goods_id INT NOT NULL,
box_number INT NOT NULL,
goods_item_id INT NOT NULL,
item_title NVARCHAR(255) NOT NULL,
item_img_url NVARCHAR(500) NULL,
prize_id INT NOT NULL,
order_type TINYINT NOT NULL,
source TINYINT NOT NULL DEFAULT 1,
item_price DECIMAL(18,2) NOT NULL DEFAULT 0,
created_at DATETIME2 NOT NULL DEFAULT GETDATE(),
order_id NVARCHAR(60) NOT NULL COMMENT '订单号',
user_id INT NOT NULL COMMENT '用户ID',
goods_id INT NOT NULL COMMENT '商品ID',
box_number INT NOT NULL COMMENT '箱号',
goods_item_id INT NOT NULL COMMENT '商品奖品ID',
item_title NVARCHAR(255) NOT NULL COMMENT '奖品标题',
item_img_url NVARCHAR(500) NULL COMMENT '奖品图片URL',
prize_id INT NOT NULL COMMENT '奖品等级ID',
order_type TINYINT NOT NULL COMMENT '订单类型',
source TINYINT NOT NULL DEFAULT 1 COMMENT '来源 1正常抽奖',
item_price DECIMAL(18,2) NOT NULL DEFAULT 0 COMMENT '奖品价格',
created_at DATETIME2 NOT NULL DEFAULT GETDATE() COMMENT '创建时间',
-- 索引
INDEX ix_order_items_order_id (order_id),
@ -378,7 +615,68 @@ CREATE TABLE order_items (
-- 外键
CONSTRAINT fk_order_items_user_id FOREIGN KEY (user_id) REFERENCES users(id),
CONSTRAINT fk_order_items_goods_id FOREIGN KEY (goods_id) REFERENCES goods(id)
);
) COMMENT = '订单详情表(抽奖结果)';
```
##### 钻石系统表
```sql
-- 钻石商品表
CREATE TABLE diamond_products (
id INT IDENTITY(1,1) PRIMARY KEY,
name NVARCHAR(50) NOT NULL COMMENT '钻石商品名称',
product_id NVARCHAR(64) NOT NULL COMMENT '商品ID',
product_type NVARCHAR(64) NOT NULL COMMENT '商品类型',
base_reward NVARCHAR(64) NOT NULL COMMENT '基础奖励',
price DECIMAL(10,2) NOT NULL COMMENT '价格',
is_first TINYINT DEFAULT 0 COMMENT '是否首充商品 0否 1是',
first_bonus_reward NVARCHAR(64) NULL COMMENT '首充额外奖励',
first_charge_image NVARCHAR(255) NULL COMMENT '首充图片',
first_select_charge_image NVARCHAR(255) NULL COMMENT '首充选中图片',
normal_image NVARCHAR(255) NULL COMMENT '普通图片',
normal_select_image NVARCHAR(255) NULL COMMENT '普通选中图片',
sort_order INT DEFAULT 0 COMMENT '排序',
status TINYINT DEFAULT 1 COMMENT '状态 0禁用 1启用',
created_at DATETIME2 DEFAULT GETDATE() COMMENT '创建时间',
updated_at DATETIME2 DEFAULT GETDATE() COMMENT '更新时间',
-- 索引
INDEX ix_diamond_products_product_id (product_id),
INDEX ix_diamond_products_status_sort (status, sort_order),
-- 约束
CONSTRAINT uk_diamond_products_product_id UNIQUE (product_id)
) COMMENT = '钻石商品配置表';
-- 钻石订单表
CREATE TABLE diamond_orders (
id BIGINT IDENTITY(1,1) PRIMARY KEY,
order_no NVARCHAR(64) NOT NULL COMMENT '订单号',
user_id BIGINT NOT NULL COMMENT '用户ID',
diamond_id INT NOT NULL COMMENT '钻石商品ID',
product_id NVARCHAR(64) NOT NULL COMMENT '商品ID',
product_name NVARCHAR(50) NULL COMMENT '商品名称',
amount_paid DECIMAL(10,2) NOT NULL COMMENT '支付金额',
pay_method NVARCHAR(20) NOT NULL COMMENT '支付方式',
reward_log NVARCHAR(300) NULL COMMENT '奖励日志',
is_first_charge TINYINT DEFAULT 0 COMMENT '是否首充 0否 1是',
status NVARCHAR(20) DEFAULT 'pending' COMMENT '订单状态 pending待支付 paid已支付 failed失败',
created_at DATETIME2 DEFAULT GETDATE() COMMENT '创建时间',
paid_at DATETIME2 NULL COMMENT '支付时间',
-- 索引
INDEX ix_diamond_orders_order_no (order_no),
INDEX ix_diamond_orders_user_id (user_id),
INDEX ix_diamond_orders_status (status),
INDEX ix_diamond_orders_created_at (created_at),
INDEX ix_diamond_orders_paid_at (paid_at),
-- 约束
CONSTRAINT uk_diamond_orders_order_no UNIQUE (order_no),
-- 外键
CONSTRAINT fk_diamond_orders_user_id FOREIGN KEY (user_id) REFERENCES users(id),
CONSTRAINT fk_diamond_orders_diamond_id FOREIGN KEY (diamond_id) REFERENCES diamond_products(id)
) COMMENT = '钻石订单表';
```
### 1.3 数据迁移映射表 (0.5天)
@ -415,64 +713,203 @@ user -> users:
istest -> is_test
uid -> uid
click_id -> click_id
draw_num -> draw_num (新增字段)
password -> password (新增字段)
is_use_coupon -> is_use_coupon (新增字段)
addtime -> created_at (时间戳转换)
update_time -> updated_at (时间戳转换)
last_login_time -> last_login_at (时间戳转换)
```
##### 商品表映射
##### 商品表映射 (完整54字段)
```yaml
goods -> goods:
# 基础信息
id -> id
category_id -> category_id
title -> title
imgurl -> img_url
imgurl_detail -> img_url_detail
prize_imgurl -> prize_img_url
goods_describe -> goods_describe
# 价格和库存
price -> price
stock -> stock
sale_stock -> sale_stock
show_price -> show_price
# 定价策略
day_price -> day_price
mouth_price -> mouth_price
mouth_pay_price -> mouth_pay_price
day_pay_price -> day_pay_price
# 商品状态和类型
type -> type
status -> status
lock_is -> is_lock
lock_time -> lock_time
sort -> sort_order
# 显示控制
show_is -> is_show
is_shou_zhe -> is_discount
new_is -> is_new
show_is -> is_show
unlock_amount -> unlock_amount
# 锁箱功能
lock_is -> is_lock
lock_time -> lock_time
# 功能开关
coupon_is -> coupon_is
coupon_pro -> coupon_pro
integral_is -> integral_is
# 抽奖相关
prize_num -> prize_num
choujiang_xianzhi -> draw_limit
# 限购控制
daily_xiangou -> daily_limit
quanju_xiangou -> global_limit
sort -> sort_order
sale_time -> sale_time (时间戳转换)
addtime -> created_at (时间戳转换)
update_time -> updated_at (时间戳转换)
delete_time -> deleted_at (时间戳转换)
unlock_amount -> unlock_amount
user_lv -> user_level
# 特殊功能
rage_is -> rage_is
rage -> rage
lingzhu_is -> lingzhu_is
lingzhu_fan -> lingzhu_fan
lingzhu_shang_id -> lingzhu_shang_id
lian_ji_num -> lian_ji_num
lian_ji_shang_id -> lian_ji_shang_id
king_user_id -> king_user_id
# 福利屋功能
is_flw -> is_flw
flw_start_time -> flw_start_time
flw_end_time -> flw_end_time
open_time -> open_time
is_open -> is_open
# 自动下架功能
is_auto_xiajia -> is_auto_xiajia
xiajia_lirun -> xiajia_lirun
xiajia_auto_coushu -> xiajia_auto_coushu
xiajia_jine -> xiajia_jine
# 卡片功能
card_banner -> card_banner
card_set -> card_set
card_notice -> card_notice
card_num -> card_num
item_card_id -> item_card_id
# 同步相关
async_code -> async_code
async_date -> async_date (datetime转换)
# 时间字段
sale_time -> sale_time (时间戳保持)
addtime -> created_at (时间戳保持)
update_time -> updated_at (时间戳保持)
delete_time -> deleted_at (时间戳保持)
```
##### 订单表映射
##### 订单表映射 (完整33字段)
```yaml
order -> orders:
# 基础信息
id -> id
order_num -> order_no
user_id -> user_id
goods_id -> goods_id
num -> box_number
# 商品信息
goods_title -> goods_title
goods_imgurl -> goods_img_url
order_type -> order_type
goods_price -> goods_price
# 订单金额
order_total -> order_total
order_zhe_total -> discount_total
price -> final_price
zhe -> discount_rate
# 支付方式
use_money -> used_money
use_integral -> used_integral
use_money2 -> used_money2
use_score -> used_score
use_draw -> used_draw
use_item_card -> used_item_card
# 优惠券
coupon_id -> coupon_id
use_coupon -> used_coupon
# 抽奖相关
prize_num -> draw_count
prize_card_set -> prize_card_set
# 订单属性
order_type -> order_type
pay_type -> pay_type
status -> status
# 特殊标识
is_mibao -> is_treasure
is_shou_zhe -> is_discount
is_flw -> is_flw
# 快递相关
kd_is -> is_express
zdfh_is -> auto_ship
zdfh_time -> auto_ship_time
# 广告和推广
ad_id -> ad_id
click_id -> click_id
addtime -> created_at (时间戳转换)
pay_time -> paid_at (时间戳转换)
# 时间字段
addtime -> created_at (时间戳保持)
pay_time -> paid_at (时间戳保持)
```
##### 钻石系统映射
```yaml
diamond_products -> diamond_products:
id -> id
name -> name
products_id -> product_id
products_type -> product_type
base_reward -> base_reward
price -> price
is_first -> is_first
first_bonus_reward -> first_bonus_reward
first_charge_image -> first_charge_image
first_select_charge_image -> first_select_charge_image
normal_image -> normal_image
normal_select_image -> normal_select_image
sort_order -> sort_order
status -> status
created_at -> created_at (直接映射)
updated_at -> updated_at (直接映射)
diamond_orders -> diamond_orders:
id -> id
order_no -> order_no
user_id -> user_id
diamond_id -> diamond_id
product_id -> product_id
product_name -> product_name
amount_paid -> amount_paid
pay_method -> pay_method
reward_log -> reward_log
is_first_charge -> is_first_charge
status -> status
created_at -> created_at (直接映射)
paid_at -> paid_at (直接映射)
```
## 验收标准
@ -527,6 +964,62 @@ order -> orders:
- [ ] 字段映射关系表
- [ ] 数据转换规则文档
## 关键发现和重要说明
### 🔍 数据库分析关键发现
#### 商品表复杂度超预期
- **实际字段数**: 54个字段 (远超初期估计)
- **福利屋功能**: 383/503商品启用是核心业务功能
- **自动下架功能**: 47/503商品启用涉及利润控制
- **商品描述**: 402/503商品有描述用户体验重要字段
- **异步同步**: 21/503商品有异步代码可能涉及第三方集成(这个是从测试环境同步到正式环境的编号,因为所有的盒子都需要从测试环境试完概率后才能上线到正式环境。)
#### 业务功能丰富度高
- **多种定价策略**: 日价格、月价格、支付价格等
- **复杂抽奖逻辑**: 领主、连击、暴怒、拳王等多种玩法
- **精细化控制**: 限购、等级限制、解锁门槛等
- **营销功能完善**: 优惠券、积分、折扣等
#### 数据完整性良好
- **用户数据**: 2,201个用户活跃度较高
- **商品数据**: 503个商品业务功能使用率高
- **钻石系统**: 398个订单352个已支付收入稳定
- **订单数据**: 虽然总量不大(15个),但钻石订单活跃
### ⚠️ 迁移风险提醒
#### 高风险点
1. **福利屋功能**: 383个商品依赖迁移时需特别注意时间戳处理
2. **自动下架逻辑**: 涉及利润计算,业务逻辑复杂
3. **多种支付方式**: 余额、积分、积分2、优惠券等组合支付
4. **时间戳处理**: MySQL使用INT时间戳SQL Server需要转换
#### 中风险点
1. **异步同步功能**: 21个商品有异步代码可能涉及外部系统
2. **卡片系统**: JSON数据存储需要验证SQL Server兼容性
3. **灵珠等特殊功能**: 虽然使用量少,但逻辑复杂
### 📋 下一步行动计划
#### 立即执行 (阶段1剩余工作)
- [ ] 验证其他核心表结构完整性
- [ ] 确认所有表的字段映射关系
- [ ] 设计数据转换和验证规则
- [ ] 准备阶段2的环境搭建清单
#### 需要业务确认的问题
1. **异步同步功能**: 21个商品的async_code是否还在使用
2. **灵珠功能**: 8个商品的灵珠功能是否需要保留
3. **拳王系统**: king_user_id字段的业务逻辑确认
4. **卡片系统**: card_set JSON结构的详细说明
#### 技术准备工作
1. **SQL Server环境**: 确保支持NVARCHAR(MAX)和JSON处理
2. **时间戳转换**: 准备INT到DATETIME2的转换脚本
3. **数据验证**: 设计迁移前后的数据一致性检查
4. **回滚方案**: 准备完整的数据回滚策略
---
**阶段1完成标志**: 完成业务分析,确定迁移范围,设计好新的表结构,为后续数据迁移奠定基础。