3
This commit is contained in:
parent
c2ebbd71e2
commit
05bc2773b9
@ -77,7 +77,7 @@ public class PriceBiz {
|
|||||||
IsBuyBatchRespVO respVO = new IsBuyBatchRespVO();
|
IsBuyBatchRespVO respVO = new IsBuyBatchRespVO();
|
||||||
PriceConfigEntity priceConfig = priceRepository.getPriceConfigByScenicTypeGoods(scenicId, type, goodsIds);
|
PriceConfigEntity priceConfig = priceRepository.getPriceConfigByScenicTypeGoods(scenicId, type, goodsIds);
|
||||||
if (priceConfig == null) {
|
if (priceConfig == null) {
|
||||||
throw new RuntimeException("该套餐暂未开放购买");
|
return null;
|
||||||
}
|
}
|
||||||
ScenicConfigEntity scenicConfig = scenicRepository.getScenicConfig(scenicId);
|
ScenicConfigEntity scenicConfig = scenicRepository.getScenicConfig(scenicId);
|
||||||
if (scenicConfig != null) {
|
if (scenicConfig != null) {
|
||||||
|
@ -99,6 +99,10 @@ public class AppOrderController {
|
|||||||
@GetMapping("/scenic/{scenicId}/queryBatchPrice")
|
@GetMapping("/scenic/{scenicId}/queryBatchPrice")
|
||||||
public ApiResponse<IsBuyBatchRespVO> queryPrice(@PathVariable("scenicId") Long scenicId, @RequestParam("type") Integer type, @RequestParam(value = "goodsIds", required = false) String goodsIds) {
|
public ApiResponse<IsBuyBatchRespVO> queryPrice(@PathVariable("scenicId") Long scenicId, @RequestParam("type") Integer type, @RequestParam(value = "goodsIds", required = false) String goodsIds) {
|
||||||
Long userId = Long.parseLong(BaseContextHandler.getUserId());
|
Long userId = Long.parseLong(BaseContextHandler.getUserId());
|
||||||
return ApiResponse.success(priceBiz.isBuy(userId, scenicId, type, goodsIds));
|
IsBuyBatchRespVO buy = priceBiz.isBuy(userId, scenicId, type, goodsIds);
|
||||||
|
if (buy == null) {
|
||||||
|
return ApiResponse.fail("该套餐暂未开放购买");
|
||||||
|
}
|
||||||
|
return ApiResponse.success(buy);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3,6 +3,7 @@ package com.ycwl.basic.controller.pc;
|
|||||||
import com.github.pagehelper.PageInfo;
|
import com.github.pagehelper.PageInfo;
|
||||||
import com.ycwl.basic.model.pc.device.entity.DeviceConfigEntity;
|
import com.ycwl.basic.model.pc.device.entity.DeviceConfigEntity;
|
||||||
import com.ycwl.basic.model.pc.device.req.DeviceAddOrUpdateReq;
|
import com.ycwl.basic.model.pc.device.req.DeviceAddOrUpdateReq;
|
||||||
|
import com.ycwl.basic.model.pc.device.req.DeviceBatchSortRequest;
|
||||||
import com.ycwl.basic.model.pc.device.req.DeviceReqQuery;
|
import com.ycwl.basic.model.pc.device.req.DeviceReqQuery;
|
||||||
import com.ycwl.basic.model.pc.device.req.DeviceSortRequest;
|
import com.ycwl.basic.model.pc.device.req.DeviceSortRequest;
|
||||||
import com.ycwl.basic.model.pc.device.resp.DeviceRespVO;
|
import com.ycwl.basic.model.pc.device.resp.DeviceRespVO;
|
||||||
@ -62,6 +63,11 @@ public class DeviceController {
|
|||||||
return deviceService.sortDevice(request.getDeviceId(), request.getAfterDeviceId());
|
return deviceService.sortDevice(request.getDeviceId(), request.getAfterDeviceId());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@PostMapping("/scenic/{scenicId}/sortBatch")
|
||||||
|
public ApiResponse<Boolean> sortDeviceBatch(@PathVariable("scenicId") Long scenicId, @RequestBody DeviceBatchSortRequest request) {
|
||||||
|
return deviceService.batchSort(scenicId, request);
|
||||||
|
}
|
||||||
|
|
||||||
@GetMapping("/config/{id}")
|
@GetMapping("/config/{id}")
|
||||||
public ApiResponse<DeviceConfigEntity> getConfig(@PathVariable("id") Long id) {
|
public ApiResponse<DeviceConfigEntity> getConfig(@PathVariable("id") Long id) {
|
||||||
return ApiResponse.success(deviceService.getConfig(id));
|
return ApiResponse.success(deviceService.getConfig(id));
|
||||||
|
@ -0,0 +1,16 @@
|
|||||||
|
package com.ycwl.basic.model.pc.device.req;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class DeviceBatchSortRequest {
|
||||||
|
private List<SortItem> list;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public static class SortItem {
|
||||||
|
private Long id;
|
||||||
|
private Integer sort;
|
||||||
|
}
|
||||||
|
}
|
@ -33,6 +33,8 @@ public class DeviceRespVO {
|
|||||||
private Integer online;
|
private Integer online;
|
||||||
private String coverUrl;
|
private String coverUrl;
|
||||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
||||||
|
private Date coverTime;
|
||||||
|
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
||||||
private Date createAt;
|
private Date createAt;
|
||||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
||||||
private Date updateAt;
|
private Date updateAt;
|
||||||
|
@ -3,6 +3,7 @@ package com.ycwl.basic.service.impl.pc;
|
|||||||
import com.github.pagehelper.PageHelper;
|
import com.github.pagehelper.PageHelper;
|
||||||
import com.github.pagehelper.PageInfo;
|
import com.github.pagehelper.PageInfo;
|
||||||
import com.ycwl.basic.model.pc.device.entity.DeviceEntity;
|
import com.ycwl.basic.model.pc.device.entity.DeviceEntity;
|
||||||
|
import com.ycwl.basic.model.pc.device.req.DeviceBatchSortRequest;
|
||||||
import com.ycwl.basic.model.pc.template.resp.TemplateRespVO;
|
import com.ycwl.basic.model.pc.template.resp.TemplateRespVO;
|
||||||
import com.ycwl.basic.model.wvp.WvpSyncReqVo;
|
import com.ycwl.basic.model.wvp.WvpSyncReqVo;
|
||||||
import com.ycwl.basic.repository.DeviceRepository;
|
import com.ycwl.basic.repository.DeviceRepository;
|
||||||
@ -164,4 +165,13 @@ public class DeviceServiceImpl implements DeviceService {
|
|||||||
});
|
});
|
||||||
return ApiResponse.success(true);
|
return ApiResponse.success(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ApiResponse<Boolean> batchSort(Long scenicId, DeviceBatchSortRequest request) {
|
||||||
|
for (DeviceBatchSortRequest.SortItem item : request.getList()) {
|
||||||
|
deviceMapper.updateSort(item.getId(), item.getSort());
|
||||||
|
deviceRepository.clearDeviceCache(item.getId());
|
||||||
|
}
|
||||||
|
return ApiResponse.success(true);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -3,6 +3,7 @@ package com.ycwl.basic.service.pc;
|
|||||||
import com.github.pagehelper.PageInfo;
|
import com.github.pagehelper.PageInfo;
|
||||||
import com.ycwl.basic.model.pc.device.entity.DeviceConfigEntity;
|
import com.ycwl.basic.model.pc.device.entity.DeviceConfigEntity;
|
||||||
import com.ycwl.basic.model.pc.device.req.DeviceAddOrUpdateReq;
|
import com.ycwl.basic.model.pc.device.req.DeviceAddOrUpdateReq;
|
||||||
|
import com.ycwl.basic.model.pc.device.req.DeviceBatchSortRequest;
|
||||||
import com.ycwl.basic.model.pc.device.req.DeviceReqQuery;
|
import com.ycwl.basic.model.pc.device.req.DeviceReqQuery;
|
||||||
import com.ycwl.basic.model.pc.device.resp.DeviceRespVO;
|
import com.ycwl.basic.model.pc.device.resp.DeviceRespVO;
|
||||||
import com.ycwl.basic.model.wvp.WvpSyncReqVo;
|
import com.ycwl.basic.model.wvp.WvpSyncReqVo;
|
||||||
@ -29,4 +30,6 @@ public interface DeviceService {
|
|||||||
void updateDevices(Long scenicId, WvpSyncReqVo reqVo);
|
void updateDevices(Long scenicId, WvpSyncReqVo reqVo);
|
||||||
|
|
||||||
ApiResponse<Boolean> sortDevice(Long deviceId, Long afterDeviceId);
|
ApiResponse<Boolean> sortDevice(Long deviceId, Long afterDeviceId);
|
||||||
|
|
||||||
|
ApiResponse<Boolean> batchSort(Long scenicId, DeviceBatchSortRequest request);
|
||||||
}
|
}
|
||||||
|
@ -68,6 +68,7 @@ import java.util.concurrent.ArrayBlockingQueue;
|
|||||||
import java.util.concurrent.ThreadPoolExecutor;
|
import java.util.concurrent.ThreadPoolExecutor;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
import java.util.concurrent.atomic.AtomicBoolean;
|
import java.util.concurrent.atomic.AtomicBoolean;
|
||||||
|
import java.util.concurrent.atomic.AtomicInteger;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import static com.ycwl.basic.constant.FaceConstant.USER_FACE_DB_NAME;
|
import static com.ycwl.basic.constant.FaceConstant.USER_FACE_DB_NAME;
|
||||||
@ -320,10 +321,12 @@ public class TaskFaceServiceImpl implements TaskFaceService {
|
|||||||
|
|
||||||
listFaceEntitiesRequest.setDbName(USER_FACE_DB_NAME + String.valueOf(scenicId));
|
listFaceEntitiesRequest.setDbName(USER_FACE_DB_NAME + String.valueOf(scenicId));
|
||||||
listFaceEntitiesRequest.setOrder("asc");
|
listFaceEntitiesRequest.setOrder("asc");
|
||||||
|
listFaceEntitiesRequest.setLimit(200);
|
||||||
try {
|
try {
|
||||||
|
AtomicInteger count = new AtomicInteger(0);
|
||||||
IAcsClient client = getClient();
|
IAcsClient client = getClient();
|
||||||
AtomicBoolean flag = new AtomicBoolean(false);
|
|
||||||
while (true) {
|
while (true) {
|
||||||
|
listFaceEntitiesRequest.setOffset(count.getAndIncrement());
|
||||||
ListFaceEntitiesResponse listFaceEntitiesResponse = client.getAcsResponse(listFaceEntitiesRequest);
|
ListFaceEntitiesResponse listFaceEntitiesResponse = client.getAcsResponse(listFaceEntitiesRequest);
|
||||||
if (listFaceEntitiesResponse == null || listFaceEntitiesResponse.getData() == null || listFaceEntitiesResponse.getData().getEntities() == null || listFaceEntitiesResponse.getData().getEntities().isEmpty()) {
|
if (listFaceEntitiesResponse == null || listFaceEntitiesResponse.getData() == null || listFaceEntitiesResponse.getData().getEntities() == null || listFaceEntitiesResponse.getData().getEntities().isEmpty()) {
|
||||||
break;
|
break;
|
||||||
@ -331,27 +334,25 @@ public class TaskFaceServiceImpl implements TaskFaceService {
|
|||||||
listFaceEntitiesResponse.getData().getEntities().forEach(entity -> {
|
listFaceEntitiesResponse.getData().getEntities().forEach(entity -> {
|
||||||
Date createdDate = new Date(entity.getCreatedAt());
|
Date createdDate = new Date(entity.getCreatedAt());
|
||||||
if (createdDate.before(endDate)) {
|
if (createdDate.before(endDate)) {
|
||||||
flag.set(true);
|
deleteFaceSample(entity.getDbName(), entity.getEntityId());
|
||||||
log.info("当前景区{},开始删除人脸样本:{}", scenicId, entity.getEntityId());
|
|
||||||
deleteFaceSample(String.valueOf(scenicId), entity.getEntityId());
|
|
||||||
} else {
|
} else {
|
||||||
|
count.incrementAndGet();
|
||||||
log.info("当前景区{},人脸样本:{}未过期", scenicId, entity.getEntityId());
|
log.info("当前景区{},人脸样本:{}未过期", scenicId, entity.getEntityId());
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
if (!flag.get()) {
|
|
||||||
break;
|
|
||||||
} else {
|
|
||||||
flag.set(false);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
} catch (Exception ignored) {
|
} catch (Exception ignored) {
|
||||||
}
|
}
|
||||||
|
List<DeviceEntity> devices = deviceRepository.getAllDeviceByScenicId(scenicId);
|
||||||
listFaceEntitiesRequest.setDbName(String.valueOf(scenicId));
|
listFaceEntitiesRequest.setDbName(String.valueOf(scenicId));
|
||||||
listFaceEntitiesRequest.setOrder("asc");
|
listFaceEntitiesRequest.setOrder("asc");
|
||||||
|
devices.forEach(device -> {
|
||||||
|
AtomicInteger count = new AtomicInteger(0);
|
||||||
|
listFaceEntitiesRequest.setEntityIdPrefix(device.getId() + "_");
|
||||||
try {
|
try {
|
||||||
IAcsClient client = getClient();
|
IAcsClient client = getClient();
|
||||||
AtomicBoolean flag = new AtomicBoolean(false);
|
|
||||||
while (true) {
|
while (true) {
|
||||||
|
listFaceEntitiesRequest.setOffset(count.get());
|
||||||
ListFaceEntitiesResponse listFaceEntitiesResponse = client.getAcsResponse(listFaceEntitiesRequest);
|
ListFaceEntitiesResponse listFaceEntitiesResponse = client.getAcsResponse(listFaceEntitiesRequest);
|
||||||
if (listFaceEntitiesResponse == null || listFaceEntitiesResponse.getData() == null || listFaceEntitiesResponse.getData().getEntities() == null || listFaceEntitiesResponse.getData().getEntities().isEmpty()) {
|
if (listFaceEntitiesResponse == null || listFaceEntitiesResponse.getData() == null || listFaceEntitiesResponse.getData().getEntities() == null || listFaceEntitiesResponse.getData().getEntities().isEmpty()) {
|
||||||
break;
|
break;
|
||||||
@ -371,21 +372,16 @@ public class TaskFaceServiceImpl implements TaskFaceService {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (DateUtils.parse(dateString, DATE_FORMAT).before(endDate)) {
|
if (DateUtils.parse(dateString, DATE_FORMAT).before(endDate)) {
|
||||||
flag.set(true);
|
deleteFaceSample(entity.getDbName(), entity.getEntityId());
|
||||||
log.info("当前景区{},开始删除人脸样本:{}", scenicId, entity.getEntityId());
|
|
||||||
deleteFaceSample(String.valueOf(scenicId), entity.getEntityId());
|
|
||||||
} else {
|
} else {
|
||||||
|
count.incrementAndGet();
|
||||||
log.info("当前景区{},人脸样本:{}未过期", scenicId, entity.getEntityId());
|
log.info("当前景区{},人脸样本:{}未过期", scenicId, entity.getEntityId());
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
if (!flag.get()) {
|
|
||||||
break;
|
|
||||||
} else {
|
|
||||||
flag.set(false);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
} catch (Exception ignored) {
|
} catch (Exception ignored) {
|
||||||
}
|
}
|
||||||
|
});
|
||||||
List<FaceSampleEntity> faceSampleList = faceSampleMapper.listEntityBeforeDate(scenicId, endDate);
|
List<FaceSampleEntity> faceSampleList = faceSampleMapper.listEntityBeforeDate(scenicId, endDate);
|
||||||
if (faceSampleList.isEmpty()) {
|
if (faceSampleList.isEmpty()) {
|
||||||
log.info("当前景区{},人脸样本为空", scenicId);
|
log.info("当前景区{},人脸样本为空", scenicId);
|
||||||
|
@ -128,7 +128,15 @@ public class VideoPieceGetter {
|
|||||||
.values();
|
.values();
|
||||||
collection.forEach(faceSampleList -> {
|
collection.forEach(faceSampleList -> {
|
||||||
executor.execute(() -> {
|
executor.execute(() -> {
|
||||||
faceSampleList.parallelStream().forEach(faceSample -> {
|
AtomicBoolean isFirst = new AtomicBoolean(true);
|
||||||
|
faceSampleList.forEach(faceSample -> {
|
||||||
|
if (!isFirst.get()) {
|
||||||
|
try {
|
||||||
|
Thread.sleep(1000);
|
||||||
|
} catch (InterruptedException ignore) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
isFirst.set(false);
|
||||||
executor.execute(() -> {
|
executor.execute(() -> {
|
||||||
DeviceEntity device = deviceRepository.getDevice(faceSample.getDeviceId());
|
DeviceEntity device = deviceRepository.getDevice(faceSample.getDeviceId());
|
||||||
DeviceConfigEntity config = deviceRepository.getDeviceConfig(faceSample.getDeviceId());
|
DeviceConfigEntity config = deviceRepository.getDeviceConfig(faceSample.getDeviceId());
|
||||||
|
@ -62,6 +62,6 @@ public class WxMpUtil {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static void main(String[] args) throws Exception {
|
public static void main(String[] args) throws Exception {
|
||||||
generateWXAQRCode("wxe7ff26af70bfc37c", "5252fbbc68513bc77b7cc0052b9f9695", "trial", "pages/home/index?scenicId=3946669713328836608", "cxzh_t.jpg");
|
generateWXAQRCode("wxe7ff26af70bfc37c", "5252fbbc68513bc77b7cc0052b9f9695", "trial", "pages/home/index?scenicId=3955650120997015552", "sxlj_t.jpg");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -68,7 +68,8 @@
|
|||||||
</delete>
|
</delete>
|
||||||
<select id="list" resultType="com.ycwl.basic.model.pc.device.resp.DeviceRespVO">
|
<select id="list" resultType="com.ycwl.basic.model.pc.device.resp.DeviceRespVO">
|
||||||
select d.id, scenic_id, d.name, no, d.longitude, d.latitude, d.status, create_at, d.update_at, s.name scenic_name, d.keepalive_at, d.online, p.wvp_device_no as device_no, p.wvp_channel_no channel_no,
|
select d.id, scenic_id, d.name, no, d.longitude, d.latitude, d.status, create_at, d.update_at, s.name scenic_name, d.keepalive_at, d.online, p.wvp_device_no as device_no, p.wvp_channel_no channel_no,
|
||||||
(select url from source s where s.device_id=d.id order by id desc limit 1) coverUrl
|
(select s.url from source s where s.device_id=d.id order by id desc limit 1) coverUrl,
|
||||||
|
(select s.create_time from source s where s.device_id=d.id order by id desc limit 1) coverTime
|
||||||
from device d
|
from device d
|
||||||
left join scenic s on d.scenic_id = s.id
|
left join scenic s on d.scenic_id = s.id
|
||||||
left join device_preview_config p on d.id = p.device_id and p.status = 1
|
left join device_preview_config p on d.id = p.device_id and p.status = 1
|
||||||
|
109
src/test/java/com/ycwl/basic/task/FaceCleanerTest.java
Normal file
109
src/test/java/com/ycwl/basic/task/FaceCleanerTest.java
Normal file
@ -0,0 +1,109 @@
|
|||||||
|
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.config.FaceDetectConfig;
|
||||||
|
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
|
||||||
|
@RunWith(SpringRunner.class)
|
||||||
|
public class FaceCleanerTest {
|
||||||
|
@Autowired
|
||||||
|
private FaceMapper faceMapper;
|
||||||
|
@Autowired
|
||||||
|
private TaskFaceService taskFaceService;
|
||||||
|
@Autowired
|
||||||
|
private FaceSampleMapper faceSampleMapper;
|
||||||
|
@Autowired
|
||||||
|
private FaceDetectConfig faceDetectConfig;
|
||||||
|
@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();
|
||||||
|
List<ScenicRespVO> scenicList = scenicMapper.list(scenicQuery);
|
||||||
|
scenicList.forEach(scenic -> {
|
||||||
|
log.info("当前景区{},开始删除人脸样本", scenic.getName());
|
||||||
|
taskFaceService.batchDeleteExpiredFace(scenic.getId());
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testC() {
|
||||||
|
List<List<Integer>> list = Arrays.asList(Arrays.asList(1,2,3), Arrays.asList(4,5,6), Arrays.asList(7,8,9), Arrays.asList(10,11,12));
|
||||||
|
ThreadPoolExecutor executor = new ThreadPoolExecutor(8, 16, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<>(16));
|
||||||
|
list.parallelStream().forEach(integers -> {
|
||||||
|
executor.execute(() -> {
|
||||||
|
integers.forEach(integer -> {
|
||||||
|
executor.execute(() -> {
|
||||||
|
try {
|
||||||
|
Thread.sleep(1000);
|
||||||
|
} catch (InterruptedException ignored) {
|
||||||
|
}
|
||||||
|
log.info("{}", integer);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
try {
|
||||||
|
Thread.sleep(2000);
|
||||||
|
executor.shutdown();
|
||||||
|
executor.awaitTermination(1, TimeUnit.MINUTES);
|
||||||
|
} catch (InterruptedException ignored) {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user