Commit b72b4f26 by Calcium-Ion Committed by GitHub

Merge pull request #564 from Licoy/main

优化页面组件大小规格一致
parents 08d17417 af1f0a40
......@@ -144,11 +144,13 @@ var (
// All duration's unit is seconds
// Shouldn't larger then RateLimitKeyExpirationDuration
var (
GlobalApiRateLimitNum = GetEnvOrDefault("GLOBAL_API_RATE_LIMIT", 180)
GlobalApiRateLimitDuration int64 = 3 * 60
GlobalApiRateLimitEnable = GetEnvOrDefaultBool("GLOBAL_API_RATE_LIMIT_ENABLE", true)
GlobalApiRateLimitNum = GetEnvOrDefault("GLOBAL_API_RATE_LIMIT", 180)
GlobalApiRateLimitDuration = int64(GetEnvOrDefault("GLOBAL_API_RATE_LIMIT_DURATION", 180))
GlobalWebRateLimitNum = GetEnvOrDefault("GLOBAL_WEB_RATE_LIMIT", 60)
GlobalWebRateLimitDuration int64 = 3 * 60
GlobalWebRateLimitEnable = GetEnvOrDefaultBool("GLOBAL_WEB_RATE_LIMIT_ENABLE", true)
GlobalWebRateLimitNum = GetEnvOrDefault("GLOBAL_WEB_RATE_LIMIT", 60)
GlobalWebRateLimitDuration = int64(GetEnvOrDefault("GLOBAL_WEB_RATE_LIMIT_DURATION", 180))
UploadRateLimitNum = 10
UploadRateLimitDuration int64 = 60
......
......@@ -13,6 +13,10 @@ var timeFormat = "2006-01-02T15:04:05.000Z"
var inMemoryRateLimiter common.InMemoryRateLimiter
var defNext = func(c *gin.Context) {
c.Next()
}
func redisRateLimiter(c *gin.Context, maxRequestNum int, duration int64, mark string) {
ctx := context.Background()
rdb := common.RDB
......@@ -83,11 +87,17 @@ func rateLimitFactory(maxRequestNum int, duration int64, mark string) func(c *gi
}
func GlobalWebRateLimit() func(c *gin.Context) {
return rateLimitFactory(common.GlobalWebRateLimitNum, common.GlobalWebRateLimitDuration, "GW")
if common.GlobalWebRateLimitEnable {
return rateLimitFactory(common.GlobalWebRateLimitNum, common.GlobalWebRateLimitDuration, "GW")
}
return defNext
}
func GlobalAPIRateLimit() func(c *gin.Context) {
return rateLimitFactory(common.GlobalApiRateLimitNum, common.GlobalApiRateLimitDuration, "GA")
if common.GlobalApiRateLimitEnable {
return rateLimitFactory(common.GlobalApiRateLimitNum, common.GlobalApiRateLimitDuration, "GA")
}
return defNext
}
func CriticalRateLimit() func(c *gin.Context) {
......
......@@ -767,6 +767,22 @@ const LogsTable = () => {
<Form.Section></Form.Section>
</>
</Form>
<div style={{marginTop:10}}>
<Select
defaultValue='0'
style={{ width: 120 }}
onChange={(value) => {
setLogType(parseInt(value));
loadLogs(0, pageSize, parseInt(value));
}}
>
<Select.Option value='0'>全部</Select.Option>
<Select.Option value='1'>充值</Select.Option>
<Select.Option value='2'>消费</Select.Option>
<Select.Option value='3'>管理</Select.Option>
<Select.Option value='4'>系统</Select.Option>
</Select>
</div>
<Table
style={{ marginTop: 5 }}
columns={columns}
......@@ -786,20 +802,6 @@ const LogsTable = () => {
onPageChange: handlePageChange,
}}
/>
<Select
defaultValue='0'
style={{ width: 120 }}
onChange={(value) => {
setLogType(parseInt(value));
loadLogs(0, pageSize, parseInt(value));
}}
>
<Select.Option value='0'>全部</Select.Option>
<Select.Option value='1'>充值</Select.Option>
<Select.Option value='2'>消费</Select.Option>
<Select.Option value='3'>管理</Select.Option>
<Select.Option value='4'>系统</Select.Option>
</Select>
</Layout>
</>
);
......
......@@ -10,7 +10,7 @@ import {
import { ITEMS_PER_PAGE } from '../constants';
import { renderQuota } from '../helpers/render';
import {
Button,
Button, Divider,
Form,
Modal,
Popconfirm,
......@@ -391,6 +391,39 @@ const RedemptionsTable = () => {
onChange={handleKeywordChange}
/>
</Form>
<Divider style={{margin:'5px 0 15px 0'}}/>
<div>
<Button
theme='light'
type='primary'
style={{ marginRight: 8 }}
onClick={() => {
setEditingRedemption({
id: undefined,
});
setShowEdit(true);
}}
>
添加兑换码
</Button>
<Button
label='复制所选兑换码'
type='warning'
onClick={async () => {
if (selectedKeys.length === 0) {
showError('请至少选择一个兑换码!');
return;
}
let keys = '';
for (let i = 0; i < selectedKeys.length; i++) {
keys += selectedKeys[i].name + ' ' + selectedKeys[i].key + '\n';
}
await copyText(keys);
}}
>
复制所选兑换码到剪贴板
</Button>
</div>
<Table
style={{ marginTop: 20 }}
......@@ -414,36 +447,6 @@ const RedemptionsTable = () => {
rowSelection={rowSelection}
onRow={handleRow}
></Table>
<Button
theme='light'
type='primary'
style={{ marginRight: 8 }}
onClick={() => {
setEditingRedemption({
id: undefined,
});
setShowEdit(true);
}}
>
添加兑换码
</Button>
<Button
label='复制所选兑换码'
type='warning'
onClick={async () => {
if (selectedKeys.length === 0) {
showError('请至少选择一个兑换码!');
return;
}
let keys = '';
for (let i = 0; i < selectedKeys.length; i++) {
keys += selectedKeys[i].name + ' ' + selectedKeys[i].key + '\n';
}
await copyText(keys);
}}
>
复制所选兑换码到剪贴板
</Button>
</>
);
};
......
......@@ -10,7 +10,7 @@ import {
import { ITEMS_PER_PAGE } from '../constants';
import {renderGroup, renderQuota} from '../helpers/render';
import {
Button,
Button, Divider,
Dropdown,
Form,
Modal,
......@@ -596,6 +596,40 @@ const TokensTable = () => {
查询
</Button>
</Form>
<Divider style={{margin:'15px 0'}}/>
<div>
<Button
theme='light'
type='primary'
style={{ marginRight: 8 }}
onClick={() => {
setEditingToken({
id: undefined,
});
setShowEdit(true);
}}
>
添加令牌
</Button>
<Button
label='复制所选令牌'
type='warning'
onClick={async () => {
if (selectedKeys.length === 0) {
showError('请至少选择一个令牌!');
return;
}
let keys = '';
for (let i = 0; i < selectedKeys.length; i++) {
keys +=
selectedKeys[i].name + ' sk-' + selectedKeys[i].key + '\n';
}
await copyText(keys);
}}
>
复制所选令牌到剪贴板
</Button>
</div>
<Table
style={{ marginTop: 20 }}
......@@ -619,37 +653,6 @@ const TokensTable = () => {
rowSelection={rowSelection}
onRow={handleRow}
></Table>
<Button
theme='light'
type='primary'
style={{ marginRight: 8 }}
onClick={() => {
setEditingToken({
id: undefined,
});
setShowEdit(true);
}}
>
添加令牌
</Button>
<Button
label='复制所选令牌'
type='warning'
onClick={async () => {
if (selectedKeys.length === 0) {
showError('请至少选择一个令牌!');
return;
}
let keys = '';
for (let i = 0; i < selectedKeys.length; i++) {
keys +=
selectedKeys[i].name + ' sk-' + selectedKeys[i].key + '\n';
}
await copyText(keys);
}}
>
复制所选令牌到剪贴板
</Button>
</>
);
};
......
......@@ -476,10 +476,18 @@ const UsersTable = () => {
type='primary'
htmlType='submit'
className='btn-margin-right'
style={{ marginRight: 8 }}
>
查询
</Button>
<Button
theme='light'
type='primary'
onClick={() => {
setShowAddUser(true);
}}
>
添加用户
</Button>
</Space>
</div>
</Form>
......@@ -496,16 +504,6 @@ const UsersTable = () => {
}}
loading={loading}
/>
<Button
theme='light'
type='primary'
style={{ marginRight: 8 }}
onClick={() => {
setShowAddUser(true);
}}
>
添加用户
</Button>
</>
);
};
......
......@@ -144,7 +144,7 @@ export default function SettingsCreditLimit(props) {
</Row>
<Row>
<Button size='large' onClick={onSubmit}>
<Button size='default' onClick={onSubmit}>
保存额度设置
</Button>
</Row>
......
......@@ -87,7 +87,7 @@ export default function DataDashboard(props) {
<Form.Switch
field={'DataExportEnabled'}
label={'启用数据看板(实验性)'}
size='large'
size='default'
checkedText='|'
uncheckedText='〇'
onChange={(value) => {
......@@ -135,7 +135,7 @@ export default function DataDashboard(props) {
</Col>
</Row>
<Row>
<Button size='large' onClick={onSubmit}>
<Button size='default' onClick={onSubmit}>
保存数据看板设置
</Button>
</Row>
......
......@@ -81,7 +81,7 @@ export default function SettingsDrawing(props) {
<Form.Switch
field={'DrawingEnabled'}
label={'启用绘图功能'}
size='large'
size='default'
checkedText='|'
uncheckedText='〇'
onChange={(value) => {
......@@ -96,7 +96,7 @@ export default function SettingsDrawing(props) {
<Form.Switch
field={'MjNotifyEnabled'}
label={'允许回调(会泄露服务器 IP 地址)'}
size='large'
size='default'
checkedText='|'
uncheckedText='〇'
onChange={(value) =>
......@@ -111,7 +111,7 @@ export default function SettingsDrawing(props) {
<Form.Switch
field={'MjAccountFilterEnabled'}
label={'允许 AccountFilter 参数'}
size='large'
size='default'
checkedText='|'
uncheckedText='〇'
onChange={(value) =>
......@@ -126,7 +126,7 @@ export default function SettingsDrawing(props) {
<Form.Switch
field={'MjForwardUrlEnabled'}
label={'开启之后将上游地址替换为服务器地址'}
size='large'
size='default'
checkedText='|'
uncheckedText='〇'
onChange={(value) =>
......@@ -146,7 +146,7 @@ export default function SettingsDrawing(props) {
<Tag>--relax</Tag> 以及 <Tag>--turbo</Tag> 参数
</>
}
size='large'
size='default'
checkedText='|'
uncheckedText='〇'
onChange={(value) =>
......@@ -165,7 +165,7 @@ export default function SettingsDrawing(props) {
检测必须等待绘图成功才能进行放大等操作
</>
}
size='large'
size='default'
checkedText='|'
uncheckedText='〇'
onChange={(value) =>
......@@ -178,7 +178,7 @@ export default function SettingsDrawing(props) {
</Col>
</Row>
<Row>
<Button size='large' onClick={onSubmit}>
<Button size='default' onClick={onSubmit}>
保存绘图设置
</Button>
</Row>
......
......@@ -141,7 +141,7 @@ export default function GeneralSettings(props) {
<Form.Switch
field={'DisplayInCurrencyEnabled'}
label={'以货币形式显示额度'}
size='large'
size='default'
checkedText='|'
uncheckedText='〇'
onChange={(value) => {
......@@ -156,7 +156,7 @@ export default function GeneralSettings(props) {
<Form.Switch
field={'DisplayTokenStatEnabled'}
label={'Billing 相关 API 显示令牌额度而非用户额度'}
size='large'
size='default'
checkedText='|'
uncheckedText='〇'
onChange={(value) =>
......@@ -171,7 +171,7 @@ export default function GeneralSettings(props) {
<Form.Switch
field={'DefaultCollapseSidebar'}
label={'默认折叠侧边栏'}
size='large'
size='default'
checkedText='|'
uncheckedText='〇'
onChange={(value) =>
......@@ -184,7 +184,7 @@ export default function GeneralSettings(props) {
</Col>
</Row>
<Row>
<Button size='large' onClick={onSubmit}>
<Button size='default' onClick={onSubmit}>
保存通用设置
</Button>
</Row>
......
......@@ -102,7 +102,7 @@ export default function SettingsLog(props) {
<Form.Switch
field={'LogConsumeEnabled'}
label={'启用额度消费日志记录'}
size='large'
size='default'
checkedText='|'
uncheckedText='〇'
onChange={(value) => {
......@@ -135,7 +135,7 @@ export default function SettingsLog(props) {
</Row>
<Row>
<Button size='large' onClick={onSubmit}>
<Button size='default' onClick={onSubmit}>
保存日志设置
</Button>
</Row>
......
......@@ -114,7 +114,7 @@ export default function SettingsMonitoring(props) {
<Form.Switch
field={'AutomaticDisableChannelEnabled'}
label={'失败时自动禁用通道'}
size='large'
size='default'
checkedText='|'
uncheckedText='〇'
onChange={(value) => {
......@@ -129,7 +129,7 @@ export default function SettingsMonitoring(props) {
<Form.Switch
field={'AutomaticEnableChannelEnabled'}
label={'成功时自动启用通道'}
size='large'
size='default'
checkedText='|'
uncheckedText='〇'
onChange={(value) =>
......@@ -142,7 +142,7 @@ export default function SettingsMonitoring(props) {
</Col>
</Row>
<Row>
<Button size='large' onClick={onSubmit}>
<Button size='default' onClick={onSubmit}>
保存监控设置
</Button>
</Row>
......
......@@ -77,7 +77,7 @@ export default function SettingsSensitiveWords(props) {
<Form.Switch
field={'CheckSensitiveEnabled'}
label={'启用屏蔽词过滤功能'}
size='large'
size='default'
checkedText='|'
uncheckedText='〇'
onChange={(value) => {
......@@ -92,7 +92,7 @@ export default function SettingsSensitiveWords(props) {
<Form.Switch
field={'CheckSensitiveOnPromptEnabled'}
label={'启用 Prompt 检查'}
size='large'
size='default'
checkedText='|'
uncheckedText='〇'
onChange={(value) =>
......@@ -123,7 +123,7 @@ export default function SettingsSensitiveWords(props) {
</Col>
</Row>
<Row>
<Button size='large' onClick={onSubmit}>
<Button size='default' onClick={onSubmit}>
保存屏蔽词过滤设置
</Button>
</Row>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment