From 8ebf95a222a900d1707716c7b1f3b39f8a6d8f94 Mon Sep 17 00:00:00 2001 From: xiaojunnuo Date: Tue, 24 Dec 2024 10:39:54 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E5=90=8C=E4=B8=80=E6=97=B6=E9=97=B4?= =?UTF-8?q?=E5=8F=AA=E5=85=81=E8=AE=B8=E4=B8=80=E4=B8=AA=E5=A5=97=E9=A4=90?= =?UTF-8?q?=E7=94=9F=E6=95=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/core/pipeline/src/core/executor.ts | 1 + .../src/views/certd/suite/buy.vue | 18 ++- .../src/views/certd/suite/mine/api.ts | 111 ++++++++++-------- .../src/views/certd/suite/mine/crud.tsx | 12 +- .../src/views/certd/suite/mine/index.vue | 17 ++- .../framework/home/dashboard/suite-card.vue | 26 +--- .../src/views/sys/suite/product/crud.tsx | 2 +- .../db/migration/v10018__suite.sql | 1 + .../certd-server/src/config/config.default.ts | 2 +- .../pipeline/service/pipeline-service.ts | 16 ++- 10 files changed, 120 insertions(+), 86 deletions(-) diff --git a/packages/core/pipeline/src/core/executor.ts b/packages/core/pipeline/src/core/executor.ts index 09878cae..d6b6c42f 100644 --- a/packages/core/pipeline/src/core/executor.ts +++ b/packages/core/pipeline/src/core/executor.ts @@ -102,6 +102,7 @@ export class Executor { await this.notification("success"); } } + return result; } catch (e: any) { await this.notification("error", e); this.logger.error("pipeline 执行失败", e); diff --git a/packages/ui/certd-client/src/views/certd/suite/buy.vue b/packages/ui/certd-client/src/views/certd/suite/buy.vue index 1188c790..b66b6862 100644 --- a/packages/ui/certd-client/src/views/certd/suite/buy.vue +++ b/packages/ui/certd-client/src/views/certd/suite/buy.vue @@ -8,14 +8,21 @@
-
套餐说明:多个套餐内的数量可以叠加
+
说明:① 同一时间只有最新购买的一个套餐生效;② 可以购买多个加量包,加量包立即生效;③ 套餐和加量包内的数量可以叠加
+

套餐

- + + + + +

加量包

+ + @@ -31,10 +38,13 @@ import * as api from "./api"; import ProductInfo from "/@/views/certd/suite/product-info.vue"; import OrderModal from "/@/views/certd/suite/order-modal.vue"; -const products = ref([]); +const suites = ref([]); +const addons = ref([]); async function loadProducts() { - products.value = await api.ProductList(); + const list = await api.ProductList(); + suites.value = list.filter((x: any) => x.type === "suite"); + addons.value = list.filter((x: any) => x.type === "addone"); } loadProducts(); diff --git a/packages/ui/certd-client/src/views/certd/suite/mine/api.ts b/packages/ui/certd-client/src/views/certd/suite/mine/api.ts index bb592f14..16afd46a 100644 --- a/packages/ui/certd-client/src/views/certd/suite/mine/api.ts +++ b/packages/ui/certd-client/src/views/certd/suite/mine/api.ts @@ -1,54 +1,71 @@ import { request } from "/src/api/service"; -export function createApi() { - const apiPrefix = "/mine/suite"; - return { - async GetList(query: any) { - return await request({ - url: apiPrefix + "/page", - method: "post", - data: query - }); - }, +const apiPrefix = "/mine/suite"; - async AddObj(obj: any) { - return await request({ - url: apiPrefix + "/add", - method: "post", - data: obj - }); - }, +export type SuiteValue = { + max: number; + used: number; +}; +export type SuiteDetail = { + enabled?: boolean; + suites?: any[]; + expiresTime?: number; + pipelineCount?: SuiteValue; + domainCount?: SuiteValue; + deployCount?: SuiteValue; + monitorCount?: SuiteValue; +}; - async UpdateObj(obj: any) { - return await request({ - url: apiPrefix + "/update", - method: "post", - data: obj - }); - }, +export default { + async GetList(query: any) { + return await request({ + url: apiPrefix + "/page", + method: "post", + data: query + }); + }, - async DelObj(id: number) { - return await request({ - url: apiPrefix + "/delete", - method: "post", - params: { id } - }); - }, + async AddObj(obj: any) { + return await request({ + url: apiPrefix + "/add", + method: "post", + data: obj + }); + }, - async GetObj(id: number) { - return await request({ - url: apiPrefix + "/info", - method: "post", - params: { id } - }); - }, - async ListAll() { - return await request({ - url: apiPrefix + "/all", - method: "post" - }); - } - }; -} + async UpdateObj(obj: any) { + return await request({ + url: apiPrefix + "/update", + method: "post", + data: obj + }); + }, -export const pipelineGroupApi = createApi(); + async DelObj(id: number) { + return await request({ + url: apiPrefix + "/delete", + method: "post", + params: { id } + }); + }, + + async GetObj(id: number) { + return await request({ + url: apiPrefix + "/info", + method: "post", + params: { id } + }); + }, + async ListAll() { + return await request({ + url: apiPrefix + "/all", + method: "post" + }); + }, + async SuiteDetailGet() { + return await request({ + url: `${apiPrefix}/detail`, + method: "post" + }); + } +}; diff --git a/packages/ui/certd-client/src/views/certd/suite/mine/crud.tsx b/packages/ui/certd-client/src/views/certd/suite/mine/crud.tsx index 1d4e1951..5c9ed7cf 100644 --- a/packages/ui/certd-client/src/views/certd/suite/mine/crud.tsx +++ b/packages/ui/certd-client/src/views/certd/suite/mine/crud.tsx @@ -1,5 +1,5 @@ import { AddReq, CreateCrudOptionsProps, CreateCrudOptionsRet, DelReq, dict, EditReq, UserPageQuery, UserPageRes } from "@fast-crud/fast-crud"; -import { pipelineGroupApi } from "./api"; +import api from "./api"; import { useRouter } from "vue-router"; import SuiteValueEdit from "/@/views/sys/suite/product/suite-value-edit.vue"; import SuiteValue from "/@/views/sys/suite/product/suite-value.vue"; @@ -7,7 +7,6 @@ import DurationValue from "/@/views/sys/suite/product/duration-value.vue"; import dayjs from "dayjs"; export default function ({ crudExpose, context }: CreateCrudOptionsProps): CreateCrudOptionsRet { - const api = pipelineGroupApi; const pageRequest = async (query: UserPageQuery): Promise => { return await api.GetList(query); }; @@ -274,6 +273,15 @@ export default function ({ crudExpose, context }: CreateCrudOptionsProps): Creat if (now < row.activeTime) { return 待生效; } + + //是否是当前套餐 + const suites = context.detail.value.suites; + if (suites && suites.length > 0) { + const suite = suites[0]; + if (suite.productType === "suite" && suite.id === row.id) { + return 当前套餐; + } + } // 是否在激活时间和过期时间之间 if (now > row.activeTime && (row.expiresTime == -1 || now < row.expiresTime)) { return 生效中; diff --git a/packages/ui/certd-client/src/views/certd/suite/mine/index.vue b/packages/ui/certd-client/src/views/certd/suite/mine/index.vue index af7f2093..e8418658 100644 --- a/packages/ui/certd-client/src/views/certd/suite/mine/index.vue +++ b/packages/ui/certd-client/src/views/certd/suite/mine/index.vue @@ -11,18 +11,25 @@