diff --git a/Server/src/APIs/BlogLike.ts b/Server/src/APIs/BlogLike.ts
new file mode 100644
index 0000000..cafba3f
--- /dev/null
+++ b/Server/src/APIs/BlogLike.ts
@@ -0,0 +1,34 @@
+import { API } from "../Plugs/API/API";
+import ServerStdResponse from "../ServerStdResponse";
+import MySQLConnection from '../Plugs/MySQLConnection'
+import { Buffer } from 'buffer';
+import axios from "axios";
+
+
+// 点赞
+class BlogLike extends API {
+ constructor() {
+ super('POST', '/blogLike');
+ }
+ private defaultAccessLevel = 6;
+
+ public async onRequset(data: any, res: any) {
+ let { bloguuid } = data;
+ if (!bloguuid || bloguuid.length != 32) {
+ return res.json(ServerStdResponse.INVALID_PARAMS);
+ }
+
+ let blogLikeRes = await MySQLConnection.execute('UPDATE blog SET like_count = like_count + 1 WHERE access_level > ? AND uuid = ? ', [this.defaultAccessLevel, bloguuid]);
+ if (!blogLikeRes) {
+ this.logger.error('点赞博客时,数据库发生错误');
+ return res.json(ServerStdResponse.SERVER_ERROR);
+ }
+ if (blogLikeRes.affectedRows != 1) {
+ this.logger.warn('查询的博客不存在或不可见', bloguuid);
+ return res.json(ServerStdResponse.BLOG.NOTFOUND);
+ }
+ return res.json(ServerStdResponse.OK);
+ }
+}
+
+export default BlogLike;
\ No newline at end of file
diff --git a/Server/src/Server/Server.ts b/Server/src/Server/Server.ts
index 714c1c1..a8415b2 100644
--- a/Server/src/Server/Server.ts
+++ b/Server/src/Server/Server.ts
@@ -6,6 +6,7 @@ import GetTest from "../APIs/GetTest";
import GetResourceList from "../APIs/GetResourceList";
import GetBlogList from "../APIs/GetBlogList";
import GetBlogContent from "../APIs/GetBlogContent";
+import BlogLike from "../APIs/BlogLike";
class Server {
private logger = new Logger('Server');
@@ -22,6 +23,7 @@ class Server {
this.apiLoader.add(GetResourceList);
this.apiLoader.add(GetBlogList);
this.apiLoader.add(GetBlogContent);
+ this.apiLoader.add(BlogLike);
this.apiLoader.start(config.apiPort);
}
diff --git a/tonecn/components.d.ts b/tonecn/components.d.ts
index 395436e..1ab5935 100644
--- a/tonecn/components.d.ts
+++ b/tonecn/components.d.ts
@@ -8,8 +8,10 @@ export {}
declare module 'vue' {
export interface GlobalComponents {
Agreement: typeof import('./src/components/Common/Agreement.vue')['default']
+ BlogContentToolBar: typeof import('./src/components/Blog/BlogContentToolBar.vue')['default']
BlogToolBar: typeof import('./src/components/Blog/BlogToolBar.vue')['default']
ElButton: typeof import('element-plus/es')['ElButton']
+ ElDialog: typeof import('element-plus/es')['ElDialog']
ElEmpty: typeof import('element-plus/es')['ElEmpty']
ElInput: typeof import('element-plus/es')['ElInput']
ElPopover: typeof import('element-plus/es')['ElPopover']
diff --git a/tonecn/package.json b/tonecn/package.json
index 4ee3908..9efc0ff 100644
--- a/tonecn/package.json
+++ b/tonecn/package.json
@@ -11,6 +11,7 @@
"type-check": "vue-tsc --build --force"
},
"dependencies": {
+ "@element-plus/icons-vue": "^2.3.1",
"axios": "^1.6.8",
"highlight.js": "^11.10.0",
"marked": "^14.1.0",
diff --git a/tonecn/pnpm-lock.yaml b/tonecn/pnpm-lock.yaml
index 9f48d65..5cee5bb 100644
--- a/tonecn/pnpm-lock.yaml
+++ b/tonecn/pnpm-lock.yaml
@@ -5,6 +5,9 @@ settings:
excludeLinksFromLockfile: false
dependencies:
+ '@element-plus/icons-vue':
+ specifier: ^2.3.1
+ version: 2.3.1(vue@3.4.27)
axios:
specifier: ^1.6.8
version: 1.6.8
@@ -99,7 +102,6 @@ packages:
vue: ^3.2.0
dependencies:
vue: 3.4.27(typescript@5.4.5)
- dev: true
/@esbuild/aix-ppc64@0.20.2:
resolution: {integrity: sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==}
diff --git a/tonecn/src/components/Blog/BlogContentToolBar.vue b/tonecn/src/components/Blog/BlogContentToolBar.vue
new file mode 100644
index 0000000..49f38ed
--- /dev/null
+++ b/tonecn/src/components/Blog/BlogContentToolBar.vue
@@ -0,0 +1,107 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/tonecn/src/components/Blog/BlogToolBar.vue b/tonecn/src/components/Blog/BlogToolBar.vue
deleted file mode 100644
index 58020af..0000000
--- a/tonecn/src/components/Blog/BlogToolBar.vue
+++ /dev/null
@@ -1,201 +0,0 @@
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/tonecn/src/views/BlogContent.vue b/tonecn/src/views/BlogContent.vue
index 89be949..63e65b4 100644
--- a/tonecn/src/views/BlogContent.vue
+++ b/tonecn/src/views/BlogContent.vue
@@ -7,6 +7,7 @@ import { Marked } from 'marked';
import { markedHighlight } from "marked-highlight";
import hljs from 'highlight.js';
import "highlight.js/styles/xcode.css";
+import BlogContentToolBar from '@/components/Blog/BlogContentToolBar.vue';
const loadStatus = ref(0);// 0加载中 -1加载失败 -2文章不存在或不可见 1加载成功
const route = useRoute();
@@ -48,22 +49,6 @@ onMounted(async () => {
console.error('请求博客内容发生错误 ', error);
loadStatus.value = -1;
}
-
- // 处理iframe元素
- let iframes = document.querySelectorAll('iframe');
- for (let i = 0; i < iframes.length; i++) {
- let iframe = iframes[i];
- // 创建一个新的div元素
- let wrapperDiv = document.createElement('div');
- // 设置新div的类名
- wrapperDiv.className = 'video-container';
- // 获取iframe的父元素
- let parent = iframe.parentNode;
- // 将新的div插入到iframe之前
- parent?.insertBefore(wrapperDiv, iframe);
- // 将iframe移动到新创建的div内部
- wrapperDiv.appendChild(iframe);
- }
})
@@ -80,6 +65,7 @@ onMounted(async () => {
+