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 (15条) - 订单主表
- order_list (67条) - 订单详情 - order_list (67条) - 订单详情
钻石系统:
- diamond_orders (398条) - 钻石订单 (有实际交易数据)
- diamond_products (5条) - 钻石商品配置
财务相关: 财务相关:
- profit_money (26,061条) - 余额明细 - profit_money (26,061条) - 余额明细
- profit_integral (33,487条) - 积分明细 - profit_integral (33,487条) - 积分明细
@ -109,6 +113,127 @@ VIP系统:
#### 任务描述 #### 任务描述
基于snake_case命名规范重新设计表结构 基于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 - [ ] 统一命名规范为snake_case
- [ ] 优化数据类型和字段长度 - [ ] 优化数据类型和字段长度
@ -122,27 +247,30 @@ VIP系统:
-- 用户主表 -- 用户主表
CREATE TABLE users ( CREATE TABLE users (
id INT IDENTITY(1,1) PRIMARY KEY, id INT IDENTITY(1,1) PRIMARY KEY,
open_id NVARCHAR(50) NOT NULL, open_id NVARCHAR(50) NOT NULL COMMENT '微信OpenID',
union_id NVARCHAR(255) NULL, union_id NVARCHAR(255) NULL COMMENT '微信UnionID',
gzh_open_id NVARCHAR(255) NULL, gzh_open_id NVARCHAR(255) NULL COMMENT '公众号OpenID',
mobile NVARCHAR(15) NULL, mobile NVARCHAR(15) NULL COMMENT '手机号',
nickname NVARCHAR(255) NOT NULL, nickname NVARCHAR(255) NOT NULL COMMENT '昵称',
head_img NVARCHAR(500) NOT NULL, head_img NVARCHAR(500) NOT NULL COMMENT '头像URL',
parent_id INT NOT NULL DEFAULT 0, parent_id INT NOT NULL DEFAULT 0 COMMENT '推荐人ID',
money DECIMAL(18,2) NOT NULL DEFAULT 0, money DECIMAL(18,2) NOT NULL DEFAULT 0 COMMENT '余额',
money2 DECIMAL(18,2) NOT NULL DEFAULT 0, money2 DECIMAL(18,2) NOT NULL DEFAULT 0 COMMENT '积分货币',
integral DECIMAL(18,2) NOT NULL DEFAULT 0, integral DECIMAL(18,2) NOT NULL DEFAULT 0 COMMENT '积分',
score DECIMAL(18,2) NOT NULL DEFAULT 0, score DECIMAL(18,2) NOT NULL DEFAULT 0 COMMENT '评分',
ou_qi INT NOT NULL DEFAULT 0, ou_qi INT NOT NULL DEFAULT 0 COMMENT '欧气值',
ou_qi_level INT NOT NULL DEFAULT 0, ou_qi_level INT NOT NULL DEFAULT 0 COMMENT '欧气等级',
vip_level TINYINT NOT NULL DEFAULT 1, vip_level TINYINT NOT NULL DEFAULT 1 COMMENT 'VIP等级',
status TINYINT NOT NULL DEFAULT 1, status TINYINT NOT NULL DEFAULT 1 COMMENT '状态 0禁用 1正常',
is_test INT NOT NULL DEFAULT 0, is_test INT NOT NULL DEFAULT 0 COMMENT '是否测试账号',
uid NVARCHAR(16) NOT NULL, uid NVARCHAR(16) NOT NULL COMMENT '用户唯一标识',
click_id INT NULL, click_id INT NULL COMMENT '点击ID',
created_at DATETIME2 NOT NULL DEFAULT GETDATE(), draw_num INT NOT NULL DEFAULT 0 COMMENT '抽奖次数',
updated_at DATETIME2 NOT NULL DEFAULT GETDATE(), password NVARCHAR(40) NULL COMMENT '密码',
last_login_at DATETIME2 NULL, 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), 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_open_id UNIQUE (open_id),
CONSTRAINT uk_users_uid UNIQUE (uid) CONSTRAINT uk_users_uid UNIQUE (uid)
); ) COMMENT = '用户主表';
-- 用户账户表 -- 用户账户表
CREATE TABLE user_accounts ( CREATE TABLE user_accounts (
id INT IDENTITY(1,1) PRIMARY KEY, id INT IDENTITY(1,1) PRIMARY KEY,
user_id INT NOT NULL, user_id INT NOT NULL COMMENT '用户ID',
account_token NVARCHAR(255) NOT NULL, account_token NVARCHAR(255) NOT NULL COMMENT '账户令牌',
token_num NVARCHAR(50) NOT NULL, token_num NVARCHAR(50) NOT NULL COMMENT '令牌编号',
token_time BIGINT NOT NULL, token_time BIGINT NOT NULL COMMENT '令牌时间',
last_login_time BIGINT NOT NULL, last_login_time BIGINT NOT NULL COMMENT '最后登录时间戳',
last_login_ip BIGINT NOT NULL, last_login_ip BIGINT NOT NULL COMMENT '最后登录IP(数值)',
last_login_ip_str NVARCHAR(45) NOT NULL, last_login_ip_str NVARCHAR(45) NOT NULL COMMENT '最后登录IP(字符串)',
ip_province NVARCHAR(50) NULL, ip_province NVARCHAR(50) NULL COMMENT 'IP省份',
ip_city NVARCHAR(50) NULL, ip_city NVARCHAR(50) NULL COMMENT 'IP城市',
ip_adcode NVARCHAR(20) NULL, ip_adcode NVARCHAR(20) NULL COMMENT 'IP区域代码',
created_at DATETIME2 NOT NULL DEFAULT GETDATE(), created_at DATETIME2 NOT NULL DEFAULT GETDATE() COMMENT '创建时间',
updated_at DATETIME2 NOT NULL DEFAULT GETDATE(), updated_at DATETIME2 NOT NULL DEFAULT GETDATE() COMMENT '更新时间',
-- 索引 -- 索引
INDEX ix_user_accounts_user_id (user_id), 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) CONSTRAINT fk_user_accounts_user_id FOREIGN KEY (user_id) REFERENCES users(id)
); ) COMMENT = '用户账户信息表';
-- 用户登录日志表 -- 用户登录日志表
CREATE TABLE user_login_logs ( CREATE TABLE user_login_logs (
id INT IDENTITY(1,1) PRIMARY KEY, id INT IDENTITY(1,1) PRIMARY KEY,
user_id INT NOT NULL, user_id INT NOT NULL COMMENT '用户ID',
platform NVARCHAR(50) NOT NULL, platform NVARCHAR(50) NOT NULL COMMENT '登录平台',
ip_address NVARCHAR(45) NOT NULL, ip_address NVARCHAR(45) NOT NULL COMMENT 'IP地址',
location NVARCHAR(100) NULL, location NVARCHAR(100) NULL COMMENT '登录地点',
device NVARCHAR(100) NULL, device NVARCHAR(100) NULL COMMENT '设备信息',
device_info NVARCHAR(500) NULL, device_info NVARCHAR(500) NULL COMMENT '详细设备信息',
login_time DATETIME2 NOT NULL DEFAULT GETDATE(), login_time DATETIME2 NOT NULL DEFAULT GETDATE() COMMENT '登录时间',
-- 索引 -- 索引
INDEX ix_user_login_logs_user_id (user_id), INDEX ix_user_login_logs_user_id (user_id),
INDEX ix_user_login_logs_login_time (login_time), INDEX ix_user_login_logs_login_time (login_time),
INDEX ix_user_login_logs_platform (platform) INDEX ix_user_login_logs_platform (platform)
); ) COMMENT = '用户登录日志表';
``` ```
##### 商品相关表 ##### 商品相关表
```sql ```sql
-- 商品主表 -- 商品主表 (完整54字段结构)
CREATE TABLE goods ( CREATE TABLE goods (
id INT IDENTITY(1,1) PRIMARY KEY, 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, category_id INT NOT NULL DEFAULT 0 COMMENT '分类ID',
img_url_detail NVARCHAR(500) NOT NULL, title NVARCHAR(255) NOT NULL COMMENT '商品标题',
price DECIMAL(18,2) NOT NULL DEFAULT 0, img_url NVARCHAR(500) NOT NULL COMMENT '商品图片URL',
stock INT NOT NULL DEFAULT 0, img_url_detail NVARCHAR(500) NOT NULL COMMENT '商品详情图片URL',
sale_stock INT NOT NULL DEFAULT 0, prize_img_url NVARCHAR(500) NULL COMMENT '奖品图片URL',
type TINYINT NOT NULL DEFAULT 0, goods_describe NVARCHAR(300) NULL COMMENT '商品描述',
status TINYINT NOT NULL DEFAULT 1,
is_lock TINYINT NOT NULL DEFAULT 0, -- 价格和库存
lock_time INT NOT NULL DEFAULT 0, price DECIMAL(10,2) NOT NULL DEFAULT 0.00 COMMENT '商品价格',
is_discount TINYINT NOT NULL DEFAULT 0, stock INT NOT NULL DEFAULT 0 COMMENT '总库存',
is_new TINYINT NOT NULL DEFAULT 0, sale_stock INT NOT NULL DEFAULT 0 COMMENT '已售库存',
is_show TINYINT NOT NULL DEFAULT 0, show_price NVARCHAR(100) NULL COMMENT '显示价格(营销用)',
unlock_amount DECIMAL(18,2) NOT NULL DEFAULT 0,
daily_limit INT NOT NULL DEFAULT 0, -- 定价策略
global_limit INT NOT NULL DEFAULT 0, day_price DECIMAL(10,2) NOT NULL DEFAULT 0.00 COMMENT '日价格',
sort_order INT NOT NULL DEFAULT 1, mouth_price DECIMAL(10,2) NOT NULL DEFAULT 0.00 COMMENT '月价格',
sale_time DATETIME2 NULL, mouth_pay_price DECIMAL(10,2) NOT NULL DEFAULT 0.00 COMMENT '月支付价格',
created_at DATETIME2 NOT NULL DEFAULT GETDATE(), day_pay_price DECIMAL(10,2) NOT NULL DEFAULT 0.00 COMMENT '日支付价格',
updated_at DATETIME2 NOT NULL DEFAULT GETDATE(),
deleted_at DATETIME2 NULL, -- 商品状态和类型
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_type_status (type, status),
INDEX ix_goods_status_sort (status, sort_order DESC), INDEX ix_goods_status_sort (status, sort_order DESC),
INDEX ix_goods_category_id (category_id), INDEX ix_goods_category_id (category_id),
INDEX ix_goods_created_at (created_at), 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 ( CREATE TABLE goods_items (
id INT IDENTITY(1,1) PRIMARY KEY, id INT IDENTITY(1,1) PRIMARY KEY,
goods_id INT NOT NULL, goods_id INT NOT NULL COMMENT '商品ID',
box_number INT NOT NULL, box_number INT NOT NULL COMMENT '箱号',
prize_id INT NOT NULL, prize_id INT NOT NULL COMMENT '奖品等级ID',
title NVARCHAR(255) NOT NULL, title NVARCHAR(255) NOT NULL COMMENT '奖品名称',
stock INT NOT NULL DEFAULT 0, stock INT NOT NULL DEFAULT 0 COMMENT '奖品库存',
surplus_stock INT NOT NULL DEFAULT 0, surplus_stock INT NOT NULL DEFAULT 0 COMMENT '剩余库存',
img_url NVARCHAR(500) NOT NULL, img_url NVARCHAR(500) NOT NULL COMMENT '奖品图片URL',
goods_type TINYINT NOT NULL DEFAULT 1, goods_type TINYINT NOT NULL DEFAULT 1 COMMENT '奖品类型',
price DECIMAL(18,2) NOT NULL DEFAULT 0, price DECIMAL(18,2) NOT NULL DEFAULT 0 COMMENT '奖品价格',
market_price DECIMAL(18,2) NOT NULL DEFAULT 0, market_price DECIMAL(18,2) NOT NULL DEFAULT 0 COMMENT '市场价格',
real_probability DECIMAL(8,4) NOT NULL DEFAULT 0, real_probability DECIMAL(8,4) NOT NULL DEFAULT 0 COMMENT '真实概率',
parent_item_id INT NOT NULL DEFAULT 0, parent_item_id INT NOT NULL DEFAULT 0 COMMENT '父奖品ID(子奖品用)',
sale_time DATETIME2 NULL, sale_time DATETIME2 NULL COMMENT '开售时间',
sort_order INT NOT NULL DEFAULT 1, sort_order INT NOT NULL DEFAULT 1 COMMENT '排序权重',
created_at DATETIME2 NOT NULL DEFAULT GETDATE(), created_at DATETIME2 NOT NULL DEFAULT GETDATE() COMMENT '创建时间',
updated_at DATETIME2 NOT NULL DEFAULT GETDATE(), updated_at DATETIME2 NOT NULL DEFAULT GETDATE() COMMENT '更新时间',
-- 索引 -- 索引
INDEX ix_goods_items_goods_box (goods_id, box_number), 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) CONSTRAINT fk_goods_items_goods_id FOREIGN KEY (goods_id) REFERENCES goods(id)
); ) COMMENT = '商品奖品列表';
-- 商品类型配置 -- 商品类型配置
CREATE TABLE goods_types ( CREATE TABLE goods_types (
id INT IDENTITY(1,1) PRIMARY KEY, id INT IDENTITY(1,1) PRIMARY KEY,
type_value INT NOT NULL, type_value INT NOT NULL COMMENT '类型值',
corner_text NVARCHAR(50) NOT NULL, corner_text NVARCHAR(50) NOT NULL COMMENT '角标文字',
pay_wechat TINYINT NOT NULL DEFAULT 1, pay_wechat TINYINT NOT NULL DEFAULT 1 COMMENT '支持微信支付 0否 1是',
pay_balance TINYINT NOT NULL DEFAULT 1, pay_balance TINYINT NOT NULL DEFAULT 1 COMMENT '支持余额支付 0否 1是',
pay_currency TINYINT NOT NULL DEFAULT 1, pay_currency TINYINT NOT NULL DEFAULT 1 COMMENT '支持积分支付 0否 1是',
pay_currency2 TINYINT NOT NULL DEFAULT 1, pay_currency2 TINYINT NOT NULL DEFAULT 1 COMMENT '支持积分2支付 0否 1是',
pay_coupon TINYINT NOT NULL DEFAULT 1, pay_coupon TINYINT NOT NULL DEFAULT 1 COMMENT '支持优惠券 0否 1是',
is_deduction TINYINT NOT NULL DEFAULT 1, is_deduction TINYINT NOT NULL DEFAULT 1 COMMENT '支持抵扣 0否 1是',
created_at DATETIME2 NOT NULL DEFAULT GETDATE(), created_at DATETIME2 NOT NULL DEFAULT GETDATE() COMMENT '创建时间',
updated_at DATETIME2 NOT NULL DEFAULT GETDATE(), updated_at DATETIME2 NOT NULL DEFAULT GETDATE() COMMENT '更新时间',
-- 索引 -- 索引
INDEX ix_goods_types_value (type_value), INDEX ix_goods_types_value (type_value),
-- 约束 -- 约束
CONSTRAINT uk_goods_types_value UNIQUE (type_value) CONSTRAINT uk_goods_types_value UNIQUE (type_value)
); ) COMMENT = '商品类型配置表';
-- 商品扩展配置 -- 商品扩展配置
CREATE TABLE goods_extensions ( CREATE TABLE goods_extensions (
id INT IDENTITY(1,1) PRIMARY KEY, id INT IDENTITY(1,1) PRIMARY KEY,
goods_id INT NOT NULL, goods_id INT NOT NULL COMMENT '商品ID',
pay_wechat TINYINT NOT NULL DEFAULT 1, pay_wechat TINYINT NOT NULL DEFAULT 1 COMMENT '支持微信支付 0否 1是',
pay_balance TINYINT NOT NULL DEFAULT 1, pay_balance TINYINT NOT NULL DEFAULT 1 COMMENT '支持余额支付 0否 1是',
pay_currency TINYINT NOT NULL DEFAULT 1, pay_currency TINYINT NOT NULL DEFAULT 1 COMMENT '支持积分支付 0否 1是',
pay_currency2 TINYINT NOT NULL DEFAULT 1, pay_currency2 TINYINT NOT NULL DEFAULT 1 COMMENT '支持积分2支付 0否 1是',
pay_coupon TINYINT NOT NULL DEFAULT 1, pay_coupon TINYINT NOT NULL DEFAULT 1 COMMENT '支持优惠券 0否 1是',
is_deduction TINYINT NOT NULL DEFAULT 1, is_deduction TINYINT NOT NULL DEFAULT 1 COMMENT '支持抵扣 0否 1是',
config_json NVARCHAR(MAX) NULL, config_json NVARCHAR(MAX) NULL COMMENT '扩展配置JSON',
created_at DATETIME2 NOT NULL DEFAULT GETDATE(), created_at DATETIME2 NOT NULL DEFAULT GETDATE() COMMENT '创建时间',
updated_at DATETIME2 NOT NULL DEFAULT GETDATE(), updated_at DATETIME2 NOT NULL DEFAULT GETDATE() COMMENT '更新时间',
-- 索引 -- 索引
INDEX ix_goods_extensions_goods_id (goods_id), 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 fk_goods_extensions_goods_id FOREIGN KEY (goods_id) REFERENCES goods(id),
CONSTRAINT uk_goods_extensions_goods_id UNIQUE (goods_id) CONSTRAINT uk_goods_extensions_goods_id UNIQUE (goods_id)
); ) COMMENT = '商品扩展配置表';
``` ```
##### 订单相关表 ##### 订单相关表
```sql ```sql
-- 订单主表 -- 订单主表 (完整33字段结构)
CREATE TABLE orders ( CREATE TABLE orders (
id INT IDENTITY(1,1) PRIMARY KEY, id INT IDENTITY(1,1) PRIMARY KEY,
order_no NVARCHAR(60) NOT NULL, order_no NVARCHAR(60) NOT NULL COMMENT '订单号',
user_id INT NOT NULL, user_id INT NOT NULL COMMENT '用户ID',
goods_id INT NOT NULL, goods_id INT NOT NULL COMMENT '商品ID',
box_number INT NOT NULL, box_number INT NOT NULL COMMENT '箱号',
goods_title NVARCHAR(255) NOT NULL,
goods_img_url NVARCHAR(500) NULL, -- 商品信息
order_type TINYINT NOT NULL DEFAULT 0, goods_title NVARCHAR(255) NOT NULL COMMENT '商品标题',
order_total DECIMAL(18,2) NOT NULL, goods_img_url NVARCHAR(500) NULL COMMENT '商品图片URL',
discount_total DECIMAL(18,2) NOT NULL, goods_price DECIMAL(10,2) NOT NULL COMMENT '商品单价',
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, order_total DECIMAL(10,2) NOT NULL COMMENT '订单总金额',
used_money2 DECIMAL(18,2) NOT NULL DEFAULT 0, discount_total DECIMAL(10,2) NOT NULL COMMENT '折扣后金额',
coupon_id INT NULL DEFAULT 0, final_price DECIMAL(10,2) NOT NULL COMMENT '最终支付金额',
used_coupon DECIMAL(18,2) NOT NULL DEFAULT 0, discount_rate DECIMAL(10,2) NOT NULL COMMENT '折扣率',
draw_count INT NOT NULL DEFAULT 0,
pay_type TINYINT NOT NULL DEFAULT 1, -- 支付方式
status TINYINT NOT NULL DEFAULT 0, used_money DECIMAL(10,2) NOT NULL DEFAULT 0 COMMENT '使用余额',
click_id INT NULL, used_integral DECIMAL(10,2) NOT NULL DEFAULT 0 COMMENT '使用积分',
created_at DATETIME2 NOT NULL DEFAULT GETDATE(), used_money2 DECIMAL(10,2) NOT NULL DEFAULT 0 COMMENT '使用积分2',
paid_at DATETIME2 NULL, 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), 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_created_at (created_at),
INDEX ix_orders_paid_at (paid_at), INDEX ix_orders_paid_at (paid_at),
INDEX ix_orders_status (status), 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), 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_user_id FOREIGN KEY (user_id) REFERENCES users(id),
CONSTRAINT fk_orders_goods_id FOREIGN KEY (goods_id) REFERENCES goods(id) CONSTRAINT fk_orders_goods_id FOREIGN KEY (goods_id) REFERENCES goods(id)
); ) COMMENT = '订单主表 - 包含完整33个字段的订单逻辑';
-- 订单详情表 (抽奖结果) -- 订单详情表 (抽奖结果)
CREATE TABLE order_items ( CREATE TABLE order_items (
id INT IDENTITY(1,1) PRIMARY KEY, id INT IDENTITY(1,1) PRIMARY KEY,
order_id NVARCHAR(60) NOT NULL, order_id NVARCHAR(60) NOT NULL COMMENT '订单号',
user_id INT NOT NULL, user_id INT NOT NULL COMMENT '用户ID',
goods_id INT NOT NULL, goods_id INT NOT NULL COMMENT '商品ID',
box_number INT NOT NULL, box_number INT NOT NULL COMMENT '箱号',
goods_item_id INT NOT NULL, goods_item_id INT NOT NULL COMMENT '商品奖品ID',
item_title NVARCHAR(255) NOT NULL, item_title NVARCHAR(255) NOT NULL COMMENT '奖品标题',
item_img_url NVARCHAR(500) NULL, item_img_url NVARCHAR(500) NULL COMMENT '奖品图片URL',
prize_id INT NOT NULL, prize_id INT NOT NULL COMMENT '奖品等级ID',
order_type TINYINT NOT NULL, order_type TINYINT NOT NULL COMMENT '订单类型',
source TINYINT NOT NULL DEFAULT 1, source TINYINT NOT NULL DEFAULT 1 COMMENT '来源 1正常抽奖',
item_price DECIMAL(18,2) NOT NULL DEFAULT 0, item_price DECIMAL(18,2) NOT NULL DEFAULT 0 COMMENT '奖品价格',
created_at DATETIME2 NOT NULL DEFAULT GETDATE(), created_at DATETIME2 NOT NULL DEFAULT GETDATE() COMMENT '创建时间',
-- 索引 -- 索引
INDEX ix_order_items_order_id (order_id), 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_user_id FOREIGN KEY (user_id) REFERENCES users(id),
CONSTRAINT fk_order_items_goods_id FOREIGN KEY (goods_id) REFERENCES goods(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天) ### 1.3 数据迁移映射表 (0.5天)
@ -415,64 +713,203 @@ user -> users:
istest -> is_test istest -> is_test
uid -> uid uid -> uid
click_id -> click_id click_id -> click_id
draw_num -> draw_num (新增字段)
password -> password (新增字段)
is_use_coupon -> is_use_coupon (新增字段)
addtime -> created_at (时间戳转换) addtime -> created_at (时间戳转换)
update_time -> updated_at (时间戳转换) update_time -> updated_at (时间戳转换)
last_login_time -> last_login_at (时间戳转换) last_login_time -> last_login_at (时间戳转换)
``` ```
##### 商品表映射 ##### 商品表映射 (完整54字段)
```yaml ```yaml
goods -> goods: goods -> goods:
# 基础信息
id -> id id -> id
category_id -> category_id category_id -> category_id
title -> title title -> title
imgurl -> img_url imgurl -> img_url
imgurl_detail -> img_url_detail imgurl_detail -> img_url_detail
prize_imgurl -> prize_img_url
goods_describe -> goods_describe
# 价格和库存
price -> price price -> price
stock -> stock stock -> stock
sale_stock -> sale_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 type -> type
status -> status status -> status
lock_is -> is_lock sort -> sort_order
lock_time -> lock_time
# 显示控制
show_is -> is_show
is_shou_zhe -> is_discount is_shou_zhe -> is_discount
new_is -> is_new 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 daily_xiangou -> daily_limit
quanju_xiangou -> global_limit quanju_xiangou -> global_limit
sort -> sort_order unlock_amount -> unlock_amount
sale_time -> sale_time (时间戳转换) user_lv -> user_level
addtime -> created_at (时间戳转换)
update_time -> updated_at (时间戳转换) # 特殊功能
delete_time -> deleted_at (时间戳转换) 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 ```yaml
order -> orders: order -> orders:
# 基础信息
id -> id id -> id
order_num -> order_no order_num -> order_no
user_id -> user_id user_id -> user_id
goods_id -> goods_id goods_id -> goods_id
num -> box_number num -> box_number
# 商品信息
goods_title -> goods_title goods_title -> goods_title
goods_imgurl -> goods_img_url goods_imgurl -> goods_img_url
order_type -> order_type goods_price -> goods_price
# 订单金额
order_total -> order_total order_total -> order_total
order_zhe_total -> discount_total order_zhe_total -> discount_total
price -> final_price price -> final_price
zhe -> discount_rate
# 支付方式
use_money -> used_money use_money -> used_money
use_integral -> used_integral use_integral -> used_integral
use_money2 -> used_money2 use_money2 -> used_money2
use_score -> used_score
use_draw -> used_draw
use_item_card -> used_item_card
# 优惠券
coupon_id -> coupon_id coupon_id -> coupon_id
use_coupon -> used_coupon use_coupon -> used_coupon
# 抽奖相关
prize_num -> draw_count prize_num -> draw_count
prize_card_set -> prize_card_set
# 订单属性
order_type -> order_type
pay_type -> pay_type pay_type -> pay_type
status -> status 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 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完成标志**: 完成业务分析,确定迁移范围,设计好新的表结构,为后续数据迁移奠定基础。 **阶段1完成标志**: 完成业务分析,确定迁移范围,设计好新的表结构,为后续数据迁移奠定基础。