国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

用戶資源(菜單)控制學(xué)習(xí)使用

這篇具有很好參考價(jià)值的文章主要介紹了用戶資源(菜單)控制學(xué)習(xí)使用。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

效果圖

用戶資源(菜單)控制學(xué)習(xí)使用,java
用戶資源(菜單)控制學(xué)習(xí)使用,java

第一步 需要再定義常量資源

//信訪聽證 資源前綴
    public static final String RESPREFIX_MODULE_XINFTZ_="module_xinftz_";
    //聽證專家?guī)?/span>
    public static final ConstantItem RES_MODULE_XINFTZ_TINGZZJK = new ConstantItem(RESPREFIX_MODULE_XINFTZ_ + "tingzzjk","聽證專家?guī)?);
    //聽證模板庫
    public static final ConstantItem RES_MODULE_XINFTZ_TINGZMBK = new ConstantItem(RESPREFIX_MODULE_XINFTZ_ + "tingzmbk","聽證模板庫");
    //聽證模板庫
    public static final String RESPREFIX_MODULE_XINFTZMBK_="module_xinftzmbk_";//聽證模板庫
    public static final ConstantItem RES_MODULE_XINFTZ_TINGZMBK_PILDRMB = new ConstantItem(RESPREFIX_MODULE_XINFTZMBK_+"pildrmb","批量導(dǎo)入模板");
    public static final ConstantItem RES_MODULE_XINFTZ_TINGZMBK_DAORMB = new ConstantItem(RESPREFIX_MODULE_XINFTZMBK_+"daormb","導(dǎo)入模板");
    public static final ConstantItem RES_MODULE_XINFTZ_TINGZMBK_BIANJ = new ConstantItem(RESPREFIX_MODULE_XINFTZMBK_+"bianj","編輯");
    public static final ConstantItem RES_MODULE_XINFTZ_TINGZMBK_SHANC = new ConstantItem(RESPREFIX_MODULE_XINFTZMBK_+"shanc","刪除");
    public static final ConstantItem RES_MODULE_XINFTZ_TINGZMBK_TUODBS = new ConstantItem(RESPREFIX_MODULE_XINFTZMBK_+"tuodbs","拖動(dòng)標(biāo)識(shí)");

第二部組裝數(shù)據(jù)

    private static final String RESCATEGORY_MODULE_XINFTZ=XysdSysConstants.RESPREFIX_MODULE_XINFTZ_;//信訪聽證
    private static final String RESCATEGORY_MODULE_XINFTZ_TINGZZJK=(String)XysdSysConstants.RES_MODULE_XINFTZ_TINGZZJK.getId();//聽證專家?guī)?/span>
    private static final String RESCATEGORY_MODULE_XINFTZ_TINGZMBK=(String)XysdSysConstants.RES_MODULE_XINFTZ_TINGZMBK.getId();//聽證模板庫
    private static final String RESPREFIX_MODULE_XINFTZMBK=(String)XysdSysConstants.RESPREFIX_MODULE_XINFTZMBK_;//聽證模板庫
    private static final String RESCATEGORY_MODULE_XINFTZ_TINGZDJ=(String)XysdSysConstants.RES_MODULE_XINFTZ_TINGZDJ.getId();//聽證登記
    private static final String RESCATEGORY_MODULE_XINFTZ_BENDWTZCX=(String)XysdSysConstants.RES_MODULE_XINFTZ_BENDWTZCX.getId();//本單位聽證查詢
    private static final String RESCATEGORY_MODULE_XINFTZ_ZERDWTZCX=(String)XysdSysConstants.RES_MODULE_XINFTZ_ZERDWTZCX.getId();//責(zé)任單位聽證查詢
    private static final String RESCATEGORY_MODULE_XINFTZ_BENDWCYTZCX=(String)XysdSysConstants.RES_MODULE_XINFTZ_BENDWCYTZCX.getId();//本單位參與聽證查詢
    private static final String RESCATEGORY_MODULE_XINFTZ_TINGZTJ=(String)XysdSysConstants.RES_MODULE_XINFTZ_TINGZTJ.getId();//聽證統(tǒng)計(jì)
    private static final String RESCATEGORY_MODULE_XINFTZ_TINGZMBKT_PILDRMB=(String)XysdSysConstants.RES_MODULE_XINFTZ_TINGZMBK_PILDRMB.getId();//批量導(dǎo)入模板
    private static final String RESCATEGORY_MODULE_XINFTZ_TINGZMBKT_DAORMB=(String)XysdSysConstants.RES_MODULE_XINFTZ_TINGZMBK_DAORMB.getId();//導(dǎo)入模板
    private static final String RESCATEGORY_MODULE_XINFTZ_TINGZMBKT_BIANJ=(String)XysdSysConstants.RES_MODULE_XINFTZ_TINGZMBK_BIANJ.getId();//編輯
    private static final String RESCATEGORY_MODULE_XINFTZ_TINGZMBKT_SHANC=(String)XysdSysConstants.RES_MODULE_XINFTZ_TINGZMBK_SHANC.getId();//刪除
    private static final String RESCATEGORY_MODULE_XINFTZ_TINGZMBKT_TUODBS=(String)XysdSysConstants.RES_MODULE_XINFTZ_TINGZMBK_TUODBS.getId();//拖動(dòng)標(biāo)識(shí)
private List<TreeNode> buildTreeNodes(List<SysDataSimpleDTO> resList) {
 	List<TreeNode> nodes=new ArrayList<>();
  	List<TreeNode> xinftzResList=new ArrayList<>();//信訪聽證
   xinftzResList.add(new TreeNode(RESCATEGORY_MODULE_XINFTZ,"信訪聽證",null,"root",false,"Category",false));
        
    List<TreeNode> xinftmbkzResList=new ArrayList<>();//信訪聽證
    xinftmbkzResList.add(new TreeNode(RESPREFIX_MODULE_XINFTZMBK,"聽證模板庫",null,"root",false,"Category",false));
}


 if(res.getId().startsWith(RESCATEGORY_MODULE_XINFTZ_TINGZZJK)){//信訪聽證-聽證專家?guī)?/span>
                if(!handledRes.containsKey(RESCATEGORY_MODULE_XINFTZ_TINGZZJK)) {
                    xinftzResList.add(new TreeNode(RESCATEGORY_MODULE_XINFTZ_TINGZZJK,"聽證專家?guī)?,null,RESCATEGORY_MODULE_XINFTZ,false,"Category",false));
                    handledRes.put(RESCATEGORY_MODULE_XINFTZ_TINGZZJK, new SysDataSimpleDTO());
                }
                continue;
            }
            if(res.getId().startsWith(RESCATEGORY_MODULE_XINFTZ_TINGZDJ)){//信訪聽證-聽證登記
                if(!handledRes.containsKey(RESCATEGORY_MODULE_XINFTZ_TINGZDJ)) {
                    xinftzResList.add(new TreeNode(RESCATEGORY_MODULE_XINFTZ_TINGZDJ,"聽證登記",null,RESCATEGORY_MODULE_XINFTZ,false,"Category",false));
                    handledRes.put(RESCATEGORY_MODULE_XINFTZ_TINGZDJ, new SysDataSimpleDTO());
                }
                continue;
            }
            if(res.getId().startsWith(RESCATEGORY_MODULE_XINFTZ_BENDWTZCX)){//信訪聽證-本單位聽證查詢
                if(!handledRes.containsKey(RESCATEGORY_MODULE_XINFTZ_BENDWTZCX)) {
                    xinftzResList.add(new TreeNode(RESCATEGORY_MODULE_XINFTZ_BENDWTZCX,"本單位聽證查詢",null,RESCATEGORY_MODULE_XINFTZ,false,"Category",false));
                    handledRes.put(RESCATEGORY_MODULE_XINFTZ_BENDWTZCX, new SysDataSimpleDTO());
                }
                continue;
            }
            if(res.getId().startsWith(RESCATEGORY_MODULE_XINFTZ_ZERDWTZCX)){//信訪聽證-責(zé)任單位聽證查詢
                if(!handledRes.containsKey(RESCATEGORY_MODULE_XINFTZ_ZERDWTZCX)) {
                    xinftzResList.add(new TreeNode(RESCATEGORY_MODULE_XINFTZ_ZERDWTZCX,"責(zé)任單位聽證查詢",null,RESCATEGORY_MODULE_XINFTZ,false,"Category",false));
                    handledRes.put(RESCATEGORY_MODULE_XINFTZ_ZERDWTZCX, new SysDataSimpleDTO());
                }
                continue;
            }
            if(res.getId().startsWith(RESCATEGORY_MODULE_XINFTZ_BENDWCYTZCX)){//信訪聽證-本單位參與聽證查詢
                if(!handledRes.containsKey(RESCATEGORY_MODULE_XINFTZ_BENDWCYTZCX)) {
                    xinftzResList.add(new TreeNode(RESCATEGORY_MODULE_XINFTZ_BENDWCYTZCX,"本單位參與聽證查詢",null,RESCATEGORY_MODULE_XINFTZ,false,"Category",false));
                    handledRes.put(RESCATEGORY_MODULE_XINFTZ_BENDWCYTZCX, new SysDataSimpleDTO());
                }
                continue;
            }
            if(res.getId().startsWith(RESCATEGORY_MODULE_XINFTZ_TINGZTJ)){//信訪聽證-聽證統(tǒng)計(jì)
                if(!handledRes.containsKey(RESCATEGORY_MODULE_XINFTZ_TINGZTJ)) {
                    xinftzResList.add(new TreeNode(RESCATEGORY_MODULE_XINFTZ_TINGZTJ,"聽證統(tǒng)計(jì)",null,RESCATEGORY_MODULE_XINFTZ,false,"Category",false));
                    handledRes.put(RESCATEGORY_MODULE_XINFTZ_TINGZTJ, new SysDataSimpleDTO());
                }
                continue;
            }
            if(res.getId().startsWith(RESCATEGORY_MODULE_XINFTZ_TINGZMBK)){//信訪聽證-聽證模板庫
                if(!handledRes.containsKey(RESCATEGORY_MODULE_XINFTZ_TINGZMBK)) {
                    xinftzResList.add(new TreeNode(RESCATEGORY_MODULE_XINFTZ_TINGZMBK,"聽證模板庫",null,RESCATEGORY_MODULE_XINFTZ,false,"Category",false));
                    handledRes.put(RESCATEGORY_MODULE_XINFTZ_TINGZMBK, new SysDataSimpleDTO());
                }
                xinftzResList.add(new TreeNode(res.getId(),res.getName(),null,RESCATEGORY_MODULE_XINFTZ_TINGZMBK,false,"Res",false));
                continue;
            }

if(res.getId().startsWith(RESCATEGORY_MODULE_XINFTZ_TINGZMBKT_PILDRMB)){//信訪聽證-聽證模板庫批量導(dǎo)入
                if(!handledRes.containsKey(RESCATEGORY_MODULE_XINFTZ_TINGZMBKT_PILDRMB)) {
                    xinftmbkzResList.add(new TreeNode(RESCATEGORY_MODULE_XINFTZ_TINGZMBKT_PILDRMB,"批量導(dǎo)入模板",null,RESPREFIX_MODULE_XINFTZMBK,false,"Category",false));
                    handledRes.put(RESCATEGORY_MODULE_XINFTZ_TINGZMBKT_PILDRMB, new SysDataSimpleDTO());
                }
                xinftmbkzResList.add(new TreeNode(res.getId(),res.getName(),null,RESCATEGORY_MODULE_XINFTZ_TINGZMBKT_PILDRMB,false,"Res",false));
                continue;
            }
            if(res.getId().startsWith(RESCATEGORY_MODULE_XINFTZ_TINGZMBKT_DAORMB)){//信訪聽證-聽證模板庫導(dǎo)入模板
                if(!handledRes.containsKey(RESCATEGORY_MODULE_XINFTZ_TINGZMBKT_DAORMB)) {
                    xinftmbkzResList.add(new TreeNode(RESCATEGORY_MODULE_XINFTZ_TINGZMBKT_DAORMB,"導(dǎo)入模板",null,RESPREFIX_MODULE_XINFTZMBK,false,"Category",false));
                    handledRes.put(RESCATEGORY_MODULE_XINFTZ_TINGZMBKT_DAORMB, new SysDataSimpleDTO());
                }
                xinftmbkzResList.add(new TreeNode(res.getId(),res.getName(),null,RESCATEGORY_MODULE_XINFTZ_TINGZMBKT_DAORMB,false,"Res",false));
                continue;
            }
            if(res.getId().startsWith(RESCATEGORY_MODULE_XINFTZ_TINGZMBKT_BIANJ)){//信訪聽證-聽證模板庫編輯
                if(!handledRes.containsKey(RESCATEGORY_MODULE_XINFTZ_TINGZMBKT_BIANJ)) {
                    xinftmbkzResList.add(new TreeNode(RESCATEGORY_MODULE_XINFTZ_TINGZMBKT_BIANJ,"編輯",null,RESPREFIX_MODULE_XINFTZMBK,false,"Category",false));
                    handledRes.put(RESCATEGORY_MODULE_XINFTZ_TINGZMBKT_BIANJ, new SysDataSimpleDTO());
                }
                xinftmbkzResList.add(new TreeNode(res.getId(),res.getName(),null,RESCATEGORY_MODULE_XINFTZ_TINGZMBKT_BIANJ,false,"Res",false));
                continue;
            }
            if(res.getId().startsWith(RESCATEGORY_MODULE_XINFTZ_TINGZMBKT_SHANC)){//信訪聽證-聽證模板庫刪除
                if(!handledRes.containsKey(RESCATEGORY_MODULE_XINFTZ_TINGZMBKT_SHANC)) {
                    xinftmbkzResList.add(new TreeNode(RESCATEGORY_MODULE_XINFTZ_TINGZMBKT_SHANC,"刪除",null,RESPREFIX_MODULE_XINFTZMBK,false,"Category",false));
                    handledRes.put(RESCATEGORY_MODULE_XINFTZ_TINGZMBKT_SHANC, new SysDataSimpleDTO());
                }
                xinftmbkzResList.add(new TreeNode(res.getId(),res.getName(),null,RESCATEGORY_MODULE_XINFTZ_TINGZMBKT_SHANC,false,"Res",false));
                continue;
            }
            if(res.getId().startsWith(RESCATEGORY_MODULE_XINFTZ_TINGZMBKT_TUODBS)){//信訪聽證-聽證模板庫拖動(dòng)標(biāo)識(shí)
                if(!handledRes.containsKey(RESCATEGORY_MODULE_XINFTZ_TINGZMBKT_TUODBS)) {
                    xinftmbkzResList.add(new TreeNode(RESCATEGORY_MODULE_XINFTZ_TINGZMBKT_TUODBS,"拖動(dòng)標(biāo)識(shí)",null,RESPREFIX_MODULE_XINFTZMBK,false,"Category",false));
                    handledRes.put(RESCATEGORY_MODULE_XINFTZ_TINGZMBKT_TUODBS, new SysDataSimpleDTO());
                }
                xinftmbkzResList.add(new TreeNode(res.getId(),res.getName(),null,RESCATEGORY_MODULE_XINFTZ_TINGZMBKT_TUODBS,false,"Res",false));
                continue;
   }
 //信訪聽證資源
 nodes.addAll(xinftzResList);
//信訪聽證模板庫資源
nodes.addAll(xinftmbkzResList); 
 return nodes;

第三步 定義接口

@ApiOperation(value="樹-獲取所有節(jié)點(diǎn)", httpMethod="POST")
    @ApiImplicitParam(name="params", value="參數(shù)集合", dataType="Map<String,String>")
    @RequestMapping(value="/allnodes/get",method=RequestMethod.POST)
    public ApiResultDTO<List<TreeNode>> getAllTreeNodes(@RequestBody Map<String,String> params,HttpServletRequest hreq){
        return RestAPITemplate.restapi(new IMyLogic<List<TreeNode>>() {
            @Override
            public List<TreeNode> logic() {
                AccessTokenUser user=new AccessTokenUserAssembler().getAccessTokenUserFromReq(hreq);
                String treeType=params.get("treeType");
                ITreeService treeService=getTreeServiceByTreeType(treeType);
                return treeService.getAllTreeNodes(user, params);
            }
        });
    }

public List<TreeNode> getAllTreeNodes(AccessTokenUser user,Map<String, String> params) {
        List<SysDataSimpleDTO> resList=systemGatewayService.findAllResList();
        List<TreeNode> nodes=this.buildTreeNodes(resList);
        return nodes;
    }

返回值模型

ApiModel(value="MenuDTO ",description="菜單模型")
@JsonIgnoreProperties(ignoreUnknown=true)
public class MenuDTO {
	@ApiModelProperty(value="菜單標(biāo)識(shí)")
	private String id;
    @ApiModelProperty(value="菜單名稱")
	private String name;
    @ApiModelProperty(value="菜單名稱簡稱")
    private String simpleName;
    @ApiModelProperty(value="菜單打開的鏈接地址")
	private String url;
    @ApiModelProperty(value="菜單描述")
	private String description;
    @ApiModelProperty(value="是否顯示")
    private Boolean isShow = false;
    @ApiModelProperty(value="子菜單")
	private List<MenuDTO> submenus = new ArrayList<MenuDTO>();
    
    
    public String getId() {
		return id;
	}
	public String getName() {
		return name;
	}
	public String getSimpleName() {
		return simpleName;
	}
	public String getUrl() {
		return url;
	}
	public String getDescription() {
		return description;
	}
    public void setSubmenus(List<MenuDTO> submenus) {
        this.submenus = submenus;
    }
    public List<MenuDTO> getSubmenus() {
		return submenus;
	}
    public Boolean getShow() {
        return isShow;
    }
    public void setShow(Boolean show) {
        isShow = show;
    }
    
    
    public MenuDTO() {
        super();
    }
    public MenuDTO(String id, String name, String simpleName) {
        super();
        this.id = id;
        this.name = name;
        this.simpleName=simpleName;
        if(StringUtils.isNotBlank(name) && StringUtils.isBlank(simpleName)){
            this.simpleName=name.substring(0,2);
        }
    }
    public MenuDTO(String id, String name, String simpleName, String url, String description) {
        super();
        this.id = id; 
        this.name = name;
        this.simpleName=simpleName;
        if(StringUtils.isNotBlank(name) && StringUtils.isBlank(simpleName)){
            this.simpleName=name.substring(0,2);
        }
        this.url = url;
        this.description = description;
    }
    
    
    /**************************************************************開始格式化數(shù)據(jù)方法**************************************************************/
    /**
     * 是否有子菜單
     * @return
     */
    public boolean isHasSubMenus() {
        return this.submenus.size()>0;
    }
    
}

請(qǐng)求參數(shù)

{
  "treeType": "resourceTree"
}

返回值

用戶資源(菜單)控制學(xué)習(xí)使用,java

效果圖

用戶資源(菜單)控制學(xué)習(xí)使用,java

將用戶與資源關(guān)聯(lián)

@AuditLogEnregistor(module="角色管理",action="保存")
    @ApiOperation(value="保存角色", httpMethod="POST")
    @ApiImplicitParam(name="roleDTO", value="角色詳情", required=true)
    @RequestMapping(value="/save", method=RequestMethod.POST)
    public ApiResultDTO<RoleDTO> saveRole(@RequestBody RoleDTO roleDTO,HttpServletRequest hreq) {
        return RestAPITemplate.restapi(new IMyLogic<RoleDTO>() {
            @Override
            public RoleDTO logic() {
                AccessTokenUser user=new AccessTokenUserAssembler().getAccessTokenUserFromReq(hreq);
                roleService.saveRole(user,null,roleDTO);
                return roleDTO;
            }
        });
    }

public void saveRole(AccessTokenUser user, Date operateTime, RoleDTO roleDTO) {
        if(roleDTO.getParent()==null||StringUtils.isBlank(roleDTO.getParent().getId())){
            throw new RuntimeException("請(qǐng)選擇上級(jí)節(jié)點(diǎn)!");
        }
        //this.checkRoleCanEditByRoleName(roleDTO.getName());//檢查可編輯權(quán)限
        RoleDTOAssembler roleDTOAssembler=new RoleDTOAssembler(this.beansFactoryService);
        String roleId=roleDTO.getId();
        String parentId=roleDTO.getParent().getId();
        Role role=null;
        Role parent=this.roleRepository.getRoleById(parentId);
        if(parent==null){
            throw new RuntimeException("未找到上級(jí)節(jié)點(diǎn)!");
        }
        String oldParentId=null;
        Integer oldOrderNo=null;
        if(StringUtils.isBlank(roleId)){
			role = roleDTOAssembler.fromRoleDTO(roleDTO);
			role.updateCreateInfo(user, operateTime, parent);
        }else{
        	role=this.roleRepository.getRoleById(roleId);
            if(role==null){
                throw new RuntimeException("根據(jù)角色id未找到相應(yīng)的角色!");
            }
            //this.checkRoleCanEditByRoleName(role.getName());//檢查可編輯權(quán)限
            oldParentId=role.getParent().getId();
            oldOrderNo=role.getOrderNo();
            String name=roleDTO.getName();
            String visibleLevel=roleDTO.getVisibleLevel();
            String resourceCodes = roleDTO.obtainResourceCodes();
            String comments=roleDTO.getComments();
            int orderNo=roleDTO.getOrderNo();
            role.updateRole(user, operateTime, parent, name, visibleLevel, resourceCodes,comments, orderNo);
        }
        roleRepository.createOrUpdateRole(role);
        if (oldParentId==null || oldOrderNo==null || oldOrderNo!=role.getOrderNo() ||!oldParentId.equals(role.getParent().getId())){
            //更新fullId和fullOrder
            roleDomainService.updateRoleFullIdAndFullOrder(user, operateTime,role);
            roleRepository.createOrUpdateRole(role);
        }
        //更新角色 用戶關(guān)系
        roleDomainService.updateRoleUsers(user, operateTime,roleDTO.getUsers(),role);
        if (StringUtils.isBlank(roleDTO.getId())){
            roleDTO.setId(role.getId());
        }
    }

實(shí)體模型

@Entity
@Table(name = "T_ROLE")
public class Role extends ExBizEntity {
    public static final String NODETYPE_ROOT = "Root";
    public static final String NODETYPE_CATEGORY = "Category";
    public static final String NODETYPE_ROLE = "Role";
    
    @Column(length=200)
    private String name;//角色名稱
    @Column(length=20)
    private String nodeType;//節(jié)點(diǎn)類型
    @Column(length=100)
    private String visibleLevel;//可見級(jí)別
    @Column(columnDefinition="text")
    private String resourceCodes;//擁有的資源的資源編碼
    @OneToMany(mappedBy="roleId")
    @OrderBy("createTime,id")
    private Set<RoleUser> roleUsers = new LinkedHashSet<RoleUser>();//擁有此角色的用戶
	@Column(length = 500)
	private String fullId;//增強(qiáng)樹,全路徑
	@Column(length = 500)
	private String fullOrder;//增強(qiáng)樹排序
	@Column(length = 1000)
	private String comments;//說明
	private int orderNo = 0;//歸口順序號(hào)
	@ManyToOne(fetch = FetchType.LAZY)
	private Role parent;//父節(jié)點(diǎn)
	@OneToMany(mappedBy = "parent")
	@OrderBy("orderNo")
	private Set<Role> children = new HashSet<Role>();//子節(jié)點(diǎn)
   //todo 省略get方法
	public Role() {
        super();
    }
    public Role(String nodeType,String visibleLevel, String name, 
    		String resourceCodes,String comments, int orderNo) {
        super();
        this.nodeType = nodeType;
        this.visibleLevel = visibleLevel;
        this.name = name;
        this.resourceCodes = resourceCodes;
        this.comments = comments;
        this.orderNo = orderNo;
    }
    //為跟節(jié)點(diǎn)構(gòu)造
    private Role(AccessTokenUser user, Date operateTime, String name){
        this.setCreateInfo(new OperateInfo(user));
        
        this.id = getRoleRootId();
        this.nodeType = NODETYPE_ROOT;
        this.name = name;
        this.orderNo = 1;
        this.fullId = this.id+"-";
        this.fullOrder = 1+"-";
    }

    //獲取角色跟節(jié)點(diǎn)id
    @Transient
    public static String getRoleRootId(){
        return "rootRole";
    }
    //創(chuàng)建角色跟節(jié)點(diǎn)
    public static Role createRoleRoot( AccessTokenUser user,Date operateTime){
        Role root=new Role(user, operateTime, "角色管理");
        return root;
    }
    public void updateCreateInfo(AccessTokenUser user,Date operateTime, Role parent) {
        this.setCreateInfo(new OperateInfo(user));
        this.parent = parent;
    }
    public void updateRole(AccessTokenUser user, Date operateTime, 
    		Role parent,String name, String visibleLevel,
    		String resourceCodes,String comments, int orderNo) {
        if(operateTime==null){
            operateTime = new Date();
        }
        this.lastUpdateDate = operateTime;
        this.name = name;
        this.visibleLevel = visibleLevel;
        this.parent = parent;
        this.orderNo = orderNo;
        this.resourceCodes = resourceCodes;
        this.comments = comments;
    }
    //更新角色fullId和fullOrder
    public void updateRoleFullIdAndFullOrder(AccessTokenUser user, Date operateTime,String oldFullId,String oldFullOrder) {
        if(this.parent!=null){
            this.fullId = this.parent.getFullId()+this.id+"-";
            this.fullOrder = this.parent.getFullOrder()+Utils.lpadStr(this.orderNo+"",10,'0')+"-";
        }else{
            this.fullId = this.id+"-";
            this.fullOrder = Utils.lpadStr(this.orderNo+"",10,'0')+"-";
        }
        //如果fullId或者fullOrder發(fā)生改變
        if(!fullId.equals(oldFullId)||!fullOrder.equals(oldFullOrder)){
            if(operateTime==null){
                operateTime = new Date();
            }
            this.lastUpdateDate = operateTime;
        }
    }
}

@Entity
@Table(name = "T_USER_ROLE")
public class RoleUser extends ValueObjectEntity {
    @Column(length=100)
    private String roleId;//角色id
    @Column(length=200)
    private String roleName;//角色名稱
    @Column(length=100)
    private String userId;//用戶id
    @Column(length=200)
    private String userName;//用戶名稱
   //todo 省略get方法
	public RoleUser() {
		super();
	}
	public RoleUser(String roleId, String roleName, 
			String userId,String userName) {
		super();
		this.roleId = roleId;
		this.roleName = roleName;
		this.userId = userId;
		this.userName = userName;
	}

	//創(chuàng)建角色用戶關(guān)系
	public void createRoleUser(AccessTokenUser user,Date operateTime) {
	    this.setCreateInfo(new OperateInfo(user));
        this.id = this.userId+"_"+this.roleId;
	}

}

數(shù)據(jù)庫表數(shù)據(jù)

用戶資源(菜單)控制學(xué)習(xí)使用,java

系統(tǒng)顯示用戶擁有的菜單

定義接口
@ApiOperation(value="獲取框架菜單", httpMethod="GET")
    @RequestMapping(value="/menus/get", method=RequestMethod.GET)
    public ApiResultDTO<Map<String,List<MenuDTO>>> getHomePageMenus(@RequestParam(value = "fromType",required = false) String fromType, HttpServletRequest hreq,
    		HttpServletResponse hrep){
        return RestAPITemplate.restapi(new IMyLogic<Map<String,List<MenuDTO>>>() {
            @Override
            public Map<String,List<MenuDTO>> logic() {
                AccessTokenUser user = new AccessTokenUserAssembler().getAccessTokenUserFromReq(hreq);
                
                return layoutService.getLayoutMenus(user,fromType);
            }
        });
    }
Service服務(wù)+數(shù)據(jù)組裝
@Override
    public Map<String,List<MenuDTO>> getLayoutMenus(AccessTokenUser user,String fromType) {
        Map<String,List<MenuDTO>> result=new HashMap<String, List<MenuDTO>>();
        PrivilegesUser puser = ThreadLocalCache.fetchAPIData(
            "PrivilegesUser."+user.getUserId(),
            new IDataFetch<ApiResultDTO<PrivilegesUser>>() {
                @Override
                public ApiResultDTO<PrivilegesUser> fetchData() {
                    return systGatewayService.getPrivilegesUserById(user.getUserId());
                }
            }
        );
        puser.getOtherData().put("accessToken", user.getAccessToken());
        
        UserLayoutSetDTO layoutSet=this.getNotNullUserLayoutSet(user,fromType);
        Map<String,List<MenuDTO>> allMenus=this.getMyAllMenus(user,fromType);
        
        List<MenuDTO> leftTop = new ArrayList<MenuDTO>();//左菜單 上半部分
        result.put("leftTop", leftTop);
        List<WorkReminderDTO> gongztxq = layoutSet.getGongztxq();
        for (int i = 0; i < gongztxq.size(); i++) {
            for (MenuDTO menuDto : allMenus.get("gongztxq")) {
                if(menuDto==null) continue;
                if(menuDto.getId().equals(gongztxq.get(i).getMenuId()) && gongztxq.get(i).getShow()){
                    leftTop.add(menuDto);
                    break;
                }
            }
        }
        List<MenuDTO> leftBottom = new ArrayList<MenuDTO>();//左菜單 下半部分
        result.put("leftBottom", leftBottom);
//        Map<String,MenuDTO> changygnqMap=allMenus.get("changygnq").stream().collect(
//            Collectors.toMap(d->d.getId(), d->d)
//        );
        if(layoutSet.getChangygnq() != null){
            for (int i = 0; i < layoutSet.getChangygnq().size(); i++) {
                for (MenuDTO menuDto : allMenus.get("changygnq")) {
                    if(menuDto==null) continue;
                    if(menuDto.getSubmenus().size() > 0){
                        for (MenuDTO submenu : menuDto.getSubmenus()) {
                            if(submenu.getId().equals(layoutSet.getChangygnq().get(i))){
                                leftBottom.add(submenu);
                                break;
                            }
                        }
                    }else{
                        if(menuDto.getId().equals(layoutSet.getChangygnq().get(i))){
                            leftBottom.add(menuDto);
                        }
                    }
                }
            }
        }
        if (leftTop.size()==0){
            List<MenuDTO> leftBottom1 = result.get("leftBottom");
            result.put("leftTop",leftBottom1);
            result.put("leftBottom",new ArrayList<MenuDTO>());
        }
        return result;
    }
public Map<String,List<MenuDTO>> getMyAllMenus(AccessTokenUser user,String fromType) {
  List<MenuDTO> gongztxq = new ArrayList<>();//工作提醒區(qū)
        String quyName="gongztxq";
        result.put(quyName, gongztxq);
        //待辦
        if(puser.hasAppointPrefixResource((String)XysdSysConstants.RES_MODULE_SHOUY_DAIB_.getId())) {
            gongztxq.add(new MenuDTO(quyName+"_daib", "待辦", "待辦", "/xf/waitTodo", "待處理工作,需及時(shí)處理"));
        }
        //提醒
        if(puser.hasResource((String)XysdSysConstants.RES_MODULE_SHOUY_TIX.getId())) {
            gongztxq.add(new MenuDTO(quyName+"_tix", "提醒", "提醒", "/xf/remind", "新件、催辦、退辦等提醒"));
        }
        //預(yù)警 海淀 HDXF-21069 增加 預(yù)警飄窗,去掉這個(gè) 工作人員app,公交集團(tuán) 還是需要
        if (ValueObjectEntity.SYSCODE_GJJTXF.equals(BaseConstants.getProperty("syscode", null))
                || XysdConstants.TOKEN_FORMTYPE_APP.equals(user.obtainFromType())
                ||"gzapp".equals(fromType)){//處理PC登陸APP
           if(puser.hasAppointPrefixResource((String)XysdSysConstants.RES_MODULE_SHOUY_YUJ_.getId())) {
                gongztxq.add(new MenuDTO(quyName+"_yuj", "預(yù)警", "預(yù)警", "/xf/earlyWarn", "信訪三率預(yù)警"));
            }
        }
        //監(jiān)控
        if(puser.hasAppointPrefixResource((String)XysdSysConstants.RES_MODULE_SHOUY_JIANK_.getId())) {
            gongztxq.add(new MenuDTO(quyName+"_jiank", "監(jiān)控", "監(jiān)控", "/xf/monitor", "未結(jié)件跟進(jìn)辦理"));
        }
        //看板
        if(puser.hasResource((String)XysdSysConstants.RES_MODULE_SHOUY_KANB.getId())) {
            gongztxq.add(new MenuDTO(quyName+"_kanb", "看板", "看板", "/xf/bulletinBoard", "全區(qū)信訪統(tǒng)計(jì)分析"));
        }
        //數(shù)據(jù)分析
        if(puser.hasResource((String)XysdSysConstants.RES_MODULE_SHOUY_SHUJFX.getId())) {
            gongztxq.add(new MenuDTO(quyName+"_shujfx", "數(shù)據(jù)分析", "數(shù)據(jù)分析", "/xf/dataAnalysis", "數(shù)據(jù)分析"));
        }
  
   List<MenuDTO> defaultChangygnq = new ArrayList<MenuDTO>();//默認(rèn)常用功能區(qū)
        List<MenuDTO> changygnq = new ArrayList<MenuDTO>();//常用功能區(qū)
        quyName="changygnq";
        result.put(quyName, changygnq);
        result.put("defaultChangygnq", defaultChangygnq);
//查詢統(tǒng)計(jì)
        menuDTO = new MenuDTO(quyName+"_chaxtj", "查詢統(tǒng)計(jì)", "查詢統(tǒng)計(jì)");
        //查詢統(tǒng)計(jì)-查詢
        if(puser.hasAppointPrefixResource(XysdSysConstants.RESPREFIX_MODULE_XINF_CHAX_)) {
            MenuDTO cxMuDTO = new MenuDTO(quyName+"_chaxtj_xinfcx", "查詢", "查詢", "/xf/query", "辦理查詢");
            menuDTO.getSubmenus().add(cxMuDTO);
            defaultChangygnq.add(cxMuDTO);
        }
        //查詢統(tǒng)計(jì)-統(tǒng)計(jì)
        if(puser.hasAppointPrefixResource(XysdSysConstants.RESPREFIX_MODULE_TONGJBB_)) {
            MenuDTO tjMuDTO = new MenuDTO(quyName+"_chaxtj_tongj", "統(tǒng)計(jì)", "統(tǒng)計(jì)", "/xf/statistics", "統(tǒng)計(jì)中心,進(jìn)行各類統(tǒng)計(jì)");
            menuDTO.getSubmenus().add(tjMuDTO);
            defaultChangygnq.add(tjMuDTO);
        }
//信訪庫
        menuDTO = new MenuDTO(quyName+"_xinfk", "信訪庫", "信訪庫");
        //信訪庫-查詢
        if(puser.hasAppointPrefixResource(XysdSysConstants.RESPREFIX_MODULE_XINFK_CHAX_)) {
            menuDTO.getSubmenus().add(new MenuDTO(quyName+"_xinfk_chax", "信訪庫", "信訪庫", "/xf/infoLibrary", "信訪人、信訪件等集中查詢"));
        }
        //信訪庫-整理
        if(puser.hasAppointPrefixResource(XysdSysConstants.RESPREFIX_MODULE_XINFK_ZHENGL_)) {
            menuDTO.getSubmenus().add(new MenuDTO(quyName+"_xinfk_zhengl", "信訪庫整理", "信訪庫整理", "/xf/infoArrange", "信訪庫整理"));
        }
        if(menuDTO.isHasSubMenus()) {
            changygnq.add(menuDTO);
        }
      return result;
}

返回值

用戶資源(菜單)控制學(xué)習(xí)使用,java

效果圖

請(qǐng)看最上面文章來源地址http://www.zghlxwxcb.cn/news/detail-821283.html

到了這里,關(guān)于用戶資源(菜單)控制學(xué)習(xí)使用的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【華為OD機(jī)試真題】最大化控制資源成本(java&python)

    【華為OD機(jī)試真題 20222023】真題目錄 @點(diǎn)這里@ 【華為OD機(jī)試真題】信號(hào)發(fā)射和接收 試讀 @點(diǎn)這里@ 【華為OD機(jī)試真題】租車騎綠道 試讀 @點(diǎn)這里@ 公司創(chuàng)新實(shí)驗(yàn)室正在研究如何最小化資源成本,最大化資源利用率,請(qǐng)你設(shè)計(jì)算法幫他們解決一個(gè)任務(wù)混部問題:有taskNum項(xiàng)任 務(wù),每

    2023年04月13日
    瀏覽(27)
  • 使用cgroup工具對(duì)服務(wù)器某些/全部用戶進(jìn)行計(jì)算資源限制

    使用cgroup工具對(duì)服務(wù)器某些/全部用戶進(jìn)行計(jì)算資源限制

    主要介紹,如何對(duì)指定/所有用戶進(jìn)行資源限定(這里主要介紹cpu和內(nèi)存占用限制),防止某些用戶大量占用服務(wù)器計(jì)算資源,影響和擠占他人正常使用服務(wù)器。 安裝 cgroup 管理工具 使用 mount -t cgroup 命令檢查驗(yàn)證 可以通過編寫 /etc/cgconfig.conf 和 /etc/cgrules.conf 文件進(jìn)行計(jì)算資

    2024年02月10日
    瀏覽(28)
  • 解決不允許一個(gè)用戶使用一個(gè)以上用戶名與一個(gè)服務(wù)器或共享資源的多重連接的問題

    解決不允許一個(gè)用戶使用一個(gè)以上用戶名與一個(gè)服務(wù)器或共享資源的多重連接的問題

    用windows server 2012 r2 vl x64搭了個(gè)文件服務(wù)器,在使用時(shí)有個(gè)問題,老是用戶登錄有問題,提示“不允許一個(gè)用戶使用一個(gè)以上用戶名與一個(gè)服務(wù)器或共享資源的多重連接”。出現(xiàn)的原因不詳,網(wǎng)上也沒查到合理的解釋。 解決方法: 1、重新啟動(dòng)Workstation服務(wù) 2、用命令刪除當(dāng)前

    2024年02月13日
    瀏覽(29)
  • Spring MVC學(xué)習(xí)隨筆-控制器(Controller)開發(fā)詳解:控制器跳轉(zhuǎn)與作用域(二)視圖模板、靜態(tài)資源訪問

    Spring MVC學(xué)習(xí)隨筆-控制器(Controller)開發(fā)詳解:控制器跳轉(zhuǎn)與作用域(二)視圖模板、靜態(tài)資源訪問

    學(xué)習(xí)視頻:孫哥說SpringMVC:結(jié)合Thymeleaf,重塑你的MVC世界?。八从械腤eb開發(fā)探索之旅 銜接上文Spring MVC學(xué)習(xí)隨筆-控制器(Controller)開發(fā)詳解:控制器跳轉(zhuǎn)與作用域(一) SpingMVC中request作用域的處理 代碼 Model、ModelMap相關(guān)細(xì)節(jié)分析 通過Model、ModelMap進(jìn)行作用域處理,可以解決

    2024年02月05日
    瀏覽(34)
  • 【Samba】win 11 不允許一個(gè)用戶使用一個(gè)以上用戶名與服務(wù)器或共享資源的多重連接

    【Samba】win 11 不允許一個(gè)用戶使用一個(gè)以上用戶名與服務(wù)器或共享資源的多重連接

    之前使用兩個(gè)用戶登錄過,沒有釋放 1、打開cmd命令窗口: net use * /del /y 命令中斷開所有連接. 2、重新登錄 刪除后重啟

    2024年02月04日
    瀏覽(29)
  • 使用ACL限制不同網(wǎng)段的用戶控制訪問

    使用ACL限制不同網(wǎng)段的用戶控制訪問

    本實(shí)驗(yàn)將高級(jí)ACL應(yīng)用在流策略模塊,使設(shè)備可以對(duì)不同網(wǎng)段用戶互訪的報(bào)文進(jìn)行過濾,達(dá)到限制不同網(wǎng)段限制訪問的目的。 要求:先全網(wǎng)互通,后再使技術(shù)部不能訪問財(cái)務(wù)部,但技術(shù)部和財(cái)務(wù)部都可以訪問路由器。 LSW3 # vlan batch 10 20 30 interface Vlanif10 ?ip address 192.168.10.1 255.

    2024年02月09日
    瀏覽(21)
  • B站 Java相關(guān)學(xué)習(xí)資源匯總

    B站 Java相關(guān)學(xué)習(xí)資源匯總

    計(jì)算機(jī)網(wǎng)絡(luò)微課堂 https://www.bilibili.com/video/BV1c4411d7jb?p=1 講師:湖科大教書匠 評(píng)價(jià):通俗易懂,重點(diǎn)知識(shí)十分細(xì)致,配合實(shí)驗(yàn),而且有考研408 的難題的講解,也是非常適合考研黨,除了課程內(nèi)容外還有很多習(xí)題講解視頻。因此就業(yè)黨和考研黨都可以食用。 王道計(jì)算機(jī)考研 計(jì)

    2024年02月11日
    瀏覽(50)
  • 版本控制 | 如何使用虛幻引擎的多用戶編輯(MUE)功能

    版本控制 | 如何使用虛幻引擎的多用戶編輯(MUE)功能

    隨著現(xiàn)代虛擬制作技術(shù)的發(fā)展,電影制片廠不再需要完全依賴實(shí)際場景,而是可以在拍攝期間就讓虛擬制作設(shè)計(jì)團(tuán)隊(duì)將實(shí)景與計(jì)算機(jī)生成的虛擬內(nèi)容融合在一起。虛幻多用戶編輯(Unreal Multi-User Editing,簡稱MUE)可以幫助簡化這個(gè)過程。本篇文章將解釋什么是虛幻多用戶編輯,

    2024年02月02日
    瀏覽(15)
  • 【win11】Windows 11 恢復(fù)經(jīng)典文件資源管理器及右鍵菜單

    轉(zhuǎn)載大神的文章

    2024年02月13日
    瀏覽(96)
  • ImageJ 用戶手冊(cè)——第五部分(菜單命令Process)

    ImageJ 用戶手冊(cè)——第五部分(菜單命令Process)

    此菜單列出了與圖像處理相關(guān)的所有命令,包括多個(gè)圖像之間的點(diǎn)運(yùn)算、濾波器和算術(shù)運(yùn)算。 29.1 Smooth 使活動(dòng)圖像或所選內(nèi)容變暗。該濾波器將每個(gè)像素替換為其3×3鄰域的平均值。 29.2 Sharpen 增加對(duì)比度并突出圖像或選擇中的細(xì)節(jié),但也可能突出噪聲。該濾波器使用以下加權(quán)

    2023年04月26日
    瀏覽(26)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包