| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139 |
- import { FastifyRequest, FastifyReply, FastifyInstance } from 'fastify'
- import { TeamMembersService } from '../services/team-members.service'
- import {
- CreateTeamMembersBody,
- UpdateTeamMembersBody,
- ListTeamMembersQuery,
- TeamMembersParams,
- UpdateRevenueBody
- } from '../dto/team-members.dto'
- import { UserRole } from '../entities/user.entity'
- import { TeamService } from '../services/team.service'
- export class TeamMembersController {
- private teamMembersService: TeamMembersService
- private teamService: TeamService
- constructor(app: FastifyInstance) {
- this.teamMembersService = new TeamMembersService(app)
- this.teamService = new TeamService(app)
- }
- async create(request: FastifyRequest<{ Body: CreateTeamMembersBody }>, reply: FastifyReply) {
- try {
- const user = request.user
- if (!user) {
- return reply.code(403).send({ message: '用户未登录' })
- }
- if (user.role === UserRole.TEAM) {
- const team = await this.teamService.findByUserId(user.id)
- request.body.teamId = team.id
- request.body.teamUserId = user.id
- }
- const teamMember = await this.teamMembersService.create(request.body, request.user.id)
- return reply.code(201).send(teamMember)
- } catch (error) {
- return reply.code(500).send({ message: '创建团队成员失败', error })
- }
- }
- async findById(request: FastifyRequest<{ Params: TeamMembersParams }>, reply: FastifyReply) {
- try {
- const { id } = request.params
- const teamMember = await this.teamMembersService.findById(id)
- return reply.send(teamMember)
- } catch (error) {
- return reply.code(404).send({ message: '团队成员不存在' })
- }
- }
- async findAll(request: FastifyRequest<{ Querystring: ListTeamMembersQuery }>, reply: FastifyReply) {
- try {
- const user = request.user
- if (!user) {
- return reply.code(403).send({ message: '用户未登录' })
- }
- if (user.role === UserRole.TEAM) {
- const team = await this.teamService.findByUserId(user.id)
- request.query.teamId = team.id
- }
- const result = await this.teamMembersService.findAll(request.query)
- return reply.send(result)
- } catch (error) {
- return reply.code(500).send({ message: '获取团队成员列表失败', error })
- }
- }
- async update(
- request: FastifyRequest<{ Params: TeamMembersParams; Body: UpdateTeamMembersBody }>,
- reply: FastifyReply
- ) {
- try {
- const { id } = request.params
- const updateData = { ...request.body, id }
- try {
- await this.teamMembersService.findById(id)
- } catch (error) {
- return reply.code(404).send({ message: '团队成员不存在' })
- }
- const updatedMember = await this.teamMembersService.update(updateData)
- return reply.send(updatedMember)
- } catch (error) {
- return reply.code(500).send({ message: '更新团队成员失败', error })
- }
- }
- async delete(request: FastifyRequest<{ Params: TeamMembersParams }>, reply: FastifyReply) {
- try {
- const { id } = request.params
- try {
- await this.teamMembersService.findById(id)
- } catch (error) {
- return reply.code(404).send({ message: '团队成员不存在' })
- }
- await this.teamMembersService.delete(id)
- return reply.send({ message: '团队成员已删除' })
- } catch (error) {
- return reply.code(500).send({ message: '删除团队成员失败', error })
- }
- }
- async updateRevenue(request: FastifyRequest<{ Body: UpdateRevenueBody }>, reply: FastifyReply) {
- try {
- const { id, amount, type } = request.body
- try {
- await this.teamMembersService.findById(id)
- } catch (error) {
- return reply.code(404).send({ message: '团队成员不存在' })
- }
- const updatedMember = await this.teamMembersService.updateRevenue(id, amount, type)
- return reply.send(updatedMember)
- } catch (error) {
- return reply.code(500).send({ message: '更新团队成员收入失败', error })
- }
- }
- async resetTodayRevenue(request: FastifyRequest, reply: FastifyReply) {
- try {
- await this.teamMembersService.resetTodayRevenue()
- return reply.send({ message: '今日收入已重置' })
- } catch (error) {
- return reply.code(500).send({ message: '重置今日收入失败', error })
- }
- }
- async getStatistics(request: FastifyRequest, reply: FastifyReply) {
- try {
- const statistics = await this.teamMembersService.getStatistics()
- return reply.send(statistics)
- } catch (error) {
- return reply.code(500).send({ message: '获取统计数据失败', error })
- }
- }
- }
|