In den vorherigen Blog -Posts haben wir alle Funktionen des Benutzermoduls ausgefüllt. In den nächsten Blog -Posts werden wir das Klassifizierungsverwaltungsfunktionsmodul abschließen.
Schauen wir uns zunächst die Funktionspunkte des Klassifizierungsmanagements im Backend an
Das Backend-Kategoriemanagement ist tatsächlich ein Management von Produkten, das hauptsächlich in das Hinzufügen von Kategorien, die Aktualisierung von Kategorienamen, das Erhalten von Kategorieknoten auf derselben Ebene und das Erhalten von Kategorie-IDs und Unterfnotenkategorien unterteilt ist.
1..
Schauen wir uns zuerst die Serviceschicht an
// Kategorie public ServerResponse hinzufügen addCategory (String categoryName, Integer parentId) {if (parentID == null || Stringutils.isblank (categoryName)) {return ServerResponse.CreatebyerRorMessage ("Parameter -Fehler"); } Category category = new category (); category.setName (categoryName); category.setParentid (parentId); category.setStatus (true); int rowCount = categoryMapper.insert (Kategorie); if (rowCount> 0) {return serverResponse.createbysuceessMessage ("Kategorie erfolgreich hinzufügen"); } return ServerResponse.Createbyerrormessage ("Kategorie hinzufügen"); }Es ist relativ einfach, Kategorien hinzuzufügen. Es ist ein bisschen ähnlich wie bei der vorherigen Registrierungslogik. Überprüfen Sie zunächst, ob der vom vordere Ende übertragene KategoryName und ParentID vorhanden sind. Wenn es nicht vorhanden ist, wird der Parameterfehler aufgefordert. Andernfalls verwenden Sie weiterhin javabäische Instanzen, um die Kategorie zu erhöhen. In ähnlicher Weise fügen Sie das Ergebnis nach dem Addieren mit JavaBean das Ergebnis in die Datenbank ein. Wenn die Anzahl der zurückgegebenen effektiven Zeilen größer als 0 ist, wird die Kategorie erfolgreich hinzugefügt, andernfalls wird die Kategorie hinzugefügt.
Schauen wir uns die Controller -Schicht an
/ ** * Verwalten Sie Kategorie-ADD-Kategorie * @param categoryName * @param parentId * @param session * @return */ @RequestMapping (value = "add_category.do") @RespondeBody Public ServerResponse addCategorie (String CategoryName, @Requestar (ValueBody = (Benutzer) Session.getAttribute (const.current_user); if (user == null) {return serverResponse.createbyErrorCodemessage (ResponseCode.Need_login.getCode (), "Der Benutzer ist nicht angemeldet, bitte melden Sie sich an"); } // Überprüfen Sie, ob es sich um einen Administrator if (iuserService.Checkadmin (Benutzer) .ISSUCCESS ()) {return iateGoryService.Addcategory (KategoryName, ParentID); } else {return ServerResponse.CreatebyerRorMessage ("Keine Berechtigungsoperation, bitte melden Sie sich beim Administrator an"); }}Erstens gibt es einen anderen Ort mit dem Wertwert des RequestMapping, der nur einen Schnittstellennamen hat, jedoch nicht die Methode der Schnittstellenanforderung angibt, da das Kategorieverwaltungsmodul vom Website -Administrator ein Hintergrundverwaltung ist und zum Hintergrundmodul gehört. Bei Hintergrundmodulen werden sie von internen Mitarbeitern des Unternehmens verwendet und müssen nicht der Außenwelt offengelegt werden, sodass Sie die Standard -GET -Methode zur Anfrage verwenden können.
Die allgemeine Logik der Hintergrundfunktionsverwaltung besteht darin, zunächst zu überprüfen, ob sich der Benutzer im Anmeldestatus befindet. Wenn sich der Benutzer im Anmeldestatus befindet, stellen Sie sicher, ob es sich um einen Website -Administrator handelt. Wenn es sich nicht um einen Administrator handelt, haben Sie nicht das Recht, relevante Verwaltungsvorgänge auszuführen. Wenn es sich um einen Administrator handelt, können Sie Hintergrundverwaltung durchführen. In der Logik der Hintergrundfunktionsverwaltung reicht es im Allgemeinen aus, die Methodenverarbeitungsergebnisse in der Serviceschicht direkt zurückzugeben.
In der obigen Methode ist es erforderlich, den Anmeldestatus des Benutzers zu bestimmen, sodass Benutzerdienste eingeführt und dann die entsprechende Methode direkt aufrufen müssen.
2..
Schauen wir uns zuerst die Serviceschicht an
// Kategorie Name öffentlicher ServerResponse updateCategoryName (String CategoryName, Integer CategoryId) {if (categoryId == null || stringutils.isblank (Kategorie)) {return ServerResponse.CreatebyerRorMessage ("Aktualisierung von Kategorien -Parameterfehler"); } Category category = new category (); category.setId (categoryId); category.setName (categoryName); int rowCount = categoryMapper.UpdatByprimaryKeysselektiv (Kategorie); if (rowCount> 0) {return serverResponse.createbysuceessMessage ("Kategorienname erfolgreich aktualisieren"); } return serverResponse.createbyerrormessage ("Kategorie Name fehlgeschlagen"); }Es ist genau das gleiche wie die vorherige Verarbeitungslogik, und ich werde hier nicht in Details eingehen.
Schauen wir uns die Controller -Schicht an
/ ** * Verwalten Sie Kategorie-Update-Kategorie Name * @param categoryName * @param categoryId * @param session * @return */ @RequestMapping (value = "update_category_name") @RespondeBody Public ServerResponse UpdateCategoryName (String CategoryName, Intereger CategoryId, Htttpession Session) {{user usus = user = uswname (Benutzer) Session.getAttribute (const.current_user); if (user == null) {return serverResponse.createbyErrorCodemessage (ResponseCode.Need_login.getCode (), "Der Benutzer ist nicht angemeldet, bitte melden Sie sich an"); } if (iuserService.Checkadmin (Benutzer) .ISSUCCESS ()) {return iateGoryService.UpDateCategoryName (categoryName, categoryId); } else {return ServerResponse.CreatebyerRorMessage ("Keine Berechtigungsoperation, bitte melden Sie sich beim Administrator an"); }}Es ist genau das gleiche wie die vorherige Verarbeitungslogik, und ich werde hier nicht in Details eingehen.
3.. Klassifizierungsverwaltungsmodul-Implementierung der Funktion zum Erhalten des horizontalen Kategorieknotens (Backend-Produktsuche)
Serviceschicht
// Eltern-Level-Abfragekategorie Node öffentlich ServerResponse <Liste <Kategorie >> GetChildrenparalleCategory (Integer CategoryID) {list <category> categoryList = categoryMapper.SelectCategoryChildrenByparentid (CategoryId); if (collectionUtils.isempty (CategoryList)) {logger.info ("Die Unterkategorie der aktuellen Klassifizierung wurde nicht gefunden"); } return ServerResponse.CreateBysuCcess (CategoryList); }Bei der Verarbeitung einer Reihe von Produktinformationen wird häufig die Sammelmethode verwendet. Die Anwendung unterscheidet sich je nach Art der Sammlung. Hier verwende ich Listensammlungen. In Anbetracht der Tatsache, dass Listensammlungen für den Durchlauf von Operationen und Verwaltung geeignet sind. Da es sich um Produkte handelt, wird der generische Typ der Listensammlung als Kategorie angegeben, und die Produkt -ID -Abfrage wird über die SelectCategoryChildrenByparentid -Methode von CategoryMapper durchgeführt. Verwenden Sie im logischen Urteil die in Java eingekapselte CollectionUtils -Toolklasse, um festzustellen, ob das Rückgabeergebnis der Sammlung leer ist. Wenn es leer ist, drucken Sie eine Protokollzeile drucken, andernfalls kann die erfolgreiche Ausführung des CategoryList -Ergebnisses zurückgegeben werden. Der Logger hier ist ein Protokolldruckwerkzeug, das Sie einschließen. Lassen Sie mich kurz die Verwendung erwähnen.
private org.slf4j.Logger logger = LoggerFactory.getLogger(CategoryServiceImpl.class);
Beachten Sie, dass dieser Logger das SLF4J -Paket verwendet, das falsche Paket nicht exportiert und dann loggerFactory.getLogger (Klasse) einen Parameter übergeben muss, der die Klasse derzeit drucken muss, wie z. B. CategoryServiceImpl.Class hier. Sie können die Druckergebnisse des Protokolls in der Konsole sehen.
Controller -Schicht
/ ** * Verwalten Sie Kategorie-Gett-Knoten derselben Kategorie * @param categoryId * @param session * @return */ @RequestMapping (value = "get_category.do") @ResponseBody public ServerResponde = (Benutzer) Session.getAttribute (const.current_user); if (user == null) {return serverResponse.createbyErrorCodemessage (ResponseCode.Need_login.getCode (), "Der Benutzer ist nicht angemeldet, bitte melden Sie sich an"); } if (iuserService.Checkadmin (Benutzer) .ISSUCCESS ()) {return iateGoryService.getChildrenparalleCategory (categoryId); } else {return ServerResponse.CreatebyerRorMessage ("Keine Berechtigungsoperation, bitte melden Sie sich beim Administrator an"); }}Aus praktischen Gründen wird die Produktkategorie, wenn die Warenmenge 0 ist, nicht erforderlich, sodass der von RequestParam kommentierte Standard -Value = "0" verwendet wird, um den Standardwert eines Parameters anzugeben. Der Rest der Logik ist genau der gleiche wie zuvor.
4. Klassifizierungsverwaltungsmodul auf die Implementierung von Kategorie-ID- und Unterknotenfunktionen abbauen
Schauen Sie sich die Serviceschicht an
public serverResponse <list <Integer >> selectCategoryAndChildrenById (Integer categoryId) {set <category> categorySet = sets.newHashset (); findchildCategory (categoryId, categorySet); List <Neger> categoryIdList = lists.NewarrayList (); if (categoryId! }} return ServerResponse.CreatebysuCcess (CategoryIdList); } // rekursiver Algorithmus zur Berechnung des untergeordneten Knotens private Set <kategorie> findChildCategory (Integer categoryId, set <Gategorie> categorySet) {category category = categoryMapper.SelectByprimaryKey (categoryId); if (kategorie! = null) {categorySet.add (Kategorie); } // List für untergeordnete Knoten <Kategorie> categoryList = categoryMapper.SelectCategoryChildrenByparentID (CategoryId); für (Kategorie categoryItem: categoryList) {findChildCategory (categoryItem.getId (), categorySet); } return categorySet; }Die Hauptmethode ist SelectCategoryAndChildrenById, und die Hilfsmethode ist die FindChildCategory, die die untergeordneten Knoten durch rekursives berechnet. In der Hilfsmethode werden die Produkt -ID -Informationen über CategoryID gefragt und zur SET -Sammlung hinzugefügt, und dann werden die Produktknoten von Produkten durch die Foreach -Schleife durchquert, und schließlich wird das Kategoriensatz zurückgegeben. In der Hauptmethode wird die Hilfsmethode aufgerufen, die Produkt -ID- und untergeordnete Knoten finden, und dann werden die Produkt -ID- und untergeordneten Knoten in der Listensammlung platziert, und dann wird das gewünschte Ergebnis durch die Foreach -Schleife durchquert, und schließlich wird die CategoryID -Liste direkt zurückgegeben.
Controller -Schicht
/** * Manage category-get id and child node category* @param categoryId * @param session * @return */ @RequestMapping(value = "get_deep_category.do") @ResponseBody public ServerResponse getCategoryAndDeepChildrenCategory(@RequestParam(value = "categoryId", defaultValue = "0") Integer categoryId, HttpSession Session) {user user = (user) session.getAttribute (const.current_user); if (user == null) {return serverResponse.createbyErrorCodemessage (ResponseCode.Need_login.getCode (), "Der Benutzer ist nicht angemeldet, bitte melden Sie sich an"); } if (iuserService.Checkadmin (Benutzer) .ISSUCCESS ()) {return iateGoryService.SelectCategoryAndChildrenById (categoryId); } else {return ServerResponse.CreatebyerRorMessage ("Keine Berechtigungsoperation, bitte melden Sie sich beim Administrator an"); }}Es ist genau das gleiche wie die vorherige logische Verarbeitung, die gleiche Noten in der Kategorie zu erhalten, sodass ich hier nicht in Details eingehen werde.
5. Ergänzendes Benutzermodul
Im Hintergrundkategorie -Verwaltungsmodul wird eine Methode zur Überprüfung verwendet, ob der derzeit angemeldete Benutzer ein Administrator ist. Dies ist im Benutzermodul geschrieben. Ich habe vorher vergessen, es zu schreiben, also werde ich hier eine Ergänzung machen.
Serviceschicht des Benutzermoduls
// Benutzerhintergrund - Überprüfen Sie, ob es sich um einen Administrator öffentliche ServerResponse -CheckAdmin (Benutzerbenutzer) {if (Benutzer! } return ServerResponse.CreatebyError (); }Da es sich um Administratoren handelt, muss es nur logische Verarbeitung in der Serviceschicht durchführen und muss nicht im Controller deklariert werden. Diese Methode geht in ein Benutzerobjekt über und füllt die Berechtigungsurteile über die eingekapselte Rollenschnittstelle. Wenn der Rückgabewert Administrator ist, wird er als Administrator angesehen und gibt ihn direkt zurück, da er ansonsten fehlschlägt.
Nachdem das Kategorieverwaltungsmodul im Hintergrund geschrieben wurde, ist er fertig. Da das Modul weniger funktionale Schnittstellen hat, dauerte es lange, bis sie alle in einem Blog -Beitrag geschrieben haben. Dies erleichtert es auch für alle, das Backend -Kategorie -Management -Modul gleichzeitig zu lernen.
Im nächsten Blog-Beitrag werden wir weiterhin den Fortschritt des Projekts fördern und Ihnen die Entwicklung von Back-End-Produktmodulen bringen. Wir hoffen, dass jeder mit dem Fortschritt Schritt halten wird.
Wenn Sie in Ihrem vorherigen Blog -Beitrag Probleme aufnehmen, hinterlassen Sie bitte eine Nachricht und ein Feedback, und ich werde mein Bestes geben, um das Problem für Sie zu lösen.
Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für das Lernen aller hilfreich sein und ich hoffe, jeder wird Wulin.com mehr unterstützen.