From 6d463b92964e00c741f5fd3216895126fe8ccc37 Mon Sep 17 00:00:00 2001 From: Hermes Agent Date: Sat, 19 Sep 2026 19:28:40 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E8=AE=A2=E9=98=85=E6=B6=88=E6=81=AF?= =?UTF-8?q?=E9=80=9A=E7=9F=A5=E4=BD=93=E7=B3=BB=E2=80=94=E2=80=94=E7=99=BB?= =?UTF-8?q?=E5=BD=95=E5=90=8E=E8=AF=B7=E6=B1=82=E8=AE=A2=E9=98=85=E6=8E=88?= =?UTF-8?q?=E6=9D=83(=E9=A2=9D=E5=BA=A6=E8=AE=B0=E8=B4=A6)+=E6=9C=8D?= =?UTF-8?q?=E5=8A=A1=E7=AB=AFsubscribe/send(access=5Ftoken=E7=BC=93?= =?UTF-8?q?=E5=AD=98/=E5=8E=9F=E5=AD=90=E6=89=A3=E5=87=8F/=E5=A4=B1?= =?UTF-8?q?=E8=B4=A5=E5=9B=9E=E8=A1=A5/=E5=8F=91=E9=80=81=E8=AE=B0?= =?UTF-8?q?=E5=BD=95)+=E7=AE=A1=E7=90=86=E5=90=8E=E5=8F=B0=E9=80=9A?= =?UTF-8?q?=E7=9F=A5=E6=8E=A8=E9=80=81=E9=A1=B5=EF=BC=9B=E7=89=88=E6=9C=AC?= =?UTF-8?q?v1.4.4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- admin/src/App.vue | 2 + admin/src/views/Notify.vue | 103 +++++++++++++++++++++++++++++++ client/src/manifest.json | 2 +- client/src/pages/login/login.vue | 3 + client/src/utils/notify.js | 35 +++++++++++ server/src/models/NotifyLog.js | 20 ++++++ server/src/models/User.js | 3 +- server/src/models/index.js | 4 +- server/src/routes/admin.js | 97 ++++++++++++++++++++++++++++- server/src/routes/auth.js | 17 +++++ server/src/utils/wxToken.js | 15 +++++ 11 files changed, 297 insertions(+), 4 deletions(-) create mode 100644 admin/src/views/Notify.vue create mode 100644 client/src/utils/notify.js create mode 100644 server/src/models/NotifyLog.js create mode 100644 server/src/utils/wxToken.js diff --git a/admin/src/App.vue b/admin/src/App.vue index e5ce453..9dcbf1d 100644 --- a/admin/src/App.vue +++ b/admin/src/App.vue @@ -36,6 +36,7 @@ import Trends from './views/Trends.vue' import Quotas from './views/Quotas.vue' import Feedbacks from './views/Feedbacks.vue' import Logs from './views/Logs.vue' +import Notify from './views/Notify.vue' import VpayOrders from './views/VpayOrders.vue' const token = ref(getToken()) @@ -54,6 +55,7 @@ const menus = [ { key: 'feedbacks', label: '反馈管理', icon: '📝', comp: Feedbacks }, { key: 'vpay', label: '订单/余额', icon: '💰', comp: VpayOrders }, { key: 'logs', label: '访问日志', icon: '🗂️', comp: Logs }, + { key: 'notify', label: '通知推送', icon: '📣', comp: Notify }, ] async function login() { diff --git a/admin/src/views/Notify.vue b/admin/src/views/Notify.vue new file mode 100644 index 0000000..8d08141 --- /dev/null +++ b/admin/src/views/Notify.vue @@ -0,0 +1,103 @@ + + + + + diff --git a/client/src/manifest.json b/client/src/manifest.json index 76d66e8..f8d0b0d 100644 --- a/client/src/manifest.json +++ b/client/src/manifest.json @@ -1,7 +1,7 @@ { "name": "宇之然AI维度", "appid": "wxdad62baf4ccd09e3", - "versionName": "1.4.3", + "versionName": "1.4.4", "versionCode": "100", "description": "AI 知识探索社区 — 从5个维度系统理解人工智能", "uni-app": { diff --git a/client/src/pages/login/login.vue b/client/src/pages/login/login.vue index 405bace..c3aad1e 100644 --- a/client/src/pages/login/login.vue +++ b/client/src/pages/login/login.vue @@ -129,6 +129,7 @@