用户需要的对象¶
本文档内容来源于 http://doc.myapps.cn/docs/common-script/common-script-1f1a4r31d0kh3
脚本说明¶
该脚本用于获取用户对象及其相关信息。在MyApps平台中,用户对象包含用户的各种属性,如ID、名称、登录名、部门、角色等,可以通过不同的方式获取用户对象。
常见实现方式¶
方式1:获取当前登录用户对象¶
(function(){
var currentUser = getWebUser();
if(currentUser != null){
var userInfo = {
id: currentUser.getId(),
name: currentUser.getName(),
loginno: currentUser.getLoginno()
};
return JSON.stringify(userInfo);
}
return "{}";
})();
方式2:根据用户ID获取用户对象¶
(function(){
var userId = "用户ID";
var user = getUserById(userId);
if(user != null){
var userInfo = {
id: user.getId(),
name: user.getName(),
loginno: user.getLoginno()
};
return JSON.stringify(userInfo);
}
return "{}";
})();
方式3:根据用户名称获取用户对象¶
(function(){
var userName = "用户名称";
var user = getUserByName(userName);
if(user != null){
var userInfo = {
id: user.getId(),
name: user.getName(),
loginno: user.getLoginno()
};
return JSON.stringify(userInfo);
}
return "{}";
})();
方式4:根据登录名获取用户对象¶
(function(){
var loginno = "登录名";
var user = getUserByLoginno(loginno);
if(user != null){
var userInfo = {
id: user.getId(),
name: user.getName(),
loginno: user.getLoginno()
};
return JSON.stringify(userInfo);
}
return "{}";
})();
获取用户完整信息¶
方式1:获取用户完整信息对象¶
(function(){
var userId = "用户ID";
var user = getUserById(userId);
if(user != null){
var department = user.getDepartment();
var roles = user.getRoles();
var superior = user.getSuperior();
var userInfo = {
id: user.getId(),
name: user.getName(),
loginno: user.getLoginno(),
email: user.getEmail() || "",
phone: user.getPhone() || "",
departmentId: department != null ? department.getId() : "",
departmentName: department != null ? department.getName() : "",
superiorId: superior != null ? superior.getId() : "",
superiorName: superior != null ? superior.getName() : "",
roles: []
};
// 获取角色信息
if(roles != null && roles.size() > 0){
for(var i = 0; i < roles.size(); i++){
var role = roles.get(i);
userInfo.roles.push({
id: role.getId(),
name: role.getName()
});
}
}
return JSON.stringify(userInfo);
}
return "{}";
})();
方式2:获取当前用户的完整信息¶
(function(){
var currentUser = getWebUser();
if(currentUser != null){
var department = currentUser.getDepartment();
var roles = currentUser.getRoles();
var superior = currentUser.getSuperior();
var userInfo = {
id: currentUser.getId(),
name: currentUser.getName(),
loginno: currentUser.getLoginno(),
email: currentUser.getEmail() || "",
phone: currentUser.getPhone() || "",
domainId: currentUser.getDomainid(),
departmentId: department != null ? department.getId() : "",
departmentName: department != null ? department.getName() : "",
superiorId: superior != null ? superior.getId() : "",
superiorName: superior != null ? superior.getName() : "",
roles: []
};
// 获取角色信息
if(roles != null && roles.size() > 0){
for(var i = 0; i < roles.size(); i++){
var role = roles.get(i);
userInfo.roles.push({
id: role.getId(),
name: role.getName()
});
}
}
return JSON.stringify(userInfo);
}
return "{}";
})();
方式3:通过SQL查询获取用户信息¶
(function(){
var userId = "用户ID";
var domainId = getWebUser().getDomainid();
var sql = "SELECT u.id, u.name, u.loginno, u.email, u.phone, " +
"d.id as departmentId, d.name as departmentName " +
"FROM t_user u " +
"LEFT JOIN t_department d ON u.departmentid = d.id " +
"WHERE u.id = '" + userId + "' AND u.domainid = '" + domainId + "'";
var result = findBySQL(sql);
if(result != null){
var userInfo = {
id: result.getId(),
name: result.getItemValueAsString("name"),
loginno: result.getItemValueAsString("loginno"),
email: result.getItemValueAsString("email") || "",
phone: result.getItemValueAsString("phone") || "",
departmentId: result.getItemValueAsString("departmentId") || "",
departmentName: result.getItemValueAsString("departmentName") || ""
};
return JSON.stringify(userInfo);
}
return "{}";
})();
扩展示例¶
示例1:获取用户对象并验证¶
(function(){
var userId = "用户ID";
var user = getUserById(userId);
if(user != null){
println("用户ID: " + user.getId());
println("用户名称: " + user.getName());
println("登录名: " + user.getLoginno());
return user.getId();
}else{
println("未找到用户ID: " + userId);
return "";
}
})();
示例2:获取用户对象并获取扩展字段¶
(function(){
var userId = "用户ID";
var user = getUserById(userId);
if(user != null){
var userInfo = {
id: user.getId(),
name: user.getName(),
loginno: user.getLoginno(),
// 扩展字段(如果存在)
extension1: user.getExtensionField("扩展字段1") || "",
extension2: user.getExtensionField("扩展字段2") || ""
};
return JSON.stringify(userInfo);
}
return "{}";
})();
示例3:批量获取用户对象¶
(function(){
var userIds = ["用户ID1", "用户ID2", "用户ID3"];
var users = [];
for(var i = 0; i < userIds.length; i++){
var user = getUserById(userIds[i]);
if(user != null){
users.push({
id: user.getId(),
name: user.getName(),
loginno: user.getLoginno()
});
}
}
return JSON.stringify(users);
})();
示例4:根据条件获取用户对象¶
(function(){
var departmentId = "部门ID";
var domainId = getWebUser().getDomainid();
var sql = "SELECT id, name, loginno FROM t_user WHERE departmentid = '" + departmentId + "' AND domainid = '" + domainId + "'";
var users = queryBySQL(sql);
var userList = [];
if(users != null && users.size() > 0){
for(var it = users.iterator(); it.hasNext();){
var user = it.next();
userList.push({
id: user.getId(),
name: user.getItemValueAsString("name"),
loginno: user.getItemValueAsString("loginno")
});
}
}
return JSON.stringify(userList);
})();
示例5:获取用户对象并格式化输出¶
(function(){
var userId = "用户ID";
var user = getUserById(userId);
if(user != null){
var department = user.getDepartment();
var output = "用户信息:\n";
output += "ID: " + user.getId() + "\n";
output += "名称: " + user.getName() + "\n";
output += "登录名: " + user.getLoginno() + "\n";
if(department != null){
output += "部门: " + department.getName() + "\n";
}
return output;
}
return "用户不存在";
})();
示例6:获取用户对象并检查状态¶
(function(){
var userId = "用户ID";
var user = getUserById(userId);
if(user != null){
var state = user.getState(); // 假设有getState方法
var isActive = state == 1; // 假设1表示激活
var userInfo = {
id: user.getId(),
name: user.getName(),
loginno: user.getLoginno(),
isActive: isActive,
state: state
};
return JSON.stringify(userInfo);
}
return "{}";
})();
示例7:获取用户对象并获取其所有角色¶
(function(){
var userId = "用户ID";
var user = getUserById(userId);
if(user != null){
var roles = user.getRoles();
var roleList = [];
if(roles != null && roles.size() > 0){
for(var i = 0; i < roles.size(); i++){
var role = roles.get(i);
roleList.push({
id: role.getId(),
name: role.getName()
});
}
}
var userInfo = {
id: user.getId(),
name: user.getName(),
loginno: user.getLoginno(),
roles: roleList
};
return JSON.stringify(userInfo);
}
return "{}";
})();
示例8:获取用户对象并获取其上级链¶
(function(){
var userId = "用户ID";
var user = getUserById(userId);
var superiorChain = [];
if(user != null){
superiorChain.push({
id: user.getId(),
name: user.getName()
});
var current = user;
while(true){
var superior = current.getSuperior();
if(superior == null){
break;
}
superiorChain.push({
id: superior.getId(),
name: superior.getName()
});
current = superior;
}
}
return JSON.stringify(superiorChain);
})();
示例9:错误处理和日志记录¶
(function(){
var userId = "用户ID";
try{
var user = getUserById(userId);
if(user != null){
println("成功获取用户对象: " + user.getName() + " (ID: " + user.getId() + ")");
return user.getId();
}else{
println("警告: 未找到用户ID " + userId);
return "";
}
}catch(e){
println("错误: 获取用户对象失败 - " + e.getMessage());
return "";
}
})();
关键函数说明¶
获取用户对象¶
getWebUser(): 获取当前登录用户对象getUserById(userId): 根据用户ID获取用户对象getUserByName(userName): 根据用户名称获取用户对象getUserByLoginno(loginno): 根据登录名获取用户对象
用户对象常用方法¶
user.getId(): 获取用户IDuser.getName(): 获取用户名称user.getLoginno(): 获取用户登录名user.getEmail(): 获取用户邮箱user.getPhone(): 获取用户电话user.getDomainid(): 获取用户域IDuser.getDepartment(): 获取用户部门对象user.getRoles(): 获取用户角色列表user.getSuperior(): 获取用户上级对象user.getState(): 获取用户状态(如果支持)
用户对象属性说明¶
用户对象通常包含以下属性: - 基本信息: ID、名称、登录名、邮箱、电话等 - 组织信息: 部门、上级、域ID等 - 权限信息: 角色列表 - 状态信息: 用户状态(激活/禁用等) - 扩展信息: 扩展字段(如果配置)
注意事项¶
- ⚠️ 空值处理: 用户可能不存在,需要判断用户对象是否为null
- ⚠️ 用户ID: 确保用户ID正确
- ⚠️ 域ID: 查询时建议加上域ID条件,避免跨域数据
- ⚠️ 性能优化: 批量获取用户时注意性能优化
- ⚠️ 权限控制: 确保有权限访问用户信息
- 用户对象是MyApps平台中的核心对象之一
- 可以通过多种方式获取用户对象(ID、名称、登录名等)
- 用户对象包含丰富的属性信息,可以根据需要获取
使用场景¶
- 获取用户信息用于显示
- 用户权限判断
- 流程审批人设置
- 数据权限过滤
- 用户信息管理
- 组织架构展示
如需查看完整脚本代码,请访问源文档链接。