package com.guwan.backend.face; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.guwan.backend.face.entity.UserCompareInfo; import com.guwan.backend.face.service.FaceEngineService; import com.guwan.backend.face.util.Base64Util; import com.guwan.backend.face.util.UserInfo; import com.guwan.backend.face.util.UserRamGroup; import com.guwan.backend.pojo.entity.User; import com.guwan.backend.service.UserService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.ApplicationArguments; import org.springframework.boot.ApplicationRunner; import org.springframework.core.annotation.Order; import org.springframework.stereotype.Component; import java.util.List; @Component @Order(1) @Slf4j public class FaceEngineAutoRun implements ApplicationRunner { @Autowired private FaceEngineService faceEngineService; @Autowired private UserService userService; @Override public void run(ApplicationArguments args) throws Exception { // 任务初始化 log.debug("服务启动。开始初始化人脸库"); UserRamGroup.addCell("Guwan"); int userCount = Math.toIntExact(userService.getCount()); int pageSize = 1000; int page = userCount / pageSize; if(userCount % 1000!=0){ page = page + 1; } int faceCount = 0; for (int i = 0; i < page; i++) { int start = i * 1000; List listPage = userService.listPage(start, 1000); for(User user: listPage){ if(user.getFeature() != null && !user.getFeature().isEmpty()){ UserInfo userInfo = new UserCompareInfo(); userInfo.setFaceId(String.valueOf(user.getId())); userInfo.setName(user.getUsername()); userInfo.setFaceFeature(Base64Util.base64ToBytes(user.getFeature())); //这边注册到内存缓存中 UserRamGroup.addUser(userInfo,"Guwan"); faceCount++; } } } log.debug("初始化人脸库完成,共 "+faceCount+" 人"); } }