From 79d3f69f3c168594440e46d4636c24d275f32d76 Mon Sep 17 00:00:00 2001 From: chenbingxuan <3581044601@qq.com> Date: Tue, 30 Jan 2024 20:21:49 +0800 Subject: [PATCH] =?UTF-8?q?=E5=81=87=E6=9C=9F=E4=BD=9C=E4=B8=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../system/api/RemoteUserService.java | 2 +- .../HomeWork/system/api/domain/SysUser.java | 15 ++- .../factory/RemoteUserFallbackFactory.java | 2 +- HomeWork-auth/pom.xml | 5 - .../auth/controller/TokenController.java | 8 +- .../auth/service/SysLoginService.java | 9 +- HomeWork-common/HomeWork-common-core/pom.xml | 6 +- .../HomeWork-MedicalTreatment/.gitignore | 38 ++++++ .../HomeWork-MedicalTreatment/pom.xml | 119 ++++++++++++++++++ .../HomeWorkMedicalTreatmentApplication.java | 34 +++++ .../HomeWork/controller/TreeController.java | 22 ++++ .../main/java/HomeWork/domain/TreeEntity.java | 10 ++ .../main/java/HomeWork/domain/vo/TreeVo.java | 13 ++ .../main/java/HomeWork/mapper/TreeMapper.java | 21 ++++ .../java/HomeWork/service/TreeService.java | 11 ++ .../service/impl/TreeServiceImpl.java | 54 ++++++++ .../src/main/resources/banner.txt | 10 ++ .../src/main/resources/bootstrap.yml | 27 ++++ .../src/main/resources/logback.xml | 74 +++++++++++ .../src/main/resources/mapper/TreeMapper.xml | 23 ++++ HomeWork-modules/HomeWork-system/pom.xml | 11 +- .../system/controller/SysUserController.java | 6 +- .../HomeWork/system/mapper/SysUserMapper.java | 32 +++-- .../service/impl/SysUserServiceImpl.java | 17 ++- .../main/java/HomeWork/system/test/test.java | 45 +++++++ .../HomeWork/system/utils/FaceDetect.java | 51 +++++--- .../resources/mapper/system/SysUserMapper.xml | 3 + HomeWork-modules/pom.xml | 1 + 28 files changed, 621 insertions(+), 48 deletions(-) create mode 100644 HomeWork-modules/HomeWork-MedicalTreatment/.gitignore create mode 100644 HomeWork-modules/HomeWork-MedicalTreatment/pom.xml create mode 100644 HomeWork-modules/HomeWork-MedicalTreatment/src/main/java/HomeWork/HomeWorkMedicalTreatmentApplication.java create mode 100644 HomeWork-modules/HomeWork-MedicalTreatment/src/main/java/HomeWork/controller/TreeController.java create mode 100644 HomeWork-modules/HomeWork-MedicalTreatment/src/main/java/HomeWork/domain/TreeEntity.java create mode 100644 HomeWork-modules/HomeWork-MedicalTreatment/src/main/java/HomeWork/domain/vo/TreeVo.java create mode 100644 HomeWork-modules/HomeWork-MedicalTreatment/src/main/java/HomeWork/mapper/TreeMapper.java create mode 100644 HomeWork-modules/HomeWork-MedicalTreatment/src/main/java/HomeWork/service/TreeService.java create mode 100644 HomeWork-modules/HomeWork-MedicalTreatment/src/main/java/HomeWork/service/impl/TreeServiceImpl.java create mode 100644 HomeWork-modules/HomeWork-MedicalTreatment/src/main/resources/banner.txt create mode 100644 HomeWork-modules/HomeWork-MedicalTreatment/src/main/resources/bootstrap.yml create mode 100644 HomeWork-modules/HomeWork-MedicalTreatment/src/main/resources/logback.xml create mode 100644 HomeWork-modules/HomeWork-MedicalTreatment/src/main/resources/mapper/TreeMapper.xml create mode 100644 HomeWork-modules/HomeWork-system/src/main/java/HomeWork/system/test/test.java diff --git a/HomeWork-api/HomeWork-api-system/src/main/java/HomeWork/system/api/RemoteUserService.java b/HomeWork-api/HomeWork-api-system/src/main/java/HomeWork/system/api/RemoteUserService.java index a71e6ac..b58fd52 100644 --- a/HomeWork-api/HomeWork-api-system/src/main/java/HomeWork/system/api/RemoteUserService.java +++ b/HomeWork-api/HomeWork-api-system/src/main/java/HomeWork/system/api/RemoteUserService.java @@ -44,6 +44,6 @@ public interface RemoteUserService * @throws Exception */ @PostMapping("/user/faceLogin") - public R faceLogin(@RequestParam("url") String url) throws Exception; + public R faceLogin(@RequestParam("url") String url, @RequestHeader(SecurityConstants.FROM_SOURCE) String source); } diff --git a/HomeWork-api/HomeWork-api-system/src/main/java/HomeWork/system/api/domain/SysUser.java b/HomeWork-api/HomeWork-api-system/src/main/java/HomeWork/system/api/domain/SysUser.java index 25511c6..243c25c 100644 --- a/HomeWork-api/HomeWork-api-system/src/main/java/HomeWork/system/api/domain/SysUser.java +++ b/HomeWork-api/HomeWork-api-system/src/main/java/HomeWork/system/api/domain/SysUser.java @@ -14,7 +14,7 @@ import HomeWork.common.core.xss.Xss; /** * 用户对象 sys_user - * + * * @author ruoyi */ public class SysUser extends BaseEntity @@ -89,6 +89,9 @@ public class SysUser extends BaseEntity /** 角色ID */ private Long roleId; + @Excel(name = "人脸识别图片") + private String faceImg; + public SysUser() { @@ -296,6 +299,15 @@ public class SysUser extends BaseEntity { this.roleId = roleId; } + + public String getFaceImg() { + return faceImg; + } + + public void setFaceImg(String faceImg) { + this.faceImg = faceImg; + } + @Override public String toString() { return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) @@ -318,6 +330,7 @@ public class SysUser extends BaseEntity .append("updateTime", getUpdateTime()) .append("remark", getRemark()) .append("dept", getDept()) + .append("faceImg",getFaceImg()) .toString(); } } diff --git a/HomeWork-api/HomeWork-api-system/src/main/java/HomeWork/system/api/factory/RemoteUserFallbackFactory.java b/HomeWork-api/HomeWork-api-system/src/main/java/HomeWork/system/api/factory/RemoteUserFallbackFactory.java index 1eb7171..b95446f 100644 --- a/HomeWork-api/HomeWork-api-system/src/main/java/HomeWork/system/api/factory/RemoteUserFallbackFactory.java +++ b/HomeWork-api/HomeWork-api-system/src/main/java/HomeWork/system/api/factory/RemoteUserFallbackFactory.java @@ -38,7 +38,7 @@ public class RemoteUserFallbackFactory implements FallbackFactory faceLogin(String url) throws Exception { + public R faceLogin(String url,String source) { return R.fail("人脸登录失败:" + throwable.getMessage()); } }; diff --git a/HomeWork-auth/pom.xml b/HomeWork-auth/pom.xml index 93569f0..3201f3a 100644 --- a/HomeWork-auth/pom.xml +++ b/HomeWork-auth/pom.xml @@ -58,11 +58,6 @@ HomeWork HomeWork-common-security - - - org.projectlombok - lombok - diff --git a/HomeWork-auth/src/main/java/HomeWork/auth/controller/TokenController.java b/HomeWork-auth/src/main/java/HomeWork/auth/controller/TokenController.java index be7f628..fc936bf 100644 --- a/HomeWork-auth/src/main/java/HomeWork/auth/controller/TokenController.java +++ b/HomeWork-auth/src/main/java/HomeWork/auth/controller/TokenController.java @@ -38,11 +38,13 @@ public class TokenController return R.ok(tokenService.createToken(userInfo)); } - @PostMapping("faceLogin") - public R login(@RequestParam MultipartFile file) - { + @PostMapping("/faceLogin") + public R login(@RequestParam MultipartFile file) throws Exception { // 用户登录 LoginUser userInfo = sysLoginService.faceLogin(file); + if (userInfo==null){ + return R.fail("人脸登录失败"); + } // 获取登录token return R.ok(tokenService.createToken(userInfo)); } diff --git a/HomeWork-auth/src/main/java/HomeWork/auth/service/SysLoginService.java b/HomeWork-auth/src/main/java/HomeWork/auth/service/SysLoginService.java index 49b1cf5..930e7af 100644 --- a/HomeWork-auth/src/main/java/HomeWork/auth/service/SysLoginService.java +++ b/HomeWork-auth/src/main/java/HomeWork/auth/service/SysLoginService.java @@ -143,8 +143,15 @@ public class SysLoginService recordLogService.recordLogininfor(username, Constants.REGISTER, "注册成功"); } - public LoginUser faceLogin(MultipartFile file) { + public LoginUser faceLogin(MultipartFile file) throws Exception { String s = OssUtil.uploadMultipartFile(file); + R loginUserR = remoteUserService.faceLogin(s,SecurityConstants.INNER); + if (loginUserR!=null){ + if (loginUserR.getData()!=null){ + return loginUserR.getData(); + } + return null; + } return null; } } diff --git a/HomeWork-common/HomeWork-common-core/pom.xml b/HomeWork-common/HomeWork-common-core/pom.xml index 3429d54..3d858c8 100644 --- a/HomeWork-common/HomeWork-common-core/pom.xml +++ b/HomeWork-common/HomeWork-common-core/pom.xml @@ -112,7 +112,11 @@ io.swagger swagger-annotations - + + + org.projectlombok + lombok + diff --git a/HomeWork-modules/HomeWork-MedicalTreatment/.gitignore b/HomeWork-modules/HomeWork-MedicalTreatment/.gitignore new file mode 100644 index 0000000..5ff6309 --- /dev/null +++ b/HomeWork-modules/HomeWork-MedicalTreatment/.gitignore @@ -0,0 +1,38 @@ +target/ +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/**/target/ +!**/src/test/**/target/ + +### IntelliJ IDEA ### +.idea/modules.xml +.idea/jarRepositories.xml +.idea/compiler.xml +.idea/libraries/ +*.iws +*.iml +*.ipr + +### Eclipse ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ +!**/src/main/**/build/ +!**/src/test/**/build/ + +### VS Code ### +.vscode/ + +### Mac OS ### +.DS_Store \ No newline at end of file diff --git a/HomeWork-modules/HomeWork-MedicalTreatment/pom.xml b/HomeWork-modules/HomeWork-MedicalTreatment/pom.xml new file mode 100644 index 0000000..2834675 --- /dev/null +++ b/HomeWork-modules/HomeWork-MedicalTreatment/pom.xml @@ -0,0 +1,119 @@ + + + + HomeWork + HomeWork-modules + 3.6.3 + + 4.0.0 + + HomeWork-modules-MedicalTreatment + + + + commons-io + commons-io + 2.11.0 + + + + + com.baidu.aip + java-sdk + 4.6.0 + + + org.json + json + 20160810 + + + com.google.code.gson + gson + 2.9.0 + + + + + + com.alibaba.cloud + spring-cloud-starter-alibaba-nacos-discovery + + + + + com.alibaba.cloud + spring-cloud-starter-alibaba-nacos-config + + + + + com.alibaba.cloud + spring-cloud-starter-alibaba-sentinel + + + + + org.springframework.boot + spring-boot-starter-actuator + + + + + io.springfox + springfox-swagger-ui + ${swagger.fox.version} + + + + + com.mysql + mysql-connector-j + + + + + HomeWork + HomeWork-common-datasource + + + + + HomeWork + HomeWork-common-datascope + + + + + HomeWork + HomeWork-common-log + + + + + HomeWork + HomeWork-common-swagger + + + + + + ${project.artifactId} + + + org.springframework.boot + spring-boot-maven-plugin + + + + repackage + + + + + + + + diff --git a/HomeWork-modules/HomeWork-MedicalTreatment/src/main/java/HomeWork/HomeWorkMedicalTreatmentApplication.java b/HomeWork-modules/HomeWork-MedicalTreatment/src/main/java/HomeWork/HomeWorkMedicalTreatmentApplication.java new file mode 100644 index 0000000..95d50e6 --- /dev/null +++ b/HomeWork-modules/HomeWork-MedicalTreatment/src/main/java/HomeWork/HomeWorkMedicalTreatmentApplication.java @@ -0,0 +1,34 @@ +package HomeWork; + +import HomeWork.common.security.annotation.EnableCustomConfig; +import HomeWork.common.security.annotation.EnableRyFeignClients; +import HomeWork.common.swagger.annotation.EnableCustomSwagger2; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +/** + * 系统模块 + * + * @author ruoyi + */ +@EnableCustomConfig +@EnableCustomSwagger2 +@EnableRyFeignClients +@SpringBootApplication +public class HomeWorkMedicalTreatmentApplication +{ + public static void main(String[] args) + { + SpringApplication.run(HomeWorkMedicalTreatmentApplication.class, args); + System.out.println("(♥◠‿◠)ノ゙ 系统模块启动成功 ლ(´ڡ`ლ)゙ \n" + + " .-------. ____ __ \n" + + " | _ _ \\ \\ \\ / / \n" + + " | ( ' ) | \\ _. / ' \n" + + " |(_ o _) / _( )_ .' \n" + + " | (_,_).' __ ___(_ o _)' \n" + + " | |\\ \\ | || |(_,_)' \n" + + " | | \\ `' /| `-' / \n" + + " | | \\ / \\ / \n" + + " ''-' `'-' `-..-' "); + } +} diff --git a/HomeWork-modules/HomeWork-MedicalTreatment/src/main/java/HomeWork/controller/TreeController.java b/HomeWork-modules/HomeWork-MedicalTreatment/src/main/java/HomeWork/controller/TreeController.java new file mode 100644 index 0000000..967fa69 --- /dev/null +++ b/HomeWork-modules/HomeWork-MedicalTreatment/src/main/java/HomeWork/controller/TreeController.java @@ -0,0 +1,22 @@ +package HomeWork.controller; + +import HomeWork.common.core.domain.R; +import HomeWork.domain.vo.TreeVo; +import HomeWork.service.TreeService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +@RestController +public class TreeController { + @Autowired + private TreeService treeService; + + @GetMapping("/tree") + public R> tree() { + List treeVos= treeService.treeList(); + return R.ok(treeVos); + } +} diff --git a/HomeWork-modules/HomeWork-MedicalTreatment/src/main/java/HomeWork/domain/TreeEntity.java b/HomeWork-modules/HomeWork-MedicalTreatment/src/main/java/HomeWork/domain/TreeEntity.java new file mode 100644 index 0000000..feadc66 --- /dev/null +++ b/HomeWork-modules/HomeWork-MedicalTreatment/src/main/java/HomeWork/domain/TreeEntity.java @@ -0,0 +1,10 @@ +package HomeWork.domain; + +import lombok.Data; + +@Data +public class TreeEntity { + private Integer id; + private String name; + private Integer parentId; +} diff --git a/HomeWork-modules/HomeWork-MedicalTreatment/src/main/java/HomeWork/domain/vo/TreeVo.java b/HomeWork-modules/HomeWork-MedicalTreatment/src/main/java/HomeWork/domain/vo/TreeVo.java new file mode 100644 index 0000000..b2772a8 --- /dev/null +++ b/HomeWork-modules/HomeWork-MedicalTreatment/src/main/java/HomeWork/domain/vo/TreeVo.java @@ -0,0 +1,13 @@ +package HomeWork.domain.vo; + +import lombok.Data; + +import java.util.List; + +@Data +public class TreeVo { + private Integer id; + private String name; + private Integer parentId; + private List children; +} diff --git a/HomeWork-modules/HomeWork-MedicalTreatment/src/main/java/HomeWork/mapper/TreeMapper.java b/HomeWork-modules/HomeWork-MedicalTreatment/src/main/java/HomeWork/mapper/TreeMapper.java new file mode 100644 index 0000000..7267db8 --- /dev/null +++ b/HomeWork-modules/HomeWork-MedicalTreatment/src/main/java/HomeWork/mapper/TreeMapper.java @@ -0,0 +1,21 @@ +package HomeWork.mapper; + +import HomeWork.domain.TreeEntity; +import HomeWork.domain.vo.TreeVo; +import com.baomidou.dynamic.datasource.annotation.DS; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +@Mapper +@DS("slave") +public interface TreeMapper { + List treeList(); + + List treeListByTreeParentId(Integer parentId); + + List findChildren(Integer id); + + List treeListByTreeIds(@Param("ids") String[] split); +} diff --git a/HomeWork-modules/HomeWork-MedicalTreatment/src/main/java/HomeWork/service/TreeService.java b/HomeWork-modules/HomeWork-MedicalTreatment/src/main/java/HomeWork/service/TreeService.java new file mode 100644 index 0000000..6863bdc --- /dev/null +++ b/HomeWork-modules/HomeWork-MedicalTreatment/src/main/java/HomeWork/service/TreeService.java @@ -0,0 +1,11 @@ +package HomeWork.service; + +import HomeWork.domain.vo.TreeVo; + +import java.util.List; + +public interface TreeService { + List treeList(); + + +} diff --git a/HomeWork-modules/HomeWork-MedicalTreatment/src/main/java/HomeWork/service/impl/TreeServiceImpl.java b/HomeWork-modules/HomeWork-MedicalTreatment/src/main/java/HomeWork/service/impl/TreeServiceImpl.java new file mode 100644 index 0000000..7e082d6 --- /dev/null +++ b/HomeWork-modules/HomeWork-MedicalTreatment/src/main/java/HomeWork/service/impl/TreeServiceImpl.java @@ -0,0 +1,54 @@ +package HomeWork.service.impl; + +import HomeWork.domain.TreeEntity; +import HomeWork.domain.vo.TreeVo; +import HomeWork.mapper.TreeMapper; +import HomeWork.service.TreeService; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; + +@Service +public class TreeServiceImpl implements TreeService { + @Autowired + private TreeMapper treeMapper; + @Override + public List treeList() { + ArrayList treeVos = new ArrayList<>(); + List treeVoList = treeMapper.treeList(); + if (treeVoList.size()>0){ + for (TreeEntity tree : treeVoList) { + TreeVo treeVo = new TreeVo(); + BeanUtils.copyProperties(tree,treeVo); + List children = findChildren(tree.getId()); + treeVo.setChildren(children); + treeVos.add(treeVo); + } + } + return treeVos; + } + + private List findChildren(Integer id) { + ArrayList treeVos = new ArrayList<>(); + List treeEntities = treeMapper.findChildren(id); + String ids=""; + for (TreeEntity treeVo : treeEntities) { + ids+=treeVo.getId()+","; + } + String[] split = ids.split(","); + List treeVos1 = treeMapper.treeListByTreeIds(split); + for (TreeEntity treeVo : treeVos1) { + TreeVo treeVo1 = new TreeVo(); + BeanUtils.copyProperties(treeVo,treeVo1); + List children = treeMapper.findChildren(treeVo1.getId()); + if (children.size()>0){ + treeVo1.setChildren(findChildren(treeVo1.getId())); + } + treeVos.add(treeVo1); + } + return treeVos; + } +} diff --git a/HomeWork-modules/HomeWork-MedicalTreatment/src/main/resources/banner.txt b/HomeWork-modules/HomeWork-MedicalTreatment/src/main/resources/banner.txt new file mode 100644 index 0000000..fbd45f5 --- /dev/null +++ b/HomeWork-modules/HomeWork-MedicalTreatment/src/main/resources/banner.txt @@ -0,0 +1,10 @@ +Spring Boot Version: ${spring-boot.version} +Spring Application Name: ${spring.application.name} + _ _ + (_) | | + _ __ _ _ ___ _ _ _ ______ ___ _ _ ___ | |_ ___ _ __ ___ +| '__|| | | | / _ \ | | | || ||______|/ __|| | | |/ __|| __| / _ \| '_ ` _ \ +| | | |_| || (_) || |_| || | \__ \| |_| |\__ \| |_ | __/| | | | | | +|_| \__,_| \___/ \__, ||_| |___/ \__, ||___/ \__| \___||_| |_| |_| + __/ | __/ | + |___/ |___/ \ No newline at end of file diff --git a/HomeWork-modules/HomeWork-MedicalTreatment/src/main/resources/bootstrap.yml b/HomeWork-modules/HomeWork-MedicalTreatment/src/main/resources/bootstrap.yml new file mode 100644 index 0000000..c2cadb2 --- /dev/null +++ b/HomeWork-modules/HomeWork-MedicalTreatment/src/main/resources/bootstrap.yml @@ -0,0 +1,27 @@ +# Tomcat +server: + port: 9301 + +# Spring +spring: + application: + # 应用名称 + name: HomeWork-community + profiles: + # 环境配置 + active: dev + cloud: + nacos: + discovery: + # 服务注册地址 + server-addr: 101.34.77.101:8848 + namespace: 20041112 + config: + # 配置中心地址 + server-addr: 101.34.77.101:8848 + namespace: 20041112 + # 配置文件格式 + file-extension: yml + # 共享配置 + shared-configs: + - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} diff --git a/HomeWork-modules/HomeWork-MedicalTreatment/src/main/resources/logback.xml b/HomeWork-modules/HomeWork-MedicalTreatment/src/main/resources/logback.xml new file mode 100644 index 0000000..510b1d2 --- /dev/null +++ b/HomeWork-modules/HomeWork-MedicalTreatment/src/main/resources/logback.xml @@ -0,0 +1,74 @@ + + + + + + + + + + + ${log.pattern} + + + + + + ${log.path}/info.log + + + + ${log.path}/info.%d{yyyy-MM-dd}.log + + 60 + + + ${log.pattern} + + + + INFO + + ACCEPT + + DENY + + + + + ${log.path}/error.log + + + + ${log.path}/error.%d{yyyy-MM-dd}.log + + 60 + + + ${log.pattern} + + + + ERROR + + ACCEPT + + DENY + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/HomeWork-modules/HomeWork-MedicalTreatment/src/main/resources/mapper/TreeMapper.xml b/HomeWork-modules/HomeWork-MedicalTreatment/src/main/resources/mapper/TreeMapper.xml new file mode 100644 index 0000000..7eb6e32 --- /dev/null +++ b/HomeWork-modules/HomeWork-MedicalTreatment/src/main/resources/mapper/TreeMapper.xml @@ -0,0 +1,23 @@ + + + + + + + + + + diff --git a/HomeWork-modules/HomeWork-system/pom.xml b/HomeWork-modules/HomeWork-system/pom.xml index 8cd395e..0fe3f0a 100644 --- a/HomeWork-modules/HomeWork-system/pom.xml +++ b/HomeWork-modules/HomeWork-system/pom.xml @@ -1,6 +1,6 @@ - HomeWork @@ -16,8 +16,13 @@ + + commons-io + commons-io + 2.11.0 + - + com.baidu.aip java-sdk diff --git a/HomeWork-modules/HomeWork-system/src/main/java/HomeWork/system/controller/SysUserController.java b/HomeWork-modules/HomeWork-system/src/main/java/HomeWork/system/controller/SysUserController.java index bd15598..a981de0 100644 --- a/HomeWork-modules/HomeWork-system/src/main/java/HomeWork/system/controller/SysUserController.java +++ b/HomeWork-modules/HomeWork-system/src/main/java/HomeWork/system/controller/SysUserController.java @@ -125,18 +125,18 @@ public class SysUserController extends BaseController /** * 人脸登录 - * @param username + * @param url * @return */ @InnerAuth - @GetMapping("/faceLogin") + @PostMapping("/faceLogin") public R faceLogin(@RequestParam("url") String url) { SysUser sysUser = userService.selectUserByUrl(url); if (StringUtils.isNull(sysUser)) { - return R.fail("用户名或密码错误"); + return R.fail("人脸识别错误"); } // 角色集合 Set roles = permissionService.getRolePermission(sysUser); diff --git a/HomeWork-modules/HomeWork-system/src/main/java/HomeWork/system/mapper/SysUserMapper.java b/HomeWork-modules/HomeWork-system/src/main/java/HomeWork/system/mapper/SysUserMapper.java index 6550a6c..61801cf 100644 --- a/HomeWork-modules/HomeWork-system/src/main/java/HomeWork/system/mapper/SysUserMapper.java +++ b/HomeWork-modules/HomeWork-system/src/main/java/HomeWork/system/mapper/SysUserMapper.java @@ -6,14 +6,14 @@ import HomeWork.system.api.domain.SysUser; /** * 用户表 数据层 - * + * * @author ruoyi */ public interface SysUserMapper { /** * 根据条件分页查询用户列表 - * + * * @param sysUser 用户信息 * @return 用户信息集合信息 */ @@ -21,7 +21,7 @@ public interface SysUserMapper /** * 根据条件分页查询已配用户角色列表 - * + * * @param user 用户信息 * @return 用户信息集合信息 */ @@ -29,7 +29,7 @@ public interface SysUserMapper /** * 根据条件分页查询未分配用户角色列表 - * + * * @param user 用户信息 * @return 用户信息集合信息 */ @@ -37,7 +37,7 @@ public interface SysUserMapper /** * 通过用户名查询用户 - * + * * @param userName 用户名 * @return 用户对象信息 */ @@ -45,7 +45,7 @@ public interface SysUserMapper /** * 通过用户ID查询用户 - * + * * @param userId 用户ID * @return 用户对象信息 */ @@ -53,7 +53,7 @@ public interface SysUserMapper /** * 新增用户信息 - * + * * @param user 用户信息 * @return 结果 */ @@ -61,7 +61,7 @@ public interface SysUserMapper /** * 修改用户信息 - * + * * @param user 用户信息 * @return 结果 */ @@ -69,7 +69,7 @@ public interface SysUserMapper /** * 修改用户头像 - * + * * @param userName 用户名 * @param avatar 头像地址 * @return 结果 @@ -78,7 +78,7 @@ public interface SysUserMapper /** * 重置用户密码 - * + * * @param userName 用户名 * @param password 密码 * @return 结果 @@ -87,7 +87,7 @@ public interface SysUserMapper /** * 通过用户ID删除用户 - * + * * @param userId 用户ID * @return 结果 */ @@ -95,7 +95,7 @@ public interface SysUserMapper /** * 批量删除用户信息 - * + * * @param userIds 需要删除的用户ID * @return 结果 */ @@ -103,7 +103,7 @@ public interface SysUserMapper /** * 校验用户名称是否唯一 - * + * * @param userName 用户名称 * @return 结果 */ @@ -124,4 +124,10 @@ public interface SysUserMapper * @return 结果 */ public SysUser checkEmailUnique(String email); + + /** + * 人脸识别查询所有信息 + * @return + */ + public List selectUserListUserFace(); } diff --git a/HomeWork-modules/HomeWork-system/src/main/java/HomeWork/system/service/impl/SysUserServiceImpl.java b/HomeWork-modules/HomeWork-system/src/main/java/HomeWork/system/service/impl/SysUserServiceImpl.java index 26a1b9f..c248570 100644 --- a/HomeWork-modules/HomeWork-system/src/main/java/HomeWork/system/service/impl/SysUserServiceImpl.java +++ b/HomeWork-modules/HomeWork-system/src/main/java/HomeWork/system/service/impl/SysUserServiceImpl.java @@ -4,6 +4,9 @@ import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; import javax.validation.Validator; + +import HomeWork.system.api.model.LoginUser; +import HomeWork.system.utils.FaceDetect; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -58,6 +61,10 @@ public class SysUserServiceImpl implements ISysUserService @Autowired private ISysConfigService configService; + @Autowired + private FaceDetect faceDetect; + + @Autowired protected Validator validator; @@ -544,7 +551,15 @@ public class SysUserServiceImpl implements ISysUserService @Override public SysUser selectUserByUrl(String url) { - //TODO 人脸识别 调用工具类,工具类可以进行查询数据库然后进行循环比对 + //人脸识别 调用工具类,工具类可以进行查询数据库然后进行循环比对 + try { + SysUser sysUser = faceDetect.faceDetect(url); + if (sysUser!=null){ + return sysUser; + } + } catch (Exception e) { + throw new RuntimeException(e); + } return null; } diff --git a/HomeWork-modules/HomeWork-system/src/main/java/HomeWork/system/test/test.java b/HomeWork-modules/HomeWork-system/src/main/java/HomeWork/system/test/test.java new file mode 100644 index 0000000..80f4b39 --- /dev/null +++ b/HomeWork-modules/HomeWork-system/src/main/java/HomeWork/system/test/test.java @@ -0,0 +1,45 @@ +package HomeWork.system.test; + +import HomeWork.system.utils.Base64Util; +import com.baidu.aip.face.AipFace; +import com.baidu.aip.face.MatchRequest; +import org.json.JSONObject; + +import java.nio.file.Files; +import java.nio.file.Paths; +import java.util.ArrayList; + +public class test { + public static void main(String[] args) throws Exception { + /** + * 传入appId、apiKey、secretkey。创建Java代码和百度云交互的Client对象 + */ + AipFace client = new AipFace("47745660", "ZEaoK2kFZsLdYQkt8sGrUq6M", "DcFgxv6hTgvPoENNpwKfo9CCGeXqFOAU"); + + // 登录图片 + String loginImagePath = "D:\\Camera Roll\\WIN_20240101_18_50_58_Pro.jpg"; + // 对比的图片 + String comparedImagePath = "D:\\Camera Roll\\WIN_20240101_18_50_58_Pro.jpg"; + + Double faceComparison = faceComparison(client, loginImagePath, comparedImagePath); + System.out.println("返回信息:"+faceComparison); + } + + static Double faceComparison(AipFace client, String loginImagePath, String comparedImagePath) throws Exception { + byte[] loginImageBytes = Files.readAllBytes(Paths.get(loginImagePath)); + byte[] comparedImageBytes = Files.readAllBytes(Paths.get(comparedImagePath)); + String image1 = Base64Util.encode(loginImageBytes); + String image2 = Base64Util.encode(comparedImageBytes); + + // image1/image2也可以为url或facetoken, 相应的imageType参数需要与之对应。 + MatchRequest req1 = new MatchRequest(image1, "BASE64"); + MatchRequest req2 = new MatchRequest(image2, "BASE64"); + ArrayList requests = new ArrayList<>(); + requests.add(req1); + requests.add(req2); + + JSONObject match = client.match(requests); + System.out.println(match.toString(2)); + return match.getJSONObject("result").getDouble("score"); + } +} diff --git a/HomeWork-modules/HomeWork-system/src/main/java/HomeWork/system/utils/FaceDetect.java b/HomeWork-modules/HomeWork-system/src/main/java/HomeWork/system/utils/FaceDetect.java index 4a010ca..df3a66a 100644 --- a/HomeWork-modules/HomeWork-system/src/main/java/HomeWork/system/utils/FaceDetect.java +++ b/HomeWork-modules/HomeWork-system/src/main/java/HomeWork/system/utils/FaceDetect.java @@ -1,16 +1,25 @@ package HomeWork.system.utils; -import HomeWork.system.utils.Base64Util; +import HomeWork.system.api.domain.SysUser; +import HomeWork.system.mapper.SysUserMapper; import com.baidu.aip.face.AipFace; import com.baidu.aip.face.MatchRequest; +import org.apache.commons.compress.utils.IOUtils; import org.json.JSONObject; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; -import java.nio.file.Files; -import java.nio.file.Paths; +import java.net.URL; +import java.net.URLConnection; import java.util.ArrayList; -public class FaceDetect { +import java.util.List; - public String faceDetect(String face) throws Exception { +@Component +public class FaceDetect { + @Autowired + private SysUserMapper sysUserMapper; + + public SysUser faceDetect(String face) throws Exception { /** * 传入appId、apiKey、secretkey。创建Java代码和百度云交互的Client对象 */ @@ -18,21 +27,33 @@ public class FaceDetect { // 登录图片 String loginImagePath = face; - // 对比的图片 - String comparedImagePath = "D:\\Camera Roll\\WIN_20240101_18_50_58_Pro.jpg"; + List users=sysUserMapper.selectUserListUserFace(); + if(users.size()>0){ + //循环整个用户信息拿到用户保存的图片 + for (SysUser user : users) { + // 对比的图片 + String comparedImagePath = user.getFaceImg(); - Double faceComparison = faceComparison(client, loginImagePath, comparedImagePath); - System.out.println("返回信息:"+faceComparison); - if (faceComparison > 90) { - return "人脸识别登录成功"; - } else { - return "人脸识别登录失败"; + Double faceComparison = faceComparison(client, loginImagePath, comparedImagePath); + System.out.println("返回信息:"+faceComparison); + if (faceComparison > 90) { + return user; + }else { + //抛异常 + throw new Exception(); + } + } } + return null; } static Double faceComparison(AipFace client, String loginImagePath, String comparedImagePath) throws Exception { - byte[] loginImageBytes = Files.readAllBytes(Paths.get(loginImagePath)); - byte[] comparedImageBytes = Files.readAllBytes(Paths.get(comparedImagePath)); + URL url = new URL(loginImagePath); + URLConnection conn = url.openConnection(); + byte[] loginImageBytes = IOUtils.toByteArray(conn.getInputStream()); + URL url2 = new URL(comparedImagePath); + URLConnection conn2 = url2.openConnection(); + byte[] comparedImageBytes = IOUtils.toByteArray(conn2.getInputStream()); String image1 = Base64Util.encode(loginImageBytes); String image2 = Base64Util.encode(comparedImageBytes); diff --git a/HomeWork-modules/HomeWork-system/src/main/resources/mapper/system/SysUserMapper.xml b/HomeWork-modules/HomeWork-system/src/main/resources/mapper/system/SysUserMapper.xml index 07bf8fd..451e9c1 100644 --- a/HomeWork-modules/HomeWork-system/src/main/resources/mapper/system/SysUserMapper.xml +++ b/HomeWork-modules/HomeWork-system/src/main/resources/mapper/system/SysUserMapper.xml @@ -141,6 +141,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + insert into sys_user( diff --git a/HomeWork-modules/pom.xml b/HomeWork-modules/pom.xml index dcd48f3..a7dd070 100644 --- a/HomeWork-modules/pom.xml +++ b/HomeWork-modules/pom.xml @@ -13,6 +13,7 @@ HomeWork-gen HomeWork-job HomeWork-file + HomeWork-MedicalTreatment HomeWork-modules