이전 블로그 게시물에서 사용자 모듈의 모든 기능을 완료 했으므로 다음 몇 개의 블로그 게시물에서는 분류 관리 기능 모듈을 완료합니다.
먼저 백엔드에서 분류 관리의 기능적 지점을 살펴 보겠습니다.
백엔드 카테고리 관리는 실제로 제품 관리이며, 주로 카테고리 추가, 카테고리 이름 업데이트, 같은 수준의 카테고리 노드 얻기, 카테고리 ID 및 하위 노드 범주를 얻는 것으로 나뉩니다.
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.CreateBysuceEssSmessage ( "성공적으로 범주 추가"); } return serverResponse.createByErrorMessage ( "카테고리 추가 실패"); }카테고리를 추가하는 것은 비교적 간단합니다. 이전 등록 논리와 약간 유사합니다. 먼저, 프론트 엔드에서 전송 된 카테고리 이름과 부모가 존재하는지 확인하십시오. 존재하지 않으면 매개 변수 오류가 메시지가 표시됩니다. 그렇지 않으면 Javabean 인스턴스를 계속 사용하여 범주를 늘리십시오. 마찬가지로 Javabean에 추가 한 후 결과를 데이터베이스에 삽입하십시오. 반환 된 유효 행의 수가 0보다 크면 범주가 성공적으로 추가되며 범주가 추가됩니다.
컨트롤러 계층을 살펴 보겠습니다
/ ** * 카테고리-add 카테고리 관리 * @param categoryname * @param parentid * @param session * @return */ @requestmapping (value = "add_category.do") @ResponseBody public serverResponse addCategory (string categoryName, @RequestParam (value = "parentid", defaultValue = ") (사용자) 세션 .getAttribute (const.current_user); if (user == null) {return serverResponse.createByErrorCodEmessage (responseCode.need_Login.getCode (), "사용자가 로그인되지 않으면 로그인하십시오"); } // if (iuserService.checkadmin (user) .issuccess ()) {return reticegoryservice.addcategory (categoryName, parentid); } else {return serverResponse.createByErrorMessage ( "권한 조작 없음, 관리자에게 로그인하십시오"); }}우선, 인터페이스 이름이 하나만 있고 인터페이스 요청 메소드를 지정하지 않는 RequestMapping의 값 값의 다른 장소가 있습니다. 카테고리 관리 모듈은 웹 사이트 관리자의 배경 관리이며 배경 모듈에 속하기 때문에 인터페이스 요청 방법을 지정하지 않습니다. 배경 모듈의 경우 회사의 내부 직원이 사용하고 외부 세계에 공개 할 필요가 없으므로 기본 GET 메소드를 사용할 수 있습니다.
배경 기능 관리의 일반적인 논리는 먼저 사용자가 로그인 상태에 있는지 확인하는 것입니다. 사용자가 로그인 상태에있는 경우 현재 로그인이 웹 사이트 관리자인지 확인하십시오. 관리자가 아닌 경우 관련 관리 작업을 수행 할 권리가 없습니다. 관리자 인 경우 배경 관리를 수행 할 수 있습니다. 백그라운드 기능 관리의 논리에서 일반적으로 서비스 계층에서 메소드 처리 결과를 직접 반환하는 것으로 충분합니다.
위의 방법에서는 사용자의 로그인 상태를 결정해야하므로 사용자 서비스를 도입 한 다음 해당 메소드를 직접 호출해야합니다.
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.UpDateByPrimaryKeySelective (범주); if (rowCount> 0) {return serverResponse.CreateBysuceEssSmessage ( "성공적으로 범주 이름 업데이트"); } return serverResponse.createByErrorMessage ( "업데이트 카테고리 이름 실패"); }이전 처리 로직과 정확히 동일하며 여기서는 자세히 설명하지 않습니다.
컨트롤러 계층을 살펴 보겠습니다
/ ** * 카테고리 업데이트 카테고리 이름 * @param categoryName * @param categoryId * @param session * @return */ @RequestMapping (value = "update_category_name") @ResponseBody public serverResponse UpdateCategoryName (String CategoryName, Integer CategyId, httpsession Session) {user user = (사용자) 세션 .getAttribute (const.current_user); if (user == null) {return serverResponse.createByErrorCodEmessage (responseCode.need_Login.getCode (), "사용자가 로그인되지 않으면 로그인하십시오"); } if (iuserservice.checkadmin (user) .issuccess ()) {return iCeticeGoryService.upDateCategoryName (categoryName, categoryId); } else {return serverResponse.createByErrorMessage ( "권한 조작 없음, 관리자에게 로그인하십시오"); }}이전 처리 로직과 정확히 동일하며 여기서는 자세히 설명하지 않습니다.
3. 분류 관리 모듈 수평 범주 노드를 얻는 기능의 구현 (백엔드 제품 검색)
서비스 계층
// 상기 수준 쿼리 카테고리 노드 공개 서버 응답 <목록 <범주 >> getChildrenParalLecategory (Integer categoryId) {list <category> categoryList = categoryMapper.SelectCateCateCateChildRenbyParentId (categoryId); if (collectionUtils.isempty (categoryList)) {logger.info ( "현재 분류의 하위 범주는 찾을 수 없었습니다"); } return serverResponse.createbysuccess (categoryList); }일련의 제품 정보를 처리 할 때는 종종 수집 방법을 사용합니다. 컬렉션 유형에 따라 응용 프로그램이 다릅니다. 여기서는 목록 컬렉션을 사용하고 있습니다. 첫째, 그 목록 컬렉션을 고려할 때 트래버스 작업 및 관리에 편리합니다. 제품을 관리하기 때문에 목록 컬렉션의 일반적인 유형은 범주로 지정되며 제품 ID 쿼리는 SelectCategoryChareChildRenbyParentID의 CategoryMapper 메소드를 통해 수행됩니다. 논리적 판단에서, 컬렉션의 반환 결과가 비어 있는지 확인하기 위해 Java로 캡슐화 된 CollectionUtils 도구 클래스를 사용하십시오. 비어 있으면 로그 라인을 인쇄하면 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 getChildRenparalLeCategory (@RequestParam (value = "CategoryD", defaultValue = "0") tertefortory, hteUstory session, (사용자) 세션 .getAttribute (const.current_user); if (user == null) {return serverResponse.createByErrorCodEmessage (responseCode.need_Login.getCode (), "사용자가 로그인되지 않으면 로그인하십시오"); } if (iuserservice.checkadmin (user) .issuccess ()) {return iceategoryservice.getchildrenparallecategory (categoryId); } else {return serverResponse.createByErrorMessage ( "권한 조작 없음, 관리자에게 로그인하십시오"); }}실질적인 이유로 상품의 수량이 0 인 경우 제품 범주를 관리 할 필요가 없으므로 RequestParam이 주석을 달린 DefaultValue = "0"은 매개 변수의 기본값을 지정하는 데 사용됩니다. 논리의 나머지 부분은 이전과 정확히 동일합니다.
4. 분류 관리 모듈 Retrieve 카테고리 ID 및 하위 노드 함수 구현
서비스 계층을보십시오
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); } // 자식 노드 개인 세트를 계산하기위한 재귀 알고리즘 <Cat if (category! = null) {categoryset.add (category); } // 자식 노드 목록 찾기 <범주> CategoryList = CategoryMapper.SelectCategoryChildRenbyParentID (CategoryId); for (category categoryItem : categoryList) {findChildCategory (CategoryItem.getId (), CategorySet); } 반환 카테고리 세트; }주요 방법은 selectCategoryAndChildrenByID이며 보조 방법은 찾기 실화 범주이며, 이는 자식 노드를 재귀 적으로 계산합니다. 보조 방법에서 제품 ID 정보는 CategoryID를 통해 쿼리되고 세트 컬렉션에 추가 된 다음 제품 하위 노드가 Foreach 루프를 통해 통과하고 카테고리 세트가 반환됩니다. 주요 방법에서는 보조 방법이 호출되고 제품 ID 및 하위 노드가 발견 된 다음 제품 ID 및 하위 노드가 목록 컬렉션에 배치 된 다음 원하는 결과가 Foreach 루프를 통해 통과하고 마지막으로 CategoryIdlist가 직접 반환됩니다.
컨트롤러 계층
/ ** * 카테고리 -GET ID 및 하위 노드 카테고리 관리 * @param categoryId * @param session * @return */ @requestmapping (value = "get_deep_category.do") @ResponseBody public serverResponse getCategoryAndDeepChildRencate (@RequestParam ( @value = "CategoryId") 세션) {user user = (user) session.getAttribute (const.current_user); if (user == null) {return serverResponse.createByErrorCodEmessage (responseCode.need_Login.getCode (), "사용자가 로그인되지 않으면 로그인하십시오"); } if (iuserService.checkadmin (user) .issuccess ()) {return reticegoryservice.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을 더 지원하기를 바랍니다.