Compare commits
94 Commits
35ac70e82d
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1a726b8b7d | ||
| 8f5f998c3a | |||
| 37182d7efb | |||
|
|
e472a3207f | ||
|
|
c0896c199d | ||
|
|
ccfac2a9eb | ||
|
|
84594dda48 | ||
|
|
da144b7c6a | ||
| 306222c55e | |||
|
|
bd3523fd3d | ||
| fa16fec0a0 | |||
|
|
7d5a62f8f2 | ||
|
|
2ac80ae4d0 | ||
|
|
e5e540305d | ||
|
|
16626af8f2 | ||
|
|
70fbd1ad07 | ||
|
|
bd304cee09 | ||
|
|
0118b5a84e | ||
|
|
db39b2092c | ||
|
|
4928db5287 | ||
|
|
f6c3326c4a | ||
|
|
1c1f407d27 | ||
|
|
facff46bb6 | ||
|
|
71589ab13a | ||
|
|
edbcf2729b | ||
|
|
476ea60b27 | ||
|
|
740a343863 | ||
|
|
a76d954979 | ||
|
|
ecbb2e993c | ||
|
|
de53fb7838 | ||
|
|
2079e6a1a8 | ||
|
|
0e164f9623 | ||
|
|
a8d1c73390 | ||
|
|
2516e1e1a3 | ||
|
|
cbdce6211f | ||
|
|
f048818b4c | ||
|
|
e85b25754d | ||
|
|
ed3209d69d | ||
|
|
344cb30e5d | ||
|
|
3ae7b9ac52 | ||
|
|
7d51a13dd7 | ||
|
|
de8f44f063 | ||
|
|
6da2b05345 | ||
|
|
c93a74e9a5 | ||
|
|
bdd48ead74 | ||
|
|
6b793228e3 | ||
|
|
b24f647c87 | ||
|
|
8a0032cfa4 | ||
|
|
dffa3ea84a | ||
|
|
dca88d28cd | ||
|
|
c07537c527 | ||
|
|
978eb7501b | ||
|
|
a13fcf8440 | ||
|
|
bd8fd15b32 | ||
|
|
7807d6be80 | ||
|
|
d5e423ee45 | ||
|
|
b93e064edc | ||
|
|
aefb8d0c12 | ||
|
|
2955df71e9 | ||
|
|
23511407ab | ||
|
|
ecfe64c188 | ||
|
|
58f512df4a | ||
|
|
77c1155b38 | ||
|
|
e96c54c328 | ||
|
|
59307d612c | ||
|
|
48800adccd | ||
| 2933b1961e | |||
| 7be8216a5a | |||
| c74505b8c3 | |||
| 8ac012f49c | |||
| 068ca75caf | |||
| 6248147389 | |||
| 01f18f87ba | |||
| 9917e46c29 | |||
| 54cd851245 | |||
| 8b13d4cd92 | |||
| 46175c7295 | |||
| d72f637be3 | |||
| 6da50d70d0 | |||
| eec3fc663b | |||
| 29bdb9ddbb | |||
| 86e0935353 | |||
| 4c2cb4f0e5 | |||
| 3442591d2b | |||
| 4928c71b19 | |||
| 5cd5353f97 | |||
| 73ab200daf | |||
| 4298fcb402 | |||
| 37c0ac035e | |||
| 977ca260da | |||
| 4808960491 | |||
| 74d8c66a6e | |||
| fca95e1203 | |||
| b7d3e07d16 |
2
.gitignore
vendored
2
.gitignore
vendored
@@ -16,7 +16,7 @@ build/
|
||||
bin/
|
||||
!**/src/main/**/bin/
|
||||
!**/src/test/**/bin/
|
||||
|
||||
logs
|
||||
### IntelliJ IDEA ###
|
||||
.idea
|
||||
*.iws
|
||||
|
||||
14
build.gradle
14
build.gradle
@@ -29,21 +29,31 @@ dependencies {
|
||||
implementation 'org.springframework.boot:spring-boot-starter-jdbc' // JDBC 支持
|
||||
implementation 'org.springframework.boot:spring-boot-starter-web' // Web MVC
|
||||
implementation 'org.springframework.boot:spring-boot-starter-validation' // 参数校验
|
||||
implementation 'org.springframework.boot:spring-boot-starter-aop' // AOP
|
||||
implementation 'org.springframework.boot:spring-boot-starter-mail' // 邮件发送
|
||||
implementation 'com.baomidou:mybatis-plus-boot-starter' // MyBatis Plus
|
||||
implementation 'com.baomidou:mybatis-plus-generator' // 代码生成器
|
||||
implementation("com.baomidou:mybatis-plus-jsqlparser") // SQL 解析器
|
||||
implementation 'cn.dev33:sa-token-spring-boot-starter:1.44.0' // 权限认证
|
||||
implementation 'cn.dev33:sa-token-redis-template:1.44.0' // Sa-Token 整合 RedisTemplate
|
||||
implementation 'org.apache.commons:commons-pool2' // 提供 Redis 连接池
|
||||
implementation 'com.alibaba:druid-spring-boot-starter:1.2.27' // 数据库连接池
|
||||
implementation 'org.lionsoul:ip2region:2.7.0' // IP 归属地
|
||||
implementation 'org.springframework.boot:spring-boot-starter-data-mongodb' // mongodb
|
||||
// implementation 'org.springframework.boot:spring-boot-starter-data-mongodb' // mongodb
|
||||
compileOnly 'org.projectlombok:lombok' // Lombok
|
||||
developmentOnly 'org.springframework.boot:spring-boot-devtools' // 热重载
|
||||
runtimeOnly 'com.mysql:mysql-connector-j' // MySQL 驱动
|
||||
annotationProcessor 'org.projectlombok:lombok' // Lombok 注解处理
|
||||
testImplementation 'org.springframework.boot:spring-boot-starter-test' // 测试框架
|
||||
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' // thymeleaf模版引擎
|
||||
implementation 'com.aliyun.oss:aliyun-sdk-oss:3.18.1' // OSS SDK
|
||||
implementation 'com.aliyun.oss:aliyun-sdk-oss:3.18.3' // OSS SDK
|
||||
implementation 'cn.hutool:hutool-all:5.8.42' // hutool工具包
|
||||
implementation 'io.springfox:springfox-swagger2:2.10.5'
|
||||
implementation 'com.github.xiaoymin:knife4j-openapi2-spring-boot-starter:4.4.0'
|
||||
implementation 'org.lionsoul:ip2region:3.3.4'
|
||||
implementation 'jakarta.servlet:jakarta.servlet-api:5.0.0'
|
||||
|
||||
|
||||
}
|
||||
|
||||
tasks.named('test') {
|
||||
|
||||
346
docs/API接口说明-Sirius固件版本管理.md
Normal file
346
docs/API接口说明-Sirius固件版本管理.md
Normal file
@@ -0,0 +1,346 @@
|
||||
# Sirius 固件 API 接口文档
|
||||
|
||||
## 基本信息
|
||||
|
||||
- **Base URL**: `https://api.corewing.com`
|
||||
- **接口前缀**: `/sirius_firmware`
|
||||
|
||||
## 统一响应格式
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"message": "操作成功",
|
||||
"data": {},
|
||||
"success": true
|
||||
}
|
||||
```
|
||||
|
||||
| 字段 | 类型 | 说明 |
|
||||
|------|------|------|
|
||||
| code | Integer | 状态码(200 成功,500 失败) |
|
||||
| message | String | 提示消息 |
|
||||
| data | Object | 返回数据 |
|
||||
| success | Boolean | 是否成功 |
|
||||
|
||||
## 枚举说明
|
||||
|
||||
### 固件类型(firmwareType)
|
||||
|
||||
| 值 | 说明 |
|
||||
|----|------|
|
||||
| 1 | 高频头 |
|
||||
| 2 | 接收机 |
|
||||
| 3 | 背包 |
|
||||
|
||||
### 协议类型(protocolType)
|
||||
|
||||
| 值 | 说明 |
|
||||
|----|------|
|
||||
| 1 | ELRS |
|
||||
| 2 | CWLink |
|
||||
|
||||
## 固件对象字段说明
|
||||
|
||||
| 字段 | 类型 | 说明 |
|
||||
|------|------|------|
|
||||
| id | Integer | 主键ID |
|
||||
| firmwareType | Integer | 固件类型:1-高频头,2-接收机,3-背包 |
|
||||
| protocolType | Integer | 协议类型:1-ELRS,2-CWLink |
|
||||
| versionNumber | String | 版本号,如 v3.0.1 |
|
||||
| fileName | String | 文件名 |
|
||||
| filePath | String | 文件存储路径 |
|
||||
| fileSize | Long | 文件大小(字节) |
|
||||
| md5Hash | String | MD5 校验值 |
|
||||
| releaseNotes | String | 版本更新说明(可能为 null) |
|
||||
| createTime | String | 创建时间 |
|
||||
| updateTime | String | 更新时间 |
|
||||
|
||||
---
|
||||
|
||||
## 1. 查询最新固件版本
|
||||
|
||||
**接口描述:** 根据固件类型和协议类型查询最新版本,用于设备端检查更新。
|
||||
|
||||
**请求方式:** `GET`
|
||||
|
||||
**请求路径:** `/sirius_firmware/latest`
|
||||
|
||||
**请求参数:**
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
|--------|------|------|------|
|
||||
| firmwareType | Integer | 是 | 固件类型:1-高频头,2-接收机,3-背包 |
|
||||
| protocolType | Integer | 是 | 协议类型:1-ELRS,2-CWLink |
|
||||
|
||||
**请求示例:**
|
||||
|
||||
```bash
|
||||
curl -X GET "http://your-server-host:8080/sirius_firmware/latest?firmwareType=1&protocolType=1"
|
||||
```
|
||||
|
||||
**成功响应示例:**
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"message": "操作成功",
|
||||
"data": {
|
||||
"id": 1,
|
||||
"firmwareType": 1,
|
||||
"protocolType": 1,
|
||||
"versionNumber": "v3.0.1",
|
||||
"fileName": "sirius_hf_elrs_v3.0.1.bin",
|
||||
"filePath": "https://oss.corewing.com/sirius_firmware/sirius_hf_elrs_v3.0.1.bin",
|
||||
"fileSize": 1048576,
|
||||
"md5Hash": "d41d8cd98f00b204e9800998ecf8427e",
|
||||
"releaseNotes": "优化信号连接稳定性",
|
||||
"createTime": "2026-03-10 10:30:00",
|
||||
"updateTime": "2026-03-10 10:30:00"
|
||||
},
|
||||
"success": true
|
||||
}
|
||||
```
|
||||
|
||||
**失败响应示例:**
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 500,
|
||||
"message": "固件不存在",
|
||||
"data": null,
|
||||
"success": false
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 2. 根据固件类型查询版本列表
|
||||
|
||||
**接口描述:** 查询指定固件类型下所有版本,按时间倒序排列。
|
||||
|
||||
**请求方式:** `GET`
|
||||
|
||||
**请求路径:** `/sirius_firmware/type/{firmwareType}`
|
||||
|
||||
**路径参数:**
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
|--------|------|------|------|
|
||||
| firmwareType | Integer | 是 | 固件类型:1-高频头,2-接收机,3-背包 |
|
||||
|
||||
**请求示例:**
|
||||
|
||||
```bash
|
||||
curl -X GET "http://your-server-host:8080/sirius_firmware/type/1"
|
||||
```
|
||||
|
||||
**成功响应示例:**
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"message": "操作成功",
|
||||
"data": [
|
||||
{
|
||||
"id": 3,
|
||||
"firmwareType": 1,
|
||||
"protocolType": 2,
|
||||
"versionNumber": "v2.1.0",
|
||||
"fileName": "sirius_hf_cwlink_v2.1.0.bin",
|
||||
"filePath": "https://oss.corewing.com/sirius_firmware/sirius_hf_cwlink_v2.1.0.bin",
|
||||
"fileSize": 2097152,
|
||||
"md5Hash": "098f6bcd4621d373cade4e832627b4f6",
|
||||
"releaseNotes": "新增CWLink协议支持",
|
||||
"createTime": "2026-03-12 14:00:00",
|
||||
"updateTime": "2026-03-12 14:00:00"
|
||||
},
|
||||
{
|
||||
"id": 1,
|
||||
"firmwareType": 1,
|
||||
"protocolType": 1,
|
||||
"versionNumber": "v3.0.1",
|
||||
"fileName": "sirius_hf_elrs_v3.0.1.bin",
|
||||
"filePath": "https://oss.corewing.com/sirius_firmware/sirius_hf_elrs_v3.0.1.bin",
|
||||
"fileSize": 1048576,
|
||||
"md5Hash": "d41d8cd98f00b204e9800998ecf8427e",
|
||||
"releaseNotes": "优化信号连接稳定性",
|
||||
"createTime": "2026-03-10 10:30:00",
|
||||
"updateTime": "2026-03-10 10:30:00"
|
||||
}
|
||||
],
|
||||
"success": true
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 3. 根据固件类型和协议类型查询版本列表
|
||||
|
||||
**接口描述:** 查询指定固件类型和协议类型下所有版本,按时间倒序排列。
|
||||
|
||||
**请求方式:** `GET`
|
||||
|
||||
**请求路径:** `/sirius_firmware/type/{firmwareType}/protocol/{protocolType}`
|
||||
|
||||
**路径参数:**
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
|--------|------|------|------|
|
||||
| firmwareType | Integer | 是 | 固件类型:1-高频头,2-接收机,3-背包 |
|
||||
| protocolType | Integer | 是 | 协议类型:1-ELRS,2-CWLink |
|
||||
|
||||
**请求示例:**
|
||||
|
||||
```bash
|
||||
curl -X GET "http://your-server-host:8080/sirius_firmware/type/1/protocol/1"
|
||||
```
|
||||
|
||||
**成功响应示例:**
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"message": "操作成功",
|
||||
"data": [
|
||||
{
|
||||
"id": 5,
|
||||
"firmwareType": 1,
|
||||
"protocolType": 1,
|
||||
"versionNumber": "v3.0.1",
|
||||
"fileName": "sirius_hf_elrs_v3.0.1.bin",
|
||||
"filePath": "https://oss.corewing.com/sirius_firmware/sirius_hf_elrs_v3.0.1.bin",
|
||||
"fileSize": 1048576,
|
||||
"md5Hash": "d41d8cd98f00b204e9800998ecf8427e",
|
||||
"releaseNotes": "优化信号连接稳定性",
|
||||
"createTime": "2026-03-12 14:00:00",
|
||||
"updateTime": "2026-03-12 14:00:00"
|
||||
},
|
||||
{
|
||||
"id": 2,
|
||||
"firmwareType": 1,
|
||||
"protocolType": 1,
|
||||
"versionNumber": "v3.0.0",
|
||||
"fileName": "sirius_hf_elrs_v3.0.0.bin",
|
||||
"filePath": "https://oss.corewing.com/sirius_firmware/sirius_hf_elrs_v3.0.0.bin",
|
||||
"fileSize": 1024000,
|
||||
"md5Hash": "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6",
|
||||
"releaseNotes": null,
|
||||
"createTime": "2026-03-01 08:00:00",
|
||||
"updateTime": "2026-03-01 08:00:00"
|
||||
}
|
||||
],
|
||||
"success": true
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 4. 查询所有固件
|
||||
|
||||
**接口描述:** 查询所有固件记录。
|
||||
|
||||
**请求方式:** `GET`
|
||||
|
||||
**请求路径:** `/sirius_firmware/list`
|
||||
|
||||
**请求示例:**
|
||||
|
||||
```bash
|
||||
curl -X GET "http://your-server-host:8080/sirius_firmware/list"
|
||||
```
|
||||
|
||||
**成功响应示例:**
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"message": "操作成功",
|
||||
"data": [
|
||||
{
|
||||
"id": 1,
|
||||
"firmwareType": 1,
|
||||
"protocolType": 1,
|
||||
"versionNumber": "v3.0.1",
|
||||
"fileName": "sirius_hf_elrs_v3.0.1.bin",
|
||||
"filePath": "https://oss.corewing.com/sirius_firmware/sirius_hf_elrs_v3.0.1.bin",
|
||||
"fileSize": 1048576,
|
||||
"md5Hash": "d41d8cd98f00b204e9800998ecf8427e",
|
||||
"releaseNotes": "优化信号连接稳定性",
|
||||
"createTime": "2026-03-10 10:30:00",
|
||||
"updateTime": "2026-03-10 10:30:00"
|
||||
}
|
||||
],
|
||||
"success": true
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 5. 根据ID查询固件
|
||||
|
||||
**接口描述:** 根据固件ID查询详情。
|
||||
|
||||
**请求方式:** `GET`
|
||||
|
||||
**请求路径:** `/sirius_firmware/{id}`
|
||||
|
||||
**路径参数:**
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
|--------|------|------|------|
|
||||
| id | Integer | 是 | 固件ID |
|
||||
|
||||
**请求示例:**
|
||||
|
||||
```bash
|
||||
curl -X GET "http://your-server-host:8080/sirius_firmware/1"
|
||||
```
|
||||
|
||||
**成功响应示例:**
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"message": "操作成功",
|
||||
"data": {
|
||||
"id": 1,
|
||||
"firmwareType": 1,
|
||||
"protocolType": 1,
|
||||
"versionNumber": "v3.0.1",
|
||||
"fileName": "sirius_hf_elrs_v3.0.1.bin",
|
||||
"filePath": "https://oss.corewing.com/sirius_firmware/sirius_hf_elrs_v3.0.1.bin",
|
||||
"fileSize": 1048576,
|
||||
"md5Hash": "d41d8cd98f00b204e9800998ecf8427e",
|
||||
"releaseNotes": "优化信号连接稳定性",
|
||||
"createTime": "2026-03-10 10:30:00",
|
||||
"updateTime": "2026-03-10 10:30:00"
|
||||
},
|
||||
"success": true
|
||||
}
|
||||
```
|
||||
|
||||
**失败响应示例:**
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 500,
|
||||
"message": "固件不存在",
|
||||
"data": null,
|
||||
"success": false
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 接口总览
|
||||
|
||||
| 方法 | 路径 | 说明 | 使用场景 |
|
||||
|------|------|------|----------|
|
||||
| GET | `/sirius_firmware/latest?firmwareType=&protocolType=` | 查询最新版本 | 设备端检查更新 |
|
||||
| GET | `/sirius_firmware/type/{firmwareType}` | 按固件类型查版本列表 | 查看某类固件所有版本 |
|
||||
| GET | `/sirius_firmware/type/{firmwareType}/protocol/{protocolType}` | 按类型+协议查版本列表 | 精确筛选版本列表 |
|
||||
| GET | `/sirius_firmware/list` | 查询所有固件 | 管理端展示全部数据 |
|
||||
| GET | `/sirius_firmware/{id}` | 按ID查询固件 | 查看固件详情 |
|
||||
|
||||
---
|
||||
303
docs/backend-api.md
Normal file
303
docs/backend-api.md
Normal file
@@ -0,0 +1,303 @@
|
||||
# Corewing QC 后端接口文档
|
||||
|
||||
> 基础路径: `/api/qc`
|
||||
|
||||
## 通用响应结构
|
||||
|
||||
所有接口统一返回 `Result<T>`:
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"message": "操作成功",
|
||||
"data": T,
|
||||
"success": true
|
||||
}
|
||||
```
|
||||
|
||||
| 字段 | 类型 | 说明 |
|
||||
|---------|---------|---------------------------|
|
||||
| code | Integer | 状态码 |
|
||||
| message | String | 消息内容 |
|
||||
| data | T | 业务数据 |
|
||||
| success | Boolean | 是否成功 |
|
||||
|
||||
---
|
||||
|
||||
## 1. 验证无线板
|
||||
|
||||
验证 BLE MAC 地址对应的无线板是否已在系统中注册。
|
||||
|
||||
- **URL**: `POST /api/qc/wireless/validate-wireless`
|
||||
- **Content-Type**: `application/json`
|
||||
|
||||
### 请求体
|
||||
|
||||
```json
|
||||
{
|
||||
"mac": "AA:BB:CC:DD:EE:FF"
|
||||
}
|
||||
```
|
||||
|
||||
| 字段 | 类型 | 必填 | 说明 |
|
||||
|------|--------|------|----------------------------------|
|
||||
| mac | String | 是 | BLE MAC 地址,即设备 SN |
|
||||
|
||||
### 响应
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"message": "验证通过",
|
||||
"data": true,
|
||||
"success": true
|
||||
}
|
||||
```
|
||||
|
||||
- `data = true` — 设备已注册,允许进行 QC 测试
|
||||
- `data = false` / `success = false` — 设备未注册或验证失败,APP 端将**作废本次测试**
|
||||
|
||||
---
|
||||
|
||||
## 2. 上传测试记录
|
||||
|
||||
上传完整的 QC 测试结果(含所有步骤数据和照片 URL)。
|
||||
|
||||
- **URL**: `POST /api/qc/test/upload`
|
||||
- **Content-Type**: `application/json`
|
||||
|
||||
### 请求体
|
||||
|
||||
```json
|
||||
{
|
||||
"testNo": "WL-20260227-001",
|
||||
"productType": "WIRELESS_BOARD",
|
||||
"sn": "AA:BB:CC:DD:EE:FF",
|
||||
"operatorId": "OP001",
|
||||
"operatorName": "张三",
|
||||
"phoneModel": "Pixel 7",
|
||||
"appVersion": "1.0.0",
|
||||
"status": "PASS",
|
||||
"createTime": "1740000000000",
|
||||
"updatedAt": "1740001000000",
|
||||
"uploadTime": "1740002000000",
|
||||
"steps": [
|
||||
{
|
||||
"stepIndex": 1,
|
||||
"stepName": "BLE连接与特征订阅",
|
||||
"result": "PASS",
|
||||
"dataJson": "{\"deviceName\":\"CoreWing-001\",\"deviceMac\":\"AA:BB:CC:DD:EE:FF\",\"validated\":true}",
|
||||
"duration": 5200,
|
||||
"completedAt": "1740000500000"
|
||||
}
|
||||
],
|
||||
"photoUrls": [
|
||||
"https://qc.corewing.com/photos/xxx.jpg"
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
| 字段 | 类型 | 必填 | 说明 |
|
||||
|--------------|------------------|------|------------------------------------------------|
|
||||
| testNo | String | 是 | 测试单号,格式: `WL-yyyyMMdd-NNN` 或 `FC-yyyyMMdd-NNN` |
|
||||
| productType | String | 是 | `WIRELESS_BOARD` / `FLIGHT_CONTROLLER` |
|
||||
| sn | String | 是 | 产品序列号(无线板为 BLE MAC 地址) |
|
||||
| operatorId | String | 是 | 测试员 ID |
|
||||
| operatorName | String | 是 | 测试员姓名 |
|
||||
| phoneModel | String | 否 | 测试手机型号 |
|
||||
| appVersion | String | 否 | APP 版本号 |
|
||||
| status | String | 是 | `PASS` / `FAIL` |
|
||||
| createTime | String | 是 | 创建时间(毫秒时间戳字符串) |
|
||||
| updatedAt | String | 否 | 最后更新时间(毫秒时间戳字符串) |
|
||||
| uploadTime | String | 否 | 上传时间(毫秒时间戳字符串) |
|
||||
| steps | StepResultData[] | 是 | 步骤结果数组 |
|
||||
| photoUrls | String[] | 否 | 已上传照片的远程 URL 列表 |
|
||||
|
||||
**StepResultData:**
|
||||
|
||||
| 字段 | 类型 | 必填 | 说明 |
|
||||
|-------------|--------|------|--------------------------------------|
|
||||
| stepIndex | int | 是 | 步骤序号(从 1 开始) |
|
||||
| stepName | String | 是 | 步骤名称 |
|
||||
| result | String | 否 | `PASS` / `FAIL` / null(未完成) |
|
||||
| dataJson | String | 否 | 步骤详细数据 JSON 字符串 |
|
||||
| duration | long | 否 | 步骤耗时(毫秒) |
|
||||
| completedAt | String | 否 | 完成时间(毫秒时间戳字符串) |
|
||||
|
||||
### 响应
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"message": "上传成功",
|
||||
"data": "https://qc.corewing.com/report/WL-20260227-001",
|
||||
"success": true
|
||||
}
|
||||
```
|
||||
|
||||
- `data` — 测试报告 URL(可为 null)
|
||||
|
||||
---
|
||||
|
||||
## 3. 上传照片
|
||||
|
||||
上传测试步骤关联的照片。
|
||||
|
||||
- **URL**: `POST /api/qc/test/upload-photo`
|
||||
- **Content-Type**: `multipart/form-data`
|
||||
|
||||
### 请求参数
|
||||
|
||||
| 字段 | 类型 | 必填 | 说明 |
|
||||
|--------|---------------|------|------------------|
|
||||
| testNo | String (text) | 是 | 测试单号 |
|
||||
| photo | File | 是 | 照片文件 (JPEG等)|
|
||||
|
||||
### 响应
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"message": "上传成功",
|
||||
"data": {
|
||||
"url": "https://qc.corewing.com/photos/xxx.jpg"
|
||||
},
|
||||
"success": true
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 4. 验证 SN
|
||||
|
||||
验证序列号是否有效(飞控板扫码流程使用)。
|
||||
|
||||
- **URL**: `POST /api/qc/test/validate-sn`
|
||||
- **Content-Type**: `application/json`
|
||||
|
||||
### 请求体
|
||||
|
||||
```json
|
||||
{
|
||||
"sn": "FC-SN-20260001"
|
||||
}
|
||||
```
|
||||
|
||||
### 响应
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"message": "SN 有效",
|
||||
"data": true,
|
||||
"success": true
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 5. 获取测试配置
|
||||
|
||||
获取指定产品类型的测试参数/阈值。
|
||||
|
||||
- **URL**: `GET /api/qc/config/test-params?productType=WIRELESS_BOARD`
|
||||
|
||||
### 响应
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"success": true,
|
||||
"data": { }
|
||||
}
|
||||
```
|
||||
|
||||
> `data` 结构由后端自定义,APP 当前未使用。
|
||||
|
||||
---
|
||||
|
||||
## 6. 查询 SN 历史记录
|
||||
|
||||
- **URL**: `GET /api/qc/test/history?sn=AA:BB:CC:DD:EE:FF`
|
||||
|
||||
### 响应
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"success": true,
|
||||
"data": { }
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 7. 获取测试报告
|
||||
|
||||
- **URL**: `GET /api/qc/test/report?testNo=WL-20260227-001`
|
||||
|
||||
### 响应
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"success": true,
|
||||
"data": "https://qc.corewing.com/report/WL-20260227-001"
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 枚举值参考
|
||||
|
||||
### productType(产品类型)
|
||||
|
||||
| 值 | 说明 |
|
||||
|---------------------|--------|
|
||||
| WIRELESS_BOARD | 无线板 |
|
||||
| FLIGHT_CONTROLLER | 飞控板 |
|
||||
|
||||
### status(测试状态)
|
||||
|
||||
| 值 | 说明 |
|
||||
|-------------|----------|
|
||||
| IN_PROGRESS | 进行中 |
|
||||
| PASS | 通过 |
|
||||
| FAIL | 失败 |
|
||||
| UPLOADED | 已上传 |
|
||||
|
||||
### result(步骤结果)
|
||||
|
||||
| 值 | 说明 |
|
||||
|------|------|
|
||||
| PASS | 通过 |
|
||||
| FAIL | 失败 |
|
||||
|
||||
### 无线板测试步骤(7 步)
|
||||
|
||||
| stepIndex | stepName |
|
||||
|-----------|------------------------|
|
||||
| 1 | BLE连接与特征订阅 |
|
||||
| 2 | 安装无线板/外观检查 |
|
||||
| 3 | 供电测试(4.5V) |
|
||||
| 4 | Type-C USB测试 |
|
||||
| 5 | BLE信号质量测试 |
|
||||
| 6 | MAVLink心跳通信测试 |
|
||||
| 7 | 激活/入库 |
|
||||
|
||||
### 飞控板测试步骤(12 步)
|
||||
|
||||
| stepIndex | stepName |
|
||||
|-----------|-----------------|
|
||||
| 1 | USB串口连接 |
|
||||
| 2 | 安装SD卡与装夹 |
|
||||
| 3 | 心跳检测 |
|
||||
| 4 | IMU测试 |
|
||||
| 5 | 气压计测试 |
|
||||
| 6 | GPS模块检测 |
|
||||
| 7 | RC输入测试 |
|
||||
| 8 | ADC接口测试 |
|
||||
| 9 | PWM输出测试 |
|
||||
| 10 | 图传与OSD检查 |
|
||||
| 11 | 参数重置 |
|
||||
| 12 | 数据上传/结束 |
|
||||
116
docs/schema.sql
Normal file
116
docs/schema.sql
Normal file
@@ -0,0 +1,116 @@
|
||||
-- ============================================================
|
||||
-- Corewing QC 后端数据库建表 SQL(MySQL)
|
||||
-- ============================================================
|
||||
|
||||
|
||||
CREATE TABLE `flight_controller` (
|
||||
`id` BIGINT NOT NULL AUTO_INCREMENT,
|
||||
`sn` VARCHAR(64) NOT NULL COMMENT '序列号',
|
||||
`model` VARCHAR(64) DEFAULT NULL COMMENT '型号',
|
||||
`batch_no` VARCHAR(64) DEFAULT NULL COMMENT '批次号',
|
||||
`status` VARCHAR(32) NOT NULL DEFAULT 'REGISTERED' COMMENT '状态: REGISTERED / QC_PASS / QC_FAIL / ACTIVATED',
|
||||
`create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
`update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uk_sn` (`sn`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='飞控板设备注册表';
|
||||
|
||||
|
||||
CREATE TABLE `qc_test_record` (
|
||||
`id` BIGINT NOT NULL AUTO_INCREMENT,
|
||||
`test_no` VARCHAR(32) NOT NULL COMMENT '测试单号,格式: WL-yyyyMMdd-NNN / FC-yyyyMMdd-NNN',
|
||||
`product_type` VARCHAR(32) NOT NULL COMMENT '产品类型: WIRELESS_BOARD / FLIGHT_CONTROLLER',
|
||||
`sn` VARCHAR(64) NOT NULL COMMENT '产品序列号(无线板为 BLE MAC)',
|
||||
`operator_id` VARCHAR(32) NOT NULL COMMENT '测试员 ID',
|
||||
`operator_name` VARCHAR(64) NOT NULL COMMENT '测试员姓名',
|
||||
`phone_model` VARCHAR(64) DEFAULT NULL COMMENT '测试手机型号',
|
||||
`app_version` VARCHAR(16) DEFAULT NULL COMMENT 'APP 版本',
|
||||
`status` VARCHAR(16) NOT NULL COMMENT '测试结果: PASS / FAIL',
|
||||
`create_time` DATETIME NOT NULL COMMENT 'APP 端创建时间',
|
||||
`updated_at` DATETIME DEFAULT NULL COMMENT 'APP 端最后更新时间',
|
||||
`upload_time` DATETIME DEFAULT NULL COMMENT 'APP 端上传时间',
|
||||
`report_url` VARCHAR(512) DEFAULT NULL COMMENT '测试报告 URL',
|
||||
`server_create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '服务端入库时间',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uk_test_no` (`test_no`),
|
||||
KEY `idx_sn` (`sn`),
|
||||
KEY `idx_product_type` (`product_type`),
|
||||
KEY `idx_status` (`status`),
|
||||
KEY `idx_create_time` (`create_time`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='QC 测试记录主表';
|
||||
|
||||
|
||||
CREATE TABLE `qc_step_result` (
|
||||
`id` BIGINT NOT NULL AUTO_INCREMENT,
|
||||
`test_record_id` BIGINT NOT NULL COMMENT '关联 qc_test_record.id',
|
||||
`step_index` INT NOT NULL COMMENT '步骤序号(从 1 开始)',
|
||||
`step_name` VARCHAR(64) NOT NULL COMMENT '步骤名称',
|
||||
`result` VARCHAR(8) DEFAULT NULL COMMENT '步骤结果: PASS / FAIL / NULL',
|
||||
`data_json` TEXT DEFAULT NULL COMMENT '步骤详细数据 JSON',
|
||||
`duration` BIGINT DEFAULT 0 COMMENT '步骤耗时(毫秒)',
|
||||
`completed_at` DATETIME DEFAULT NULL COMMENT '步骤完成时间',
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_test_record_id` (`test_record_id`),
|
||||
UNIQUE KEY `uk_record_step` (`test_record_id`, `step_index`),
|
||||
CONSTRAINT `fk_step_record` FOREIGN KEY (`test_record_id`)
|
||||
REFERENCES `qc_test_record` (`id`) ON DELETE CASCADE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='QC 步骤结果表';
|
||||
|
||||
|
||||
CREATE TABLE `qc_photo` (
|
||||
`id` BIGINT NOT NULL AUTO_INCREMENT,
|
||||
`test_record_id` BIGINT NOT NULL COMMENT '关联 qc_test_record.id',
|
||||
`test_no` VARCHAR(32) NOT NULL COMMENT '测试单号',
|
||||
`url` VARCHAR(512) NOT NULL COMMENT '照片远程 URL',
|
||||
`create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_test_no` (`test_no`),
|
||||
CONSTRAINT `fk_photo_record` FOREIGN KEY (`test_record_id`)
|
||||
REFERENCES `qc_test_record` (`id`) ON DELETE CASCADE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='QC 测试照片表';
|
||||
|
||||
|
||||
-- ============================================================
|
||||
-- 固件表
|
||||
-- ============================================================
|
||||
|
||||
CREATE TABLE `app_aat_version` (
|
||||
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||||
`firmware_type` VARCHAR(50) NOT NULL COMMENT '固件类型: lb_main / lb_signal_master / lbPro_main / lbPro_signal_master / lbPro_screen_ui',
|
||||
`firmware_name` VARCHAR(100) NOT NULL COMMENT '固件文件名',
|
||||
`firmware_version` VARCHAR(20) NOT NULL COMMENT '固件版本号',
|
||||
`min_hardware_version` VARCHAR(20) NOT NULL DEFAULT '0.0' COMMENT '最低硬件版本',
|
||||
`download_url` VARCHAR(500) DEFAULT NULL COMMENT '固件下载地址',
|
||||
`firmware_size` BIGINT DEFAULT NULL COMMENT '固件大小(字节)',
|
||||
`firmware_description` TEXT DEFAULT NULL COMMENT '固件描述',
|
||||
`create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
`update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uk_type_version` (`firmware_type`, `firmware_version`),
|
||||
KEY `idx_firmware_type` (`firmware_type`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='AAT固件版本表';
|
||||
|
||||
-- 插入固件数据
|
||||
INSERT INTO `app_aat_version` (`firmware_type`, `firmware_name`, `firmware_version`, `min_hardware_version`)
|
||||
VALUES
|
||||
-- lb_main
|
||||
('lb_main', 'lb_main_2.1.bin', '2.1', '1.0'),
|
||||
-- lb_signal_master
|
||||
('lb_signal_master', 'lbsm_1.1.bin', '1.1', '0.0'),
|
||||
-- lbPro_main
|
||||
('lbPro_main', 'lbPro_main_2.3.bin', '2.3', '0.0'),
|
||||
-- lbPro_signal_master
|
||||
('lbPro_signal_master', 'lbPro_sm_1.4.bin', '1.4', '0.0'),
|
||||
-- lbPro_screen_ui
|
||||
('lbPro_screen_ui', 'lbPro_ui_2.7.tft', '2.7', '0.0');
|
||||
|
||||
|
||||
-- ============================================================
|
||||
-- 示例数据(可选)
|
||||
-- ============================================================
|
||||
|
||||
-- 注册一批无线板
|
||||
-- INSERT INTO `wireless_board` (`mac`) VALUES
|
||||
-- ('AA:BB:CC:DD:EE:01'),
|
||||
-- ('AA:BB:CC:DD:EE:02'),
|
||||
-- ('AA:BB:CC:DD:EE:03');
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.corewing.app.common;
|
||||
|
||||
import com.corewing.app.util.I18nUtil;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
@@ -16,21 +17,25 @@ public class Result<T> implements Serializable {
|
||||
/**
|
||||
* 状态码
|
||||
*/
|
||||
@ApiModelProperty("状态码")
|
||||
private Integer code;
|
||||
|
||||
/**
|
||||
* 返回消息
|
||||
*/
|
||||
@ApiModelProperty("消息内容")
|
||||
private String message;
|
||||
|
||||
/**
|
||||
* 返回数据
|
||||
*/
|
||||
@ApiModelProperty("数据")
|
||||
private T data;
|
||||
|
||||
/**
|
||||
* 成功标识
|
||||
*/
|
||||
@ApiModelProperty("是否成功")
|
||||
private Boolean success;
|
||||
|
||||
public Result(Integer code, String message, T data, Boolean success) {
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
package com.corewing.app.common.annotation;
|
||||
|
||||
import java.lang.annotation.*;
|
||||
|
||||
/**
|
||||
* 自定义日志注解
|
||||
*
|
||||
**/
|
||||
@Target(ElementType.METHOD)
|
||||
@Retention(RetentionPolicy.RUNTIME)
|
||||
@Documented
|
||||
public @interface CommonLog {
|
||||
|
||||
/**
|
||||
* 日志的名称,例如:"修改菜单"
|
||||
*/
|
||||
String value() default "未命名";
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
package com.corewing.app.common.aspect;
|
||||
|
||||
import ch.qos.logback.classic.pattern.ClassicConverter;
|
||||
import ch.qos.logback.classic.spi.ILoggingEvent;
|
||||
import com.corewing.app.util.CommonTraceIdUtil;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@Component
|
||||
public class CustomTraceIdConverter extends ClassicConverter {
|
||||
|
||||
// 使用常量避免重复创建字符串
|
||||
private static final String LEFT_BRACKET = "[";
|
||||
private static final String RIGHT_BRACKET = "]";
|
||||
|
||||
// 缓存StringBuilder以减少对象创建
|
||||
private static final ThreadLocal<StringBuilder> bufferHolder =
|
||||
ThreadLocal.withInitial(() -> new StringBuilder(64));
|
||||
|
||||
@Override
|
||||
public String convert(ILoggingEvent event) {
|
||||
StringBuilder buffer = bufferHolder.get();
|
||||
buffer.setLength(0);
|
||||
String traceId = CommonTraceIdUtil.getTraceId();
|
||||
|
||||
buffer.append(LEFT_BRACKET);
|
||||
if (traceId != null && !traceId.isEmpty()) {
|
||||
buffer.append(traceId);
|
||||
} else {
|
||||
buffer.append(event.getThreadName());
|
||||
}
|
||||
buffer.append(RIGHT_BRACKET);
|
||||
return buffer.toString();
|
||||
}
|
||||
}
|
||||
104
src/main/java/com/corewing/app/common/aspect/DevLogAop.java
Normal file
104
src/main/java/com/corewing/app/common/aspect/DevLogAop.java
Normal file
@@ -0,0 +1,104 @@
|
||||
|
||||
package com.corewing.app.common.aspect;
|
||||
|
||||
import cn.dev33.satoken.stp.StpUtil;
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import com.corewing.app.common.annotation.CommonLog;
|
||||
import com.corewing.app.entity.User;
|
||||
import com.corewing.app.service.UserService;
|
||||
import com.corewing.app.util.DevLogUtil;
|
||||
import com.corewing.app.util.RedisUtil;
|
||||
import org.aspectj.lang.JoinPoint;
|
||||
import org.aspectj.lang.annotation.AfterReturning;
|
||||
import org.aspectj.lang.annotation.AfterThrowing;
|
||||
import org.aspectj.lang.annotation.Aspect;
|
||||
import org.aspectj.lang.annotation.Pointcut;
|
||||
import org.aspectj.lang.reflect.MethodSignature;
|
||||
import org.springframework.core.annotation.Order;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.lang.reflect.Method;
|
||||
|
||||
/**
|
||||
* 业务日志aop切面
|
||||
*
|
||||
*/
|
||||
@Aspect
|
||||
@Order
|
||||
@Component
|
||||
public class DevLogAop {
|
||||
|
||||
|
||||
@Resource
|
||||
private RedisUtil redisUtil;
|
||||
|
||||
@Resource
|
||||
private UserService userService;
|
||||
|
||||
/**
|
||||
* 日志切入点
|
||||
*
|
||||
* @author xuyuxiang
|
||||
* @date 2020/3/23 17:10
|
||||
*/
|
||||
@Pointcut("@annotation(com.corewing.app.common.annotation.CommonLog)")
|
||||
private void getLogPointCut() {
|
||||
}
|
||||
|
||||
/**
|
||||
* 操作成功返回结果记录日志
|
||||
*
|
||||
*/
|
||||
@AfterReturning(pointcut = "getLogPointCut()", returning = "result")
|
||||
public void doAfterReturning(JoinPoint joinPoint, Object result) {
|
||||
MethodSignature methodSignature = (MethodSignature) joinPoint.getSignature();
|
||||
Method method = methodSignature.getMethod();
|
||||
CommonLog commonLog = method.getAnnotation(CommonLog.class);
|
||||
String userName = "未知";
|
||||
String userId = "-1";
|
||||
try {
|
||||
try {
|
||||
if( StpUtil.isLogin()) {
|
||||
User user = (User) redisUtil.get("APP_" + StpUtil.getLoginId());
|
||||
userName = user.getUsername();
|
||||
userId = user.getId().toString();
|
||||
}
|
||||
} catch (Exception e) {
|
||||
User user = userService.getById(StpUtil.getLoginIdAsLong());
|
||||
userName = user.getUsername();
|
||||
userId = user.getId().toString();
|
||||
}
|
||||
} catch (Exception ignored) {
|
||||
}
|
||||
// 异步记录日志
|
||||
DevLogUtil.executeOperationLog(commonLog, userName, userId, joinPoint, JSONUtil.toJsonStr(result));
|
||||
}
|
||||
|
||||
/**
|
||||
* 操作发生异常记录日志
|
||||
*
|
||||
*/
|
||||
@AfterThrowing(pointcut = "getLogPointCut()", throwing = "exception")
|
||||
public void doAfterThrowing(JoinPoint joinPoint, Exception exception) {
|
||||
MethodSignature methodSignature = (MethodSignature) joinPoint.getSignature();
|
||||
Method method = methodSignature.getMethod();
|
||||
CommonLog commonLog = method.getAnnotation(CommonLog.class);
|
||||
String userName = "未知";
|
||||
String userId = "-1";
|
||||
try {
|
||||
if( StpUtil.isLogin()) {
|
||||
User user = (User) redisUtil.get("APP_" + StpUtil.getLoginId());
|
||||
userName = user.getUsername();
|
||||
userId = user.getId().toString();
|
||||
}
|
||||
} catch (Exception e) {
|
||||
User user = userService.getById(StpUtil.getLoginIdAsLong());
|
||||
userName = user.getUsername();
|
||||
userId = user.getId().toString();
|
||||
}
|
||||
//异步记录日志
|
||||
DevLogUtil.executeExceptionLog(commonLog, userName, userId, joinPoint, exception);
|
||||
}
|
||||
}
|
||||
@@ -14,7 +14,7 @@ public class BaseEntity {
|
||||
* 创建时间
|
||||
*/
|
||||
@TableField(fill = FieldFill.INSERT)
|
||||
private LocalDateTime createTime;
|
||||
private Date createTime;
|
||||
/**
|
||||
* 创建人
|
||||
*/
|
||||
@@ -23,7 +23,7 @@ public class BaseEntity {
|
||||
* 修改时间
|
||||
*/
|
||||
@TableField(fill = FieldFill.UPDATE)
|
||||
private LocalDateTime updateTime;
|
||||
private Date updateTime;
|
||||
/**
|
||||
* 修改人
|
||||
*/
|
||||
|
||||
49
src/main/java/com/corewing/app/common/base/CommonEntity.java
Normal file
49
src/main/java/com/corewing/app/common/base/CommonEntity.java
Normal file
@@ -0,0 +1,49 @@
|
||||
package com.corewing.app.common.base;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.FieldFill;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableLogic;
|
||||
import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
public class CommonEntity implements Serializable {
|
||||
|
||||
/** 删除标志 */
|
||||
@JsonIgnore
|
||||
@TableLogic
|
||||
@TableField(fill = FieldFill.INSERT)
|
||||
private String deleteFlag;
|
||||
|
||||
/** 创建时间 */
|
||||
@ApiModelProperty("创建时间")
|
||||
@TableField(fill = FieldFill.INSERT)
|
||||
private Date createTime;
|
||||
|
||||
/** 创建人 */
|
||||
@TableField(fill = FieldFill.INSERT)
|
||||
private String createUser;
|
||||
|
||||
/** 创建人名称 */
|
||||
@TableField(exist = false)
|
||||
private String createUserName;
|
||||
|
||||
/** 更新时间 */
|
||||
@ApiModelProperty("更新时间")
|
||||
@TableField(fill = FieldFill.UPDATE)
|
||||
private Date updateTime;
|
||||
|
||||
/** 更新人 */
|
||||
@TableField(fill = FieldFill.UPDATE)
|
||||
private String updateUser;
|
||||
|
||||
/** 更新人名称 */
|
||||
@TableField(exist = false)
|
||||
private String updateUserName;
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
package com.corewing.app.common.enums;
|
||||
|
||||
import lombok.Getter;
|
||||
|
||||
/**
|
||||
* 通用删除标志枚举
|
||||
*
|
||||
* @author xuyuxiang
|
||||
* @date 2021/10/11 14:02
|
||||
**/
|
||||
@Getter
|
||||
public enum CommonDeleteFlagEnum {
|
||||
|
||||
/** 未删除 */
|
||||
NOT_DELETE,
|
||||
|
||||
/** 已删除 */
|
||||
DELETED
|
||||
}
|
||||
@@ -1,23 +1,134 @@
|
||||
package com.corewing.app.common.page;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
public class PageContext {
|
||||
private static final ThreadLocal<Page<?>> PAGE_HOLDER = new ThreadLocal<>();
|
||||
private static final ThreadLocal<PagePool> PAGE_POOL_HOLDER = new ThreadLocal<>();
|
||||
|
||||
// 设置分页对象
|
||||
public static void setPage(Page<?> page) {
|
||||
PAGE_HOLDER.set(page);
|
||||
private static class PagePool {
|
||||
private final Map<String, Page<?>> pool = new HashMap<>();
|
||||
private int counter = 0;
|
||||
|
||||
public synchronized String generateKey() {
|
||||
return "page_" + (counter++);
|
||||
}
|
||||
|
||||
public Page<?> get(String key) {
|
||||
return pool.get(key);
|
||||
}
|
||||
|
||||
public void put(String key, Page<?> page) {
|
||||
pool.put(key, page);
|
||||
}
|
||||
|
||||
public void remove(String key) {
|
||||
pool.remove(key);
|
||||
}
|
||||
|
||||
public void clear() {
|
||||
pool.clear();
|
||||
counter = 0;
|
||||
}
|
||||
|
||||
public boolean isEmpty() {
|
||||
return pool.isEmpty();
|
||||
}
|
||||
}
|
||||
|
||||
// 泛型方法:获取指定类型的分页对象(消除警告)
|
||||
@SuppressWarnings("unchecked")
|
||||
/**
|
||||
* 获取一个新的 Page 对象(带唯一key)
|
||||
* 适合单个查询场景
|
||||
*/
|
||||
public static <T> Page<T> getPage(Class<T> clazz) {
|
||||
return (Page<T>) PAGE_HOLDER.get();
|
||||
PagePool pool = getPagePool();
|
||||
String key = pool.generateKey();
|
||||
Page<T> page = new Page<>();
|
||||
pool.put(key, page);
|
||||
return page;
|
||||
}
|
||||
|
||||
// 清除线程变量
|
||||
/**
|
||||
* 获取带有默认分页参数的 Page 对象
|
||||
*/
|
||||
public static <T> Page<T> getPage(Class<T> clazz, Integer current, Integer size) {
|
||||
int pageNum = current != null && current > 0 ? current : 1;
|
||||
int pageSize = size != null && size > 0 ? size : 10;
|
||||
|
||||
PagePool pool = getPagePool();
|
||||
String key = pool.generateKey();
|
||||
Page<T> page = new Page<>(pageNum, pageSize);
|
||||
pool.put(key, page);
|
||||
return page;
|
||||
}
|
||||
|
||||
/**
|
||||
* 注册一个 Page 对象到池中(供 PageInterceptor 使用)
|
||||
*/
|
||||
public static <T> void registerPage(Page<T> page) {
|
||||
PagePool pool = getPagePool();
|
||||
String key = pool.generateKey();
|
||||
pool.put(key, page);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取默认的 Page 对象(第一个注册的)
|
||||
* 保持向后兼容性
|
||||
*/
|
||||
@SuppressWarnings("unchecked")
|
||||
public static <T> Page<T> getDefaultPage(Class<T> clazz) {
|
||||
PagePool pool = PAGE_POOL_HOLDER.get();
|
||||
if (pool == null || pool.isEmpty()) {
|
||||
return null;
|
||||
}
|
||||
|
||||
// 返回第一个 Page 对象
|
||||
return (Page<T>) pool.pool.values().stream().findFirst().orElse(null);
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过 key 获取 Page 对象
|
||||
*/
|
||||
@SuppressWarnings("unchecked")
|
||||
public static <T> Page<T> getPageByKey(String key) {
|
||||
PagePool pool = PAGE_POOL_HOLDER.get();
|
||||
if (pool == null) {
|
||||
return null;
|
||||
}
|
||||
return (Page<T>) pool.get(key);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取 PagePool
|
||||
*/
|
||||
private static PagePool getPagePool() {
|
||||
PagePool pool = PAGE_POOL_HOLDER.get();
|
||||
if (pool == null) {
|
||||
pool = new PagePool();
|
||||
PAGE_POOL_HOLDER.set(pool);
|
||||
}
|
||||
return pool;
|
||||
}
|
||||
|
||||
/**
|
||||
* 清除指定 key 的 Page 对象
|
||||
*/
|
||||
public static void clearPage(String key) {
|
||||
PagePool pool = PAGE_POOL_HOLDER.get();
|
||||
if (pool != null) {
|
||||
pool.remove(key);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 清除所有
|
||||
*/
|
||||
public static void clear() {
|
||||
PAGE_HOLDER.remove();
|
||||
PagePool pool = PAGE_POOL_HOLDER.get();
|
||||
if (pool != null) {
|
||||
pool.clear();
|
||||
}
|
||||
PAGE_POOL_HOLDER.remove();
|
||||
}
|
||||
}
|
||||
@@ -8,6 +8,9 @@ import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
public class PageInterceptor implements HandlerInterceptor {
|
||||
|
||||
// 默认的 Page key,用于获取默认分页参数
|
||||
public static final String DEFAULT_PAGE_KEY = "default_page";
|
||||
|
||||
@Override
|
||||
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
|
||||
// 默认分页参数
|
||||
@@ -39,9 +42,16 @@ public class PageInterceptor implements HandlerInterceptor {
|
||||
}
|
||||
}
|
||||
|
||||
// 创建 MyBatis-Plus 的 Page 对象并存储到 ThreadLocal
|
||||
// 创建 MyBatis-Plus 的 Page 对象并注册到 PagePool
|
||||
Page<?> page = new Page<>(pageNum, pageSize);
|
||||
PageContext.setPage(page);
|
||||
PageContext.registerPage(page);
|
||||
|
||||
// 将分页参数存储到 request 属性中,方便其他地方使用
|
||||
request.setAttribute("pageNum", pageNum);
|
||||
request.setAttribute("pageSize", pageSize);
|
||||
request.setAttribute("pageCurrent", pageNum); // 兼容 current 参数名
|
||||
request.setAttribute("pageSize", pageSize);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -50,4 +60,4 @@ public class PageInterceptor implements HandlerInterceptor {
|
||||
// 清除ThreadLocal中的数据,防止内存泄漏
|
||||
PageContext.clear();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
package com.corewing.app.config;
|
||||
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import springfox.documentation.builders.ApiInfoBuilder;
|
||||
import springfox.documentation.builders.PathSelectors;
|
||||
import springfox.documentation.builders.RequestHandlerSelectors;
|
||||
import springfox.documentation.service.Contact;
|
||||
import springfox.documentation.spi.DocumentationType;
|
||||
import springfox.documentation.spring.web.plugins.Docket;
|
||||
import springfox.documentation.swagger2.annotations.EnableSwagger2WebMvc;
|
||||
|
||||
@Configuration
|
||||
@EnableSwagger2WebMvc
|
||||
public class Knife4jConfiguration {
|
||||
|
||||
@Bean(value = "defaultApi")
|
||||
public Docket defaultApi() {
|
||||
return new Docket(DocumentationType.SWAGGER_2)
|
||||
.apiInfo(new ApiInfoBuilder()
|
||||
.title("CoreWing APP APIs")
|
||||
.description("CoreWing APP APIs")
|
||||
.contact(new Contact("CoreWing", "www.corewing.com", "main@corewing.com"))
|
||||
.version("1.0")
|
||||
.build())
|
||||
//分组名称
|
||||
.groupName("1.1.0版本")
|
||||
.select()
|
||||
//这里指定Controller扫描包路径
|
||||
.apis(RequestHandlerSelectors.basePackage("com.corewing.app.modules"))
|
||||
.paths(PathSelectors.any())
|
||||
.build();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -4,7 +4,9 @@ import cn.dev33.satoken.interceptor.SaInterceptor;
|
||||
import cn.dev33.satoken.stp.StpUtil;
|
||||
import com.corewing.app.common.page.PageInterceptor;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.util.ResourceUtils;
|
||||
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
|
||||
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
|
||||
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
|
||||
|
||||
/**
|
||||
@@ -24,10 +26,12 @@ public class SaTokenConfig implements WebMvcConfigurer {
|
||||
registry.addInterceptor(new SaInterceptor(handle -> StpUtil.checkLogin()))
|
||||
// 拦截所有路由
|
||||
.addPathPatterns("/**")
|
||||
// 排除登录、注册、发送验证码接口
|
||||
.excludePathPatterns("/user/login", "/user/register", "/user/sendCode")
|
||||
// 排除登录、注册、发送验证码, 忘记密码接口
|
||||
.excludePathPatterns("/user/login", "/user/register", "/user/sendCode", "/user/forgetPassword", "/user/codeLogin")
|
||||
// 排除后台管理登录接口
|
||||
.excludePathPatterns("/sys/user/login")
|
||||
//排除QC接口
|
||||
.excludePathPatterns("/api/qc/**")
|
||||
// 排除反馈接口(支持匿名提交)
|
||||
.excludePathPatterns("/feedback", "/feedback/**")
|
||||
// 排除教程接口(支持匿名查询)
|
||||
@@ -36,17 +40,41 @@ public class SaTokenConfig implements WebMvcConfigurer {
|
||||
.excludePathPatterns("/privacy_policy", "/privacy_policy/**")
|
||||
// 排除固件查询接口(不需要登录)
|
||||
.excludePathPatterns("/firmware/**")
|
||||
// 排除AAT固件版本接口
|
||||
.excludePathPatterns("/aat_version/**")
|
||||
// 排除Sirius固件接口
|
||||
.excludePathPatterns("/sirius_firmware/**")
|
||||
// 排除公共固件
|
||||
.excludePathPatterns("/public_firmware/**")
|
||||
// 排除系统登录页(不需要登录)
|
||||
.excludePathPatterns("/loading.html", "/admin/login.html")
|
||||
// .excludePathPatterns("/loading.html", "/admin/login.html")
|
||||
// 排除静态资源
|
||||
.excludePathPatterns("/", "/*.css", "/*.js", "/*.ico", "/static/**", "/assets/**")
|
||||
// 排除后台管理静态资源
|
||||
.excludePathPatterns("/admin/**")
|
||||
.excludePathPatterns("/", "/*.html", "/*.css", "/*.js", "/*.ico", "/static/**", "/assets/**")
|
||||
// 排除接口静态资源
|
||||
.excludePathPatterns("/doc.html", "/webjars/**")
|
||||
.excludePathPatterns("/v3/api-docs/swagger-config", "/v3/api-docs/**", "/swagger-resources")
|
||||
// 排除 Druid 监控
|
||||
.excludePathPatterns("/druid/**")
|
||||
// 排除错误页面
|
||||
.excludePathPatterns("/error", "/error/**")
|
||||
// 排除校验更新接口
|
||||
.excludePathPatterns("/app_version/**")
|
||||
// 排除获取最新app接口
|
||||
.excludePathPatterns("/api/app", "/api/app/getAppVersion")
|
||||
.excludePathPatterns("/api/website/**")
|
||||
.excludePathPatterns("/api/app/access_statistics/accumulate")
|
||||
.excludePathPatterns("/api/app/resource_category/**")
|
||||
.excludePathPatterns("/api/app/resource/**")
|
||||
.excludePathPatterns("/api/app/device/factoryActivation")
|
||||
// 排除模型接口
|
||||
.excludePathPatterns("/model/page", "/model/list", "/model/detail/**", "/model/category/**")
|
||||
// 排除咨询接口
|
||||
.excludePathPatterns("/contactMsg", "/contactMsg/**");
|
||||
}
|
||||
|
||||
public void addResourceHandlers(ResourceHandlerRegistry registry) {
|
||||
registry.addResourceHandler("doc.html").addResourceLocations(ResourceUtils.CLASSPATH_URL_PREFIX + "/META-INF/resources/");
|
||||
registry.addResourceHandler("/webjars/**").addResourceLocations(ResourceUtils.CLASSPATH_URL_PREFIX + "/META-INF/resources/webjars/");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
package com.corewing.app.dto;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
|
||||
@ApiModel("APP统计请求模型")
|
||||
@Data
|
||||
public class AccessStatisticsRequest {
|
||||
|
||||
@ApiModelProperty("访问页面")
|
||||
private String visitPage;
|
||||
|
||||
@ApiModelProperty("访问类型")
|
||||
private String accessType;
|
||||
|
||||
@ApiModelProperty(value = "访问设备", required = true)
|
||||
@NotBlank(message = "访问设备不能为空")
|
||||
private String accessDevice;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
package com.corewing.app.dto.AppModel;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class ModelCategoryListRequest {
|
||||
|
||||
@ApiModelProperty(value = "搜索参数(分类名称)")
|
||||
private String searchKey;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
package com.corewing.app.dto.AppModel;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class ModelCategoryPageRequest {
|
||||
|
||||
@ApiModelProperty(value = "搜索参数(分类名称)")
|
||||
private String searchKey;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
package com.corewing.app.dto.AppModel;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import javax.validation.constraints.NotNull;
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
public class ModelCreateRequest {
|
||||
|
||||
@ApiModelProperty(value = "模型标题", required = true)
|
||||
@NotBlank(message = "模型标题不能为空")
|
||||
private String title;
|
||||
|
||||
@ApiModelProperty(value = "模型描述", required = true)
|
||||
@NotBlank(message = "模型描述不能为空")
|
||||
private String description;
|
||||
|
||||
@ApiModelProperty(value = "模型分类id", required = true)
|
||||
@NotBlank(message = "模型分类id不能为空")
|
||||
private String categoryId;
|
||||
|
||||
@ApiModelProperty(value = "模型封面", required = true)
|
||||
@NotBlank(message = "模型封面不能为空")
|
||||
private String coverImage;
|
||||
|
||||
@ApiModelProperty(value = "备注", required = false)
|
||||
private String remark;
|
||||
|
||||
@ApiModelProperty("模型文件")
|
||||
@NotNull(message = "模型文件不能为空")
|
||||
private List<MultipartFile> files;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
package com.corewing.app.dto.AppModel;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class ModelDownloadLogListRequest {
|
||||
|
||||
@ApiModelProperty(value = "模型标题", required = false)
|
||||
private String searchKey;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
package com.corewing.app.dto.AppModel;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class ModelDownloadLogPageRequest {
|
||||
|
||||
@ApiModelProperty(value = "模型标题", required = false)
|
||||
private String searchKey;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
package com.corewing.app.dto.AppModel;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
|
||||
@Data
|
||||
public class ModelDownloadRequest {
|
||||
|
||||
@ApiModelProperty(value = "模型id", required = true)
|
||||
@NotBlank(message = "模型id不能为空")
|
||||
private String modelId;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
package com.corewing.app.dto.AppModel;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
|
||||
@Data
|
||||
public class ModelFavoriteListRequest {
|
||||
|
||||
@ApiModelProperty(value = "模型标题", required = false)
|
||||
private String searchKey;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
package com.corewing.app.dto.AppModel;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class ModelFavoritePageRequest {
|
||||
|
||||
@ApiModelProperty(value = "模型标题", required = false)
|
||||
private String searchKey;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
package com.corewing.app.dto.AppModel;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
|
||||
@Data
|
||||
public class ModelFavoriteRequest {
|
||||
|
||||
@ApiModelProperty(value = "模型id", required = true)
|
||||
@NotBlank(message = "模型id不能为空")
|
||||
private String modelId;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
package com.corewing.app.dto.AppModel;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
|
||||
@Data
|
||||
public class ModelIdRequest {
|
||||
|
||||
@ApiModelProperty(value = "模型id", required = true)
|
||||
@NotBlank(message = "模型Id不能为空")
|
||||
private String modelId;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
package com.corewing.app.dto.AppModel;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
|
||||
@Data
|
||||
public class ModelLikeRequest {
|
||||
|
||||
@ApiModelProperty(value = "模型id", required = true)
|
||||
@NotBlank(message = "模型id不能为空")
|
||||
private String modelId;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
package com.corewing.app.dto.AppModel;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class ModelListRequest {
|
||||
|
||||
@ApiModelProperty(value = "用户id")
|
||||
private Long userId;
|
||||
|
||||
@ApiModelProperty(value = "搜索参数(模型标题)")
|
||||
private String searchKey;
|
||||
|
||||
@ApiModelProperty(value = "模型状态(1正常 0下架 2审核中)")
|
||||
private String status;
|
||||
|
||||
@ApiModelProperty(value = "模型公布状态(1公开 0私有)")
|
||||
private String isPublic;
|
||||
|
||||
@ApiModelProperty(value = "分类id")
|
||||
private String categoryId;
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
package com.corewing.app.dto.AppModel;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class ModelPageRequest {
|
||||
|
||||
@ApiModelProperty(value = "用户id")
|
||||
private Long userId;
|
||||
|
||||
@ApiModelProperty(value = "搜索参数(模型标题)")
|
||||
private String searchKey;
|
||||
|
||||
@ApiModelProperty(value = "模型状态(1正常 0下架 2审核中)")
|
||||
private String status;
|
||||
|
||||
@ApiModelProperty(value = "模型公布状态(1公开 0私有)")
|
||||
private String isPublic;
|
||||
|
||||
@ApiModelProperty(value = "分类id")
|
||||
private String categoryId;
|
||||
|
||||
}
|
||||
19
src/main/java/com/corewing/app/dto/CheckVersionRequest.java
Normal file
19
src/main/java/com/corewing/app/dto/CheckVersionRequest.java
Normal file
@@ -0,0 +1,19 @@
|
||||
package com.corewing.app.dto;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
|
||||
@Data
|
||||
public class CheckVersionRequest {
|
||||
|
||||
@NotBlank(message = "版本不能为空")
|
||||
private String localVersion;
|
||||
|
||||
@NotBlank(message = "构建版本不能为空")
|
||||
private int localBuildNumber;
|
||||
|
||||
@NotBlank(message = "类型不能为空")
|
||||
private String type;
|
||||
|
||||
}
|
||||
19
src/main/java/com/corewing/app/dto/CodeLoginRequest.java
Normal file
19
src/main/java/com/corewing/app/dto/CodeLoginRequest.java
Normal file
@@ -0,0 +1,19 @@
|
||||
package com.corewing.app.dto;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
|
||||
/**
|
||||
* 验证码登录请求对象
|
||||
*/
|
||||
@Data
|
||||
public class CodeLoginRequest {
|
||||
|
||||
@NotBlank(message = "手机号或邮箱不能为空")
|
||||
private String account;
|
||||
|
||||
@NotBlank(message = "验证码不能为空")
|
||||
private String verificationCode;
|
||||
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.corewing.app.dto.api;
|
||||
package com.corewing.app.dto;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
package com.corewing.app.dto;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
|
||||
@Data
|
||||
public class DeviceActivationRequest {
|
||||
|
||||
@ApiModelProperty(value = "MAC地址", required = true)
|
||||
@NotBlank(message = "MAC地址不能为空")
|
||||
private String mac;
|
||||
|
||||
@ApiModelProperty(value = "设备型号", required = true)
|
||||
@NotBlank(message = "设备型号不能为空")
|
||||
private String modelId;
|
||||
|
||||
@ApiModelProperty(value = "时间戳", required = true)
|
||||
private String timestamp;
|
||||
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.corewing.app.dto.api;
|
||||
package com.corewing.app.dto;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
package com.corewing.app.dto;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.NotNull;
|
||||
|
||||
@Data
|
||||
public class FirmwareVersionRequest {
|
||||
|
||||
@ApiModelProperty(value = "型号id", required = true)
|
||||
@NotNull(message = "型号不能为空")
|
||||
private Integer modelId;
|
||||
|
||||
@ApiModelProperty(value = "版本号", required = true)
|
||||
@NotNull(message = "版本号不能为空")
|
||||
private String version;
|
||||
|
||||
@ApiModelProperty(value = "固件类型", required = true)
|
||||
@NotNull(message = "固件类型不能为空")
|
||||
private Integer firmwareType;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
package com.corewing.app.dto;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
|
||||
@Data
|
||||
public class ForgetPasswordRequest {
|
||||
|
||||
@NotBlank(message = "手机号或邮箱不能为空")
|
||||
private String account;
|
||||
|
||||
@NotBlank(message = "验证码不能为空")
|
||||
private String verificationCode;
|
||||
|
||||
@NotBlank(message = "密码不能为空")
|
||||
private String password;
|
||||
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.corewing.app.dto.api;
|
||||
package com.corewing.app.dto;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
13
src/main/java/com/corewing/app/dto/LogoffRequest.java
Normal file
13
src/main/java/com/corewing/app/dto/LogoffRequest.java
Normal file
@@ -0,0 +1,13 @@
|
||||
package com.corewing.app.dto;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
|
||||
@Data
|
||||
public class LogoffRequest {
|
||||
|
||||
@NotBlank(message = "验证码不能为空")
|
||||
private String code;
|
||||
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.corewing.app.dto.api;
|
||||
package com.corewing.app.dto;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
package com.corewing.app.dto;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class ResourceCategoryTreeRequest {
|
||||
}
|
||||
14
src/main/java/com/corewing/app/dto/ResourcePageRequest.java
Normal file
14
src/main/java/com/corewing/app/dto/ResourcePageRequest.java
Normal file
@@ -0,0 +1,14 @@
|
||||
package com.corewing.app.dto;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class ResourcePageRequest {
|
||||
|
||||
@ApiModelProperty(value = "搜索参数")
|
||||
private String searchKey;
|
||||
|
||||
@ApiModelProperty(value = "分类id")
|
||||
private String categoryId;
|
||||
}
|
||||
4
src/main/java/com/corewing/app/dto/api/SendCodeRequest.java → src/main/java/com/corewing/app/dto/SendCodeRequest.java
Normal file → Executable file
4
src/main/java/com/corewing/app/dto/api/SendCodeRequest.java → src/main/java/com/corewing/app/dto/SendCodeRequest.java
Normal file → Executable file
@@ -1,4 +1,4 @@
|
||||
package com.corewing.app.dto.api;
|
||||
package com.corewing.app.dto;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@@ -17,7 +17,7 @@ public class SendCodeRequest {
|
||||
private String account;
|
||||
|
||||
/**
|
||||
* 验证码类型:register-注册, login-登录, reset-重置密码
|
||||
* 验证码类型:register-注册, login-登录, reset-重置密码, forget-忘记密码,logoff-注销
|
||||
*/
|
||||
@NotBlank(message = "验证码类型不能为空")
|
||||
private String type;
|
||||
@@ -0,0 +1,19 @@
|
||||
package com.corewing.app.dto;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class SubmitActivityRequest {
|
||||
|
||||
@ApiModelProperty("活动id")
|
||||
private String activityId;
|
||||
|
||||
/* 创作平台 */
|
||||
@ApiModelProperty("创作平台")
|
||||
private String creationPlatform;
|
||||
|
||||
/* 提交内容 */
|
||||
@ApiModelProperty("提交内容")
|
||||
private String content;
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.corewing.app.dto.api;
|
||||
package com.corewing.app.dto;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.corewing.app.dto.api;
|
||||
package com.corewing.app.dto;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.corewing.app.dto.api;
|
||||
package com.corewing.app.dto;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.corewing.app.dto.api;
|
||||
package com.corewing.app.dto;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.corewing.app.dto.api;
|
||||
package com.corewing.app.dto;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@@ -1,11 +0,0 @@
|
||||
package com.corewing.app.dto.biz.feedback;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
public class FeedbackBatchDeleteRequest {
|
||||
|
||||
private List<Long> ids;
|
||||
}
|
||||
@@ -1,13 +0,0 @@
|
||||
package com.corewing.app.dto.biz.feedback;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
public class FeedbackBatchStatusRequest {
|
||||
|
||||
private List<Long> ids;
|
||||
|
||||
private Integer status;
|
||||
}
|
||||
@@ -1,10 +0,0 @@
|
||||
package com.corewing.app.dto.biz.firmware;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
public class FirmwareBatchDeleteRequest {
|
||||
private List<Long> ids;
|
||||
}
|
||||
@@ -1,11 +0,0 @@
|
||||
package com.corewing.app.dto.biz.privacyPolicy;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
public class PrivacyPolicyBatchDeleteRequest {
|
||||
|
||||
private List<Long> ids;
|
||||
}
|
||||
@@ -1,10 +0,0 @@
|
||||
package com.corewing.app.dto.biz.tutorial;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
public class BatchTutorialDeleteRequest {
|
||||
private List<Long> ids;
|
||||
}
|
||||
@@ -1,10 +0,0 @@
|
||||
package com.corewing.app.dto.biz.tutorial;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
public class CategoryBatchDeleteRequest {
|
||||
private List<Long> ids;
|
||||
}
|
||||
@@ -1,12 +0,0 @@
|
||||
package com.corewing.app.dto.biz.user;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
public class BizUserBatchDeleteRequest {
|
||||
|
||||
private List<Long> ids;
|
||||
|
||||
}
|
||||
@@ -1,8 +0,0 @@
|
||||
package com.corewing.app.dto.biz.user;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class BizUserIdRequest {
|
||||
private long id;
|
||||
}
|
||||
@@ -1,11 +0,0 @@
|
||||
package com.corewing.app.dto.biz.user;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
public class BizUserStatusRequest {
|
||||
private List<Long> ids;
|
||||
private Integer status;
|
||||
}
|
||||
@@ -1,18 +0,0 @@
|
||||
package com.corewing.app.dto.biz.user;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class ResetPasswordRequest {
|
||||
|
||||
/**
|
||||
* 用户id
|
||||
*/
|
||||
private Integer userId;
|
||||
|
||||
/**
|
||||
* 新密码
|
||||
*/
|
||||
private String password;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
package com.corewing.app.dto.publicFirmware;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
|
||||
@Data
|
||||
public class PublicBoardTypeListRequest {
|
||||
|
||||
@ApiModelProperty(value = "固件类型", required = true)
|
||||
@NotBlank(message = "固件类型不能为空")
|
||||
public String firmwareType;
|
||||
|
||||
@ApiModelProperty(value = "固件版本id", required = true)
|
||||
@NotBlank(message = "固件版本id不能为空")
|
||||
public String versionId;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
package com.corewing.app.dto.publicFirmware;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
|
||||
@Data
|
||||
public class PublicFirmwareListRequest {
|
||||
|
||||
@ApiModelProperty(value = "固件类型", required = true)
|
||||
@NotBlank(message = "固件类型不能为空")
|
||||
public String firmwareType;
|
||||
|
||||
@ApiModelProperty(value = "固件版本id", required = true)
|
||||
@NotBlank(message = "固件版本id不能为空")
|
||||
public String versionId;
|
||||
|
||||
@ApiModelProperty(value = "板载类型", required = true)
|
||||
@NotBlank(message = "板载类型不能为空")
|
||||
public String boardType;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
package com.corewing.app.dto.publicFirmware;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
|
||||
@Data
|
||||
public class PublicFirmwareVersionListRequest {
|
||||
|
||||
@ApiModelProperty(value = "固件类型", required = true)
|
||||
@NotBlank(message = "固件类型不能为空")
|
||||
public String firmwareType;
|
||||
|
||||
}
|
||||
19
src/main/java/com/corewing/app/dto/qc/StepResultData.java
Normal file
19
src/main/java/com/corewing/app/dto/qc/StepResultData.java
Normal file
@@ -0,0 +1,19 @@
|
||||
package com.corewing.app.dto.qc;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class StepResultData {
|
||||
|
||||
private Integer stepIndex;
|
||||
|
||||
private String stepName;
|
||||
|
||||
private String result;
|
||||
|
||||
private String dataJson;
|
||||
|
||||
private Long duration;
|
||||
|
||||
private String completedAt;
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
package com.corewing.app.dto.qc;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
public class UploadTestRecordRequest {
|
||||
|
||||
private String testNo;
|
||||
|
||||
private String productType;
|
||||
|
||||
private String sn;
|
||||
|
||||
private String operatorId;
|
||||
|
||||
private String operatorName;
|
||||
|
||||
private String phoneModel;
|
||||
|
||||
private String appVersion;
|
||||
|
||||
private String status;
|
||||
|
||||
private String createTime;
|
||||
|
||||
private String updatedAt;
|
||||
|
||||
private String uploadTime;
|
||||
|
||||
private List<StepResultData> steps;
|
||||
|
||||
private List<String> photoUrls;
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
package com.corewing.app.dto.qc;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class ValidateSnRequest {
|
||||
|
||||
private String sn;
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
package com.corewing.app.dto.qc;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class ValidateWirelessBoardRequest {
|
||||
private String mac;
|
||||
}
|
||||
@@ -1,9 +0,0 @@
|
||||
package com.corewing.app.dto.sys;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class SysResetPasswordRequest {
|
||||
private Long userId;
|
||||
private String password;
|
||||
}
|
||||
@@ -1,8 +0,0 @@
|
||||
package com.corewing.app.dto.sys;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class SysUserIdRequest {
|
||||
private Long id;
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.corewing.app.dto.api;
|
||||
package com.corewing.app.dto;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
package com.corewing.app.dto.website;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
|
||||
@Data
|
||||
public class ProductCategoryRequest {
|
||||
|
||||
@ApiModelProperty(value = "产品名称")
|
||||
private String searchKey;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
package com.corewing.app.dto.website;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
|
||||
@Data
|
||||
public class ProductPageRequest {
|
||||
|
||||
@ApiModelProperty(value = "产品名称")
|
||||
private String searchKey;
|
||||
|
||||
@ApiModelProperty(value = "产品分类")
|
||||
private String categoryId;
|
||||
|
||||
}
|
||||
74
src/main/java/com/corewing/app/entity/AatVersion.java
Normal file
74
src/main/java/com/corewing/app/entity/AatVersion.java
Normal file
@@ -0,0 +1,74 @@
|
||||
package com.corewing.app.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.FieldFill;
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* AAT固件版本实体类
|
||||
*/
|
||||
@Data
|
||||
@TableName("app_aat_version")
|
||||
public class AatVersion implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@TableId(value = "id", type = IdType.AUTO)
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 固件类型: lb_main / lb_signal_master / lbPro_main / lbPro_signal_master / lbPro_screen_ui
|
||||
*/
|
||||
private String firmwareType;
|
||||
|
||||
/**
|
||||
* 固件文件名
|
||||
*/
|
||||
private String firmwareName;
|
||||
|
||||
/**
|
||||
* 固件版本号
|
||||
*/
|
||||
private String firmwareVersion;
|
||||
|
||||
/**
|
||||
* 最低硬件版本
|
||||
*/
|
||||
private String minHardwareVersion;
|
||||
|
||||
/**
|
||||
* 固件下载地址
|
||||
*/
|
||||
private String downloadUrl;
|
||||
|
||||
/**
|
||||
* 固件大小(字节)
|
||||
*/
|
||||
private Long firmwareSize;
|
||||
|
||||
/**
|
||||
* 固件描述
|
||||
*/
|
||||
private String firmwareDescription;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
@TableField(fill = FieldFill.INSERT)
|
||||
private LocalDateTime createTime;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
@TableField(fill = FieldFill.INSERT_UPDATE)
|
||||
private LocalDateTime updateTime;
|
||||
}
|
||||
@@ -0,0 +1,56 @@
|
||||
package com.corewing.app.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.corewing.app.common.base.CommonEntity;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
@ApiModel("APP访问统计")
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Data
|
||||
@TableName("app_access_statistics")
|
||||
public class AppAccessStatistics extends CommonEntity {
|
||||
|
||||
@ApiModelProperty("id")
|
||||
@TableId
|
||||
private String id;
|
||||
|
||||
@ApiModelProperty("用户id")
|
||||
private Long userId;
|
||||
|
||||
@ApiModelProperty("访问页面")
|
||||
private String visitPage;
|
||||
|
||||
@ApiModelProperty("访问类型")
|
||||
private String accessType;
|
||||
|
||||
@ApiModelProperty("访问设备")
|
||||
private String accessDevice;
|
||||
|
||||
@ApiModelProperty("设备型号")
|
||||
private String deviceModel;
|
||||
|
||||
@ApiModelProperty("设备系统")
|
||||
private String deviceSystem;
|
||||
|
||||
@ApiModelProperty("设备品牌")
|
||||
private String deviceBrand;
|
||||
|
||||
@ApiModelProperty("访问IP")
|
||||
private String accessIp;
|
||||
|
||||
@ApiModelProperty("访问地址")
|
||||
private String accessAddress;
|
||||
|
||||
@ApiModelProperty("备注")
|
||||
private String remark;
|
||||
|
||||
@ApiModelProperty("扩展参数")
|
||||
private String extJson;
|
||||
|
||||
|
||||
}
|
||||
71
src/main/java/com/corewing/app/entity/AppModel.java
Normal file
71
src/main/java/com/corewing/app/entity/AppModel.java
Normal file
@@ -0,0 +1,71 @@
|
||||
package com.corewing.app.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.corewing.app.common.base.CommonEntity;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Data
|
||||
@TableName("app_model")
|
||||
public class AppModel extends CommonEntity {
|
||||
|
||||
@TableId
|
||||
@ApiModelProperty("模型id")
|
||||
private String id;
|
||||
|
||||
@ApiModelProperty("用户id")
|
||||
private Long userId;
|
||||
|
||||
@ApiModelProperty("模型标题")
|
||||
private String title;
|
||||
|
||||
@ApiModelProperty("模型描述")
|
||||
private String description;
|
||||
|
||||
@ApiModelProperty("分类id")
|
||||
private String categoryId;
|
||||
|
||||
@ApiModelProperty("模型封面(base64)")
|
||||
private String coverImage;
|
||||
|
||||
@ApiModelProperty("是否公开:(1公开,0私有)")
|
||||
private String isPublic;
|
||||
|
||||
@ApiModelProperty("状态:(1正常,0下架,2审核中)")
|
||||
private String status;
|
||||
|
||||
@ApiModelProperty("下载次数")
|
||||
private int downloadCount;
|
||||
|
||||
@ApiModelProperty("点赞次数")
|
||||
private int likeCount;
|
||||
|
||||
@ApiModelProperty("收藏次数")
|
||||
private int favoriteCount;
|
||||
|
||||
@ApiModelProperty("备注")
|
||||
private String remark;
|
||||
|
||||
@ApiModelProperty("扩展参数")
|
||||
private String extJson;
|
||||
|
||||
@ApiModelProperty("暂未使用【点击详情接口获取文件模型】")
|
||||
@TableField(exist = false)
|
||||
private List<AppModelFile> modelFile;
|
||||
|
||||
/**
|
||||
* 分类名称
|
||||
*/
|
||||
@ApiModelProperty("分类名称")
|
||||
@TableField(exist = false)
|
||||
private String categoryTitle;
|
||||
|
||||
|
||||
}
|
||||
35
src/main/java/com/corewing/app/entity/AppModelCategory.java
Normal file
35
src/main/java/com/corewing/app/entity/AppModelCategory.java
Normal file
@@ -0,0 +1,35 @@
|
||||
package com.corewing.app.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.corewing.app.common.base.CommonEntity;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Data
|
||||
@TableName("app_model_category")
|
||||
public class AppModelCategory extends CommonEntity {
|
||||
|
||||
@TableId
|
||||
@ApiModelProperty("分类id")
|
||||
private String id;
|
||||
|
||||
@ApiModelProperty("分类名称")
|
||||
private String name;
|
||||
|
||||
@ApiModelProperty("父级id")
|
||||
private String parentId;
|
||||
|
||||
@ApiModelProperty("排序码")
|
||||
private int sortCode;
|
||||
|
||||
@ApiModelProperty("备注")
|
||||
private String remark;
|
||||
|
||||
@ApiModelProperty("扩展参数")
|
||||
private String extJson;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
package com.corewing.app.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.corewing.app.common.base.CommonEntity;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Data
|
||||
@TableName("app_model_download_log")
|
||||
public class AppModelDownloadLog extends CommonEntity {
|
||||
|
||||
@TableId
|
||||
@ApiModelProperty("id")
|
||||
private String id;
|
||||
|
||||
@ApiModelProperty("用户id")
|
||||
private Long userId;
|
||||
|
||||
@ApiModelProperty("模型id")
|
||||
private String modelId;
|
||||
|
||||
@ApiModelProperty("下载ip")
|
||||
private String ipAddress;
|
||||
|
||||
@ApiModelProperty("下载备注")
|
||||
private String remark;
|
||||
|
||||
@ApiModelProperty("扩展参数")
|
||||
private String extJson;
|
||||
|
||||
|
||||
}
|
||||
25
src/main/java/com/corewing/app/entity/AppModelFavorite.java
Normal file
25
src/main/java/com/corewing/app/entity/AppModelFavorite.java
Normal file
@@ -0,0 +1,25 @@
|
||||
package com.corewing.app.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.corewing.app.common.base.CommonEntity;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Data
|
||||
@TableName("app_model_favorite")
|
||||
public class AppModelFavorite extends CommonEntity {
|
||||
|
||||
@TableId
|
||||
private Long id;
|
||||
|
||||
private Long userId;
|
||||
|
||||
private String modelId;
|
||||
|
||||
private String remark;
|
||||
|
||||
private String extJson;
|
||||
|
||||
}
|
||||
38
src/main/java/com/corewing/app/entity/AppModelFile.java
Normal file
38
src/main/java/com/corewing/app/entity/AppModelFile.java
Normal file
@@ -0,0 +1,38 @@
|
||||
package com.corewing.app.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.corewing.app.common.base.CommonEntity;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Data
|
||||
@TableName("app_model_file")
|
||||
public class AppModelFile extends CommonEntity {
|
||||
|
||||
@TableId
|
||||
@ApiModelProperty("id")
|
||||
private String id;
|
||||
|
||||
@ApiModelProperty("模型id")
|
||||
private String modelId;
|
||||
|
||||
@ApiModelProperty("文件名称")
|
||||
private String fileName;
|
||||
|
||||
@ApiModelProperty("文件类型")
|
||||
private String fileType;
|
||||
|
||||
@ApiModelProperty("文件大小")
|
||||
private Long fileSize;
|
||||
|
||||
@ApiModelProperty("文件地址")
|
||||
private String fileUrl;
|
||||
|
||||
@ApiModelProperty("文件排序")
|
||||
private int sortCode;
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,86 @@
|
||||
package com.corewing.app.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.corewing.app.common.base.CommonEntity;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 固件详情表
|
||||
*/
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Data
|
||||
@TableName("app_public_firmware_plane")
|
||||
public class AppPublicFirmwarePlane extends CommonEntity {
|
||||
|
||||
/**
|
||||
* 主键
|
||||
*/
|
||||
@TableId
|
||||
private String id;
|
||||
|
||||
/**
|
||||
* 版本号Id
|
||||
*/
|
||||
private String versionId;
|
||||
|
||||
/**
|
||||
* 板载类型
|
||||
*/
|
||||
private String boardType;
|
||||
|
||||
/**
|
||||
* 固件类型
|
||||
*/
|
||||
private String type;
|
||||
|
||||
/**
|
||||
* 固件下载地址
|
||||
*/
|
||||
private String downloadUrl;
|
||||
|
||||
/**
|
||||
* 固件名称
|
||||
*/
|
||||
private String firmwareName;
|
||||
|
||||
/**
|
||||
* 固件大小
|
||||
*/
|
||||
private Long fileSize;
|
||||
|
||||
/**
|
||||
* 固件发布时间
|
||||
*/
|
||||
private Date releaseTime;
|
||||
|
||||
/**
|
||||
* 固件同步时间
|
||||
*/
|
||||
private Date crawlTime;
|
||||
|
||||
/**
|
||||
* 是否有效
|
||||
*/
|
||||
private int isValid;
|
||||
|
||||
/**
|
||||
* 排序
|
||||
*/
|
||||
private int sortCode;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 扩展字段
|
||||
*/
|
||||
private String extJson;
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,65 @@
|
||||
package com.corewing.app.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.corewing.app.common.base.CommonEntity;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 公共固件版本表
|
||||
*/
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Data
|
||||
@TableName("app_public_firmware_version")
|
||||
public class AppPublicFirmwareVersion extends CommonEntity {
|
||||
|
||||
/**
|
||||
* 主键
|
||||
*/
|
||||
@TableId
|
||||
public String id;
|
||||
|
||||
/**
|
||||
* 固件版本类型
|
||||
*/
|
||||
private String type;
|
||||
|
||||
/**
|
||||
* 版本类型
|
||||
*/
|
||||
private String versionType;
|
||||
|
||||
/**
|
||||
* 版本号
|
||||
*/
|
||||
private String versionNumber;
|
||||
|
||||
/**
|
||||
* 数字版本号
|
||||
*/
|
||||
private int versionCode;
|
||||
|
||||
/**
|
||||
* 发布时间
|
||||
*/
|
||||
private Date releaseDate;
|
||||
|
||||
/**
|
||||
* 排序
|
||||
*/
|
||||
private int sortCode;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 扩展字段
|
||||
*/
|
||||
private String extJson;
|
||||
|
||||
}
|
||||
38
src/main/java/com/corewing/app/entity/AppVersion.java
Normal file
38
src/main/java/com/corewing/app/entity/AppVersion.java
Normal file
@@ -0,0 +1,38 @@
|
||||
package com.corewing.app.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import lombok.Data;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* app版本控制
|
||||
*/
|
||||
@Data
|
||||
@TableName("app_version")
|
||||
public class AppVersion {
|
||||
|
||||
@TableId(value = "id", type = IdType.AUTO)
|
||||
private Long id;
|
||||
|
||||
private String version;
|
||||
|
||||
private int versionNumber;
|
||||
|
||||
private int buildNumber;
|
||||
|
||||
private String updateContent;
|
||||
|
||||
private String downloadUrl;
|
||||
|
||||
private String type;
|
||||
|
||||
private Integer status;
|
||||
|
||||
@TableField(fill = FieldFill.INSERT)
|
||||
private LocalDateTime createTime;
|
||||
|
||||
@TableField(fill = FieldFill.UPDATE)
|
||||
private LocalDateTime updateTime;
|
||||
|
||||
}
|
||||
71
src/main/java/com/corewing/app/entity/BizActivity.java
Normal file
71
src/main/java/com/corewing/app/entity/BizActivity.java
Normal file
@@ -0,0 +1,71 @@
|
||||
package com.corewing.app.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.corewing.app.common.base.CommonEntity;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 活动
|
||||
*/
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Data
|
||||
@TableName("biz_activity")
|
||||
public class BizActivity extends CommonEntity {
|
||||
|
||||
/* id */
|
||||
@TableId
|
||||
private String id;
|
||||
|
||||
/* 活动图 */
|
||||
private String thumbnail;
|
||||
|
||||
/* 活动标题 */
|
||||
private String title;
|
||||
|
||||
/* 活动描述 */
|
||||
private String description;
|
||||
|
||||
/* 活动分类 */
|
||||
private String category;
|
||||
|
||||
/* 活动平台 */
|
||||
private String platformCategory;
|
||||
|
||||
/* 活动人数 */
|
||||
private Integer participationCount;
|
||||
|
||||
/* 当前参与人数 */
|
||||
private Integer currentCount;
|
||||
|
||||
/* 活动详情 */
|
||||
private String content;
|
||||
|
||||
/* 活动开始时间 */
|
||||
private Date startTime;
|
||||
|
||||
/* 活动结束时间 */
|
||||
private Date endTime;
|
||||
|
||||
/* 活动状态 */
|
||||
private String status;
|
||||
|
||||
/* 是否开启活动参与人员审核 */
|
||||
private String personnelReview;
|
||||
|
||||
/* 活动排序 */
|
||||
private Integer sortCode;
|
||||
|
||||
/* 备注 */
|
||||
private String remark;
|
||||
|
||||
/* 扩展 */
|
||||
private String extJson;
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,53 @@
|
||||
package com.corewing.app.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.corewing.app.common.base.CommonEntity;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Data
|
||||
@TableName("biz_activity_lottery")
|
||||
public class BizActivityLottery extends CommonEntity {
|
||||
|
||||
/* id */
|
||||
@TableId
|
||||
private String id;
|
||||
|
||||
/* 活动id */
|
||||
private String activityId;
|
||||
|
||||
/* 分类 */
|
||||
private String category;
|
||||
|
||||
/* 用户名 */
|
||||
private String userName;
|
||||
|
||||
/* 用户id */
|
||||
private Long userId;
|
||||
|
||||
/* 状态 */
|
||||
private String status;
|
||||
|
||||
/* 提交内容 */
|
||||
private String content;
|
||||
|
||||
/* 审核时间 */
|
||||
private Date reviewTime;
|
||||
|
||||
/* 创作平台 */
|
||||
private String creationPlatform;
|
||||
|
||||
/* 备注 */
|
||||
private String remark;
|
||||
|
||||
/* 排序 */
|
||||
private Integer sortCode;
|
||||
|
||||
/* 扩展字段 */
|
||||
private String extJson;
|
||||
|
||||
}
|
||||
44
src/main/java/com/corewing/app/entity/BizDevice.java
Normal file
44
src/main/java/com/corewing/app/entity/BizDevice.java
Normal file
@@ -0,0 +1,44 @@
|
||||
package com.corewing.app.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.corewing.app.common.base.CommonEntity;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
/**
|
||||
* 设备表
|
||||
*/
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
|
||||
@Data
|
||||
@TableName("biz_device")
|
||||
public class BizDevice extends CommonEntity {
|
||||
|
||||
@TableId
|
||||
@ApiModelProperty("设备id")
|
||||
private String id;
|
||||
|
||||
@ApiModelProperty("设备mac地址")
|
||||
private String deviceMac;
|
||||
|
||||
@ApiModelProperty("状态")
|
||||
private String status;
|
||||
|
||||
@ApiModelProperty("公布状态")
|
||||
private String publicStatus;
|
||||
|
||||
@ApiModelProperty("型号")
|
||||
private String categoryId;
|
||||
|
||||
@ApiModelProperty("排序")
|
||||
private int sortCode;
|
||||
|
||||
@ApiModelProperty("备注")
|
||||
private String remark;
|
||||
|
||||
@ApiModelProperty("扩展字段")
|
||||
private String extJson;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,45 @@
|
||||
package com.corewing.app.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.corewing.app.common.base.CommonEntity;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 设备激活表
|
||||
*/
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Data
|
||||
@TableName("biz_device_activation")
|
||||
public class BizDeviceActivation extends CommonEntity {
|
||||
|
||||
@TableId
|
||||
@ApiModelProperty("激活id")
|
||||
private String id;
|
||||
|
||||
@ApiModelProperty("设备mac地址")
|
||||
private String deviceMac;
|
||||
|
||||
@ApiModelProperty("设备id")
|
||||
private String deviceId;
|
||||
|
||||
@ApiModelProperty("激活时间")
|
||||
private Date activationTime;
|
||||
|
||||
@ApiModelProperty("用户id")
|
||||
private Long userId;
|
||||
|
||||
@ApiModelProperty("激活ip")
|
||||
private String activationIp;
|
||||
|
||||
@ApiModelProperty("备注")
|
||||
private String remark;
|
||||
|
||||
@ApiModelProperty("扩展字段")
|
||||
private String extJson;
|
||||
|
||||
}
|
||||
41
src/main/java/com/corewing/app/entity/BizDeviceCategory.java
Normal file
41
src/main/java/com/corewing/app/entity/BizDeviceCategory.java
Normal file
@@ -0,0 +1,41 @@
|
||||
package com.corewing.app.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.corewing.app.common.base.CommonEntity;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
/**
|
||||
* 设备型号表
|
||||
*/
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Data
|
||||
@TableName("biz_device_category")
|
||||
public class BizDeviceCategory extends CommonEntity {
|
||||
|
||||
@TableId
|
||||
@ApiModelProperty("设备型号id")
|
||||
private String id;
|
||||
|
||||
@ApiModelProperty("设备型号缩略图")
|
||||
private String thumbnail;
|
||||
|
||||
@ApiModelProperty("型号id")
|
||||
private Integer modelId;
|
||||
|
||||
@ApiModelProperty("设备型号名称")
|
||||
private String categoryName;
|
||||
|
||||
@ApiModelProperty("排序")
|
||||
private int sortCode;
|
||||
|
||||
@ApiModelProperty("备注")
|
||||
private String remark;
|
||||
|
||||
@ApiModelProperty("扩展字段")
|
||||
private String extJson;
|
||||
|
||||
|
||||
}
|
||||
50
src/main/java/com/corewing/app/entity/BizDict.java
Normal file
50
src/main/java/com/corewing/app/entity/BizDict.java
Normal file
@@ -0,0 +1,50 @@
|
||||
package com.corewing.app.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.FieldStrategy;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.corewing.app.common.base.CommonEntity;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
/**
|
||||
* 字典实体
|
||||
*
|
||||
* @author xuyuxiang
|
||||
* @date 2022/2/23 18:27
|
||||
**/
|
||||
@Getter
|
||||
@Setter
|
||||
@TableName("DEV_DICT")
|
||||
public class BizDict extends CommonEntity {
|
||||
|
||||
/** id */
|
||||
@ApiModelProperty("id")
|
||||
private String id;
|
||||
|
||||
/** 父id */
|
||||
@ApiModelProperty("父级id")
|
||||
private String parentId;
|
||||
|
||||
/** 字典文字 */
|
||||
@ApiModelProperty("字典文字")
|
||||
private String dictLabel;
|
||||
|
||||
/** 字典值 */
|
||||
@ApiModelProperty("字典值")
|
||||
private String dictValue;
|
||||
|
||||
/** 分类 */
|
||||
@ApiModelProperty("分类")
|
||||
private String category;
|
||||
|
||||
/** 排序码 */
|
||||
@ApiModelProperty("排序码")
|
||||
private Integer sortCode;
|
||||
|
||||
/** 扩展信息 */
|
||||
@ApiModelProperty("扩展信息")
|
||||
@TableField(insertStrategy = FieldStrategy.ALWAYS, updateStrategy = FieldStrategy.ALWAYS)
|
||||
private String extJson;
|
||||
}
|
||||
59
src/main/java/com/corewing/app/entity/BizProduct.java
Normal file
59
src/main/java/com/corewing/app/entity/BizProduct.java
Normal file
@@ -0,0 +1,59 @@
|
||||
package com.corewing.app.entity;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.corewing.app.common.base.CommonEntity;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Data
|
||||
@TableName("biz_product")
|
||||
public class BizProduct extends CommonEntity {
|
||||
|
||||
@TableId
|
||||
private String id;
|
||||
|
||||
private String title;
|
||||
|
||||
private String description;
|
||||
|
||||
private String thumbnail;
|
||||
|
||||
private String hotStatus;
|
||||
|
||||
private String showType;
|
||||
|
||||
private String content;
|
||||
|
||||
private String tag;
|
||||
|
||||
private String detailUrl;
|
||||
|
||||
private BigDecimal amount;
|
||||
|
||||
private String status;
|
||||
|
||||
private int sortCode;
|
||||
|
||||
private String remark;
|
||||
|
||||
private String extJson;
|
||||
|
||||
@TableField(exist = false)
|
||||
private String categoryId;
|
||||
|
||||
@TableField(exist = false)
|
||||
private String[] features;
|
||||
|
||||
public String[] getFeatures() {
|
||||
if(StrUtil.isNotBlank(tag)) {
|
||||
return tag.split(",");
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
package com.corewing.app.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.corewing.app.common.base.CommonEntity;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Data
|
||||
@TableName("biz_product_category")
|
||||
public class BizProductCategory extends CommonEntity {
|
||||
|
||||
@TableId
|
||||
private String id;
|
||||
|
||||
private String parentId;
|
||||
|
||||
private String thumbnail;
|
||||
|
||||
private String categoryTitle;
|
||||
|
||||
private String description;
|
||||
|
||||
private String status;
|
||||
|
||||
private Integer sortCode;
|
||||
|
||||
private String remark;
|
||||
|
||||
private String extJson;
|
||||
|
||||
@TableField(exist = false)
|
||||
Page<BizProduct> productPage;
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
package com.corewing.app.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
@TableName("biz_product_category_relation")
|
||||
public class BizProductCategoryRelation {
|
||||
|
||||
@TableId
|
||||
private String id;
|
||||
|
||||
private String productId;
|
||||
|
||||
private String categoryId;
|
||||
|
||||
}
|
||||
44
src/main/java/com/corewing/app/entity/BizResource.java
Normal file
44
src/main/java/com/corewing/app/entity/BizResource.java
Normal file
@@ -0,0 +1,44 @@
|
||||
package com.corewing.app.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.corewing.app.common.base.CommonEntity;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Data
|
||||
public class BizResource extends CommonEntity {
|
||||
|
||||
@TableId
|
||||
private String id;
|
||||
|
||||
private String thumbnail;
|
||||
|
||||
private String title;
|
||||
|
||||
private String fileName;
|
||||
|
||||
private String categoryId;
|
||||
|
||||
private String subtitle;
|
||||
|
||||
private String content;
|
||||
|
||||
private String status;
|
||||
|
||||
private String version;
|
||||
|
||||
private String downloadUrl;
|
||||
|
||||
private Integer sortCode;
|
||||
|
||||
private String remark;
|
||||
|
||||
private String extJson;
|
||||
|
||||
@TableField(exist = false)
|
||||
private String categoryName;
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
package com.corewing.app.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.corewing.app.common.base.CommonEntity;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Data
|
||||
public class BizResourceCategory extends CommonEntity {
|
||||
|
||||
@TableId
|
||||
private String id;
|
||||
|
||||
private String categoryName;
|
||||
|
||||
private String parentId;
|
||||
|
||||
private Integer sortCode;
|
||||
|
||||
private String remark;
|
||||
|
||||
private String extJson;
|
||||
|
||||
}
|
||||
89
src/main/java/com/corewing/app/entity/DevLog.java
Normal file
89
src/main/java/com/corewing/app/entity/DevLog.java
Normal file
@@ -0,0 +1,89 @@
|
||||
package com.corewing.app.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.FieldFill;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 日志实体
|
||||
*
|
||||
*/
|
||||
@Getter
|
||||
@Setter
|
||||
@TableName("DEV_LOG")
|
||||
public class DevLog {
|
||||
|
||||
/** id */
|
||||
private String id;
|
||||
|
||||
/** 日志分类 */
|
||||
private String category;
|
||||
|
||||
/** 日志名称 */
|
||||
private String name;
|
||||
|
||||
/** 执行状态 */
|
||||
private String exeStatus;
|
||||
|
||||
/** 具体消息 */
|
||||
private String exeMessage;
|
||||
|
||||
/** 操作ip */
|
||||
private String opIp;
|
||||
|
||||
/** 操作地址 */
|
||||
private String opAddress;
|
||||
|
||||
/** 操作浏览器 */
|
||||
private String opBrowser;
|
||||
|
||||
/** 操作系统 */
|
||||
private String opOs;
|
||||
|
||||
/** 类名称 */
|
||||
private String className;
|
||||
|
||||
/** 方法名称 */
|
||||
private String methodName;
|
||||
|
||||
/** 请求方式 */
|
||||
private String reqMethod;
|
||||
|
||||
/** 请求地址 */
|
||||
private String reqUrl;
|
||||
|
||||
/** 请求参数 */
|
||||
private String paramJson;
|
||||
|
||||
/** 返回结果 */
|
||||
private String resultJson;
|
||||
|
||||
/** 操作时间 */
|
||||
private Date opTime;
|
||||
|
||||
/** 操作人姓名 */
|
||||
private String opUser;
|
||||
|
||||
/** 签名数据 */
|
||||
private String signData;
|
||||
|
||||
/** 创建时间 */
|
||||
@TableField(fill = FieldFill.INSERT)
|
||||
private Date createTime;
|
||||
|
||||
/** 创建人 */
|
||||
@TableField(fill = FieldFill.INSERT)
|
||||
private String createUser;
|
||||
|
||||
/** 更新时间 */
|
||||
@TableField(fill = FieldFill.UPDATE)
|
||||
private Date updateTime;
|
||||
|
||||
/** 更新人 */
|
||||
@TableField(fill = FieldFill.UPDATE)
|
||||
private String updateUser;
|
||||
}
|
||||
@@ -55,6 +55,16 @@ public class Feedback implements Serializable {
|
||||
*/
|
||||
private Integer status;
|
||||
|
||||
/**
|
||||
* 反馈IP
|
||||
*/
|
||||
private String submitIp;
|
||||
|
||||
/**
|
||||
* 反馈地址
|
||||
*/
|
||||
private String submitRegion;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
|
||||
62
src/main/java/com/corewing/app/entity/FeedbackLog.java
Normal file
62
src/main/java/com/corewing/app/entity/FeedbackLog.java
Normal file
@@ -0,0 +1,62 @@
|
||||
package com.corewing.app.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 反馈日志
|
||||
*/
|
||||
@Data
|
||||
@TableName("app_feedback_log")
|
||||
public class FeedbackLog implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键id
|
||||
*/
|
||||
@TableId(value = "id", type = IdType.AUTO)
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 反馈用户id
|
||||
*/
|
||||
private Long userId;
|
||||
|
||||
/**
|
||||
* oss地址
|
||||
*/
|
||||
private String ossPath;
|
||||
|
||||
/**
|
||||
* 日志文件大小
|
||||
*/
|
||||
private Long logSize;
|
||||
|
||||
/**
|
||||
* 反馈日志内容
|
||||
*/
|
||||
private String logContent;
|
||||
|
||||
/**
|
||||
* 日志文件名称
|
||||
*/
|
||||
private String logName;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
@TableField(fill = FieldFill.INSERT)
|
||||
private LocalDateTime createTime;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
@TableField(fill = FieldFill.UPDATE)
|
||||
private LocalDateTime updateTime;
|
||||
|
||||
}
|
||||
@@ -45,6 +45,21 @@ public class Firmware implements Serializable {
|
||||
*/
|
||||
private Integer firmwareType;
|
||||
|
||||
/**
|
||||
* 模型id
|
||||
*/
|
||||
private String modelId;
|
||||
|
||||
/**
|
||||
* 版本校验id
|
||||
*/
|
||||
private Integer versionId;
|
||||
|
||||
/**
|
||||
* 版本号
|
||||
*/
|
||||
private String version;
|
||||
|
||||
/**
|
||||
* 固件下载地址
|
||||
*/
|
||||
|
||||
28
src/main/java/com/corewing/app/entity/FlightController.java
Normal file
28
src/main/java/com/corewing/app/entity/FlightController.java
Normal file
@@ -0,0 +1,28 @@
|
||||
package com.corewing.app.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
@Data
|
||||
@TableName("flight_controller")
|
||||
public class FlightController {
|
||||
|
||||
@TableId(type = IdType.AUTO)
|
||||
private Long id;
|
||||
|
||||
private String sn;
|
||||
|
||||
private String model;
|
||||
|
||||
private String batchNo;
|
||||
|
||||
private String status;
|
||||
|
||||
private LocalDateTime createTime;
|
||||
|
||||
private LocalDateTime updateTime;
|
||||
}
|
||||
@@ -70,6 +70,21 @@ public class ParamsCenter implements Serializable {
|
||||
*/
|
||||
private Integer downloadCount;
|
||||
|
||||
/**
|
||||
* 状态
|
||||
*/
|
||||
private String status;
|
||||
|
||||
/**
|
||||
* 审核状态
|
||||
*/
|
||||
private String auditStatus;
|
||||
|
||||
/**
|
||||
* 失败原因
|
||||
*/
|
||||
private String auditErrorMsg;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
@@ -79,6 +94,6 @@ public class ParamsCenter implements Serializable {
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
@TableField(fill = FieldFill.INSERT_UPDATE)
|
||||
@TableField(fill = FieldFill.UPDATE)
|
||||
private LocalDateTime updateTime;
|
||||
}
|
||||
|
||||
24
src/main/java/com/corewing/app/entity/QcPhoto.java
Normal file
24
src/main/java/com/corewing/app/entity/QcPhoto.java
Normal file
@@ -0,0 +1,24 @@
|
||||
package com.corewing.app.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
@Data
|
||||
@TableName("qc_photo")
|
||||
public class QcPhoto {
|
||||
|
||||
@TableId(type = IdType.AUTO)
|
||||
private Long id;
|
||||
|
||||
private Long testRecordId;
|
||||
|
||||
private String testNo;
|
||||
|
||||
private String url;
|
||||
|
||||
private LocalDateTime createTime;
|
||||
}
|
||||
30
src/main/java/com/corewing/app/entity/QcStepResult.java
Normal file
30
src/main/java/com/corewing/app/entity/QcStepResult.java
Normal file
@@ -0,0 +1,30 @@
|
||||
package com.corewing.app.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
@Data
|
||||
@TableName("qc_step_result")
|
||||
public class QcStepResult {
|
||||
|
||||
@TableId(type = IdType.AUTO)
|
||||
private Long id;
|
||||
|
||||
private Long testRecordId;
|
||||
|
||||
private Integer stepIndex;
|
||||
|
||||
private String stepName;
|
||||
|
||||
private String result;
|
||||
|
||||
private String dataJson;
|
||||
|
||||
private Long duration;
|
||||
|
||||
private LocalDateTime completedAt;
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user