523096025 2 роки тому
батько
коміт
8508160ab3
33 змінених файлів з 1571 додано та 1 видалено
  1. BIN
      huimv-admin/lib/Digests.jar
  2. BIN
      huimv-admin/lib/HttpClientSSLUtils.jar
  3. BIN
      huimv-admin/lib/commons-codec-1.4.jar
  4. BIN
      huimv-admin/lib/commons-io-2.0.1.jar
  5. BIN
      huimv-admin/lib/commons-lang3-3.3.1.jar
  6. BIN
      huimv-admin/lib/commons-logging-1.1.1.jar
  7. BIN
      huimv-admin/lib/fastjson-1.2.8.jar
  8. BIN
      huimv-admin/lib/httpclient-4.5.1.jar
  9. BIN
      huimv-admin/lib/httpcore-4.4.3.jar
  10. 89 0
      huimv-admin/src/main/java/com/huimv/admin/common/utils/OpenapiUtil.java
  11. 89 0
      huimv-admin/src/main/java/com/huimv/admin/controller/CameraAreaController.java
  12. 114 0
      huimv-admin/src/main/java/com/huimv/admin/controller/CameraBaseController.java
  13. 80 0
      huimv-admin/src/main/java/com/huimv/admin/controller/CameraBrandController.java
  14. 177 0
      huimv-admin/src/main/java/com/huimv/admin/controller/CameraHKVSSync.java
  15. 45 0
      huimv-admin/src/main/java/com/huimv/admin/entity/CameraArea.java
  16. 102 0
      huimv-admin/src/main/java/com/huimv/admin/entity/CameraBase.java
  17. 53 0
      huimv-admin/src/main/java/com/huimv/admin/entity/CameraBrand.java
  18. 16 0
      huimv-admin/src/main/java/com/huimv/admin/entity/vo/CameraListVo.java
  19. 19 0
      huimv-admin/src/main/java/com/huimv/admin/entity/vo/CameraListsVo.java
  20. 23 0
      huimv-admin/src/main/java/com/huimv/admin/entity/vo/CameraVo.java
  21. 16 0
      huimv-admin/src/main/java/com/huimv/admin/mapper/CameraAreaMapper.java
  22. 16 0
      huimv-admin/src/main/java/com/huimv/admin/mapper/CameraBaseMapper.java
  23. 16 0
      huimv-admin/src/main/java/com/huimv/admin/mapper/CameraBrandMapper.java
  24. 24 0
      huimv-admin/src/main/java/com/huimv/admin/service/ICameraAreaService.java
  25. 45 0
      huimv-admin/src/main/java/com/huimv/admin/service/ICameraBaseService.java
  26. 23 0
      huimv-admin/src/main/java/com/huimv/admin/service/ICameraBrandService.java
  27. 4 1
      huimv-admin/src/main/java/com/huimv/admin/service/impl/BasePigpenServiceImpl.java
  28. 81 0
      huimv-admin/src/main/java/com/huimv/admin/service/impl/CameraAreaServiceImpl.java
  29. 427 0
      huimv-admin/src/main/java/com/huimv/admin/service/impl/CameraBaseServiceImpl.java
  30. 57 0
      huimv-admin/src/main/java/com/huimv/admin/service/impl/CameraBrandServiceImpl.java
  31. 14 0
      huimv-admin/src/main/resources/mapper/CameraAreaMapper.xml
  32. 26 0
      huimv-admin/src/main/resources/mapper/CameraBaseMapper.xml
  33. 15 0
      huimv-admin/src/main/resources/mapper/CameraBrandMapper.xml

BIN
huimv-admin/lib/Digests.jar


BIN
huimv-admin/lib/HttpClientSSLUtils.jar


BIN
huimv-admin/lib/commons-codec-1.4.jar


BIN
huimv-admin/lib/commons-io-2.0.1.jar


BIN
huimv-admin/lib/commons-lang3-3.3.1.jar


BIN
huimv-admin/lib/commons-logging-1.1.1.jar


BIN
huimv-admin/lib/fastjson-1.2.8.jar


BIN
huimv-admin/lib/httpclient-4.5.1.jar


BIN
huimv-admin/lib/httpcore-4.4.3.jar


+ 89 - 0
huimv-admin/src/main/java/com/huimv/admin/common/utils/OpenapiUtil.java

@@ -0,0 +1,89 @@
+package com.huimv.admin.common.utils;
+
+import javax.imageio.ImageIO;
+import java.awt.image.BufferedImage;
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.Base64;
+import java.util.Base64.Decoder;
+import java.util.Base64.Encoder;
+
+/**
+ * Openapi接口调用过程中会用到的一些工具方法
+ * @author shengyiling
+ *
+ */
+public class OpenapiUtil {
+
+	/**
+	 * BASE64加密网络图片,返回加密之后的字符串
+	 * @param imageUrl 图片的绝对地址
+	 * @param extensioName 图片的扩展名,例如 jpg、bmp等
+	 * @return 加密之后的字符串
+	 */
+	public static String encodeImage2Base64(URL imageUrl, String extensioName){
+		ByteArrayOutputStream outputStream = null;  
+        try {  
+            BufferedImage bufferedImage = ImageIO.read(imageUrl);  //读取网络图片
+            outputStream = new ByteArrayOutputStream();  //文件输出流
+            ImageIO.write(bufferedImage, extensioName, outputStream);  
+        } catch (MalformedURLException e1) {  
+            e1.printStackTrace();  
+        } catch (IOException e) {  
+            e.printStackTrace();  
+        }  
+        Encoder encoder = Base64.getEncoder();
+        
+        return encoder.encodeToString(outputStream.toByteArray());// 返回Base64编码过的字节数组字符串  
+	}
+	
+	/** 
+     * 将本地图片进行Base64位编码 
+     *  
+     * @param imgUrl 
+     *            图片的url路径,如http://.....xx.jpg 
+     * @param extensioName 图片的扩展名
+     * @return 加密之后的字符串
+     */  
+    public static String encodeImgageToBase64(File imageFile, String extensioName) {// 将图片文件转化为字节数组字符串,并对其进行Base64编码处理  
+        ByteArrayOutputStream outputStream = null;  
+        try {  
+            BufferedImage bufferedImage = ImageIO.read(imageFile);  
+            outputStream = new ByteArrayOutputStream();  
+            ImageIO.write(bufferedImage, extensioName, outputStream);  
+        } catch (MalformedURLException e1) {  
+            e1.printStackTrace();  
+        } catch (IOException e) {  
+            e.printStackTrace();  
+        }  
+        // 对字节数组Base64编码  
+        Encoder encoder = Base64.getEncoder(); 
+        
+        return encoder.encodeToString(outputStream.toByteArray());// 返回Base64编码过的字节数组字符串  
+    }
+    
+    
+    /**
+     * 将Base64位编码的图片进行解码,并保存到指定目录
+     * @param base64Str 利用base64加密之后的字符串
+     * @param path 文件解密之后存放的地址 例如:D://
+     * @param imgName 文件解密之后命名的名称 例如: test.jpg
+     */
+    public static void decodeBase64ToImage(String base64Str, String path,  
+            String imgName) {  
+        Decoder decoder = Base64.getDecoder();  
+        try {  
+            FileOutputStream write = new FileOutputStream(new File(path  
+                    + imgName));  
+            byte[] decoderBytes = decoder.decode(base64Str);  
+            write.write(decoderBytes);  
+            write.close();  
+        } catch (IOException e) {  
+            e.printStackTrace();  
+        }  
+    }  
+}

