2026-01-15 13:51:44 +08:00
/*
Navicat Premium Dump SQL
Source Server : 开 发 环 境 - 本 地
Source Server Type : MySQL
Source Server Version : 80407 ( 8 . 4 . 7 )
Source Host : localhost : 3306
Source Schema : nl_blog
Target Server Type : MySQL
Target Server Version : 80407 ( 8 . 4 . 7 )
File Encoding : 65001
2026-01-16 17:03:34 +08:00
Date : 16 / 01 / 2026 14 : 41 : 25
2026-01-15 13:51:44 +08:00
* /
SET NAMES utf8mb4 ;
SET FOREIGN_KEY_CHECKS = 0 ;
2026-01-15 15:37:34 +08:00
-- ----------------------------
-- Table structure for about_profiles
-- ----------------------------
DROP TABLE IF EXISTS ` about_profiles ` ;
CREATE TABLE ` about_profiles ` (
` id ` int NOT NULL AUTO_INCREMENT ,
` name ` varchar ( 255 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL ,
` avatar ` varchar ( 255 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT ' ' ,
` location ` varchar ( 255 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT ' ' ,
` bio ` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL ,
` email ` varchar ( 255 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT ' ' ,
` wechat ` varchar ( 255 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT ' ' ,
` tech_stack ` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL COMMENT ' JSON string or comma separated list ' ,
2026-01-15 16:44:00 +08:00
` experiences ` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL COMMENT ' JSON string of experience list ' ,
2026-01-15 15:37:34 +08:00
` is_primary ` tinyint ( 1 ) NULL DEFAULT 0 ,
2026-01-16 13:01:21 +08:00
` created_at ` bigint NOT NULL DEFAULT 0 ,
` updated_at ` bigint NOT NULL DEFAULT 0 ,
` deleted_at ` bigint NOT NULL DEFAULT 0 ,
2026-01-15 15:37:34 +08:00
PRIMARY KEY ( ` id ` ) USING BTREE
2026-01-16 13:38:52 +08:00
) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = DYNAMIC ;
2026-01-15 15:37:34 +08:00
-- ----------------------------
-- Records of about_profiles
-- ----------------------------
2026-01-16 13:38:52 +08:00
INSERT INTO ` about_profiles ` VALUES ( 3 , ' 年糕崽崽 ' , ' https://api.dicebear.com/7.x/avataaars/svg?seed=NianGao&backgroundColor=b6e3f4 ' , ' 中国 · 浙江杭州 ' , ' 嗨!我是年糕崽崽,一名热衷于探索数字边界的前端架构师。我的职业生涯始于对像素级完美的执念。从早期的 jQuery 插件开发到如今的 WebGL 3D 场景构建,我始终认为:<strong>技术是骨架,艺术是灵魂。</strong><br><br>目前,我专注于高性能 B 端应用的体验升级, 以及探索生成式艺术( Generative Art) 在网页中的应用。闲暇之余, 我喜欢在杭州的西湖边散步, 或者捣腾我的客制化机械键盘。 ' , ' liqiworker@gmail.com ' , ' ngzz_0218 ' , ' [\\\"Vue 3\\\",\\\"React\\\",\\\"TypeScript\\\",\\\"Three.js\\\",\\\"Golang\\\",\\\"Tailwind CSS\\\",\\\"Rust\\\",\\\"Wails\\\"] ' , ' [{\\\"year\\\":\\\"2024 - 至今\\\",\\\"role\\\":\\\"技术负责人\\\",\\\"company\\\":\\\"某医疗平台公司\\\"},{\\\"year\\\":\\\"2020 - 2024\\\",\\\"role\\\":\\\"PHP开发工程师\\\",\\\"company\\\":\\\"某电商公司\\\"}] ' , 0 , 0 , 0 , 0 ) ;
2026-01-15 15:37:34 +08:00
2026-01-15 13:51:44 +08:00
-- ----------------------------
-- Table structure for access_logs
-- ----------------------------
DROP TABLE IF EXISTS ` access_logs ` ;
CREATE TABLE ` access_logs ` (
` id ` bigint UNSIGNED NOT NULL AUTO_INCREMENT COMMENT ' 主键ID ' ,
` ip ` varchar ( 45 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT ' 访问者IP地址 ' ,
` user_agent ` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL COMMENT ' 访问者浏览器信息 ' ,
` path ` varchar ( 255 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT ' 访问路径 ' ,
` method ` varchar ( 10 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT ' HTTP方法 ' ,
` status_code ` int UNSIGNED NOT NULL COMMENT ' HTTP状态码 ' ,
` response_time ` int UNSIGNED NOT NULL COMMENT ' 响应时间(毫秒) ' ,
2026-01-16 13:01:21 +08:00
` deleted_at ` bigint NOT NULL DEFAULT 0 ,
2026-01-16 13:38:52 +08:00
` created_at ` bigint NOT NULL DEFAULT 0 ,
2026-01-15 13:51:44 +08:00
PRIMARY KEY ( ` id ` ) USING BTREE ,
INDEX ` idx_path ` ( ` path ` ASC ) USING BTREE COMMENT ' 按访问路径查询索引 ' ,
INDEX ` idx_status_code ` ( ` status_code ` ASC ) USING BTREE COMMENT ' 按状态码查询索引 '
2026-01-16 13:38:52 +08:00
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = ' 访问日志表 ' ROW_FORMAT = DYNAMIC ;
2026-01-15 13:51:44 +08:00
-- ----------------------------
-- Records of access_logs
-- ----------------------------
2026-01-16 17:03:34 +08:00
-- ----------------------------
-- Table structure for categories
-- ----------------------------
DROP TABLE IF EXISTS ` categories ` ;
CREATE TABLE ` categories ` (
` id ` int UNSIGNED NOT NULL AUTO_INCREMENT COMMENT ' 分类ID ' ,
` name ` varchar ( 50 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT ' 分类名称 ' ,
` slug ` varchar ( 50 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT ' 分类别名 ' ,
` description ` varchar ( 200 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT ' 描述 ' ,
` sort_order ` int UNSIGNED NULL DEFAULT 0 COMMENT ' 排序 ' ,
` deleted_at ` bigint NOT NULL DEFAULT 0 ,
` created_at ` bigint NOT NULL DEFAULT 0 ,
` updated_at ` bigint NOT NULL DEFAULT 0 ,
PRIMARY KEY ( ` id ` ) USING BTREE ,
UNIQUE INDEX ` uk_slug ` ( ` slug ` ASC ) USING BTREE ,
INDEX ` idx_sort_order ` ( ` sort_order ` ASC ) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 5 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = ' 文章分类表 ' ROW_FORMAT = DYNAMIC ;
-- ----------------------------
-- Records of categories
-- ----------------------------
INSERT INTO ` categories ` VALUES ( 1 , ' 工程化 ' , ' 工程化 ' , NULL , 0 , 0 , 0 , 0 ) ;
INSERT INTO ` categories ` VALUES ( 2 , ' 图形渲染 ' , ' 图形渲染 ' , NULL , 0 , 0 , 0 , 0 ) ;
INSERT INTO ` categories ` VALUES ( 3 , ' 设计思维 ' , ' 设计思维 ' , NULL , 0 , 0 , 0 , 0 ) ;
INSERT INTO ` categories ` VALUES ( 4 , ' Go语言 ' , ' Go语言 ' , NULL , 0 , 0 , 0 , 0 ) ;
-- ----------------------------
-- Table structure for column_posts
-- ----------------------------
DROP TABLE IF EXISTS ` column_posts ` ;
CREATE TABLE ` column_posts ` (
` column_id ` int UNSIGNED NOT NULL COMMENT ' 专栏ID ' ,
` post_id ` int UNSIGNED NOT NULL COMMENT ' 文章ID ' ,
` sort_order ` int UNSIGNED NULL DEFAULT 0 COMMENT ' 排序 ' ,
` created_at ` bigint NOT NULL DEFAULT 0 ,
PRIMARY KEY ( ` column_id ` , ` post_id ` ) USING BTREE ,
INDEX ` idx_post_id ` ( ` post_id ` ASC ) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = ' 专栏文章关联表 ' ROW_FORMAT = DYNAMIC ;
-- ----------------------------
-- Records of column_posts
-- ----------------------------
INSERT INTO ` column_posts ` VALUES ( 1 , 1 , 0 , 0 ) ;
INSERT INTO ` column_posts ` VALUES ( 2 , 2 , 0 , 0 ) ;
INSERT INTO ` column_posts ` VALUES ( 3 , 3 , 0 , 0 ) ;
INSERT INTO ` column_posts ` VALUES ( 4 , 4 , 0 , 0 ) ;
INSERT INTO ` column_posts ` VALUES ( 4 , 5 , 0 , 0 ) ;
INSERT INTO ` column_posts ` VALUES ( 4 , 6 , 0 , 0 ) ;
-- ----------------------------
-- Table structure for columns
-- ----------------------------
DROP TABLE IF EXISTS ` columns ` ;
CREATE TABLE ` columns ` (
` id ` int UNSIGNED NOT NULL AUTO_INCREMENT COMMENT ' 专栏ID ' ,
` name ` varchar ( 100 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT ' 专栏名称 ' ,
` description ` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL COMMENT ' 专栏描述 ' ,
` cover ` varchar ( 255 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT ' 专栏封面 ' ,
` is_active ` tinyint ( 1 ) NOT NULL DEFAULT 1 COMMENT ' 是否启用 ' ,
` sort_order ` int UNSIGNED NULL DEFAULT 0 COMMENT ' 排序 ' ,
` deleted_at ` bigint NOT NULL DEFAULT 0 ,
` created_at ` bigint NOT NULL DEFAULT 0 ,
` updated_at ` bigint NOT NULL DEFAULT 0 ,
PRIMARY KEY ( ` id ` ) USING BTREE ,
INDEX ` idx_sort_order ` ( ` sort_order ` ASC ) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = ' 专栏表 ' ROW_FORMAT = DYNAMIC ;
-- ----------------------------
-- Records of columns
-- ----------------------------
2026-01-16 09:08:29 +08:00
-- ----------------------------
-- Table structure for email_suffixes
-- ----------------------------
DROP TABLE IF EXISTS ` email_suffixes ` ;
CREATE TABLE ` email_suffixes ` (
` id ` int NOT NULL AUTO_INCREMENT ,
` suffix ` varchar ( 50 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT ' 邮箱后缀 ' ,
` is_active ` tinyint ( 1 ) NOT NULL DEFAULT 1 COMMENT ' 是否启用 ' ,
` sort_order ` int NOT NULL DEFAULT 0 COMMENT ' 排序 ' ,
2026-01-16 13:38:52 +08:00
` deleted_at ` bigint NOT NULL DEFAULT 0 ,
2026-01-16 13:01:21 +08:00
` created_at ` bigint NOT NULL DEFAULT 0 ,
` updated_at ` bigint NOT NULL DEFAULT 0 ,
2026-01-16 09:08:29 +08:00
PRIMARY KEY ( ` id ` ) USING BTREE ,
UNIQUE INDEX ` uk_suffix ` ( ` suffix ` ASC ) USING BTREE
2026-01-16 13:38:52 +08:00
) ENGINE = InnoDB AUTO_INCREMENT = 15 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = ' 邮箱后缀配置表 ' ROW_FORMAT = DYNAMIC ;
2026-01-16 09:08:29 +08:00
-- ----------------------------
-- Records of email_suffixes
-- ----------------------------
2026-01-16 13:38:52 +08:00
INSERT INTO ` email_suffixes ` VALUES ( 1 , ' @gmail.com ' , 1 , 1 , 0 , 1768523866 , 1768538954 ) ;
INSERT INTO ` email_suffixes ` VALUES ( 2 , ' @163.com ' , 1 , 2 , 0 , 1768523866 , 1768538954 ) ;
INSERT INTO ` email_suffixes ` VALUES ( 3 , ' @qq.com ' , 1 , 3 , 0 , 1768523866 , 1768538954 ) ;
INSERT INTO ` email_suffixes ` VALUES ( 4 , ' @outlook.com ' , 1 , 4 , 0 , 1768523866 , 1768538954 ) ;
INSERT INTO ` email_suffixes ` VALUES ( 5 , ' @foxmail.com ' , 1 , 5 , 0 , 1768523866 , 1768538954 ) ;
INSERT INTO ` email_suffixes ` VALUES ( 6 , ' @sina.com ' , 1 , 6 , 0 , 1768523866 , 1768538954 ) ;
INSERT INTO ` email_suffixes ` VALUES ( 7 , ' @126.com ' , 1 , 7 , 0 , 1768523866 , 1768538954 ) ;
2026-01-16 09:08:29 +08:00
-- ----------------------------
-- Table structure for inquiries
-- ----------------------------
DROP TABLE IF EXISTS ` inquiries ` ;
CREATE TABLE ` inquiries ` (
` id ` int NOT NULL AUTO_INCREMENT ,
` name ` varchar ( 100 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT ' 姓名 ' ,
` company ` varchar ( 100 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT ' 公司/组织 ' ,
` contact_method ` varchar ( 20 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT ' 联系方式类型(email/wechat/phone) ' ,
` contact_value ` varchar ( 100 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT ' 联系方式值 ' ,
` budget ` varchar ( 50 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT ' 预算范围 ' ,
` description ` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL COMMENT ' 需求描述 ' ,
` status ` tinyint NOT NULL DEFAULT 0 COMMENT ' 状态: 0-未读, 1-已读, 2-已联系 ' ,
2026-01-16 13:38:52 +08:00
` deleted_at ` bigint NOT NULL DEFAULT 0 ,
2026-01-16 13:01:21 +08:00
` created_at ` bigint NOT NULL DEFAULT 0 ,
` updated_at ` bigint NOT NULL DEFAULT 0 ,
2026-01-16 09:08:29 +08:00
PRIMARY KEY ( ` id ` ) USING BTREE
2026-01-16 13:38:52 +08:00
) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = ' 合作咨询表 ' ROW_FORMAT = DYNAMIC ;
2026-01-16 09:08:29 +08:00
-- ----------------------------
-- Records of inquiries
-- ----------------------------
2026-01-15 15:37:34 +08:00
-- ----------------------------
-- Table structure for operation_logs
-- ----------------------------
DROP TABLE IF EXISTS ` operation_logs ` ;
CREATE TABLE ` operation_logs ` (
` id ` bigint UNSIGNED NOT NULL AUTO_INCREMENT COMMENT ' 主键ID ' ,
` user_id ` bigint UNSIGNED NOT NULL COMMENT ' 操作用户ID ' ,
` username ` varchar ( 50 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT ' 操作用户名 ' ,
` ip ` varchar ( 45 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT ' 操作IP地址 ' ,
` path ` varchar ( 255 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT ' 操作路径 ' ,
` method ` varchar ( 10 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT ' HTTP方法 ' ,
` params ` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL COMMENT ' 请求参数 ' ,
` status ` int NOT NULL COMMENT ' 响应状态码 ' ,
` duration ` int NOT NULL COMMENT ' 响应时间(毫秒) ' ,
2026-01-16 13:01:21 +08:00
` deleted_at ` bigint NOT NULL DEFAULT 0 ,
2026-01-16 13:38:52 +08:00
` created_at ` bigint NOT NULL DEFAULT 0 ,
2026-01-15 15:37:34 +08:00
PRIMARY KEY ( ` id ` ) USING BTREE ,
2026-01-16 13:38:52 +08:00
INDEX ` idx_user_id ` ( ` user_id ` ASC ) USING BTREE
2026-01-16 17:03:34 +08:00
) ENGINE = InnoDB AUTO_INCREMENT = 309 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = ' 操作日志表 ' ROW_FORMAT = DYNAMIC ;
2026-01-15 15:37:34 +08:00
-- ----------------------------
-- Records of operation_logs
-- ----------------------------
2026-01-16 13:38:52 +08:00
INSERT INTO ` operation_logs ` VALUES ( 1 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/dashboard/stats ' , ' GET ' , ' ' , 403 , 5 , 0 , 1768452895 ) ;
INSERT INTO ` operation_logs ` VALUES ( 2 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/dashboard/stats ' , ' GET ' , ' ' , 200 , 48 , 0 , 1768455285 ) ;
INSERT INTO ` operation_logs ` VALUES ( 3 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/dashboard/activities ' , ' GET ' , ' ' , 200 , 57 , 0 , 1768455285 ) ;
INSERT INTO ` operation_logs ` VALUES ( 4 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/users ' , ' GET ' , ' ' , 200 , 51 , 0 , 1768455286 ) ;
INSERT INTO ` operation_logs ` VALUES ( 5 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/users ' , ' GET ' , ' ' , 200 , 49 , 0 , 1768455290 ) ;
INSERT INTO ` operation_logs ` VALUES ( 6 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/roles ' , ' GET ' , ' ' , 200 , 140 , 0 , 1768455293 ) ;
INSERT INTO ` operation_logs ` VALUES ( 7 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/posts ' , ' GET ' , ' ' , 200 , 46 , 0 , 1768455294 ) ;
INSERT INTO ` operation_logs ` VALUES ( 8 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/works ' , ' GET ' , ' ' , 200 , 236 , 0 , 1768455295 ) ;
INSERT INTO ` operation_logs ` VALUES ( 9 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/snippets ' , ' GET ' , ' ' , 200 , 45 , 0 , 1768455295 ) ;
INSERT INTO ` operation_logs ` VALUES ( 10 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/settings ' , ' GET ' , ' ' , 200 , 46 , 0 , 1768455296 ) ;
INSERT INTO ` operation_logs ` VALUES ( 11 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/operation-logs ' , ' GET ' , ' ' , 200 , 47 , 0 , 1768455297 ) ;
INSERT INTO ` operation_logs ` VALUES ( 12 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/dashboard/stats ' , ' GET ' , ' ' , 200 , 50 , 0 , 1768455301 ) ;
INSERT INTO ` operation_logs ` VALUES ( 13 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/dashboard/activities ' , ' GET ' , ' ' , 200 , 49 , 0 , 1768455301 ) ;
INSERT INTO ` operation_logs ` VALUES ( 14 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/dashboard/stats ' , ' GET ' , ' ' , 200 , 54 , 0 , 1768455437 ) ;
INSERT INTO ` operation_logs ` VALUES ( 15 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/dashboard/activities ' , ' GET ' , ' ' , 200 , 51 , 0 , 1768455437 ) ;
INSERT INTO ` operation_logs ` VALUES ( 16 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/dashboard/stats ' , ' GET ' , ' ' , 200 , 59 , 0 , 1768462099 ) ;
INSERT INTO ` operation_logs ` VALUES ( 17 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/dashboard/activities ' , ' GET ' , ' ' , 200 , 50 , 0 , 1768462099 ) ;
INSERT INTO ` operation_logs ` VALUES ( 18 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/users ' , ' GET ' , ' ' , 200 , 47 , 0 , 1768462100 ) ;
INSERT INTO ` operation_logs ` VALUES ( 19 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/users/2 ' , ' GET ' , ' ' , 200 , 48 , 0 , 1768462102 ) ;
INSERT INTO ` operation_logs ` VALUES ( 20 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/users ' , ' GET ' , ' ' , 200 , 49 , 0 , 1768462103 ) ;
INSERT INTO ` operation_logs ` VALUES ( 21 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/users ' , ' POST ' , ' {\"username\":\"cs\",\"email\":\"cs@nailaoyun.cn\",\"role\":\"viewer\",\"isActive\":1} ' , 200 , 101 , 0 , 1768462115 ) ;
INSERT INTO ` operation_logs ` VALUES ( 22 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/users ' , ' GET ' , ' ' , 200 , 49 , 0 , 1768462115 ) ;
INSERT INTO ` operation_logs ` VALUES ( 23 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/users/2 ' , ' GET ' , ' ' , 200 , 46 , 0 , 1768462120 ) ;
INSERT INTO ` operation_logs ` VALUES ( 24 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/users/2 ' , ' PUT ' , ' {\"username\":\"editor\",\"email\":\"editor@example.com\",\"role\":\"viewer\",\"isActive\":1} ' , 200 , 97 , 0 , 1768462124 ) ;
INSERT INTO ` operation_logs ` VALUES ( 25 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/users ' , ' GET ' , ' ' , 200 , 45 , 0 , 1768462124 ) ;
INSERT INTO ` operation_logs ` VALUES ( 26 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/users/2 ' , ' GET ' , ' ' , 200 , 46 , 0 , 1768462127 ) ;
INSERT INTO ` operation_logs ` VALUES ( 27 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/users/2 ' , ' PUT ' , ' {\"username\":\"editor\",\"email\":\"editor@example.com\",\"role\":\"editor\",\"isActive\":1} ' , 200 , 98 , 0 , 1768462129 ) ;
INSERT INTO ` operation_logs ` VALUES ( 28 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/users ' , ' GET ' , ' ' , 200 , 45 , 0 , 1768462129 ) ;
INSERT INTO ` operation_logs ` VALUES ( 29 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/roles ' , ' GET ' , ' ' , 200 , 132 , 0 , 1768462130 ) ;
INSERT INTO ` operation_logs ` VALUES ( 30 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/posts ' , ' GET ' , ' ' , 200 , 46 , 0 , 1768462131 ) ;
INSERT INTO ` operation_logs ` VALUES ( 31 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/works ' , ' GET ' , ' ' , 200 , 237 , 0 , 1768462132 ) ;
INSERT INTO ` operation_logs ` VALUES ( 32 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/snippets ' , ' GET ' , ' ' , 200 , 45 , 0 , 1768462133 ) ;
INSERT INTO ` operation_logs ` VALUES ( 33 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/settings ' , ' GET ' , ' ' , 200 , 47 , 0 , 1768462134 ) ;
INSERT INTO ` operation_logs ` VALUES ( 34 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/operation-logs ' , ' GET ' , ' ' , 200 , 49 , 0 , 1768462134 ) ;
INSERT INTO ` operation_logs ` VALUES ( 35 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/operation-logs ' , ' GET ' , ' ' , 200 , 48 , 0 , 1768462135 ) ;
INSERT INTO ` operation_logs ` VALUES ( 36 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/dashboard/stats ' , ' GET ' , ' ' , 200 , 50 , 0 , 1768462135 ) ;
INSERT INTO ` operation_logs ` VALUES ( 37 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/dashboard/activities ' , ' GET ' , ' ' , 200 , 47 , 0 , 1768462135 ) ;
INSERT INTO ` operation_logs ` VALUES ( 38 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/dashboard/stats ' , ' GET ' , ' ' , 200 , 55 , 0 , 1768462504 ) ;
INSERT INTO ` operation_logs ` VALUES ( 39 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/dashboard/activities ' , ' GET ' , ' ' , 200 , 54 , 0 , 1768462504 ) ;
INSERT INTO ` operation_logs ` VALUES ( 40 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/works ' , ' GET ' , ' ' , 200 , 241 , 0 , 1768462507 ) ;
INSERT INTO ` operation_logs ` VALUES ( 41 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/posts ' , ' GET ' , ' ' , 200 , 44 , 0 , 1768462508 ) ;
INSERT INTO ` operation_logs ` VALUES ( 42 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/roles ' , ' GET ' , ' ' , 200 , 145 , 0 , 1768462509 ) ;
INSERT INTO ` operation_logs ` VALUES ( 43 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/users ' , ' GET ' , ' ' , 200 , 47 , 0 , 1768462509 ) ;
INSERT INTO ` operation_logs ` VALUES ( 44 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/posts ' , ' GET ' , ' ' , 200 , 47 , 0 , 1768462512 ) ;
INSERT INTO ` operation_logs ` VALUES ( 45 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/settings ' , ' GET ' , ' ' , 200 , 47 , 0 , 1768462514 ) ;
INSERT INTO ` operation_logs ` VALUES ( 46 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/operation-logs ' , ' GET ' , ' ' , 200 , 46 , 0 , 1768462524 ) ;
INSERT INTO ` operation_logs ` VALUES ( 47 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/operation-logs ' , ' GET ' , ' ' , 200 , 44 , 0 , 1768462526 ) ;
INSERT INTO ` operation_logs ` VALUES ( 48 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/operation-logs ' , ' GET ' , ' ' , 200 , 44 , 0 , 1768462527 ) ;
INSERT INTO ` operation_logs ` VALUES ( 49 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/roles ' , ' GET ' , ' ' , 200 , 143 , 0 , 1768462596 ) ;
INSERT INTO ` operation_logs ` VALUES ( 50 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/about ' , ' GET ' , ' ' , 200 , 49 , 0 , 1768462841 ) ;
INSERT INTO ` operation_logs ` VALUES ( 51 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/about/2 ' , ' DELETE ' , ' ' , 200 , 42 , 0 , 1768462847 ) ;
INSERT INTO ` operation_logs ` VALUES ( 52 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/about ' , ' GET ' , ' ' , 200 , 42 , 0 , 1768462847 ) ;
INSERT INTO ` operation_logs ` VALUES ( 53 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/about ' , ' GET ' , ' ' , 200 , 40 , 0 , 1768462848 ) ;
INSERT INTO ` operation_logs ` VALUES ( 54 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/about/1 ' , ' PUT ' , ' {\"name\":\"年糕崽崽\",\"avatar\":\"https://api.dicebear.com/7.x/avataaars/svg?seed=NianGao&backgroundColor=b6e3f4\",\"location\":\"中国 · 浙江杭州\",\"bio\":\"嗨!我是年糕崽崽,一名热衷于探索数字边界的前端架构师。我的职业生涯始于对像素级完美的执念。从早期的 jQuery 插件开发到如今的 WebGL 3D 场景构建,我始终认为:<strong>技术是骨架,艺术是灵魂。</strong><br><br>目前,我专注于高性能 B 端应用的体验升级, 以及探索生成式艺术( Generative Art) 在网页中的应用。闲暇之余, 我喜欢在杭州的西湖边散步, 或者捣腾我的客制化机械键盘。\",\"email\":\"hello@niangao.dev\",\"wechat\":\"Niangao_Dev\",\"isPrimary\":true,\"experiences\":[{\"year\":\"2024 - 至今\",\"role\":\"技术负责人\",\"company\":\"某医疗平台公司\"},{\"year\":\"2020 - 2024\",\"role\":\"PHP开发工程师\",\"company\":\"某电商公司\"}],\"techStack\":[\"Vue 3\",\"React\",\"TypeScript\",\"Three.js\",\"Golang\",\"Tailwind CSS\",\"Rust\",\"Wails\"]} ' , 200 , 55 , 0 , 1768462911 ) ;
INSERT INTO ` operation_logs ` VALUES ( 55 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/about ' , ' GET ' , ' ' , 200 , 47 , 0 , 1768462911 ) ;
INSERT INTO ` operation_logs ` VALUES ( 56 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/tags ' , ' GET ' , ' ' , 200 , 45 , 0 , 1768462919 ) ;
INSERT INTO ` operation_logs ` VALUES ( 57 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/works ' , ' GET ' , ' ' , 200 , 221 , 0 , 1768462919 ) ;
INSERT INTO ` operation_logs ` VALUES ( 58 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/posts ' , ' GET ' , ' ' , 200 , 45 , 0 , 1768462921 ) ;
INSERT INTO ` operation_logs ` VALUES ( 59 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/roles ' , ' GET ' , ' ' , 200 , 131 , 0 , 1768462922 ) ;
INSERT INTO ` operation_logs ` VALUES ( 60 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/users ' , ' GET ' , ' ' , 200 , 44 , 0 , 1768462923 ) ;
INSERT INTO ` operation_logs ` VALUES ( 61 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/dashboard/stats ' , ' GET ' , ' ' , 200 , 42 , 0 , 1768462924 ) ;
INSERT INTO ` operation_logs ` VALUES ( 62 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/dashboard/activities ' , ' GET ' , ' ' , 200 , 49 , 0 , 1768462924 ) ;
INSERT INTO ` operation_logs ` VALUES ( 63 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/posts ' , ' GET ' , ' ' , 200 , 42 , 0 , 1768462927 ) ;
INSERT INTO ` operation_logs ` VALUES ( 64 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/dashboard/stats ' , ' GET ' , ' ' , 200 , 49 , 0 , 1768464953 ) ;
INSERT INTO ` operation_logs ` VALUES ( 65 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/dashboard/activities ' , ' GET ' , ' ' , 200 , 51 , 0 , 1768464953 ) ;
INSERT INTO ` operation_logs ` VALUES ( 66 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/posts ' , ' GET ' , ' ' , 200 , 47 , 0 , 1768464956 ) ;
INSERT INTO ` operation_logs ` VALUES ( 67 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/dashboard/stats ' , ' GET ' , ' ' , 200 , 51 , 0 , 1768464991 ) ;
INSERT INTO ` operation_logs ` VALUES ( 68 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/dashboard/activities ' , ' GET ' , ' ' , 200 , 49 , 0 , 1768464991 ) ;
INSERT INTO ` operation_logs ` VALUES ( 69 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/users ' , ' GET ' , ' ' , 200 , 49 , 0 , 1768464993 ) ;
INSERT INTO ` operation_logs ` VALUES ( 70 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/roles ' , ' GET ' , ' ' , 200 , 145 , 0 , 1768464993 ) ;
INSERT INTO ` operation_logs ` VALUES ( 71 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/posts ' , ' GET ' , ' ' , 200 , 48 , 0 , 1768464994 ) ;
INSERT INTO ` operation_logs ` VALUES ( 72 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/works ' , ' GET ' , ' ' , 200 , 239 , 0 , 1768464995 ) ;
INSERT INTO ` operation_logs ` VALUES ( 73 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/posts ' , ' GET ' , ' ' , 200 , 48 , 0 , 1768464996 ) ;
INSERT INTO ` operation_logs ` VALUES ( 74 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/tags ' , ' GET ' , ' ' , 200 , 51 , 0 , 1768464996 ) ;
INSERT INTO ` operation_logs ` VALUES ( 75 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/about ' , ' GET ' , ' ' , 200 , 47 , 0 , 1768464997 ) ;
INSERT INTO ` operation_logs ` VALUES ( 76 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/settings ' , ' GET ' , ' ' , 200 , 50 , 0 , 1768464997 ) ;
INSERT INTO ` operation_logs ` VALUES ( 77 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/operation-logs ' , ' GET ' , ' ' , 200 , 47 , 0 , 1768464998 ) ;
INSERT INTO ` operation_logs ` VALUES ( 78 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/dashboard/stats ' , ' GET ' , ' ' , 200 , 49 , 0 , 1768464998 ) ;
INSERT INTO ` operation_logs ` VALUES ( 79 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/dashboard/activities ' , ' GET ' , ' ' , 200 , 48 , 0 , 1768464999 ) ;
INSERT INTO ` operation_logs ` VALUES ( 80 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/dashboard/stats ' , ' GET ' , ' ' , 200 , 49 , 0 , 1768465116 ) ;
INSERT INTO ` operation_logs ` VALUES ( 81 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/dashboard/activities ' , ' GET ' , ' ' , 200 , 54 , 0 , 1768465116 ) ;
INSERT INTO ` operation_logs ` VALUES ( 82 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/snippets ' , ' GET ' , ' ' , 200 , 47 , 0 , 1768465120 ) ;
INSERT INTO ` operation_logs ` VALUES ( 83 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/posts ' , ' GET ' , ' ' , 200 , 52 , 0 , 1768465156 ) ;
INSERT INTO ` operation_logs ` VALUES ( 84 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/roles ' , ' GET ' , ' ' , 200 , 145 , 0 , 1768465157 ) ;
INSERT INTO ` operation_logs ` VALUES ( 85 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/users ' , ' GET ' , ' ' , 200 , 46 , 0 , 1768465157 ) ;
INSERT INTO ` operation_logs ` VALUES ( 86 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/users ' , ' GET ' , ' ' , 200 , 49 , 0 , 1768465937 ) ;
INSERT INTO ` operation_logs ` VALUES ( 87 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/posts ' , ' GET ' , ' ' , 200 , 47 , 0 , 1768465938 ) ;
INSERT INTO ` operation_logs ` VALUES ( 88 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/dashboard/stats ' , ' GET ' , ' ' , 200 , 49 , 0 , 1768483051 ) ;
INSERT INTO ` operation_logs ` VALUES ( 89 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/dashboard/activities ' , ' GET ' , ' ' , 200 , 93 , 0 , 1768483051 ) ;
INSERT INTO ` operation_logs ` VALUES ( 90 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/works ' , ' GET ' , ' ' , 200 , 240 , 0 , 1768483066 ) ;
INSERT INTO ` operation_logs ` VALUES ( 91 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/about ' , ' GET ' , ' ' , 200 , 50 , 0 , 1768483074 ) ;
INSERT INTO ` operation_logs ` VALUES ( 92 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/dashboard/stats ' , ' GET ' , ' ' , 200 , 48 , 0 , 1768524774 ) ;
INSERT INTO ` operation_logs ` VALUES ( 93 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/dashboard/activities ' , ' GET ' , ' ' , 200 , 47 , 0 , 1768524774 ) ;
INSERT INTO ` operation_logs ` VALUES ( 94 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/snippets ' , ' GET ' , ' ' , 200 , 46 , 0 , 1768524784 ) ;
INSERT INTO ` operation_logs ` VALUES ( 95 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/inquiries ' , ' GET ' , ' ' , 200 , 50 , 0 , 1768525274 ) ;
INSERT INTO ` operation_logs ` VALUES ( 96 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/inquiries/1/status ' , ' PUT ' , ' {\"status\":1} ' , 200 , 49 , 0 , 1768525276 ) ;
INSERT INTO ` operation_logs ` VALUES ( 97 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/inquiries ' , ' GET ' , ' ' , 200 , 46 , 0 , 1768525276 ) ;
INSERT INTO ` operation_logs ` VALUES ( 98 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/inquiries/1/status ' , ' PUT ' , ' {\"status\":2} ' , 200 , 49 , 0 , 1768525280 ) ;
INSERT INTO ` operation_logs ` VALUES ( 99 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/inquiries ' , ' GET ' , ' ' , 200 , 45 , 0 , 1768525280 ) ;
INSERT INTO ` operation_logs ` VALUES ( 100 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/inquiries ' , ' GET ' , ' ' , 200 , 47 , 0 , 1768525377 ) ;
INSERT INTO ` operation_logs ` VALUES ( 101 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/dashboard/stats ' , ' GET ' , ' ' , 200 , 48 , 0 , 1768525429 ) ;
INSERT INTO ` operation_logs ` VALUES ( 102 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/dashboard/activities ' , ' GET ' , ' ' , 200 , 49 , 0 , 1768525429 ) ;
INSERT INTO ` operation_logs ` VALUES ( 103 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/settings ' , ' GET ' , ' ' , 200 , 47 , 0 , 1768525435 ) ;
INSERT INTO ` operation_logs ` VALUES ( 104 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/operation-logs ' , ' GET ' , ' ' , 200 , 43 , 0 , 1768525437 ) ;
INSERT INTO ` operation_logs ` VALUES ( 105 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/operation-logs ' , ' GET ' , ' ' , 200 , 47 , 0 , 1768525516 ) ;
INSERT INTO ` operation_logs ` VALUES ( 106 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/dashboard/stats ' , ' GET ' , ' ' , 200 , 49 , 0 , 1768525522 ) ;
INSERT INTO ` operation_logs ` VALUES ( 107 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/dashboard/activities ' , ' GET ' , ' ' , 200 , 49 , 0 , 1768525522 ) ;
INSERT INTO ` operation_logs ` VALUES ( 108 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/posts ' , ' GET ' , ' ' , 200 , 48 , 0 , 1768526026 ) ;
INSERT INTO ` operation_logs ` VALUES ( 109 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/works ' , ' GET ' , ' ' , 200 , 227 , 0 , 1768526028 ) ;
INSERT INTO ` operation_logs ` VALUES ( 110 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/snippets ' , ' GET ' , ' ' , 200 , 46 , 0 , 1768526029 ) ;
INSERT INTO ` operation_logs ` VALUES ( 111 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/tags ' , ' GET ' , ' ' , 200 , 43 , 0 , 1768526030 ) ;
INSERT INTO ` operation_logs ` VALUES ( 112 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/snippets ' , ' GET ' , ' ' , 200 , 45 , 0 , 1768526031 ) ;
INSERT INTO ` operation_logs ` VALUES ( 113 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/snippets ' , ' GET ' , ' ' , 200 , 50 , 0 , 1768526039 ) ;
INSERT INTO ` operation_logs ` VALUES ( 114 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/email-suffixes ' , ' GET ' , ' ' , 200 , 45 , 0 , 1768526046 ) ;
INSERT INTO ` operation_logs ` VALUES ( 115 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/email-suffixes ' , ' GET ' , ' ' , 200 , 55 , 0 , 1768526110 ) ;
INSERT INTO ` operation_logs ` VALUES ( 116 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/roles ' , ' GET ' , ' ' , 200 , 142 , 0 , 1768526116 ) ;
INSERT INTO ` operation_logs ` VALUES ( 117 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/users ' , ' GET ' , ' ' , 200 , 46 , 0 , 1768526119 ) ;
INSERT INTO ` operation_logs ` VALUES ( 118 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/roles ' , ' GET ' , ' ' , 200 , 138 , 0 , 1768526120 ) ;
INSERT INTO ` operation_logs ` VALUES ( 119 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/users ' , ' GET ' , ' ' , 200 , 46 , 0 , 1768526123 ) ;
INSERT INTO ` operation_logs ` VALUES ( 120 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/settings ' , ' GET ' , ' ' , 200 , 47 , 0 , 1768526129 ) ;
INSERT INTO ` operation_logs ` VALUES ( 121 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/operation-logs ' , ' GET ' , ' ' , 200 , 47 , 0 , 1768526130 ) ;
INSERT INTO ` operation_logs ` VALUES ( 122 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/dashboard/stats ' , ' GET ' , ' ' , 200 , 47 , 0 , 1768526133 ) ;
INSERT INTO ` operation_logs ` VALUES ( 123 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/dashboard/activities ' , ' GET ' , ' ' , 200 , 45 , 0 , 1768526133 ) ;
INSERT INTO ` operation_logs ` VALUES ( 124 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/dashboard/stats ' , ' GET ' , ' ' , 200 , 50 , 0 , 1768526708 ) ;
INSERT INTO ` operation_logs ` VALUES ( 125 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/dashboard/activities ' , ' GET ' , ' ' , 200 , 50 , 0 , 1768526708 ) ;
INSERT INTO ` operation_logs ` VALUES ( 126 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/dashboard/stats ' , ' GET ' , ' ' , 200 , 52 , 0 , 1768526723 ) ;
INSERT INTO ` operation_logs ` VALUES ( 127 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/dashboard/activities ' , ' GET ' , ' ' , 200 , 46 , 0 , 1768526723 ) ;
INSERT INTO ` operation_logs ` VALUES ( 128 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/dashboard/stats ' , ' GET ' , ' ' , 200 , 53 , 0 , 1768526783 ) ;
INSERT INTO ` operation_logs ` VALUES ( 129 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/dashboard/stats ' , ' GET ' , ' ' , 200 , 46 , 0 , 1768526783 ) ;
INSERT INTO ` operation_logs ` VALUES ( 130 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/dashboard/stats ' , ' GET ' , ' ' , 200 , 49 , 0 , 1768526973 ) ;
INSERT INTO ` operation_logs ` VALUES ( 131 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/posts ' , ' GET ' , ' ' , 200 , 48 , 0 , 1768527108 ) ;
INSERT INTO ` operation_logs ` VALUES ( 132 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/posts ' , ' GET ' , ' ' , 200 , 55 , 0 , 1768527379 ) ;
INSERT INTO ` operation_logs ` VALUES ( 133 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/posts ' , ' GET ' , ' ' , 200 , 47 , 0 , 1768527425 ) ;
INSERT INTO ` operation_logs ` VALUES ( 134 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/posts ' , ' GET ' , ' ' , 200 , 46 , 0 , 1768527425 ) ;
INSERT INTO ` operation_logs ` VALUES ( 135 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/posts ' , ' GET ' , ' ' , 200 , 51 , 0 , 1768527502 ) ;
INSERT INTO ` operation_logs ` VALUES ( 136 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/dashboard/stats ' , ' GET ' , ' ' , 200 , 54 , 0 , 1768527595 ) ;
INSERT INTO ` operation_logs ` VALUES ( 137 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/operation-logs ' , ' GET ' , ' ' , 200 , 57 , 0 , 1768527595 ) ;
INSERT INTO ` operation_logs ` VALUES ( 138 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/dashboard/stats ' , ' GET ' , ' ' , 200 , 45 , 0 , 1768527605 ) ;
INSERT INTO ` operation_logs ` VALUES ( 139 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/dashboard/stats ' , ' GET ' , ' ' , 200 , 44 , 0 , 1768527608 ) ;
INSERT INTO ` operation_logs ` VALUES ( 140 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/dashboard/stats ' , ' GET ' , ' ' , 200 , 46 , 0 , 1768527614 ) ;
INSERT INTO ` operation_logs ` VALUES ( 141 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/dashboard/stats ' , ' GET ' , ' ' , 200 , 48 , 0 , 1768527625 ) ;
INSERT INTO ` operation_logs ` VALUES ( 142 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/posts ' , ' GET ' , ' ' , 200 , 45 , 0 , 1768527653 ) ;
INSERT INTO ` operation_logs ` VALUES ( 143 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/dashboard/stats ' , ' GET ' , ' ' , 200 , 48 , 0 , 1768527658 ) ;
INSERT INTO ` operation_logs ` VALUES ( 144 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/dashboard/stats ' , ' GET ' , ' ' , 200 , 53 , 0 , 1768527880 ) ;
INSERT INTO ` operation_logs ` VALUES ( 145 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/dashboard/stats ' , ' GET ' , ' ' , 200 , 46 , 0 , 1768527885 ) ;
INSERT INTO ` operation_logs ` VALUES ( 146 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/dashboard/stats ' , ' GET ' , ' ' , 200 , 45 , 0 , 1768527886 ) ;
INSERT INTO ` operation_logs ` VALUES ( 147 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/dashboard/stats ' , ' GET ' , ' ' , 200 , 46 , 0 , 1768527887 ) ;
INSERT INTO ` operation_logs ` VALUES ( 148 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/dashboard/stats ' , ' GET ' , ' ' , 200 , 47 , 0 , 1768528036 ) ;
INSERT INTO ` operation_logs ` VALUES ( 149 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/dashboard/stats ' , ' GET ' , ' ' , 200 , 51 , 0 , 1768528091 ) ;
INSERT INTO ` operation_logs ` VALUES ( 150 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/dashboard/stats ' , ' GET ' , ' ' , 200 , 142 , 0 , 1768528656 ) ;
INSERT INTO ` operation_logs ` VALUES ( 151 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/dashboard/stats ' , ' GET ' , ' ' , 200 , 153 , 0 , 1768528669 ) ;
INSERT INTO ` operation_logs ` VALUES ( 152 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/dashboard/stats ' , ' GET ' , ' ' , 200 , 144 , 0 , 1768528671 ) ;
INSERT INTO ` operation_logs ` VALUES ( 153 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/dashboard/stats ' , ' GET ' , ' ' , 200 , 132 , 0 , 1768528672 ) ;
INSERT INTO ` operation_logs ` VALUES ( 154 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/dashboard/stats ' , ' GET ' , ' ' , 200 , 136 , 0 , 1768528674 ) ;
INSERT INTO ` operation_logs ` VALUES ( 155 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/dashboard/stats ' , ' GET ' , ' ' , 200 , 144 , 0 , 1768528674 ) ;
INSERT INTO ` operation_logs ` VALUES ( 156 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/dashboard/stats ' , ' GET ' , ' ' , 200 , 136 , 0 , 1768528675 ) ;
INSERT INTO ` operation_logs ` VALUES ( 157 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/dashboard/stats ' , ' GET ' , ' ' , 200 , 143 , 0 , 1768528676 ) ;
INSERT INTO ` operation_logs ` VALUES ( 158 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/operation-logs ' , ' GET ' , ' ' , 200 , 57 , 0 , 1768528682 ) ;
INSERT INTO ` operation_logs ` VALUES ( 159 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/dashboard/stats ' , ' GET ' , ' ' , 200 , 97 , 0 , 1768528682 ) ;
INSERT INTO ` operation_logs ` VALUES ( 160 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/dashboard/stats ' , ' GET ' , ' ' , 200 , 145 , 0 , 1768528684 ) ;
INSERT INTO ` operation_logs ` VALUES ( 161 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/posts ' , ' GET ' , ' ' , 200 , 46 , 0 , 1768528684 ) ;
INSERT INTO ` operation_logs ` VALUES ( 162 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/works ' , ' GET ' , ' ' , 200 , 242 , 0 , 1768528685 ) ;
INSERT INTO ` operation_logs ` VALUES ( 163 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/snippets ' , ' GET ' , ' ' , 200 , 49 , 0 , 1768528687 ) ;
INSERT INTO ` operation_logs ` VALUES ( 164 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/tags ' , ' GET ' , ' ' , 200 , 50 , 0 , 1768528688 ) ;
INSERT INTO ` operation_logs ` VALUES ( 165 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/about ' , ' GET ' , ' ' , 200 , 47 , 0 , 1768528690 ) ;
INSERT INTO ` operation_logs ` VALUES ( 166 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/works ' , ' GET ' , ' ' , 200 , 245 , 0 , 1768528693 ) ;
INSERT INTO ` operation_logs ` VALUES ( 167 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/operation-logs ' , ' GET ' , ' ' , 200 , 47 , 0 , 1768528694 ) ;
INSERT INTO ` operation_logs ` VALUES ( 168 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/dashboard/stats ' , ' GET ' , ' ' , 200 , 99 , 0 , 1768528694 ) ;
INSERT INTO ` operation_logs ` VALUES ( 169 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/works ' , ' GET ' , ' ' , 200 , 220 , 0 , 1768528698 ) ;
INSERT INTO ` operation_logs ` VALUES ( 170 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/snippets ' , ' GET ' , ' ' , 200 , 47 , 0 , 1768528699 ) ;
INSERT INTO ` operation_logs ` VALUES ( 171 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/operation-logs ' , ' GET ' , ' ' , 200 , 48 , 0 , 1768528773 ) ;
INSERT INTO ` operation_logs ` VALUES ( 172 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/dashboard/stats ' , ' GET ' , ' ' , 200 , 92 , 0 , 1768528773 ) ;
INSERT INTO ` operation_logs ` VALUES ( 173 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/dashboard/stats ' , ' GET ' , ' ' , 200 , 139 , 0 , 1768528774 ) ;
INSERT INTO ` operation_logs ` VALUES ( 174 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/dashboard/stats ' , ' GET ' , ' ' , 200 , 95 , 0 , 1768528932 ) ;
INSERT INTO ` operation_logs ` VALUES ( 175 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/dashboard/stats ' , ' GET ' , ' ' , 200 , 141 , 0 , 1768528935 ) ;
INSERT INTO ` operation_logs ` VALUES ( 176 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/dashboard/stats ' , ' GET ' , ' ' , 200 , 137 , 0 , 1768528937 ) ;
INSERT INTO ` operation_logs ` VALUES ( 177 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/dashboard/stats ' , ' GET ' , ' ' , 200 , 137 , 0 , 1768528937 ) ;
INSERT INTO ` operation_logs ` VALUES ( 178 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/dashboard/stats ' , ' GET ' , ' ' , 200 , 143 , 0 , 1768528941 ) ;
INSERT INTO ` operation_logs ` VALUES ( 179 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/dashboard/stats ' , ' GET ' , ' ' , 200 , 138 , 0 , 1768528942 ) ;
INSERT INTO ` operation_logs ` VALUES ( 180 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/dashboard/stats ' , ' GET ' , ' ' , 200 , 136 , 0 , 1768528943 ) ;
INSERT INTO ` operation_logs ` VALUES ( 181 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/dashboard/stats ' , ' GET ' , ' ' , 200 , 146 , 0 , 1768528951 ) ;
INSERT INTO ` operation_logs ` VALUES ( 182 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/operation-logs ' , ' GET ' , ' ' , 200 , 47 , 0 , 1768529007 ) ;
INSERT INTO ` operation_logs ` VALUES ( 183 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/dashboard/stats ' , ' GET ' , ' ' , 200 , 96 , 0 , 1768529007 ) ;
INSERT INTO ` operation_logs ` VALUES ( 184 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/operation-logs ' , ' GET ' , ' ' , 200 , 45 , 0 , 1768529012 ) ;
INSERT INTO ` operation_logs ` VALUES ( 185 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/dashboard/stats ' , ' GET ' , ' ' , 200 , 90 , 0 , 1768529012 ) ;
INSERT INTO ` operation_logs ` VALUES ( 186 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/dashboard/stats ' , ' GET ' , ' ' , 200 , 136 , 0 , 1768529013 ) ;
INSERT INTO ` operation_logs ` VALUES ( 187 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/dashboard/stats ' , ' GET ' , ' ' , 200 , 200 , 0 , 1768529364 ) ;
INSERT INTO ` operation_logs ` VALUES ( 188 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/dashboard/stats ' , ' GET ' , ' ' , 200 , 193 , 0 , 1768529373 ) ;
INSERT INTO ` operation_logs ` VALUES ( 189 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/dashboard/stats ' , ' GET ' , ' ' , 200 , 183 , 0 , 1768529459 ) ;
INSERT INTO ` operation_logs ` VALUES ( 190 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/dashboard/stats ' , ' GET ' , ' ' , 200 , 138 , 0 , 1768529618 ) ;
INSERT INTO ` operation_logs ` VALUES ( 191 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/dashboard/stats ' , ' GET ' , ' ' , 200 , 137 , 0 , 1768529620 ) ;
INSERT INTO ` operation_logs ` VALUES ( 192 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/dashboard/stats ' , ' GET ' , ' ' , 200 , 141 , 0 , 1768529790 ) ;
INSERT INTO ` operation_logs ` VALUES ( 193 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/operation-logs ' , ' GET ' , ' ' , 200 , 48 , 0 , 1768529867 ) ;
INSERT INTO ` operation_logs ` VALUES ( 194 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/dashboard/stats ' , ' GET ' , ' ' , 200 , 95 , 0 , 1768529867 ) ;
INSERT INTO ` operation_logs ` VALUES ( 195 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/dashboard/stats ' , ' GET ' , ' ' , 200 , 137 , 0 , 1768529869 ) ;
INSERT INTO ` operation_logs ` VALUES ( 196 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/dashboard/stats ' , ' GET ' , ' ' , 200 , 96 , 0 , 1768530104 ) ;
INSERT INTO ` operation_logs ` VALUES ( 197 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/dashboard/stats ' , ' GET ' , ' ' , 200 , 90 , 0 , 1768530104 ) ;
INSERT INTO ` operation_logs ` VALUES ( 198 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/dashboard/stats ' , ' GET ' , ' ' , 200 , 90 , 0 , 1768530104 ) ;
INSERT INTO ` operation_logs ` VALUES ( 199 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/operation-logs ' , ' GET ' , ' ' , 200 , 53 , 0 , 1768532353 ) ;
INSERT INTO ` operation_logs ` VALUES ( 200 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/dashboard/stats ' , ' GET ' , ' ' , 200 , 103 , 0 , 1768532353 ) ;
INSERT INTO ` operation_logs ` VALUES ( 201 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/dashboard/stats ' , ' GET ' , ' ' , 200 , 93 , 0 , 1768532365 ) ;
INSERT INTO ` operation_logs ` VALUES ( 202 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/operation-logs ' , ' GET ' , ' ' , 200 , 55 , 0 , 1768532365 ) ;
INSERT INTO ` operation_logs ` VALUES ( 203 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/dashboard/stats ' , ' GET ' , ' ' , 200 , 146 , 0 , 1768532370 ) ;
INSERT INTO ` operation_logs ` VALUES ( 204 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/posts ' , ' GET ' , ' ' , 200 , 49 , 0 , 1768532371 ) ;
INSERT INTO ` operation_logs ` VALUES ( 205 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/works ' , ' GET ' , ' ' , 200 , 237 , 0 , 1768532372 ) ;
INSERT INTO ` operation_logs ` VALUES ( 206 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/snippets ' , ' GET ' , ' ' , 200 , 47 , 0 , 1768532375 ) ;
INSERT INTO ` operation_logs ` VALUES ( 207 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/tags ' , ' GET ' , ' ' , 200 , 47 , 0 , 1768532375 ) ;
INSERT INTO ` operation_logs ` VALUES ( 208 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/about ' , ' GET ' , ' ' , 200 , 46 , 0 , 1768532380 ) ;
INSERT INTO ` operation_logs ` VALUES ( 209 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/about ' , ' GET ' , ' ' , 200 , 45 , 0 , 1768532385 ) ;
INSERT INTO ` operation_logs ` VALUES ( 210 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/about ' , ' GET ' , ' ' , 200 , 46 , 0 , 1768532386 ) ;
INSERT INTO ` operation_logs ` VALUES ( 211 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/inquiries ' , ' GET ' , ' ' , 200 , 46 , 0 , 1768532405 ) ;
INSERT INTO ` operation_logs ` VALUES ( 212 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/email-suffixes ' , ' GET ' , ' ' , 200 , 53 , 0 , 1768532407 ) ;
INSERT INTO ` operation_logs ` VALUES ( 213 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/users ' , ' GET ' , ' ' , 200 , 49 , 0 , 1768532409 ) ;
INSERT INTO ` operation_logs ` VALUES ( 214 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/roles ' , ' GET ' , ' ' , 200 , 147 , 0 , 1768532410 ) ;
INSERT INTO ` operation_logs ` VALUES ( 215 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/settings ' , ' GET ' , ' ' , 200 , 45 , 0 , 1768532440 ) ;
INSERT INTO ` operation_logs ` VALUES ( 216 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/operation-logs ' , ' GET ' , ' ' , 200 , 47 , 0 , 1768532441 ) ;
INSERT INTO ` operation_logs ` VALUES ( 217 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/operation-logs ' , ' GET ' , ' ' , 200 , 48 , 0 , 1768532443 ) ;
INSERT INTO ` operation_logs ` VALUES ( 218 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/dashboard/stats ' , ' GET ' , ' ' , 200 , 146 , 0 , 1768532446 ) ;
INSERT INTO ` operation_logs ` VALUES ( 219 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/dashboard/stats ' , ' GET ' , ' ' , 200 , 150 , 0 , 1768532460 ) ;
INSERT INTO ` operation_logs ` VALUES ( 220 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/users ' , ' GET ' , ' ' , 200 , 49 , 0 , 1768532475 ) ;
INSERT INTO ` operation_logs ` VALUES ( 221 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/roles ' , ' GET ' , ' ' , 200 , 142 , 0 , 1768532475 ) ;
INSERT INTO ` operation_logs ` VALUES ( 222 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/dashboard/stats ' , ' GET ' , ' ' , 200 , 148 , 0 , 1768532520 ) ;
INSERT INTO ` operation_logs ` VALUES ( 223 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/operation-logs ' , ' GET ' , ' ' , 200 , 49 , 0 , 1768532585 ) ;
INSERT INTO ` operation_logs ` VALUES ( 224 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/dashboard/stats ' , ' GET ' , ' ' , 200 , 96 , 0 , 1768532585 ) ;
INSERT INTO ` operation_logs ` VALUES ( 225 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/dashboard/stats ' , ' GET ' , ' ' , 200 , 93 , 0 , 1768532681 ) ;
INSERT INTO ` operation_logs ` VALUES ( 226 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/operation-logs ' , ' GET ' , ' ' , 200 , 49 , 0 , 1768532681 ) ;
INSERT INTO ` operation_logs ` VALUES ( 227 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/operation-logs ' , ' GET ' , ' ' , 200 , 49 , 0 , 1768532725 ) ;
INSERT INTO ` operation_logs ` VALUES ( 228 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/dashboard/stats ' , ' GET ' , ' ' , 200 , 100 , 0 , 1768532725 ) ;
INSERT INTO ` operation_logs ` VALUES ( 229 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/operation-logs ' , ' GET ' , ' ' , 200 , 47 , 0 , 1768532738 ) ;
INSERT INTO ` operation_logs ` VALUES ( 230 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/dashboard/stats ' , ' GET ' , ' ' , 200 , 95 , 0 , 1768532738 ) ;
INSERT INTO ` operation_logs ` VALUES ( 231 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/dashboard/stats ' , ' GET ' , ' ' , 200 , 94 , 0 , 1768532910 ) ;
INSERT INTO ` operation_logs ` VALUES ( 232 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/operation-logs ' , ' GET ' , ' ' , 200 , 50 , 0 , 1768532910 ) ;
INSERT INTO ` operation_logs ` VALUES ( 233 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/tags ' , ' GET ' , ' ' , 200 , 49 , 0 , 1768532912 ) ;
INSERT INTO ` operation_logs ` VALUES ( 234 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/settings ' , ' GET ' , ' ' , 200 , 46 , 0 , 1768532914 ) ;
INSERT INTO ` operation_logs ` VALUES ( 235 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/operation-logs ' , ' GET ' , ' ' , 200 , 45 , 0 , 1768532915 ) ;
INSERT INTO ` operation_logs ` VALUES ( 236 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/about ' , ' GET ' , ' ' , 200 , 46 , 0 , 1768532917 ) ;
INSERT INTO ` operation_logs ` VALUES ( 237 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/posts ' , ' GET ' , ' ' , 200 , 46 , 0 , 1768532919 ) ;
INSERT INTO ` operation_logs ` VALUES ( 238 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/snippets ' , ' GET ' , ' ' , 200 , 51 , 0 , 1768533052 ) ;
INSERT INTO ` operation_logs ` VALUES ( 239 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/works ' , ' GET ' , ' ' , 200 , 246 , 0 , 1768533154 ) ;
INSERT INTO ` operation_logs ` VALUES ( 240 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/posts ' , ' GET ' , ' ' , 200 , 46 , 0 , 1768533159 ) ;
INSERT INTO ` operation_logs ` VALUES ( 241 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/posts ' , ' GET ' , ' ' , 200 , 46 , 0 , 1768533167 ) ;
INSERT INTO ` operation_logs ` VALUES ( 242 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/posts ' , ' GET ' , ' ' , 200 , 44 , 0 , 1768533173 ) ;
INSERT INTO ` operation_logs ` VALUES ( 243 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/operation-logs ' , ' GET ' , ' ' , 200 , 46 , 0 , 1768533202 ) ;
INSERT INTO ` operation_logs ` VALUES ( 244 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/dashboard/stats ' , ' GET ' , ' ' , 200 , 92 , 0 , 1768533202 ) ;
INSERT INTO ` operation_logs ` VALUES ( 245 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/dashboard/stats ' , ' GET ' , ' ' , 200 , 94 , 0 , 1768533212 ) ;
INSERT INTO ` operation_logs ` VALUES ( 246 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/operation-logs ' , ' GET ' , ' ' , 200 , 55 , 0 , 1768533212 ) ;
INSERT INTO ` operation_logs ` VALUES ( 247 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/settings ' , ' GET ' , ' ' , 200 , 46 , 0 , 1768533214 ) ;
INSERT INTO ` operation_logs ` VALUES ( 248 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/dashboard/stats ' , ' GET ' , ' ' , 200 , 137 , 0 , 1768533222 ) ;
INSERT INTO ` operation_logs ` VALUES ( 249 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/dashboard/stats ' , ' GET ' , ' ' , 200 , 143 , 0 , 1768533226 ) ;
INSERT INTO ` operation_logs ` VALUES ( 250 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/dashboard/stats ' , ' GET ' , ' ' , 200 , 92 , 0 , 1768533229 ) ;
INSERT INTO ` operation_logs ` VALUES ( 251 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/operation-logs ' , ' GET ' , ' ' , 200 , 45 , 0 , 1768533229 ) ;
INSERT INTO ` operation_logs ` VALUES ( 252 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/users ' , ' GET ' , ' ' , 200 , 47 , 0 , 1768533238 ) ;
INSERT INTO ` operation_logs ` VALUES ( 253 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/users/2 ' , ' GET ' , ' ' , 200 , 48 , 0 , 1768533242 ) ;
INSERT INTO ` operation_logs ` VALUES ( 254 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/users ' , ' GET ' , ' ' , 200 , 45 , 0 , 1768533244 ) ;
INSERT INTO ` operation_logs ` VALUES ( 255 , 5 , ' cs ' , ' ::1 ' , ' /api/admin/dashboard/stats ' , ' GET ' , ' ' , 200 , 96 , 0 , 1768533265 ) ;
INSERT INTO ` operation_logs ` VALUES ( 256 , 5 , ' cs ' , ' ::1 ' , ' /api/admin/operation-logs ' , ' GET ' , ' ' , 200 , 51 , 0 , 1768533265 ) ;
INSERT INTO ` operation_logs ` VALUES ( 257 , 5 , ' cs ' , ' ::1 ' , ' /api/admin/dashboard/stats ' , ' GET ' , ' ' , 200 , 142 , 0 , 1768533270 ) ;
INSERT INTO ` operation_logs ` VALUES ( 258 , 5 , ' cs ' , ' ::1 ' , ' /api/admin/works ' , ' GET ' , ' ' , 200 , 233 , 0 , 1768533271 ) ;
INSERT INTO ` operation_logs ` VALUES ( 259 , 5 , ' cs ' , ' ::1 ' , ' /api/admin/posts ' , ' GET ' , ' ' , 200 , 45 , 0 , 1768533272 ) ;
INSERT INTO ` operation_logs ` VALUES ( 260 , 5 , ' cs ' , ' ::1 ' , ' /api/admin/works ' , ' GET ' , ' ' , 200 , 219 , 0 , 1768533361 ) ;
INSERT INTO ` operation_logs ` VALUES ( 261 , 5 , ' cs ' , ' ::1 ' , ' /api/admin/works ' , ' GET ' , ' ' , 200 , 221 , 0 , 1768533366 ) ;
INSERT INTO ` operation_logs ` VALUES ( 262 , 5 , ' cs ' , ' ::1 ' , ' /api/admin/snippets ' , ' GET ' , ' ' , 200 , 48 , 0 , 1768533370 ) ;
INSERT INTO ` operation_logs ` VALUES ( 263 , 5 , ' cs ' , ' ::1 ' , ' /api/admin/tags ' , ' GET ' , ' ' , 200 , 44 , 0 , 1768533371 ) ;
INSERT INTO ` operation_logs ` VALUES ( 264 , 5 , ' cs ' , ' ::1 ' , ' /api/admin/posts ' , ' GET ' , ' ' , 200 , 45 , 0 , 1768533372 ) ;
INSERT INTO ` operation_logs ` VALUES ( 265 , 5 , ' cs ' , ' ::1 ' , ' /api/admin/dashboard/stats ' , ' GET ' , ' ' , 200 , 139 , 0 , 1768533373 ) ;
INSERT INTO ` operation_logs ` VALUES ( 266 , 5 , ' cs ' , ' ::1 ' , ' /api/admin/dashboard/stats ' , ' GET ' , ' ' , 200 , 153 , 0 , 1768533735 ) ;
INSERT INTO ` operation_logs ` VALUES ( 267 , 5 , ' cs ' , ' ::1 ' , ' /api/admin/dashboard/stats ' , ' GET ' , ' ' , 200 , 183 , 0 , 1768533846 ) ;
INSERT INTO ` operation_logs ` VALUES ( 268 , 5 , ' cs ' , ' ::1 ' , ' /api/admin/dashboard/stats ' , ' GET ' , ' ' , 200 , 182 , 0 , 1768533850 ) ;
INSERT INTO ` operation_logs ` VALUES ( 269 , 5 , ' cs ' , ' ::1 ' , ' /api/admin/dashboard/stats ' , ' GET ' , ' ' , 200 , 180 , 0 , 1768533851 ) ;
INSERT INTO ` operation_logs ` VALUES ( 270 , 5 , ' cs ' , ' ::1 ' , ' /api/admin/dashboard/stats ' , ' GET ' , ' ' , 200 , 193 , 0 , 1768533852 ) ;
INSERT INTO ` operation_logs ` VALUES ( 271 , 5 , ' cs ' , ' ::1 ' , ' /api/admin/dashboard/stats ' , ' GET ' , ' ' , 200 , 192 , 0 , 1768533854 ) ;
INSERT INTO ` operation_logs ` VALUES ( 272 , 5 , ' cs ' , ' ::1 ' , ' /api/admin/dashboard/stats ' , ' GET ' , ' ' , 200 , 197 , 0 , 1768533930 ) ;
INSERT INTO ` operation_logs ` VALUES ( 273 , 5 , ' cs ' , ' ::1 ' , ' /api/admin/email-suffixes ' , ' GET ' , ' ' , 200 , 46 , 0 , 1768534851 ) ;
INSERT INTO ` operation_logs ` VALUES ( 274 , 5 , ' cs ' , ' ::1 ' , ' /api/admin/email-suffixes ' , ' GET ' , ' ' , 200 , 47 , 0 , 1768535295 ) ;
INSERT INTO ` operation_logs ` VALUES ( 275 , 5 , ' cs ' , ' ::1 ' , ' /api/admin/dashboard/stats ' , ' GET ' , ' ' , 200 , 189 , 0 , 1768535879 ) ;
INSERT INTO ` operation_logs ` VALUES ( 276 , 5 , ' cs ' , ' ::1 ' , ' /api/admin/dashboard/stats ' , ' GET ' , ' ' , 200 , 190 , 0 , 1768535946 ) ;
INSERT INTO ` operation_logs ` VALUES ( 277 , 5 , ' cs ' , ' ::1 ' , ' /api/admin/dashboard/stats ' , ' GET ' , ' ' , 200 , 190 , 0 , 1768535948 ) ;
INSERT INTO ` operation_logs ` VALUES ( 278 , 5 , ' cs ' , ' ::1 ' , ' /api/admin/dashboard/stats ' , ' GET ' , ' ' , 200 , 189 , 0 , 1768535951 ) ;
INSERT INTO ` operation_logs ` VALUES ( 279 , 5 , ' cs ' , ' ::1 ' , ' /api/admin/dashboard/stats ' , ' GET ' , ' ' , 200 , 196 , 0 , 1768535953 ) ;
INSERT INTO ` operation_logs ` VALUES ( 280 , 5 , ' cs ' , ' ::1 ' , ' /api/admin/about ' , ' GET ' , ' ' , 200 , 47 , 0 , 1768537859 ) ;
INSERT INTO ` operation_logs ` VALUES ( 281 , 5 , ' cs ' , ' ::1 ' , ' /api/admin/posts ' , ' GET ' , ' ' , 200 , 50 , 0 , 1768537860 ) ;
INSERT INTO ` operation_logs ` VALUES ( 282 , 5 , ' cs ' , ' ::1 ' , ' /api/admin/works ' , ' GET ' , ' ' , 200 , 250 , 0 , 1768538179 ) ;
INSERT INTO ` operation_logs ` VALUES ( 283 , 5 , ' cs ' , ' ::1 ' , ' /api/admin/posts ' , ' GET ' , ' ' , 200 , 47 , 0 , 1768538180 ) ;
INSERT INTO ` operation_logs ` VALUES ( 284 , 5 , ' cs ' , ' ::1 ' , ' /api/admin/works ' , ' GET ' , ' ' , 200 , 224 , 0 , 1768538193 ) ;
INSERT INTO ` operation_logs ` VALUES ( 285 , 5 , ' cs ' , ' ::1 ' , ' /api/admin/posts ' , ' GET ' , ' ' , 200 , 46 , 0 , 1768538193 ) ;
INSERT INTO ` operation_logs ` VALUES ( 286 , 5 , ' cs ' , ' ::1 ' , ' /api/admin/works ' , ' GET ' , ' ' , 200 , 245 , 0 , 1768539279 ) ;
INSERT INTO ` operation_logs ` VALUES ( 287 , 5 , ' cs ' , ' ::1 ' , ' /api/admin/posts ' , ' GET ' , ' ' , 200 , 49 , 0 , 1768539282 ) ;
INSERT INTO ` operation_logs ` VALUES ( 288 , 5 , ' cs ' , ' ::1 ' , ' /api/admin/posts ' , ' GET ' , ' ' , 200 , 47 , 0 , 1768539301 ) ;
INSERT INTO ` operation_logs ` VALUES ( 289 , 5 , ' cs ' , ' ::1 ' , ' /api/admin/works ' , ' GET ' , ' ' , 200 , 236 , 0 , 1768539305 ) ;
INSERT INTO ` operation_logs ` VALUES ( 290 , 5 , ' cs ' , ' ::1 ' , ' /api/admin/snippets ' , ' GET ' , ' ' , 200 , 43 , 0 , 1768539306 ) ;
INSERT INTO ` operation_logs ` VALUES ( 291 , 5 , ' cs ' , ' ::1 ' , ' /api/admin/tags ' , ' GET ' , ' ' , 200 , 45 , 0 , 1768539308 ) ;
INSERT INTO ` operation_logs ` VALUES ( 292 , 5 , ' cs ' , ' ::1 ' , ' /api/admin/snippets ' , ' GET ' , ' ' , 200 , 48 , 0 , 1768539309 ) ;
INSERT INTO ` operation_logs ` VALUES ( 293 , 5 , ' cs ' , ' ::1 ' , ' /api/admin/posts ' , ' GET ' , ' ' , 200 , 53 , 0 , 1768539311 ) ;
INSERT INTO ` operation_logs ` VALUES ( 294 , 5 , ' cs ' , ' ::1 ' , ' /api/admin/dashboard/stats ' , ' GET ' , ' ' , 200 , 306 , 0 , 1768539314 ) ;
INSERT INTO ` operation_logs ` VALUES ( 295 , 5 , ' cs ' , ' ::1 ' , ' /api/admin/dashboard/stats ' , ' GET ' , ' ' , 200 , 299 , 0 , 1768539320 ) ;
INSERT INTO ` operation_logs ` VALUES ( 296 , 5 , ' cs ' , ' ::1 ' , ' /api/admin/about ' , ' GET ' , ' ' , 200 , 46 , 0 , 1768539435 ) ;
INSERT INTO ` operation_logs ` VALUES ( 297 , 5 , ' cs ' , ' ::1 ' , ' /api/admin/about ' , ' GET ' , ' ' , 200 , 62 , 0 , 1768539635 ) ;
INSERT INTO ` operation_logs ` VALUES ( 298 , 5 , ' cs ' , ' ::1 ' , ' /api/admin/about ' , ' GET ' , ' ' , 200 , 53 , 0 , 1768539805 ) ;
INSERT INTO ` operation_logs ` VALUES ( 299 , 5 , ' cs ' , ' ::1 ' , ' /api/admin/testimonials ' , ' POST ' , ' {\"author\":\"李二狗\",\"role\":\"CTP\",\"avatar\":\"\",\"rating\":5,\"content\":\"服务很贴心\"} ' , 403 , 0 , 0 , 1768539861 ) ;
INSERT INTO ` operation_logs ` VALUES ( 300 , 5 , ' cs ' , ' ::1 ' , ' /api/admin/testimonials ' , ' POST ' , ' {\"author\":\"李二狗\",\"role\":\"CTP\",\"avatar\":\"https://api.dicebear.com/7.x/avataaars/svg?seed=David\",\"rating\":5,\"content\":\"服务很贴心\"} ' , 403 , 3 , 0 , 1768539894 ) ;
INSERT INTO ` operation_logs ` VALUES ( 301 , 5 , ' cs ' , ' ::1 ' , ' /api/admin/testimonials ' , ' POST ' , ' {\"author\":\"李二狗\",\"role\":\"CTO\",\"avatar\":\"https://api.dicebear.com/7.x/avataaars/svg?seed=David\",\"rating\":5,\"content\":\"服务很贴心\"} ' , 403 , 1 , 0 , 1768539901 ) ;
INSERT INTO ` operation_logs ` VALUES ( 302 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/operation-logs ' , ' GET ' , ' ' , 200 , 55 , 0 , 1768539911 ) ;
INSERT INTO ` operation_logs ` VALUES ( 303 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/dashboard/stats ' , ' GET ' , ' ' , 200 , 230 , 0 , 1768539911 ) ;
INSERT INTO ` operation_logs ` VALUES ( 304 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/testimonials ' , ' POST ' , ' {\"author\":\"王甜甜\",\"role\":\"CTO\",\"avatar\":\"https://api.dicebear.com/7.x/avataaars/svg?seed=David\",\"rating\":5,\"content\":\"服务很贴心,技术够硬\"} ' , 200 , 56 , 0 , 1768539952 ) ;
INSERT INTO ` operation_logs ` VALUES ( 305 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/posts ' , ' GET ' , ' ' , 200 , 49 , 0 , 1768539988 ) ;
INSERT INTO ` operation_logs ` VALUES ( 306 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/posts ' , ' GET ' , ' ' , 200 , 49 , 0 , 1768540005 ) ;
2026-01-16 17:03:34 +08:00
INSERT INTO ` operation_logs ` VALUES ( 307 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/posts ' , ' GET ' , ' ' , 200 , 50 , 0 , 1768545569 ) ;
INSERT INTO ` operation_logs ` VALUES ( 308 , 1 , ' lq ' , ' ::1 ' , ' /api/admin/posts ' , ' GET ' , ' ' , 200 , 52 , 0 , 1768545632 ) ;
2026-01-16 09:08:29 +08:00
-- ----------------------------
-- Table structure for partners
-- ----------------------------
DROP TABLE IF EXISTS ` partners ` ;
CREATE TABLE ` partners ` (
` id ` int UNSIGNED NOT NULL AUTO_INCREMENT COMMENT ' 主键ID ' ,
` name ` varchar ( 100 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT ' 合作伙伴名称 ' ,
` logo ` varchar ( 500 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT ' 合作伙伴Logo URL ' ,
` description ` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL COMMENT ' 合作伙伴介绍 ' ,
` url ` varchar ( 500 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT ' 合作伙伴官网链接 ' ,
` sort_order ` int UNSIGNED NULL DEFAULT 0 COMMENT ' 排序权重 ' ,
2026-01-16 13:01:21 +08:00
` deleted_at ` bigint NOT NULL DEFAULT 0 ,
2026-01-16 13:38:52 +08:00
` created_at ` bigint NOT NULL DEFAULT 0 ,
` updated_at ` bigint NOT NULL DEFAULT 0 ,
2026-01-16 09:08:29 +08:00
PRIMARY KEY ( ` id ` ) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 6 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = ' 合作伙伴表 ' ROW_FORMAT = DYNAMIC ;
-- ----------------------------
-- Records of partners
-- ----------------------------
2026-01-16 13:38:52 +08:00
INSERT INTO ` partners ` VALUES ( 1 , ' Vercel ' , ' https://upload.wikimedia.org/wikipedia/commons/5/5e/Vercel_logo_black.svg ' , ' 前端部署平台 ' , ' https://vercel.com ' , 0 , 0 , 1768482993 , 1768538953 ) ;
INSERT INTO ` partners ` VALUES ( 2 , ' Supabase ' , ' https://seeklogo.com/images/S/supabase-logo-DCC676FFE2-seeklogo.com.png ' , ' 开源 Firebase 替代方案 ' , ' https://supabase.com ' , 0 , 0 , 1768482993 , 1768538953 ) ;
INSERT INTO ` partners ` VALUES ( 3 , ' Stripe ' , ' https://upload.wikimedia.org/wikipedia/commons/b/ba/Stripe_Logo%2C_revised_2016.svg ' , ' 在线支付基础设施 ' , ' https://stripe.com ' , 0 , 0 , 1768482993 , 1768538953 ) ;
INSERT INTO ` partners ` VALUES ( 4 , ' Algolia ' , ' https://upload.wikimedia.org/wikipedia/commons/6/69/Algolia-logo.svg ' , ' 搜索即服务 API ' , ' https://algolia.com ' , 0 , 0 , 1768482993 , 1768538953 ) ;
INSERT INTO ` partners ` VALUES ( 5 , ' Prisma ' , ' https://seeklogo.com/images/P/prisma-logo-3805665B69-seeklogo.com.png ' , ' 下一代 ORM ' , ' https://prisma.io ' , 0 , 0 , 1768482993 , 1768538953 ) ;
2026-01-15 15:37:34 +08:00
-- ----------------------------
-- Table structure for permissions
-- ----------------------------
DROP TABLE IF EXISTS ` permissions ` ;
CREATE TABLE ` permissions ` (
` id ` bigint UNSIGNED NOT NULL AUTO_INCREMENT COMMENT ' 主键ID ' ,
` name ` varchar ( 50 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT ' 权限名称 ' ,
` resource ` varchar ( 50 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT ' 资源名称 ' ,
` action ` varchar ( 50 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT ' 操作名称 ' ,
2026-01-16 13:01:21 +08:00
` deleted_at ` bigint NOT NULL DEFAULT 0 ,
2026-01-16 13:38:52 +08:00
` created_at ` bigint NOT NULL DEFAULT 0 ,
` updated_at ` bigint NOT NULL DEFAULT 0 ,
2026-01-15 15:37:34 +08:00
PRIMARY KEY ( ` id ` ) USING BTREE ,
UNIQUE INDEX ` unique_resource_action ` ( ` resource ` ASC , ` action ` ASC ) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 31 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = ' 权限表 ' ROW_FORMAT = DYNAMIC ;
-- ----------------------------
-- Records of permissions
-- ----------------------------
2026-01-16 13:38:52 +08:00
INSERT INTO ` permissions ` VALUES ( 1 , ' Create User ' , ' users ' , ' create ' , 0 , 1768452892 , 1768538956 ) ;
INSERT INTO ` permissions ` VALUES ( 2 , ' Read User ' , ' users ' , ' read ' , 0 , 1768452892 , 1768538956 ) ;
INSERT INTO ` permissions ` VALUES ( 3 , ' Update User ' , ' users ' , ' update ' , 0 , 1768452892 , 1768538956 ) ;
INSERT INTO ` permissions ` VALUES ( 4 , ' Delete User ' , ' users ' , ' delete ' , 0 , 1768452892 , 1768538956 ) ;
INSERT INTO ` permissions ` VALUES ( 5 , ' Create Role ' , ' roles ' , ' create ' , 0 , 1768452892 , 1768538956 ) ;
INSERT INTO ` permissions ` VALUES ( 6 , ' Read Role ' , ' roles ' , ' read ' , 0 , 1768452892 , 1768538956 ) ;
INSERT INTO ` permissions ` VALUES ( 7 , ' Update Role ' , ' roles ' , ' update ' , 0 , 1768452892 , 1768538956 ) ;
INSERT INTO ` permissions ` VALUES ( 8 , ' Delete Role ' , ' roles ' , ' delete ' , 0 , 1768452892 , 1768538956 ) ;
INSERT INTO ` permissions ` VALUES ( 9 , ' Create Post ' , ' posts ' , ' create ' , 0 , 1768452892 , 1768538956 ) ;
INSERT INTO ` permissions ` VALUES ( 10 , ' Read Post ' , ' posts ' , ' read ' , 0 , 1768452892 , 1768538956 ) ;
INSERT INTO ` permissions ` VALUES ( 11 , ' Update Post ' , ' posts ' , ' update ' , 0 , 1768452892 , 1768538956 ) ;
INSERT INTO ` permissions ` VALUES ( 12 , ' Delete Post ' , ' posts ' , ' delete ' , 0 , 1768452892 , 1768538956 ) ;
INSERT INTO ` permissions ` VALUES ( 13 , ' Create Work ' , ' works ' , ' create ' , 0 , 1768452892 , 1768538956 ) ;
INSERT INTO ` permissions ` VALUES ( 14 , ' Read Work ' , ' works ' , ' read ' , 0 , 1768452892 , 1768538956 ) ;
INSERT INTO ` permissions ` VALUES ( 15 , ' Update Work ' , ' works ' , ' update ' , 0 , 1768452892 , 1768538956 ) ;
INSERT INTO ` permissions ` VALUES ( 16 , ' Delete Work ' , ' works ' , ' delete ' , 0 , 1768452892 , 1768538956 ) ;
INSERT INTO ` permissions ` VALUES ( 17 , ' Create Snippet ' , ' snippets ' , ' create ' , 0 , 1768452892 , 1768538956 ) ;
INSERT INTO ` permissions ` VALUES ( 18 , ' Read Snippet ' , ' snippets ' , ' read ' , 0 , 1768452892 , 1768538956 ) ;
INSERT INTO ` permissions ` VALUES ( 19 , ' Update Snippet ' , ' snippets ' , ' update ' , 0 , 1768452892 , 1768538956 ) ;
INSERT INTO ` permissions ` VALUES ( 20 , ' Delete Snippet ' , ' snippets ' , ' delete ' , 0 , 1768452892 , 1768538956 ) ;
INSERT INTO ` permissions ` VALUES ( 21 , ' Create Setting ' , ' settings ' , ' create ' , 0 , 1768452892 , 1768538956 ) ;
INSERT INTO ` permissions ` VALUES ( 22 , ' Read Setting ' , ' settings ' , ' read ' , 0 , 1768452892 , 1768538956 ) ;
INSERT INTO ` permissions ` VALUES ( 23 , ' Update Setting ' , ' settings ' , ' update ' , 0 , 1768452892 , 1768538956 ) ;
INSERT INTO ` permissions ` VALUES ( 24 , ' Delete Setting ' , ' settings ' , ' delete ' , 0 , 1768452892 , 1768538956 ) ;
INSERT INTO ` permissions ` VALUES ( 25 , ' Create Tag ' , ' tags ' , ' create ' , 0 , 1768452892 , 1768538956 ) ;
INSERT INTO ` permissions ` VALUES ( 26 , ' Read Tag ' , ' tags ' , ' read ' , 0 , 1768452892 , 1768538956 ) ;
INSERT INTO ` permissions ` VALUES ( 27 , ' Update Tag ' , ' tags ' , ' update ' , 0 , 1768452892 , 1768538956 ) ;
INSERT INTO ` permissions ` VALUES ( 28 , ' Delete Tag ' , ' tags ' , ' delete ' , 0 , 1768452892 , 1768538956 ) ;
INSERT INTO ` permissions ` VALUES ( 29 , ' Read Operation Log ' , ' operation_logs ' , ' read ' , 0 , 1768452892 , 1768538956 ) ;
INSERT INTO ` permissions ` VALUES ( 30 , ' Read Dashboard ' , ' dashboard ' , ' read ' , 0 , 1768452892 , 1768538956 ) ;
2026-01-15 15:37:34 +08:00
2026-01-16 17:03:34 +08:00
-- ----------------------------
-- Table structure for post_history
-- ----------------------------
DROP TABLE IF EXISTS ` post_history ` ;
CREATE TABLE ` post_history ` (
` id ` int UNSIGNED NOT NULL AUTO_INCREMENT COMMENT ' 历史记录ID ' ,
` post_id ` int UNSIGNED NOT NULL COMMENT ' 文章ID ' ,
` version ` int UNSIGNED NOT NULL DEFAULT 1 COMMENT ' 版本号 ' ,
` title ` varchar ( 200 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT ' 文章标题 ' ,
` category_id ` int UNSIGNED NOT NULL DEFAULT 0 COMMENT ' 文章分类ID ' ,
` excerpt ` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL COMMENT ' 文章摘要 ' ,
` content ` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT ' 文章内容 ' ,
` is_published ` tinyint ( 1 ) NULL DEFAULT 1 COMMENT ' 是否已发布 ' ,
` modified_by ` int UNSIGNED NOT NULL DEFAULT 0 COMMENT ' 修改人ID ' ,
` modified_at ` bigint NOT NULL DEFAULT 0 COMMENT ' 修改时间 ' ,
` created_at ` bigint NOT NULL DEFAULT 0 ,
` deleted_at ` bigint NOT NULL DEFAULT 0 ,
PRIMARY KEY ( ` id ` ) USING BTREE ,
INDEX ` idx_post_id ` ( ` post_id ` ASC ) USING BTREE ,
INDEX ` idx_version ` ( ` version ` ASC ) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = ' 文章历史记录表 ' ROW_FORMAT = DYNAMIC ;
-- ----------------------------
-- Records of post_history
-- ----------------------------
2026-01-15 13:51:44 +08:00
-- ----------------------------
-- Table structure for post_tags
-- ----------------------------
DROP TABLE IF EXISTS ` post_tags ` ;
CREATE TABLE ` post_tags ` (
` tag_id ` bigint UNSIGNED NOT NULL COMMENT ' 关联的标签ID ' ,
2026-01-15 16:53:36 +08:00
` post_id ` int UNSIGNED NOT NULL COMMENT ' 关联的文章ID ' ,
2026-01-16 13:38:52 +08:00
` created_at ` bigint NOT NULL DEFAULT 0 ,
2026-01-15 13:51:44 +08:00
PRIMARY KEY ( ` post_id ` , ` tag_id ` ) USING BTREE ,
2026-01-16 17:03:34 +08:00
INDEX ` idx_tag_id ` ( ` tag_id ` ASC ) USING BTREE
2026-01-15 15:37:34 +08:00
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = ' 文章标签关联表 ' ROW_FORMAT = DYNAMIC ;
2026-01-15 13:51:44 +08:00
-- ----------------------------
-- Records of post_tags
-- ----------------------------
-- ----------------------------
-- Table structure for posts
-- ----------------------------
DROP TABLE IF EXISTS ` posts ` ;
CREATE TABLE ` posts ` (
2026-01-15 16:53:36 +08:00
` id ` int UNSIGNED NOT NULL AUTO_INCREMENT COMMENT ' 文章唯一标识( 自增ID) ' ,
` original_id ` varchar ( 50 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT ' 原始字符串ID备份 ' ,
2026-01-15 13:51:44 +08:00
` title ` varchar ( 200 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT ' 文章标题 ' ,
2026-01-16 17:03:34 +08:00
` category_id ` int UNSIGNED NOT NULL DEFAULT 0 COMMENT ' 文章分类ID ' ,
2026-01-15 13:51:44 +08:00
` excerpt ` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL COMMENT ' 文章摘要 ' ,
` content ` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT ' 文章内容 ' ,
` read_count ` int UNSIGNED NULL DEFAULT 0 COMMENT ' 阅读量 ' ,
` is_published ` tinyint ( 1 ) NULL DEFAULT 1 COMMENT ' 是否已发布( 0: 草稿, 1: 已发布) ' ,
2026-01-16 13:01:21 +08:00
` deleted_at ` bigint NOT NULL DEFAULT 0 ,
2026-01-16 13:38:52 +08:00
` created_at ` bigint NOT NULL DEFAULT 0 ,
` updated_at ` bigint NOT NULL DEFAULT 0 ,
2026-01-15 13:51:44 +08:00
PRIMARY KEY ( ` id ` ) USING BTREE ,
INDEX ` idx_is_published ` ( ` is_published ` ASC ) USING BTREE COMMENT ' 按发布状态查询索引 ' ,
2026-01-15 16:53:36 +08:00
FULLTEXT INDEX ` idx_title_content ` ( ` title ` , ` content ` ) COMMENT ' 标题和内容全文索引,用于搜索 ' ,
2026-01-16 17:03:34 +08:00
INDEX ` idx_original_id ` ( ` original_id ` ASC ) USING BTREE ,
INDEX ` idx_category_id ` ( ` category_id ` ASC ) USING BTREE COMMENT ' 按分类查询索引 '
2026-01-15 16:53:36 +08:00
) ENGINE = InnoDB AUTO_INCREMENT = 8 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = ' 博客文章表(新结构) ' ROW_FORMAT = DYNAMIC ;
2026-01-15 13:51:44 +08:00
-- ----------------------------
-- Records of posts
-- ----------------------------
2026-01-16 17:03:34 +08:00
INSERT INTO ` posts ` VALUES ( 1 , ' refactor ' , ' 重构的艺术:如何优雅地处理遗留代码 ' , 4 , ' 在本文中,我们将探讨重构的核心原则和实用技巧,帮助你优雅地处理遗留代码,提高代码质量和可维护性。 ' , ' <h2>什么是代码重构?</h2><p>代码重构是在不改变代码外部行为的前提下,优化代码内部结构的过程...</p> ' , 5 , 1 , 0 , 1768291814 , 1768538949 ) ;
INSERT INTO ` posts ` VALUES ( 2 , ' shader ' , ' 着色器魔法:从零开始写一个噪声生成器 ' , 2 , ' 深入了解WebGL着色器, 学习如何从零开始实现一个高性能的噪声生成器, 为你的3D作品增添独特的视觉效果。 ' , ' <p>GLSL (OpenGL Shading Language) 是一门让人生畏但也充满魅力的语言。它运行在 GPU 上,能够并行处理数百万个像素,创造出惊人的视觉效果。</p>\r\n <h2>什么是柏林噪声?</h2>\r\n <p>柏林噪声( Perlin Noise) 是一种梯度噪声, 它比普通的随机数生成的噪声看起来更自然、更平滑。它常被用来模拟云彩、地形、火焰等自然现象。</p>\r\n <h2>Three.js 中的实现</h2>\r\n <p>在 Three.js 中,我们可以通过 <code>ShaderMaterial</code> 直接编写 GLSL 代码。</p>\r\n <pre><code><span class=\"code-comment\">// 简单的顶点着色器</span>\r\n<span class=\"code-keyword\">varying</span> <span class=\"code-keyword\">vec2</span> vUv;\r\n<span class=\"code-keyword\">void</span> <span class=\"code-func\">main</span>() {\r\n vUv = uv;\r\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\r\n}</code></pre>\r\n <p>通过调整噪声的频率和振幅,我们可以得到各种不同的纹理效果。在我的个人网站背景中,就使用了这种技术来生成流动的极光效果。</p>\r\n ' , 1 , 1 , 0 , 1768291815 , 1768538949 ) ;
INSERT INTO ` posts ` VALUES ( 3 , ' ux ' , ' 用户体验设计:从认知心理学到交互实践 ' , 3 , ' 探索用户体验设计的核心原理,结合认知心理学知识,学习如何设计出真正符合用户需求的交互界面。 ' , ' <h2>认知心理学在UX设计中的应用</h2><p>了解用户的认知过程是设计良好用户体验的基础...</p> ' , 0 , 1 , 0 , 1768291816 , 1768538949 ) ;
INSERT INTO ` posts ` VALUES ( 4 , ' goravel-guide-1 ' , ' Goravel 入门指南 (一):环境搭建与 Hello World ' , 4 , ' 本文将带你了解 Go 语言领域的 Laravel —— Goravel 框架,并演示如何快速搭建环境及运行第一个 Web 服务。 ' , ' ## 什么是 Goravel? \n\nGoravel 是一个基于 Go 语言的 Web 开发框架,它的设计理念深受 PHP Laravel 框架的启发。如果你是一名从 PHP 转 Go 的开发者,或者你喜欢 Laravel 那种“开箱即用、优雅简洁”的开发体验,那么 Goravel 绝对是你的不二之选。\n\n它集成了丰富的功能模块, 包括但不限于: \n- 强大的路由系统\n- ORM( 基于 GORM 封装)\n- 依赖注入容器\n- 队列与任务调度\n- 缓存与文件存储\n\n## 环境搭建\n\nGoravel 提供了一个名为 `knit` 的命令行工具(类似 Laravel 的 artisan) , 可以帮助我们快速初始化项目。\n\n### 1. 安装 Knit CLI\n\n确保你已经安装了 Go (1.20+),然后运行以下命令:\n\n```bash\ngo install github.com/goravel/knit/cmd/knit@latest\n```\n\n### 2. 创建新项目\n\n使用 `knit new` 命令创建项目:\n\n```bash\nknit new my-goravel-app\ncd my-goravel-app\n```\n\n### 3. 安装依赖\n\n```bash\ngo mod tidy\n```\n\n## 目录结构\n\n打开项目, 你会发现它的目录结构非常清晰, 带有浓厚的 Laravel 风格:\n\n- **app/**: 核心业务代码( Http 控制器、模型、服务提供者等)\n- **config/**: 配置文件(应用配置、数据库配置等)\n- **routes/**: 路由定义文件\n- **database/**: 数据库迁移与填充\n- **public/**: 静态资源文件\n\n## 运行 Hello World\n\nGoravel 的入口文件是根目录下的 `main.go`。在运行之前,我们先看一眼路由定义。打开 `routes/web.go`: \n\n```go\npackage routes\n\nimport (\n \"github.com/goravel/framework/contracts/http\"\n \"github.com/goravel/framework/facades\"\n)\n\nfunc Web() {\n facades.Route().Get(\"/\", func(ctx http.Context) http.Response {\n return ctx.Response().Json(200, http.Json{\n \"Hello\": \"Goravel\",\n })\n })\n}\n```\n\n非常直观! 现在让我们启动服务: \n\n```bash\ngo run .\n```\n\n默认情况下, 服务会运行在 `http://localhost:3000`。打开浏览器访问,你应该能看到 JSON 响应:\n\n```json\n{\n \"Hello\": \"Goravel\"\n}\n```\n\n至此, 你已经成功运行了你的第一个 Goravel 应用!在下一篇文章中,我们将深入探讨路由与控制器的使用。 ' , 1210 , 1 , 0 , 1768465932 , 1768538949 ) ;
INSERT INTO ` posts ` VALUES ( 5 , ' goravel-guide-2 ' , ' Goravel 入门指南 (二):路由与控制器 ' , 4 , ' 深入理解 Goravel 的 HTTP 层,学习如何定义 RESTful 路由、创建控制器以及处理 HTTP 请求与响应。 ' , ' ## 路由系统\n\n在 Goravel 中,路由定义通常位于 `routes/` 目录下。`api.go` 用于定义 API 路由,`web.go` 用于定义网页路由。Goravel 使用 `facades.Route()` 来定义路由,这得益于其强大的依赖注入系统。\n\n### 基础路由\n\n```go\n// GET 请求\nfacades.Route().Get(\"/users\", func(ctx http.Context) http.Response {\n return ctx.Response().String(200, \"User List\")\n})\n\n// POST 请求\nfacades.Route().Post(\"/users\", func(ctx http.Context) http.Response {\n return ctx.Response().Success().Json(http.Json{\"id\": 1})\n})\n```\n\n### 路由参数\n\n获取 URL 中的动态参数非常简单:\n\n```go\nfacades.Route().Get(\"/users/{id}\", func(ctx http.Context) http.Response {\n id := ctx.Request().Input(\"id\")\n return ctx.Response().Success().Json(http.Json{\"user_id\": id})\n})\n```\n\n## 控制器 (Controllers)\n\n随着应用变大, 我们不可能把所有逻辑都写在路由闭包里。这时候就需要控制器了。\n\n### 创建控制器\n\n使用 `knit` 工具可以快速生成控制器:\n\n```bash\nknit make:controller UserController\n```\n\n这会在 `app/http/controllers` 目录下生成 `user_controller.go`。让我们修改它来添加一个 `Show` 方法:\n\n```go\npackage controllers\n\nimport (\n \"github.com/goravel/framework/contracts/http\"\n)\n\ntype UserController struct {\n // 可以在这里注入服务\n}\n\nfunc NewUserController() *UserController {\n return &UserController{}\n}\n\nfunc (r *UserController) Show(ctx http.Context) http.Response {\n id := ctx.Request().Input(\"id\")\n // 模拟数据库查询\n return ctx.Response().Success().Json(http.Json{\n \"id\": id,\n \"name\": \"Goravel User\",\n })\n}\n```\n\n### 注册控制器路由\n\n回到 `routes/api.go`,我们需要先实例化控制器,然后绑定路由:\n\n```go\nimport \"my-goravel-app/app/http/controllers\"\n\nfunc Api() {\n userController := controllers.NewUserController()\n \n // 绑定到控制器方法\n facades.Route().Get(\"/users/{id}\", userController.Show)\n}\n```\n\n## 请求与响应\n\n在控制器方法中, `ctx` (http.Context) 是核心:\n\n- **获取输入**: `ctx.Request().Input(\"key\")`\n- **获取 JSON**: `ctx.Request().Bind(&user)`\n- **返回 JSON**: `ctx.Response().Json(200, data)`\n- **设置状态码**: `ctx.Response().Status(404)`\n\n通过这种方式, Goravel 让 HTTP 层的处理变得异常清晰和标准化。下一章,我们将学习如何通过 ORM 操作数据库。 ' , 901 , 1 , 0 , 1768465933 , 1768538949 ) ;
INSERT INTO ` posts ` VALUES ( 6 , ' goravel-guide-3 ' , ' Goravel 入门指南 (三): ORM 数据库操作 ' , 4 , ' 掌握 Goravel 强大的 ORM 功能, 从数据库配置、模型定义到执行增删改查( CRUD) 操作。 ' , ' ## Goravel ORM 简介\n\nGoravel 的 ORM 基于著名的 GORM 库构建,但它进行了一层优雅的封装,使其调用方式更接近 Laravel 的 Eloquent ORM。这意味着你可以使用 Facade 模式轻松调用数据库,且支持自动迁移。\n\n## 配置数据库\n\n打开 `config/database.go` 或 `.env` 文件,配置你的 MySQL 连接信息:\n\n```env\nDB_CONNECTION=mysql\nDB_HOST=127.0.0.1\nDB_PORT=3306\nDB_DATABASE=goravel\nDB_USERNAME=root\nDB_PASSWORD=password\n```\n\n## 定义模型\n\n使用 `knit` 生成模型:\n\n```bash\nknit make:model Post\n```\n\n生成的模型文件位于 `app/models/post.go`。我们需要定义结构体字段:\n\n```go\npackage models\n\nimport (\n \"github.com/goravel/framework/database/orm\"\n)\n\ntype Post struct {\n orm.Model\n Title string `gorm:\"size:255;not null\"`\n Content string `gorm:\"type:text\"`\n UserID uint\n}\n```\n\n## 数据库迁移\n\n虽然 GORM 支持 AutoMigrate, 但 Goravel 推荐使用迁移文件来管理数据库变更。\n\n```bash\nknit make:migration create_posts_table\n```\n\n编辑生成的迁移文件 (`database/migrations/xxxx_create_posts_table.go`),定义表结构,然后运行:\n\n```bash\nknit migrate\n```\n\n## CRUD 操作\n\n有了模型, 我们就可以愉快地操作数据库了。所有操作都通过 `facades.Orm()` 入口。\n\n### 创建 (Create)\n\n```go\npost := models.Post{\n Title: \"My First Post\",\n Content: \"Content goes here...\",\n}\nerr := facades.Orm().Query().Create(&post)\n```\n\n### 查询 (Read)\n\n```go\nvar post models.Post\n// 根据主键查询\nfacades.Orm().Query().Find(&post, 1)\n\n// 条件查询\nvar posts []models.Post\nfacades.Orm().Query().Where(\"title\", \"My First Post\").Get(&posts)\n```\n\n### 更新 (Update)\n\n```go\nvar post models.Post\nfacades.Orm().Query().Find(&post, 1)\n\npost.Title = \"Updated Title\"\nfacades.Orm().Query().Save(&post)\n```\n\n### 删除 (Delete)\n\n```go\nvar post models.Post\nfacades.Orm().Query().Delete(&post, 1)\n```\n\nGoravel 的 ORM 让 Go 语言的数据库操作不再繁琐,极大地提高了开发效率。配合之前的路由和控制器知识,你现在已经具备了开发完整 RESTful API 的能力! ' , 1563 , 1 , 0 , 1768465934 , 1768538949 ) ;
2026-01-15 13:51:44 +08:00
2026-01-15 15:37:34 +08:00
-- ----------------------------
-- Table structure for role_permissions
-- ----------------------------
DROP TABLE IF EXISTS ` role_permissions ` ;
CREATE TABLE ` role_permissions ` (
` role_id ` bigint UNSIGNED NOT NULL COMMENT ' 角色ID ' ,
` permission_id ` bigint UNSIGNED NOT NULL COMMENT ' 权限ID ' ,
PRIMARY KEY ( ` role_id ` , ` permission_id ` ) USING BTREE ,
2026-01-16 17:03:34 +08:00
INDEX ` role_permissions_ibfk_2 ` ( ` permission_id ` ASC ) USING BTREE
2026-01-15 15:37:34 +08:00
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = ' 角色权限关联表 ' ROW_FORMAT = DYNAMIC ;
-- ----------------------------
-- Records of role_permissions
-- ----------------------------
INSERT INTO ` role_permissions ` VALUES ( 1 , 1 ) ;
INSERT INTO ` role_permissions ` VALUES ( 1 , 2 ) ;
INSERT INTO ` role_permissions ` VALUES ( 3 , 2 ) ;
INSERT INTO ` role_permissions ` VALUES ( 1 , 3 ) ;
INSERT INTO ` role_permissions ` VALUES ( 1 , 4 ) ;
INSERT INTO ` role_permissions ` VALUES ( 1 , 5 ) ;
INSERT INTO ` role_permissions ` VALUES ( 1 , 6 ) ;
INSERT INTO ` role_permissions ` VALUES ( 3 , 6 ) ;
INSERT INTO ` role_permissions ` VALUES ( 1 , 7 ) ;
INSERT INTO ` role_permissions ` VALUES ( 1 , 8 ) ;
INSERT INTO ` role_permissions ` VALUES ( 1 , 9 ) ;
INSERT INTO ` role_permissions ` VALUES ( 2 , 9 ) ;
INSERT INTO ` role_permissions ` VALUES ( 1 , 10 ) ;
INSERT INTO ` role_permissions ` VALUES ( 2 , 10 ) ;
INSERT INTO ` role_permissions ` VALUES ( 3 , 10 ) ;
INSERT INTO ` role_permissions ` VALUES ( 1 , 11 ) ;
INSERT INTO ` role_permissions ` VALUES ( 2 , 11 ) ;
INSERT INTO ` role_permissions ` VALUES ( 1 , 12 ) ;
INSERT INTO ` role_permissions ` VALUES ( 2 , 12 ) ;
INSERT INTO ` role_permissions ` VALUES ( 1 , 13 ) ;
INSERT INTO ` role_permissions ` VALUES ( 1 , 14 ) ;
INSERT INTO ` role_permissions ` VALUES ( 3 , 14 ) ;
INSERT INTO ` role_permissions ` VALUES ( 1 , 15 ) ;
INSERT INTO ` role_permissions ` VALUES ( 1 , 16 ) ;
INSERT INTO ` role_permissions ` VALUES ( 1 , 17 ) ;
INSERT INTO ` role_permissions ` VALUES ( 1 , 18 ) ;
INSERT INTO ` role_permissions ` VALUES ( 3 , 18 ) ;
INSERT INTO ` role_permissions ` VALUES ( 1 , 19 ) ;
INSERT INTO ` role_permissions ` VALUES ( 1 , 20 ) ;
INSERT INTO ` role_permissions ` VALUES ( 1 , 21 ) ;
INSERT INTO ` role_permissions ` VALUES ( 1 , 22 ) ;
INSERT INTO ` role_permissions ` VALUES ( 3 , 22 ) ;
INSERT INTO ` role_permissions ` VALUES ( 1 , 23 ) ;
INSERT INTO ` role_permissions ` VALUES ( 1 , 24 ) ;
INSERT INTO ` role_permissions ` VALUES ( 1 , 25 ) ;
INSERT INTO ` role_permissions ` VALUES ( 1 , 26 ) ;
INSERT INTO ` role_permissions ` VALUES ( 3 , 26 ) ;
INSERT INTO ` role_permissions ` VALUES ( 1 , 27 ) ;
INSERT INTO ` role_permissions ` VALUES ( 1 , 28 ) ;
INSERT INTO ` role_permissions ` VALUES ( 1 , 29 ) ;
INSERT INTO ` role_permissions ` VALUES ( 3 , 29 ) ;
INSERT INTO ` role_permissions ` VALUES ( 1 , 30 ) ;
INSERT INTO ` role_permissions ` VALUES ( 3 , 30 ) ;
-- ----------------------------
-- Table structure for roles
-- ----------------------------
DROP TABLE IF EXISTS ` roles ` ;
CREATE TABLE ` roles ` (
` id ` bigint UNSIGNED NOT NULL AUTO_INCREMENT COMMENT ' 主键ID ' ,
` name ` varchar ( 50 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT ' 角色名称 ' ,
` description ` varchar ( 200 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT ' 角色描述 ' ,
2026-01-16 13:01:21 +08:00
` deleted_at ` bigint NOT NULL DEFAULT 0 ,
2026-01-16 13:38:52 +08:00
` created_at ` bigint NOT NULL DEFAULT 0 ,
` updated_at ` bigint NOT NULL DEFAULT 0 ,
2026-01-15 15:37:34 +08:00
PRIMARY KEY ( ` id ` ) USING BTREE ,
UNIQUE INDEX ` name ` ( ` name ` ASC ) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = ' 角色表 ' ROW_FORMAT = DYNAMIC ;
-- ----------------------------
-- Records of roles
-- ----------------------------
2026-01-16 13:38:52 +08:00
INSERT INTO ` roles ` VALUES ( 1 , ' admin ' , ' 系统管理员 ' , 0 , 1768452892 , 1768538956 ) ;
INSERT INTO ` roles ` VALUES ( 2 , ' editor ' , ' 内容编辑 ' , 0 , 1768452892 , 1768538956 ) ;
INSERT INTO ` roles ` VALUES ( 3 , ' viewer ' , ' 普通访客 ' , 0 , 1768452892 , 1768538956 ) ;
2026-01-15 15:37:34 +08:00
2026-01-15 13:51:44 +08:00
-- ----------------------------
-- Table structure for settings
-- ----------------------------
DROP TABLE IF EXISTS ` settings ` ;
CREATE TABLE ` settings ` (
` id ` bigint UNSIGNED NOT NULL AUTO_INCREMENT COMMENT ' 主键ID ' ,
` key_name ` varchar ( 100 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT ' 配置项键名 ' ,
` value ` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL COMMENT ' 配置项值 ' ,
` description ` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL COMMENT ' 配置项描述 ' ,
2026-01-16 13:01:21 +08:00
` deleted_at ` bigint NOT NULL DEFAULT 0 ,
2026-01-16 13:38:52 +08:00
` created_at ` bigint NOT NULL DEFAULT 0 ,
` updated_at ` bigint NOT NULL DEFAULT 0 ,
2026-01-15 13:51:44 +08:00
PRIMARY KEY ( ` id ` ) USING BTREE ,
UNIQUE INDEX ` key_name ` ( ` key_name ` ASC ) USING BTREE ,
INDEX ` idx_key_name ` ( ` key_name ` ASC ) USING BTREE COMMENT ' 按键名查询索引 '
2026-01-15 15:37:34 +08:00
) ENGINE = InnoDB AUTO_INCREMENT = 15 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = ' 网站配置表 ' ROW_FORMAT = DYNAMIC ;
2026-01-15 13:51:44 +08:00
-- ----------------------------
-- Records of settings
-- ----------------------------
2026-01-16 13:38:52 +08:00
INSERT INTO ` settings ` VALUES ( 1 , ' site_title ' , ' 年糕博客 ' , ' 网站标题 ' , 0 , 1768291814 , 1768538952 ) ;
INSERT INTO ` settings ` VALUES ( 2 , ' site_description ' , ' 分享前端技术、交互设计以及数字艺术的深度思考 ' , ' 网站描述 ' , 0 , 1768291814 , 1768538952 ) ;
INSERT INTO ` settings ` VALUES ( 3 , ' site_author ' , ' 年糕崽崽 ' , ' 网站作者 ' , 0 , 1768291814 , 1768538952 ) ;
INSERT INTO ` settings ` VALUES ( 4 , ' site_keywords ' , ' 前端, 设计, 技术博客 ' , ' 网站关键词 ' , 0 , 1768291814 , 1768538952 ) ;
INSERT INTO ` settings ` VALUES ( 5 , ' posts_per_page ' , ' 10 ' , ' 每页显示的文章数量 ' , 0 , 1768291814 , 1768538952 ) ;
INSERT INTO ` settings ` VALUES ( 6 , ' works_per_page ' , ' 6 ' , ' 每页显示的作品数量 ' , 0 , 1768291814 , 1768538952 ) ;
INSERT INTO ` settings ` VALUES ( 7 , ' snippets_per_page ' , ' 8 ' , ' 每页显示的代码片段数量 ' , 0 , 1768291814 , 1768538952 ) ;
2026-01-15 13:51:44 +08:00
-- ----------------------------
-- Table structure for snippets
-- ----------------------------
DROP TABLE IF EXISTS ` snippets ` ;
CREATE TABLE ` snippets ` (
` id ` varchar ( 50 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT ' 代码片段唯一标识 ' ,
` title ` varchar ( 200 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT ' 代码片段标题 ' ,
` code ` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT ' 代码内容 ' ,
` type ` varchar ( 50 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT ' 代码类型( 如: javascript、css、html等) ' ,
` description ` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL COMMENT ' 代码片段描述 ' ,
` view_count ` int UNSIGNED NULL DEFAULT 0 COMMENT ' 查看次数 ' ,
2026-01-16 13:01:21 +08:00
` deleted_at ` bigint NOT NULL DEFAULT 0 ,
2026-01-16 13:38:52 +08:00
` created_at ` bigint NOT NULL DEFAULT 0 ,
` updated_at ` bigint NOT NULL DEFAULT 0 ,
2026-01-15 13:51:44 +08:00
PRIMARY KEY ( ` id ` ) USING BTREE ,
INDEX ` idx_type ` ( ` type ` ASC ) USING BTREE COMMENT ' 按代码类型查询索引 ' ,
INDEX ` idx_view_count ` ( ` view_count ` ASC ) USING BTREE COMMENT ' 按查看次数查询索引 '
2026-01-15 15:37:34 +08:00
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = ' 代码片段表 ' ROW_FORMAT = DYNAMIC ;
2026-01-15 13:51:44 +08:00
-- ----------------------------
-- Records of snippets
-- ----------------------------
2026-01-16 13:38:52 +08:00
INSERT INTO ` snippets ` VALUES ( ' 1 ' , ' React 鼠标追踪 Hook ' , ' import { useState, useEffect } from \ ' react \ ' ;\r\n\r\nexport const useMousePosition = () => {\r\n const [pos, setPos] = useState({ x: 0, y: 0 });\r\n useEffect(() => {\r\n const update = (e) => setPos({ x: e.clientX, y: e.clientY });\r\n window.addEventListener(\ ' mousemove \ ' , update);\r\n return () => window.removeEventListener(\ ' mousemove \ ' , update);\r\n }, []);\r\n return pos;\r\n}; ' , ' mouse ' , ' 这是一个鼠标追踪 ' , 1 , 0 , 1768350739 , 1768538952 ) ;
2026-01-15 13:51:44 +08:00
-- ----------------------------
-- Table structure for tags
-- ----------------------------
DROP TABLE IF EXISTS ` tags ` ;
CREATE TABLE ` tags ` (
` id ` bigint UNSIGNED NOT NULL AUTO_INCREMENT COMMENT ' 主键ID ' ,
` name ` varchar ( 50 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT ' 标签名称 ' ,
` slug ` varchar ( 50 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT ' 标签别名, 用于URL ' ,
2026-01-16 13:01:21 +08:00
` deleted_at ` bigint NOT NULL DEFAULT 0 ,
2026-01-16 13:38:52 +08:00
` created_at ` bigint NOT NULL DEFAULT 0 ,
` updated_at ` bigint NOT NULL DEFAULT 0 ,
2026-01-15 13:51:44 +08:00
PRIMARY KEY ( ` id ` ) USING BTREE ,
UNIQUE INDEX ` name ` ( ` name ` ASC ) USING BTREE ,
UNIQUE INDEX ` slug ` ( ` slug ` ASC ) USING BTREE ,
INDEX ` idx_slug ` ( ` slug ` ASC ) USING BTREE COMMENT ' 按别名查询索引 '
2026-01-16 13:38:52 +08:00
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = ' 标签表 ' ROW_FORMAT = DYNAMIC ;
2026-01-15 13:51:44 +08:00
-- ----------------------------
-- Records of tags
-- ----------------------------
2026-01-16 09:08:29 +08:00
-- ----------------------------
-- Table structure for testimonials
-- ----------------------------
DROP TABLE IF EXISTS ` testimonials ` ;
CREATE TABLE ` testimonials ` (
` id ` int UNSIGNED NOT NULL AUTO_INCREMENT COMMENT ' 主键ID ' ,
` name ` varchar ( 100 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT ' 客户姓名 ' ,
` role ` varchar ( 100 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT ' 客户职位 ' ,
` content ` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT ' 评价内容 ' ,
` avatar ` varchar ( 500 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT ' 客户头像URL ' ,
` rating ` tinyint UNSIGNED NULL DEFAULT 5 COMMENT ' 评分(1-5) ' ,
` sort_order ` int UNSIGNED NULL DEFAULT 0 COMMENT ' 排序权重 ' ,
2026-01-16 13:01:21 +08:00
` deleted_at ` bigint NOT NULL DEFAULT 0 ,
2026-01-16 13:38:52 +08:00
` created_at ` bigint NOT NULL DEFAULT 0 ,
` updated_at ` bigint NOT NULL DEFAULT 0 ,
2026-01-16 09:08:29 +08:00
PRIMARY KEY ( ` id ` ) USING BTREE
2026-01-16 13:38:52 +08:00
) ENGINE = InnoDB AUTO_INCREMENT = 7 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = ' 客户评价表 ' ROW_FORMAT = DYNAMIC ;
2026-01-16 09:08:29 +08:00
-- ----------------------------
-- Records of testimonials
-- ----------------------------
2026-01-16 13:38:52 +08:00
INSERT INTO ` testimonials ` VALUES ( 1 , ' Alex Chen ' , ' Product Owner @ TechFlow ' , ' 年糕不仅技术过硬,对设计细节的把控更是令人惊叹。 ' , ' https://api.dicebear.com/7.x/avataaars/svg?seed=Alex ' , 5 , 0 , 0 , 1768482993 , 1768538954 ) ;
INSERT INTO ` testimonials ` VALUES ( 2 , ' Sarah Wu ' , ' Design Director @ ArtSpace ' , ' 很少见到能把代码写得像诗一样的工程师,合作非常愉快! ' , ' https://api.dicebear.com/7.x/avataaars/svg?seed=Sarah ' , 5 , 0 , 0 , 1768482993 , 1768538954 ) ;
INSERT INTO ` testimonials ` VALUES ( 3 , ' Mike Zhang ' , ' CTO @ FutureWave ' , ' 交付质量远超预期,特别是在性能优化方面做得非常出色。 ' , ' https://api.dicebear.com/7.x/avataaars/svg?seed=Mike ' , 5 , 0 , 0 , 1768482993 , 1768538954 ) ;
INSERT INTO ` testimonials ` VALUES ( 4 , ' Jessica Li ' , ' Founder @ ZenMode ' , ' 从交互动效到整体架构,都体现了极高的专业水准。 ' , ' https://api.dicebear.com/7.x/avataaars/svg?seed=Jessica ' , 5 , 0 , 0 , 1768482993 , 1768538954 ) ;
INSERT INTO ` testimonials ` VALUES ( 5 , ' David Wang ' , ' Tech Lead @ Innovate ' , ' 代码结构清晰,注释完善,后续维护非常轻松。 ' , ' https://api.dicebear.com/7.x/avataaars/svg?seed=David ' , 5 , 0 , 0 , 1768482993 , 1768538954 ) ;
INSERT INTO ` testimonials ` VALUES ( 6 , ' ' , ' CTO ' , ' 服务很贴心,技术够硬 ' , ' https://api.dicebear.com/7.x/avataaars/svg?seed=David ' , 5 , 0 , 0 , 20260116130552 , 20260116130552 ) ;
2026-01-16 09:08:29 +08:00
2026-01-16 10:19:30 +08:00
-- ----------------------------
-- Table structure for user_access_logs
-- ----------------------------
DROP TABLE IF EXISTS ` user_access_logs ` ;
CREATE TABLE ` user_access_logs ` (
` id ` int NOT NULL AUTO_INCREMENT ,
` user_id ` int NULL DEFAULT 0 COMMENT ' 用户ID( 未登录用户为0) ' ,
` user_ip ` varchar ( 45 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT ' 用户IP地址 ' ,
` user_location ` varchar ( 100 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT ' 用户归属地 ' ,
` article_id ` int NOT NULL COMMENT ' 访问的文章ID ' ,
2026-01-16 13:01:21 +08:00
` deleted_at ` bigint NOT NULL DEFAULT 0 ,
2026-01-16 13:38:52 +08:00
` access_time ` bigint NOT NULL DEFAULT 0 ,
2026-01-16 10:19:30 +08:00
PRIMARY KEY ( ` id ` ) USING BTREE ,
INDEX ` idx_user_id ` ( ` user_id ` ASC ) USING BTREE ,
2026-01-16 13:38:52 +08:00
INDEX ` idx_article_id ` ( ` article_id ` ASC ) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 13 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = ' 用户访问记录表 ' ROW_FORMAT = DYNAMIC ;
2026-01-16 10:19:30 +08:00
-- ----------------------------
-- Records of user_access_logs
-- ----------------------------
2026-01-15 13:51:44 +08:00
-- ----------------------------
-- Table structure for users
-- ----------------------------
DROP TABLE IF EXISTS ` users ` ;
CREATE TABLE ` users ` (
` id ` bigint UNSIGNED NOT NULL AUTO_INCREMENT COMMENT ' 主键ID ' ,
` username ` varchar ( 50 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT ' 用户名 ' ,
` email ` varchar ( 100 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT ' 邮箱地址 ' ,
` password_hash ` varchar ( 255 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT ' 密码哈希值 ' ,
2026-01-15 15:37:34 +08:00
` role_id ` bigint UNSIGNED NULL DEFAULT NULL COMMENT ' 角色ID ' ,
2026-01-15 13:51:44 +08:00
` role ` enum ( ' admin ' , ' editor ' , ' viewer ' ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT ' viewer ' COMMENT ' 用户角色(兼容旧版) ' ,
` is_active ` tinyint ( 1 ) NULL DEFAULT 1 COMMENT ' 是否激活( 0: 禁用, 1: 激活) ' ,
2026-01-16 13:01:21 +08:00
` deleted_at ` bigint NOT NULL DEFAULT 0 ,
2026-01-16 13:38:52 +08:00
` created_at ` bigint NOT NULL DEFAULT 0 ,
` updated_at ` bigint NOT NULL DEFAULT 0 ,
2026-01-15 13:51:44 +08:00
PRIMARY KEY ( ` id ` ) USING BTREE ,
UNIQUE INDEX ` username ` ( ` username ` ASC ) USING BTREE ,
UNIQUE INDEX ` email ` ( ` email ` ASC ) USING BTREE ,
INDEX ` idx_username ` ( ` username ` ASC ) USING BTREE COMMENT ' 按用户名查询索引 ' ,
INDEX ` idx_email ` ( ` email ` ASC ) USING BTREE COMMENT ' 按邮箱查询索引 ' ,
INDEX ` idx_role ` ( ` role ` ASC ) USING BTREE COMMENT ' 按角色查询索引 ' ,
2026-01-16 17:03:34 +08:00
INDEX ` users_ibfk_1 ` ( ` role_id ` ASC ) USING BTREE
2026-01-15 16:44:00 +08:00
) ENGINE = InnoDB AUTO_INCREMENT = 6 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = ' 用户表 ' ROW_FORMAT = DYNAMIC ;
2026-01-15 13:51:44 +08:00
-- ----------------------------
-- Records of users
-- ----------------------------
2026-01-16 13:38:52 +08:00
INSERT INTO ` users ` VALUES ( 1 , ' lq ' , ' liqiworker@gmail.com ' , ' $2a$10$yl.1yCZ2PSTsW14byyDQ3uekuEiqnC4VBr/TzR6OvMqFVRuiiHu5e ' , 1 , ' admin ' , 1 , 0 , 1768291814 , 1768538951 ) ;
INSERT INTO ` users ` VALUES ( 2 , ' editor ' , ' editor@example.com ' , ' $2a$10$yl.1yCZ2PSTsW14byyDQ3uekuEiqnC4VBr/TzR6OvMqFVRuiiHu5e ' , 2 , ' editor ' , 1 , 0 , 1768291814 , 1768538951 ) ;
INSERT INTO ` users ` VALUES ( 5 , ' cs ' , ' cs@nailaoyun.cn ' , ' $2a$10$yl.1yCZ2PSTsW14byyDQ3uekuEiqnC4VBr/TzR6OvMqFVRuiiHu5e ' , 3 , ' viewer ' , 1 , 0 , 1768462115 , 1768538951 ) ;
2026-01-15 13:51:44 +08:00
-- ----------------------------
-- Table structure for work_gallery
-- ----------------------------
DROP TABLE IF EXISTS ` work_gallery ` ;
CREATE TABLE ` work_gallery ` (
` id ` bigint UNSIGNED NOT NULL AUTO_INCREMENT COMMENT ' 主键ID ' ,
` work_id ` varchar ( 50 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT ' 关联的作品ID ' ,
` image_url ` varchar ( 500 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT ' 图片URL ' ,
` sort_order ` int UNSIGNED NULL DEFAULT 0 COMMENT ' 排序顺序,数值越小越靠前 ' ,
` description ` varchar ( 200 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT ' ' COMMENT ' 图片描述 ' ,
2026-01-16 13:38:52 +08:00
` deleted_at ` bigint NOT NULL DEFAULT 0 ,
` created_at ` bigint NOT NULL DEFAULT 0 ,
2026-01-15 13:51:44 +08:00
PRIMARY KEY ( ` id ` ) USING BTREE ,
INDEX ` idx_work_id ` ( ` work_id ` ASC ) USING BTREE ,
2026-01-16 17:03:34 +08:00
INDEX ` idx_sort_order ` ( ` sort_order ` ASC ) USING BTREE
2026-01-15 15:37:34 +08:00
) ENGINE = InnoDB AUTO_INCREMENT = 5 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = ' 作品图库表 ' ROW_FORMAT = DYNAMIC ;
2026-01-15 13:51:44 +08:00
-- ----------------------------
-- Records of work_gallery
-- ----------------------------
2026-01-16 13:38:52 +08:00
INSERT INTO ` work_gallery ` VALUES ( 1 , ' nova ' , ' https://images.unsplash.com/photo-1642543492481-44e81e3914a7?q=80&w=2070 ' , 1 , ' Nova 交易平台首页 ' , 0 , 1768291937 ) ;
INSERT INTO ` work_gallery ` VALUES ( 2 , ' nova ' , ' https://images.unsplash.com/photo-1551288049-bebda4e38f71?q=80&w=2070 ' , 2 , ' Nova 交易平台交易界面 ' , 0 , 1768291937 ) ;
INSERT INTO ` work_gallery ` VALUES ( 3 , ' archdaily ' , ' https://images.unsplash.com/photo-1503387762-592deb58ef4e?q=80&w=2089 ' , 1 , ' ArchDaily 网站首页 ' , 0 , 1768291937 ) ;
INSERT INTO ` work_gallery ` VALUES ( 4 , ' archdaily ' , ' https://images.unsplash.com/photo-1518005020951-ecc859466abc?q=80&w=1920 ' , 2 , ' ArchDaily 文章详情页 ' , 0 , 1768291937 ) ;
2026-01-15 13:51:44 +08:00
-- ----------------------------
-- Table structure for work_tech_stack
-- ----------------------------
DROP TABLE IF EXISTS ` work_tech_stack ` ;
CREATE TABLE ` work_tech_stack ` (
` id ` bigint UNSIGNED NOT NULL AUTO_INCREMENT COMMENT ' 主键ID ' ,
` work_id ` varchar ( 50 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT ' 关联的作品ID ' ,
` category ` varchar ( 100 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT ' 技术分类(如:前端、后端、数据库等) ' ,
` item ` varchar ( 100 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT ' 具体技术项( 如: Vue 3、Golang、MySQL等) ' ,
2026-01-16 13:38:52 +08:00
` deleted_at ` bigint NOT NULL DEFAULT 0 ,
` created_at ` bigint NOT NULL DEFAULT 0 ,
2026-01-15 13:51:44 +08:00
PRIMARY KEY ( ` id ` ) USING BTREE ,
INDEX ` idx_work_id ` ( ` work_id ` ASC ) USING BTREE ,
2026-01-16 17:03:34 +08:00
INDEX ` idx_category ` ( ` category ` ASC ) USING BTREE
2026-01-15 15:37:34 +08:00
) ENGINE = InnoDB AUTO_INCREMENT = 10 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = ' 作品技术栈表 ' ROW_FORMAT = DYNAMIC ;
2026-01-15 13:51:44 +08:00
-- ----------------------------
-- Records of work_tech_stack
-- ----------------------------
2026-01-16 13:38:52 +08:00
INSERT INTO ` work_tech_stack ` VALUES ( 1 , ' nova ' , ' 前端层 ' , ' React 18 ' , 0 , 1768291937 ) ;
INSERT INTO ` work_tech_stack ` VALUES ( 2 , ' nova ' , ' 前端层 ' , ' TypeScript ' , 0 , 1768291937 ) ;
INSERT INTO ` work_tech_stack ` VALUES ( 3 , ' nova ' , ' 前端层 ' , ' D3.js ' , 0 , 1768291937 ) ;
INSERT INTO ` work_tech_stack ` VALUES ( 4 , ' nova ' , ' 后端服务 ' , ' Golang ' , 0 , 1768291937 ) ;
INSERT INTO ` work_tech_stack ` VALUES ( 5 , ' nova ' , ' 后端服务 ' , ' gRPC ' , 0 , 1768291937 ) ;
INSERT INTO ` work_tech_stack ` VALUES ( 6 , ' archdaily ' , ' 核心前端 ' , ' Vue 3 ' , 0 , 1768291937 ) ;
INSERT INTO ` work_tech_stack ` VALUES ( 7 , ' archdaily ' , ' 核心前端 ' , ' Nuxt.js ' , 0 , 1768291937 ) ;
INSERT INTO ` work_tech_stack ` VALUES ( 8 , ' archdaily ' , ' 核心前端 ' , ' GSAP ' , 0 , 1768291937 ) ;
INSERT INTO ` work_tech_stack ` VALUES ( 9 , ' archdaily ' , ' CMS ' , ' Strapi ' , 0 , 1768291937 ) ;
2026-01-15 13:51:44 +08:00
-- ----------------------------
-- Table structure for works
-- ----------------------------
DROP TABLE IF EXISTS ` works ` ;
CREATE TABLE ` works ` (
` id ` varchar ( 50 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT ' 作品唯一标识 ' ,
` title ` varchar ( 200 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT ' 作品标题 ' ,
` category ` varchar ( 100 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT ' 作品分类 ' ,
` year ` varchar ( 10 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT ' 创作年份 ' ,
` hero_img ` varchar ( 500 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT ' 作品主图URL ' ,
` description ` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT ' 作品详细描述 ' ,
` is_featured ` tinyint ( 1 ) NULL DEFAULT 0 COMMENT ' 是否为精选作品( 0: 否, 1: 是) ' ,
2026-01-16 13:01:21 +08:00
` deleted_at ` bigint NOT NULL DEFAULT 0 ,
2026-01-16 13:38:52 +08:00
` created_at ` bigint NOT NULL DEFAULT 0 ,
` updated_at ` bigint NOT NULL DEFAULT 0 ,
2026-01-15 13:51:44 +08:00
PRIMARY KEY ( ` id ` ) USING BTREE ,
INDEX ` idx_category ` ( ` category ` ASC ) USING BTREE COMMENT ' 按分类查询索引 ' ,
INDEX ` idx_year ` ( ` year ` ASC ) USING BTREE COMMENT ' 按年份查询索引 ' ,
INDEX ` idx_is_featured ` ( ` is_featured ` ASC ) USING BTREE COMMENT ' 按精选状态查询索引 '
2026-01-15 15:37:34 +08:00
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = ' 作品表 ' ROW_FORMAT = DYNAMIC ;
2026-01-15 13:51:44 +08:00
-- ----------------------------
-- Records of works
-- ----------------------------
2026-01-16 13:38:52 +08:00
INSERT INTO ` works ` VALUES ( ' archdaily ' , ' ArchDaily 网站重构 ' , ' 建筑设计 ' , ' 2022 ' , ' https://images.unsplash.com/photo-1487958449943-2429e8be8625?q=80&w=2070 ' , ' ArchDaily 是全球最受欢迎的建筑网站之一。这次重构的目标是提升移动端体验。我们使用了 Nuxt 3 进行服务端渲染( SSR) 。 ' , 1 , 0 , 1768291814 , 1768538952 ) ;
INSERT INTO ` works ` VALUES ( ' nova ' , ' Nova 交易平台 ' , ' 金融科技 ' , ' 2023 ' , ' https://images.unsplash.com/photo-1487958449943-2429e8be8625?q=80&w=2070 ' , ' Nova 是一个专为机构交易员设计的高频交易终端。我们面临的最大挑战是如何在处理毫秒级市场数据的同时,保持界面的流畅响应。我们采用 Web Worker 来处理繁重的数据计算,避免阻塞主线程。 ' , 1 , 0 , 1768291814 , 1768538952 ) ;
2026-01-15 13:51:44 +08:00
2026-01-15 15:37:34 +08:00
SET FOREIGN_KEY_CHECKS = 1 ;