You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

201 lines
5.0 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<?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';
}
}