Browse Source

添加功能

suntianwu 3 years ago
parent
commit
ef64eb2bb9
27 changed files with 1541 additions and 174 deletions
  1. BIN
      lib/AIMCFaceMonitor.jar
  2. 3 0
      pom.xml
  3. 138 0
      src/main/java/com/iden/bms/controller/CameraController.java
  4. 133 0
      src/main/java/com/iden/bms/controller/CommunityController.java
  5. 130 0
      src/main/java/com/iden/bms/controller/CrowdController.java
  6. 124 0
      src/main/java/com/iden/bms/controller/SysRoleController.java
  7. 55 1
      src/main/java/com/iden/bms/controller/SysUserController.java
  8. 1 2
      src/main/java/com/iden/bms/face/FaceIdenSchedule.java
  9. 28 21
      src/main/java/com/iden/bms/face/FaceIdenService.java
  10. 6 0
      src/main/java/com/iden/bms/face/FaceIdenTool.java
  11. 28 0
      src/main/java/com/iden/bms/params/ModifyPasswordParams.java
  12. 133 0
      src/main/java/com/iden/bms/service/CameraService.java
  13. 128 0
      src/main/java/com/iden/bms/service/CommunityService.java
  14. 125 0
      src/main/java/com/iden/bms/service/CrowdService.java
  15. 124 0
      src/main/java/com/iden/bms/service/SysRoleService.java
  16. 37 0
      src/main/java/com/iden/bms/service/SysUserService.java
  17. 26 11
      src/main/java/com/iden/common/entity/IdenWarningKeynoteSta.java
  18. 38 0
      src/main/java/com/iden/common/enums/CameraTypeEnum.java
  19. 38 0
      src/main/java/com/iden/common/enums/ConnectStatusEnum.java
  20. 1 1
      src/main/java/com/iden/common/mapper/IdenWarningKeynoteStaMapper.java
  21. 1 1
      src/main/java/com/iden/common/service/IdenWarningKeynoteStaService.java
  22. 1 1
      src/main/java/com/iden/common/service/impl/IdenWarningKeynoteStaServiceImpl.java
  23. 88 0
      src/main/java/com/iden/common/vo/CameraVO.java
  24. 85 0
      src/main/java/com/iden/common/vo/CommunityVO.java
  25. 68 0
      src/main/java/com/iden/common/vo/CrowdVO.java
  26. 2 2
      src/main/resources/application-dev.properties
  27. 0 134
      src/test/java/com/iden/FaceTest.java

BIN
lib/AIMCFaceMonitor.jar


+ 3 - 0
pom.xml

@@ -289,6 +289,9 @@
             <plugin>
                 <groupId>org.springframework.boot</groupId>
                 <artifactId>spring-boot-maven-plugin</artifactId>
+                <configuration>
+                    <includeSystemScope>true</includeSystemScope>
+                </configuration>
             </plugin>
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>

+ 138 - 0
src/main/java/com/iden/bms/controller/CameraController.java

@@ -0,0 +1,138 @@
+package com.iden.bms.controller;
+
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.iden.bms.service.CameraService;
+import com.iden.common.annotation.Permission;
+import com.iden.common.exception.BDException;
+import com.iden.common.util.PageResult;
+import com.iden.common.util.Result;
+import com.iden.common.util.WebPageUtils;
+import com.iden.common.vo.CameraVO;
+import com.iden.common.vo.PageReqVO;
+import com.iden.common.vo.UserLogindConvertVO;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.List;
+
+/**
+ * @Author: lilt
+ * @Date: 2021/5/26
+ * @Desc:
+ */
+@RestController
+@Api(value = "CameraController", tags = { "摄像头管理" })
+@Slf4j
+@RequestMapping("/bms/camera")
+@Permission
+public class CameraController {
+
+    @Autowired
+    private CameraService cameraService;
+
+
+
+    @GetMapping("/listCamera")
+    @ApiOperation(value = "摄像头列表分页 ")
+    @ApiImplicitParams(value = {
+            @ApiImplicitParam(paramType = "query", name = "type", value = "摄像头类型,1摄像机,2抓拍设备"),
+            @ApiImplicitParam(paramType = "query", name = "district", value = "所属区域"),
+            @ApiImplicitParam(paramType = "query", name = "subdistrict", value = "所属街道"),
+            @ApiImplicitParam(paramType = "query", name = "communityId", value = "小区ID"),
+            @ApiImplicitParam(paramType = "query", name = "name", value = "摄像头名称")
+
+    })
+    public PageResult<List<CameraVO>> listCamera(HttpServletRequest request, @RequestHeader(value = "token") String token,
+                                                 @RequestParam(value = "type", required = true) String type,
+                                                 @RequestParam(value = "district", required = false) String district,
+                                                 @RequestParam(value = "subdistrict", required = false) String subdistrict,
+                                                 @RequestParam(value = "communityId", required = false) String communityId,
+                                                 @RequestParam(value = "name", required = false) String name,
+                                                 PageReqVO pageReqVo){
+        try {
+            UserLogindConvertVO loginUser = WebPageUtils.getCurrentLoginedUser(request);
+            IPage<CameraVO> pageResponse = this.cameraService.listCamera(type,district,subdistrict,communityId,name,loginUser ,pageReqVo);
+            return PageResult.success(pageResponse.getRecords(),pageResponse.getCurrent(),pageResponse.getSize(),pageResponse.getTotal());
+        }catch (BDException e) {
+            log.error("摄像头列表查询-分页列表出现异常",e);
+            return  PageResult.error(e.getMessage());
+        } catch (Exception e) {
+            log.error("摄像头管理: 摄像头列表查询出现异常",e);
+            return PageResult.error( "获取列表失败");
+        }
+    }
+
+    @PostMapping("/addCamera")
+    @ApiOperation(value = "新增摄像头")
+    public Result<Object> addCamera(HttpServletRequest request,@RequestHeader("token") String token,
+                                   @RequestBody CameraVO vo){
+        try {
+
+            UserLogindConvertVO loginUser = WebPageUtils.getCurrentLoginedUser(request);
+            int flag = this.cameraService.createCamera(vo,loginUser);
+            if (flag == 1) {
+                return  Result.error("名称已存在!");
+            }  if (flag == 2) {
+                return  Result.error("编码已存在!");
+            }  else if (flag == 0) {
+                return  Result.success("新增成功!");
+            } else {
+                return  Result.error("新增失败!");
+            }
+
+        }catch (BDException e) {
+            log.error("新增摄像头-出现异常",e);
+            return Result.error(e.getMessage());
+        } catch (Exception e) {
+            log.error("摄像头管理: 新增摄像头出现异常",e);
+            return Result.error("新增失败!");
+        }
+    }
+
+    @PostMapping("/updateCamera")
+    @ApiOperation(value = "修改摄像头")
+    public Result<Object> updateCamera(HttpServletRequest request,@RequestHeader("token") String token,
+                                 @RequestBody CameraVO vo){
+        try {
+            this.cameraService.updateCamera(vo);
+            return  Result.success("修改成功!");
+        }catch (BDException e) {
+            log.error("修改摄像头-出现异常",e);
+            return Result.error(e.getMessage());
+        } catch (Exception e) {
+            log.error("摄像头管理: 修改摄像头出现异常",e);
+            return Result.error("修改失败!");
+        }
+    }
+
+    @GetMapping("/getCameraInfo/{id}")
+    @ApiOperation(value = "摄像头详情")
+    public Result<CameraVO> getCameraInfo(HttpServletRequest request, @RequestHeader("token") String token, @PathVariable("id") Long id){
+        CameraVO orderInfo = this.cameraService.getCameraById(id);
+        return  Result.success("查询成功!",orderInfo);
+    }
+
+    @PostMapping("/deleteCamera/{id}")
+    @ApiOperation(value = "删除摄像头")
+    public Result<Object> deleteCamera(HttpServletRequest request,@RequestHeader("token") String token,
+                                 @PathVariable("id") Long id){
+        try {
+            if( this.cameraService.deleteById(id)){
+                return  Result.success("删除成功!");
+            } else {
+                return Result.error("摄像头被引用,删除失败!");
+            }
+
+        } catch (Exception e) {
+            log.error("摄像头管理: 删除出现异常",e);
+            return Result.error("删除失败!");
+        }
+    }
+}

+ 133 - 0
src/main/java/com/iden/bms/controller/CommunityController.java

