跳转至

用户需要的对象

本文档内容来源于 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(): 获取用户ID
  • user.getName(): 获取用户名称
  • user.getLoginno(): 获取用户登录名
  • user.getEmail(): 获取用户邮箱
  • user.getPhone(): 获取用户电话
  • user.getDomainid(): 获取用户域ID
  • user.getDepartment(): 获取用户部门对象
  • user.getRoles(): 获取用户角色列表
  • user.getSuperior(): 获取用户上级对象
  • user.getState(): 获取用户状态(如果支持)

用户对象属性说明

用户对象通常包含以下属性: - 基本信息: ID、名称、登录名、邮箱、电话等 - 组织信息: 部门、上级、域ID等 - 权限信息: 角色列表 - 状态信息: 用户状态(激活/禁用等) - 扩展信息: 扩展字段(如果配置)

注意事项

  • ⚠️ 空值处理: 用户可能不存在,需要判断用户对象是否为null
  • ⚠️ 用户ID: 确保用户ID正确
  • ⚠️ 域ID: 查询时建议加上域ID条件,避免跨域数据
  • ⚠️ 性能优化: 批量获取用户时注意性能优化
  • ⚠️ 权限控制: 确保有权限访问用户信息
  • 用户对象是MyApps平台中的核心对象之一
  • 可以通过多种方式获取用户对象(ID、名称、登录名等)
  • 用户对象包含丰富的属性信息,可以根据需要获取

使用场景

  • 获取用户信息用于显示
  • 用户权限判断
  • 流程审批人设置
  • 数据权限过滤
  • 用户信息管理
  • 组织架构展示

如需查看完整脚本代码,请访问源文档链接。