Merge remote-tracking branch 'origin/dev' into dev
commit
14f55ccea6
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"
|
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
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">
|
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>
|
<version>2021.0.5.0</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
<!-- Spring Cloud Bootstrap(加载 bootstrap.yml) -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springframework.cloud</groupId>
|
||||||
|
<artifactId>spring-cloud-starter-bootstrap</artifactId>
|
||||||
|
</dependency>
|
||||||
<!-- Spring Cloud LoadBalancer(Feign 服务名调用需要) -->
|
<!-- Spring Cloud LoadBalancer(Feign 服务名调用需要) -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.springframework.cloud</groupId>
|
<groupId>org.springframework.cloud</groupId>
|
||||||
|
|
@ -100,3 +105,6 @@
|
||||||
</plugins>
|
</plugins>
|
||||||
</build>
|
</build>
|
||||||
</project>
|
</project>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,131 +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
|
|
||||||
|
|
||||||
# 本地联调:企业信息管理接口免鉴权(覆盖 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
|
|
||||||
- /doc.html
|
|
||||||
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
|
|
||||||
|
|
@ -1,136 +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
|
|
||||||
- /doc.html
|
|
||||||
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:
|
||||||
# [已废弃] 此文件不再生效
|
profiles:
|
||||||
# =============================================
|
active: ${SPRING_PROFILES_ACTIVE:local}
|
||||||
# 原因: 项目未引入 spring-cloud-starter-bootstrap 依赖,
|
cloud:
|
||||||
# Spring Cloud 2021.x 默认不加载 bootstrap 上下文。
|
nacos:
|
||||||
#
|
config:
|
||||||
# 已迁移至:
|
import-check:
|
||||||
# - application-{profile}.yml → Nacos 连接信息与 spring.config.import
|
enabled: false
|
||||||
#
|
---
|
||||||
# 如需恢复 bootstrap 机制,请在 safety-eval-start/pom.xml 中添加:
|
spring:
|
||||||
# <dependency>
|
config:
|
||||||
# <groupId>org.springframework.cloud</groupId>
|
activate:
|
||||||
# <artifactId>spring-cloud-starter-bootstrap</artifactId>
|
on-profile: local
|
||||||
# </dependency>
|
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:
|
mysql:
|
||||||
host: 192.168.2.166
|
host: 192.168.20.100
|
||||||
port: 3306
|
port: 33080
|
||||||
username: root
|
username: root
|
||||||
password: root
|
password: Mysql@zcloud33080
|
||||||
redis:
|
redis:
|
||||||
host: 10.43.253.4
|
host: 192.168.20.100
|
||||||
password: jjb123456
|
password: Zcloud@zcloud2026
|
||||||
port: 6379
|
port: 6379
|
||||||
mq:
|
mq:
|
||||||
host: 10.43.163.23:9876
|
host: 10.43.163.23:9876
|
||||||
|
|
@ -17,28 +17,19 @@ common:
|
||||||
gateway:
|
gateway:
|
||||||
network:
|
network:
|
||||||
http:
|
http:
|
||||||
#网关的外网访问地址 必须配置为HTTPS协议
|
external: http://192.168.20.100
|
||||||
external: https://testdragon.cqjjb.cn
|
intranet: http://192.168.20.100
|
||||||
#网关的内网访问地址 固定配置为http://jjb-saas-gateway
|
|
||||||
intranet: http://10.43.250.65
|
|
||||||
wx:
|
wx:
|
||||||
#webSocket外网地址
|
|
||||||
external: wx://testdragon.cqjjb.cn
|
external: wx://testdragon.cqjjb.cn
|
||||||
swagger:
|
swagger:
|
||||||
#是否打开swagger 测试及UAT配置为true,生产环境配置为false
|
|
||||||
enabled: true
|
enabled: true
|
||||||
base:
|
base:
|
||||||
# base应用访问外网访问地址
|
|
||||||
host-url: http://10.43.12.158
|
host-url: http://10.43.12.158
|
||||||
desk:
|
desk:
|
||||||
# desk工程的外网地址
|
|
||||||
host-url: http://10.43.12.158
|
host-url: http://10.43.12.158
|
||||||
login:
|
login:
|
||||||
# login工程的外网访问地址
|
|
||||||
host-url: http://10.43.12.158
|
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/
|
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:
|
k8s:
|
||||||
namespace: test-dragon
|
namespace: test-dragon
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,13 @@
|
||||||
mybatis-plus:
|
mybatis-plus:
|
||||||
mapper-locations: classpath*:mapper/*.xml,classpath*:mapper/**/*Mapper.xml
|
mapper-locations: classpath*:mapper/**/*.xml
|
||||||
type-handlers-package: com.jjb.saas.framework.datascope.handler
|
type-handlers-package: com.jjb.saas.framework.datascope.handler
|
||||||
global-config:
|
global-config:
|
||||||
banner: false
|
banner: false
|
||||||
db-config:
|
db-config:
|
||||||
id-type: assign_id
|
id-type: assign_id
|
||||||
logic-delete-value: 1
|
logic-delete-field: deleteEnum
|
||||||
logic-not-delete-value: 0
|
logic-delete-value: "true"
|
||||||
|
logic-not-delete-value: "false"
|
||||||
configuration:
|
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:
|
mysql:
|
||||||
db: ${spring.application.name}
|
db: jjb_saas_safety_eval
|
||||||
|
|
||||||
spring:
|
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:
|
shardingsphere:
|
||||||
druid:
|
druid:
|
||||||
username: admin
|
username: admin
|
||||||
|
|
@ -12,13 +18,12 @@ spring:
|
||||||
show: true
|
show: true
|
||||||
enabled: true
|
enabled: true
|
||||||
masterslave:
|
masterslave:
|
||||||
name: ms # 名字,任意,需要保证唯一
|
name: ms
|
||||||
master-data-source-name: master # 主库数据源
|
master-data-source-name: master
|
||||||
slave-data-source-names: slave-1 # 从库数据源
|
slave-data-source-names: slave-1
|
||||||
datasource:
|
datasource:
|
||||||
names: master,slave-1
|
names: master,slave-1
|
||||||
master:
|
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
|
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}
|
username: ${common.mysql.username}
|
||||||
password: ${common.mysql.password}
|
password: ${common.mysql.password}
|
||||||
|
|
@ -27,28 +32,19 @@ spring:
|
||||||
initial-size: 6
|
initial-size: 6
|
||||||
min-idle: 4
|
min-idle: 4
|
||||||
maxActive: 40
|
maxActive: 40
|
||||||
# 配置获取连接等待超时的时间
|
|
||||||
maxWait: 60000
|
maxWait: 60000
|
||||||
# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
|
|
||||||
timeBetweenEvictionRunsMillis: 60000
|
timeBetweenEvictionRunsMillis: 60000
|
||||||
# 配置一个连接在池中最小生存的时间,单位是毫秒
|
|
||||||
minEvictableIdleTimeMillis: 300000
|
minEvictableIdleTimeMillis: 300000
|
||||||
#Oracle需要打开注释
|
|
||||||
#validationQuery: SELECT 1 FROM DUAL
|
|
||||||
testWhileIdle: true
|
testWhileIdle: true
|
||||||
testOnBorrow: false
|
testOnBorrow: false
|
||||||
testOnReturn: false
|
testOnReturn: false
|
||||||
# 打开PSCache,并且指定每个连接上PSCache的大小
|
|
||||||
poolPreparedStatements: true
|
poolPreparedStatements: true
|
||||||
maxPoolPreparedStatementPerConnectionSize: 20
|
maxPoolPreparedStatementPerConnectionSize: 20
|
||||||
# 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
|
|
||||||
filters: slf4j
|
filters: slf4j
|
||||||
# 通过connectProperties属性来打开mergeSql功能;慢SQL记录
|
|
||||||
connectionProperties: druid.stat.mergeSql\=true;druid.stat.slowSqlMillis\=5000
|
connectionProperties: druid.stat.mergeSql\=true;druid.stat.slowSqlMillis\=5000
|
||||||
wall:
|
wall:
|
||||||
multi-statement-allow: true
|
multi-statement-allow: true
|
||||||
slave-1:
|
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
|
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}
|
username: ${common.mysql.username}
|
||||||
password: ${common.mysql.password}
|
password: ${common.mysql.password}
|
||||||
|
|
@ -57,23 +53,15 @@ spring:
|
||||||
initial-size: 6
|
initial-size: 6
|
||||||
min-idle: 4
|
min-idle: 4
|
||||||
maxActive: 20
|
maxActive: 20
|
||||||
# 配置获取连接等待超时的时间
|
|
||||||
maxWait: 60000
|
maxWait: 60000
|
||||||
# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
|
|
||||||
timeBetweenEvictionRunsMillis: 60000
|
timeBetweenEvictionRunsMillis: 60000
|
||||||
# 配置一个连接在池中最小生存的时间,单位是毫秒
|
|
||||||
minEvictableIdleTimeMillis: 300000
|
minEvictableIdleTimeMillis: 300000
|
||||||
#Oracle需要打开注释
|
|
||||||
#validationQuery: SELECT 1 FROM DUAL
|
|
||||||
testWhileIdle: true
|
testWhileIdle: true
|
||||||
testOnBorrow: false
|
testOnBorrow: false
|
||||||
testOnReturn: false
|
testOnReturn: false
|
||||||
# 打开PSCache,并且指定每个连接上PSCache的大小
|
|
||||||
poolPreparedStatements: true
|
poolPreparedStatements: true
|
||||||
maxPoolPreparedStatementPerConnectionSize: 20
|
maxPoolPreparedStatementPerConnectionSize: 20
|
||||||
# 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙,stat已去掉
|
|
||||||
filters: slf4j
|
filters: slf4j
|
||||||
# 通过connectProperties属性来打开mergeSql功能;慢SQL记录
|
|
||||||
connectionProperties: druid.stat.mergeSql\=true;druid.stat.slowSqlMillis\=5000
|
connectionProperties: druid.stat.mergeSql\=true;druid.stat.slowSqlMillis\=5000
|
||||||
wall:
|
wall:
|
||||||
multi-statement-allow: true
|
multi-statement-allow: true
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,3 @@
|
||||||
server:
|
server:
|
||||||
port: 80
|
port: 80
|
||||||
debug: true
|
debug: false
|
||||||
|
|
@ -1,14 +1,20 @@
|
||||||
spring:
|
spring:
|
||||||
redis:
|
redis:
|
||||||
host: ${common.redis.host}
|
host: ${common.redis.host}
|
||||||
password: ${common.redis.password}
|
password: ${common.redis.password}
|
||||||
port: ${common.redis.port}
|
port: ${common.redis.port}
|
||||||
timeout: 15000
|
timeout: 10000
|
||||||
database: 0
|
database: 0
|
||||||
prefix: dragon
|
prefix: dragon
|
||||||
|
lettuce:
|
||||||
|
pool:
|
||||||
|
max-active: 8
|
||||||
|
max-idle: 8
|
||||||
|
min-idle: 0
|
||||||
|
max-wait: -1
|
||||||
jedis:
|
jedis:
|
||||||
pool:
|
pool:
|
||||||
max-active: 600
|
max-active: 600
|
||||||
max-idle: 300
|
max-idle: 300
|
||||||
max-wait: 15000
|
max-wait: 15000
|
||||||
min-idle: 10
|
min-idle: 10
|
||||||
|
|
|
||||||
|
|
@ -1,19 +1,20 @@
|
||||||
sdk:
|
sdk:
|
||||||
server:
|
server:
|
||||||
symmetry-url: jjb-saas-application/application/applications/server/secure/
|
symmetry-url: jjb-saas-application/application/applications/server/secure/
|
||||||
app-key: jjb-saas-dragon
|
app-key: jjb-saas-dragon
|
||||||
client:
|
client:
|
||||||
|
app-key: jjb-saas-dragon
|
||||||
security:
|
security:
|
||||||
gateway: ${gateway.network.http.external}
|
gateway: ${common.gateway.network.http.external}
|
||||||
appKey: ${sdk.client.app-key}
|
appKey: ${sdk.client.app-key}
|
||||||
desensitization:
|
desensitization:
|
||||||
symmetric-key: 1234567887654321
|
symmetric-key: 1234567887654321
|
||||||
logging:
|
logging:
|
||||||
gateway: ${sdk.client.security.gateway}
|
gateway: ${sdk.client.security.gateway}
|
||||||
appKey: ${sdk.client.security.app-key}
|
appKey: ${sdk.client.security.appKey}
|
||||||
clientLoggingEnable: true
|
clientLoggingEnable: true
|
||||||
level: debug
|
level: debug
|
||||||
username: user
|
username: user
|
||||||
password: 123456
|
password: 123456
|
||||||
showConsoleLog: true
|
showConsoleLog: true
|
||||||
formatConsoleLogJson: true
|
formatConsoleLogJson: true
|
||||||
|
|
|
||||||
|
|
@ -1,13 +1,11 @@
|
||||||
spring:
|
spring:
|
||||||
zipkin:
|
zipkin:
|
||||||
#zipkin服务所在地址
|
|
||||||
base-url: http://jjb-saas-zipkin/
|
base-url: http://jjb-saas-zipkin/
|
||||||
sender:
|
sender:
|
||||||
type: web #使用http的方式传输数据
|
type: web
|
||||||
#配置采样百分比
|
|
||||||
sleuth:
|
sleuth:
|
||||||
sampler:
|
sampler:
|
||||||
probability: 1 # 将采样比例设置为 1.0,也就是全部都需要。默认是0.1也就是10%,一般情况下,10%就够用了
|
probability: 1
|
||||||
web:
|
web:
|
||||||
resources:
|
resources:
|
||||||
cache:
|
cache:
|
||||||
|
|
@ -23,56 +21,66 @@ spring:
|
||||||
pathmatch:
|
pathmatch:
|
||||||
matching-strategy: ant_path_matcher
|
matching-strategy: ant_path_matcher
|
||||||
messages:
|
messages:
|
||||||
basename: i18n.message
|
basename: i18n.messages
|
||||||
encoding: UTF-8
|
encoding: UTF-8
|
||||||
|
servlet:
|
||||||
|
multipart:
|
||||||
|
enabled: true
|
||||||
|
max-file-size: 100MB
|
||||||
|
max-request-size: 500MB
|
||||||
flyway:
|
flyway:
|
||||||
# 是否启用flyway
|
|
||||||
enabled: true
|
enabled: true
|
||||||
# 编码格式,默认UTF-8
|
|
||||||
encoding: UTF-8
|
encoding: UTF-8
|
||||||
# 迁移sql脚本文件存放路径,默认db/migration
|
|
||||||
locations: classpath:db/migration
|
locations: classpath:db/migration
|
||||||
# 迁移sql脚本文件名称的前缀,默认V
|
|
||||||
sql-migration-prefix: V
|
sql-migration-prefix: V
|
||||||
# 迁移sql脚本文件名称的分隔符,默认2个下划线__
|
|
||||||
sql-migration-separator: __
|
sql-migration-separator: __
|
||||||
# 迁移sql脚本文件名称的后缀
|
|
||||||
sql-migration-suffixes: .sql
|
sql-migration-suffixes: .sql
|
||||||
# 迁移时是否进行校验,默认true
|
|
||||||
validate-on-migrate: true
|
validate-on-migrate: true
|
||||||
# 当迁移发现数据库非空且存在没有元数据的表时,自动执行基准迁移,新建schema_version表
|
|
||||||
baseline-on-migrate: true
|
baseline-on-migrate: true
|
||||||
|
|
||||||
server:
|
server:
|
||||||
|
servlet:
|
||||||
|
context-path: /${application.gateway}
|
||||||
tomcat:
|
tomcat:
|
||||||
max-http-post-size: 200MB
|
max-http-post-size: 200MB
|
||||||
connection-timeout: 180000
|
connection-timeout: 180000
|
||||||
|
|
||||||
fastjson:
|
fastjson:
|
||||||
parser:
|
parser:
|
||||||
safeMode: true
|
safeMode: true
|
||||||
|
|
||||||
mvc:
|
mvc:
|
||||||
pathmatch:
|
pathmatch:
|
||||||
matching-strategy: ANT_PATH_MATCHER
|
matching-strategy: ANT_PATH_MATCHER
|
||||||
|
|
||||||
thymeleaf:
|
thymeleaf:
|
||||||
prefix: classpath:/templates/
|
prefix: classpath:/templates/
|
||||||
cache: false
|
cache: false
|
||||||
|
|
||||||
dubbo:
|
dubbo:
|
||||||
application:
|
application:
|
||||||
name: ${spring.application.name}
|
name: ${spring.application.name}
|
||||||
|
service-discovery:
|
||||||
|
migration: FORCE_INTERFACE
|
||||||
registry:
|
registry:
|
||||||
timeout: 20000
|
timeout: 20000
|
||||||
address: nacos://${spring.cloud.nacos.config.server-addr}?namespace=${spring.cloud.nacos.config.namespace}-facade
|
address: nacos://${spring.cloud.nacos.config.server-addr}?namespace=${spring.cloud.nacos.config.namespace}-facade
|
||||||
check: false
|
check: false
|
||||||
filter: providerContextFilter
|
filter: providerContextFilter
|
||||||
|
scan:
|
||||||
|
base-packages: org.qinan.safetyeval
|
||||||
protocol:
|
protocol:
|
||||||
port: -1
|
port: 20895
|
||||||
name: dubbo
|
name: dubbo
|
||||||
consumer:
|
consumer:
|
||||||
timeout: 20000
|
timeout: 20000
|
||||||
check: false
|
check: false
|
||||||
filter: consumerContextFilter
|
filter: consumerContextFilter
|
||||||
|
|
||||||
logging:
|
logging:
|
||||||
config: classpath:jjb-saas-logback-spring.xml
|
config: classpath:jjb-saas-logback-spring.xml
|
||||||
level:
|
level:
|
||||||
|
org.qinan.safetyeval: debug
|
||||||
com.alibaba.nacos.client.naming: OFF
|
com.alibaba.nacos.client.naming: OFF
|
||||||
com.alibaba.nacos.client.config.impl: OFF
|
com.alibaba.nacos.client.config.impl: OFF
|
||||||
com.alibaba.nacos.common.remote.client: OFF
|
com.alibaba.nacos.common.remote.client: OFF
|
||||||
|
|
@ -86,4 +94,72 @@ easy-retry:
|
||||||
host: http://jjb-saas-config
|
host: http://jjb-saas-config
|
||||||
port: 1788
|
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}
|
url: ${common.gateway.network.http.intranet}
|
||||||
swagger:
|
swagger:
|
||||||
enabled: ${common.swagger.enabled}
|
enabled: ${common.swagger.enabled}
|
||||||
title: 例子
|
title: Demo
|
||||||
description: 这是例子项目
|
description: Safety Eval API Docs
|
||||||
version: ${application.version}
|
version: ${application.version}
|
||||||
group-name: 例子
|
group-name: Demo
|
||||||
springfox:
|
springfox:
|
||||||
documentation:
|
documentation:
|
||||||
swagger-ui:
|
|
||||||
base-url: ${application.gateway}
|
|
||||||
swagger:
|
swagger:
|
||||||
v2:
|
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:
|
sdk:
|
||||||
server:
|
server:
|
||||||
app-key: 8790123e6cf1441d9e618346e9c7a17f
|
app-key: cbbfef15159e4578928dad804eb46dad
|
||||||
client:
|
client:
|
||||||
gateway:
|
gateway:
|
||||||
url: ${common.gateway.network.http.external}
|
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 17:22:01] App_Identifier[safetyEval]"><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: 'safetyEval',
|
||||||
|
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="/safetyEval/static/js/738.b1a2b6377c18a735.js"></script><script defer="defer" src="/safetyEval/static/js/121.ae75e71830bf4ae0.js"></script><script defer="defer" src="/safetyEval/static/js/289.f12da2fe2f6ad2ae.js"></script><script defer="defer" src="/safetyEval/static/js/main.848dc640c5dff4d5.js"></script><link href="/safetyEval/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 17:22:01] App_Identifier[safetyEval] 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:"safetyEval",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/motion": "^1.0.0",
|
||||||
"@rc-component/util": "^1.11.1",
|
"@rc-component/util": "^1.11.1",
|
||||||
"ahooks": "^3.9.5",
|
"ahooks": "^3.9.5",
|
||||||
"antd": "^5.11.2",
|
"antd": "^5.29.2",
|
||||||
"dayjs": "^1.11.7",
|
"dayjs": "^1.11.7",
|
||||||
|
"echarts": "^6.1.0",
|
||||||
"lodash-es": "^4.17.21",
|
"lodash-es": "^4.17.21",
|
||||||
"qrcode.react": "^4.2.0",
|
"qrcode.react": "^4.2.0",
|
||||||
"react": "^18.2.0",
|
"react": "^18.2.0",
|
||||||
|
|
@ -44,6 +45,7 @@
|
||||||
"@babel/preset-react": "^7.29.7",
|
"@babel/preset-react": "^7.29.7",
|
||||||
"@cqsjjb/scripts": "latest",
|
"@cqsjjb/scripts": "latest",
|
||||||
"@eslint-react/eslint-plugin": "^2.2.2",
|
"@eslint-react/eslint-plugin": "^2.2.2",
|
||||||
|
"ajv": "^8.20.0",
|
||||||
"babel-loader": "^9.1.3",
|
"babel-loader": "^9.1.3",
|
||||||
"cross-env": "^7.0.3",
|
"cross-env": "^7.0.3",
|
||||||
"css-loader": "^6.8.1",
|
"css-loader": "^6.8.1",
|
||||||
Loading…
Reference in New Issue