跳转至

获取当前登录用户的扩展字段值

本文档内容来源于 http://doc.myapps.cn/docs/common-script/common-script-1f1a50cr54kug

脚本说明

该脚本用于获取当前登录用户的扩展字段值。在MyApps平台中,用户对象可以配置扩展字段,用于存储额外的用户信息,可以通过用户对象的方法获取这些扩展字段的值。

常见实现方式

方式1:获取单个扩展字段值

(function(){
    var currentUser = getWebUser();
    var fieldName = "扩展字段名称";
    var fieldValue = currentUser.getExtensionField(fieldName);

    return fieldValue != null ? fieldValue : "";
})();

方式2:获取多个扩展字段值

(function(){
    var currentUser = getWebUser();
    var fieldNames = ["扩展字段1", "扩展字段2", "扩展字段3"];
    var fieldValues = {};

    for(var i = 0; i < fieldNames.length; i++){
        var fieldName = fieldNames[i];
        var fieldValue = currentUser.getExtensionField(fieldName);
        fieldValues[fieldName] = fieldValue != null ? fieldValue : "";
    }

    return JSON.stringify(fieldValues);
})();

方式3:通过SQL查询获取扩展字段值

(function(){
    var currentUser = getWebUser();
    var userId = currentUser.getId();
    var fieldName = "扩展字段名称";
    var domainId = currentUser.getDomainid();

    // 假设扩展字段存储在t_user_ext表中
    var sql = "SELECT field_value FROM t_user_ext WHERE userid = '" + userId + "' AND field_name = '" + fieldName + "' AND domainid = '" + domainId + "'";
    var result = findBySQL(sql);

    if(result != null){
        return result.getItemValueAsString("field_value");
    }

    return "";
})();

方式4:获取所有扩展字段值

(function(){
    var currentUser = getWebUser();
    var userId = currentUser.getId();
    var domainId = currentUser.getDomainid();

    // 假设扩展字段存储在t_user_ext表中
    var sql = "SELECT field_name, field_value FROM t_user_ext WHERE userid = '" + userId + "' AND domainid = '" + domainId + "'";
    var fields = queryBySQL(sql);

    var fieldValues = {};
    if(fields != null && fields.size() > 0){
        for(var it = fields.iterator(); it.hasNext();){
            var field = it.next();
            var fieldName = field.getItemValueAsString("field_name");
            var fieldValue = field.getItemValueAsString("field_value");
            fieldValues[fieldName] = fieldValue;
        }
    }

    return JSON.stringify(fieldValues);
})();

扩展示例

示例1:获取扩展字段值并判断是否为空

(function(){
    var currentUser = getWebUser();
    var fieldName = "扩展字段名称";
    var fieldValue = currentUser.getExtensionField(fieldName);

    if(fieldValue != null && fieldValue.trim().length > 0){
        return fieldValue;
    }else{
        return "扩展字段值为空";
    }
})();

示例2:获取扩展字段值并设置默认值

(function(){
    var currentUser = getWebUser();
    var fieldName = "扩展字段名称";
    var fieldValue = currentUser.getExtensionField(fieldName);
    var defaultValue = "默认值";

    return (fieldValue != null && fieldValue.trim().length > 0) ? fieldValue : defaultValue;
})();

示例3:获取扩展字段值并格式化输出

(function(){
    var currentUser = getWebUser();
    var fieldName = "扩展字段名称";
    var fieldValue = currentUser.getExtensionField(fieldName);

    var output = "当前用户: " + currentUser.getName() + "\n";
    output += "扩展字段(" + fieldName + "): " + (fieldValue != null ? fieldValue : "无");

    return output;
})();

示例4:获取多个扩展字段并组合使用

(function(){
    var currentUser = getWebUser();

    var field1 = currentUser.getExtensionField("扩展字段1") || "";
    var field2 = currentUser.getExtensionField("扩展字段2") || "";
    var field3 = currentUser.getExtensionField("扩展字段3") || "";

    var combined = field1 + "-" + field2 + "-" + field3;

    return combined;
})();

示例5:根据扩展字段值进行条件判断

(function(){
    var currentUser = getWebUser();
    var fieldName = "用户类型";
    var fieldValue = currentUser.getExtensionField(fieldName);

    if(fieldValue != null){
        if(fieldValue === "管理员"){
            return "当前用户是管理员";
        }else if(fieldValue === "普通用户"){
            return "当前用户是普通用户";
        }else{
            return "当前用户类型: " + fieldValue;
        }
    }

    return "未设置用户类型";
})();

示例6:获取扩展字段值并转换为JSON