@@ -0,0 +1,133 @@
+package com.iden.bms.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.iden.bms.service.CommunityService;
+import com.iden.common.annotation.Permission;
+import com.iden.common.exception.BDException;
+import com.iden.common.util.PageResult;
+import com.iden.common.util.Result;
+import com.iden.common.util.WebPageUtils;
+import com.iden.common.vo.PageReqVO;
+import com.iden.common.vo.CommunityVO;
+import com.iden.common.vo.UserLogindConvertVO;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.List;
+
+/**
+ * @Author: lilt
+ * @Date: 2021/5/26
+ * @Desc:
+ */
+@RestController
+@Api(value = "CommunityController", tags = { "小区管理" })
+@Slf4j
+@RequestMapping("/bms/community")
+@Permission
+public class CommunityController {
+
+    @Autowired
+    private CommunityService communityService;
+
+
+
+    @GetMapping("/listCommunity")
+    @ApiOperation(value = "小区列表分页 ")
+    @ApiImplicitParams(value = {
+            @ApiImplicitParam(paramType = "query", name = "district", value = "所属区域"),
+            @ApiImplicitParam(paramType = "query", name = "subdistrict", value = "所属街道"),
+            @ApiImplicitParam(paramType = "query", name = "name", value = "小区名称")
+
+    })
+    public PageResult<List<CommunityVO>> listCommunity(HttpServletRequest request, @RequestHeader(value = "token") String token,
+                                                  @RequestParam(value = "district", required = false) String district,
+                                                  @RequestParam(value = "subdistrict", required = false) String subdistrict,
+                                                       @RequestParam(value = "name", required = false) String name,
+                                                  PageReqVO pageReqVo){
+        try {
+            UserLogindConvertVO loginUser = WebPageUtils.getCurrentLoginedUser(request);
+            IPage<CommunityVO> pageResponse = this.communityService.listCommunity(district,subdistrict,name,loginUser ,pageReqVo);
+            return PageResult.success(pageResponse.getRecords(),pageResponse.getCurrent(),pageResponse.getSize(),pageResponse.getTotal());
+        }catch (BDException e) {
+            log.error("小区列表查询-分页列表出现异常",e);
+            return  PageResult.error(e.getMessage());
+        } catch (Exception e) {
+            log.error("小区管理: 小区列表查询出现异常",e);
+            return PageResult.error( "获取列表失败");
+        }
+    }
+
+    @PostMapping("/addCommunity")
+    @ApiOperation(value = "新增小区")
+    public Result<Object> addCommunity(HttpServletRequest request,@RequestHeader("token") String token,
+                                   @RequestBody CommunityVO vo){
+        try {
+
+            UserLogindConvertVO loginUser = WebPageUtils.getCurrentLoginedUser(request);
+            int flag = this.communityService.createCommunity(vo,loginUser);
+            if (flag == 1) {
+                return  Result.error("名称已存在!");
+            }  if (flag == 2) {
+                return  Result.error("编码已存在!");
+            }  else if (flag == 0) {
+                return  Result.success("新增成功!");
+            } else {
+                return  Result.error("新增失败!");
+            }
+
+        }catch (BDException e) {
+            log.error("新增小区-出现异常",e);
+            return Result.error(e.getMessage());
+        } catch (Exception e) {
+            log.error("小区管理: 新增小区出现异常",e);
+            return Result.error("新增失败!");
+        }
+    }
+
+    @PostMapping("/updateCommunity")
+    @ApiOperation(value = "修改小区")
+    public Result<Object> updateCommunity(HttpServletRequest request,@RequestHeader("token") String token,
+                                 @RequestBody CommunityVO vo){
+        try {
+            this.communityService.updateCommunity(vo);
+            return  Result.success("修改成功!");
+        }catch (BDException e) {
+            log.error("修改小区-出现异常",e);
+            return Result.error(e.getMessage());
+        } catch (Exception e) {
+            log.error("小区管理: 修改小区出现异常",e);
+            return Result.error("修改失败!");
+        }
+    }
+
+    @GetMapping("/getCommunityInfo/{id}")
+    @ApiOperation(value = "小区详情")
+    public Result<CommunityVO> getCommunityInfo(HttpServletRequest request, @RequestHeader("token") String token, @PathVariable("id") Long id){
+        CommunityVO orderInfo = this.communityService.getCommunityById(id);
+        return  Result.success("查询成功!",orderInfo);
+    }
+
+    @PostMapping("/deleteCommunity/{id}")
+    @ApiOperation(value = "删除小区")
+    public Result<Object> deleteCommunity(HttpServletRequest request,@RequestHeader("token") String token,
+                                 @PathVariable("id") Long id){
+        try {
+            if( this.communityService.deleteById(id)){
+                return  Result.success("删除成功!");
+            } else {
+                return Result.error("小区被引用,删除失败!");
+            }
+
+        } catch (Exception e) {
+            log.error("小区管理: 删除出现异常",e);
+            return Result.error("删除失败!");
+        }
+    }
+}

+ 130 - 0
src/main/java/com/iden/bms/controller/CrowdController.java

@@ -0,0 +1,130 @@
+package com.iden.bms.controller;
+
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.iden.bms.service.CrowdService;
+import com.iden.common.annotation.Permission;
+import com.iden.common.exception.BDException;
+import com.iden.common.util.PageResult;
+import com.iden.common.util.Result;
+import com.iden.common.util.WebPageUtils;
+import com.iden.common.vo.CrowdVO;
+import com.iden.common.vo.PageReqVO;
+import com.iden.common.vo.UserLogindConvertVO;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.List;
+
+/**
+ * @Author: lilt
+ * @Date: 2021/5/26
+ * @Desc:
+ */
+@RestController
+@Api(value = "CrowdController", tags = { "人群管理" })
+@Slf4j
+@RequestMapping("/bms/crowd")
+@Permission
+public class CrowdController {
+
+    @Autowired
+    private CrowdService crowdService;
+
+
+
+    @GetMapping("/listCrowd")
+    @ApiOperation(value = "人群列表分页 ")
+    @ApiImplicitParams(value = {
+            @ApiImplicitParam(paramType = "query", name = "name", value = "人群名称")
+
+    })
+    public PageResult<List<CrowdVO>> listCrowd(HttpServletRequest request, @RequestHeader(value = "token") String token,
+                                                 @RequestParam(value = "name", required = false) String name,
+                                                 PageReqVO pageReqVo){
+        try {
+            UserLogindConvertVO loginUser = WebPageUtils.getCurrentLoginedUser(request);
+            IPage<CrowdVO> pageResponse = this.crowdService.listCrowd(name,loginUser ,pageReqVo);
+            return PageResult.success(pageResponse.getRecords(),pageResponse.getCurrent(),pageResponse.getSize(),pageResponse.getTotal());
+        }catch (BDException e) {
+            log.error("人群列表查询-分页列表出现异常",e);
+            return  PageResult.error(e.getMessage());
+        } catch (Exception e) {
+            log.error("人群管理: 人群列表查询出现异常",e);
+            return PageResult.error( "获取列表失败");
+        }
+    }
+
+    @PostMapping("/addCrowd")
+    @ApiOperation(value = "新增人群")
+    public Result<Object> addCrowd(HttpServletRequest request,@RequestHeader("token") String token,
+                                   @RequestBody CrowdVO vo){
+        try {
+
+            UserLogindConvertVO loginUser = WebPageUtils.getCurrentLoginedUser(request);
+            int flag = this.crowdService.createCrowd(vo,loginUser);
+            if (flag == 1) {
+                return  Result.error("名称已存在!");
+            }  if (flag == 2) {
+                return  Result.error("编码已存在!");
+            }  else if (flag == 0) {
+                return  Result.success("新增成功!");
+            } else {
+                return  Result.error("新增失败!");
+            }
+
+        }catch (BDException e) {
+            log.error("新增人群-出现异常",e);
+            return Result.error(e.getMessage());
+        } catch (Exception e) {
+            log.error("人群管理: 新增人群出现异常",e);
+            return Result.error("新增失败!");
+        }
+    }
+
+    @PostMapping("/updateCrowd")
+    @ApiOperation(value = "修改人群")
+    public Result<Object> updateCrowd(HttpServletRequest request,@RequestHeader("token") String token,
+                                 @RequestBody CrowdVO vo){
+        try {
+            this.crowdService.updateCrowd(vo);
+            return  Result.success("修改成功!");
+        }catch (BDException e) {
+            log.error("修改人群-出现异常",e);
+            return Result.error(e.getMessage());
+        } catch (Exception e) {
+            log.error("人群管理: 修改人群出现异常",e);
+            return Result.error("修改失败!");
+        }
+    }
+
+    @GetMapping("/getCrowdInfo/{id}")
+    @ApiOperation(value = "人群详情")
+    public Result<CrowdVO> getCrowdInfo(HttpServletRequest request, @RequestHeader("token") String token, @PathVariable("id") Long id){
+        CrowdVO orderInfo = this.crowdService.getCrowdById(id);
+        return  Result.success("查询成功!",orderInfo);
+    }
+
+    @PostMapping("/deleteCrowd/{id}")
+    @ApiOperation(value = "删除人群")
+    public Result<Object> deleteCrowd(HttpServletRequest request,@RequestHeader("token") String token,
+                                 @PathVariable("id") Long id){
+        try {
+            if( this.crowdService.deleteById(id)){
+                return  Result.success("删除成功!");
+            } else {
+                return Result.error("人群被引用,删除失败!");
+            }
+
+        } catch (Exception e) {
+            log.error("人群管理: 删除出现异常",e);
+            return Result.error("删除失败!");
+        }
+    }
+}

