✨ feat(账号登陆): 添加上次登录的设备号字段
This commit is contained in:
+21
-17
@@ -102,6 +102,9 @@ export default class User extends BaseModel {
|
|||||||
@prop({ required: true, type: String, default: [], _id: false })
|
@prop({ required: true, type: String, default: [], _id: false })
|
||||||
device: string[];
|
device: string[];
|
||||||
|
|
||||||
|
@prop({ required: true, default: [], _id: false })
|
||||||
|
deviceId: string;
|
||||||
|
|
||||||
@prop({ required: true, default: 'com.bantu.zyz' })
|
@prop({ required: true, default: 'com.bantu.zyz' })
|
||||||
pkgName: string;
|
pkgName: string;
|
||||||
|
|
||||||
@@ -125,7 +128,7 @@ export default class User extends BaseModel {
|
|||||||
const userCode = genCode(8);
|
const userCode = genCode(8);
|
||||||
const doc = new UserModel();
|
const doc = new UserModel();
|
||||||
let update = {};
|
let update = {};
|
||||||
update = Object.assign(update, doc.toJSON(), { platform, pkgName, serverType, createTime: curTime, uid, userCode, username: `用户${uid}`, isGuest, token, lastLoginTime: curTime, guestTime, ip });
|
update = Object.assign(update, doc.toJSON(), { platform, pkgName, serverType, createTime: curTime, uid, userCode, username: `用户${uid}`, isGuest, token, lastLoginTime: curTime, guestTime, ip, deviceId });
|
||||||
if (isGuest) update["guestId"] = _tel;
|
if (isGuest) update["guestId"] = _tel;
|
||||||
delete update["device"];
|
delete update["device"];
|
||||||
|
|
||||||
@@ -140,7 +143,7 @@ export default class User extends BaseModel {
|
|||||||
const userCode = genCode(8);
|
const userCode = genCode(8);
|
||||||
const doc = new UserModel();
|
const doc = new UserModel();
|
||||||
let update = {};
|
let update = {};
|
||||||
update = Object.assign(update, doc.toJSON(), { platform, pkgName, serverType, createTime: curTime, uid, userCode, username: `用户${uid}`, token, lastLoginTime: curTime, ip, channelInfo, channelType });
|
update = Object.assign(update, doc.toJSON(), { platform, pkgName, serverType, createTime: curTime, uid, userCode, username: `用户${uid}`, token, lastLoginTime: curTime, ip, channelInfo, channelType, deviceId });
|
||||||
delete update["device"];
|
delete update["device"];
|
||||||
|
|
||||||
const user: UserType = await UserModel.findOneAndUpdate({ channelId }, { $set: update, $addToSet: { device: deviceId } }, { upsert: true, new: true }).lean({ getters: true });
|
const user: UserType = await UserModel.findOneAndUpdate({ channelId }, { $set: update, $addToSet: { device: deviceId } }, { upsert: true, new: true }).lean({ getters: true });
|
||||||
@@ -164,7 +167,7 @@ export default class User extends BaseModel {
|
|||||||
|
|
||||||
const curTime: Date = new Date();
|
const curTime: Date = new Date();
|
||||||
|
|
||||||
let user = await UserModel.findOneAndUpdate({ channelId }, { $set: { token, lastLoginTime: curTime, ip, channelInfo }, $addToSet: { device: deviceId } }, { new: true }).lean({ getters: true });
|
let user = await UserModel.findOneAndUpdate({ channelId }, { $set: { token, lastLoginTime: curTime, ip, channelInfo, deviceId }, $addToSet: { device: deviceId } }, { new: true }).lean({ getters: true });
|
||||||
return user;
|
return user;
|
||||||
}
|
}
|
||||||
public static async updateGetuiCID(tel: string, cid: string) {
|
public static async updateGetuiCID(tel: string, cid: string) {
|
||||||
@@ -180,25 +183,26 @@ export default class User extends BaseModel {
|
|||||||
public static async createOrUpdate(isGuest: boolean, tel: string, token: string, platform: string, pkgName: string, serverType: string, deviceId: string, ip: string) {
|
public static async createOrUpdate(isGuest: boolean, tel: string, token: string, platform: string, pkgName: string, serverType: string, deviceId: string, ip: string) {
|
||||||
// console.log(tel);
|
// console.log(tel);
|
||||||
|
|
||||||
let user: UserType = await UserModel.findOne({ tel }).lean({ getters: true });
|
let oldUser: UserType = await UserModel.findOne({ tel }).lean({ getters: true });
|
||||||
if (!user) {
|
if (!oldUser) {
|
||||||
user = await UserModel.createUser(isGuest, tel, token, platform, pkgName, serverType, deviceId, 0, ip);
|
let user = await UserModel.createUser(isGuest, tel, token, platform, pkgName, serverType, deviceId, 0, ip);
|
||||||
|
return { isCreate: true, user, deviceId: null};
|
||||||
} else {
|
} else {
|
||||||
user = await UserModel.updateToken(tel, token, deviceId, ip);
|
let user = await UserModel.updateToken(tel, token, deviceId, ip);
|
||||||
|
return { isCreate: true, user, deviceId: oldUser.deviceId};
|
||||||
}
|
}
|
||||||
return user;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static async createOrUpdateChannelUser(channelId: string, channelType: string, channelInfo: ChannelInfo, token: string, platform: string, pkgName: string, serverType: string, deviceId: string, ip: string) {
|
public static async createOrUpdateChannelUser(channelId: string, channelType: string, channelInfo: ChannelInfo, token: string, platform: string, pkgName: string, serverType: string, deviceId: string, ip: string) {
|
||||||
// console.log(tel);
|
// console.log(tel);
|
||||||
|
|
||||||
let user: UserType = await UserModel.findUserByChannel(channelId);
|
let oldUser: UserType = await UserModel.findUserByChannel(channelId);
|
||||||
if (!user) {
|
if (!oldUser) {
|
||||||
user = await UserModel.createUserWithChannel(channelId, channelType, channelInfo, token, platform, pkgName, serverType, deviceId, ip);
|
let user = await UserModel.createUserWithChannel(channelId, channelType, channelInfo, token, platform, pkgName, serverType, deviceId, ip);
|
||||||
return { isCreate: true, user};
|
return { isCreate: true, user, deviceId: null};
|
||||||
} else {
|
} else {
|
||||||
user = await UserModel.updateTokenByChannel(channelId, token, deviceId, ip, channelInfo);
|
let user = await UserModel.updateTokenByChannel(channelId, token, deviceId, ip, channelInfo);
|
||||||
return { isCreate: false, user};
|
return { isCreate: false, user, deviceId: oldUser.deviceId};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -228,10 +232,10 @@ export default class User extends BaseModel {
|
|||||||
const curTime: Date = new Date();
|
const curTime: Date = new Date();
|
||||||
let { salt } = user;
|
let { salt } = user;
|
||||||
let { npassword } = await this.encryptPass(password, salt);
|
let { npassword } = await this.encryptPass(password, salt);
|
||||||
const checkUser: UserType = await UserModel.findOneAndUpdate({ tel, password: npassword }, { $set: { token, lastLoginTime: curTime }, $addToSet: { device: deviceId } }, { new: true }).lean({ getters: true });
|
const checkUser: UserType = await UserModel.findOneAndUpdate({ tel, password: npassword }, { $set: { token, lastLoginTime: curTime, deviceId }, $addToSet: { device: deviceId } }, { new: true }).lean({ getters: true });
|
||||||
return checkUser;
|
return {user: checkUser, deviceId: user.deviceId};
|
||||||
} else {
|
} else {
|
||||||
return null
|
return {user: null, deviceId: null};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -31,29 +31,29 @@ export default class Auth extends Service {
|
|||||||
public async deviceLogin(isGuest: boolean, token: string, deviceId: string, platform: string, pkgName: string, serverType: string, getuiCID: string) {
|
public async deviceLogin(isGuest: boolean, token: string, deviceId: string, platform: string, pkgName: string, serverType: string, getuiCID: string) {
|
||||||
const ctx = this.ctx;
|
const ctx = this.ctx;
|
||||||
|
|
||||||
let user = await UserModel.findUserByToken(token);
|
let oldUser = await UserModel.findUserByToken(token);
|
||||||
|
|
||||||
if (!user) {
|
if (!oldUser) {
|
||||||
if (isGuest) {
|
if (isGuest) {
|
||||||
const tel = ctx.service.utils.genCode(10);
|
const tel = ctx.service.utils.genCode(10);
|
||||||
const token = ctx.service.utils.generateStr(256);
|
const token = ctx.service.utils.generateStr(256);
|
||||||
let lastGuest = await UserModel.getLastDeviceGuest(deviceId, token);
|
let lastGuest = await UserModel.getLastDeviceGuest(deviceId, token);
|
||||||
if (lastGuest) {
|
if (lastGuest) {
|
||||||
let param = this.getReturnParam(lastGuest);
|
let param = this.getReturnParam(lastGuest, lastGuest.deviceId);
|
||||||
return this.ctx.service.utils.resResult(STATUS.SUCCESS, {
|
return this.ctx.service.utils.resResult(STATUS.SUCCESS, {
|
||||||
canLogin: true, // 未设置密码等于未创建账号
|
canLogin: true, // 未设置密码等于未创建账号
|
||||||
...param
|
...param
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
user = await UserModel.createUser(isGuest, tel, token, platform, pkgName, serverType, deviceId, 0, ctx.clientIp);
|
let user = await UserModel.createUser(isGuest, tel, token, platform, pkgName, serverType, deviceId, 0, ctx.clientIp);
|
||||||
if (getuiCID) {//更新个推cid
|
if (getuiCID) {//更新个推cid
|
||||||
await UserModel.updateGetuiCID(tel, getuiCID);
|
await UserModel.updateGetuiCID(tel, getuiCID);
|
||||||
}
|
}
|
||||||
if(user && user.userCode) {
|
if(user && user.userCode) {
|
||||||
ctx.service.utils.checkOnlineUser(user.userCode);
|
ctx.service.utils.checkOnlineUser(user.userCode);
|
||||||
}
|
}
|
||||||
let param = this.getReturnParam(user);
|
let param = this.getReturnParam(user, null);
|
||||||
|
|
||||||
return this.ctx.service.utils.resResult(STATUS.SUCCESS, {
|
return this.ctx.service.utils.resResult(STATUS.SUCCESS, {
|
||||||
canLogin: true,
|
canLogin: true,
|
||||||
@@ -69,14 +69,14 @@ export default class Auth extends Service {
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
const token = ctx.service.utils.generateStr(256);
|
const token = ctx.service.utils.generateStr(256);
|
||||||
user = await UserModel.updateToken(user.tel, token, deviceId, ctx.clientIp);
|
let user = await UserModel.updateToken(oldUser.tel, token, deviceId, ctx.clientIp);
|
||||||
if (getuiCID) {//更新个推cid
|
if (getuiCID) {//更新个推cid
|
||||||
await UserModel.updateGetuiCID(user.tel, getuiCID);
|
await UserModel.updateGetuiCID(user.tel, getuiCID);
|
||||||
}
|
}
|
||||||
if(user && user.userCode) {
|
if(user && user.userCode) {
|
||||||
ctx.service.utils.checkOnlineUser(user.userCode);
|
ctx.service.utils.checkOnlineUser(user.userCode);
|
||||||
}
|
}
|
||||||
let param = this.getReturnParam(user);
|
let param = this.getReturnParam(user, oldUser.deviceId);
|
||||||
|
|
||||||
let canLogin = true;
|
let canLogin = true;
|
||||||
if (!user.isGuest && !user.hasSetPw) canLogin = false;
|
if (!user.isGuest && !user.hasSetPw) canLogin = false;
|
||||||
@@ -88,7 +88,7 @@ export default class Auth extends Service {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private getReturnParam(user: UserType) {
|
private getReturnParam(user: UserType, deviceId: string) {
|
||||||
let age = getAge(user.birthday);
|
let age = getAge(user.birthday);
|
||||||
let isAdult = age >= ADULT_AGE;
|
let isAdult = age >= ADULT_AGE;
|
||||||
let todayPlayTime = user.todayPlayTime;
|
let todayPlayTime = user.todayPlayTime;
|
||||||
@@ -107,7 +107,8 @@ export default class Auth extends Service {
|
|||||||
type, // 防沉迷类型
|
type, // 防沉迷类型
|
||||||
hasSetPw: user.hasSetPw, // 是否设置了密码
|
hasSetPw: user.hasSetPw, // 是否设置了密码
|
||||||
token: user.token, // 用户token
|
token: user.token, // 用户token
|
||||||
userCode: user.userCode // 用户标识
|
userCode: user.userCode, // 用户标识
|
||||||
|
deviceId
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -223,14 +224,14 @@ export default class Auth extends Service {
|
|||||||
|
|
||||||
// 用户注册登录
|
// 用户注册登录
|
||||||
const token = ctx.service.utils.generateStr(256);
|
const token = ctx.service.utils.generateStr(256);
|
||||||
const user = await UserModel.createOrUpdate(false, tel, token, platform, pkgName, serverType, deviceId, ctx.clientIp);
|
const {user, deviceId: oldDeviceId} = await UserModel.createOrUpdate(false, tel, token, platform, pkgName, serverType, deviceId, ctx.clientIp);
|
||||||
if (getuiCID) {//更新个推cid
|
if (getuiCID) {//更新个推cid
|
||||||
await UserModel.updateGetuiCID(tel, getuiCID);
|
await UserModel.updateGetuiCID(tel, getuiCID);
|
||||||
}
|
}
|
||||||
if(user && user.userCode) {
|
if(user && user.userCode) {
|
||||||
ctx.service.utils.checkOnlineUser(user.userCode);
|
ctx.service.utils.checkOnlineUser(user.userCode);
|
||||||
}
|
}
|
||||||
let param = this.getReturnParam(user);
|
let param = this.getReturnParam(user, oldDeviceId);
|
||||||
return ctx.service.utils.resResult(STATUS.SUCCESS, param);
|
return ctx.service.utils.resResult(STATUS.SUCCESS, param);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -261,7 +262,7 @@ export default class Auth extends Service {
|
|||||||
|
|
||||||
let user = await UserModel.setPass(uid, password);
|
let user = await UserModel.setPass(uid, password);
|
||||||
if (user) {
|
if (user) {
|
||||||
let param = this.getReturnParam(user);
|
let param = this.getReturnParam(user, user.deviceId);
|
||||||
return ctx.service.utils.resResult(STATUS.SUCCESS, param);
|
return ctx.service.utils.resResult(STATUS.SUCCESS, param);
|
||||||
} else {
|
} else {
|
||||||
return ctx.service.utils.resResult(STATUS.INTERNAL_ERR);
|
return ctx.service.utils.resResult(STATUS.INTERNAL_ERR);
|
||||||
@@ -287,7 +288,7 @@ export default class Auth extends Service {
|
|||||||
|
|
||||||
// 用户注册登录
|
// 用户注册登录
|
||||||
const token = ctx.service.utils.generateStr(256);
|
const token = ctx.service.utils.generateStr(256);
|
||||||
const user = await UserModel.checkPass(tel, pw, token, deviceId);
|
const {user, deviceId: oldDeviceId} = await UserModel.checkPass(tel, pw, token, deviceId);
|
||||||
if (!user) return ctx.service.utils.resResult(STATUS.PASSWORD_ERR);
|
if (!user) return ctx.service.utils.resResult(STATUS.PASSWORD_ERR);
|
||||||
if (getuiCID) {//更新个推cid
|
if (getuiCID) {//更新个推cid
|
||||||
await UserModel.updateGetuiCID(tel, getuiCID);
|
await UserModel.updateGetuiCID(tel, getuiCID);
|
||||||
@@ -295,7 +296,7 @@ export default class Auth extends Service {
|
|||||||
if(user && user.userCode) {
|
if(user && user.userCode) {
|
||||||
ctx.service.utils.checkOnlineUser(user.userCode);
|
ctx.service.utils.checkOnlineUser(user.userCode);
|
||||||
}
|
}
|
||||||
let param = this.getReturnParam(user);
|
let param = this.getReturnParam(user, oldDeviceId);
|
||||||
return ctx.service.utils.resResult(STATUS.SUCCESS, { ...param });
|
return ctx.service.utils.resResult(STATUS.SUCCESS, { ...param });
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -392,7 +393,7 @@ export default class Auth extends Service {
|
|||||||
|
|
||||||
let user = await UserModel.bindTel(ctx.uid, tel);
|
let user = await UserModel.bindTel(ctx.uid, tel);
|
||||||
if (!user) return ctx.service.utils.resResult(STATUS.ACCOUNT_NOT_GUEST);
|
if (!user) return ctx.service.utils.resResult(STATUS.ACCOUNT_NOT_GUEST);
|
||||||
let param = this.getReturnParam(user);
|
let param = this.getReturnParam(user, user.deviceId);
|
||||||
return ctx.service.utils.resResult(STATUS.SUCCESS, param);
|
return ctx.service.utils.resResult(STATUS.SUCCESS, param);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -409,7 +410,7 @@ export default class Auth extends Service {
|
|||||||
|
|
||||||
let birthday = this.getBirthdayByIdCard(idNum);
|
let birthday = this.getBirthdayByIdCard(idNum);
|
||||||
let user = await UserModel.authentication(ctx.uid, birthday, '');
|
let user = await UserModel.authentication(ctx.uid, birthday, '');
|
||||||
let param = this.getReturnParam(user);
|
let param = this.getReturnParam(user, user.deviceId);
|
||||||
return ctx.service.utils.resResult(STATUS.SUCCESS, param);
|
return ctx.service.utils.resResult(STATUS.SUCCESS, param);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -440,7 +441,7 @@ export default class Auth extends Service {
|
|||||||
|
|
||||||
let channelId = getChannelId(channelType, requestResult.data.uid);
|
let channelId = getChannelId(channelType, requestResult.data.uid);
|
||||||
const token = ctx.service.utils.generateStr(256);
|
const token = ctx.service.utils.generateStr(256);
|
||||||
let { user} = await UserModel.createOrUpdateChannelUser(channelId, channelType, {
|
let { user, deviceId: oldDeviceId } = await UserModel.createOrUpdateChannelUser(channelId, channelType, {
|
||||||
...requestResult.data, childGameId:`${childGameId}`, platformAppid
|
...requestResult.data, childGameId:`${childGameId}`, platformAppid
|
||||||
}, token, platform, pkgName, serverType, deviceId, ctx.clientIp);
|
}, token, platform, pkgName, serverType, deviceId, ctx.clientIp);
|
||||||
if(user && user.userCode) {
|
if(user && user.userCode) {
|
||||||
@@ -459,7 +460,8 @@ export default class Auth extends Service {
|
|||||||
channelId,
|
channelId,
|
||||||
token: user.token,
|
token: user.token,
|
||||||
userCode: user.userCode,
|
userCode: user.userCode,
|
||||||
channelInfo
|
channelInfo,
|
||||||
|
deviceId: oldDeviceId
|
||||||
});
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user