瀏覽代碼

头像上传

afa 9 月之前
父節點
當前提交
4457eb167f
共有 4 個文件被更改,包括 143 次插入131 次删除
  1. 137 129
      application/api/controller/Common.php
  2. 2 1
      application/api/controller/User.php
  3. 4 1
      application/api/validate/User.php
  4. 二進制
      public/assets/img/default_avatar.jpg

+ 137 - 129
application/api/controller/Common.php

@@ -1,130 +1,138 @@
 <?php
-//
-//namespace app\api\controller;
-//
-//use app\common\controller\Api;
-//use app\common\exception\UploadException;
-//use app\common\library\Upload;
-//use app\common\model\Area;
-//use app\common\model\Version;
-//use fast\Random;
-//use think\Config;
-//use think\Hook;
-//
-///**
-// * 公共接口
-// */
-//class Common extends Api
-//{
-//    protected array $noNeedLogin = ['init'];
-//    protected $noNeedRight = '*';
-//
-//    /**
-//     * 加载初始化
-//     *
-//     * @param string $version 版本号
-//     * @param string $lng     经度
-//     * @param string $lat     纬度
-//     */
-//    public function init()
-//    {
-//        if ($version = $this->request->request('version')) {
-//            $lng = $this->request->request('lng');
-//            $lat = $this->request->request('lat');
-//
-//            //配置信息
-//            $upload = Config::get('upload');
-//            //如果非服务端中转模式需要修改为中转
-//            if ($upload['storage'] != 'local' && isset($upload['uploadmode']) && $upload['uploadmode'] != 'server') {
-//                //临时修改上传模式为服务端中转
-//                set_addon_config($upload['storage'], ["uploadmode" => "server"], false);
-//
-//                $upload = \app\common\model\Config::upload();
-//                // 上传信息配置后
-//                Hook::listen("upload_config_init", $upload);
-//
-//                $upload = Config::set('upload', array_merge(Config::get('upload'), $upload));
-//            }
-//
-//            $upload['cdnurl'] = $upload['cdnurl'] ? $upload['cdnurl'] : cdnurl('', true);
-//            $upload['uploadurl'] = preg_match("/^((?:[a-z]+:)?\/\/)(.*)/i", $upload['uploadurl']) ? $upload['uploadurl'] : url($upload['storage'] == 'local' ? '/api/common/upload' : $upload['uploadurl'], '', false, true);
-//
-//            $content = [
-//                'citydata'    => Area::getCityFromLngLat($lng, $lat),
-//                'versiondata' => Version::check($version),
-//                'uploaddata'  => $upload,
-//                'coverdata'   => Config::get("cover"),
-//            ];
-//            $this->success('', $content);
-//        } else {
-//            $this->error(__('Invalid parameters'));
-//        }
-//    }
-//
-//    /**
-//     * 上传文件
-//     * @ApiMethod (POST)
-//     * @param File $file 文件流
-//     */
-//    public function upload()
-//    {
-//        Config::set('default_return_type', 'json');
-//        //必须设定cdnurl为空,否则cdnurl函数计算错误
-//        Config::set('upload.cdnurl', '');
-//        $chunkid = $this->request->post("chunkid");
-//        if ($chunkid) {
-//            if (!Config::get('upload.chunking')) {
-//                $this->error(__('Chunk file disabled'));
-//            }
-//            $action = $this->request->post("action");
-//            $chunkindex = $this->request->post("chunkindex/d");
-//            $chunkcount = $this->request->post("chunkcount/d");
-//            $filename = $this->request->post("filename");
-//            $method = $this->request->method(true);
-//            if ($action == 'merge') {
-//                $attachment = null;
-//                //合并分片文件
-//                try {
-//                    $upload = new Upload();
-//                    $attachment = $upload->merge($chunkid, $chunkcount, $filename);
-//                } catch (UploadException $e) {
-//                    $this->error($e->getMessage());
-//                }
-//                $this->success(__('Uploaded successful'), ['url' => $attachment->url, 'fullurl' => cdnurl($attachment->url, true)]);
-//            } elseif ($method == 'clean') {
-//                //删除冗余的分片文件
-//                try {
-//                    $upload = new Upload();
-//                    $upload->clean($chunkid);
-//                } catch (UploadException $e) {
-//                    $this->error($e->getMessage());
-//                }
-//                $this->success();
-//            } else {
-//                //上传分片文件
-//                //默认普通上传文件
-//                $file = $this->request->file('file');
-//                try {
-//                    $upload = new Upload($file);
-//                    $upload->chunk($chunkid, $chunkindex, $chunkcount);
-//                } catch (UploadException $e) {
-//                    $this->error($e->getMessage());
-//                }
-//                $this->success();
-//            }
-//        } else {
-//            $attachment = null;
-//            //默认普通上传文件
-//            $file = $this->request->file('file');
-//            try {
-//                $upload = new Upload($file);
-//                $attachment = $upload->upload();
-//            } catch (UploadException $e) {
-//                $this->error($e->getMessage());
-//            }
-//
-//            $this->success(__('Uploaded successful'), ['url' => $attachment->url, 'fullurl' => cdnurl($attachment->url, true)]);
-//        }
-//
-//    }
-//}
+
+namespace app\api\controller;
+
+use app\common\controller\Api;
+use app\common\exception\UploadException;
+use app\common\library\Upload;
+use app\common\model\Area;
+use app\common\model\Version;
+use fast\Random;
+use think\Config;
+use think\Hook;
+use OSS\OssClient;
+/**
+* 公共接口
+*/
+class Common extends Api
+{
+   protected array $noNeedLogin = ['init'];
+   protected $noNeedRight = '*';
+
+   /**
+    * 加载初始化
+    *
+    * @param string $version 版本号
+    * @param string $lng     经度
+    * @param string $lat     纬度
+    */
+   public function init()
+   {
+       if ($version = $this->request->request('version')) {
+           $lng = $this->request->request('lng');
+           $lat = $this->request->request('lat');
+
+           //配置信息
+           $upload = Config::get('upload');
+           //如果非服务端中转模式需要修改为中转
+           if ($upload['storage'] != 'local' && isset($upload['uploadmode']) && $upload['uploadmode'] != 'server') {
+               //临时修改上传模式为服务端中转
+               set_addon_config($upload['storage'], ["uploadmode" => "server"], false);
+
+               $upload = \app\common\model\Config::upload();
+               // 上传信息配置后
+               Hook::listen("upload_config_init", $upload);
+
+               $upload = Config::set('upload', array_merge(Config::get('upload'), $upload));
+           }
+
+           $upload['cdnurl'] = $upload['cdnurl'] ? $upload['cdnurl'] : cdnurl('', true);
+           $upload['uploadurl'] = preg_match("/^((?:[a-z]+:)?\/\/)(.*)/i", $upload['uploadurl']) ? $upload['uploadurl'] : url($upload['storage'] == 'local' ? '/api/common/upload' : $upload['uploadurl'], '', false, true);
+           $content = [
+               'citydata'    => Area::getCityFromLngLat($lng, $lat),
+               'versiondata' => Version::check($version),
+               'uploaddata'  => $upload,
+               'coverdata'   => Config::get("cover"),
+           ];
+           $this->success('', $content);
+       } else {
+           $this->error(__('Invalid parameters'));
+       }
+   }
+
+   /**
+    * 上传文件
+    * @ApiMethod (POST)
+    * @param File $file 文件流
+    */
+   public function upload()
+   {
+       Config::set('default_return_type', 'json');
+       //必须设定cdnurl为空,否则cdnurl函数计算错误
+       Config::set('upload.cdnurl', '');
+       $chunkid = $this->request->post("chunkid");
+       if ($chunkid) {
+           if (!Config::get('upload.chunking')) {
+               $this->error(__('Chunk file disabled'));
+           }
+           $action = $this->request->post("action");
+           $chunkindex = $this->request->post("chunkindex/d");
+           $chunkcount = $this->request->post("chunkcount/d");
+           $filename = $this->request->post("filename");
+           $method = $this->request->method(true);
+           if ($action == 'merge') {
+               $attachment = null;
+               //合并分片文件
+               try {
+                   $upload = new Upload();
+                   $attachment = $upload->merge($chunkid, $chunkcount, $filename);
+               } catch (UploadException $e) {
+                   $this->error($e->getMessage());
+               }
+               $this->success(__('Uploaded successful'), ['url' => $attachment->url, 'fullurl' => cdnurl($attachment->url, true)]);
+           } elseif ($method == 'clean') {
+               //删除冗余的分片文件
+               try {
+                   $upload = new Upload();
+                   $upload->clean($chunkid);
+               } catch (UploadException $e) {
+                   $this->error($e->getMessage());
+               }
+               $this->success();
+           } else {
+               //上传分片文件
+               //默认普通上传文件
+               $file = $this->request->file('file');
+               try {
+                   $upload = new Upload($file);
+                   $upload->chunk($chunkid, $chunkindex, $chunkcount);
+               } catch (UploadException $e) {
+                   $this->error($e->getMessage());
+               }
+               $this->success();
+           }
+       } else {
+
+            $attachment = null;
+            //默认普通上传文件
+            $file = $this->request->file('file');
+            $filename = $file->getInfo();
+            $config = [
+                  'KeyId'     => \think\Env::get('oss.key_id'),
+                  'KeySecret' => \think\Env::get('oss.key_secret'),
+                  'Endpoint'  => \think\Env::get('oss.endpoint'),
+                  'Bucket'    => \think\Env::get('oss.bucket'),
+                  'Directory' => \think\Env::get('oss.directory'),
+            ];
+            //获取oss实例
+            $ossClient = new OssClient($config['KeyId'],$config['KeySecret'],$config['Endpoint']);
+            $bucket = $config['Bucket']; //创建的项目
+            $object =  $config['Directory'] . '/' . $filename['name'] . uniqid(Random::alnum(12)); //文件名
+            $res = $ossClient->uploadFile($bucket,$object,$file->getRealPath());
+            $url = str_replace("http://", "https://", $res['info']['url']);
+            //$this->success(__('Uploaded successful'), '', ['url' => $url, 'fullurl' => $url])
+            $this->success(__('Uploaded successful'), ['url' => $url, 'fullurl' => $url]);
+       }
+
+   }
+}

