package com.ld.igds.three.controller; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.serializer.SerializerFeature; import com.ld.igds.camera.CameraUtil; import com.ld.igds.common.CoreThreeService; import com.ld.igds.data.ConfigHikMedia; import com.ld.igds.models.ThreeConf; import com.ld.igds.sec.dto.SecCameraDto; import com.ld.igds.sec.manager.SecManager; import com.ld.igds.three.ThreeCodeEnum; import com.ld.igds.three.data.ThreeResponse; import com.ld.igds.three.manager.ThreeManager; import com.ld.igds.three.param.ThreeRequest; import com.ld.igds.three.util.ThreeRespUtil; import com.ld.igds.util.ContextUtil; import com.ld.igds.util.FilesUtil; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import org.springframework.web.servlet.ModelAndView; /** * 三维接口3.0入口 * * @author chen */ @Slf4j @RestController @RequestMapping("api-3d/v3") public class ThreeController { @Autowired private CoreThreeService commonService; @Autowired private SecManager securityManager; @Autowired private ConfigHikMedia configHikMedia; @Autowired private ThreeManager threeManager; /** * 业务入口 * @param request * @return */ @ResponseBody @RequestMapping("/gateway") public Object gateway(@RequestBody ThreeRequest request) { //判断参数 if (null == request) { return ThreeRespUtil.error(ThreeCodeEnum.CODE_1005); } //判断接口编码、组织编码、分库编码、签名 if (null == request.getInterfaceId() || null == request.getCompanyId() || null == request.getDeptId()) { return ThreeRespUtil.error(ThreeCodeEnum.CODE_1005, request); } ThreeResponse result; try { //执行业务操作 result = threeManager.execute(request); } catch (Exception e) { result = ThreeRespUtil.error(ThreeCodeEnum.CODE_1111, "后端异常:" + e.getMessage(), request); } return JSON.parseObject(JSON.toJSONString(result, SerializerFeature.QuoteFieldNames, SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullNumberAsZero, SerializerFeature.WriteNullListAsEmpty, SerializerFeature.WriteNullStringAsEmpty, SerializerFeature.WriteNullBooleanAsFalse)); } /** * 鸟瞰图页面 -- 视频播放,通过播放参数不同跳转不同页面播放 * * @param id 摄像机three ID * @return */ @RequestMapping("/video-play") public ModelAndView play( @RequestParam(value = "id", required = true) String id) { ModelAndView view = new ModelAndView(); //查询单个仓库 ThreeConf threeConf = commonService.getCacheThreeConfById(ContextUtil.getDefaultCompanyId(),id); if(threeConf == null || StringUtils.isEmpty(threeConf.getCameraId())){ view.addObject("errorMsg", "没获取到关联配置,请先刷新缓存!"); view.setViewName("admin/afgl/video-error"); return view; } // 设置logo String logName = FilesUtil.getLogoByCompanyId(ContextUtil.getDefaultCompanyId()); view.addObject("logo", "../../static/img/" + logName); SecCameraDto param = new SecCameraDto(); param.setId(threeConf.getCameraId()); param.setCompanyId(threeConf.getCompanyId()); SecCameraDto camera = securityManager.getPlayAddr(param); if (camera == null) { view.addObject("errorMsg", "获取视频设备出错,请先刷新缓存!"); view.setViewName("admin/afgl/video-error"); return view; } String playType = camera.getPlayType(); if (StringUtils.isEmpty(playType)) { view.addObject("errorMsg", "摄像头暂未配置播放方式,请核查!"); view.setViewName("admin/afgl/video-error"); return view; } if (StringUtils.isEmpty(camera.getPlayAddr())) { view.addObject("errorMsg", "获取视频流失败,请重试!"); view.setViewName("admin/afgl/video-error"); } log.info("-----获取播放地址-----{}--{}", camera.getName(), camera.getPlayAddr()); //vlc播放页面 if (CameraUtil.PLAY_TYPE_VLC.equals(playType)) { view.setViewName("admin/afgl/video-vlc"); } //流媒体播放页面 if (CameraUtil.PLAY_TYPE_FZZY_GB.equals(playType) || CameraUtil.PLAY_TYPE_EASY_GBS.equals(playType)) { view.setViewName("admin/afgl/video-media"); } if (CameraUtil.PLAY_TYPE_MEDIA_HIK.equals(playType)) { view.setViewName("admin/afgl/video-hikmedia"); view.addObject("hikMediaProp", configHikMedia.getHikProp(ContextUtil.getCompanyId())); } //海康WEB插件播放页面 if (CameraUtil.PLAY_TYPE_HIK_WEB4.equals(playType)) { view.setViewName("admin/afgl/video-hikweb4"); } // 设置摄像头信息 view.addObject("cameraData", camera); return view; } }