+ 89 - 0
huimv-admin/src/main/java/com/huimv/admin/controller/CameraAreaController.java

@@ -0,0 +1,89 @@
+package com.huimv.admin.controller;
+
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import com.huimv.admin.common.utils.Result;
+import com.huimv.admin.entity.CameraArea;
+import com.huimv.admin.entity.CameraBase;
+import com.huimv.admin.service.ICameraAreaService;
+import com.huimv.admin.service.ICameraBaseService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author author
+ * @since 2023-02-16
+ */
+@RestController
+@RequestMapping("/cameraArea")
+public class CameraAreaController {
+    @Autowired
+    private ICameraAreaService cameraAreaService;
+
+    @Autowired
+    private ICameraBaseService cameraService;
+
+
+    @PostMapping("/list")
+    public Result list(@RequestBody Map<String, Object> params) {
+        return cameraAreaService.cameraList(params);
+    }
+
+    @PostMapping("/add")
+    public Result add(@RequestBody CameraArea cameraArea) {
+        int brandName = cameraAreaService.count(new QueryWrapper<CameraArea>().eq("area_name", cameraArea.getAreaName()).eq("farm_id", cameraArea.getFarmId()));
+        if (brandName > 0) {
+            return new Result(100001, "区域名称重复", false);
+        }
+        cameraAreaService.save(cameraArea);
+        return new Result(10000, "添加成功", true);
+    }
+
+    @PostMapping("/update")
+    public Result update(@RequestBody CameraArea cameraArea) {
+        cameraAreaService.updateById(cameraArea);
+        int brandName = cameraAreaService.count(new QueryWrapper<CameraArea>().eq("area_name", cameraArea.getAreaName()));
+        if (brandName > 1) {
+            return new Result(100001, "区域名称重复", false);
+        }
+
+        String areaName = cameraArea.getAreaName();
+        CameraBase camera = new CameraBase();
+        if (StringUtils.isNotBlank(areaName)) {
+            camera.setAreaName(areaName);
+        }
+        UpdateWrapper<CameraBase> wrapper = new UpdateWrapper<>();
+        wrapper.eq("area_id", cameraArea.getId());
+        cameraService.update(camera, wrapper);
+
+
+        return new Result(10000, "修改成功", true);
+    }
+
+    @GetMapping("/remove")
+    public Result remove(@RequestParam(value = "ids") List<Integer> ids) {
+
+        return cameraAreaService.removeIds(ids);
+
+    }
+
+
+    @GetMapping("/lsitAndCamera")
+    public Result lsitAndCamera(@RequestParam(value = "farmId") Integer farmId) {
+
+        return cameraAreaService.lsitAndCamera(farmId);
+
+    }
+
+
+}

+ 114 - 0
huimv-admin/src/main/java/com/huimv/admin/controller/CameraBaseController.java

@@ -0,0 +1,114 @@
+package com.huimv.admin.controller;
+
+
+import com.huimv.admin.common.token.TokenSign;
+import com.huimv.admin.common.utils.Result;
+import com.huimv.admin.common.utils.ResultCode;
+import com.huimv.admin.entity.CameraBase;
+import com.huimv.admin.entity.vo.CameraListVo;
+import com.huimv.admin.entity.vo.CameraListsVo;
+import com.huimv.admin.entity.vo.CameraVo;
+import com.huimv.admin.service.ICameraBaseService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.List;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author author
+ * @since 2023-02-16
+ */
+@RestController
+@RequestMapping("/cameraBase")
+public class CameraBaseController {
+    @Autowired
+    private ICameraBaseService cameraService;
+
+
+    @PostMapping("/list")
+    public Result list(@RequestBody CameraListVo cameraListVo) {
+        return cameraService.listPage(cameraListVo);
+    }
+
+    @PostMapping("/add")
+    public Result add(@RequestBody CameraBase camera) {
+        if (camera == null) {
+            return new Result(ResultCode.FAIL, "添加失败");
+        }
+        return cameraService.add(camera);
+    }
+
+    @PostMapping("/update")
+    public Result update(@RequestBody CameraBase camera) {
+        return cameraService.updates(camera);
+    }
+
+    @GetMapping("/remove")
+    public Result remove(@RequestParam(value = "ids") List<Integer> ids) {
+        cameraService.removeByIds(ids);
+        return new Result(ResultCode.SUCCESS, "删除成功");
+    }
+
+    @PostMapping("/getCameraDetails")
+    private Result getCameraDetails(@RequestBody CameraListsVo cameraListsVo) {
+
+        List list = cameraService.getCameraDetails(cameraListsVo);
+        return new Result(ResultCode.SUCCESS, list);
+    }
+
+    //返回苹果手机看监控视频地址
+//    @PostMapping("/getCameraDetails2")
+//    private Result getCameraDetails2(@RequestBody CameraListsVo cameraListsVo){
+//        //
+//        List list =  cameraService.getCameraDetails2(cameraListsVo);
+//        return new Result(ResultCode.SUCCESS,list);
+//    }
+
+    @GetMapping("/getCameraDetailsByRoomId")
+    private Result getCameraDetailsByRoomId(@RequestParam(name = "roomId") Integer roomId) {
+
+        CameraVo list = cameraService.getCameraDetailsByRoomId(roomId);
+        return new Result(ResultCode.SUCCESS, list);
+    }
+
+    @GetMapping("/updateStatus")
+    private Result updateStatus(@RequestParam(value = "id") Integer id) {
+
+        return cameraService.updateStatus(id);
+    }
+
+
+    @RequestMapping("/getByAreaId")
+    private Result getByAreaId(Integer areaId, HttpServletRequest request) {
+
+        List list = cameraService.getByAreaId(areaId);
+        return new Result(ResultCode.SUCCESS, list);
+    }
+
+
+//    @GetMapping("/initCamera")
+//    private Result initCamera(@RequestParam(name = "farmId") Integer farmId, HttpServletRequest request) {
+//        Integer userId = TokenSign.getMemberIdByJwtToken(request);
+//
+//        return cameraService.initCamera(farmId, userId);
+//    }
+
+
+    @GetMapping("/listScreenCamera")
+    private Result listScreenCamera(@RequestParam(name = "farmId") Integer farmId) {
+
+        return cameraService.listScreenCamera(farmId);
+    }
+
+//    @GetMapping("/screenCamera")
+//    private Result screenCamera(@RequestParam(name = "farmId") Integer farmId) {
+//
+//        return cameraService.screenCamera(farmId);
+//    }
+
+}

+ 80 - 0
huimv-admin/src/main/java/com/huimv/admin/controller/CameraBrandController.java

