'text', 'text' => array('content' => '[ ' . date("Y-m-d H:i:s") . ' ] - 日志:' . $message)); $post_string = json_encode($data); $ch = curl_init(); $access_token = 'b74a7e686873baaed443c4d4bf6c68e3f58debc79324c4d3ea14549dc43586f2'; curl_setopt($ch, CURLOPT_URL, 'https://oapi.dingtalk.com/robot/send?access_token=' . $access_token); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5); curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json;charset=utf-8')); curl_setopt($ch, CURLOPT_POSTFIELDS, $post_string); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // 线下环境不用开启curl证书验证, 未调通情况可尝试添加该代码 curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); $data = curl_exec($ch); curl_close($ch); return $data; } } /** * curl get * @param string $url * @param array $headers * @return bool|mixed */ if (!function_exists('curl_get')) { function curl_get($url = '', $headers = []) { $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_HEADER, false); //是否在展示header信息 curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // curl_setopt($curl,CURLOPT_PROXY,'127.0.0.1:8888'); if (preg_match("/^https(.*)?/i", $url)) { curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); //规避ssl的证书检查 curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); } curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 5); curl_setopt($curl, CURLOPT_TIMEOUT, 5); curl_setopt($curl, CURLOPT_ENCODING, 'gzip'); count($headers) && curl_setopt($curl, CURLOPT_HTTPHEADER, $headers); $result = curl_exec($curl); $result_no = curl_errno($curl); curl_close($curl); if ($result_no != 0) { // 请求异常,写日志 return false; } else { return $result; } } } /** * post 发送 * @param string $url * @param array $headers * @param string $post * @return bool|mixed */ if (!function_exists('curl_post')) { function curl_post($url = '', $headers = [], $post = '') { $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_HEADER, false); //是否在展示header信息 curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); if (preg_match("/^https(.*)?/i", $url)) { curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); //规避ssl的证书检查 curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); } curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 5); curl_setopt($curl, CURLOPT_TIMEOUT, 5); curl_setopt($curl, CURLOPT_ENCODING, "gzip"); count($headers) && curl_setopt($curl, CURLOPT_HTTPHEADER, $headers); curl_setopt($curl, CURLOPT_POST, true); curl_setopt($curl, CURLOPT_POSTFIELDS, $post); //post 数据 $result = curl_exec($curl); $result_no = curl_errno($curl); curl_close($curl); if ($result_no != 0) { // 请求异常,写日志 return false; } else { return $result; } } } if (!function_exists('__url')) { /** * 构建URL地址 * @param string $url * @param array $vars * @param bool $suffix * @param bool $domain * @return string */ function __url(string $url = '', array $vars = [], $suffix = true, $domain = false) { return url($url, $vars, $suffix, $domain)->build(); } } if (!function_exists('password')) { /** * 密码加密算法 * @param $value 需要加密的值 * @param $type 加密类型,默认为md5 (md5, hash) * @return mixed */ function password($value) { $value = sha1('blog_') . md5($value) . md5('_encrypt') . sha1($value); return sha1($value); } } if (!function_exists('xdebug')) { /** * debug调试 * @param string|array $data 打印信息 * @param string $type 类型 * @param string $suffix 文件后缀名 * @param bool $force * @param null $file * @deprecated 不建议使用,建议直接使用框架自带的log组件 */ function xdebug($data, $type = 'xdebug', $suffix = null, $force = false, $file = null) { !is_dir(runtime_path() . 'xdebug/') && mkdir(runtime_path() . 'xdebug/'); if (is_null($file)) { $file = is_null($suffix) ? runtime_path() . 'xdebug/' . date('Ymd') . '.txt' : runtime_path() . 'xdebug/' . date('Ymd') . "_{$suffix}" . '.txt'; } file_put_contents($file, "[" . date('Y-m-d H:i:s') . "] " . "========================= {$type} ===========================" . PHP_EOL, FILE_APPEND); $str = (is_string($data) ? $data : ((is_array($data) || is_object($data)) ? print_r($data, true) : var_export($data, true)) . PHP_EOL); $force ? file_put_contents($file, $str) : file_put_contents($file, $str, FILE_APPEND); } } if (!function_exists('sysconfig')) { /** * 获取系统配置信息 * @param $group * @param null $name * @return array|mixed */ function sysconfig($group, $name = null) { $where = ['group' => $group]; $value = empty($name) ? Cache::get("sysconfig_{$group}") : Cache::get("sysconfig_{$group}_{$name}"); if (empty($value)) { if (!empty($name)) { $where['name'] = $name; $value = \app\admin\model\SystemConfig::where($where)->value('value'); Cache::tag('sysconfig')->set("sysconfig_{$group}_{$name}", $value, 3600); } else { $value = \app\admin\model\SystemConfig::where($where)->column('value', 'name'); Cache::tag('sysconfig')->set("sysconfig_{$group}", $value, 3600); } } return $value; } } if (!function_exists('array_format_key')) { /** * 二位数组重新组合数据 * @param $array * @param $key * @return array */ function array_format_key($array, $key) { $newArray = []; foreach ($array as $vo) { $newArray[$vo[$key]] = $vo; } return $newArray; } } if (!function_exists('auth')) { /** * auth权限验证 * @param $node * @return bool * @throws \think\db\exception\DataNotFoundException * @throws \think\db\exception\DbException * @throws \think\db\exception\ModelNotFoundException */ function auth($node = null) { $authService = new AuthService(session('admin.id')); $check = $authService->checkNode($node); return $check; } }