chore: 优化

pull/361/head
xiaojunnuo 2025-03-10 15:45:24 +08:00
parent 330f91e15b
commit 0c8a84656a
15 changed files with 24683 additions and 67 deletions

2
.gitignore vendored
View File

@ -21,7 +21,7 @@ gen
/packages/ui/*/.idea /packages/ui/*/.idea
/packages/ui/*/node_modules /packages/ui/*/node_modules
/packages/*/node_modules /packages/*/node_modules
/pnpm-lock.yaml #/pnpm-lock.yaml
tsconfig.tsbuildinfo tsconfig.tsbuildinfo

View File

@ -28,7 +28,7 @@ packages:
### 安装依赖和初始化: ### 安装依赖和初始化:
```shell ```shell
# 安装pnpm如果提示npm命令不存在就需要先安装nodejs # 安装pnpm如果提示npm命令不存在就需要先安装nodejs
npm install -g pnpm@8.15.7 --registry=https://registry.npmmirror.com npm install -g pnpm--registry=https://registry.npmmirror.com
# 使用国内镜像源,如果有代理,就不需要 # 使用国内镜像源,如果有代理,就不需要
pnpm config set registry https://registry.npmmirror.com pnpm config set registry https://registry.npmmirror.com

View File

@ -1,5 +1,5 @@
# 源码部署 # 源码部署
不推荐 如果没有`git`和`nodejs`基础,则不推荐
## 一、源码安装 ## 一、源码安装
### 环境要求 ### 环境要求
@ -7,7 +7,7 @@
### 源码启动 ### 源码启动
```shell ```shell
# 克隆代码 # 克隆代码
git clone https://github.com/certd/certd git clone https://github.com/certd/certd --depth=1
# git checkout v1.x.x # 当v2主干分支代码无法正常启动时可以尝试此命令1.x.x换成最新版本号 # git checkout v1.x.x # 当v2主干分支代码无法正常启动时可以尝试此命令1.x.x换成最新版本号
cd certd cd certd
# 启动服务 # 启动服务

View File

@ -152,6 +152,10 @@ export class Executor {
this.runtime.disabled(runnable); this.runtime.disabled(runnable);
return resultType; return resultType;
} }
if (resultType == ResultType.error) {
this.runtime.error(runnable, new Error("执行失败"));
return resultType;
}
this.runtime.success(runnable); this.runtime.success(runnable);
return ResultType.success; return ResultType.success;
} catch (e: any) { } catch (e: any) {
@ -174,6 +178,9 @@ export class Executor {
const res: ResultType = await this.runWithHistory(stage, "stage", async () => { const res: ResultType = await this.runWithHistory(stage, "stage", async () => {
return await this.runStage(stage); return await this.runStage(stage);
}); });
if (res === ResultType.error) {
return ResultType.error;
}
resList.push(res); resList.push(res);
} }
return this.compositionResultType(resList); return this.compositionResultType(resList);
@ -200,10 +207,15 @@ export class Executor {
} }
resList = await Promise.all(pList); resList = await Promise.all(pList);
} else { } else {
//串行 //串行且报错继续
for (let i = 0; i < runnerList.length; i++) { for (let i = 0; i < runnerList.length; i++) {
const runner = runnerList[i]; const runner = runnerList[i];
try {
resList[i] = await runner(); resList[i] = await runner();
} catch (e:any) {
this.logger.error("任务执行异常,继续执行后续任务:", e.message);
resList[i] = ResultType.error;
}
} }
} }
return this.compositionResultType(resList); return this.compositionResultType(resList);

View File

@ -1,4 +1,5 @@
import { CreateRecordOptions, DnsProviderContext, DnsProviderDefine, IDnsProvider, RemoveRecordOptions } from "./api.js"; import { CreateRecordOptions, DnsProviderContext, DnsProviderDefine, IDnsProvider, RemoveRecordOptions } from "./api.js";
//@ts-ignore
import psl from "psl"; import psl from "psl";
import { dnsProviderRegistry } from "./registry.js"; import { dnsProviderRegistry } from "./registry.js";
import { Decorator } from "@certd/pipeline"; import { Decorator } from "@certd/pipeline";

View File

@ -218,5 +218,9 @@ export default {
return m.DescriptionsItem; return m.DescriptionsItem;
}) })
); );
app.component(
"AResult",
defineAsyncComponent(() => import("ant-design-vue/es/result"))
);
} }
}; };

View File

