2.1 版本文件
This commit is contained in:
@@ -0,0 +1,280 @@
|
||||
-- =================================
|
||||
-- 自由云商城 数据库结构 + 初始数据
|
||||
-- 安装程序会自动把 __PREFIX__ 替换为用户填写的表前缀
|
||||
-- 编码:utf8mb4 / InnoDB
|
||||
-- =================================
|
||||
|
||||
-- 用户表(普通用户与后台管理员共用,is_admin=1 为管理员;status=0 表示被封禁)
|
||||
CREATE TABLE `__PREFIX__users` (
|
||||
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
`username` VARCHAR(50) NOT NULL,
|
||||
`password` VARCHAR(255) NOT NULL,
|
||||
`email` VARCHAR(120) NOT NULL DEFAULT '',
|
||||
`is_admin` TINYINT(1) NOT NULL DEFAULT 0,
|
||||
`role` VARCHAR(10) NOT NULL DEFAULT 'user' COMMENT 'admin管理员 cs客服 user普通用户(后台登录用 role IN admin/cs)',
|
||||
`avatar` VARCHAR(255) DEFAULT '' COMMENT '头像文件路径',
|
||||
`status` TINYINT(1) NOT NULL DEFAULT 1 COMMENT '1正常 0已封禁',
|
||||
`nickname` VARCHAR(60) NOT NULL DEFAULT '' COMMENT '昵称',
|
||||
`verified` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '邮箱是否验证 0未验证 1已验证',
|
||||
`email_token` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '邮箱验证令牌',
|
||||
`reg_ip` VARCHAR(45) NOT NULL DEFAULT '' COMMENT '注册 IP(限频用)',
|
||||
`points` INT UNSIGNED NOT NULL DEFAULT 0 COMMENT '积分余额',
|
||||
`invite_code` VARCHAR(12) NOT NULL DEFAULT '' COMMENT '我的邀请码(唯一,用于邀请奖励)',
|
||||
`invited_by` INT UNSIGNED DEFAULT NULL COMMENT '邀请人 user_id(通过邀请注册时记录)',
|
||||
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uk_username` (`username`),
|
||||
UNIQUE KEY `uk_invite_code` (`invite_code`),
|
||||
KEY `idx_invited_by` (`invited_by`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
|
||||
-- 商品表
|
||||
CREATE TABLE `__PREFIX__products` (
|
||||
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
`name` VARCHAR(120) NOT NULL,
|
||||
`price` DECIMAL(10,2) NOT NULL DEFAULT 0.00,
|
||||
`stock` INT UNSIGNED NOT NULL DEFAULT 0,
|
||||
`category` VARCHAR(40) NOT NULL DEFAULT '其他',
|
||||
`icon` VARCHAR(40) NOT NULL DEFAULT 'fa-box',
|
||||
`image` VARCHAR(255) DEFAULT '',
|
||||
`description` TEXT,
|
||||
`period_days` INT NOT NULL DEFAULT 0 COMMENT '周期天数:0=一次性/实物,>0=按天计的周期商品(如 30/90/365)',
|
||||
`points_price` INT UNSIGNED NOT NULL DEFAULT 0 COMMENT '积分价:0=不可用积分购买,>0=可用该积分数购买',
|
||||
`status` TINYINT(1) NOT NULL DEFAULT 1 COMMENT '1上架 0下架',
|
||||
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_category` (`category`),
|
||||
KEY `idx_status` (`status`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
|
||||
-- 商品分组(后台可增删,用于首页分类筛选与商品归类)
|
||||
CREATE TABLE `__PREFIX__product_groups` (
|
||||
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
`name` VARCHAR(40) NOT NULL,
|
||||
`icon` VARCHAR(40) NOT NULL DEFAULT 'fa-tags',
|
||||
`sort_order` INT NOT NULL DEFAULT 0,
|
||||
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uk_name` (`name`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
|
||||
-- 订单表(status: pending待付款 paid已付款 shipped已发货 completed已完成 cancelled已取消)
|
||||
CREATE TABLE `__PREFIX__orders` (
|
||||
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
`order_no` VARCHAR(32) NOT NULL,
|
||||
`user_id` INT UNSIGNED NOT NULL,
|
||||
`total` DECIMAL(10,2) NOT NULL DEFAULT 0.00,
|
||||
`status` VARCHAR(20) NOT NULL DEFAULT 'pending',
|
||||
`contact` VARCHAR(60) DEFAULT '',
|
||||
`contact_email` VARCHAR(120) DEFAULT '' COMMENT '联系邮箱(下单人填写)',
|
||||
`address` VARCHAR(255) DEFAULT '',
|
||||
`note` VARCHAR(255) DEFAULT '',
|
||||
`period_days` INT NOT NULL DEFAULT 0 COMMENT '本单周期天数(取商品最大值)',
|
||||
`expires_at` DATETIME DEFAULT NULL COMMENT '到期时间(周期商品有值)',
|
||||
`expire_notify_sent` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '到期前提醒邮件是否已发送 0未发 1已发',
|
||||
`pay_type` VARCHAR(10) NOT NULL DEFAULT 'cash' COMMENT 'cash现金 points积分支付',
|
||||
`points_used` INT UNSIGNED NOT NULL DEFAULT 0 COMMENT '积分支付时扣减的积分数',
|
||||
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uk_order_no` (`order_no`),
|
||||
KEY `idx_user` (`user_id`),
|
||||
KEY `idx_expires` (`expires_at`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
|
||||
-- 订单明细表
|
||||
CREATE TABLE `__PREFIX__order_items` (
|
||||
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
`order_id` INT UNSIGNED NOT NULL,
|
||||
`product_id` INT UNSIGNED NOT NULL,
|
||||
`name` VARCHAR(120) NOT NULL,
|
||||
`price` DECIMAL(10,2) NOT NULL,
|
||||
`qty` INT UNSIGNED NOT NULL,
|
||||
`subtotal` DECIMAL(10,2) NOT NULL,
|
||||
`period_days` INT NOT NULL DEFAULT 0 COMMENT '下单时商品的周期天数',
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_order` (`order_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
|
||||
-- 发货信息表(管理员发货时填写:连接信息/登录凭据)
|
||||
CREATE TABLE `__PREFIX__order_deliveries` (
|
||||
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
`order_id` INT UNSIGNED NOT NULL,
|
||||
`server_ip` VARCHAR(60) DEFAULT '' COMMENT '服务器 IP',
|
||||
`conn_addr` VARCHAR(255) DEFAULT '' COMMENT '连接地址/域名',
|
||||
`login_user` VARCHAR(120) DEFAULT '' COMMENT '登录账户',
|
||||
`login_pass` VARCHAR(255) DEFAULT '' COMMENT '登录密码',
|
||||
`remark` TEXT,
|
||||
`activated` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '激活状态:0未激活 1已激活(管理员填写,用户端展示)',
|
||||
`product_info` TEXT COMMENT '商品信息(管理员填写后展示给用户)',
|
||||
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_order` (`order_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
|
||||
-- 系统设置表(SMTP 等键值对)
|
||||
CREATE TABLE `__PREFIX__settings` (
|
||||
`k` VARCHAR(64) NOT NULL,
|
||||
`v` TEXT,
|
||||
PRIMARY KEY (`k`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
|
||||
-- 工单部门表
|
||||
CREATE TABLE `__PREFIX__ticket_departments` (
|
||||
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
`name` VARCHAR(60) NOT NULL,
|
||||
`description` VARCHAR(255) DEFAULT '',
|
||||
`sort` INT NOT NULL DEFAULT 0,
|
||||
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
|
||||
-- 工单表
|
||||
CREATE TABLE `__PREFIX__tickets` (
|
||||
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
`user_id` INT UNSIGNED NOT NULL,
|
||||
`dept_id` INT UNSIGNED NOT NULL DEFAULT 0,
|
||||
`order_id` INT UNSIGNED DEFAULT NULL COMMENT '关联订单(续期工单用)',
|
||||
`type` VARCHAR(20) NOT NULL DEFAULT 'general' COMMENT 'general普通 renewal续期申请',
|
||||
`subject` VARCHAR(160) NOT NULL,
|
||||
`message` TEXT NOT NULL,
|
||||
`status` VARCHAR(20) NOT NULL DEFAULT 'open' COMMENT 'open待处理 pending处理中 resolved已解决 closed已关闭',
|
||||
`priority` TINYINT(1) NOT NULL DEFAULT 2 COMMENT '1低 2普通 3高',
|
||||
`admin_reply` TEXT,
|
||||
`admin_id` INT UNSIGNED DEFAULT NULL,
|
||||
`assignee_id` INT UNSIGNED DEFAULT NULL COMMENT '负责人(客服/管理员)用户ID,NULL=未分配(仅管理员可见)',
|
||||
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
`updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
`closed_at` DATETIME DEFAULT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_status` (`status`),
|
||||
KEY `idx_user` (`user_id`),
|
||||
KEY `idx_dept` (`dept_id`),
|
||||
KEY `idx_order` (`order_id`),
|
||||
KEY `idx_assignee` (`assignee_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
|
||||
-- 工单回复表(多轮对话,is_admin=1 表示客服/管理员回复)
|
||||
CREATE TABLE `__PREFIX__ticket_replies` (
|
||||
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
`ticket_id` INT UNSIGNED NOT NULL,
|
||||
`user_id` INT UNSIGNED NOT NULL DEFAULT 0 COMMENT '回复人 user_id(管理员/客服回复时填其 id,用户回复时填下单用户 id)',
|
||||
`is_admin` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '1=管理员/客服回复 0=用户回复',
|
||||
`message` TEXT NOT NULL,
|
||||
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_ticket` (`ticket_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
|
||||
-- 公告中心
|
||||
CREATE TABLE `__PREFIX__announcements` (
|
||||
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
`title` VARCHAR(160) NOT NULL,
|
||||
`content` TEXT NOT NULL,
|
||||
`pinned` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '1置顶',
|
||||
`status` TINYINT(1) NOT NULL DEFAULT 1 COMMENT '1显示 0隐藏',
|
||||
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_status` (`status`),
|
||||
KEY `idx_pinned` (`pinned`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
|
||||
-- 积分流水表(签到 / 邀请 / 消费 / 后台调整 等记录)
|
||||
CREATE TABLE `__PREFIX__points_log` (
|
||||
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
`user_id` INT UNSIGNED NOT NULL,
|
||||
`type` VARCHAR(20) NOT NULL DEFAULT 'sign' COMMENT 'sign签到 invite邀请 purchase消费 admin后台调整 refund退还',
|
||||
`amount` INT NOT NULL DEFAULT 0 COMMENT '变动量:正=增加 负=扣减',
|
||||
`balance` INT UNSIGNED NOT NULL DEFAULT 0 COMMENT '变动后余额',
|
||||
`remark` VARCHAR(255) DEFAULT '',
|
||||
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_user` (`user_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
|
||||
-- 每日签到记录(每人每天一条,防止重复签到)
|
||||
CREATE TABLE `__PREFIX__sign_logs` (
|
||||
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
`user_id` INT UNSIGNED NOT NULL,
|
||||
`sign_date` DATE NOT NULL,
|
||||
`points` INT UNSIGNED NOT NULL DEFAULT 0,
|
||||
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uk_user_date` (`user_id`, `sign_date`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
|
||||
-- ============================================================
|
||||
-- 初始示例商品(分类:周边 / 数码 / 虚拟 / 图书)
|
||||
-- ============================================================
|
||||
INSERT INTO `__PREFIX__products` (`name`, `price`, `stock`, `category`, `icon`, `image`, `description`) VALUES
|
||||
('自由云定制帆布包', 39.00, 100, '周边', 'fa-shopping-bag', '', '印有自由云科技团队 Logo 的环保帆布包,简约实用,容量充足。'),
|
||||
('自由云贴纸套装', 9.90, 500, '周边', 'fa-sticky-note', '', '多种尺寸防水贴纸,装点你的电脑、水杯与笔记本。'),
|
||||
('机械键盘 87 键', 199.00, 50, '数码', 'fa-keyboard', '', '热插拔轴体,RGB 背光,打字手感顺滑,附赠拔轴器。'),
|
||||
('10000mAh 移动电源', 79.00, 80, '数码', 'fa-battery-full', '', '轻薄便携,支持双向快充,可为手机平板多次续电。'),
|
||||
('MC 服务器 VIP 月卡', 12.00, 9999, '虚拟', 'fa-cube', '', '自由 MC 服务器专属 VIP 月卡,享优先进入与专属昵称色。'),
|
||||
('图床扩容包 10GB', 5.00, 9999, '虚拟', 'fa-images', '', '为你的公益图床账号扩容 10GB 存储空间。'),
|
||||
('《从零学 PHP》实体书', 49.00, 30, '图书', 'fa-book', '', '面向中学生的 PHP 入门教程,案例丰富、通俗易懂。'),
|
||||
('《网络安全小百科》', 35.00, 40, '图书', 'fa-shield-alt', '', '图文并茂的网络安全科普读物,适合青少年阅读。');
|
||||
|
||||
-- =======================
|
||||
-- 初始商品分组(与上面商品 category 对应:周边 / 数码 / 虚拟 / 图书)
|
||||
-- =======================
|
||||
INSERT INTO `__PREFIX__product_groups` (`name`, `icon`, `sort_order`) VALUES
|
||||
('周边', 'fa-shopping-bag', 1),
|
||||
('数码', 'fa-microchip', 2),
|
||||
('虚拟', 'fa-cube', 3),
|
||||
('图书', 'fa-book', 4);
|
||||
|
||||
-- =====================
|
||||
-- 初始工单部门
|
||||
-- =====================
|
||||
INSERT INTO `__PREFIX__ticket_departments` (`name`, `description`, `sort`) VALUES
|
||||
('技术支持', '产品使用、功能咨询', 1),
|
||||
('售后服务', '退换货、订单与物流问题', 2),
|
||||
('财务与支付', '发票、支付异常', 3),
|
||||
('其他', '其他无法归类的问题', 9);
|
||||
|
||||
-- =======================
|
||||
-- 初始系统设置(SMTP 留空,安装后在后台「设置」中填写)
|
||||
-- =======================
|
||||
INSERT INTO `__PREFIX__settings` (`k`, `v`) VALUES
|
||||
('smtp_host', ''),
|
||||
('smtp_port', ''),
|
||||
('smtp_enc', ''),
|
||||
('smtp_user', ''),
|
||||
('smtp_pass', ''),
|
||||
('smtp_from', ''),
|
||||
('smtp_fromname', '自由云商城'),
|
||||
('notify_emails', ''),
|
||||
('mall_about', '自由云商城是自由云科技团队旗下的公益电商,坚持「公益 · 实惠 · 用心挑选」的理念,为社区提供周边、数码、虚拟服务与图书等好物。所有收益用于支持团队的公益技术服务。'),
|
||||
('points_enabled', '1'),
|
||||
('points_sign', '5'),
|
||||
('points_invite', '20');
|
||||
|
||||
-- 支付日志表(记录支付宝/微信支付流水)
|
||||
CREATE TABLE `__PREFIX__pay_logs` (
|
||||
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
`order_id` VARCHAR(64) NOT NULL COMMENT '商户订单号',
|
||||
`pay_method` VARCHAR(20) NOT NULL DEFAULT 'alipay' COMMENT 'alipay / wechat',
|
||||
`amount` DECIMAL(10,2) NOT NULL DEFAULT 0.00 COMMENT '支付金额',
|
||||
`trade_no` VARCHAR(64) DEFAULT '' COMMENT '第三方交易号',
|
||||
`status` ENUM('pending','paid','failed','refunded') NOT NULL DEFAULT 'pending',
|
||||
`raw_response TEXT DEFAULT NULL COMMENT '原始回调数据(调试用)',
|
||||
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
`updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uk_order_method` (`order_id`, `pay_method`),
|
||||
KEY `idx_status` (`status`),
|
||||
KEY `idx_trade_no` (`trade_no`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
|
||||
-- 支付配置初始值
|
||||
INSERT INTO `__PREFIX__settings` (`k`, `v`) VALUES
|
||||
('pay_alipay_enabled', '0'),
|
||||
('pay_alipay_appid', ''),
|
||||
('pay_alipay_private_key',''),
|
||||
('pay_alipay_public_key', ''),
|
||||
('pay_alipay_sandbox', '0'),
|
||||
('pay_wechat_enabled', '0'),
|
||||
('pay_wechat_mch_id', ''),
|
||||
('pay_wechat_api_key', ''),
|
||||
('pay_wechat_appid', '');
|
||||
Reference in New Issue
Block a user