From 68e5ea1cadd8ba0f9b7c858a507eaf9a6390a4d7 Mon Sep 17 00:00:00 2001 From: xiaojunnuo Date: Thu, 10 Oct 2024 18:38:22 +0800 Subject: [PATCH] chore: agent --- .github/workflows/build-image.yml | 12 ++++++++++ .../src/system/settings/service/models.ts | 8 +++++++ packages/ui/agent/Dockerfile | 7 ++++++ .../certd-client/src/api/modules/api.basic.ts | 11 +++++++-- .../src/components/vip-button/index.vue | 24 +++++++++++++++---- .../src/store/modules/settings.ts | 24 +++++++++++++++++-- .../certd-server/src/config/config.default.ts | 5 ++++ .../basic/controller/settings-controller.ts | 13 +++++++++- 8 files changed, 95 insertions(+), 9 deletions(-) create mode 100644 packages/ui/agent/Dockerfile diff --git a/.github/workflows/build-image.yml b/.github/workflows/build-image.yml index 6af570c00..6e6583823 100644 --- a/.github/workflows/build-image.yml +++ b/.github/workflows/build-image.yml @@ -87,3 +87,15 @@ jobs: registry.cn-shenzhen.aliyuncs.com/handsfree/certd:${{steps.get_certd_version.outputs.result}}-armv7 greper/certd:armv7 greper/certd:${{steps.get_certd_version.outputs.result}}-armv7 + + - name: Build agent + uses: docker/build-push-action@v6 + with: + platforms: linux/amd64,linux/arm64 + push: true + context: ./packages/ui/agent/ + tags: | + registry.cn-shenzhen.aliyuncs.com/handsfree/certd-agent:latest + registry.cn-shenzhen.aliyuncs.com/handsfree/certd-agent:${{steps.get_certd_version.outputs.result}} + greper/certd-agent:latest + greper/certd-agent:${{steps.get_certd_version.outputs.result}} 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 0ade27387..6bfa1e85c 100644 --- a/packages/libs/lib-server/src/system/settings/service/models.ts +++ b/packages/libs/lib-server/src/system/settings/service/models.ts @@ -54,3 +54,11 @@ export class SysSiteInfo extends BaseSettings { logo?: string; loginLogo?: string; } + +export class SysSiteEnv { + agent?: { + enabled?: boolean; + contactText?: string; + contactLink?: string; + }; +} diff --git a/packages/ui/agent/Dockerfile b/packages/ui/agent/Dockerfile new file mode 100644 index 000000000..36f0151cb --- /dev/null +++ b/packages/ui/agent/Dockerfile @@ -0,0 +1,7 @@ +FROM greper/certd:latest +ENV certd_agent_enabled=true +CMD ["npm", "run","start"] + + + + diff --git a/packages/ui/certd-client/src/api/modules/api.basic.ts b/packages/ui/certd-client/src/api/modules/api.basic.ts index 741ddc305..71879335f 100644 --- a/packages/ui/certd-client/src/api/modules/api.basic.ts +++ b/packages/ui/certd-client/src/api/modules/api.basic.ts @@ -1,4 +1,5 @@ import { request } from "../service"; +import { SiteEnv, SiteInfo } from "/@/store/modules/settings"; export type SysPublicSetting = { registerEnabled: boolean; @@ -24,14 +25,20 @@ export async function getInstallInfo(): Promise { }); } -export async function getSiteInfo(): Promise { +export async function getSiteInfo(): Promise { return await request({ url: "/basic/settings/siteInfo", method: "get" }); } +export async function getSiteEnv(): Promise { + return await request({ + url: "/basic/settings/siteEnv", + method: "get" + }); +} -export async function bindUrl(data): Promise { +export async function bindUrl(data: any): Promise { return await request({ url: "/sys/plus/bindUrl", method: "post", diff --git a/packages/ui/certd-client/src/components/vip-button/index.vue b/packages/ui/certd-client/src/components/vip-button/index.vue index 5a1b05932..508c5946b 100644 --- a/packages/ui/certd-client/src/components/vip-button/index.vue +++ b/packages/ui/certd-client/src/components/vip-button/index.vue @@ -164,9 +164,27 @@ function openUpgrade() { okText: "激活", width: 900, content: () => { + let activationCodeGetWay: any = null; + if (settingStore.siteEnv.agent.enabled != null) { + const agent = settingStore.siteEnv.agent; + if (agent.enabled === false) { + activationCodeGetWay = ( + + 爱发电赞助“VIP会员”后获取 + + ); + } else { + activationCodeGetWay = ( + + {agent.contactText} + + ); + } + } const vipLabel = settingStore.vipLabel; const slots = []; for (const key in vipTypeDefine) { + // @ts-ignore const item = vipTypeDefine[key]; const vipBlockClass = `vip-block ${key === settingStore.plusInfo.vipType ? "current" : ""}`; slots.push( @@ -174,7 +192,7 @@ function openUpgrade() {

{item.title}

diff --git a/packages/ui/certd-client/src/store/modules/settings.ts b/packages/ui/certd-client/src/store/modules/settings.ts index 9fc565a6c..069d03544 100644 --- a/packages/ui/certd-client/src/store/modules/settings.ts +++ b/packages/ui/certd-client/src/store/modules/settings.ts @@ -35,8 +35,16 @@ export interface SettingState { }; siteInfo: SiteInfo; plusInfo?: PlusInfo; + siteEnv?: SiteEnv; } +export type SiteEnv = { + agent?: { + enabled?: boolean; + contactText?: string; + contactLink?: string; + }; +}; export type SiteInfo = { title: string; slogan: string; @@ -94,7 +102,14 @@ export const useSettingStore = defineStore({ accountServerBaseUrl: "", appKey: "" }, - siteInfo: defaultSiteInfo + siteInfo: defaultSiteInfo, + siteEnv: { + agent: { + enabled: undefined, + contactText: "", + contactLink: "" + } + } }), getters: { getThemeConfig(): any { @@ -132,6 +147,7 @@ export const useSettingStore = defineStore({ }, async loadSysSettings() { await this.loadSysPublicSettings(); + await this.loadSiteEnv(); await this.loadInstallInfo(); await this.loadPlusInfo(); await this.loadSiteInfo(); @@ -145,12 +161,16 @@ export const useSettingStore = defineStore({ const installInfo = await basicApi.getInstallInfo(); _.merge(this.installInfo, installInfo); }, + async loadSiteEnv() { + const siteEnv = await basicApi.getSiteEnv(); + _.merge(this.siteEnv, siteEnv); + }, async loadPlusInfo() { this.plusInfo = await basicApi.getPlusInfo(); }, async loadSiteInfo() { const isComm = this.isComm; - let siteInfo = {}; + let siteInfo: SiteInfo; if (isComm) { siteInfo = await basicApi.getSiteInfo(); if (siteInfo.logo) { diff --git a/packages/ui/certd-server/src/config/config.default.ts b/packages/ui/certd-server/src/config/config.default.ts index 092df4272..c096c0416 100644 --- a/packages/ui/certd-server/src/config/config.default.ts +++ b/packages/ui/certd-server/src/config/config.default.ts @@ -115,6 +115,11 @@ const development = { // 仅在匹配路径到 /api/upload 的时候去解析 body 中的文件信息 match: /\/api\/basic\/file\/upload/, }, + agent: { + enabled: false, + contactText: '', + contactLink: '', + }, } as MidwayConfig; mergeConfig(development, 'development'); diff --git a/packages/ui/certd-server/src/modules/basic/controller/settings-controller.ts b/packages/ui/certd-server/src/modules/basic/controller/settings-controller.ts index 26353d51f..54e8d086d 100644 --- a/packages/ui/certd-server/src/modules/basic/controller/settings-controller.ts +++ b/packages/ui/certd-server/src/modules/basic/controller/settings-controller.ts @@ -1,5 +1,5 @@ import { ALL, Body, Config, Controller, Get, Inject, Provide } from '@midwayjs/core'; -import { BaseController, Constants, SysInstallInfo, SysPublicSettings, SysSettingsService, SysSiteInfo } from '@certd/lib-server'; +import { BaseController, Constants, SysInstallInfo, SysPublicSettings, SysSettingsService, SysSiteEnv, SysSiteInfo } from '@certd/lib-server'; import { AppKey, getPlusInfo } from '@certd/pipeline'; /** @@ -12,6 +12,9 @@ export class BasicSettingsController extends BaseController { @Config('account.server.baseUrl') accountServerBaseUrl: any; + @Config('agent') + agentConfig: SysSiteEnv['agent']; + @Get('/public', { summary: Constants.per.guest }) public async getSysPublic() { const settings = await this.sysSettingsService.getSetting(SysPublicSettings); @@ -32,6 +35,14 @@ export class BasicSettingsController extends BaseController { return this.ok(settings); } + @Get('/siteEnv', { summary: Constants.per.guest }) + public async getSiteEnv() { + const env: SysSiteEnv = { + agent: this.agentConfig, + }; + return this.ok(env); + } + @Get('/plusInfo', { summary: Constants.per.guest }) async plusInfo(@Body(ALL) body: any) { const info = getPlusInfo();