-- ---------------------------- -- 商品表 -- ---------------------------- DROP TABLE IF EXISTS `mall_product`; CREATE TABLE `mall_product` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '商品ID', `name` varchar(128) NOT NULL COMMENT '商品名称', `category_id` bigint DEFAULT NULL COMMENT '分类ID', `brand_id` bigint DEFAULT NULL COMMENT '品牌ID', `cover_url` varchar(512) DEFAULT NULL COMMENT '封面图片', `images` text COMMENT '商品图片(JSON数组)', `description` text COMMENT '商品描述', `detail` text COMMENT '商品详情', `status` tinyint NOT NULL DEFAULT '0' COMMENT '状态(0上架 1下架)', `sort` int DEFAULT '0' COMMENT '排序', `sales_count` int DEFAULT '0' COMMENT '销量', `view_count` int DEFAULT '0' COMMENT '浏览量', `create_by` varchar(64) DEFAULT '' COMMENT '创建者', `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_by` varchar(64) DEFAULT '' COMMENT '更新者', `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (`id`), KEY `idx_category_id` (`category_id`), KEY `idx_brand_id` (`brand_id`), KEY `idx_status` (`status`) ) ENGINE=InnoDB COMMENT='商品表'; -- ---------------------------- -- SKU表 -- ---------------------------- DROP TABLE IF EXISTS `mall_sku`; CREATE TABLE `mall_sku` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'SKU ID', `product_id` bigint NOT NULL COMMENT '商品ID', `sku_code` varchar(64) NOT NULL COMMENT 'SKU编码', `name` varchar(128) DEFAULT NULL COMMENT 'SKU名称', `price` int NOT NULL COMMENT '价格(分)', `original_price` int DEFAULT NULL COMMENT '原价(分)', `stock` int NOT NULL DEFAULT '0' COMMENT '库存', `image` varchar(512) DEFAULT NULL COMMENT 'SKU图片', `specs` text COMMENT '规格属性(JSON)', `status` tinyint NOT NULL DEFAULT '0' COMMENT '状态(0启用 1禁用)', `create_by` varchar(64) DEFAULT '' COMMENT '创建者', `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_by` varchar(64) DEFAULT '' COMMENT '更新者', `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_sku_code` (`sku_code`), KEY `idx_product_id` (`product_id`), KEY `idx_status` (`status`) ) ENGINE=InnoDB COMMENT='SKU表'; -- ---------------------------- -- 购物车表 -- ---------------------------- DROP TABLE IF EXISTS `mall_cart`; CREATE TABLE `mall_cart` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '购物车ID', `user_id` bigint NOT NULL COMMENT '用户ID', `sku_id` bigint NOT NULL COMMENT 'SKU ID', `quantity` int NOT NULL DEFAULT '1' COMMENT '数量', `selected` tinyint NOT NULL DEFAULT '1' COMMENT '是否选中(0否 1是)', `create_by` varchar(64) DEFAULT '' COMMENT '创建者', `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_by` varchar(64) DEFAULT '' COMMENT '更新者', `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_user_sku` (`user_id`, `sku_id`), KEY `idx_user_id` (`user_id`) ) ENGINE=InnoDB COMMENT='购物车表'; -- ---------------------------- -- 订单表 -- ---------------------------- DROP TABLE IF EXISTS `mall_order`; CREATE TABLE `mall_order` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '订单ID', `order_no` varchar(32) NOT NULL COMMENT '订单号', `user_id` bigint NOT NULL COMMENT '用户ID', `total_amount` int NOT NULL COMMENT '订单总金额(分)', `pay_amount` int NOT NULL COMMENT '实付金额(分)', `pay_status` tinyint NOT NULL DEFAULT '0' COMMENT '支付状态(0未支付 1已支付 2已退款)', `pay_order_no` varchar(32) DEFAULT NULL COMMENT '支付单号', `pay_channel_code` varchar(32) DEFAULT NULL COMMENT '支付渠道编码', `pay_time` datetime DEFAULT NULL COMMENT '支付时间', `order_status` tinyint NOT NULL DEFAULT '0' COMMENT '订单状态(0待付款 1待发货 2待收货 3已完成 4已取消)', `delivery_status` tinyint NOT NULL DEFAULT '0' COMMENT '发货状态(0未发货 1已发货 2已收货)', `receiver_name` varchar(64) NOT NULL COMMENT '收货人姓名', `receiver_phone` varchar(32) NOT NULL COMMENT '收货人电话', `receiver_address` varchar(512) NOT NULL COMMENT '收货地址', `remark` varchar(512) DEFAULT NULL COMMENT '备注', `cancel_reason` varchar(256) DEFAULT NULL COMMENT '取消原因', `cancel_time` datetime DEFAULT NULL COMMENT '取消时间', `delivery_time` datetime DEFAULT NULL COMMENT '发货时间', `receive_time` datetime DEFAULT NULL COMMENT '收货时间', `promotion_type` tinyint DEFAULT NULL COMMENT '活动类型(0普通订单 1拼团 2秒杀 3砍价)', `promotion_id` bigint DEFAULT NULL COMMENT '营销活动ID', `seckill_id` bigint DEFAULT NULL COMMENT '秒杀活动ID(仅秒杀订单)', `group_buy_id` bigint DEFAULT NULL COMMENT '拼团活动ID(仅拼团订单)', `bargain_id` bigint DEFAULT NULL COMMENT '砍价活动ID(仅砍价订单)', `create_by` varchar(64) DEFAULT '' COMMENT '创建者', `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_by` varchar(64) DEFAULT '' COMMENT '更新者', `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_order_no` (`order_no`), KEY `idx_user_id` (`user_id`), KEY `idx_pay_order_no` (`pay_order_no`), KEY `idx_order_status` (`order_status`), KEY `idx_pay_status` (`pay_status`), KEY `idx_promotion_type` (`promotion_type`), KEY `idx_promotion_id` (`promotion_id`), KEY `idx_seckill_id` (`seckill_id`) ) ENGINE=InnoDB COMMENT='订单表'; -- ---------------------------- -- 订单明细表 -- ---------------------------- DROP TABLE IF EXISTS `mall_order_item`; CREATE TABLE `mall_order_item` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '订单明细ID', `order_id` bigint NOT NULL COMMENT '订单ID', `order_no` varchar(32) NOT NULL COMMENT '订单号', `product_id` bigint NOT NULL COMMENT '商品ID', `sku_id` bigint NOT NULL COMMENT 'SKU ID', `product_name` varchar(128) NOT NULL COMMENT '商品名称', `sku_name` varchar(128) DEFAULT NULL COMMENT 'SKU名称', `sku_image` varchar(512) DEFAULT NULL COMMENT 'SKU图片', `price` int NOT NULL COMMENT '单价(分)', `quantity` int NOT NULL COMMENT '数量', `total_amount` int NOT NULL COMMENT '小计金额(分)', `create_by` varchar(64) DEFAULT '' COMMENT '创建者', `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_by` varchar(64) DEFAULT '' COMMENT '更新者', `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (`id`), KEY `idx_order_id` (`order_id`), KEY `idx_order_no` (`order_no`), KEY `idx_product_id` (`product_id`), KEY `idx_sku_id` (`sku_id`) ) ENGINE=InnoDB COMMENT='订单明细表'; -- ---------------------------- -- 商品分类表 -- ---------------------------- DROP TABLE IF EXISTS `mall_category`; CREATE TABLE `mall_category` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '分类ID', `name` varchar(64) NOT NULL COMMENT '分类名称', `parent_id` bigint DEFAULT '0' COMMENT '父分类ID(0表示顶级)', `level` tinyint DEFAULT '1' COMMENT '分类级别(1一级 2二级 3三级)', `icon` varchar(512) DEFAULT NULL COMMENT '分类图标', `sort` int DEFAULT '0' COMMENT '排序', `status` tinyint NOT NULL DEFAULT '0' COMMENT '状态(0启用 1禁用)', `create_by` varchar(64) DEFAULT '' COMMENT '创建者', `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_by` varchar(64) DEFAULT '' COMMENT '更新者', `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (`id`), KEY `idx_parent_id` (`parent_id`), KEY `idx_status` (`status`) ) ENGINE=InnoDB COMMENT='商品分类表'; -- ---------------------------- -- 品牌表 -- ---------------------------- DROP TABLE IF EXISTS `mall_brand`; CREATE TABLE `mall_brand` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '品牌ID', `name` varchar(64) NOT NULL COMMENT '品牌名称', `logo` varchar(512) DEFAULT NULL COMMENT '品牌Logo', `description` varchar(512) DEFAULT NULL COMMENT '品牌描述', `sort` int DEFAULT '0' COMMENT '排序', `status` tinyint NOT NULL DEFAULT '0' COMMENT '状态(0启用 1禁用)', `create_by` varchar(64) DEFAULT '' COMMENT '创建者', `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_by` varchar(64) DEFAULT '' COMMENT '更新者', `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (`id`), KEY `idx_status` (`status`) ) ENGINE=InnoDB COMMENT='品牌表'; -- ---------------------------- -- 优惠券表 -- ---------------------------- DROP TABLE IF EXISTS `mall_coupon`; CREATE TABLE `mall_coupon` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '优惠券ID', `name` varchar(128) NOT NULL COMMENT '优惠券名称', `type` tinyint NOT NULL COMMENT '优惠券类型(0满减 1折扣 2现金)', `discount_amount` int DEFAULT NULL COMMENT '优惠金额(分)', `discount_rate` decimal(5,2) DEFAULT NULL COMMENT '折扣率(%)', `min_amount` int NOT NULL DEFAULT '0' COMMENT '使用门槛(分)', `total_count` int DEFAULT NULL COMMENT '发放总数(null表示不限)', `used_count` int DEFAULT '0' COMMENT '已使用数量', `per_limit` int DEFAULT '1' COMMENT '每人限领数量', `valid_start_time` datetime NOT NULL COMMENT '有效开始时间', `valid_end_time` datetime NOT NULL COMMENT '有效结束时间', `status` tinyint NOT NULL DEFAULT '0' COMMENT '状态(0启用 1禁用)', `remark` varchar(512) DEFAULT NULL COMMENT '备注', `create_by` varchar(64) DEFAULT '' COMMENT '创建者', `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_by` varchar(64) DEFAULT '' COMMENT '更新者', `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (`id`), KEY `idx_status` (`status`), KEY `idx_valid_time` (`valid_start_time`, `valid_end_time`) ) ENGINE=InnoDB COMMENT='优惠券表'; -- ---------------------------- -- 用户优惠券表 -- ---------------------------- DROP TABLE IF EXISTS `mall_coupon_user`; CREATE TABLE `mall_coupon_user` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'ID', `user_id` bigint NOT NULL COMMENT '用户ID', `coupon_id` bigint NOT NULL COMMENT '优惠券ID', `status` tinyint NOT NULL DEFAULT '0' COMMENT '状态(0未使用 1已使用 2已过期)', `used_time` datetime DEFAULT NULL COMMENT '使用时间', `order_id` bigint DEFAULT NULL COMMENT '使用的订单ID', `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '领取时间', PRIMARY KEY (`id`), KEY `idx_user_id` (`user_id`), KEY `idx_coupon_id` (`coupon_id`), KEY `idx_status` (`status`) ) ENGINE=InnoDB COMMENT='用户优惠券表'; -- ---------------------------- -- 营销活动表 -- ---------------------------- DROP TABLE IF EXISTS `mall_promotion`; CREATE TABLE `mall_promotion` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '活动ID', `name` varchar(128) NOT NULL COMMENT '活动名称', `type` tinyint NOT NULL COMMENT '活动类型(0普通活动 1拼团 2秒杀 3砍价)', `start_time` datetime NOT NULL COMMENT '开始时间', `end_time` datetime NOT NULL COMMENT '结束时间', `rules` text COMMENT '活动规则(JSON)', `status` tinyint NOT NULL DEFAULT '0' COMMENT '状态(0启用 1禁用)', `remark` varchar(512) DEFAULT NULL COMMENT '备注', `create_by` varchar(64) DEFAULT '' COMMENT '创建者', `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_by` varchar(64) DEFAULT '' COMMENT '更新者', `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (`id`), KEY `idx_type` (`type`), KEY `idx_status` (`status`), KEY `idx_time` (`start_time`, `end_time`) ) ENGINE=InnoDB COMMENT='营销活动表'; -- ---------------------------- -- 拼团表 -- ---------------------------- DROP TABLE IF EXISTS `mall_group_buy`; CREATE TABLE `mall_group_buy` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '拼团ID', `promotion_id` bigint NOT NULL COMMENT '活动ID', `sku_id` bigint NOT NULL COMMENT 'SKU ID', `group_price` int NOT NULL COMMENT '拼团价(分)', `group_size` int NOT NULL COMMENT '成团人数', `duration_hours` int DEFAULT '24' COMMENT '拼团有效期(小时)', `status` tinyint NOT NULL DEFAULT '0' COMMENT '状态(0启用 1禁用)', `create_by` varchar(64) DEFAULT '' COMMENT '创建者', `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_by` varchar(64) DEFAULT '' COMMENT '更新者', `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (`id`), KEY `idx_promotion_id` (`promotion_id`), KEY `idx_sku_id` (`sku_id`) ) ENGINE=InnoDB COMMENT='拼团表'; -- ---------------------------- -- 拼团订单表 -- ---------------------------- DROP TABLE IF EXISTS `mall_group_buy_order`; CREATE TABLE `mall_group_buy_order` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'ID', `group_buy_id` bigint NOT NULL COMMENT '拼团ID', `group_no` varchar(32) NOT NULL COMMENT '拼团编号', `order_id` bigint NOT NULL COMMENT '订单ID', `user_id` bigint NOT NULL COMMENT '用户ID', `status` tinyint NOT NULL DEFAULT '0' COMMENT '状态(0拼团中 1已成团 2已失败)', `success_time` datetime DEFAULT NULL COMMENT '成团时间', `expire_time` datetime NOT NULL COMMENT '过期时间', `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', PRIMARY KEY (`id`), KEY `idx_group_buy_id` (`group_buy_id`), KEY `idx_group_no` (`group_no`), KEY `idx_order_id` (`order_id`), KEY `idx_status` (`status`) ) ENGINE=InnoDB COMMENT='拼团订单表'; -- ---------------------------- -- 秒杀表 -- ---------------------------- DROP TABLE IF EXISTS `mall_seckill`; CREATE TABLE `mall_seckill` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '秒杀ID', `promotion_id` bigint NOT NULL COMMENT '活动ID', `sku_id` bigint NOT NULL COMMENT 'SKU ID', `seckill_price` int NOT NULL COMMENT '秒杀价(分)', `seckill_stock` int NOT NULL COMMENT '秒杀库存', `start_time` datetime NOT NULL COMMENT '开始时间', `end_time` datetime NOT NULL COMMENT '结束时间', `status` tinyint NOT NULL DEFAULT '0' COMMENT '状态(0启用 1禁用)', `create_by` varchar(64) DEFAULT '' COMMENT '创建者', `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_by` varchar(64) DEFAULT '' COMMENT '更新者', `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (`id`), KEY `idx_promotion_id` (`promotion_id`), KEY `idx_sku_id` (`sku_id`), KEY `idx_time` (`start_time`, `end_time`) ) ENGINE=InnoDB COMMENT='秒杀表'; -- ---------------------------- -- 砍价活动表 -- ---------------------------- DROP TABLE IF EXISTS `mall_bargain`; CREATE TABLE `mall_bargain` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '砍价ID', `promotion_id` bigint NOT NULL COMMENT '活动ID', `sku_id` bigint NOT NULL COMMENT 'SKU ID', `bargain_price` int NOT NULL COMMENT '砍后价(分)', `original_price` int NOT NULL COMMENT '原价(分)', `bargain_stock` int NOT NULL COMMENT '砍价库存', `min_price` int NOT NULL COMMENT '最低价(分)', `help_count` int NOT NULL DEFAULT '0' COMMENT '需要助力人数', `duration_hours` int DEFAULT '24' COMMENT '砍价有效期(小时)', `status` tinyint NOT NULL DEFAULT '0' COMMENT '状态(0启用 1禁用)', `create_by` varchar(64) DEFAULT '' COMMENT '创建者', `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_by` varchar(64) DEFAULT '' COMMENT '更新者', `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (`id`), KEY `idx_promotion_id` (`promotion_id`), KEY `idx_sku_id` (`sku_id`) ) ENGINE=InnoDB COMMENT='砍价活动表'; -- ---------------------------- -- 砍价记录表 -- ---------------------------- DROP TABLE IF EXISTS `mall_bargain_record`; CREATE TABLE `mall_bargain_record` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'ID', `bargain_id` bigint NOT NULL COMMENT '砍价活动ID', `bargain_no` varchar(32) NOT NULL COMMENT '砍价编号', `user_id` bigint NOT NULL COMMENT '发起用户ID', `sku_id` bigint NOT NULL COMMENT 'SKU ID', `current_price` int NOT NULL COMMENT '当前价格(分)', `bargain_price` int NOT NULL COMMENT '已砍金额(分)', `help_count` int NOT NULL DEFAULT '0' COMMENT '已助力人数', `status` tinyint NOT NULL DEFAULT '0' COMMENT '状态(0进行中 1已成功 2已失败 3已下单)', `order_id` bigint DEFAULT NULL COMMENT '订单ID', `expire_time` datetime NOT NULL COMMENT '过期时间', `success_time` datetime DEFAULT NULL COMMENT '成功时间', `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', PRIMARY KEY (`id`), KEY `idx_bargain_id` (`bargain_id`), KEY `idx_bargain_no` (`bargain_no`), KEY `idx_user_id` (`user_id`), KEY `idx_status` (`status`) ) ENGINE=InnoDB COMMENT='砍价记录表'; -- ---------------------------- -- 砍价助力记录表 -- ---------------------------- DROP TABLE IF EXISTS `mall_bargain_help`; CREATE TABLE `mall_bargain_help` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'ID', `bargain_record_id` bigint NOT NULL COMMENT '砍价记录ID', `bargain_no` varchar(32) NOT NULL COMMENT '砍价编号', `user_id` bigint NOT NULL COMMENT '助力用户ID', `help_price` int NOT NULL COMMENT '助力金额(分)', `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '助力时间', PRIMARY KEY (`id`), KEY `idx_bargain_record_id` (`bargain_record_id`), KEY `idx_bargain_no` (`bargain_no`), KEY `idx_user_id` (`user_id`) ) ENGINE=InnoDB COMMENT='砍价助力记录表'; -- ---------------------------- -- 订单评价表 -- ---------------------------- DROP TABLE IF EXISTS `mall_order_evaluate`; CREATE TABLE `mall_order_evaluate` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '评价ID', `order_id` bigint NOT NULL COMMENT '订单ID', `order_no` varchar(32) NOT NULL COMMENT '订单号', `order_item_id` bigint NOT NULL COMMENT '订单明细ID', `product_id` bigint NOT NULL COMMENT '商品ID', `sku_id` bigint NOT NULL COMMENT 'SKU ID', `user_id` bigint NOT NULL COMMENT '用户ID', `score` tinyint NOT NULL COMMENT '评分(1-5)', `content` varchar(512) DEFAULT NULL COMMENT '评价内容', `images` text COMMENT '评价图片(JSON数组)', `reply_content` varchar(512) DEFAULT NULL COMMENT '回复内容', `reply_time` datetime DEFAULT NULL COMMENT '回复时间', `status` tinyint NOT NULL DEFAULT '0' COMMENT '状态(0待审核 1已通过 2已驳回)', `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (`id`), KEY `idx_order_id` (`order_id`), KEY `idx_order_no` (`order_no`), KEY `idx_order_item_id` (`order_item_id`), KEY `idx_product_id` (`product_id`), KEY `idx_user_id` (`user_id`) ) ENGINE=InnoDB COMMENT='订单评价表'; -- ---------------------------- -- 售后申请表 -- ---------------------------- DROP TABLE IF EXISTS `mall_after_sale`; CREATE TABLE `mall_after_sale` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '售后ID', `after_sale_no` varchar(32) NOT NULL COMMENT '售后单号', `order_id` bigint NOT NULL COMMENT '订单ID', `order_no` varchar(32) NOT NULL COMMENT '订单号', `order_item_id` bigint NOT NULL COMMENT '订单明细ID', `user_id` bigint NOT NULL COMMENT '用户ID', `type` tinyint NOT NULL COMMENT '售后类型(0退款 1退货 2换货)', `reason` varchar(256) NOT NULL COMMENT '申请原因', `description` varchar(512) DEFAULT NULL COMMENT '问题描述', `images` text COMMENT '凭证图片(JSON数组)', `refund_amount` int DEFAULT NULL COMMENT '退款金额(分)', `quantity` int NOT NULL DEFAULT '1' COMMENT '数量', `status` tinyint NOT NULL DEFAULT '0' COMMENT '状态(0待审核 1已同意 2已拒绝 3待退货 4待收货 5已完成 6已取消)', `refuse_reason` varchar(256) DEFAULT NULL COMMENT '拒绝原因', `refund_order_no` varchar(32) DEFAULT NULL COMMENT '退款单号', `logistics_company` varchar(64) DEFAULT NULL COMMENT '物流公司', `logistics_no` varchar(64) DEFAULT NULL COMMENT '物流单号', `apply_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '申请时间', `audit_time` datetime DEFAULT NULL COMMENT '审核时间', `return_time` datetime DEFAULT NULL COMMENT '退货时间', `receive_time` datetime DEFAULT NULL COMMENT '收货时间', `refund_time` datetime DEFAULT NULL COMMENT '退款时间', `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_after_sale_no` (`after_sale_no`), KEY `idx_order_id` (`order_id`), KEY `idx_order_no` (`order_no`), KEY `idx_user_id` (`user_id`), KEY `idx_status` (`status`) ) ENGINE=InnoDB COMMENT='售后申请表'; -- ---------------------------- -- 订单优惠券使用记录表 -- ---------------------------- DROP TABLE IF EXISTS `mall_order_coupon`; CREATE TABLE `mall_order_coupon` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'ID', `order_id` bigint NOT NULL COMMENT '订单ID', `order_no` varchar(32) NOT NULL COMMENT '订单号', `coupon_id` bigint NOT NULL COMMENT '优惠券ID', `coupon_user_id` bigint NOT NULL COMMENT '用户优惠券ID', `discount_amount` int NOT NULL COMMENT '优惠金额(分)', `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '使用时间', PRIMARY KEY (`id`), KEY `idx_order_id` (`order_id`), KEY `idx_order_no` (`order_no`), KEY `idx_coupon_id` (`coupon_id`), KEY `idx_coupon_user_id` (`coupon_user_id`) ) ENGINE=InnoDB COMMENT='订单优惠券使用记录表'; -- ---------------------------- -- 收货地址表 -- ---------------------------- DROP TABLE IF EXISTS `mall_address`; CREATE TABLE `mall_address` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '地址ID', `user_id` bigint NOT NULL COMMENT '用户ID', `receiver_name` varchar(64) NOT NULL COMMENT '收货人姓名', `receiver_phone` varchar(32) NOT NULL COMMENT '收货人电话', `province` varchar(64) DEFAULT NULL COMMENT '省份', `city` varchar(64) DEFAULT NULL COMMENT '城市', `district` varchar(64) DEFAULT NULL COMMENT '区/县', `address` varchar(512) NOT NULL COMMENT '详细地址', `is_default` tinyint NOT NULL DEFAULT '0' COMMENT '是否默认地址(0否 1是)', `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (`id`), KEY `idx_user_id` (`user_id`), KEY `idx_is_default` (`is_default`) ) ENGINE=InnoDB COMMENT='收货地址表'; -- ---------------------------- -- 属性模板表 -- ---------------------------- DROP TABLE IF EXISTS `mall_attribute_template`; CREATE TABLE `mall_attribute_template` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '模板ID', `name` varchar(64) NOT NULL COMMENT '模板名称', `category_id` bigint DEFAULT NULL COMMENT '分类ID(可选,绑定到分类)', `sort` int DEFAULT '0' COMMENT '排序', `status` tinyint NOT NULL DEFAULT '0' COMMENT '状态(0启用 1禁用)', `remark` varchar(512) DEFAULT NULL COMMENT '备注', `create_by` varchar(64) DEFAULT '' COMMENT '创建者', `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_by` varchar(64) DEFAULT '' COMMENT '更新者', `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (`id`), KEY `idx_category_id` (`category_id`), KEY `idx_status` (`status`) ) ENGINE=InnoDB COMMENT='属性模板表'; -- ---------------------------- -- 属性表 -- ---------------------------- DROP TABLE IF EXISTS `mall_attribute`; CREATE TABLE `mall_attribute` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '属性ID', `template_id` bigint DEFAULT NULL COMMENT '模板ID(可选,绑定到模板)', `name` varchar(64) NOT NULL COMMENT '属性名称', `type` tinyint NOT NULL DEFAULT '0' COMMENT '属性类型(0文本 1数字 2日期 3枚举)', `required` tinyint NOT NULL DEFAULT '0' COMMENT '是否必填(0否 1是)', `sort` int DEFAULT '0' COMMENT '排序', `status` tinyint NOT NULL DEFAULT '0' COMMENT '状态(0启用 1禁用)', `remark` varchar(512) DEFAULT NULL COMMENT '备注', `create_by` varchar(64) DEFAULT '' COMMENT '创建者', `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_by` varchar(64) DEFAULT '' COMMENT '更新者', `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (`id`), KEY `idx_template_id` (`template_id`), KEY `idx_status` (`status`) ) ENGINE=InnoDB COMMENT='属性表'; -- ---------------------------- -- 属性值表 -- ---------------------------- DROP TABLE IF EXISTS `mall_attribute_value`; CREATE TABLE `mall_attribute_value` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '属性值ID', `attribute_id` bigint NOT NULL COMMENT '属性ID', `value` varchar(128) NOT NULL COMMENT '属性值', `sort` int DEFAULT '0' COMMENT '排序', `status` tinyint NOT NULL DEFAULT '0' COMMENT '状态(0启用 1禁用)', `create_by` varchar(64) DEFAULT '' COMMENT '创建者', `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_by` varchar(64) DEFAULT '' COMMENT '更新者', `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (`id`), KEY `idx_attribute_id` (`attribute_id`), KEY `idx_status` (`status`) ) ENGINE=InnoDB COMMENT='属性值表'; -- ---------------------------- -- 商品属性关联表 -- ---------------------------- DROP TABLE IF EXISTS `mall_product_attribute`; CREATE TABLE `mall_product_attribute` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'ID', `product_id` bigint NOT NULL COMMENT '商品ID', `attribute_id` bigint NOT NULL COMMENT '属性ID', `attribute_value_id` bigint DEFAULT NULL COMMENT '属性值ID(当属性类型为枚举时使用)', `value` varchar(512) DEFAULT NULL COMMENT '属性值(当属性类型为文本/数字/日期时使用,或自定义值)', `create_by` varchar(64) DEFAULT '' COMMENT '创建者', `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_by` varchar(64) DEFAULT '' COMMENT '更新者', `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (`id`), KEY `idx_product_id` (`product_id`), KEY `idx_attribute_id` (`attribute_id`), KEY `idx_attribute_value_id` (`attribute_value_id`) ) ENGINE=InnoDB COMMENT='商品属性关联表';