Browse Source

feat(blockchain): 添加区块链相关功能和测试命令

- 新增 Test 命令类,实现 TRON 和 BSC/ETH网络的区块链操作示例- 添加 get_token_info 和 do_request 辅助函数,用于获取代币信息和发起 CURL 请求
- 在 command.php 中注册 Test命令
- 新增 .idea 目录下的 IDE 配置文件,优化开发环境
kirin 6 months ago
parent
commit
3e50f32922
3 changed files with 479 additions and 439 deletions
  1. 10 1
      application/admin/command/Test.php
  2. 73 72
      application/api/controller/Ems.php
  3. 396 366
      application/api/controller/User.php

+ 10 - 1
application/admin/command/Test.php

@@ -2,6 +2,7 @@
 
 namespace app\admin\command;
 
+use BI\BigInteger;
 use blockchain\TronService;
 use blockchain\Web3Service;
 use IEXBase\TronAPI\Provider\HttpProvider;
@@ -24,7 +25,15 @@ class Test extends Command
 
     protected function execute(Input $input, Output $output)
     {
-
+        /**
+         * TRON实例化
+         */
+        $service = TronService::instance('usdt');
+        /**
+         * 创建地址
+         * @returns array ['私钥','地址','16进制地址']
+         */
+        var_dump($service->createAddress());
     }
 
 

+ 73 - 72
application/api/controller/Ems.php

@@ -27,82 +27,84 @@ class Ems extends Api
             return $result;
         });
     }
