- 新增 findUserList 控制器方法,用于查询用户列表 - 创建 Search 模型类,用于处理查询参数 - 在用户仓库中实现 selectUserList 方法,用于数据库查询 - 更新用户服务,添加 find_user_list 方法 - 在路由中注册新的用户列表查询 endpoint
96 lines
2.0 KiB
JavaScript
96 lines
2.0 KiB
JavaScript
const userMapper = require('../repositories/userRepository')
|
|
const logger = require('morgan')
|
|
const messages = require('../config/messages')
|
|
const { comparePassword } = require('../utils/hashUtils')
|
|
|
|
/**
|
|
* @param {string} account
|
|
* @param {string} password
|
|
* @returns {Promise<object>}
|
|
*/
|
|
exports.login = async (account, password) => {
|
|
try {
|
|
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
|
|
} catch (err) {
|
|
logger('Error logging in: ', err)
|
|
throw err
|
|
}
|
|
}
|
|
|
|
/**
|
|
*
|
|
* @param {string} account
|
|
* @returns {Promise<boolean>}
|
|
*/
|
|
exports.get_user_exist = async (account) => {
|
|
try {
|
|
return await userMapper.selectUserByAccountExist(account)
|
|
} catch (err) {
|
|
throw err
|
|
}
|
|
}
|
|
|
|
exports.user_list = async () => {
|
|
try {
|
|
const list_users = await userMapper.selectAllUser()
|
|
return list_users
|
|
} catch (err) {
|
|
throw err
|
|
}
|
|
}
|
|
|
|
exports.find_user_list = async (search) => {
|
|
try {
|
|
return await userMapper.selectUserList(search)
|
|
} catch (err) {
|
|
throw err
|
|
}
|
|
}
|
|
|
|
exports.create_user = async (user) => {
|
|
try {
|
|
const { account } = user
|
|
|
|
const session = await userMapper.startTransaction()
|
|
|
|
try {
|
|
const check_user = await userMapper.selectUserByAccount(account)
|
|
|
|
if (check_user) {
|
|
throw new Error(messages.user.already_exists)
|
|
}
|
|
|
|
const result = await userMapper.createUser(user)
|
|
|
|
await userMapper.commitTransaction(session)
|
|
return result
|
|
} catch (err) {
|
|
try {
|
|
await userMapper.rollbackTransaction(session)
|
|
} catch (roolbackErr) {
|
|
logger('Error rolling back transaction: ', roolbackErr)
|
|
}
|
|
throw err
|
|
}
|
|
} catch (err) {
|
|
logger('Error creating user: ', err)
|
|
throw err
|
|
}
|
|
}
|