В предыдущих сообщениях в блоге мы завершили все функции пользовательского модуля, поэтому в следующих нескольких сообщениях в блоге мы завершим модуль функции управления классификацией.
Давайте сначала рассмотрим функциональные точки управления классификацией в бэкэнд
Управление категорией бэкэнд на самом деле является управлением продуктами, которое в основном делится на добавление категорий, обновление имен категорий, получение узлов категорий на одном уровне и получение идентификаторов категорий и категорий суб-узлов.
1. Классификационная модуль-модуль-внедрение функций добавленных категорий
Давайте сначала посмотрим на сервисный слой
// Добавить категорию public serverresponse AddCategory (String CategoryName, Integer parentId) {if (parentId == null || stringUtils.isblank (CategoryName)) {return serverresponse.createByerrormessage ("ошибка параметра"); } Категория категория = новая категория (); Category.SetName (CategoryName); Category.SetParentId (parentId); Category.setStatus (True); int rowcount = CategoryMapper.insert (категория); if (rowcount> 0) {return serverresponse.createbysuceessmessage ("успешно добавить категорию"); } return serverresponse.createByerrormessage ("add category не удастся"); }Относительно просто добавить категории. Это немного похоже на предыдущую логику регистрации. Во -первых, проверьте, существуют ли категория и ParentID, передаваемые с передней части. Если его не существует, ошибка параметра вызвана. В противном случае, продолжайте использовать экземпляры Javabean для повышения категории. Точно так же, добавив его с Javabean, вставьте результат в базу данных. Если количество возвращаемых эффективных строк превышает 0, категория успешно добавлена, в противном случае категория добавляется.
Давайте посмотрим на слой контроллера
/ ** * Категория управления категорией-@param CategoryName * @param parentid * @param session * @return */ @requestmapping (value = "add_category.do") @ResponseBody public serverrespons (Пользователь) session.getattribute (const.current_user); if (user == null) {return serverresponse.createbyerrorcodemessage (responsecode.need_login.getCode (), «Пользователь не вошел в систему, пожалуйста, войдите в систему»); } // Убедитесь, является ли это администратором if (iuserservice.checkadmin (user) .issuccess ()) {return icategoryservice.addcategory (CategoryName, parentId); } else {return serverresponse.createbyerrormessage («Нет операции разрешения, пожалуйста, войдите в администратор»); }}Прежде всего, существует другое место со значением значения запроса, которое имеет только одно имя интерфейса, но не указывает метод запроса интерфейса, поскольку модуль управления категориями является управлением фоном администратором веб -сайта и принадлежит фоновому модулю. Для фоновых модулей они используются внутренними сотрудниками компании и не должны быть раскрыты во внешнем мире, поэтому вы можете просто использовать метод получения по умолчанию для запроса.
Общая логика управления фоновыми функциями состоит в том, чтобы сначала проверить, находится ли пользователь в состоянии входа. Если пользователь находится в состоянии входа в систему, то убедитесь, что в настоящее время входит в систему администратор веб -сайта. Если это не администратор, вы не имеете права выполнять соответствующие операции управления. Если это администратор, вы можете выполнить управление фоном. В логике управления фоновыми функциями, как правило, достаточно, чтобы напрямую вернуть результаты обработки метода на уровне обслуживания.
В приведенном выше методе необходимо определить статус входа пользователя, поэтому необходимо ввести пользовательские услуги, а затем напрямую вызовать соответствующий метод.
2. Функция имени категории обновления модуля управления классификацией.
Давайте сначала посмотрим на сервисный слой
// Обновление Категория Имя public ServerResponse updateCategoryName (String CategoryName, Integer CategoryID) {if (CategoryId == null || stringUtils.isblank (CategoryName)) {return ServerResponse.createByerRormessage («Ошибка параметра обновления»); } Категория категория = новая категория (); Category.SetId (CategoryID); Category.SetName (CategoryName); int rowcount = CategoryMapper.UpdateByPrimaryKeySeelective (категория); if (rowcount> 0) {return serverresponse.createbysuceessmessage ("Имя категории обновления успешно"); } return serverresponse.createByerrormessage ("Имя категории обновления не удалось"); }Это точно так же, как и предыдущая логика обработки, и я не буду вдаваться в подробности здесь.
Давайте посмотрим на слой контроллера
/ ** * Управление категорией именем категории * @param CategoryName * @param CategoryId * @param session * @return */ @requestmapping (value = "update_category_name") @responsebody public serverresponse updateCategoryName (String CategoryName, Integer CategoryId, Httpsession Session) (Пользователь) session.getattribute (const.current_user); if (user == null) {return serverresponse.createbyerrorcodemessage (responsecode.need_login.getCode (), «Пользователь не вошел в систему, пожалуйста, войдите в систему»); } if (iuserservice.checkadmin (user) .issuccess ()) {return icateGoryService.updateCategoryName (CategoryName, CategoryId); } else {return serverresponse.createbyerrormessage («Нет операции разрешения, пожалуйста, войдите в администратор»); }}Это точно так же, как и предыдущая логика обработки, и я не буду вдаваться в подробности здесь.
3. Классификация управления модулем-внедрение функции получения узла горизонтальной категории (Поиск продукта бэкэнд)
Сервисный слой
// Категория запросов на уровне родителей узлы public serverresponse <list <Category >> getChildrenParallecategory (Integer CategoryId) {List <Category> CategoryList = CategoryMapper.selectCategoryChildRenbyParentId (CategoryId); if (collectiontils.isempty (CategoryList)) {logger.info («Подкатегория текущей классификации не была найдена»); } return serverresponse.createBySuccess (CategoryList); }При обработке набора информации о продукте он часто использует метод сбора. Его приложение отличается в зависимости от типа сбора. Здесь я использую коллекции списков. Во -первых, учитывая, что коллекции списков удобны для операций и управления проходом. Поскольку он должен управлять продуктами, общий тип сбора списков указан в качестве категории, а запрос идентификатора продукта выполняется с помощью метода SelectCategoryChildrenByparentId в CategoryMapper. В логическом суждении используйте класс инструментов CollectionUtils, инкапсулированный в Java, чтобы определить, является ли результат возврата коллекции пустым. Если он пуст, распечатайте строку журналов, в противном случае успешное выполнение результата CategoryList может быть возвращено. Регистратор здесь - это инструмент для печати журнала, который вы инкапсулируете. Позвольте мне кратко упомянуть его использование.
private org.slf4j.Logger logger = LoggerFactory.getLogger(CategoryServiceImpl.class);
Обратите внимание, что этот журнал использует пакет SLF4J, не экспортируйте неправильный пакет, а затем LoggerFactory.getLogger (класс), вам необходимо передать параметр, который является классом, который в настоящее время должен печатать журнал, например, CategoryServiceImpl.class здесь. Вы можете увидеть результаты печати журнала в консоли.
Контроллер слой
/ ** * Управление категориальными узлами с той же категорией * @param categoryid * @param session * @return */ @requestmapping (value = "get_category.do") @ResponseBody public serverresponse getChildrenParallecatory (@Requestparam (value = "cateeRyid", defcustvalue = "0") integeryId, htaformesse wefers = htegeres (Пользователь) session.getattribute (const.current_user); if (user == null) {return serverresponse.createbyerrorcodemessage (responsecode.need_login.getCode (), «Пользователь не вошел в систему, пожалуйста, войдите в систему»); } if (iuserservice.checkadmin (user) .issuccess ()) {return icateGoryService.getChildrenParalleCategory (CategoryId); } else {return serverresponse.createbyerrormessage («Нет операции разрешения, пожалуйста, войдите в администратор»); }}По практическим причинам, когда количество товаров составляет 0, нет необходимости управлять категорией продукта, поэтому DefaultValue = "0", аннотированная с помощью запроса PPARAM, используется для указания значения по умолчанию параметра. Остальная часть логики точно такая же, как и раньше.
4. Модуль управления классификацией-перестроить реализацию идентификатора категории и функций суб-узел
Посмотрите на сервисный слой
public serverresponse <list <Integer >> selectCategoryAndChildrenbyId (Integer CategoryId) {set <Category> CategorySet = sets.newhashset (); FindChildCategory (CategoryId, CategorySet); List <Integer> CategoryIdlist = lists.newarrayList (); if (CategoryId! = null) {for (Category CategoryItem: CategorySet) {CategoryIdList.Add (CategoryItem.getId ()); }} return serverresponse.createBySuccess (CategoryIdList); } // Рекурсивный алгоритм для расчета детского узла частного набора <Категория> FindChildCategory (Integer CategoryId, Set <Category> CategorySet) {Category Category = CategoryMapper.selectByPrimaryKey (CategoryID); if (категория! = null) {categoryset.add (категория); } // Найти список узел детских узлов <Категория> CategoryList = CategoryMapper.selectCategoryChildrenByparentId (CategoryId); для (категория категория: CategoryList) {findChildCategory (CategoryItem.getId (), CategorySet); } return CategorySet; }Основным методом является SelectCategoryAndChildrenbyID, а вспомогательным методом является FindChildCategory, которая рекурсивно вычисляет дочерние узлы. В вспомогательном методе информация идентификатора продукта запрашивается через категорию и добавляется в сбору сборов, а затем узлы дочерних продуктов проходят через петлю Foreach, и, наконец, возвращается категория. В основном методе вызывается вспомогательный метод, обнаруживаются идентификатор продукта и детские узлы, а затем идентификатор продукта и детские узлы помещаются в сбору списков, а затем результат, который мы хотим, проходит через петлю Foreach, и, наконец, CategoryIdlist возвращается.
Контроллер слой
/ ** * Управление категорией-идентификатором и категорией детских узлов * @param CategoryId * @param session * @return */ @requestmapping (value = "get_deep_category.do") @ResponseBody public serverresponse getCategoryAndDeepChildRencetagor Session) {user user = (user) session.getattribute (const.current_user); if (user == null) {return serverresponse.createbyerrorcodemessage (responsecode.need_login.getCode (), «Пользователь не вошел в систему, пожалуйста, войдите в систему»); } if (iuserservice.checkadmin (user) .issuccess ()) {return icateGoryService.selectCategoryAndChildrenbyId (CategoryId); } else {return serverresponse.createbyerrormessage («Нет операции разрешения, пожалуйста, войдите в администратор»); }}Это точно так же, как предыдущая логическая обработка получения узлов одинакового уровня в категории, поэтому я не буду вдаваться в подробности здесь.
5. Дополнительный пользовательский модуль
В модуле управления категорией фоновой категории используется метод проверки того, используется ли в настоящее время регистрационный пользователь администратор. Это написано в пользовательском модуле. Я забыл написать это раньше, поэтому я сделаю добавку здесь.
Сервисный уровень пользовательского модуля
// пользовательский фон - подтвердите, является ли это администратором public serverresponse checkadmin (пользователь пользователя) {if (user! = Null && user.getRole (). Intvalue () == const.role.role_admin) {return serverresponse.createbysuccess (); } return serverresponse.createByerror (); }Поскольку это связано с администраторами, ему нужно только выполнять логическую обработку на уровне обслуживания и не нужно объявлять в контроллере. Этот метод проходит в пользовательском объекте и делает суждения о разрешении через интерфейс инкапсулированной роли. Если возвращаемое значение является администратором, оно считается администратором и возвращает его напрямую, в противном случае оно потерпит неудачу.
Написав это, модуль управления категориями в фоновом режиме завершен. Поскольку модуль имеет меньше функциональных интерфейсов, потребовалось много времени, чтобы написать их все в сообщении в блоге, что также облегчает для всех изучать модуль управления категориями бэкэнд за один раз.
В следующем сообщении в блоге мы будем продолжать продвигать прогресс проекта и принесут вам разработку модулей продвижения продуктов. Мы надеемся, что все будут идти в ногу с прогрессом.
Если вы столкнетесь с какими -либо проблемами в своем предыдущем сообщении в блоге, пожалуйста, оставьте сообщение и отзывы, и я постараюсь решить проблему для вас.
Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.