123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226 |
- const Group = require('../models/Group');
- // @desc 获取所有群组
- // @route GET /api/groups
- // @access Private/Admin
- const getGroups = async (req, res) => {
- try {
- const groups = await Group.findAll();
- res.json(groups);
- } catch (error) {
- res.status(500).json({ message: '服务器错误' });
- }
- };
- // @desc 获取单个群组
- // @route GET /api/groups/:id
- // @access Private/Admin
- const getGroupById = async (req, res) => {
- try {
- const group = await Group.findById(req.params.id);
- if (group) {
- res.json(group);
- } else {
- res.status(404).json({ message: '群组不存在' });
- }
- } catch (error) {
- res.status(500).json({ message: '服务器错误' });
- }
- };
- // @desc 创建群组
- // @route POST /api/groups
- // @access Private/Admin
- const createGroup = async (req, res) => {
- try {
- const {
- groupId,
- groupName,
- group_type = 'group',
- creator_id,
- admin_id,
- in_fee_rate = 0,
- in_exchange_rate = 1,
- out_fee_rate = 0,
- out_exchange_rate = 1
- } = req.body;
-
- const groupIdExists = await Group.findByGroupId(groupId);
-
- if (groupIdExists) {
- return res.status(400).json({ message: '群组ID已存在' });
- }
- const id = await Group.create({
- group_id: groupId,
- group_name: groupName,
- group_type,
- creator_id,
- admin_id,
- in_fee_rate,
- in_exchange_rate,
- out_fee_rate,
- out_exchange_rate
- });
-
- const group = await Group.findById(id);
- res.status(201).json(group);
- } catch (error) {
- console.error('创建群组失败:', error);
- res.status(500).json({ message: '服务器错误' });
- }
- };
- // @desc 更新群组
- // @route PUT /api/groups/:id
- // @access Private/Admin
- const updateGroup = async (req, res) => {
- try {
- const {
- group_name,
- is_active,
- in_fee_rate,
- in_exchange_rate,
- out_fee_rate,
- out_exchange_rate
- } = req.body;
-
- const group = await Group.findById(req.params.id);
-
- if (!group) {
- return res.status(404).json({ message: '群组不存在' });
- }
- await Group.update(req.params.id, {
- group_name,
- is_active,
- in_fee_rate,
- in_exchange_rate,
- out_fee_rate,
- out_exchange_rate
- });
-
- const updatedGroup = await Group.findById(req.params.id);
- res.json(updatedGroup);
- } catch (error) {
- console.error('更新群组失败:', error);
- res.status(500).json({ message: '服务器错误' });
- }
- };
- // @desc 删除群组
- // @route DELETE /api/groups/:id
- // @access Private/Admin
- const deleteGroup = async (req, res) => {
- try {
- const group = await Group.findById(req.params.id);
- if (!group) {
- return res.status(404).json({ message: '群组不存在' });
- }
- await Group.delete(req.params.id);
- res.json({ message: '群组已删除' });
- } catch (error) {
- res.status(500).json({ message: '服务器错误' });
- }
- };
- // @desc 添加群组操作人
- // @route POST /api/groups/:groupId/operators
- // @access Private
- const addOperator = async (req, res) => {
- try {
- const { groupId } = req.params;
- const { operator_id, operator_username } = req.body;
- const added_by = req.user.id;
- // 检查群组是否存在
- const group = await Group.findByGroupId(groupId);
- if (!group) {
- return res.status(404).json({ message: '群组不存在' });
- }
- // 检查添加人是否是群组创建者或现有操作人
- const isCreator = group.creator_id === added_by;
- const isOperator = await Group.isOperator(groupId, added_by);
- if (!isCreator && !isOperator) {
- return res.status(403).json({ message: '没有权限添加操作人' });
- }
- // 添加操作人
- await Group.addOperator(groupId, {
- operator_id,
- operator_username,
- added_by
- });
- res.status(201).json({ message: '操作人添加成功' });
- } catch (error) {
- console.error('添加操作人失败:', error);
- if (error.message === '该用户已经是操作人') {
- return res.status(400).json({ message: error.message });
- }
- res.status(500).json({ message: '服务器错误' });
- }
- };
- // @desc 获取群组操作人列表
- // @route GET /api/groups/:groupId/operators
- // @access Private
- const getOperators = async (req, res) => {
- try {
- const { groupId } = req.params;
- const operators = await Group.getOperators(groupId);
- res.json(operators);
- } catch (error) {
- console.error('获取操作人列表失败:', error);
- res.status(500).json({ message: '服务器错误' });
- }
- };
- // @desc 删除群组操作人
- // @route DELETE /api/groups/:groupId/operators/:operatorId
- // @access Private
- const removeOperator = async (req, res) => {
- try {
- const { groupId, operatorId } = req.params;
- const userId = req.user.id;
- // 检查群组是否存在
- const group = await Group.findByGroupId(groupId);
- if (!group) {
- return res.status(404).json({ message: '群组不存在' });
- }
- // 检查操作人是否是群组创建者或现有操作人
- const isCreator = group.creator_id === userId;
- const isOperator = await Group.isOperator(groupId, userId);
- if (!isCreator && !isOperator) {
- return res.status(403).json({ message: '没有权限删除操作人' });
- }
- // 删除操作人
- const success = await Group.removeOperator(groupId, operatorId);
- if (!success) {
- return res.status(404).json({ message: '操作人不存在' });
- }
- res.json({ message: '操作人删除成功' });
- } catch (error) {
- console.error('删除操作人失败:', error);
- res.status(500).json({ message: '服务器错误' });
- }
- };
- module.exports = {
- getGroups,
- getGroupById,
- createGroup,
- updateGroup,
- deleteGroup,
- addOperator,
- getOperators,
- removeOperator
- };
|