@ -3,7 +3,7 @@ import LayoutBasic from "/@/layout/layout-basic.vue";
import type { RouteRecordRaw } from "vue-router"; import type { RouteRecordRaw } from "vue-router";
import { mergeRouteModules } from "/@/vben/utils"; import { mergeRouteModules } from "/@/vben/utils";
const dynamicRouteFiles = import.meta.glob("./modules/**/*.ts", { const dynamicRouteFiles = import.meta.glob("./modules/**/*.ts*", {
eager: true eager: true
}); });

View File

@ -1,5 +1,6 @@
import { IFrameView } from "/@/vben/layouts"; import { IFrameView } from "/@/vben/layouts";
import { useSettingStore } from "/@/store/modules/settings"; import { useSettingStore } from "/@/store/modules/settings";
import { computed } from "vue";
export const aboutResource = [ export const aboutResource = [
{ {

View File

@ -1,23 +1,23 @@
<script setup lang="ts"> <script setup lang="ts">
import type { MenuRecordRaw } from '/@/vben/typings'; import type { MenuRecordRaw } from "/@/vben/typings";
import type { MenuProps } from './types'; import type { MenuProps } from "./types";
import { useForwardProps } from '/@/vben/composables'; import { useForwardProps } from "/@/vben/composables";
import { Menu } from './components'; import { Menu } from "./components";
import SubMenu from './sub-menu.vue'; import SubMenu from "./sub-menu.vue";
interface Props extends MenuProps { interface Props extends MenuProps {
menus: MenuRecordRaw[]; menus: MenuRecordRaw[];
} }
defineOptions({ defineOptions({
name: 'MenuView', name: "MenuView"
}); });
const props = withDefaults(defineProps<Props>(), { const props = withDefaults(defineProps<Props>(), {
collapse: false, collapse: false
// theme: 'dark', // theme: 'dark',
}); });

View File

@ -1,11 +1,12 @@
<script setup lang="ts"> <script setup lang="ts">
import type { MenuRecordRaw } from '/@/vben/typings'; import type { MenuRecordRaw } from "/@/vben/typings";
import { computed } from 'vue'; import { computed } from "vue";
import { MenuBadge, MenuItem, SubMenu as SubMenuComp } from './components'; import { MenuBadge, MenuItem, SubMenu as SubMenuComp } from "./components";
// eslint-disable-next-line import/no-self-import // eslint-disable-next-line import/no-self-import
import SubMenu from './sub-menu.vue'; import SubMenu from "./sub-menu.vue";
import { FsSlotRender } from "@fast-crud/fast-crud";
interface Props { interface Props {
/** /**
@ -15,7 +16,7 @@ interface Props {
} }
defineOptions({ defineOptions({
name: 'SubMenuUi', name: "SubMenuUi"
}); });
const props = withDefaults(defineProps<Props>(), {}); const props = withDefaults(defineProps<Props>(), {});
@ -25,9 +26,7 @@ const props = withDefaults(defineProps<Props>(), {});
*/ */
const hasChildren = computed(() => { const hasChildren = computed(() => {
const { menu } = props; const { menu } = props;
return ( return Reflect.has(menu, "children") && !!menu.children && menu.children.length > 0;
Reflect.has(menu, 'children') && !!menu.children && menu.children.length > 0
);
}); });
</script> </script>
@ -41,25 +40,18 @@ const hasChildren = computed(() => {
:badge-variants="menu.badgeVariants" :badge-variants="menu.badgeVariants"
:icon="menu.icon" :icon="menu.icon"
:path="menu.path" :path="menu.path"
@click="menu.meta?.onClick"
> >
<template #title> <template #title>
<span>{{ menu.name }}</span> <span>{{ menu.name }}</span>
</template> </template>
<template v-if="menu.meta?.slot" #default>
<fs-render :render-func="menu.meta.slot" />
</template>
</MenuItem> </MenuItem>
<SubMenuComp <SubMenuComp v-else :key="`${menu.path}_sub`" :active-icon="menu.activeIcon" :icon="menu.icon" :path="menu.path">
v-else
:key="`${menu.path}_sub`"
:active-icon="menu.activeIcon"
:icon="menu.icon"
:path="menu.path"
>
<template #content> <template #content>
<MenuBadge <MenuBadge :badge="menu.badge" :badge-type="menu.badgeType" :badge-variants="menu.badgeVariants" class="right-6" />
:badge="menu.badge"
:badge-type="menu.badgeType"
:badge-variants="menu.badgeVariants"
class="right-6"
/>
</template> </template>
<template #title> <template #title>
<span>{{ menu.name }}</span> <span>{{ menu.name }}</span>

View File

@ -23,6 +23,8 @@
v{{ version }} v{{ version }}
</a-tag> </a-tag>
</a-badge> </a-badge>
<a-divider type="vertical" />
<vip-button mode="nav" style="font-size: 12px"></vip-button>
</template> </template>
<template v-if="settingsStore.isComm"> <template v-if="settingsStore.isComm">
<a-divider type="vertical" /> <a-divider type="vertical" />

View File

@ -3,7 +3,6 @@ import { merge } from 'lodash-es';
import { CrudController } from '@certd/lib-server'; import { CrudController } from '@certd/lib-server';
import { PluginService } from '../../../modules/plugin/service/plugin-service.js'; import { PluginService } from '../../../modules/plugin/service/plugin-service.js';
import { CommPluginConfig, PluginConfigService } from '../../../modules/plugin/service/plugin-config-service.js'; import { CommPluginConfig, PluginConfigService } from '../../../modules/plugin/service/plugin-config-service.js';
/** /**
* *
*/ */

View File

@ -1,6 +1,5 @@
import { ALL, Body, Controller, Inject, Post, Provide, Query } from '@midwayjs/core'; import { ALL, Body, Controller, Inject, Post, Provide, Query } from '@midwayjs/core';
import { CrudController, SysPrivateSettings, SysPublicSettings, SysSettingsEntity, SysSettingsService } from '@certd/lib-server'; import { CrudController, SysPrivateSettings, SysPublicSettings, SysSettingsEntity, SysSettingsService } from '@certd/lib-server';
import * as _ from 'lodash-es';
import { merge } from 'lodash-es'; import { merge } from 'lodash-es';
import { PipelineService } from '../../../modules/pipeline/service/pipeline-service.js'; import { PipelineService } from '../../../modules/pipeline/service/pipeline-service.js';
import { UserSettingsService } from '../../../modules/mine/service/user-settings-service.js'; import { UserSettingsService } from '../../../modules/mine/service/user-settings-service.js';
@ -9,6 +8,7 @@ import { http, logger, simpleNanoId } from '@certd/basic';
import { CodeService } from '../../../modules/basic/service/code-service.js'; import { CodeService } from '../../../modules/basic/service/code-service.js';
import { SmsServiceFactory } from '../../../modules/basic/sms/factory.js'; import { SmsServiceFactory } from '../../../modules/basic/sms/factory.js';
/** /**
*/ */
@Provide() @Provide()
@ -99,8 +99,8 @@ export class SysSettingsController extends CrudController<SysSettingsService> {
async saveSysSettings(@Body(ALL) body: { public: SysPublicSettings; private: SysPrivateSettings }) { async saveSysSettings(@Body(ALL) body: { public: SysPublicSettings; private: SysPrivateSettings }) {
const publicSettings = await this.service.getPublicSettings(); const publicSettings = await this.service.getPublicSettings();
const privateSettings = await this.service.getPrivateSettings(); const privateSettings = await this.service.getPrivateSettings();
_.merge(publicSettings, body.public); merge(publicSettings, body.public);
_.merge(privateSettings, body.private); merge(privateSettings, body.private);
await this.service.savePublicSettings(publicSettings); await this.service.savePublicSettings(publicSettings);
await this.service.savePrivateSettings(privateSettings); await this.service.savePrivateSettings(privateSettings);
return this.ok({}); return this.ok({});

View File

@ -1,28 +0,0 @@
var axios = require('axios');
var FormData = require('form-data');
var data = new FormData();
data.append('login_name', 'Admin');
data.append('passwd', 'jM5eKu5uq!@3Ibyy');
data.append('locale_id', 'default');
var config = {
method: 'post',
url: 'https://vps-b6941c0f.vps.ovh.net:8443/login_up.php',
headers: {
'User-Agent': 'Apifox/1.0.0 (https://apifox.com)',
Accept: '*/*',
Host: 'vps-b6941c0f.vps.ovh.net:8443',
Connection: 'keep-alive',
Referer: 'https://vps-b6941c0f.vps.ovh.net:8443/login.php',
...data.getHeaders(),
},
data: data,
};
axios(config)
.then(function (response) {
console.log(JSON.stringify(response.data));
})
.catch(function (error) {
console.log(error);
});

24633
pnpm-lock.yaml Normal file

File diff suppressed because it is too large Load Diff