通过完成前面对接熊迈 SDK 工作记录之集成准备和对接熊迈 SDK 工作记录之实时视频和云录像功能集成, 那么接下来就是对接 IPTV 管理后台, 实现监控设备和 IPTV 机顶盒统一管理.
再小的项目也不能少了开发文档, 那么开发文档最不能少的当然是数据库设计和通讯协议. 那么简单的项目我一般都会留如以下文档, 方便自己对项目的更新动向有长久的记忆, 对进行二次开发的同事也少一点口角之争.
TVEye 开发文档
说明:
实现电视端多屏监控效果, 可使用遥控器上下键进行切换显示摄像头;
实现电视端云录像播放;
实现与 IPTV 后台统一管理, 对监控进行区域分类管理(VIP 表), 设备管理等;
实现监控用户和 IPTV 用户统一认证, 监控功能无需再次认证;
更新说明:
操作员 时间 内容 备注
吴明辉 20181128 初始版本
数据库设计
表名: my_table
属性 类型 是否为空 备注
id int 主键
name varchar 名字
,,, ,,,
通讯协议
概述
本协议机顶盒与服务器的通讯协议, 通讯过程中需要严格按照协议内容进行通信, 通讯是按照 JSON 字符串进行传输, 并严格注意大小写, 大小写敏感, 文档中, 红色的字需要特别注意.
规范
通讯路径: http://127.0.0.1:880/webapp/mydata?typestr= 命令字
(本路径是测试路径, 正式路径需要部署后生成)
通讯方式: POST
通讯内容: JSON 字符串
区域分类列表(vip)
[功能描述]
请求 vip 分类列表, 如对各个村子, 小区进行分类, 用于第一次用户登录时区域选择.
[命 令 字]
viptype
[提交数据]
空
[返回数据]
- {
- "code": "返回码 0 成功 1 失败",
- "msg": "消息内容",
- "nfo": [
- {
- "Id": "vip 分类 区域",
- "Name": "vip 名称 区域名"
- },{
- "Id": "vip 分类 区域",
- "Name": "vip 名称 区域名"
- }
- ]
- }
修改用户区域
[功能描述]
第一次登录时根据用户信息进行设置用户区域, 如果用户不填写, 可由后台管理员进行设置, 也可作为后期用户更换地址时更改区域设备.
[命 令 字]
updatedevinfo
[提交数据]
- {
- "userName": "用户名(必填项)",
- "userAddr": "用户详细地址和电话(必填项)",
- "vipId": "vip 分类 区域(必填项)",
- "vipName": "vip 名称 区域名"
- }
[返回数据]
- {
- "code": "返回码 0 成功 1 失败",
- "msg": "消息内容"
- }
请求设备列表
[功能描述]
请求设备列表.
[命 令 字]
info
[提交数据]
- {
- "mac": "机器唯一编码(必填项)"
- }
[返回数据]
- {
- "code": "返回码 0 成功 1 失败",
- "msg": "消息内容",
- "Info": [
- {
- "Name": "设备名称",
- "Sn": "设备序列号",
- "Name": "设备登录名称",
- "Psw": "设备登录密码",
- "Port": "端口号",
- "Ip": "设备 ip"
- },{
- "Name": "设备名称",
- "Sn": "设备序列号",
- "Name": "设备登录名称",
- "Psw": "设备登录密码",
- "Port": "端口号",
- "Ip": "设备 ip"
- }
- ]
- }
SSH(struts+spring+hibernate)框架 搭建后台
习惯性的 MVC 模式, 首先构建 Model 和 View 最后通过 Controller 来进行控制, 简单说 Model 就是与数据库对应的对象, View 就是 (视图) 显示数据 (数据库记录),Controller(控制器) 处理输入(写入数据库记录).
实现起来也就是一个界面罢了, 如下图
image
那么最后再来处理一下数据接口 (开发文档中的通讯协议模块), 实际上这个模块应该属于 Controller 的范畴了, 只不过目的性有点不一样, 这个是根据客户端(apk) 的需求来处理数据和响应 apk 的请求操作罢了, 看下面方法.
- @RequestMapping(value = "data", method = RequestMethod.POST)
- @ResponseBody
- @SuppressWarnings({ "unchecked", "unused", "null" })
- public Map<String, Object> getData(String typestr, HttpServletRequest req, HttpServletResponse rsp) throws Exception {
- // 在这里处理 DataAction
- }
没错就是用 map,HashMap 来处理的, 这里就不多说了, 处理完把 map 数据 return 回去就好了.
来源: http://www.jianshu.com/p/a6dcf6fba9fb