
通达OA提供了丰富的内置函数库,涵盖通用基础接口、通用功能接口、组织机构相关接口、文件处理、邮件处理、短信发送等多个方面。掌握这些内置函数可以极大提高开发效率,避免重复造轮子。本文将系统介绍OA的内置函数分类、使用方法和实战技巧。
通达OA的内置函数按功能分为多个文件:

函数文件 | 功能分类 | 主要用途 |
|---|---|---|
utility.php | 通用基础接口 | 消息提示、按钮、ID处理、IP获取 |
utility_all.php | 通用功能接口 | 字符串处理、日志、系统参数、邮件发送 |
utility_org.php | 组织机构接口 | 用户、部门、角色、权限管理 |
utility_sms1.php | 短信接口 | OA内部短信发送 |
utility_sms2.php | 手机短信接口 | 手机短信发送 |
utility_file.php | 文件处理接口 | 上传、下载、附件管理 |
utility_email.php | 邮件接口 | 邮件收发管理 |
utility_calendar.php | 日程接口 | 日程、任务管理 |
Message($message, $url = "", $icon = "", $width = 300, $height = 160)功能:显示消息提示框并跳转
参数说明:
参数 | 类型 | 说明 |
|---|---|---|
message | string | 提示消息内容 |
url | string | 跳转URL,默认返回上一页 |
icon | string | 图标类型(success/error/warning/info) |
width | int | 弹窗宽度 |
height | int | 弹窗高度 |
示例:
// 成功提示
Message(_("操作成功"), "index.php", "success");
// 错误提示
Message(_("操作失败"), "", "error");
// 提示后返回上一页
Message(_("删除成功"));Button_Back($text = "")功能:生成返回上一页的按钮
参数说明:
参数 | 类型 | 说明 |
|---|---|---|
text | string | 按钮文字,默认"返回" |
示例:
Button_Back(_("返回列表"));find_id($array, $id)功能:从数组中查找指定ID的元素
参数说明:
参数 | 类型 | 说明 |
|---|---|---|
array | array | 待查找的数组 |
id | int | 要查找的ID |
返回值:找到的元素或false
示例:
$users = array(
array('uid' => 1, 'name' => '张三'),
array('uid' => 2, 'name' => '李四')
);
$user = find_id($users, 1);
// 返回:array('uid' => 1, 'name' => '张三')remove_id($array, $id)功能:从数组中移除指定ID的元素
参数说明:
参数 | 类型 | 说明 |
|---|---|---|
array | array | 待处理的数组 |
id | int | 要移除的ID |
返回值:处理后的数组
示例:
$users = array(
array('uid' => 1, 'name' => '张三'),
array('uid' => 2, 'name' => '李四')
);
$users = remove_id($users, 1);
// 返回:array(array('uid' => 2, 'name' => '李四'))get_client_ip()功能:获取客户端真实IP地址
返回值:IP地址字符串
示例:
$ip = get_client_ip();
echo "客户端IP:$ip";csubstr($str, $start, $length, $charset = "utf-8")功能:安全截取中文字符串,避免乱码
参数说明:
参数 | 类型 | 说明 |
|---|---|---|
str | string | 原字符串 |
start | int | 起始位置 |
length | int | 截取长度 |
charset | string | 字符集,默认utf-8 |
返回值:截取后的字符串
示例:
$str = "这是一段很长的中文文本";
$result = csubstr($str, 0, 10);
echo $result; // 输出:这是一段很长的中is_ip($ip)功能:验证IP地址是否合法
参数说明:
参数 | 类型 | 说明 |
|---|---|---|
ip | string | IP地址 |
返回值:true(合法)或false(非法)
示例:
if (is_ip("192.168.1.1")) {
echo "IP地址合法";
} else {
echo "IP地址非法";
}add_log($type, $action, $detail = "")功能:添加系统操作日志
参数说明:
参数 | 类型 | 说明 |
|---|---|---|
type | string | 日志类型 |
action | string | 操作动作 |
detail | string | 详细描述 |
示例:
add_log("project", "add", "添加项目:项目管理系统");get_code_name($table, $code_field, $name_field, $code)功能:根据代码值获取对应的名称
参数说明:
参数 | 类型 | 说明 |
|---|---|---|
table | string | 表名 |
code_field | string | 代码字段名 |
name_field | string | 名称字段名 |
code | mixed | 代码值 |
返回值:名称字符串
示例:
$status_name = get_code_name("project", "status", "status_name", 1);
echo $status_name; // 输出:已完成dept_long_name($dept_id)功能:获取部门的完整路径名称
参数说明:
参数 | 类型 | 说明 |
|---|---|---|
dept_id | int | 部门ID |
返回值:部门全称字符串
示例:
$dept_name = dept_long_name(5);
echo $dept_name; // 输出:总公司/技术部/开发组get_sys_para($para_name)功能:获取系统配置参数
参数说明:
参数 | 类型 | 说明 |
|---|---|---|
para_name | string | 参数名称 |
返回值:参数值
示例:
$company_name = get_sys_para("company_name");
echo "公司名称:$company_name";set_sys_para($para_name, $para_value)功能:设置系统配置参数
参数说明:
参数 | 类型 | 说明 |
|---|---|---|
para_name | string | 参数名称 |
para_value | mixed | 参数值 |
示例:
set_sys_para("company_name", "通达科技有限公司");send_mail($to, $subject, $body, $from = "", $cc = "", $attachment = "")功能:发送邮件
参数说明:
参数 | 类型 | 说明 |
|---|---|---|
to | string | 收件人邮箱 |
subject | string | 邮件主题 |
body | string | 邮件内容 |
from | string | 发件人邮箱 |
cc | string | 抄送邮箱 |
attachment | string | 附件路径 |
示例:
send_mail(
"user@example.com",
_("项目通知"),
_("您有新的项目任务"),
"admin@example.com",
"cc@example.com",
"/path/to/file.pdf"
);5.1.1 GetUserNameById() - 根据ID获取用户名
GetUserNameById($uid)参数:$uid - 用户ID
返回值:用户姓名字符串
示例:
$name = GetUserNameById(1);
echo "用户姓名:$name";5.1.2 GetUserNameByUid() - 根据UID获取用户名
GetUserNameByUid($uid)参数:$uid - 用户UID
返回值:用户姓名字符串
5.2.1 GetDeptNameById() - 根据ID获取部门名称
GetDeptNameById($dept_id)参数:$dept_id - 部门ID
返回值:部门名称字符串
示例:
$dept_name = GetDeptNameById(10);
echo "部门名称:$dept_name";5.2.2 is_dept_parent() - 判断是否为父部门
is_dept_parent($parent_id, $child_id)功能:判断parent_id是否为child_id的上级部门
参数说明:
参数 | 类型 | 说明 |
|---|---|---|
parent_id | int | 父部门ID |
child_id | int | 子部门ID |
返回值:true或false
示例:
if (is_dept_parent(1, 5)) {
echo "部门1是部门5的上级";
}5.2.3 top_dept() - 获取顶级部门
top_dept($dept_id)功能:获取指定部门的顶级部门ID
参数:$dept_id - 部门ID
返回值:顶级部门ID
示例:
$top_dept_id = top_dept(5);
echo "顶级部门ID:$top_dept_id";5.3.1 GetPrivNameById() - 根据ID获取角色名称
GetPrivNameById($priv_id)参数:$priv_id - 角色ID
返回值:角色名称字符串
5.4.1 is_module_manager() - 判断是否为模块管理员
is_module_manager($uid, $module)功能:判断用户是否为指定模块的管理员
参数说明:
参数 | 类型 | 说明 |
|---|---|---|
uid | int | 用户ID |
module | string | 模块名称 |
返回值:true或false
示例:
if (is_module_manager($_SESSION['uid'], "project")) {
echo "您是项目管理模块管理员";
}5.4.2 set_priv_menu_priv() - 设置角色菜单权限
set_priv_menu_priv($priv_id, $menu_id, $priv)功能:为角色设置菜单权限
参数说明:
参数 | 类型 | 说明 |
|---|---|---|
priv_id | int | 角色ID |
menu_id | int | 菜单ID |
priv | int | 权限值(0=无权限,1=有权限) |
示例:
set_priv_menu_priv(1, 100, 1); // 为角色1设置菜单100的权限5.4.3 set_uid_menu_priv() - 设置用户菜单权限
set_uid_menu_priv($uid, $menu_id, $priv)功能:为用户设置菜单权限
参数说明:
参数 | 类型 | 说明 |
|---|---|---|
uid | int | 用户ID |
menu_id | int | 菜单ID |
priv | int | 权限值 |
5.5.1 GetUnionSetOfChildDeptId() - 获取子部门ID集合
GetUnionSetOfChildDeptId($dept_id)功能:获取指定部门及其所有子部门的ID集合
参数:$dept_id - 部门ID
返回值:部门ID数组
示例:
$dept_ids = GetUnionSetOfChildDeptId(1);
print_r($dept_ids); // 输出:array(1, 2, 3, ...)5.5.2 GetfunmenuByuserID() - 获取用户功能菜单
GetfunmenuByuserID($uid)功能:获取用户有权限访问的功能菜单
参数:$uid - 用户ID
返回值:菜单数组
6.1.1 send_sms() - 发送OA短信
send_sms($to_uid, $content, $from_uid = 0)功能:发送OA内部短信
参数说明:
参数 | 类型 | 说明 |
|---|---|---|
to_uid | int | 接收人ID |
content | string | 短信内容 |
from_uid | int | 发送人ID,默认0(系统) |
返回值:true或false
示例:
send_sms(2, _("您有新的任务需要处理"), 1);6.1.2 delete_sms() - 删除短信
delete_sms($sms_id)功能:删除指定短信
参数:$sms_id - 短信ID
返回值:true或false
6.2.1 send_mobile_sms_user() - 向用户发送手机短信
send_mobile_sms_user($uid, $content)功能:向指定用户发送手机短信
参数说明:
参数 | 类型 | 说明 |
|---|---|---|
uid | int | 用户ID |
content | string | 短信内容 |
返回值:true或false
示例:
send_mobile_sms_user(1, _("验证码:123456"));6.2.2 send_mobile_sms() - 发送手机短信
send_mobile_sms($mobile, $content)功能:直接向手机号发送短信
参数说明:
参数 | 类型 | 说明 |
|---|---|---|
mobile | string | 手机号码 |
content | string | 短信内容 |
返回值:true或false
示例:
send_mobile_sms("13800138000", _("验证码:123456"));7.1.1 GetWebMailNumByUid() - 获取收件箱邮件数
GetWebMailNumByUid($uid)功能:获取用户收件箱邮件数量
参数:$uid - 用户ID
返回值:邮件数量
示例:
$count = GetWebMailNumByUid(1);
echo "收件箱邮件数:$count";7.1.2 GetSentMailNum() - 获取已发送邮件数
GetSentMailNum($uid)功能:获取用户已发送邮件数量
参数:$uid - 用户ID
返回值:邮件数量
7.2.1 get_email_data() - 获取邮件数据
get_email_data($mail_id)功能:获取邮件详细信息
参数:$mail_id - 邮件ID
返回值:邮件数组
7.2.2 delete_email() - 删除邮件
delete_email($mail_id)功能:删除指定邮件
参数:$mail_id - 邮件ID
返回值:true或false
7.2.3 remove_email() - 彻底删除邮件
remove_email($mail_id)功能:彻底删除邮件(从数据库中删除)
参数:$mail_id - 邮件ID
返回值:true或false
8.1.1 add_calendar() - 添加日程
add_calendar($uid, $title, $start_time, $end_time, $content = "")功能:添加日程
参数说明:
参数 | 类型 | 说明 |
|---|---|---|
uid | int | 用户ID |
title | string | 日程标题 |
start_time | datetime | 开始时间 |
end_time | datetime | 结束时间 |
content | string | 日程内容 |
返回值:日程ID或false
示例:
$calendar_id = add_calendar(
1,
_("项目会议"),
"2024-01-15 10:00:00",
"2024-01-15 11:00:00",
_("讨论项目进度")
);8.1.2 update_calendar() - 更新日程
update_calendar($calendar_id, $title, $start_time, $end_time, $content = "")功能:更新日程信息
参数说明:
参数 | 类型 | 说明 |
|---|---|---|
calendar_id | int | 日程ID |
title | string | 日程标题 |
start_time | datetime | 开始时间 |
end_time | datetime | 结束时间 |
content | string | 日程内容 |
返回值:true或false
8.1.3 delete_calendar() - 删除日程
delete_calendar($calendar_id)功能:删除指定日程
参数:$calendar_id - 日程ID
返回值:true或false
8.1.4 get_list_data() - 获取日程列表
get_list_data($uid, $start_date, $end_date)功能:获取用户在指定日期范围内的日程列表
参数说明:
参数 | 类型 | 说明 |
|---|---|---|
uid | int | 用户ID |
start_date | date | 开始日期 |
end_date | date | 结束日期 |
返回值:日程数组
8.2.1 insert_taskcenter() - 添加任务
insert_taskcenter($uid, $title, $content, $deadline)功能:添加任务
参数说明:
参数 | 类型 | 说明 |
|---|---|---|
uid | int | 用户ID |
title | string | 任务标题 |
content | string | 任务内容 |
deadline | datetime | 截止时间 |
返回值:任务ID或false

