REQ-3502: 过滤流程按钮

This commit is contained in:
yanglin 2025-01-14 11:39:26 +08:00
parent ab6845816c
commit ea0177677c
3 changed files with 5 additions and 74 deletions

View File

@ -1,38 +0,0 @@
package cn.axzo.msg.center.message.service.todo.card.biz;
import cn.axzo.msg.center.domain.entity.Todo;
import cn.axzo.msg.center.message.service.card.interceptor.CardButtonInterceptor;
import cn.axzo.msg.center.message.service.card.interceptor.CardButtonInterceptorFactory;
import cn.axzo.msg.center.message.service.todo.card.TodoSyncCardService;
import cn.axzo.msg.center.service.enums.BizCategoryEnum;
import cn.axzo.msg.center.service.pending.request.CardContent;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.jetbrains.annotations.Nullable;
import org.springframework.stereotype.Component;
/**
* @author yanglin
*/
@Slf4j
@Component
@RequiredArgsConstructor
class BizCardButtonInterceptorFactory implements CardButtonInterceptorFactory {
private final TodoSyncCardService todoSyncCardService;
@Override
@Nullable
public CardButtonInterceptor create(CardContent card) {
BizCategoryEnum category = TodoSyncCardService.findTodoBizCategory(card.getBizParam()).orElse(null);
if (category != BizCategoryEnum.OTHER)
return null;
Todo todo = todoSyncCardService.findTodo(card).orElse(null);
if (todo == null) {
log.warn("todo not found. identityCode={}", card.getBizParam());
return null;
}
return new TodoCardButtonInterceptor(todo);
}
}

View File

@ -1,26 +0,0 @@
package cn.axzo.msg.center.message.service.todo.card.biz;
import cn.axzo.msg.center.domain.entity.Todo;
import cn.axzo.msg.center.message.service.card.interceptor.CardButtonInterceptor;
import cn.axzo.msg.center.service.ButtonV3;
import cn.axzo.msg.center.service.enums.TodoType;
import cn.axzo.msg.center.utils.desision.DecisionValue;
import lombok.RequiredArgsConstructor;
/**
* @author yanglin
*/
@RequiredArgsConstructor
public class TodoCardButtonInterceptor implements CardButtonInterceptor {
protected final Todo todo;
@Override
public DecisionValue<Boolean> isVisibleOnCard(ButtonV3 button) {
// 抄送不显示任何按钮
if (todo.getType() == TodoType.COPIED_TO_ME)
return DecisionValue.decide(false);
return DecisionValue.notSure();
}
}

View File

@ -1,7 +1,7 @@
package cn.axzo.msg.center.message.service.todo.card.workflow;
import cn.axzo.msg.center.domain.entity.Todo;
import cn.axzo.msg.center.message.service.todo.card.biz.TodoCardButtonInterceptor;
import cn.axzo.msg.center.message.service.card.interceptor.CardButtonInterceptor;
import cn.axzo.msg.center.service.ButtonV3;
import cn.axzo.msg.center.service.enums.BizFinalStateEnum;
import cn.axzo.msg.center.service.enums.PendingMessageStateEnum;
@ -11,6 +11,7 @@ import cn.axzo.workflow.common.enums.ButtonVisibleScopeEnum;
import cn.axzo.workflow.common.model.request.bpmn.BpmnButtonMetaInfo;
import cn.axzo.workflow.common.model.response.bpmn.task.BpmnTaskButtonVo;
import cn.axzo.workflow.common.model.response.bpmn.task.BpmnTaskButtonVo.BpmnButtonMetaInfoWithVisibleScope;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import java.util.Collections;
@ -25,16 +26,13 @@ import static java.util.stream.Collectors.toSet;
* @author yanglin
*/
@Slf4j
class WorkflowTodoCardButtonInterceptor extends TodoCardButtonInterceptor {
@RequiredArgsConstructor
class WorkflowTodoCardButtonInterceptor implements CardButtonInterceptor {
private final Todo todo;
private final Supplier<BpmnTaskButtonVo> workflowButtonsProvider;
private BpmnTaskButtonVo workflowButtons;
WorkflowTodoCardButtonInterceptor(Todo todo, Supplier<BpmnTaskButtonVo> workflowButtonsProvider) {
super(todo);
this.workflowButtonsProvider = workflowButtonsProvider;
}
@Override
public DecisionValue<Boolean> isPerformActionAvailable(ButtonV3 button) {
BizFinalStateEnum state = findButtonClickState(button).orElse(null);
@ -59,9 +57,6 @@ class WorkflowTodoCardButtonInterceptor extends TodoCardButtonInterceptor {
@Override
public DecisionValue<Boolean> isVisibleOnCard(ButtonV3 button) {
DecisionValue<Boolean> decision = super.isVisibleOnCard(button);
if (decision.isDecided())
return decision;
// 进行中隐藏所有按钮
if (todo.getState() == PendingMessageStateEnum.PROCESSING)
return DecisionValue.decide(false);