You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

181 lines
4.8 KiB

const userCode = require('../../codes/user.js')
const userInfoService = require('../../services/user-info')
module.exports = {
/**
* 修改个人信息,由于用户名和邮箱比较重要,暂不提供修改
* @param {*} ctx
* @param {*} next
*/
async modifyUserinfo(ctx, next) {
let user = ctx.state.user;
let formData = ctx.request.body;
let result = {
message: 'fail',
data: null,
success: false
};
// 根据ID查询
let userResult = await userInfoService.getExistOneByIdOrUserName(user);
if (userResult) {
// 用户信息验证,不校验密码
let validateResult = await userInfoService.validatorNeed(formData, false)
if (!validateResult.success) {
result.success = false;
result.message = validateResult.message;
ctx.body = result
return
}
let r = await userInfoService.update(formData, user.id);
if (r) {
result.success = true;
result.message = 'success';
} else {
result.success = false;
result.message = 'fail';
}
} else {
result.success = false;
result.message = userCode.FAIL_USER_NO_EXIST
}
ctx.body = result
},
async getUserinfo(ctx, next) {
let formData = ctx.state.user;
let result = {
message: '',
data: null,
code: 400
};
let userResult = await userInfoService.getExistOneByIdOrUserName(formData);
if (userResult) {
result.code = 200;
delete userResult.password
result.data = userResult;
} else {
result.message = userCode.FAIL_USER_NO_EXIST
}
ctx.body = result;
},
/**
* 登录操作,返回
* @param {*} ctx
* @param {*} next
*/
async login(ctx, next) {
let formData = ctx.request.body;
let result = {
message: 'fail',
data: null,
success: false
}
let validateResult = await userInfoService.validatorNeed(formData)
if (!validateResult.success) {
result.success = false;
result.message = validateResult.message;
ctx.body = result
return
}
// 是否存在一个相同用户
let existOne = await userInfoService.getExistOne(formData);
if (Array.isArray(existOne)) {
if (existOne.length > 1) {
result.success = false;
result.message = userCode.ERROR_MORE_USER;
ctx.body = result;
return;
}
existOne = existOne[0];
// 密码验证,获取token
let token = await userInfoService.validatorPwd(formData, existOne)
if (!token) {
result.success = false;
result = userCode.FAIL_USER_NAME_OR_PASSWORD_ERROR;
ctx.body = result;
return;
} else {
result.success = true;
result.message = 'success';
result.data = token;
}
} else {
result.success = false;
result.message = userCode.FAIL_USER_NO_EXIST;
ctx.body = result;
return;
}
ctx.body = result;
},
/**
* 注册操作
* @param {*} ctx 上下文
* {
* imgurl,
* email,
* password, 必须
* confirmPassword,必须
* username, 必须
* nickname,
* createTime,
* modifiedTime,
* level
* }
*/
async register(ctx, next) {
let formData = ctx.request.body;
let result = {
success: false,
message: 'fail',
data: null
}
// 用户注册信息验证
let validateResult = await userInfoService.validatorSignUp(formData)
if (!validateResult.success) {
result.success = false;
result.message = validateResult.message;
ctx.body = result;
return
}
// 是否存在一个相同用户
let existOne = await userInfoService.getExistOne(formData);
if (Array.isArray(existOne)) {
if (existOne.length > 1) {
result.success = false;
result.message = userCode.ERROR_MORE_USER;
ctx.body = result;
return;
}
existOne = existOne[0];
// 判断是否存在相同用户名或者邮箱
if (existOne.username === formData.username) {
result.message = userCode.FAIL_USER_NAME_IS_EXIST
ctx.body = result
return
}
if (existOne.email === formData.email) {
result.message = userCode.FAIL_EMAIL_IS_EXIST
ctx.body = result
return
}
}
// 创建用户
let userResult = await userInfoService.create({
imgurl: formData.imgurl,
email: formData.email,
password: formData.password,
username: formData.username,
nickname: formData.nickname,
createTime: new Date().getTime(),
level: 1,
})
if (userResult && userResult.insertId * 1 > 0) {
result.success = true;
result.message = 'success'
} else {
result.message = userCode.ERROR_SYS
}
ctx.body = result;
}
}