调用步骤:
auth.inc.php(推荐)或直接包含对应函数文件// 方式1:通过auth.inc.php间接包含(推荐)
include_once("inc/auth.inc.php");
// 已包含:utility.php, utility_all.php, utility_org.php等
// 方式2:直接包含特定函数文件
include_once("inc/utility_file.php");
include_once("inc/utility_sms2.php");技巧1:消息提示后跳转
// 操作成功后跳转到列表页
if ($success) {
Message(_("操作成功"), "index.php", "success");
exit;
}技巧2:获取用户信息
// 获取当前用户信息
$uid = $_SESSION['uid'];
$username = GetUserNameById($uid);
$dept_name = GetDeptNameById($_SESSION['dept_id']);技巧3:发送通知
// 发送OA短信通知
send_sms($user_id, $message);
// 发送手机短信通知
send_mobile_sms_user($user_id, $message);
// 发送邮件通知
send_mail($email, $subject, $body);技巧4:权限判断
// 判断用户是否为模块管理员
if (!is_module_manager($_SESSION['uid'], "project")) {
Message(_("无权限访问"), "", "error");
exit;
}现象:调用函数时报错"Call to undefined function"
解决方案:

解决步骤:
现象:调用短信函数返回false
解决方案:
问题类型 | 排查方法 |
|---|---|
短信余额不足 | 检查短信服务配置 |
手机号格式错误 | 使用is_ip()类似方法验证 |
短信内容过长 | 截断内容或分条发送 |
服务未启动 | 检查OfficeMail服务状态 |
现象:调用send_mail()返回false
解决方案:
问题类型 | 排查方法 |
|---|---|
SMTP配置错误 | 检查邮件服务器配置 |
收件人地址错误 | 验证邮箱格式 |
附件路径错误 | 检查文件是否存在 |
服务未启动 | 检查OfficeMail服务状态 |
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。