expressServer/services/userService.js
LingandRX 3cd150b106 feat(user): 添加用户列表查询功能
- 新增 findUserList 控制器方法,用于查询用户列表
- 创建 Search 模型类,用于处理查询参数
- 在用户仓库中实现 selectUserList 方法,用于数据库查询
- 更新用户服务,添加 find_user_list 方法
- 在路由中注册新的用户列表查询 endpoint
2024-12-31 00:17:13 +08:00

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