package cn.iocoder.yudao.module.ums.service.application; import cn.iocoder.yudao.module.bpm.service.task.BpmTaskApprovalValidator; import cn.iocoder.yudao.module.ums.dal.dataobject.application.UmsApplicationDO; import cn.iocoder.yudao.module.ums.dal.mysql.application.UmsApplicationMapper; import jakarta.annotation.Resource; import org.flowable.engine.runtime.ProcessInstance; import org.flowable.task.api.Task; import org.springframework.stereotype.Component; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; import static cn.iocoder.yudao.module.ums.enums.ErrorCodeConstants.*; @Component public class UmsApplicationApprovalValidator implements BpmTaskApprovalValidator { @Resource private UmsApplicationMapper mapper; @Override public void validate(Long userId, Task task, ProcessInstance instance) { if (!"ums_membership_approve".equals(instance.getProcessDefinitionKey())) return; // 发起人节点由 BPM 在流程启动时自动提交;缴费由后续审批人确认。 if ("StartUserNode".equals(task.getTaskDefinitionKey())) return; Long id; try { id = Long.valueOf(instance.getBusinessKey()); } catch (Exception e) { throw exception(APPLICATION_NOT_EXISTS); } UmsApplicationDO application = mapper.selectById(id); if (application == null) throw exception(APPLICATION_NOT_EXISTS); if (application.getFeePaid() == null) throw exception(APPLICATION_FEE_CONFIRM_REQUIRED); } }