773 lines
		
	
	
		
			19 KiB
		
	
	
	
		
			PHP
		
	
	
		
		
			
		
	
	
			773 lines
		
	
	
		
			19 KiB
		
	
	
	
		
			PHP
		
	
	
| 
								 | 
							
								<?php
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								use app\common\server\UrlServer;
							 | 
						|||
| 
								 | 
							
								use think\facade\Db;
							 | 
						|||
| 
								 | 
							
								use app\common\model\user\User;
							 | 
						|||
| 
								 | 
							
								use app\common\model\goods\Goods;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								/**
							 | 
						|||
| 
								 | 
							
								 * Notes: 生成随机长度字符串
							 | 
						|||
| 
								 | 
							
								 * @param $length
							 | 
						|||
| 
								 | 
							
								 * @author FZR(2021/1/28 10:36)
							 | 
						|||
| 
								 | 
							
								 * @return string|null
							 | 
						|||
| 
								 | 
							
								 */
							 | 
						|||
| 
								 | 
							
								function getRandChar($length)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
								    $str = null;
							 | 
						|||
| 
								 | 
							
								    $strPol = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz";
							 | 
						|||
| 
								 | 
							
								    $max = strlen($strPol) - 1;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								    for ($i = 0;
							 | 
						|||
| 
								 | 
							
								         $i < $length;
							 | 
						|||
| 
								 | 
							
								         $i++) {
							 | 
						|||
| 
								 | 
							
								        $str .= $strPol[rand(0, $max)];
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								    return $str;
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								/**
							 | 
						|||
| 
								 | 
							
								 * Notes: 生成密码
							 | 
						|||
| 
								 | 
							
								 * @param $plaintext
							 | 
						|||
| 
								 | 
							
								 * @param $salt
							 | 
						|||
| 
								 | 
							
								 * @author FZR(2021/1/28 15:30)
							 | 
						|||
| 
								 | 
							
								 * @return string
							 | 
						|||
| 
								 | 
							
								 */
							 | 
						|||
| 
								 | 
							
								function generatePassword($plaintext, $salt)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
								    $salt = md5('y' . $salt . 'x');
							 | 
						|||
| 
								 | 
							
								    $salt .= '2021';
							 | 
						|||
| 
								 | 
							
								    return md5($plaintext . $salt);
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								/**
							 | 
						|||
| 
								 | 
							
								 * Notes: 大写字母
							 | 
						|||
| 
								 | 
							
								 * @author 段誉(2021/4/15 15:55)
							 | 
						|||
| 
								 | 
							
								 * @return array
							 | 
						|||
| 
								 | 
							
								 */
							 | 
						|||
| 
								 | 
							
								function getCapital()
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
								    return  range('A','Z');
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								/**
							 | 
						|||
| 
								 | 
							
								 * 线性结构转换成树形结构
							 | 
						|||
| 
								 | 
							
								 * @param array $data 线性结构数组
							 | 
						|||
| 
								 | 
							
								 * @param string $sub_key_name 自动生成子数组名
							 | 
						|||
| 
								 | 
							
								 * @param string $id_name 数组id名
							 | 
						|||
| 
								 | 
							
								 * @param string $parent_id_name 数组祖先id名
							 | 
						|||
| 
								 | 
							
								 * @param int $parent_id 此值请勿给参数
							 | 
						|||
| 
								 | 
							
								 * @return array
							 | 
						|||
| 
								 | 
							
								 */
							 | 
						|||
| 
								 | 
							
								function linear_to_tree($data, $sub_key_name = 'sub', $id_name = 'id', $parent_id_name = 'pid', $parent_id = 0)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
								  $tree = [];
							 | 
						|||
| 
								 | 
							
								  foreach ($data as $row) {
							 | 
						|||
| 
								 | 
							
								    if ($row[$parent_id_name] == $parent_id) {
							 | 
						|||
| 
								 | 
							
								      $temp = $row;
							 | 
						|||
| 
								 | 
							
								      $temp[$sub_key_name] = linear_to_tree($data, $sub_key_name, $id_name, $parent_id_name, $row[$id_name]);
							 | 
						|||
| 
								 | 
							
								      $tree[] = $temp;
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								  }
							 | 
						|||
| 
								 | 
							
								  return $tree;
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								/**
							 | 
						|||
| 
								 | 
							
								 * User: 意象信息科技 lr
							 | 
						|||
| 
								 | 
							
								 * Desc: 下载文件
							 | 
						|||
| 
								 | 
							
								 * @param $url 文件url
							 | 
						|||
| 
								 | 
							
								 * @param $save_dir 保存目录
							 | 
						|||
| 
								 | 
							
								 * @param $file_name 文件名
							 | 
						|||
| 
								 | 
							
								 * @return string
							 | 
						|||
| 
								 | 
							
								 */
							 | 
						|||
| 
								 | 
							
								function download_file($url, $save_dir, $file_name)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
								    if (!file_exists($save_dir)) {
							 | 
						|||
| 
								 | 
							
								        mkdir($save_dir, 0775, true);
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								    $file_src = $save_dir . $file_name;
							 | 
						|||
| 
								 | 
							
								    file_exists($file_src) && unlink($file_src);
							 | 
						|||
| 
								 | 
							
								    $ch = curl_init();
							 | 
						|||
| 
								 | 
							
								    curl_setopt($ch, CURLOPT_URL, $url);
							 | 
						|||
| 
								 | 
							
								    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
							 | 
						|||
| 
								 | 
							
								    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
							 | 
						|||
| 
								 | 
							
								    $file = curl_exec($ch);
							 | 
						|||
| 
								 | 
							
								    curl_close($ch);
							 | 
						|||
| 
								 | 
							
								    $resource = fopen($file_src, 'a');
							 | 
						|||
| 
								 | 
							
								    fwrite($resource, $file);
							 | 
						|||
| 
								 | 
							
								    fclose($resource);
							 | 
						|||
| 
								 | 
							
								    if (filesize($file_src) == 0) {
							 | 
						|||
| 
								 | 
							
								        unlink($file_src);
							 | 
						|||
| 
								 | 
							
								        return '';
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								    return $file_src;
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								/**
							 | 
						|||
| 
								 | 
							
								 * 生成会员码
							 | 
						|||
| 
								 | 
							
								 * @return 会员码
							 | 
						|||
| 
								 | 
							
								 */
							 | 
						|||
| 
								 | 
							
								function create_user_sn($prefix = '', $length = 8)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
								    $rand_str = '';
							 | 
						|||
| 
								 | 
							
								    for ($i = 0; $i < $length; $i++) {
							 | 
						|||
| 
								 | 
							
								        $rand_str .= mt_rand(0, 9);
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								    $sn = $prefix . $rand_str;
							 | 
						|||
| 
								 | 
							
								    $user = User::where(['sn' => $sn])->findOrEmpty();
							 | 
						|||
| 
								 | 
							
								    if (!$user->isEmpty()) {
							 | 
						|||
| 
								 | 
							
								        return create_user_sn($prefix, $length);
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								    return $sn;
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								//生成用户邀请码
							 | 
						|||
| 
								 | 
							
								function generate_invite_code()
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
								    $letter_all = range('A', 'Z');
							 | 
						|||
| 
								 | 
							
								    shuffle($letter_all);
							 | 
						|||
| 
								 | 
							
								    //排除I、O字母
							 | 
						|||
| 
								 | 
							
								    $letter_array = array_diff($letter_all, ['I', 'O', 'D']);
							 | 
						|||
| 
								 | 
							
								    //排除1、0
							 | 
						|||
| 
								 | 
							
								    $num_array = range('2', '9');
							 | 
						|||
| 
								 | 
							
								    shuffle($num_array);
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								    $pattern = array_merge($num_array, $letter_array, $num_array);
							 | 
						|||
| 
								 | 
							
								    shuffle($pattern);
							 | 
						|||
| 
								 | 
							
								    $pattern = array_values($pattern);
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								    $code = '';
							 | 
						|||
| 
								 | 
							
								    for ($i = 0; $i < 6; $i++) {
							 | 
						|||
| 
								 | 
							
								        $code .= $pattern[mt_rand(0, count($pattern) - 1)];
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								    $code = strtoupper($code);
							 | 
						|||
| 
								 | 
							
								    $check = User::where('distribution_code', $code)->findOrEmpty();
							 | 
						|||
| 
								 | 
							
								    if (!$check->isEmpty()) {
							 | 
						|||
| 
								 | 
							
								        return generate_invite_code();
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								    return $code;
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								/**
							 | 
						|||
| 
								 | 
							
								 * User: 意象信息科技 lr
							 | 
						|||
| 
								 | 
							
								 * Desc: 数组成功拼装
							 | 
						|||
| 
								 | 
							
								 * @param string $msg
							 | 
						|||
| 
								 | 
							
								 * @param array $data
							 | 
						|||
| 
								 | 
							
								 * @param int $code
							 | 
						|||
| 
								 | 
							
								 * @param int $show
							 | 
						|||
| 
								 | 
							
								 * @return array
							 | 
						|||
| 
								 | 
							
								 */
							 | 
						|||
| 
								 | 
							
								function data_success($msg = '', $data = [], $code = 1, $show = 1)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
								    $result = [
							 | 
						|||
| 
								 | 
							
								        'code' => $code,
							 | 
						|||
| 
								 | 
							
								        'msg' => $msg,
							 | 
						|||
| 
								 | 
							
								        'data' => $data,
							 | 
						|||
| 
								 | 
							
								        'show' => $show,
							 | 
						|||
| 
								 | 
							
								    ];
							 | 
						|||
| 
								 | 
							
								    return $result;
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								/**
							 | 
						|||
| 
								 | 
							
								 * User: 意象信息科技 lr
							 | 
						|||
| 
								 | 
							
								 * Desc: 组装失败数据
							 | 
						|||
| 
								 | 
							
								 * @param string $msg
							 | 
						|||
| 
								 | 
							
								 * @param array $data
							 | 
						|||
| 
								 | 
							
								 * @param int $code
							 | 
						|||
| 
								 | 
							
								 * @param int $show
							 | 
						|||
| 
								 | 
							
								 * @return array
							 | 
						|||
| 
								 | 
							
								 */
							 | 
						|||
| 
								 | 
							
								function data_error($msg = '', $data = [], $code = 0, $show = 1)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
								    $result = [
							 | 
						|||
| 
								 | 
							
								        'code' => $code,
							 | 
						|||
| 
								 | 
							
								        'msg' => $msg,
							 | 
						|||
| 
								 | 
							
								        'data' => $data,
							 | 
						|||
| 
								 | 
							
								        'show' => $show,
							 | 
						|||
| 
								 | 
							
								    ];
							 | 
						|||
| 
								 | 
							
								    return $result;
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								/**
							 | 
						|||
| 
								 | 
							
								 * User: 意象信息科技 cjh
							 | 
						|||
| 
								 | 
							
								 * Desc: 返回是否有下一页
							 | 
						|||
| 
								 | 
							
								 * @param $count (总记录数)
							 | 
						|||
| 
								 | 
							
								 * @param $page (当前页码)
							 | 
						|||
| 
								 | 
							
								 * @param $size (每页记录数)
							 | 
						|||
| 
								 | 
							
								 * @return int
							 | 
						|||
| 
								 | 
							
								 */
							 | 
						|||
| 
								 | 
							
								function is_more($count, $page, $size)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
								    $more = 0;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								    $last_page = ceil($count / $size);      //总页数、也是最后一页
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								    if ($last_page && $last_page > $page) {
							 | 
						|||
| 
								 | 
							
								        $more = 1;
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								    return $more;
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								/**
							 | 
						|||
| 
								 | 
							
								 * User: 意象信息科技 lr
							 | 
						|||
| 
								 | 
							
								 * Desc:生成密码密文
							 | 
						|||
| 
								 | 
							
								 * @param $plaintext string 明文
							 | 
						|||
| 
								 | 
							
								 * @param $salt string 密码盐
							 | 
						|||
| 
								 | 
							
								 * @return string
							 | 
						|||
| 
								 | 
							
								 */
							 | 
						|||
| 
								 | 
							
								function create_password($plaintext, $salt)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
								    $salt = md5('y' . $salt . 'x');
							 | 
						|||
| 
								 | 
							
								    $salt .= '2021';
							 | 
						|||
| 
								 | 
							
								    return md5($plaintext . $salt);
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								/**
							 | 
						|||
| 
								 | 
							
								 * User: 意象信息科技 mjf
							 | 
						|||
| 
								 | 
							
								 * Desc: 用时间生成订单编号
							 | 
						|||
| 
								 | 
							
								 * @param $table
							 | 
						|||
| 
								 | 
							
								 * @param $field
							 | 
						|||
| 
								 | 
							
								 * @param string $prefix
							 | 
						|||
| 
								 | 
							
								 * @param int $rand_suffix_length
							 | 
						|||
| 
								 | 
							
								 * @param array $pool
							 | 
						|||
| 
								 | 
							
								 * @return string
							 | 
						|||
| 
								 | 
							
								 * @throws \think\db\exception\DataNotFoundException
							 | 
						|||
| 
								 | 
							
								 * @throws \think\db\exception\DbException
							 | 
						|||
| 
								 | 
							
								 * @throws \think\db\exception\ModelNotFoundException
							 | 
						|||
| 
								 | 
							
								 */
							 | 
						|||
| 
								 | 
							
								function createSn($table, $field, $prefix = '', $rand_suffix_length = 4, $pool = [])
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
								    $suffix = '';
							 | 
						|||
| 
								 | 
							
								    for ($i = 0; $i < $rand_suffix_length; $i++) {
							 | 
						|||
| 
								 | 
							
								        if (empty($pool)) {
							 | 
						|||
| 
								 | 
							
								            $suffix .= rand(0, 9);
							 | 
						|||
| 
								 | 
							
								        } else {
							 | 
						|||
| 
								 | 
							
								            $suffix .= $pool[array_rand($pool)];
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								    $sn = $prefix . date('YmdHis') . $suffix;
							 | 
						|||
| 
								 | 
							
								    if (Db::name($table)->where($field, $sn)->find()) {
							 | 
						|||
| 
								 | 
							
								        return createSn($table, $field, $prefix, $rand_suffix_length, $pool);
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								    return $sn;
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								/**
							 | 
						|||
| 
								 | 
							
								 * User: 意象信息科技 lr
							 | 
						|||
| 
								 | 
							
								 * Desc: 表单多维数据转换
							 | 
						|||
| 
								 | 
							
								 * 例:
							 | 
						|||
| 
								 | 
							
								 * 转换前:{"x":0,"a":[1,2,3],"b":[11,22,33],"c":[111,222,3333,444],"d":[1111,2222,3333]}
							 | 
						|||
| 
								 | 
							
								 * 转换为:[{"a":1,"b":11,"c":111,"d":1111},{"a":2,"b":22,"c":222,"d":2222},{"a":3,"b":33,"c":3333,"d":3333}]
							 | 
						|||
| 
								 | 
							
								 * @param $arr array 表单二维数组
							 | 
						|||
| 
								 | 
							
								 * @param $fill boolean fill为false,返回数据长度取最短,反之取最长,空值自动补充
							 | 
						|||
| 
								 | 
							
								 * @return array
							 | 
						|||
| 
								 | 
							
								 */
							 | 
						|||
| 
								 | 
							
								function form_to_linear($arr, $fill = false)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
								    $keys = [];
							 | 
						|||
| 
								 | 
							
								    $count = $fill ? 0 : PHP_INT_MAX;
							 | 
						|||
| 
								 | 
							
								    foreach ($arr as $k => $v) {
							 | 
						|||
| 
								 | 
							
								        if (is_array($v)) {
							 | 
						|||
| 
								 | 
							
								            $keys[] = $k;
							 | 
						|||
| 
								 | 
							
								            $count = $fill ? max($count, count($v)) : min($count, count($v));
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								    if (empty($keys)) {
							 | 
						|||
| 
								 | 
							
								        return [];
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								    $data = [];
							 | 
						|||
| 
								 | 
							
								    for ($i = 0; $i < $count; $i++) {
							 | 
						|||
| 
								 | 
							
								        foreach ($keys as $v) {
							 | 
						|||
| 
								 | 
							
								            $data[$i][$v] = isset($arr[$v][$i]) ? $arr[$v][$i] : null;
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								    return $data;
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								/**
							 | 
						|||
| 
								 | 
							
								 * note 生成验证码
							 | 
						|||
| 
								 | 
							
								 * @param int $length 验证码长度
							 | 
						|||
| 
								 | 
							
								 * @return string
							 | 
						|||
| 
								 | 
							
								 */
							 | 
						|||
| 
								 | 
							
								function create_sms_code($length = 4)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
								    $code = '';
							 | 
						|||
| 
								 | 
							
								    for ($i = 0; $i < $length; $i++) {
							 | 
						|||
| 
								 | 
							
								        $code .= rand(0, 9);
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								    return $code;
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								/**
							 | 
						|||
| 
								 | 
							
								 * 生成商品编码
							 | 
						|||
| 
								 | 
							
								 * 8位
							 | 
						|||
| 
								 | 
							
								 */
							 | 
						|||
| 
								 | 
							
								function create_goods_code($shop_id)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
								    $code =  mt_rand(10000000, 99999999);
							 | 
						|||
| 
								 | 
							
								    $goods = Goods::where([
							 | 
						|||
| 
								 | 
							
								        'code' => $code,
							 | 
						|||
| 
								 | 
							
								        'shop_id' => $shop_id,
							 | 
						|||
| 
								 | 
							
								        'del' => 0
							 | 
						|||
| 
								 | 
							
								    ])->findOrEmpty();
							 | 
						|||
| 
								 | 
							
								    if($goods->isEmpty()) {
							 | 
						|||
| 
								 | 
							
								        return $code;
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								    create_goods_code();
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								/**
							 | 
						|||
| 
								 | 
							
								 * 图片去除域名
							 | 
						|||
| 
								 | 
							
								 */
							 | 
						|||
| 
								 | 
							
								function clearDomain($x)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
								    if(is_array($x)) {
							 | 
						|||
| 
								 | 
							
								        $newX = [];
							 | 
						|||
| 
								 | 
							
								        foreach($x as $v) {
							 | 
						|||
| 
								 | 
							
								            $newX[] = trim(UrlServer::setFileUrl($v));
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								        return $newX;
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								    return  trim(UrlServer::setFileUrl($x));
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								/*
							 | 
						|||
| 
								 | 
							
								 * 生成优惠券码 排除1、0、I、O相似的数字和字母
							 | 
						|||
| 
								 | 
							
								 */
							 | 
						|||
| 
								 | 
							
								function create_coupon_code()
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
								    $letter_all = range('A', 'Z');
							 | 
						|||
| 
								 | 
							
								    shuffle($letter_all);
							 | 
						|||
| 
								 | 
							
								    //排除I、O字母
							 | 
						|||
| 
								 | 
							
								    $letter_array = array_diff($letter_all, ['I', 'O']);
							 | 
						|||
| 
								 | 
							
								    //随机获取四位字母
							 | 
						|||
| 
								 | 
							
								    $letter = array_rand(array_flip($letter_array), 4);
							 | 
						|||
| 
								 | 
							
								    //排除1、0
							 | 
						|||
| 
								 | 
							
								    $num_array = range('2', '9');
							 | 
						|||
| 
								 | 
							
								    shuffle($num_array);
							 | 
						|||
| 
								 | 
							
								    //获取随机六位数字
							 | 
						|||
| 
								 | 
							
								    $num = array_rand(array_flip($num_array), 6);
							 | 
						|||
| 
								 | 
							
								    $code = implode('', array_merge($letter, $num));
							 | 
						|||
| 
								 | 
							
								    do {
							 | 
						|||
| 
								 | 
							
								        $exist_code =\app\common\model\coupon\CouponList::where(['del' => 0, 'coupon_code' => $code])->find();
							 | 
						|||
| 
								 | 
							
								    } while ($exist_code);
							 | 
						|||
| 
								 | 
							
								    return $code;
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								/**
							 | 
						|||
| 
								 | 
							
								 * 浮点数去除无效的0
							 | 
						|||
| 
								 | 
							
								 */
							 | 
						|||
| 
								 | 
							
								function clearZero($float)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
								    if($float == intval($float)) {
							 | 
						|||
| 
								 | 
							
								        return intval($float);
							 | 
						|||
| 
								 | 
							
								    }else if($float == sprintf('%.1f', $float)) {
							 | 
						|||
| 
								 | 
							
								        return sprintf('%.1f', $float);
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								    return $float;
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								/**
							 | 
						|||
| 
								 | 
							
								 * 是否在cli模式
							 | 
						|||
| 
								 | 
							
								 */
							 | 
						|||
| 
								 | 
							
								if (!function_exists('is_cli')) {
							 | 
						|||
| 
								 | 
							
								    function is_cli()
							 | 
						|||
| 
								 | 
							
								    {
							 | 
						|||
| 
								 | 
							
								        return preg_match("/cli/i", php_sapi_name()) ? true : false;
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								function real_path()
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
								    if (substr(strtolower(PHP_OS), 0, 3) == 'win') {
							 | 
						|||
| 
								 | 
							
								        $ini = ini_get_all();
							 | 
						|||
| 
								 | 
							
								        $path = $ini['extension_dir']['local_value'];
							 | 
						|||
| 
								 | 
							
								        $php_path = str_replace('\\', '/', $path);
							 | 
						|||
| 
								 | 
							
								        $php_path = str_replace(array('/ext/', '/ext'), array('/', '/'), $php_path);
							 | 
						|||
| 
								 | 
							
								        $real_path = $php_path . 'php.exe';
							 | 
						|||
| 
								 | 
							
								    } else {
							 | 
						|||
| 
								 | 
							
								        $real_path = PHP_BINDIR . '/php';
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								    if (strpos($real_path, 'ephp.exe') !== FALSE) {
							 | 
						|||
| 
								 | 
							
								        $real_path = str_replace('ephp.exe', 'php.exe', $real_path);
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								    return $real_path;
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								/**
							 | 
						|||
| 
								 | 
							
								 * 是否为移动端
							 | 
						|||
| 
								 | 
							
								 */
							 | 
						|||
| 
								 | 
							
								function is_mobile()
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
								    if (isset($_SERVER['HTTP_X_WAP_PROFILE'])) {
							 | 
						|||
| 
								 | 
							
								        return true;
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								    if (isset($_SERVER['HTTP_VIA'])) {
							 | 
						|||
| 
								 | 
							
								        return stristr($_SERVER['HTTP_VIA'], "wap") ? true : false;
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								    if (isset($_SERVER['HTTP_USER_AGENT'])) {
							 | 
						|||
| 
								 | 
							
								        $clientkeywords = array('nokia', 'sony', 'ericsson', 'mot', 'samsung', 'htc', 'sgh', 'lg', 'sharp', 'sie-', 'philips', 'panasonic', 'alcatel', 'lenovo', 'iphone', 'ipod', 'blackberry', 'meizu', 'android', 'netfront', 'symbian', 'ucweb', 'windowsce', 'palm', 'operamini', 'operamobi', 'openwave', 'nexusone', 'cldc', 'midp', 'wap', 'mobile');
							 | 
						|||
| 
								 | 
							
								        if (preg_match("/(" . implode('|', $clientkeywords) . ")/i", strtolower($_SERVER['HTTP_USER_AGENT']))) {
							 | 
						|||
| 
								 | 
							
								            return true;
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								    if (isset($_SERVER['HTTP_ACCEPT'])) {
							 | 
						|||
| 
								 | 
							
								        if ((strpos($_SERVER['HTTP_ACCEPT'], 'vnd.wap.wml') !== false) && (strpos($_SERVER['HTTP_ACCEPT'], 'textml') === false || (strpos($_SERVER['HTTP_ACCEPT'], 'vnd.wap.wml') < strpos($_SERVER['HTTP_ACCEPT'], 'textml')))) {
							 | 
						|||
| 
								 | 
							
								            return true;
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								    return false;
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								/**
							 | 
						|||
| 
								 | 
							
								 * Notes:判断文件是否存在(远程和本地文件)
							 | 
						|||
| 
								 | 
							
								 * @param $file string 完整的文件链接
							 | 
						|||
| 
								 | 
							
								 * @return bool
							 | 
						|||
| 
								 | 
							
								 */
							 | 
						|||
| 
								 | 
							
								function check_file_exists($file)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
								    //远程文件
							 | 
						|||
| 
								 | 
							
								    if ('http' == strtolower(substr($file, 0, 4))) {
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        $header = get_headers($file, true);
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        return isset($header[0]) && (strpos($header[0], '200') || strpos($header[0], '304'));
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								    } else {
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        return file_exists($file);
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								/**
							 | 
						|||
| 
								 | 
							
								 * 将图片切成圆角
							 | 
						|||
| 
								 | 
							
								 */
							 | 
						|||
| 
								 | 
							
								function rounded_corner($src_img)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
								    $w = imagesx($src_img);//微信头像宽度 正方形的
							 | 
						|||
| 
								 | 
							
								    $h = imagesy($src_img);//微信头像宽度 正方形的
							 | 
						|||
| 
								 | 
							
								    $w = min($w, $h);
							 | 
						|||
| 
								 | 
							
								    $h = $w;
							 | 
						|||
| 
								 | 
							
								    $img = imagecreatetruecolor($w, $h);
							 | 
						|||
| 
								 | 
							
								    //这一句一定要有
							 | 
						|||
| 
								 | 
							
								    imagesavealpha($img, true);
							 | 
						|||
| 
								 | 
							
								    //拾取一个完全透明的颜色,最后一个参数127为全透明
							 | 
						|||
| 
								 | 
							
								    $bg = imagecolorallocatealpha($img, 255, 255, 255, 127);
							 | 
						|||
| 
								 | 
							
								    imagefill($img, 0, 0, $bg);
							 | 
						|||
| 
								 | 
							
								    $r = $w / 2; //圆半径
							 | 
						|||
| 
								 | 
							
								//    $y_x = $r; //圆心X坐标
							 | 
						|||
| 
								 | 
							
								//    $y_y = $r; //圆心Y坐标
							 | 
						|||
| 
								 | 
							
								    for ($x = 0; $x < $w; $x++) {
							 | 
						|||
| 
								 | 
							
								        for ($y = 0; $y < $h; $y++) {
							 | 
						|||
| 
								 | 
							
								            $rgbColor = imagecolorat($src_img, $x, $y);
							 | 
						|||
| 
								 | 
							
								            if (((($x - $r) * ($x - $r) + ($y - $r) * ($y - $r)) < ($r * $r))) {
							 | 
						|||
| 
								 | 
							
								                imagesetpixel($img, $x, $y, $rgbColor);
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								    unset($src_img);
							 | 
						|||
| 
								 | 
							
								    return $img;
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								/**
							 | 
						|||
| 
								 | 
							
								 * Notes:去掉名称中的表情
							 | 
						|||
| 
								 | 
							
								 * @param $str
							 | 
						|||
| 
								 | 
							
								 * @return string|string[]|null
							 | 
						|||
| 
								 | 
							
								 * @author: cjhao 2021/3/29 15:56
							 | 
						|||
| 
								 | 
							
								 */
							 | 
						|||
| 
								 | 
							
								function filterEmoji($str)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
								    $str = preg_replace_callback(
							 | 
						|||
| 
								 | 
							
								        '/./u',
							 | 
						|||
| 
								 | 
							
								        function (array $match) {
							 | 
						|||
| 
								 | 
							
								            return strlen($match[0]) >= 4 ? '' : $match[0];
							 | 
						|||
| 
								 | 
							
								        },
							 | 
						|||
| 
								 | 
							
								        $str);
							 | 
						|||
| 
								 | 
							
								    return $str;
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								/***
							 | 
						|||
| 
								 | 
							
								 * 生成海报自动适应标题
							 | 
						|||
| 
								 | 
							
								 * @param $size
							 | 
						|||
| 
								 | 
							
								 * @param int $angle
							 | 
						|||
| 
								 | 
							
								 * @param $fontfile
							 | 
						|||
| 
								 | 
							
								 * @param $string
							 | 
						|||
| 
								 | 
							
								 * @param $width
							 | 
						|||
| 
								 | 
							
								 * @param $height
							 | 
						|||
| 
								 | 
							
								 * @param $bg_height
							 | 
						|||
| 
								 | 
							
								 * @return string
							 | 
						|||
| 
								 | 
							
								 */
							 | 
						|||
| 
								 | 
							
								function auto_adapt($size, $angle = 0, $fontfile, $string, $width, $height, $bg_height)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
								    $content = "";
							 | 
						|||
| 
								 | 
							
								    // 将字符串拆分成一个个单字 保存到数组 letter 中
							 | 
						|||
| 
								 | 
							
								    for ($i = 0; $i < mb_strlen($string); $i++) {
							 | 
						|||
| 
								 | 
							
								        $letters[] = mb_substr($string, $i, 1);
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								    foreach ($letters as $letter) {
							 | 
						|||
| 
								 | 
							
								        $str = $content . " " . $letter;
							 | 
						|||
| 
								 | 
							
								        $box = imagettfbbox($size, $angle, $fontfile, $str);
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        $total_height = $box[1] + $height;
							 | 
						|||
| 
								 | 
							
								        if ($bg_height[1] - $total_height < $size) {
							 | 
						|||
| 
								 | 
							
								            break;
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								        //右下角X位置,判断拼接后的字符串是否超过预设的宽度
							 | 
						|||
| 
								 | 
							
								        if (($box[2] > $width) && ($content !== "")) {
							 | 
						|||
| 
								 | 
							
								            if ($bg_height[1] - $total_height < $size * 2) {
							 | 
						|||
| 
								 | 
							
								                break;
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								            $content .= "\n";
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								        $content .= $letter;
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								    return $content;
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								/**
							 | 
						|||
| 
								 | 
							
								 * Notes:生成一个范围内的随机浮点数
							 | 
						|||
| 
								 | 
							
								 * @param int $min 最小值
							 | 
						|||
| 
								 | 
							
								 * @param int $max 最大值
							 | 
						|||
| 
								 | 
							
								 * @return float|int 返回随机数
							 | 
						|||
| 
								 | 
							
								 */
							 | 
						|||
| 
								 | 
							
								function random_float($min = 0, $max = 1)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
								    return $min + mt_rand() / mt_getrandmax() * ($max - $min);
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								/**
							 | 
						|||
| 
								 | 
							
								 * Notes: 获取文件扩展名
							 | 
						|||
| 
								 | 
							
								 * @param $file
							 | 
						|||
| 
								 | 
							
								 * @author 段誉(2021/7/7 18:03)
							 | 
						|||
| 
								 | 
							
								 * @return mixed
							 | 
						|||
| 
								 | 
							
								 */
							 | 
						|||
| 
								 | 
							
								if (!function_exists('get_extension')) {
							 | 
						|||
| 
								 | 
							
								    function get_extension($file)
							 | 
						|||
| 
								 | 
							
								    {
							 | 
						|||
| 
								 | 
							
								        return pathinfo($file, PATHINFO_EXTENSION);
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								/**
							 | 
						|||
| 
								 | 
							
								 * Notes: 遍历指定目录下的文件(目标目录,排除文件)
							 | 
						|||
| 
								 | 
							
								 * @param $dir 目标文件
							 | 
						|||
| 
								 | 
							
								 * @param string $exclude_file 要排除的文件
							 | 
						|||
| 
								 | 
							
								 * @param string $target_suffix 指定后缀
							 | 
						|||
| 
								 | 
							
								 * @author 段誉(2021/7/7 18:04)
							 | 
						|||
| 
								 | 
							
								 * @return array|bool
							 | 
						|||
| 
								 | 
							
								 */
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								if (!function_exists('get_scandir')) {
							 | 
						|||
| 
								 | 
							
								    function get_scandir($dir, $exclude_file = '', $target_suffix = '')
							 | 
						|||
| 
								 | 
							
								    {
							 | 
						|||
| 
								 | 
							
								        if (!file_exists($dir)) {
							 | 
						|||
| 
								 | 
							
								            return [];
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        if (empty(trim($dir))) {
							 | 
						|||
| 
								 | 
							
								            return false;
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        $files = scandir($dir);
							 | 
						|||
| 
								 | 
							
								        $res = [];
							 | 
						|||
| 
								 | 
							
								        foreach ($files as $item) {
							 | 
						|||
| 
								 | 
							
								            if ($item == "." || $item == ".." || $item == $exclude_file) {
							 | 
						|||
| 
								 | 
							
								                continue;
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								            if (!empty($target_suffix)) {
							 | 
						|||
| 
								 | 
							
								                if (get_extension($item) == $target_suffix) {
							 | 
						|||
| 
								 | 
							
								                    $res[] = $item;
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								            } else {
							 | 
						|||
| 
								 | 
							
								                $res[] = $item;
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        if (empty($item)) {
							 | 
						|||
| 
								 | 
							
								            return false;
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								        return $res;
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								/**
							 | 
						|||
| 
								 | 
							
								 * Notes: 解压压缩包
							 | 
						|||
| 
								 | 
							
								 * @param $file 压缩包路径
							 | 
						|||
| 
								 | 
							
								 * @param $save_dir 保存路径
							 | 
						|||
| 
								 | 
							
								 * @author 段誉(2021/7/7 18:11)
							 | 
						|||
| 
								 | 
							
								 * @return bool
							 | 
						|||
| 
								 | 
							
								 */
							 | 
						|||
| 
								 | 
							
								if (!function_exists('unzip')) {
							 | 
						|||
| 
								 | 
							
								    function unzip($file, $save_dir)
							 | 
						|||
| 
								 | 
							
								    {
							 | 
						|||
| 
								 | 
							
								        if (!file_exists($file)) {
							 | 
						|||
| 
								 | 
							
								            return false;
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								        $zip = new \ZipArchive();
							 | 
						|||
| 
								 | 
							
								        if ($zip->open($file) !== TRUE) {//中文文件名要使用ANSI编码的文件格式
							 | 
						|||
| 
								 | 
							
								            return false;
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								        $zip->extractTo($save_dir);
							 | 
						|||
| 
								 | 
							
								        $zip->close();
							 | 
						|||
| 
								 | 
							
								        return true;
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								/**
							 | 
						|||
| 
								 | 
							
								 * Notes: 删除目标目录
							 | 
						|||
| 
								 | 
							
								 * @param $path
							 | 
						|||
| 
								 | 
							
								 * @param $delDir
							 | 
						|||
| 
								 | 
							
								 * @author 段誉(2021/7/7 18:19)
							 | 
						|||
| 
								 | 
							
								 * @return bool
							 | 
						|||
| 
								 | 
							
								 */
							 | 
						|||
| 
								 | 
							
								if (!function_exists('del_target_dir')) {
							 | 
						|||
| 
								 | 
							
								    function del_target_dir($path, $delDir)
							 | 
						|||
| 
								 | 
							
								    {
							 | 
						|||
| 
								 | 
							
								        //没找到,不处理
							 | 
						|||
| 
								 | 
							
								        if (!file_exists($path)) {
							 | 
						|||
| 
								 | 
							
								            return false;
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        $handle = opendir($path);
							 | 
						|||
| 
								 | 
							
								        if ($handle) {
							 | 
						|||
| 
								 | 
							
								            while (false !== ($item = readdir($handle))) {
							 | 
						|||
| 
								 | 
							
								                if ($item != "." && $item != "..") {
							 | 
						|||
| 
								 | 
							
								                    if (is_dir("$path/$item")) {
							 | 
						|||
| 
								 | 
							
								                        del_target_dir("$path/$item", $delDir);
							 | 
						|||
| 
								 | 
							
								                    } else {
							 | 
						|||
| 
								 | 
							
								                        unlink("$path/$item");
							 | 
						|||
| 
								 | 
							
								                    }
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								            closedir($handle);
							 | 
						|||
| 
								 | 
							
								            if ($delDir) {
							 | 
						|||
| 
								 | 
							
								                return rmdir($path);
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								        } else {
							 | 
						|||
| 
								 | 
							
								            if (file_exists($path)) {
							 | 
						|||
| 
								 | 
							
								                return unlink($path);
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								            return false;
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								/**
							 | 
						|||
| 
								 | 
							
								 * Notes: 获取本地版本数据
							 | 
						|||
| 
								 | 
							
								 * @return mixed
							 | 
						|||
| 
								 | 
							
								 * @author 段誉(2021/7/7 18:18)
							 | 
						|||
| 
								 | 
							
								 */
							 | 
						|||
| 
								 | 
							
								if (!function_exists('local_version')) {
							 | 
						|||
| 
								 | 
							
								    function local_version()
							 | 
						|||
| 
								 | 
							
								    {
							 | 
						|||
| 
								 | 
							
								        if(!file_exists('./upgrade/')) {
							 | 
						|||
| 
								 | 
							
								            // 若文件夹不存在,先创建文件夹
							 | 
						|||
| 
								 | 
							
								            mkdir('./upgrade/', 0777, true);
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								        if(!file_exists('./upgrade/version.json')) {
							 | 
						|||
| 
								 | 
							
								            // 获取本地版本号
							 | 
						|||
| 
								 | 
							
								            $version = config('project.version');
							 | 
						|||
| 
								 | 
							
								            $data = ['version' => $version];
							 | 
						|||
| 
								 | 
							
								            $src = './upgrade/version.json';
							 | 
						|||
| 
								 | 
							
								            // 新建文件
							 | 
						|||
| 
								 | 
							
								            file_put_contents($src, json_encode($data, JSON_UNESCAPED_UNICODE));
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        $json_string = file_get_contents('./upgrade/version.json');
							 | 
						|||
| 
								 | 
							
								        // 用参数true把JSON字符串强制转成PHP数组
							 | 
						|||
| 
								 | 
							
								        $data = json_decode($json_string, true);
							 | 
						|||
| 
								 | 
							
								        return $data;
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								/**
							 | 
						|||
| 
								 | 
							
								 * Notes: 获取ip
							 | 
						|||
| 
								 | 
							
								 * @author 段誉(2021/7/9 10:19)
							 | 
						|||
| 
								 | 
							
								 * @return array|false|mixed|string
							 | 
						|||
| 
								 | 
							
								 */
							 | 
						|||
| 
								 | 
							
								if (!function_exists('get_client_ip')) {
							 | 
						|||
| 
								 | 
							
								    function get_client_ip()
							 | 
						|||
| 
								 | 
							
								    {
							 | 
						|||
| 
								 | 
							
								        if (!isset($_SERVER)) {
							 | 
						|||
| 
								 | 
							
								            return getenv('SERVER_ADDR');
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        if($_SERVER['SERVER_ADDR']) {
							 | 
						|||
| 
								 | 
							
								            return $_SERVER['SERVER_ADDR'];
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        return $_SERVER['LOCAL_ADDR'];
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								/**
							 | 
						|||
| 
								 | 
							
								 * @notes 友好时间提示
							 | 
						|||
| 
								 | 
							
								 * @param $time
							 | 
						|||
| 
								 | 
							
								 * @return false|string
							 | 
						|||
| 
								 | 
							
								 * @author 段誉
							 | 
						|||
| 
								 | 
							
								 * @date 2022/5/6 9:45
							 | 
						|||
| 
								 | 
							
								 */
							 | 
						|||
| 
								 | 
							
								function friend_date($time)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
								    if (empty($time)) {
							 | 
						|||
| 
								 | 
							
								        return false;
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								    $d = time() - intval($time);
							 | 
						|||
| 
								 | 
							
								    $ld = $time - mktime(0, 0, 0, 0, 0, date('Y'));  //年
							 | 
						|||
| 
								 | 
							
								    $md = $time - mktime(0, 0, 0, date('m'), 0, date('Y'));  //月
							 | 
						|||
| 
								 | 
							
								    $byd = $time - mktime(0, 0, 0, date('m'), date('d') - 2, date('Y'));  //前天
							 | 
						|||
| 
								 | 
							
								    $yd = $time - mktime(0, 0, 0, date('m'), date('d') - 1, date('Y'));  //昨天
							 | 
						|||
| 
								 | 
							
								    $dd = $time - mktime(0, 0, 0, date('m'), date('d'), date('Y'));  //今天
							 | 
						|||
| 
								 | 
							
								    $td = $time - mktime(0, 0, 0, date('m'), date('d') + 1, date('Y'));  //明天
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								    if (0 == $d) {
							 | 
						|||
| 
								 | 
							
								        return '刚刚';
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								    switch ($d) {
							 | 
						|||
| 
								 | 
							
								        case $d < $td :
							 | 
						|||
| 
								 | 
							
								            $fdate = '后天' . date('H:i', $time);
							 | 
						|||
| 
								 | 
							
								            break;
							 | 
						|||
| 
								 | 
							
								        case  $d < 0:
							 | 
						|||
| 
								 | 
							
								            $fdate = '明天' . date('H:i', $time);
							 | 
						|||
| 
								 | 
							
								            break;
							 | 
						|||
| 
								 | 
							
								        case  $d < 60:
							 | 
						|||
| 
								 | 
							
								            $fdate = $d . '秒前';
							 | 
						|||
| 
								 | 
							
								            break;
							 | 
						|||
| 
								 | 
							
								        case  $d < 3600:
							 | 
						|||
| 
								 | 
							
								            $fdate = floor($d / 60) . '分钟前';
							 | 
						|||
| 
								 | 
							
								            break;
							 | 
						|||
| 
								 | 
							
								        case  $d < $dd :
							 | 
						|||
| 
								 | 
							
								            $fdate = floor($d / 3600) . '小时前';
							 | 
						|||
| 
								 | 
							
								            break;
							 | 
						|||
| 
								 | 
							
								        case  $d < $yd :
							 | 
						|||
| 
								 | 
							
								            $fdate = '昨天' . date('H:i', $time);
							 | 
						|||
| 
								 | 
							
								            break;
							 | 
						|||
| 
								 | 
							
								        case  $d < $byd :
							 | 
						|||
| 
								 | 
							
								            $fdate = '前天' . date('H:i', $time);
							 | 
						|||
| 
								 | 
							
								            break;
							 | 
						|||
| 
								 | 
							
								        case  $d < $md :
							 | 
						|||
| 
								 | 
							
								            $fdate = date('m月d日 H:i', $time);
							 | 
						|||
| 
								 | 
							
								            break;
							 | 
						|||
| 
								 | 
							
								        case  $d < $ld :
							 | 
						|||
| 
								 | 
							
								            $fdate = date('m月d日', $time);
							 | 
						|||
| 
								 | 
							
								            break;
							 | 
						|||
| 
								 | 
							
								        default :
							 | 
						|||
| 
								 | 
							
								            $fdate = date('Y年m月d日', $time);
							 | 
						|||
| 
								 | 
							
								            break;
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								    return $fdate;
							 | 
						|||
| 
								 | 
							
								}
							 |