get('admin.config')) {
$config = config('admin');
$config['lang'] = config('app.locale');
}
if (is_array($key)) {
// 保存
foreach ($key as $k => $v) {
Arr::set($config, $k, $v);
}
$session->put('admin.config', $config);
return;
}
if ($key === null) {
return $config;
}
return Arr::get($config, $key, $value);
}
}
//生成随机码
function create_invite_code() {
$code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
$rand = $code[rand(0,25)]
.strtoupper(dechex(date('m')))
.date('d')
.substr(time(),-5)
.substr(microtime(),2,5)
.sprintf('%02d',rand(0,99));
for(
$a = md5( $rand, true ),
$s = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ',
$d = '',
$f = 0;
$f < 6;
$g = ord( $a[ $f ] ),
$d .= $s[ ( $g ^ ord( $a[ $f + 8 ] ) ) - $g & 0x1F ],
$f++
);
return $d;
}
/**
* 时间格式化(时间戳)
* @param $ptime
* @return false|string
*/
function uc_time_ago($ptime)
{
date_default_timezone_set('PRC');
$etime = time() - $ptime;
switch ($etime) {
case $etime <= 60:
$msg = '刚刚';
break;
case $etime > 60 && $etime <= 60 * 60:
$msg = floor($etime / 60) . '分钟前';
break;
case $etime > 60 * 60 && $etime <= 24 * 60 * 60:
$msg = date('Ymd', $ptime) == date('Ymd', time()) ? '今天 ' . date('H:i', $ptime) : '昨天 ' . date('H:i', $ptime);
break;
case $etime > 24 * 60 * 60 && $etime <= 2 * 24 * 60 * 60:
$msg = date('Ymd', $ptime) + 1 == date('Ymd', time()) ? '昨天 ' . date('H:i', $ptime) : '前天 ' . date('H:i', $ptime);
break;
case $etime > 2 * 24 * 60 * 60 && $etime <= 12 * 30 * 24 * 60 * 60:
$msg = date('Y', $ptime) == date('Y', time()) ? date('m-d H:i', $ptime) : date('Y-m-d H:i', $ptime);
break;
default:
$msg = date('Y-m-d H:i', $ptime);
}
return $msg;
}
/**
* 获取IP地址归属地
* @param $ip
* @return string
*/
function get_ip_address($ip)
{
if ('127.0.0.1' == $ip) return 'Localhost';
$url = 'http://ip.taobao.com/service/getIpInfo.php?ip=' . $ip;
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // 获取数据返回
$location = curl_exec($ch);
$location = json_decode($location, true);
curl_close($ch);
if (false != $location && 0 === $location['code']) {
return $location['data']['region'] . $location['data']['city'] . $location['data']['county'] . '・' . $location['data']['isp'];
} else {
return 'unknown';
}
}
/**
* 递归查询获取分类树结构
* @param $data
* @param int $pid
* @param int $level
* @param array $tree
* @param string $pidField
* @param string $showField
* @return array
*/
function get_tree_list(&$data, $pid = 0, $level = 0, &$tree = [], $pidField = 'pid', $showField = 'name')
{
foreach ($data as $key => &$value) {
if ($value[$pidField] == $pid) {
$value['level'] = $level;
$value['level'] && $value[$showField] = ' ' . $value[$showField];
$value[$showField] = str_repeat('ㅡ', $value['level']) . $value[$showField];
$tree[] = $value;
unset($data[$key]);
get_tree_list($data, $value['id'], $level + 1, $tree);
}
}
unset($value);
return $tree;
}
/**
* 递归查询获取分类树结构带child
* @param $data
* @param int $pid
* @param int $level
* @param string $pidField
* @return array
*/
function get_tree_list_with_child(&$data, $pid = 0, $level = 0, $pidField = 'pid')
{
$tree = [];
foreach ($data as $key => &$value) {
if ($value[$pidField] == $pid) {
$value['level'] = $level;
$value['child'] = get_tree_list_with_child($data, $value['id'], $level + 1);
$tree[] = $value;
unset($data[$key]);
}
}
unset($value);
return $tree;
}
/**
* 打印sql语句,在sql语句之前调用
*/
function dump_sql()
{
\DB::listen(function ($query) {
$bindings = $query->bindings;
$i = 0;
$rawSql = preg_replace_callback('/\?/', function ($matches) use ($bindings, &$i) {
$item = isset($bindings[$i]) ? $bindings[$i] : $matches[0];
$i++;
return gettype($item) == 'string' ? "'$item'" : $item;
}, $query->sql);
echo $rawSql . "\n
\n";
});
}
function create_guid($namespace = null)
{
static $guid = '';
$uid = uniqid("", true);
$data = $namespace;
$data .= $_SERVER ['REQUEST_TIME']; // 请求那一刻的时间戳
$data .= $_SERVER ['HTTP_USER_AGENT']; // 获取访问者在用什么操作系统
$data .= $_SERVER ['SERVER_ADDR']; // 服务器IP
$data .= $_SERVER ['SERVER_PORT']; // 端口号
$data .= $_SERVER ['REMOTE_ADDR']; // 远程IP
$data .= $_SERVER ['REMOTE_PORT']; // 端口信息
$hash = strtoupper(hash('ripemd128', $uid . $guid . md5($data)));
$guid = substr($hash, 0, 8);
return $guid;
}
function create_order_number()
{
return date('Ymd') . str_pad(mt_rand(1, 999999), 6, '0', STR_PAD_LEFT);
}
/**
* curl 请求
* @param $url
* @param null $header
* @param null $data
* @return mixed
*/
function curlRequest($url, $header = null, $data = null)
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_ENCODING, 'gzip');
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
if ($data) {
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
}
if ($header) {
curl_setopt($ch, CURLOPT_HEADER, $header);
}
$ret = curl_exec($ch);
curl_close($ch);
return $ret;
}
/**
* 数字金额转换成中文大写金额的函数
* @param $num
* @return string
*/
function cny($num)
{
$c1 = "零壹贰叁肆伍陆柒捌玖";
$c2 = "分角元拾佰仟万拾佰仟亿";
$num = round($num, 2);
$num = $num * 100;
if (strlen($num) > 10) {
return "数据太长,没有这么大的钱吧,检查下";
}
$i = 0;
$c = "";
while (1) {
if ($i == 0) {
$n = substr($num, strlen($num) - 1, 1);
} else {
$n = $num % 10;
}
$p1 = substr($c1, 3 * $n, 3);
$p2 = substr($c2, 3 * $i, 3);
if ($n != '0' || ($n == '0' && ($p2 == '亿' || $p2 == '万' || $p2 == '元'))) {
$c = $p1 . $p2 . $c;
} else {
$c = $p1 . $c;
}
$i = $i + 1;
$num = $num / 10;
$num = (int)$num;
if ($num == 0) {
break;
}
}
$j = 0;
$slen = strlen($c);
while ($j < $slen) {
$m = substr($c, $j, 6);
if ($m == '零元' || $m == '零万' || $m == '零亿' || $m == '零零') {
$left = substr($c, 0, $j);
$right = substr($c, $j + 3);
$c = $left . $right;
$j = $j - 3;
$slen = $slen - 3;
}
$j = $j + 3;
}
if (substr($c, strlen($c) - 3, 3) == '零') {
$c = substr($c, 0, strlen($c) - 3);
}
if (empty($c)) {
return "零元整";
} else {
return $c . "整";
}
}
if (!function_exists('valid_url')) {
/**
* 路径助手函数
* @param $url
* @param null $disk_name
* @param false $temp
* @param null|DateTimeInterface $expiration
* @return string|null
*/
function valid_url($url, $disk_name = null, $temp = false, $expiration = null)
{
if (is_null($url)) {
return null;
}
if (filter_var($url, FILTER_VALIDATE_URL)) {
return $url;
}
if ($temp) {
$expiration = $expiration ?: now()->addMinutes(30);
return Storage::disk($disk_name)->temporaryUrl($url, $expiration);
}
return Storage::disk($disk_name)->url($url);
}
}
if(!function_exists('user')){
/**
* 获取用户登录信息
* @return \Illuminate\Contracts\Auth\Authenticatable|\App\Models\User
*/
function user () {
return auth('api')->user();
}
}