من المخطط إضافة وظائف تكوين الإذن لمشاريع المصدر ، والخطط لإضافة Ztree لتنفيذ بنية شجرة.
رابط مشروع GitHub Open Source للفريق: https://github.com/u014427391/jeepatform يرحب النجمة (المجموعة)
Ztree هو "مكون إضافي للأشجار" متعدد الوظائف ينفذه JQuery. الأداء الممتاز ، والتكوين المرن ، ومجموعة من الوظائف المتعددة هي أكبر مزايا Ztree.
رابط تنزيل Ztree: http://www.treejs.cn/v3/main.php#_ztreeinfo
فئة كيان معلومات الدور:
package org.muses.jeepatform.core.entity.admin ؛ استيراد javax.persistence.* ؛ استيراد java.io.serializable ؛ استيراد java.util.hashset ؛ استيراد java.util.set ؛/*** description districe class* @author nicky* @dord 16 ، 2017*/@table (name = "sys_role")@entitypublic class rol تنفذ قابلة للتسلسل {/** id id **/private int robeid ؛ / ** وصف الدور **/ سلسلة خاصة roledesc ؛ / ** اسم الدور **/ سلسلة خاصة rolename ؛ / ** علامة الدور **/ دور السلسلة الخاصة ؛ مجموعة خاصة <إذن> أذونات = new hashset <إذن> () ؛ IDGeneratedValue (الاستراتيجية = GenerationType.Identity) public int getRoleId () {return robeId ؛ } public void setRoleId (int roboid) {this.roleid = rolyId ؛ } column (طول = 100) السلسلة العامة getRoledesc () {return roledesc ؛ } public void setroledesc (string roledesc) {this.roledesc = roledesc ؛ } column (طول = 100) السلسلة العامة getRolename () {return rolename ؛ } public void setrolename (string rolename) {this.rolename = rolename ؛ } column (length = 100) public string getRole () {return are ؛ } public void setRole (string rout) {this.role = rol ؛ } // تعديل سياسة Cascade إلى العلاقة cascade onetomany (الهدف = إذن eberversjoincolumns =@joincolumn (name = "SERMISSONID" ، aravizedColumnName = "id" ، quision = true)) مجموعة عامة <إذن> getPermissions () {أذونات الإرجاع ؛ } public void setPermissions (set <إذن> أذونات) {this.permissions = الأذونات ؛ } Override public boolean يساوي (Object OBJ) {if (obj extureof rol) {rol rob = (rol) obj ؛ إرجاع this.roleid == (rol.getRoleId ()) && this.rolename.equals (rol.getRolename ()) && this.roledesc.equals (roly.getroledesc ()) && this.role.equals (rol.getrole ()) ؛ } return super.equals (obj) ؛ }}فئة كيان معلومات الإذن:
package org.muses.jeepatform.core.entity.admin ؛ import java.io.serializable ؛ import java.util.hashset ؛ import java.util.set ؛ import javax.persistence.cascadetype ؛ import javax.persistence.column ؛ import javax.persence.entity ؛ javax.persistence.fetchtype ؛ import javax.persistence.generatedvalue ؛ import javax.persistence.generationtype ؛ import javax.persistence javax.persistence.onetoOne ؛ استيراد javax.persistence.table ؛/*** description class لعملية الإذن* Author nicky* date 6 مارس 2017*/ @table (name = "sys_permission") @entitypublic class parmissipes serializable {private in id ؛ سلسلة خاصة pdesc ؛ اسم السلسلة الخاصة ؛ خاص ثابت نهائي طويل المسبانيويد = 1L ؛ قائمة القائمة الخاصة ؛ مجموعة خاصة <Curpion> العمليات = new Hashset <Pownerve> () ؛ إذن عام () {super () ؛ } generatedValue (الاستراتيجية = generType.Identity) id public int getId () {return this.id ؛ } public void setId (int id) {this.id = id ؛ } column (length = 100) public string getpdesc () {return this.pdesc ؛ } public void setpdesc (سلسلة pdesc) {this.pdesc = pdesc ؛ } column (length = 100) public string getName () {return this.name ؛ } public void setName (اسم السلسلة) {this.name = name ؛ } onetoOne (targetentity = menu.class ، cascade = cascadetype.refresh ، fetch = betchtype.eager) joincolumn (name = "menuid" ، alucationColumnName = "Menuid") getMenu () {return Menu ؛ } public void setMenu (قائمة قائمة) {this.menu = menu ؛ } manytomany (targetentity = operation.class ، cascade = cascadetype.merge ، fetch = fetchtype.eager) jointable (name = "sys_permission_operation" ، joincolumns =@joincolumn (name = "SERMISSONID" ، aluadedcolumnname = "id") ، inversejoincolumns =@joincolumn (name = "operationId" ، alnadedColumnname = "id") public set <Petaric> petcopations () {return. } public void setPortations (set <Process> operations) {this.operations = Operations ؛ }}قم بتنفيذ فئة كيان معلومات القائمة ، باستخدام JPA لتنفيذها
package org.muses.jeepatform.core.entity.admin ؛ استيراد javax.persistence.* ؛ استيراد java.io.serializable ؛ استيراد java.util.list ؛/*** @ @ @ @ @intity intity serial intity serialize intity serialize serialize serialize serialize serialize serialize serialize serialize serialize serialize serialible / ** معرف القائمة ** / private int menuid ؛ / ** معرف Superior **/ Private Int ParentId ؛ / ** اسم القائمة **/ سلسلة خاصة menuname ؛ / ** أيقونة القائمة **/ السلسلة الخاصة menuicon ؛ / ** url url **/ private string menuurl ؛ / ** نوع القائمة **/ سلسلة خاصة menutype ؛ / ** القائمة فرز **/ سلسلة السلسلة الخاصة ؛ / ** حالة القائمة **/ سلسلة خاصة menustatus ؛ قائمة خاصة <menu> القائمة الفرعية ؛ هدف السلسلة الخاصة ؛ خاص منطقي Hassubmenu = خطأ ؛ القائمة العامة () {super () ؛ } idgeneratedValue (strategy = genertype.Identity) public int getMenuid () {return this.menuid ؛ } public void setMenuid (int menuid) {this.menuid = menuid ؛ } column (length = 100) public int getParentId () {return parentId ؛ } public void setParentId (int parentId) {this.parentId = parentId ؛ } column (length = 100) سلسلة عامة getMenUname () {return this.menuname ؛ } public void setMenuname (String menuname) {this.menuname = menuname ؛ } column (length = 30) سلسلة عامة getMenuicon () {return this.menuicon ؛ } public void setMenuicon (String menuicon) {this.menuicon = menuicon ؛ } column (length = 100) سلسلة عامة getMenuurl () {return this.menuurl ؛ } public void setMenuurl (String menuurl) {this.menuurl = menuurl ؛ } column (طول = 100) سلسلة عامة getMenUtype () {return this.menutype ؛ } public void setMenUtype (String menutype) {this.menUtype = menutype ؛ } column (طول = 10) سلسلة عامة getMenuorder () {return menuorder ؛ } public void setMenuOrder (String menuorder) {this.menuorder = menuorder ؛ } column (طول = 10) سلسلة عامة getMenustatus () {return menustatus ؛ } public void setMenustatus (String menustatus) {this.menustatus = menustatus ؛ } transient public list <MANE> GETUBMENU () {return submenu ؛ } public void setSubMenu (قائمة <Mens> submenu) {this.submenu = submenu ؛ } public void settarget (سلسلة الهدف) {this.target = target ؛ } transient public string getTarget () {return target ؛ } public void sethassubmenu (boolean hassubmenu) {this.hassubmenu = hassubmenu ؛ } transient public boolean gethassubmenu () {return hassubmenu ؛ }}تنفيذ واجهة JParePository
package org.muses.jeepatform.core.dao.repository.admin ؛ import org.muses.jeepatform.core.entity.admin.role ؛ import org.springframework.data.jpa.repository.jparepository ؛/** ** **. */الواجهة العامة RolerePository يمتد JParePository <الدور ، integer> {}تنفيذ واجهة JParePository
package org.muses.jeepatform.core.dao.repository.admin ؛ import org.muses.jeepatform.core.entity.admin.menu ؛ import org.springframework.data.jpa.jpository */الواجهة العامة menutreeRepository يمتد JParePository <القائمة ، integer> {}فئة خدمة الأدوار:
package org.muses.jeepatform.service ؛ import com.google.common.collect.lists ؛ import org.muses.jeepatform.core.dao.repository.admin.rolepagerepository ؛ import org.muses.jeepatform.core.entity.admin.role ؛ org.springframework.beans.factory.annotation.autowired ؛ استيراد org.springframework.data.domain.pagerequest 2017/7/30. */ @servicepublic class rolepageservice {autowired rolepagerepository rolerepository ؛ / ** * بناء كائن pagerequest * param num * param size * param asc * param string * @return */ parcerquest buildpagerequest (int num ، int ، sort.direction asc ، string string) {return new pagerequest (num-1 ، size ، string) ؛ } / *** احصل على جميع معلومات القائمة وعرضها على الصفحات* param pageno* العدد الحالي للصفحات* paramizize* عدد الصفحات لكل صفحة* @REGARER* / public page <row> findall (int pageno ، int pagesize ، sort.direction dir ، string str) {pagerequest pagerequest = builpagerequest ، page. الصفحة <row> أدوار = rolerepository.findall (pagerequest) ؛ أدوار العودة ؛ } القائمة العامة <row> bindallrole () {iterable <row> roles = rolerepository.findall () ؛ قائمة <row> myList = lists.newarrayList (أدوار) ؛ إرجاع MyList ؛ } / ** * ابحث عن معلومات الدور بناءً على معرف الدور * param rowiD * @REGANT * / public ondbyroleid (string rolyid) {return rolerepository.findone (integer.parseint (robeID)) ؛ } / *** حفظ معلومات الدور* param row* / public void dosave (دور الدور) {rolerepository.save (دور) ؛ }}فئة خدمة القائمة:
package org.muses.jeepplatform.service ؛ import org.muses.jeepplatform.annotation.rediscache ؛ import org.muses.jeepplatform.common.rediscachenamespace ؛ import org.muses.jeepplatform.core.dao.repository.admin.menemen org.muses.jeepplatform.core.entity.admin.menu ؛ استيراد org.springframework.beans.factory.annotation.autowired نيكي في 2017/6/17. */ @servicepublic class menuTreeservice {autowired menuTreeReErepository menutreeRePository ؛ /*** Query All Menus* @Return*/transactional // @rediscache public list <MANE> FindAll () {return menutreeRepository.findall () ؛ }}في فئة وحدة التحكم ، استخدم معرف الدور للحصول على القائمة التي يمكن أن يظهرها الدور:
/** * القفز إلى صفحة ترخيص الأدوار * param robam * param model * @return */ @requestmapping (value = "/goAuthorise") السلسلة العامة goauth ( @requestparam string rolid ، نموذج نموذج) دور دور = roleservice.findbyroleid (roldId) ؛ تعيين <إذن> haspermissions = null ؛ if (rol! = null) {haspermissions = rob.getPermissions () ؛ } لـ (القائمة m: menulist) {for (إذن p: haspermissions) {if (p.getMenu (). getMenuid () == m.getMenuid ()) {m.SethAssubMenu (true) ؛ }}} model.addattribute ("rolyId" ، roleID) ؛ jsonarray jsonarray = jsonarray.fromObject (menulist) ؛ String json = jsonarray.toString () ؛ json = json.replaceall ("menuid" ، "id"). replaceall ("parentid" ، "pid"). replaceall ("menuname" ، "name"). replaceall ("hassubmenu" ، "checked") ؛ model.addattribute ("Menus" ، JSON) ؛ إرجاع "المسؤول/الدور/rob_auth" ؛ }في الواجهة الأمامية ، يتم تحقيق عرض قائمة الأشجار من خلال Ztree ، ثم يتم تنفيذ ترخيص الدور عن طريق التحقق:
<٪@ page contentType = "text/html ؛ charset = utf-8" pageencoding = "utf-8" ٪> <٪@ taglib prefix = "c" uri = "http://java.sun.com/jsp/jstl/core uri = "http://java.sun.com/jsp/jstl/fmt" ٪> <٪ string path = request.getContextPath () ؛ String basePath = request.getScheme ()+": //"+request.getServerName ()+": charset = "utf-8"/> <meta http-equiv = "x-ua-conmable" content = "ie = edge"> <meta name = "viewport" content = "width = width device ، script-script = 1"> <title> insert title هنا </title> <! src = "$ {basepath} static/js/jquery-1.8.3.js"> </script> <!-تقديم نهاية مكتبة jQuery-> <script type = "text/javaScript" src = "<٪ = basepath> plugins/zdialog/zdialog.js src = "<٪ = basepath ٪> plugins/zdialog/zdrag.js"> </script> <script type = "text/javaScript" src = "<٪ = basepath ٪> plugins/zdialog/zdrag.js src = "<٪ = basepath ٪> plugins/zdialog/zprogress.js"> </script> <link rel = "stylesheet" href = "<٪ = basepath ٪> plugins/ztree/3.5/ztreestyle.css src = "<٪ = basepath ٪> plugins/ztree/3.5/jQuery-1.4.4.min.js"> </script> <script type = "text/javaScript" src = "<٪ = basepath ٪> plugins/ztree/3.5/jquery.ztree.core.core src = "<٪ = basepath ٪> plugins/ztree/3.5/jQuery.ztree.excheck.js"> </script> <script type = "text/javaScript"> <!- var setting = {check: {enable: true} ، data: {simpledata: {enable: ! var znodes = eval (json) ؛ رمز var ؛ وظيفة setCheck () {var ztree = $ .fn.ztree.getztreeObj ("treedemo") ، py = $ ("#py"). attr ("checked")؟ "P": "" ، sy = $ ("#sy"). attr ("checked")؟ "S": "" ، pn = $ ("#pn"). attr ("checked")؟ "P": "" ، sn = $ ("#sn"). attr ("checked")؟ "s": "" ، type = {"y": py + sy ، "n": pn + sn} ؛ ztree.setting.check.chkboxtype = type ؛ showcode ('setting.check.chkboxtype = {"y": "' + type.y + '" ، "n": "' + type.n + '"} ؛') ؛ } وظيفة العرض (str) {if (! code) code = $ ("#code") ؛ Code.Empty () ؛ code.append ("<li>"+str+"</li>") ؛ } $ (document) .Ready (function () {$ .fn.ztree.init ($ ("#treedemo") ، setting ، znodes) ؛ setCheck () ؛ $ ("#py"). bind ("change" ، setCheck) ؛ $ ( $ ("#sn"). bind ("Change" ، setCheck) ؛ //-> dialogclose function () {parentdialog.close () ؛ } دالة dosave () {var ztree = $ .fn.ztree.getztreeObj ("treedemo") ؛ VAR NOGES = ZTREE.GETCHECKEDNODES () ؛ var tmpnode ؛ var ids = "" ؛ لـ (var i = 0 ؛ i <nodes.length ؛ i ++) {tmpnode = noles [i] ؛ if (i! = nodes.length-1) {ids += tmpnode.id +"،" ؛ } آخر {ids += tmpnode.id ؛ }} var roboD = $ {inbreid} ؛ var params = roliD +"؛" +ids ؛ تنبيه (IDS) ؛ $ .ajax ({type: "post" ، url: 'ult/eventise.do' ، data: {params: params ، tm: new date (). DoDialogclose () ؛ } </script> </head> <body> <viv> <viv> <ul id = "treedemo"> </ul> </viv> </viv> <type type = "button" onClick = "dosave () type = "button" value = "close"/> </body> </html>رابط مشروع GitHub Open Source للفريق: https://github.com/u014427391/jeepatform
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.