From f70d822574ffb6125043074e83462ea5c219a04d Mon Sep 17 00:00:00 2001 From: yq183 <645046984@qq.com> Date: Wed, 8 Jan 2025 17:30:48 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/mine/MineFaceController.java | 38 +++++++++----- .../yq/web/controller/nologin/NoLogin.java | 50 +++++++++++++++++++ 2 files changed, 76 insertions(+), 12 deletions(-) diff --git a/yq-admin/src/main/java/yq/web/controller/mine/MineFaceController.java b/yq-admin/src/main/java/yq/web/controller/mine/MineFaceController.java index 6915014..877a081 100644 --- a/yq-admin/src/main/java/yq/web/controller/mine/MineFaceController.java +++ b/yq-admin/src/main/java/yq/web/controller/mine/MineFaceController.java @@ -1,9 +1,12 @@ package yq.web.controller.mine; import java.io.File; -import java.io.FileInputStream; -import java.io.FileNotFoundException; + import java.io.IOException; +import java.io.InputStream; +import java.net.HttpURLConnection; +import java.net.MalformedURLException; +import java.net.URL; import java.util.List; import javax.servlet.http.HttpServletResponse; @@ -20,7 +23,7 @@ import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import org.springframework.web.multipart.MultipartFile; + import yq.common.annotation.Log; import yq.common.core.controller.BaseController; import yq.common.core.domain.AjaxResult; @@ -91,12 +94,14 @@ public class MineFaceController extends BaseController @PostMapping public AjaxResult add(@Validated @RequestBody MineFace mineFace) throws IOException { if(StrUtil.isNotEmpty(mineFace.getFaceUrl())){ - String url = serverConfig.getUrl() + mineFace.getFaceUrl(); - File file = new File(url); - if(!file.exists()) { - throw new ServiceException("文件不存在"); - } - byte[] bytes = FaceEnginUtil.uploadInput(file); + String faceUrl = serverConfig.getUrl() + mineFace.getFaceUrl(); + URL url = new URL(faceUrl); + HttpURLConnection connection = (HttpURLConnection) url.openConnection(); + connection.setRequestMethod("GET"); + connection.setConnectTimeout(5000); // 设置超时时间(毫秒) + connection.setReadTimeout(5000); // 设置读取超时时间(毫秒) + InputStream inputStream = connection.getInputStream(); + byte[] bytes = FaceEnginUtil.uploadInput(inputStream); mineFace.setFaceByte(bytes); } return toAjax(mineFaceService.insertMineFace(mineFace)); @@ -108,10 +113,19 @@ public class MineFaceController extends BaseController @PreAuthorize("@ss.hasPermi('system:face:edit')") @Log(title = "【人脸修改】", businessType = BusinessType.UPDATE) @PutMapping - public AjaxResult edit(@RequestBody MineFace mineFace) - { + public AjaxResult edit(@RequestBody MineFace mineFace) throws IOException { MineFace face = mineFaceService.selectMineFaceById(mineFace.getId()); - + if(StrUtil.isNotEmpty(mineFace.getFaceUrl())&& !ObjectUtil.equals(mineFace.getFaceUrl(),face.getFaceUrl())){ + String faceUrl = serverConfig.getUrl() + mineFace.getFaceUrl(); + URL url = new URL(faceUrl); + HttpURLConnection connection = (HttpURLConnection) url.openConnection(); + connection.setRequestMethod("GET"); + connection.setConnectTimeout(5000); // 设置超时时间(毫秒) + connection.setReadTimeout(5000); // 设置读取超时时间(毫秒) + InputStream inputStream = connection.getInputStream(); + byte[] bytes = FaceEnginUtil.uploadInput(inputStream); + mineFace.setFaceByte(bytes); + } return toAjax(mineFaceService.updateMineFace(mineFace)); } diff --git a/yq-admin/src/main/java/yq/web/controller/nologin/NoLogin.java b/yq-admin/src/main/java/yq/web/controller/nologin/NoLogin.java index 2145430..aa3b0d0 100644 --- a/yq-admin/src/main/java/yq/web/controller/nologin/NoLogin.java +++ b/yq-admin/src/main/java/yq/web/controller/nologin/NoLogin.java @@ -2,16 +2,28 @@ package yq.web.controller.nologin; import cn.hutool.core.convert.Convert; import cn.hutool.core.io.FileUtil; +import cn.hutool.core.util.StrUtil; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.security.core.parameters.P; +import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; +import yq.common.annotation.Log; import yq.common.core.domain.AjaxResult; import yq.common.core.domain.entity.SysDevice; import yq.common.core.domain.entity.SysTicket; import yq.common.core.domain.vo.SysDeviceVo; +import yq.common.enums.BusinessType; +import yq.common.exception.ServiceException; import yq.common.utils.EzvizUtil; +import yq.common.utils.FaceEnginUtil; +import yq.system.domain.MineFace; +import yq.system.domain.MineWarning; +import yq.system.service.IMineFaceService; +import yq.system.service.IMineWarningService; import yq.system.service.ISysDeviceService; import yq.common.utils.FileUploadUtil; @@ -41,8 +53,41 @@ public class NoLogin { private ISysDeviceService sysDeviceService; @Autowired private ISysTicketService ticketService; + @Autowired + private IMineWarningService mineWarningService; + @Autowired + private IMineFaceService mineFaceService; private static final DateTimeFormatter DATE_FORMAT = DateTimeFormatter.ofPattern("yyyy-MM-dd"); private static final DateTimeFormatter TIME_FORMAT = DateTimeFormatter.ofPattern("HH-mm-ss"); + + + /** + * 人脸匹配 + */ + + @PostMapping("/compareFaces") + public AjaxResult compareFaces(MultipartFile multipartFile) throws IOException { + + if(multipartFile !=null){ + List list = mineFaceService.selectMineFaceByList(); + if(!list.isEmpty()){ + for (MineFace mineFace : list) { + float v = FaceEnginUtil.uploadContrast(multipartFile, mineFace.getFaceByte()); + if(v>0.7){ + mineFace.setFaceByte(null); + return AjaxResult.success(mineFace); + } + } + } + } + return AjaxResult.error("未识别出人员"); + } + + @PostMapping("/saveMineWarning") + public AjaxResult saveMineWarning(MineWarning mineWarning) throws IOException { + return AjaxResult.success(mineWarningService.insertMineWarning(mineWarning)); + } + //通过萤石云进行取流 @GetMapping("/list") public List>list(Integer deviceState, Long depeId) @@ -109,4 +154,9 @@ public class NoLogin { device.setDeviceState(0); return AjaxResult.success(sysDeviceService.updateSysDevice(device)); } + + + + + }