Compare commits
4 Commits
v0.3.0-alp
...
v0.3.0-alp
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a9ea1d9d10 | ||
|
|
ea8e7c517b | ||
|
|
d1e9b86f05 | ||
|
|
6d1e5cb5dc |
@@ -40,6 +40,9 @@ _✨ All in one 的 OpenAI 接口,整合各种 API 访问方式,开箱即用
|
||||
<a href="https://openai.justsong.cn/">在线演示</a>
|
||||
</p>
|
||||
|
||||
> **Warning**:从 `v0.2` 版本升级到 `v0.3` 版本需要手动迁移数据库,请手动执行[数据库迁移脚本](./bin/migration_v0.2-v0.3.sql)。
|
||||
|
||||
|
||||
## 功能
|
||||
1. 支持多种 API 访问渠道,欢迎 PR 或提 issue 添加更多渠道:
|
||||
+ [x] OpenAI 官方通道
|
||||
|
||||
6
bin/migration_v0.2-v0.3.sql
Normal file
6
bin/migration_v0.2-v0.3.sql
Normal file
@@ -0,0 +1,6 @@
|
||||
UPDATE users
|
||||
SET quota = quota + (
|
||||
SELECT SUM(remain_quota)
|
||||
FROM tokens
|
||||
WHERE tokens.user_id = users.id
|
||||
)
|
||||
@@ -160,7 +160,6 @@ func DeleteToken(c *gin.Context) {
|
||||
}
|
||||
|
||||
func UpdateToken(c *gin.Context) {
|
||||
isAdmin := c.GetInt("role") >= common.RoleAdminUser
|
||||
userId := c.GetInt("id")
|
||||
statusOnly := c.Query("status_only")
|
||||
token := model.Token{}
|
||||
@@ -191,7 +190,7 @@ func UpdateToken(c *gin.Context) {
|
||||
if cleanToken.Status == common.TokenStatusExhausted && cleanToken.RemainQuota <= 0 && !cleanToken.UnlimitedQuota {
|
||||
c.JSON(http.StatusOK, gin.H{
|
||||
"success": false,
|
||||
"message": "令牌可用次数已用尽,无法启用,请先修改令牌剩余次数,或者设置为无限次数",
|
||||
"message": "令牌可用额度已用尽,无法启用,请先修改令牌剩余额度,或者设置为无限额度",
|
||||
})
|
||||
return
|
||||
}
|
||||
@@ -202,10 +201,8 @@ func UpdateToken(c *gin.Context) {
|
||||
// If you add more fields, please also update token.Update()
|
||||
cleanToken.Name = token.Name
|
||||
cleanToken.ExpiredTime = token.ExpiredTime
|
||||
if isAdmin {
|
||||
cleanToken.RemainQuota = token.RemainQuota
|
||||
cleanToken.UnlimitedQuota = token.UnlimitedQuota
|
||||
}
|
||||
cleanToken.RemainQuota = token.RemainQuota
|
||||
cleanToken.UnlimitedQuota = token.UnlimitedQuota
|
||||
}
|
||||
err = cleanToken.Update()
|
||||
if err != nil {
|
||||
|
||||
@@ -34,7 +34,6 @@ const headerButtons = [
|
||||
name: '充值',
|
||||
to: '/topup',
|
||||
icon: 'cart',
|
||||
admin: true,
|
||||
},
|
||||
{
|
||||
name: '用户',
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import React, { useEffect, useState } from 'react';
|
||||
import { Button, Form, Header, Segment } from 'semantic-ui-react';
|
||||
import { Button, Form, Header, Message, Segment } from 'semantic-ui-react';
|
||||
import { useParams } from 'react-router-dom';
|
||||
import { API, showError, showSuccess, timestamp2string } from '../../helpers';
|
||||
|
||||
@@ -106,6 +106,7 @@ const EditToken = () => {
|
||||
required={!isEdit}
|
||||
/>
|
||||
</Form.Field>
|
||||
<Message>注意,令牌的额度仅用于限制令牌本身的最大额度使用量,实际的使用受到账户的剩余额度限制。</Message>
|
||||
<Form.Field>
|
||||
<Form.Input
|
||||
label='额度'
|
||||
|
||||
Reference in New Issue
Block a user