规整下代码
This commit is contained in:
parent
117a13cc2c
commit
b4aa3619ba
@ -20,8 +20,8 @@ import com.ycwl.basic.facebody.entity.AddFaceResp;
|
||||
import com.ycwl.basic.facebody.entity.AliFaceBodyConfig;
|
||||
import com.ycwl.basic.facebody.entity.SearchFaceResp;
|
||||
import com.ycwl.basic.facebody.entity.SearchFaceResultItem;
|
||||
import com.ycwl.basic.ratelimiter.FixedRateLimiter;
|
||||
import com.ycwl.basic.ratelimiter.IRateLimiter;
|
||||
import com.ycwl.basic.utils.ratelimiter.FixedRateLimiter;
|
||||
import com.ycwl.basic.utils.ratelimiter.IRateLimiter;
|
||||
import lombok.Getter;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
@ -299,7 +299,7 @@ public class FaceServiceImpl implements FaceService {
|
||||
new Thread(() -> {
|
||||
sourceMapper.deleteNotBuyFaceRelation(face.getMemberId(), faceId);
|
||||
videoMapper.deleteNotBuyFaceRelations(face.getMemberId(), faceId);
|
||||
faceService.deleteFaceSample(USER_FACE_DB_NAME+face.getScenicId().toString(), faceId.toString());
|
||||
faceService.deleteFaceSample(face.getScenicId(), USER_FACE_DB_NAME+face.getScenicId().toString(), faceId.toString());
|
||||
}).start();
|
||||
return ApiResponse.success("删除成功");
|
||||
}
|
||||
|
@ -14,7 +14,7 @@ public interface TaskFaceService {
|
||||
|
||||
String uploadFile(MultipartFile file, Long userId);
|
||||
|
||||
boolean deleteFaceSample(String dbName, String entityId);
|
||||
boolean deleteFaceSample(Long scenicId, String dbName, String entityId);
|
||||
|
||||
boolean assureFaceDb(IFaceBodyAdapter faceBodyAdapter, String dbName);
|
||||
}
|
||||
|
@ -3,11 +3,9 @@ package com.ycwl.basic.service.task.impl;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.aliyuncs.facebody.model.v20191230.DeleteFaceEntityRequest;
|
||||
import com.aliyuncs.facebody.model.v20191230.ListFaceEntitiesRequest;
|
||||
import com.aliyuncs.facebody.model.v20191230.ListFaceEntitiesResponse;
|
||||
import com.aliyuncs.facebody.model.v20191230.SearchFaceRequest;
|
||||
import com.aliyuncs.facebody.model.v20191230.SearchFaceResponse;
|
||||
import com.ycwl.basic.biz.OrderBiz;
|
||||
import com.ycwl.basic.constant.FaceConstant;
|
||||
import com.ycwl.basic.exception.BaseException;
|
||||
@ -34,7 +32,6 @@ import com.ycwl.basic.model.pc.scenic.entity.ScenicConfigEntity;
|
||||
import com.ycwl.basic.model.pc.source.entity.MemberSourceEntity;
|
||||
import com.ycwl.basic.model.pc.source.entity.SourceEntity;
|
||||
import com.ycwl.basic.model.task.resp.SearchFaceRespVo;
|
||||
import com.ycwl.basic.ratelimiter.FixedRateLimiter;
|
||||
import com.ycwl.basic.repository.DeviceRepository;
|
||||
import com.ycwl.basic.repository.FaceRepository;
|
||||
import com.ycwl.basic.repository.ScenicRepository;
|
||||
@ -49,9 +46,7 @@ import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.data.redis.core.RedisTemplate;
|
||||
import org.springframework.stereotype.Service;
|
||||
import com.aliyuncs.DefaultAcsClient;
|
||||
import com.aliyuncs.IAcsClient;
|
||||
import com.aliyuncs.profile.DefaultProfile;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import java.io.IOException;
|
||||
@ -91,8 +86,6 @@ public class TaskFaceServiceImpl implements TaskFaceService {
|
||||
private SourceMapper sourceMapper;
|
||||
@Autowired
|
||||
private OrderBiz orderBiz;
|
||||
private final FixedRateLimiter deleteEntityLimiter = new FixedRateLimiter(600, TimeUnit.MILLISECONDS);
|
||||
private final ThreadPoolExecutor executor = new ThreadPoolExecutor(8, 1024, 0, TimeUnit.SECONDS, new ArrayBlockingQueue<>(1024));
|
||||
|
||||
@Autowired
|
||||
private ScenicRepository scenicRepository;
|
||||
@ -318,7 +311,7 @@ public class TaskFaceServiceImpl implements TaskFaceService {
|
||||
listFaceEntitiesResponse.getData().getEntities().forEach(entity -> {
|
||||
Date createdDate = new Date(entity.getCreatedAt());
|
||||
if (createdDate.before(endDate)) {
|
||||
deleteFaceSample(entity.getDbName(), entity.getEntityId());
|
||||
deleteFaceSample(scenicId, entity.getDbName(), entity.getEntityId());
|
||||
} else {
|
||||
count.incrementAndGet();
|
||||
log.info("当前景区{},人脸样本:{}未过期", scenicId, entity.getEntityId());
|
||||
@ -349,7 +342,7 @@ public class TaskFaceServiceImpl implements TaskFaceService {
|
||||
return;
|
||||
}
|
||||
if (DateUtils.parse(dateString, DATE_FORMAT).before(endDate)) {
|
||||
deleteFaceSample(entity.getDbName(), entity.getEntityId());
|
||||
deleteFaceSample(scenicId, entity.getDbName(), entity.getEntityId());
|
||||
} else {
|
||||
count.incrementAndGet();
|
||||
log.info("当前景区{},人脸样本:{}未过期", scenicId, entity.getEntityId());
|
||||
@ -387,7 +380,7 @@ public class TaskFaceServiceImpl implements TaskFaceService {
|
||||
return;
|
||||
}
|
||||
if (DateUtils.parse(dateString, DATE_FORMAT).before(endDate)) {
|
||||
deleteFaceSample(entity.getDbName(), entity.getEntityId());
|
||||
deleteFaceSample(scenicId, entity.getDbName(), entity.getEntityId());
|
||||
} else {
|
||||
count.incrementAndGet();
|
||||
log.info("当前景区{},人脸样本:{}未过期", scenicId, entity.getEntityId());
|
||||
@ -403,7 +396,7 @@ public class TaskFaceServiceImpl implements TaskFaceService {
|
||||
return;
|
||||
}
|
||||
faceSampleList.forEach(faceSample -> {
|
||||
boolean success = deleteFaceSample(String.valueOf(scenicId), generateEntityId(faceSample));
|
||||
boolean success = deleteFaceSample(scenicId, String.valueOf(scenicId), generateEntityId(faceSample));
|
||||
if (success) {
|
||||
log.info("当前景区{},人脸样本ID{},删除成功", scenicId, faceSample.getId());
|
||||
faceSampleMapper.deleteById(faceSample.getId());
|
||||
@ -438,15 +431,18 @@ public class TaskFaceServiceImpl implements TaskFaceService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean deleteFaceSample(String dbName, String entityId) {
|
||||
DeleteFaceEntityRequest deleteFaceEntityRequest = new DeleteFaceEntityRequest();
|
||||
deleteFaceEntityRequest.setDbName(dbName);
|
||||
deleteFaceEntityRequest.setEntityId(entityId);
|
||||
public boolean deleteFaceSample(Long scenicId, String dbName, String entityId) {
|
||||
ScenicConfigEntity scenicConfig = scenicRepository.getScenicConfig(scenicId);
|
||||
IFaceBodyAdapter faceBodyAdapter;
|
||||
if (scenicConfig != null && scenicConfig.getFaceType() != null) {
|
||||
faceBodyAdapter = FaceBodyFactory.getAdapter(scenicConfig.getFaceType());
|
||||
faceBodyAdapter.loadConfig(JSONObject.parseObject(scenicConfig.getFaceConfigJson(), Map.class));
|
||||
} else {
|
||||
faceBodyAdapter = FaceBodyFactory.use();
|
||||
}
|
||||
log.info("删除{}人脸实体:{}", dbName, entityId);
|
||||
try {
|
||||
deleteEntityLimiter.acquire();
|
||||
log.info("删除{}人脸实体:{}", dbName, entityId);
|
||||
IAcsClient client = getClient();
|
||||
client.getAcsResponse(deleteFaceEntityRequest);
|
||||
faceBodyAdapter.deleteFace(dbName, entityId);
|
||||
return true;
|
||||
} catch (Exception e) {
|
||||
log.error("删除人脸样本失败!", e);
|
||||
|
@ -84,7 +84,7 @@ public class FaceCleaner {
|
||||
req.setUpdateEndTime(DateUtil.offsetDay(DateUtil.beginOfDay(new Date()), -sampleStoreDay));
|
||||
List<FaceRespVO> list = faceMapper.list(req);
|
||||
list.forEach(face -> {
|
||||
boolean result = faceService.deleteFaceSample(USER_FACE_DB_NAME+face.getScenicId(), face.getId().toString());
|
||||
boolean result = faceService.deleteFaceSample(face.getScenicId(), USER_FACE_DB_NAME+face.getScenicId(), face.getId().toString());
|
||||
if (result) {
|
||||
faceMapper.deleteById(face.getId());
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
package com.ycwl.basic.ratelimiter;
|
||||
package com.ycwl.basic.utils.ratelimiter;
|
||||
|
||||
import java.util.concurrent.ScheduledExecutorService;
|
||||
import java.util.concurrent.ScheduledThreadPoolExecutor;
|
@ -1,4 +1,4 @@
|
||||
package com.ycwl.basic.ratelimiter;
|
||||
package com.ycwl.basic.utils.ratelimiter;
|
||||
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
@ -1,4 +1,4 @@
|
||||
package com.ycwl.basic.ratelimiter;
|
||||
package com.ycwl.basic.utils.ratelimiter;
|
||||
|
||||
import java.util.concurrent.ScheduledExecutorService;
|
||||
import java.util.concurrent.ScheduledThreadPoolExecutor;
|
@ -2,48 +2,25 @@ package com.ycwl.basic.task;
|
||||
|
||||
import com.aliyuncs.DefaultAcsClient;
|
||||
import com.aliyuncs.IAcsClient;
|
||||
import com.aliyuncs.exceptions.ClientException;
|
||||
import com.aliyuncs.exceptions.ServerException;
|
||||
import com.aliyuncs.facebody.model.v20191230.GetFaceEntityRequest;
|
||||
import com.aliyuncs.facebody.model.v20191230.GetFaceEntityResponse;
|
||||
import com.aliyuncs.facebody.model.v20191230.ListFaceEntitiesRequest;
|
||||
import com.aliyuncs.facebody.model.v20191230.ListFaceEntitiesResponse;
|
||||
import com.aliyuncs.profile.DefaultProfile;
|
||||
import com.ycwl.basic.mapper.FaceMapper;
|
||||
import com.ycwl.basic.mapper.FaceSampleMapper;
|
||||
import com.ycwl.basic.mapper.ScenicMapper;
|
||||
import com.ycwl.basic.model.pc.face.resp.FaceRespVO;
|
||||
import com.ycwl.basic.model.pc.faceSample.req.FaceSampleReqQuery;
|
||||
import com.ycwl.basic.model.pc.faceSample.resp.FaceSampleRespVO;
|
||||
import com.ycwl.basic.model.pc.scenic.req.ScenicReqQuery;
|
||||
import com.ycwl.basic.model.pc.scenic.resp.ScenicRespVO;
|
||||
import com.ycwl.basic.ratelimiter.FixedRateLimiter;
|
||||
import com.ycwl.basic.service.task.TaskFaceService;
|
||||
import com.ycwl.basic.utils.DateUtils;
|
||||
import lombok.extern.java.Log;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.boot.test.context.SpringBootTest;
|
||||
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
|
||||
import org.springframework.test.context.junit4.SpringRunner;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.concurrent.ArrayBlockingQueue;
|
||||
import java.util.concurrent.LinkedBlockingQueue;
|
||||
import java.util.concurrent.ThreadPoolExecutor;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.concurrent.atomic.AtomicBoolean;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static com.ycwl.basic.constant.FaceConstant.USER_FACE_DB_NAME;
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
|
||||
@Slf4j
|
||||
@SpringBootTest
|
||||
@ -58,16 +35,6 @@ public class FaceCleanerTest {
|
||||
@Autowired
|
||||
private ScenicMapper scenicMapper;
|
||||
|
||||
private IAcsClient getClient() {
|
||||
DefaultProfile profile = DefaultProfile.getProfile(
|
||||
faceDetectConfig.getRegion(),faceDetectConfig.getAccessKeyId(), faceDetectConfig.getAccessKeySecret());
|
||||
IAcsClient client = new DefaultAcsClient(profile);
|
||||
return client;
|
||||
}
|
||||
private static final String DATE_FORMAT="yyyyMMddHHmmss";
|
||||
private final FixedRateLimiter entityLimiter1 = new FixedRateLimiter(600, TimeUnit.MILLISECONDS);
|
||||
private final FixedRateLimiter entityLimiter2 = new FixedRateLimiter(600, TimeUnit.MILLISECONDS);
|
||||
|
||||
@Test
|
||||
public void test() {
|
||||
ScenicReqQuery scenicQuery = new ScenicReqQuery();
|
||||
|
Loading…
x
Reference in New Issue
Block a user