diff --git a/fw-dalaran-domain/src/main/java/cn/fw/dalaran/domain/db/TodoHistory.java b/fw-dalaran-domain/src/main/java/cn/fw/dalaran/domain/db/TodoHistory.java index 81cada9..6e306f1 100644 --- a/fw-dalaran-domain/src/main/java/cn/fw/dalaran/domain/db/TodoHistory.java +++ b/fw-dalaran-domain/src/main/java/cn/fw/dalaran/domain/db/TodoHistory.java @@ -46,4 +46,11 @@ public class TodoHistory extends BaseAuditableTimeEntity { * 附加信息 */ private String extra; + + /** + * 自定义去重条件 + */ + public String getRemoveDuplicatesCondition() { + return this.getUserId() + "-->" + this.getDataId(); + } } diff --git a/fw-dalaran-server/src/main/java/cn/fw/dalaran/server/controller/app/OtherController.java b/fw-dalaran-server/src/main/java/cn/fw/dalaran/server/controller/app/OtherController.java index 4607c79..316df93 100644 --- a/fw-dalaran-server/src/main/java/cn/fw/dalaran/server/controller/app/OtherController.java +++ b/fw-dalaran-server/src/main/java/cn/fw/dalaran/server/controller/app/OtherController.java @@ -3,11 +3,10 @@ package cn.fw.dalaran.server.controller.app; import cn.fw.common.web.annotation.ControllerMethod; import cn.fw.common.web.auth.LoginAuthBean; import cn.fw.common.web.auth.annotation.CurrentUser; -import cn.fw.dalaran.common.constants.DalaranConstants; import cn.fw.dalaran.domain.param.LiveCheckParams; import cn.fw.dalaran.domain.vo.LiveCheckVo; import cn.fw.dalaran.rpc.erp.UserRoleRpcService; -import cn.fw.dalaran.rpc.erp.dto.UserInfoDTO; +import cn.fw.dalaran.server.task.TodoTask; import cn.fw.dalaran.service.Common; import cn.fw.dalaran.service.biz.OtherBizService; import cn.fw.data.base.domain.common.Message; @@ -23,7 +22,6 @@ import javax.validation.Valid; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; import java.io.File; -import java.util.List; import java.util.Objects; import static cn.fw.common.web.util.ResultBuilder.success; @@ -46,6 +44,7 @@ public class OtherController { private final OtherBizService otherBizService; private final Common common; private final UserRoleRpcService userRoleRpcService; + private final TodoTask todoTask;// 定时任务 /** * 获取直播审计页面 @@ -110,13 +109,15 @@ public class OtherController { } /** + * 重发直播审计待办 * - * @param shopId 门店id + * @param timestamp 时间戳 * @return */ - @GetMapping("/test") - public Message> test(Long shopId) { - return Message.success(userRoleRpcService.getUsers(shopId, DalaranConstants.ZBSJ_ROLE_CODE)); + @GetMapping("/resendLiveCheckBacklog") + public Message test(@NotNull(message = "请必须指定时间戳") Long timestamp) { + todoTask.sendLiveCheckBacklog(timestamp); + return Message.success(); } } diff --git a/fw-dalaran-server/src/main/java/cn/fw/dalaran/server/task/TodoTask.java b/fw-dalaran-server/src/main/java/cn/fw/dalaran/server/task/TodoTask.java index ff33072..b6bf42d 100644 --- a/fw-dalaran-server/src/main/java/cn/fw/dalaran/server/task/TodoTask.java +++ b/fw-dalaran-server/src/main/java/cn/fw/dalaran/server/task/TodoTask.java @@ -136,12 +136,21 @@ public class TodoTask { */ @Scheduled(fixedRate = 15 * 60 * 1000, initialDelay = 5 * 1000) public void sendLiveCheckBacklog() { + this.sendLiveCheckBacklog(System.currentTimeMillis()); + } + + /** + * 发送直播审计待办 + * + * @param timeStamp 指定时间 + */ + public void sendLiveCheckBacklog(Long timeStamp) { final List themeList = activityThemeService.lambdaQuery() - .gt(ActivityTheme::getEndTime, new Date(System.currentTimeMillis() - 7 * 24 * 3600 * 1000)) + .gt(ActivityTheme::getEndTime, new Date(timeStamp - 7 * 24 * 3600 * 1000)) .list() .stream() .filter(item -> { - final long timeSub = System.currentTimeMillis() - item.getEndTime().getTime(); + final long timeSub = timeStamp - item.getEndTime().getTime(); return 24 * 3600 * 1000 < timeSub && timeSub < 2 * 24 * 3600 * 1000; }) .collect(Collectors.toList());// 找到需要审计的主题 @@ -187,7 +196,7 @@ public class TodoTask { .map(item -> {// 遍历每个门店 TodoHistory todo = new TodoHistory(); List users = userRoleRpcService.getUsers(item, DalaranConstants.ZBSJ_ROLE_CODE);// 获取门店拥有'直播审计'角色的人 - if (users.size() > 0) { + if (!users.isEmpty()) { todo.setSend(false); todo.setDone(false); todo.setTodoDone(false); @@ -205,7 +214,7 @@ public class TodoTask { }) .filter(item -> Objects.nonNull(item.getTodoCode())) .collect(Collectors.collectingAndThen(Collectors.toCollection(() -> - new TreeSet<>(Comparator.comparing(TodoHistory::getDataId))), ArrayList::new) + new TreeSet<>(Comparator.comparing(TodoHistory::getRemoveDuplicatesCondition))), ArrayList::new) ); if (!Objects.equals(hasSaveTodo.size(), 0) && Objects.equals(collect.size(), hasSaveTodo.size())) return;