| | |
| | | import com.genersoft.iot.vmp.storager.IVideoManagerStorager; |
| | | import com.github.pagehelper.util.StringUtil; |
| | | |
| | | import io.swagger.annotations.Api; |
| | | import io.swagger.annotations.ApiImplicitParam; |
| | | import io.swagger.annotations.ApiImplicitParams; |
| | | import io.swagger.annotations.ApiOperation; |
| | | import org.slf4j.Logger; |
| | | import org.slf4j.LoggerFactory; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | |
| | | import org.springframework.web.bind.annotation.RestController; |
| | | import org.springframework.web.context.request.async.DeferredResult; |
| | | |
| | | /** |
| | | * 位置信息管理 |
| | | */ |
| | | @Api(tags = "位置信息管理") |
| | | @CrossOrigin |
| | | @RestController |
| | | @RequestMapping("/api") |
| | | @RequestMapping("/api/position") |
| | | public class MobilePositionController { |
| | | |
| | | private final static Logger logger = LoggerFactory.getLogger(MobilePositionController.class); |
| | |
| | | |
| | | @Autowired |
| | | private DeferredResultHolder resultHolder; |
| | | |
| | | @GetMapping("/positions/{deviceId}/history") |
| | | |
| | | /** |
| | | * 查询历史轨迹 |
| | | * @param deviceId 设备ID |
| | | * @param start 开始时间 |
| | | * @param end 结束时间 |
| | | * @return |
| | | */ |
| | | @ApiOperation("查询历史轨迹") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(name = "deviceId", value = "设备ID", required = true), |
| | | @ApiImplicitParam(name = "start", value = "开始时间", required = true), |
| | | @ApiImplicitParam(name = "end", value = "结束时间", required = true), |
| | | }) |
| | | @GetMapping("/history/{deviceId}") |
| | | public ResponseEntity<List<MobilePosition>> positions(@PathVariable String deviceId, |
| | | @RequestParam(required = false) String start, |
| | | @RequestParam(required = false) String end) { |
| | |
| | | return new ResponseEntity<>(result, HttpStatus.OK); |
| | | } |
| | | |
| | | @GetMapping("/positions/{deviceId}/latest") |
| | | /** |
| | | * 查询设备最新位置 |
| | | * @param deviceId 设备ID |
| | | * @return |
| | | */ |
| | | @ApiOperation("查询设备最新位置") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(name = "deviceId", value = "设备ID", required = true), |
| | | }) |
| | | @GetMapping("/latest/{deviceId}") |
| | | public ResponseEntity<MobilePosition> latestPosition(@PathVariable String deviceId) { |
| | | if (logger.isDebugEnabled()) { |
| | | logger.debug("查询设备" + deviceId + "的最新位置"); |
| | |
| | | return new ResponseEntity<>(result, HttpStatus.OK); |
| | | } |
| | | |
| | | @GetMapping("/positions/{deviceId}/realtime") |
| | | /** |
| | | * 获取移动位置信息 |
| | | * @param deviceId 设备ID |
| | | * @return |
| | | */ |
| | | @ApiOperation("获取移动位置信息") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(name = "deviceId", value = "设备ID", required = true), |
| | | }) |
| | | @GetMapping("/realtime/{deviceId}") |
| | | public DeferredResult<ResponseEntity<MobilePosition>> realTimePosition(@PathVariable String deviceId) { |
| | | Device device = storager.queryVideoDevice(deviceId); |
| | | cmder.mobilePostitionQuery(device, event -> { |
| | |
| | | return result; |
| | | } |
| | | |
| | | @GetMapping("/positions/{deviceId}/subscribe") |
| | | /** |
| | | * 订阅位置信息 |
| | | * @param deviceId 设备ID |
| | | * @param expires 订阅超时时间 |
| | | * @param interval 上报时间间隔 |
| | | * @return true = 命令发送成功 |
| | | */ |
| | | @ApiOperation("订阅位置信息") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(name = "deviceId", value = "设备ID", required = true), |
| | | @ApiImplicitParam(name = "expires", value = "订阅超时时间"), |
| | | @ApiImplicitParam(name = "interval", value = "上报时间间隔"), |
| | | }) |
| | | @GetMapping("/subscribe/{deviceId}") |
| | | public ResponseEntity<String> positionSubscribe(@PathVariable String deviceId, |
| | | @RequestParam String expires, |
| | | @RequestParam String interval) { |
| | |
| | | * @return |
| | | */ |
| | | @ApiOperation("保存国标关联") |
| | | // @ApiImplicitParams({ |
| | | // @ApiImplicitParam(name = "app", value = "视频流应用名", required = true ), |
| | | // @ApiImplicitParam(name = "gbId", value = "国标ID", required = true ), |
| | | // }) |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(name = "gbStreamParam", value = "GbStreamParam", required = true ), |
| | | }) |
| | | @PostMapping(value = "/add") |
| | | @ResponseBody |
| | | public Object add(@RequestBody GbStreamParam gbStreamParam){ |
| | | System.out.println(3333); |
| | | System.out.println(gbStreamParam.getGbStreams().size()); |
| | | if (gbStreamService.addPlatformInfo(gbStreamParam.getGbStreams(), gbStreamParam.getPlatformId())) { |
| | | return "success"; |
| | | }else { |
| | |
| | | import com.genersoft.iot.vmp.service.IMediaService; |
| | | import com.genersoft.iot.vmp.service.IStreamProxyService; |
| | | import com.genersoft.iot.vmp.storager.IVideoManagerStorager; |
| | | import io.swagger.annotations.Api; |
| | | import io.swagger.annotations.ApiImplicitParam; |
| | | import io.swagger.annotations.ApiImplicitParams; |
| | | import io.swagger.annotations.ApiOperation; |
| | | import org.slf4j.Logger; |
| | | import org.slf4j.LoggerFactory; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | |
| | | @Api(tags = "媒体流相关") |
| | | @Controller |
| | | @CrossOrigin |
| | | @RequestMapping(value = "/api/media") |
| | |
| | | private IMediaService mediaService; |
| | | |
| | | |
| | | |
| | | |
| | | /** |
| | | * 根据应用名和流id获取播放地址 |
| | | * @param app 应用名 |
| | | * @param stream 流id |
| | | * @return |
| | | */ |
| | | @ApiOperation("根据应用名和流id获取播放地址") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(name = "app", value = "应用名"), |
| | | @ApiImplicitParam(name = "stream", value = "流id"), |
| | | }) |
| | | @RequestMapping(value = "/getStreamInfoByAppAndStream") |
| | | @ResponseBody |
| | | public StreamInfo getStreamInfoByAppAndStream(String app, String stream){ |
| | |
| | | import com.genersoft.iot.vmp.vmanager.platform.bean.ChannelReduce; |
| | | import com.genersoft.iot.vmp.vmanager.platform.bean.UpdateChannelParam; |
| | | import com.github.pagehelper.PageInfo; |
| | | import io.swagger.annotations.Api; |
| | | import org.slf4j.Logger; |
| | | import org.slf4j.LoggerFactory; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | |
| | | import org.springframework.web.bind.annotation.*; |
| | | import com.genersoft.iot.vmp.conf.SipConfig; |
| | | |
| | | /** |
| | | * 级联平台管理 |
| | | */ |
| | | @Api("级联平台管理") |
| | | @CrossOrigin |
| | | @RestController |
| | | @RequestMapping("/api") |
| | | @RequestMapping("/api/platform") |
| | | public class PlatformController { |
| | | |
| | | private final static Logger logger = LoggerFactory.getLogger(PlatformController.class); |
| | |
| | | @Autowired |
| | | private SipConfig sipConfig; |
| | | |
| | | @GetMapping("/platforms/serverconfig") |
| | | @GetMapping("/server_config") |
| | | public ResponseEntity<JSONObject> serverConfig() { |
| | | JSONObject result = new JSONObject(); |
| | | result.put("deviceIp", sipConfig.getSipIp()); |
| | |
| | | return new ResponseEntity<>(result, HttpStatus.OK); |
| | | } |
| | | |
| | | @GetMapping("/platforms/{count}/{page}") |
| | | @GetMapping("/query/{count}/{page}") |
| | | public PageInfo<ParentPlatform> platforms(@PathVariable int page, @PathVariable int count){ |
| | | |
| | | if (logger.isDebugEnabled()) { |
| | |
| | | return storager.queryParentPlatformList(page, count); |
| | | } |
| | | |
| | | @RequestMapping("/platforms/save") |
| | | @PostMapping("/save") |
| | | @ResponseBody |
| | | public ResponseEntity<String> savePlatform(@RequestBody ParentPlatform parentPlatform){ |
| | | |
| | |
| | | } |
| | | } |
| | | |
| | | @RequestMapping("/platforms/delete") |
| | | @DeleteMapping("/delete/{serverGBId}") |
| | | @ResponseBody |
| | | public ResponseEntity<String> deletePlatform(@RequestBody ParentPlatform parentPlatform){ |
| | | public ResponseEntity<String> deletePlatform(@PathVariable String serverGBId){ |
| | | |
| | | if (logger.isDebugEnabled()) { |
| | | logger.debug("删除上级平台API调用"); |
| | | } |
| | | if (StringUtils.isEmpty(parentPlatform.getServerGBId()) |
| | | if (StringUtils.isEmpty(serverGBId) |
| | | ){ |
| | | return new ResponseEntity<>("missing parameters", HttpStatus.BAD_REQUEST); |
| | | } |
| | | |
| | | ParentPlatform parentPlatform = storager.queryParentPlatById(serverGBId); |
| | | if (parentPlatform == null) return new ResponseEntity<>("fail", HttpStatus.OK); |
| | | // 发送离线消息,无论是否成功都删除缓存 |
| | | commanderForPlatform.unregister(parentPlatform, (event -> { |
| | | // 清空redis缓存 |
| | |
| | | } |
| | | } |
| | | |
| | | @RequestMapping("/platforms/exit/{deviceGbId}") |
| | | @GetMapping("/exit/{deviceGbId}") |
| | | @ResponseBody |
| | | public ResponseEntity<String> exitPlatform(@PathVariable String deviceGbId){ |
| | | |
| | |
| | | return new ResponseEntity<>(String.valueOf(parentPlatform != null), HttpStatus.OK); |
| | | } |
| | | |
| | | @RequestMapping("/platforms/channelList") |
| | | @GetMapping("/channel_list") |
| | | @ResponseBody |
| | | public PageInfo<ChannelReduce> channelList(int page, int count, |
| | | @RequestParam(required = false) String platformId, |
| | |
| | | } |
| | | |
| | | |
| | | @RequestMapping("/platforms/updateChannelForGB") |
| | | @PostMapping("/update_channel_for_gb") |
| | | @ResponseBody |
| | | public ResponseEntity<String> updateChannelForGB(@RequestBody UpdateChannelParam param){ |
| | | |
| | |
| | | return new ResponseEntity<>(String.valueOf(result > 0), HttpStatus.OK); |
| | | } |
| | | |
| | | @RequestMapping("/platforms/delChannelForGB") |
| | | @DeleteMapping("/del_channel_for_gb") |
| | | @ResponseBody |
| | | public ResponseEntity<String> delChannelForGB(@RequestBody UpdateChannelParam param){ |
| | | |
| | |
| | | }, |
| | | deletePlatformCommit: function(platform) { |
| | | var that = this; |
| | | that.$axios.post(`/api/platforms/delete`, platform) |
| | | that.$axios.delete(`/api/platform/delete/${platform.serverGBId}`) |
| | | .then(function (res) { |
| | | if (res.data == "success") { |
| | | that.$message({ |
| | |
| | | getPlatformList: function() { |
| | | let that = this; |
| | | |
| | | this.$axios.get(`/api/platforms/${that.count}/${that.currentPage}`) |
| | | this.$axios.get(`/api/platform/query/${that.count}/${that.currentPage}`) |
| | | .then(function (res) { |
| | | that.total = res.data.total; |
| | | that.platformList = res.data.list; |
| | |
| | | this.endTime = null; |
| | | } |
| | | let self = this; |
| | | this.$axios.get(`/api/positions/${this.deviceId}/history`, { |
| | | this.$axios.get(`/api/position/history/${this.deviceId}`, { |
| | | params: { |
| | | start: self.startTime, |
| | | end: self.endTime, |
| | |
| | | this.mapPointList = []; |
| | | this.mobilePositionList = []; |
| | | let self = this; |
| | | this.$axios.get(`/api/positions/${this.deviceId}/latest`) |
| | | this.$axios.get(`/api/position/latest/${this.deviceId}`) |
| | | .then(function (res) { |
| | | console.log(res.data); |
| | | self.total = res.data.length; |
| | |
| | | }, |
| | | subscribeMobilePosition: function() { |
| | | let self = this; |
| | | this.$axios.get(`/api/positions/${this.deviceId}/subscribe`, { |
| | | this.$axios.get(`/api/position/subscribe/${this.deviceId}`, { |
| | | params: { |
| | | expires: self.expired, |
| | | interval: self.interval, |
| | |
| | | }, |
| | | unSubscribeMobilePosition: function() { |
| | | let self = this; |
| | | this.$axios.get(`/api/positions/${this.deviceId}/subscribe`, { |
| | | this.$axios.get(`/api/position/subscribe/${this.deviceId}`, { |
| | | params: { |
| | | expires: 0, |
| | | interval: self.interval, |
| | |
| | | var result = false; |
| | | var that = this; |
| | | await that.$axios |
| | | .post(`/api/platforms/exit/${deviceGbId}`) |
| | | .post(`/api/platform/exit/${deviceGbId}`) |
| | | .then(function (res) { |
| | | result = res.data; |
| | | }) |
| | |
| | | var result = false; |
| | | var that = this; |
| | | await that.$axios |
| | | .post(`/api/platforms/exit/${deviceGbId}`) |
| | | .post(`/api/platform/exit/${deviceGbId}`) |
| | | .then(function (res) { |
| | | result = res.data; |
| | | }) |
| | |
| | | |
| | | this.$axios({ |
| | | method:"post", |
| | | url:"/api/platforms/updateChannelForGB", |
| | | url:"/api/platform/update_channel_for_gb", |
| | | data:{ |
| | | platformId: that.platformId, |
| | | channelReduces: that.chooseData |
| | |
| | | if (Object.keys(addData).length >0) { |
| | | that.$axios({ |
| | | method:"post", |
| | | url:"/api/platforms/updateChannelForGB", |
| | | url:"/api/platform/update_channel_for_gb", |
| | | data:{ |
| | | platformId: that.platformId, |
| | | channelReduces: addData |
| | |
| | | } |
| | | if (Object.keys(delData).length >0) { |
| | | that.$axios({ |
| | | method:"post", |
| | | url:"/api/platforms/delChannelForGB", |
| | | method:"delete", |
| | | url:"/api/platform/del_channel_for_gb", |
| | | data:{ |
| | | platformId: that.platformId, |
| | | channelReduces: delData |
| | |
| | | getChannelList: function () { |
| | | let that = this; |
| | | |
| | | this.$axios.get(`/api/platforms/channelList`, { |
| | | this.$axios.get(`/api/platform/channel_list`, { |
| | | params: { |
| | | page: that.currentPage, |
| | | count: that.count, |
| | |
| | | if (Object.keys(delData).length >0) { |
| | | console.log(delData) |
| | | that.$axios({ |
| | | method:"post", |
| | | method:"delete", |
| | | url:"/api/gbStream/del", |
| | | data:{ |
| | | gbStreams: delData, |
| | |
| | | }).catch(function (error) { |
| | | console.log(error); |
| | | }); |
| | | |
| | | } |
| | | |
| | | }, |
| | |
| | | openDialog: function (platform, callback) { |
| | | var that = this; |
| | | this.$axios |
| | | .get(`/api/platforms/serverconfig`) |
| | | .get(`/api/platform/server_config`) |
| | | .then(function (res) { |
| | | console.log(res); |
| | | that.platform.deviceGBId = res.data.username; |
| | |
| | | console.log("onSubmit"); |
| | | var that = this; |
| | | that.$axios |
| | | .post(`/api/platforms/save`, that.platform) |
| | | .post(`/api/platform/save`, that.platform) |
| | | .then(function (res) { |
| | | console.log(res); |
| | | console.log(res.data == "success"); |
| | |
| | | var result = false; |
| | | var that = this; |
| | | await that.$axios |
| | | .post(`/api/platforms/exit/${deviceGbId}`) |
| | | .post(`/api/platform/exit/${deviceGbId}`) |
| | | .then(function (res) { |
| | | result = res.data; |
| | | }) |