lxw
2023-04-07 71b2bc82b19d98a16d285653ce76510af66018d1
src/main/java/com/whyc/controller/FaceController.java
@@ -25,6 +25,7 @@
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.List;
import java.util.Map;
import static com.whyc.util.ActionUtil.getApplication;
@@ -49,8 +50,18 @@
    @ApiOperation(value = "在线激活人脸识别引擎",notes = "只需要刚开始时调用一次,会导致appId与硬件设备绑定,必须有外部网络,否则激活会失败!" +
            "后续使用无需再调用激活,可以离线使用")
    public Response activeOnline(){
        Response model = new Response();
        boolean b = FaceIdentifyUtil.activeOnline();
        boolean b = FaceIdentifyUtil.active(1);
        if(b){
            return new Response().set(1,true,"引擎激活成功");
        }else{
            return new Response().set(1,false,"引擎激活失败,请检查网络是否为外网并确认appId和key是否正确!");
        }
    }
    @GetMapping("activeOffline")
    @ApiOperation(value = "离线激活人脸识别引擎,增值版使用")
    public Response activeOffline(){
        boolean b = FaceIdentifyUtil.active(2);
        if(b){
            return new Response().set(1,true,"引擎激活成功");
        }else{
@@ -60,7 +71,10 @@
    @PostMapping
    @ApiOperation(value = "添加",notes = "添加到人脸库")
    public Response add(@RequestParam String fileData,String uName,Integer uId ){
    public Response add(@RequestBody Map<String,Object> paramMap ){
        String fileData = (String) paramMap.get("fileData");
        String uName  = (String) paramMap.get("uName");
        Integer uId  = Integer.parseInt((String)paramMap.get("uId"));
        //传参 uId,uName,fileData--文件流
        fileData = fileData.replaceAll(" ", "+");
@@ -137,7 +151,7 @@
     */
    @PutMapping
    @ApiOperation(value = "更新")
    public Response update(@RequestParam String fileData,String uName){
    public Response update(@RequestBody String fileData,@RequestParam String uName){
        //传参,uName,fileData--文件流
        //由于图片字符串是由base64编码的,解码成字节数组
@@ -263,8 +277,14 @@
     */
    @PostMapping("faceCompare2N")
    @ApiOperation(value = "人脸识别对比")
    public Response faceCompare2N(@RequestParam String fileData){
    public Response faceCompare2N(@RequestBody String fileData,@RequestParam String uKeyId){
        Response res = new Response();
        //先验证uKeyId对应的用户
        UserInf userByUKeyId = userService.getUserByUKeyId(uKeyId);
        if (userByUKeyId == null){
            return res.set(1,false,"Ukey没有绑定用户");
        }
        /*====获取图片并校验活体,角度,像素大小====*/
        //由于图片字符串是由base64编码的,解码成字节数组
        fileData = fileData.replaceAll(" ", "+");
@@ -293,10 +313,21 @@
                    }else{
                        for (UserInf temp:userInfList){
                            String filePath = temp.getFace().getUrl();
                            ImageInfo imageInfo2 = ImageFactory.getRGBData(new File(filePath));
                            Response res3 = FaceIdentifyUtil.faceCompare(faceEngine, imageInfo, imageInfo2);
                            File file = new File(filePath);
                            //不存在则不继续执行
                            if(!file.exists()){
                                continue;
                            }
                            ImageInfo imageInfo2 = ImageFactory.getRGBData(file);
                            res = FaceIdentifyUtil.faceCompare(faceEngine, imageInfo, imageInfo2);
                            //对比成功,记录用户登录信息
                            if(res3.getCode()==1){
                            if(res.getCode()==1){
                                //Ukey对应用户和人脸对应用户验证
                                if(!temp.getUId().equals(userByUKeyId.getUId())){
                                    return res.set(1,false,"UKey对应用户和当前人脸对应用户不匹配");
                                }
                                res.setData2(temp);
                                // 将登陆成功的用户存入session
                                ActionUtil.getSession().setAttribute("user", temp);
@@ -307,7 +338,8 @@
                                if (permitList!=null && permitList.size()!=0) {
                                    ActionUtil.getSession().setAttribute("permits", permitList);
                                } else {
                                    res.setCode(0);
                                    res.setCode(1);
                                    res.setData(false);
                                    res.setMsg("还未分配权限");
                                }
                                //将新登录的用户存入application