123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161 |
- 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;
|