+ 2 - 1
application/api/controller/User.php

@@ -55,6 +55,7 @@ class User extends Api
             'balance'         => $ledgerWalletModel::getWalletChaBao($this->auth->id), // 余额
             'rwa_num'         => $user['rwa_num'], // 总茶权
             'parent_id'       => $user['parent_id'], // 上级ID
+            'avatar'          => !empty($user['avatar'])? $user['avatar']:$this->request->domain().'/assets/img/default_avatar.jpg', // 头像
             'parent_address'  => '', // 上级的地址
             'invite_link'     => config('rental.invite_domain') . '/?inviteCode=' . $user['address'],
             'take_address'    => $userArea::getUserDefaultAdders($user['id']),  // 用户地址
@@ -253,7 +254,7 @@ class User extends Api
         if(!empty($areaId)){
             $arr = explode('-', $areaId);
             if(count($arr) > 0) {
-                if(isset($arr[0])) $where['d.province'] = [ '=' , $arr[0]];
+                if(isset($arr[0])) $where['d.province'] = ['=', $arr[0]];
                 if(isset($arr[1])) $where['d.city']     = ['=', $arr[1]];
                 if(isset($arr[2])) $where['d.area']     = ['=', $arr[2]];
                 if(isset($arr[3])) $where['d.county']   = ['=', $arr[3]];

+ 4 - 1
application/api/validate/User.php

@@ -11,7 +11,8 @@ class User extends Validate
      */
     protected $rule = [
       'name'       => 'require',
-      'heading'   => 'require',
+      'heading'    => 'require',
+      'avatar'     => 'require',
       'phone'      => 'require',
       'area_code'  => 'require',
       'address'    => 'require',
@@ -22,6 +23,7 @@ class User extends Validate
     protected $message = [
       'name.require'      => '参数有误',
       'heading.require'   => '参数有误', //
+      'avatar.require'    => '参数有误', //
       'phone.require'     => '参数有误',
       'area_code.require' => '参数有误',
       'address.require'   => '参数有误',
@@ -33,6 +35,7 @@ class User extends Validate
         'name'      => ['name'],
         'heading'   => ['heading'],
         'phone'     => ['phone'],
+        'avatar'    => ['phone'],
         'address'   => ['area_code', 'address'],
     ];
   

二進制
public/assets/img/default_avatar.jpg