@@ -0,0 +1,80 @@
+package com.huimv.admin.controller;
+
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import com.huimv.admin.common.utils.Result;
+import com.huimv.admin.common.utils.ResultCode;
+import com.huimv.admin.entity.CameraBase;
+import com.huimv.admin.entity.CameraBrand;
+import com.huimv.admin.service.ICameraBaseService;
+import com.huimv.admin.service.ICameraBrandService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author author
+ * @since 2023-02-16
+ */
+@RestController
+@RequestMapping("/cameraBrand")
+public class CameraBrandController {
+
+
+
+    @Autowired
+    private ICameraBrandService cameraBrandService;
+
+    @Autowired
+    private ICameraBaseService cameraService;
+
+    @PostMapping("/list")
+    public Result list(@RequestBody Map<String, Object> params) {
+        return cameraBrandService.listPage(params);
+    }
+
+    @PostMapping("/add")
+    public Result add(@RequestBody CameraBrand cameraBrand) {
+        int brandName = cameraBrandService.count(new QueryWrapper<CameraBrand>().eq("brand_name", cameraBrand.getBrandName()).eq("farm_id", cameraBrand.getFarmId()));
+        if (brandName > 0) {
+            return new Result(10001, "品牌名称重复", false);
+        }
+
+        cameraBrandService.save(cameraBrand);
+        return new Result(10000, "添加成功", true);
+    }
+
+    @PostMapping("/update")
+    public Result update(@RequestBody CameraBrand cameraArea) {
+        cameraBrandService.updateById(cameraArea);
+        int brandName = cameraBrandService.count(new QueryWrapper<CameraBrand>().eq("brand_name", cameraArea.getBrandName()));
+        if (brandName > 1) {
+            return new Result(10001, "品牌名称重复", false);
+        }
+        String areaName = cameraArea.getBrandName();
+        CameraBase camera = new CameraBase();
+        if (StringUtils.isNotBlank(areaName)) {
+            camera.setBrandName(areaName);
+        }
+        UpdateWrapper<CameraBase> wrapper = new UpdateWrapper<>();
+        wrapper.eq("brand_id", cameraArea.getId());
+        cameraService.update(camera, wrapper);
+
+        return new Result(ResultCode.SUCCESS, "修改成功");
+    }
+
+    @GetMapping("/remove")
+    public Result remove(@RequestParam(value = "ids") List<Integer> ids) {
+        return cameraBrandService.removeIds(ids);
+    }
+
+}

+ 177 - 0
huimv-admin/src/main/java/com/huimv/admin/controller/CameraHKVSSync.java

@@ -0,0 +1,177 @@
+package com.huimv.admin.controller;
+
+import com.alibaba.fastjson.JSON;
+import com.hikvision.cms.api.common.util.Digests;
+import com.hikvision.cms.api.common.util.HttpClientSSLUtils;
+import com.huimv.admin.common.utils.Result;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.HashMap;
+import java.util.Map;
+
+@CrossOrigin
+@RestController
+@RequestMapping("/admin/cameraHKVSSync")
+public class CameraHKVSSync {
+
+    @GetMapping("/sync")
+    public Result sync() {
+    return null;
+    }
+
+    /**
+     * APPKEY需要到部署的平台服务器上生成。
+     * <p>
+     * 调用Openpai的操作码,需要去平台上生成,详见《海康威视iVMS-8700平台SDKV2.*.* HTTP-OpenAPI使用说明书.chm》中[获取AppKey和Secret]章节说明
+     * </p>
+     * <p>
+     * 《海康威视iVMS-8700平台SDKV2.*.* HTTP-OpenAPI使用说明书.chm》 该文档请找技术支持或者交付的同事提供
+     * </p>
+     */
+    private static final String APPKEY = "27546900";
+
+    /**
+     * SECRET需要到部署的平台服务器上生成。
+     * <p>
+     * 调用Openpai的操作码,需要去平台上生成,详见《海康威视iVMS-8700平台SDKV2.*.* HTTP-OpenAPI使用说明书.chm》中[获取AppKey和Secret]章节说明
+     * </p>
+     * <p>
+     * 《海康威视iVMS-8700平台SDKV2.*.* HTTP-OpenAPI使用说明书.chm》 该文档请找技术支持或者交付的同事提供
+     * </p>
+     */
+    private static final String SECRET = "S5qgrKdBd75MONZRzGAh";
+
+
+    /**
+     * http请求地址
+     * <p>openapi的地址,默认情况下openapi的IP端口与基础应用的IP端口是一致的</p>
+     * <p>请将地址配置正确.</p>
+     * <p>默认情况下是127.0.0.1:80 ,如果地址不通请根据实际情况修改IP端口</p>
+     */
+    private static final String OPENAPI_IP_PORT_HTTP = "http://61.153.248.106:80";
+//    private static final String OPENAPI_IP_PORT_HTTP = "http://172.21.90:80";
+
+    /**
+     * https请求地址
+     * <p>openapi的地址,默认情况下openapi的IP端口与基础应用的IP端口是一致的</p>
+     * <p>请将地址配置正确.</p>
+     * <p>默认情况下是127.0.0.1:443 ,如果地址不通请根据实际情况修改IP端口</p>
+     */
+    private static final String OPENAPI_IP_PORT_HTTPS = "https://61.153.248.106:443";
+//    private static final String OPENAPI_IP_PORT_HTTPS = "https://172.21.90:443";
+
+    /**
+     * 获取默认用户UUID的接口地址,此地址可以从《海康威视iVMS-8700平台SDKV2.*.* HTTP-OpenAPI使用说明书.chm》中具体的接口说明上获取
+     */
+    private static final String ITF_ADDRESS_GET_DEFAULT_USER_UUID = "/openapi/service/base/user/getDefaultUserUuid";
+
+    /**
+     * 分页获取监控点信息的接口地址,此地址可以从《海康威视iVMS-8700平台SDKV2.*.* HTTP-OpenAPI使用说明书.chm》中具体的接口说明上获取
+     */
+    private static final String ITF_ADDRESS_GET_CAMERAS = "/openapi/service/vss/res/getCameras";
+
+    /**
+     * <p>操作用户UUID,即用户UUID,首次使用操作用户UUID可以通过接口 [获取默认用户UUID]来获取</p>
+     * <p>也可以通过接口[分页获取用户]来获取</p>
+     */
+    private static final String OP_USER_UUID = "0be83d40695011e7981e0f190ed6d2e7";
+
+    /**
+     * 测试方法
+     * @param args
+     * @throws Exception
+     */
+    public static void main(String[] args) throws Exception {
+
+        /***http方式调用***/
+        System.out.println(testGetDefaultUserUUID());
+        System.out.println(testGetCameras());
+
+        /***https方式调用***/
+//        System.out.println(testGetDefaultUserUUID_Https());
+//        System.out.println(testGetCameras_Https());
+    }
+
+    /**
+     * HTTP方式
+     * 获取默认用户UUID 测试
+     * @return
+     * @throws Exception
+     */
+    private static String testGetDefaultUserUUID() throws Exception{
+        String url = OPENAPI_IP_PORT_HTTP + ITF_ADDRESS_GET_DEFAULT_USER_UUID;
+        Map<String, Object> map = new HashMap<String, Object>();
+        map.put("appkey", APPKEY);//设置APPKEY
+        map.put("time", System.currentTimeMillis());//设置时间参数
+        String params =  JSON.toJSONString(map);
+        System.out.println(" ====== testGetDefaultUserUUID 请求参数:【" + params + "】");
+        String data = HttpClientSSLUtils.doPost(url + "?token=" + Digests.buildToken(url + "?" + params, null, SECRET), params);
+        System.out.println(" ====== testGetDefaultUserUUID 请求返回结果:【{" + data + "}】");
+
+        return data;
+    }
+
+    /**
+     * HTTP方式
+     * 分页获取监控点信息 测试
+     * @return
+     * @throws Exception
+     */
+    private static String testGetCameras() throws Exception{
+        String url = OPENAPI_IP_PORT_HTTP + ITF_ADDRESS_GET_CAMERAS;
+        Map<String, Object> map = new HashMap<String, Object>();
+        map.put("appkey", APPKEY);//设置APPKEY
+        map.put("time", System.currentTimeMillis());//设置时间参数
+        map.put("pageNo", 1);//设置分页参数
+        map.put("pageSize", 5);//设置分页参数
+        map.put("opUserUuid", OP_USER_UUID);//设置操作用户UUID
+        String params = JSON.toJSONString(map);
+        System.out.println(" ====== getCameras请求参数:【" + params + "】");
+        String data = HttpClientSSLUtils.doPost(url + "?token=" + Digests.buildToken(url + "?" + params, null, SECRET), params);
+        System.out.println(" ====== getCameras请求返回结果:【{" + data + "}】");
+
+        return data;
+    }
+
+    /**
+     * HTTPS方式
+     * 获取默认用户UUID 测试
+     * @return
+     * @throws Exception
+     */
+    private static String testGetDefaultUserUUID_Https() throws Exception{
+        String url = OPENAPI_IP_PORT_HTTPS + ITF_ADDRESS_GET_DEFAULT_USER_UUID;
+        Map<String, Object> map = new HashMap<String, Object>();
+        map.put("appkey", APPKEY);//设置APPKEY
+        map.put("time", System.currentTimeMillis());//设置时间参数
+        String params =  JSON.toJSONString(map);
+        System.out.println("============" + params + "============");
+        String data = HttpClientSSLUtils.doPost(url + "?token=" + Digests.buildToken(url + "?" + params, null, SECRET), params);
+        System.out.println("============" + data + "============");
+
+        return data;
+    }
+
+    /**
+     * HTTPS方式
+     * 分页获取监控点信息 测试
+     * @return
+     * @throws Exception
+     */
+    private static String testGetCameras_Https() throws Exception{
+        String url = OPENAPI_IP_PORT_HTTPS + ITF_ADDRESS_GET_CAMERAS;
+        Map<String, Object> map = new HashMap<String, Object>();
+        map.put("appkey", APPKEY);//设置APPKEY
+        map.put("time", System.currentTimeMillis());//设置时间参数
+        map.put("pageNo", 1);//设置分页参数
+        map.put("pageSize", 5);//设置分页参数
+        map.put("opUserUuid", OP_USER_UUID);//设置操作用户UUID
+        String params = JSON.toJSONString(map);
+        System.out.println(" ====== getCameras请求参数:【" + params + "】");
+        String data = HttpClientSSLUtils.doPost(url + "?token=" + Digests.buildToken(url + "?" + params, null, SECRET), params);
+        System.out.println(" ====== getCameras请求返回结果:【{" + data + "}】");
+
+        return data;
+    }
+
+}

