From 95e84f2bb1f8439f27c4d0432609b57e26ef5d73 Mon Sep 17 00:00:00 2001 From: CaIon <1808837298@qq.com> Date: Mon, 8 Jan 2024 18:49:10 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E4=BC=98=E5=8C=96=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E7=9C=8B=E6=9D=BF=E6=80=A7=E8=83=BD=E5=92=8C=E6=98=BE=E7=A4=BA?= =?UTF-8?q?=E6=95=88=E6=9E=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- controller/usedata.go | 3 ++- model/usedata.go | 9 ++++++-- web/src/pages/Detail/index.js | 39 +++++++++++++++++++++++------------ 3 files changed, 35 insertions(+), 16 deletions(-) diff --git a/controller/usedata.go b/controller/usedata.go index b936532..4143c77 100644 --- a/controller/usedata.go +++ b/controller/usedata.go @@ -10,7 +10,8 @@ import ( func GetAllQuotaDates(c *gin.Context) { startTimestamp, _ := strconv.ParseInt(c.Query("start_timestamp"), 10, 64) endTimestamp, _ := strconv.ParseInt(c.Query("end_timestamp"), 10, 64) - dates, err := model.GetAllQuotaDates(startTimestamp, endTimestamp) + username := c.Query("username") + dates, err := model.GetAllQuotaDates(startTimestamp, endTimestamp, username) if err != nil { c.JSON(http.StatusOK, gin.H{ "success": false, diff --git a/model/usedata.go b/model/usedata.go index fb6acf3..f6cb945 100644 --- a/model/usedata.go +++ b/model/usedata.go @@ -102,9 +102,14 @@ func GetQuotaDataByUserId(userId int, startTime int64, endTime int64) (quotaData return quotaDatas, err } -func GetAllQuotaDates(startTime int64, endTime int64) (quotaData []*QuotaData, err error) { +func GetAllQuotaDates(startTime int64, endTime int64, username string) (quotaData []*QuotaData, err error) { + if username != "" { + return GetQuotaDataByUsername(username, startTime, endTime) + } var quotaDatas []*QuotaData // 从quota_data表中查询数据 - err = DB.Table("quota_data").Where("created_at >= ? and created_at <= ?", startTime, endTime).Find("aDatas).Error + // only select model_name, sum(count) as count, sum(quota) as quota, model_name, created_at from quota_data group by model_name, created_at; + //err = DB.Table("quota_data").Where("created_at >= ? and created_at <= ?", startTime, endTime).Find("aDatas).Error + err = DB.Table("quota_data").Select("model_name, sum(count) as count, sum(quota) as quota, created_at").Where("created_at >= ? and created_at <= ?", startTime, endTime).Group("model_name, created_at").Find("aDatas).Error return quotaDatas, err } diff --git a/web/src/pages/Detail/index.js b/web/src/pages/Detail/index.js index 7f582da..331056c 100644 --- a/web/src/pages/Detail/index.js +++ b/web/src/pages/Detail/index.js @@ -72,9 +72,18 @@ const Detail = (props) => { content: [ { key: datum => datum['Model'], - value: datum => renderQuotaNumberWithDigit(datum['Usage'], 4) + value: datum => datum['Usage'] } - ] + ], + updateContent: array => { + // sort by value + array.sort((a, b) => b.value - a.value); + // add $ + for (let i = 0; i < array.length; i++) { + array[i].value = renderQuotaNumberWithDigit(array[i].value, 4); + } + return array; + } } } }; @@ -86,7 +95,6 @@ const Detail = (props) => { id: 'id0', values: [ { type: 'null', value: '0' }, - { type: 'null', value: '0' }, ] } ], @@ -151,7 +159,12 @@ const Detail = (props) => { if (success) { setQuotaData(data); if (data.length === 0) { - return; + data.push({ + 'count': 0, + 'model_name': '无数据', + 'quota': 0, + 'created_at': now.getTime() / 1000 + }) } updateChart(lineChart, pieChart, data); } else { @@ -169,13 +182,13 @@ const Detail = (props) => { if (!modelDataChart) { lineChart = new VChart(spec_line, {dom: 'model_data'}); setModelDataChart(lineChart); - await lineChart.renderAsync(); + lineChart.renderAsync(); } let pieChart = modelDataPieChart if (!modelDataPieChart) { pieChart = new VChart(spec_pie, {dom: 'model_pie'}); setModelDataPieChart(pieChart); - await pieChart.renderAsync(); + pieChart.renderAsync(); } console.log('init vchart'); await loadQuotaData(lineChart, pieChart) @@ -248,13 +261,13 @@ const Detail = (props) => { value={end_timestamp} type='dateTime' name='end_timestamp' onChange={value => handleInputChange(value, 'end_timestamp')}/> - {/*{*/} - {/* isAdminUser && <>*/} - {/* handleInputChange(value, 'username')}/>*/} - {/* */} - {/*}*/} + { + isAdminUser && <> + handleInputChange(value, 'username')}/> + + }