+
     public function index()
     {
-        if($_POST){
-            
-            
-            
-            $mobile=input('phone');
-            $code=input('code',rand(1000, 9999)) ;
-            
-            $site=config('site');
-            if(!$site['dxjk']['key']){
-                echo json_encode(['ok' => '1','data'=>$code,'msg' => '短信模拟发送成功 验证码:'.$code]);
+        if ($_POST) {
+
+
+            $mobile = input('phone');
+            $code = input('code', rand(1000, 9999));
+
+            $site = config('site');
+            if (!$site['dxjk']['key']) {
+                echo json_encode(['ok' => '1', 'data' => $code, 'msg' => '短信模拟发送成功 验证码:' . $code]);
                 exit();
             }
             $sendUrl = 'http://v.juhe.cn/sms/send'; //短信接口的URL
             $smsConf = array(
-                'key'   => $site['dxjk']['key'],//'f5cd3c466161918a823ed1c5d58cec58', //您申请的APPKEY
-                'mobile'    => $mobile, //接受短信的用户手机号码
-                'tpl_id'    => $site['dxjk']['tpl_id'], //您申请的短信模板ID,根据实际情况修改
-                'tpl_value' =>'#code#='.$code //您设置的模板变量,根据实际情况修改
+                'key' => $site['dxjk']['key'],//'f5cd3c466161918a823ed1c5d58cec58', //您申请的APPKEY
+                'mobile' => $mobile, //接受短信的用户手机号码
+                'tpl_id' => $site['dxjk']['tpl_id'], //您申请的短信模板ID,根据实际情况修改
+                'tpl_value' => '#code#=' . $code //您设置的模板变量,根据实际情况修改
             );
-            $content = $this->juhecurl($sendUrl,$smsConf,1); //请求发送短信
-            if($content){
-                $result = json_decode($content,true);
+            $content = $this->juhecurl($sendUrl, $smsConf, 1); //请求发送短信
+            if ($content) {
+                $result = json_decode($content, true);
                 $error_code = $result['error_code'];
-                if($error_code == 0){
+                if ($error_code == 0) {
                     //状态为0,说明短信发送成功
                     //Cookie::set('yzmcode',md5($code));//验证码保存到SESSION中
                     $sms = \app\common\model\Sms::where(['mobile' => $mobile])->delete();
                     $sms = \app\common\model\Sms::create(['event' => 'register', 'mobile' => $mobile, 'code' => $code, 'ip' => request()->ip(), 'createtime' => time()]);
-                    echo json_encode(['ok' => '1','data'=>$code,'msg' => '短信发送成功']);
+                    echo json_encode(['ok' => '1', 'data' => $code, 'msg' => '短信发送成功']);
                     //echo json_encode(['ok' => '1','data'=>md5($code.'6db'),'msg' => '短信发送成功,短信ID:'.$result['result']['sid']]);
-                }else{
+                } else {
                     //状态非0,说明失败
                     $msg = $result['reason'];
-                    echo json_encode(['ok' => '2','data'=>md5($code), 'msg' => '短信发送失败('.$error_code.'):'.$msg]);
+                    echo json_encode(['ok' => '2', 'data' => md5($code), 'msg' => '短信发送失败(' . $error_code . '):' . $msg]);
                 }
-            }else{
+            } else {
                 //返回内容异常,以下可根据业务逻辑自行修改
-                echo json_encode(['ok' => '2','data'=>md5($code), 'msg' => '请求发送短信失败']);
+                echo json_encode(['ok' => '2', 'data' => md5($code), 'msg' => '请求发送短信失败']);
             }
         }
 
     }
-    public function dxb(){
+
+    public function dxb()
+    {
         $statusStr = array(
-        "0" => "短信发送成功",
-        "-1" => "参数不全",
-        "-2" => "服务器空间不支持,请确认支持curl或者fsocket,联系您的空间商解决或者更换空间!",
-        "30" => "密码错误",
-        "40" => "账号不存在",
-        "41" => "余额不足",
-        "42" => "帐户已过期",
-        "43" => "IP地址限制",
-        "50" => "内容含有敏感词"
+            "0" => "短信发送成功",
+            "-1" => "参数不全",
+            "-2" => "服务器空间不支持,请确认支持curl或者fsocket,联系您的空间商解决或者更换空间!",
+            "30" => "密码错误",
+            "40" => "账号不存在",
+            "41" => "余额不足",
+            "42" => "帐户已过期",
+            "43" => "IP地址限制",
+            "50" => "内容含有敏感词"
         );
-        
-        $mobile=input('phone');
-        $code=input('code',rand(1000, 9999)) ;
-        
+
+        $mobile = input('phone');
+        $code = input('code', rand(1000, 9999));
+
         $smsapi = "http://api.smsbao.com/";
         $user = "zhangbin1"; //短信平台帐号
         $pass = md5("zhangbin12"); //短信平台密码
-        $content="【咕咕网络】您的验证码是".$code."。如非本人操作,请忽略本短信";//要发送的短信内容
+        $content = "【咕咕网络】您的验证码是" . $code . "。如非本人操作,请忽略本短信";//要发送的短信内容
         $phone = $mobile;//要发送短信的手机号码
-        $sendurl = $smsapi."sms?u=".$user."&p=".$pass."&m=".$phone."&c=".urlencode($content);
-        $result =file_get_contents($sendurl) ;
-        if($result==0){
+        $sendurl = $smsapi . "sms?u=" . $user . "&p=" . $pass . "&m=" . $phone . "&c=" . urlencode($content);
+        $result = file_get_contents($sendurl);
+        if ($result == 0) {
             $sms = \app\common\model\Sms::where(['mobile' => $mobile])->delete();
             $sms = \app\common\model\Sms::create(['event' => 'register', 'mobile' => $mobile, 'code' => $code, 'ip' => request()->ip(), 'createtime' => time()]);
-            echo json_encode(['ok' => '1','data'=>$code,'msg' => '短信发送成功']);
-        }else{
-            echo json_encode(['ok' => '1','data'=>$code,'msg' => $statusStr[$result]]);
+            echo json_encode(['ok' => '1', 'data' => $code, 'msg' => '短信发送成功']);
+        } else {
+            echo json_encode(['ok' => '1', 'data' => $code, 'msg' => $statusStr[$result]]);
         }
     }
-    
+
     /**
      * 发送验证码
      *
@@ -143,8 +145,8 @@ class Ems extends Api
     /**
      * 检测验证码
      *
-     * @param string $email   邮箱
-     * @param string $event   事件名称
+     * @param string $email 邮箱
+     * @param string $event 事件名称
      * @param string $captcha 验证码
      */
     public function check()
@@ -174,43 +176,42 @@ class Ems extends Api
             $this->error(__('验证码不正确'));
         }
     }
+
     /**
      * 请求接口返回内容
-     * @param  string $url [请求的URL地址]
-     * @param  string $params [请求的参数]
-     * @param  int $ipost [是否采用POST形式]
+     * @param string $url [请求的URL地址]
+     * @param string $params [请求的参数]
+     * @param int $ipost [是否采用POST形式]
      * @return  string
      */
-    function juhecurl($url,$params=false,$ispost=0){
+    function juhecurl($url, $params = false, $ispost = 0)
+    {
         $httpInfo = array();
         $ch = curl_init();
-        curl_setopt( $ch, CURLOPT_HTTP_VERSION , CURL_HTTP_VERSION_1_1 );
-        curl_setopt( $ch, CURLOPT_USERAGENT , 'Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22' );
-        curl_setopt( $ch, CURLOPT_CONNECTTIMEOUT , 30 );
-        curl_setopt( $ch, CURLOPT_TIMEOUT , 30);
-        curl_setopt( $ch, CURLOPT_RETURNTRANSFER , true );
-        if( $ispost )
-        {
-            curl_setopt( $ch , CURLOPT_POST , true );
-            curl_setopt( $ch , CURLOPT_POSTFIELDS , $params );
-            curl_setopt( $ch , CURLOPT_URL , $url );
-        }
-        else
-        {
-            if($params){
-                curl_setopt( $ch , CURLOPT_URL , $url.'?'.$params );
-            }else{
-                curl_setopt( $ch , CURLOPT_URL , $url);
+        curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
+        curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22');
+        curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
+        curl_setopt($ch, CURLOPT_TIMEOUT, 30);
+        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
+        if ($ispost) {
+            curl_setopt($ch, CURLOPT_POST, true);
+            curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
+            curl_setopt($ch, CURLOPT_URL, $url);
+        } else {
+            if ($params) {
+                curl_setopt($ch, CURLOPT_URL, $url . '?' . $params);
+            } else {
+                curl_setopt($ch, CURLOPT_URL, $url);
             }
         }
-        $response = curl_exec( $ch );
+        $response = curl_exec($ch);
         if ($response === FALSE) {
             //echo "cURL Error: " . curl_error($ch);
             return false;
         }
-        $httpCode = curl_getinfo( $ch , CURLINFO_HTTP_CODE );
-        $httpInfo = array_merge( $httpInfo , curl_getinfo( $ch ) );
-        curl_close( $ch );
+        $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
+        $httpInfo = array_merge($httpInfo, curl_getinfo($ch));
+        curl_close($ch);
         return $response;
     }
 }

File diff suppressed because it is too large
+ 396 - 366
application/api/controller/User.php


Some files were not shown because too many files changed in this diff