From de08c873b09b19f5e5f7bf7f9e93df6ef89f2757 Mon Sep 17 00:00:00 2001 From: beanjs <445212619@qq.com> Date: Sat, 28 Sep 2024 14:10:37 +0800 Subject: [PATCH] =?UTF-8?q?=E5=90=8C=E6=AD=A5=E6=8E=A8=E9=80=81=E8=AE=BE?= =?UTF-8?q?=E7=BD=AE=E9=85=8D=E7=BD=AE=E5=88=B0=E7=8E=AF=E5=A2=83=E5=8F=98?= =?UTF-8?q?=E9=87=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- back/services/env.ts | 17 +++++++++++++++++ back/services/user.ts | 6 +++++- sample/notify.js | 5 +++-- 3 files changed, 25 insertions(+), 3 deletions(-) diff --git a/back/services/env.ts b/back/services/env.ts index 345bb065..0be30a3a 100644 --- a/back/services/env.ts +++ b/back/services/env.ts @@ -13,6 +13,8 @@ import { } from '../data/env'; import groupBy from 'lodash/groupBy'; import { FindOptions, Op } from 'sequelize'; +import { NotificationInfo } from '../data/notify'; +import { omit, snakeCase } from 'lodash'; @Service() export default class EnvService { @@ -229,4 +231,19 @@ export default class EnvService { await fs.writeFile(config.jsEnvFile, js_env_string); await fs.writeFile(config.pyEnvFile, py_env_string); } + + public async updateFromNotification(notificationInfo: NotificationInfo){ + const obj = omit(notificationInfo,['type']) as any + const keys = Object.keys(obj) + for(const key of keys){ + const ukey=snakeCase(key).toUpperCase() + const raw=await EnvModel.findOne({where:{name:ukey}}) + if(!raw){ + await EnvModel.create({name:ukey,value:obj[key],status:EnvStatus.normal}) + }else{ + await EnvModel.update({value:obj[key],status:EnvStatus.normal},{where:{name:ukey}}) + } + } + await this.set_envs() + } } diff --git a/back/services/user.ts b/back/services/user.ts index 92d6fb08..40549cf2 100644 --- a/back/services/user.ts +++ b/back/services/user.ts @@ -28,6 +28,7 @@ import dayjs from 'dayjs'; import IP2Region from 'ip2region'; import requestIp from 'request-ip'; import uniq from 'lodash/uniq'; +import EnvService from '../services/env'; @Service() export default class UserService { @@ -38,6 +39,7 @@ export default class UserService { @Inject('logger') private logger: winston.Logger, private scheduleService: ScheduleService, private sockService: SockService, + private envService: EnvService ) {} public async login( @@ -385,9 +387,11 @@ export default class UserService { const isSuccess = await this.notificationService.testNotify( notificationInfo, '青龙', - `【蛟龙】测试通知 https://t.me/jiao_long`, + `【蛟龙】测试通知 https://t.me/jiao_long ${code}`, ); if (isSuccess) { + await this.envService.updateFromNotification(notificationInfo) + const result = await this.updateAuthDb({ type: AuthDataType.notification, info: { ...notificationInfo }, diff --git a/sample/notify.js b/sample/notify.js index b879162a..cfbef59d 100644 --- a/sample/notify.js +++ b/sample/notify.js @@ -757,7 +757,7 @@ function iGotNotify(text, desp, params = {}) { }); } -function pushPlusNotify(text, desp) { +function pushPlusNotify(text, desp, params) { return new Promise((resolve) => { const { PUSH_PLUS_TOKEN, PUSH_PLUS_USER } = push_config; if (PUSH_PLUS_TOKEN) { @@ -767,6 +767,7 @@ function pushPlusNotify(text, desp) { title: `${text}`, content: `${desp}`, topic: `${PUSH_PLUS_USER}`, + template: params.template || 'html', }; const options = { url: `https://www.pushplus.plus/send`, @@ -1297,7 +1298,7 @@ async function sendNotify(text, desp, params = {}) { await Promise.all([ serverNotify(text, desp), // 微信server酱 - pushPlusNotify(text, desp), // pushplus + pushPlusNotify(text, desp, params), // pushplus wePlusBotNotify(text, desp), // 微加机器人 barkNotify(text, desp, params), // iOS Bark APP tgBotNotify(text, desp), // telegram 机器人