في منشورات المدونة السابقة ، أكملنا جميع وظائف وحدة المستخدم ، لذلك في منشورات المدونة القليلة التالية ، سنكمل وحدة وظيفة إدارة التصنيف.
دعونا أولاً نلقي نظرة على النقاط الوظيفية لإدارة التصنيف في الخلفية
تعتبر إدارة فئة Backend في الواقع إدارة للمنتجات ، والتي تنقسم بشكل أساسي إلى إضافة فئات ، وتحديث أسماء الفئات ، والحصول على عقد الفئة في نفس المستوى ، والحصول على معرفات الفئة وفئات العقدة الفرعية.
1. تنفيذ وحدة إدارة التصنيف لوظائف الفئة المضافة
دعونا نلقي نظرة على طبقة الخدمة أولاً
// إضافة فئة ServerResponse AddCategory (فئة السلسلة ، integer parentid) {if (parentId == null || stringUtils.isblank (categoryName)) {return serverResponse.createByErrormessage ("خطأ المعلمة") ؛ } فئة الفئة = فئة جديدة () ؛ الفئة. الفئة. الفئة. setStatus (صواب) ؛ int rowcount = categorymapper.insert (الفئة) ؛ if (rowcount> 0) {return serverResponse.createBySuceSeStage ("إضافة الفئة بنجاح") ؛ } return serverResponse.createByerRormessage ("إضافة الفئة فشل") ؛ }من السهل نسبيًا إضافة فئات. إنه يشبه إلى حد ما منطق التسجيل السابق. أولاً ، تحقق مما إذا كان هناك فئة و parentid المنقولة من الواجهة الأمامية موجودة. إذا لم يكن موجودًا ، تتم مطالبة خطأ المعلمة. خلاف ذلك ، استمر في استخدام مثيلات جافابان لزيادة الفئة. وبالمثل ، بعد إضافته مع Javabean ، أدخل النتيجة في قاعدة البيانات. إذا كان عدد الصفوف الفعالة التي تم إرجاعها أكبر من 0 ، يتم إضافة الفئة بنجاح ، وإلا فإن الفئة تفشل.
دعونا نلقي نظرة على طبقة وحدة التحكم
/ *: (مستخدم) session.getAttribute (const.current_user) ؛ if (user == null) {return serverResponse.createByerRorCodeMessage (responsecode.need_login.getCode () ، "لا يتم تسجيل الدخول ، يرجى تسجيل الدخول") ؛ } // تحقق مما إذا كان مسؤولًا إذا كان (iuserservice.checkadmin (المستخدم) .issuccess ()) {return icategoryservice.addcategory (categoryName ، parentId) ؛ } آخر {return serverResponse.createByerRormessage ("لا توجد عملية إذن ، يرجى تسجيل الدخول إلى المسؤول") ؛ }}بادئ ذي بدء ، هناك مكان مختلف مع قيمة قيمة الطلب ، والذي يحتوي على اسم واجهة واحد فقط ، ولكنه لا يحدد طريقة طلب الواجهة ، لأن وحدة إدارة الفئات هي إدارة خلفية من قبل مسؤول الموقع وتنتمي إلى وحدة الخلفية. بالنسبة إلى وحدات الخلفية ، يتم استخدامها من قبل الموظفين الداخليين في الشركة ولا يحتاجون إلى الكشف عن العالم الخارجي ، بحيث يمكنك فقط استخدام طريقة الحصول على GET الافتراضية.
المنطق العام لإدارة وظائف الخلفية هو التحقق أولاً مما إذا كان المستخدم في حالة تسجيل الدخول. إذا كان المستخدم في حالة تسجيل الدخول ، فاحقق مما إذا كان المسجل حاليًا هو مسؤول موقع ويب. إذا لم يكن مسؤولًا ، فلن يكون لديك الحق في إجراء عمليات الإدارة ذات الصلة. إذا كان مسؤولًا ، فيمكنك إجراء إدارة الخلفية. في منطق إدارة وظائف الخلفية ، يكون عمومًا بما يكفي لإرجاع نتائج معالجة الطريقة مباشرة في طبقة الخدمة.
في الطريقة المذكورة أعلاه ، من الضروري تحديد حالة تسجيل دخول المستخدم ، لذلك من الضروري تقديم خدمات المستخدم ثم الاتصال مباشرة بالطريقة المقابلة.
2. تنفيذ وحدة إدارة التصنيف من وظيفة اسم فئة التحديث
دعونا نلقي نظرة على طبقة الخدمة أولاً
. } فئة الفئة = فئة جديدة () ؛ الفئة. الفئة. int rowcount = categorymapper.updateByprimaryKeySelective (الفئة) ؛ if (rowcount> 0) {return serverResponse.createBySuceSeStage ("تحديث اسم فئة بنجاح") ؛ } return serverResponse.createByerRormessage ("فشل اسم فئة التحديث") ؛ }إنه بالضبط نفس منطق المعالجة السابق ، ولن أخوض في التفاصيل هنا.
دعونا نلقي نظرة على طبقة وحدة التحكم
/ *: (مستخدم) 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) ؛ } آخر {return serverResponse.createByerRormessage ("لا توجد عملية إذن ، يرجى تسجيل الدخول إلى المسؤول") ؛ }}إنه بالضبط نفس منطق المعالجة السابق ، ولن أخوض في التفاصيل هنا.
3. تنفيذ وحدة إدارة التصنيف لوظيفة الحصول على عقدة الفئة الأفقية (البحث عن منتجات الواجهة الخلفية)
طبقة الخدمة
. if (collectionUtils.isempty (categorylist)) {logger.info ("لم يتم العثور على الفئة الفرعية للتصنيف الحالي") ؛ } return serverResponse.createBySuccess (CategoryList) ؛ }عند معالجة مجموعة من معلومات المنتج ، فإنه يستخدم غالبًا طريقة التجميع. تطبيقه مختلف اعتمادًا على نوع المجموعة. هنا ، أنا أستخدم مجموعات القائمة. أولاً ، بالنظر إلى أن مجموعات القائمة مريحة لعمليات اجتياز وإدارة. نظرًا لأنها هي إدارة المنتجات ، يتم تحديد النوع العام لمجموعة القائمة كفئة ، ويتم تنفيذ استعلام معرف المنتج من خلال طريقة SelectCategoryChildrenByParentId لـ CatevoryMapper. في الحكم المنطقي ، استخدم فئة أدوات CollectionUtils مغلفة في Java لتحديد ما إذا كانت نتيجة العودة للمجموعة فارغة. إذا كان فارغًا ، فقم بطباعة سطرًا من السجلات ، وإلا يمكن إرجاع التنفيذ الناجح لنتيجة الفئة. المسجل هنا هو أداة طباعة السجل التي تغلفها. اسمحوا لي أن أذكر بإيجاز استخدامه.
private org.slf4j.Logger logger = LoggerFactory.getLogger(CategoryServiceImpl.class);
لاحظ أن هذا المسجل يستخدم حزمة SLF4J ، لا تصدر الحزمة الخاطئة ، ثم loggerFactory.getLogger (الفئة) ، تحتاج إلى تمرير معلمة ، وهي الفئة التي تحتاج حاليًا إلى طباعة السجل ، مثل CatevoryServiceImpl.Class هنا. يمكنك رؤية نتائج طباعة السجل في وحدة التحكم.
طبقة وحدة التحكم
/ *: (مستخدم) session.getAttribute (const.current_user) ؛ if (user == null) {return serverResponse.createByerRorCodeMessage (responsecode.need_login.getCode () ، "لا يتم تسجيل الدخول ، يرجى تسجيل الدخول") ؛ } if (iuserservice.checkadmin (user) .issuccess ()) {return icategoryservice.getChildrenparallecategory (categoryId) ؛ } آخر {return serverResponse.createByerRormessage ("لا توجد عملية إذن ، يرجى تسجيل الدخول إلى المسؤول") ؛ }}لأسباب عملية ، عندما تكون كمية البضائع 0 ، لا توجد حاجة لإدارة فئة المنتج ، وبالتالي يتم استخدام DefaultValue = "0" المشروح بواسطة requestParam لتحديد القيمة الافتراضية للمعلمة. ما تبقى من المنطق هو نفسه بالضبط كما كان من قبل.
4. وحدة إدارة التصنيف-إعادة تنفيذ معرف الفئة ووظائف العقدة الفرعية
انظر إلى طبقة الخدمة
Public ServerResponse <list <integer >> selectCategoryAndChildrenbyId (Integer CategoryId) {set <Category> categoryset = sets.newhashset () ؛ FindChildCategory (CategoryId ، catevoryset) ؛ قائمة <integer> categoryIdList = lists.newarrayList () ؛ if (categoryId! = null) {for (الفئة الفئة: categoryset) {categoryIdList.add (categoryitem.getId ()) ؛ }} return serverResponse.createBySuccess (categoryIdList) ؛ } // الخوارزمية المتكررة لحساب مجموعة Node الخاصة بالمجموعة الخاصة <فئة> FindChildCategory (Integer CategoryId ، set <Category> catevoryset) {category category = categoryMapper.SelectByPrimaryKey (categoryId) ؛ if (الفئة! = null) {categoryset.add (الفئة) ؛ }. لـ (الفئة الفئة: categorylist) {findChildCategory (categoryItem.getId () ، categoryset) ؛ } فئة الإرجاع ؛ }الطريقة الرئيسية هي SelectCategoryAndchildrenbyid ، والأسلوب الإضافي هي FindChildCategory ، التي تحسب العقد الفرعية بشكل متكرر. في الطريقة الإضافية ، يتم الاستعلام عن معلومات معرف المنتج من خلال الفئة ، وإضافتها إلى مجموعة المجموعة ، ثم يتم اجتياز العقد الفرعية للمنتج من خلال حلقة foreach ، وأخيراً يتم إرجاع الفئة. في الطريقة الرئيسية ، تسمى الطريقة الإضافية ، يتم العثور على معرف المنتج والعقد الفرعية ، ثم يتم وضع معرف المنتج والعقد الفرعية في مجموعة القائمة ، ثم يتم اجتياز النتيجة التي نريدها عبر حلقة Foreach ، وأخيراً يتم إرجاع قائمة الفئة مباشرة.
طبقة وحدة التحكم
/ *: جلسة) {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) ؛ } آخر {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 أكثر.