|
|
<?php
|
|
|
// 应用公共文件
|
|
|
|
|
|
require 'common/file.php'; //文件类
|
|
|
require 'common/format.php'; //格式转换类
|
|
|
require 'common/log.php'; //日志类
|
|
|
require 'common/request.php'; //请求类
|
|
|
require 'common/transfer.php'; //数据传输类
|
|
|
require 'common/verify.php'; //验证类
|
|
|
require 'common/sign.php'; //签名类
|
|
|
require 'common/platform.php'; //平台配置类
|
|
|
/**
|
|
|
* 随机字符串生成
|
|
|
* @param int $length 生成字符串长度
|
|
|
* @param array $str_content ['number','capital_chars','lower_chars']
|
|
|
* @date 2021-01-22
|
|
|
*/
|
|
|
function createNonceStr($length = 16, $str_content = ['number', 'capital_chars', 'lower_chars'])
|
|
|
{
|
|
|
$char_set = [
|
|
|
'number' => '0123456789',
|
|
|
'capital_chars' => 'ABCDEFGHIJKLMNOPQRSTUVWXYZ',
|
|
|
'lower_chars' => 'abcdefghijklmnopqrstuvwxyz'
|
|
|
];
|
|
|
|
|
|
$string = '';
|
|
|
foreach ($str_content as $k => $v) {
|
|
|
if (array_key_exists($v, $char_set)) {
|
|
|
$string .= $char_set[$v];
|
|
|
} else {
|
|
|
$string .= $v;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
$result = "";
|
|
|
for ($i = 0; $i < $length; $i++) {
|
|
|
$result .= substr($string, mt_rand(0, strlen($string) - 1), 1);
|
|
|
}
|
|
|
return $result;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 生成snowid(循环时请勿使用此选项)
|
|
|
* @date 2021-03-01
|
|
|
*/
|
|
|
//function createSnowId(){
|
|
|
// $snow_flake = new Godruoyi\Snowflake\Snowflake();
|
|
|
// return $snow_flake->id();
|
|
|
//}
|
|
|
|
|
|
|
|
|
/**
|
|
|
* 根据经纬度计算距离
|
|
|
* @param string $lat1 起始点纬度
|
|
|
* @param string $lng1 起始点经度
|
|
|
* @param string $lat2 终点纬度
|
|
|
* @param string $lng2 终点经度
|
|
|
* @date 2021-01-22
|
|
|
*/
|
|
|
function getdistance($lat1, $lng1, $lat2, $lng2)
|
|
|
{
|
|
|
$EARTH_RADIUS = 6378.137;
|
|
|
$radLat1 = rad($lat1);
|
|
|
$radLat2 = rad($lat2);
|
|
|
$a = $radLat1 - $radLat2;
|
|
|
$b = rad($lng1) - rad($lng2);
|
|
|
$s = 2 * asin(sqrt(pow(sin($a / 2), 2) +
|
|
|
cos($radLat1) * cos($radLat2) * pow(sin($b / 2), 2)));
|
|
|
$s = $s * $EARTH_RADIUS;
|
|
|
$s = round($s, 3); //千米为单位,3位小数
|
|
|
return $s;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 根据经纬度计算距离 -- 子方法
|
|
|
* @param string $d 经纬度
|
|
|
* @date 2021-01-22
|
|
|
*/
|
|
|
function rad($d)
|
|
|
{
|
|
|
return $d * 3.1415926535898 / 180.0;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 系统非常规MD5加密方法
|
|
|
* @param string $str 要加密的字符串
|
|
|
* @param string $key 加密字符
|
|
|
* @date 2021-01-22
|
|
|
*/
|
|
|
function md5WithKey($str, $key = 'A?x"nbN7hp,$<|ItOU^@Cc#&1%qyX.iPdH~u-8Jm')
|
|
|
{
|
|
|
return '' === $str ? '' : md5(sha1($str) . $key);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 序列化与反序列化
|
|
|
*/
|
|
|
function serializeMysql($info, $type = 0)
|
|
|
{
|
|
|
if ($type == 0) {
|
|
|
return addslashes(serialize($info));
|
|
|
} else {
|
|
|
return unserialize(stripslashes($info));
|
|
|
}
|
|
|
}
|
|
|
/**
|
|
|
* 后台菜单更新链接
|
|
|
* @param: $module_name 模块名 $controller_name 控制器名 $action_name 方法名 $param 参数
|
|
|
*/
|
|
|
function getMenuLinkurl($module_name,$controller_name, $action_name, $param)
|
|
|
{
|
|
|
return url($module_name.'/'.$controller_name . '/' . $action_name, $param);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 搜索
|
|
|
* @param $arr
|
|
|
* @param $search
|
|
|
*/
|
|
|
function autoSearch($arr, &$search)
|
|
|
{
|
|
|
foreach ($arr as $k => $v) {
|
|
|
if (!isset($search[$v])) {
|
|
|
$search[$v] = '';
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
/**
|
|
|
* 系统非常规MD5加密方法
|
|
|
* @date 2018-11-27
|
|
|
* @param string $str 要加密的字符串
|
|
|
* @param string $key 加密字符
|
|
|
*/
|
|
|
function thinkUcenterMd5($str, $key = 'ThinkUCenter')
|
|
|
{
|
|
|
return '' === $str ? '' : md5(sha1($str) . $key);
|
|
|
}
|
|
|
/**
|
|
|
* 获取当前或者服务器端的IP 2018-04-19
|
|
|
* @param int $type 获取服务器IP类型 1为本地服务器 2为代码服务器
|
|
|
*/
|
|
|
function getClientIp($type = 1)
|
|
|
{
|
|
|
if ($type == 1) {
|
|
|
return isset($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : '0.0.0.0';
|
|
|
} else if ($type == 2) {
|
|
|
return isset($_SERVER['SERVER_ADDR']) ? $_SERVER['SERVER_ADDR'] : '0.0.0.0';
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
/**
|
|
|
* 格式化数字
|
|
|
* @param string $num 要格式化数字
|
|
|
* @param int $decimal 保留X位小数
|
|
|
* @return string
|
|
|
*/
|
|
|
function formatNumber($num, $decimal = 2)
|
|
|
{
|
|
|
return sprintf('%.' . $decimal . 'f', $num);
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
* 创建唯一标示
|
|
|
* @param int $number 可选位数
|
|
|
* @return string 最长为88位
|
|
|
*/
|
|
|
function createUuid($number = 10)
|
|
|
{
|
|
|
$str = md5(uniqid(mt_rand(), true));
|
|
|
$uuid = substr($str, 0, floor($number / 5));
|
|
|
$number -= floor($number / 5);
|
|
|
$uuid .= substr($str, 8, floor($number / 4));
|
|
|
$number -= floor($number / 4);
|
|
|
$uuid .= substr($str, 12, floor($number / 3));
|
|
|
$number -= floor($number / 3);
|
|
|
$uuid .= substr($str, 16, floor($number / 2));
|
|
|
$number -= floor($number / 2);
|
|
|
$uuid .= substr($str, 20, $number);
|
|
|
return $uuid;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 获取当前或者服务器端的IP
|
|
|
* @author aurora
|
|
|
* @date 2018-10-25
|
|
|
* @param int $type 获取服务器IP类型 1--本地服务器 2--代码服务器
|
|
|
* @return string
|
|
|
*/
|
|
|
function getUserIp($type = 1)
|
|
|
{
|
|
|
if ($type == 1) {
|
|
|
return isset($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : '0.0.0.0';
|
|
|
} else if ($type == 2) {
|
|
|
return isset($_SERVER['SERVER_ADDR']) ? $_SERVER['SERVER_ADDR'] : '0.0.0.0';
|
|
|
}
|
|
|
}
|
|
|
|