Dalam posting blog sebelumnya, kami telah menyelesaikan semua fungsi modul pengguna, jadi di beberapa posting blog berikutnya, kami akan menyelesaikan modul fungsi manajemen klasifikasi.
Pertama -tama mari kita lihat titik fungsional manajemen klasifikasi di backend
Manajemen kategori backend sebenarnya adalah manajemen produk, yang terutama dibagi menjadi penambahan kategori, memperbarui nama kategori, memperoleh node kategori pada tingkat yang sama, dan memperoleh ID kategori dan kategori sub-node.
1. Modul Manajemen Klasifikasi Implementasi fungsi kategori yang ditambahkan
Mari kita lihat lapisan layanan dulu
// Tambahkan Kategori Public ServerResponse AddCategory (String CategoryName, Integer ParentID) {if (parentId == null || stringutils.isBlank (CategoryName)) {return serverResponse.creatyerrormessage ("parameter error"); } Kategori kategori = kategori baru (); Category.SetName (CategoryName); Category.setParentId (ParentId); Category.setstatus (true); int rowcount = CategoryMapper.insert (kategori); if (rowcount> 0) {return serverResponse.createBySuceessMessage ("Tambah kategori berhasil"); } return serverResponse.createByErrormessage ("Tambahkan Kategori Gagal"); }Relatif mudah untuk menambahkan kategori. Agak mirip dengan logika pendaftaran sebelumnya. Pertama, periksa apakah ada CategoryName dan Parentid yang ditransmisikan dari ujung depan. Jika tidak ada, kesalahan parameter diminta. Jika tidak, terus gunakan contoh Javabean untuk meningkatkan kategori. Demikian pula, setelah menambahkannya dengan Javabean, masukkan hasilnya ke dalam database. Jika jumlah baris efektif yang dikembalikan lebih besar dari 0, kategori ditambahkan dengan sukses, jika tidak kategori ditambahkan gagal.
Mari kita lihat lapisan pengontrol
/** * Manage category-add category* @param categoryName * @param parentId * @param session * @return */ @RequestMapping(value = "add_category.do") @ResponseBody public ServerResponse addCategory(String categoryName, @RequestParam(value = "parentId", defaultValue = "0") int parentId, HttpSession session) { User user = (Pengguna) session.getAttribute (const.current_user); if (user == null) {return serverResponse.createByErrorCodemessage (responseCode.need_login.getCode (), "Pengguna tidak masuk, silakan masuk"); } // Verifikasi apakah itu administrator if (iUserservice.checkadmin (pengguna) .issuccess ()) {return icateGoryService.Addcategory (CategoryName, ParentId); } else {return serverResponse.createByerRormessage ("Tidak ada operasi izin, silakan masuk ke administrator"); }}Pertama -tama, ada tempat yang berbeda dengan nilai nilai permintaan, yang hanya memiliki satu nama antarmuka, tetapi tidak menentukan metode permintaan antarmuka, karena modul manajemen kategori adalah manajemen latar belakang oleh administrator situs web dan termasuk dalam modul latar belakang. Untuk modul latar belakang, mereka digunakan oleh karyawan internal perusahaan dan tidak perlu diungkapkan ke dunia luar, sehingga Anda bisa menggunakan metode GET default untuk meminta.
Logika umum manajemen fungsi latar belakang adalah untuk terlebih dahulu memverifikasi apakah pengguna dalam keadaan login. Jika pengguna dalam keadaan login, maka verifikasi apakah saat ini masuk adalah administrator situs web. Jika bukan administrator, Anda tidak memiliki hak untuk melakukan operasi manajemen yang relevan. Jika itu adalah administrator, Anda dapat melakukan manajemen latar belakang. Dalam logika manajemen fungsi latar belakang, umumnya cukup untuk secara langsung mengembalikan hasil pemrosesan metode di lapisan layanan.
Dalam metode di atas, perlu untuk menentukan status login pengguna, sehingga perlu untuk memperkenalkan layanan pengguna dan kemudian secara langsung memanggil metode yang sesuai.
2. Modul Manajemen Klasifikasi Implementasi Fungsi Nama Kategori Pembaruan
Mari kita lihat lapisan layanan dulu
// Perbarui Nama Kategori Public ServerResponse UpdateCategoryName (String CategoryName, Integer CategoryID) {if (CategoryID == NULL || Stringutils.isBlank (CategoryName)) {return serverResponse.createRrormessage ("Update Parameter Kesalahan Parameter"); } Kategori kategori = kategori baru (); Category.setId (CategoryID); Category.SetName (CategoryName); int rowcount = CategoryMapper.UpdateByPrimaryKeyselective (Kategori); if (rowcount> 0) {return serverResponse.createBySuceessMessage ("Pembaruan Kategori berhasil"); } return serverResponse.createByerRormessage ("Perbarui Nama Kategori Gagal"); }Ini persis sama dengan logika pemrosesan sebelumnya, dan saya tidak akan membahas detail di sini.
Mari kita lihat lapisan pengontrol
/ ** * mengelola nama kategori kategori-pembaruan * @param CategoryName * @param CategoryId * @param sesi * @return */ @RequestMapping (value = "update_category_name") @ResponseBody Upresponse UpdateCategoryName (string string, (User) session.getAttribute (const.current_user); if (user == null) {return serverResponse.createByErrorCodemessage (responseCode.need_login.getCode (), "Pengguna tidak masuk, silakan masuk"); } if (iUserService.CheckAdmin (user) .issuccess ()) {return icateGoryService.UpDateCategoryName (CategoryName, CategoryID); } else {return serverResponse.createByerRormessage ("Tidak ada operasi izin, silakan masuk ke administrator"); }}Ini persis sama dengan logika pemrosesan sebelumnya, dan saya tidak akan membahas detail di sini.
3. Modul Manajemen Klasifikasi Implementasi fungsi memperoleh node kategori horizontal (pencarian produk backend)
Lapisan Layanan
// Kategori kueri level orangtua Node ServerResponse Publik <Daftar <Tegater>> getChildrenParallEcategory (Integer CategoryID) {List <ategory> CategoryList = CategoryMapper.SelectCategoryChildrenByParentId (CategoryID); if (collectionsils.isempty (CategoryList)) {logger.info ("Subkategori klasifikasi saat ini tidak ditemukan"); } return serverResponse.CreateBySuccess (CategoryList); }Saat memproses satu set informasi produk, ia sering menggunakan metode pengumpulan. Penerapannya berbeda tergantung pada jenis koleksi. Di sini, saya menggunakan koleksi daftar. Pertama, mengingat koleksi daftar nyaman untuk operasi dan manajemen traversal. Karena itu adalah untuk mengelola produk, jenis generik dari koleksi daftar ditentukan sebagai kategori, dan kueri ID produk dilakukan melalui metode CategoryMapper dari CategoryMapper. Dalam penilaian logis, gunakan kelas alat Collectionutils yang dienkapsulasi dalam Java untuk menentukan apakah hasil pengembalian koleksi kosong. Jika kosong, cetak garis log, jika tidak, keberhasilan eksekusi hasil CategoryList dapat dikembalikan. Logger di sini adalah alat pencetakan log yang Anda selimut. Biarkan saya menyebutkan penggunaannya secara singkat.
private org.slf4j.Logger logger = LoggerFactory.getLogger(CategoryServiceImpl.class);
Perhatikan bahwa logger ini menggunakan paket slf4j, jangan mengekspor paket yang salah, dan kemudian loggerFactory.getLogger (kelas), Anda perlu melewati parameter, yang merupakan kelas yang saat ini perlu mencetak log, seperti CategoryServiceImpl.class di sini. Anda dapat melihat hasil cetak log di konsol.
Lapisan pengontrol
/ ** * Mengelola Node Get Kategori dari Kategori yang Sama * @param CategoryID * @param sesi * @return */ @RequestMapping (value = "get_category.do") @ResponseBody Public ServerResponse GetChildrenparAlgory (@RequestParam (value = "CategoryD" = (Pengguna) session.getAttribute (const.current_user); if (user == null) {return serverResponse.createByErrorCodemessage (responseCode.need_login.getCode (), "Pengguna tidak masuk, silakan masuk"); } if (iUserserVice.CheckAdmin (user) .issuccess ()) {return icateGoryService.getChildrenparallecategory (CategoryID); } else {return serverResponse.createByerRormessage ("Tidak ada operasi izin, silakan masuk ke administrator"); }}Untuk alasan praktis, ketika jumlah barang adalah 0, tidak perlu mengelola kategori produk, sehingga DefaultValue = "0" dianotasi oleh RequestParam digunakan untuk menentukan nilai default parameter. Sisa logika persis sama seperti sebelumnya.
4. Modul Manajemen Klasifikasi-Perbaiki Implementasi Fungsi ID Kategori dan Sub-Node
Lihatlah lapisan layanan
ServerResponse Publik <Daftar <Integer>> SelectCategoryAndChildrenById (Integer CategoryID) {Set <Tegegory> CategorySet = sets.newhashset (); FindChildCategory (CategoryID, CategorySet); Daftar <Integer> CategoryIdlist = lists.newArrayList (); if (CategoryId! = null) {for (CategoryIntem: CategorySet) {CategoryIdList.Add (CategoryItem.getId ()); }} return serverResponse.createBySuccess (CategoryIdlist); } // algoritma rekursif untuk menghitung set private node anak <Category> findChildCategory (Integer CategoryID, set <tegory> CategorySet) {Category Category = CategoryMapper.SelectByPrimaryKey (CategoryID); if (kategori! = null) {CategorySet.Add (kategori); } // Temukan daftar simpul anak <at kategori> CategoryList = CategoryMapper.SelectCategoryChildrenByParentId (CategoryID); untuk (kategori CategoryItem: CategoryList) {findChildCategory (CategoryItem.getId (), CategorySet); } return CategorySet; }Metode utama adalah SelectCategoryAndChildrenByID, dan metode tambahan adalah FindChildCategory, yang menghitung node anak secara rekursif. Dalam metode tambahan, informasi ID produk ditanya melalui CategoryID, dan ditambahkan ke koleksi yang ditetapkan, dan kemudian node anak produk dilintasi melalui loop foreach, dan akhirnya kategori dikembalikan. Dalam metode utama, metode tambahan disebut, ID produk dan node anak ditemukan, dan kemudian ID produk dan node anak ditempatkan dalam koleksi daftar, dan kemudian hasil yang kita inginkan dilintasi melalui loop foreach, dan akhirnya CategoryIdlist dikembalikan langsung.
Lapisan pengontrol
/ ** * Kelola Kategori-Get ID dan Kategori Node Anak * @param CategoryID * @param sesi * @return */ @RequestMapping (value = "get_deep_category.do") @ResponseBody (value = "CategoryDeEpChildrencrenceGory (@RequestParam (value =" value = "value =" categoryDeEndrencrencrencrence (@requestponseBody (value = "value =" value = "value =" value = "value =" value = "value =" value ", Httpsession sesi) {user user = (user) session.getAttribute (const.current_user); if (user == null) {return serverResponse.createByErrorCodemessage (responseCode.need_login.getCode (), "Pengguna tidak masuk, silakan masuk"); } if (iUserservice.CheckAdmin (user) .issuccess ()) {return icateGoryService.SelectCategoryAndChildrenById (CategoryID); } else {return serverResponse.createByerRormessage ("Tidak ada operasi izin, silakan masuk ke administrator"); }}Persis sama dengan pemrosesan logis sebelumnya untuk mendapatkan node tingkat yang sama dalam kategori, jadi saya tidak akan masuk ke detail di sini.
5. Modul Pengguna Tambahan
Dalam modul manajemen kategori latar belakang, metode memverifikasi apakah pengguna yang saat ini dicatat adalah administrator digunakan. Ini ditulis dalam modul pengguna. Saya lupa menulisnya sebelumnya, jadi saya akan membuat suplemen di sini.
Lapisan Layanan Modul Pengguna
// Latar Belakang Pengguna - Verifikasi apakah itu adalah administrator Public ServerResponse checkAdmin (pengguna pengguna) {if (user! = Null && user.getRole (). Intvalue () == const.role.role_admin) {return serverResponse.createBySuccess (); } return serverResponse.createByError (); }Karena ini terkait dengan administrator, ia hanya perlu melakukan pemrosesan logis di lapisan layanan dan tidak perlu dinyatakan dalam pengontrol. Metode ini melewati objek pengguna dan membuat penilaian izin melalui antarmuka peran yang dienkapsulasi. Jika nilai pengembalian adalah admin, itu dianggap sebagai administrator dan mengembalikannya secara langsung, jika tidak, ia akan gagal.
Setelah menulis ini, modul manajemen kategori di latar belakang selesai. Karena modul memiliki lebih sedikit antarmuka fungsional, butuh waktu lama untuk menulis semuanya dalam posting blog, yang juga memudahkan semua orang untuk mempelajari modul manajemen kategori backend sekaligus.
Di posting blog berikutnya, kami akan terus mempromosikan kemajuan proyek dan akan membawa Anda pengembangan modul produk back-end. Kami berharap semua orang akan mengikuti kemajuan.
Jika Anda mengalami masalah apa pun di posting blog Anda sebelumnya, silakan tinggalkan pesan dan umpan balik, dan saya akan mencoba yang terbaik untuk menyelesaikan masalah untuk Anda.
Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.