@Override
    @Transactional(rollbackFor = Throwable.class)
    public Boolean delete(String groupId, String operator) {
        LOGGER.info("begin to delete inlong group for groupId={} by user={}", groupId, operator);
        InlongGroupEntity entity = groupMapper.selectByGroupId(groupId);
        Preconditions.expectNotNull(entity, ErrorCodeEnum.GROUP_NOT_FOUND.getMessage());

        // before deleting an inlong group, delete all inlong streams, sources, sinks, and other info under it
        if (GroupStatus.allowedDeleteSubInfos(GroupStatus.forCode(entity.getStatus()))) {
            streamService.logicDeleteAll(groupId, operator);
        }

        entity.setIsDeleted(entity.getId());
        entity.setStatus(GroupStatus.CONFIG_DELETED.getCode());
        entity.setModifier(operator);
        int rowCount = groupMapper.updateByIdentifierSelective(entity);
        if (rowCount != InlongConstants.AFFECTED_ONE_ROW) {
            LOGGER.error("inlong group has already updated for groupId={} curVersion={}", groupId, entity.getVersion());
            throw new BusinessException(ErrorCodeEnum.CONFIG_EXPIRED);
        }

        // logically delete the associated extension info
        groupExtMapper.logicDeleteAllByGroupId(groupId);

        // remove schedule
        if (DATASYNC_OFFLINE_MODE.equals(entity.getInlongGroupMode())) {
            try {
                scheduleOperator.deleteByGroupIdOpt(entity.getInlongGroupId(), operator);
            } catch (Exception e) {
                LOGGER.warn("failed to delete schedule info for groupId={}, error msg: {}", groupId, e.getMessage());
            }
        }

        LOGGER.info("success to delete group and group ext property for groupId={} by user={}", groupId, operator);
        return true;
    }
Add constraints to the start and end time of the offline synchronization group.
1. startTime must >= current time
2. endTime must >= startTime
inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/group/InlongGroupServiceImpl.java