expressServer/services/userService.js
LingandRX 4edd3c2a26 refactor: 将项目从 CommonJS 迁移到 ES6 模块
- 更新所有文件的导入和导出语法,使用 ES6 模块格式
- 修改 package.json,添加 "type": "module" 配置
- 调整部分代码结构以适应 ES6 模块
2025-01-04 23:54:03 +08:00

83 lines
2.2 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import userMapper from '../repositories/userRepository'
import logger from 'morgan'
import messages from '../config/messages'
import { comparePassword } from '../utils/hashUtils'
/**
* 用户登录
* @param {string} account - 用户账号
* @param {string} password - 用户密码
* @returns {Promise<Object>} - 登录成功返回用户信息
* @throws {Error} - 如果用户不存在或密码不正确
*/
export async function login(account, password) {
const user = await userMapper.selectUserByAccount(account)
// 用户不存在
if (!user) {
throw new Error(messages.user.not_found)
}
// 密码不匹配
const isMatch = comparePassword(password, user.password)
if (!isMatch) {
throw new Error(messages.user.passwordIncorrect)
}
// 更新用户的最后登录时间
user.lastLoginDate = new Date()
await userMapper.updateUserByLoginDate(user.id, user.lastLoginDate)
return user
}
/**
*
* @param {string} account
* @returns {Promise<boolean>}
*/
export async function getUserExists(account) {
return userMapper.selectUserByAccountExist(account)
}
// Removed the unnecessary try-catch block and simplified the function
export async function getAllUser() {
return await userMapper.selectAllUser()
}
export async function getUserList(searchQuery) {
return userMapper.selectUserList(searchQuery)
}
/**
* 创建用户
* @param {Object} user - 用户对象
* @returns {Promise<Object>} - 创建成功的用户信息
* @throws {Error} - 如果用户已存在或事务失败
*/
export async function createUser(user) {
const { account } = user
const session = await userMapper.startTransaction()
try {
// 检查用户是否已存在
const existingUser = await userMapper.selectUserByAccount(account)
if (existingUser) {
return new Error(messages.user.alreadyExists)
}
// 创建新用户
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 层)
}
}