+ 45 - 0
huimv-admin/src/main/java/com/huimv/admin/entity/CameraArea.java

@@ -0,0 +1,45 @@
+package com.huimv.admin.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author author
+ * @since 2023-02-16
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("camera_area")
+public class CameraArea implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 区域(单元)名称
+     */
+    private String areaName;
+
+    /**
+     * 不用管
+     */
+    private String remark;
+
+    private Integer farmId;
+
+    private String publicUrl;
+
+
+}

+ 102 - 0
huimv-admin/src/main/java/com/huimv/admin/entity/CameraBase.java

@@ -0,0 +1,102 @@
+package com.huimv.admin.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author author
+ * @since 2023-02-16
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("camera_base")
+public class CameraBase implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 摄像头名字
+     */
+    private String cameraName;
+
+    /**
+     * 账号
+     */
+    private String account;
+
+    /**
+     * 密码
+     */
+    private String password;
+
+    /**
+     * 区域名字
+     */
+    private String areaName;
+
+    /**
+     * 区域id
+     */
+    private Integer areaId;
+
+    /**
+     * 摄像头ip
+     */
+    private String cameraIp;
+
+    /**
+     * 0未关注,1关注
+     */
+    private Integer attention;
+
+    /**
+     * 品牌()
+     */
+    private String brandName;
+
+    /**
+     * 品牌id
+     */
+    private Integer brandId;
+
+    /**
+     * 1正常   0停用
+     */
+    private Boolean runStatus;
+
+    private Integer sort;
+
+    private Integer farmId;
+
+    private Integer roomId;
+
+    /**
+     * icc 通道
+     */
+    private String iccChannel;
+
+    /**
+     * 功能点id
+     */
+    private Integer functionId;
+
+    /**
+     * 1在线  0离线
+     */
+    private Boolean isOnline;
+
+
+}

+ 53 - 0
huimv-admin/src/main/java/com/huimv/admin/entity/CameraBrand.java

@@ -0,0 +1,53 @@
+package com.huimv.admin.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author author
+ * @since 2023-02-16
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("camera_brand")
+public class CameraBrand implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 品牌名称
+     */
+    private String brandName;
+
+    /**
+     * 主
+     */
+    private String mainStream;
+
+    /**
+     * 辅
+     */
+    private String assistStream;
+
+    /**
+     * 0主码流,1辅码流
+     */
+    private Integer streamType;
+
+    private Integer farmId;
+
+
+}

+ 16 - 0
huimv-admin/src/main/java/com/huimv/admin/entity/vo/CameraListVo.java

@@ -0,0 +1,16 @@
+package com.huimv.admin.entity.vo;
+
+
+import lombok.Data;
+
+@Data
+public class CameraListVo {
+    private Integer current;
+    private Integer size;
+    private String strchStr;
+    private Integer areaId;
+    private Integer brandId;
+    private Integer sort;
+    private Integer farmId;
+    private Integer isOnline;
+}

+ 19 - 0
huimv-admin/src/main/java/com/huimv/admin/entity/vo/CameraListsVo.java

@@ -0,0 +1,19 @@
+package com.huimv.admin.entity.vo;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @Project : huimv.shiwan
+ * @Package : com.huimv.video.video.entity.vo
+ * @Description : TODO
+ * @Author : yuxuexuan
+ * @Create : 2021/9/29 0029 13:54
+ **/
+@Data
+public class CameraListsVo extends CameraListVo {
+
+
+    List<Integer> cameraIds;
+}

+ 23 - 0
huimv-admin/src/main/java/com/huimv/admin/entity/vo/CameraVo.java

@@ -0,0 +1,23 @@
+package com.huimv.admin.entity.vo;
+
+import lombok.Data;
+
+/**
+ * @Project : huimv.shiwan
+ * @Package : com.huimv.video.video.entity
+ * @Description : TODO
+ * @Author : yuxuexuan
+ * @Create : 2021/9/26 0026 14:56
+ **/
+@Data
+public class CameraVo {
+    private String wsUrl;
+    private Integer id;
+    private String rtspUrl;
+    private Integer areaId;
+    private String cameraName;
+    private Integer lastId;
+    private Integer nextId;
+    private String httpUrl;
+
+}

+ 16 - 0
huimv-admin/src/main/java/com/huimv/admin/mapper/CameraAreaMapper.java

@@ -0,0 +1,16 @@
+package com.huimv.admin.mapper;
+
+import com.huimv.admin.entity.CameraArea;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author author
+ * @since 2023-02-16
+ */
+public interface CameraAreaMapper extends BaseMapper<CameraArea> {
+
+}

