Найден дефект Исправлено

9

Нашелся дефект по отзывам, когда установлена модерация отзывов

дефекта даже два

1. добавить отзыв первый у товара, в классе метода shopProductReviews.model.php#add вызывается recalcProductRating, что у нас сразу добавляет запись у товара рейтинг и на фронте выводится сразу, хотя отзыв еще на модерации, такого быть не должно

2. из-за первого дефекта появляется второй, заходим в админку и нажимает сразу опубликовать, то этот метод  hopProductReviews.model.php#recalcProductRating вызывается снова в методе уже shopProductReviews.model.php#changeStatus и снова увеличивает счетчик, в итоге у нас два рейтинга за один отзыв, даже если вы потом удалите, то рейтинг один остается, от сюда ломается все, подсчет отзывов и сам рейтинг

ошибка именно когда, добавили отзыв и сразу же его опубликовали - срабатывает двойной счетчик 

на сайте пришлось заново высчитывать поле в таблице shop_product - rating_count и так rating


если модерации нет, то все ок работать будет, прошу решить

15 комментариев

  • +1
    Михаил Ушенин Михаил Ушенин Webasyst 22 ноября 2021 18:48 #

    добавить отзыв первый у товара, в классе метода shopProductReviews.model.php#add вызывается recalcProductRating, что у нас сразу добавляет запись у товара рейтинг и на фронте выводится сразу, хотя отзыв еще на модерации, такого быть не должно

    Вы пишете здесь об оценке, а не об отзыве. Оценка не проверяется модератором и сразу видна на витрине, проверяется только отзыв.

    • +1
      Koin Koin 22 ноября 2021 19:54 #

      ну как же, рейтинг формируется от отзыва, почему он сразу становится виден, если отзыв не опубликован

    • +1
      Михаил Ушенин Михаил Ушенин Webasyst 22 ноября 2021 18:50 #

      заходим в админку и нажимает сразу опубликовать, то этот метод hopProductReviews.model.php#recalcProductRating вызывается снова в методе уже shopProductReviews.model.php#changeStatus и снова увеличивает счетчик, в итоге у нас два рейтинга за один отзыв, даже если вы потом удалите, то рейтинг один остается, от сюда ломается все, подсчет отзывов и сам рейтинг ошибка именно когда, добавили отзыв и сразу же его опубликовали - срабатывает двойной счетчик

      Передал замечание разработчикам, спасибо.

      Расскажите, какие конкретно проблемы для вас создаёт это двойное срабатывание счётчика? Как оно проявляется в работе магазина?

      • +1
        Koin Koin 22 ноября 2021 19:58 #

        проблемы такие в магазине

        на товар был написан отзыв с оценкой 3 и потом опубликован, но решили отзыв удалить, он удалился, но рейтинг остался старый, который не верен, так потом еще отзыв добавили, снова удалил и еще поменялся.

        в итоге рейтинг у товара сформирован не верно, отзыв один с рейтингом 5, а по факту средний, который не имеет не какого отношения

        и вот если вообще нет отзывов и пишет рейтинг 1, как так, если отзывов нет и не кто не писал не когда, тк решили отзывы удалить

        пример товара - https://steemy.ru/insales/chek...

        • +1
          Михаил Ушенин Михаил Ушенин Webasyst 23 ноября 2021 09:37 #

          Оценки товаров и отзывы о товарах работают раздельно, хотя и добавляются пользователем в одной форме на странице магазина. При удалении отзыва оценка не удаляется.

          • +1
            Koin Koin 23 ноября 2021 09:54 #

            почему же не удаляется, оценка так же удаляется при удалении отзыва, говорю же только при модерации, срабатывает двойной счетчик накрутки, вот и ошибка

            без модерации отзыва, рейтинг свободно удаляется вместе с отзывом и работает как одна единица

          • +2
            Евгений Леман Евгений Леман 25 ноября 2021 18:34 #

            Это противоречит логике. Как тогда удалить оценку? Как удалить её отдельно от отзыва, раз уж они раздельны? Как удалить отзыв отдельно от оценки?

            И если они разделены, то почему идут все вперемешку? Ведь логичнее сначала выводить отзывы, а потом лишь оценки. Первые могут содержать информацию.

          • +1
            Михаил Ушенин Михаил Ушенин Webasyst 11 апреля 2022 18:17 #

            Мы выпустили обновление Shop-Script, в котором исправили сохранение рейтинга товаров при утверждении отзыва в ходе модерации. Обновление можно установить в «Инсталлере».

            Проверьте, пожалуйста. Сообщите нам, если проблема сохранилась.

            Спасибо вам за то, что помогаете улучшать программные продукты 

          • +1
            Koin Koin 12 апреля 2022 21:57 #

            Дорогие разработчики, вы тестируйте что делаете или у вас есть команда тестировщиков?


            1. во первых вы не сделали первый пункт

            2. поправив это наплодили новый дефект, удалив отзыв и потом если его публиковать, рейтинг не меняется

            ввели в коде бы еще один статус - restored и сделали бы легко проверки

            так не принимается результат


            знаете как сложно клиентов убеждать, почему же у них отзыв несколько положительных, а рейтинги другие и почему так все это работает криво(

            • +1
              Koin Koin 12 апреля 2022 22:18 #

              решается еще проще, причем одной проверкой, оба дефекта закрываются

              это удаляем в файле shopProductReviews.model.php

              } elseif ($review['status'] === self::STATUS_MODERATION && $status === self::STATUS_PUBLISHED) {
                              // ничего не делаем, оставляем статус прежним self::STATUS_PUBLISHED
                              // во время одобрения на модерации не нужно пересчитывать рейтинг товара,
                              // потому что оценка уже была учтена во время добавления отзыва

              а это добавляем тут shopProductReviews.model.php#603 строка

              добавляем проверку просто при добавлении отзыва что у нас не включена модерация и все работает как часики


              !wa()->getSetting('moderation_reviews', 0)
              if (empty($review['review_id']) && !empty($review['rate']) && !wa()->getSetting('moderation_reviews', 0)) {
                          $this->recalcProductRating($review['product_id'], $review['rate']);
                      }

              смысла создавать пул реквеста думаю нет, тк там кажись не смотрите их вообще

            • +1
              Koin Koin 12 апреля 2022 22:20 #

              но еще забыл, должны были сделать перерасчет старых, а то не которые уходят в минус и все тут, теряется вообще весь рейтинг(

            • +2
              Anton F Anton F 12 апреля 2022 22:23 #

              Тестирование, профилирование и эти ваши богомерзкие IDE - это для слабаков и прочих хипстеров. Если Вы не видели годами игнорируемые PR с исправлением ошибок, то загляните на github.

              • +1
                Koin Koin 12 апреля 2022 22:28 #

                да я видел, там с 18 года еще висят и создавать думаю бессмысленно пр, жаль что такое отношение у них(

              • +1
                Михаил Ушенин Михаил Ушенин Webasyst 13 апреля 2022 09:50 #
                удалив отзыв и потом если его публиковать, рейтинг не меняется

                Передали замечание разработчикам, спасибо!

                Добавить комментарий

                Чтобы добавить комментарий, зарегистрируйтесь или войдите