Demo 工程
Demo 工程
ImageDecrpt 压缩包中的 Open-PicDecode 为可运行的 Spring Boot 示例,展示如何在平台侧解密告警图。你可以原样部署,或将其中的解密与 OpenAPI 模块迁入已有 Java 后台。
目录结构(主要部分)
Open-PicDecode/
└─ Open-PicDecode/
├─ pom.xml # Spring Boot 2.7.18,打包名 openpicdecode
├─ start.sh / stop.sh # Linux 启停
└─ src/main/java/com/imou/open/
├─ OpenPicApplication.java
└─ openpicdecode/
├─ controller/PicDecodeController.java # POST /decodePic
├─ service/
│ ├─ PicDecodeService.java
│ ├─ DeviceAbilityService.java # TCM 能力判断
│ └─ impl/PicDecodeServiceImpl.java
├─ client/LechangeOpenApiClient.java # listDeviceDetailsByIds
├─ lcopensdk/ # JNA 封装与 LechangeEncryptUtil
└─ bean/request|response/ # PicDecodeRequest / PicDecodeResponse
资源包内另含 指导文档(docx/pdf,以实际下载为准),与本文档互补;OpenBook 正文以 Demo 源码行为 为准。
技术栈
| 依赖 | 用途 |
|---|---|
| spring-boot-starter-web | REST 接口 |
| spring-boot-starter-validation | @Valid / @NotBlank |
| log4j2 | 日志(排除默认 logback) |
| JNA 5.x | 加载乐橙图片解密原生库 |
| Apache HttpClient | OpenAPI 与图片下载 |
| fastjson | OpenAPI 响应解析 |
原生库与平台相关文件位于 src/main/resources/(含 linux-x86-64、证书等),打包进 jar,部署 OS/架构需与库匹配。
本地运行
- 配置 安装与部署 中的
application.properties。 mvn spring-boot:run或java -jar target/openpicdecode.jar。- 使用真实告警消息中的
imgUrl、deviceId、设备密钥及有效token调用 API 参考 中的/decodePic。
单元测试位于 src/test/java(如 PicDecodeServiceImplTest、DeviceAbilityServiceTest),可在 CI 中对 TCM 解析等逻辑做回归;完整解密依赖原生库与环境,通常需在 Linux 集成环境验证。
与业务系统对接的典型步骤
- 消息订阅:通过开放平台消息推送或轮询接口拿到告警记录,其中包含加密图片 URL(及 deviceId)。
- 取 Token:使用与你业务一致的云云对接流程,取得设备所属用户的 accessToken(或子账号 token,以接口要求为准)。
- 调用解密:将 URL、deviceId、secretKey、token POST 到解密服务;对
data.decodePicBase64 解码得到图片文件。 - 存储与展示:写入自有 OSS/DB,或生成临时链接给运营后台;勿 将
secretKey或 sk 下发到不可信客户端。
若仅需在 App 内展示缩略图,应优先使用 OpenSDK decryptPic,无需部署本 Demo。
二次开发提示
- 修改端口 / 上下文路径:Spring Boot 标准配置;注意网关路由。
- 替换 OpenAPI 客户端:若已有统一 OpenAPI SDK,可保留
PicDecodeServiceImpl与LechangeEncryptUtil,仅替换DeviceAbilityService的数据来源。 - 错误处理:全局见
GlobalExceptionHandler;业务异常BusinessException的errorCode会原样返回给调用方。
更多问题见 错误码与排障。