获取当前登录用户的扩展字段值¶
本文档内容来源于 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(): 获取用户IDuser.getName(): 获取用户名称user.getDomainid(): 获取用户域IDfindBySQL(sql): 执行SQL查询并返回单条记录queryBySQL(sql): 执行SQL查询并返回多条记录
扩展字段说明¶
在MyApps平台中: - 扩展字段: 用户对象可以配置额外的扩展字段,用于存储自定义信息 - 字段名称: 扩展字段通过字段名称访问 - 字段值: 扩展字段的值可以是字符串、数字等类型 - 存储方式: 扩展字段可能存储在用户对象的属性中,或存储在单独的扩展表中
注意事项¶
- ⚠️ 字段名称: 确保扩展字段名称准确,区分大小写
- ⚠️ 空值处理: 扩展字段值可能为空,需要判断
- ⚠️ 字段存在性: 扩展字段可能不存在,需要处理异常情况
- ⚠️ 数据类型: 注意扩展字段的数据类型,可能需要类型转换
- ⚠️ 性能优化: 如果扩展字段存储在单独表中,注意SQL查询性能
- 扩展字段值可能为null或空字符串,需要判断
- 可以通过用户对象的getExtensionField()方法获取扩展字段值
- 也可以直接通过SQL查询扩展字段表获取值
使用场景¶
- 获取用户的额外信息用于业务逻辑
- 根据扩展字段值进行权限控制
- 用户信息展示
- 数据过滤和查询
- 个性化设置
如需查看完整脚本代码,请访问源文档链接。