-- 秒杀核心表:活动批次 / 活动商品版本,以及订单秒杀标识字段 -- 执行前请确认线上库无同名表;xhOrder.hasSeckill / xhOrderGoods.seckillGoodsId 若已存在请跳过对应 ALTER CREATE TABLE IF NOT EXISTS `xhSeckillActivity` ( `id` int(11) NOT NULL AUTO_INCREMENT, `mainId` int(11) NOT NULL DEFAULT 0 COMMENT '中央id', `title` varchar(32) NOT NULL DEFAULT '' COMMENT '活动标题', `subtitle` varchar(64) NOT NULL DEFAULT '' COMMENT '活动副标题', `showCountdown` tinyint(4) NOT NULL DEFAULT 0 COMMENT '是否显示倒计时', `expand` tinyint(4) NOT NULL DEFAULT 0 COMMENT '商品展开', `startTime` int(11) NOT NULL DEFAULT 0 COMMENT '开始时间unix', `endTime` int(11) NOT NULL DEFAULT 0 COMMENT '结束时间unix', `desc` varchar(500) NOT NULL DEFAULT '' COMMENT '活动说明', `status` tinyint(4) NOT NULL DEFAULT 1 COMMENT '1有效 0无效', `delStatus` tinyint(4) NOT NULL DEFAULT 0 COMMENT '删除状态', `addTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, `updateTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`id`), KEY `mainId` (`mainId`), KEY `main_time` (`mainId`,`startTime`,`endTime`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='秒杀活动批次'; CREATE TABLE IF NOT EXISTS `xhSeckillGoods` ( `id` int(11) NOT NULL AUTO_INCREMENT, `activityId` int(11) NOT NULL DEFAULT 0 COMMENT '活动批次id', `mainId` int(11) NOT NULL DEFAULT 0 COMMENT '中央id', `goodsId` int(11) NOT NULL DEFAULT 0 COMMENT '商品id(可含规格子商品)', `specName` varchar(64) NOT NULL DEFAULT '' COMMENT '规格名', `price` decimal(15,2) NOT NULL DEFAULT 0.00 COMMENT '秒杀价', `originPrice` decimal(15,2) NOT NULL DEFAULT 0.00 COMMENT '原价快照', `stock` int(11) NOT NULL DEFAULT 0 COMMENT '秒杀库存', `limit` int(11) NOT NULL DEFAULT 0 COMMENT '单人限购', `status` tinyint(4) NOT NULL DEFAULT 1 COMMENT '1展示 0隐藏(历史版本)', `name` varchar(128) NOT NULL DEFAULT '' COMMENT '商品名快照', `cover` varchar(255) NOT NULL DEFAULT '' COMMENT '封面快照', `realStock` int(11) NOT NULL DEFAULT 0 COMMENT '保存时真实库存快照', `delStatus` tinyint(4) NOT NULL DEFAULT 0 COMMENT '删除状态', `addTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, `updateTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`id`), KEY `activityId` (`activityId`), KEY `main_goods` (`mainId`,`goodsId`), KEY `activity_goods_status` (`activityId`,`goodsId`,`status`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='秒杀活动商品版本'; -- 订单级:是否包含秒杀商品(合并结算单可能仅部分行是秒杀) ALTER TABLE `xhOrder` ADD COLUMN `hasSeckill` tinyint(4) NOT NULL DEFAULT 0 COMMENT '是否包含秒杀商品:0不包含,1包含' AFTER `groupBuyId`, ADD KEY `hasSeckill` (`hasSeckill`); -- 订单商品行级:关联秒杀活动商品版本,便于追溯价格/库存版本 ALTER TABLE `xhOrderGoods` ADD COLUMN `seckillGoodsId` int(11) NOT NULL DEFAULT 0 COMMENT '秒杀活动商品版本id(xhSeckillGoods.id),非秒杀为0' AFTER `goodsId`, ADD KEY `seckillGoodsId` (`seckillGoodsId`);