(function(){
    var currentUser = getWebUser();
    var userId = currentUser.getId();
    var domainId = currentUser.getDomainid();

    // 假设扩展字段存储在t_user_ext表中
    var sql = "SELECT field_name, field_value FROM t_user_ext WHERE userid = '" + userId + "' AND domainid = '" + domainId + "'";
    var fields = queryBySQL(sql);

    var result = {
        userId: userId,
        userName: currentUser.getName(),
        extensionFields: {}
    };

    if(fields != null && fields.size() > 0){
        for(var it = fields.iterator(); it.hasNext();){
            var field = it.next();
            var fieldName = field.getItemValueAsString("field_name");
            var fieldValue = field.getItemValueAsString("field_value");
            result.extensionFields[fieldName] = fieldValue;
        }
    }

    return JSON.stringify(result);
})();

示例7:获取扩展字段值并验证格式

(function(){
    var currentUser = getWebUser();
    var fieldName = "手机号码";
    var fieldValue = currentUser.getExtensionField(fieldName);

    if(fieldValue != null && fieldValue.trim().length > 0){
        // 简单的手机号格式验证(11位数字)
        if(fieldValue.matches("^1[3-9]\\d{9}$")){
            return "手机号码格式正确: " + fieldValue;
        }else{
            return "手机号码格式错误: " + fieldValue;
        }
    }

    return "未设置手机号码";
})();

示例8:获取扩展字段值并用于业务逻辑

(function(){
    var currentUser = getWebUser();
    var userLevel = currentUser.getExtensionField("用户等级");
    var discount = 1.0;  // 默认折扣

    if(userLevel != null){
        if(userLevel === "VIP"){
            discount = 0.8;  // VIP用户8折
        }else if(userLevel === "普通会员"){
            discount = 0.9;  // 普通会员9折
        }
    }

    return "当前用户折扣: " + (discount * 10) + "折";
})();

示例9:获取扩展字段值并记录日志

(function(){
    var currentUser = getWebUser();
    var fieldName = "扩展字段名称";
    var fieldValue = currentUser.getExtensionField(fieldName);

    println("用户ID: " + currentUser.getId());
    println("用户名称: " + currentUser.getName());
    println("扩展字段(" + fieldName + "): " + (fieldValue != null ? fieldValue : "无"));

    return fieldValue != null ? fieldValue : "";
})();

示例10:错误处理和空值处理

(function(){
    var currentUser = getWebUser();
    var fieldName = "扩展字段名称";

    try{
        if(currentUser == null){
            return "错误: 未获取到当前用户";
        }

        var fieldValue = currentUser.getExtensionField(fieldName);

        if(fieldValue == null){
            return "扩展字段 '" + fieldName + "' 的值为空";
        }

        if(fieldValue.trim().length == 0){
            return "扩展字段 '" + fieldName + "' 的值为空字符串";
        }

        return fieldValue;
    }catch(e){
        return "错误: 获取扩展字段值失败 - " + e.getMessage();
    }
})();

关键函数说明

  • getWebUser(): 获取当前登录用户对象
  • user.getExtensionField(fieldName): 获取用户的扩展字段值
  • user.getId(): 获取用户ID
  • user.getName(): 获取用户名称
  • user.getDomainid(): 获取用户域ID
  • findBySQL(sql): 执行SQL查询并返回单条记录
  • queryBySQL(sql): 执行SQL查询并返回多条记录

扩展字段说明

在MyApps平台中: - 扩展字段: 用户对象可以配置额外的扩展字段,用于存储自定义信息 - 字段名称: 扩展字段通过字段名称访问 - 字段值: 扩展字段的值可以是字符串、数字等类型 - 存储方式: 扩展字段可能存储在用户对象的属性中,或存储在单独的扩展表中

注意事项

  • ⚠️ 字段名称: 确保扩展字段名称准确,区分大小写
  • ⚠️ 空值处理: 扩展字段值可能为空,需要判断
  • ⚠️ 字段存在性: 扩展字段可能不存在,需要处理异常情况
  • ⚠️ 数据类型: 注意扩展字段的数据类型,可能需要类型转换
  • ⚠️ 性能优化: 如果扩展字段存储在单独表中,注意SQL查询性能
  • 扩展字段值可能为null或空字符串,需要判断
  • 可以通过用户对象的getExtensionField()方法获取扩展字段值
  • 也可以直接通过SQL查询扩展字段表获取值

使用场景

  • 获取用户的额外信息用于业务逻辑
  • 根据扩展字段值进行权限控制
  • 用户信息展示
  • 数据过滤和查询
  • 个性化设置

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