Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
phsl
/
new-api
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Members
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
d0c04ce9
authored
Apr 18, 2024
by
CaIon
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat: 前端不显示敏感信息
parent
6bc261f6
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
129 additions
and
120 deletions
+129
-120
common/constants.go
+0
-9
common/model-ratio.go
+86
-86
constant/payment.go
+8
-0
controller/misc.go
+3
-3
controller/option.go
+1
-1
controller/topup.go
+7
-6
model/option.go
+8
-8
service/epay.go
+6
-3
web/src/components/SystemSetting.js
+10
-4
No files found.
common/constants.go
View file @
d0c04ce9
...
@@ -9,15 +9,6 @@ import (
...
@@ -9,15 +9,6 @@ import (
"github.com/google/uuid"
"github.com/google/uuid"
)
)
// Pay Settings
var
PayAddress
=
""
var
CustomCallbackAddress
=
""
var
EpayId
=
""
var
EpayKey
=
""
var
Price
=
7.3
var
MinTopUp
=
1
var
StartTime
=
time
.
Now
()
.
Unix
()
// unit: second
var
StartTime
=
time
.
Now
()
.
Unix
()
// unit: second
var
Version
=
"v0.0.0"
// this hard coding will be replaced automatically when building, no need to manually change
var
Version
=
"v0.0.0"
// this hard coding will be replaced automatically when building, no need to manually change
var
SystemName
=
"New API"
var
SystemName
=
"New API"
...
...
common/model-ratio.go
View file @
d0c04ce9
...
@@ -14,91 +14,91 @@ import (
...
@@ -14,91 +14,91 @@ import (
// 1 === ¥0.014 / 1k tokens
// 1 === ¥0.014 / 1k tokens
var
DefaultModelRatio
=
map
[
string
]
float64
{
var
DefaultModelRatio
=
map
[
string
]
float64
{
//"midjourney": 50,
//"midjourney": 50,
"gpt-4-gizmo-*"
:
15
,
"gpt-4-gizmo-*"
:
15
,
"gpt-4"
:
15
,
"gpt-4"
:
15
,
"gpt-4-0314"
:
15
,
"gpt-4-0314"
:
15
,
"gpt-4-0613"
:
15
,
"gpt-4-0613"
:
15
,
"gpt-4-32k"
:
30
,
"gpt-4-32k"
:
30
,
"gpt-4-32k-0314"
:
30
,
"gpt-4-32k-0314"
:
30
,
"gpt-4-32k-0613"
:
30
,
"gpt-4-32k-0613"
:
30
,
"gpt-4-1106-preview"
:
5
,
// $0.01 / 1K tokens
"gpt-4-1106-preview"
:
5
,
// $0.01 / 1K tokens
"gpt-4-0125-preview"
:
5
,
// $0.01 / 1K tokens
"gpt-4-0125-preview"
:
5
,
// $0.01 / 1K tokens
"gpt-4-turbo-preview"
:
5
,
// $0.01 / 1K tokens
"gpt-4-turbo-preview"
:
5
,
// $0.01 / 1K tokens
"gpt-4-vision-preview"
:
5
,
// $0.01 / 1K tokens
"gpt-4-vision-preview"
:
5
,
// $0.01 / 1K tokens
"gpt-4-1106-vision-preview"
:
5
,
// $0.01 / 1K tokens
"gpt-4-1106-vision-preview"
:
5
,
// $0.01 / 1K tokens
"gpt-4-turbo"
:
5
,
// $0.01 / 1K tokens
"gpt-4-turbo"
:
5
,
// $0.01 / 1K tokens
"gpt-3.5-turbo"
:
0.25
,
// $0.0015 / 1K tokens
"gpt-3.5-turbo"
:
0.25
,
// $0.0015 / 1K tokens
"gpt-3.5-turbo-0301"
:
0.75
,
"gpt-3.5-turbo-0301"
:
0.75
,
"gpt-3.5-turbo-0613"
:
0.75
,
"gpt-3.5-turbo-0613"
:
0.75
,
"gpt-3.5-turbo-16k"
:
1.5
,
// $0.003 / 1K tokens
"gpt-3.5-turbo-16k"
:
1.5
,
// $0.003 / 1K tokens
"gpt-3.5-turbo-16k-0613"
:
1.5
,
"gpt-3.5-turbo-16k-0613"
:
1.5
,
"gpt-3.5-turbo-instruct"
:
0.75
,
// $0.0015 / 1K tokens
"gpt-3.5-turbo-instruct"
:
0.75
,
// $0.0015 / 1K tokens
"gpt-3.5-turbo-1106"
:
0.5
,
// $0.001 / 1K tokens
"gpt-3.5-turbo-1106"
:
0.5
,
// $0.001 / 1K tokens
"gpt-3.5-turbo-0125"
:
0.25
,
"gpt-3.5-turbo-0125"
:
0.25
,
"babbage-002"
:
0.2
,
// $0.0004 / 1K tokens
"babbage-002"
:
0.2
,
// $0.0004 / 1K tokens
"davinci-002"
:
1
,
// $0.002 / 1K tokens
"davinci-002"
:
1
,
// $0.002 / 1K tokens
"text-ada-001"
:
0.2
,
"text-ada-001"
:
0.2
,
"text-babbage-001"
:
0.25
,
"text-babbage-001"
:
0.25
,
"text-curie-001"
:
1
,
"text-curie-001"
:
1
,
"text-davinci-002"
:
10
,
"text-davinci-002"
:
10
,
"text-davinci-003"
:
10
,
"text-davinci-003"
:
10
,
"text-davinci-edit-001"
:
10
,
"text-davinci-edit-001"
:
10
,
"code-davinci-edit-001"
:
10
,
"code-davinci-edit-001"
:
10
,
"whisper-1"
:
15
,
// $0.006 / minute -> $0.006 / 150 words -> $0.006 / 200 tokens -> $0.03 / 1k tokens
"whisper-1"
:
15
,
// $0.006 / minute -> $0.006 / 150 words -> $0.006 / 200 tokens -> $0.03 / 1k tokens
"tts-1"
:
7.5
,
// 1k characters -> $0.015
"tts-1"
:
7.5
,
// 1k characters -> $0.015
"tts-1-1106"
:
7.5
,
// 1k characters -> $0.015
"tts-1-1106"
:
7.5
,
// 1k characters -> $0.015
"tts-1-hd"
:
15
,
// 1k characters -> $0.03
"tts-1-hd"
:
15
,
// 1k characters -> $0.03
"tts-1-hd-1106"
:
15
,
// 1k characters -> $0.03
"tts-1-hd-1106"
:
15
,
// 1k characters -> $0.03
"davinci"
:
10
,
"davinci"
:
10
,
"curie"
:
10
,
"curie"
:
10
,
"babbage"
:
10
,
"babbage"
:
10
,
"ada"
:
10
,
"ada"
:
10
,
"text-embedding-3-small"
:
0.01
,
"text-embedding-3-small"
:
0.01
,
"text-embedding-3-large"
:
0.065
,
"text-embedding-3-large"
:
0.065
,
"text-embedding-ada-002"
:
0.05
,
"text-embedding-ada-002"
:
0.05
,
"text-search-ada-doc-001"
:
10
,
"text-search-ada-doc-001"
:
10
,
"text-moderation-stable"
:
0.1
,
"text-moderation-stable"
:
0.1
,
"text-moderation-latest"
:
0.1
,
"text-moderation-latest"
:
0.1
,
"dall-e-2"
:
8
,
"dall-e-2"
:
8
,
"dall-e-3"
:
16
,
"dall-e-3"
:
16
,
"claude-instant-1"
:
0.4
,
// $0.8 / 1M tokens
"claude-instant-1"
:
0.4
,
// $0.8 / 1M tokens
"claude-2.0"
:
4
,
// $8 / 1M tokens
"claude-2.0"
:
4
,
// $8 / 1M tokens
"claude-2.1"
:
4
,
// $8 / 1M tokens
"claude-2.1"
:
4
,
// $8 / 1M tokens
"claude-3-haiku-20240307"
:
0.125
,
// $0.25 / 1M tokens
"claude-3-haiku-20240307"
:
0.125
,
// $0.25 / 1M tokens
"claude-3-sonnet-20240229"
:
1.5
,
// $3 / 1M tokens
"claude-3-sonnet-20240229"
:
1.5
,
// $3 / 1M tokens
"claude-3-opus-20240229"
:
7.5
,
// $15 / 1M tokens
"claude-3-opus-20240229"
:
7.5
,
// $15 / 1M tokens
"ERNIE-Bot"
:
0.8572
,
// ¥0.012 / 1k tokens
"ERNIE-Bot"
:
0.8572
,
// ¥0.012 / 1k tokens
"ERNIE-Bot-turbo"
:
0.5715
,
// ¥0.008 / 1k tokens
"ERNIE-Bot-turbo"
:
0.5715
,
// ¥0.008 / 1k tokens
"ERNIE-Bot-4"
:
8.572
,
// ¥0.12 / 1k tokens
"ERNIE-Bot-4"
:
8.572
,
// ¥0.12 / 1k tokens
"Embedding-V1"
:
0.1429
,
// ¥0.002 / 1k tokens
"Embedding-V1"
:
0.1429
,
// ¥0.002 / 1k tokens
"PaLM-2"
:
1
,
"PaLM-2"
:
1
,
"gemini-pro"
:
1
,
// $0.00025 / 1k characters -> $0.001 / 1k tokens
"gemini-pro"
:
1
,
// $0.00025 / 1k characters -> $0.001 / 1k tokens
"gemini-pro-vision"
:
1
,
// $0.00025 / 1k characters -> $0.001 / 1k tokens
"gemini-pro-vision"
:
1
,
// $0.00025 / 1k characters -> $0.001 / 1k tokens
"gemini-1.0-pro-vision-001"
:
1
,
"gemini-1.0-pro-vision-001"
:
1
,
"gemini-1.0-pro-001"
:
1
,
"gemini-1.0-pro-001"
:
1
,
"gemini-1.5-pro-latest"
:
1
,
"gemini-1.5-pro-latest"
:
1
,
"gemini-1.0-pro-latest"
:
1
,
"gemini-1.0-pro-latest"
:
1
,
"gemini-1.0-pro-vision-latest"
:
1
,
"gemini-1.0-pro-vision-latest"
:
1
,
"gemini-ultra"
:
1
,
"gemini-ultra"
:
1
,
"chatglm_turbo"
:
0.3572
,
// ¥0.005 / 1k tokens
"chatglm_turbo"
:
0.3572
,
// ¥0.005 / 1k tokens
"chatglm_pro"
:
0.7143
,
// ¥0.01 / 1k tokens
"chatglm_pro"
:
0.7143
,
// ¥0.01 / 1k tokens
"chatglm_std"
:
0.3572
,
// ¥0.005 / 1k tokens
"chatglm_std"
:
0.3572
,
// ¥0.005 / 1k tokens
"chatglm_lite"
:
0.1429
,
// ¥0.002 / 1k tokens
"chatglm_lite"
:
0.1429
,
// ¥0.002 / 1k tokens
"glm-4"
:
7.143
,
// ¥0.1 / 1k tokens
"glm-4"
:
7.143
,
// ¥0.1 / 1k tokens
"glm-4v"
:
7.143
,
// ¥0.1 / 1k tokens
"glm-4v"
:
7.143
,
// ¥0.1 / 1k tokens
"glm-3-turbo"
:
0.3572
,
"glm-3-turbo"
:
0.3572
,
"qwen-turbo"
:
0.8572
,
// ¥0.012 / 1k tokens
"qwen-turbo"
:
0.8572
,
// ¥0.012 / 1k tokens
"qwen-plus"
:
10
,
// ¥0.14 / 1k tokens
"qwen-plus"
:
10
,
// ¥0.14 / 1k tokens
"text-embedding-v1"
:
0.05
,
// ¥0.0007 / 1k tokens
"text-embedding-v1"
:
0.05
,
// ¥0.0007 / 1k tokens
"SparkDesk-v1.1"
:
1.2858
,
// ¥0.018 / 1k tokens
"SparkDesk-v1.1"
:
1.2858
,
// ¥0.018 / 1k tokens
"SparkDesk-v2.1"
:
1.2858
,
// ¥0.018 / 1k tokens
"SparkDesk-v2.1"
:
1.2858
,
// ¥0.018 / 1k tokens
"SparkDesk-v3.1"
:
1.2858
,
// ¥0.018 / 1k tokens
"SparkDesk-v3.1"
:
1.2858
,
// ¥0.018 / 1k tokens
"SparkDesk-v3.5"
:
1.2858
,
// ¥0.018 / 1k tokens
"SparkDesk-v3.5"
:
1.2858
,
// ¥0.018 / 1k tokens
"360GPT_S2_V9"
:
0.8572
,
// ¥0.012 / 1k tokens
"360GPT_S2_V9"
:
0.8572
,
// ¥0.012 / 1k tokens
"embedding-bert-512-v1"
:
0.0715
,
// ¥0.001 / 1k tokens
"embedding-bert-512-v1"
:
0.0715
,
// ¥0.001 / 1k tokens
"embedding_s1_v1"
:
0.0715
,
// ¥0.001 / 1k tokens
"embedding_s1_v1"
:
0.0715
,
// ¥0.001 / 1k tokens
"semantic_similarity_s1_v1"
:
0.0715
,
// ¥0.001 / 1k tokens
"semantic_similarity_s1_v1"
:
0.0715
,
// ¥0.001 / 1k tokens
"hunyuan"
:
7.143
,
// ¥0.1 / 1k tokens // https://cloud.tencent.com/document/product/1729/97731#e0e6be58-60c8-469f-bdeb-6c264ce3b4d0
"hunyuan"
:
7.143
,
// ¥0.1 / 1k tokens // https://cloud.tencent.com/document/product/1729/97731#e0e6be58-60c8-469f-bdeb-6c264ce3b4d0
// https://platform.lingyiwanwu.com/docs#-计费单元
// https://platform.lingyiwanwu.com/docs#-计费单元
// 已经按照 7.2 来换算美元价格
// 已经按照 7.2 来换算美元价格
"yi-34b-chat-0205"
:
0.018
,
"yi-34b-chat-0205"
:
0.018
,
...
@@ -205,7 +205,7 @@ func GetCompletionRatio(name string) float64 {
...
@@ -205,7 +205,7 @@ func GetCompletionRatio(name string) float64 {
return
4.0
/
3.0
return
4.0
/
3.0
}
}
if
strings
.
HasPrefix
(
name
,
"gpt-4"
)
{
if
strings
.
HasPrefix
(
name
,
"gpt-4"
)
{
if
strings
.
HasPrefix
(
name
,
"gpt-4-turbo"
)
||
strings
.
HasSuffix
(
name
,
"preview"
)
{
if
strings
.
HasPrefix
(
name
,
"gpt-4-turbo"
)
||
strings
.
HasSuffix
(
name
,
"preview"
)
{
return
3
return
3
}
}
return
2
return
2
...
...
constant/payment.go
0 → 100644
View file @
d0c04ce9
package
constant
var
PayAddress
=
""
var
CustomCallbackAddress
=
""
var
EpayId
=
""
var
EpayKey
=
""
var
Price
=
7.3
var
MinTopUp
=
1
controller/misc.go
View file @
d0c04ce9
...
@@ -46,8 +46,8 @@ func GetStatus(c *gin.Context) {
...
@@ -46,8 +46,8 @@ func GetStatus(c *gin.Context) {
"wechat_qrcode"
:
common
.
WeChatAccountQRCodeImageURL
,
"wechat_qrcode"
:
common
.
WeChatAccountQRCodeImageURL
,
"wechat_login"
:
common
.
WeChatAuthEnabled
,
"wechat_login"
:
common
.
WeChatAuthEnabled
,
"server_address"
:
common
.
ServerAddress
,
"server_address"
:
common
.
ServerAddress
,
"price"
:
co
mmon
.
Price
,
"price"
:
co
nstant
.
Price
,
"min_topup"
:
co
mmon
.
MinTopUp
,
"min_topup"
:
co
nstant
.
MinTopUp
,
"turnstile_check"
:
common
.
TurnstileCheckEnabled
,
"turnstile_check"
:
common
.
TurnstileCheckEnabled
,
"turnstile_site_key"
:
common
.
TurnstileSiteKey
,
"turnstile_site_key"
:
common
.
TurnstileSiteKey
,
"top_up_link"
:
common
.
TopUpLink
,
"top_up_link"
:
common
.
TopUpLink
,
...
@@ -60,7 +60,7 @@ func GetStatus(c *gin.Context) {
...
@@ -60,7 +60,7 @@ func GetStatus(c *gin.Context) {
"enable_data_export"
:
common
.
DataExportEnabled
,
"enable_data_export"
:
common
.
DataExportEnabled
,
"data_export_default_time"
:
common
.
DataExportDefaultTime
,
"data_export_default_time"
:
common
.
DataExportDefaultTime
,
"default_collapse_sidebar"
:
common
.
DefaultCollapseSidebar
,
"default_collapse_sidebar"
:
common
.
DefaultCollapseSidebar
,
"enable_online_topup"
:
co
mmon
.
PayAddress
!=
""
&&
common
.
EpayId
!=
""
&&
common
.
EpayKey
!=
""
,
"enable_online_topup"
:
co
nstant
.
PayAddress
!=
""
&&
constant
.
EpayId
!=
""
&&
constant
.
EpayKey
!=
""
,
"mj_notify_enabled"
:
constant
.
MjNotifyEnabled
,
"mj_notify_enabled"
:
constant
.
MjNotifyEnabled
,
},
},
})
})
...
...
controller/option.go
View file @
d0c04ce9
...
@@ -14,7 +14,7 @@ func GetOptions(c *gin.Context) {
...
@@ -14,7 +14,7 @@ func GetOptions(c *gin.Context) {
var
options
[]
*
model
.
Option
var
options
[]
*
model
.
Option
common
.
OptionMapRWMutex
.
Lock
()
common
.
OptionMapRWMutex
.
Lock
()
for
k
,
v
:=
range
common
.
OptionMap
{
for
k
,
v
:=
range
common
.
OptionMap
{
if
strings
.
HasSuffix
(
k
,
"Token"
)
||
strings
.
HasSuffix
(
k
,
"Secret"
)
{
if
strings
.
HasSuffix
(
k
,
"Token"
)
||
strings
.
HasSuffix
(
k
,
"Secret"
)
||
strings
.
HasSuffix
(
k
,
"Key"
)
{
continue
continue
}
}
options
=
append
(
options
,
&
model
.
Option
{
options
=
append
(
options
,
&
model
.
Option
{
...
...
controller/topup.go
View file @
d0c04ce9
...
@@ -5,6 +5,7 @@ import (
...
@@ -5,6 +5,7 @@ import (
"github.com/Calcium-Ion/go-epay/epay"
"github.com/Calcium-Ion/go-epay/epay"
"github.com/gin-gonic/gin"
"github.com/gin-gonic/gin"
"github.com/samber/lo"
"github.com/samber/lo"
"one-api/constant"
"log"
"log"
"net/url"
"net/url"
...
@@ -28,13 +29,13 @@ type AmountRequest struct {
...
@@ -28,13 +29,13 @@ type AmountRequest struct {
}
}
func
GetEpayClient
()
*
epay
.
Client
{
func
GetEpayClient
()
*
epay
.
Client
{
if
co
mmon
.
PayAddress
==
""
||
common
.
EpayId
==
""
||
common
.
EpayKey
==
""
{
if
co
nstant
.
PayAddress
==
""
||
constant
.
EpayId
==
""
||
constant
.
EpayKey
==
""
{
return
nil
return
nil
}
}
withUrl
,
err
:=
epay
.
NewClient
(
&
epay
.
Config
{
withUrl
,
err
:=
epay
.
NewClient
(
&
epay
.
Config
{
PartnerID
:
co
mmon
.
EpayId
,
PartnerID
:
co
nstant
.
EpayId
,
Key
:
co
mmon
.
EpayKey
,
Key
:
co
nstant
.
EpayKey
,
},
co
mmon
.
PayAddress
)
},
co
nstant
.
PayAddress
)
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
return
nil
}
}
...
@@ -50,12 +51,12 @@ func getPayMoney(amount float64, user model.User) float64 {
...
@@ -50,12 +51,12 @@ func getPayMoney(amount float64, user model.User) float64 {
if
topupGroupRatio
==
0
{
if
topupGroupRatio
==
0
{
topupGroupRatio
=
1
topupGroupRatio
=
1
}
}
payMoney
:=
amount
*
co
mmon
.
Price
*
topupGroupRatio
payMoney
:=
amount
*
co
nstant
.
Price
*
topupGroupRatio
return
payMoney
return
payMoney
}
}
func
getMinTopup
()
int
{
func
getMinTopup
()
int
{
minTopup
:=
co
mmon
.
MinTopUp
minTopup
:=
co
nstant
.
MinTopUp
if
!
common
.
DisplayInCurrencyEnabled
{
if
!
common
.
DisplayInCurrencyEnabled
{
minTopup
=
minTopup
*
int
(
common
.
QuotaPerUnit
)
minTopup
=
minTopup
*
int
(
common
.
QuotaPerUnit
)
}
}
...
...
model/option.go
View file @
d0c04ce9
...
@@ -63,8 +63,8 @@ func InitOptionMap() {
...
@@ -63,8 +63,8 @@ func InitOptionMap() {
common
.
OptionMap
[
"CustomCallbackAddress"
]
=
""
common
.
OptionMap
[
"CustomCallbackAddress"
]
=
""
common
.
OptionMap
[
"EpayId"
]
=
""
common
.
OptionMap
[
"EpayId"
]
=
""
common
.
OptionMap
[
"EpayKey"
]
=
""
common
.
OptionMap
[
"EpayKey"
]
=
""
common
.
OptionMap
[
"Price"
]
=
strconv
.
FormatFloat
(
co
mmon
.
Price
,
'f'
,
-
1
,
64
)
common
.
OptionMap
[
"Price"
]
=
strconv
.
FormatFloat
(
co
nstant
.
Price
,
'f'
,
-
1
,
64
)
common
.
OptionMap
[
"MinTopUp"
]
=
strconv
.
Itoa
(
co
mmon
.
MinTopUp
)
common
.
OptionMap
[
"MinTopUp"
]
=
strconv
.
Itoa
(
co
nstant
.
MinTopUp
)
common
.
OptionMap
[
"TopupGroupRatio"
]
=
common
.
TopupGroupRatio2JSONString
()
common
.
OptionMap
[
"TopupGroupRatio"
]
=
common
.
TopupGroupRatio2JSONString
()
common
.
OptionMap
[
"GitHubClientId"
]
=
""
common
.
OptionMap
[
"GitHubClientId"
]
=
""
common
.
OptionMap
[
"GitHubClientSecret"
]
=
""
common
.
OptionMap
[
"GitHubClientSecret"
]
=
""
...
@@ -227,17 +227,17 @@ func updateOptionMap(key string, value string) (err error) {
...
@@ -227,17 +227,17 @@ func updateOptionMap(key string, value string) (err error) {
case
"ServerAddress"
:
case
"ServerAddress"
:
common
.
ServerAddress
=
value
common
.
ServerAddress
=
value
case
"PayAddress"
:
case
"PayAddress"
:
co
mmon
.
PayAddress
=
value
co
nstant
.
PayAddress
=
value
case
"CustomCallbackAddress"
:
case
"CustomCallbackAddress"
:
co
mmon
.
CustomCallbackAddress
=
value
co
nstant
.
CustomCallbackAddress
=
value
case
"EpayId"
:
case
"EpayId"
:
co
mmon
.
EpayId
=
value
co
nstant
.
EpayId
=
value
case
"EpayKey"
:
case
"EpayKey"
:
co
mmon
.
EpayKey
=
value
co
nstant
.
EpayKey
=
value
case
"Price"
:
case
"Price"
:
co
mmon
.
Price
,
_
=
strconv
.
ParseFloat
(
value
,
64
)
co
nstant
.
Price
,
_
=
strconv
.
ParseFloat
(
value
,
64
)
case
"MinTopUp"
:
case
"MinTopUp"
:
co
mmon
.
MinTopUp
,
_
=
strconv
.
Atoi
(
value
)
co
nstant
.
MinTopUp
,
_
=
strconv
.
Atoi
(
value
)
case
"TopupGroupRatio"
:
case
"TopupGroupRatio"
:
err
=
common
.
UpdateTopupGroupRatioByJSONString
(
value
)
err
=
common
.
UpdateTopupGroupRatioByJSONString
(
value
)
case
"GitHubClientId"
:
case
"GitHubClientId"
:
...
...
service/epay.go
View file @
d0c04ce9
package
service
package
service
import
"one-api/common"
import
(
"one-api/common"
"one-api/constant"
)
func
GetCallbackAddress
()
string
{
func
GetCallbackAddress
()
string
{
if
co
mmon
.
CustomCallbackAddress
==
""
{
if
co
nstant
.
CustomCallbackAddress
==
""
{
return
common
.
ServerAddress
return
common
.
ServerAddress
}
}
return
co
mmon
.
CustomCallbackAddress
return
co
nstant
.
CustomCallbackAddress
}
}
web/src/components/SystemSetting.js
View file @
d0c04ce9
...
@@ -312,7 +312,9 @@ const SystemSetting = () => {
...
@@ -312,7 +312,9 @@ const SystemSetting = () => {
<
Grid
columns
=
{
1
}
>
<
Grid
columns
=
{
1
}
>
<
Grid
.
Column
>
<
Grid
.
Column
>
<
Form
loading
=
{
loading
}
inverted
=
{
isDark
}
>
<
Form
loading
=
{
loading
}
inverted
=
{
isDark
}
>
<
Header
as
=
'h3'
inverted
=
{
isDark
}
>
通用设置
<
/Header
>
<
Header
as
=
'h3'
inverted
=
{
isDark
}
>
通用设置
<
/Header
>
<
Form
.
Group
widths
=
'equal'
>
<
Form
.
Group
widths
=
'equal'
>
<
Form
.
Input
<
Form
.
Input
label
=
'服务器地址'
label
=
'服务器地址'
...
@@ -346,7 +348,7 @@ const SystemSetting = () => {
...
@@ -346,7 +348,7 @@ const SystemSetting = () => {
/
>
/
>
<
Form
.
Input
<
Form
.
Input
label
=
'易支付商户密钥'
label
=
'易支付商户密钥'
placeholder
=
'
例如:dejhfueqhujasjmndbjkqaw
'
placeholder
=
'
敏感信息不会发送到前端显示
'
value
=
{
inputs
.
EpayKey
}
value
=
{
inputs
.
EpayKey
}
name
=
'EpayKey'
name
=
'EpayKey'
onChange
=
{
handleInputChange
}
onChange
=
{
handleInputChange
}
...
@@ -390,7 +392,9 @@ const SystemSetting = () => {
...
@@ -390,7 +392,9 @@ const SystemSetting = () => {
<
/Form.Group
>
<
/Form.Group
>
<
Form
.
Button
onClick
=
{
submitPayAddress
}
>
更新支付设置
<
/Form.Button
>
<
Form
.
Button
onClick
=
{
submitPayAddress
}
>
更新支付设置
<
/Form.Button
>
<
Divider
/>
<
Divider
/>
<
Header
as
=
'h3'
inverted
=
{
isDark
}
>
配置登录注册
<
/Header
>
<
Header
as
=
'h3'
inverted
=
{
isDark
}
>
配置登录注册
<
/Header
>
<
Form
.
Group
inline
>
<
Form
.
Group
inline
>
<
Form
.
Checkbox
<
Form
.
Checkbox
checked
=
{
inputs
.
PasswordLoginEnabled
===
'true'
}
checked
=
{
inputs
.
PasswordLoginEnabled
===
'true'
}
...
@@ -684,7 +688,9 @@ const SystemSetting = () => {
...
@@ -684,7 +688,9 @@ const SystemSetting = () => {
保存
WeChat
Server
设置
保存
WeChat
Server
设置
<
/Form.Button
>
<
/Form.Button
>
<
Divider
/>
<
Divider
/>
<
Header
as
=
'h3'
inverted
=
{
isDark
}
>
配置
Telegram
登录
<
/Header
>
<
Header
as
=
'h3'
inverted
=
{
isDark
}
>
配置
Telegram
登录
<
/Header
>
<
Form
.
Group
inline
>
<
Form
.
Group
inline
>
<
Form
.
Input
<
Form
.
Input
label
=
'Telegram Bot Token'
label
=
'Telegram Bot Token'
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment