| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161 | 
							- <?php
 
- namespace App\Services;
 
- use SimpleSoftwareIO\QrCode\Facades\QrCode;
 
- use Endroid\QrCode\Builder\Builder;
 
- use Endroid\QrCode\Writer\PngWriter;
 
- use Telegram\Bot\Api;
 
- use App\Models\Config;
 
- class BaseService 
 
- {
 
-     const YES = 1;
 
-     const NOT = 0;
 
-     /**
 
-      * @description: 生成充值二维码
 
-      * @param {*} $address 充值地址
 
-      * @return {*}
 
-      */    
 
-     public static function createRechargeQrCode($address = '')
 
-     {
 
-         $content = $address;
 
-         $qrSize = 300;
 
-         $font = 4;
 
-         $textHeight = 20;
 
-         $padding = 10;
 
-         // 生成二维码图像对象
 
-         $result = Builder::create()
 
-             ->writer(new PngWriter())
 
-             ->data($content)
 
-             ->size($qrSize)
 
-             ->margin(0)
 
-             ->build();
 
-         $qrImage = imagecreatefromstring($result->getString());
 
-         // 创建画布(加上下方文字区和边距)
 
-         $canvasWidth = $qrSize + $padding * 2;
 
-         $canvasHeight = $qrSize + $textHeight + $padding * 2;
 
-         $image = imagecreatetruecolor($canvasWidth, $canvasHeight);
 
-         // 背景白色
 
-         $white = imagecolorallocate($image, 255, 255, 255);
 
-         imagefill($image, 0, 0, $white);
 
-         // 黑色字体
 
-         $black = imagecolorallocate($image, 0, 0, 0);
 
-         // 合并二维码图像
 
-         imagecopy($image, $qrImage, $padding, $padding, 0, 0, $qrSize, $qrSize);
 
-         // 写文字
 
-         $textWidth = imagefontwidth($font) * strlen($content);
 
-         $x = ($canvasWidth - $textWidth) / 2;
 
-         $y = $qrSize + $padding + 5;
 
-         imagestring($image, $font, $x, $y, $content, $black);
 
-         // 生成文件名
 
-         $filename = $address. '.png';
 
-         $relativePath = 'recharge/' . $filename;
 
-         $storagePath = storage_path('app/public/' . $relativePath);
 
-         // 确保目录存在
 
-         @mkdir(dirname($storagePath), 0777, true);
 
-         // 保存图片到文件
 
-         imagepng($image, $storagePath);
 
-         // 清理
 
-         imagedestroy($qrImage);
 
-         imagedestroy($image);
 
-         // 返回 public 存储路径(可用于 URL)
 
-         return 'storage/'.$relativePath; // 或返回 Storage::url($relativePath);
 
-     }
 
-     /**
 
-      * 判断指定地址的二维码是否已生成(已存在文件)
 
-      *
 
-      * @param string $address 充值地址
 
-      * @return 
 
-      */
 
-     public static function rechargeQrCodeExists(string $address)
 
-     {
 
-         $filename = $address . '.png';
 
-         $relativePath = 'recharge/' . $filename;
 
-         $storagePath = storage_path('app/public/' . $relativePath);
 
-         $path = '';
 
-         if(file_exists($storagePath)){
 
-             $path = 'storage/'.$relativePath;
 
-         }
 
-         return $path;
 
-     }
 
-     /**
 
-      * @description: 转成树形数据
 
-      * @param {*} $list 初始数据
 
-      * @param {*} $pid 父id
 
-      * @param {*} $level 层级
 
-      * @param {*} $pid_name pid字段名称 默认pid
 
-      * @param {*} $id_name  主键id 名称
 
-      * @return {*}
 
-      */    
 
-     public static function toTree($list,$pid=0,$level=0,$pid_name='pid',$id_name='id')
 
-     {
 
-         $arr=[];
 
-         $level++;
 
-         foreach($list as $k => $v){
 
-             if($pid==$v[$pid_name]){
 
-                 $v['level']=$level;
 
-                 $v['children']=self::toTree($list,$v[$id_name],$level,$pid_name,$id_name);
 
-                 $arr[]=$v;
 
-             }
 
-         }
 
-         return $arr;
 
-     }
 
-     /**
 
-      * @description: 实例化TG
 
-      * @return {*}
 
-      */    
 
-     public static function telegram()
 
-     {
 
-         return app(Api::class);
 
-     }
 
-     /**
 
-      * @description: 群组通知
 
-      * @param {*} $key
 
-      * @return {*}
 
-      */    
 
-     public static function bettingGroupNotice($text ,$keyboard = [])
 
-     {
 
-         $bettingGroup = Config::where('field', 'betting_group')->first()->val;
 
-         $botMsg = [
 
-             'chat_id' => "@{$bettingGroup}",
 
-             'text' => $text
 
-         ];
 
-         if(count($keyboard)>0){
 
-             $botMsg['reply_markup'] = json_encode(['inline_keyboard' => $keyboard]);
 
-         }
 
-         self::telegram()->sendMessage($botMsg);
 
-     }
 
-     /**
 
-      * @description: 弹窗提示
 
-      * @param {*} $memberId
 
-      * @param {*} $address
 
-      * @return {*}
 
-      */
 
-     public static function alertNotice($callbackId ,$text)
 
-     {
 
-         self::telegram()->answerCallbackQuery([
 
-             'callback_query_id' => $callbackId,
 
-             'text' => $text,
 
-             'show_alert' => true // 显示为弹窗
 
-         ]);
 
-     }
 
- }
 
 
  |