From 4414c982d14351df55f8ca5c32b5e914e1e756cb Mon Sep 17 00:00:00 2001 From: jau1 <95550641@163.com> Date: Wed, 13 Dec 2023 11:16:52 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A4=84=E7=90=86=E4=BD=99=E9=A2=9D=E9=97=AE?= =?UTF-8?q?=E9=A2=98OpenAi=E4=BD=99=E9=A2=9D=E6=98=BE=E7=A4=BA=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- model/channel.go | 19 ++++++++++++++++++- web/src/pages/Channel/EditChannel.js | 18 +++++++++++++++++- 2 files changed, 35 insertions(+), 2 deletions(-) diff --git a/model/channel.go b/model/channel.go index 7e7b42e6..26f23384 100644 --- a/model/channel.go +++ b/model/channel.go @@ -34,15 +34,28 @@ func GetAllChannels(startIdx int, num int, selectAll bool) ([]*Channel, error) { } else { err = DB.Order("id desc").Limit(num).Offset(startIdx).Omit("key").Find(&channels).Error } + for i, v := range channels { + if v.Type == common.ChannelTypeOpenAI { + channels[i].Balance = v.Balance - float64(v.UsedQuota)/500000.0 + if channels[i].Balance < 0 { + channels[i].Balance = 0 + } + } + } return channels, err } - func SearchChannels(keyword string) (channels []*Channel, err error) { keyCol := "`key`" if common.UsingPostgreSQL { keyCol = `"key"` } err = DB.Omit("key").Where("id = ? or name LIKE ? or "+keyCol+" = ?", common.String2Int(keyword), keyword+"%", keyword).Find(&channels).Error + for i, v := range channels { + channels[i].Balance = v.Balance - float64(v.UsedQuota)/500000.0 + if channels[i].Balance < 0 { + channels[i].Balance = 0 + } + } return channels, err } @@ -54,6 +67,10 @@ func GetChannelById(id int, selectAll bool) (*Channel, error) { } else { err = DB.Omit("key").First(&channel, "id = ?", id).Error } + channel.Balance = channel.Balance - float64(channel.UsedQuota)/500000.0 + if channel.Balance < 0 { + channel.Balance = 0 + } return &channel, err } diff --git a/web/src/pages/Channel/EditChannel.js b/web/src/pages/Channel/EditChannel.js index 364da69d..c92125c2 100644 --- a/web/src/pages/Channel/EditChannel.js +++ b/web/src/pages/Channel/EditChannel.js @@ -44,7 +44,8 @@ const EditChannel = () => { other: '', model_mapping: '', models: [], - groups: ['default'] + groups: ['default'], + balance: 0.0 }; const [batch, setBatch] = useState(false); const [inputs, setInputs] = useState(originInputs); @@ -194,6 +195,7 @@ const EditChannel = () => { let res; localInputs.models = localInputs.models.join(','); localInputs.group = localInputs.groups.join(','); + localInputs.balance = parseFloat(localInputs.balance); if (isEdit) { res = await API.put(`/api/channel/`, { ...localInputs, id: parseInt(channelId) }); } else { @@ -375,6 +377,20 @@ const EditChannel = () => { options={modelOptions} /> + { + !isEdit && ( +