package com.javaweb.geo.controller; import java.util.HashMap; import java.util.List; import java.util.Map; import cn.hutool.http.HttpRequest; import cn.hutool.http.HttpResponse; import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import com.javaweb.common.annotation.Log; import com.javaweb.common.enums.BusinessType; import com.javaweb.geo.domain.ProjectCamera; import com.javaweb.geo.service.IProjectCameraService; import com.javaweb.common.core.controller.BaseController; import com.javaweb.common.core.domain.AjaxResult; import com.javaweb.common.utils.poi.ExcelUtil; import com.javaweb.common.core.page.TableDataInfo; /** * 监控设备Controller * * @author cxy * @date 2024-05-16 */ @Controller @RequestMapping("/geo/projectCamera") public class ProjectCameraController extends BaseController { private String prefix = "geo/projectCamera"; private String appkey = "af786eacc71d43ef9393c028cf4face7"; private String secret = "9ad87671f63d2258af6fd9b2e5fa6005"; private String postUrl ="https://open.ys7.com/api/lapp/token/get"; @Autowired private IProjectCameraService projectCameraService; @RequiresPermissions("geo:projectCamera:view") @GetMapping() public String projectCamera(String id, ModelMap mmap) { mmap.put("projectId", id); return prefix + "/projectCamera"; } @RequiresPermissions("geo:projectCamera:view2") @GetMapping("/view2") public String projectCamera2() { return prefix + "/projectCamera2"; } /** * 查询监控设备列表 */ @RequiresPermissions("geo:projectCamera:list") @PostMapping("/list") @ResponseBody public TableDataInfo list(ProjectCamera projectCamera) { startPage(); List list = projectCameraService.selectProjectCameraList(projectCamera); return getDataTable(list); } @GetMapping("/cameralist") @ResponseBody public AjaxResult cameralist(ProjectCamera projectCamera) { List list = projectCameraService.selectProjectCameraList(projectCamera); return AjaxResult.success(list); } @GetMapping("/cameraPlayerUrl") @ResponseBody public AjaxResult cameraPlayerUrl(String id ) { ProjectCamera projectCamera = projectCameraService.selectProjectCameraById(id); String url = projectCamera.getIp(); Map paramMap = new HashMap<>(); paramMap.put("appKey", appkey); paramMap.put("appSecret", secret); HttpResponse response = HttpRequest.post(postUrl) .form(paramMap) // 表单参数 .execute(); String body = response.body(); JSONObject jsonObject = JSONUtil.parseObj(body); String code = jsonObject.getStr("code"); StringBuffer buffer = new StringBuffer(); if(code.equals("200")){ JSONObject data = (JSONObject) jsonObject.get("data"); String token = data.getStr("accessToken"); buffer.append("https://open.ys7.com/console/jssdk/pc.html?accessToken="); buffer.append(token); buffer.append("&url="); buffer.append(url); } logger.debug(buffer.toString()); AjaxResult ajaxResult = AjaxResult.success(); ajaxResult.put("url",buffer.toString()); return ajaxResult; } /** * 导出监控设备列表 */ @RequiresPermissions("geo:projectCamera:export") @Log(title = "监控设备", businessType = BusinessType.EXPORT) @PostMapping("/export") @ResponseBody public AjaxResult export(ProjectCamera projectCamera) { List list = projectCameraService.selectProjectCameraList(projectCamera); ExcelUtil util = new ExcelUtil(ProjectCamera.class); return util.exportExcel(list, "projectCamera"); } /** * 新增监控设备 */ @GetMapping("/add") public String add(String projectId, ModelMap mmap) { mmap.put("projectId", projectId); return prefix + "/add"; } /** * 新增保存监控设备 */ @RequiresPermissions("geo:projectCamera:add") @Log(title = "监控设备", businessType = BusinessType.INSERT) @PostMapping("/add") @ResponseBody public AjaxResult addSave(ProjectCamera projectCamera) { return toAjax(projectCameraService.insertProjectCamera(projectCamera)); } /** * 修改监控设备 */ @GetMapping("/edit/{id}") public String edit(@PathVariable("id") String id, ModelMap mmap) { ProjectCamera projectCamera = projectCameraService.selectProjectCameraById(id); mmap.put("projectCamera", projectCamera); return prefix + "/edit"; } /** * 播放视频 */ @GetMapping("/player") public String player( String id, ModelMap mmap) { ProjectCamera projectCamera = projectCameraService.selectProjectCameraById(id); String url = projectCamera.getIp(); Map paramMap = new HashMap<>(); paramMap.put("appKey", appkey); paramMap.put("appSecret", secret); HttpResponse response = HttpRequest.post(postUrl) .form(paramMap) // 表单参数 .execute(); String body = response.body(); JSONObject jsonObject = JSONUtil.parseObj(body); String code = jsonObject.getStr("code"); StringBuffer buffer = new StringBuffer(); if(code.equals("200")){ JSONObject data = (JSONObject) jsonObject.get("data"); String token = data.getStr("accessToken"); buffer.append("https://open.ys7.com/console/jssdk/pc.html?accessToken="); buffer.append(token); buffer.append("&url="); buffer.append(url); } logger.debug(buffer.toString()); mmap.put("id", id); mmap.put("playerUrl", buffer.toString()); return prefix + "/player"; } /** * 修改保存监控设备 */ @RequiresPermissions("geo:projectCamera:edit") @Log(title = "监控设备", businessType = BusinessType.UPDATE) @PostMapping("/edit") @ResponseBody public AjaxResult editSave(ProjectCamera projectCamera) { return toAjax(projectCameraService.updateProjectCamera(projectCamera)); } /** * 删除监控设备 */ @RequiresPermissions("geo:projectCamera:remove") @Log(title = "监控设备", businessType = BusinessType.DELETE) @PostMapping("/remove") @ResponseBody public AjaxResult remove(String ids) { return toAjax(projectCameraService.deleteProjectCameraByIds(ids)); } }