ufutx.dma/app/Services/CommonService.php
2026-03-04 14:42:40 +08:00

215 lines
6.3 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
namespace App\Services;
use App\Facades\UploadService;
use App\Models\UrlLink;
use DateTime;
use GuzzleHttp\Client;
use Illuminate\Support\Facades\Log;
use SimpleSoftwareIO\QrCode\Facades\QrCode;
class CommonService
{
public function isMobile($mobile)
{
if(strlen($mobile) < 7)
return 0;
if(preg_match("/^1[3-56789]\d{9}$/", $mobile))
return 1;
elseif(preg_match("/^[6|9]\d{7}$/", $mobile))
return 2;
elseif(preg_match("/^[6]([8|6])\d{5}$/", $mobile))
return 3;
elseif(preg_match("/^[9]\d{8}$/", $mobile))
return 4;
else
return 0;
}
public function isBirthday($birthday)
{
if (strlen($birthday) != 10) {
return 0;
}elseif (preg_match("/\d{4}-\d{2}-\d{2}/", $birthday)) {
return 1;
}else {
return 0;
}
}
/**
* 随机生成16位数作为本地服务器的支付订单ID
* @return
*/
public function getTradeNO()
{
$dateline = time();
$mix_1 = rand(100, 999);
$mix_2 = rand(100, 999);
return $dateline . $mix_1 . $mix_2;
}
/***
* 产生随机数
* @param $length
* @param int $numeric
* @return string
*/
public function random($length, $numeric = 0)
{
PHP_VERSION < '4.2.0' ? mt_srand((double)microtime() * 1000000) : mt_srand();
$seed = base_convert(md5(print_r($_SERVER, 1).microtime()), 16, $numeric ? 10 : 35);
$seed = $numeric ? (str_replace('0', '', $seed).'012340567890') : ($seed.'zZ'.strtoupper($seed));
$hash = '';
$max = strlen($seed) - 1;
for($i = 0; $i < $length; $i++) {
$hash .= $seed[mt_rand(0, $max)];
}
return $hash;
}
function randomString($length) {
$characters = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
$randomString = '';
for ($i = 0; $i < $length; $i++) {
$index = rand(0, strlen($characters) - 1);
$randomString .= $characters[$index];
}
return $randomString;
}
public function getAge($birthday){
if (empty($birthday)) {
return 0;
}
$age = strtotime($birthday);
if($age === false){
return 0;
}
list($y1,$m1,$d1) = explode("-",date("Y-m-d",$age));
$now = strtotime("now");
list($y2,$m2,$d2) = explode("-",date("Y-m-d",$now));
$age = $y2 - $y1;
if((int)($m2.$d2) < (int)($m1.$d1))
$age -= 1;
return $age;
}
/**
* 时间段
* @param [type] $start_time [description]
* @param [type] $end_time [description]
* @return [type] [description]
*/
public function daliy($start_time ,$end_time)
{
$strtime1 = strtotime($start_time);
$strtime2 = strtotime($end_time);
$day_arr[] = date('Y-m-d', $strtime1); // 当前月;
while( ($strtime1 = strtotime('+1 day', $strtime1)) <= $strtime2){
$day_arr[] = date('Y-m-d',$strtime1); // 取得递增月;
}
return $day_arr;
}
public function http($method, $url, $data=[],$headers=[])
{
$client = new Client(['headers'=>$headers]);
$response = $client->request($method, $url, ['form_params'=>$data]);
$code = $response->getStatusCode();
// Log::info("状态码:".$code);
if ($code != 200) throw new \Exception("请求第三方失败");
$res = $response->getBody()->getContents();
// Log::info($res);
return $response;
}
public function makeQrcode($url, $path=null)
{
if (empty($path)) {
$path = storage_path('qrcode/'.time().uniqid().'_qrcode.png');
}
QrCode::size(300)->format("png")->generate($url, $path);
if (file_exists($path)) {
$pic = UploadService::uploadFile($path);
@unlink($path);
return $pic;
}
return null;
}
public function hidePhone($mobile)
{
$res = "";
if (preg_match("/1\d{10}/", $mobile)) {
$res = substr_replace($mobile, "****", 3,4);
}
return $res;
}
/**
* 季度
* @param $month
* @return int
*/
public function getQuarter($month){
if ($month == 1 || $month == 2 || $month == 3) {
$quarter = 1; //第一季度
} elseif ($month == 4 || $month == 5 || $month == 6) {
$quarter = 2; //第二季度
} elseif ($month == 7 || $month == 8 || $month == 9) {
$quarter = 3; //第三季度
} else {
$quarter = 4; //第四季度
}
return $quarter;
}
public function getShortUrl($url){
$url = base64_encode($url);
$original_url = "http://love.ufutx.net/api/admin/messageUrlGoto?uri=$url";
$link = UrlLink::firstOrCreate(['url'=>$original_url]);
$code = $this->decb64($link->id);
$short_url = 'ufutx.cn/s/'.$code;
$link->update(['short_url'=>$short_url]);
return $short_url;
}
public function decb64($dec) { //10进制转换成64进制
if ($dec < 0) {
return false;
}
$map = array(
0=>'0',1=>'1',2=>'2',3=>'3',4=>'4',5=>'5',6=>'6',7=>'7',8=>'8',9=>'9',
10=>'A',11=>'B',12=>'C',13=>'D',14=>'E',15=>'F',16=>'G',17=>'H',18=>'I',19=>'J',
20=>'K',21=>'L',22=>'M',23=>'N',24=>'O',25=>'P',26=>'Q',27=>'R',28=>'S',29=>'T',
30=>'U',31=>'V',32=>'W',33=>'X',34=>'Y',35=>'Z',36=>'a',37=>'b',38=>'c',39=>'d',
40=>'e',41=>'f',42=>'g',43=>'h',44=>'i',45=>'j',46=>'k',47=>'l',48=>'m',49=>'n',
50=>'o',51=>'p',52=>'q',53=>'r',54=>'s',55=>'t',56=>'u',57=>'v',58=>'w',59=>'x',
60=>'y',61=>'z',62=>'_',63=>'=',
);
$b64 = '';
do {
$b64 = $map[($dec % 64)] . $b64;
$dec /= 64;
} while ($dec >= 1);
return $b64;
}
public function diffDays($date1, $date2) {
$datetime1 = new DateTime($date1);
$datetime2 = new DateTime($date2);
// 计算日期差
$interval = $datetime1->diff($datetime2);
// 获取天数差
$days = $interval->days;
return $days;
}
}