From e16302f9d475c7cc4dd18c5abf1a23cb5502e362 Mon Sep 17 00:00:00 2001 From: whyclxw <810412026@qq.com> Date: 星期三, 28 五月 2025 14:57:56 +0800 Subject: [PATCH] 密码验证加- --- src/main/java/com/whyc/controller/FaceController.java | 126 +++++++++++++++++++++++++++++++++-------- 1 files changed, 101 insertions(+), 25 deletions(-) diff --git a/src/main/java/com/whyc/controller/FaceController.java b/src/main/java/com/whyc/controller/FaceController.java index 375441b..0a99257 100644 --- a/src/main/java/com/whyc/controller/FaceController.java +++ b/src/main/java/com/whyc/controller/FaceController.java @@ -3,27 +3,31 @@ import com.arcsoft.face.FaceEngine; import com.arcsoft.face.toolkit.ImageFactory; import com.arcsoft.face.toolkit.ImageInfo; +import com.whyc.constant.UserOperation; +import com.whyc.constant.YamlProperties; import com.whyc.dto.Response; import com.whyc.factory.FaceEngineFactory; import com.whyc.pojo.PermitGroup; import com.whyc.pojo.UserInf; -import com.whyc.service.FaceService; -import com.whyc.service.PermitGroupUserService; -import com.whyc.service.UserService; +import com.whyc.service.*; import com.whyc.util.ActionUtil; +import com.whyc.util.CommonUtil; import com.whyc.util.FaceIdentifyUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.system.ApplicationHome; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; import sun.misc.BASE64Decoder; import javax.annotation.Resource; +import javax.servlet.ServletContext; import javax.servlet.http.HttpServletRequest; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; +import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -46,12 +50,28 @@ @Resource private UserService userService; + @Resource + private MapOutlineService mapOutlineService; + + @Autowired + private BaoJiGroupUserService baoJiGroupUserService; + @GetMapping("activeOnline") @ApiOperation(value = "鍦ㄧ嚎婵�娲讳汉鑴歌瘑鍒紩鎿�",notes = "鍙渶瑕佸垰寮�濮嬫椂璋冪敤涓�娆�,浼氬鑷碼ppId涓庣‖浠惰澶囩粦瀹�,蹇呴』鏈夊閮ㄧ綉缁�,鍚﹀垯婵�娲讳細澶辫触!" + "鍚庣画浣跨敤鏃犻渶鍐嶈皟鐢ㄦ縺娲�,鍙互绂荤嚎浣跨敤") 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,"寮曟搸婵�娲诲け璐�,璇锋鏌ョ綉缁滄槸鍚︿负澶栫綉骞剁‘璁ppId鍜宬ey鏄惁姝g‘!"); + } + } + + @GetMapping("activeOffline") + @ApiOperation(value = "绂荤嚎婵�娲讳汉鑴歌瘑鍒紩鎿�,澧炲�肩増浣跨敤") + public Response activeOffline(){ + boolean b = FaceIdentifyUtil.active(2); if(b){ return new Response().set(1,true,"寮曟搸婵�娲绘垚鍔�"); }else{ @@ -64,6 +84,8 @@ public Response add(@RequestBody Map<String,Object> paramMap ){ String fileData = (String) paramMap.get("fileData"); String uName = (String) paramMap.get("uName"); + //杩囨护 uName鐨勭壒娈婂瓧绗�,閬垮厤璺緞閬嶅巻鏀诲嚮 + uName = ActionUtil.filterFileName(uName); Integer uId = Integer.parseInt((String)paramMap.get("uId")); //浼犲弬 uId,uName,fileData--鏂囦欢娴� fileData = fileData.replaceAll(" ", "+"); @@ -102,7 +124,12 @@ File jarFile = applicationHome.getDir(); //瀛樺偍浜鸿劯鍥剧墖鐨勬枃浠跺す - String fileDirName = jarFile.getParentFile().toString()+File.separator+"fg_photo"; + String fileDirName; + if(YamlProperties.runModel == 1) { + fileDirName = jarFile.getParentFile().toString() + File.separator + "fg_photo"; + }else{ + fileDirName = jarFile.toString() + File.separator + "fg_photo"; + } File file = new File(fileDirName); //涓嶅瓨鍦ㄥ垯鍒涘缓璇ユ枃浠跺す @@ -112,16 +139,22 @@ //鏂囦欢鍏ㄨ矾寰� String fileName = fileDirName + File.separator + uName + ".jpg"; - + FileOutputStream fot=null; try { - FileOutputStream fot = new FileOutputStream(fileName); - + fot = new FileOutputStream(fileName); fot.write(dataBytes); fot.flush(); - fot.close(); } catch (IOException e) { e.printStackTrace(); + }finally { + if(fot!=null){ + try { + fot.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } } /*=========鏁版嵁搴撹〃鏇存柊===========*/ @@ -139,11 +172,13 @@ * 浜鸿劯搴撶鐞�: 鏇存柊 * @return */ - @PutMapping + @PostMapping("update") @ApiOperation(value = "鏇存柊") public Response update(@RequestBody String fileData,@RequestParam String uName){ //浼犲弬,uName,fileData--鏂囦欢娴� + //杩囨护 uName鐨勭壒娈婂瓧绗�,閬垮厤璺緞閬嶅巻鏀诲嚮 + uName = ActionUtil.filterFileName(uName); //鐢变簬鍥剧墖瀛楃涓叉槸鐢眀ase64缂栫爜鐨�,瑙g爜鎴愬瓧鑺傛暟缁� fileData = fileData.replaceAll(" ", "+"); fileData = fileData.split(",")[1]; @@ -173,7 +208,12 @@ File jarFile = applicationHome.getDir(); //瀛樺偍浜鸿劯鍥剧墖鐨勬枃浠跺す - String fileDirName = jarFile.getParentFile().toString()+File.separator+"fg_photo"; + String fileDirName; + if(YamlProperties.runModel == 1) { + fileDirName = jarFile.getParentFile().toString() + File.separator + "fg_photo"; + }else{ + fileDirName = jarFile.toString() + File.separator + "fg_photo"; + } File file = new File(fileDirName); //涓嶅瓨鍦ㄥ垯鍒涘缓璇ユ枃浠跺す @@ -183,16 +223,21 @@ //鏂囦欢鍏ㄨ矾寰� String fileName = fileDirName + File.separator + uName + ".jpg"; - + FileOutputStream fot =null; try { - FileOutputStream fot = new FileOutputStream(fileName); - + fot = new FileOutputStream(fileName); fot.write(dataBytes); fot.flush(); - fot.close(); - } catch (IOException e) { e.printStackTrace(); + }finally { + if(fot!=null){ + try { + fot.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } } return new Response().setII(1,"鏇存柊鎴愬姛"); } @@ -204,12 +249,14 @@ * 浜鸿劯搴撶鐞�: 鍒犻櫎 * @return */ - @DeleteMapping + @PostMapping("delete") @ApiOperation(value = "鍒犻櫎") @Transactional public Response delete(@RequestParam Integer uId,@RequestParam Integer faceId, @RequestParam String uName,HttpServletRequest request){ + //杩囨护 uName鐨勭壒娈婂瓧绗�,閬垮厤璺緞閬嶅巻鏀诲嚮 + uName = ActionUtil.filterFileName(uName); //鏇存柊user_inf鍜宖ace琛� service.update(uId,faceId); @@ -267,7 +314,7 @@ */ @PostMapping("faceCompare2N") @ApiOperation(value = "浜鸿劯璇嗗埆瀵规瘮") - public Response faceCompare2N(@RequestBody String fileData,@RequestParam String uKeyId){ + public Response faceCompare2N(@RequestBody String fileData,@RequestParam String uKeyId,HttpServletRequest request){ Response res = new Response(); //鍏堥獙璇乽KeyId瀵瑰簲鐨勭敤鎴� UserInf userByUKeyId = userService.getUserByUKeyId(uKeyId); @@ -294,25 +341,40 @@ if (res.getCode() == 1) { res = FaceIdentifyUtil.orientAndPxDetect(faceEngine, imageInfo); //浜哄儚瑙掑害,澶у皬鏍¢獙閫氳繃 - if(res.getCode()==1) { + if((boolean) res.getData()) { + //閲嶇疆鏍囪瘑 + res.setData(null); + res.setMsg(null); //鑾峰彇鏁版嵁搴撲腑鎵�鏈夌殑浜鸿劯鍥剧墖 List<UserInf> userInfList = service.findAllFaceUrl(); if(userInfList.size()==0){ res.setCode(0); res.setMsg("浜鸿劯搴撴殏鏃犱换浣曟暟鎹�"); }else{ + boolean urlExist = false; 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; + }else{ + urlExist = true; + } + ImageInfo imageInfo2 = ImageFactory.getRGBData(file); + res = FaceIdentifyUtil.faceCompare(faceEngine, imageInfo, imageInfo2); //瀵规瘮鎴愬姛,璁板綍鐢ㄦ埛鐧诲綍淇℃伅 - if(res3.getCode()==1){ + if((boolean) res.getData()){ //Ukey瀵瑰簲鐢ㄦ埛鍜屼汉鑴稿搴旂敤鎴烽獙璇� if(!temp.getUId().equals(userByUKeyId.getUId())){ return res.set(1,false,"UKey瀵瑰簲鐢ㄦ埛鍜屽綋鍓嶄汉鑴稿搴旂敤鎴蜂笉鍖归厤"); } - + List<Object> dataList = new ArrayList<>(); + dataList.add(temp); + // 灏嗙櫥闄嗘垚鍔熺殑鐢ㄦ埛瀛樺叆session + ServletContext servletContext = request.getServletContext(); + servletContext.setAttribute(temp.getUName(), request.getSession().getId()); ActionUtil.getSession().setAttribute("user", temp); //璁剧疆session涓嶆椿鍔ㄦ椂闂翠负30鍒� @@ -320,15 +382,29 @@ ActionUtil.getSession().setAttribute("ip", ActionUtil.getRequest().getRemoteAddr()); List<PermitGroup> permitList = permitGroupUserService.getPermitByUser(temp.getUId()); if (permitList!=null && permitList.size()!=0) { + dataList.add(permitList.get(0).getPermitGroupId()); ActionUtil.getSession().setAttribute("permits", permitList); } else { - res.setCode(0); + res.setCode(1); + res.setData(false); res.setMsg("杩樻湭鍒嗛厤鏉冮檺"); } + + //鏌ヨ鐢ㄦ埛瀵瑰簲鐨勭彮缁勬爣璇� + dataList.add(baoJiGroupUserService.getGroupFlag(temp.getUId().intValue())); + //鏌ヨ婵�娲荤殑鍦板浘 + String mapName = mapOutlineService.selectMapName(); + dataList.add(mapName); + CommonUtil.record(temp.getUId(), UserOperation.TYPE_LOGIN.getType(), UserOperation.TYPE_LOGIN.getTypeName(), UserOperation.TYPE_LOGIN.getTypeNameEn()); + res.setData2(dataList); + //灏嗘柊鐧诲綍鐨勭敤鎴峰瓨鍏pplication userService.setApplication(temp); } } + if(!urlExist){ + res.set(1,false,"ukey瀵瑰簲鐨勪汉鑴稿簱璺緞涓嶅瓨鍦�"); + } } } } -- Gitblit v1.9.1