Merge branch 'v2-dev' into v2-plugin

This commit is contained in:
xiaojunnuo
2025-04-10 11:48:45 +08:00
12 changed files with 102 additions and 49 deletions
+1
View File
@@ -64,6 +64,7 @@ export type PluginDefine = Registrable & {
};
};
needPlus?: boolean;
showRunStrategy?: boolean;
};
export type ITaskPlugin = {
+11 -1
View File
@@ -48,11 +48,21 @@ export function IsTaskPlugin(define: PluginDefine): ClassDecorator {
inputMap[item[0]] = item[1];
});
merge(define, { input: inputMap, autowire: autowires, output: outputs });
const defaultConfig = {
showRunStrategy: false,
default: {
strategy: {
runStrategy: 1, // 0:正常执行,1:成功后跳过
},
},
};
define = merge(defaultConfig, define, { input: inputMap, autowire: autowires, output: outputs });
Reflect.defineMetadata(PLUGIN_CLASS_KEY, define, target);
target.define = define;
pluginRegistry.register(define.name, {
define,
target,
@@ -9,9 +9,9 @@ export type { CertInfo };
@IsTaskPlugin({
name: "CertApplyUpload",
icon: "ph:certificate",
title: "证书手动上传",
title: "商用证书托管",
group: pluginGroups.cert.key,
desc: "在证书仓库手动上传后触发部署证书",
desc: "手动上传自定义证书后,自动部署(每次证书有更新,都需要手动上传一次)",
default: {
strategy: {
runStrategy: RunStrategy.AlwaysRun,
@@ -162,8 +162,9 @@ export default function ({ crudExpose, context: { certdFormRef, groupDictRef, se
},
uploadCert: {
order: 2,
text: "上传证书部署",
text: "商用证书托管",
type: "primary",
title: "手动上传自有证书,执行自动部署(证书有更新时,都需要手动上传一次)",
icon: "ion:cloud-upload-outline",
click() {
openUploadCreateDialog();
@@ -98,7 +98,7 @@
<fs-form-item v-if="item.show !== false" v-model="currentStep.input[key]" :item="item" :get-context-fn="getScopeFunc" />
</template>
<fs-form-item v-model="currentStep.strategy.runStrategy" :item="runStrategyProps" :get-context-fn="getScopeFunc" />
<fs-form-item v-if="currentPlugin.showRunStrategy" v-model="currentStep.strategy.runStrategy" :item="runStrategyProps" :get-context-fn="getScopeFunc" />
</a-form>
</div>
<template #footer>
@@ -396,9 +396,9 @@ export default {
render: () => {
return (
<div>
<div class="color-green">一般保持默认即可</div>
<div>正常运行每次都运行证书任务需要每次都运行</div>
<div>成功后跳过该任务成功一次之后跳过不重复执行证书变化之后才会再次运行</div>
<div class="green">保持默认即可</div>
</div>
);
},
+1 -1
View File
@@ -6,7 +6,7 @@ typeorm:
default:
type: mysql # mariadb
host: localhost
port: 3306
port: 3309
username: root
password: root
database: certd
+1 -1
View File
@@ -93,7 +93,7 @@
"mitt": "^3.0.1",
"mwts": "^1.3.0",
"mwtsc": "^1.15.1",
"mysql": "^2.18.1",
"mysql2": "^3.14.0",
"nanoid": "^5.0.7",
"node-forge": "^1.3.1",
"nodemailer": "^6.9.16",
@@ -43,7 +43,7 @@ export class RoleService extends BaseService<RoleEntity> {
async getByUserIds(ids: any) {
return await this.userRoleService.find({
where: {
userId: In(ids),
userId: In<number>(ids) as any,
},
});
}
@@ -131,6 +131,7 @@ export class RoleService extends BaseService<RoleEntity> {
async delete(id: any) {
const idArr = this.resolveIdArr(id);
//@ts-ignore
const urs = await this.userRoleService.find({ where: { roleId: In(idArr) } });
if (urs.length > 0) {
throw new Error('该角色已被用户使用,无法删除');
@@ -15,6 +15,7 @@ const defaultFilePrefix = 'db-backup';
icon: 'lucide:database-backup',
desc: '仅支持备份SQLite数据库',
group: pluginGroups.other.key,
showRunStrategy: true,
default: {
strategy: {
runStrategy: RunStrategy.AlwaysRun,
@@ -12,6 +12,7 @@ export type CustomScriptContext = {
icon: 'ri:javascript-line',
desc: '【仅管理员】运行自定义js脚本执行',
group: pluginGroups.other.key,
showRunStrategy:true,
default: {
strategy: {
runStrategy: RunStrategy.SkipWhenSucceed,
@@ -6,6 +6,7 @@ import { AbstractTaskPlugin, IsTaskPlugin, pluginGroups, RunStrategy, TaskInput
icon: 'ri:rest-time-line',
desc: '等待一段时间',
group: pluginGroups.other.key,
showRunStrategy:true,
default: {
strategy: {
runStrategy: RunStrategy.SkipWhenSucceed,