第一步版
This commit is contained in:
226
sql/create.sql
Normal file
226
sql/create.sql
Normal file
@ -0,0 +1,226 @@
|
||||
create database traceabilityCode;
|
||||
|
||||
use traceabilityCode;
|
||||
-- 用户表
|
||||
CREATE TABLE users (
|
||||
id BIGINT PRIMARY KEY AUTO_INCREMENT,
|
||||
user_account VARCHAR(255) NOT NULL COMMENT '用户账号',
|
||||
username VARCHAR(50) UNIQUE NOT NULL COMMENT '用户名',
|
||||
password VARCHAR(255) NOT NULL COMMENT '密码(加密)',
|
||||
email VARCHAR(100) COMMENT '邮箱',
|
||||
phone VARCHAR(20) COMMENT '手机号',
|
||||
status TINYINT DEFAULT 1 COMMENT '状态:0-禁用,1-启用',
|
||||
last_login_time DATETIME COMMENT '最后登录时间',
|
||||
created_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
isDelete TINYINT DEFAULT 0 comment '逻辑删除'
|
||||
);
|
||||
-- 角色表(优化后)
|
||||
CREATE TABLE roles (
|
||||
id BIGINT PRIMARY KEY AUTO_INCREMENT,
|
||||
name VARCHAR(50) NOT NULL COMMENT '角色名称',
|
||||
code VARCHAR(50) UNIQUE NOT NULL COMMENT '角色编码',
|
||||
description TEXT COMMENT '角色描述',
|
||||
permissions JSON COMMENT '角色权限配置,如:["user:read", "user:write", "product:manage"]',
|
||||
status TINYINT DEFAULT 1 COMMENT '状态:0-禁用,1-启用',
|
||||
created_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
||||
);
|
||||
-- 用户角色关联表
|
||||
CREATE TABLE user_roles (
|
||||
id BIGINT PRIMARY KEY AUTO_INCREMENT,
|
||||
user_id BIGINT NOT NULL,
|
||||
role_id BIGINT NOT NULL,
|
||||
created_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
UNIQUE KEY uk_user_role (user_id, role_id)
|
||||
);
|
||||
|
||||
-- 产品表
|
||||
CREATE TABLE products (
|
||||
id BIGINT PRIMARY KEY AUTO_INCREMENT,
|
||||
name VARCHAR(100) NOT NULL COMMENT '产品名称',
|
||||
category_id BIGINT COMMENT '分类ID',
|
||||
sku VARCHAR(50) UNIQUE COMMENT '产品编码',
|
||||
status TINYINT DEFAULT 1 COMMENT '状态',
|
||||
created_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
-- 属性定义表(定义每种产品可能有的属性)
|
||||
CREATE TABLE product_attributes (
|
||||
id BIGINT PRIMARY KEY AUTO_INCREMENT,
|
||||
category_id BIGINT COMMENT '适用的产品分类',
|
||||
name VARCHAR(50) NOT NULL COMMENT '属性名称',
|
||||
code VARCHAR(50) NOT NULL COMMENT '属性编码',
|
||||
data_type ENUM('text', 'number', 'date', 'select') COMMENT '数据类型',
|
||||
is_required TINYINT DEFAULT 0 COMMENT '是否必填',
|
||||
options JSON COMMENT '选项值(用于下拉选择)',
|
||||
section ENUM('raw_material', 'production', 'storage', 'inspection') COMMENT '所属板块'
|
||||
);
|
||||
-- 产品属性值表(存储具体的属性值)
|
||||
CREATE TABLE product_attribute_values (
|
||||
id BIGINT PRIMARY KEY AUTO_INCREMENT,
|
||||
product_id BIGINT NOT NULL COMMENT '产品ID',
|
||||
attribute_id BIGINT NOT NULL COMMENT '属性ID',
|
||||
value TEXT COMMENT '属性值',
|
||||
created_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
INDEX idx_product_attribute (product_id, attribute_id)
|
||||
);
|
||||
|
||||
-- 直播管理表
|
||||
CREATE TABLE live_streams (
|
||||
id BIGINT PRIMARY KEY AUTO_INCREMENT,
|
||||
stream_name VARCHAR(100) NOT NULL COMMENT '流名称',
|
||||
stream_key VARCHAR(255) UNIQUE NOT NULL COMMENT '流密钥',
|
||||
push_url VARCHAR(500) COMMENT '推流地址',
|
||||
play_url VARCHAR(500) COMMENT '播放地址',
|
||||
platform VARCHAR(50) COMMENT '平台',
|
||||
account_id BIGINT COMMENT '关联账号ID',
|
||||
status TINYINT DEFAULT 0 COMMENT '状态:0-离线,1-在线',
|
||||
quality JSON COMMENT '画质配置',
|
||||
created_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
||||
);
|
||||
-- 直播记录表
|
||||
CREATE TABLE live_records (
|
||||
id BIGINT PRIMARY KEY AUTO_INCREMENT,
|
||||
stream_id BIGINT NOT NULL,
|
||||
start_time DATETIME NOT NULL COMMENT '开始时间',
|
||||
end_time DATETIME COMMENT '结束时间',
|
||||
duration INT COMMENT '直播时长(秒)',
|
||||
viewer_count INT DEFAULT 0 COMMENT '观看人数',
|
||||
peak_viewer INT DEFAULT 0 COMMENT '峰值观看人数',
|
||||
status ENUM('live', 'ended', 'error') DEFAULT 'live',
|
||||
created_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
-- 素材分类表
|
||||
CREATE TABLE material_categories (
|
||||
id BIGINT PRIMARY KEY AUTO_INCREMENT,
|
||||
name VARCHAR(100) NOT NULL COMMENT '分类名称',
|
||||
type ENUM('image', 'video', 'document', 'other') NOT NULL COMMENT '素材类型',
|
||||
parent_id BIGINT DEFAULT 0 COMMENT '父分类ID',
|
||||
sort_order INT DEFAULT 0,
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
-- 视频表
|
||||
CREATE TABLE videos (
|
||||
id BIGINT PRIMARY KEY AUTO_INCREMENT,
|
||||
title VARCHAR(200) NOT NULL COMMENT '视频标题',
|
||||
description TEXT COMMENT '视频描述',
|
||||
file_path VARCHAR(500) NOT NULL COMMENT '视频文件路径',
|
||||
file_url VARCHAR(500) COMMENT '播放URL',
|
||||
thumbnail VARCHAR(500) COMMENT '缩略图',
|
||||
duration INT COMMENT '时长(秒)',
|
||||
file_size BIGINT COMMENT '文件大小',
|
||||
resolution VARCHAR(20) COMMENT '分辨率',
|
||||
format VARCHAR(20) COMMENT '视频格式',
|
||||
bitrate INT COMMENT '码率',
|
||||
fps INT COMMENT '帧率',
|
||||
category_id BIGINT COMMENT '分类ID',
|
||||
tags JSON COMMENT '标签',
|
||||
view_count INT DEFAULT 0 COMMENT '播放次数',
|
||||
status TINYINT DEFAULT 1 COMMENT '状态:0-处理中,1-正常,2-失败',
|
||||
user_id BIGINT COMMENT '上传用户',
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
||||
);
|
||||
-- 扫码记录表
|
||||
CREATE TABLE qr_codes (
|
||||
id BIGINT PRIMARY KEY AUTO_INCREMENT,
|
||||
name VARCHAR(100) NOT NULL COMMENT '二维码名称',
|
||||
code VARCHAR(100) UNIQUE NOT NULL COMMENT '二维码标识',
|
||||
content TEXT NOT NULL COMMENT '二维码内容',
|
||||
type ENUM('url', 'text', 'product', 'live') NOT NULL COMMENT '类型',
|
||||
related_id BIGINT COMMENT '关联对象ID',
|
||||
qr_image VARCHAR(500) COMMENT '二维码图片',
|
||||
expire_time DATETIME COMMENT '过期时间',
|
||||
scan_limit INT DEFAULT 0 COMMENT '扫描次数限制,0为无限制',
|
||||
status TINYINT DEFAULT 1 COMMENT '状态:0-禁用,1-启用',
|
||||
user_id BIGINT COMMENT '创建用户',
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
||||
);
|
||||
-- 扫码统计表
|
||||
CREATE TABLE qr_scan_statistics (
|
||||
id BIGINT PRIMARY KEY AUTO_INCREMENT,
|
||||
qr_code_id BIGINT NOT NULL,
|
||||
date DATE NOT NULL COMMENT '统计日期',
|
||||
scan_count INT DEFAULT 0 COMMENT '扫描次数',
|
||||
unique_scan_count INT DEFAULT 0 COMMENT '独立扫描次数',
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
||||
);
|
||||
-- 操作日志表
|
||||
CREATE TABLE operation_logs (
|
||||
id BIGINT PRIMARY KEY AUTO_INCREMENT,
|
||||
user_id BIGINT COMMENT '操作用户ID',
|
||||
username VARCHAR(50) COMMENT '用户名',
|
||||
operation VARCHAR(100) NOT NULL COMMENT '操作类型',
|
||||
method VARCHAR(10) COMMENT '请求方法',
|
||||
path VARCHAR(200) COMMENT '请求路径',
|
||||
ip_address VARCHAR(45) COMMENT 'IP地址',
|
||||
user_agent TEXT COMMENT '用户代理',
|
||||
request_params JSON COMMENT '请求参数',
|
||||
response_data JSON COMMENT '响应数据',
|
||||
execution_time INT COMMENT '执行时间(毫秒)',
|
||||
status TINYINT DEFAULT 1 COMMENT '状态:0-失败,1-成功',
|
||||
error_message TEXT COMMENT '错误信息',
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
INDEX idx_user_time (user_id, created_at),
|
||||
INDEX idx_operation_time (operation, created_at)
|
||||
);
|
||||
-- 溯源码生成表
|
||||
CREATE TABLE traceability_codes (
|
||||
id BIGINT PRIMARY KEY AUTO_INCREMENT,
|
||||
code VARCHAR(100) UNIQUE NOT NULL COMMENT '溯源码',
|
||||
product_id BIGINT NOT NULL COMMENT '关联产品',
|
||||
batch_no VARCHAR(50) COMMENT '批次号',
|
||||
production_date DATE COMMENT '生产日期',
|
||||
expire_date DATE COMMENT '过期日期',
|
||||
status ENUM('active', 'used', 'expired') DEFAULT 'active',
|
||||
scan_count INT DEFAULT 0 COMMENT '扫描次数',
|
||||
last_scan_time DATETIME COMMENT '最后扫码时间',
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
||||
);
|
||||
|
||||
-- 二维码表(修改后)
|
||||
CREATE TABLE qr_codes (
|
||||
id BIGINT PRIMARY KEY AUTO_INCREMENT,
|
||||
name VARCHAR(100) NOT NULL COMMENT '二维码名称',
|
||||
code VARCHAR(100) UNIQUE NOT NULL COMMENT '二维码标识',
|
||||
content TEXT NOT NULL COMMENT '二维码内容',
|
||||
type ENUM('url', 'text', 'product', 'live') NOT NULL COMMENT '类型',
|
||||
related_id BIGINT COMMENT '关联对象ID',
|
||||
traceability_code_id BIGINT COMMENT '关联溯源码ID',
|
||||
qr_image VARCHAR(500) COMMENT '二维码图片',
|
||||
expire_time DATETIME COMMENT '过期时间',
|
||||
scan_limit INT DEFAULT 0 COMMENT '扫描次数限制,0为无限制',
|
||||
scan_count INT DEFAULT 0 COMMENT '总扫码次数',
|
||||
unique_scan_count INT DEFAULT 0 COMMENT '独立用户扫码次数',
|
||||
last_scan_time DATETIME COMMENT '最后扫码时间',
|
||||
status TINYINT DEFAULT 1 COMMENT '状态:0-禁用,1-启用',
|
||||
user_id BIGINT COMMENT '创建用户',
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
||||
);
|
||||
|
||||
-- 扫码记录表
|
||||
CREATE TABLE scan_records (
|
||||
id BIGINT PRIMARY KEY AUTO_INCREMENT,
|
||||
qr_code_id BIGINT NOT NULL COMMENT '二维码ID',
|
||||
scan_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '扫码时间',
|
||||
ip_address VARCHAR(45) COMMENT '扫码IP地址',
|
||||
user_agent TEXT COMMENT '用户代理信息',
|
||||
location JSON COMMENT 'GPS位置信息 {"lat": 39.9042, "lng": 116.4074, "address": "北京市朝阳区"}',
|
||||
device_info JSON COMMENT '设备信息 {"os": "iOS", "browser": "Safari", "version": "14.0"}',
|
||||
session_id VARCHAR(100) COMMENT '会话ID',
|
||||
referrer VARCHAR(500) COMMENT '来源页面',
|
||||
scan_source ENUM('wechat', 'alipay', 'browser', 'app') COMMENT '扫码来源',
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
INDEX idx_qr_time (qr_code_id, scan_time),
|
||||
INDEX idx_session (session_id),
|
||||
INDEX idx_ip_time (ip_address, scan_time)
|
||||
);
|
||||
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user