/* * @Author: 尹鹏孝 * @Date: 2021-08-31 15:01:10 * @LastEditTime: 2021-09-03 16:53:06 * @LastEditors: Please set LastEditors * @Description: 查询用户 * @FilePath: \koa2-test-api\src\service\user.js */ const { get, set } = require('../cache/_redis.js'); const { User, } = require('../model/User.js'); /** * * @param {Object} param0 user_name:用户名,password:密码 * @returns */ async function findUser({ user_name, password }) { let user = { attributes: ['user_name', 'id', 'scope', 'createdAt', 'updatedAt'] }; //通过用户名和密码查用户 if (password) { user.where = { password, user_name } } else { user.where = { user_name: user_name || '', } } //请求先去redis里面查询,如果有而且没过期就返回,不用再去数据库查询,如果过期就去数据库查询,然后再存储到redis中 let result = null; result = await get(user_name); console.log('在redis里面查询当前登录用户:', result); if (result == null) { result = await User.findOne(user); if (result) { result = result.dataValues; //用户第一次登陆首查询后首先存储在redis中 console.log('查询结果', result); set(result.user_name, JSON.stringify(result)); return result; } else { return {} } } else { return result; } } /** * 创建用户 * @param {object} param0 user_name用户名,password:密码,scope:区域 * @returns */ async function createUser({ user_name, password, scope }) { try { console.log("创建函数:"); const user = await User.create({ user_name, password, scope }); console.log('创建用户是否成功', user); return user } catch (error) { console.log('创建用户失败', error.errors[0].ValidationErrorItem); return { errorCode: '400', msg: '密码不符合规则,请按规则输入' } } } /** * 更新用户数据 * @param {object} param0 user_name:用户名,password:密码,newPassword:新密码 */ async function updateUser({ user_name, password, newPassword }) { let updateData = {}; if (newPassword) { updateData.password = newPassword; } //拼接查询条件 let whereData = { user_name: user_name }; if (password) { whereData.password = password; } const updateUser = await User.update(updateData, { where: whereData }); console.log('输出更新:', updateUser); } module.exports = { findUser, createUser, updateUser }