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
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;
|
|
}
|
|
}
|