推送:保存用户个推cid

This commit is contained in:
qiaoxin
2021-07-05 19:15:40 +08:00
parent 33dcb728e2
commit 6492c8ce0d
5 changed files with 127 additions and 107 deletions

View File

@@ -36,10 +36,10 @@ export default class Getui_Tags extends BaseModel {
return result;
}
//添加个推信息
public static async insertRole(roleId: string, cid: string, tags: string[]) {
//添加/更新个推信息
public static async updateCID(roleId: string, cid: string) {
let result: GetuiTagsModelType = await GetuiTagsModel.findOneAndUpdate(
{ roleId, cid }, { $set: { tags: tags } }, { upsert: true, new: true }).lean(true);
{ roleId }, { $set: { cid: cid } }, { upsert: true, new: true }).lean(true);
return result;
}

View File

@@ -101,6 +101,10 @@ export default class User extends BaseModel {
@prop({ required: true, default: 0 })
auth: number;
// 个推CID
@prop({ required: false, default: "" })
getuiCID: string;
public static async createUser(isGuest: boolean, tel: string, token: string, platform: string, pkgName: string, serverType: string, deviceId: string, guestTime: number = 0) {
let _tel = aesEncryptcfb(tel, ENCRYPT_KEY, ENCRYPT_IV);
const curTime: Date = new Date();
@@ -110,15 +114,15 @@ export default class User extends BaseModel {
const doc = new UserModel();
let update = {};
update = Object.assign(update, doc.toJSON(), { platform, pkgName, serverType, createTime: curTime, uid, userCode, username: `用户${uid}`, isGuest, token, lastLoginTime: curTime, guestTime });
if(isGuest) update["guestId"] = _tel;
if (isGuest) update["guestId"] = _tel;
delete update["device"];
const user: UserType = await UserModel.findOneAndUpdate({ tel }, { $set: update, $addToSet: {device: deviceId}}, { upsert: true, new: true }).lean({ getters: true });
const user: UserType = await UserModel.findOneAndUpdate({ tel }, { $set: update, $addToSet: { device: deviceId } }, { upsert: true, new: true }).lean({ getters: true });
return user;
}
public static async getLastDeviceGuest(deviceId: string, token: string) {
const user: UserType = await UserModel.findOneAndUpdate({ device: { $elemMatch: { $eq: deviceId } }, isGuest: true }, { token }, { new: true }).sort({createTime: -1}).lean({ getters: true });
const user: UserType = await UserModel.findOneAndUpdate({ device: { $elemMatch: { $eq: deviceId } }, isGuest: true }, { token }, { new: true }).sort({ createTime: -1 }).lean({ getters: true });
return user;
}
@@ -126,7 +130,12 @@ export default class User extends BaseModel {
const curTime: Date = new Date();
let user = await UserModel.findOneAndUpdate({ tel }, { $set: { token, lastLoginTime: curTime }, $addToSet: {device: deviceId}}, { new: true }).lean({ getters: true });
let user = await UserModel.findOneAndUpdate({ tel }, { $set: { token, lastLoginTime: curTime }, $addToSet: { device: deviceId } }, { new: true }).lean({ getters: true });
return user;
}
public static async updateGetuiCID(tel: string, cid: string) {
let user = await UserModel.findOneAndUpdate({ tel }, { $set: { getuiCID: cid } }, { new: true }).lean({ getters: true });
return user;
}
@@ -144,7 +153,7 @@ export default class User extends BaseModel {
private static async encryptPass(password: string, salt?: string) {
if (!salt) {
salt = await bcrypt.genSalt(SALT_WORK_FACTOR);
salt = await bcrypt.genSalt(SALT_WORK_FACTOR);
}
let npassword = await bcrypt.hash(password, salt);
return { npassword, salt };
@@ -152,12 +161,12 @@ export default class User extends BaseModel {
public static async setPass(uid: number, password: string) {
let r = await this.encryptPass(password);
const user: UserType = await UserModel.findOneAndUpdate({ uid }, { $set: { password: r.npassword, salt: r.salt, hasSetPw: true }}, {new: true}).lean({ getters: true });
const user: UserType = await UserModel.findOneAndUpdate({ uid }, { $set: { password: r.npassword, salt: r.salt, hasSetPw: true } }, { new: true }).lean({ getters: true });
return user;
}
public static async bindTel(uid: number, tel: string) {
const user: UserType = await UserModel.findOneAndUpdate({ uid, isGuest: true }, { $set: { tel, isGuest: false }}, {new: true}).lean({ getters: true });
const user: UserType = await UserModel.findOneAndUpdate({ uid, isGuest: true }, { $set: { tel, isGuest: false } }, { new: true }).lean({ getters: true });
return user;
}
@@ -166,12 +175,12 @@ export default class User extends BaseModel {
const user: UserType = await UserModel.findOne({ tel }).select('salt').lean({ getters: true });
if (user) {
const curTime: Date = new Date();
let { salt } = user;
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 });
return checkUser;
let { salt } = user;
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 });
return checkUser;
} else {
return null
return null
}
}
@@ -208,18 +217,18 @@ export default class User extends BaseModel {
}
public static async addAuth(uid: number, auth: number) {
const user: UserType = await UserModel.findOneAndUpdate({ uid }, { auth }, {new: true}).select('uid tel').lean({ getters: true });
const user: UserType = await UserModel.findOneAndUpdate({ uid }, { auth }, { new: true }).select('uid tel').lean({ getters: true });
return user;
}
public static async authentication(uid: number, birthday: string, pi: string) {
const user: UserType = await UserModel.findOneAndUpdate({ uid }, { hasAuthenticated: true, birthday, pi }, {new: true}).lean({ getters: true });
const user: UserType = await UserModel.findOneAndUpdate({ uid }, { hasAuthenticated: true, birthday, pi }, { new: true }).lean({ getters: true });
return user;
}
public static async findUserByField(field: string, value?: Array<number|string>) {
public static async findUserByField(field: string, value?: Array<number | string>) {
let searchObj = {};
if(field != 'all') {
if (field != 'all') {
searchObj[field] = {
$in: value
};
@@ -231,8 +240,8 @@ export default class User extends BaseModel {
public static async updatePlayTime(userCode: string, guestTimeInc: number, todayPlayTime: number, todayPlayType?: number) {
let update = { todayPlayTime, todayPlayType, reportTime: new Date() };
if(todayPlayType) update.todayPlayType;
const user: UserType = await UserModel.findOneAndUpdate({ userCode }, { $inc: { guestTime: guestTimeInc }, $set: update}, { new: true }).lean({ getters: true });
if (todayPlayType) update.todayPlayType;
const user: UserType = await UserModel.findOneAndUpdate({ userCode }, { $inc: { guestTime: guestTimeInc }, $set: update }, { new: true }).lean({ getters: true });
return user;
}
}
@@ -240,4 +249,4 @@ export default class User extends BaseModel {
export const UserModel = getModelForClass(User);
export interface UserType extends Pick<DocumentType<User>, keyof User>{};
export interface UserType extends Pick<DocumentType<User>, keyof User> { };