Программное обеспечение Канбан, я думаю, большинство людей использовали подобное программное обеспечение, в основном предполагает перетаскивание карточек. Карты можно перетаскивать влево и вправо, вверх и вниз. Как можно реализовать серверную часть, чтобы не приходилось каждый раз переупорядочивать числа для повышения производительности? В корпоративном программном обеспечении в приложении также имеется множество деревьев и списков, которые поддерживают сортировку перетаскиванием. Такая конструкция может повысить эффективность по сравнению с традиционным прямым перемещением вверх и вниз, поэтому менеджеры по продуктам часто разумно рассматривают возможность использования сортировки перетаскиванием для улучшения взаимодействия с пользователем.
Сегодня подумаем, как реализовать бэкенд? Я считаю, что во внешнем интерфейсе есть готовые компоненты, которые можно использовать напрямую, поэтому я не буду искать их здесь~
Похоже на рекламный щит, как показано ниже:
Или такое перетаскивание списка:
В соответствии с фактическими потребностями определите как минимум 3 поля порядкового номера (идентификатор: первичный ключ, сортировка: номер сортировки, имя: отображаемое имя). Остальные поля разрабатываются в соответствии с потребностями вашего бизнеса. Для различных последующих планов будут внесены изменения. . Пожалуйста, ознакомьтесь с изменением конкретной базы данных.
Этот метод, вероятно, подойдет большинству людей. Он основан на идентификаторе перетаскивания и идентификаторе цели, переданных из внешнего интерфейса. Для удобства описания я покажу его в виде списка. перетаскивание вперед или движение вперед. После перетаскивания нам нужно только найти серийный номер после изменения после завершения перетаскивания, а затем изменить порядок всех полей сортировки.
Этот метод оптимизирован на основе метода 1. В основном он предназначен для решения проблемы частого перетаскивания, из-за которого номер сортировки каждый раз обновляется. Для высокочастотных интерфейсов легко оказать сильное давление. базы данных, поэтому используется метод интервалов. Он предназначен для решения проблемы перестановки базы данных в определенной программе.
Сначала определите частоту перетаскивания бизнеса. Обычно достаточно интервала 1024–65535. В качестве примера я буду использовать интервал 1024. При добавлении новых данных серийный номер будет рассчитываться автоматически. Например, в настоящее время в базе данных имеется 10 данных. , затем вновь добавленная сортировка, рассчитанная в момент времени = (10+1) × 1024, а затем сохраненная как новая сортировка по времени.
При перетаскивании возможны три ситуации: 1. При настройке элемента на середину двух элементов просто обновите перетаскиваемые данные sort = sum of the two data ÷ 2 в базе данных. 2. При настройке элемента над первым элементом вы можете напрямую отсортировать перетаскиваемые данные = отсортировать первые данные ÷ 2, а затем сохранить их в базе данных. 3. При настройке элемента ниже последнего элемента напрямую отсортируйте перетаскиваемые данные = последняя сортировка данных + 1024 и сохраните их в базе данных.
Этот метод может в определенной степени облегчить проблему частого переупорядочения, но есть и некоторые крайние проблемы, которые требуют проверки того, достигается ли критическое значение каждый раз, поскольку каждый раз, когда берется медианное значение, значение интервала будет делиться поровну каждый раз. время, и оно будет продолжать тянуться. Движение приведет к тому, что это значение станет ближе и равным, поэтому необходимо также учитывать следующие ситуации.
1)Судить по самому маленькомуsortи максимумsortНе здесь 2 приезжать Максимальное значение типа, указанного в сортировке (Integer.MAX_VALUE или Long.MAX_VALUE) минус значение интервала. между временами,По данным все тяжело сортировать по порядку,В следующий раз, даже если перетащить первый, двух равных сортировок не будет.,Это приводит к сбою сортировки;
2) Определить, когда нужно отрегулировать элемент, располагаясь между двумя элементами.,Наконец, нам нужно обновить, является ли переноссорт плюс или минус 1 значением двух элементов.,еслиравныйПрямо сейчасданныепереставить;
Этот метод можно использовать только в том случае, если уникальный первичный ключ базы данных относительно короткий, объем данных невелик и разделен на основную и подтаблицы. Окончательно отсортированные записи сохраняются непосредственно в полях основной. таблица с запятыми или | символами и каждым перетаскиванием. При запросе вы можете напрямую передать строку из внешнего интерфейса и сохранить ее. Сортировка выполняется после каждого запроса. нет необходимости переупорядочивать. Интерфейс в основном обновляет поле сортировки.
Этот метод требует базы data добавляет 2 поля, pre_sort, next_sort, записывает значения двух узлов до и после, а затем при каждом изменении нужно только изменить значения трех элементов, участвующих в прибытии, операции базы Максимальное количество операций с данными — 6 раз, минимальное — 4 раза. Однако это решение ограничено невозможностью управления базой. данныхвыполнить нумерацию страниц исортировать。
Для разных методов и решений Дизайн Интерфейсы не согласованы. Нам нужно только разрешить интерфейсу передавать необходимые параметры. Если вы не доверяете значению, переданному пользователем интерфейса, вам лучше начать с базы самостоятельно. данные для проверки и запроса.
Здесь я дам вам традиционное решение №2: Дизайн. интерфейса,Обязательны три поля: dragId: идентификатор перетаскиваемого элемента, targetId, переносприезжать идентификатор целевой позиции, moveType: тип перемещения (ВВЕРХ/ВНИЗ).,Это позволяет гибко перемещать целевую позицию прибытия вверх или вниз.
Конкретный план выбора основан на нашем количестве данных.,Например, приоритет быстрого перетаскивания способов оплаты Alipay и Taobao.,Способы оплаты ограничены, а операции перетаскивания выполняются не очень часто.,Не имеет значения, если мы просто обновляем его каждый раз,А вот если это древовидный иерархический список, который нужно отобразить пользователю спереди и т.д.,Мы стараемся приезжать как можно меньше, чтобы очистить базу данных.,Тогда нет необходимости в дополнительной обработке в памяти при запросе,Поддержка схемы пейджинга,Я использую его здесь для личного малого и среднего бизнеса.Интервальный медианный методОчень подходит,Если вы используете интервал 65535, вам не придется его долго обновлять., если вы хотите уменьшить количество обновлений при большом количестве пользователей, база данныеданные, то вы можете еще больше сократить их, перезагрузив все запланированные на ночь задачи. В Интернете есть множество решений. Если вам нужно узнать об этом больше, вы можете прочитать «Справочник» в конце статьи. ссылка, если у вас есть лучшее решение, оставьте сообщение в области комментариев, чтобы обсудить его вместе.
тащить Проектирование базы Краткое описание решения для обработки данных — Сообщество разработчиков Tencent Cloud — Tencent Cloud Сортировка карточек задач Teambition, как хранятся данные? - Чжиху Проектирование и реализация серверной части сортировки методом перетаскивания - Простая книга Рабочая практика: серверная реализация сортировки перетаскиванием - наггетсы Разработайте общую схему сортировки и вычислите нечеткие промежуточные числа. - наггетсы Использование Реагирования В DnD реализована сортировка списков методом перетаскивания-Tencent Cloud Developer Community-Tencent Cloud