// +---------------------------------------------------------------------- // 应用公共文件 use app\admin\service\AuthService; use think\facade\Cache; /** * 返回随机字符串 * @param $length 长度 * @return string */ function getRandChar($length) { $str = null; $strPol = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz"; $max = strlen($strPol) - 1; for ($i = 0; $i < $length; $i++) { $str .= $strPol[rand(0, $max)]; } return $str; } /* * 科目代号转换 * */ function changeSubString($num){ $result = preg_split('//', $num, -1, PREG_SPLIT_NO_EMPTY); $str = ""; $conSub = config('setsub.newTestSub'); foreach($result as $val){ $str .= $conSub[$val-1]."/"; } $arr = substr($str,0,strlen($str)-1); return $arr; } /* * 新高考科目英文查询赋值数组 * */ function getSubEng($num){ $mySub = preg_split('//', $num, -1, PREG_SPLIT_NO_EMPTY); $mySub[0] = config('setSub.subEng')[$mySub[0]]; $mySub[1] = config('setSub.subEng')[$mySub[1]]; $mySub[2] = config('setSub.subEng')[$mySub[2]]; return $mySub; } /* * 省份转换real_code转code * */ function changeCode($str){ $result = explode(',',$str); $province = config('province.province'); foreach($result as $key=>$val){ $res[$key] = $province[$val]['code']; } $result = implode(',',$res); return $result; } /* * 字符串排序 * */ function sortStr($str){ $arr = str_split($str); asort($arr); $str = implode('',$arr); return $str; } /** * 十进制数转换成62进制 * * @param integer $num * @return string */ function from10_to62($num) { $to = 62; $dict = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; $ret = ''; do { $ret = $dict[bcmod($num, $to)] . $ret; $num = bcdiv($num, $to); } while ($num > 0); return $ret; } if (!function_exists('api_return')) { /** * 成功时返回的信息 * @param $msg 消息 * @return \think\response\Json */ function api_return($msg, $data = '') { return json(['status' => 1, 'msg' => $msg, 'data' => $data]); } } if (!function_exists('api_error')) { /** * 失败时返回的信息 * @param $msg 消息 * @return \think\response\Json */ function api_error($msg, $data = '') { return json(['status' => 0, 'msg' => $msg, 'data' => $data]); } } function curl_post($url, array $params = array()) { $data_string = json_encode($params); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string); curl_setopt( $ch, CURLOPT_HTTPHEADER, array( 'Content-Type: application/json' ) ); $data = curl_exec($ch); curl_close($ch); return ($data); } function curl_post_raw($url, $rawData) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_POSTFIELDS, $rawData); curl_setopt( $ch, CURLOPT_HTTPHEADER, array( 'Content-Type: text' ) ); $data = curl_exec($ch); curl_close($ch); return ($data); } /** * @param string $url get请求地址 * @param int $httpCode 返回状态码 * @return mixed */ function curl_get($url, &$httpCode = 0) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //不做证书校验,部署在linux环境下请改为true curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10); $file_contents = curl_exec($ch); $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch); return $file_contents; } function fromArrayToModel($m , $array) { foreach ($array as $key => $value) { $m[$key] = $value; } return $m; } if (!function_exists('sysconf')) { /** * 获取系统配置 * @param $group 分组 * @param $name 变量名 * @return mixed */ function sysconf($group, $name) { $value = \app\admin\model\Config::where(['group' => $group, 'name' => $name])->value('value'); return $value; } } if (!function_exists('auth')) { /** * 权限节点判断 * @param $node 节点 * @return bool (true:有权限,false:无权限) * @throws \think\db\exception\DataNotFoundException * @throws \think\db\exception\ModelNotFoundException * @throws \think\exception\DbException */ function auth($node) { return AuthService::checkNode($node); } } if (!function_exists('parseNodeStr')) { /** * 驼峰转下划线规则 * @param string $node * @return string */ function parseNodeStr($node) { $tmp = []; foreach (explode('/', $node) as $name) { $tmp[] = strtolower(trim(preg_replace("/[A-Z]/", "_\\0", $name), "_")); } return str_replace('._', '.', trim(join('/', $tmp), '/')); } } 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('__buildData')) { /** * 构建数据 * @param $data 模型数据 * @param $method 模型方法 */ function __buildData(&$data, $method) { foreach ($data as &$vo) { $vo->$method; } } } if (!function_exists('alert')) { /** * 弹出层提示 * @param string $msg 提示信息 * @param string $url 跳转链接 * @param int $time 停留时间 默认2秒 * @param int $icon 提示图标 * @return string */ function alert($msg = '', $url = '', $time = 3, $icon = 6) { $success = ''; $success .= ''; $success .= ''; $success .= ''; $success .= ''; if (empty($url)) { $success .= ''; } else { $success .= ''; } return $success; } } if (!function_exists('msg_success')) { /** * 成功时弹出层提示信息 * @param string $msg 提示信息 * @param string $url 跳转链接 * @param int $time 停留时间 默认2秒 * @param int $icon 提示图标 * @return string */ function msg_success($msg = '', $url = '', $time = 3, $icon = 1) { return alert($msg, $url, $time, $icon); } } if (!function_exists('msg_error')) { /** * 失败时弹出层提示信息 * @param string $msg 提示信息 * @param string $url 跳转链接 * @param int $time 停留时间 默认2秒 * @param int $icon 提示图标 * @return string */ function msg_error($msg = '', $url = '', $time = 3, $icon = 2) { return alert($msg, $url, $time, $icon); } } if (!function_exists('clear_menu')) { /** * 清空菜单缓存 */ function clear_menu() { Cache::clear('menu'); } } if (!function_exists('clear_basic')) { /** * 清空菜单缓存 */ function clear_basic() { Cache::clear('basic'); } } if (!function_exists('get_ip')) { /** * 获取用户ip地址 * @return array|false|string */ function get_ip() { $ip = false; if (!empty($_SERVER["HTTP_CLIENT_IP"])) { $ip = $_SERVER["HTTP_CLIENT_IP"]; } if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) { $ips = explode(", ", $_SERVER['HTTP_X_FORWARDED_FOR']); if ($ip) { array_unshift($ips, $ip); $ip = false; } for ($i = 0; $i < count($ips); $i++) { if (!eregi("^(10│172.16│192.168).", $ips[$i])) { $ip = $ips[$i]; break; } } } return ($ip ? $ip : $_SERVER['REMOTE_ADDR']); } } if (!function_exists('get_location')) { /** * 根据ip获取地理位置 * @param string $ip * @return mixed */ function get_location($ip = '') { empty($ip) && $ip = get_ip(); //接口有问题 // ini_set('user_agent', 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3559.6 Safari/537.36'); // $url = "http://ip.taobao.com/service/getIpInfo.php?ip={$ip}"; // $ret = file_get_contents($url); // $arr = json_decode($ret, true); // $data =$arr['data']; $data = [ 'ip' => $ip, 'country' => '', 'region' => '', 'city' => '', 'isp' => '', ]; return $data; } } if (!function_exists('__success')) { /** * 成功时返回的信息 * @param $msg 消息 * @return \think\response\Json */ function __success($msg, $data = '') { return json(['code' => 0, 'msg' => $msg, 'data' => $data]); } } if (!function_exists('__error')) { /** * 错误时返回的信息 * @param $msg 消息 * @return \think\response\Json */ function __error($msg, $data = '') { return json(['code' => 1, 'msg' => $msg, 'data' => $data]); } } if (!function_exists('is_mobile')) { /** * 判断客户端是否为手机 * @return bool */ function is_mobile() { $agent = strtolower($_SERVER['HTTP_USER_AGENT']); $is_pc = (strpos($agent, 'windows nt')) ? true : false; $is_mac = (strpos($agent, 'mac os')) ? true : false; $is_iphone = (strpos($agent, 'iphone')) ? true : false; $is_android = (strpos($agent, 'android')) ? true : false; $is_ipad = (strpos($agent, 'ipad')) ? true : false; if ($is_pc) return false; if ($is_mac) return true; if ($is_iphone) return true; if ($is_android) return true; if ($is_ipad) return true; } } if (!function_exists('get_time')) { /** * 获取当前时间 * @return false|string */ function get_time() { return date('Y-m-d H:i:s'); } } if (!function_exists('code')) { /** * 生成随机数验证码 * @param string $num * @return int */ function code($num = '6') { $max = pow(10, $num) - 1; $min = pow(10, $num - 1); return rand($min, $max); } } if (!function_exists('get_config')) { /** * 获取配置信息 * @param $group * @param $name */ function get_config($group, $name) { $value = Db::name('SystemConfig')->where([ 'group' => $group, 'name' => $name, ])->value('value'); return $value; } } if (!function_exists('P')) { /** * 打印日志 * @param $data */ function P($data) { \think\facade\Log::record($data, 'record'); } }