+ 16 - 0
huimv-admin/src/main/java/com/huimv/admin/mapper/CameraBaseMapper.java

@@ -0,0 +1,16 @@
+package com.huimv.admin.mapper;
+
+import com.huimv.admin.entity.CameraBase;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author author
+ * @since 2023-02-16
+ */
+public interface CameraBaseMapper extends BaseMapper<CameraBase> {
+
+}

+ 16 - 0
huimv-admin/src/main/java/com/huimv/admin/mapper/CameraBrandMapper.java

@@ -0,0 +1,16 @@
+package com.huimv.admin.mapper;
+
+import com.huimv.admin.entity.CameraBrand;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author author
+ * @since 2023-02-16
+ */
+public interface CameraBrandMapper extends BaseMapper<CameraBrand> {
+
+}

+ 24 - 0
huimv-admin/src/main/java/com/huimv/admin/service/ICameraAreaService.java

@@ -0,0 +1,24 @@
+package com.huimv.admin.service;
+
+import com.huimv.admin.common.utils.Result;
+import com.huimv.admin.entity.CameraArea;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author author
+ * @since 2023-02-16
+ */
+public interface ICameraAreaService extends IService<CameraArea> {
+    Result cameraList(Map<String, Object> params);
+
+    Result removeIds(List<Integer> ids);
+
+    Result lsitAndCamera(Integer farmId);
+}

+ 45 - 0
huimv-admin/src/main/java/com/huimv/admin/service/ICameraBaseService.java

@@ -0,0 +1,45 @@
+package com.huimv.admin.service;
+
+import com.huimv.admin.common.utils.Result;
+import com.huimv.admin.entity.CameraBase;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.huimv.admin.entity.vo.CameraListVo;
+import com.huimv.admin.entity.vo.CameraListsVo;
+import com.huimv.admin.entity.vo.CameraVo;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author author
+ * @since 2023-02-16
+ */
+public interface ICameraBaseService extends IService<CameraBase> {
+
+    Result listPage(CameraListVo cameraListVo);
+
+    List getCameraDetails(CameraListsVo cameraListsVo);
+
+    List getByAreaId(Integer areaId);
+
+    Result updateStatus(Integer id);
+
+    Result add(CameraBase camera);
+
+    Result updates(CameraBase camera);
+
+    CameraVo getCameraDetailsByRoomId(Integer roomId);
+
+//    Result initCamera(Integer farmId, Integer userId);
+
+    Result listScreenCamera(Integer farmId);
+
+//    Result screenCamera(Integer farmId);
+
+    List getCameraDetails2(CameraListsVo cameraListsVo);
+
+}

+ 23 - 0
huimv-admin/src/main/java/com/huimv/admin/service/ICameraBrandService.java

@@ -0,0 +1,23 @@
+package com.huimv.admin.service;
+
+import com.huimv.admin.common.utils.Result;
+import com.huimv.admin.entity.CameraBrand;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author author
+ * @since 2023-02-16
+ */
+public interface ICameraBrandService extends IService<CameraBrand> {
+    Result listPage(Map<String, Object> params);
+
+    Result removeIds(List<Integer> ids);
+
+}

+ 4 - 1
huimv-admin/src/main/java/com/huimv/admin/service/impl/BasePigpenServiceImpl.java

@@ -84,10 +84,13 @@ public class BasePigpenServiceImpl extends ServiceImpl<BasePigpenMapper, BasePig
     }
 
     @Override
+    @Transactional
     public Result deletePigpen(Map<String, Integer> map) {
         Integer integer = map.get("id");
         List<BasePigpen> other2 = basePigpenMapper.selectList(new QueryWrapper<BasePigpen>().like("other2", integer));
-        basePigpenMapper.deleteBatchIds(other2);
+        for (BasePigpen basePigpen : other2) {
+            basePigpenMapper.deleteById(basePigpen);
+        }
         basePigpenMapper.deleteById(integer);
         return ResultUtil.deleteResult(1);
     }

+ 81 - 0
huimv-admin/src/main/java/com/huimv/admin/service/impl/CameraAreaServiceImpl.java

@@ -0,0 +1,81 @@
+package com.huimv.admin.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.huimv.admin.common.utils.Result;
+import com.huimv.admin.common.utils.ResultCode;
+import com.huimv.admin.entity.CameraArea;
+import com.huimv.admin.entity.CameraBase;
+import com.huimv.admin.mapper.CameraAreaMapper;
+import com.huimv.admin.mapper.CameraBaseMapper;
+import com.huimv.admin.service.ICameraAreaService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author author
+ * @since 2023-02-16
+ */
+@Service
+public class CameraAreaServiceImpl extends ServiceImpl<CameraAreaMapper, CameraArea> implements ICameraAreaService {
+    @Autowired
+    private CameraBaseMapper cameraMapper;
+
+
+    @Override
+    public Result cameraList(Map<String, Object> params) {
+
+        Integer current = (Integer) params.get("current");
+        Integer size = (Integer) params.get("size");
+        String areaName = (String) params.get("areaName");
+        Integer farmId = (Integer) params.get("farmId");
+
+        IPage<CameraArea> list = page(new Page<>(current, size), new QueryWrapper<CameraArea>().like(StringUtils.isNotBlank(areaName), "area_name", areaName).eq("farm_id", farmId));
+        return new Result(ResultCode.SUCCESS, list);
+    }
+
+    @Override
+    public Result removeIds(List<Integer> ids) {
+        for (Integer id : ids) {
+            CameraArea byId = this.getById(id);
+
+            Integer areaId = cameraMapper.selectCount(new QueryWrapper<CameraBase>().eq("area_id", id));
+            if (areaId > 0) {
+                return new Result(10001, "删除失败,区域" + byId.getAreaName() + "仍然存在摄像头", false);
+            }
+        }
+        this.removeByIds(ids);
+        return new Result(10000, "删除成功", true);
+    }
+
+    @Override
+    public Result lsitAndCamera(Integer farmId) {
+        List endList = new ArrayList();
+
+        List<CameraArea> cameraAreaList = this.list(new QueryWrapper<CameraArea>().eq("farm_id", farmId));
+
+        for (CameraArea cameraArea : cameraAreaList) {
+            Map map = new HashMap();
+            map.put("cameraName", cameraArea.getAreaName());
+            map.put("id", cameraArea.getId());
+            map.put("cameraList", cameraMapper.selectList(new QueryWrapper<CameraBase>().eq("area_id", cameraArea.getId())));
+            endList.add(map);
+        }
+
+
+        return new Result(ResultCode.SUCCESS, endList);
+    }
+
+}

+ 427 - 0
huimv-admin/src/main/java/com/huimv/admin/service/impl/CameraBaseServiceImpl.java

