人脸修改
This commit is contained in:
		
							parent
							
								
									efa1d68443
								
							
						
					
					
						commit
						bc362431c9
					
				| 
						 | 
				
			
			@ -5,6 +5,7 @@ import javax.servlet.http.HttpServletResponse;
 | 
			
		|||
import javax.validation.Valid;
 | 
			
		||||
 | 
			
		||||
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.houqin.constant.RetCodeEnum;
 | 
			
		||||
import com.bonus.common.houqin.encrypt.RequiresGuest;
 | 
			
		||||
| 
						 | 
				
			
			@ -52,4 +53,12 @@ public class UserFaceController extends BaseController {
 | 
			
		|||
        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 com.bonus.canteen.core.user.domain.UserFace;
 | 
			
		||||
import org.apache.ibatis.annotations.Param;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * 人员生物识别特征Mapper接口
 | 
			
		||||
| 
						 | 
				
			
			@ -13,4 +14,6 @@ public interface UserFaceMapper {
 | 
			
		|||
    int insertUserFace(UserFace userFace);
 | 
			
		||||
 | 
			
		||||
    int deleteUserFace(UserFace userFace);
 | 
			
		||||
 | 
			
		||||
    int saveBatch(@Param("list") List<UserFace> list);
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,6 +1,8 @@
 | 
			
		|||
package com.bonus.canteen.core.user.service;
 | 
			
		||||
 | 
			
		||||
import java.util.List;
 | 
			
		||||
 | 
			
		||||
import com.bonus.canteen.core.user.domain.AppUserFace;
 | 
			
		||||
import com.bonus.canteen.core.user.domain.UserFace;
 | 
			
		||||
import com.bonus.common.core.web.domain.AjaxResult;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -20,4 +22,11 @@ public interface IUserFaceService {
 | 
			
		|||
     * @return 人员生物识别特征
 | 
			
		||||
     */
 | 
			
		||||
    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.time.LocalDateTime;
 | 
			
		||||
import java.time.format.DateTimeFormatter;
 | 
			
		||||
import java.util.ArrayList;
 | 
			
		||||
import java.util.Arrays;
 | 
			
		||||
import java.util.Base64;
 | 
			
		||||
import java.util.List;
 | 
			
		||||
import java.util.*;
 | 
			
		||||
import java.util.stream.Collectors;
 | 
			
		||||
 | 
			
		||||
import cn.hutool.core.util.ObjectUtil;
 | 
			
		||||
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.HttpClient;
 | 
			
		||||
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.utils.ArcFaceHelper;
 | 
			
		||||
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.domain.UserFace;
 | 
			
		||||
import com.bonus.canteen.core.user.service.IUserFaceService;
 | 
			
		||||
import org.springframework.transaction.annotation.Transactional;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * 人员生物识别特征Service业务层处理
 | 
			
		||||
| 
						 | 
				
			
			@ -105,10 +105,43 @@ public class UserFaceServiceImpl implements IUserFaceService {
 | 
			
		|||
                }
 | 
			
		||||
                DeviceMqPersonalUpdateMessageDTO bean = new DeviceMqPersonalUpdateMessageDTO().setUpdatePersonPhoto(dto.getUserId().intValue(), "update");
 | 
			
		||||
                MqUtil.pushToTenantAllDevice(bean, LeMqConstant.Topic.DEVICE_UPDATE_PERSONAL_CONFIG_V4);
 | 
			
		||||
            }else{
 | 
			
		||||
            } else {
 | 
			
		||||
                throw new ServiceException("人脸特征提取失败,未检测到人脸");
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        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,
 | 
			
		||||
               face_state
 | 
			
		||||
        from user_face
 | 
			
		||||
        where face_state = '1'
 | 
			
		||||
          and features_build_time >= NOW() - INTERVAL 1 DAY
 | 
			
		||||
        where face_state = '1' and features_state = '0'
 | 
			
		||||
        <if test="userId != null and userId != '' and userId != 0 and userId != '0'">
 | 
			
		||||
            and user_id = #{userId}
 | 
			
		||||
        </if>
 | 
			
		||||
| 
						 | 
				
			
			@ -23,10 +22,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 | 
			
		|||
            features,
 | 
			
		||||
            face_state
 | 
			
		||||
        from kitchen_staff_face
 | 
			
		||||
        where face_state = '1'
 | 
			
		||||
            and features_build_time >= NOW() - INTERVAL 1 DAY
 | 
			
		||||
            <if test="userId != null and userId != '' and userId != 0 and userId != '0'">
 | 
			
		||||
                and staff_id = #{userId}
 | 
			
		||||
            </if>
 | 
			
		||||
        where face_state = '1' and features_state = '0'
 | 
			
		||||
        <if test="userId != null and userId != '' and userId != 0 and userId != '0'">
 | 
			
		||||
            and staff_id = #{userId}
 | 
			
		||||
        </if>
 | 
			
		||||
    </select>
 | 
			
		||||
</mapper>
 | 
			
		||||
| 
						 | 
				
			
			@ -10,13 +10,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 | 
			
		|||
    </select>
 | 
			
		||||
 | 
			
		||||
    <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)
 | 
			
		||||
        values(#{staffId},#{photoUrl},#{features},#{createBy},#{errorMsg},#{createTime},#{updateBy},#{updateTime})
 | 
			
		||||
        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},'0')
 | 
			
		||||
        on duplicate key update features = #{features},
 | 
			
		||||
                                photo_url = #{photoUrl},
 | 
			
		||||
                                error_msg = #{errorMsg},
 | 
			
		||||
                                update_by = #{updateBy},
 | 
			
		||||
                                update_time = #{updateTime}
 | 
			
		||||
                                update_time = #{updateTime},
 | 
			
		||||
                                features_state = '0'
 | 
			
		||||
    </insert>
 | 
			
		||||
 | 
			
		||||
    <update id="updateStaffFaceState" >
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,17 +4,32 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 | 
			
		|||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 | 
			
		||||
<mapper namespace="com.bonus.canteen.core.user.mapper.UserFaceMapper">
 | 
			
		||||
    <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)
 | 
			
		||||
        values(#{userId},#{photoUrl},#{features},#{createBy},#{errorMsg},#{createTime},#{updateBy},#{updateTime})
 | 
			
		||||
        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},'0')
 | 
			
		||||
        on duplicate key update features = #{features},
 | 
			
		||||
                                photo_url = #{photoUrl},
 | 
			
		||||
                                error_msg = #{errorMsg},
 | 
			
		||||
                                update_by = #{updateBy},
 | 
			
		||||
                                update_time = #{updateTime}
 | 
			
		||||
                                update_time = #{updateTime},
 | 
			
		||||
                                features_state = '0'
 | 
			
		||||
    </insert>
 | 
			
		||||
 | 
			
		||||
    <delete id="deleteUserFace" parameterType="com.bonus.canteen.core.user.domain.UserFace">
 | 
			
		||||
        delete from user_face
 | 
			
		||||
        where user_id = #{userId}
 | 
			
		||||
    </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>
 | 
			
		||||
		Loading…
	
		Reference in New Issue