创建角色¶
本文档内容来源于 http://doc.myapps.cn/docs/common-script/common-script-1f1kd7s7sg088
脚本说明¶
该脚本用于创建角色。在MyApps平台中,可以通过脚本自动创建角色,包括设置角色名称、描述等属性。
常见实现方式¶
方式1:创建角色(基本方式)¶
(function(){
var roleName = "角色名称";
var roleDescription = "角色描述";
var domainId = getWebUser().getDomainid();
// 检查角色是否已存在
var checkSql = "SELECT id FROM t_role WHERE name = '" + roleName + "' AND domainid = '" + domainId + "'";
var existRole = findBySQL(checkSql);
if(existRole != null){
return "角色已存在: " + roleName;
}
// 创建角色对象
var RoleProcess = getRoleProcess();
var role = RoleProcess.doNew();
role.setName(roleName);
role.setDescription(roleDescription);
role.setDomainid(domainId);
// 保存角色
RoleProcess.doCreate(role);
return "角色创建成功: " + roleName + " (ID: " + role.getId() + ")";
})();
方式2:通过SQL直接插入角色¶
(function(){
var roleName = "角色名称";
var roleDescription = "角色描述";
var domainId = getWebUser().getDomainid();
// 检查角色是否已存在
var checkSql = "SELECT id FROM t_role WHERE name = '" + roleName + "' AND domainid = '" + domainId + "'";
var existRole = findBySQL(checkSql);
if(existRole != null){
return "角色已存在: " + roleName;
}
// 生成角色ID
var roleId = createUUID(); // 假设有生成UUID的函数
// 插入角色
var insertSql = "INSERT INTO t_role (id, name, description, domainid) " +
"VALUES ('" + roleId + "', '" + roleName + "', '" + roleDescription + "', '" + domainId + "')";
updateByDSName("数据源名称", insertSql);
return "角色创建成功: " + roleName + " (ID: " + roleId + ")";
})();
方式3:创建角色并设置完整属性¶
(function(){
var roleName = "角色名称";
var roleDescription = "角色描述";
var sortOrder = 0;
var domainId = getWebUser().getDomainid();
// 检查角色是否已存在
var checkSql = "SELECT id FROM t_role WHERE name = '" + roleName + "' AND domainid = '" + domainId + "'";
var existRole = findBySQL(checkSql);
if(existRole != null){
return "角色已存在: " + roleName;
}
// 创建角色
var RoleProcess = getRoleProcess();
var role = RoleProcess.doNew();
role.setName(roleName);
role.setDescription(roleDescription);
role.setDomainid(domainId);
role.setSortorder(sortOrder);
RoleProcess.doCreate(role);
return "角色创建成功: " + roleName;
})();
方式4:根据参数创建角色¶
(function(){
var roleName = getParameter("roleName");
var roleDescription = getParameter("roleDescription");
if(roleName == null || roleName.trim().length == 0){
return "错误: 请提供角色名称";
}
if(roleDescription == null){
roleDescription = "";
}
var domainId = getWebUser().getDomainid();
// 检查角色是否已存在
var checkSql = "SELECT id FROM t_role WHERE name = '" + roleName + "' AND domainid = '" + domainId + "'";
var existRole = findBySQL(checkSql);
if(existRole != null){
return "角色已存在: " + roleName;
}
// 创建角色
var RoleProcess = getRoleProcess();
var role = RoleProcess.doNew();
role.setName(roleName);
role.setDescription(roleDescription);
role.setDomainid(domainId);
RoleProcess.doCreate(role);
return "角色创建成功: " + roleName;
})();
扩展示例¶
示例1:创建角色并返回角色ID¶
(function(){
var roleName = "角色名称";
var roleDescription = "角色描述";
var domainId = getWebUser().getDomainid();
// 检查角色是否已存在
var checkSql = "SELECT id FROM t_role WHERE name = '" + roleName + "' AND domainid = '" + domainId + "'";
var existRole = findBySQL(checkSql);
if(existRole != null){
return existRole.getId(); // 返回已存在的角色ID
}
// 创建角色
var RoleProcess = getRoleProcess();
var role = RoleProcess.doNew();
role.setName(roleName);
role.setDescription(roleDescription);
role.setDomainid(domainId);
RoleProcess.doCreate(role);
return role.getId(); // 返回新创建的角色ID
})();
示例2:批量创建多个角色¶
(function(){
var roles = [
{name: "角色1", description: "角色1描述"},
{name: "角色2", description: "角色2描述"},
{name: "角色3", description: "角色3描述"}
];
var domainId = getWebUser().getDomainid();
var RoleProcess = getRoleProcess();
var successCount = 0;
var failCount = 0;
var messages = [];
for(var i = 0; i < roles.length; i++){
var roleData = roles[i];
var roleName = roleData.name;
var roleDescription = roleData.description || "";
try{
// 检查角色是否已存在
var checkSql = "SELECT id FROM t_role WHERE name = '" + roleName + "' AND domainid = '" + domainId + "'";
var existRole = findBySQL(checkSql);
if(existRole != null){
messages.push("角色已存在: " + roleName);
failCount++;
continue;
}
// 创建角色
var role = RoleProcess.doNew();
role.setName(roleName);
role.setDescription(roleDescription);
role.setDomainid(domainId);
RoleProcess.doCreate(role);
messages.push("创建成功: " + roleName + " (ID: " + role.getId() + ")");
successCount++;
}catch(e){
messages.push("创建失败: " + roleName + " - " + e.getMessage());
failCount++;
}
}
return "成功: " + successCount + ", 失败: " + failCount + "\n" + messages.join("\n");
})();
示例3:创建角色并验证¶
(function(){
var roleName = "角色名称";
var roleDescription = "角色描述";
var domainId = getWebUser().getDomainid();
// 验证角色名称不能为空
if(roleName == null || roleName.trim().length == 0){
return "错误: 角色名称不能为空";
}
// 验证角色名称长度
if(roleName.length > 50){
return "错误: 角色名称长度不能超过50个字符";
}
// 检查角色是否已存在
var checkSql = "SELECT id FROM t_role WHERE name = '" + roleName + "' AND domainid = '" + domainId + "'";
var existRole = findBySQL(checkSql);
if(existRole != null){
return "错误: 角色名称已存在: " + roleName;
}
// 创建角色
var RoleProcess = getRoleProcess();
var role = RoleProcess.doNew();
role.setName(roleName);
role.setDescription(roleDescription);
role.setDomainid(domainId);
RoleProcess.doCreate(role);
return "角色创建成功: " + roleName + " (ID: " + role.getId() + ")";
})();
示例4:创建角色并记录日志¶
(function(){
var roleName = "角色名称";
var roleDescription = "角色描述";
var domainId = getWebUser().getDomainid();
var currentUser = getWebUser();
println("开始创建角色: " + roleName);
println("创建人: " + currentUser.getName());
// 检查角色是否已存在
var checkSql = "SELECT id FROM t_role WHERE name = '" + roleName + "' AND domainid = '" + domainId + "'";
var existRole = findBySQL(checkSql);
if(existRole != null){
println("角色已存在: " + roleName);
return "角色已存在: " + roleName;
}
try{
// 创建角色
var RoleProcess = getRoleProcess();
var role = RoleProcess.doNew();
role.setName(roleName);
role.setDescription(roleDescription);
role.setDomainid(domainId);
RoleProcess.doCreate(role);
println("角色创建成功: " + roleName + " (ID: " + role.getId() + ")");
return "角色创建成功: " + roleName;
}catch(e){
println("创建失败: " + e.getMessage());
return "创建失败: " + e.getMessage();
}
})();
示例5:创建角色并返回完整信息¶
(function(){
var roleName = "角色名称";
var roleDescription = "角色描述";
var domainId = getWebUser().getDomainid();
// 检查角色是否已存在
var checkSql = "SELECT id FROM t_role WHERE name = '" + roleName + "' AND domainid = '" + domainId + "'";
var existRole = findBySQL(checkSql);
if(existRole != null){
return JSON.stringify({
success: false,
message: "角色已存在",
roleId: existRole.getId()
});
}
// 创建角色
var RoleProcess = getRoleProcess();
var role = RoleProcess.doNew();
role.setName(roleName);
role.setDescription(roleDescription);
role.setDomainid(domainId);
RoleProcess.doCreate(role);
var result = {
success: true,
message: "角色创建成功",
roleId: role.getId(),
roleName: role.getName(),
roleDescription: role.getDescription()
};
return JSON.stringify(result);
})();
示例6:创建角色并分配权限(示例)¶
(function(){
var roleName = "角色名称";
var roleDescription = "角色描述";
var domainId = getWebUser().getDomainid();
// 检查角色是否已存在
var checkSql = "SELECT id FROM t_role WHERE name = '" + roleName + "' AND domainid = '" + domainId + "'";
var existRole = findBySQL(checkSql);
if(existRole != null){
return "角色已存在: " + roleName;
}
// 创建角色
var RoleProcess = getRoleProcess();
var role = RoleProcess.doNew();
role.setName(roleName);
role.setDescription(roleDescription);
role.setDomainid(domainId);
RoleProcess.doCreate(role);
// 分配权限(示例,具体API可能不同)
// var permissions = ["权限1", "权限2", "权限3"];
// role.setPermissions(permissions);
// RoleProcess.doUpdate(role);
return "角色创建成功: " + roleName + " (ID: " + role.getId() + ")";
})();
示例7:错误处理和异常捕获¶
(function(){
var roleName = "角色名称";
var roleDescription = "角色描述";
var domainId = getWebUser().getDomainid();
try{
// 验证输入
if(roleName == null || roleName.trim().length == 0){
throw new Error("角色名称不能为空");
}
// 检查角色是否已存在
var checkSql = "SELECT id FROM t_role WHERE name = '" + roleName + "' AND domainid = '" + domainId + "'";
var existRole = findBySQL(checkSql);
if(existRole != null){
throw new Error("角色已存在: " + roleName);
}
// 创建角色
var RoleProcess = getRoleProcess();
var role = RoleProcess.doNew();
role.setName(roleName);
role.setDescription(roleDescription);
role.setDomainid(domainId);
RoleProcess.doCreate(role);
return "角色创建成功: " + roleName + " (ID: " + role.getId() + ")";
}catch(e){
return "错误: " + e.getMessage();
}
})();
示例8:创建角色并设置扩展属性¶
(function(){
var roleName = "角色名称";
var roleDescription = "角色描述";
var sortOrder = 0;
var isSystem = false; // 是否系统角色
var domainId = getWebUser().getDomainid();
// 检查角色是否已存在
var checkSql = "SELECT id FROM t_role WHERE name = '" + roleName + "' AND domainid = '" + domainId + "'";
var existRole = findBySQL(checkSql);
if(existRole != null){
return "角色已存在: " + roleName;
}
// 创建角色
var RoleProcess = getRoleProcess();
var role = RoleProcess.doNew();
role.setName(roleName);
role.setDescription(roleDescription);
role.setDomainid(domainId);
role.setSortorder(sortOrder);
// role.setSystem(isSystem); // 如果支持设置系统角色
RoleProcess.doCreate(role);
return "角色创建成功: " + roleName;
})();
关键函数说明¶
getRoleProcess(): 获取角色处理对象RoleProcess.doNew(): 创建新的角色对象role.setName(name): 设置角色名称role.setDescription(description): 设置角色描述role.setDomainid(domainid): 设置域IDrole.setSortorder(order): 设置排序号RoleProcess.doCreate(role): 保存角色findBySQL(sql): 执行SQL查询并返回单条记录updateByDSName(dsName, sql): 执行SQL更新语句getWebUser().getDomainid(): 获取当前用户的域ID
角色创建说明¶
在MyApps平台中: - 角色名称: 通常要求唯一(在同一域内) - 角色描述: 可选,用于描述角色的用途 - 域ID: 角色属于特定的域,需要设置domainid - 权限分配: 创建角色后,通常需要分配权限(可能通过其他API实现)
注意事项¶
- ⚠️ 角色名称: 确保角色名称唯一(在同一域内)
- ⚠️ 域ID: 必须设置正确的domainid
- ⚠️ 重复检查: 创建前建议检查角色是否已存在
- ⚠️ 异常处理: 建议添加try-catch进行异常处理
- ⚠️ 输入验证: 建议验证角色名称不能为空
- 创建角色前建议检查角色名称是否已存在
- 角色创建后可能需要分配权限
- 建议添加输入验证和错误处理
使用场景¶
- 初始化角色权限
- 批量创建角色
- 角色数据迁移
- 自动化角色管理
- 权限体系构建
如需查看完整脚本代码,请访问源文档链接。