diff --git a/app/.vitepress/src-new/views/home/HomePlayCommunity.vue b/app/.vitepress/src-new/views/home/HomePlayCommunity.vue index 7c8cf8bf2618fdf1ab4b3cfc5ce402646221078a..5e05e3898399f297329477d3af47460239007077 100644 --- a/app/.vitepress/src-new/views/home/HomePlayCommunity.vue +++ b/app/.vitepress/src-new/views/home/HomePlayCommunity.vue @@ -11,7 +11,7 @@ import { useCommon } from '@/stores/common'; import { playCommunity, vitalityConfig } from '~@/data/home/play-community'; -import { getStatistic } from '@/api/api-search'; +import { getStatistic, getDownloadTotal } from '@/api/api-search'; import logo from '~@/assets/category/home/play-community/logo.png'; import floorBg from '~@/assets/category/home/play-community/floor-bg.png'; @@ -37,10 +37,22 @@ const vitalityData = ref(); const { theme } = storeToRefs(useCommon()); -onMounted(() => { - getStatistic().then((res) => { - vitalityData.value = res.data; - }); +onMounted(async () => { + const [statisticRes, downloadRes] = await Promise.all([ + getStatistic(), + getDownloadTotal() + ]); + + const data = statisticRes?.data || {}; + const users = downloadRes?.data || {}; + + vitalityData.value = { + contributors: data.contributor_all, + repos: data.repo_all, + sigs: data.sig_all, + users: users.total_count, + businessosv: data.osv_all, + }; }); // ------------埋点------------ diff --git a/app/.vitepress/src/api/api-search.ts b/app/.vitepress/src/api/api-search.ts index a3962b9901a9ccc137162300b289c68d2bbc7dde..1876d409caa0501f2c987970f4a5601f68064fa8 100644 --- a/app/.vitepress/src/api/api-search.ts +++ b/app/.vitepress/src/api/api-search.ts @@ -12,6 +12,7 @@ import type { RelevantQueryT, StatisticT, SearchRecommendT, + OverviewDataT, } from '@/shared/@types/type-search'; import type { SearchBlogT } from '@/shared/@types/type-blog'; /** @@ -120,11 +121,21 @@ export function getPop(params: string): Promise<{ export function getStatistic(): Promise<{ code: number; - data: StatisticT; - msg: string; - update_at: string; + data: OverviewDataT; + message: string; + timestamp: number; +}> { + const url = '/api-magic/stat/overview/count?community=openeuler'; + return request.get(url).then((res: AxiosResponse) => res.data); +} + +export function getDownloadTotal(): Promise<{ + code: number; + data: { total_count: number }; + message: string; + timestamp: number; }> { - const url = '/api-dsapi/query/all?community=openEuler'; + const url = '/api-magic/community/download/total?community=openeuler'; return request.get(url).then((res: AxiosResponse) => res.data); } diff --git a/app/.vitepress/src/shared/@types/type-search.ts b/app/.vitepress/src/shared/@types/type-search.ts index 724a10b4cb68e247bb249d27aa850bc1a1d41ec3..45d3227ec0b59b89a72bf44b93b17330fa369c58 100644 --- a/app/.vitepress/src/shared/@types/type-search.ts +++ b/app/.vitepress/src/shared/@types/type-search.ts @@ -138,3 +138,15 @@ export interface ShowcaseDataT { title: string; // 标题 category: string; // 类别 } + +export interface OverviewDataT { + comment_all: number; // 评审comment数 + company_all: number; // 单位成员数 + contributor_all: number; // 贡献者数 + issue_all: number; // Issue数 + isv_all: number; // ISV数 + merged_pr_all: number; // 合并请求PR数 + osv_all: number; // 商用OSV数 + repo_all: number; // 代码仓库数 + sig_all: number; // SIG数 +} diff --git a/app/vite.config.js b/app/vite.config.js index db310557c1cce0f0c59158621c228cc7552c8967..d7c79aed9c843bae8eaf6bbfc9823b6124c22cc3 100644 --- a/app/vite.config.js +++ b/app/vite.config.js @@ -169,6 +169,11 @@ export default defineConfig({ changeOrigin: true, rewrite: (url) => url.replace(/^\/api-dsapi/, ''), }, + '/api-magic/': { + target: 'https://magicapi.osinfra.cn/', + changeOrigin: true, + rewrite: (url) => url.replace(/^\/api-magic/, ''), + }, '/api-mail/': { target: 'https://mailweb.openeuler.org/', changeOrigin: true,