File size: 2,727 Bytes
db242f8
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
import { Controller, Delete, Get, Post, Put, Query } from '@nestjs/common';

import { ConfigService } from '@/common/config/config.service';
import { Public, Role, Roles } from '@/common/guards/auth.guard';
import { JoiValidationPipe } from '@/common/pipes/joi';
import { PagerQuery, PagerQuerySchema } from '@/shared';

import { DashboardService } from './dashboard.service';

@Roles(Role.Admin)
@Controller('dashboard')
export class DashboardController {
  constructor(
    private readonly dashboardService: DashboardService,
    private readonly configService: ConfigService,
  ) {}

  @Get('analytics')
  async getAnalytics() {
    return {
      success: true,
      data: await this.dashboardService.getAnalytics(),
    };
  }

  @Get('openai/keys')
  async listOpenaiKeys() {
    return this.dashboardService.listOpenaiKeys();
  }

  @Post('openai/keys')
  async addOpenaiKey() {}

  @Delete('openai/keys/:id')
  async deleteOpenaiKey() {}

  /* 查看用户所有对话 */
  @Get('chat/sessions')
  async getAllChatSessions(
    @Query(new JoiValidationPipe(PagerQuerySchema))
    paginator: PagerQuery,
  ) {
    const [data, meta] =
      await this.dashboardService.getAllChatSession(paginator);
    return {
      success: true,
      data,
      meta,
    };
  }

  /* 查看用户所有消息 */
  @Get('chat/messages')
  async getAllMessages(
    @Query(new JoiValidationPipe(PagerQuerySchema))
    paginator: PagerQuery,
  ) {
    const [data, meta] = await this.dashboardService.getAllMessages(paginator);
    return {
      success: true,
      data,
      meta,
    };
  }

  /* 查看所有订单 */
  @Get('orders')
  async getAllOrders(
    @Query(new JoiValidationPipe(PagerQuerySchema))
    paginator: PagerQuery,
  ) {
    const [data, meta] = await this.dashboardService.getAllOrders(paginator);
    return {
      success: true,
      data,
      meta,
    };
  }

  /* 查看所有用户 */
  @Get('users')
  async getAllUsers(
    @Query(new JoiValidationPipe(PagerQuerySchema))
    paginator: PagerQuery,
  ) {
    const [data, meta] = await this.dashboardService.getAllUsers(paginator);
    return {
      success: true,
      data,
      meta,
    };
  }

  @Public()
  @Get('install')
  install() {
    return {
      success: true,
      data: {
        schema: this.configService.getConfigSchema(true),
        value: this.configService.getDefaultValue(),
      },
    };
  }

  @Get('config')
  getAllConfig() {
    return {
      success: true,
      data: {
        schema: this.configService.getConfigSchema(),
        value: this.configService.getAll(),
      },
    };
  }

  @Put('config')
  updateConfig() {
    // this.configService.updateConfig({ '1': '2' });
    return {};
  }
}