feat: 邀请码
This commit is contained in:
@@ -68,28 +68,31 @@ module.exports = {
|
|||||||
signUpReqInviter: inject(function(SysConfig) {
|
signUpReqInviter: inject(function(SysConfig) {
|
||||||
const { JWT_SECRET, PWD_HASH_SALT } = SysConfig;
|
const { JWT_SECRET, PWD_HASH_SALT } = SysConfig;
|
||||||
return async (req, res) => {
|
return async (req, res) => {
|
||||||
let { phone, code, inviter, password } = req.body;
|
let { phone, code, inviteCode, password } = req.body;
|
||||||
if (!phone || !code || !password || !inviter) return res.json({
|
if (!phone || !code || !password || !inviteCode) return res.json({
|
||||||
code: 1,
|
code: 1,
|
||||||
msg: 'Missing required parameters'
|
msg: 'Missing required parameters'
|
||||||
});
|
});
|
||||||
const validInviter = await User.findById(inviter).catch(err => null);
|
const invitePhone = '+86-' + parseInt(inviteCode);
|
||||||
|
const validInviter = await User.findOne({ phone: invitePhone }).catch(null);
|
||||||
if (!validInviter) return res.json({
|
if (!validInviter) return res.json({
|
||||||
code: 4,
|
code: 4,
|
||||||
msg: '邀请人不存在'
|
msg: '邀请人不存在'
|
||||||
});
|
});
|
||||||
const isCodeValid = await Code.verifyCode({ id: phone, code, type: CODE_TYPE['signUp'] });
|
const isCodeValid = await Code.verifyCode({ id: phone, code, type: CODE_TYPE['signUp'] });
|
||||||
password = Crypto.hash(password, { salt: PWD_HASH_SALT });
|
password = Crypto.hash(password, { salt: PWD_HASH_SALT });
|
||||||
|
const newInviteCode = typeof phone === 'string' && parseInt(phone.split('-')[1]).toString(36);
|
||||||
if (isCodeValid) {
|
if (isCodeValid) {
|
||||||
await createNewUser({
|
await createNewUser({
|
||||||
phone,
|
phone,
|
||||||
inviter,
|
inviter: validInviter.id,
|
||||||
password
|
password,
|
||||||
|
inviteCode: newInviteCode
|
||||||
}).then(user => {
|
}).then(user => {
|
||||||
User.findByIdAndUpdate(inviter, { $push: { group: user.id } }).catch(err => {
|
User.findByIdAndUpdate(validInviter.id, { $push: { group: user.id } }).catch(err => {
|
||||||
mylog.error('将被邀请人加入到邀请人队列失败', err && err.errmsg);
|
mylog.error('将被邀请人加入到邀请人队列失败 uid', user.id, err && err.errmsg);
|
||||||
});
|
});
|
||||||
new Fund({userId: user.id }).save().catch(err => mylog.error('用户资金文档创建失败', err && err.errmsg));
|
new Fund({userId: user.id }).save().catch(err => mylog.error('用户资金文档创建失败 uid', user.id, err && err.errmsg));
|
||||||
const token = createToken({
|
const token = createToken({
|
||||||
userId: user.id
|
userId: user.id
|
||||||
}, JWT_SECRET, {});
|
}, JWT_SECRET, {});
|
||||||
|
|||||||
@@ -5,8 +5,8 @@ const changePwd = require('../sign/sign.controller').changePasswd;
|
|||||||
module.exports = {
|
module.exports = {
|
||||||
changePwd,
|
changePwd,
|
||||||
async createNewUser (data) {
|
async createNewUser (data) {
|
||||||
let { phone, inviter = '', password } = data;
|
const { phone, inviter = '', password, inviteCode } = data;
|
||||||
return await (new User({ phone, inviter, password })).save().then(user => user).catch(err => {
|
return await (new User({ phone, inviter, password, inviteCode })).save().then(user => user).catch(err => {
|
||||||
mylog.error('创建新用户失败', err);
|
mylog.error('创建新用户失败', err);
|
||||||
throw new Error('创建新用户失败', err.errmsg);
|
throw new Error('创建新用户失败', err.errmsg);
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -19,6 +19,9 @@ const UserSchema = new mongoose.Schema({
|
|||||||
inviter: {
|
inviter: {
|
||||||
type: String,
|
type: String,
|
||||||
},
|
},
|
||||||
|
inviteCode: {
|
||||||
|
type: String
|
||||||
|
},
|
||||||
asset: {
|
asset: {
|
||||||
type: {}
|
type: {}
|
||||||
},
|
},
|
||||||
|
|||||||
Reference in New Issue
Block a user