const { pool } = require('../config/database'); // 创建群组表 const createGroupTable = async () => { try { await pool.query(` CREATE TABLE IF NOT EXISTS groups ( id INT AUTO_INCREMENT PRIMARY KEY, group_id VARCHAR(50) NOT NULL UNIQUE, group_name VARCHAR(100) NOT NULL, creator_id VARCHAR(50) NOT NULL, is_active BOOLEAN DEFAULT TRUE, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ) `); } catch (error) { console.error('创建群组表失败:', error); } }; // 初始化表 createGroupTable(); // 群组相关方法 const Group = { // 获取所有群组 findAll: async () => { try { const [rows] = await pool.query('SELECT * FROM groups ORDER BY created_at DESC'); return rows; } catch (error) { console.error('查询群组列表失败:', error); throw error; } }, // 根据ID查找群组 findById: async (id) => { try { const [rows] = await pool.query( 'SELECT * FROM groups WHERE id = ?', [id] ); return rows[0]; } catch (error) { console.error('查询群组失败:', error); throw error; } }, // 根据群组ID查找群组 findByGroupId: async (groupId) => { const [rows] = await pool.query( 'SELECT * FROM groups WHERE group_id = ?', [groupId] ); return rows[0]; }, // 创建群组 create: async ({ group_id, group_name, group_type = 'group', creator_id, admin_id, in_fee_rate = 0, in_exchange_rate = 1, out_fee_rate = 0, out_exchange_rate = 1 }) => { try { const [result] = await pool.query( `INSERT INTO groups ( group_id, group_name, group_type, creator_id, admin_id, in_fee_rate, in_exchange_rate, out_fee_rate, out_exchange_rate ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)`, [ group_id, group_name, group_type, creator_id, admin_id, in_fee_rate, in_exchange_rate, out_fee_rate, out_exchange_rate ] ); return result.insertId; } catch (error) { console.error('创建群组失败:', error); throw error; } }, // 更新群组 update: async (id, { group_name, is_active, in_fee_rate, in_exchange_rate, out_fee_rate, out_exchange_rate }) => { try { const [result] = await pool.query( `UPDATE groups SET group_name = ?, is_active = ?, in_fee_rate = ?, in_exchange_rate = ?, out_fee_rate = ?, out_exchange_rate = ?, updated_at = CURRENT_TIMESTAMP WHERE id = ?`, [ group_name, is_active, in_fee_rate, in_exchange_rate, out_fee_rate, out_exchange_rate, id ] ); if (result.affectedRows === 0) { throw new Error('群组不存在'); } return result; } catch (error) { console.error('更新群组失败:', error); throw error; } }, // 删除群组 delete: async (id) => { try { const [result] = await pool.query('DELETE FROM groups WHERE id = ?', [id]); if (result.affectedRows === 0) { throw new Error('群组不存在'); } return result; } catch (error) { console.error('删除群组失败:', error); throw error; } } }; module.exports = Group;