工业互联网平台2.0版本后端代码
houzhongjian
2025-05-29 41499fd3c28216c1526a72b10fa98eb8ffee78cb
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
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <groupId>com.iailab</groupId>
        <artifactId>iailab-plat</artifactId>
        <version>${revision}</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.iailab</groupId>
    <artifactId>iailab-module-ai</artifactId>
    <version>${ai.revision}</version>
    <packaging>pom</packaging>
 
    <modules>
        <module>iailab-module-ai-api</module>
        <module>iailab-module-ai-biz</module>
        <module>iailab-spring-boot-starter-ai</module>
    </modules>
 
    <description>
        ai 模块下,接入 LLM 大模型,支持聊天、绘图、音乐、写作、思维导图等功能。
        目前已接入各种模型,不限于:
          国内:通义千问、文心一言、讯飞星火、智谱 GLM、DeepSeek
          国外:OpenAI、Ollama、Midjourney、StableDiffusion、Suno
    </description>
 
    <properties>
        <ai.revision>1.0.0-jdk17</ai.revision>
        <revision>1.0.0</revision>
        <!-- Maven 相关 -->
        <java.version>17</java.version>
        <maven.compiler.source>${java.version}</maven.compiler.source>
        <maven.compiler.target>${java.version}</maven.compiler.target>
        <maven-surefire-plugin.version>3.2.2</maven-surefire-plugin.version>
        <maven-compiler-plugin.version>3.13.0</maven-compiler-plugin.version>
        <flatten-maven-plugin.version>1.6.0</flatten-maven-plugin.version>
        <!-- 看看咋放到 bom 里 -->
        <lombok.version>1.18.36</lombok.version>
        <spring.boot.version>3.4.1</spring.boot.version>
        <mapstruct.version>1.6.3</mapstruct.version>
        <!-- 统一依赖管理 -->
        <spring.cloud.version>2024.0.0</spring.cloud.version>
        <spring.cloud.alibaba.version>2023.0.3.2</spring.cloud.alibaba.version>
        <!-- Web 相关 -->
        <springdoc.version>2.7.0</springdoc.version>
        <knife4j.version>4.6.0</knife4j.version>
        <!-- 工具类相关 -->
        <bizlog-sdk.version>3.0.6</bizlog-sdk.version>
        <netty.version>4.1.116.Final</netty.version>
        <hutool-5.version>5.8.35</hutool-5.version>
        <hutool-6.version>6.0.0-M19</hutool-6.version>
        <skywalking.version>9.0.0</skywalking.version>
        <!-- DB 相关 -->
        <druid.version>1.2.24</druid.version>
        <mybatis.version>3.5.17</mybatis.version>
        <mybatis-plus.version>3.5.9</mybatis-plus.version>
        <dynamic-datasource.version>4.3.1</dynamic-datasource.version>
        <mybatis-plus-join.version>1.4.13</mybatis-plus-join.version>
        <easy-trans.version>3.0.6</easy-trans.version>
        <redisson.version>3.41.0</redisson.version>
    </properties>
 
    <dependencyManagement>
        <dependencies>
            <!-- 统一依赖管理 -->
            <dependency>
                <groupId>io.netty</groupId>
                <artifactId>netty-bom</artifactId>
                <version>${netty.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>${spring.boot.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring.cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>${spring.cloud.alibaba.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <!-- 业务组件 -->
            <dependency>
                <groupId>io.github.mouzt</groupId>
                <artifactId>bizlog-sdk</artifactId>
                <version>${bizlog-sdk.version}</version>
                <exclusions>
                    <exclusion> <!-- 排除掉springboot依赖使用项目的 -->
                        <groupId>org.springframework.boot</groupId>
                        <artifactId>spring-boot-starter</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>com.iailab</groupId>
                <artifactId>iailab-common-biz-tenant</artifactId>
                <version>${ai.revision}</version>
            </dependency>
            <dependency>
                <groupId>com.iailab</groupId>
                <artifactId>iailab-common-biz-data-permission</artifactId>
                <version>${ai.revision}</version>
            </dependency>
            <dependency>
                <groupId>com.iailab</groupId>
                <artifactId>iailab-common-biz-ip</artifactId>
                <version>${ai.revision}</version>
            </dependency>
 
            <dependency>
                <groupId>com.iailab</groupId>
                <artifactId>iailab-common</artifactId>
                <version>${ai.revision}</version>
            </dependency>
 
            <!-- Spring 核心 -->
            <dependency>
                <!-- 用于生成自定义的 Spring @ConfigurationProperties 配置类的说明文件 -->
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-configuration-processor</artifactId>
                <version>${spring.boot.version}</version>
            </dependency>
 
            <dependency>
                <groupId>com.iailab</groupId>
                <artifactId>iailab-common-env</artifactId>
                <version>${ai.revision}</version>
            </dependency>
 
            <dependency>
                <groupId>com.iailab</groupId>
                <artifactId>iailab-common-web</artifactId>
                <version>${ai.revision}</version>
            </dependency>
 
            <dependency>
                <groupId>com.iailab</groupId>
                <artifactId>iailab-common-security</artifactId>
                <version>${ai.revision}</version>
            </dependency>
 
            <dependency>
                <groupId>com.iailab</groupId>
                <artifactId>iailab-common-security</artifactId>
                <version>${ai.revision}</version>
            </dependency>
 
            <dependency>
                <groupId>com.iailab</groupId>
                <artifactId>iailab-common-websocket</artifactId>
                <version>${ai.revision}</version>
            </dependency>
 
            <dependency>
                <groupId>com.github.xingfudeshi</groupId> <!-- TODO Iailab:https://github.com/xiaoymin/knife4j/issues/874 -->
                <artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId>
                <version>${knife4j.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springdoc</groupId>
                <artifactId>springdoc-openapi-starter-webmvc-api</artifactId>
                <version>${springdoc.version}</version>
            </dependency>
            <dependency>
                <groupId>com.github.xiaoymin</groupId> <!-- 接口文档 UI:knife4j【网关专属】 -->
                <artifactId>knife4j-gateway-spring-boot-starter</artifactId>
                <version>${knife4j.version}</version> <!-- TODO Iailab:等 4.5.0 => 4.6.0 -->
            </dependency>
 
            <!-- DB 相关 -->
            <dependency>
                <groupId>com.iailab</groupId>
                <artifactId>iailab-common-mybatis</artifactId>
                <version>${ai.revision}</version>
            </dependency>
 
            <dependency>
                <groupId>com.iailab</groupId>
                <artifactId>iailab-module-infra-api</artifactId>
                <version>${ai.revision}</version>
            </dependency>
 
            <dependency>
                <groupId>com.iailab</groupId>
                <artifactId>iailab-module-system-api</artifactId>
                <version>${revision}</version>
            </dependency>
 
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>druid-spring-boot-3-starter</artifactId>
                <version>${druid.version}</version>
            </dependency>
            <dependency>
                <groupId>org.mybatis</groupId>
                <artifactId>mybatis</artifactId>
                <version>${mybatis.version}</version>
            </dependency>
            <dependency>
                <groupId>com.baomidou</groupId>
                <artifactId>mybatis-plus-spring-boot3-starter</artifactId>
                <version>${mybatis-plus.version}</version>
            </dependency>
            <dependency>
                <groupId>com.baomidou</groupId>
                <artifactId>mybatis-plus-jsqlparser</artifactId>
                <version>${mybatis-plus.version}</version>
            </dependency>
            <dependency>
                <groupId>com.baomidou</groupId>
                <artifactId>mybatis-plus-generator</artifactId> <!-- 代码生成器,使用它解析表结构 -->
                <version>${mybatis-plus.version}</version>
            </dependency>
            <dependency>
                <groupId>com.baomidou</groupId>
                <artifactId>dynamic-datasource-spring-boot3-starter</artifactId> <!-- 多数据源 -->
                <version>${dynamic-datasource.version}</version>
            </dependency>
            <dependency>
                <groupId>com.github.yulichang</groupId>
                <artifactId>mybatis-plus-join-boot-starter</artifactId> <!-- MyBatis 联表查询 -->
                <version>${mybatis-plus-join.version}</version>
            </dependency>
 
            <dependency>
                <groupId>com.baomidou</groupId>
                <artifactId>mybatis-plus-spring-boot-autoconfigure</artifactId>
                <version>3.5.9</version>
            </dependency>
 
            <dependency>
                <groupId>com.fhs-opensource</groupId> <!-- VO 数据翻译 -->
                <artifactId>easy-trans-spring-boot-starter</artifactId>
                <version>${easy-trans.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>org.springframework</groupId>
                        <artifactId>spring-context</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>org.springframework.cloud</groupId>
                        <artifactId>spring-cloud-commons</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>com.fhs-opensource</groupId>
                <artifactId>easy-trans-mybatis-plus-extend</artifactId>
                <version>${easy-trans.version}</version>
            </dependency>
            <dependency>
                <groupId>com.fhs-opensource</groupId>
                <artifactId>easy-trans-anno</artifactId>
                <version>${easy-trans.version}</version>
            </dependency>
 
            <dependency>
                <groupId>com.iailab</groupId>
                <artifactId>iailab-common-redis</artifactId>
                <version>${ai.revision}</version>
            </dependency>
 
            <dependency>
                <groupId>org.redisson</groupId>
                <artifactId>redisson-spring-boot-starter</artifactId>
                <version>${redisson.version}</version>
            </dependency>
 
            <!-- Test 测试相关 -->
            <dependency>
                <groupId>com.iailab</groupId>
                <artifactId>iailab-common-test</artifactId>
                <version>${ai.revision}</version>
                <scope>test</scope>
            </dependency>
 
            <!-- RPC 远程调用相关 -->
            <dependency>
                <groupId>com.iailab</groupId>
                <artifactId>iailab-common-rpc</artifactId>
                <version>${ai.revision}</version>
            </dependency>
 
            <!-- 监控相关 -->
            <dependency>
                <groupId>com.iailab</groupId>
                <artifactId>iailab-common-monitor</artifactId>
                <version>${ai.revision}</version>
            </dependency>
 
            <dependency>
                <groupId>cn.hutool</groupId>
                <artifactId>hutool-all</artifactId>
                <version>${hutool-5.version}</version>
            </dependency>
 
            <dependency>
                <groupId>org.dromara.hutool</groupId>
                <artifactId>hutool-extra</artifactId>
                <version>${hutool-6.version}</version>
            </dependency>
 
            <dependency>
                <groupId>org.apache.skywalking</groupId>
                <artifactId>apm-toolkit-trace</artifactId>
                <version>${skywalking.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.skywalking</groupId>
                <artifactId>apm-toolkit-logback-1.x</artifactId>
                <version>${skywalking.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.skywalking</groupId>
                <artifactId>apm-toolkit-opentracing</artifactId>
                <version>${skywalking.version}</version>
            </dependency>
 
        </dependencies>
    </dependencyManagement>
 
    <build>
        <pluginManagement>
            <plugins>
                <!-- maven-surefire-plugin 插件,用于运行单元测试。 -->
                <!-- 注意,需要使用 3.0.X+,因为要支持 Junit 5 版本 -->
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <version>${maven-surefire-plugin.version}</version>
                </plugin>
                <!-- maven-compiler-plugin 插件,解决 Lombok + MapStruct 组合 -->
                <!-- https://stackoverflow.com/questions/33483697/re-run-spring-boot-configuration-annotation-processor-to-update-generated-metada -->
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>${maven-compiler-plugin.version}</version>
                    <configuration>
                        <annotationProcessorPaths>
                            <path>
                                <groupId>org.springframework.boot</groupId>
                                <artifactId>spring-boot-configuration-processor</artifactId>
                                <version>${spring.boot.version}</version>
                            </path>
                            <path>
                                <groupId>org.projectlombok</groupId>
                                <artifactId>lombok</artifactId>
                                <version>${lombok.version}</version>
                            </path>
                            <path>
                                <groupId>org.mapstruct</groupId>
                                <artifactId>mapstruct-processor</artifactId>
                                <version>${mapstruct.version}</version>
                            </path>
                        </annotationProcessorPaths>
                        <!-- 编译参数写在 arg 内,解决 Spring Boot 3.2 的 Parameter Name Discovery 问题 -->
                        <debug>false</debug>
                        <compilerArgs>
                            <arg>-parameters</arg>
                        </compilerArgs>
                    </configuration>
                </plugin>
            </plugins>
        </pluginManagement>
 
        <plugins>
            <!-- 统一 revision 版本 -->
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>flatten-maven-plugin</artifactId>
                <version>${flatten-maven-plugin.version}</version>
                <configuration>
                    <flattenMode>oss</flattenMode>
                    <updatePomFile>true</updatePomFile>
                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <goal>flatten</goal>
                        </goals>
                        <id>flatten</id>
                        <phase>process-resources</phase>
                    </execution>
                    <execution>
                        <goals>
                            <goal>clean</goal>
                        </goals>
                        <id>flatten.clean</id>
                        <phase>clean</phase>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>