+ 124 - 0
src/main/java/com/iden/bms/controller/SysRoleController.java

@@ -0,0 +1,124 @@
+package com.iden.bms.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.iden.bms.service.SysRoleService;
+import com.iden.common.annotation.Permission;
+import com.iden.common.exception.BDException;
+import com.iden.common.util.PageResult;
+import com.iden.common.util.Result;
+import com.iden.common.util.WebPageUtils;
+import com.iden.common.vo.SysRoleVO;
+import com.iden.common.vo.PageReqVO;
+import com.iden.common.vo.UserLogindConvertVO;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.List;
+
+/**
+ * @Author: lilt
+ * @Date: 2021/5/26
+ * @Desc:
+ */
+@RestController
+@Api(value = "SysRoleController", tags = { "角色管理" })
+@Slf4j
+@RequestMapping("/bms/sysRole")
+@Permission
+public class SysRoleController {
+
+    @Autowired
+    private SysRoleService sysRoleService;
+
+
+
+    @GetMapping("/listSysRole")
+    @ApiOperation(value = "角色列表分页 ")
+    public PageResult<List<SysRoleVO>> listSysRole(HttpServletRequest request, @RequestHeader(value = "token") String token,
+                                                  PageReqVO pageReqVo){
+        try {
+            UserLogindConvertVO loginUser = WebPageUtils.getCurrentLoginedUser(request);
+            IPage<SysRoleVO> pageResponse = this.sysRoleService.listSysRole(loginUser ,pageReqVo);
+            return PageResult.success(pageResponse.getRecords(),pageResponse.getCurrent(),pageResponse.getSize(),pageResponse.getTotal());
+        }catch (BDException e) {
+            log.error("角色列表查询-分页列表出现异常",e);
+            return  PageResult.error(e.getMessage());
+        } catch (Exception e) {
+            log.error("角色管理: 角色列表查询出现异常",e);
+            return PageResult.error( "获取列表失败");
+        }
+    }
+
+    @PostMapping("/addSysRole")
+    @ApiOperation(value = "新增角色")
+    public Result<Object> addSysRole(HttpServletRequest request,@RequestHeader("token") String token,
+                                   @RequestBody SysRoleVO vo){
+        try {
+
+            UserLogindConvertVO loginUser = WebPageUtils.getCurrentLoginedUser(request);
+            int flag = this.sysRoleService.createSysRole(vo,loginUser);
+            if (flag == 1) {
+                return  Result.error("名称已存在!");
+            }  if (flag == 2) {
+                return  Result.error("编码已存在!");
+            }  else if (flag == 0) {
+                return  Result.success("新增成功!");
+            } else {
+                return  Result.error("新增失败!");
+            }
+
+        }catch (BDException e) {
+            log.error("新增角色-出现异常",e);
+            return Result.error(e.getMessage());
+        } catch (Exception e) {
+            log.error("角色管理: 新增角色出现异常",e);
+            return Result.error("新增失败!");
+        }
+    }
+
+    @PostMapping("/updateSysRole")
+    @ApiOperation(value = "修改角色")
+    public Result<Object> updateSysRole(@RequestHeader("token") String token,
+                                 @RequestBody SysRoleVO vo){
+        try {
+            this.sysRoleService.updateSysRole(vo);
+            return  Result.success("修改成功!");
+        }catch (BDException e) {
+            log.error("修改角色-出现异常",e);
+            return Result.error(e.getMessage());
+        } catch (Exception e) {
+            log.error("角色管理: 修改角色出现异常",e);
+            return Result.error("修改失败!");
+        }
+    }
+
+    @GetMapping("/getSysRoleInfo/{id}")
+    @ApiOperation(value = "角色详情")
+    public Result<SysRoleVO> getSysRoleInfo(HttpServletRequest request, @RequestHeader("token") String token, @PathVariable("id") Long id){
+        SysRoleVO orderInfo = this.sysRoleService.getSysRoleById(id);
+        return  Result.success("查询成功!",orderInfo);
+    }
+
+    @PostMapping("/deleteSysRole/{id}")
+    @ApiOperation(value = "删除角色")
+    public Result<Object> deleteSysRole(HttpServletRequest request,@RequestHeader("token") String token,
+                                 @PathVariable("id") Long id){
+        try {
+            if( this.sysRoleService.deleteById(id)){
+                return  Result.success("删除成功!");
+            } else {
+                return Result.error("角色被引用,删除失败!");
+            }
+
+        } catch (Exception e) {
+            log.error("角色管理: 删除出现异常",e);
+            return Result.error("删除失败!");
+        }
+    }
+}

+ 55 - 1
src/main/java/com/iden/bms/controller/SysUserController.java

@@ -1,9 +1,13 @@
 package com.iden.bms.controller;
 
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.iden.bms.params.ModifyPasswordParams;
 import com.iden.bms.service.SysUserService;
 import com.iden.common.annotation.Permission;
+import com.iden.common.entity.IdenSysUser;
 import com.iden.common.exception.BDException;
+import com.iden.common.service.IdenSysUserService;
 import com.iden.common.util.PageResult;
 import com.iden.common.util.Result;
 import com.iden.common.util.WebPageUtils;
@@ -16,10 +20,12 @@ import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.codec.digest.DigestUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletRequest;
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -36,7 +42,8 @@ public class SysUserController {
 
     @Autowired
     private SysUserService sysUserService;
-
+    @Autowired
+    private IdenSysUserService idenSysUserService;
 
 
     @GetMapping("/listSysUser")
@@ -128,4 +135,51 @@ public class SysUserController {
             return Result.error("删除失败!");
         }
     }
+
+    @PostMapping("/resetPassword/{id}")
+    @ApiOperation(value = "重置密码")
+    public Result<Object> resetPassword(@RequestHeader("token") String token,
+                                                      @PathVariable("id") Long id){
+        try {
+
+            if (sysUserService.resetPassword(id)){
+                return  Result.success("重置成功!");
+            } else {
+                return  Result.error("重置失败!");
+            }
+
+        }catch (BDException e) {
+            log.error("重置密码-出现异常",e);
+            return Result.error(e.getMessage());
+        } catch (Exception e) {
+            log.error("用户管理: 重置密码出现异常",e);
+            return Result.error("重置密码失败!");
+        }
+    }
+
+    @PostMapping("/modifyPassword")
+    @ApiOperation(value = "修改密码")
+    public Result<Object> modifyPassword(HttpServletRequest request,
+                                         @RequestHeader("token") String token,
+                                         @RequestBody ModifyPasswordParams parmas){
+        try {
+            if(StringUtils.isEmpty(parmas.getNewPassword()) || !parmas.getNewPassword().equals(parmas.getConfirmNewPassword())){
+                return  Result.error("新密码和确认新密码不一致!");
+            }
+            UserLogindConvertVO loginUser = WebPageUtils.getCurrentLoginedUser(request);
+
+            if (sysUserService.modifyPassword(loginUser.getId(),parmas)){
+                return  Result.success("修改密码成功!");
+            } else {
+                return  Result.error("修改密码失败!");
+            }
+
+        }catch (BDException e) {
+            log.error("修改密码-出现异常",e);
+            return Result.error(e.getMessage());
+        } catch (Exception e) {
+            log.error("用户管理: 修改密码出现异常",e);
+            return Result.error("修改密码失败!");
+        }
+    }
 }

+ 1 - 2
src/main/java/com/iden/bms/face/FaceIdenSchedule.java

@@ -1,7 +1,6 @@
 package com.iden.bms.face;
 
 
-import com.iden.common.service.IdenImageStoreService;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.scheduling.annotation.Async;
 import org.springframework.scheduling.annotation.EnableAsync;
