feat: 默认昵称带序号(星辰旅行者1001 起步,跳过占用),与画屿画友方案一致,纯后端无需发版

This commit is contained in:
Hermes Agent
2026-09-15 12:16:27 +08:00
parent 5e098a3584
commit 2bc58d0c6a
+17 -3
View File
@@ -1,5 +1,19 @@
const express = require('express') const express = require('express')
const router = express.Router() const router = express.Router()
/**
* 生成默认昵称:星辰旅行者 + 序号(1001 起步,跳过已占用,参考画屿画友1001 方案)
*/
async function genDefaultNickName() {
const used = new Set(
(await User.find({ nickName: /^星辰旅行者\d+$/ }).select('nickName').lean())
.map(u => parseInt(String(u.nickName).replace('星辰旅行者', ''), 10))
.filter(n => !isNaN(n))
)
let n = 1001
while (used.has(n)) n++
return `星辰旅行者${n}`
}
const jwt = require('jsonwebtoken') const jwt = require('jsonwebtoken')
const { User, Admin, AdminLog, LoginLog, VerificationCode } = require('../models') const { User, Admin, AdminLog, LoginLog, VerificationCode } = require('../models')
const ApiResponse = require('../utils/response') const ApiResponse = require('../utils/response')
@@ -107,7 +121,7 @@ router.post('/login', async (req, res) => {
// 新用户 // 新用户
user = new User({ user = new User({
openid, openid,
nickName: userInfo?.nickName || '星辰旅行者', nickName: userInfo?.nickName || (await genDefaultNickName()),
avatarUrl: userInfo?.avatarUrl || '', avatarUrl: userInfo?.avatarUrl || '',
unlockedDims: [1] unlockedDims: [1]
}) })
@@ -195,7 +209,7 @@ router.post('/webview-login', async (req, res) => {
// 新用户 - 使用微信提供的信息创建账户 // 新用户 - 使用微信提供的信息创建账户
user = new User({ user = new User({
openid, openid,
nickName: userInfo?.nickName || '星辰旅行者', nickName: userInfo?.nickName || (await genDefaultNickName()),
avatarUrl: userInfo?.avatarUrl || '', avatarUrl: userInfo?.avatarUrl || '',
unlockedDims: [1] unlockedDims: [1]
}) })
@@ -479,7 +493,7 @@ router.post('/user/register', async (req, res) => {
username: finalUsername, username: finalUsername,
email: email || '', email: email || '',
password, password,
nickName: nickName || '星辰旅行者', nickName: nickName || (await genDefaultNickName()),
avatarUrl: avatarUrl || '', avatarUrl: avatarUrl || '',
unlockedDims: [1] unlockedDims: [1]
}) })