# 微信模块调用远程视频模块集成说明 ## 概述 本文档说明如何在 `pipIrr-web-wechat` 模块中调用 `pipIrr-web-remote` 模块的 `video/some` 接口,实现微信端视频监控功能。 ## 架构说明 - **pipIrr-web-wechat**: 微信小程序服务(端口:/wx) - **pipIrr-web-remote**: 远程控制服务(端口:/remote) 两个服务通过HTTP接口进行通信,微信模块作为客户端调用远程控制模块的视频监控REST API。 ## 配置说明 ### 1. 配置文件 在 `application-self.yml` 中添加远程服务配置: ```yaml remote: service: base-url: ${pipIrr.remote.baseUrl:http://localhost:8081/remote} ``` ### 2. 环境变量配置 根据部署环境设置相应的环境变量: ```properties # 开发环境 pipIrr.remote.baseUrl=http://localhost:8081/remote # 生产环境 pipIrr.remote.baseUrl=http://remote-service-host:8081/remote ``` ## 接口说明 ### 获取视频监控数据 **接口地址**: `GET /wx/remote/video/some` **请求参数**: - pageCurr: 当前页码(默认1) - pageSize: 每页大小(可选) **响应示例**: ```json { "success": true, "msg": "查询成功", "content": { "obj": [ { "id": 123456, "name": "摄像机1", "videoUrl4Simple": "rtmp://...", "videoUrl4Standard": "rtmp://...", "videoUrl4Security": "rtmp://...", "videoUrl4PcLive": "http://..." } ], "pageCurr": 1, "pageSize": 4, "itemTotal": 10 } } ``` ## 使用示例 ### Java代码示例 ```java @RestController @RequestMapping("wechat/video") public class WechatVideoController { @Autowired private RemoteService remoteService; @GetMapping("cameras") public BaseResponse getCameras( @RequestParam(defaultValue = "1") Integer pageCurr, @RequestParam(required = false) Integer pageSize) { // 构建查询参数 StringBuilder queryParams = new StringBuilder(); queryParams.append("pageCurr=").append(pageCurr); if (pageSize != null) { queryParams.append("&pageSize=").append(pageSize); } // 调用远程视频接口 return remoteService.getVideoSome(queryParams.toString()); } } ``` ### 前端调用示例 ```javascript // 微信小程序调用示例 wx.request({ url: 'https://your-domain.com/wx/remote/video/some?pageCurr=1&pageSize=10', method: 'GET', success: function(res) { if (res.data.success) { const cameras = res.data.content.obj; // 处理摄像机数据 cameras.forEach(camera => { console.log('摄像机:', camera.name); console.log('直播地址:', camera.videoUrl4PcLive); }); } else { wx.showToast({ title: res.data.msg, icon: 'error' }); } } }); ``` ## 错误处理 ### 常见错误码 - `HTTP 404`: 远程服务接口不存在 - `HTTP 500`: 远程服务内部错误 - `HTTP 503`: 远程服务不可用 - `Connection Timeout`: 连接超时 - `Read Timeout`: 读取超时 ### 错误处理策略 1. **连接失败重试**: OkHttpClient配置了连接失败自动重试 2. **超时处理**: 配置合理的连接、读取、写入超时时间 3. **异常日志**: 详细记录调用异常信息,便于问题排查 4. **降级处理**: 在远程服务不可用时,可以考虑本地缓存或降级方案 ## 监控和日志 ### 日志配置 ```yaml logging: level: com.dy.pipIrrWechat.remote: DEBUG ``` ### 关键日志 - 远程接口调用记录 - 请求和响应内容(调试模式) - 异常详细信息 - 性能监控(响应时间) ## 部署注意事项 1. **网络连通性**: 确保微信服务能够访问远程控制服务 2. **端口配置**: 检查防火墙和安全组设置 3. **负载均衡**: 如果远程服务有多个实例,配置负载均衡 4. **健康检查**: 定期检查远程服务可用性 ## 扩展功能 ### 1. 添加新的远程接口 1. 在 `RemoteService` 中添加新的方法 2. 在 `RemoteCtrl` 中添加对应的控制器方法 3. 更新文档和测试用例 ### 2. 增加缓存机制 可以考虑对查询类接口添加缓存,提高响应速度: ```java @Cacheable(value = "controllerAlarmState", key = "#queryParams") public BaseResponse getControllerAlarmState(String queryParams) { // 实现代码 } ``` ### 3. 异步调用 对于不需要立即返回结果的操作,可以考虑异步调用: ```java @Async public CompletableFuture> openValveAsync(String requestBody) { return CompletableFuture.completedFuture(callRemoteApi("/valve/open", requestBody, "POST")); } ``` ## 总结 通过以上配置和代码,微信模块可以成功调用远程控制模块的 `video/some` 接口,实现视频监控数据的获取功能。这种架构设计保持了模块间的解耦,同时提供了简洁高效的视频数据访问能力。