whyclxw
2022-01-07 dca5fa1b0367ccbc052ef953db6adb5c2e2bc64c
src/main/java/com/whyc/controller/FaceController.java
@@ -14,6 +14,7 @@
import com.whyc.util.FaceIdentifyUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.boot.system.ApplicationHome;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
import sun.misc.BASE64Decoder;
@@ -24,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;
@@ -32,7 +34,7 @@
 */
@RequestMapping("face")
@RestController
@Api(tags = "人脸识别")
@Api(tags = "用户管理-人脸识别")
public class FaceController {
    @Resource
@@ -59,7 +61,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(" ", "+");
@@ -93,16 +98,11 @@
            Response checkRes1 = FaceIdentifyUtil.orientAndPxDetect(faceEngine,imageInfo);
            if((boolean)checkRes1.getData()){
                /*=========图片保存===========*/
                //获取到tomcat webapp绝对路径
                String realPath = getApplication().getRealPath("/");
                String[] split = realPath.split(File.separator);
                //String[] split = realPath.split("\\\\");
                String projectName = split[split.length - 1];
                String webAppPath = realPath.substring(0, realPath.lastIndexOf(projectName));
                ApplicationHome applicationHome = new ApplicationHome(getClass());
                File jarFile = applicationHome.getDir();
                //存储人脸图片的文件夹
                String fileDirName = webAppPath + projectName + "_photo";
                String fileDirName = jarFile.getParentFile().toString()+File.separator+"fg_photo";
                File file = new File(fileDirName);
                //不存在则创建该文件夹
@@ -169,15 +169,11 @@
            Response checkRes1 = FaceIdentifyUtil.orientAndPxDetect(faceEngine, imageInfo);
            if ((boolean)checkRes1.getData()) {
                /*=========图片保存===========*/
                //获取到tomcat webapp绝对路径
                String realPath = getApplication().getRealPath("/");
                String[] split = realPath.split(File.separator);
                String projectName = split[split.length - 1];
                String webAppPath = realPath.substring(0, realPath.lastIndexOf(projectName));
                ApplicationHome applicationHome = new ApplicationHome(getClass());
                File jarFile = applicationHome.getDir();
                //存储人脸图片的文件夹
                String fileDirName = webAppPath + projectName + "_photo";
                String fileDirName = jarFile.getParentFile().toString()+File.separator+"fg_photo";
                File file = new File(fileDirName);
                //不存在则创建该文件夹
@@ -212,14 +208,14 @@
    @ApiOperation(value = "删除")
    @Transactional
    public Response delete(@RequestParam Integer uId,@RequestParam Integer faceId,
                         @RequestParam String uName){
                         @RequestParam String uName,HttpServletRequest request){
        //更新user_inf和face表
        service.update(uId,faceId);
        //删除图片
        //获取到图片所在文件夹的全路径
        String fileName = findFileDirPath();
        String fileName = findFileDirPath(request);
        //获取图片的全路径
        File file = new File(fileName+File.separator+uName+".jpg");
        if(file.exists()){
@@ -229,20 +225,13 @@
        return new Response().setII(1,"删除成功");
    }
    /**获取图片文件夹全路径*/
    private String findFileDirPath() {
        String realPath = getApplication().getRealPath("/");
        //String[] split = realPath.split("\\\\");
        String[] split = realPath.split(File.separator);
        String projectName = split[split.length - 1];
        String webAppPath = realPath.substring(0, realPath.lastIndexOf(projectName));
        //存储人脸图片的文件夹
        //String fileDirName = webAppPath + "\\" + projectName + "_photo";
        String fileDirName = webAppPath + File.separator + projectName + "_photo";
        return fileDirName;
    /**获取图片文件夹全路径
     * @param request*/
    private String findFileDirPath(HttpServletRequest request) {
        ApplicationHome applicationHome = new ApplicationHome(getClass());
        File jarFile = applicationHome.getDir();
        //在jar包所在目录下生成一个upload文件夹用来存储上传的图片
        return jarFile.getParentFile().toString()+File.separator+"fg_photo";
    }
    /**获取图片的http加载url*/
@@ -265,9 +254,9 @@
     */
    @GetMapping("info")
    @ApiOperation(value = "查询人脸信息")
    public Response getInfo(){
    public Response getInfo(HttpServletRequest request){
        //传入pageNum,pageSize
        UserInf userInf = (UserInf) ActionUtil.getSession().getAttribute("user");
        UserInf userInf = (UserInf) request.getSession().getAttribute("user");
        UserInf user = service.getInfo(userInf.getUId());
        return new Response().set(1,user);