feat: 打手支持昵称登录,物品规则标识唯一校验
- 昵称全局唯一(迁移 016 唯一索引 + 注册校验),存量空昵称自动补账号名 - 登录解析链扩展为 账号/手机号/昵称,均可加密码登录 - 登录页提示更新为「手机号 / 昵称 / 账号」,注册页提示昵称可作登录账号 - 新建物品规则时校验规则标识唯一:已存在则拒绝(409),编辑不受影响 - 前端规则表单增加规则标识重复的即时校验
This commit is contained in:
@@ -102,6 +102,7 @@ export default function ProductRulesPanel() {
|
||||
})
|
||||
|
||||
async function saveRule(values: {
|
||||
ruleId?: number
|
||||
ruleKey: string
|
||||
provider?: string
|
||||
platform?: string
|
||||
@@ -124,7 +125,10 @@ export default function ProductRulesPanel() {
|
||||
autoCreate?: boolean
|
||||
}) {
|
||||
try {
|
||||
await saveAdminWorkProductRule(values)
|
||||
await saveAdminWorkProductRule({
|
||||
...values,
|
||||
ruleId: editingRule?.ruleId,
|
||||
})
|
||||
message.success(editingRule ? '物品规则已更新' : '物品规则已创建')
|
||||
resetRuleForm()
|
||||
await Promise.all([
|
||||
@@ -346,7 +350,23 @@ export default function ProductRulesPanel() {
|
||||
<Form.Item
|
||||
label="规则标识"
|
||||
name="ruleKey"
|
||||
rules={[{ required: true, message: '请输入规则标识' }]}
|
||||
rules={[
|
||||
{ required: true, message: '请输入规则标识' },
|
||||
{
|
||||
validator: (_, value) => {
|
||||
const key = String(value || '').trim()
|
||||
if (
|
||||
!editingRule &&
|
||||
(rulesQuery.data?.data.items || []).some(
|
||||
(rule) => rule.ruleKey === key,
|
||||
)
|
||||
) {
|
||||
return Promise.reject(new Error('规则标识已存在,请更换'))
|
||||
}
|
||||
return Promise.resolve()
|
||||
},
|
||||
},
|
||||
]}
|
||||
>
|
||||
<Input placeholder="skin-training" disabled={Boolean(editingRule)} />
|
||||
</Form.Item>
|
||||
|
||||
@@ -167,15 +167,19 @@ export default function WorkerLoginPage() {
|
||||
<>
|
||||
<div className="auth-form-header">
|
||||
<h1>欢迎回来</h1>
|
||||
<p>使用账号或手机号登录,进入抢单大厅</p>
|
||||
<p>使用手机号、昵称或账号登录,进入抢单大厅</p>
|
||||
</div>
|
||||
<Form layout="vertical" onFinish={submitLogin} requiredMark={false}>
|
||||
<Form.Item
|
||||
label="账号 / 手机号"
|
||||
label="手机号 / 昵称 / 账号"
|
||||
name="username"
|
||||
rules={[{ required: true, message: '请输入账号或手机号' }]}
|
||||
rules={[{ required: true, message: '请输入手机号、昵称或账号' }]}
|
||||
>
|
||||
<Input prefix={<UserOutlined />} autoComplete="username" />
|
||||
<Input
|
||||
prefix={<UserOutlined />}
|
||||
autoComplete="username"
|
||||
placeholder="手机号 / 昵称 / 账号"
|
||||
/>
|
||||
</Form.Item>
|
||||
<Form.Item
|
||||
label="密码"
|
||||
@@ -252,6 +256,7 @@ export default function WorkerLoginPage() {
|
||||
label="昵称"
|
||||
name="displayName"
|
||||
rules={[{ required: true, message: '请输入昵称' }]}
|
||||
extra="昵称需唯一,注册后可作为登录账号使用"
|
||||
>
|
||||
<Input prefix={<UserOutlined />} />
|
||||
</Form.Item>
|
||||
|
||||
@@ -87,6 +87,7 @@ export function fetchAdminWorkProductRules(params?: Record<string, unknown>) {
|
||||
}
|
||||
|
||||
export function saveAdminWorkProductRule(payload: {
|
||||
ruleId?: number
|
||||
ruleKey: string
|
||||
provider?: string
|
||||
platform?: string
|
||||
|
||||
Reference in New Issue
Block a user