@@ -22,7 +21,7 @@ public class FaceIdenSchedule {
     private FaceIdenService faceIdenService;
 
     @Async
-    @Scheduled(cron = "0 0/10 0 * * ?")
+    @Scheduled(cron = "0 0/1 * * * ?")
     public void exe() {
         try {
             faceIdenService.exe();

+ 28 - 21
src/main/java/com/iden/bms/face/FaceIdenService.java

@@ -17,6 +17,8 @@ import com.iden.common.service.IdenImageStoreService;
 
 import com.iden.common.util.DateUtils;
 import org.apache.commons.lang3.StringUtils;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 
@@ -24,7 +26,7 @@ import javax.annotation.Resource;
 import java.io.File;
 import java.util.ArrayList;
 import java.util.List;
-import java.util.Locale;
+
 
 
 /**
@@ -41,9 +43,10 @@ public class FaceIdenService {
     @Resource
     private IdenCommunityService idenCommunityService;
 
-    @Value("${data.image.root:#{null}}")
-    private String imageRoot;
+    @Value("${iden.root:#{null}}")
+    private String idenRoot;
 
+    private static final Logger logger = LogManager.getLogger(FaceIdenService.class);
 
     /**
      *
@@ -51,21 +54,24 @@ public class FaceIdenService {
      */
 
     public void exe() throws Exception {
+        logger.info("FaceIdenService.exe start...");
 
-        File srcImageDirFile = new File(imageRoot + "src/image");
+        File srcImageDirFile = new File(idenRoot + "data/origin/image");
         //初始化引擎
         FaceMonitor faceMonitor = new FaceMonitor();
-        faceMonitor.init("./model", 0);
+        faceMonitor.init(idenRoot + "face/model", 0);
 
         //使用摄像头编码做目录名,里面图像或视频的名称上加上拍照时间,
-        // 比如  2021-12-17_12:30:23.jpg     2021-12-17_12:30:23~2021-12-17_12:33:23.avi
+        // 比如  20211217123023.jpg     20211217123023~20211217123323.mp4
         if (srcImageDirFile.isDirectory()) {
             File[]  cameraCodeDirs = srcImageDirFile.listFiles();
             if(cameraCodeDirs != null && cameraCodeDirs.length > 0){
+                logger.info("FaceIdenService.exe ...1");
                 for(File cameraCodedir : cameraCodeDirs) {
                     if(cameraCodedir.isDirectory()){
                         File[] imgFiles = cameraCodedir.listFiles();
                         if(imgFiles != null && imgFiles.length > 0){
+                            logger.info("FaceIdenService.exe ...2");
                             String cameraCode = cameraCodedir.getName();
                             QueryWrapper<IdenCamera> queryWrapper = new QueryWrapper<>();
                             queryWrapper.lambda().eq(IdenCamera::getCode,cameraCode);
@@ -73,36 +79,42 @@ public class FaceIdenService {
                             if(idenCamera == null){
                                 continue;
                             }
-
+                            logger.info("FaceIdenService.exe ...3");
                            //获取特征码
                             FaceModel[] faceModels = FaceIdenTool.extractFeature(faceMonitor,imgFiles);
 
                             List<IdenImageStore> idenImageStoreList = new ArrayList<>();
-                            for(File imgFile : imgFiles) {
+                            for(int i = 0; i < imgFiles.length; i++) {
+                                File imgFile  = imgFiles[i];
                                 IdenImageStore idenImageStore = new IdenImageStore();
                                 idenImageStore.setCameraId(idenCamera.getId());
                                 idenImageStore.setCommunityId(idenCamera.getCommunityId());
                                 String photographPlace = idenCamera.getPlace();
+                                logger.info("FaceIdenService.exe ...4");
                                 if (StringUtils.isEmpty(photographPlace)) {
                                     IdenCommunity idenCommunity = idenCommunityService.getById(idenCamera.getCommunityId());
                                     if(idenCommunity != null) {
                                         photographPlace = idenCommunity.getName() + "(" + idenCamera.getLongitude() + ":" + idenCamera.getLatitude() + ")";
                                     }
                                 }
-
+                                logger.info("FaceIdenService.exe ...5");
                                 idenImageStore.setPhotographPlace(photographPlace);
 
                                 String photographTime = imgFile.getName().replace(".jpg","");
-                                idenImageStore.setPhotographTime(DateUtils.strToDate(photographTime,"yyyy-MM-dd_HH:mm:ss"));
+                                idenImageStore.setPhotographTime(DateUtils.strToDate(photographTime,"yyyyMMddHHmmss"));
 
-                                idenImageStore.setFeatPtr(FaceIdenTool.getFeatPtr(faceModels,imgFile.getName()));
+                                idenImageStore.setFeatPtr(FaceIdenTool.getFeatPtr(faceModels,String.valueOf(i)));
 
-                                File finalDir = new File(imgFile.getParentFile().getAbsolutePath().replace("src","final"));
+                                File finalDir = new File(imgFile.getParentFile().getAbsolutePath().replace("origin","final"));
                                 if(!finalDir.exists()){
                                     finalDir.mkdirs();
                                 }
+                                logger.info("FaceIdenService.exe ...finalDir == " + finalDir.getAbsolutePath());
+                                logger.info("FaceIdenService.exe ...imgFile.getName() == " + imgFile.getName());
+                                File finalImgFile = new File(finalDir, imgFile.getName());
+
+                                logger.info("FaceIdenService.exe ...finalImgFile == " + finalImgFile.getAbsolutePath());
 
-                                File finalImgFile = new File(finalDir + imgFile.getName());
                                 imgFile.renameTo(finalImgFile);//移动到最终目录
 
                                 idenImageStore.setImage(finalImgFile.getAbsolutePath());
@@ -111,9 +123,10 @@ public class FaceIdenService {
 
                                 idenImageStoreList.add(idenImageStore);
                             }
-
+                            logger.info("FaceIdenService.exe ...7");
                             //把图像存到图库中
                             if (CollUtil.isNotEmpty(idenImageStoreList)) {
+                                logger.info("FaceIdenService.exe ...8");
                                 idenImageStoreService.saveBatch(idenImageStoreList);
                             }
                         }
@@ -122,13 +135,7 @@ public class FaceIdenService {
                 }
             }
         }
+        logger.info("FaceIdenService.exe end");
     }
 
-
-     public static void main(String[] args) {
-         String faceTestDir = "./data/";
-         String faceFilePath = String.format(Locale.CHINA, "%s%d.jpg", faceTestDir, 1);
-         System.out.println(faceFilePath);
-     }
-
 }

+ 6 - 0
src/main/java/com/iden/bms/face/FaceIdenTool.java

@@ -2,12 +2,15 @@ package com.iden.bms.face;
 
 import com.face.monitor.FaceMonitor;
 import com.face.monitor.model.FaceModel;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 
 import java.io.*;
 import java.util.ArrayList;
 import java.util.List;
 
 public class FaceIdenTool {
+    private static final Logger logger = LogManager.getLogger(FaceIdenTool.class);
 
     public static FaceModel[] extractFeature(FaceMonitor faceMonitor, File[] imgFiles){
         List<byte[]> faceTestImageList = new ArrayList<>();
@@ -21,6 +24,9 @@ public class FaceIdenTool {
     public static String getFeatPtr(FaceModel[] faceModels,String name) {
         if(faceModels != null && faceModels.length > 0) {
             for(FaceModel faceModel : faceModels){
+                logger.info("name; " + faceModel.getName());
+                logger.info("personId: " + faceModel.getPersonId());
+                //logger.info("featValue: " + faceModel.getFeatValue());
                 if (name.equals(faceModel.getName())) {
                     return new String(faceModel.getFeatValue());
                 }

+ 28 - 0
src/main/java/com/iden/bms/params/ModifyPasswordParams.java

@@ -0,0 +1,28 @@
+package com.iden.bms.params;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+@Getter
+@Setter
+public class ModifyPasswordParams {
+    /**
+     * 当前密码
+     */
+    @ApiModelProperty("当前密码")
+    private String currPassword;
+
+    /**
+     * 新密码
+     */
+    @ApiModelProperty("新密码")
+    private String newPassword;
+
+    /**
+     * 确认新密码
+     */
+    @ApiModelProperty("确认新密码")
+    private String confirmNewPassword;
+
+}

+ 133 - 0
src/main/java/com/iden/bms/service/CameraService.java

@@ -0,0 +1,133 @@
+package com.iden.bms.service;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.iden.common.entity.IdenCamera;
+import com.iden.common.enums.CameraTypeEnum;
+import com.iden.common.enums.ConnectStatusEnum;
+import com.iden.common.service.IdenCameraService;
+import com.iden.common.util.MyBeanUtils;
+import com.iden.common.vo.CameraVO;
+import com.iden.common.vo.PageReqVO;
+import com.iden.common.vo.UserLogindConvertVO;
+import org.springframework.beans.BeanUtils;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+/**
+ *
+ * @author makejava
+ * @since 2021-05-21 00:08:38
+ */
+@Service
+public class CameraService {
+
+    @Resource
+    private IdenCameraService idenCameraService;
+
+    
+
+    /**
+     * 查询摄像头列表
+     * @return
+             */
+    public IPage<CameraVO> listCamera(String type,String district, String subdistrict,String communityId, String name, UserLogindConvertVO loginUser, PageReqVO pageReqVo) {
+            IPage<IdenCamera> page = new Page<>(pageReqVo.getCurrent(), pageReqVo.getPageSize());
+            QueryWrapper<IdenCamera> queryWrapper = new QueryWrapper<>();
+            queryWrapper.lambda().like(StrUtil.isNotEmpty(name),IdenCamera::getName,name)
+                    .eq(StrUtil.isNotEmpty(district),IdenCamera::getDistrict,district)
+                    .eq(StrUtil.isNotEmpty(subdistrict),IdenCamera::getSubdistrict,subdistrict)
+                    .eq(StrUtil.isNotEmpty(subdistrict),IdenCamera::getCommunityId,communityId)
+                    .eq(StrUtil.isNotEmpty(type),IdenCamera::getType,type)
+                    .orderByAsc(IdenCamera::getCode);
+
+            IPage<IdenCamera> pageRes = this.idenCameraService.page(page, queryWrapper);
+            IPage<CameraVO> results = new Page<>(pageRes.getCurrent(),pageRes.getSize(),pageRes.getTotal());
+            if(CollUtil.isNotEmpty(pageRes.getRecords())){
+                List<CameraVO> list = new ArrayList<>();
+                pageRes.getRecords().forEach(item -> {
+                    CameraVO resVO = new CameraVO();
+                    BeanUtils.copyProperties(item,resVO);
+                    resVO.setStatusName(ConnectStatusEnum.getValueToName(resVO.getCode()));
+                    resVO.setTypeName(CameraTypeEnum.getValueToName(resVO.getType()));
+                    list.add(resVO);
+                });
+                results.setRecords(list);
+            }
+            return results;
+    }
+
+    /**
+     * 删除摄像头
+     * @param id
+     * @return
+     */
+    public boolean deleteById(Long id){
+        return this.idenCameraService.removeById(id);
+    }
+
+    /**
+     * 详情
+     * @param id
+     * @return
+     */
+    public CameraVO getCameraById(Long id){
+        IdenCamera idenCamera = this.idenCameraService.getById(id);
+        if (idenCamera!=null){
+            CameraVO resVO = new CameraVO();
+            BeanUtil.copyProperties(idenCamera,resVO);
+            return resVO;
+        }
+        return null;
+    }
+
+
+    /**
+     * 保存摄像头
+     * @param vo
+     */
+    @Transactional(rollbackFor = Exception.class)
+    public int createCamera(CameraVO vo, UserLogindConvertVO loginUser){
+        QueryWrapper<IdenCamera> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(IdenCamera::getName,vo.getName());
+        if(idenCameraService.count(queryWrapper) > 0){
+            return 1;
+        }
+        QueryWrapper<IdenCamera> queryWrapper2 = new QueryWrapper<>();
+        queryWrapper2.lambda().eq(IdenCamera::getCode,vo.getCode());
+        if(idenCameraService.count(queryWrapper2) > 0){
+            return 2;
+        }
+        //保存摄像头
+        IdenCamera idenCamera = new IdenCamera();
+        BeanUtil.copyProperties(vo,idenCamera);
+        idenCamera.setCreateTime(new Date());
+
+        this.idenCameraService.save(idenCamera);
+        return 0;
+    }
+
+    /**
+     * 修改摄像头
+     * @param vo
+     */
+    @Transactional(rollbackFor = Exception.class)
+    public void updateCamera(CameraVO vo){
+        //保存摄像头
+        IdenCamera idenCamera = this.idenCameraService.getById(vo.getId());
+        MyBeanUtils.copyProperties(vo,idenCamera);
+        idenCamera.setModifyTime(new Date());
+        this.idenCameraService.updateById(idenCamera);
+
+    }
+
+}

+ 128 - 0
src/main/java/com/iden/bms/service/CommunityService.java

@@ -0,0 +1,128 @@
+package com.iden.bms.service;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.iden.common.entity.IdenCommunity;
+
+import com.iden.common.service.IdenCommunityService;
+import com.iden.common.util.MyBeanUtils;
+import com.iden.common.vo.CommunityVO;
+import com.iden.common.vo.PageReqVO;
+import com.iden.common.vo.UserLogindConvertVO;
+import org.springframework.beans.BeanUtils;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+/**
+ *
+ * @author makejava
+ * @since 2021-05-21 00:08:38
+ */
+@Service
+public class CommunityService {
+
+    @Resource
+    private IdenCommunityService idenCommunityService;
+
+    
+
+    /**
+     * 查询小区列表
+     * @return
+             */
+    public IPage<CommunityVO> listCommunity(String district, String subdistrict,String name, UserLogindConvertVO loginUser, PageReqVO pageReqVo) {
+            IPage<IdenCommunity> page = new Page<>(pageReqVo.getCurrent(), pageReqVo.getPageSize());
+            QueryWrapper<IdenCommunity> queryWrapper = new QueryWrapper<>();
+            queryWrapper.lambda().like(StrUtil.isNotEmpty(name),IdenCommunity::getName,name)
+                    .eq(StrUtil.isNotEmpty(district),IdenCommunity::getDistrict,district)
+                    .eq(StrUtil.isNotEmpty(subdistrict),IdenCommunity::getSubdistrict,subdistrict)
+                    .orderByAsc(IdenCommunity::getCode);
+
+            IPage<IdenCommunity> pageRes = this.idenCommunityService.page(page, queryWrapper);
+            IPage<CommunityVO> results = new Page<>(pageRes.getCurrent(),pageRes.getSize(),pageRes.getTotal());
+            if(CollUtil.isNotEmpty(pageRes.getRecords())){
+                List<CommunityVO> list = new ArrayList<>();
+                pageRes.getRecords().forEach(item -> {
+                    CommunityVO resVO = new CommunityVO();
+                    BeanUtils.copyProperties(item,resVO);
+                    list.add(resVO);
+                });
+                results.setRecords(list);
+            }
+            return results;
+    }
+
+    /**
+     * 删除小区
+     * @param id
+     * @return
+     */
+    public boolean deleteById(Long id){
+        return this.idenCommunityService.removeById(id);
+    }
+
+    /**
+     * 详情
+     * @param id
+     * @return
+     */
+    public CommunityVO getCommunityById(Long id){
+        IdenCommunity idenCommunity = this.idenCommunityService.getById(id);
+        if (idenCommunity!=null){
+            CommunityVO resVO = new CommunityVO();
+            BeanUtil.copyProperties(idenCommunity,resVO);
+            return resVO;
+        }
+        return null;
+    }
+
+
+    /**
+     * 保存小区
+     * @param vo
+     */
+    @Transactional(rollbackFor = Exception.class)
+    public int createCommunity(CommunityVO vo, UserLogindConvertVO loginUser){
+        QueryWrapper<IdenCommunity> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(IdenCommunity::getName,vo.getName());
+        if(idenCommunityService.count(queryWrapper) > 0){
+            return 1;
+        }
+        QueryWrapper<IdenCommunity> queryWrapper2 = new QueryWrapper<>();
+        queryWrapper2.lambda().eq(IdenCommunity::getCode,vo.getCode());
+        if(idenCommunityService.count(queryWrapper2) > 0){
+            return 2;
+        }
+        //保存小区
+        IdenCommunity idenCommunity = new IdenCommunity();
+        BeanUtil.copyProperties(vo,idenCommunity);
+        idenCommunity.setCreateTime(new Date());
+
+        this.idenCommunityService.save(idenCommunity);
+        return 0;
+    }
+
+    /**
+     * 修改小区
+     * @param vo
+     */
+    @Transactional(rollbackFor = Exception.class)
+    public void updateCommunity(CommunityVO vo){
+        //保存小区
+        IdenCommunity idenCommunity = this.idenCommunityService.getById(vo.getId());
+        MyBeanUtils.copyProperties(vo,idenCommunity);
+        idenCommunity.setModifyTime(new Date());
+        this.idenCommunityService.updateById(idenCommunity);
+
+    }
+
+}

+ 125 - 0
src/main/java/com/iden/bms/service/CrowdService.java

@@ -0,0 +1,125 @@
+package com.iden.bms.service;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.iden.common.entity.IdenCrowd;
+import com.iden.common.service.IdenCrowdService;
+import com.iden.common.util.MyBeanUtils;
+import com.iden.common.vo.CrowdVO;
+import com.iden.common.vo.PageReqVO;
+import com.iden.common.vo.UserLogindConvertVO;
+import org.springframework.beans.BeanUtils;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+/**
+ *
+ * @author makejava
+ * @since 2021-05-21 00:08:38
+ */
+@Service
+public class CrowdService {
+
+    @Resource
+    private IdenCrowdService idenCrowdService;
+
+    
+
+    /**
+     * 查询人群列表
+     * @return
+             */
+    public IPage<CrowdVO> listCrowd(String name, UserLogindConvertVO loginUser, PageReqVO pageReqVo) {
+            IPage<IdenCrowd> page = new Page<>(pageReqVo.getCurrent(), pageReqVo.getPageSize());
+            QueryWrapper<IdenCrowd> queryWrapper = new QueryWrapper<>();
+            queryWrapper.lambda().like(StrUtil.isNotEmpty(name),IdenCrowd::getName,name)
+                    .orderByAsc(IdenCrowd::getCode);
+
+            IPage<IdenCrowd> pageRes = this.idenCrowdService.page(page, queryWrapper);
+            IPage<CrowdVO> results = new Page<>(pageRes.getCurrent(),pageRes.getSize(),pageRes.getTotal());
+            if(CollUtil.isNotEmpty(pageRes.getRecords())){
+                List<CrowdVO> list = new ArrayList<>();
+                pageRes.getRecords().forEach(item -> {
+                    CrowdVO resVO = new CrowdVO();
+                    BeanUtils.copyProperties(item,resVO);
+                    list.add(resVO);
+                });
+                results.setRecords(list);
+            }
+            return results;
+    }
+
+    /**
+     * 删除人群
+     * @param id
+     * @return
+     */
+    public boolean deleteById(Long id){
+        return this.idenCrowdService.removeById(id);
+    }
+
+    /**
+     * 详情
+     * @param id
+     * @return
+     */
+    public CrowdVO getCrowdById(Long id){
+        IdenCrowd idenCrowd = this.idenCrowdService.getById(id);
+        if (idenCrowd!=null){
+            CrowdVO resVO = new CrowdVO();
+            BeanUtil.copyProperties(idenCrowd,resVO);
+            return resVO;
+        }
+        return null;
+    }
+
+
+    /**
+     * 保存人群
+     * @param vo
+     */
+    @Transactional(rollbackFor = Exception.class)
+    public int createCrowd(CrowdVO vo, UserLogindConvertVO loginUser){
+        QueryWrapper<IdenCrowd> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(IdenCrowd::getName,vo.getName());
+        if(idenCrowdService.count(queryWrapper) > 0){
+            return 1;
+        }
+        QueryWrapper<IdenCrowd> queryWrapper2 = new QueryWrapper<>();
+        queryWrapper2.lambda().eq(IdenCrowd::getCode,vo.getCode());
+        if(idenCrowdService.count(queryWrapper2) > 0){
+            return 2;
+        }
+        //保存人群
+        IdenCrowd idenCrowd = new IdenCrowd();
+        BeanUtil.copyProperties(vo,idenCrowd);
+        idenCrowd.setCreateTime(new Date());
+
+        this.idenCrowdService.save(idenCrowd);
+        return 0;
+    }
+
+    /**
+     * 修改人群
+     * @param vo
+     */
+    @Transactional(rollbackFor = Exception.class)
+    public void updateCrowd(CrowdVO vo){
+        //保存人群
+        IdenCrowd idenCrowd = this.idenCrowdService.getById(vo.getId());
+        MyBeanUtils.copyProperties(vo,idenCrowd);
+        idenCrowd.setModifyTime(new Date());
+        this.idenCrowdService.updateById(idenCrowd);
+
+    }
+
+}

+ 124 - 0
src/main/java/com/iden/bms/service/SysRoleService.java

@@ -0,0 +1,124 @@
+package com.iden.bms.service;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.collection.CollUtil;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.iden.common.entity.IdenSysRole;
+import com.iden.common.service.IdenSysRoleService;
+import com.iden.common.util.MyBeanUtils;
+import com.iden.common.vo.SysRoleVO;
+import com.iden.common.vo.PageReqVO;
+import com.iden.common.vo.UserLogindConvertVO;
+import org.springframework.beans.BeanUtils;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+/**
+ *
+ * @author makejava
+ * @since 2021-05-21 00:08:38
+ */
+@Service
+public class SysRoleService {
+
+    @Resource
+    private IdenSysRoleService idenSysRoleService;
+
+    
+
+    /**
+     * 查询角色列表
+     * @return
+             */
+    public IPage<SysRoleVO> listSysRole(UserLogindConvertVO loginUser, PageReqVO pageReqVo) {
+            IPage<IdenSysRole> page = new Page<>(pageReqVo.getCurrent(), pageReqVo.getPageSize());
+            QueryWrapper<IdenSysRole> queryWrapper = new QueryWrapper<>();
+            queryWrapper.lambda().orderByAsc(IdenSysRole::getCode);
+
+            IPage<IdenSysRole> pageRes = this.idenSysRoleService.page(page, queryWrapper);
+            IPage<SysRoleVO> results = new Page<>(pageRes.getCurrent(),pageRes.getSize(),pageRes.getTotal());
+            if(CollUtil.isNotEmpty(pageRes.getRecords())){
+                List<SysRoleVO> list = new ArrayList<>();
+                pageRes.getRecords().forEach(item -> {
+                    SysRoleVO resVO = new SysRoleVO();
+                    BeanUtils.copyProperties(item,resVO);
+                    list.add(resVO);
+                });
+                results.setRecords(list);
+            }
+            return results;
+    }
+
+    /**
+     * 删除角色
+     * @param id
+     * @return
+     */
+    public boolean deleteById(Long id){
+        return this.idenSysRoleService.removeById(id);
+    }
+
+    /**
+     * 详情
+     * @param id
+     * @return
+     */
+    public SysRoleVO getSysRoleById(Long id){
+        IdenSysRole idenSysRole = this.idenSysRoleService.getById(id);
+        if (idenSysRole!=null){
+            SysRoleVO resVO = new SysRoleVO();
+            BeanUtil.copyProperties(idenSysRole,resVO);
+            return resVO;
+        }
+        return null;
+    }
+
+
+    /**
+     * 保存角色
+     * @param vo
+     */
+    @Transactional(rollbackFor = Exception.class)
+    public int createSysRole(SysRoleVO vo, UserLogindConvertVO loginUser){
+        QueryWrapper<IdenSysRole> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(IdenSysRole::getName,vo.getName());
+        if(idenSysRoleService.count(queryWrapper) > 0){
+            return 1;
+        }
+        QueryWrapper<IdenSysRole> queryWrapper2 = new QueryWrapper<>();
+        queryWrapper2.lambda().eq(IdenSysRole::getCode,vo.getCode());
+        if(idenSysRoleService.count(queryWrapper2) > 0){
+            return 2;
+        }
+        //保存角色
+        IdenSysRole idenSysRole = new IdenSysRole();
+        BeanUtil.copyProperties(vo,idenSysRole);
+        idenSysRole.setCreateTime(new Date());
+
+        this.idenSysRoleService.save(idenSysRole);
+        return 0;
+    }
+
+    /**
+     * 修改角色
+     * @param vo
+     */
+    @Transactional(rollbackFor = Exception.class)
+    public void updateSysRole(SysRoleVO vo){
+        //保存角色
+        IdenSysRole idenSysRole = this.idenSysRoleService.getById(vo.getId());
+        MyBeanUtils.copyProperties(vo,idenSysRole);
+        idenSysRole.setModifyTime(new Date());
+        this.idenSysRoleService.updateById(idenSysRole);
+
+    }
+
+}

+ 37 - 0
src/main/java/com/iden/bms/service/SysUserService.java

@@ -4,8 +4,10 @@ import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.iden.bms.params.ModifyPasswordParams;
 import com.iden.common.entity.*;
 
 import com.iden.common.enums.UserRoleEnum;
@@ -14,11 +16,14 @@ import com.iden.common.exception.BDException;
 import com.iden.common.service.*;
 
 import com.iden.common.util.MyBeanUtils;
+import com.iden.common.util.Result;
+import com.iden.common.util.WebPageUtils;
 import com.iden.common.vo.PageReqVO;
 import com.iden.common.vo.UserLogindConvertVO;
 
 import com.iden.common.vo.SysUserVO;
 import org.apache.commons.codec.digest.DigestUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -152,4 +157,36 @@ public class SysUserService {
 
     }
 
+    /**
+     * 重置用户密码
+     * @param vo
+     */
+    @Transactional(rollbackFor = Exception.class)
+    public boolean resetPassword(Long id){
+        UpdateWrapper<IdenSysUser> updateWrapper = new UpdateWrapper<>();
+        updateWrapper.lambda().eq(IdenSysUser::getId,id)
+                .set(IdenSysUser::getPassword, DigestUtils.md5Hex("123456"))
+                .set(IdenSysUser::getModifyTime, new Date());
+        return idenSysUserService.update(updateWrapper);
+
+    }
+
+    /**
+     * 修改密码
+     * @param parmas
+     */
+    @Transactional(rollbackFor = Exception.class)
+    public boolean modifyPassword(Long id, ModifyPasswordParams parmas){
+
+        IdenSysUser idenSysUser = this.idenSysUserService.getById(id);
+        if(!idenSysUser.getPassword().equals(DigestUtils.md5Hex(parmas.getCurrPassword()))){
+            return false;
+        }
+
+        UpdateWrapper<IdenSysUser> updateWrapper = new UpdateWrapper<>();
+        updateWrapper.lambda().eq(IdenSysUser::getId,id)
+                .set(IdenSysUser::getPassword, DigestUtils.md5Hex(parmas.getNewPassword()))
+                .set(IdenSysUser::getModifyTime, new Date());
+       return this.idenSysUserService.update(updateWrapper);
+    }
 }

+ 26 - 11
src/main/java/com/iden/common/entity/IdenWarningKeynoteSta.java

@@ -22,7 +22,7 @@ import lombok.experimental.Accessors;
  * 重点人员识别预警统计表(IdenWarningKeynoteSta)实体类
  *
  * @author makejava
- * @since 2021-12-22 20:19:17
+ * @since 2021-12-23 11:08:19
  */
 
 @Data
@@ -31,25 +31,40 @@ import lombok.experimental.Accessors;
 @TableName("iden_warning_keynote_sta")
 @ApiModel(value = "重点人员识别预警统计表", description = "")
 public class IdenWarningKeynoteSta implements Serializable {
-    private static final long serialVersionUID = 163592680800091740L;
+    private static final long serialVersionUID = -48099154074943251L;
 
     @TableId(value = "ID", type = IdType.AUTO)
     private Long id;
 
 
-    @ApiModelProperty("人群编号")
-    @TableField("CROWD_CODE")
-    private String crowdCode;
+    @ApiModelProperty("所属小区id")
+    @TableField("COMMUNITY_ID")
+    private Long communityId;
 
 
-    @ApiModelProperty("人群名称")
-    @TableField("CROWD_NAME")
-    private String crowdName;
+    @ApiModelProperty("小区编号")
+    @TableField("COMMUNITY_CODE")
+    private String communityCode;
 
 
-    @ApiModelProperty("出现总数")
-    @TableField("DISPLAY_COUNT")
-    private Long displayCount;
+    @ApiModelProperty("小区名称")
+    @TableField("COMMUNITY_NAME")
+    private String communityName;
+
+
+    @ApiModelProperty("所属区域")
+    @TableField("DISTRICT")
+    private String district;
+
+
+    @ApiModelProperty("所属街道")
+    @TableField("SUBDISTRICT")
+    private String subdistrict;
+
+
+    @ApiModelProperty("重点人员总数")
+    @TableField("KEYNOTE_COUNT")
+    private Long keynoteCount;
 
 
     @ApiModelProperty("createTime")

+ 38 - 0
src/main/java/com/iden/common/enums/CameraTypeEnum.java

@@ -0,0 +1,38 @@
+package com.iden.common.enums;
+
+
+import cn.hutool.core.util.StrUtil;
+
+/**
+ * @Author:java
+ * @Date: 2021/05/27
+ */
+public enum CameraTypeEnum {
+    /**
+     * 摄像头类型
+     */
+    VIDEO("1","摄像机"),
+    SNAP("2","抓拍设备");
+    private String value;
+    private String name;
+    CameraTypeEnum(String value, String name) {
+        this.value = value;
+        this.name = name;
+    }
+    public String getValue() {
+        return value;
+    }
+
+    public static String getValueToName(String code){
+        if (StrUtil.isEmpty(code)){
+            return null;
+        }
+        if (VIDEO.getValue().equals(code)){
+            return  VIDEO.name;
+        }else if (SNAP.getValue().equals(code)){
+            return  SNAP.name;
+        }
+
+        return null;
+    }
+}

+ 38 - 0
src/main/java/com/iden/common/enums/ConnectStatusEnum.java

@@ -0,0 +1,38 @@
+package com.iden.common.enums;
+
+
+import cn.hutool.core.util.StrUtil;
+
+/**
+ * @Author:java
+ * @Date: 2021/05/27
+ */
+public enum ConnectStatusEnum {
+    /**
+     * 连接未连接
+     */
+    DISCONNECT("0","未连接"),
+    CONNECTED("1","已连接");
+    private String value;
+    private String name;
+    ConnectStatusEnum(String value, String name) {
+        this.value = value;
+        this.name = name;
+    }
+    public String getValue() {
+        return value;
+    }
+
+    public static String getValueToName(String code){
+        if (StrUtil.isEmpty(code)){
+            return null;
+        }
+        if (DISCONNECT.getValue().equals(code)){
+            return  DISCONNECT.name;
+        }else if (CONNECTED.getValue().equals(code)){
+            return  CONNECTED.name;
+        }
+
+        return null;
+    }
+}

+ 1 - 1
src/main/java/com/iden/common/mapper/IdenWarningKeynoteStaMapper.java

@@ -8,7 +8,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  * 重点人员识别预警统计表(IdenWarningKeynoteSta)表数据库访问层
  *
  * @author makejava
- * @since 2021-12-22 20:19:17
+ * @since 2021-12-23 11:08:23
  */
 public interface IdenWarningKeynoteStaMapper extends BaseMapper<IdenWarningKeynoteSta> {
 

+ 1 - 1
src/main/java/com/iden/common/service/IdenWarningKeynoteStaService.java

@@ -7,7 +7,7 @@ import com.iden.common.entity.IdenWarningKeynoteSta;
  * 重点人员识别预警统计表(IdenWarningKeynoteSta)表服务接口
  *
  * @author makejava
- * @since 2021-12-22 20:19:17
+ * @since 2021-12-23 11:08:24
  */
 public interface IdenWarningKeynoteStaService extends IService<IdenWarningKeynoteSta> {
 

+ 1 - 1
src/main/java/com/iden/common/service/impl/IdenWarningKeynoteStaServiceImpl.java

@@ -10,7 +10,7 @@ import org.springframework.stereotype.Service;
  * 重点人员识别预警统计表(IdenWarningKeynoteSta)表服务实现类
  *
  * @author makejava
- * @since 2021-12-22 20:19:17
+ * @since 2021-12-23 11:08:25
  */
 @Service
 public class IdenWarningKeynoteStaServiceImpl extends ServiceImpl<IdenWarningKeynoteStaMapper, IdenWarningKeynoteSta> implements IdenWarningKeynoteStaService {

+ 88 - 0
src/main/java/com/iden/common/vo/CameraVO.java

@@ -0,0 +1,88 @@
+package com.iden.common.vo;
+
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 摄像头表(IdenCamera)实体类
+ *
+ * @author makejava
+ * @since 2021-12-22 17:23:43
+ */
+
+@Data
+@ApiModel(value = "摄像头表", description = "")
+public class CameraVO implements Serializable {
+    private static final long serialVersionUID = -55010922380921938L;
+
+    private Long id;
+
+
+    @ApiModelProperty("设备编号")
+    private String code;
+
+
+    @ApiModelProperty("设备名称")
+    private String name;
+
+
+    @ApiModelProperty("IP地址")
+    private String ip;
+
+
+    @ApiModelProperty("所属区域")
+    private String district;
+
+
+    @ApiModelProperty("所属街道")
+    private String subdistrict;
+
+
+    @ApiModelProperty("所属小区id")
+    private Long communityId;
+
+
+    @ApiModelProperty("位置")
+    private String place;
+
+
+    @ApiModelProperty("经度")
+    private Double longitude;
+
+
+    @ApiModelProperty("纬度")
+    private Double latitude;
+
+
+    @ApiModelProperty("状态,0未连接,1已连接")
+    private String status;
+
+    @ApiModelProperty("状态名,0未连接,1已连接")
+    private String statusName;
+
+
+    @ApiModelProperty("类型:1摄像机,2抓拍设备")
+    private String type;
+
+    @ApiModelProperty("类型名:1摄像机,2抓拍设备")
+    private String typeName;
+
+    @ApiModelProperty("备注")
+    private String remark;
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
+    @ApiModelProperty("createTime")
+    private Date createTime;
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
+    @ApiModelProperty("modifyTime")
+    private Date modifyTime;
+
+
+}

+ 85 - 0
src/main/java/com/iden/common/vo/CommunityVO.java

@@ -0,0 +1,85 @@
+package com.iden.common.vo;
+
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 小区表(IdenCommunity)实体类
+ *
+ * @author makejava
+ * @since 2021-12-22 17:23:45
+ */
+
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("iden_community")
+@ApiModel(value = "小区表", description = "")
+public class CommunityVO implements Serializable {
+    private static final long serialVersionUID = 731388814628767585L;
+
+    private Long id;
+
+
+    @ApiModelProperty("小区编号")
+    private String code;
+
+
+    @ApiModelProperty("小区名称")
+    private String name;
+
+
+    @ApiModelProperty("所属省")
+    private String province;
+
+
+    @ApiModelProperty("所属市")
+    private String city;
+
+
+    @ApiModelProperty("所属区域")
+    private String district;
+
+
+    @ApiModelProperty("所属街道")
+    private String subdistrict;
+
+
+    @ApiModelProperty("经度")
+    private Double longitude;
+
+
+    @ApiModelProperty("纬度")
+    private Double latitude;
+
+
+    @ApiModelProperty("负责民警")
+    private String policeman;
+
+
+    @ApiModelProperty("电话")
+    private String phone;
+
+
+    @ApiModelProperty("备注")
+    private String remark;
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
+    @ApiModelProperty("createTime")
+    private Date createTime;
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
+    @ApiModelProperty("modifyTime")
+    private Date modifyTime;
+
+
+}

+ 68 - 0
src/main/java/com/iden/common/vo/CrowdVO.java

@@ -0,0 +1,68 @@
+package com.iden.common.vo;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 人群表(IdenCrowd)实体类
+ *
+ * @author makejava
+ * @since 2021-12-22 17:23:46
+ */
+
+@Data
+@ApiModel(value = "人群表", description = "")
+public class CrowdVO implements Serializable {
+    private static final long serialVersionUID = -91650038520335504L;
+
+    private Long id;
+
+
+    @ApiModelProperty("人群编号")
+    private String code;
+
+
+    @ApiModelProperty("人群名称")
+    private String name;
+
+
+    @ApiModelProperty("人群数量")
+    private Integer quantity;
+
+
+    @ApiModelProperty("更新周期,1每天,2每月")
+    private String updateCycle;
+
+
+    @ApiModelProperty("备注")
+    private String remark;
+
+
+    @ApiModelProperty("数据日期开始")
+    private Date dataDateBegin;
+
+
+    @ApiModelProperty("数据日期结束")
+    private Date dataDateEnd;
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
+    @ApiModelProperty("createTime")
+    private Date createTime;
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
+    @ApiModelProperty("modifyTime")
+    private Date modifyTime;
+
+
+}

+ 2 - 2
src/main/resources/application-dev.properties

@@ -29,6 +29,6 @@ spring.redis.jedis.pool.max-wait=-1
 spring.redis.jedis.pool.min-idle=5
 #################################### redis的集群标准配置 结束 ##############################
 
-#图像数据根目录
-data.image.root=/data/iden/data/
+#服务部署根目录
+iden.root=/data/iden/
 

+ 0 - 134
src/test/java/com/iden/FaceTest.java

@@ -1,134 +0,0 @@
-package com.iden;
-
-import com.face.monitor.FaceMonitor;
-import com.face.monitor.model.FaceModel;
-import com.face.monitor.model.FaceRecogRetrieveResult;
-import com.face.monitor.model.Image;
-import com.face.monitor.model.RecogInfo;
-import com.face.monitor.model.RecogResult;
-
-import java.io.ByteArrayOutputStream;
-import java.io.Closeable;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Locale;
-
-public class FaceTest {
-    public static void main(String[] args) {
-        //初始化引擎
-        FaceMonitor faceMonitor = new FaceMonitor();
-        faceMonitor.init("./model", 0);
-        //提取人脸特征,并保存为注册人员库demo-test.cpp
-        FaceModel[] dataset = extractFeature(faceMonitor);
-        System.out.printf(Locale.CHINA, "succeed extract size:%d\n", dataset.length);
-        //加载人脸特征库
-        faceMonitor.loadFaceDataset(dataset);
-        //获取库的大小
-        int databaseSize = faceMonitor.getDatabaseSize();
-        System.out.printf(Locale.CHINA, "java data num:%d\n", databaseSize);
-        //追加特征库
-        faceMonitor.appendFaceDataset(dataset);
-        databaseSize = faceMonitor.getDatabaseSize();
-        System.out.printf(Locale.CHINA, "java append after data num:%d\n", databaseSize);
-        //每次加载特征库会清空当前内存中存储的特征库
-        faceMonitor.loadFaceDataset(dataset);
-        databaseSize = faceMonitor.getDatabaseSize();
-        System.out.printf(Locale.CHINA, "new data num: :%d\n", databaseSize);
-        //监控视频帧,这里为了简单演示,传入静态图片
-        //target
-        String registerData = "./data/0.jpg";
-        watchFrame(faceMonitor, registerData);
-        //vistor
-        registerData = "./data/5.jpg";
-        watchFrame(faceMonitor, registerData);
-        //获取目标人识别结果
-        RecogResult recogResult = faceMonitor.finishMonitorWithRes(1);
-
-        RecogResult curVisitorResResult = faceMonitor.faceRecogGetCurVisitorRes();
-
-        for (int i = 0; i < curVisitorResResult.getInfoNum(); i++) {
-            RecogInfo recogInfo = curVisitorResResult.getRecogInfos()[i];
-            System.out.printf(Locale.CHINA, "vistor hit top getRecogInfos length: %d\n",
-                    curVisitorResResult.getRecogInfos().length);
-            System.out.printf(Locale.CHINA, "vistor hit top person name: %s\n",
-                    recogInfo.getName());
-            System.out.printf(Locale.CHINA, "vistor hit top person id: %d score: %f\n",
-                    recogInfo.getPersonId(), recogInfo.getFaceRecogScore());
-            System.out.printf(Locale.CHINA, "vistor hit second person id: %d score: %f\n",
-                    recogInfo.getPersonIdOther()[0], recogInfo.getFaceRecogScoreOther()[0]);
-        }
-
-        FaceRecogRetrieveResult faceRecogRetrieveResult = faceMonitor.faceRecogRetrieveFaceDataset(dataset);
-        System.out.printf(Locale.CHINA, "query hit top person id: : %d score: %f\n",
-                faceRecogRetrieveResult.getOnePredictIds()[0], faceRecogRetrieveResult.getOnePredictScores()[0]);
-        System.out.printf(Locale.CHINA, "query hit top person id: : %d score: %f\n",
-                faceRecogRetrieveResult.getOnePredictIds()[1], faceRecogRetrieveResult.getOnePredictScores()[1]);
-    }
-
-    public static FaceModel[] extractFeature(FaceMonitor faceMonitor) {
-        //简单演示,提取5张人脸
-        String faceTestDir = "./data/";
-        List<byte[]> faceTestImageList = new ArrayList<>();
-        for (int i = 0; i < 5; i++) {
-            String faceFilePath = String.format(Locale.CHINA, "%s%d.jpg", faceTestDir, i);
-            faceTestImageList.add(readFileBytes(faceFilePath));
-        }
-        return faceMonitor.extractFeature(faceTestImageList);
-    }
-
-    public static RecogResult watchFrame(FaceMonitor faceMonitor, String dataPath) {
-        Image image = faceMonitor.readImage(dataPath);
-        return faceMonitor.faceRecogMonitor(image);
-    }
-
-    /**
-     * read file
-     *
-     * @param filePath
-     * @return if file not exist, return null, else return content of file
-     * @throws RuntimeException if an error occurs while operator BufferedReader
-     */
-    public static byte[] readFileBytes(String filePath) {
-        File file = new File(filePath);
-        if (file == null || !file.isFile()) {
-            return null;
-        }
-
-        InputStream inputStream = null;
-        ByteArrayOutputStream baos = null;
-        try {
-            inputStream = new FileInputStream(file);
-            baos = new ByteArrayOutputStream();
-
-            byte[] buffer = new byte[1024];
-            int byteCount = 0;
-            while ((byteCount = inputStream.read(buffer)) != -1) {// 循环从输入流读取
-                // buffer字节
-                baos.write(buffer, 0, byteCount);// 将读取的输入流写入到输出流
-            }
-            baos.flush();// 刷新缓冲区
-            return baos.toByteArray();
-        } catch (IOException e) {
-            return null;
-            //throw new RuntimeException("IOException occurred. ", e);
-        } finally {
-            close(inputStream);
-            close(baos);
-        }
-    }
-
-    public static void close(Closeable closeable) {
-        if (closeable != null) {
-            try {
-                closeable.close();
-            } catch (IOException e) {
-                throw new RuntimeException("IOException occurred. ", e);
-            }
-        }
-    }
-}
-