$key, //签发者 可以为空 "aud" => '', //面象的用户,可以为空 "iat" => time(), //签发时间 "nbf" => time() + 3, //在什么时候jwt开始生效 (这里表示生成100秒后才生效) "exp" => time() + 7200, //token 过期时间 "data" => $data //记录的userid的信息,这里是自已添加上去的,如果有其它信息,可以再添加数组的键值对 ); return JWT::encode($token, $key, "HS384"); //根据参数生成了token,可选:HS256、HS384、HS512、RS256、ES256等 } /** * 验证token * @param $token * @return array|int[] */ function checkToken($token): array { $key = 'LAL@lc!'; $status = array("code" => 2); try { JWT::$leeway = 60; //当前时间减去60,把时间留点余地 $decoded = JWT::decode($token, new Key($key, 'HS384')); //同上的方式,这里要和签发的时候对应 $arr = (array)$decoded; $res['code'] = 200; $res['data'] = $arr['data']; $res['data'] = json_decode(json_encode($res['data']), true);//将stdObj类型转换为array return $res; } catch (\Firebase\JWT\SignatureInvalidException $e) { //签名不正确 $status['msg'] = "签名不正确"; return $status; } catch (\Firebase\JWT\BeforeValidException $e) { // 签名在某个时间点之后才能用 $status['msg'] = "token失效"; return $status; } catch (\Firebase\JWT\ExpiredException $e) { // token过期 $status['msg'] = "token失效"; return $status; } catch (Exception $e) { //其他错误 $status['msg'] = "未知错误"; return $status; } } /** * 获取随机字符 * @param int $length * @return string */ function generate_random_str(int $length = 8): string { $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; $str = ''; $maxIndex = strlen($characters) - 1; for ($i = 0; $i < $length; $i++) { $randomIndex = mt_rand(0, $maxIndex); $str .= $characters[$randomIndex]; } return $str; } /** * 返回图片路径 * @param $imageUrl * @return string */ function get_image_url($imageUrl):string { $domain = \think\facade\Request::instance()->domain(); $url = config('filesystem.disks.public.url'); $strpos1 = strpos($imageUrl,'http'); $strpos2 = strpos($imageUrl,$url); if ($strpos1 !== false || $strpos2 !== false) { return $imageUrl; } else { return $domain . $url . '/' . $imageUrl; } } /** * 返回跳转链接地址 * @param $jump_url * @return string */ function get_jump_url($jump_url):string { $domain = \think\facade\Request::instance()->domain(); $strpos1 = strpos($jump_url,'http'); $strpos2 = strpos($jump_url,$domain); if ($strpos1 !== false || $strpos2 !== false) { return $jump_url; } else { return $domain . $jump_url; } } /** * 赋予符号 * @param $value * @param $symbol */ function give_symbol(&$value,$symbol = '+') { $value = $symbol . $value; } /** * 手机号处理 * @param $phoneNumber * @return string */ function format_phone_number($phoneNumber):string { $prefix = substr($phoneNumber, 0, 3); $suffix = substr($phoneNumber, -4); return $prefix . '****' . $suffix; } /** * 获取自定义随机头像 */ function rand_avatar() { $avatarArr = config('custom.avatar') ?: []; $rand = rand(0,count($avatarArr)); return $avatarArr[$rand] ?: ''; } /** * 返回金额 * @param $number * @return string */ function format_money($number):string { $units = array('元',"万元", "亿元"); $unitMaxValue = 10000; // 单位最大值 $unitIndex = 0; // 单位索引 if ($number >= $unitMaxValue && $number % $unitMaxValue === 0) { while ($number >= $unitMaxValue && $unitIndex <= count($units) - 1) { $number = round($number / $unitMaxValue); $unitIndex++; } $formattedNumber = round($number, 0) . $units[$unitIndex]; } elseif ($number % $unitMaxValue === 0) { $formattedNumber = round($number / $unitMaxValue,0) . $units[0]; } else { $formattedNumber = round($number,0) . '元'; } return $formattedNumber; } /** * 返回人数 * @param $number * @return string */ function format_people_count($number):string { if ($number >= 100000000) { // 大于等于1亿,返回x亿人 $count = floor($number / 100000000); return $count . '亿人'; } elseif ($number >= 10000) { // 大于等于1万,返回x万人 $count = floor($number / 10000); return $count . '万人'; } elseif ($number >= 1000) { // 大于等于1万,返回x万人 $count = floor($number / 10000); return $count . '万人'; } else { // 小于1万,直接返回人数 return $number . '人'; } } /** * 获取近几个月数据 * @param int $start * @return array */ function get_near_month_datetime(int $start = 4):array { $dateArr = []; for ($i = $start; $i >= 1; $i--) { $last_month = date('m',strtotime("-{$i} month")); $start_time = date("Y-{$last_month}-01 00:00:00"); $end_time = date("Y-m-d 23:59:59",strtotime('+1 month',strtotime($start_time)) - 86400); $dateArr[$last_month] = [ 'start_time' => $start_time, 'end_time' => $end_time ]; } $month = date("m"); $dateArr[$month] = [ 'start_time' => date("Y-{$month}-01 00:00:00"), 'end_time' => date("Y-m-d H:i:s") ]; return $dateArr; }