expressServer/services/userService.js
LingandRX fbbcf675d1 refactor(user): 重构用户相关代码
- 优化了用户路由、控制器、仓库和服务的代码结构
- 改进了代码的可读性和可维护性
-移除了冗余的导入和导出语句
- 统一了异步函数的定义方式- 简化了错误处理逻辑
2025-01-05 18:44:46 +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 userRepository from '../repositories/userRepository.js'
import logger from 'morgan'
import messages from '../config/messages.js'
import { comparePassword } from '../utils/hashUtils.js'
const userService = {
/**
* 用户登录
* @param {string} account - 用户账号
* @param {string} password - 用户密码
* @returns {Promise<Object>} - 登录成功返回用户信息
* @throws {Error} - 如果用户不存在或密码不正确
*/
async login(account, password) {
const user = await userRepository.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)
}
return user
},
/**
*
* @param {string} account
* @returns {Promise<boolean>}
*/
async getUserExists(account) {
return userRepository.selectUserByAccountExist(account)
},
// Removed the unnecessary try-catch block and simplified the function
async getAllUser() {
return await userRepository.selectAllUser()
},
async getUserList(searchQuery) {
return userRepository.selectUserList(searchQuery)
},
/**
* 创建用户
* @param {Object} user - 用户对象
* @returns {Promise<Object>} - 创建成功的用户信息
* @throws {Error} - 如果用户已存在或事务失败
*/
async createUser(user) {
const { account } = user
const session = await userRepository.startTransaction()
try {
// 检查用户是否已存在
const existingUser = await userRepository.selectUserByAccount(account)
if (existingUser) {
return new Error(messages.user.alreadyExists)
}
// 创建新用户
const result = await userRepository.createUser(user)
// 提交事务
await userRepository.commitTransaction(session)
return result
} catch (err) {
// 回滚事务
await userRepository.rollbackTransaction(session).catch((rollbackErr) => {
logger('Error rolling back transaction: ', rollbackErr)
})
throw err // 将错误抛给调用方Controller 层)
}
}
}
export default userService