62 lines
2.2 KiB
Java
62 lines
2.2 KiB
Java
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<User> 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+" 人");
|
|
|
|
}
|
|
}
|
|
|