修改配置
parent
f53cdc289f
commit
a07ec51a81
Binary file not shown.
|
|
@ -0,0 +1,290 @@
|
|||
# 文件上传接口文档
|
||||
|
||||
## 目录
|
||||
|
||||
- [接口概览](#接口概览)
|
||||
- [通用说明](#通用说明)
|
||||
- [上传接口(内部)](#上传接口内部)
|
||||
- [文件管理接口](#文件管理接口)
|
||||
- [内外部调用规则](#内外部调用规则)
|
||||
- [错误码](#错误码)
|
||||
|
||||
---
|
||||
|
||||
## 接口概览
|
||||
|
||||
| 类别 | 方法 | 路径 | 说明 |
|
||||
|------|------|------|------|
|
||||
| 上传 | `POST` | `/file/upload` | 内部单个上传 |
|
||||
| 上传 | `POST` | `/file/upload/batch` | 内部批量上传 |
|
||||
| 管理 | `GET` | `/file-storage/presigned-url/{fileId}` | 获取签名 URL |
|
||||
| 管理 | `GET` | `/file-storage/info/{fileId}` | 获取文件信息 |
|
||||
| 管理 | `GET` | `/file-storage/download/{fileId}` | 下载文件 |
|
||||
| 管理 | `GET` | `/file-storage/list-all` | 全部文件列表 |
|
||||
| 管理 | `GET` | `/file-storage/list-by-creator` | 按上传者查询 |
|
||||
| 管理 | `DELETE` | `/file-storage/delete/{fileId}` | 删除文件 |
|
||||
| 管理 | `DELETE` | `/file-storage/delete-batch` | 批量删除 |
|
||||
|
||||
---
|
||||
|
||||
## 通用说明
|
||||
|
||||
### 基础路径
|
||||
|
||||
```
|
||||
开发环境: http://localhost:{port}
|
||||
生产环境: 按实际部署域名
|
||||
```
|
||||
|
||||
### 统一响应体
|
||||
|
||||
```json
|
||||
{
|
||||
"success": true,
|
||||
"code": "0",
|
||||
"message": "ok",
|
||||
"data": { ... }
|
||||
}
|
||||
```
|
||||
|
||||
### 文件上传大小限制
|
||||
|
||||
| 限制项 | 值 |
|
||||
|--------|-----|
|
||||
| 单文件上限 | **100 MB** |
|
||||
| 单次请求上限 | **500 MB** |
|
||||
|
||||
### 支持文件类型
|
||||
|
||||
不限制文件类型,支持文本、图片、音频、视频等所有常见格式。
|
||||
|
||||
---
|
||||
|
||||
## 上传接口(内部)
|
||||
|
||||
> **所有上传接口均为内部接口**,需要携带有效登录凭证(Cookie / Token)。
|
||||
> 上传完成后自动将文件元信息写入 `filestorage` 表。
|
||||
|
||||
---
|
||||
|
||||
### 1. 内部单个上传
|
||||
|
||||
```
|
||||
POST /file/upload
|
||||
```
|
||||
|
||||
**请求**
|
||||
|
||||
| 参数 | 类型 | 必填 | 说明 |
|
||||
|------|------|------|------|
|
||||
| `file` | MultipartFile (form-data) | 是 | 上传的文件 |
|
||||
|
||||
**示例**
|
||||
|
||||
```bash
|
||||
curl -X POST "http://localhost:8080/file/upload" \
|
||||
-H "Cookie: ..." \
|
||||
-F "file=@/path/to/document.pdf"
|
||||
```
|
||||
|
||||
**成功响应**
|
||||
|
||||
```json
|
||||
{
|
||||
"success": true,
|
||||
"code": "0",
|
||||
"message": "ok",
|
||||
"data": {
|
||||
"id": 1001,
|
||||
"url": "https://test-dragon-yf-pub.oss-cn-hangzhou.aliyuncs.com/jjb/xxx.pdf",
|
||||
"presignedUrl": null,
|
||||
"size": 204800,
|
||||
"originalFilename": "document.pdf",
|
||||
"ext": "pdf",
|
||||
"contentType": "application/pdf",
|
||||
"creatorName": "张三",
|
||||
"createdTime": "2026-06-30T10:30:00"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
| 响应字段 | 类型 | 说明 |
|
||||
|----------|------|------|
|
||||
| `id` | Integer | 文件记录主键,后续管理操作依赖此 ID |
|
||||
| `url` | String | OSS 文件永久访问路径 |
|
||||
| `presignedUrl` | String | 上传时返回 `null`,需通过签名 URL 接口获取 |
|
||||
| `size` | Long | 文件大小(字节) |
|
||||
| `originalFilename` | String | 上传时的原始文件名 |
|
||||
| `ext` | String | 文件扩展名 |
|
||||
| `contentType` | String | MIME 类型 |
|
||||
| `creatorName` | String | 创建人姓名(当前登录用户) |
|
||||
| `createdTime` | String | 文件创建时间 |
|
||||
|
||||
---
|
||||
|
||||
### 2. 内部批量上传
|
||||
|
||||
```
|
||||
POST /file/upload/batch
|
||||
```
|
||||
|
||||
**请求**
|
||||
|
||||
| 参数 | 类型 | 必填 | 说明 |
|
||||
|------|------|------|------|
|
||||
| `files` | List\<MultipartFile\> (form-data) | 是 | 多个上传文件(同名参数) |
|
||||
|
||||
**示例**
|
||||
|
||||
```bash
|
||||
curl -X POST "http://localhost:8080/file/upload/batch" \
|
||||
-H "Cookie: ..." \
|
||||
-F "files=@/path/to/file1.png" \
|
||||
-F "files=@/path/to/file2.png" \
|
||||
-F "files=@/path/to/file3.png"
|
||||
```
|
||||
|
||||
**成功响应**
|
||||
|
||||
```json
|
||||
{
|
||||
"success": true,
|
||||
"code": "0",
|
||||
"message": "ok",
|
||||
"data": [
|
||||
{ "id": 1001, "url": "...", "size": 204800, "originalFilename": "file1.png", ... },
|
||||
{ "id": 1002, "url": "...", "size": 307200, "originalFilename": "file2.png", ... }
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
> **部分成功策略**:批量上传时,若某个文件上传失败,该文件被跳过,不影响其余文件的上传。
|
||||
|
||||
---
|
||||
|
||||
## 文件管理接口
|
||||
|
||||
### 3. 获取签名 URL
|
||||
|
||||
```
|
||||
GET /file-storage/presigned-url/{fileId}
|
||||
```
|
||||
|
||||
返回带 1 小时有效期的临时访问链接,用于文件预览或安全分发。
|
||||
|
||||
**成功响应**
|
||||
|
||||
```json
|
||||
{
|
||||
"success": true,
|
||||
"data": {
|
||||
"id": 1001,
|
||||
"url": "https://test-dragon-yf-pub.oss-cn-hangzhou.aliyuncs.com/jjb/xxx.pdf",
|
||||
"presignedUrl": "https://test-dragon-yf-pub.oss-cn-hangzhou.aliyuncs.com/jjb/xxx.pdf?Expires=...&OSSAccessKeyId=...&Signature=...",
|
||||
"size": 204800,
|
||||
"originalFilename": "document.pdf",
|
||||
"contentType": "application/pdf",
|
||||
"creatorName": "张三",
|
||||
"createdTime": "2026-06-30T10:30:00"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 4. 获取文件信息
|
||||
|
||||
```
|
||||
GET /file-storage/info/{fileId}
|
||||
```
|
||||
|
||||
仅返回文件元信息,不主动生成签名 URL。
|
||||
|
||||
### 5. 下载文件
|
||||
|
||||
```
|
||||
GET /file-storage/download/{fileId}
|
||||
```
|
||||
|
||||
以附件形式流式下载文件,`Content-Disposition: attachment`。
|
||||
|
||||
### 6. 删除文件
|
||||
|
||||
```
|
||||
DELETE /file-storage/delete/{fileId}
|
||||
```
|
||||
|
||||
同时删除 OSS 文件与 `filestorage` 表记录,不可恢复。
|
||||
|
||||
### 7. 批量删除
|
||||
|
||||
```
|
||||
DELETE /file-storage/delete-batch
|
||||
Content-Type: application/json
|
||||
|
||||
[1001, 1002, 1003]
|
||||
```
|
||||
|
||||
### 8. 列表查询
|
||||
|
||||
| 接口 | 说明 |
|
||||
|------|------|
|
||||
| `GET /file-storage/list-all` | 查询所有文件记录 |
|
||||
| `GET /file-storage/list-by-creator?creatorUid=xxx` | 按上传者 UID 查询 |
|
||||
|
||||
---
|
||||
|
||||
## 内外部调用规则
|
||||
|
||||
### 核心原则
|
||||
|
||||
| 维度 | 说明 |
|
||||
|------|------|
|
||||
| **上传写入** | 必须通过上传接口,由接口自动同步到 `filestorage` 表 |
|
||||
| **表管理** | `filestorage` 表仅提供读取和删除,不允许直接通过 API 新增/修改记录 |
|
||||
| **安全性** | 文件不直接暴露 OSS 原始 URL,前端通过签名 URL 获取临时访问权限 |
|
||||
|
||||
### 调用流程图
|
||||
|
||||
```
|
||||
┌─────────────┐ POST /file/upload ┌─────────────┐
|
||||
│ 前端 / │ ──────────────────────────▶ │ API 层 │
|
||||
│ 调用方 │ │ │
|
||||
└─────────────┘ └──────┬──────┘
|
||||
│
|
||||
┌─────────────────────┼─────────────────────┐
|
||||
▼ ▼ ▼
|
||||
┌──────────┐ ┌──────────┐ ┌──────────┐
|
||||
│ 上传 OSS │ │ 写表同步 │ │ 获取 ID │
|
||||
│(x-file- │ │filestorage│ │ 返回前端 │
|
||||
│ storage) │ │ 表记录 │ │ │
|
||||
└──────────┘ └──────────┘ └──────────┘
|
||||
```
|
||||
|
||||
### 创建人区分(扩展预留)
|
||||
|
||||
当前所有上传接口均为**内部接口**,创建人取自当前登录用户。扩展场景说明:
|
||||
|
||||
| 场景 | 接口路径 | 创建人 | 适用情况 |
|
||||
|------|----------|--------|----------|
|
||||
| 内部用户上传 | `/file/upload` | 当前登录用户 | 业务操作中上传附件、素材等 |
|
||||
| > 公开/匿名通道 | `/file/upload/public` | system | 未登录用户提交(可在需要时暴露) |
|
||||
|
||||
### 使用规范
|
||||
|
||||
1. **禁止绕过上传接口直接操作表**:`filestorage` 表的新增只能由上传接口内部完成,外部系统不允许直接 INSERT
|
||||
2. **文件访问走签名 URL**:`presignedUrl` 有效期 1 小时,到期后需重新获取
|
||||
3. **删除不可逆**:删除操作同时清理 OSS 和 DB,调用前需做二次确认
|
||||
|
||||
---
|
||||
|
||||
## 错误码
|
||||
|
||||
| 错误码 | 说明 |
|
||||
|--------|------|
|
||||
| `03-01-001` | 文件上传失败 |
|
||||
| `03-01-002` | 上传文件为空 |
|
||||
| `03-01-003` | 文件不存在 |
|
||||
| `03-01-004` | 文件删除失败 |
|
||||
| `03-01-005` | 文件下载失败 |
|
||||
| `03-01-006` | OSS 操作异常 |
|
||||
| `03-01-007` | 文件地址生成失败 |
|
||||
| `03-01-008` | 文件大小超出限制 |
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<?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">
|
||||
|
|
@ -61,6 +61,11 @@
|
|||
<version>2021.0.5.0</version>
|
||||
</dependency>
|
||||
|
||||
<!-- Spring Cloud Bootstrap(加载 bootstrap.yml) -->
|
||||
<dependency>
|
||||
<groupId>org.springframework.cloud</groupId>
|
||||
<artifactId>spring-cloud-starter-bootstrap</artifactId>
|
||||
</dependency>
|
||||
<!-- Spring Cloud LoadBalancer(Feign 服务名调用需要) -->
|
||||
<dependency>
|
||||
<groupId>org.springframework.cloud</groupId>
|
||||
|
|
@ -100,3 +105,6 @@
|
|||
</plugins>
|
||||
</build>
|
||||
</project>
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,87 +0,0 @@
|
|||
# =============================================
|
||||
# 开发/测试环境配置 (Dev)
|
||||
# 激活方式: -Dspring.profiles.active=dev
|
||||
# =============================================
|
||||
|
||||
spring:
|
||||
config:
|
||||
import:
|
||||
- optional:nacos:common.yml?refreshEnabled=true
|
||||
- optional:nacos:safety-eval-service.yml
|
||||
cloud:
|
||||
nacos:
|
||||
discovery:
|
||||
server-addr: 192.168.20.100:30290
|
||||
namespace: jjb-dragon
|
||||
config:
|
||||
server-addr: 192.168.20.100:30290
|
||||
namespace: jjb-dragon
|
||||
file-extension: yml
|
||||
shared-configs:
|
||||
- data-id: config-spring.yml
|
||||
group: DEFAULT_GROUP
|
||||
refresh: true
|
||||
- data-id: config-actuator.yml
|
||||
group: DEFAULT_GROUP
|
||||
refresh: true
|
||||
- data-id: config-cache.yml
|
||||
group: DEFAULT_GROUP
|
||||
refresh: true
|
||||
- data-id: config-sdk.yml
|
||||
group: DEFAULT_GROUP
|
||||
refresh: true
|
||||
- data-id: config-sdk-server.yml
|
||||
group: DEFAULT_GROUP
|
||||
refresh: true
|
||||
- data-id: config-log.yml
|
||||
group: DEFAULT_GROUP
|
||||
refresh: true
|
||||
- data-id: config-job.yml
|
||||
group: DEFAULT_GROUP
|
||||
refresh: false
|
||||
- data-id: config-mq.yml
|
||||
group: DEFAULT_GROUP
|
||||
refresh: false
|
||||
- data-id: config-flyway.yml
|
||||
group: DEFAULT_GROUP
|
||||
refresh: false
|
||||
datasource:
|
||||
driver-class-name: com.mysql.cj.jdbc.Driver
|
||||
url: jdbc:mysql://192.168.20.100:33080/jjb_saas_safety_eval?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
|
||||
username: root
|
||||
password: Mysql@zcloud33080
|
||||
redis:
|
||||
host: 192.168.20.100
|
||||
port: 6379
|
||||
password: Zcloud@zcloud2026
|
||||
database: 0
|
||||
timeout: 10000
|
||||
lettuce:
|
||||
pool:
|
||||
max-active: 8
|
||||
max-idle: 8
|
||||
min-idle: 0
|
||||
max-wait: -1
|
||||
|
||||
dubbo:
|
||||
registry:
|
||||
address: nacos://192.168.20.100:30290
|
||||
parameters:
|
||||
namespace: jjb-dragon-facade
|
||||
protocol:
|
||||
port: 20895
|
||||
|
||||
dragon:
|
||||
gateway:
|
||||
baseurl: http://192.168.20.100
|
||||
res: http://192.168.20.100
|
||||
is-system: 'false'
|
||||
system-url: http://jjb-saas-system
|
||||
|
||||
mybatis-plus:
|
||||
configuration:
|
||||
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
|
||||
|
||||
logging:
|
||||
level:
|
||||
org.qinan.safetyeval: debug
|
||||
|
|
@ -1,135 +0,0 @@
|
|||
# =============================================
|
||||
# 本地开发环境配置 (Local)
|
||||
# 激活方式: -Dspring.profiles.active=local 或 IDEA Run Configuration
|
||||
# =============================================
|
||||
|
||||
spring:
|
||||
config:
|
||||
import:
|
||||
- optional:nacos:common.yml?refreshEnabled=true
|
||||
- optional:nacos:safety-eval-service.yml
|
||||
cloud:
|
||||
nacos:
|
||||
discovery:
|
||||
enabled: true
|
||||
server-addr: 192.168.20.100:30290
|
||||
namespace: jjb-dragon
|
||||
config:
|
||||
server-addr: 192.168.20.100:30290
|
||||
namespace: jjb-dragon
|
||||
file-extension: yml
|
||||
shared-configs:
|
||||
- data-id: config-spring.yml
|
||||
group: DEFAULT_GROUP
|
||||
refresh: true
|
||||
- data-id: config-actuator.yml
|
||||
group: DEFAULT_GROUP
|
||||
refresh: true
|
||||
- data-id: config-cache.yml
|
||||
group: DEFAULT_GROUP
|
||||
refresh: true
|
||||
- data-id: config-sdk.yml
|
||||
group: DEFAULT_GROUP
|
||||
refresh: true
|
||||
- data-id: config-sdk-server.yml
|
||||
group: DEFAULT_GROUP
|
||||
refresh: true
|
||||
- data-id: config-log.yml
|
||||
group: DEFAULT_GROUP
|
||||
refresh: true
|
||||
- data-id: config-job.yml
|
||||
group: DEFAULT_GROUP
|
||||
refresh: false
|
||||
- data-id: config-mq.yml
|
||||
group: DEFAULT_GROUP
|
||||
refresh: false
|
||||
- data-id: config-flyway.yml
|
||||
group: DEFAULT_GROUP
|
||||
refresh: false
|
||||
datasource:
|
||||
driver-class-name: com.mysql.cj.jdbc.Driver
|
||||
url: jdbc:mysql://192.168.20.100:33080/jjb_saas_safety_eval?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
|
||||
username: root
|
||||
password: Mysql@zcloud33080
|
||||
redis:
|
||||
host: 192.168.20.100
|
||||
port: 6379
|
||||
password: Zcloud@zcloud2026
|
||||
database: 0
|
||||
timeout: 10000
|
||||
lettuce:
|
||||
pool:
|
||||
max-active: 8
|
||||
max-idle: 8
|
||||
min-idle: 0
|
||||
max-wait: -1
|
||||
|
||||
dubbo:
|
||||
registry:
|
||||
address: nacos://192.168.20.100:30290
|
||||
parameters:
|
||||
namespace: jjb-dragon-facade
|
||||
protocol:
|
||||
port: 20895
|
||||
name: dubbo
|
||||
|
||||
dragon:
|
||||
gateway:
|
||||
baseurl: http://192.168.20.100
|
||||
res: http://192.168.20.100
|
||||
is-system: 'false'
|
||||
system-url: http://jjb-saas-system
|
||||
|
||||
mybatis-plus:
|
||||
configuration:
|
||||
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
|
||||
|
||||
logging:
|
||||
level:
|
||||
org.qinan.safetyeval: debug
|
||||
|
||||
# 本地联调:企业信息管理接口免鉴权(覆盖 application.yml 中 security 配置)
|
||||
safety-eval:
|
||||
gbs-user-sync:
|
||||
fail-fast: true
|
||||
user-facade-url: ${GBS_USER_FACADE_URL:dubbo://192.168.20.100:32080}
|
||||
security:
|
||||
permit-all-paths:
|
||||
- /v2/api-docs
|
||||
- /v3/api-docs
|
||||
permit-all-prefixes:
|
||||
- /swagger-ui
|
||||
- /swagger-resources
|
||||
- /webjars
|
||||
- /public/org-personnel
|
||||
- /test
|
||||
- /tmp
|
||||
- /mock
|
||||
- /org-info
|
||||
- /org-department
|
||||
- /org-position
|
||||
- /org-qualification
|
||||
- /org-personnel
|
||||
- /org-personnel-cert
|
||||
- /org-personnel-change
|
||||
- /org-resign-apply
|
||||
- /org-equipment
|
||||
- /qual-filing
|
||||
- /qual-filing-change
|
||||
- /qual-filing-change-detail
|
||||
- /qual-filing-commitment
|
||||
- /qual-filing-equipment
|
||||
- /qual-filing-material
|
||||
- /qual-filing-personnel
|
||||
- /qual-filing-personnel-cert
|
||||
- /file-storage
|
||||
- /file
|
||||
# 本地联调默认用户上下文(与 init-v2.sql 测试数据 @org_id=1 @tenant_id=1001 一致)
|
||||
public-api:
|
||||
system-user-id: 1
|
||||
system-user-name: local-dev
|
||||
tenant-id: 1001
|
||||
org-id: 1
|
||||
def:
|
||||
passwrod: a123456
|
||||
publicKey: 0402df2195296d4062ac85ad766994d73e871b887e18efb9a9a06b4cebc72372869b7da6c347c129dee2b46a0f279ff066b01c76208c2a052af75977c722a2ccee
|
||||
|
|
@ -1,88 +0,0 @@
|
|||
# =============================================
|
||||
# 生产环境配置 (Prod)
|
||||
# 激活方式: -Dspring.profiles.active=prod
|
||||
# K8s集群内部署,使用服务名寻址
|
||||
# =============================================
|
||||
|
||||
spring:
|
||||
config:
|
||||
import:
|
||||
- nacos:common.yml?refreshEnabled=true
|
||||
- nacos:safety-eval-service.yml
|
||||
cloud:
|
||||
nacos:
|
||||
discovery:
|
||||
server-addr: prod-nacos:8848
|
||||
namespace: jjb-dragon
|
||||
username: nacos
|
||||
password: u9Hc7tLFBY
|
||||
config:
|
||||
server-addr: prod-nacos:8848
|
||||
namespace: jjb-dragon
|
||||
username: nacos
|
||||
password: u9Hc7tLFBY
|
||||
file-extension: yml
|
||||
shared-configs:
|
||||
- data-id: config-spring.yml
|
||||
group: DEFAULT_GROUP
|
||||
refresh: true
|
||||
- data-id: config-actuator.yml
|
||||
group: DEFAULT_GROUP
|
||||
refresh: true
|
||||
- data-id: config-cache.yml
|
||||
group: DEFAULT_GROUP
|
||||
refresh: true
|
||||
- data-id: config-sdk.yml
|
||||
group: DEFAULT_GROUP
|
||||
refresh: true
|
||||
- data-id: config-sdk-server.yml
|
||||
group: DEFAULT_GROUP
|
||||
refresh: true
|
||||
- data-id: config-log.yml
|
||||
group: DEFAULT_GROUP
|
||||
refresh: true
|
||||
- data-id: config-job.yml
|
||||
group: DEFAULT_GROUP
|
||||
refresh: false
|
||||
- data-id: config-mq.yml
|
||||
group: DEFAULT_GROUP
|
||||
refresh: false
|
||||
- data-id: config-flyway.yml
|
||||
group: DEFAULT_GROUP
|
||||
refresh: false
|
||||
datasource:
|
||||
driver-class-name: com.mysql.cj.jdbc.Driver
|
||||
url: jdbc:mysql://prod-mysql:3306/jjb_saas_safety_eval?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
|
||||
username: root
|
||||
password: Mysql@zcloud33080
|
||||
redis:
|
||||
host: prod-redis
|
||||
port: 6379
|
||||
password: Zcloud@zcloud2026
|
||||
database: 0
|
||||
timeout: 10000
|
||||
lettuce:
|
||||
pool:
|
||||
max-active: 16
|
||||
max-idle: 8
|
||||
min-idle: 4
|
||||
max-wait: -1
|
||||
|
||||
dubbo:
|
||||
registry:
|
||||
address: nacos://prod-nacos:8848
|
||||
parameters:
|
||||
namespace: jjb-dragon-facade
|
||||
protocol:
|
||||
port: 20895
|
||||
|
||||
dragon:
|
||||
gateway:
|
||||
baseurl: http://jjb-saas-gateway
|
||||
res: http://jjb-saas-gateway
|
||||
is-system: 'false'
|
||||
system-url: http://jjb-saas-system
|
||||
|
||||
logging:
|
||||
level:
|
||||
org.qinan.safetyeval: info
|
||||
|
|
@ -1,107 +0,0 @@
|
|||
# =============================================
|
||||
# 安全评价业务服务 - 公共配置(所有环境共享)
|
||||
# =============================================
|
||||
application:
|
||||
name: jjb-saas-cq-anquan
|
||||
version:
|
||||
gateway: cqanquan
|
||||
cn-name: 重庆安全评价
|
||||
|
||||
|
||||
server:
|
||||
port: 8095
|
||||
servlet:
|
||||
context-path: /safety-eval
|
||||
|
||||
spring:
|
||||
application:
|
||||
name: safety-eval-service
|
||||
mvc:
|
||||
pathmatch:
|
||||
matching-strategy: ant_path_matcher
|
||||
profiles:
|
||||
active: local
|
||||
config:
|
||||
import:
|
||||
- classpath:sdk-prod2.yml
|
||||
servlet:
|
||||
multipart:
|
||||
enabled: true
|
||||
max-file-size: 100MB
|
||||
max-request-size: 500MB
|
||||
|
||||
|
||||
# ---------- MyBatis Plus ----------
|
||||
mybatis-plus:
|
||||
mapper-locations: classpath*:mapper/**/*.xml
|
||||
global-config:
|
||||
db-config:
|
||||
id-type: assign_id
|
||||
logic-delete-field: deleteEnum
|
||||
logic-delete-value: "true"
|
||||
logic-not-delete-value: "false"
|
||||
configuration:
|
||||
map-underscore-to-camel-case: true
|
||||
|
||||
# ---------- 文件存储(阿里云 OSS) ----------
|
||||
dromara:
|
||||
x-file-storage:
|
||||
default-platform: aliyun-oss-1
|
||||
thumbnail-suffix: "" # 不使用缩略图
|
||||
aliyun-oss:
|
||||
- platform: aliyun-oss-1
|
||||
enable-storage: true
|
||||
access-key: LTAI5tFerUgBCLEbXtinDD6d
|
||||
secret-key: XyGVNV2RvW8U3ceoJDiy9A9oLvCGYp
|
||||
end-point: oss-cn-hangzhou.aliyuncs.com
|
||||
bucket-name: test-dragon-yf-pub
|
||||
domain: https://test-dragon-yf-pub.oss-cn-hangzhou.aliyuncs.com/
|
||||
base-path: jjb/
|
||||
|
||||
# ---------- Dubbo(环境无关的公共部分,各profile覆盖地址/端口) ----------
|
||||
dubbo:
|
||||
application:
|
||||
name: safety-eval-service
|
||||
service-discovery:
|
||||
migration: FORCE_INTERFACE
|
||||
registry:
|
||||
timeout: 20000
|
||||
check: false
|
||||
filter: providerContextFilter
|
||||
scan:
|
||||
base-packages: org.qinan.safetyeval
|
||||
protocol:
|
||||
name: dubbo
|
||||
consumer:
|
||||
timeout: 20000
|
||||
check: false
|
||||
filter: consumerContextFilter
|
||||
|
||||
safety-eval:
|
||||
gbs-user-sync:
|
||||
fail-fast: true
|
||||
user-facade-url: ${GBS_USER_FACADE_URL:}
|
||||
security:
|
||||
# Exact paths that can be accessed without authentication.
|
||||
permit-all-paths:
|
||||
- /v2/api-docs
|
||||
- /v3/api-docs
|
||||
# A prefix automatically matches itself and all child paths.
|
||||
permit-all-prefixes:
|
||||
- /swagger-ui
|
||||
- /swagger-resources
|
||||
- /webjars
|
||||
- /public
|
||||
- /test
|
||||
- /tmp
|
||||
- /mock
|
||||
# These rules take priority over permit-all rules when paths overlap.
|
||||
authenticated-paths: []
|
||||
authenticated-prefixes: []
|
||||
public-api:
|
||||
system-user-id: ${PUBLIC_API_SYSTEM_USER_ID:0}
|
||||
system-user-name: ${PUBLIC_API_SYSTEM_USER_NAME:system}
|
||||
tenant-id: ${PUBLIC_API_TENANT_ID:0}
|
||||
org-id: ${PUBLIC_API_ORG_ID:0}
|
||||
attachment:
|
||||
default-url: https://s1.aigei.com/prevfiles/6f2754563be2491bad7c957904cd7d2a.jpg?e=2051020800&token=P7S2Xpzfz11vAkASLTkfHN7Fw-oOZBecqeJaxypL:CR60zg7VKDp-jUWyYls_rdvyQMM=
|
||||
|
|
@ -1,15 +1,38 @@
|
|||
# =============================================
|
||||
# [已废弃] 此文件不再生效
|
||||
# =============================================
|
||||
# 原因: 项目未引入 spring-cloud-starter-bootstrap 依赖,
|
||||
# Spring Cloud 2021.x 默认不加载 bootstrap 上下文。
|
||||
#
|
||||
# 已迁移至:
|
||||
# - application-{profile}.yml → Nacos 连接信息与 spring.config.import
|
||||
#
|
||||
# 如需恢复 bootstrap 机制,请在 safety-eval-start/pom.xml 中添加:
|
||||
# <dependency>
|
||||
# <groupId>org.springframework.cloud</groupId>
|
||||
# <artifactId>spring-cloud-starter-bootstrap</artifactId>
|
||||
# </dependency>
|
||||
# =============================================
|
||||
spring:
|
||||
profiles:
|
||||
active: ${SPRING_PROFILES_ACTIVE:local}
|
||||
cloud:
|
||||
nacos:
|
||||
config:
|
||||
import-check:
|
||||
enabled: false
|
||||
---
|
||||
spring:
|
||||
config:
|
||||
activate:
|
||||
on-profile: local
|
||||
import:
|
||||
- classpath:nacos.yml
|
||||
- classpath:nacos/config-common.yml
|
||||
- classpath:nacos/config-port.yml
|
||||
- classpath:nacos/config-mq.yml
|
||||
- classpath:nacos/config-log.yml
|
||||
- classpath:nacos/config-actuator.yml
|
||||
- classpath:nacos/config-job.yml
|
||||
- classpath:nacos/config-mysql.yml
|
||||
- classpath:nacos/config-redis.yml
|
||||
- classpath:nacos/config-cache.yml
|
||||
- classpath:nacos/config-spring.yml
|
||||
- classpath:nacos/config-mybatis.yml
|
||||
- classpath:nacos/config-sdk.yml
|
||||
- classpath:sdk.yml
|
||||
- classpath:swagger.yml
|
||||
---
|
||||
spring:
|
||||
config:
|
||||
activate:
|
||||
on-profile: prod
|
||||
import:
|
||||
- classpath:nacos-prod.yml
|
||||
- classpath:sdk-prod.yml
|
||||
- classpath:swagger.yml
|
||||
|
|
|
|||
|
|
@ -0,0 +1,41 @@
|
|||
nacos:
|
||||
url: prod-nacos:8848
|
||||
namespace: jjb-dragon
|
||||
|
||||
application:
|
||||
name: safety-eval-service
|
||||
version:
|
||||
gateway: safety-eval
|
||||
cn-name: 重庆安全评价
|
||||
|
||||
spring:
|
||||
application:
|
||||
name: ${application.name}${application.version}
|
||||
cloud:
|
||||
nacos:
|
||||
config:
|
||||
username: nacos
|
||||
password: u9Hc7tLFBY
|
||||
namespace: ${nacos.namespace}
|
||||
server-addr: ${nacos.url}
|
||||
file-extension: yml
|
||||
shared-configs:
|
||||
- config-common.yml
|
||||
- config-port.yml
|
||||
- config-mq.yml
|
||||
- config-log.yml
|
||||
- config-sdk-server.yml
|
||||
- config-actuator.yml
|
||||
- config-job.yml
|
||||
- config-mysql.yml
|
||||
- config-redis.yml
|
||||
- config-cache.yml
|
||||
- config-spring.yml
|
||||
- config-mybatis.yml
|
||||
- config-sdk.yml
|
||||
- config-flyway.yml
|
||||
discovery:
|
||||
server-addr: ${spring.cloud.nacos.config.server-addr}
|
||||
namespace: ${spring.cloud.nacos.config.namespace}
|
||||
username: nacos
|
||||
password: u9Hc7tLFBY
|
||||
|
|
@ -0,0 +1,38 @@
|
|||
nacos:
|
||||
url: 192.168.20.100:30290
|
||||
namespace: jjb-dragon
|
||||
|
||||
application:
|
||||
name: safety-eval-service
|
||||
version:
|
||||
gateway: safety-eval
|
||||
cn-name: 重庆安全评价
|
||||
|
||||
spring:
|
||||
application:
|
||||
name: ${application.name}${application.version}
|
||||
cloud:
|
||||
nacos:
|
||||
config:
|
||||
namespace: ${nacos.namespace}
|
||||
server-addr: ${nacos.url}
|
||||
file-extension: yml
|
||||
shared-configs:
|
||||
- config-common.yml
|
||||
- config-port.yml
|
||||
- config-mq.yml
|
||||
- config-log.yml
|
||||
- config-sdk-server.yml
|
||||
- config-actuator.yml
|
||||
- config-job.yml
|
||||
- config-mysql.yml
|
||||
- config-redis.yml
|
||||
- config-cache.yml
|
||||
- config-spring.yml
|
||||
- config-mybatis.yml
|
||||
- config-sdk.yml
|
||||
- config-flyway.yml
|
||||
discovery:
|
||||
enabled: true
|
||||
server-addr: ${spring.cloud.nacos.config.server-addr}
|
||||
namespace: ${spring.cloud.nacos.config.namespace}
|
||||
|
|
@ -1,12 +1,12 @@
|
|||
common:
|
||||
common:
|
||||
mysql:
|
||||
host: 192.168.2.166
|
||||
port: 3306
|
||||
host: 192.168.20.100
|
||||
port: 33080
|
||||
username: root
|
||||
password: root
|
||||
password: Mysql@zcloud33080
|
||||
redis:
|
||||
host: 10.43.253.4
|
||||
password: jjb123456
|
||||
host: 192.168.20.100
|
||||
password: Zcloud@zcloud2026
|
||||
port: 6379
|
||||
mq:
|
||||
host: 10.43.163.23:9876
|
||||
|
|
@ -17,28 +17,19 @@ common:
|
|||
gateway:
|
||||
network:
|
||||
http:
|
||||
#网关的外网访问地址 必须配置为HTTPS协议
|
||||
external: https://testdragon.cqjjb.cn
|
||||
#网关的内网访问地址 固定配置为http://jjb-saas-gateway
|
||||
intranet: http://10.43.250.65
|
||||
external: http://192.168.20.100
|
||||
intranet: http://192.168.20.100
|
||||
wx:
|
||||
#webSocket外网地址
|
||||
external: wx://testdragon.cqjjb.cn
|
||||
swagger:
|
||||
#是否打开swagger 测试及UAT配置为true,生产环境配置为false
|
||||
enabled: true
|
||||
base:
|
||||
# base应用访问外网访问地址
|
||||
host-url: http://10.43.12.158
|
||||
desk:
|
||||
# desk工程的外网地址
|
||||
host-url: http://10.43.12.158
|
||||
login:
|
||||
# login工程的外网访问地址
|
||||
host-url: http://10.43.12.158
|
||||
|
||||
#所有的前端域名配置 避免iframe跨域
|
||||
x-frame-options: ${common.desk.host-url}/ ${common.login.host-url}/ ${common.base.host-url}/ ${common.gateway.network.http.external}/ http://10.43.250.65/
|
||||
|
||||
k8s:
|
||||
namespace: test-dragon
|
||||
namespace: test-dragon
|
||||
|
|
|
|||
|
|
@ -1,11 +1,13 @@
|
|||
mybatis-plus:
|
||||
mapper-locations: classpath*:mapper/*.xml,classpath*:mapper/**/*Mapper.xml
|
||||
mybatis-plus:
|
||||
mapper-locations: classpath*:mapper/**/*.xml
|
||||
type-handlers-package: com.jjb.saas.framework.datascope.handler
|
||||
global-config:
|
||||
banner: false
|
||||
db-config:
|
||||
id-type: assign_id
|
||||
logic-delete-value: 1
|
||||
logic-not-delete-value: 0
|
||||
logic-delete-field: deleteEnum
|
||||
logic-delete-value: "true"
|
||||
logic-not-delete-value: "false"
|
||||
configuration:
|
||||
log-impl: org.apache.ibatis.logging.nologging.NoLoggingImpl
|
||||
map-underscore-to-camel-case: true
|
||||
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
|
||||
|
|
|
|||
|
|
@ -1,6 +1,12 @@
|
|||
mysql:
|
||||
db: ${spring.application.name}
|
||||
mysql:
|
||||
db: jjb_saas_safety_eval
|
||||
|
||||
spring:
|
||||
datasource:
|
||||
driver-class-name: com.mysql.cj.jdbc.Driver
|
||||
url: jdbc:mysql://${common.mysql.host}:${common.mysql.port}/${mysql.db}?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&allowMultiQueries=true
|
||||
username: ${common.mysql.username}
|
||||
password: ${common.mysql.password}
|
||||
shardingsphere:
|
||||
druid:
|
||||
username: admin
|
||||
|
|
@ -12,13 +18,12 @@ spring:
|
|||
show: true
|
||||
enabled: true
|
||||
masterslave:
|
||||
name: ms # 名字,任意,需要保证唯一
|
||||
master-data-source-name: master # 主库数据源
|
||||
slave-data-source-names: slave-1 # 从库数据源
|
||||
name: ms
|
||||
master-data-source-name: master
|
||||
slave-data-source-names: slave-1
|
||||
datasource:
|
||||
names: master,slave-1
|
||||
master:
|
||||
#url: jdbc:mysql://10.43.123.226:3306/${spring.application.name}?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&allowMultiQueries=true&serverTimezone=Asia/Shanghai
|
||||
url: jdbc:mysql://${common.mysql.host}:${common.mysql.port}/${mysql.db}?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&allowMultiQueries=true&serverTimezone=Asia/Shanghai
|
||||
username: ${common.mysql.username}
|
||||
password: ${common.mysql.password}
|
||||
|
|
@ -27,28 +32,19 @@ spring:
|
|||
initial-size: 6
|
||||
min-idle: 4
|
||||
maxActive: 40
|
||||
# 配置获取连接等待超时的时间
|
||||
maxWait: 60000
|
||||
# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
|
||||
timeBetweenEvictionRunsMillis: 60000
|
||||
# 配置一个连接在池中最小生存的时间,单位是毫秒
|
||||
minEvictableIdleTimeMillis: 300000
|
||||
#Oracle需要打开注释
|
||||
#validationQuery: SELECT 1 FROM DUAL
|
||||
testWhileIdle: true
|
||||
testOnBorrow: false
|
||||
testOnReturn: false
|
||||
# 打开PSCache,并且指定每个连接上PSCache的大小
|
||||
poolPreparedStatements: true
|
||||
maxPoolPreparedStatementPerConnectionSize: 20
|
||||
# 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
|
||||
filters: slf4j
|
||||
# 通过connectProperties属性来打开mergeSql功能;慢SQL记录
|
||||
connectionProperties: druid.stat.mergeSql\=true;druid.stat.slowSqlMillis\=5000
|
||||
wall:
|
||||
multi-statement-allow: true
|
||||
slave-1:
|
||||
# url: jdbc:mysql://10.43.123.226:3306/${spring.application.name}?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&allowMultiQueries=true&serverTimezone=Asia/Shanghai
|
||||
url: jdbc:mysql://${common.mysql.host}:${common.mysql.port}/${mysql.db}?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&allowMultiQueries=true&serverTimezone=Asia/Shanghai
|
||||
username: ${common.mysql.username}
|
||||
password: ${common.mysql.password}
|
||||
|
|
@ -57,23 +53,15 @@ spring:
|
|||
initial-size: 6
|
||||
min-idle: 4
|
||||
maxActive: 20
|
||||
# 配置获取连接等待超时的时间
|
||||
maxWait: 60000
|
||||
# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
|
||||
timeBetweenEvictionRunsMillis: 60000
|
||||
# 配置一个连接在池中最小生存的时间,单位是毫秒
|
||||
minEvictableIdleTimeMillis: 300000
|
||||
#Oracle需要打开注释
|
||||
#validationQuery: SELECT 1 FROM DUAL
|
||||
testWhileIdle: true
|
||||
testOnBorrow: false
|
||||
testOnReturn: false
|
||||
# 打开PSCache,并且指定每个连接上PSCache的大小
|
||||
poolPreparedStatements: true
|
||||
maxPoolPreparedStatementPerConnectionSize: 20
|
||||
# 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙,stat已去掉
|
||||
filters: slf4j
|
||||
# 通过connectProperties属性来打开mergeSql功能;慢SQL记录
|
||||
connectionProperties: druid.stat.mergeSql\=true;druid.stat.slowSqlMillis\=5000
|
||||
wall:
|
||||
multi-statement-allow: true
|
||||
multi-statement-allow: true
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
server:
|
||||
port: 80
|
||||
debug: true
|
||||
debug: false
|
||||
|
|
@ -1,14 +1,20 @@
|
|||
spring:
|
||||
spring:
|
||||
redis:
|
||||
host: ${common.redis.host}
|
||||
password: ${common.redis.password}
|
||||
port: ${common.redis.port}
|
||||
timeout: 15000
|
||||
timeout: 10000
|
||||
database: 0
|
||||
prefix: dragon
|
||||
lettuce:
|
||||
pool:
|
||||
max-active: 8
|
||||
max-idle: 8
|
||||
min-idle: 0
|
||||
max-wait: -1
|
||||
jedis:
|
||||
pool:
|
||||
max-active: 600
|
||||
max-idle: 300
|
||||
max-wait: 15000
|
||||
min-idle: 10
|
||||
min-idle: 10
|
||||
|
|
|
|||
|
|
@ -1,19 +1,20 @@
|
|||
sdk:
|
||||
sdk:
|
||||
server:
|
||||
symmetry-url: jjb-saas-application/application/applications/server/secure/
|
||||
app-key: jjb-saas-dragon
|
||||
client:
|
||||
app-key: jjb-saas-dragon
|
||||
security:
|
||||
gateway: ${gateway.network.http.external}
|
||||
gateway: ${common.gateway.network.http.external}
|
||||
appKey: ${sdk.client.app-key}
|
||||
desensitization:
|
||||
symmetric-key: 1234567887654321
|
||||
logging:
|
||||
gateway: ${sdk.client.security.gateway}
|
||||
appKey: ${sdk.client.security.app-key}
|
||||
appKey: ${sdk.client.security.appKey}
|
||||
clientLoggingEnable: true
|
||||
level: debug
|
||||
username: user
|
||||
password: 123456
|
||||
showConsoleLog: true
|
||||
formatConsoleLogJson: true
|
||||
formatConsoleLogJson: true
|
||||
|
|
|
|||
|
|
@ -1,13 +1,11 @@
|
|||
spring:
|
||||
spring:
|
||||
zipkin:
|
||||
#zipkin服务所在地址
|
||||
base-url: http://jjb-saas-zipkin/
|
||||
sender:
|
||||
type: web #使用http的方式传输数据
|
||||
#配置采样百分比
|
||||
type: web
|
||||
sleuth:
|
||||
sampler:
|
||||
probability: 1 # 将采样比例设置为 1.0,也就是全部都需要。默认是0.1也就是10%,一般情况下,10%就够用了
|
||||
probability: 1
|
||||
web:
|
||||
resources:
|
||||
cache:
|
||||
|
|
@ -23,56 +21,66 @@ spring:
|
|||
pathmatch:
|
||||
matching-strategy: ant_path_matcher
|
||||
messages:
|
||||
basename: i18n.message
|
||||
basename: i18n.messages
|
||||
encoding: UTF-8
|
||||
servlet:
|
||||
multipart:
|
||||
enabled: true
|
||||
max-file-size: 100MB
|
||||
max-request-size: 500MB
|
||||
flyway:
|
||||
# 是否启用flyway
|
||||
enabled: true
|
||||
# 编码格式,默认UTF-8
|
||||
encoding: UTF-8
|
||||
# 迁移sql脚本文件存放路径,默认db/migration
|
||||
locations: classpath:db/migration
|
||||
# 迁移sql脚本文件名称的前缀,默认V
|
||||
sql-migration-prefix: V
|
||||
# 迁移sql脚本文件名称的分隔符,默认2个下划线__
|
||||
sql-migration-separator: __
|
||||
# 迁移sql脚本文件名称的后缀
|
||||
sql-migration-suffixes: .sql
|
||||
# 迁移时是否进行校验,默认true
|
||||
validate-on-migrate: true
|
||||
# 当迁移发现数据库非空且存在没有元数据的表时,自动执行基准迁移,新建schema_version表
|
||||
baseline-on-migrate: true
|
||||
|
||||
server:
|
||||
servlet:
|
||||
context-path: /${application.gateway}
|
||||
tomcat:
|
||||
max-http-post-size: 200MB
|
||||
connection-timeout: 180000
|
||||
|
||||
fastjson:
|
||||
parser:
|
||||
safeMode: true
|
||||
|
||||
mvc:
|
||||
pathmatch:
|
||||
matching-strategy: ANT_PATH_MATCHER
|
||||
|
||||
thymeleaf:
|
||||
prefix: classpath:/templates/
|
||||
cache: false
|
||||
|
||||
dubbo:
|
||||
application:
|
||||
name: ${spring.application.name}
|
||||
service-discovery:
|
||||
migration: FORCE_INTERFACE
|
||||
registry:
|
||||
timeout: 20000
|
||||
address: nacos://${spring.cloud.nacos.config.server-addr}?namespace=${spring.cloud.nacos.config.namespace}-facade
|
||||
check: false
|
||||
filter: providerContextFilter
|
||||
scan:
|
||||
base-packages: org.qinan.safetyeval
|
||||
protocol:
|
||||
port: -1
|
||||
port: 20895
|
||||
name: dubbo
|
||||
consumer:
|
||||
timeout: 20000
|
||||
check: false
|
||||
filter: consumerContextFilter
|
||||
|
||||
logging:
|
||||
config: classpath:jjb-saas-logback-spring.xml
|
||||
level:
|
||||
org.qinan.safetyeval: debug
|
||||
com.alibaba.nacos.client.naming: OFF
|
||||
com.alibaba.nacos.client.config.impl: OFF
|
||||
com.alibaba.nacos.common.remote.client: OFF
|
||||
|
|
@ -86,4 +94,72 @@ easy-retry:
|
|||
host: http://jjb-saas-config
|
||||
port: 1788
|
||||
|
||||
dromara:
|
||||
x-file-storage:
|
||||
default-platform: aliyun-oss-1
|
||||
thumbnail-suffix: ""
|
||||
aliyun-oss:
|
||||
- platform: aliyun-oss-1
|
||||
enable-storage: true
|
||||
access-key: LTAI5tFerUgBCLEbXtinDD6d
|
||||
secret-key: XyGVNV2RvW8U3ceoJDiy9A9oLvCGYp
|
||||
end-point: oss-cn-hangzhou.aliyuncs.com
|
||||
bucket-name: test-dragon-yf-pub
|
||||
domain: https://test-dragon-yf-pub.oss-cn-hangzhou.aliyuncs.com/
|
||||
base-path: jjb/
|
||||
|
||||
dragon:
|
||||
gateway:
|
||||
baseurl: ${common.gateway.network.http.intranet}
|
||||
res: ${common.gateway.network.http.intranet}
|
||||
is-system: 'false'
|
||||
system-url: http://jjb-saas-system
|
||||
|
||||
safety-eval:
|
||||
gbs-user-sync:
|
||||
fail-fast: true
|
||||
user-facade-url: ${GBS_USER_FACADE_URL:dubbo://192.168.20.100:32080}
|
||||
security:
|
||||
permit-all-paths:
|
||||
- /v2/api-docs
|
||||
- /v3/api-docs
|
||||
permit-all-prefixes:
|
||||
- /swagger-ui
|
||||
- /swagger-resources
|
||||
- /webjars
|
||||
- /public/org-personnel
|
||||
- /test
|
||||
- /tmp
|
||||
- /mock
|
||||
- /org-info
|
||||
- /org-department
|
||||
- /org-position
|
||||
- /org-qualification
|
||||
- /org-personnel
|
||||
- /org-personnel-cert
|
||||
- /org-personnel-change
|
||||
- /org-resign-apply
|
||||
- /org-equipment
|
||||
- /qual-filing
|
||||
- /qual-filing-change
|
||||
- /qual-filing-change-detail
|
||||
- /qual-filing-commitment
|
||||
- /qual-filing-equipment
|
||||
- /qual-filing-material
|
||||
- /qual-filing-personnel
|
||||
- /qual-filing-personnel-cert
|
||||
- /file-storage
|
||||
- /file
|
||||
authenticated-paths: []
|
||||
authenticated-prefixes: []
|
||||
public-api:
|
||||
system-user-id: 1
|
||||
system-user-name: local-dev
|
||||
tenant-id: 1001
|
||||
org-id: 1
|
||||
attachment:
|
||||
default-url: https://s1.aigei.com/prevfiles/6f2754563be2491bad7c957904cd7d2a.jpg?e=2051020800&token=P7S2Xpzfz11vAkASLTkfHN7Fw-oOZBecqeJaxypL:CR60zg7VKDp-jUWyYls_rdvyQMM=
|
||||
|
||||
def:
|
||||
password: a123456
|
||||
publicKey: 0402df2195296d4062ac85ad766994d73e871b887e18efb9a9a06b4cebc72372869b7da6c347c129dee2b46a0f279ff066b01c76208c2a052af75977c722a2ccee
|
||||
|
|
|
|||
|
|
@ -5,14 +5,12 @@ sdk:
|
|||
url: ${common.gateway.network.http.intranet}
|
||||
swagger:
|
||||
enabled: ${common.swagger.enabled}
|
||||
title: 例子
|
||||
description: 这是例子项目
|
||||
title: Demo
|
||||
description: Safety Eval API Docs
|
||||
version: ${application.version}
|
||||
group-name: 例子
|
||||
group-name: Demo
|
||||
springfox:
|
||||
documentation:
|
||||
swagger-ui:
|
||||
base-url: ${application.gateway}
|
||||
swagger:
|
||||
v2:
|
||||
path: /${application.gateway}/v2/api-docs
|
||||
path: /v2/api-docs
|
||||
|
|
|
|||
|
|
@ -0,0 +1,52 @@
|
|||
sdk:
|
||||
server:
|
||||
app-key: cbbfef15159e4578928dad804eb46dad
|
||||
client:
|
||||
gateway:
|
||||
url: ${common.gateway.network.http.external}
|
||||
route:
|
||||
- client:
|
||||
system-code: ${application.name}
|
||||
name: ${application.cn-name}-后端
|
||||
group-code: public_api
|
||||
service:
|
||||
system-code: ${application.name}
|
||||
name: ${application.cn-name}-后端
|
||||
group-code: public_api
|
||||
strip-prefix: 0
|
||||
uri: http://${application.name}
|
||||
path: /${application.gateway}/**
|
||||
- client:
|
||||
system-code: ${application.name}-container
|
||||
name: ${application.cn-name}-前端
|
||||
group-code: public_api
|
||||
service:
|
||||
system-code: ${application.name}-container
|
||||
name: ${application.cn-name}-前端
|
||||
group-code: public_api
|
||||
strip-prefix: 0
|
||||
uri: http://jjb-saas-base
|
||||
path: /${application.gateway}/container/**
|
||||
order: -2
|
||||
openapi:
|
||||
appId: 2070081274042777600
|
||||
appKey: dd367066994a4e93a49e847f26462f60
|
||||
appSecret: 9dc007e9-54a1-46d2-af11-589ad117454f
|
||||
appPublicKey: 3059301306072a8648ce3d020106082a811ccf5501822d03420004023c307eab0553b42f6bc983c299ca2f61f4779846742572a0022c3fd33260997281fd57202bad8e9b9b55da8bda311acc1ac49873ba70f583e0245a7c9fa3aa
|
||||
appPrivateKey: 3059301306072a8648ce3d020106082a811ccf5501822d0342000446043bd54674d84483cf64b72afa7e6b01b8ca2932a59317ff456c7c047636e39f7a1f00379f79cfba280446195e5b0c2bc34727dac6fd3a8206f2d856ed84d4
|
||||
encryptType: SM2
|
||||
platform:
|
||||
- name: default
|
||||
openPublicKey: 3059301306072a8648ce3d020106082a811ccf5501822d03420004023c307eab0553b42f6bc983c299ca2f61f4779846742572a0022c3fd33260997281fd57202bad8e9b9b55da8bda311acc1ac49873ba70f583e0245a7c9fa3aa
|
||||
url: ${common.gateway.network.http.intranet}
|
||||
protocol: HTTP
|
||||
defaultPlatform: true
|
||||
##ciphertext plaintext
|
||||
type: plaintext
|
||||
apiPlatform:
|
||||
- name: default
|
||||
#多个可以逗号隔开
|
||||
apiCode: test:01
|
||||
#多个可以逗号隔开,可以为空
|
||||
tenantIds: 1838408702262321152
|
||||
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
sdk:
|
||||
server:
|
||||
app-key: 8790123e6cf1441d9e618346e9c7a17f
|
||||
app-key: cbbfef15159e4578928dad804eb46dad
|
||||
client:
|
||||
gateway:
|
||||
url: ${common.gateway.network.http.external}
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
swagger:
|
||||
enabled: ${common.swagger.enabled:true}
|
||||
title: ${application.cn-name}
|
||||
description: Safety Eval API Docs
|
||||
version: 1.0.0
|
||||
group-name: ${application.cn-name}
|
||||
springfox:
|
||||
documentation:
|
||||
swagger:
|
||||
v2:
|
||||
path: /v2/api-docs
|
||||
|
|
@ -1,23 +0,0 @@
|
|||
<!doctype html><html lang="zh"><head data-built-info="@cqsjjb/scripts@2.0.0-rspack.1 Frontend_Env[development] Build_Date[2026/6/25 14:52:56] App_Identifier[certificate]"><meta charset="UTF-8"/><meta name="renderer" content="webkit"/><meta http-equiv="X-UA-Compatible" content="IE=edge,Chrome=1"/><meta name="viewport" content="width=device-width,minimum-scale=1,maximum-scale=1,user-scalable=no,viewport-fit=cover"><title>--</title><script>(function () {
|
||||
const APP_ENV = {
|
||||
antd: {
|
||||
'ant-prefix': 'micro-temp',
|
||||
fontFamily: 'PingFangSC-Regular',
|
||||
colorPrimary: '#1677ff',
|
||||
borderRadius: parseInt('2')
|
||||
},
|
||||
appKey: '',
|
||||
basename: 'certificate',
|
||||
API_HOST: 'http://127.0.0.1:8095'
|
||||
};
|
||||
APP_ENV.API_HOST = sessionStorage.API_HOST || APP_ENV.API_HOST || window.location.origin;
|
||||
window.process = {
|
||||
env: { app: APP_ENV },
|
||||
NODE_ENV: 'production'
|
||||
};
|
||||
window.__JJB_ENVIRONMENT__ = {
|
||||
API_HOST: APP_ENV.API_HOST,
|
||||
redirect: '',
|
||||
FRAMEWORK: APP_ENV.antd
|
||||
};
|
||||
})();</script><script defer="defer" src="/certificate/static/js/708.fde3ac0d13bad184.js"></script><script defer="defer" src="/certificate/static/js/478.532bd4a7a37ba2b0.js"></script><script defer="defer" src="/certificate/static/js/main.a10ec5b7cc02c1dd.js"></script><link href="/certificate/static/css/main.fdd9c7fe1255b0b8.css" rel="stylesheet"></head><body><noscript>此网页需要开启JavaScript功能。</noscript><div id="root" style="width: 100%; height: 100%; position: relative;overflow-y: auto"></div><script type="text/javascript">/* @cqsjjb/script 输出当前应用基本信息 */console.log("%c@cqsjjb/scripts@2.0.0-rspack.1 Frontend_Env[development] Build_Date[2026/6/25 14:52:56] App_Identifier[certificate] Frontend_Branch[dev] Backend_Branch[<branch-name>]", "color: #1890ff; border-radius: 2px; padding: 0 4px; border: 1px solid #1890ff; background: #f9fcff")</script></body></html>
|
||||
|
|
@ -1,316 +0,0 @@
|
|||
.header-back {
|
||||
padding: 10px 20px;
|
||||
border-bottom: 1px solid #dcdfe6;
|
||||
margin-bottom: 0;
|
||||
position: sticky;
|
||||
top: 0;
|
||||
background-color: #fff;
|
||||
z-index: 9;
|
||||
}
|
||||
.header-back .action {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
.header-back .action .back {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 10px;
|
||||
cursor: pointer;
|
||||
font-size: 14px;
|
||||
}
|
||||
.header-back .action .title {
|
||||
font-size: 17px;
|
||||
}
|
||||
|
||||
.micro-temp-table-cell-scrollbar {
|
||||
width: 15px;
|
||||
}
|
||||
.micro-temp-table-cell .micro-temp-btn-link {
|
||||
padding: 0;
|
||||
}
|
||||
.micro-temp-pro-table-list-toolbar-container {
|
||||
padding-top: 0 !important;
|
||||
padding-bottom: 16px;
|
||||
}
|
||||
|
||||
/* stylelint-disable */
|
||||
html,
|
||||
body {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
input::-ms-clear,
|
||||
input::-ms-reveal {
|
||||
display: none;
|
||||
}
|
||||
*,
|
||||
*::before,
|
||||
*::after {
|
||||
box-sizing: border-box;
|
||||
}
|
||||
html {
|
||||
font-family: sans-serif;
|
||||
line-height: 1.15;
|
||||
-webkit-text-size-adjust: 100%;
|
||||
-ms-text-size-adjust: 100%;
|
||||
-ms-overflow-style: scrollbar;
|
||||
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
|
||||
}
|
||||
@-ms-viewport {
|
||||
width: device-width;
|
||||
}
|
||||
body {
|
||||
margin: 0;
|
||||
}
|
||||
[tabindex='-1']:focus {
|
||||
outline: none;
|
||||
}
|
||||
hr {
|
||||
box-sizing: content-box;
|
||||
height: 0;
|
||||
overflow: visible;
|
||||
}
|
||||
h1,
|
||||
h2,
|
||||
h3,
|
||||
h4,
|
||||
h5,
|
||||
h6 {
|
||||
margin-top: 0;
|
||||
margin-bottom: 0.5em;
|
||||
font-weight: 500;
|
||||
}
|
||||
p {
|
||||
margin-top: 0;
|
||||
margin-bottom: 1em;
|
||||
}
|
||||
abbr[title],
|
||||
abbr[data-original-title] {
|
||||
-webkit-text-decoration: underline dotted;
|
||||
text-decoration: underline dotted;
|
||||
border-bottom: 0;
|
||||
cursor: help;
|
||||
}
|
||||
address {
|
||||
margin-bottom: 1em;
|
||||
font-style: normal;
|
||||
line-height: inherit;
|
||||
}
|
||||
input[type='text'],
|
||||
input[type='password'],
|
||||
input[type='number'],
|
||||
textarea {
|
||||
-webkit-appearance: none;
|
||||
}
|
||||
ol,
|
||||
ul,
|
||||
dl {
|
||||
margin-top: 0;
|
||||
margin-bottom: 1em;
|
||||
}
|
||||
ol ol,
|
||||
ul ul,
|
||||
ol ul,
|
||||
ul ol {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
dt {
|
||||
font-weight: 500;
|
||||
}
|
||||
dd {
|
||||
margin-bottom: 0.5em;
|
||||
margin-left: 0;
|
||||
}
|
||||
blockquote {
|
||||
margin: 0 0 1em;
|
||||
}
|
||||
dfn {
|
||||
font-style: italic;
|
||||
}
|
||||
b,
|
||||
strong {
|
||||
font-weight: bolder;
|
||||
}
|
||||
small {
|
||||
font-size: 80%;
|
||||
}
|
||||
sub,
|
||||
sup {
|
||||
position: relative;
|
||||
font-size: 75%;
|
||||
line-height: 0;
|
||||
vertical-align: baseline;
|
||||
}
|
||||
sub {
|
||||
bottom: -0.25em;
|
||||
}
|
||||
sup {
|
||||
top: -0.5em;
|
||||
}
|
||||
pre,
|
||||
code,
|
||||
kbd,
|
||||
samp {
|
||||
font-size: 1em;
|
||||
font-family: 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, Courier, monospace;
|
||||
}
|
||||
pre {
|
||||
margin-top: 0;
|
||||
margin-bottom: 1em;
|
||||
overflow: auto;
|
||||
}
|
||||
figure {
|
||||
margin: 0 0 1em;
|
||||
}
|
||||
img {
|
||||
vertical-align: middle;
|
||||
border-style: none;
|
||||
}
|
||||
a,
|
||||
area,
|
||||
button,
|
||||
[role='button'],
|
||||
input:not([type='range']),
|
||||
label,
|
||||
select,
|
||||
summary,
|
||||
textarea {
|
||||
touch-action: manipulation;
|
||||
}
|
||||
table {
|
||||
border-collapse: collapse;
|
||||
}
|
||||
caption {
|
||||
padding-top: 0.75em;
|
||||
padding-bottom: 0.3em;
|
||||
text-align: left;
|
||||
caption-side: bottom;
|
||||
}
|
||||
input,
|
||||
button,
|
||||
select,
|
||||
optgroup,
|
||||
textarea {
|
||||
margin: 0;
|
||||
color: inherit;
|
||||
font-size: inherit;
|
||||
font-family: inherit;
|
||||
line-height: inherit;
|
||||
}
|
||||
button,
|
||||
input {
|
||||
overflow: visible;
|
||||
}
|
||||
button,
|
||||
select {
|
||||
text-transform: none;
|
||||
}
|
||||
button,
|
||||
html [type='button'],
|
||||
[type='reset'],
|
||||
[type='submit'] {
|
||||
-webkit-appearance: button;
|
||||
}
|
||||
button::-moz-focus-inner,
|
||||
[type='button']::-moz-focus-inner,
|
||||
[type='reset']::-moz-focus-inner,
|
||||
[type='submit']::-moz-focus-inner {
|
||||
padding: 0;
|
||||
border-style: none;
|
||||
}
|
||||
input[type='radio'],
|
||||
input[type='checkbox'] {
|
||||
box-sizing: border-box;
|
||||
padding: 0;
|
||||
}
|
||||
input[type='date'],
|
||||
input[type='time'],
|
||||
input[type='datetime-local'],
|
||||
input[type='month'] {
|
||||
-webkit-appearance: listbox;
|
||||
}
|
||||
textarea {
|
||||
overflow: auto;
|
||||
resize: vertical;
|
||||
}
|
||||
fieldset {
|
||||
min-width: 0;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
border: 0;
|
||||
}
|
||||
legend {
|
||||
display: block;
|
||||
width: 100%;
|
||||
max-width: 100%;
|
||||
margin-bottom: 0.5em;
|
||||
padding: 0;
|
||||
color: inherit;
|
||||
font-size: 1.5em;
|
||||
line-height: inherit;
|
||||
white-space: normal;
|
||||
}
|
||||
progress {
|
||||
vertical-align: baseline;
|
||||
}
|
||||
[type='number']::-webkit-inner-spin-button,
|
||||
[type='number']::-webkit-outer-spin-button {
|
||||
height: auto;
|
||||
}
|
||||
[type='search'] {
|
||||
outline-offset: -2px;
|
||||
-webkit-appearance: none;
|
||||
}
|
||||
[type='search']::-webkit-search-cancel-button,
|
||||
[type='search']::-webkit-search-decoration {
|
||||
-webkit-appearance: none;
|
||||
}
|
||||
::-webkit-file-upload-button {
|
||||
font: inherit;
|
||||
-webkit-appearance: button;
|
||||
}
|
||||
output {
|
||||
display: inline-block;
|
||||
}
|
||||
summary {
|
||||
display: list-item;
|
||||
}
|
||||
template {
|
||||
display: none;
|
||||
}
|
||||
[hidden] {
|
||||
display: none !important;
|
||||
}
|
||||
mark {
|
||||
padding: 0.2em;
|
||||
background-color: #feffe6;
|
||||
}
|
||||
|
||||
.micro-temp-modal-header {
|
||||
border-bottom: 1px solid #ccc !important;
|
||||
margin: 0 -24px 15px -24px !important;
|
||||
padding: 0 24px 15px 24px !important;
|
||||
}
|
||||
.micro-temp-modal-footer {
|
||||
text-align: center !important;
|
||||
}
|
||||
.search-layout {
|
||||
position: relative;
|
||||
}
|
||||
.search-layout::after {
|
||||
content: '';
|
||||
position: absolute;
|
||||
bottom: -10px;
|
||||
left: -20px;
|
||||
right: -20px;
|
||||
height: 10px;
|
||||
background-color: #f1f1f2;
|
||||
}
|
||||
.search-layout + .table-layout {
|
||||
padding-top: 26px !important;
|
||||
}
|
||||
.card-layout {
|
||||
background-color: #fff;
|
||||
border-radius: 6px;
|
||||
}
|
||||
|
||||
|
|
@ -1 +0,0 @@
|
|||
module.exports={javaGit:"<git-url>",javaGitName:"<git-name>",environment:{development:{javaGitBranch:"<branch-name>",API_HOST:process.env.SAFETY_EVAL_API_HOST||"http://127.0.0.1:8095"},production:{javaGitBranch:"<branch-name>",API_HOST:""}},appIdentifier:"certificate",contextInject:{appKey:"",fileUrl:"https://skqhdg.porthebei.com:9004/file/uploadFiles2/"},windowInject:{title:"微应用模板",links:[],element:{root:{id:"root"}},scripts:[]},server:{port:"8081",host:"0.0.0.0",open:!0},framework:{antd:{"ant-prefix":"micro-temp",fontFamily:"PingFangSC-Regular",colorPrimary:"#1677ff",borderRadius:2}},webpackConfig:{htmlWebpackPluginOption:{inject:!0}}};
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -0,0 +1,70 @@
|
|||
<!doctype html><html lang="zh"><head data-built-info="@cqsjjb/scripts@2.0.0-rspack.1 Frontend_Env[production] Build_Date[2026/7/1 15:24:21] App_Identifier[safety-eval]"><meta charset="UTF-8"/><meta name="renderer" content="webkit"/><meta http-equiv="X-UA-Compatible" content="IE=edge,Chrome=1"/><meta name="viewport" content="width=device-width,minimum-scale=1,maximum-scale=1,user-scalable=no,viewport-fit=cover"><title>--</title><script>(function () {
|
||||
const APP_ENV = {
|
||||
antd: {
|
||||
'ant-prefix': 'micro-temp',
|
||||
fontFamily: 'PingFangSC-Regular',
|
||||
colorPrimary: '#1677ff',
|
||||
borderRadius: parseInt('2')
|
||||
},
|
||||
appKey: '',
|
||||
basename: 'safety-eval',
|
||||
API_HOST: ''
|
||||
};
|
||||
const injectedApiHost = APP_ENV.API_HOST;
|
||||
const isDev = 'production' === 'development';
|
||||
// 开发环境优先 jjb.config 注入的 API_HOST,避免 sessionStorage 残留网关地址导致 Network Error
|
||||
if (isDev && injectedApiHost && injectedApiHost.indexOf('http') === 0) {
|
||||
APP_ENV.API_HOST = injectedApiHost;
|
||||
} else {
|
||||
APP_ENV.API_HOST = sessionStorage.API_HOST || injectedApiHost || window.location.origin;
|
||||
}
|
||||
window.process = {
|
||||
env: { app: APP_ENV },
|
||||
NODE_ENV: 'production'
|
||||
};
|
||||
window.__JJB_ENVIRONMENT__ = {
|
||||
API_HOST: APP_ENV.API_HOST,
|
||||
redirect: '',
|
||||
FRAMEWORK: APP_ENV.antd
|
||||
};
|
||||
})();
|
||||
|
||||
// 抑制 ResizeObserver 在页面/标签切换时的无害告警,避免 dev overlay 误报
|
||||
(function () {
|
||||
if (typeof window.ResizeObserver !== 'undefined') {
|
||||
var NativeResizeObserver = window.ResizeObserver;
|
||||
window.ResizeObserver = class extends NativeResizeObserver {
|
||||
constructor(callback) {
|
||||
super(function (entries, observer) {
|
||||
window.requestAnimationFrame(function () {
|
||||
callback(entries, observer);
|
||||
});
|
||||
});
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
function isResizeObserverLoopError(message) {
|
||||
return typeof message === 'string' && message.indexOf('ResizeObserver loop') !== -1;
|
||||
}
|
||||
|
||||
function isAxiosNetworkError(reason) {
|
||||
if (!reason) return false;
|
||||
var msg = typeof reason === 'string' ? reason : (reason.message || '');
|
||||
return msg === 'Network Error' || (reason.isAxiosError && msg === 'Network Error');
|
||||
}
|
||||
|
||||
window.addEventListener('error', function (event) {
|
||||
if (isResizeObserverLoopError(event.message)) {
|
||||
event.stopImmediatePropagation();
|
||||
event.preventDefault();
|
||||
}
|
||||
});
|
||||
|
||||
window.addEventListener('unhandledrejection', function (event) {
|
||||
if (isAxiosNetworkError(event.reason)) {
|
||||
console.warn('[dev] API unreachable:', event.reason?.config?.url || event.reason?.message);
|
||||
event.preventDefault();
|
||||
}
|
||||
});
|
||||
})();</script><script defer="defer" src="/safety-eval/static/js/738.02f7b638f1f50f2d.js"></script><script defer="defer" src="/safety-eval/static/js/121.13973c81022a93a2.js"></script><script defer="defer" src="/safety-eval/static/js/289.f4b5e8c4ac9ad742.js"></script><script defer="defer" src="/safety-eval/static/js/main.44f2723a7e4daa81.js"></script><link href="/safety-eval/static/css/main.f1fe1233254250fd.css" rel="stylesheet"></head><body><noscript>此网页需要开启JavaScript功能。</noscript><div id="root" style="width: 100%; height: 100%; position: relative;overflow-y: auto"></div><script type="text/javascript">/* @cqsjjb/script 输出当前应用基本信息 */console.log("%c@cqsjjb/scripts@2.0.0-rspack.1 Frontend_Env[production] Build_Date[2026/7/1 15:24:21] App_Identifier[safety-eval] Frontend_Branch[dev] Backend_Branch[<branch-name>]", "color: #1890ff; border-radius: 2px; padding: 0 4px; border: 1px solid #1890ff; background: #f9fcff")</script></body></html>
|
||||
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1 @@
|
|||
module.exports={javaGit:"<git-url>",javaGitName:"<git-name>",environment:{development:{javaGitBranch:"<branch-name>",API_HOST:"http://192.168.0.204:8095"},production:{javaGitBranch:"<branch-name>",API_HOST:""}},appIdentifier:"safety-eval",contextInject:{appKey:"",fileUrl:"https://skqhdg.porthebei.com:9004/file/uploadFiles2/"},windowInject:{title:"微应用模板",links:[],element:{root:{id:"root"}},scripts:[]},server:{port:"8081",host:"0.0.0.0",open:!0},framework:{antd:{"ant-prefix":"micro-temp",fontFamily:"PingFangSC-Regular",colorPrimary:"#1677ff",borderRadius:2}},webpackConfig:{htmlWebpackPluginOption:{inject:!0}}};
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -29,8 +29,9 @@
|
|||
"@rc-component/motion": "^1.0.0",
|
||||
"@rc-component/util": "^1.11.1",
|
||||
"ahooks": "^3.9.5",
|
||||
"antd": "^5.11.2",
|
||||
"antd": "^5.29.2",
|
||||
"dayjs": "^1.11.7",
|
||||
"echarts": "^6.1.0",
|
||||
"lodash-es": "^4.17.21",
|
||||
"qrcode.react": "^4.2.0",
|
||||
"react": "^18.2.0",
|
||||
|
|
@ -44,6 +45,7 @@
|
|||
"@babel/preset-react": "^7.29.7",
|
||||
"@cqsjjb/scripts": "latest",
|
||||
"@eslint-react/eslint-plugin": "^2.2.2",
|
||||
"ajv": "^8.20.0",
|
||||
"babel-loader": "^9.1.3",
|
||||
"cross-env": "^7.0.3",
|
||||
"css-loader": "^6.8.1",
|
||||
Loading…
Reference in New Issue