@@ -0,0 +1,427 @@
+package com.huimv.admin.service.impl;
+
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.RandomUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.huimv.admin.common.utils.Result;
+import com.huimv.admin.common.utils.ResultCode;
+import com.huimv.admin.entity.CameraBase;
+import com.huimv.admin.entity.CameraBrand;
+import com.huimv.admin.entity.vo.CameraListVo;
+import com.huimv.admin.entity.vo.CameraListsVo;
+import com.huimv.admin.entity.vo.CameraVo;
+import com.huimv.admin.mapper.CameraAreaMapper;
+import com.huimv.admin.mapper.CameraBaseMapper;
+import com.huimv.admin.mapper.CameraBrandMapper;
+import com.huimv.admin.service.ICameraBaseService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author author
+ * @since 2023-02-16
+ */
+@Service
+public class CameraBaseServiceImpl extends ServiceImpl<CameraBaseMapper, CameraBase> implements ICameraBaseService {
+    @Autowired
+    private CameraBrandMapper cameraBrandMapper;
+
+    @Autowired
+    private CameraAreaMapper cameraAreaMapper;
+
+    @Override
+    public Result listPage(CameraListVo cameraListVo) {
+        Integer current = cameraListVo.getCurrent();
+        String strchStr = cameraListVo.getStrchStr();
+        Integer size = cameraListVo.getSize();
+        Integer areaId = cameraListVo.getAreaId();
+        Integer brandId = cameraListVo.getBrandId();
+        Integer sort = cameraListVo.getSort();
+        Integer farmId = cameraListVo.getFarmId();
+        Integer isOnline = cameraListVo.getIsOnline();
+        QueryWrapper<CameraBase> wrapper = new QueryWrapper<>();
+        if (farmId != null) {
+            wrapper.eq("farm_id", farmId);
+        }
+        if (areaId != null) {
+            wrapper.eq("area_id", areaId);
+        }
+        if (brandId != null) {
+            wrapper.eq("brand_id", brandId);
+        }
+
+        if (isOnline != null) {
+            wrapper.eq("is_online", isOnline);
+        }
+
+        if (StringUtils.isNotBlank(strchStr)) {
+            wrapper.and(i -> i.like("camera_name", strchStr)
+                    .or().like("camera_ip", strchStr));
+        }
+        if (sort == null) {
+            wrapper.orderByDesc("id");
+        } else if (sort == 1) {
+            wrapper.orderByDesc("sort");
+        } else {
+            wrapper.orderByAsc("sort");
+        }
+        wrapper.orderByDesc("id");
+        return new Result(ResultCode.SUCCESS, page(new Page<>(current, size), wrapper));
+    }
+
+    @Override
+    public List getCameraDetails(CameraListsVo cameraListsVo) {
+        List<Integer> cameraIds = cameraListsVo.getCameraIds();
+        CameraListVo cameraListVo = new CameraListsVo();
+        cameraListVo.setCurrent(1);
+        cameraListVo.setSize(10000);
+        cameraListVo.setStrchStr(cameraListsVo.getStrchStr());
+        cameraListVo.setAreaId(cameraListsVo.getAreaId());
+        cameraListVo.setBrandId(cameraListsVo.getBrandId());
+        cameraListVo.setSort(cameraListsVo.getSort());
+
+        if (cameraIds == null || cameraIds.size() == 0){
+            return null;
+        }
+        List cameraDetailsList = new ArrayList();
+        IPage<CameraBase> page = (IPage<CameraBase>)this.listPage(cameraListVo).getData();
+        List<CameraBase> list = page.getRecords();
+        int i = 0;
+        final String farmAppPort = "8081";
+        final String farmVideoApp = "/appleVideo/play?";
+        final String hlsMediaPort= "85";
+        for (CameraBase camera : list) {
+            for (Integer cameraId : cameraIds) {
+                if (cameraId.equals( camera.getId())){
+
+                    String cameraAccount = camera.getAccount();
+                    String cameraPassword = camera.getPassword();
+                    String camerIp = camera.getCameraIp();
+                    String cameraName = camera.getCameraName();
+                    Integer areaId = camera.getAreaId();
+                    String url = cameraAreaMapper.selectById(areaId).getPublicUrl();
+                    String rtsp ;
+                    CameraBrand cameraBrand = cameraBrandMapper.selectById(camera.getBrandId());
+                    Integer type = cameraBrand.getStreamType();
+                    if (type == 0){
+                        rtsp = cameraBrand.getMainStream();
+                    }else {
+                        rtsp = cameraBrand.getAssistStream();
+                    }
+                    CameraVo cameraVo= new CameraVo();
+                    cameraVo.setId(camera.getId());
+                    cameraVo.setAreaId(areaId);
+
+                    cameraVo.setWsUrl("ws://" + url + "/camera_relay?tcpaddr=" + cameraAccount + "%3A" + cameraPassword + "%40" + camerIp);
+//                    cameraVo.setRtspUrl("rtsp://" + cameraAccount + ":" + cameraPassword + "@" + camerIp + rtsp);
+                    //http://61.153.248.106:6713/mag/hls/6bf5d2cf30bb440cad3fc126512f5188/1/live.m3u8
+//                    cameraVo.setRtspUrl("http://" + ip + ":" + port + "/mag/hls/" + sysKey +"/1/live.m3u8");
+                    cameraVo.setRtspUrl("http://61.153.248.106:6713/mag/hls/6bf5d2cf30bb440cad3fc126512f5188/1/live.m3u8");
+                    cameraVo.setCameraName(cameraName);
+                    cameraVo.setHttpUrl(handleHlsHttpUrl(url,cameraAccount,cameraPassword,camerIp,farmAppPort,farmVideoApp,hlsMediaPort));
+                    if (i > 0){
+                        cameraVo.setLastId(list.get(i-1).getId());
+                    }
+                    if (i < list.size()-1 ){
+                        cameraVo.setNextId(list.get(i+1).getId());
+                    }
+                    cameraDetailsList.add(cameraVo);
+                }
+            }
+            i++;
+        }
+        return cameraDetailsList;
+    }
+
+    //构造HlsHttp地址
+    private String handleHlsHttpUrl(String url, String cameraAccount, String cameraPassword, String camerIp, String farmAppPort, String farmVideoApp, String hlsMediaPort) {
+        url = url.substring(0,url.indexOf(":"));
+        url="http://"+url;
+        //return url+":"+farmAppPort+farmVideoApp+"url="+cameraAccount + ":" + cameraPassword + "@" + camerIp+"&name="+"&dt=3000&targetUrl="+url+":"+hlsMediaPort;
+        return url+":"+farmAppPort+farmVideoApp+"url="+cameraAccount + ":" + cameraPassword + "@" + camerIp+"&dt=3000&targetUrl="+url+":"+hlsMediaPort;
+    }
+
+    //    @Override
+    public List getCameraDetails_yu(CameraListsVo cameraListsVo) {
+        List<Integer> cameraIds = cameraListsVo.getCameraIds();
+        CameraListVo cameraListVo = new CameraListsVo();
+        cameraListVo.setCurrent(1);
+        cameraListVo.setSize(10000);
+        cameraListVo.setStrchStr(cameraListsVo.getStrchStr());
+        cameraListVo.setAreaId(cameraListsVo.getAreaId());
+        cameraListVo.setBrandId(cameraListsVo.getBrandId());
+        cameraListVo.setSort(cameraListsVo.getSort());
+
+
+        if (cameraIds == null || cameraIds.size() == 0) {
+            return null;
+        }
+        List cameraDetailsList = new ArrayList();
+        IPage<CameraBase> page = (IPage<CameraBase>) this.listPage(cameraListVo).getData();
+        List<CameraBase> list = page.getRecords();
+        int i = 0;
+        for (CameraBase camera : list) {
+            for (Integer cameraId : cameraIds) {
+                if (cameraId.equals(camera.getId())) {
+
+                    String cameraAccount = camera.getAccount();
+                    String cameraPassword = camera.getPassword();
+                    String camerIp = camera.getCameraIp();
+                    String cameraName = camera.getCameraName();
+                    Integer areaId = camera.getAreaId();
+                    String url = cameraAreaMapper.selectById(areaId).getPublicUrl();
+
+                    String rtsp;
+                    CameraBrand cameraBrand = cameraBrandMapper.selectById(camera.getBrandId());
+                    Integer type = cameraBrand.getStreamType();
+                    if (type == 0) {
+                        rtsp = cameraBrand.getMainStream();
+                    } else {
+                        rtsp = cameraBrand.getAssistStream();
+                    }
+                    CameraVo cameraVo = new CameraVo();
+                    cameraVo.setAreaId(areaId);
+                    cameraVo.setWsUrl("ws://" + url + "/camera_relay?tcpaddr=" + cameraAccount + "%3A" + cameraPassword + "%40" + camerIp);
+                    cameraVo.setRtspUrl("rtsp://" + cameraAccount + ":" + cameraPassword + "@" + camerIp + rtsp);
+                    cameraVo.setCameraName(cameraName);
+                    if (i > 0) {
+                        cameraVo.setLastId(list.get(i - 1).getId());
+                    }
+                    if (i < list.size() - 1) {
+                        cameraVo.setNextId(list.get(i + 1).getId());
+                    }
+                    cameraDetailsList.add(cameraVo);
+                }
+
+            }
+            i++;
+        }
+
+
+        return cameraDetailsList;
+    }
+
+    @Override
+    public Result updateStatus(Integer id) {
+        CameraBase byId = this.getById(id);
+
+        if (byId.getRunStatus()) {
+            byId.setRunStatus(false);
+            this.updateById(byId);
+            return new Result(10000, "已停用", true);
+        } else {
+            byId.setRunStatus(true);
+            this.updateById(byId);
+            return new Result(10000, "已启用", true);
+        }
+
+
+    }
+
+    @Override
+    public Result add(CameraBase camera) {
+        Integer areaId = camera.getAreaId();
+        Integer brandId = camera.getBrandId();
+
+        int brandName = this.count(new QueryWrapper<CameraBase>().eq("camera_name", camera.getCameraName()).eq("farm_id", camera.getFarmId()));
+        if (brandName > 0) {
+            return new Result(10001, "摄像头名称重复", false);
+        }
+        if (areaId != null) {
+            camera.setAreaName(cameraAreaMapper.selectById(areaId).getAreaName());
+        }
+        if (brandId != null) {
+            camera.setBrandName(cameraBrandMapper.selectById(brandId).getBrandName());
+        }
+        this.save(camera);
+
+        return new Result(10000, "添加成功", true);
+    }
+
+    @Override
+    public Result updates(CameraBase camera) {
+        Integer areaId = camera.getAreaId();
+        Integer brandId = camera.getBrandId();
+        this.updateById(camera);
+        int brandName = this.count(new QueryWrapper<CameraBase>().eq("camera_name", camera.getCameraName()));
+        if (brandName > 1) {
+            return new Result(10001, "摄像头名称重复", false);
+        }
+        if (areaId != null) {
+            camera.setAreaName(cameraAreaMapper.selectById(areaId).getAreaName());
+        }
+        if (brandId != null) {
+            camera.setBrandName(cameraBrandMapper.selectById(brandId).getBrandName());
+        }
+        this.updateById(camera);
+        return new Result(10000, "修改成功", true);
+    }
+
+    @Override
+    public CameraVo getCameraDetailsByRoomId(Integer roomId) {
+
+
+        CameraBase camera = this.getOne(new QueryWrapper<CameraBase>().eq("room_id", roomId));
+
+        return getCameraVo(camera);
+    }
+
+
+//    @Override
+//    public Result initCamera(Integer farmId, Integer userId) {
+//        BaseScreenCameraAccount cameraAccount = cameraAccountMapper.selectOne(new QueryWrapper<BaseScreenCameraAccount>().eq("farm_id", farmId).eq("account_id", userId));
+//        Integer cameraId;
+//        if (ObjectUtil.isEmpty(cameraAccount)) {
+//            cameraId = this.getOne(new QueryWrapper<Camera>().eq("run_status", 1).eq("farm_id", farmId).last("limit 1")).getId();
+//        } else {
+//            cameraId = cameraAccount.getCameraId();
+//        }
+//
+//
+//        Camera camera = this.getById(cameraId);
+//        if (!camera.getRunStatus()) {
+//            return new Result(10001, "该摄像头已经被禁用", false);
+//        }
+//
+//        return new Result(ResultCode.SUCCESS, getCameraVo(camera));
+//    }
+
+    @Override
+    public Result listScreenCamera(Integer farmId) {
+        List<CameraBase> cameras = this.list(new QueryWrapper<CameraBase>().eq("farm_id", farmId));
+        List list = new ArrayList();
+        for (int i = 0; i < 6; i++) {
+            list.add(getCameraVo(cameras.get(RandomUtil.randomInt(0, cameras.size()))));
+        }
+
+        return new Result(ResultCode.SUCCESS, list);
+    }
+
+//    @Override
+//    public Result screenCamera(Integer farmId) {
+//
+//        BaseRoom baseRoom = baseRoomMapper.selectOne(new QueryWrapper<BaseRoom>().eq("farm_id", farmId).last("limit 1"));
+//        Integer roomId;
+//        if (ObjectUtil.isNotEmpty(baseRoom)) {
+//
+//            roomId = baseRoom.getId();
+//        } else {
+//            return new Result(ResultCode.SUCCESS, null);
+//        }
+//        Camera room_id = this.getOne(new QueryWrapper<Camera>().eq("room_id", roomId));
+//        CameraVo cameraVo = getCameraVo(room_id);
+//
+//        return new Result(ResultCode.SUCCESS, cameraVo);
+//    }
+
+    @Override
+    public List getCameraDetails2(CameraListsVo cameraListsVo) {
+        List<Integer> cameraIds = cameraListsVo.getCameraIds();
+        CameraListVo cameraListVo = new CameraListsVo();
+        cameraListVo.setCurrent(1);
+        cameraListVo.setSize(10000);
+        cameraListVo.setStrchStr(cameraListsVo.getStrchStr());
+        cameraListVo.setAreaId(cameraListsVo.getAreaId());
+        cameraListVo.setBrandId(cameraListsVo.getBrandId());
+        cameraListVo.setSort(cameraListsVo.getSort());
+
+        if (cameraIds == null || cameraIds.size() == 0){
+            return null;
+        }
+        List cameraDetailsList = new ArrayList();
+        IPage<CameraBase> page = (IPage<CameraBase>)this.listPage(cameraListVo).getData();
+        List<CameraBase> list = page.getRecords();
+        int i = 0;
+        final String farmAppPort = "8081";
+        final String farmVideoApp = "/appleVideo/play?";
+        final String hlsMediaPort= "85";
+        for (CameraBase camera : list) {
+            for (Integer cameraId : cameraIds) {
+                if (cameraId.equals( camera.getId())){
+                    String cameraAccount = camera.getAccount();
+                    String cameraPassword = camera.getPassword();
+                    String camerIp = camera.getCameraIp();
+                    String cameraName = camera.getCameraName();
+                    Integer areaId = camera.getAreaId();
+                    String url = cameraAreaMapper.selectById(areaId).getPublicUrl();
+                    url = url.substring(0,url.indexOf(":"));
+                    url="http://"+url;
+                    CameraVo cameraVo= new CameraVo();
+                    cameraVo.setAreaId(areaId);
+//                    cameraVo.setWsUrl("ws://" + url + "/camera_relay?tcpaddr=" + cameraAccount + "%3A" + cameraPassword + "%40" + camerIp);
+//                    cameraVo.setRtspUrl("rtsp://" + cameraAccount + ":" + cameraPassword + "@" + camerIp + rtsp);
+                    //示例
+//                    cameraVo.setHttpUrl("http://183.249.204.153:8081/appleVideo/play?url=admin:hmkj6688@192.168.1.108&name=101&dt=3000&targetUrl=http://183.249.204.153:85");
+                    cameraVo.setHttpUrl(url+":"+farmAppPort+farmVideoApp+"url="+cameraAccount + ":" + cameraPassword + "@" + camerIp+"&name="+"&dt=3000&targetUrl="+url+":"+hlsMediaPort);
+                    cameraVo.setCameraName(cameraName);
+                    if (i > 0){
+                        cameraVo.setLastId(list.get(i-1).getId());
+                    }
+                    if (i < list.size()-1 ){
+                        cameraVo.setNextId(list.get(i+1).getId());
+                    }
+                    cameraDetailsList.add(cameraVo);
+                }
+            }
+            i++;
+        }
+
+
+        return cameraDetailsList;
+    }
+
+
+
+    @Override
+    public List getByAreaId(Integer areaId) {
+        return null;
+    }
+
+
+    public CameraVo getCameraVo(CameraBase camera) {
+
+        String cameraAccount = camera.getAccount();
+        String cameraPassword = camera.getPassword();
+        String camerIp = camera.getCameraIp();
+        String cameraName = camera.getCameraName();
+        Integer areaId = camera.getAreaId();
+        String url = cameraAreaMapper.selectById(areaId).getPublicUrl();
+
+        String rtsp;
+        CameraBrand cameraBrand = cameraBrandMapper.selectById(camera.getBrandId());
+        Integer type = cameraBrand.getStreamType();
+        if (type == 0) {
+            rtsp = cameraBrand.getMainStream();
+        } else {
+            rtsp = cameraBrand.getAssistStream();
+        }
+
+
+        CameraVo cameraVo = new CameraVo();
+        cameraVo.setAreaId(areaId);
+
+        if (camera.getId() == 767){
+            cameraVo.setWsUrl("ws://" + url + "/camera_relay?tcpaddr=" + cameraAccount + "%3A" + cameraPassword + "%40" + camerIp);
+            cameraVo.setRtspUrl("rtsp://" + cameraAccount + ":" + cameraPassword + "@" + camerIp + "/cam/realmonitor?channel=2&subtype=0");
+        }else {
+            cameraVo.setWsUrl("ws://" + url + "/camera_relay?tcpaddr=" + cameraAccount + "%3A" + cameraPassword + "%40" + camerIp);
+            cameraVo.setRtspUrl("rtsp://" + cameraAccount + ":" + cameraPassword + "@" + camerIp + rtsp);
+        }
+//        cameraVo.setWsUrl("ws://" + url + "/camera_relay?tcpaddr=" + cameraAccount + "%3A" + cameraPassword + "%40" + camerIp);
+//        cameraVo.setRtspUrl("rtsp://" + cameraAccount + ":" + cameraPassword + "@" + camerIp + rtsp);
+        cameraVo.setCameraName(cameraName);
+        return cameraVo;
+    }
+
+}

