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