勾股OA在线文档

勾股OA5.0常用【PHP助手】函数集

一、系统相关

1、设置缓存

set_cache($key='', $value='', $date = 86400);

2、读取缓存

get_cache($key='');

3、清空缓存

clear_cache($key='');

4、读取文件配置

get_config($key);

5、读取系统配置

get_system_config($name='', $key = '');

6、设置系统配置

set_system_config($name, $key, $value='');

7、获取url参数,$key为空时返回所有参数数组

get_params($key = "");

8、判断系统是否已安装

is_installed();

9、判断系统是否存在模板

isTemplate($url='');

10、判断模块是否禁用

isModule($name);

11、是否是模块配置内的某模块的数据权限,>1即有权限,$uid,要鉴别的用户,$name模块名称,$conf权限标识

isAuth($uid,$name,$conf);

12、获取某模块的某数据配置,$name模块名称,$conf权限标识

valueAuth($name,$conf);

13、是否是某部门负责人,>1即有权限,$uid,要鉴别的用户,$did要鉴别的部门,为空时全部部门

isLeader($uid,$did);

14、菜单节点权限判断

check_auth($rule, $uid);

15、返回json数据,用于接口

to_assign($code = 0, $msg = "操作成功", $data = [], $action = '', $url = '', $httpCode = 200, $header = [], $options = []);

16、适配layui的table数据列表的返回数据方法,用于接口

table_assign($code = 0, $msg = '请求成功', $data = [], $httpCode = 200, $header = [], $options = []);

17、写入操作日

add_log($type, $param_id = '', $param = [] ,$subject='');

18、发送站内信

send_message($msg=[]);
//如:
$msg=[
    'from_uid'=>$this->uid,//发送人
    'to_uids'=>$step[0]['check_uids'],//接收人
    'template_id'=>1,//消息模板ID
    'content'=>[ //消息内容
        'create_time'=>date('Y-m-d H:i:s'),
        'action_id'=>$param['action_id'],
        'title' => '一个审批'
        ]
    ];
send_message($msg);

19、消息链接信息转换

get_message_link($template,$action_id);

20、发送邮件

send_email($to, $subject = '', $content = '');

二、员工相关

1、获取指定用户的信息

get_admin($uid);

2、获取指定部门所有的员工信息($son=1,包含子部门)

get_department_employee($did=0,$son=0);

3、获取岗位职称列表

get_position();

4、页面模板快速获取当前登录人信息。如:

{$login_admin.id}

三、部门相关

1、获取部门列表

get_department();

2、读取部门名称

//$dids可是数字,字符串,数组。如:1、2,3、[1,2,3]
get_department_name($dids);

3、获取某部门的子部门ids,($is_self=1,包含自己)

get_department_son($did = 0, $is_self = 1);

4、获取某员工所在主部门的负责人(pid=1,上一级部门负责人)

get_department_leader($uid=0,$pid=0);

5、获取某负责人所负责的部门的数据集(ids)【包括部门负责人所在的部门+其子部门】

//传入部门负责人id,由于部门支持设置多个负责人,所以输出的是部门ids数组,如:[1,2,3,4,5]
get_leader_departments($uid = 0);

6、获取某员工所在部门的顶级部门(如果默认顶级部门当做是分公司的,即是获取某员工所属分公司)

get_department_top($did=0);

7、获取某员工所能看的部门数组,传入某员工uid,输出部门数组dids,如:[1,2,3]

get_role_departments($uid=0);

四、常规数据获取

1、读取基础数据,$table=数据表名(不要加表前缀)

get_base_data($table);

2、读取模块基础数据,$table=数据表名(不要加表前缀),$type=类型(,,2,3…)

get_base_type_data($table,$type);

3、读取所属地区名称

get_region_name($id);

4、根据附件表的id返回附件的url地址

get_file($id);

5、读取分类子分类ids,返回id数组

get_cate_son($table='',$id=0,$is_self = 1);

五、工具函数

1、生成一个不会重复的字符串

make_token()

2、随机字符串,默认长度10

set_salt($num = 10);

3、密码加密

set_password($pwd, $salt);

4、去除空格

trim_space($str='');

5、隐藏电话号码(邮箱)中间4位

hidetel($phone);

6、间隔时间段格式化,$time 时间戳,$format 格式 【d:显示到天 i显示到分钟 s显示到秒】

time_trans($time='', $format = 'd');

7、时间戳格式化为正常的日期格式,默认我们用PHP自带的date函数,但是涉及到有些数据可能为0的情况,所以我们写了一个to_date的方法,对0的情况默认输出是空字符。

to_date($time = NULL, $format = 'Y-m-d H:i:s');

在页面模板中可以使用:

{$detail.begin_time|to_date='Y-m-d'}

8、计算按相差天数

count_days($a=0, $b = 0);

9、人民币转大写

cny($amount);

10、金额展示,规则:超过1万时以万为单位,低于1万时以千为单位,低于1千时以元为单位

format_money($money);

11、金额保留两位小数

sprintf("%.2f",$money);

12、 二维数组排序
@param $array 要进行排序的select结果集
@param $field 排序的字段
@param $order 排序方式1降序2升序

sort_array($array = [], $field='', $order = 1);

13、查找数组索引,支持一维数组,二维数组查找

array_search_plus($array, $searchFor);

14、根据数据库查询出来二维数组获取某个字段拼接字符串

split_array_field($array = [], $field = '',$separator=',');

15、数组转换字符串

array_to_string($array=[],$separator=',');

16、字符串转换数组

string_to_array($string='',$separator=',');

17、文件大小格式化

to_size($size);

18、格式化附件展示($view,不为空即是仅查看)

file_card($file_array,$view='')

六、校验相关

1、判断是否是手机浏览器

is_mobile();

2、判断是否是微信浏览器

is_wechat();

3、判断是否是企业微信浏览器

is_wxwork();

4、验证输入的邮件地址是否合法

is_email($user_email);

七、其他

if(!empty($param['end_time'])){
    $param['end_time'] = strtotime($param['end_time']);
}
if (!empty($param['range_time'])) {
    $range_time =explode('~', $param['range_time']);
    $where[] = ['start_time', 'between',[strtotime(urldecode($range_time[0])),strtotime(urldecode($range_time[1]))]];
}
$param = get_params();
$id = isset($param['id']) ? $param['id'] : 0;
foreach ($new as $key => $value) {
        if (!in_array($key, $key_array)) {
            if(isset($old[$key]) && ($old[$key]!=$value)){
                $log_data[] = array(
                    'field' => $key,
                    'type' => $type,
                    $type_array[$type] => $new['id'],
                    'admin_id' => $uid,
                    'old_content' => $old[$key],
                    'new_content' => $value,
                    'create_time' => time(),
                );
            }
        }
    }
//打印sql语句
$sql = Db::name('Admin')->where($where)
        ->where(function ($query) use($whereOr) {
            if (!empty($whereOr)){
                $query->whereOr($whereOr);
            }
        })->fetchSql()->buildSql();
echo $sql;