+ 57 - 0
huimv-admin/src/main/java/com/huimv/admin/service/impl/CameraBrandServiceImpl.java

@@ -0,0 +1,57 @@
+package com.huimv.admin.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.huimv.admin.common.utils.Result;
+import com.huimv.admin.common.utils.ResultCode;
+import com.huimv.admin.entity.CameraBase;
+import com.huimv.admin.entity.CameraBrand;
+import com.huimv.admin.mapper.CameraBaseMapper;
+import com.huimv.admin.mapper.CameraBrandMapper;
+import com.huimv.admin.service.ICameraBrandService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author author
+ * @since 2023-02-16
+ */
+@Service
+public class CameraBrandServiceImpl extends ServiceImpl<CameraBrandMapper, CameraBrand> implements ICameraBrandService {
+    @Autowired
+    private CameraBaseMapper cameraMapper;
+
+    @Override
+    public Result listPage(Map<String, Object> params) {
+        Integer current = (Integer) params.get("current");
+        Integer size = (Integer) params.get("size");
+        String brandName = (String) params.get("brandName");
+        Integer farmId = (Integer) params.get("farmId");
+        IPage<CameraBrand> list = page(new Page<>(current, size), new QueryWrapper<CameraBrand>().like(StringUtils.isNotBlank(brandName), "brand_name", brandName).eq("farm_id", farmId));
+        return new Result(ResultCode.SUCCESS, list);
+    }
+
+    @Override
+    public Result removeIds(List<Integer> ids) {
+        for (Integer id : ids) {
+            Integer integer = cameraMapper.selectCount(new QueryWrapper<CameraBase>().eq("brand_id", id));
+            CameraBrand byId = this.getById(id);
+            if (integer != 0) {
+                return new Result(ResultCode.FAIL, "有" + byId.getBrandName() + "的摄像头在使用,删除失败");
+            }
+        }
+        this.removeByIds(ids);
+        return new Result(ResultCode.SUCCESS, "删除成功");
+    }
+
+}

