查看上篇文章通用數(shù)據(jù)級(jí)別權(quán)限的框架設(shè)計(jì)(1)-相關(guān)業(yè)務(wù)場(chǎng)景的分析"贫堰,我們要繼續(xù)做一些準(zhǔn)備工作穆壕。
- 我們先要設(shè)置當(dāng)前用戶信息的類
/**
* @description: 用戶對(duì)象
* @author: starmark
* @create: 2018-05-17 21:15
**/
@Data
public class UserVo {
private Long userId;
private String UserName;
/**
* 擁有的相關(guān)角色
*/
private Set<String> roles =new HashSet<>();
/**
* 相關(guān)的組織ID
*/
private List<Long> orgIds=new ArrayList<>();
public boolean containRole(String roleCode){
return this.getRoles().stream().anyMatch(role-> roleCode.equals(role));
}
}
- 獲取當(dāng)前用戶信息的工具類,為方便測(cè)試其屏,我們寫死返回用戶的信息喇勋,返回用戶ID為123456,屬于角色user1,user2,屬于組織ID為123偎行,123456(注意把用戶加進(jìn)去川背,因?yàn)槭跈?quán)可能授權(quán)給部門,也可能授權(quán)給用戶)
/**
* @description:
* @author: starmark
* @create: 2018-05-16 22:06
**/
@Data
public class UserUtil {
/**
* 獲取當(dāng)前登陸的用戶對(duì)象
* @return
*/
public static UserVo getUserVo(){
UserVo userVo= new UserVo();
userVo.setUserId(123456L);
userVo.setUserName("test");
userVo.getOrgIds().add(123456L);
userVo.getOrgIds().add(123L);
userVo.getRoles().add("user1");
userVo.getRoles().add("user2");
return userVo;
}
/**
* 判斷是否包含該角色CODE
* @param roleCode
* @return
*/
public static boolean containRole(String roleCode) {
return getUserVo().containRole(roleCode);
}
/**
* 相關(guān)的組織ID
*/
public static List<Long> getOrgIds(){
return getUserVo().getOrgIds();
}
/**
* 獲取當(dāng)前用戶ID
*/
public static Long getUserId(){
return getUserVo().getUserId();
}
}
- 構(gòu)建需要測(cè)試的數(shù)據(jù)庫蛤袒,這里以角色表sys_auth_role,及角色人員表sys_auth_role_org_rel來測(cè)試渗常,相關(guān)腳本如下:
SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for sys_auth_role
-- ----------------------------
DROP TABLE IF EXISTS `sys_auth_role`;
CREATE TABLE `sys_auth_role` (
`id` bigint(16) NOT NULL COMMENT '主鍵',
`code` varchar(200) NOT NULL COMMENT '編碼',
`name` varchar(200) NOT NULL COMMENT '名稱',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of sys_auth_role
-- ----------------------------
INSERT INTO `sys_auth_role` VALUES ('1', '222', '22');
INSERT INTO `sys_auth_role` VALUES ('2', '22222', '22ss');
INSERT INTO `sys_auth_role` VALUES ('3', 'aaaaaaa', '22ss');
-- ----------------------------
-- Table structure for sys_auth_role_org_rel
-- ----------------------------
DROP TABLE IF EXISTS `sys_auth_role_org_rel`;
CREATE TABLE `sys_auth_role_org_rel` (
`id` bigint(16) NOT NULL COMMENT '主鍵',
`role_id` bigint(200) NOT NULL COMMENT '角色I(xiàn)D',
`org_id` bigint(16) NOT NULL COMMENT '組織ID',
PRIMARY KEY (`id`),
KEY `IDX_ROLE_ORG_REL_ROLEID` (`role_id`) USING BTREE,
KEY `IDX_ROLE_ORG_REL_ORGID` (`org_id`),
CONSTRAINT `d` FOREIGN KEY (`role_id`) REFERENCES `sys_auth_role` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of sys_auth_role_org_rel
-- ----------------------------
INSERT INTO `sys_auth_role_org_rel` VALUES ('1', '2', '123456');
準(zhǔn)備工作到這里結(jié)束。
個(gè)人代碼已經(jīng)完成汗盘,如需要請(qǐng)打賞后通知我。
謝謝询一,如果你覺得該文章對(duì)你有幫助隐孽,麻煩點(diǎn)贊。
歡迎繼續(xù)查看下篇文章-通用數(shù)據(jù)級(jí)別權(quán)限的框架設(shè)計(jì)(3)-數(shù)據(jù)列表的權(quán)限過濾