ในโพสต์บล็อกก่อนหน้านี้เราได้ทำฟังก์ชั่นทั้งหมดของโมดูลผู้ใช้ให้เสร็จสิ้นดังนั้นในโพสต์บล็อกสองสามรายการถัดไปเราจะเสร็จสิ้นโมดูลฟังก์ชั่นการจัดการการจำแนกประเภท
ก่อนอื่นให้ดูที่จุดการทำงานของการจัดการการจำแนกประเภทในแบ็กเอนด์
การจัดการหมวดหมู่แบ็กเอนด์เป็นการจัดการผลิตภัณฑ์ซึ่งส่วนใหญ่แบ่งออกเป็นหมวดหมู่การอัพเดตชื่อหมวดหมู่การรับโหนดหมวดหมู่ในระดับเดียวกันและรับรหัสหมวดหมู่และหมวดหมู่ย่อย
1. การจัดการการจำแนกประเภทการดำเนินการของฟังก์ชั่นหมวดหมู่ที่เพิ่มเข้ามา
มาดูเลเยอร์บริการก่อน
// เพิ่มหมวดหมู่ public ServerResponse AddCategory (String categoryName, Integer ParentId) {ถ้า (parentId == null || stringUtils.isblank (หมวดหมู่ชื่อ)) {return serverResponse.createByErrorMessage ("ข้อผิดพลาดพารามิเตอร์"); } หมวดหมู่หมวดหมู่ = หมวดหมู่ใหม่ (); category.setName (categoryName); category.setParentId (parentid); category.setstatus (จริง); int rowCount = categorymapper.insert (หมวดหมู่); if (rowCount> 0) {return ServerResponse.CreateBySuceEssMessage ("เพิ่มหมวดหมู่สำเร็จ"); } return serverResponse.createBebyerRorMessage ("เพิ่มหมวดหมู่ล้มเหลว"); -มันค่อนข้างง่ายในการเพิ่มหมวดหมู่ มันค่อนข้างคล้ายกับตรรกะการลงทะเบียนก่อนหน้านี้ ก่อนอื่นให้ตรวจสอบว่าหมวดหมู่และ parentid ที่ส่งจากส่วนหน้ามีอยู่หรือไม่ หากไม่มีอยู่จะมีการแจ้งข้อผิดพลาดของพารามิเตอร์ มิฉะนั้นให้ใช้อินสแตนซ์ Javabean ต่อไปเพื่อเพิ่มหมวดหมู่ ในทำนองเดียวกันหลังจากเพิ่มด้วย Javabean ให้ใส่ผลลัพธ์ลงในฐานข้อมูล หากจำนวนแถวที่มีประสิทธิภาพส่งคืนมากกว่า 0 หมวดหมู่จะถูกเพิ่มสำเร็จไม่เช่นนั้นหมวดหมู่จะถูกเพิ่มล้มเหลว
มาดูเลเยอร์คอนโทรลเลอร์
/ ** * จัดการหมวดหมู่หมวดหมู่ * @param categoryName * @param parentid * @param เซสชัน * @return */ @requestmapping (value = "add_category.do") @ResponseBody ServerResponse AddCategory (String categoryName, @requestparam (ผู้ใช้) session.getAttribute (const.current_user); if (user == null) {return serverResponse.createBebyErrorCodeMessage (responsecode.need_login.getCode (), "ผู้ใช้ไม่ได้ลงชื่อเข้าใช้โปรดเข้าสู่ระบบ"); } // ตรวจสอบว่าเป็นผู้ดูแลระบบหรือไม่ถ้า (iUserService.CheckAdmin (ผู้ใช้) .issuccess ()) {return icateGoryService.AddCategory (หมวดหมู่ชื่อ ParentID); } else {return serverResponse.createTeByerRorMessage ("ไม่มีการดำเนินการอนุญาตโปรดเข้าสู่ระบบผู้ดูแลระบบ"); -ก่อนอื่นมีสถานที่ที่แตกต่างกันโดยมีค่าของการร้องขอการทำแผนที่ซึ่งมีเพียงหนึ่งชื่ออินเทอร์เฟซ แต่ไม่ได้ระบุวิธีการร้องขออินเทอร์เฟซเนื่องจากโมดูลการจัดการหมวดหมู่เป็นการจัดการพื้นหลังโดยผู้ดูแลเว็บไซต์และเป็นของโมดูลพื้นหลัง สำหรับโมดูลพื้นหลังพวกเขาจะถูกใช้โดยพนักงานภายในของ บริษัท และไม่จำเป็นต้องเปิดเผยไปยังโลกภายนอกดังนั้นคุณสามารถใช้วิธีการเริ่มต้นที่จะขอ
ตรรกะทั่วไปของการจัดการฟังก์ชั่นพื้นหลังคือการตรวจสอบก่อนว่าผู้ใช้อยู่ในสถานะเข้าสู่ระบบหรือไม่ หากผู้ใช้อยู่ในสถานะเข้าสู่ระบบให้ตรวจสอบว่าการเข้าสู่ระบบในปัจจุบันเป็นผู้ดูแลเว็บไซต์หรือไม่ หากไม่ใช่ผู้ดูแลระบบคุณไม่มีสิทธิ์ในการดำเนินการจัดการที่เกี่ยวข้อง หากเป็นผู้ดูแลระบบคุณสามารถทำการจัดการพื้นหลังได้ ในตรรกะของการจัดการฟังก์ชั่นพื้นหลังโดยทั่วไปเพียงพอที่จะส่งคืนผลการประมวลผลวิธีการโดยตรงในเลเยอร์บริการ
ในวิธีการข้างต้นมีความจำเป็นต้องกำหนดสถานะการเข้าสู่ระบบของผู้ใช้ดังนั้นจึงจำเป็นต้องแนะนำบริการผู้ใช้แล้วเรียกใช้วิธีการที่เกี่ยวข้องโดยตรง
2. การจัดการการจำแนกประเภทโมดูลการดำเนินการของฟังก์ชันชื่อหมวดหมู่การอัปเดต
มาดูเลเยอร์บริการก่อน
// อัปเดตชื่อหมวดหมู่ ServerResponse updateCategoryName (หมวดหมู่สตริง, ชื่อจำนวนเต็มหมวดหมู่) {ถ้า (หมวดหมู่ == null || stringUtils.isblank (หมวดหมู่)) {ส่งคืนเซิร์ฟเวอร์ Response.createBebyerRorMessage ("พารามิเตอร์หมวดหมู่หมวดหมู่" } หมวดหมู่หมวดหมู่ = หมวดหมู่ใหม่ (); category.setId (categoryId); category.setName (categoryName); int rowCount = categoryMapper.updateByPrimaryKeySelective (หมวดหมู่); if (rowCount> 0) {return ServerResponse.CreateBySuceEssMessage ("อัปเดตชื่อหมวดหมู่สำเร็จ"); } return serverResponse.createBebyerRorMessage ("อัปเดตชื่อหมวดหมู่ล้มเหลว"); -มันเหมือนกับตรรกะการประมวลผลก่อนหน้านี้และฉันจะไม่เข้าไปดูรายละเอียดที่นี่
มาดูเลเยอร์คอนโทรลเลอร์
/ ** * จัดการหมวดหมู่หมวดหมู่หมวดหมู่ชื่อ * @param categoryName * @param categoryId * @param เซสชัน * @return */ @requestmapping (value = "update_category_name") @ResponseBody ServerResponse updateCategoryName (สตริงหมวดหมู่ (ผู้ใช้) session.getAttribute (const.current_user); if (user == null) {return serverResponse.createBebyErrorCodeMessage (responsecode.need_login.getCode (), "ผู้ใช้ไม่ได้ลงชื่อเข้าใช้โปรดเข้าสู่ระบบ"); } if (iUsERSERVICE.CheckAdmin (ผู้ใช้) .ISSUCCESS ()) {return ICECTERSERVICE.UPDATECategoryName (categoryName, categoryId); } else {return serverResponse.createTeByerRorMessage ("ไม่มีการดำเนินการอนุญาตโปรดเข้าสู่ระบบผู้ดูแลระบบ"); -มันเหมือนกับตรรกะการประมวลผลก่อนหน้านี้และฉันจะไม่เข้าไปดูรายละเอียดที่นี่
3. การจัดการการจำแนกประเภทโมดูลการดำเนินการของฟังก์ชั่นของการได้รับโหนดหมวดหมู่แนวนอน (การค้นหาผลิตภัณฑ์แบ็กเอนด์)
ชั้นบริการ
// การสืบค้นระดับพาเรนต์หมวดหมู่โหนด ServerResponse <รายการ <หมวดหมู่ >> getChildrenparalleCategory (Integer categoryId) {รายการ <หมวดหมู่> categoryList = categoryMapper.selectCategoryChildrenByByByByByByByByByByByByByByByByByByByN if (collectionUtils.isEmpty (categoryList)) {logger.info ("หมวดหมู่ย่อยของการจำแนกประเภทปัจจุบันไม่พบ"); } return ServerResponse.CreateBySuccess (CategoryList); -เมื่อประมวลผลชุดข้อมูลผลิตภัณฑ์มักใช้วิธีการรวบรวม แอปพลิเคชันของมันแตกต่างกันไปขึ้นอยู่กับประเภทของการรวบรวม ที่นี่ฉันใช้คอลเลกชันรายการ ก่อนอื่นพิจารณาว่ารายการคอลเลกชันนั้นสะดวกสำหรับการดำเนินงานและการจัดการแบบสำรวจ เนื่องจากมันคือการจัดการผลิตภัณฑ์ประเภททั่วไปของการรวบรวมรายการจึงถูกระบุเป็นหมวดหมู่และการสืบค้นรหัสผลิตภัณฑ์จะดำเนินการผ่านวิธีการเลือก CategoryChildrenbybybybybybyparentId ของหมวดหมู่ ในการตัดสินเชิงตรรกะให้ใช้คลาสเครื่องมือ CollectuTils ที่ห่อหุ้มอยู่ใน Java เพื่อพิจารณาว่าผลตอบแทนของคอลเลกชันนั้นว่างเปล่าหรือไม่ หากว่างเปล่าให้พิมพ์บรรทัดของบันทึกมิฉะนั้นการดำเนินการที่ประสบความสำเร็จของผลลัพธ์หมวดหมู่จะสามารถส่งคืนได้ ตัวบันทึกนี่คือเครื่องมือการพิมพ์บันทึกที่คุณห่อหุ้ม ให้ฉันพูดถึงการใช้งานสั้น ๆ
private org.slf4j.Logger logger = LoggerFactory.getLogger(CategoryServiceImpl.class);
โปรดทราบว่าเครื่องบันทึกนี้ใช้แพ็คเกจ SLF4J อย่าส่งออกแพ็คเกจที่ไม่ถูกต้องจากนั้น LoggerFactory.getLogger (คลาส) คุณต้องผ่านพารามิเตอร์ซึ่งเป็นคลาสที่ต้องการพิมพ์บันทึกเช่นหมวดหมู่ คุณสามารถดูผลลัพธ์การพิมพ์ของบันทึกในคอนโซล
เลเยอร์คอนโทรลเลอร์
/ ** * จัดการโหนดหมวดหมู่-รับของหมวดหมู่เดียวกัน * @param categoryId * @param เซสชัน * @return */ @requestmapping (value = "get_category.do") @ResponseBody ServerResponse GetChildrenparalleCategory (@RequestParam (value = "หมวดหมู่" (ผู้ใช้) session.getAttribute (const.current_user); if (user == null) {return serverResponse.createBebyErrorCodeMessage (responsecode.need_login.getCode (), "ผู้ใช้ไม่ได้ลงชื่อเข้าใช้โปรดเข้าสู่ระบบ"); } if (iUsERSERVICE.CheckAdmin (ผู้ใช้) .ISSUCCESS ()) {return ICECTERSERVICE.GETCHILDRENPARALLECATEDORY (categoryID); } else {return serverResponse.createTeByerRorMessage ("ไม่มีการดำเนินการอนุญาตโปรดเข้าสู่ระบบผู้ดูแลระบบ"); -ด้วยเหตุผลในทางปฏิบัติเมื่อปริมาณสินค้าเป็น 0 ไม่จำเป็นต้องจัดการหมวดหมู่ผลิตภัณฑ์ดังนั้น refaftValue = "0" หมายเหตุประกอบโดย RequestParam ใช้เพื่อระบุค่าเริ่มต้นของพารามิเตอร์ ส่วนที่เหลือของตรรกะนั้นเหมือนกันทุกประการ
4. โมดูลการจัดการการจำแนกประเภทดึงการใช้งานหมวดหมู่ ID และฟังก์ชั่นย่อยโหนด
ดูเลเยอร์บริการ
Public ServerResponse <list <Integer>> SelectCategoryandChildRenbyId (Integer CategoryID) {Set <S CATEGORY> หมวดหมู่ = setS.NewHashSet (); FindChildCategory (หมวดหมู่, หมวดหมู่); รายการ <จำนวนเต็ม> categoryIdList = lists.newarraylist (); if (categoryId! = null) {สำหรับ (หมวดหมู่หมวดหมู่: หมวดหมู่) {categoryIdList.add (categoryItem.getId ()); }} return ServerResponse.CreateBySuccess (categoryIdList); } // อัลกอริทึมแบบเรียกซ้ำเพื่อคำนวณชุดโหนดเด็กชุดส่วนตัว <หมวดหมู่> FindChildCategory (Integer CategoryId, Set <S CATEGORYSTEST) {หมวดหมวดหมู่ = หมวดหมู่ MAPPER.SELECTBYPRIMARYKEY if (category! = null) {categoryset.add (หมวดหมู่); } // ค้นหารายการโหนดลูก <หมวดหมู่> categoryList = categoryMapper.selectCategoryChildrenbyparentId (categoryId); สำหรับ (หมวดหมู่หมวดหมู่: หมวดหมู่) {findChildCategory (categoryItem.getId (), หมวดหมู่); } return categoryset; -วิธีหลักคือ SelectCategoryandChildrenbyid และวิธีเสริมคือ FindChildCategory ซึ่งคำนวณโหนดลูกโดยการเรียกซ้ำ ในวิธีการเสริมข้อมูล ID ผลิตภัณฑ์จะถูกสอบถามผ่านหมวดหมู่และเพิ่มลงในคอลเลกชันชุดจากนั้นโหนดเด็กผลิตภัณฑ์จะถูกสำรวจผ่าน Foreach Loop และในที่สุดหมวดหมู่จะถูกส่งคืน ในวิธีการหลักวิธีการเสริมจะเรียกว่ารหัสผลิตภัณฑ์และโหนดเด็กจะถูกพบและจากนั้นรหัสผลิตภัณฑ์และโหนดเด็กจะถูกวางไว้ในคอลเลกชันรายการและจากนั้นผลลัพธ์ที่เราต้องการจะถูกสำรวจผ่าน Foreach Loop และในที่สุดหมวดหมู่จะถูกส่งกลับโดยตรง
เลเยอร์คอนโทรลเลอร์
/ ** * จัดการหมวดหมู่หมวดหมู่และหมวดหมู่โหนดลูก * @param หมวดหมู่ * @param เซสชัน * @return */ @requestmapping (value = "get_deep_category.do") @ResponseBody ServerResponse GetCategoryandDeepChildRencateDory เซสชัน) {ผู้ใช้ผู้ใช้ = (ผู้ใช้) เซสชัน. getAttribute (const.current_user); if (user == null) {return serverResponse.createBebyErrorCodeMessage (responsecode.need_login.getCode (), "ผู้ใช้ไม่ได้ลงชื่อเข้าใช้โปรดเข้าสู่ระบบ"); } if (iUsERSERVICE.CheckAdmin (ผู้ใช้) .ISSUCCESS ()) {return ICECTERSERVICE.SELECTCATECATECTORYANDCHILDHILDRENBYID (categoryID); } else {return serverResponse.createTeByerRorMessage ("ไม่มีการดำเนินการอนุญาตโปรดเข้าสู่ระบบผู้ดูแลระบบ"); -มันเหมือนกับการประมวลผลเชิงตรรกะก่อนหน้าของการได้รับโหนดระดับเดียวกันในหมวดหมู่ดังนั้นฉันจะไม่เข้าไปดูรายละเอียดที่นี่
5. โมดูลผู้ใช้เพิ่มเติม
ในโมดูลการจัดการหมวดหมู่พื้นหลังวิธีการตรวจสอบว่าผู้ใช้ที่เข้าสู่ระบบในปัจจุบันเป็นผู้ดูแลระบบหรือไม่ สิ่งนี้เขียนไว้ในโมดูลผู้ใช้ ฉันลืมที่จะเขียนมาก่อนดังนั้นฉันจะทำอาหารเสริมที่นี่
ชั้นบริการของโมดูลผู้ใช้
// ความเป็นมาของผู้ใช้ - ตรวจสอบว่าเป็น ServerResponse Public ServerResponse CheckAdmin (ผู้ใช้ผู้ใช้) {ถ้า (ผู้ใช้! = null && user.getRole (). intValue () == const.role.role_admin) } return serverResponse.createBebyError (); -เนื่องจากเกี่ยวข้องกับผู้ดูแลระบบจึงจำเป็นต้องดำเนินการประมวลผลเชิงตรรกะในเลเยอร์บริการและไม่จำเป็นต้องประกาศในคอนโทรลเลอร์ วิธีนี้ส่งผ่านในวัตถุผู้ใช้และทำการตัดสินการอนุญาตผ่านอินเทอร์เฟซบทบาทที่ห่อหุ้ม หากค่าส่งคืนเป็นผู้ดูแลระบบจะถือว่าเป็นผู้ดูแลระบบและส่งคืนโดยตรงไม่เช่นนั้นจะล้มเหลว
เมื่อเขียนสิ่งนี้โมดูลการจัดการหมวดหมู่ในพื้นหลังจะเสร็จสิ้น เนื่องจากโมดูลมีอินเทอร์เฟซที่ใช้งานได้น้อยลงจึงใช้เวลานานในการเขียนทั้งหมดในโพสต์บล็อกซึ่งทำให้ทุกคนเรียนรู้โมดูลการจัดการหมวดหมู่แบ็กเอนด์ได้ง่ายขึ้น
ในโพสต์บล็อกถัดไปเราจะส่งเสริมความคืบหน้าของโครงการต่อไปและจะนำการพัฒนาโมดูลผลิตภัณฑ์แบ็คเอนด์มาให้คุณ เราหวังว่าทุกคนจะติดตามความคืบหน้า
หากคุณพบปัญหาใด ๆ ในโพสต์บล็อกก่อนหน้าของคุณโปรดฝากข้อความและข้อเสนอแนะและฉันจะพยายามอย่างเต็มที่เพื่อแก้ปัญหาให้คุณ
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น