diff --git a/yanzhu-common/yanzhu-common-core/src/main/java/com/yanzhu/common/core/config/BaiduFaceProperties.java b/yanzhu-common/yanzhu-common-core/src/main/java/com/yanzhu/common/core/config/BaiduFaceProperties.java index 716c1534..433a8774 100644 --- a/yanzhu-common/yanzhu-common-core/src/main/java/com/yanzhu/common/core/config/BaiduFaceProperties.java +++ b/yanzhu-common/yanzhu-common-core/src/main/java/com/yanzhu/common/core/config/BaiduFaceProperties.java @@ -16,17 +16,17 @@ public class BaiduFaceProperties { /** * 百度人脸识别应用的App ID */ - private String appId = "119949649";//"117160042";// + private String appId = "117160042";//"119949649";// /** * 百度人脸识别应用的API Key */ - private String apiKey = "L3PiEzO9dMFJDExMTjOxuTtq";//"rS40xCCuGuVNFRopPI0jlMuj";// + private String apiKey = "rS40xCCuGuVNFRopPI0jlMuj";//"L3PiEzO9dMFJDExMTjOxuTtq";// /** * 百度人脸识别应用的Secret Key */ - private String secretKey ="40LMey6WC1MYIqLU4m5Qe8K4foFUM1bc" ;//"3bY7dADqQq3O4UpXpFA1FJAj6LN57QCS";// + private String secretKey ="3bY7dADqQq3O4UpXpFA1FJAj6LN57QCS";//"40LMey6WC1MYIqLU4m5Qe8K4foFUM1bc" ;// /** * 相似度阈值,大于此值认为是同一个人 diff --git a/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/services/IBaiduFaceService.java b/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/services/IBaiduFaceService.java index 51d0a69c..8971c2b6 100644 --- a/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/services/IBaiduFaceService.java +++ b/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/services/IBaiduFaceService.java @@ -17,7 +17,7 @@ public interface IBaiduFaceService { * @param user * @return */ - String updateSysUser(SysUser user); + String updateSysUser(SysUser user,boolean isRefresh); /** * 系统用户百度人脸识别删除 @@ -31,7 +31,7 @@ public interface IBaiduFaceService { * @param proProjectInfoSubdeptsUsers * @return */ - String updateProUser(ProProjectInfoSubdeptsUsers proProjectInfoSubdeptsUsers); + String updateProUser(ProProjectInfoSubdeptsUsers proProjectInfoSubdeptsUsers,boolean isRefresh); /** * 项目用户百度人脸识别删除 diff --git a/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/services/impl/BaiduFaceService.java b/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/services/impl/BaiduFaceService.java index f38b5799..76e8f9f0 100644 --- a/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/services/impl/BaiduFaceService.java +++ b/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/services/impl/BaiduFaceService.java @@ -50,16 +50,18 @@ public class BaiduFaceService implements IBaiduFaceService { * @return */ @Override - public String updateSysUser(SysUser user) { + public String updateSysUser(SysUser user,boolean isRefresh) { if(StringUtils.isEmpty(user.getAvatar())){ return "失败:无照片"; } - SysUser oldUser=sysUserMapper.selectUserByUserId(user.getUserId()); - if(oldUser==null){ - return "失败:用户不存在"; - } - if(StringUtils.equals(oldUser.getAvatar(),user.getAvatar())){ - return "失败:照片未改变"; + if(!isRefresh){ + SysUser oldUser=sysUserMapper.selectUserByUserId(user.getUserId()); + if(oldUser==null){ + return "失败:用户不存在"; + } + if(StringUtils.equals(oldUser.getAvatar(),user.getAvatar())){ + return "失败:照片未改变"; + } } BaiduFaceUserInfo bfUser = new BaiduFaceUserInfo(); bfUser.setUserId("S"+user.getUserId()); @@ -95,16 +97,18 @@ public class BaiduFaceService implements IBaiduFaceService { * @return */ @Override - public String updateProUser(ProProjectInfoSubdeptsUsers proProjectInfoSubdeptsUsers) { + public String updateProUser(ProProjectInfoSubdeptsUsers proProjectInfoSubdeptsUsers,boolean isRefresh) { if(StringUtils.isEmpty(proProjectInfoSubdeptsUsers.getUserPicture())){ return "失败:无照片"; } - ProProjectInfoSubdeptsUsers oldUser=proProjectInfoSubdeptsUsersMapper.selectProProjectInfoSubdeptsUsersById(proProjectInfoSubdeptsUsers.getId()); - if(oldUser==null){ - return "失败:用户不存在"; - } - if(StringUtils.equals(oldUser.getUserPicture(),proProjectInfoSubdeptsUsers.getUserPicture())){ - return "失败:照片未改变"; + if(!isRefresh) { + ProProjectInfoSubdeptsUsers oldUser = proProjectInfoSubdeptsUsersMapper.selectProProjectInfoSubdeptsUsersById(proProjectInfoSubdeptsUsers.getId()); + if (oldUser == null) { + return "失败:用户不存在"; + } + if (StringUtils.equals(oldUser.getUserPicture(), proProjectInfoSubdeptsUsers.getUserPicture())) { + return "失败:照片未改变"; + } } BaiduFaceUserInfo bfUser = new BaiduFaceUserInfo(); bfUser.setUserId("P"+proProjectInfoSubdeptsUsers.getUserId()); diff --git a/yanzhu-common/yanzhu-common-mapper/src/main/resources/mapper/manage/ProMobileAttendanceConfigMapper.xml b/yanzhu-common/yanzhu-common-mapper/src/main/resources/mapper/manage/ProMobileAttendanceConfigMapper.xml index 325cfb62..0610d8dc 100644 --- a/yanzhu-common/yanzhu-common-mapper/src/main/resources/mapper/manage/ProMobileAttendanceConfigMapper.xml +++ b/yanzhu-common/yanzhu-common-mapper/src/main/resources/mapper/manage/ProMobileAttendanceConfigMapper.xml @@ -63,7 +63,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and ( (c.is_all=1 and c.valid=0 ) or g.group_id= #{groupId}) - and ( (c.is_all=1 and c.valid=0 ) or g.group_id in (SELECT sub_dept_group from pro_project_info_subdepts_users where user_id=#{userId}) ) + and ( (c.is_all=1 and c.valid=0 ) or g.group_id in (SELECT sub_dept_group from pro_project_info_subdepts_users where user_id=#{userId} order by ifnull(update_time,date('2099-12-31')) desc ,create_time desc LIMIT 1) ) diff --git a/yanzhu-common/yanzhu-common-mapper/src/main/resources/mapper/manage/ProMobileAttendanceDataMapper.xml b/yanzhu-common/yanzhu-common-mapper/src/main/resources/mapper/manage/ProMobileAttendanceDataMapper.xml index e679d3d5..1c92cd4f 100644 --- a/yanzhu-common/yanzhu-common-mapper/src/main/resources/mapper/manage/ProMobileAttendanceDataMapper.xml +++ b/yanzhu-common/yanzhu-common-mapper/src/main/resources/mapper/manage/ProMobileAttendanceDataMapper.xml @@ -39,7 +39,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" dic1.dict_label as craft_type_name,dic2.dict_label as craft_post_name,pma.att_device, psu.user_name, psu.user_phone,psu.sub_dept_name,psu.sub_dept_group_name,psu.user_post,psu.user_sex from pro_mobile_attendance_data pma - left join pro_project_info_subdepts_users psu on pma.user_id=psu.user_id + left join ( + SELECT t.* FROM pro_project_info_subdepts_users t + INNER JOIN (SELECT user_id, MAX(CONCAT(IFNULL(update_time, DATE('2099-12-31')), create_time)) AS max_time_key FROM pro_project_info_subdepts_users GROUP BY user_id) t_max ON t.user_id = t_max.user_id + AND CONCAT(IFNULL(t.update_time, DATE('2099-12-31')), t.create_time) = t_max.max_time_key + ) psu ON pma.user_id = psu.user_id left join sys_dict_data dic1 on psu.`craft_type`=dic1.`dict_value` and dic1.`dict_type`='pro_craft_type' left join sys_dict_data dic2 on psu.`craft_post`=dic2.`dict_value` and dic2.`dict_type`='pro_craft_post' diff --git a/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/controller/ProProjectInfoSubdeptsUsersController.java b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/controller/ProProjectInfoSubdeptsUsersController.java index 8821a9e2..03dbcd98 100644 --- a/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/controller/ProProjectInfoSubdeptsUsersController.java +++ b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/controller/ProProjectInfoSubdeptsUsersController.java @@ -825,4 +825,14 @@ public class ProProjectInfoSubdeptsUsersController extends BaseController return userList; } + @GetMapping("/updateBaiduFaceLibrary/{projectId}") + @RequiresPermissions("manage:proProjectInfoSubdeptsUsers:list") + public AjaxResult updateBaiduFaceLibrary(@PathVariable("projectId") Long projectId){ + if(SecurityUtils.isAdmin(SecurityUtils.getUserId())){ + proProjectInfoSubdeptsUsersService.updateBaiduFaceLibrary(projectId); + return AjaxResult.success("更新成功"); + }else{ + return AjaxResult.error("非管理员不能操作"); + } + } } diff --git a/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/IProProjectInfoSubdeptsUsersService.java b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/IProProjectInfoSubdeptsUsersService.java index 1983c4bc..69e9d895 100644 --- a/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/IProProjectInfoSubdeptsUsersService.java +++ b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/IProProjectInfoSubdeptsUsersService.java @@ -267,4 +267,11 @@ public interface IProProjectInfoSubdeptsUsersService * 完成三级安全教育人数 */ Long getEduCompletedCount(Long prjId); + + /** + * 更新项目的百度人脸库 + * @param projectId + * @return + */ + Long updateBaiduFaceLibrary(Long projectId); } diff --git a/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/impl/ProProjectInfoSubdeptsUsersServiceImpl.java b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/impl/ProProjectInfoSubdeptsUsersServiceImpl.java index b9360107..b165e843 100644 --- a/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/impl/ProProjectInfoSubdeptsUsersServiceImpl.java +++ b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/impl/ProProjectInfoSubdeptsUsersServiceImpl.java @@ -1003,7 +1003,7 @@ public class ProProjectInfoSubdeptsUsersServiceImpl implements IProProjectInfoSu } public int updateProjectInfoSubdeptsUsers(ProProjectInfoSubdeptsUsers proProjectInfoSubdeptsUsers){ - baiduFaceService.updateProUser(proProjectInfoSubdeptsUsers); + baiduFaceService.updateProUser(proProjectInfoSubdeptsUsers,false); return proProjectInfoSubdeptsUsersMapper.updateProProjectInfoSubdeptsUsers(proProjectInfoSubdeptsUsers); } /** @@ -1835,4 +1835,33 @@ public class ProProjectInfoSubdeptsUsersServiceImpl implements IProProjectInfoSu return proProjectInfoSubdeptsUsersMapper.getEduCompletedCount(prjId); } + /** + * 更新项目的百度人脸库 + * @param projectId + * @return + */ + @Override + public Long updateBaiduFaceLibrary(Long projectId) { + ProProjectInfoSubdeptsUsers where=new ProProjectInfoSubdeptsUsers(); + where.setProjectId(projectId); + List list=proProjectInfoSubdeptsUsersMapper.selectProProjectInfoSubdeptsUsersList(where); + int cnt=0; + for(ProProjectInfoSubdeptsUsers u:list){ + String res= baiduFaceService.updateProUser(u,true); + if(res!=null && res.contains("成功")){ + cnt++; + } + } + SysUser syWhere=new SysUser(); + syWhere.setDeptId(projectId); + List sysUsers=sysUserMapper.selectUserList(syWhere); + for(SysUser sysUser:sysUsers){ + String res= baiduFaceService.updateSysUser(sysUser,true); + if(res!=null && res.contains("成功")){ + cnt++; + } + } + return cnt*1L; + } + } diff --git a/yanzhu-modules/yanzhu-system/src/main/java/com/yanzhu/system/controller/SysUserController.java b/yanzhu-modules/yanzhu-system/src/main/java/com/yanzhu/system/controller/SysUserController.java index 79743d66..7bb93a20 100644 --- a/yanzhu-modules/yanzhu-system/src/main/java/com/yanzhu/system/controller/SysUserController.java +++ b/yanzhu-modules/yanzhu-system/src/main/java/com/yanzhu/system/controller/SysUserController.java @@ -416,7 +416,7 @@ public class SysUserController extends BaseController { return error("修改用户'" + user.getUserName() + "'失败,邮箱账号已存在"); } user.setUpdateBy(SecurityUtils.getUsername()); - baiduFaceService.updateSysUser(user); + baiduFaceService.updateSysUser(user,false); return toAjax(userService.updateUser(user)); } diff --git a/yanzhu-ui-vue3/src/api/manage/proProjectInfoSubdeptsUsers.js b/yanzhu-ui-vue3/src/api/manage/proProjectInfoSubdeptsUsers.js index a9ebdff5..003012e6 100644 --- a/yanzhu-ui-vue3/src/api/manage/proProjectInfoSubdeptsUsers.js +++ b/yanzhu-ui-vue3/src/api/manage/proProjectInfoSubdeptsUsers.js @@ -102,3 +102,11 @@ export function fileAllUsers(proId) { method: 'get' }) } + + +export function updateBaiduFaceLibrary(projectId){ + return request({ + url: '/manage/proProjectInfoSubdeptsUsers/updateBaiduFaceLibrary/' + projectId, + method: 'get' + }) +} \ No newline at end of file diff --git a/yanzhu-ui-vue3/src/views/manage/proProjectInfoSubdeptsUsers/index.vue b/yanzhu-ui-vue3/src/views/manage/proProjectInfoSubdeptsUsers/index.vue index 049dc642..877d76e8 100644 --- a/yanzhu-ui-vue3/src/views/manage/proProjectInfoSubdeptsUsers/index.vue +++ b/yanzhu-ui-vue3/src/views/manage/proProjectInfoSubdeptsUsers/index.vue @@ -55,6 +55,9 @@ 批量入场 + + 同步百度人脸库 + @@ -324,6 +327,7 @@ import { updateProProjectInfoSubdeptsUsers, editPhone, fileSign, + updateBaiduFaceLibrary } from '@/api/manage/proProjectInfoSubdeptsUsers' import { listProProjectInfoSubdepts } from '@/api/manage/proProjectInfoSubdepts' import { listProProjectInfoSubdeptsGroup } from '@/api/manage/proProjectInfoSubdeptsGroup' @@ -355,6 +359,7 @@ const total = ref(0) const title = ref('') const dateRange = ref([]) + const validatePhone = (rule, value, callback) => { if (!/^1\d{10}$/.test(value)) { callback(new Error('请输入有效手机号码!')) @@ -423,10 +428,18 @@ const data = reactive({ prjWorkTypeObj: {}, prjWorkCategories: [], //项目人员岗位大类 prjWorkTypes: [], //项目人员岗位类型 + isAdmin:userStore.isAdmin, }) const { queryParams, form, rules } = toRefs(data) +//同步百度人脸库 +function handleSyncFace(){ + updateBaiduFaceLibrary(queryParams.value.projectId).then(res=>{ + proxy.$modal.msgSuccess('同步百度人脸库成功!') + }); +} + //进场,离场 function handleEnter(row) { let ids = [row.id]