1
This commit is contained in:
@@ -109,7 +109,7 @@ async def create_join_request(
|
|||||||
|
|
||||||
# 验证用户存在
|
# 验证用户存在
|
||||||
user_result = await db.execute(
|
user_result = await db.execute(
|
||||||
select(User).where(User.id == user_id, User.deleted_at.is_(None)).limit(1)
|
select(User).where(User.id == user_id, User.is_active == True).limit(1)
|
||||||
)
|
)
|
||||||
user = user_result.scalar_one_or_none()
|
user = user_result.scalar_one_or_none()
|
||||||
if not user:
|
if not user:
|
||||||
|
|||||||
+1
-1
File diff suppressed because one or more lines are too long
Vendored
+1
-1
@@ -28,7 +28,7 @@
|
|||||||
}
|
}
|
||||||
})();
|
})();
|
||||||
</script>
|
</script>
|
||||||
<script type="module" crossorigin src="/assets/index-Bj5E6PSn.js"></script>
|
<script type="module" crossorigin src="/assets/index-DUQKfJjB.js"></script>
|
||||||
<link rel="stylesheet" crossorigin href="/assets/index-D9_3MPsN.css">
|
<link rel="stylesheet" crossorigin href="/assets/index-D9_3MPsN.css">
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import {
|
|||||||
import { DatePicker } from 'antd';
|
import { DatePicker } from 'antd';
|
||||||
import dayjs from 'dayjs';
|
import dayjs from 'dayjs';
|
||||||
import {
|
import {
|
||||||
CopyOutlined, DownloadOutlined, PlusOutlined, ReloadOutlined, UserOutlined, HistoryOutlined, WalletOutlined, BellOutlined,
|
CopyOutlined, DownloadOutlined, PlusOutlined, ReloadOutlined, UserOutlined, HistoryOutlined, WalletOutlined, BellOutlined, ClockCircleOutlined,
|
||||||
} from '@ant-design/icons';
|
} from '@ant-design/icons';
|
||||||
|
|
||||||
const { RangePicker } = DatePicker;
|
const { RangePicker } = DatePicker;
|
||||||
@@ -134,8 +134,7 @@ const TeamManagementPage: React.FC = () => {
|
|||||||
try {
|
try {
|
||||||
const values = await invForm.validateFields();
|
const values = await invForm.validateFields();
|
||||||
setInvSaving(true);
|
setInvSaving(true);
|
||||||
const expiresAt = values.expiresAt ? new Date(values.expiresAt).toISOString() : null;
|
await createTeamInvitation(values.maxUses || null, null);
|
||||||
await createTeamInvitation(values.maxUses || null, expiresAt);
|
|
||||||
message.success('邀请码已生成');
|
message.success('邀请码已生成');
|
||||||
setInvModal(false);
|
setInvModal(false);
|
||||||
invForm.resetFields();
|
invForm.resetFields();
|
||||||
@@ -698,9 +697,19 @@ const TeamManagementPage: React.FC = () => {
|
|||||||
<Form.Item name="maxUses" label="最大使用次数">
|
<Form.Item name="maxUses" label="最大使用次数">
|
||||||
<InputNumber style={{ width: '100%' }} min={1} placeholder="留空表示不限" size="large" />
|
<InputNumber style={{ width: '100%' }} min={1} placeholder="留空表示不限" size="large" />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
<Form.Item name="expiresAt" label="过期时间">
|
<div style={{
|
||||||
<Input type="datetime-local" style={{ width: '100%' }} placeholder="默认24小时后过期" size="large" />
|
padding: '12px 16px',
|
||||||
</Form.Item>
|
background: '#eef2ff',
|
||||||
|
borderRadius: 8,
|
||||||
|
fontSize: 13,
|
||||||
|
color: '#4f46e5',
|
||||||
|
display: 'flex',
|
||||||
|
alignItems: 'center',
|
||||||
|
gap: 8,
|
||||||
|
}}>
|
||||||
|
<ClockCircleOutlined />
|
||||||
|
<span>邀请码自生成起 <strong>24 小时</strong> 内有效,过期自动失效。</span>
|
||||||
|
</div>
|
||||||
</Form>
|
</Form>
|
||||||
</Modal>
|
</Modal>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Reference in New Issue
Block a user