Skip to content

Commit 241c2ec

Browse files
committed
per(vditor): 集中Vditor版本管理并统一资源路径
per(paste): 优化文本管理瀑布流样式代码 feat(paste): 给文本瀑布流卡片添加双击(桌面端)/长按(移动端)内联编辑功能 - 新增VDITOR_VERSION常量实现集中版本控制 - 在所有组件中用VDITOR_ASSETS_BASE常量替换硬编码CDN路径 - 修复复制链接处理程序使用slug而非完整粘贴对象 - 移除瀑布流卡片点击行为并将预览功能移至下拉菜单
1 parent 897a955 commit 241c2ec

550 files changed

Lines changed: 1104 additions & 525 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

Api-doc.md

Lines changed: 44 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -332,49 +332,49 @@ X-Custom-Auth-Key: <api_key>
332332
- 当 `is_public = true` 时,任何持有链接的用户都可以访问(仍受过期时间、最大查看次数和密码保护限制)。
333333
- 当 `is_public = false` 时,仅管理员和创建者可以访问;其他用户(包括匿名和其他 API 密钥)将收到“不存在或已被删除”的响应(HTTP 404)。
334334
- 响应:
335-
- 如果文本未设置密码且可访问,将直接返回内容:
336-
```json
337-
{
338-
"code": 200,
339-
"message": "获取文本内容成功",
340-
"data": {
341-
"slug": "abc123",
342-
"title": "文本标题",
343-
"content": "要分享的文本内容",
344-
"remark": "备注信息",
345-
"expires_at": "2023-12-31T23:59:59Z",
346-
"max_views": 100,
347-
"views": 1,
348-
"created_at": "2023-05-01T12:00:00Z",
349-
"created_by": "admin",
350-
"is_public": true,
351-
"hasPassword": false,
352-
"isLastView": false
353-
},
354-
"success": true
355-
}
356-
```
357-
- 如果文本已设置密码,则只返回元信息并提示需要密码:
358-
```json
359-
{
360-
"code": 200,
361-
"message": "获取文本信息成功",
362-
"data": {
363-
"slug": "abc123",
364-
"title": "文本标题",
365-
"remark": "备注信息",
366-
"expires_at": "2023-12-31T23:59:59Z",
367-
"max_views": 100,
368-
"views": 0,
369-
"created_at": "2023-05-01T12:00:00Z",
370-
"created_by": "admin",
371-
"is_public": true,
372-
"hasPassword": true,
373-
"requiresPassword": true
374-
},
375-
"success": true
376-
}
377-
```
335+
- 如果文本未设置密码且可访问,将直接返回内容:
336+
```json
337+
{
338+
"code": 200,
339+
"message": "获取文本内容成功",
340+
"data": {
341+
"slug": "abc123",
342+
"title": "文本标题",
343+
"content": "要分享的文本内容",
344+
"remark": "备注信息",
345+
"expires_at": "2023-12-31T23:59:59Z",
346+
"max_views": 100,
347+
"views": 1,
348+
"created_at": "2023-05-01T12:00:00Z",
349+
"created_by": "admin",
350+
"is_public": true,
351+
"hasPassword": false,
352+
"isLastView": false
353+
},
354+
"success": true
355+
}
356+
```
357+
- 如果文本已设置密码,则只返回元信息并提示需要密码:
358+
```json
359+
{
360+
"code": 200,
361+
"message": "获取文本信息成功",
362+
"data": {
363+
"slug": "abc123",
364+
"title": "文本标题",
365+
"remark": "备注信息",
366+
"expires_at": "2023-12-31T23:59:59Z",
367+
"max_views": 100,
368+
"views": 0,
369+
"created_at": "2023-05-01T12:00:00Z",
370+
"created_by": "admin",
371+
"is_public": true,
372+
"hasPassword": true,
373+
"requiresPassword": true
374+
},
375+
"success": true
376+
}
377+
```
378378

379379
- `POST /api/paste/:slug`
380380

@@ -431,7 +431,7 @@ X-Custom-Auth-Key: <api_key>
431431
"created_at": "2023-05-01T12:00:00Z",
432432
"updated_at": "2023-05-02T08:00:00Z",
433433
"has_password": false,
434-
"content_preview": "内容前 200 字..."
434+
"content": "完整内容..."
435435
}
436436
],
437437
"pagination": {

backend/src/repositories/PasteRepository.js

Lines changed: 12 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -164,9 +164,9 @@ export class PasteRepository extends BaseRepository {
164164
*/
165165
async deleteExpired(currentTime = new Date()) {
166166
const result = await this.execute(
167-
`DELETE FROM ${DbTables.PASTES}
167+
`DELETE FROM ${DbTables.PASTES}
168168
WHERE expires_at IS NOT NULL AND expires_at < ?`,
169-
[currentTime.toISOString()]
169+
[currentTime.toISOString()]
170170
);
171171

172172
return {
@@ -181,7 +181,7 @@ export class PasteRepository extends BaseRepository {
181181
*/
182182
async deleteOverViewLimit() {
183183
const result = await this.execute(
184-
`DELETE FROM ${DbTables.PASTES}
184+
`DELETE FROM ${DbTables.PASTES}
185185
WHERE max_views IS NOT NULL AND max_views > 0 AND views >= max_views`
186186
);
187187

@@ -198,9 +198,9 @@ export class PasteRepository extends BaseRepository {
198198
*/
199199
async findExpired(currentTime = new Date()) {
200200
const result = await this.query(
201-
`SELECT * FROM ${DbTables.PASTES}
201+
`SELECT * FROM ${DbTables.PASTES}
202202
WHERE expires_at IS NOT NULL AND expires_at < ?`,
203-
[currentTime.toISOString()]
203+
[currentTime.toISOString()]
204204
);
205205

206206
return result.results || [];
@@ -212,7 +212,7 @@ export class PasteRepository extends BaseRepository {
212212
*/
213213
async findOverViewLimit() {
214214
const result = await this.query(
215-
`SELECT * FROM ${DbTables.PASTES}
215+
`SELECT * FROM ${DbTables.PASTES}
216216
WHERE max_views IS NOT NULL AND max_views > 0 AND views >= max_views`
217217
);
218218

@@ -274,9 +274,9 @@ export class PasteRepository extends BaseRepository {
274274
*/
275275
async createPasswordRecord(pasteId, plainPassword) {
276276
return await this.execute(
277-
`INSERT INTO ${DbTables.PASTE_PASSWORDS} (paste_id, plain_password, created_at, updated_at)
277+
`INSERT INTO ${DbTables.PASTE_PASSWORDS} (paste_id, plain_password, created_at, updated_at)
278278
VALUES (?, ?, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP)`,
279-
[pasteId, plainPassword]
279+
[pasteId, plainPassword]
280280
);
281281
}
282282

@@ -299,10 +299,10 @@ export class PasteRepository extends BaseRepository {
299299
*/
300300
async updatePasswordRecord(pasteId, plainPassword) {
301301
return await this.execute(
302-
`UPDATE ${DbTables.PASTE_PASSWORDS}
302+
`UPDATE ${DbTables.PASTE_PASSWORDS}
303303
SET plain_password = ?, updated_at = CURRENT_TIMESTAMP
304304
WHERE paste_id = ?`,
305-
[plainPassword, pasteId]
305+
[plainPassword, pasteId]
306306
);
307307
}
308308

@@ -486,23 +486,20 @@ export class PasteRepository extends BaseRepository {
486486
const countResult = await this.queryFirst(countSql, countParams);
487487
const total = countResult?.total || 0;
488488

489-
// 查询数据(包含格式化字段)
489+
// 查询数据:管理员列表统一返回完整 content,由前端自行截断预览
490490
const querySql = `
491491
SELECT
492492
id,
493493
slug,
494494
title,
495+
content,
495496
remark,
496497
password IS NOT NULL as has_password,
497498
expires_at,
498499
max_views,
499500
views as view_count,
500501
is_public,
501502
created_by,
502-
CASE
503-
WHEN LENGTH(content) > 200 THEN SUBSTR(content, 1, 200) || '...'
504-
ELSE content
505-
END as content_preview,
506503
created_at,
507504
updated_at
508505
FROM ${DbTables.PASTES}${whereClause}

0 commit comments

Comments
 (0)