index.ts 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169
  1. import request from '@/config/axios'
  2. // IoT 数据流转目的 VO
  3. export interface DataSinkVO {
  4. id?: number // 桥梁编号
  5. name?: string // 桥梁名称
  6. description?: string // 桥梁描述
  7. status?: number // 桥梁状态
  8. direction?: number // 桥梁方向
  9. type?: number // 桥梁类型
  10. config?:
  11. | HttpConfig
  12. | TcpConfig
  13. | WebSocketConfig
  14. | MqttConfig
  15. | DatabaseConfig
  16. | RocketMQConfig
  17. | KafkaMQConfig
  18. | RabbitMQConfig
  19. | RedisStreamMQConfig // 桥梁配置
  20. }
  21. interface Config {
  22. type: string
  23. }
  24. /** HTTP 配置 */
  25. export interface HttpConfig extends Config {
  26. url: string
  27. method: string
  28. headers: Record<string, string>
  29. query: Record<string, string>
  30. body: string
  31. }
  32. /** TCP 配置 */
  33. export interface TcpConfig extends Config {
  34. host: string
  35. port: number
  36. connectTimeoutMs: number
  37. readTimeoutMs: number
  38. ssl: boolean
  39. sslCertPath: string
  40. dataFormat: string
  41. heartbeatIntervalMs: number
  42. reconnectIntervalMs: number
  43. maxReconnectAttempts: number
  44. }
  45. /** WebSocket 配置 */
  46. export interface WebSocketConfig extends Config {
  47. serverUrl: string
  48. connectTimeoutMs: number
  49. sendTimeoutMs: number
  50. heartbeatIntervalMs: number
  51. heartbeatMessage: string
  52. subprotocols: string
  53. customHeaders: string
  54. verifySslCert: boolean
  55. dataFormat: string
  56. reconnectIntervalMs: number
  57. maxReconnectAttempts: number
  58. enableCompression: boolean
  59. sendRetryCount: number
  60. sendRetryIntervalMs: number
  61. }
  62. /** MQTT 配置 */
  63. export interface MqttConfig extends Config {
  64. url: string
  65. username: string
  66. password: string
  67. clientId: string
  68. topic: string
  69. }
  70. /** Database 配置 */
  71. export interface DatabaseConfig extends Config {
  72. jdbcUrl: string
  73. username: string
  74. password: string
  75. tableName: string
  76. }
  77. /** RocketMQ 配置 */
  78. export interface RocketMQConfig extends Config {
  79. nameServer: string
  80. accessKey: string
  81. secretKey: string
  82. group: string
  83. topic: string
  84. tags: string
  85. }
  86. /** Kafka 配置 */
  87. export interface KafkaMQConfig extends Config {
  88. bootstrapServers: string
  89. username: string
  90. password: string
  91. ssl: boolean
  92. topic: string
  93. }
  94. /** RabbitMQ 配置 */
  95. export interface RabbitMQConfig extends Config {
  96. host: string
  97. port: number
  98. virtualHost: string
  99. username: string
  100. password: string
  101. exchange: string
  102. routingKey: string
  103. queue: string
  104. }
  105. /** Redis Stream MQ 配置 */
  106. export interface RedisStreamMQConfig extends Config {
  107. host: string
  108. port: number
  109. password: string
  110. database: number
  111. topic: string
  112. }
  113. /** 数据流转目的类型 */
  114. export const IotDataSinkTypeEnum = {
  115. HTTP: 1,
  116. TCP: 2,
  117. WEBSOCKET: 3,
  118. MQTT: 10,
  119. DATABASE: 20,
  120. REDIS_STREAM: 21,
  121. ROCKETMQ: 30,
  122. RABBITMQ: 31,
  123. KAFKA: 32
  124. } as const
  125. // 数据流转目的 API
  126. export const DataSinkApi = {
  127. // 查询数据流转目的分页
  128. getDataSinkPage: async (params: any) => {
  129. return await request.get({ url: `/iot/data-sink/page`, params })
  130. },
  131. // 查询数据流转目的详情
  132. getDataSink: async (id: number) => {
  133. return await request.get({ url: `/iot/data-sink/get?id=` + id })
  134. },
  135. // 新增数据流转目的
  136. createDataSink: async (data: DataSinkVO) => {
  137. return await request.post({ url: `/iot/data-sink/create`, data })
  138. },
  139. // 修改数据流转目的
  140. updateDataSink: async (data: DataSinkVO) => {
  141. return await request.put({ url: `/iot/data-sink/update`, data })
  142. },
  143. // 删除数据流转目的
  144. deleteDataSink: async (id: number) => {
  145. return await request.delete({ url: `/iot/data-sink/delete?id=` + id })
  146. },
  147. // 查询数据流转目的(精简)列表
  148. getDataSinkSimpleList() {
  149. return request.get({ url: '/iot/data-sink/simple-list' })
  150. }
  151. }