1027 lines
53 KiB
SQL
1027 lines
53 KiB
SQL
/*
|
||
paopao 电商系统数据库设计
|
||
适配功能明细.md + 核心业务流程整理.md
|
||
更新版本: 2026-05-08
|
||
*/
|
||
|
||
SET NAMES utf8mb4;
|
||
SET FOREIGN_KEY_CHECKS = 0;
|
||
|
||
-- =============================================
|
||
-- 一、用户模块
|
||
-- =============================================
|
||
|
||
-- 用户表
|
||
DROP TABLE IF EXISTS `app_user`;
|
||
CREATE TABLE `app_user` (
|
||
`user_id` bigint NOT NULL AUTO_INCREMENT COMMENT '用户ID',
|
||
`openid` varchar(100) DEFAULT NULL COMMENT '微信openid',
|
||
`unionid` varchar(100) DEFAULT NULL COMMENT '微信unionid',
|
||
`nickname` varchar(100) DEFAULT NULL COMMENT '昵称',
|
||
`avatar` varchar(500) DEFAULT NULL COMMENT '头像',
|
||
`phone` varchar(20) DEFAULT NULL COMMENT '手机号',
|
||
`gender` tinyint DEFAULT '0' COMMENT '性别: 0未知 1男 2女',
|
||
`birthday` date DEFAULT NULL COMMENT '生日',
|
||
`balance` decimal(15,2) DEFAULT '0.00' COMMENT '余额',
|
||
`points` int DEFAULT '0' COMMENT '积分',
|
||
`member_level_id` int DEFAULT NULL COMMENT '会员等级ID',
|
||
`member_expire_time` datetime DEFAULT NULL COMMENT '会员到期时间',
|
||
`inviter_id` bigint DEFAULT NULL COMMENT '邀请人用户ID',
|
||
`display_id` varchar(20) DEFAULT NULL COMMENT '显示ID(用户专属推广码)',
|
||
`status` tinyint DEFAULT '1' COMMENT '状态: 0禁用 1正常',
|
||
`deleted` tinyint DEFAULT '0' COMMENT '是否删除: 0否 1是',
|
||
`register_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '注册时间',
|
||
`last_login_time` datetime DEFAULT NULL COMMENT '最后登录时间',
|
||
`create_time` datetime DEFAULT CURRENT_TIMESTAMP,
|
||
`update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||
PRIMARY KEY (`user_id`),
|
||
UNIQUE KEY `uk_openid` (`openid`),
|
||
UNIQUE KEY `uk_phone` (`phone`),
|
||
UNIQUE KEY `uk_display_id` (`display_id`),
|
||
KEY `idx_inviter_id` (`inviter_id`),
|
||
KEY `idx_member_level` (`member_level_id`),
|
||
KEY `idx_status` (`status`),
|
||
KEY `idx_create_time` (`create_time`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='用户表';
|
||
|
||
-- 用户地址表
|
||
DROP TABLE IF EXISTS `app_user_address`;
|
||
CREATE TABLE `app_user_address` (
|
||
`address_id` bigint NOT NULL AUTO_INCREMENT COMMENT '地址ID',
|
||
`user_id` bigint NOT NULL COMMENT '用户ID',
|
||
`consignee` varchar(50) NOT NULL COMMENT '收货人姓名',
|
||
`phone` varchar(20) NOT NULL COMMENT '收货人电话',
|
||
`province` varchar(50) DEFAULT NULL COMMENT '省份',
|
||
`city` varchar(50) DEFAULT NULL COMMENT '城市',
|
||
`district` varchar(50) DEFAULT NULL COMMENT '区/县',
|
||
`detail` varchar(200) NOT NULL COMMENT '详细地址',
|
||
`is_default` tinyint DEFAULT '0' COMMENT '是否默认: 0否 1是',
|
||
`deleted` tinyint DEFAULT '0' COMMENT '是否删除: 0否 1是',
|
||
`create_time` datetime DEFAULT CURRENT_TIMESTAMP,
|
||
`update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||
PRIMARY KEY (`address_id`),
|
||
KEY `idx_user_id` (`user_id`),
|
||
KEY `idx_is_default` (`is_default`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='用户地址表';
|
||
|
||
-- 会员等级表
|
||
DROP TABLE IF EXISTS `app_member_level`;
|
||
CREATE TABLE `app_member_level` (
|
||
`level_id` int NOT NULL AUTO_INCREMENT COMMENT '等级ID',
|
||
`level_name` varchar(50) NOT NULL COMMENT '等级名称',
|
||
`level_code` varchar(20) DEFAULT NULL COMMENT '等级编码',
|
||
`price` decimal(10,2) NOT NULL COMMENT '开通价格(注册费)',
|
||
`member_fee` decimal(10,2) DEFAULT '0.00' COMMENT '下级会员费(会员收取下级的费用)',
|
||
`duration_days` int DEFAULT NULL COMMENT '时长(天),NULL表示永久',
|
||
`discount_rate` decimal(5,2) DEFAULT '100.00' COMMENT '折扣率(%)',
|
||
`commission_rate` decimal(5,2) DEFAULT '0.00' COMMENT '分销佣金比例(%)',
|
||
`description` varchar(500) DEFAULT NULL COMMENT '等级描述',
|
||
`privileges` text COMMENT '会员权益(JSON)',
|
||
`sort_number` int DEFAULT '0' COMMENT '排序号',
|
||
`status` tinyint DEFAULT '1' COMMENT '状态: 0禁用 1启用',
|
||
`deleted` tinyint DEFAULT '0' COMMENT '是否删除: 0否 1是',
|
||
`create_time` datetime DEFAULT CURRENT_TIMESTAMP,
|
||
`update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||
PRIMARY KEY (`level_id`),
|
||
UNIQUE KEY `uk_level_code` (`level_code`),
|
||
KEY `idx_status` (`status`),
|
||
KEY `idx_sort_number` (`sort_number`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='会员等级表';
|
||
|
||
-- 用户会员购买记录表
|
||
DROP TABLE IF EXISTS `app_user_member_order`;
|
||
CREATE TABLE `app_user_member_order` (
|
||
`order_id` bigint NOT NULL AUTO_INCREMENT COMMENT '订单ID',
|
||
`order_no` varchar(64) NOT NULL COMMENT '订单编号',
|
||
`user_id` bigint NOT NULL COMMENT '用户ID',
|
||
`level_id` int NOT NULL COMMENT '会员等级ID',
|
||
`level_name` varchar(50) DEFAULT NULL COMMENT '等级名称(冗余)',
|
||
`price` decimal(10,2) NOT NULL COMMENT '支付金额(注册费)',
|
||
`pay_type` tinyint DEFAULT '0' COMMENT '支付方式: 0余额 1微信 2支付宝',
|
||
`pay_status` tinyint DEFAULT '0' COMMENT '支付状态: 0未支付 1已支付',
|
||
`pay_time` datetime DEFAULT NULL COMMENT '支付时间',
|
||
`transaction_id` varchar(128) DEFAULT NULL COMMENT '第三方交易号',
|
||
`start_time` datetime DEFAULT NULL COMMENT '开始时间',
|
||
`expire_time` datetime DEFAULT NULL COMMENT '到期时间',
|
||
`status` tinyint DEFAULT '0' COMMENT '状态: 0待支付 1已支付 2已取消',
|
||
`deleted` tinyint DEFAULT '0' COMMENT '是否删除: 0否 1是',
|
||
`create_time` datetime DEFAULT CURRENT_TIMESTAMP,
|
||
`update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||
PRIMARY KEY (`order_id`),
|
||
UNIQUE KEY `uk_order_no` (`order_no`),
|
||
KEY `idx_user_id` (`user_id`),
|
||
KEY `idx_level_id` (`level_id`),
|
||
KEY `idx_pay_status` (`pay_status`),
|
||
KEY `idx_status` (`status`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='用户会员购买记录表';
|
||
|
||
-- 会员推广下级记录表(会员录入下级手机号)
|
||
DROP TABLE IF EXISTS `app_member_subordinate`;
|
||
CREATE TABLE `app_member_subordinate` (
|
||
`id` bigint NOT NULL AUTO_INCREMENT COMMENT 'ID',
|
||
`member_id` bigint NOT NULL COMMENT '会员ID(上级)',
|
||
`sub_phone` varchar(20) NOT NULL COMMENT '下级手机号',
|
||
`sub_user_id` bigint DEFAULT NULL COMMENT '下级用户ID(注册后填充)',
|
||
`member_fee` decimal(10,2) NOT NULL COMMENT '收取的下级会员费',
|
||
`fee_paid` tinyint DEFAULT '0' COMMENT '会员费是否已收: 0未确认 1已确认',
|
||
`register_status` tinyint DEFAULT '0' COMMENT '注册状态: 0待注册 1已注册',
|
||
`status` tinyint DEFAULT '0' COMMENT '状态: 0待处理 1已完成 2已取消',
|
||
`remark` varchar(200) DEFAULT NULL COMMENT '备注',
|
||
`create_time` datetime DEFAULT CURRENT_TIMESTAMP,
|
||
`update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||
PRIMARY KEY (`id`),
|
||
KEY `idx_member_id` (`member_id`),
|
||
KEY `idx_sub_phone` (`sub_phone`),
|
||
KEY `idx_sub_user_id` (`sub_user_id`),
|
||
KEY `idx_status` (`status`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='会员推广下级记录表';
|
||
|
||
-- =============================================
|
||
-- 二、商品模块
|
||
-- =============================================
|
||
|
||
-- 商品分类表(三级分类)
|
||
DROP TABLE IF EXISTS `app_product_category`;
|
||
CREATE TABLE `app_product_category` (
|
||
`category_id` int NOT NULL AUTO_INCREMENT COMMENT '分类ID',
|
||
`category_name` varchar(100) NOT NULL COMMENT '分类名称',
|
||
`parent_id` int DEFAULT '0' COMMENT '父级分类ID,0表示一级分类',
|
||
`level` tinyint DEFAULT '1' COMMENT '分类层级: 1一级 2二级 3三级',
|
||
`image` varchar(500) DEFAULT NULL COMMENT '分类图片',
|
||
`sort_number` int DEFAULT '0' COMMENT '排序号',
|
||
`is_show` tinyint DEFAULT '1' COMMENT '是否显示: 0否 1是',
|
||
`is_recommend` tinyint DEFAULT '0' COMMENT '是否推荐: 0否 1是',
|
||
`deleted` tinyint DEFAULT '0' COMMENT '是否删除: 0否 1是',
|
||
`create_time` datetime DEFAULT CURRENT_TIMESTAMP,
|
||
`update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||
PRIMARY KEY (`category_id`),
|
||
KEY `idx_parent_id` (`parent_id`),
|
||
KEY `idx_level` (`level`),
|
||
KEY `idx_is_show` (`is_show`),
|
||
KEY `idx_sort_number` (`sort_number`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='商品分类表(三级分类)';
|
||
|
||
-- 商品品牌表
|
||
DROP TABLE IF EXISTS `app_product_brand`;
|
||
CREATE TABLE `app_product_brand` (
|
||
`brand_id` int NOT NULL AUTO_INCREMENT COMMENT '品牌ID',
|
||
`brand_name` varchar(100) NOT NULL COMMENT '品牌名称',
|
||
`brand_logo` varchar(500) DEFAULT NULL COMMENT '品牌LOGO',
|
||
`sort_number` int DEFAULT '0' COMMENT '排序号',
|
||
`is_show` tinyint DEFAULT '1' COMMENT '是否显示: 0否 1是',
|
||
`deleted` tinyint DEFAULT '0' COMMENT '是否删除: 0否 1是',
|
||
`create_time` datetime DEFAULT CURRENT_TIMESTAMP,
|
||
`update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||
PRIMARY KEY (`brand_id`),
|
||
KEY `idx_is_show` (`is_show`),
|
||
KEY `idx_sort_number` (`sort_number`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='商品品牌表';
|
||
|
||
-- 商品规格表
|
||
DROP TABLE IF EXISTS `app_product_spec`;
|
||
CREATE TABLE `app_product_spec` (
|
||
`spec_id` int NOT NULL AUTO_INCREMENT COMMENT '规格ID',
|
||
`spec_name` varchar(50) NOT NULL COMMENT '规格名称(如:颜色、尺码)',
|
||
`sort_number` int DEFAULT '0' COMMENT '排序号',
|
||
`deleted` tinyint DEFAULT '0' COMMENT '是否删除: 0否 1是',
|
||
`create_time` datetime DEFAULT CURRENT_TIMESTAMP,
|
||
`update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||
PRIMARY KEY (`spec_id`),
|
||
KEY `idx_sort_number` (`sort_number`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='商品规格表';
|
||
|
||
-- 商品规格值表
|
||
DROP TABLE IF EXISTS `app_product_spec_value`;
|
||
CREATE TABLE `app_product_spec_value` (
|
||
`value_id` int NOT NULL AUTO_INCREMENT COMMENT '规格值ID',
|
||
`spec_id` int NOT NULL COMMENT '规格ID',
|
||
`spec_value` varchar(100) NOT NULL COMMENT '规格值(如:红色、XL)',
|
||
`sort_number` int DEFAULT '0' COMMENT '排序号',
|
||
`deleted` tinyint DEFAULT '0' COMMENT '是否删除: 0否 1是',
|
||
`create_time` datetime DEFAULT CURRENT_TIMESTAMP,
|
||
`update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||
PRIMARY KEY (`value_id`),
|
||
KEY `idx_spec_id` (`spec_id`),
|
||
KEY `idx_sort_number` (`sort_number`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='商品规格值表';
|
||
|
||
-- 商品表
|
||
DROP TABLE IF EXISTS `app_product`;
|
||
CREATE TABLE `app_product` (
|
||
`product_id` bigint NOT NULL AUTO_INCREMENT COMMENT '商品ID',
|
||
`product_name` varchar(200) NOT NULL COMMENT '商品名称',
|
||
`product_code` varchar(100) DEFAULT NULL COMMENT '商品编码',
|
||
`category_id` int DEFAULT NULL COMMENT '三级分类ID',
|
||
`brand_id` int DEFAULT NULL COMMENT '品牌ID',
|
||
`main_image` varchar(500) NOT NULL COMMENT '主图',
|
||
`images` text COMMENT '商品图片(JSON数组)',
|
||
`video_url` varchar(500) DEFAULT NULL COMMENT '商品视频URL',
|
||
`price` decimal(10,2) NOT NULL DEFAULT '0.00' COMMENT '售价',
|
||
`market_price` decimal(10,2) DEFAULT NULL COMMENT '市场价/划线价',
|
||
`cost_price` decimal(10,2) DEFAULT NULL COMMENT '成本价',
|
||
`stock` int DEFAULT '0' COMMENT '总库存',
|
||
`sales` int DEFAULT '0' COMMENT '销量',
|
||
`description` longtext COMMENT '商品详情',
|
||
`spec_type` tinyint DEFAULT '0' COMMENT '规格类型: 0单规格 1多规格',
|
||
`commission_rate` decimal(5,2) DEFAULT '0.00' COMMENT '分销佣金比例(%)',
|
||
`points_give` int DEFAULT '0' COMMENT '赠送积分',
|
||
`is_hot` tinyint DEFAULT '0' COMMENT '是否热销: 0否 1是',
|
||
`is_recommend` tinyint DEFAULT '0' COMMENT '是否推荐: 0否 1是',
|
||
`is_new` tinyint DEFAULT '0' COMMENT '是否新品: 0否 1是',
|
||
`status` tinyint DEFAULT '1' COMMENT '状态: 0下架 1上架',
|
||
`deleted` tinyint DEFAULT '0' COMMENT '是否删除: 0否 1是',
|
||
`sort_number` int DEFAULT '0' COMMENT '排序号',
|
||
`create_time` datetime DEFAULT CURRENT_TIMESTAMP,
|
||
`update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||
PRIMARY KEY (`product_id`),
|
||
UNIQUE KEY `uk_product_code` (`product_code`),
|
||
KEY `idx_category_id` (`category_id`),
|
||
KEY `idx_brand_id` (`brand_id`),
|
||
KEY `idx_status` (`status`),
|
||
KEY `idx_is_hot` (`is_hot`),
|
||
KEY `idx_is_recommend` (`is_recommend`),
|
||
KEY `idx_sales` (`sales`),
|
||
KEY `idx_sort_number` (`sort_number`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='商品表';
|
||
|
||
-- 商品SKU表(多规格)
|
||
DROP TABLE IF EXISTS `app_product_sku`;
|
||
CREATE TABLE `app_product_sku` (
|
||
`sku_id` bigint NOT NULL AUTO_INCREMENT COMMENT 'SKU ID',
|
||
`product_id` bigint NOT NULL COMMENT '商品ID',
|
||
`sku_code` varchar(100) DEFAULT NULL COMMENT 'SKU编码',
|
||
`spec_json` text COMMENT '规格组合JSON(如: [{"spec_name":"颜色","spec_value":"红色"},...])',
|
||
`price` decimal(10,2) NOT NULL DEFAULT '0.00' COMMENT '售价',
|
||
`market_price` decimal(10,2) DEFAULT NULL COMMENT '市场价',
|
||
`stock` int DEFAULT '0' COMMENT '库存',
|
||
`sales` int DEFAULT '0' COMMENT '销量',
|
||
`image` varchar(500) DEFAULT NULL COMMENT 'SKU图片',
|
||
`status` tinyint DEFAULT '1' COMMENT '状态: 0禁用 1启用',
|
||
`deleted` tinyint DEFAULT '0' COMMENT '是否删除: 0否 1是',
|
||
`create_time` datetime DEFAULT CURRENT_TIMESTAMP,
|
||
`update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||
PRIMARY KEY (`sku_id`),
|
||
UNIQUE KEY `uk_sku_code` (`sku_code`),
|
||
KEY `idx_product_id` (`product_id`),
|
||
KEY `idx_status` (`status`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='商品SKU表(多规格)';
|
||
|
||
-- =============================================
|
||
-- 三、订单模块
|
||
-- =============================================
|
||
|
||
-- 购物车表
|
||
DROP TABLE IF EXISTS `app_cart`;
|
||
CREATE TABLE `app_cart` (
|
||
`cart_id` bigint NOT NULL AUTO_INCREMENT COMMENT '购物车ID',
|
||
`user_id` bigint NOT NULL COMMENT '用户ID',
|
||
`product_id` bigint NOT NULL COMMENT '商品ID',
|
||
`sku_id` bigint DEFAULT NULL COMMENT 'SKU ID,单规格为NULL',
|
||
`quantity` int NOT NULL DEFAULT '1' COMMENT '数量',
|
||
`deleted` tinyint DEFAULT '0' COMMENT '是否删除: 0否 1是',
|
||
`create_time` datetime DEFAULT CURRENT_TIMESTAMP,
|
||
`update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||
PRIMARY KEY (`cart_id`),
|
||
UNIQUE KEY `uk_user_product_sku` (`user_id`,`product_id`,`sku_id`),
|
||
KEY `idx_user_id` (`user_id`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='购物车表';
|
||
|
||
-- 订单表
|
||
DROP TABLE IF EXISTS `app_order`;
|
||
CREATE TABLE `app_order` (
|
||
`order_id` bigint NOT NULL AUTO_INCREMENT COMMENT '订单ID',
|
||
`order_no` varchar(64) NOT NULL COMMENT '订单编号',
|
||
`user_id` bigint NOT NULL COMMENT '用户ID',
|
||
`total_amount` decimal(15,2) NOT NULL DEFAULT '0.00' COMMENT '订单总金额',
|
||
`discount_amount` decimal(15,2) DEFAULT '0.00' COMMENT '优惠金额(优惠券等)',
|
||
`shipping_fee` decimal(10,2) DEFAULT '0.00' COMMENT '运费',
|
||
`pay_amount` decimal(15,2) NOT NULL DEFAULT '0.00' COMMENT '实际支付金额',
|
||
`points_used` int DEFAULT '0' COMMENT '使用积分',
|
||
`points_discount` decimal(10,2) DEFAULT '0.00' COMMENT '积分抵扣金额',
|
||
`coupon_id` bigint DEFAULT NULL COMMENT '使用优惠券ID',
|
||
`coupon_discount` decimal(10,2) DEFAULT '0.00' COMMENT '优惠券优惠金额',
|
||
`pay_type` tinyint DEFAULT '0' COMMENT '支付方式: 0余额 1微信 2支付宝',
|
||
`pay_status` tinyint DEFAULT '0' COMMENT '支付状态: 0未支付 1已支付 2已退款',
|
||
`pay_time` datetime DEFAULT NULL COMMENT '支付时间',
|
||
`transaction_id` varchar(128) DEFAULT NULL COMMENT '第三方交易号',
|
||
`order_status` tinyint DEFAULT '0' COMMENT '订单状态: 0待支付 1待发货 2待收货 3已完成 4已取消 5已关闭 6退款中 7已退款',
|
||
`shipping_name` varchar(50) DEFAULT NULL COMMENT '快递公司',
|
||
`shipping_no` varchar(100) DEFAULT NULL COMMENT '快递单号',
|
||
`shipping_time` datetime DEFAULT NULL COMMENT '发货时间',
|
||
`receive_time` datetime DEFAULT NULL COMMENT '收货时间',
|
||
`cancel_time` datetime DEFAULT NULL COMMENT '取消时间',
|
||
`cancel_reason` varchar(200) DEFAULT NULL COMMENT '取消原因',
|
||
`address_id` bigint DEFAULT NULL COMMENT '收货地址ID',
|
||
`consignee` varchar(50) DEFAULT NULL COMMENT '收货人姓名',
|
||
`consignee_phone` varchar(20) DEFAULT NULL COMMENT '收货人电话',
|
||
`consignee_address` varchar(500) DEFAULT NULL COMMENT '收货地址',
|
||
`remark` varchar(500) DEFAULT NULL COMMENT '订单备注',
|
||
`commission_status` tinyint DEFAULT '0' COMMENT '佣金结算状态: 0未结算 1已结算',
|
||
`commission_amount` decimal(15,2) DEFAULT '0.00' COMMENT '佣金总额',
|
||
`aftersale_end_time` datetime DEFAULT NULL COMMENT '售后期结束时间',
|
||
`deleted` tinyint DEFAULT '0' COMMENT '是否删除: 0否 1是',
|
||
`create_time` datetime DEFAULT CURRENT_TIMESTAMP,
|
||
`update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||
PRIMARY KEY (`order_id`),
|
||
UNIQUE KEY `uk_order_no` (`order_no`),
|
||
KEY `idx_user_id` (`user_id`),
|
||
KEY `idx_pay_status` (`pay_status`),
|
||
KEY `idx_order_status` (`order_status`),
|
||
KEY `idx_commission_status` (`commission_status`),
|
||
KEY `idx_create_time` (`create_time`),
|
||
KEY `idx_pay_time` (`pay_time`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='订单表';
|
||
|
||
-- 订单商品表
|
||
DROP TABLE IF EXISTS `app_order_item`;
|
||
CREATE TABLE `app_order_item` (
|
||
`item_id` bigint NOT NULL AUTO_INCREMENT COMMENT '订单商品ID',
|
||
`order_id` bigint NOT NULL COMMENT '订单ID',
|
||
`product_id` bigint NOT NULL COMMENT '商品ID',
|
||
`product_name` varchar(200) DEFAULT NULL COMMENT '商品名称(冗余)',
|
||
`sku_id` bigint DEFAULT NULL COMMENT 'SKU ID',
|
||
`spec_json` text COMMENT '规格组合JSON(冗余)',
|
||
`price` decimal(10,2) NOT NULL COMMENT '商品单价',
|
||
`quantity` int NOT NULL COMMENT '购买数量',
|
||
`total_price` decimal(15,2) NOT NULL COMMENT '商品总价',
|
||
`image` varchar(500) DEFAULT NULL COMMENT '商品图片(冗余)',
|
||
`commission_rate` decimal(5,2) DEFAULT '0.00' COMMENT '佣金比例(%)',
|
||
`commission_amount` decimal(10,2) DEFAULT '0.00' COMMENT '佣金金额',
|
||
`refund_status` tinyint DEFAULT '0' COMMENT '退款状态: 0无退款 1申请退款 2退款中 3已退款',
|
||
`refund_amount` decimal(10,2) DEFAULT '0.00' COMMENT '退款金额',
|
||
`deleted` tinyint DEFAULT '0' COMMENT '是否删除: 0否 1是',
|
||
`create_time` datetime DEFAULT CURRENT_TIMESTAMP,
|
||
`update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||
PRIMARY KEY (`item_id`),
|
||
KEY `idx_order_id` (`order_id`),
|
||
KEY `idx_product_id` (`product_id`),
|
||
KEY `idx_refund_status` (`refund_status`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='订单商品表';
|
||
|
||
-- 订单支付记录表
|
||
DROP TABLE IF EXISTS `app_order_payment`;
|
||
CREATE TABLE `app_order_payment` (
|
||
`payment_id` bigint NOT NULL AUTO_INCREMENT COMMENT '支付记录ID',
|
||
`order_id` bigint NOT NULL COMMENT '订单ID',
|
||
`user_id` bigint NOT NULL COMMENT '用户ID',
|
||
`pay_amount` decimal(15,2) NOT NULL COMMENT '支付金额',
|
||
`pay_type` tinyint NOT NULL COMMENT '支付方式: 0余额 1微信 2支付宝',
|
||
`pay_status` tinyint DEFAULT '0' COMMENT '支付状态: 0失败 1成功',
|
||
`transaction_id` varchar(128) DEFAULT NULL COMMENT '第三方交易号',
|
||
`pay_time` datetime DEFAULT NULL COMMENT '支付时间',
|
||
`create_time` datetime DEFAULT CURRENT_TIMESTAMP,
|
||
`update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||
PRIMARY KEY (`payment_id`),
|
||
KEY `idx_order_id` (`order_id`),
|
||
KEY `idx_user_id` (`user_id`),
|
||
KEY `idx_pay_status` (`pay_status`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='订单支付记录表';
|
||
|
||
-- 退款/售后表
|
||
DROP TABLE IF EXISTS `app_order_refund`;
|
||
CREATE TABLE `app_order_refund` (
|
||
`refund_id` bigint NOT NULL AUTO_INCREMENT COMMENT '退款ID',
|
||
`refund_no` varchar(64) NOT NULL COMMENT '退款单号',
|
||
`order_id` bigint NOT NULL COMMENT '订单ID',
|
||
`order_item_id` bigint DEFAULT NULL COMMENT '订单商品ID(部分退款)',
|
||
`user_id` bigint NOT NULL COMMENT '用户ID',
|
||
`refund_amount` decimal(10,2) NOT NULL COMMENT '退款金额',
|
||
`refund_reason` varchar(500) DEFAULT NULL COMMENT '退款原因',
|
||
`refund_desc` text COMMENT '退款说明',
|
||
`images` text COMMENT '凭证图片(JSON数组)',
|
||
`refund_status` tinyint DEFAULT '0' COMMENT '退款状态: 0待审核 1审核通过 2审核拒绝 3退款中 4已退款 5已关闭',
|
||
`review_time` datetime DEFAULT NULL COMMENT '审核时间',
|
||
`review_note` varchar(500) DEFAULT NULL COMMENT '审核备注',
|
||
`refund_time` datetime DEFAULT NULL COMMENT '退款完成时间',
|
||
`deleted` tinyint DEFAULT '0' COMMENT '是否删除: 0否 1是',
|
||
`create_time` datetime DEFAULT CURRENT_TIMESTAMP,
|
||
`update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||
PRIMARY KEY (`refund_id`),
|
||
UNIQUE KEY `uk_refund_no` (`refund_no`),
|
||
KEY `idx_order_id` (`order_id`),
|
||
KEY `idx_user_id` (`user_id`),
|
||
KEY `idx_refund_status` (`refund_status`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='退款/售后表';
|
||
|
||
-- =============================================
|
||
-- 四、积分与营销模块
|
||
-- =============================================
|
||
|
||
-- 积分记录表
|
||
DROP TABLE IF EXISTS `app_points_record`;
|
||
CREATE TABLE `app_points_record` (
|
||
`record_id` bigint NOT NULL AUTO_INCREMENT COMMENT '记录ID',
|
||
`user_id` bigint NOT NULL COMMENT '用户ID',
|
||
`points` int NOT NULL COMMENT '积分变动(正数为获得,负数为消费)',
|
||
`balance` int DEFAULT '0' COMMENT '变动后余额',
|
||
`type` varchar(20) NOT NULL COMMENT '类型: signin签到 shop购物 consume消费 refund退款 admin管理员操作',
|
||
`relation_id` bigint DEFAULT NULL COMMENT '关联ID(订单ID等)',
|
||
`remark` varchar(200) DEFAULT NULL COMMENT '备注',
|
||
`deleted` tinyint DEFAULT '0' COMMENT '是否删除: 0否 1是',
|
||
`create_time` datetime DEFAULT CURRENT_TIMESTAMP,
|
||
PRIMARY KEY (`record_id`),
|
||
KEY `idx_user_id` (`user_id`),
|
||
KEY `idx_type` (`type`),
|
||
KEY `idx_create_time` (`create_time`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='积分记录表';
|
||
|
||
-- 签到记录表
|
||
DROP TABLE IF EXISTS `app_signin_record`;
|
||
CREATE TABLE `app_signin_record` (
|
||
`record_id` bigint NOT NULL AUTO_INCREMENT COMMENT '记录ID',
|
||
`user_id` bigint NOT NULL COMMENT '用户ID',
|
||
`signin_date` date NOT NULL COMMENT '签到日期',
|
||
`points` int NOT NULL COMMENT '获得积分',
|
||
`continuous_days` int DEFAULT '1' COMMENT '连续签到天数',
|
||
`create_time` datetime DEFAULT CURRENT_TIMESTAMP,
|
||
PRIMARY KEY (`record_id`),
|
||
UNIQUE KEY `uk_user_date` (`user_id`,`signin_date`),
|
||
KEY `idx_user_id` (`user_id`),
|
||
KEY `idx_signin_date` (`signin_date`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='签到记录表';
|
||
|
||
-- 优惠券表
|
||
DROP TABLE IF EXISTS `app_coupon`;
|
||
CREATE TABLE `app_coupon` (
|
||
`coupon_id` bigint NOT NULL AUTO_INCREMENT COMMENT '优惠券ID',
|
||
`coupon_name` varchar(100) NOT NULL COMMENT '优惠券名称',
|
||
`type` tinyint NOT NULL COMMENT '类型: 1无门槛 2满减券 3折扣券 4场地使用券',
|
||
`discount_amount` decimal(10,2) DEFAULT NULL COMMENT '减免金额(满减券)',
|
||
`discount_rate` decimal(5,2) DEFAULT NULL COMMENT '折扣率(折扣券,如: 80表示8折)',
|
||
`min_amount` decimal(10,2) DEFAULT '0.00' COMMENT '最低消费金额',
|
||
`valid_days` int DEFAULT NULL COMMENT '领取后有效天数',
|
||
`start_time` datetime DEFAULT NULL COMMENT '有效期开始',
|
||
`end_time` datetime DEFAULT NULL COMMENT '有效期结束',
|
||
`total_count` int DEFAULT '0' COMMENT '发放总量,0表示不限',
|
||
`receive_count` int DEFAULT '0' COMMENT '已领取数量',
|
||
`per_limit` int DEFAULT '1' COMMENT '每人限领数量',
|
||
`is_member_only` tinyint DEFAULT '0' COMMENT '是否仅会员领取: 0否 1是',
|
||
`is_specified_user` tinyint DEFAULT '0' COMMENT '是否指定用户: 0否 1是',
|
||
`status` tinyint DEFAULT '1' COMMENT '状态: 0禁用 1启用',
|
||
`deleted` tinyint DEFAULT '0' COMMENT '是否删除: 0否 1是',
|
||
`create_time` datetime DEFAULT CURRENT_TIMESTAMP,
|
||
`update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||
PRIMARY KEY (`coupon_id`),
|
||
KEY `idx_type` (`type`),
|
||
KEY `idx_status` (`status`),
|
||
KEY `idx_start_time` (`start_time`),
|
||
KEY `idx_end_time` (`end_time`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='优惠券表';
|
||
|
||
-- 用户优惠券表
|
||
DROP TABLE IF EXISTS `app_user_coupon`;
|
||
CREATE TABLE `app_user_coupon` (
|
||
`id` bigint NOT NULL AUTO_INCREMENT COMMENT 'ID',
|
||
`coupon_id` bigint NOT NULL COMMENT '优惠券ID',
|
||
`user_id` bigint NOT NULL COMMENT '用户ID',
|
||
`coupon_name` varchar(100) DEFAULT NULL COMMENT '优惠券名称(冗余)',
|
||
`type` tinyint DEFAULT NULL COMMENT '类型(冗余)',
|
||
`discount_amount` decimal(10,2) DEFAULT NULL COMMENT '减免金额(冗余)',
|
||
`discount_rate` decimal(5,2) DEFAULT NULL COMMENT '折扣率(冗余)',
|
||
`min_amount` decimal(10,2) DEFAULT NULL COMMENT '最低消费金额(冗余)',
|
||
`status` tinyint DEFAULT '0' COMMENT '状态: 0未使用 1已使用 2已过期',
|
||
`use_time` datetime DEFAULT NULL COMMENT '使用时间',
|
||
`order_id` bigint DEFAULT NULL COMMENT '使用的订单ID',
|
||
`receive_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '领取时间',
|
||
`expire_time` datetime DEFAULT NULL COMMENT '过期时间',
|
||
`receive_type` tinyint DEFAULT '0' COMMENT '领取方式: 0主动领取 1后台发放 2活动奖励',
|
||
`deleted` tinyint DEFAULT '0' COMMENT '是否删除: 0否 1是',
|
||
`create_time` datetime DEFAULT CURRENT_TIMESTAMP,
|
||
`update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||
PRIMARY KEY (`id`),
|
||
KEY `idx_coupon_id` (`coupon_id`),
|
||
KEY `idx_user_id` (`user_id`),
|
||
KEY `idx_status` (`status`),
|
||
KEY `idx_expire_time` (`expire_time`),
|
||
KEY `idx_receive_time` (`receive_time`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='用户优惠券表';
|
||
|
||
-- 优惠券指定用户表(后台定向发放)
|
||
DROP TABLE IF EXISTS `app_coupon_specified_user`;
|
||
CREATE TABLE `app_coupon_specified_user` (
|
||
`id` bigint NOT NULL AUTO_INCREMENT COMMENT 'ID',
|
||
`coupon_id` bigint NOT NULL COMMENT '优惠券ID',
|
||
`user_id` bigint NOT NULL COMMENT '用户ID',
|
||
`status` tinyint DEFAULT '0' COMMENT '发送状态: 0待发送 1已发送 2已拒绝',
|
||
`send_time` datetime DEFAULT NULL COMMENT '发送时间',
|
||
`deleted` tinyint DEFAULT '0' COMMENT '是否删除: 0否 1是',
|
||
`create_time` datetime DEFAULT CURRENT_TIMESTAMP,
|
||
PRIMARY KEY (`id`),
|
||
KEY `idx_coupon_id` (`coupon_id`),
|
||
KEY `idx_user_id` (`user_id`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='优惠券指定用户表';
|
||
|
||
-- 积分兑换商品表
|
||
DROP TABLE IF EXISTS `app_points_product`;
|
||
CREATE TABLE `app_points_product` (
|
||
`id` bigint NOT NULL AUTO_INCREMENT COMMENT 'ID',
|
||
`product_name` varchar(200) NOT NULL COMMENT '商品名称',
|
||
`product_image` varchar(500) DEFAULT NULL COMMENT '商品图片',
|
||
`product_type` tinyint DEFAULT '0' COMMENT '商品类型: 0实物 1优惠券 2虚拟商品',
|
||
`coupon_id` bigint DEFAULT NULL COMMENT '优惠券ID(商品类型为优惠券时)',
|
||
`points_price` int NOT NULL COMMENT '兑换所需积分',
|
||
`money_price` decimal(10,2) DEFAULT '0.00' COMMENT '补差价金额',
|
||
`stock` int DEFAULT '0' COMMENT '库存',
|
||
`sales` int DEFAULT '0' COMMENT '兑换量',
|
||
`description` text COMMENT '商品描述',
|
||
`is_hot` tinyint DEFAULT '0' COMMENT '是否热门: 0否 1是',
|
||
`status` tinyint DEFAULT '1' COMMENT '状态: 0下架 1上架',
|
||
`deleted` tinyint DEFAULT '0' COMMENT '是否删除: 0否 1是',
|
||
`sort_number` int DEFAULT '0' COMMENT '排序号',
|
||
`create_time` datetime DEFAULT CURRENT_TIMESTAMP,
|
||
`update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||
PRIMARY KEY (`id`),
|
||
KEY `idx_status` (`status`),
|
||
KEY `idx_is_hot` (`is_hot`),
|
||
KEY `idx_sort_number` (`sort_number`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='积分兑换商品表';
|
||
|
||
-- 积分兑换订单表
|
||
DROP TABLE IF EXISTS `app_points_order`;
|
||
CREATE TABLE `app_points_order` (
|
||
`id` bigint NOT NULL AUTO_INCREMENT COMMENT 'ID',
|
||
`order_no` varchar(64) NOT NULL COMMENT '订单编号',
|
||
`user_id` bigint NOT NULL COMMENT '用户ID',
|
||
`product_id` bigint NOT NULL COMMENT '积分商品ID',
|
||
`product_name` varchar(200) DEFAULT NULL COMMENT '商品名称(冗余)',
|
||
`points_price` int NOT NULL COMMENT '兑换积分',
|
||
`money_price` decimal(10,2) DEFAULT '0.00' COMMENT '补差价金额',
|
||
`pay_type` tinyint DEFAULT '0' COMMENT '支付方式: 0余额 1微信 2支付宝',
|
||
`pay_status` tinyint DEFAULT '0' COMMENT '支付状态: 0未支付 1已支付',
|
||
`order_status` tinyint DEFAULT '0' COMMENT '订单状态: 0待处理 1已发货 2已完成 3已取消',
|
||
`shipping_name` varchar(50) DEFAULT NULL COMMENT '快递公司',
|
||
`shipping_no` varchar(100) DEFAULT NULL COMMENT '快递单号',
|
||
`shipping_time` datetime DEFAULT NULL COMMENT '发货时间',
|
||
`receive_time` datetime DEFAULT NULL COMMENT '收货时间',
|
||
`address_id` bigint DEFAULT NULL COMMENT '收货地址ID',
|
||
`consignee` varchar(50) DEFAULT NULL COMMENT '收货人姓名',
|
||
`consignee_phone` varchar(20) DEFAULT NULL COMMENT '收货人电话',
|
||
`consignee_address` varchar(500) DEFAULT NULL COMMENT '收货地址',
|
||
`deleted` tinyint DEFAULT '0' COMMENT '是否删除: 0否 1是',
|
||
`create_time` datetime DEFAULT CURRENT_TIMESTAMP,
|
||
`update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||
PRIMARY KEY (`id`),
|
||
UNIQUE KEY `uk_order_no` (`order_no`),
|
||
KEY `idx_user_id` (`user_id`),
|
||
KEY `idx_order_status` (`order_status`),
|
||
KEY `idx_create_time` (`create_time`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='积分兑换订单表';
|
||
|
||
-- =============================================
|
||
-- 五、会员分销模块
|
||
-- =============================================
|
||
|
||
-- 分销关系表
|
||
DROP TABLE IF EXISTS `app_distribution_relation`;
|
||
CREATE TABLE `app_distribution_relation` (
|
||
`id` bigint NOT NULL AUTO_INCREMENT COMMENT 'ID',
|
||
`user_id` bigint NOT NULL COMMENT '用户ID',
|
||
`inviter_id` bigint NOT NULL COMMENT '邀请人ID',
|
||
`level` tinyint DEFAULT '1' COMMENT '关系层级: 1直接下级 2间接下级',
|
||
`create_time` datetime DEFAULT CURRENT_TIMESTAMP,
|
||
PRIMARY KEY (`id`),
|
||
UNIQUE KEY `uk_user_inviter` (`user_id`,`inviter_id`),
|
||
KEY `idx_user_id` (`user_id`),
|
||
KEY `idx_inviter_id` (`inviter_id`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='分销关系表';
|
||
|
||
-- 佣金记录表
|
||
DROP TABLE IF EXISTS `app_commission_record`;
|
||
CREATE TABLE `app_commission_record` (
|
||
`record_id` bigint NOT NULL AUTO_INCREMENT COMMENT '记录ID',
|
||
`user_id` bigint NOT NULL COMMENT '获得佣金的用户ID(上级)',
|
||
`from_user_id` bigint NOT NULL COMMENT '消费用户ID(下级)',
|
||
`order_id` bigint DEFAULT NULL COMMENT '订单ID',
|
||
`order_item_id` bigint DEFAULT NULL COMMENT '订单商品ID',
|
||
`product_id` bigint DEFAULT NULL COMMENT '商品ID',
|
||
`product_name` varchar(200) DEFAULT NULL COMMENT '商品名称',
|
||
`order_amount` decimal(15,2) DEFAULT '0.00' COMMENT '订单金额',
|
||
`commission_rate` decimal(5,2) DEFAULT '0.00' COMMENT '佣金比例(%)',
|
||
`commission_amount` decimal(15,2) NOT NULL COMMENT '佣金金额',
|
||
`status` tinyint DEFAULT '0' COMMENT '状态: 0待结算 1已结算 2已失效',
|
||
`settle_time` datetime DEFAULT NULL COMMENT '结算时间',
|
||
`order_settle_time` datetime DEFAULT NULL COMMENT '订单过售后期时间',
|
||
`deleted` tinyint DEFAULT '0' COMMENT '是否删除: 0否 1是',
|
||
`create_time` datetime DEFAULT CURRENT_TIMESTAMP,
|
||
PRIMARY KEY (`record_id`),
|
||
KEY `idx_user_id` (`user_id`),
|
||
KEY `idx_from_user_id` (`from_user_id`),
|
||
KEY `idx_order_id` (`order_id`),
|
||
KEY `idx_status` (`status`),
|
||
KEY `idx_create_time` (`create_time`),
|
||
KEY `idx_settle_time` (`settle_time`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='佣金记录表';
|
||
|
||
-- 佣金提现表
|
||
DROP TABLE IF EXISTS `app_commission_withdraw`;
|
||
CREATE TABLE `app_commission_withdraw` (
|
||
`withdraw_id` bigint NOT NULL AUTO_INCREMENT COMMENT '提现ID',
|
||
`withdraw_no` varchar(64) NOT NULL COMMENT '提现单号',
|
||
`user_id` bigint NOT NULL COMMENT '用户ID',
|
||
`amount` decimal(15,2) NOT NULL COMMENT '提现金额',
|
||
`balance_before` decimal(15,2) DEFAULT '0.00' COMMENT '提现前余额',
|
||
`balance_after` decimal(15,2) DEFAULT '0.00' COMMENT '提现后余额',
|
||
`payee_account` varchar(100) DEFAULT NULL COMMENT '收款账号(微信openid等)',
|
||
`payee_name` varchar(50) DEFAULT NULL COMMENT '收款人姓名',
|
||
`status` tinyint DEFAULT '0' COMMENT '状态: 0待审核 1审核通过 2审核拒绝 3提现中 4已到账 5已取消',
|
||
`review_time` datetime DEFAULT NULL COMMENT '审核时间',
|
||
`review_note` varchar(500) DEFAULT NULL COMMENT '审核备注',
|
||
`transfer_time` datetime DEFAULT NULL COMMENT '转账时间',
|
||
`transaction_id` varchar(128) DEFAULT NULL COMMENT '第三方交易号',
|
||
`daily_limit` decimal(15,2) DEFAULT '2000.00' COMMENT '每日提现限额',
|
||
`single_limit` decimal(15,2) DEFAULT '200.00' COMMENT '单次提现限额(最低)',
|
||
`deleted` tinyint DEFAULT '0' COMMENT '是否删除: 0否 1是',
|
||
`create_time` datetime DEFAULT CURRENT_TIMESTAMP,
|
||
`update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||
PRIMARY KEY (`withdraw_id`),
|
||
UNIQUE KEY `uk_withdraw_no` (`withdraw_no`),
|
||
KEY `idx_user_id` (`user_id`),
|
||
KEY `idx_status` (`status`),
|
||
KEY `idx_create_time` (`create_time`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='佣金提现表';
|
||
|
||
-- =============================================
|
||
-- 六、活动与预约模块
|
||
-- =============================================
|
||
|
||
-- 活动表
|
||
DROP TABLE IF EXISTS `app_activity`;
|
||
CREATE TABLE `app_activity` (
|
||
`activity_id` bigint NOT NULL AUTO_INCREMENT COMMENT '活动ID',
|
||
`activity_name` varchar(200) NOT NULL COMMENT '活动名称',
|
||
`activity_type` tinyint DEFAULT '0' COMMENT '活动类型: 0比赛 1普通活动',
|
||
`image` varchar(500) DEFAULT NULL COMMENT '活动封面图',
|
||
`images` text COMMENT '活动图片(JSON数组)',
|
||
`content` longtext COMMENT '活动详情',
|
||
`start_time` datetime NOT NULL COMMENT '活动开始时间',
|
||
`end_time` datetime NOT NULL COMMENT '活动结束时间',
|
||
`signup_start` datetime DEFAULT NULL COMMENT '报名开始时间',
|
||
`signup_end` datetime DEFAULT NULL COMMENT '报名结束时间',
|
||
`max_participants` int DEFAULT '0' COMMENT '最大报名人数,0表示不限',
|
||
`max_teams` int DEFAULT '0' COMMENT '最大报名队伍数,0表示不限',
|
||
`current_participants` int DEFAULT '0' COMMENT '当前报名人数',
|
||
`price` decimal(10,2) DEFAULT '0.00' COMMENT '报名费用,0表示免费',
|
||
`size_options` text COMMENT '尺码选项JSON(比赛活动用,如: ["S","M","L","XL"])',
|
||
`required_fields` text COMMENT '必填项JSON(如: ["姓名","手机号","身份证"])',
|
||
`is_hot` tinyint DEFAULT '0' COMMENT '是否热门: 0否 1是',
|
||
`status` tinyint DEFAULT '1' COMMENT '状态: 0禁用 1启用',
|
||
`deleted` tinyint DEFAULT '0' COMMENT '是否删除: 0否 1是',
|
||
`sort_number` int DEFAULT '0' COMMENT '排序号',
|
||
`create_time` datetime DEFAULT CURRENT_TIMESTAMP,
|
||
`update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||
PRIMARY KEY (`activity_id`),
|
||
KEY `idx_activity_type` (`activity_type`),
|
||
KEY `idx_status` (`status`),
|
||
KEY `idx_is_hot` (`is_hot`),
|
||
KEY `idx_start_time` (`start_time`),
|
||
KEY `idx_end_time` (`end_time`),
|
||
KEY `idx_sort_number` (`sort_number`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='活动表';
|
||
|
||
-- 活动报名表
|
||
DROP TABLE IF EXISTS `app_activity_signup`;
|
||
CREATE TABLE `app_activity_signup` (
|
||
`signup_id` bigint NOT NULL AUTO_INCREMENT COMMENT '报名ID',
|
||
`activity_id` bigint NOT NULL COMMENT '活动ID',
|
||
`user_id` bigint NOT NULL COMMENT '用户ID',
|
||
`signup_data` text COMMENT '报名填写数据JSON(根据活动必填项)',
|
||
`size_option` varchar(20) DEFAULT NULL COMMENT '尺码选择(比赛活动)',
|
||
`pay_amount` decimal(10,2) DEFAULT '0.00' COMMENT '支付金额',
|
||
`pay_status` tinyint DEFAULT '0' COMMENT '支付状态: 0未支付 1已支付',
|
||
`pay_time` datetime DEFAULT NULL COMMENT '支付时间',
|
||
`transaction_id` varchar(128) DEFAULT NULL COMMENT '第三方交易号',
|
||
`status` tinyint DEFAULT '0' COMMENT '状态: 0已报名 1已取消',
|
||
`deleted` tinyint DEFAULT '0' COMMENT '是否删除: 0否 1是',
|
||
`create_time` datetime DEFAULT CURRENT_TIMESTAMP,
|
||
`update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||
PRIMARY KEY (`signup_id`),
|
||
UNIQUE KEY `uk_activity_user` (`activity_id`,`user_id`),
|
||
KEY `idx_activity_id` (`activity_id`),
|
||
KEY `idx_user_id` (`user_id`),
|
||
KEY `idx_pay_status` (`pay_status`),
|
||
KEY `idx_status` (`status`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='活动报名表';
|
||
|
||
-- 门店表
|
||
DROP TABLE IF EXISTS `app_store`;
|
||
CREATE TABLE `app_store` (
|
||
`store_id` bigint NOT NULL AUTO_INCREMENT COMMENT '门店ID',
|
||
`store_name` varchar(100) NOT NULL COMMENT '门店名称',
|
||
`address` varchar(500) NOT NULL COMMENT '门店地址',
|
||
`longitude` decimal(10,7) DEFAULT NULL COMMENT '经度',
|
||
`latitude` decimal(10,7) DEFAULT NULL COMMENT '纬度',
|
||
`phone` varchar(20) DEFAULT NULL COMMENT '联系电话',
|
||
`business_hours` varchar(200) DEFAULT NULL COMMENT '营业时间(如: 09:00-21:00)',
|
||
`description` text COMMENT '门店描述',
|
||
`images` text COMMENT '门店图片(JSON数组)',
|
||
`username` varchar(50) DEFAULT NULL COMMENT '登录账号',
|
||
`password` varchar(255) DEFAULT NULL COMMENT '登录密码(加密)',
|
||
`status` tinyint DEFAULT '1' COMMENT '状态: 0禁用 1启用',
|
||
`deleted` tinyint DEFAULT '0' COMMENT '是否删除: 0否 1是',
|
||
`create_time` datetime DEFAULT CURRENT_TIMESTAMP,
|
||
`update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||
PRIMARY KEY (`store_id`),
|
||
UNIQUE KEY `uk_username` (`username`),
|
||
KEY `idx_status` (`status`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='门店表';
|
||
|
||
-- 穿线预约表
|
||
DROP TABLE IF EXISTS `app_stringing_appointment`;
|
||
CREATE TABLE `app_stringing_appointment` (
|
||
`appointment_id` bigint NOT NULL AUTO_INCREMENT COMMENT '预约ID',
|
||
`appointment_no` varchar(64) NOT NULL COMMENT '预约编号',
|
||
`user_id` bigint NOT NULL COMMENT '用户ID',
|
||
`store_id` bigint NOT NULL COMMENT '门店ID',
|
||
`store_name` varchar(100) DEFAULT NULL COMMENT '门店名称(冗余)',
|
||
`appointment_time` datetime NOT NULL COMMENT '预约时间',
|
||
`contact_name` varchar(50) NOT NULL COMMENT '联系人姓名',
|
||
`contact_phone` varchar(20) NOT NULL COMMENT '联系人电话',
|
||
`racket_info` varchar(500) DEFAULT NULL COMMENT '球拍信息',
|
||
`string_info` varchar(500) DEFAULT NULL COMMENT '穿线信息',
|
||
`remark` text COMMENT '备注',
|
||
`status` tinyint DEFAULT '0' COMMENT '状态: 0待处理 1已确认 2已完成 3已取消',
|
||
`deleted` tinyint DEFAULT '0' COMMENT '是否删除: 0否 1是',
|
||
`create_time` datetime DEFAULT CURRENT_TIMESTAMP,
|
||
`update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||
PRIMARY KEY (`appointment_id`),
|
||
UNIQUE KEY `uk_appointment_no` (`appointment_no`),
|
||
KEY `idx_user_id` (`user_id`),
|
||
KEY `idx_store_id` (`store_id`),
|
||
KEY `idx_appointment_time` (`appointment_time`),
|
||
KEY `idx_status` (`status`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='穿线预约表';
|
||
|
||
-- =============================================
|
||
-- 七、内容管理模块
|
||
-- =============================================
|
||
|
||
-- 轮播图表
|
||
DROP TABLE IF EXISTS `app_banner`;
|
||
CREATE TABLE `app_banner` (
|
||
`banner_id` int NOT NULL AUTO_INCREMENT COMMENT '轮播图ID',
|
||
`title` varchar(100) DEFAULT NULL COMMENT '标题',
|
||
`image` varchar(500) NOT NULL COMMENT '图片地址',
|
||
`link_type` tinyint DEFAULT '0' COMMENT '链接类型: 0无 1商品 2活动 3文章 4外链',
|
||
`link_id` bigint DEFAULT NULL COMMENT '链接ID(商品ID/活动ID等)',
|
||
`link_url` varchar(500) DEFAULT NULL COMMENT '外链地址',
|
||
`sort_number` int DEFAULT '0' COMMENT '排序号',
|
||
`is_show` tinyint DEFAULT '1' COMMENT '是否显示: 0否 1是',
|
||
`position` varchar(20) DEFAULT 'home' COMMENT '展示位置: home首页 store商城 activity活动',
|
||
`start_time` datetime DEFAULT NULL COMMENT '开始时间',
|
||
`end_time` datetime DEFAULT NULL COMMENT '结束时间',
|
||
`deleted` tinyint DEFAULT '0' COMMENT '是否删除: 0否 1是',
|
||
`create_time` datetime DEFAULT CURRENT_TIMESTAMP,
|
||
`update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||
PRIMARY KEY (`banner_id`),
|
||
KEY `idx_is_show` (`is_show`),
|
||
KEY `idx_position` (`position`),
|
||
KEY `idx_sort_number` (`sort_number`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='轮播图表';
|
||
|
||
-- 文章/公告表
|
||
DROP TABLE IF EXISTS `app_article`;
|
||
CREATE TABLE `app_article` (
|
||
`article_id` int NOT NULL AUTO_INCREMENT COMMENT '文章ID',
|
||
`title` varchar(200) NOT NULL COMMENT '文章标题',
|
||
`type` varchar(20) DEFAULT 'article' COMMENT '类型: article普通文章 announcement公告',
|
||
`category_id` int DEFAULT NULL COMMENT '分类ID',
|
||
`image` varchar(500) DEFAULT NULL COMMENT '封面图',
|
||
`content` longtext COMMENT '正文内容',
|
||
`overview` varchar(500) DEFAULT NULL COMMENT '摘要',
|
||
`source` varchar(120) DEFAULT NULL COMMENT '来源',
|
||
`author` varchar(80) DEFAULT NULL COMMENT '作者',
|
||
`views` int DEFAULT '0' COMMENT '阅读量',
|
||
`is_recommend` tinyint DEFAULT '0' COMMENT '是否推荐: 0否 1是',
|
||
`is_show_index` tinyint DEFAULT '0' COMMENT '是否首页显示: 0否 1是',
|
||
`sort_number` int DEFAULT '0' COMMENT '排序值',
|
||
`status` tinyint DEFAULT '1' COMMENT '状态: 0草稿 1已发布 2已下架',
|
||
`deleted` tinyint DEFAULT '0' COMMENT '是否删除: 0否 1是',
|
||
`publish_time` datetime DEFAULT NULL COMMENT '发布时间',
|
||
`create_time` datetime DEFAULT CURRENT_TIMESTAMP,
|
||
`update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||
PRIMARY KEY (`article_id`),
|
||
KEY `idx_type` (`type`),
|
||
KEY `idx_category_id` (`category_id`),
|
||
KEY `idx_status` (`status`),
|
||
KEY `idx_is_recommend` (`is_recommend`),
|
||
KEY `idx_sort_number` (`sort_number`),
|
||
KEY `idx_publish_time` (`publish_time`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='文章/公告表';
|
||
|
||
-- 协议内容表(隐私政策、服务协议等)
|
||
DROP TABLE IF EXISTS `app_agreement`;
|
||
CREATE TABLE `app_agreement` (
|
||
`agreement_id` int NOT NULL AUTO_INCREMENT COMMENT '协议ID',
|
||
`agreement_key` varchar(50) NOT NULL COMMENT '协议标识: privacy隐私政策 service服务协议 copyright版权信息 about关于我们',
|
||
`agreement_name` varchar(100) NOT NULL COMMENT '协议名称',
|
||
`title` varchar(200) DEFAULT NULL COMMENT '前端显示标题',
|
||
`content` longtext COMMENT '协议正文内容',
|
||
`version` varchar(20) DEFAULT '1.0' COMMENT '版本号',
|
||
`is_show` tinyint DEFAULT '1' COMMENT '是否显示: 0否 1是',
|
||
`is_required` tinyint DEFAULT '1' COMMENT '是否必读: 0否 1是',
|
||
`sort_number` int DEFAULT '0' COMMENT '排序号',
|
||
`status` tinyint DEFAULT '1' COMMENT '状态: 0禁用 1启用',
|
||
`deleted` tinyint DEFAULT '0' COMMENT '是否删除: 0否 1是',
|
||
`create_time` datetime DEFAULT CURRENT_TIMESTAMP,
|
||
`update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||
PRIMARY KEY (`agreement_id`),
|
||
UNIQUE KEY `uk_agreement_key` (`agreement_key`),
|
||
KEY `idx_status` (`status`),
|
||
KEY `idx_is_show` (`is_show`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='协议内容表';
|
||
|
||
-- 消息通知表
|
||
DROP TABLE IF EXISTS `app_notification`;
|
||
CREATE TABLE `app_notification` (
|
||
`notification_id` bigint NOT NULL AUTO_INCREMENT COMMENT '通知ID',
|
||
`user_id` bigint NOT NULL COMMENT '接收用户ID,0表示全站通知',
|
||
`type` varchar(20) NOT NULL COMMENT '类型: system系统 order订单 payment支付 commission佣金 activity活动',
|
||
`title` varchar(200) NOT NULL COMMENT '通知标题',
|
||
`content` varchar(500) DEFAULT NULL COMMENT '通知内容',
|
||
`ref_id` bigint DEFAULT NULL COMMENT '关联ID(订单ID/活动ID等)',
|
||
`ref_type` varchar(30) DEFAULT NULL COMMENT '关联类型',
|
||
`is_read` tinyint DEFAULT '0' COMMENT '是否已读: 0未读 1已读',
|
||
`read_time` datetime DEFAULT NULL COMMENT '读取时间',
|
||
`deleted` tinyint DEFAULT '0' COMMENT '是否删除: 0否 1是',
|
||
`create_time` datetime DEFAULT CURRENT_TIMESTAMP,
|
||
PRIMARY KEY (`notification_id`),
|
||
KEY `idx_user_id` (`user_id`),
|
||
KEY `idx_type` (`type`),
|
||
KEY `idx_is_read` (`is_read`),
|
||
KEY `idx_create_time` (`create_time`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='消息通知表';
|
||
|
||
-- =============================================
|
||
-- 八、系统管理模块
|
||
-- =============================================
|
||
|
||
-- 系统用户表(后台管理员)
|
||
DROP TABLE IF EXISTS `app_admin_user`;
|
||
CREATE TABLE `app_admin_user` (
|
||
`admin_id` int NOT NULL AUTO_INCREMENT COMMENT '管理员ID',
|
||
`username` varchar(50) NOT NULL COMMENT '用户名',
|
||
`password` varchar(255) NOT NULL COMMENT '密码(加密)',
|
||
`nickname` varchar(50) DEFAULT NULL COMMENT '昵称',
|
||
`avatar` varchar(500) DEFAULT NULL COMMENT '头像',
|
||
`phone` varchar(20) DEFAULT NULL COMMENT '手机号',
|
||
`email` varchar(100) DEFAULT NULL COMMENT '邮箱',
|
||
`role_id` int DEFAULT NULL COMMENT '角色ID',
|
||
`last_login_ip` varchar(50) DEFAULT NULL COMMENT '最后登录IP',
|
||
`last_login_time` datetime DEFAULT NULL COMMENT '最后登录时间',
|
||
`status` tinyint DEFAULT '1' COMMENT '状态: 0禁用 1正常',
|
||
`deleted` tinyint DEFAULT '0' COMMENT '是否删除: 0否 1是',
|
||
`create_time` datetime DEFAULT CURRENT_TIMESTAMP,
|
||
`update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||
PRIMARY KEY (`admin_id`),
|
||
UNIQUE KEY `uk_username` (`username`),
|
||
KEY `idx_role_id` (`role_id`),
|
||
KEY `idx_status` (`status`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='后台管理员表';
|
||
|
||
-- 角色表
|
||
DROP TABLE IF EXISTS `app_role`;
|
||
CREATE TABLE `app_role` (
|
||
`role_id` int NOT NULL AUTO_INCREMENT COMMENT '角色ID',
|
||
`role_name` varchar(50) NOT NULL COMMENT '角色名称',
|
||
`role_code` varchar(50) DEFAULT NULL COMMENT '角色编码',
|
||
`description` varchar(200) DEFAULT NULL COMMENT '角色描述',
|
||
`permissions` text COMMENT '权限列表(JSON或逗号分隔)',
|
||
`status` tinyint DEFAULT '1' COMMENT '状态: 0禁用 1启用',
|
||
`deleted` tinyint DEFAULT '0' COMMENT '是否删除: 0否 1是',
|
||
`create_time` datetime DEFAULT CURRENT_TIMESTAMP,
|
||
`update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||
PRIMARY KEY (`role_id`),
|
||
UNIQUE KEY `uk_role_code` (`role_code`),
|
||
KEY `idx_status` (`status`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='角色表';
|
||
|
||
-- 系统配置表
|
||
DROP TABLE IF EXISTS `app_system_config`;
|
||
CREATE TABLE `app_system_config` (
|
||
`config_id` int NOT NULL AUTO_INCREMENT COMMENT '配置ID',
|
||
`config_key` varchar(100) NOT NULL COMMENT '配置键',
|
||
`config_value` text COMMENT '配置值',
|
||
`config_group` varchar(50) DEFAULT 'base' COMMENT '配置分组: base基础 wechat微信 payment支付 sms短信',
|
||
`config_type` varchar(20) DEFAULT 'string' COMMENT '值类型: string/json/number/boolean',
|
||
`description` varchar(200) DEFAULT NULL COMMENT '配置说明',
|
||
`is_public` tinyint DEFAULT '0' COMMENT '是否公开: 0否 1是(前端可读取)',
|
||
`sort_number` int DEFAULT '0' COMMENT '排序号',
|
||
`status` tinyint DEFAULT '1' COMMENT '状态: 0禁用 1启用',
|
||
`deleted` tinyint DEFAULT '0' COMMENT '是否删除: 0否 1是',
|
||
`create_time` datetime DEFAULT CURRENT_TIMESTAMP,
|
||
`update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||
PRIMARY KEY (`config_id`),
|
||
UNIQUE KEY `uk_config_key` (`config_key`),
|
||
KEY `idx_config_group` (`config_group`),
|
||
KEY `idx_status` (`status`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='系统配置表';
|
||
|
||
-- 文件上传记录表
|
||
DROP TABLE IF EXISTS `app_file_upload`;
|
||
CREATE TABLE `app_file_upload` (
|
||
`file_id` bigint NOT NULL AUTO_INCREMENT COMMENT '文件ID',
|
||
`file_name` varchar(200) NOT NULL COMMENT '文件原始名称',
|
||
`file_path` varchar(500) NOT NULL COMMENT '文件路径',
|
||
`file_url` varchar(500) NOT NULL COMMENT '文件访问URL',
|
||
`file_size` bigint DEFAULT '0' COMMENT '文件大小(字节)',
|
||
`file_type` varchar(50) DEFAULT NULL COMMENT '文件类型(MIME)',
|
||
`file_ext` varchar(10) DEFAULT NULL COMMENT '文件扩展名',
|
||
`user_id` bigint DEFAULT NULL COMMENT '上传用户ID,0表示系统',
|
||
`deleted` tinyint DEFAULT '0' COMMENT '是否删除: 0否 1是',
|
||
`create_time` datetime DEFAULT CURRENT_TIMESTAMP,
|
||
PRIMARY KEY (`file_id`),
|
||
KEY `idx_user_id` (`user_id`),
|
||
KEY `idx_file_type` (`file_type`),
|
||
KEY `idx_create_time` (`create_time`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='文件上传记录表';
|
||
|
||
-- =============================================
|
||
-- 九、财务模块
|
||
-- =============================================
|
||
|
||
-- 余额充值记录表
|
||
DROP TABLE IF EXISTS `app_recharge_record`;
|
||
CREATE TABLE `app_recharge_record` (
|
||
`record_id` bigint NOT NULL AUTO_INCREMENT COMMENT '记录ID',
|
||
`record_no` varchar(64) NOT NULL COMMENT '充值单号',
|
||
`user_id` bigint NOT NULL COMMENT '用户ID',
|
||
`amount` decimal(15,2) NOT NULL COMMENT '充值金额',
|
||
`pay_type` tinyint DEFAULT '0' COMMENT '支付方式: 0余额 1微信 2支付宝(实际是从余额扣)',
|
||
`pay_status` tinyint DEFAULT '0' COMMENT '支付状态: 0未支付 1已支付',
|
||
`pay_time` datetime DEFAULT NULL COMMENT '支付时间',
|
||
`transaction_id` varchar(128) DEFAULT NULL COMMENT '第三方交易号',
|
||
`balance_before` decimal(15,2) DEFAULT '0.00' COMMENT '充值前余额',
|
||
`balance_after` decimal(15,2) DEFAULT '0.00' COMMENT '充值后余额',
|
||
`status` tinyint DEFAULT '0' COMMENT '状态: 0待支付 1已完成 2已取消',
|
||
`deleted` tinyint DEFAULT '0' COMMENT '是否删除: 0否 1是',
|
||
`create_time` datetime DEFAULT CURRENT_TIMESTAMP,
|
||
`update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||
PRIMARY KEY (`record_id`),
|
||
UNIQUE KEY `uk_record_no` (`record_no`),
|
||
KEY `idx_user_id` (`user_id`),
|
||
KEY `idx_pay_status` (`pay_status`),
|
||
KEY `idx_status` (`status`),
|
||
KEY `idx_create_time` (`create_time`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='余额充值记录表';
|
||
|
||
-- 资金流水表
|
||
DROP TABLE IF EXISTS `app_fund_flow`;
|
||
CREATE TABLE `app_fund_flow` (
|
||
`flow_id` bigint NOT NULL AUTO_INCREMENT COMMENT '流水ID',
|
||
`user_id` bigint NOT NULL COMMENT '用户ID',
|
||
`flow_type` varchar(20) NOT NULL COMMENT '流水类型: recharge充值 consume消费 refund退款 commission佣金 withdraw提现',
|
||
`amount` decimal(15,2) NOT NULL COMMENT '变动金额(正数为收入,负数为支出)',
|
||
`balance` decimal(15,2) DEFAULT '0.00' COMMENT '变动后余额',
|
||
`relation_id` bigint DEFAULT NULL COMMENT '关联ID(订单ID/充值ID等)',
|
||
`remark` varchar(200) DEFAULT NULL COMMENT '备注',
|
||
`deleted` tinyint DEFAULT '0' COMMENT '是否删除: 0否 1是',
|
||
`create_time` datetime DEFAULT CURRENT_TIMESTAMP,
|
||
PRIMARY KEY (`flow_id`),
|
||
KEY `idx_user_id` (`user_id`),
|
||
KEY `idx_flow_type` (`flow_type`),
|
||
KEY `idx_create_time` (`create_time`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='资金流水表';
|
||
|
||
-- 积分抵扣配置表
|
||
DROP TABLE IF EXISTS `app_points_config`;
|
||
CREATE TABLE `app_points_config` (
|
||
`config_id` int NOT NULL AUTO_INCREMENT COMMENT '配置ID',
|
||
`points_per_yuan` int DEFAULT '1' COMMENT '多少积分抵1元',
|
||
`max_percent` decimal(5,2) DEFAULT '10.00' COMMENT '最多可抵扣订单金额比例(%)',
|
||
`status` tinyint DEFAULT '1' COMMENT '状态: 0禁用(不可使用积分抵扣) 1启用',
|
||
`deleted` tinyint DEFAULT '0' COMMENT '是否删除: 0否 1是',
|
||
`update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||
PRIMARY KEY (`config_id`),
|
||
KEY `idx_status` (`status`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='积分抵扣配置表';
|
||
|
||
-- 签到配置表
|
||
DROP TABLE IF EXISTS `app_signin_config`;
|
||
CREATE TABLE `app_signin_config` (
|
||
`config_id` int NOT NULL AUTO_INCREMENT COMMENT '配置ID',
|
||
`day_number` int NOT NULL COMMENT '第几天(1-7循环)',
|
||
`points` int NOT NULL COMMENT '获得积分数',
|
||
`deleted` tinyint DEFAULT '0' COMMENT '是否删除: 0否 1是',
|
||
PRIMARY KEY (`config_id`),
|
||
KEY `idx_day_number` (`day_number`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='签到积分配置表';
|
||
|
||
-- =============================================
|
||
-- 初始化数据
|
||
-- =============================================
|
||
|
||
-- 初始化默认协议
|
||
INSERT INTO `app_agreement` (`agreement_key`, `agreement_name`, `title`, `content`, `version`, `is_show`, `is_required`) VALUES
|
||
('privacy', '隐私政策', '隐私政策', '隐私政策内容...', '1.0', 1, 1),
|
||
('service', '服务协议', '服务协议', '服务协议内容...', '1.0', 1, 1);
|
||
|
||
-- 初始化系统配置
|
||
INSERT INTO `app_system_config` (`config_key`, `config_value`, `config_group`, `config_type`, `description`, `is_public`) VALUES
|
||
('app_name', '泡菜甄选', 'base', 'string', '小程序名称', 1),
|
||
('app_logo', '/uploads/logo.png', 'base', 'string', '小程序LOGO', 1),
|
||
('signin_points', '10', 'base', 'number', '每日签到积分', 1),
|
||
('withdraw_min_amount', '200', 'base', 'number', '最低提现金额', 1),
|
||
('withdraw_daily_limit', '2000', 'base', 'number', '每日提现上限', 1);
|
||
|
||
SET FOREIGN_KEY_CHECKS = 1;
|