diff --git a/casic-iris-register/pom.xml b/casic-iris-register/pom.xml new file mode 100644 index 0000000..7b6dbad --- /dev/null +++ b/casic-iris-register/pom.xml @@ -0,0 +1,79 @@ + + + 4.0.0 + + com.casic + casic-iris-parent + 1.0.0-SNAPSHOT + ../pom.xml + + + casic-iris-register + ${pro.version} + jar + casic-iris-register + 虹膜注册 + + + + + + com.casic + casic-core + ${casic.version} + + + + com.casic + casic-iris-support + ${casic.version} + + + + org.springframework.boot + spring-boot-starter-aop + + + org.springframework.boot + spring-boot-starter-web + + + + org.springframework.boot + spring-boot-starter-validation + + + org.springframework.boot + spring-boot-starter-websocket + + + org.springframework.boot + spring-boot-starter-test + test + + + commons-io + commons-io + + + + org.apache.commons + commons-lang3 + + + + + + + + + + src/main/java + + **/*.xml + + + + + diff --git a/casic-iris-register/pom.xml b/casic-iris-register/pom.xml new file mode 100644 index 0000000..7b6dbad --- /dev/null +++ b/casic-iris-register/pom.xml @@ -0,0 +1,79 @@ + + + 4.0.0 + + com.casic + casic-iris-parent + 1.0.0-SNAPSHOT + ../pom.xml + + + casic-iris-register + ${pro.version} + jar + casic-iris-register + 虹膜注册 + + + + + + com.casic + casic-core + ${casic.version} + + + + com.casic + casic-iris-support + ${casic.version} + + + + org.springframework.boot + spring-boot-starter-aop + + + org.springframework.boot + spring-boot-starter-web + + + + org.springframework.boot + spring-boot-starter-validation + + + org.springframework.boot + spring-boot-starter-websocket + + + org.springframework.boot + spring-boot-starter-test + test + + + commons-io + commons-io + + + + org.apache.commons + commons-lang3 + + + + + + + + + + src/main/java + + **/*.xml + + + + + diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisDataController.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisDataController.java new file mode 100644 index 0000000..e2b5637 --- /dev/null +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisDataController.java @@ -0,0 +1,191 @@ +package com.casic.missiles.modular.register.controller; + + +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.register.model.IrisData; +import com.casic.missiles.modular.register.service.IIrisDataService; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.beans.factory.annotation.Autowired; +import com.baomidou.mybatisplus.plugins.Page; +import com.baomidou.mybatisplus.mapper.EntityWrapper; + +import java.io.*; +import java.net.Socket; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.List; +import java.util.UUID; + +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.multipart.MultipartFile; + +/** + * 控制器 + * + * @author dev + * @Date 2019-11-29 17:41:20 + */ +@Controller +@RequestMapping("/irisData") +public class IrisDataController extends BaseController { + + + @Autowired + private IIrisDataService irisDataService; + + + /** + * 获取列表 + */ + @RequestMapping(value = "/list") + @ResponseBody + public Object list(String condition) { + return irisDataService.selectList(null); + } + + /** + * 获取分页列表 + */ + @RequestMapping(value = "/listPage") + @ResponseBody + public Object listPage(String condition) { + Page page = new PageFactory().defaultPage(); + EntityWrapper query = new EntityWrapper<>(); + page = irisDataService.selectPage(page,query); + return super.packForBT(page); + } + /** + * 新增 + */ +// @RequestMapping(value = "/add") +// @ResponseBody +// public Object add(IrisData irisData) { +// irisDataService.insert(irisData); +// return ResponseData.success(); +// } + + @RequestMapping(value = "/add") + //@ResponseBody + public Object imageUpload(@RequestParam("file") List file,String personId,String idCardNo) throws IOException { + if(file.size()!=4){ + return ResponseData.error("虹膜图像必须为左眼2副,右眼2副,共4副"); + } + + IrisData irisData = new IrisData(); + + int i = 0; + for (MultipartFile image : file) { + if (!image.isEmpty()) { + InputStream fis = image.getInputStream(); + byte[] result = getIrisCode(fis); + if(returnActualLength(result)==1024){ + if(i==0)irisData.setLeftIrisCode1(result); + else if(i==1)irisData.setLeftIrisCode2(result); + else if(i==2)irisData.setRightIrisCode1(result); + else if(i==3)irisData.setRightIrisCode2(result); + i++; + } + } else { + return ResponseData.error("图像为空"); + } + } + + irisData.setIdCardNo(idCardNo); + irisData.setPersonId(Long.valueOf(personId)); + irisDataService.insert(irisData); + return ResponseData.success(); + } + + /** + * 删除 + */ + @RequestMapping(value = "/delete") + @ResponseBody + public Object delete(@RequestParam String irisDataId) { + irisDataService.deleteById(irisDataId); + return ResponseData.success(); + } + + /** + * 批量删除 + */ + @RequestMapping(value = "/batchDelete") + @ResponseBody + public Object delete(@RequestParam("irisDataIds") List irisDataIds) { + irisDataService.deleteBatchIds(irisDataIds); + return ResponseData.success(); + } + + /** + * 修改 + */ + @RequestMapping(value = "/update") + @ResponseBody + public Object update(IrisData irisData) { + irisDataService.updateById(irisData); + return ResponseData.success(); + } + + /** + * 详情 + */ + @RequestMapping(value = "/detail/{irisDataId}") + @ResponseBody + public Object detail(@PathVariable("irisDataId") String irisDataId) { +// ResultData resultData = new ResultData(); +// resultData.setCode(200); +// resultData.setMessage("查询详情成功"); +// resultData.setData(irisDataService.selectById(irisDataId)); +// return resultData; + return ResponseData.success(); + } + + + private byte[] getIrisCode(InputStream fis) throws IOException { + byte[] irisCode = new byte[1024]; + + //1.创建客户端Socket,指定服务器地址和端口 + Socket socket=new Socket("localhost", 8888); + + //2.获取输出流,向服务器端发送信息 + OutputStream os=socket.getOutputStream();//字节输出流 + byte[] buf = new byte[4096]; + int len=0; + while((len = fis.read(buf))!=-1) { + os.write(buf, 0, len); + } + socket.shutdownOutput();//关闭输出流 + + //3.获取输入流,读取服务器端的响应信息 + InputStream is=socket.getInputStream(); + byte[] bufIn = new byte[1024]; + int num =0; + while ((num = is.read(bufIn))>0){ + System.arraycopy(bufIn,0,irisCode,returnActualLength(irisCode),num); + } + + irisCode = bufIn; + + + //4.关闭资源 + is.close(); + os.close(); + socket.close(); + + return irisCode; + } + + public int returnActualLength(byte[] data) { + int i = 0; + for (; i < data.length; i++) { + if (data[i] == '\0') + break; + } + return i; + } +} diff --git a/casic-iris-register/pom.xml b/casic-iris-register/pom.xml new file mode 100644 index 0000000..7b6dbad --- /dev/null +++ b/casic-iris-register/pom.xml @@ -0,0 +1,79 @@ + + + 4.0.0 + + com.casic + casic-iris-parent + 1.0.0-SNAPSHOT + ../pom.xml + + + casic-iris-register + ${pro.version} + jar + casic-iris-register + 虹膜注册 + + + + + + com.casic + casic-core + ${casic.version} + + + + com.casic + casic-iris-support + ${casic.version} + + + + org.springframework.boot + spring-boot-starter-aop + + + org.springframework.boot + spring-boot-starter-web + + + + org.springframework.boot + spring-boot-starter-validation + + + org.springframework.boot + spring-boot-starter-websocket + + + org.springframework.boot + spring-boot-starter-test + test + + + commons-io + commons-io + + + + org.apache.commons + commons-lang3 + + + + + + + + + + src/main/java + + **/*.xml + + + + + diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisDataController.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisDataController.java new file mode 100644 index 0000000..e2b5637 --- /dev/null +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisDataController.java @@ -0,0 +1,191 @@ +package com.casic.missiles.modular.register.controller; + + +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.register.model.IrisData; +import com.casic.missiles.modular.register.service.IIrisDataService; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.beans.factory.annotation.Autowired; +import com.baomidou.mybatisplus.plugins.Page; +import com.baomidou.mybatisplus.mapper.EntityWrapper; + +import java.io.*; +import java.net.Socket; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.List; +import java.util.UUID; + +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.multipart.MultipartFile; + +/** + * 控制器 + * + * @author dev + * @Date 2019-11-29 17:41:20 + */ +@Controller +@RequestMapping("/irisData") +public class IrisDataController extends BaseController { + + + @Autowired + private IIrisDataService irisDataService; + + + /** + * 获取列表 + */ + @RequestMapping(value = "/list") + @ResponseBody + public Object list(String condition) { + return irisDataService.selectList(null); + } + + /** + * 获取分页列表 + */ + @RequestMapping(value = "/listPage") + @ResponseBody + public Object listPage(String condition) { + Page page = new PageFactory().defaultPage(); + EntityWrapper query = new EntityWrapper<>(); + page = irisDataService.selectPage(page,query); + return super.packForBT(page); + } + /** + * 新增 + */ +// @RequestMapping(value = "/add") +// @ResponseBody +// public Object add(IrisData irisData) { +// irisDataService.insert(irisData); +// return ResponseData.success(); +// } + + @RequestMapping(value = "/add") + //@ResponseBody + public Object imageUpload(@RequestParam("file") List file,String personId,String idCardNo) throws IOException { + if(file.size()!=4){ + return ResponseData.error("虹膜图像必须为左眼2副,右眼2副,共4副"); + } + + IrisData irisData = new IrisData(); + + int i = 0; + for (MultipartFile image : file) { + if (!image.isEmpty()) { + InputStream fis = image.getInputStream(); + byte[] result = getIrisCode(fis); + if(returnActualLength(result)==1024){ + if(i==0)irisData.setLeftIrisCode1(result); + else if(i==1)irisData.setLeftIrisCode2(result); + else if(i==2)irisData.setRightIrisCode1(result); + else if(i==3)irisData.setRightIrisCode2(result); + i++; + } + } else { + return ResponseData.error("图像为空"); + } + } + + irisData.setIdCardNo(idCardNo); + irisData.setPersonId(Long.valueOf(personId)); + irisDataService.insert(irisData); + return ResponseData.success(); + } + + /** + * 删除 + */ + @RequestMapping(value = "/delete") + @ResponseBody + public Object delete(@RequestParam String irisDataId) { + irisDataService.deleteById(irisDataId); + return ResponseData.success(); + } + + /** + * 批量删除 + */ + @RequestMapping(value = "/batchDelete") + @ResponseBody + public Object delete(@RequestParam("irisDataIds") List irisDataIds) { + irisDataService.deleteBatchIds(irisDataIds); + return ResponseData.success(); + } + + /** + * 修改 + */ + @RequestMapping(value = "/update") + @ResponseBody + public Object update(IrisData irisData) { + irisDataService.updateById(irisData); + return ResponseData.success(); + } + + /** + * 详情 + */ + @RequestMapping(value = "/detail/{irisDataId}") + @ResponseBody + public Object detail(@PathVariable("irisDataId") String irisDataId) { +// ResultData resultData = new ResultData(); +// resultData.setCode(200); +// resultData.setMessage("查询详情成功"); +// resultData.setData(irisDataService.selectById(irisDataId)); +// return resultData; + return ResponseData.success(); + } + + + private byte[] getIrisCode(InputStream fis) throws IOException { + byte[] irisCode = new byte[1024]; + + //1.创建客户端Socket,指定服务器地址和端口 + Socket socket=new Socket("localhost", 8888); + + //2.获取输出流,向服务器端发送信息 + OutputStream os=socket.getOutputStream();//字节输出流 + byte[] buf = new byte[4096]; + int len=0; + while((len = fis.read(buf))!=-1) { + os.write(buf, 0, len); + } + socket.shutdownOutput();//关闭输出流 + + //3.获取输入流,读取服务器端的响应信息 + InputStream is=socket.getInputStream(); + byte[] bufIn = new byte[1024]; + int num =0; + while ((num = is.read(bufIn))>0){ + System.arraycopy(bufIn,0,irisCode,returnActualLength(irisCode),num); + } + + irisCode = bufIn; + + + //4.关闭资源 + is.close(); + os.close(); + socket.close(); + + return irisCode; + } + + public int returnActualLength(byte[] data) { + int i = 0; + for (; i < data.length; i++) { + if (data[i] == '\0') + break; + } + return i; + } +} diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/IrisDataMapper.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/IrisDataMapper.java new file mode 100644 index 0000000..9e75c7e --- /dev/null +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/IrisDataMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.register.dao; + +import com.casic.missiles.modular.register.model.IrisData; +import com.baomidou.mybatisplus.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author stylefeng123 + * @since 2019-11-29 + */ +public interface IrisDataMapper extends BaseMapper { + +} diff --git a/casic-iris-register/pom.xml b/casic-iris-register/pom.xml new file mode 100644 index 0000000..7b6dbad --- /dev/null +++ b/casic-iris-register/pom.xml @@ -0,0 +1,79 @@ + + + 4.0.0 + + com.casic + casic-iris-parent + 1.0.0-SNAPSHOT + ../pom.xml + + + casic-iris-register + ${pro.version} + jar + casic-iris-register + 虹膜注册 + + + + + + com.casic + casic-core + ${casic.version} + + + + com.casic + casic-iris-support + ${casic.version} + + + + org.springframework.boot + spring-boot-starter-aop + + + org.springframework.boot + spring-boot-starter-web + + + + org.springframework.boot + spring-boot-starter-validation + + + org.springframework.boot + spring-boot-starter-websocket + + + org.springframework.boot + spring-boot-starter-test + test + + + commons-io + commons-io + + + + org.apache.commons + commons-lang3 + + + + + + + + + + src/main/java + + **/*.xml + + + + + diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisDataController.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisDataController.java new file mode 100644 index 0000000..e2b5637 --- /dev/null +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisDataController.java @@ -0,0 +1,191 @@ +package com.casic.missiles.modular.register.controller; + + +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.register.model.IrisData; +import com.casic.missiles.modular.register.service.IIrisDataService; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.beans.factory.annotation.Autowired; +import com.baomidou.mybatisplus.plugins.Page; +import com.baomidou.mybatisplus.mapper.EntityWrapper; + +import java.io.*; +import java.net.Socket; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.List; +import java.util.UUID; + +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.multipart.MultipartFile; + +/** + * 控制器 + * + * @author dev + * @Date 2019-11-29 17:41:20 + */ +@Controller +@RequestMapping("/irisData") +public class IrisDataController extends BaseController { + + + @Autowired + private IIrisDataService irisDataService; + + + /** + * 获取列表 + */ + @RequestMapping(value = "/list") + @ResponseBody + public Object list(String condition) { + return irisDataService.selectList(null); + } + + /** + * 获取分页列表 + */ + @RequestMapping(value = "/listPage") + @ResponseBody + public Object listPage(String condition) { + Page page = new PageFactory().defaultPage(); + EntityWrapper query = new EntityWrapper<>(); + page = irisDataService.selectPage(page,query); + return super.packForBT(page); + } + /** + * 新增 + */ +// @RequestMapping(value = "/add") +// @ResponseBody +// public Object add(IrisData irisData) { +// irisDataService.insert(irisData); +// return ResponseData.success(); +// } + + @RequestMapping(value = "/add") + //@ResponseBody + public Object imageUpload(@RequestParam("file") List file,String personId,String idCardNo) throws IOException { + if(file.size()!=4){ + return ResponseData.error("虹膜图像必须为左眼2副,右眼2副,共4副"); + } + + IrisData irisData = new IrisData(); + + int i = 0; + for (MultipartFile image : file) { + if (!image.isEmpty()) { + InputStream fis = image.getInputStream(); + byte[] result = getIrisCode(fis); + if(returnActualLength(result)==1024){ + if(i==0)irisData.setLeftIrisCode1(result); + else if(i==1)irisData.setLeftIrisCode2(result); + else if(i==2)irisData.setRightIrisCode1(result); + else if(i==3)irisData.setRightIrisCode2(result); + i++; + } + } else { + return ResponseData.error("图像为空"); + } + } + + irisData.setIdCardNo(idCardNo); + irisData.setPersonId(Long.valueOf(personId)); + irisDataService.insert(irisData); + return ResponseData.success(); + } + + /** + * 删除 + */ + @RequestMapping(value = "/delete") + @ResponseBody + public Object delete(@RequestParam String irisDataId) { + irisDataService.deleteById(irisDataId); + return ResponseData.success(); + } + + /** + * 批量删除 + */ + @RequestMapping(value = "/batchDelete") + @ResponseBody + public Object delete(@RequestParam("irisDataIds") List irisDataIds) { + irisDataService.deleteBatchIds(irisDataIds); + return ResponseData.success(); + } + + /** + * 修改 + */ + @RequestMapping(value = "/update") + @ResponseBody + public Object update(IrisData irisData) { + irisDataService.updateById(irisData); + return ResponseData.success(); + } + + /** + * 详情 + */ + @RequestMapping(value = "/detail/{irisDataId}") + @ResponseBody + public Object detail(@PathVariable("irisDataId") String irisDataId) { +// ResultData resultData = new ResultData(); +// resultData.setCode(200); +// resultData.setMessage("查询详情成功"); +// resultData.setData(irisDataService.selectById(irisDataId)); +// return resultData; + return ResponseData.success(); + } + + + private byte[] getIrisCode(InputStream fis) throws IOException { + byte[] irisCode = new byte[1024]; + + //1.创建客户端Socket,指定服务器地址和端口 + Socket socket=new Socket("localhost", 8888); + + //2.获取输出流,向服务器端发送信息 + OutputStream os=socket.getOutputStream();//字节输出流 + byte[] buf = new byte[4096]; + int len=0; + while((len = fis.read(buf))!=-1) { + os.write(buf, 0, len); + } + socket.shutdownOutput();//关闭输出流 + + //3.获取输入流,读取服务器端的响应信息 + InputStream is=socket.getInputStream(); + byte[] bufIn = new byte[1024]; + int num =0; + while ((num = is.read(bufIn))>0){ + System.arraycopy(bufIn,0,irisCode,returnActualLength(irisCode),num); + } + + irisCode = bufIn; + + + //4.关闭资源 + is.close(); + os.close(); + socket.close(); + + return irisCode; + } + + public int returnActualLength(byte[] data) { + int i = 0; + for (; i < data.length; i++) { + if (data[i] == '\0') + break; + } + return i; + } +} diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/IrisDataMapper.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/IrisDataMapper.java new file mode 100644 index 0000000..9e75c7e --- /dev/null +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/IrisDataMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.register.dao; + +import com.casic.missiles.modular.register.model.IrisData; +import com.baomidou.mybatisplus.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author stylefeng123 + * @since 2019-11-29 + */ +public interface IrisDataMapper extends BaseMapper { + +} diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/mapping/IrisDataMapper.xml b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/mapping/IrisDataMapper.xml new file mode 100644 index 0000000..2b58905 --- /dev/null +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/mapping/IrisDataMapper.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + ID AS id, PERSON_ID AS personId, ID_CARD_NO AS idCardNo, LEFT_IRIS_CODE1 AS leftIrisCode1, LEFT_IRIS_CODE2 AS leftIrisCode2, LEFT_IRIS_CODE3 AS leftIrisCode3, RIGHT_IRIS_CODE1 AS rightIrisCode1, RIGHT_IRIS_CODE2 AS rightIrisCode2, RIGHT_IRIS_CODE3 AS rightIrisCode3 + + + diff --git a/casic-iris-register/pom.xml b/casic-iris-register/pom.xml new file mode 100644 index 0000000..7b6dbad --- /dev/null +++ b/casic-iris-register/pom.xml @@ -0,0 +1,79 @@ + + + 4.0.0 + + com.casic + casic-iris-parent + 1.0.0-SNAPSHOT + ../pom.xml + + + casic-iris-register + ${pro.version} + jar + casic-iris-register + 虹膜注册 + + + + + + com.casic + casic-core + ${casic.version} + + + + com.casic + casic-iris-support + ${casic.version} + + + + org.springframework.boot + spring-boot-starter-aop + + + org.springframework.boot + spring-boot-starter-web + + + + org.springframework.boot + spring-boot-starter-validation + + + org.springframework.boot + spring-boot-starter-websocket + + + org.springframework.boot + spring-boot-starter-test + test + + + commons-io + commons-io + + + + org.apache.commons + commons-lang3 + + + + + + + + + + src/main/java + + **/*.xml + + + + + diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisDataController.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisDataController.java new file mode 100644 index 0000000..e2b5637 --- /dev/null +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisDataController.java @@ -0,0 +1,191 @@ +package com.casic.missiles.modular.register.controller; + + +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.register.model.IrisData; +import com.casic.missiles.modular.register.service.IIrisDataService; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.beans.factory.annotation.Autowired; +import com.baomidou.mybatisplus.plugins.Page; +import com.baomidou.mybatisplus.mapper.EntityWrapper; + +import java.io.*; +import java.net.Socket; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.List; +import java.util.UUID; + +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.multipart.MultipartFile; + +/** + * 控制器 + * + * @author dev + * @Date 2019-11-29 17:41:20 + */ +@Controller +@RequestMapping("/irisData") +public class IrisDataController extends BaseController { + + + @Autowired + private IIrisDataService irisDataService; + + + /** + * 获取列表 + */ + @RequestMapping(value = "/list") + @ResponseBody + public Object list(String condition) { + return irisDataService.selectList(null); + } + + /** + * 获取分页列表 + */ + @RequestMapping(value = "/listPage") + @ResponseBody + public Object listPage(String condition) { + Page page = new PageFactory().defaultPage(); + EntityWrapper query = new EntityWrapper<>(); + page = irisDataService.selectPage(page,query); + return super.packForBT(page); + } + /** + * 新增 + */ +// @RequestMapping(value = "/add") +// @ResponseBody +// public Object add(IrisData irisData) { +// irisDataService.insert(irisData); +// return ResponseData.success(); +// } + + @RequestMapping(value = "/add") + //@ResponseBody + public Object imageUpload(@RequestParam("file") List file,String personId,String idCardNo) throws IOException { + if(file.size()!=4){ + return ResponseData.error("虹膜图像必须为左眼2副,右眼2副,共4副"); + } + + IrisData irisData = new IrisData(); + + int i = 0; + for (MultipartFile image : file) { + if (!image.isEmpty()) { + InputStream fis = image.getInputStream(); + byte[] result = getIrisCode(fis); + if(returnActualLength(result)==1024){ + if(i==0)irisData.setLeftIrisCode1(result); + else if(i==1)irisData.setLeftIrisCode2(result); + else if(i==2)irisData.setRightIrisCode1(result); + else if(i==3)irisData.setRightIrisCode2(result); + i++; + } + } else { + return ResponseData.error("图像为空"); + } + } + + irisData.setIdCardNo(idCardNo); + irisData.setPersonId(Long.valueOf(personId)); + irisDataService.insert(irisData); + return ResponseData.success(); + } + + /** + * 删除 + */ + @RequestMapping(value = "/delete") + @ResponseBody + public Object delete(@RequestParam String irisDataId) { + irisDataService.deleteById(irisDataId); + return ResponseData.success(); + } + + /** + * 批量删除 + */ + @RequestMapping(value = "/batchDelete") + @ResponseBody + public Object delete(@RequestParam("irisDataIds") List irisDataIds) { + irisDataService.deleteBatchIds(irisDataIds); + return ResponseData.success(); + } + + /** + * 修改 + */ + @RequestMapping(value = "/update") + @ResponseBody + public Object update(IrisData irisData) { + irisDataService.updateById(irisData); + return ResponseData.success(); + } + + /** + * 详情 + */ + @RequestMapping(value = "/detail/{irisDataId}") + @ResponseBody + public Object detail(@PathVariable("irisDataId") String irisDataId) { +// ResultData resultData = new ResultData(); +// resultData.setCode(200); +// resultData.setMessage("查询详情成功"); +// resultData.setData(irisDataService.selectById(irisDataId)); +// return resultData; + return ResponseData.success(); + } + + + private byte[] getIrisCode(InputStream fis) throws IOException { + byte[] irisCode = new byte[1024]; + + //1.创建客户端Socket,指定服务器地址和端口 + Socket socket=new Socket("localhost", 8888); + + //2.获取输出流,向服务器端发送信息 + OutputStream os=socket.getOutputStream();//字节输出流 + byte[] buf = new byte[4096]; + int len=0; + while((len = fis.read(buf))!=-1) { + os.write(buf, 0, len); + } + socket.shutdownOutput();//关闭输出流 + + //3.获取输入流,读取服务器端的响应信息 + InputStream is=socket.getInputStream(); + byte[] bufIn = new byte[1024]; + int num =0; + while ((num = is.read(bufIn))>0){ + System.arraycopy(bufIn,0,irisCode,returnActualLength(irisCode),num); + } + + irisCode = bufIn; + + + //4.关闭资源 + is.close(); + os.close(); + socket.close(); + + return irisCode; + } + + public int returnActualLength(byte[] data) { + int i = 0; + for (; i < data.length; i++) { + if (data[i] == '\0') + break; + } + return i; + } +} diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/IrisDataMapper.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/IrisDataMapper.java new file mode 100644 index 0000000..9e75c7e --- /dev/null +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/IrisDataMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.register.dao; + +import com.casic.missiles.modular.register.model.IrisData; +import com.baomidou.mybatisplus.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author stylefeng123 + * @since 2019-11-29 + */ +public interface IrisDataMapper extends BaseMapper { + +} diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/mapping/IrisDataMapper.xml b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/mapping/IrisDataMapper.xml new file mode 100644 index 0000000..2b58905 --- /dev/null +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/mapping/IrisDataMapper.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + ID AS id, PERSON_ID AS personId, ID_CARD_NO AS idCardNo, LEFT_IRIS_CODE1 AS leftIrisCode1, LEFT_IRIS_CODE2 AS leftIrisCode2, LEFT_IRIS_CODE3 AS leftIrisCode3, RIGHT_IRIS_CODE1 AS rightIrisCode1, RIGHT_IRIS_CODE2 AS rightIrisCode2, RIGHT_IRIS_CODE3 AS rightIrisCode3 + + + diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/model/IrisData.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/model/IrisData.java new file mode 100644 index 0000000..9017b60 --- /dev/null +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/model/IrisData.java @@ -0,0 +1,92 @@ +package com.casic.missiles.modular.register.model; + +import java.io.Serializable; + +import com.baomidou.mybatisplus.annotations.TableId; +import com.baomidou.mybatisplus.annotations.TableField; +import com.baomidou.mybatisplus.activerecord.Model; +import com.baomidou.mybatisplus.annotations.TableName; +import com.baomidou.mybatisplus.enums.IdType; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author stylefeng123 + * @since 2019-11-29 + */ +@Data +@TableName("iris_data") +public class IrisData extends Model { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type= IdType.ID_WORKER) + private Long id; + /** + * 对应person表的主键 + */ + @TableField("PERSON_ID") + private Long personId; + /** + * 身份证号 + */ + @TableField("ID_CARD_NO") + private String idCardNo; + /** + * 左眼虹膜编码 + */ + @TableField("LEFT_IRIS_CODE1") + private byte[] leftIrisCode1; + /** + * 左眼虹膜编码2 + */ + @TableField("LEFT_IRIS_CODE2") + private byte[] leftIrisCode2; + @TableField("LEFT_IRIS_CODE3") + private byte[] leftIrisCode3; + /** + * 右眼虹膜编码1 + */ + @TableField("RIGHT_IRIS_CODE1") + private byte[] rightIrisCode1; + /** + * 右眼虹膜编码2 + */ + @TableField("RIGHT_IRIS_CODE2") + private byte[] rightIrisCode2; + /** + * 右眼虹膜编码3 + */ + @TableField("RIGHT_IRIS_CODE3") + private byte[] rightIrisCode3; + + + + @Override + protected Serializable pkVal() { + return this.id; + } + + @Override + public String toString() { + return "IrisData{" + + "id=" + id + + ", personId=" + personId + + ", idCardNo=" + idCardNo + + ", leftIrisCode1=" + leftIrisCode1 + + ", leftIrisCode2=" + leftIrisCode2 + + ", leftIrisCode3=" + leftIrisCode3 + + ", rightIrisCode1=" + rightIrisCode1 + + ", rightIrisCode2=" + rightIrisCode2 + + ", rightIrisCode3=" + rightIrisCode3 + + "}"; + } +} diff --git a/casic-iris-register/pom.xml b/casic-iris-register/pom.xml new file mode 100644 index 0000000..7b6dbad --- /dev/null +++ b/casic-iris-register/pom.xml @@ -0,0 +1,79 @@ + + + 4.0.0 + + com.casic + casic-iris-parent + 1.0.0-SNAPSHOT + ../pom.xml + + + casic-iris-register + ${pro.version} + jar + casic-iris-register + 虹膜注册 + + + + + + com.casic + casic-core + ${casic.version} + + + + com.casic + casic-iris-support + ${casic.version} + + + + org.springframework.boot + spring-boot-starter-aop + + + org.springframework.boot + spring-boot-starter-web + + + + org.springframework.boot + spring-boot-starter-validation + + + org.springframework.boot + spring-boot-starter-websocket + + + org.springframework.boot + spring-boot-starter-test + test + + + commons-io + commons-io + + + + org.apache.commons + commons-lang3 + + + + + + + + + + src/main/java + + **/*.xml + + + + + diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisDataController.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisDataController.java new file mode 100644 index 0000000..e2b5637 --- /dev/null +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisDataController.java @@ -0,0 +1,191 @@ +package com.casic.missiles.modular.register.controller; + + +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.register.model.IrisData; +import com.casic.missiles.modular.register.service.IIrisDataService; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.beans.factory.annotation.Autowired; +import com.baomidou.mybatisplus.plugins.Page; +import com.baomidou.mybatisplus.mapper.EntityWrapper; + +import java.io.*; +import java.net.Socket; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.List; +import java.util.UUID; + +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.multipart.MultipartFile; + +/** + * 控制器 + * + * @author dev + * @Date 2019-11-29 17:41:20 + */ +@Controller +@RequestMapping("/irisData") +public class IrisDataController extends BaseController { + + + @Autowired + private IIrisDataService irisDataService; + + + /** + * 获取列表 + */ + @RequestMapping(value = "/list") + @ResponseBody + public Object list(String condition) { + return irisDataService.selectList(null); + } + + /** + * 获取分页列表 + */ + @RequestMapping(value = "/listPage") + @ResponseBody + public Object listPage(String condition) { + Page page = new PageFactory().defaultPage(); + EntityWrapper query = new EntityWrapper<>(); + page = irisDataService.selectPage(page,query); + return super.packForBT(page); + } + /** + * 新增 + */ +// @RequestMapping(value = "/add") +// @ResponseBody +// public Object add(IrisData irisData) { +// irisDataService.insert(irisData); +// return ResponseData.success(); +// } + + @RequestMapping(value = "/add") + //@ResponseBody + public Object imageUpload(@RequestParam("file") List file,String personId,String idCardNo) throws IOException { + if(file.size()!=4){ + return ResponseData.error("虹膜图像必须为左眼2副,右眼2副,共4副"); + } + + IrisData irisData = new IrisData(); + + int i = 0; + for (MultipartFile image : file) { + if (!image.isEmpty()) { + InputStream fis = image.getInputStream(); + byte[] result = getIrisCode(fis); + if(returnActualLength(result)==1024){ + if(i==0)irisData.setLeftIrisCode1(result); + else if(i==1)irisData.setLeftIrisCode2(result); + else if(i==2)irisData.setRightIrisCode1(result); + else if(i==3)irisData.setRightIrisCode2(result); + i++; + } + } else { + return ResponseData.error("图像为空"); + } + } + + irisData.setIdCardNo(idCardNo); + irisData.setPersonId(Long.valueOf(personId)); + irisDataService.insert(irisData); + return ResponseData.success(); + } + + /** + * 删除 + */ + @RequestMapping(value = "/delete") + @ResponseBody + public Object delete(@RequestParam String irisDataId) { + irisDataService.deleteById(irisDataId); + return ResponseData.success(); + } + + /** + * 批量删除 + */ + @RequestMapping(value = "/batchDelete") + @ResponseBody + public Object delete(@RequestParam("irisDataIds") List irisDataIds) { + irisDataService.deleteBatchIds(irisDataIds); + return ResponseData.success(); + } + + /** + * 修改 + */ + @RequestMapping(value = "/update") + @ResponseBody + public Object update(IrisData irisData) { + irisDataService.updateById(irisData); + return ResponseData.success(); + } + + /** + * 详情 + */ + @RequestMapping(value = "/detail/{irisDataId}") + @ResponseBody + public Object detail(@PathVariable("irisDataId") String irisDataId) { +// ResultData resultData = new ResultData(); +// resultData.setCode(200); +// resultData.setMessage("查询详情成功"); +// resultData.setData(irisDataService.selectById(irisDataId)); +// return resultData; + return ResponseData.success(); + } + + + private byte[] getIrisCode(InputStream fis) throws IOException { + byte[] irisCode = new byte[1024]; + + //1.创建客户端Socket,指定服务器地址和端口 + Socket socket=new Socket("localhost", 8888); + + //2.获取输出流,向服务器端发送信息 + OutputStream os=socket.getOutputStream();//字节输出流 + byte[] buf = new byte[4096]; + int len=0; + while((len = fis.read(buf))!=-1) { + os.write(buf, 0, len); + } + socket.shutdownOutput();//关闭输出流 + + //3.获取输入流,读取服务器端的响应信息 + InputStream is=socket.getInputStream(); + byte[] bufIn = new byte[1024]; + int num =0; + while ((num = is.read(bufIn))>0){ + System.arraycopy(bufIn,0,irisCode,returnActualLength(irisCode),num); + } + + irisCode = bufIn; + + + //4.关闭资源 + is.close(); + os.close(); + socket.close(); + + return irisCode; + } + + public int returnActualLength(byte[] data) { + int i = 0; + for (; i < data.length; i++) { + if (data[i] == '\0') + break; + } + return i; + } +} diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/IrisDataMapper.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/IrisDataMapper.java new file mode 100644 index 0000000..9e75c7e --- /dev/null +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/IrisDataMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.register.dao; + +import com.casic.missiles.modular.register.model.IrisData; +import com.baomidou.mybatisplus.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author stylefeng123 + * @since 2019-11-29 + */ +public interface IrisDataMapper extends BaseMapper { + +} diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/mapping/IrisDataMapper.xml b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/mapping/IrisDataMapper.xml new file mode 100644 index 0000000..2b58905 --- /dev/null +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/mapping/IrisDataMapper.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + ID AS id, PERSON_ID AS personId, ID_CARD_NO AS idCardNo, LEFT_IRIS_CODE1 AS leftIrisCode1, LEFT_IRIS_CODE2 AS leftIrisCode2, LEFT_IRIS_CODE3 AS leftIrisCode3, RIGHT_IRIS_CODE1 AS rightIrisCode1, RIGHT_IRIS_CODE2 AS rightIrisCode2, RIGHT_IRIS_CODE3 AS rightIrisCode3 + + + diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/model/IrisData.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/model/IrisData.java new file mode 100644 index 0000000..9017b60 --- /dev/null +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/model/IrisData.java @@ -0,0 +1,92 @@ +package com.casic.missiles.modular.register.model; + +import java.io.Serializable; + +import com.baomidou.mybatisplus.annotations.TableId; +import com.baomidou.mybatisplus.annotations.TableField; +import com.baomidou.mybatisplus.activerecord.Model; +import com.baomidou.mybatisplus.annotations.TableName; +import com.baomidou.mybatisplus.enums.IdType; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author stylefeng123 + * @since 2019-11-29 + */ +@Data +@TableName("iris_data") +public class IrisData extends Model { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type= IdType.ID_WORKER) + private Long id; + /** + * 对应person表的主键 + */ + @TableField("PERSON_ID") + private Long personId; + /** + * 身份证号 + */ + @TableField("ID_CARD_NO") + private String idCardNo; + /** + * 左眼虹膜编码 + */ + @TableField("LEFT_IRIS_CODE1") + private byte[] leftIrisCode1; + /** + * 左眼虹膜编码2 + */ + @TableField("LEFT_IRIS_CODE2") + private byte[] leftIrisCode2; + @TableField("LEFT_IRIS_CODE3") + private byte[] leftIrisCode3; + /** + * 右眼虹膜编码1 + */ + @TableField("RIGHT_IRIS_CODE1") + private byte[] rightIrisCode1; + /** + * 右眼虹膜编码2 + */ + @TableField("RIGHT_IRIS_CODE2") + private byte[] rightIrisCode2; + /** + * 右眼虹膜编码3 + */ + @TableField("RIGHT_IRIS_CODE3") + private byte[] rightIrisCode3; + + + + @Override + protected Serializable pkVal() { + return this.id; + } + + @Override + public String toString() { + return "IrisData{" + + "id=" + id + + ", personId=" + personId + + ", idCardNo=" + idCardNo + + ", leftIrisCode1=" + leftIrisCode1 + + ", leftIrisCode2=" + leftIrisCode2 + + ", leftIrisCode3=" + leftIrisCode3 + + ", rightIrisCode1=" + rightIrisCode1 + + ", rightIrisCode2=" + rightIrisCode2 + + ", rightIrisCode3=" + rightIrisCode3 + + "}"; + } +} diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisDataService.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisDataService.java new file mode 100644 index 0000000..dbfa826 --- /dev/null +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisDataService.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.register.service; + +import com.casic.missiles.modular.register.model.IrisData; +import com.baomidou.mybatisplus.service.IService; + +/** + *

+ * 服务类 + *

+ * + * @author stylefeng123 + * @since 2019-11-29 + */ +public interface IIrisDataService extends IService { + +} diff --git a/casic-iris-register/pom.xml b/casic-iris-register/pom.xml new file mode 100644 index 0000000..7b6dbad --- /dev/null +++ b/casic-iris-register/pom.xml @@ -0,0 +1,79 @@ + + + 4.0.0 + + com.casic + casic-iris-parent + 1.0.0-SNAPSHOT + ../pom.xml + + + casic-iris-register + ${pro.version} + jar + casic-iris-register + 虹膜注册 + + + + + + com.casic + casic-core + ${casic.version} + + + + com.casic + casic-iris-support + ${casic.version} + + + + org.springframework.boot + spring-boot-starter-aop + + + org.springframework.boot + spring-boot-starter-web + + + + org.springframework.boot + spring-boot-starter-validation + + + org.springframework.boot + spring-boot-starter-websocket + + + org.springframework.boot + spring-boot-starter-test + test + + + commons-io + commons-io + + + + org.apache.commons + commons-lang3 + + + + + + + + + + src/main/java + + **/*.xml + + + + + diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisDataController.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisDataController.java new file mode 100644 index 0000000..e2b5637 --- /dev/null +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisDataController.java @@ -0,0 +1,191 @@ +package com.casic.missiles.modular.register.controller; + + +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.register.model.IrisData; +import com.casic.missiles.modular.register.service.IIrisDataService; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.beans.factory.annotation.Autowired; +import com.baomidou.mybatisplus.plugins.Page; +import com.baomidou.mybatisplus.mapper.EntityWrapper; + +import java.io.*; +import java.net.Socket; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.List; +import java.util.UUID; + +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.multipart.MultipartFile; + +/** + * 控制器 + * + * @author dev + * @Date 2019-11-29 17:41:20 + */ +@Controller +@RequestMapping("/irisData") +public class IrisDataController extends BaseController { + + + @Autowired + private IIrisDataService irisDataService; + + + /** + * 获取列表 + */ + @RequestMapping(value = "/list") + @ResponseBody + public Object list(String condition) { + return irisDataService.selectList(null); + } + + /** + * 获取分页列表 + */ + @RequestMapping(value = "/listPage") + @ResponseBody + public Object listPage(String condition) { + Page page = new PageFactory().defaultPage(); + EntityWrapper query = new EntityWrapper<>(); + page = irisDataService.selectPage(page,query); + return super.packForBT(page); + } + /** + * 新增 + */ +// @RequestMapping(value = "/add") +// @ResponseBody +// public Object add(IrisData irisData) { +// irisDataService.insert(irisData); +// return ResponseData.success(); +// } + + @RequestMapping(value = "/add") + //@ResponseBody + public Object imageUpload(@RequestParam("file") List file,String personId,String idCardNo) throws IOException { + if(file.size()!=4){ + return ResponseData.error("虹膜图像必须为左眼2副,右眼2副,共4副"); + } + + IrisData irisData = new IrisData(); + + int i = 0; + for (MultipartFile image : file) { + if (!image.isEmpty()) { + InputStream fis = image.getInputStream(); + byte[] result = getIrisCode(fis); + if(returnActualLength(result)==1024){ + if(i==0)irisData.setLeftIrisCode1(result); + else if(i==1)irisData.setLeftIrisCode2(result); + else if(i==2)irisData.setRightIrisCode1(result); + else if(i==3)irisData.setRightIrisCode2(result); + i++; + } + } else { + return ResponseData.error("图像为空"); + } + } + + irisData.setIdCardNo(idCardNo); + irisData.setPersonId(Long.valueOf(personId)); + irisDataService.insert(irisData); + return ResponseData.success(); + } + + /** + * 删除 + */ + @RequestMapping(value = "/delete") + @ResponseBody + public Object delete(@RequestParam String irisDataId) { + irisDataService.deleteById(irisDataId); + return ResponseData.success(); + } + + /** + * 批量删除 + */ + @RequestMapping(value = "/batchDelete") + @ResponseBody + public Object delete(@RequestParam("irisDataIds") List irisDataIds) { + irisDataService.deleteBatchIds(irisDataIds); + return ResponseData.success(); + } + + /** + * 修改 + */ + @RequestMapping(value = "/update") + @ResponseBody + public Object update(IrisData irisData) { + irisDataService.updateById(irisData); + return ResponseData.success(); + } + + /** + * 详情 + */ + @RequestMapping(value = "/detail/{irisDataId}") + @ResponseBody + public Object detail(@PathVariable("irisDataId") String irisDataId) { +// ResultData resultData = new ResultData(); +// resultData.setCode(200); +// resultData.setMessage("查询详情成功"); +// resultData.setData(irisDataService.selectById(irisDataId)); +// return resultData; + return ResponseData.success(); + } + + + private byte[] getIrisCode(InputStream fis) throws IOException { + byte[] irisCode = new byte[1024]; + + //1.创建客户端Socket,指定服务器地址和端口 + Socket socket=new Socket("localhost", 8888); + + //2.获取输出流,向服务器端发送信息 + OutputStream os=socket.getOutputStream();//字节输出流 + byte[] buf = new byte[4096]; + int len=0; + while((len = fis.read(buf))!=-1) { + os.write(buf, 0, len); + } + socket.shutdownOutput();//关闭输出流 + + //3.获取输入流,读取服务器端的响应信息 + InputStream is=socket.getInputStream(); + byte[] bufIn = new byte[1024]; + int num =0; + while ((num = is.read(bufIn))>0){ + System.arraycopy(bufIn,0,irisCode,returnActualLength(irisCode),num); + } + + irisCode = bufIn; + + + //4.关闭资源 + is.close(); + os.close(); + socket.close(); + + return irisCode; + } + + public int returnActualLength(byte[] data) { + int i = 0; + for (; i < data.length; i++) { + if (data[i] == '\0') + break; + } + return i; + } +} diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/IrisDataMapper.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/IrisDataMapper.java new file mode 100644 index 0000000..9e75c7e --- /dev/null +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/IrisDataMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.register.dao; + +import com.casic.missiles.modular.register.model.IrisData; +import com.baomidou.mybatisplus.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author stylefeng123 + * @since 2019-11-29 + */ +public interface IrisDataMapper extends BaseMapper { + +} diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/mapping/IrisDataMapper.xml b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/mapping/IrisDataMapper.xml new file mode 100644 index 0000000..2b58905 --- /dev/null +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/mapping/IrisDataMapper.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + ID AS id, PERSON_ID AS personId, ID_CARD_NO AS idCardNo, LEFT_IRIS_CODE1 AS leftIrisCode1, LEFT_IRIS_CODE2 AS leftIrisCode2, LEFT_IRIS_CODE3 AS leftIrisCode3, RIGHT_IRIS_CODE1 AS rightIrisCode1, RIGHT_IRIS_CODE2 AS rightIrisCode2, RIGHT_IRIS_CODE3 AS rightIrisCode3 + + + diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/model/IrisData.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/model/IrisData.java new file mode 100644 index 0000000..9017b60 --- /dev/null +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/model/IrisData.java @@ -0,0 +1,92 @@ +package com.casic.missiles.modular.register.model; + +import java.io.Serializable; + +import com.baomidou.mybatisplus.annotations.TableId; +import com.baomidou.mybatisplus.annotations.TableField; +import com.baomidou.mybatisplus.activerecord.Model; +import com.baomidou.mybatisplus.annotations.TableName; +import com.baomidou.mybatisplus.enums.IdType; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author stylefeng123 + * @since 2019-11-29 + */ +@Data +@TableName("iris_data") +public class IrisData extends Model { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type= IdType.ID_WORKER) + private Long id; + /** + * 对应person表的主键 + */ + @TableField("PERSON_ID") + private Long personId; + /** + * 身份证号 + */ + @TableField("ID_CARD_NO") + private String idCardNo; + /** + * 左眼虹膜编码 + */ + @TableField("LEFT_IRIS_CODE1") + private byte[] leftIrisCode1; + /** + * 左眼虹膜编码2 + */ + @TableField("LEFT_IRIS_CODE2") + private byte[] leftIrisCode2; + @TableField("LEFT_IRIS_CODE3") + private byte[] leftIrisCode3; + /** + * 右眼虹膜编码1 + */ + @TableField("RIGHT_IRIS_CODE1") + private byte[] rightIrisCode1; + /** + * 右眼虹膜编码2 + */ + @TableField("RIGHT_IRIS_CODE2") + private byte[] rightIrisCode2; + /** + * 右眼虹膜编码3 + */ + @TableField("RIGHT_IRIS_CODE3") + private byte[] rightIrisCode3; + + + + @Override + protected Serializable pkVal() { + return this.id; + } + + @Override + public String toString() { + return "IrisData{" + + "id=" + id + + ", personId=" + personId + + ", idCardNo=" + idCardNo + + ", leftIrisCode1=" + leftIrisCode1 + + ", leftIrisCode2=" + leftIrisCode2 + + ", leftIrisCode3=" + leftIrisCode3 + + ", rightIrisCode1=" + rightIrisCode1 + + ", rightIrisCode2=" + rightIrisCode2 + + ", rightIrisCode3=" + rightIrisCode3 + + "}"; + } +} diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisDataService.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisDataService.java new file mode 100644 index 0000000..dbfa826 --- /dev/null +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisDataService.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.register.service; + +import com.casic.missiles.modular.register.model.IrisData; +import com.baomidou.mybatisplus.service.IService; + +/** + *

+ * 服务类 + *

+ * + * @author stylefeng123 + * @since 2019-11-29 + */ +public interface IIrisDataService extends IService { + +} diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/impl/IrisDataServiceImpl.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/impl/IrisDataServiceImpl.java new file mode 100644 index 0000000..f691055 --- /dev/null +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/impl/IrisDataServiceImpl.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.register.service.impl; + +import com.casic.missiles.modular.register.dao.IrisDataMapper; +import com.casic.missiles.modular.register.model.IrisData; +import com.casic.missiles.modular.register.service.IIrisDataService; +import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

+ * 服务实现类 + *

+ * + * @author stylefeng123 + * @since 2019-11-29 + */ +@Service +public class IrisDataServiceImpl extends ServiceImpl implements IIrisDataService { + +} diff --git a/casic-iris-register/pom.xml b/casic-iris-register/pom.xml new file mode 100644 index 0000000..7b6dbad --- /dev/null +++ b/casic-iris-register/pom.xml @@ -0,0 +1,79 @@ + + + 4.0.0 + + com.casic + casic-iris-parent + 1.0.0-SNAPSHOT + ../pom.xml + + + casic-iris-register + ${pro.version} + jar + casic-iris-register + 虹膜注册 + + + + + + com.casic + casic-core + ${casic.version} + + + + com.casic + casic-iris-support + ${casic.version} + + + + org.springframework.boot + spring-boot-starter-aop + + + org.springframework.boot + spring-boot-starter-web + + + + org.springframework.boot + spring-boot-starter-validation + + + org.springframework.boot + spring-boot-starter-websocket + + + org.springframework.boot + spring-boot-starter-test + test + + + commons-io + commons-io + + + + org.apache.commons + commons-lang3 + + + + + + + + + + src/main/java + + **/*.xml + + + + + diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisDataController.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisDataController.java new file mode 100644 index 0000000..e2b5637 --- /dev/null +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisDataController.java @@ -0,0 +1,191 @@ +package com.casic.missiles.modular.register.controller; + + +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.register.model.IrisData; +import com.casic.missiles.modular.register.service.IIrisDataService; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.beans.factory.annotation.Autowired; +import com.baomidou.mybatisplus.plugins.Page; +import com.baomidou.mybatisplus.mapper.EntityWrapper; + +import java.io.*; +import java.net.Socket; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.List; +import java.util.UUID; + +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.multipart.MultipartFile; + +/** + * 控制器 + * + * @author dev + * @Date 2019-11-29 17:41:20 + */ +@Controller +@RequestMapping("/irisData") +public class IrisDataController extends BaseController { + + + @Autowired + private IIrisDataService irisDataService; + + + /** + * 获取列表 + */ + @RequestMapping(value = "/list") + @ResponseBody + public Object list(String condition) { + return irisDataService.selectList(null); + } + + /** + * 获取分页列表 + */ + @RequestMapping(value = "/listPage") + @ResponseBody + public Object listPage(String condition) { + Page page = new PageFactory().defaultPage(); + EntityWrapper query = new EntityWrapper<>(); + page = irisDataService.selectPage(page,query); + return super.packForBT(page); + } + /** + * 新增 + */ +// @RequestMapping(value = "/add") +// @ResponseBody +// public Object add(IrisData irisData) { +// irisDataService.insert(irisData); +// return ResponseData.success(); +// } + + @RequestMapping(value = "/add") + //@ResponseBody + public Object imageUpload(@RequestParam("file") List file,String personId,String idCardNo) throws IOException { + if(file.size()!=4){ + return ResponseData.error("虹膜图像必须为左眼2副,右眼2副,共4副"); + } + + IrisData irisData = new IrisData(); + + int i = 0; + for (MultipartFile image : file) { + if (!image.isEmpty()) { + InputStream fis = image.getInputStream(); + byte[] result = getIrisCode(fis); + if(returnActualLength(result)==1024){ + if(i==0)irisData.setLeftIrisCode1(result); + else if(i==1)irisData.setLeftIrisCode2(result); + else if(i==2)irisData.setRightIrisCode1(result); + else if(i==3)irisData.setRightIrisCode2(result); + i++; + } + } else { + return ResponseData.error("图像为空"); + } + } + + irisData.setIdCardNo(idCardNo); + irisData.setPersonId(Long.valueOf(personId)); + irisDataService.insert(irisData); + return ResponseData.success(); + } + + /** + * 删除 + */ + @RequestMapping(value = "/delete") + @ResponseBody + public Object delete(@RequestParam String irisDataId) { + irisDataService.deleteById(irisDataId); + return ResponseData.success(); + } + + /** + * 批量删除 + */ + @RequestMapping(value = "/batchDelete") + @ResponseBody + public Object delete(@RequestParam("irisDataIds") List irisDataIds) { + irisDataService.deleteBatchIds(irisDataIds); + return ResponseData.success(); + } + + /** + * 修改 + */ + @RequestMapping(value = "/update") + @ResponseBody + public Object update(IrisData irisData) { + irisDataService.updateById(irisData); + return ResponseData.success(); + } + + /** + * 详情 + */ + @RequestMapping(value = "/detail/{irisDataId}") + @ResponseBody + public Object detail(@PathVariable("irisDataId") String irisDataId) { +// ResultData resultData = new ResultData(); +// resultData.setCode(200); +// resultData.setMessage("查询详情成功"); +// resultData.setData(irisDataService.selectById(irisDataId)); +// return resultData; + return ResponseData.success(); + } + + + private byte[] getIrisCode(InputStream fis) throws IOException { + byte[] irisCode = new byte[1024]; + + //1.创建客户端Socket,指定服务器地址和端口 + Socket socket=new Socket("localhost", 8888); + + //2.获取输出流,向服务器端发送信息 + OutputStream os=socket.getOutputStream();//字节输出流 + byte[] buf = new byte[4096]; + int len=0; + while((len = fis.read(buf))!=-1) { + os.write(buf, 0, len); + } + socket.shutdownOutput();//关闭输出流 + + //3.获取输入流,读取服务器端的响应信息 + InputStream is=socket.getInputStream(); + byte[] bufIn = new byte[1024]; + int num =0; + while ((num = is.read(bufIn))>0){ + System.arraycopy(bufIn,0,irisCode,returnActualLength(irisCode),num); + } + + irisCode = bufIn; + + + //4.关闭资源 + is.close(); + os.close(); + socket.close(); + + return irisCode; + } + + public int returnActualLength(byte[] data) { + int i = 0; + for (; i < data.length; i++) { + if (data[i] == '\0') + break; + } + return i; + } +} diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/IrisDataMapper.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/IrisDataMapper.java new file mode 100644 index 0000000..9e75c7e --- /dev/null +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/IrisDataMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.register.dao; + +import com.casic.missiles.modular.register.model.IrisData; +import com.baomidou.mybatisplus.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author stylefeng123 + * @since 2019-11-29 + */ +public interface IrisDataMapper extends BaseMapper { + +} diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/mapping/IrisDataMapper.xml b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/mapping/IrisDataMapper.xml new file mode 100644 index 0000000..2b58905 --- /dev/null +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/mapping/IrisDataMapper.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + ID AS id, PERSON_ID AS personId, ID_CARD_NO AS idCardNo, LEFT_IRIS_CODE1 AS leftIrisCode1, LEFT_IRIS_CODE2 AS leftIrisCode2, LEFT_IRIS_CODE3 AS leftIrisCode3, RIGHT_IRIS_CODE1 AS rightIrisCode1, RIGHT_IRIS_CODE2 AS rightIrisCode2, RIGHT_IRIS_CODE3 AS rightIrisCode3 + + + diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/model/IrisData.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/model/IrisData.java new file mode 100644 index 0000000..9017b60 --- /dev/null +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/model/IrisData.java @@ -0,0 +1,92 @@ +package com.casic.missiles.modular.register.model; + +import java.io.Serializable; + +import com.baomidou.mybatisplus.annotations.TableId; +import com.baomidou.mybatisplus.annotations.TableField; +import com.baomidou.mybatisplus.activerecord.Model; +import com.baomidou.mybatisplus.annotations.TableName; +import com.baomidou.mybatisplus.enums.IdType; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author stylefeng123 + * @since 2019-11-29 + */ +@Data +@TableName("iris_data") +public class IrisData extends Model { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type= IdType.ID_WORKER) + private Long id; + /** + * 对应person表的主键 + */ + @TableField("PERSON_ID") + private Long personId; + /** + * 身份证号 + */ + @TableField("ID_CARD_NO") + private String idCardNo; + /** + * 左眼虹膜编码 + */ + @TableField("LEFT_IRIS_CODE1") + private byte[] leftIrisCode1; + /** + * 左眼虹膜编码2 + */ + @TableField("LEFT_IRIS_CODE2") + private byte[] leftIrisCode2; + @TableField("LEFT_IRIS_CODE3") + private byte[] leftIrisCode3; + /** + * 右眼虹膜编码1 + */ + @TableField("RIGHT_IRIS_CODE1") + private byte[] rightIrisCode1; + /** + * 右眼虹膜编码2 + */ + @TableField("RIGHT_IRIS_CODE2") + private byte[] rightIrisCode2; + /** + * 右眼虹膜编码3 + */ + @TableField("RIGHT_IRIS_CODE3") + private byte[] rightIrisCode3; + + + + @Override + protected Serializable pkVal() { + return this.id; + } + + @Override + public String toString() { + return "IrisData{" + + "id=" + id + + ", personId=" + personId + + ", idCardNo=" + idCardNo + + ", leftIrisCode1=" + leftIrisCode1 + + ", leftIrisCode2=" + leftIrisCode2 + + ", leftIrisCode3=" + leftIrisCode3 + + ", rightIrisCode1=" + rightIrisCode1 + + ", rightIrisCode2=" + rightIrisCode2 + + ", rightIrisCode3=" + rightIrisCode3 + + "}"; + } +} diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisDataService.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisDataService.java new file mode 100644 index 0000000..dbfa826 --- /dev/null +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisDataService.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.register.service; + +import com.casic.missiles.modular.register.model.IrisData; +import com.baomidou.mybatisplus.service.IService; + +/** + *

+ * 服务类 + *

+ * + * @author stylefeng123 + * @since 2019-11-29 + */ +public interface IIrisDataService extends IService { + +} diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/impl/IrisDataServiceImpl.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/impl/IrisDataServiceImpl.java new file mode 100644 index 0000000..f691055 --- /dev/null +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/impl/IrisDataServiceImpl.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.register.service.impl; + +import com.casic.missiles.modular.register.dao.IrisDataMapper; +import com.casic.missiles.modular.register.model.IrisData; +import com.casic.missiles.modular.register.service.IIrisDataService; +import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

+ * 服务实现类 + *

+ * + * @author stylefeng123 + * @since 2019-11-29 + */ +@Service +public class IrisDataServiceImpl extends ServiceImpl implements IIrisDataService { + +} diff --git a/casic-web/pom.xml b/casic-web/pom.xml index 64e5eae..9dbe1fb 100644 --- a/casic-web/pom.xml +++ b/casic-web/pom.xml @@ -198,6 +198,7 @@ groovy-all true + diff --git a/casic-iris-register/pom.xml b/casic-iris-register/pom.xml new file mode 100644 index 0000000..7b6dbad --- /dev/null +++ b/casic-iris-register/pom.xml @@ -0,0 +1,79 @@ + + + 4.0.0 + + com.casic + casic-iris-parent + 1.0.0-SNAPSHOT + ../pom.xml + + + casic-iris-register + ${pro.version} + jar + casic-iris-register + 虹膜注册 + + + + + + com.casic + casic-core + ${casic.version} + + + + com.casic + casic-iris-support + ${casic.version} + + + + org.springframework.boot + spring-boot-starter-aop + + + org.springframework.boot + spring-boot-starter-web + + + + org.springframework.boot + spring-boot-starter-validation + + + org.springframework.boot + spring-boot-starter-websocket + + + org.springframework.boot + spring-boot-starter-test + test + + + commons-io + commons-io + + + + org.apache.commons + commons-lang3 + + + + + + + + + + src/main/java + + **/*.xml + + + + + diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisDataController.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisDataController.java new file mode 100644 index 0000000..e2b5637 --- /dev/null +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisDataController.java @@ -0,0 +1,191 @@ +package com.casic.missiles.modular.register.controller; + + +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.register.model.IrisData; +import com.casic.missiles.modular.register.service.IIrisDataService; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.beans.factory.annotation.Autowired; +import com.baomidou.mybatisplus.plugins.Page; +import com.baomidou.mybatisplus.mapper.EntityWrapper; + +import java.io.*; +import java.net.Socket; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.List; +import java.util.UUID; + +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.multipart.MultipartFile; + +/** + * 控制器 + * + * @author dev + * @Date 2019-11-29 17:41:20 + */ +@Controller +@RequestMapping("/irisData") +public class IrisDataController extends BaseController { + + + @Autowired + private IIrisDataService irisDataService; + + + /** + * 获取列表 + */ + @RequestMapping(value = "/list") + @ResponseBody + public Object list(String condition) { + return irisDataService.selectList(null); + } + + /** + * 获取分页列表 + */ + @RequestMapping(value = "/listPage") + @ResponseBody + public Object listPage(String condition) { + Page page = new PageFactory().defaultPage(); + EntityWrapper query = new EntityWrapper<>(); + page = irisDataService.selectPage(page,query); + return super.packForBT(page); + } + /** + * 新增 + */ +// @RequestMapping(value = "/add") +// @ResponseBody +// public Object add(IrisData irisData) { +// irisDataService.insert(irisData); +// return ResponseData.success(); +// } + + @RequestMapping(value = "/add") + //@ResponseBody + public Object imageUpload(@RequestParam("file") List file,String personId,String idCardNo) throws IOException { + if(file.size()!=4){ + return ResponseData.error("虹膜图像必须为左眼2副,右眼2副,共4副"); + } + + IrisData irisData = new IrisData(); + + int i = 0; + for (MultipartFile image : file) { + if (!image.isEmpty()) { + InputStream fis = image.getInputStream(); + byte[] result = getIrisCode(fis); + if(returnActualLength(result)==1024){ + if(i==0)irisData.setLeftIrisCode1(result); + else if(i==1)irisData.setLeftIrisCode2(result); + else if(i==2)irisData.setRightIrisCode1(result); + else if(i==3)irisData.setRightIrisCode2(result); + i++; + } + } else { + return ResponseData.error("图像为空"); + } + } + + irisData.setIdCardNo(idCardNo); + irisData.setPersonId(Long.valueOf(personId)); + irisDataService.insert(irisData); + return ResponseData.success(); + } + + /** + * 删除 + */ + @RequestMapping(value = "/delete") + @ResponseBody + public Object delete(@RequestParam String irisDataId) { + irisDataService.deleteById(irisDataId); + return ResponseData.success(); + } + + /** + * 批量删除 + */ + @RequestMapping(value = "/batchDelete") + @ResponseBody + public Object delete(@RequestParam("irisDataIds") List irisDataIds) { + irisDataService.deleteBatchIds(irisDataIds); + return ResponseData.success(); + } + + /** + * 修改 + */ + @RequestMapping(value = "/update") + @ResponseBody + public Object update(IrisData irisData) { + irisDataService.updateById(irisData); + return ResponseData.success(); + } + + /** + * 详情 + */ + @RequestMapping(value = "/detail/{irisDataId}") + @ResponseBody + public Object detail(@PathVariable("irisDataId") String irisDataId) { +// ResultData resultData = new ResultData(); +// resultData.setCode(200); +// resultData.setMessage("查询详情成功"); +// resultData.setData(irisDataService.selectById(irisDataId)); +// return resultData; + return ResponseData.success(); + } + + + private byte[] getIrisCode(InputStream fis) throws IOException { + byte[] irisCode = new byte[1024]; + + //1.创建客户端Socket,指定服务器地址和端口 + Socket socket=new Socket("localhost", 8888); + + //2.获取输出流,向服务器端发送信息 + OutputStream os=socket.getOutputStream();//字节输出流 + byte[] buf = new byte[4096]; + int len=0; + while((len = fis.read(buf))!=-1) { + os.write(buf, 0, len); + } + socket.shutdownOutput();//关闭输出流 + + //3.获取输入流,读取服务器端的响应信息 + InputStream is=socket.getInputStream(); + byte[] bufIn = new byte[1024]; + int num =0; + while ((num = is.read(bufIn))>0){ + System.arraycopy(bufIn,0,irisCode,returnActualLength(irisCode),num); + } + + irisCode = bufIn; + + + //4.关闭资源 + is.close(); + os.close(); + socket.close(); + + return irisCode; + } + + public int returnActualLength(byte[] data) { + int i = 0; + for (; i < data.length; i++) { + if (data[i] == '\0') + break; + } + return i; + } +} diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/IrisDataMapper.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/IrisDataMapper.java new file mode 100644 index 0000000..9e75c7e --- /dev/null +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/IrisDataMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.register.dao; + +import com.casic.missiles.modular.register.model.IrisData; +import com.baomidou.mybatisplus.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author stylefeng123 + * @since 2019-11-29 + */ +public interface IrisDataMapper extends BaseMapper { + +} diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/mapping/IrisDataMapper.xml b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/mapping/IrisDataMapper.xml new file mode 100644 index 0000000..2b58905 --- /dev/null +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/mapping/IrisDataMapper.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + ID AS id, PERSON_ID AS personId, ID_CARD_NO AS idCardNo, LEFT_IRIS_CODE1 AS leftIrisCode1, LEFT_IRIS_CODE2 AS leftIrisCode2, LEFT_IRIS_CODE3 AS leftIrisCode3, RIGHT_IRIS_CODE1 AS rightIrisCode1, RIGHT_IRIS_CODE2 AS rightIrisCode2, RIGHT_IRIS_CODE3 AS rightIrisCode3 + + + diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/model/IrisData.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/model/IrisData.java new file mode 100644 index 0000000..9017b60 --- /dev/null +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/model/IrisData.java @@ -0,0 +1,92 @@ +package com.casic.missiles.modular.register.model; + +import java.io.Serializable; + +import com.baomidou.mybatisplus.annotations.TableId; +import com.baomidou.mybatisplus.annotations.TableField; +import com.baomidou.mybatisplus.activerecord.Model; +import com.baomidou.mybatisplus.annotations.TableName; +import com.baomidou.mybatisplus.enums.IdType; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author stylefeng123 + * @since 2019-11-29 + */ +@Data +@TableName("iris_data") +public class IrisData extends Model { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type= IdType.ID_WORKER) + private Long id; + /** + * 对应person表的主键 + */ + @TableField("PERSON_ID") + private Long personId; + /** + * 身份证号 + */ + @TableField("ID_CARD_NO") + private String idCardNo; + /** + * 左眼虹膜编码 + */ + @TableField("LEFT_IRIS_CODE1") + private byte[] leftIrisCode1; + /** + * 左眼虹膜编码2 + */ + @TableField("LEFT_IRIS_CODE2") + private byte[] leftIrisCode2; + @TableField("LEFT_IRIS_CODE3") + private byte[] leftIrisCode3; + /** + * 右眼虹膜编码1 + */ + @TableField("RIGHT_IRIS_CODE1") + private byte[] rightIrisCode1; + /** + * 右眼虹膜编码2 + */ + @TableField("RIGHT_IRIS_CODE2") + private byte[] rightIrisCode2; + /** + * 右眼虹膜编码3 + */ + @TableField("RIGHT_IRIS_CODE3") + private byte[] rightIrisCode3; + + + + @Override + protected Serializable pkVal() { + return this.id; + } + + @Override + public String toString() { + return "IrisData{" + + "id=" + id + + ", personId=" + personId + + ", idCardNo=" + idCardNo + + ", leftIrisCode1=" + leftIrisCode1 + + ", leftIrisCode2=" + leftIrisCode2 + + ", leftIrisCode3=" + leftIrisCode3 + + ", rightIrisCode1=" + rightIrisCode1 + + ", rightIrisCode2=" + rightIrisCode2 + + ", rightIrisCode3=" + rightIrisCode3 + + "}"; + } +} diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisDataService.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisDataService.java new file mode 100644 index 0000000..dbfa826 --- /dev/null +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisDataService.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.register.service; + +import com.casic.missiles.modular.register.model.IrisData; +import com.baomidou.mybatisplus.service.IService; + +/** + *

+ * 服务类 + *

+ * + * @author stylefeng123 + * @since 2019-11-29 + */ +public interface IIrisDataService extends IService { + +} diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/impl/IrisDataServiceImpl.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/impl/IrisDataServiceImpl.java new file mode 100644 index 0000000..f691055 --- /dev/null +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/impl/IrisDataServiceImpl.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.register.service.impl; + +import com.casic.missiles.modular.register.dao.IrisDataMapper; +import com.casic.missiles.modular.register.model.IrisData; +import com.casic.missiles.modular.register.service.IIrisDataService; +import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

+ * 服务实现类 + *

+ * + * @author stylefeng123 + * @since 2019-11-29 + */ +@Service +public class IrisDataServiceImpl extends ServiceImpl implements IIrisDataService { + +} diff --git a/casic-web/pom.xml b/casic-web/pom.xml index 64e5eae..9dbe1fb 100644 --- a/casic-web/pom.xml +++ b/casic-web/pom.xml @@ -198,6 +198,7 @@ groovy-all true + diff --git a/casic-web/src/main/java/com/casic/missiles/CasicApplication.java b/casic-web/src/main/java/com/casic/missiles/CasicApplication.java index e30a03e..8a66b1d 100644 --- a/casic-web/src/main/java/com/casic/missiles/CasicApplication.java +++ b/casic-web/src/main/java/com/casic/missiles/CasicApplication.java @@ -6,6 +6,7 @@ import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.transaction.annotation.EnableTransactionManagement; + import java.io.FileNotFoundException; /** diff --git a/casic-iris-register/pom.xml b/casic-iris-register/pom.xml new file mode 100644 index 0000000..7b6dbad --- /dev/null +++ b/casic-iris-register/pom.xml @@ -0,0 +1,79 @@ + + + 4.0.0 + + com.casic + casic-iris-parent + 1.0.0-SNAPSHOT + ../pom.xml + + + casic-iris-register + ${pro.version} + jar + casic-iris-register + 虹膜注册 + + + + + + com.casic + casic-core + ${casic.version} + + + + com.casic + casic-iris-support + ${casic.version} + + + + org.springframework.boot + spring-boot-starter-aop + + + org.springframework.boot + spring-boot-starter-web + + + + org.springframework.boot + spring-boot-starter-validation + + + org.springframework.boot + spring-boot-starter-websocket + + + org.springframework.boot + spring-boot-starter-test + test + + + commons-io + commons-io + + + + org.apache.commons + commons-lang3 + + + + + + + + + + src/main/java + + **/*.xml + + + + + diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisDataController.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisDataController.java new file mode 100644 index 0000000..e2b5637 --- /dev/null +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisDataController.java @@ -0,0 +1,191 @@ +package com.casic.missiles.modular.register.controller; + + +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.register.model.IrisData; +import com.casic.missiles.modular.register.service.IIrisDataService; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.beans.factory.annotation.Autowired; +import com.baomidou.mybatisplus.plugins.Page; +import com.baomidou.mybatisplus.mapper.EntityWrapper; + +import java.io.*; +import java.net.Socket; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.List; +import java.util.UUID; + +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.multipart.MultipartFile; + +/** + * 控制器 + * + * @author dev + * @Date 2019-11-29 17:41:20 + */ +@Controller +@RequestMapping("/irisData") +public class IrisDataController extends BaseController { + + + @Autowired + private IIrisDataService irisDataService; + + + /** + * 获取列表 + */ + @RequestMapping(value = "/list") + @ResponseBody + public Object list(String condition) { + return irisDataService.selectList(null); + } + + /** + * 获取分页列表 + */ + @RequestMapping(value = "/listPage") + @ResponseBody + public Object listPage(String condition) { + Page page = new PageFactory().defaultPage(); + EntityWrapper query = new EntityWrapper<>(); + page = irisDataService.selectPage(page,query); + return super.packForBT(page); + } + /** + * 新增 + */ +// @RequestMapping(value = "/add") +// @ResponseBody +// public Object add(IrisData irisData) { +// irisDataService.insert(irisData); +// return ResponseData.success(); +// } + + @RequestMapping(value = "/add") + //@ResponseBody + public Object imageUpload(@RequestParam("file") List file,String personId,String idCardNo) throws IOException { + if(file.size()!=4){ + return ResponseData.error("虹膜图像必须为左眼2副,右眼2副,共4副"); + } + + IrisData irisData = new IrisData(); + + int i = 0; + for (MultipartFile image : file) { + if (!image.isEmpty()) { + InputStream fis = image.getInputStream(); + byte[] result = getIrisCode(fis); + if(returnActualLength(result)==1024){ + if(i==0)irisData.setLeftIrisCode1(result); + else if(i==1)irisData.setLeftIrisCode2(result); + else if(i==2)irisData.setRightIrisCode1(result); + else if(i==3)irisData.setRightIrisCode2(result); + i++; + } + } else { + return ResponseData.error("图像为空"); + } + } + + irisData.setIdCardNo(idCardNo); + irisData.setPersonId(Long.valueOf(personId)); + irisDataService.insert(irisData); + return ResponseData.success(); + } + + /** + * 删除 + */ + @RequestMapping(value = "/delete") + @ResponseBody + public Object delete(@RequestParam String irisDataId) { + irisDataService.deleteById(irisDataId); + return ResponseData.success(); + } + + /** + * 批量删除 + */ + @RequestMapping(value = "/batchDelete") + @ResponseBody + public Object delete(@RequestParam("irisDataIds") List irisDataIds) { + irisDataService.deleteBatchIds(irisDataIds); + return ResponseData.success(); + } + + /** + * 修改 + */ + @RequestMapping(value = "/update") + @ResponseBody + public Object update(IrisData irisData) { + irisDataService.updateById(irisData); + return ResponseData.success(); + } + + /** + * 详情 + */ + @RequestMapping(value = "/detail/{irisDataId}") + @ResponseBody + public Object detail(@PathVariable("irisDataId") String irisDataId) { +// ResultData resultData = new ResultData(); +// resultData.setCode(200); +// resultData.setMessage("查询详情成功"); +// resultData.setData(irisDataService.selectById(irisDataId)); +// return resultData; + return ResponseData.success(); + } + + + private byte[] getIrisCode(InputStream fis) throws IOException { + byte[] irisCode = new byte[1024]; + + //1.创建客户端Socket,指定服务器地址和端口 + Socket socket=new Socket("localhost", 8888); + + //2.获取输出流,向服务器端发送信息 + OutputStream os=socket.getOutputStream();//字节输出流 + byte[] buf = new byte[4096]; + int len=0; + while((len = fis.read(buf))!=-1) { + os.write(buf, 0, len); + } + socket.shutdownOutput();//关闭输出流 + + //3.获取输入流,读取服务器端的响应信息 + InputStream is=socket.getInputStream(); + byte[] bufIn = new byte[1024]; + int num =0; + while ((num = is.read(bufIn))>0){ + System.arraycopy(bufIn,0,irisCode,returnActualLength(irisCode),num); + } + + irisCode = bufIn; + + + //4.关闭资源 + is.close(); + os.close(); + socket.close(); + + return irisCode; + } + + public int returnActualLength(byte[] data) { + int i = 0; + for (; i < data.length; i++) { + if (data[i] == '\0') + break; + } + return i; + } +} diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/IrisDataMapper.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/IrisDataMapper.java new file mode 100644 index 0000000..9e75c7e --- /dev/null +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/IrisDataMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.register.dao; + +import com.casic.missiles.modular.register.model.IrisData; +import com.baomidou.mybatisplus.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author stylefeng123 + * @since 2019-11-29 + */ +public interface IrisDataMapper extends BaseMapper { + +} diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/mapping/IrisDataMapper.xml b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/mapping/IrisDataMapper.xml new file mode 100644 index 0000000..2b58905 --- /dev/null +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/dao/mapping/IrisDataMapper.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + ID AS id, PERSON_ID AS personId, ID_CARD_NO AS idCardNo, LEFT_IRIS_CODE1 AS leftIrisCode1, LEFT_IRIS_CODE2 AS leftIrisCode2, LEFT_IRIS_CODE3 AS leftIrisCode3, RIGHT_IRIS_CODE1 AS rightIrisCode1, RIGHT_IRIS_CODE2 AS rightIrisCode2, RIGHT_IRIS_CODE3 AS rightIrisCode3 + + + diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/model/IrisData.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/model/IrisData.java new file mode 100644 index 0000000..9017b60 --- /dev/null +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/model/IrisData.java @@ -0,0 +1,92 @@ +package com.casic.missiles.modular.register.model; + +import java.io.Serializable; + +import com.baomidou.mybatisplus.annotations.TableId; +import com.baomidou.mybatisplus.annotations.TableField; +import com.baomidou.mybatisplus.activerecord.Model; +import com.baomidou.mybatisplus.annotations.TableName; +import com.baomidou.mybatisplus.enums.IdType; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author stylefeng123 + * @since 2019-11-29 + */ +@Data +@TableName("iris_data") +public class IrisData extends Model { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "ID",type= IdType.ID_WORKER) + private Long id; + /** + * 对应person表的主键 + */ + @TableField("PERSON_ID") + private Long personId; + /** + * 身份证号 + */ + @TableField("ID_CARD_NO") + private String idCardNo; + /** + * 左眼虹膜编码 + */ + @TableField("LEFT_IRIS_CODE1") + private byte[] leftIrisCode1; + /** + * 左眼虹膜编码2 + */ + @TableField("LEFT_IRIS_CODE2") + private byte[] leftIrisCode2; + @TableField("LEFT_IRIS_CODE3") + private byte[] leftIrisCode3; + /** + * 右眼虹膜编码1 + */ + @TableField("RIGHT_IRIS_CODE1") + private byte[] rightIrisCode1; + /** + * 右眼虹膜编码2 + */ + @TableField("RIGHT_IRIS_CODE2") + private byte[] rightIrisCode2; + /** + * 右眼虹膜编码3 + */ + @TableField("RIGHT_IRIS_CODE3") + private byte[] rightIrisCode3; + + + + @Override + protected Serializable pkVal() { + return this.id; + } + + @Override + public String toString() { + return "IrisData{" + + "id=" + id + + ", personId=" + personId + + ", idCardNo=" + idCardNo + + ", leftIrisCode1=" + leftIrisCode1 + + ", leftIrisCode2=" + leftIrisCode2 + + ", leftIrisCode3=" + leftIrisCode3 + + ", rightIrisCode1=" + rightIrisCode1 + + ", rightIrisCode2=" + rightIrisCode2 + + ", rightIrisCode3=" + rightIrisCode3 + + "}"; + } +} diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisDataService.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisDataService.java new file mode 100644 index 0000000..dbfa826 --- /dev/null +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/IIrisDataService.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.register.service; + +import com.casic.missiles.modular.register.model.IrisData; +import com.baomidou.mybatisplus.service.IService; + +/** + *

+ * 服务类 + *

+ * + * @author stylefeng123 + * @since 2019-11-29 + */ +public interface IIrisDataService extends IService { + +} diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/impl/IrisDataServiceImpl.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/impl/IrisDataServiceImpl.java new file mode 100644 index 0000000..f691055 --- /dev/null +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/impl/IrisDataServiceImpl.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.register.service.impl; + +import com.casic.missiles.modular.register.dao.IrisDataMapper; +import com.casic.missiles.modular.register.model.IrisData; +import com.casic.missiles.modular.register.service.IIrisDataService; +import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

+ * 服务实现类 + *

+ * + * @author stylefeng123 + * @since 2019-11-29 + */ +@Service +public class IrisDataServiceImpl extends ServiceImpl implements IIrisDataService { + +} diff --git a/casic-web/pom.xml b/casic-web/pom.xml index 64e5eae..9dbe1fb 100644 --- a/casic-web/pom.xml +++ b/casic-web/pom.xml @@ -198,6 +198,7 @@ groovy-all true + diff --git a/casic-web/src/main/java/com/casic/missiles/CasicApplication.java b/casic-web/src/main/java/com/casic/missiles/CasicApplication.java index e30a03e..8a66b1d 100644 --- a/casic-web/src/main/java/com/casic/missiles/CasicApplication.java +++ b/casic-web/src/main/java/com/casic/missiles/CasicApplication.java @@ -6,6 +6,7 @@ import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.transaction.annotation.EnableTransactionManagement; + import java.io.FileNotFoundException; /** diff --git a/pom.xml b/pom.xml index b74d442..7e39171 100644 --- a/pom.xml +++ b/pom.xml @@ -11,6 +11,7 @@ casic-iris-acs casic-iris-device casic-iris-support + casic-iris-register @@ -85,6 +86,11 @@ casic-iris-support ${casic.version} + + com.casic + casic-iris-register + ${casic.version} +