/* 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;