人脸修改
This commit is contained in:
parent
efa1d68443
commit
bc362431c9
|
|
@ -5,6 +5,7 @@ import javax.servlet.http.HttpServletResponse;
|
||||||
import javax.validation.Valid;
|
import javax.validation.Valid;
|
||||||
|
|
||||||
import cn.hutool.core.util.ObjectUtil;
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
|
import com.bonus.canteen.core.user.domain.AppUserFace;
|
||||||
import com.bonus.common.core.exception.ServiceException;
|
import com.bonus.common.core.exception.ServiceException;
|
||||||
import com.bonus.common.houqin.constant.RetCodeEnum;
|
import com.bonus.common.houqin.constant.RetCodeEnum;
|
||||||
import com.bonus.common.houqin.encrypt.RequiresGuest;
|
import com.bonus.common.houqin.encrypt.RequiresGuest;
|
||||||
|
|
@ -52,4 +53,12 @@ public class UserFaceController extends BaseController {
|
||||||
return UserFaceService.uploadUserFace(dto);
|
return UserFaceService.uploadUserFace(dto);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ApiOperation("保存APP人脸图片特征值")
|
||||||
|
@PostMapping({"/saveAppFaceEigenvalue"})
|
||||||
|
@RequiresGuest
|
||||||
|
public AjaxResult saveAppFaceEigenvalue(@RequestBody @Valid AppUserFace dto) {
|
||||||
|
return UserFaceService.saveAppFaceEigenvalue(dto);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,10 @@
|
||||||
|
package com.bonus.canteen.core.user.domain;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class AppUserFace {
|
||||||
|
private List<UserFace> userFaceList;
|
||||||
|
}
|
||||||
|
|
@ -2,6 +2,7 @@ package com.bonus.canteen.core.user.mapper;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import com.bonus.canteen.core.user.domain.UserFace;
|
import com.bonus.canteen.core.user.domain.UserFace;
|
||||||
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 人员生物识别特征Mapper接口
|
* 人员生物识别特征Mapper接口
|
||||||
|
|
@ -13,4 +14,6 @@ public interface UserFaceMapper {
|
||||||
int insertUserFace(UserFace userFace);
|
int insertUserFace(UserFace userFace);
|
||||||
|
|
||||||
int deleteUserFace(UserFace userFace);
|
int deleteUserFace(UserFace userFace);
|
||||||
|
|
||||||
|
int saveBatch(@Param("list") List<UserFace> list);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,8 @@
|
||||||
package com.bonus.canteen.core.user.service;
|
package com.bonus.canteen.core.user.service;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import com.bonus.canteen.core.user.domain.AppUserFace;
|
||||||
import com.bonus.canteen.core.user.domain.UserFace;
|
import com.bonus.canteen.core.user.domain.UserFace;
|
||||||
import com.bonus.common.core.web.domain.AjaxResult;
|
import com.bonus.common.core.web.domain.AjaxResult;
|
||||||
|
|
||||||
|
|
@ -20,4 +22,11 @@ public interface IUserFaceService {
|
||||||
* @return 人员生物识别特征
|
* @return 人员生物识别特征
|
||||||
*/
|
*/
|
||||||
AjaxResult uploadUserFace(@Valid UserFace dto);
|
AjaxResult uploadUserFace(@Valid UserFace dto);
|
||||||
|
/**
|
||||||
|
* 保存APP人脸图片特征值
|
||||||
|
*
|
||||||
|
* @param dto 人员生物识别特征主键
|
||||||
|
* @return 人员生物识别特征
|
||||||
|
*/
|
||||||
|
AjaxResult saveAppFaceEigenvalue(AppUserFace dto);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -3,10 +3,8 @@ package com.bonus.canteen.core.user.service.impl;
|
||||||
import java.beans.FeatureDescriptor;
|
import java.beans.FeatureDescriptor;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.time.format.DateTimeFormatter;
|
import java.time.format.DateTimeFormatter;
|
||||||
import java.util.ArrayList;
|
import java.util.*;
|
||||||
import java.util.Arrays;
|
import java.util.stream.Collectors;
|
||||||
import java.util.Base64;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import cn.hutool.core.util.ObjectUtil;
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
import com.alibaba.fastjson.JSONArray;
|
import com.alibaba.fastjson.JSONArray;
|
||||||
|
|
@ -14,6 +12,7 @@ import com.alibaba.fastjson.JSONObject;
|
||||||
import com.bonus.canteen.core.common.utils.FileUrlUtil;
|
import com.bonus.canteen.core.common.utils.FileUrlUtil;
|
||||||
import com.bonus.canteen.core.common.utils.HttpClient;
|
import com.bonus.canteen.core.common.utils.HttpClient;
|
||||||
import com.bonus.canteen.core.common.utils.MqUtil;
|
import com.bonus.canteen.core.common.utils.MqUtil;
|
||||||
|
import com.bonus.canteen.core.user.domain.AppUserFace;
|
||||||
import com.bonus.canteen.core.user.domain.DeviceMqPersonalUpdateMessageDTO;
|
import com.bonus.canteen.core.user.domain.DeviceMqPersonalUpdateMessageDTO;
|
||||||
import com.bonus.canteen.core.user.utils.ArcFaceHelper;
|
import com.bonus.canteen.core.user.utils.ArcFaceHelper;
|
||||||
import com.bonus.canteen.core.user.utils.FaceFeatureDetector;
|
import com.bonus.canteen.core.user.utils.FaceFeatureDetector;
|
||||||
|
|
@ -31,6 +30,7 @@ import org.springframework.stereotype.Service;
|
||||||
import com.bonus.canteen.core.user.mapper.UserFaceMapper;
|
import com.bonus.canteen.core.user.mapper.UserFaceMapper;
|
||||||
import com.bonus.canteen.core.user.domain.UserFace;
|
import com.bonus.canteen.core.user.domain.UserFace;
|
||||||
import com.bonus.canteen.core.user.service.IUserFaceService;
|
import com.bonus.canteen.core.user.service.IUserFaceService;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 人员生物识别特征Service业务层处理
|
* 人员生物识别特征Service业务层处理
|
||||||
|
|
@ -105,10 +105,43 @@ public class UserFaceServiceImpl implements IUserFaceService {
|
||||||
}
|
}
|
||||||
DeviceMqPersonalUpdateMessageDTO bean = new DeviceMqPersonalUpdateMessageDTO().setUpdatePersonPhoto(dto.getUserId().intValue(), "update");
|
DeviceMqPersonalUpdateMessageDTO bean = new DeviceMqPersonalUpdateMessageDTO().setUpdatePersonPhoto(dto.getUserId().intValue(), "update");
|
||||||
MqUtil.pushToTenantAllDevice(bean, LeMqConstant.Topic.DEVICE_UPDATE_PERSONAL_CONFIG_V4);
|
MqUtil.pushToTenantAllDevice(bean, LeMqConstant.Topic.DEVICE_UPDATE_PERSONAL_CONFIG_V4);
|
||||||
}else{
|
} else {
|
||||||
throw new ServiceException("人脸特征提取失败,未检测到人脸");
|
throw new ServiceException("人脸特征提取失败,未检测到人脸");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return AjaxResult.success();
|
return AjaxResult.success();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 保存APP人脸图片特征值
|
||||||
|
*
|
||||||
|
* @param dto 人员生物识别特征主键
|
||||||
|
* @return 人员生物识别特征
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
|
public AjaxResult saveAppFaceEigenvalue(AppUserFace dto) {
|
||||||
|
if (ObjectUtil.isNull(dto)) {
|
||||||
|
throw new ServiceException("参数为空!");
|
||||||
|
}
|
||||||
|
if (ObjectUtil.isNull(dto.getUserFaceList()) || dto.getUserFaceList().isEmpty()) {
|
||||||
|
throw new ServiceException("人脸特征值为空!");
|
||||||
|
}
|
||||||
|
List<UserFace> list = dto.getUserFaceList();
|
||||||
|
list.forEach(faceVO -> {
|
||||||
|
faceVO.setErrorMsg("[软件]成功");
|
||||||
|
faceVO.setUpdateBy(String.valueOf(SecurityUtils.getUserId()));
|
||||||
|
faceVO.setUpdateTime(DateUtils.getTime());
|
||||||
|
faceVO.setPhotoType(1L);
|
||||||
|
});
|
||||||
|
int code = userFaceMapper.saveBatch(list);
|
||||||
|
if (code > 0) {
|
||||||
|
DeviceMqPersonalUpdateMessageDTO bean = new DeviceMqPersonalUpdateMessageDTO().setUpdatePersonPhoto(null, "update");
|
||||||
|
MqUtil.pushToTenantAllDevice(bean, LeMqConstant.Topic.DEVICE_UPDATE_PERSONAL_CONFIG_V4);
|
||||||
|
return AjaxResult.success();
|
||||||
|
} else {
|
||||||
|
throw new ServiceException("保存失败");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -9,8 +9,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
features,
|
features,
|
||||||
face_state
|
face_state
|
||||||
from user_face
|
from user_face
|
||||||
where face_state = '1'
|
where face_state = '1' and features_state = '0'
|
||||||
and features_build_time >= NOW() - INTERVAL 1 DAY
|
|
||||||
<if test="userId != null and userId != '' and userId != 0 and userId != '0'">
|
<if test="userId != null and userId != '' and userId != 0 and userId != '0'">
|
||||||
and user_id = #{userId}
|
and user_id = #{userId}
|
||||||
</if>
|
</if>
|
||||||
|
|
@ -23,10 +22,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
features,
|
features,
|
||||||
face_state
|
face_state
|
||||||
from kitchen_staff_face
|
from kitchen_staff_face
|
||||||
where face_state = '1'
|
where face_state = '1' and features_state = '0'
|
||||||
and features_build_time >= NOW() - INTERVAL 1 DAY
|
<if test="userId != null and userId != '' and userId != 0 and userId != '0'">
|
||||||
<if test="userId != null and userId != '' and userId != 0 and userId != '0'">
|
and staff_id = #{userId}
|
||||||
and staff_id = #{userId}
|
</if>
|
||||||
</if>
|
|
||||||
</select>
|
</select>
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|
@ -10,13 +10,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
<insert id="insertStaffFace" parameterType="com.bonus.canteen.core.kitchen.domain.KitchenStaffFace">
|
<insert id="insertStaffFace" parameterType="com.bonus.canteen.core.kitchen.domain.KitchenStaffFace">
|
||||||
insert into kitchen_staff_face(staff_id,photo_url,features,create_by,error_msg,create_time,update_by,update_time)
|
insert into kitchen_staff_face(staff_id,photo_url,features,create_by,error_msg,create_time,update_by,update_time,features_state)
|
||||||
values(#{staffId},#{photoUrl},#{features},#{createBy},#{errorMsg},#{createTime},#{updateBy},#{updateTime})
|
values(#{staffId},#{photoUrl},#{features},#{createBy},#{errorMsg},#{createTime},#{updateBy},#{updateTime},'0')
|
||||||
on duplicate key update features = #{features},
|
on duplicate key update features = #{features},
|
||||||
photo_url = #{photoUrl},
|
photo_url = #{photoUrl},
|
||||||
error_msg = #{errorMsg},
|
error_msg = #{errorMsg},
|
||||||
update_by = #{updateBy},
|
update_by = #{updateBy},
|
||||||
update_time = #{updateTime}
|
update_time = #{updateTime},
|
||||||
|
features_state = '0'
|
||||||
</insert>
|
</insert>
|
||||||
|
|
||||||
<update id="updateStaffFaceState" >
|
<update id="updateStaffFaceState" >
|
||||||
|
|
|
||||||
|
|
@ -4,17 +4,32 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||||
<mapper namespace="com.bonus.canteen.core.user.mapper.UserFaceMapper">
|
<mapper namespace="com.bonus.canteen.core.user.mapper.UserFaceMapper">
|
||||||
<insert id="insertUserFace" parameterType="com.bonus.canteen.core.user.domain.UserFace">
|
<insert id="insertUserFace" parameterType="com.bonus.canteen.core.user.domain.UserFace">
|
||||||
insert into user_face(user_id,photo_url,features,create_by,error_msg,create_time,update_by,update_time)
|
insert into user_face(user_id,photo_url,features,create_by,error_msg,create_time,update_by,update_time,features_state)
|
||||||
values(#{userId},#{photoUrl},#{features},#{createBy},#{errorMsg},#{createTime},#{updateBy},#{updateTime})
|
values(#{userId},#{photoUrl},#{features},#{createBy},#{errorMsg},#{createTime},#{updateBy},#{updateTime},'0')
|
||||||
on duplicate key update features = #{features},
|
on duplicate key update features = #{features},
|
||||||
photo_url = #{photoUrl},
|
photo_url = #{photoUrl},
|
||||||
error_msg = #{errorMsg},
|
error_msg = #{errorMsg},
|
||||||
update_by = #{updateBy},
|
update_by = #{updateBy},
|
||||||
update_time = #{updateTime}
|
update_time = #{updateTime},
|
||||||
|
features_state = '0'
|
||||||
</insert>
|
</insert>
|
||||||
|
|
||||||
<delete id="deleteUserFace" parameterType="com.bonus.canteen.core.user.domain.UserFace">
|
<delete id="deleteUserFace" parameterType="com.bonus.canteen.core.user.domain.UserFace">
|
||||||
delete from user_face
|
delete from user_face
|
||||||
where user_id = #{userId}
|
where user_id = #{userId}
|
||||||
</delete>
|
</delete>
|
||||||
|
|
||||||
|
<insert id="saveBatch">
|
||||||
|
insert into user_face(user_id,photo_url,features,create_by,error_msg,create_time,update_by,update_time,features_state)
|
||||||
|
values
|
||||||
|
<foreach collection="list" item="item" index="index" separator=",">
|
||||||
|
(#{item.userId},#{item.photoUrl},#{item.features},#{item.createBy},#{item.errorMsg},#{item.createTime},#{item.updateBy},#{item.updateTime},'1')
|
||||||
|
</foreach>
|
||||||
|
on duplicate key update features = values(features),
|
||||||
|
photo_url = values(photo_url),
|
||||||
|
error_msg = values(error_msg),
|
||||||
|
update_by = values(update_by),
|
||||||
|
update_time = values(update_time),
|
||||||
|
features_state = '1'
|
||||||
|
</insert>
|
||||||
</mapper>
|
</mapper>
|
||||||
Loading…
Reference in New Issue