feat: add auto-increment userId (8-digit padded) to User model and login response
This commit is contained in:
@@ -12,6 +12,11 @@ const userSchema = new mongoose.Schema({
|
|||||||
sparse: true,
|
sparse: true,
|
||||||
index: true
|
index: true
|
||||||
},
|
},
|
||||||
|
userId: {
|
||||||
|
type: String,
|
||||||
|
unique: true,
|
||||||
|
index: true
|
||||||
|
},
|
||||||
nickname: {
|
nickname: {
|
||||||
type: String,
|
type: String,
|
||||||
default: ''
|
default: ''
|
||||||
|
|||||||
+21
-1
@@ -4,6 +4,23 @@ const axios = require('axios');
|
|||||||
const jwt = require('jsonwebtoken');
|
const jwt = require('jsonwebtoken');
|
||||||
const User = require('../models/User');
|
const User = require('../models/User');
|
||||||
|
|
||||||
|
async function generateUserId() {
|
||||||
|
const lastUser = await User.findOne({ userId: { $exists: true } })
|
||||||
|
.sort({ userId: -1 })
|
||||||
|
.select('userId')
|
||||||
|
.lean();
|
||||||
|
|
||||||
|
let nextNumber = 1;
|
||||||
|
if (lastUser && lastUser.userId) {
|
||||||
|
const lastNumber = parseInt(lastUser.userId, 10);
|
||||||
|
if (!isNaN(lastNumber)) {
|
||||||
|
nextNumber = lastNumber + 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return nextNumber.toString().padStart(8, '0');
|
||||||
|
}
|
||||||
|
|
||||||
router.post('/wechat-login', async (req, res, next) => {
|
router.post('/wechat-login', async (req, res, next) => {
|
||||||
try {
|
try {
|
||||||
const { code, userInfo } = req.body;
|
const { code, userInfo } = req.body;
|
||||||
@@ -40,9 +57,12 @@ router.post('/wechat-login', async (req, res, next) => {
|
|||||||
let user = await User.findOne({ openid });
|
let user = await User.findOne({ openid });
|
||||||
|
|
||||||
if (!user) {
|
if (!user) {
|
||||||
|
const userId = await generateUserId();
|
||||||
|
|
||||||
user = await User.create({
|
user = await User.create({
|
||||||
openid,
|
openid,
|
||||||
unionid: unionid || undefined,
|
unionid: unionid || undefined,
|
||||||
|
userId,
|
||||||
nickname: userInfo?.nickName || '',
|
nickname: userInfo?.nickName || '',
|
||||||
avatarUrl: userInfo?.avatarUrl || '',
|
avatarUrl: userInfo?.avatarUrl || '',
|
||||||
profile: {
|
profile: {
|
||||||
@@ -72,7 +92,7 @@ router.post('/wechat-login', async (req, res, next) => {
|
|||||||
data: {
|
data: {
|
||||||
token,
|
token,
|
||||||
user: {
|
user: {
|
||||||
id: user._id,
|
userId: user.userId,
|
||||||
nickname: user.nickname,
|
nickname: user.nickname,
|
||||||
avatarUrl: user.avatarUrl,
|
avatarUrl: user.avatarUrl,
|
||||||
status: user.status,
|
status: user.status,
|
||||||
|
|||||||
Reference in New Issue
Block a user