+ 14 - 0
huimv-admin/src/main/resources/mapper/CameraAreaMapper.xml

@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.huimv.admin.mapper.CameraAreaMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.huimv.admin.entity.CameraArea">
+        <id column="id" property="id" />
+        <result column="area_name" property="areaName" />
+        <result column="remark" property="remark" />
+        <result column="farm_id" property="farmId" />
+        <result column="public_url" property="publicUrl" />
+    </resultMap>
+
+</mapper>

+ 26 - 0
huimv-admin/src/main/resources/mapper/CameraBaseMapper.xml

@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.huimv.admin.mapper.CameraBaseMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.huimv.admin.entity.CameraBase">
+        <id column="id" property="id" />
+        <result column="camera_name" property="cameraName" />
+        <result column="account" property="account" />
+        <result column="password" property="password" />
+        <result column="area_name" property="areaName" />
+        <result column="area_id" property="areaId" />
+        <result column="camera_ip" property="cameraIp" />
+        <result column="attention" property="attention" />
+        <result column="brand_name" property="brandName" />
+        <result column="brand_id" property="brandId" />
+        <result column="run_status" property="runStatus" />
+        <result column="sort" property="sort" />
+        <result column="farm_id" property="farmId" />
+        <result column="room_id" property="roomId" />
+        <result column="icc_channel" property="iccChannel" />
+        <result column="function_id" property="functionId" />
+        <result column="is_online" property="isOnline" />
+    </resultMap>
+
+</mapper>

+ 15 - 0
huimv-admin/src/main/resources/mapper/CameraBrandMapper.xml

@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.huimv.admin.mapper.CameraBrandMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.huimv.admin.entity.CameraBrand">
+        <id column="id" property="id" />
+        <result column="brand_name" property="brandName" />
+        <result column="main_stream" property="mainStream" />
+        <result column="assist_stream" property="assistStream" />
+        <result column="stream_type" property="streamType" />
+        <result column="farm_id" property="farmId" />
+    </resultMap>
+
+</mapper>