mirror of
https://github.com/labring/FastGPT.git
synced 2025-07-24 22:03:54 +00:00
perf: admin
This commit is contained in:
@@ -188,16 +188,21 @@ export const useUserRoute = (app) => {
|
||||
$match: {
|
||||
status: 'SUCCESS',
|
||||
createTime: {
|
||||
$gte: new Date(Date.now() - day * 24 * 60 * 60 * 1000)
|
||||
$gte: new Date(Date.now() - day * 24 * 60 * 60 * 1000 + 8 * 60 * 60 * 1000) // 补时差
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
$addFields: {
|
||||
adjustedCreateTime: { $add: ['$createTime', 8 * 60 * 60 * 1000] }
|
||||
}
|
||||
},
|
||||
{
|
||||
$group: {
|
||||
_id: {
|
||||
year: { $year: '$createTime' },
|
||||
month: { $month: '$createTime' },
|
||||
day: { $dayOfMonth: '$createTime' }
|
||||
year: { $year: '$adjustedCreateTime' },
|
||||
month: { $month: '$adjustedCreateTime' },
|
||||
day: { $dayOfMonth: '$adjustedCreateTime' }
|
||||
},
|
||||
count: { $sum: '$price' }
|
||||
}
|
||||
@@ -216,7 +221,8 @@ export const useUserRoute = (app) => {
|
||||
startCount += item.count;
|
||||
return {
|
||||
date: item.date,
|
||||
count: startCount
|
||||
total: startCount,
|
||||
count: item.count
|
||||
};
|
||||
});
|
||||
|
||||
|
@@ -16,13 +16,20 @@ import dayjs from 'dayjs';
|
||||
const authStorageKey = 'tushan:auth';
|
||||
const PRICE_SCALE = 100000;
|
||||
|
||||
type fetchChatData = { count: number; date: string; increase?: number; increaseRate?: string };
|
||||
type fetchChatData = {
|
||||
count: number;
|
||||
total?: number;
|
||||
date: string;
|
||||
increase?: number;
|
||||
increaseRate?: string;
|
||||
};
|
||||
|
||||
type chatDataType = {
|
||||
date: string;
|
||||
userCount: number;
|
||||
userIncrease?: number;
|
||||
userIncreaseRate?: string;
|
||||
payTotal: number;
|
||||
payCount: number;
|
||||
};
|
||||
|
||||
@@ -84,7 +91,8 @@ export const Dashboard: React.FC = React.memo(() => {
|
||||
userCount: item.count,
|
||||
userIncrease: item.increase,
|
||||
userIncreaseRate: item.increaseRate,
|
||||
payCount: pay ? pay.count / PRICE_SCALE : 0
|
||||
payCount: pay ? pay.count / PRICE_SCALE : 0,
|
||||
payTotal: pay?.total ? pay.total / PRICE_SCALE : 0
|
||||
};
|
||||
});
|
||||
setChatData(data);
|
||||
@@ -208,10 +216,13 @@ const CustomTooltip = ({ active, payload }: any) => {
|
||||
用户总数: <strong>{data.userCount}</strong>
|
||||
</p>
|
||||
<p className="label">
|
||||
用户进入增长数量: <strong>{data.userIncrease}</strong>
|
||||
用户今日增长数量: <strong>{data.userIncrease}</strong>
|
||||
</p>
|
||||
<p className="label">
|
||||
60天累计支付: <strong>{data.payCount}</strong>元
|
||||
今日支付: <strong>{data.payCount}</strong>元
|
||||
</p>
|
||||
<p className="label">
|
||||
60天累计支付: <strong>{data.payTotal}</strong>元
|
||||
</p>
|
||||
</div>
|
||||
);
|
||||
@@ -233,7 +244,7 @@ const UserChart = ({ data }: { data: chatDataType[] }) => {
|
||||
<stop offset="5%" stopColor="#82ca9d" stopOpacity={0.8} />
|
||||
<stop offset="95%" stopColor="#82ca9d" stopOpacity={0} />
|
||||
</linearGradient>
|
||||
<linearGradient id="payCount" x1="0" y1="0" x2="0" y2="1">
|
||||
<linearGradient id="payTotal" x1="0" y1="0" x2="0" y2="1">
|
||||
<stop offset="5%" stopColor="#8884d8" stopOpacity={0.8} />
|
||||
<stop offset="95%" stopColor="#8884d8" stopOpacity={0} />
|
||||
</linearGradient>
|
||||
@@ -251,10 +262,10 @@ const UserChart = ({ data }: { data: chatDataType[] }) => {
|
||||
/>
|
||||
<Area
|
||||
type="monotone"
|
||||
dataKey="payCount"
|
||||
dataKey="payTotal"
|
||||
stroke="#8884d8"
|
||||
fillOpacity={1}
|
||||
fill="url(#payCount)"
|
||||
fill="url(#payTotal)"
|
||||
/>
|
||||
</AreaChart>
|
||||
</ResponsiveContainer>
|
||||
|
Reference in New Issue
Block a user