diff --git a/packages/libs/lib-server/src/system/settings/service/models.ts b/packages/libs/lib-server/src/system/settings/service/models.ts index 1da84c35..e16ff77b 100644 --- a/packages/libs/lib-server/src/system/settings/service/models.ts +++ b/packages/libs/lib-server/src/system/settings/service/models.ts @@ -204,3 +204,5 @@ export class SysSafeSetting extends BaseSettings { autoHiddenTimes: 5, }; } + + diff --git a/packages/ui/certd-client/src/router/source/modules/certd.ts b/packages/ui/certd-client/src/router/source/modules/certd.ts index a9c992be..15d42512 100644 --- a/packages/ui/certd-client/src/router/source/modules/certd.ts +++ b/packages/ui/certd-client/src/router/source/modules/certd.ts @@ -143,6 +143,17 @@ export const certdResources = [ keepAlive: true, }, }, + { + title: "站点监控设置", + name: "SiteMonitorSetting", + path: "/certd/monitor/setting", + component: "/certd/monitor/site/setting/index.vue", + meta: { + icon: "ion:videocam-outline", + auth: true, + isMenu: true, + }, + }, { title: "认证安全设置", name: "UserSecurity", diff --git a/packages/ui/certd-client/src/views/certd/access/crud.tsx b/packages/ui/certd-client/src/views/certd/access/crud.tsx index 77c34caf..ff6ad138 100644 --- a/packages/ui/certd-client/src/views/certd/access/crud.tsx +++ b/packages/ui/certd-client/src/views/certd/access/crud.tsx @@ -35,10 +35,15 @@ export default function ({ crudExpose, context }: CreateCrudOptionsProps): Creat pageRequest, addRequest, editRequest, - delRequest + delRequest, + }, + table: { + remove: { + confirmMessage: "授权如果已经被使用,可能会导致流水线无法正常运行,请谨慎操作", + }, }, rowHandle: { - width: 200 + width: 200, }, columns: { id: { @@ -46,24 +51,24 @@ export default function ({ crudExpose, context }: CreateCrudOptionsProps): Creat key: "id", type: "number", column: { - width: 100 + width: 100, }, form: { - show: false - } + show: false, + }, }, name: { title: "名称", type: "text", search: { - show: true + show: true, }, form: { - rules: [{ required: true, message: "必填项" }] + rules: [{ required: true, message: "必填项" }], }, column: { - width: 300 - } + width: 300, + }, }, from: { title: "级别", @@ -71,29 +76,29 @@ export default function ({ crudExpose, context }: CreateCrudOptionsProps): Creat dict: dict({ data: [ { label: "系统", value: "sys" }, - { label: "用户", value: "user" } - ] + { label: "用户", value: "user" }, + ], }), search: { - show: false + show: false, }, form: { - show: false + show: false, }, column: { width: 100, align: "center", component: { - color: "auto" + color: "auto", }, - order: 10 + order: 10, }, valueBuilder: ({ row, key, value }) => { row[key] = row.userId > 0 ? "user" : "sys"; - } + }, }, - ...commonColumnsDefine - } - } + ...commonColumnsDefine, + }, + }, }; } diff --git a/packages/ui/certd-client/src/views/certd/monitor/site/api.ts b/packages/ui/certd-client/src/views/certd/monitor/site/api.ts index d8ae199e..f5e7a64f 100644 --- a/packages/ui/certd-client/src/views/certd/monitor/site/api.ts +++ b/packages/ui/certd-client/src/views/certd/monitor/site/api.ts @@ -7,7 +7,7 @@ export const siteInfoApi = { return await request({ url: apiPrefix + "/page", method: "post", - data: query + data: query, }); }, @@ -15,7 +15,7 @@ export const siteInfoApi = { return await request({ url: apiPrefix + "/add", method: "post", - data: obj + data: obj, }); }, @@ -23,7 +23,7 @@ export const siteInfoApi = { return await request({ url: apiPrefix + "/update", method: "post", - data: obj + data: obj, }); }, @@ -31,7 +31,7 @@ export const siteInfoApi = { return await request({ url: apiPrefix + "/delete", method: "post", - params: { id } + params: { id }, }); }, @@ -39,20 +39,20 @@ export const siteInfoApi = { return await request({ url: apiPrefix + "/info", method: "post", - params: { id } + params: { id }, }); }, async DoCheck(id: number) { return await request({ url: apiPrefix + "/check", method: "post", - data: { id } + data: { id }, }); }, async CheckAll() { return await request({ url: apiPrefix + "/checkAll", - method: "post" + method: "post", }); - } + }, }; diff --git a/packages/ui/certd-client/src/views/certd/monitor/site/index.vue b/packages/ui/certd-client/src/views/certd/monitor/site/index.vue index 60db2b2a..b3521df3 100644 --- a/packages/ui/certd-client/src/views/certd/monitor/site/index.vue +++ b/packages/ui/certd-client/src/views/certd/monitor/site/index.vue @@ -4,7 +4,10 @@
站点证书监控
-
每天0点,检查网站证书的过期时间,到期前10天时将发出提醒(使用默认通知渠道);
+
+ 每天0点,检查网站证书的过期时间,到期前10天时将发出提醒(使用默认通知渠道); + 站点监控设置 +
基础版限制1条,专业版以上无限制,当前
diff --git a/packages/ui/certd-client/src/views/certd/monitor/site/setting/api.ts b/packages/ui/certd-client/src/views/certd/monitor/site/setting/api.ts new file mode 100644 index 00000000..2a96d9f1 --- /dev/null +++ b/packages/ui/certd-client/src/views/certd/monitor/site/setting/api.ts @@ -0,0 +1,24 @@ +// @ts-ignore +import { request } from "/src/api/service"; +const apiPrefix = "/monitor/site/setting"; +export type UserSiteMonitorSetting = { + notificationId?: number; +}; + +export async function SiteMonitorSettingsGet() { + const res = await request({ + url: apiPrefix + "/get", + method: "post", + }); + if (!res) { + return {}; + } + return res as UserSiteMonitorSetting; +} +export async function SiteMonitorSettingsSave(data: UserSiteMonitorSetting) { + await request({ + url: apiPrefix + "/save", + method: "post", + data: data, + }); +} diff --git a/packages/ui/certd-client/src/views/certd/monitor/site/setting/index.vue b/packages/ui/certd-client/src/views/certd/monitor/site/setting/index.vue new file mode 100644 index 00000000..1bb62400 --- /dev/null +++ b/packages/ui/certd-client/src/views/certd/monitor/site/setting/index.vue @@ -0,0 +1,63 @@ + + + + + diff --git a/packages/ui/certd-server/src/controller/user/monitor/site-info-controller.ts b/packages/ui/certd-server/src/controller/user/monitor/site-info-controller.ts index 90135e2c..b7a6ee2c 100644 --- a/packages/ui/certd-server/src/controller/user/monitor/site-info-controller.ts +++ b/packages/ui/certd-server/src/controller/user/monitor/site-info-controller.ts @@ -1,7 +1,9 @@ -import { ALL, Body, Controller, Inject, Post, Provide, Query } from '@midwayjs/core'; -import { Constants, CrudController } from '@certd/lib-server'; -import { AuthService } from '../../../modules/sys/authority/service/auth-service.js'; -import { SiteInfoService } from '../../../modules/monitor/service/site-info-service.js'; +import { ALL, Body, Controller, Inject, Post, Provide, Query } from "@midwayjs/core"; +import { Constants, CrudController } from "@certd/lib-server"; +import { AuthService } from "../../../modules/sys/authority/service/auth-service.js"; +import { SiteInfoService } from "../../../modules/monitor/service/site-info-service.js"; +import { UserSiteMonitorSetting } from "../../../modules/mine/service/models.js"; +import { merge } from "lodash-es"; /** */ @@ -94,4 +96,23 @@ export class SiteInfoController extends CrudController { await this.service.checkAllByUsers(userId); return this.ok(); } + + + + @Post("/setting/get", { summary: Constants.per.authOnly }) + async get() { + const userId = this.getUserId(); + const setting = await this.service.getSetting(userId) + return this.ok(setting); + } + + @Post("/setting/save", { summary: Constants.per.authOnly }) + async save(@Body(ALL) bean: any) { + const userId = this.getUserId(); + const setting = new UserSiteMonitorSetting(); + merge(setting, bean); + + await this.service.saveSetting(userId, setting); + return this.ok({}); + } } diff --git a/packages/ui/certd-server/src/modules/mine/service/models.ts b/packages/ui/certd-server/src/modules/mine/service/models.ts index 2d31bf10..0d589aab 100644 --- a/packages/ui/certd-server/src/modules/mine/service/models.ts +++ b/packages/ui/certd-server/src/modules/mine/service/models.ts @@ -19,3 +19,10 @@ export class UserTwoFactorSetting extends BaseSettings { } + +export class UserSiteMonitorSetting extends BaseSettings { + static __title__ = "站点监控设置"; + static __key__ = "user.site.monitor"; + + notificationId?:number= 0; +} diff --git a/packages/ui/certd-server/src/modules/monitor/service/site-info-service.ts b/packages/ui/certd-server/src/modules/monitor/service/site-info-service.ts index 996c9d9c..29485ddb 100644 --- a/packages/ui/certd-server/src/modules/monitor/service/site-info-service.ts +++ b/packages/ui/certd-server/src/modules/monitor/service/site-info-service.ts @@ -10,6 +10,8 @@ import { PeerCertificate } from 'tls'; import { NotificationService } from '../../pipeline/service/notification-service.js'; import { isComm, isPlus } from '@certd/plus-core'; import { UserSuiteService } from '@certd/commercial-core'; +import { UserSettingsService } from "../../mine/service/user-settings-service.js"; +import { UserSiteMonitorSetting } from "../../mine/service/models.js"; @Provide() @Scope(ScopeEnum.Request, { allowDowngrade: true }) @@ -26,6 +28,10 @@ export class SiteInfoService extends BaseService { @Inject() userSuiteService: UserSuiteService; + @Inject() + userSettingsService: UserSettingsService; + + //@ts-ignore getRepository() { return this.repository; @@ -236,4 +242,12 @@ export class SiteInfoService extends BaseService { await utils.sleep(200); } } + + async getSetting(userId: number){ + return await this.userSettingsService.getSetting(userId, UserSiteMonitorSetting); + } + + async saveSetting(userId: number, bean: UserSiteMonitorSetting) { + await this.userSettingsService.saveSetting(userId, bean); + } }