const db = require('../config/database'); const bcrypt = require('bcryptjs'); const User = require('../models/User'); class AdminService { static async getUsers(params) { const { page = 1, limit = 10, search = '', role = '' } = params; const offset = (page - 1) * limit; let queryStr = 'SELECT id, name, role, class, created_at FROM users WHERE 1=1'; let queryParams = []; if (search) { queryStr += ' AND (id LIKE ? OR name LIKE ? OR class LIKE ?)'; const searchTerm = `%${search}%`; queryParams.push(searchTerm, searchTerm, searchTerm); } if (role) { queryStr += ' AND role = ?'; queryParams.push(role); } // Count const countSql = queryStr.replace('SELECT id, name, role, class, created_at', 'SELECT COUNT(*) as total'); const countRows = await db.query(countSql, queryParams); const total = countRows[0].total; // Data queryStr += ' ORDER BY created_at DESC LIMIT ? OFFSET ?'; queryParams.push(parseInt(limit), parseInt(offset)); const users = await db.query(queryStr, queryParams); return { data: users, pagination: { page: parseInt(page), limit: parseInt(limit), total, pages: Math.ceil(total / limit) } }; } static async createUser(userData) { const { id } = userData; // 检查 ID const existingUser = await User.findById(id); if (existingUser) { throw new Error('用户ID已存在'); } // 创建用户 return await User.create(userData); } } module.exports = AdminService;