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<JSONObject> 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<Object> 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;
|
}
|
}
|