- 移除 app.js 中的冗余配置 - 更新 userController.js 中的导入和函数名称 - 修改 Search.js 中的类名 - 重构 userService.js 中的 login 和其他用户相关函数 - 优化错误处理和事务管理
84 lines
2.3 KiB
JavaScript
84 lines
2.3 KiB
JavaScript
const userMapper = require('../repositories/userRepository')
|
||
const logger = require('morgan')
|
||
const messages = require('../config/messages')
|
||
const { comparePassword } = require('../utils/hashUtils')
|
||
const { SearchQuery } = require('../models/Search')
|
||
|
||
/**
|
||
* 用户登录
|
||
* @param {string} account - 用户账号
|
||
* @param {string} password - 用户密码
|
||
* @returns {Promise<Object>} - 登录成功返回用户信息
|
||
* @throws {Error} - 如果用户不存在或密码不正确
|
||
*/
|
||
exports.login = async (account, password) => {
|
||
const user = await userMapper.selectUserByAccount(account)
|
||
|
||
// 用户不存在
|
||
if (!user) {
|
||
throw new Error(messages.user.not_found)
|
||
}
|
||
|
||
// 密码不匹配
|
||
const isMatch = await comparePassword(password, user.password)
|
||
if (!isMatch) {
|
||
throw new Error(messages.user.password_incorrect)
|
||
}
|
||
|
||
// 更新用户的最后登录时间
|
||
user.last_login_date = new Date()
|
||
await userMapper.updateUserByLoginDate(user.id, user.last_login_date)
|
||
|
||
return user
|
||
}
|
||
|
||
/**
|
||
*
|
||
* @param {string} account
|
||
* @returns {Promise<boolean>}
|
||
*/
|
||
exports.get_user_exist = async (account) => {
|
||
return userMapper.selectUserByAccountExist(account)
|
||
}
|
||
|
||
// Removed the unnecessary try-catch block and simplified the function
|
||
exports.user_list = async () => {
|
||
return await userMapper.selectAllUser()
|
||
}
|
||
|
||
exports.getUserList = async (searchQuery) => {
|
||
return userMapper.selectUserList(searchQuery)
|
||
}
|
||
|
||
/**
|
||
* 创建用户
|
||
* @param {Object} user - 用户对象
|
||
* @returns {Promise<Object>} - 创建成功的用户信息
|
||
* @throws {Error} - 如果用户已存在或事务失败
|
||
*/
|
||
exports.createUser = async (user) => {
|
||
const { account } = user
|
||
const session = await userMapper.startTransaction()
|
||
|
||
try {
|
||
// 检查用户是否已存在
|
||
const existingUser = await userMapper.selectUserByAccount(account)
|
||
if (existingUser) {
|
||
throw new Error(messages.user.already_exists)
|
||
}
|
||
|
||
// 创建新用户
|
||
const result = await userMapper.createUser(user)
|
||
|
||
// 提交事务
|
||
await userMapper.commitTransaction(session)
|
||
return result
|
||
} catch (err) {
|
||
// 回滚事务
|
||
await userMapper.rollbackTransaction(session).catch((rollbackErr) => {
|
||
logger('Error rolling back transaction: ', rollbackErr)
|
||
})
|
||
throw err // 将错误抛给调用方(Controller 层)
|
||
}
|
||
}
|