From 9c854f727f588171e0f2b9b222e44f94897a6128 Mon Sep 17 00:00:00 2001 From: xiaojunnuo Date: Sun, 28 Sep 2025 11:29:57 +0800 Subject: [PATCH] chore: --- .github/workflows/build-image.yml | 2 +- packages/core/basic/src/utils/index.ts | 5 +- .../src/user/addon/service/addon-service.ts | 120 ++++++------------ .../plugin-cert/src/dns-provider/index.ts | 1 + .../modules/basic/service/captcha-service.ts | 9 +- .../pipeline/service/addon-getter-service.ts | 61 +++++++++ .../service/getter/addon-service-getter.ts | 0 7 files changed, 108 insertions(+), 90 deletions(-) create mode 100644 packages/ui/certd-server/src/modules/pipeline/service/addon-getter-service.ts create mode 100644 packages/ui/certd-server/src/modules/pipeline/service/getter/addon-service-getter.ts diff --git a/.github/workflows/build-image.yml b/.github/workflows/build-image.yml index 45ab6ad7..b3853e25 100644 --- a/.github/workflows/build-image.yml +++ b/.github/workflows/build-image.yml @@ -3,7 +3,7 @@ on: push: branches: ['v2-dev'] paths: - - "trigger/build.trigger" + - "trigger/build1.trigger" # schedule: # - # 国际时间 19:17 执行,北京时间3:17 ↙↙↙ 改成你想要每天自动执行的时间 diff --git a/packages/core/basic/src/utils/index.ts b/packages/core/basic/src/utils/index.ts index e3ea06d6..048e29d2 100644 --- a/packages/core/basic/src/utils/index.ts +++ b/packages/core/basic/src/utils/index.ts @@ -22,12 +22,14 @@ import { sp } from "./util.sp.js"; import { hashUtils } from "./util.hash.js"; import { promises } from "./util.promise.js"; import { fileUtils } from "./util.file.js"; -import * as _ from "lodash-es"; import { cache } from "./util.cache.js"; import dayjs from "dayjs"; import { domainUtils } from "./util.domain.js"; +export * from "./util.domain.js"; import { optionsUtils } from "./util.options.js"; +export * from "./util.options.js"; import { amountUtils } from "./util.amount.js"; +export * from "./util.amount.js"; import { nanoid } from "nanoid"; import * as id from "./util.id.js"; import { locker } from "./util.lock.js"; @@ -43,7 +45,6 @@ export const utils = { hash: hashUtils, promises, file: fileUtils, - _, mergeUtils, cache, nanoid, diff --git a/packages/libs/lib-server/src/user/addon/service/addon-service.ts b/packages/libs/lib-server/src/user/addon/service/addon-service.ts index 1fe64812..fc8dc38a 100644 --- a/packages/libs/lib-server/src/user/addon/service/addon-service.ts +++ b/packages/libs/lib-server/src/user/addon/service/addon-service.ts @@ -1,24 +1,19 @@ -import { Inject, Provide, Scope, ScopeEnum } from "@midwayjs/core"; +import { Provide, Scope, ScopeEnum } from "@midwayjs/core"; import { InjectEntityModel } from "@midwayjs/typeorm"; import { In, Repository } from "typeorm"; -import { AddonDefine, BaseService, PageReq, PermissionException, ValidateException } from "../../../index.js"; -import { addonRegistry, newAddon } from "../api/index.js"; +import { AddonDefine, BaseService, PageReq, ValidateException } from "../../../index.js"; +import { addonRegistry } from "../api/index.js"; import { AddonEntity } from "../entity/addon.js"; -import { http, logger, utils } from "@certd/basic"; -import { TaskServiceBuilder } from "@certd/ui-server"; /** * Addon */ @Provide() -@Scope(ScopeEnum.Request, {allowDowngrade: true}) +@Scope(ScopeEnum.Request, { allowDowngrade: true }) export class AddonService extends BaseService { @InjectEntityModel(AddonEntity) repository: Repository; - @Inject() - private taskServiceBuilder: TaskServiceBuilder; - //@ts-ignore getRepository() { return this.repository; @@ -34,21 +29,21 @@ export class AddonService extends BaseService { async add(param) { let oldEntity = null; - if (param._copyFrom){ + if (param._copyFrom) { oldEntity = await this.info(param._copyFrom); if (oldEntity == null) { - throw new ValidateException('该Addon配置不存在,请确认是否已被删除'); + throw new ValidateException("该Addon配置不存在,请确认是否已被删除"); } - if (oldEntity.userId !== param.userId) { - throw new ValidateException('您无权查看该Addon配置'); + if (oldEntity.userId !== param.userId) { + throw new ValidateException("您无权查看该Addon配置"); } } - if (!param.userId){ - param.isSystem = true - }else{ - param.isSystem = false + if (!param.userId) { + param.isSystem = true; + } else { + param.isSystem = false; } - delete param._copyFrom + delete param._copyFrom; return await super.add(param); } @@ -60,7 +55,7 @@ export class AddonService extends BaseService { async update(param) { const oldEntity = await this.info(param.id); if (oldEntity == null) { - throw new ValidateException('该Addon配置不存在,请确认是否已被删除'); + throw new ValidateException("该Addon配置不存在,请确认是否已被删除"); } return await super.update(param); } @@ -68,64 +63,24 @@ export class AddonService extends BaseService { async getSimpleInfo(id: number) { const entity = await this.info(id); if (entity == null) { - throw new ValidateException('该Addon配置不存在,请确认是否已被删除'); + throw new ValidateException("该Addon配置不存在,请确认是否已被删除"); } return { id: entity.id, name: entity.name, userId: entity.userId, addonType: entity.addonType, - type: entity.type, + type: entity.type }; } - async getAddonById(id: any, checkUserId: boolean, userId?: number): Promise { - const serviceGetter = this.taskServiceBuilder.create({userId:userId??0}) - const ctx = { - http: http, - logger: logger, - utils: utils, - serviceGetter - }; - - if (!id){ - //使用图片验证码 - return await newAddon("captcha", "image", {},ctx); - } - const entity = await this.info(id); - if (entity == null) { - //使用图片验证码 - return await newAddon("captcha", "image", {},ctx); - } - if (checkUserId) { - if (userId == null) { - throw new ValidateException('userId不能为空'); - } - if (userId !== entity.userId) { - throw new PermissionException('您对该Addon无访问权限'); - } - } - - const setting = JSON.parse(entity.setting ??"{}") - const input = { - id: entity.id, - ...setting, - }; - - return await newAddon(entity.addonType, entity.type, input,ctx); - } - - async getById(id: any, userId: number): Promise { - return await this.getAddonById(id, true, userId); - } - getDefineList(addonType: string) { return addonRegistry.getDefineList(); } - getDefineByType(type: string,prefix?: string) { - return addonRegistry.getDefine(type,prefix) as AddonDefine; + getDefineByType(type: string, prefix?: string) { + return addonRegistry.getDefine(type, prefix) as AddonDefine; } @@ -139,31 +94,30 @@ export class AddonService extends BaseService { return await this.repository.find({ where: { id: In(ids), - userId, + userId }, select: { id: true, name: true, addonType: true, type: true, - userId:true, - isSystem: true, - }, + userId: true, + isSystem: true + } }); } - - async getDefault(userId: number,addonType: string): Promise { + async getDefault(userId: number, addonType: string): Promise { const res = await this.repository.findOne({ where: { userId, addonType }, order: { - isDefault: 'DESC', - }, + isDefault: "DESC" + } }); if (!res) { return null; @@ -179,16 +133,16 @@ export class AddonService extends BaseService { type: res.type, name: res.name, userId: res.userId, - setting, + setting }; } - async setDefault(id: number, userId: number,addonType:string) { + async setDefault(id: number, userId: number, addonType: string) { if (!id) { - throw new ValidateException('id不能为空'); + throw new ValidateException("id不能为空"); } if (!userId) { - throw new ValidateException('userId不能为空'); + throw new ValidateException("userId不能为空"); } await this.repository.update( { @@ -196,7 +150,7 @@ export class AddonService extends BaseService { addonType }, { - isDefault: false, + isDefault: false } ); await this.repository.update( @@ -206,22 +160,22 @@ export class AddonService extends BaseService { addonType }, { - isDefault: true, + isDefault: true } ); } - async getOrCreateDefault(opts:{addonType:string,type:string, inputs: any, userId: any}) { - const {addonType,type,inputs,userId} = opts; + async getOrCreateDefault(opts: { addonType: string, type: string, inputs: any, userId: any }) { + const { addonType, type, inputs, userId } = opts; - const addonDefine = this.getDefineByType( type,addonType) + const addonDefine = this.getDefineByType(type, addonType); - const defaultConfig = await this.getDefault(userId,addonType); + const defaultConfig = await this.getDefault(userId, addonType); if (defaultConfig) { return defaultConfig; } const setting = { - ...inputs, + ...inputs }; const res = await this.repository.save({ userId, @@ -229,7 +183,7 @@ export class AddonService extends BaseService { type: type, name: addonDefine.title, setting: JSON.stringify(setting), - isDefault: true, + isDefault: true }); return this.buildAddonInstanceConfig(res); } diff --git a/packages/plugins/plugin-cert/src/dns-provider/index.ts b/packages/plugins/plugin-cert/src/dns-provider/index.ts index 709cc543..bd97f393 100644 --- a/packages/plugins/plugin-cert/src/dns-provider/index.ts +++ b/packages/plugins/plugin-cert/src/dns-provider/index.ts @@ -2,3 +2,4 @@ export * from "./api.js"; export * from "./registry.js"; export * from "./decorator.js"; export * from "./base.js"; +export * from "./domain-parser.js"; diff --git a/packages/ui/certd-server/src/modules/basic/service/captcha-service.ts b/packages/ui/certd-server/src/modules/basic/service/captcha-service.ts index e5b6b951..aaeb2895 100644 --- a/packages/ui/certd-server/src/modules/basic/service/captcha-service.ts +++ b/packages/ui/certd-server/src/modules/basic/service/captcha-service.ts @@ -1,7 +1,8 @@ import { Inject, Provide, Scope, ScopeEnum } from "@midwayjs/core"; -import { AddonService, SysSettingsService } from "@certd/lib-server"; +import { SysSettingsService } from "@certd/lib-server"; import { logger } from "@certd/basic"; import { ICaptchaAddon } from "../../../plugins/plugin-captcha/api.js"; +import { AddonGetterService } from "../../pipeline/service/addon-getter-service.js"; @Provide() @Scope(ScopeEnum.Request, { allowDowngrade: true }) @@ -9,7 +10,7 @@ export class CaptchaService { @Inject() sysSettingsService: SysSettingsService; @Inject() - addonService: AddonService; + addonGetterService: AddonGetterService; async getCaptcha(captchaAddonId?:number){ @@ -17,7 +18,7 @@ export class CaptchaService { const settings = await this.sysSettingsService.getPublicSettings() captchaAddonId = settings.captchaAddonId ?? 0 } - const addon:ICaptchaAddon = await this.addonService.getAddonById(captchaAddonId,true,0) + const addon:ICaptchaAddon = await this.addonGetterService.getAddonById(captchaAddonId,true,0) if (!addon) { throw new Error('验证码插件还未配置') } @@ -30,7 +31,7 @@ export class CaptchaService { const settings = await this.sysSettingsService.getPublicSettings() opts.captchaAddonId = settings.captchaAddonId ?? 0 } - const addon = await this.addonService.getById(opts.captchaAddonId,0) + const addon = await this.addonGetterService.getById(opts.captchaAddonId,0) if (!addon) { if (opts.must) { throw new Error('请先配置验证码插件'); diff --git a/packages/ui/certd-server/src/modules/pipeline/service/addon-getter-service.ts b/packages/ui/certd-server/src/modules/pipeline/service/addon-getter-service.ts new file mode 100644 index 00000000..14f2c25c --- /dev/null +++ b/packages/ui/certd-server/src/modules/pipeline/service/addon-getter-service.ts @@ -0,0 +1,61 @@ +import { Inject, Provide, Scope, ScopeEnum } from "@midwayjs/core"; +import { http, logger, utils } from "@certd/basic"; +import { TaskServiceBuilder } from "./getter/task-service-getter.js"; +import { AddonService, newAddon, PermissionException, ValidateException } from "@certd/lib-server"; + +/** + * Addon + */ +@Provide() +@Scope(ScopeEnum.Request, { allowDowngrade: true }) +export class AddonGetterService { + + @Inject() + taskServiceBuilder: TaskServiceBuilder; + @Inject() + addonService: AddonService; + + + async getAddonById(id: any, checkUserId: boolean, userId?: number): Promise { + const serviceGetter = this.taskServiceBuilder.create({ + userId + }); + const ctx = { + http, + logger, + utils, + serviceGetter + } + + if (!id) { + //使用图片验证码 + return await newAddon("captcha", "image", {}, ctx); + } + const entity = await this.addonService.info(id); + if (entity == null) { + //使用图片验证码 + return await newAddon("captcha", "image", {}, ctx); + } + if (checkUserId) { + if (userId == null) { + throw new ValidateException("userId不能为空"); + } + if (userId !== entity.userId) { + throw new PermissionException("您对该Addon无访问权限"); + } + } + + const setting = JSON.parse(entity.setting ?? "{}"); + const input = { + id: entity.id, + ...setting + }; + + return await newAddon(entity.addonType, entity.type, input, ctx); + } + + async getById(id: any, userId: number): Promise { + return await this.getAddonById(id, true, userId); + } + +} diff --git a/packages/ui/certd-server/src/modules/pipeline/service/getter/addon-service-getter.ts b/packages/ui/certd-server/src/modules/pipeline/service/getter/addon-service-getter.ts new file mode 100644 index 00000000..e69de29b