Bladeren bron

开始海报

lizhen_gitee 1 jaar geleden
bovenliggende
commit
794c149a4a
2 gewijzigde bestanden met toevoegingen van 157 en 35 verwijderingen
  1. 154 35
      application/api/controller/company/Package.php
  2. 3 0
      application/extra/addons.php

+ 154 - 35
application/api/controller/company/Package.php

@@ -108,42 +108,7 @@ class Package extends Apic
         }
     }
 
-    public function showposter(){
-        $id = input('id',1);
-        $this->getMiniCode($id,$this->auth->company_id);
-    }
-
-    private function getMiniCode($id,$companyid)
-    {
-        $package = Db::name('package')->where('id',$id)->find();
-
-        $httpStr = $_SERVER['REQUEST_SCHEME'].'://'.$_SERVER['HTTP_HOST'];
-        if (empty($package['mini_code'])) {
-            $client = new Client();
-            $tk = getAccessToken();
-            $miniCodeConfig = config('param.mini_code');
-            //$miniCodeConfig['env_version'] = 'trial'; //强制体验版
-            $miniCodeConfig['scene'] = 'id='.$id.'&shopId='.$companyid;
-            $res2 = $client->request('POST', 'https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token='.$tk, [
-                'json' => $miniCodeConfig,
-            ]);
-            $fileName = md5($id);
-            $fileUrl = '/uploads/package/'.$fileName.'.png';
-            $code = $res2->getBody()->getContents();
-            file_put_contents(ROOT_PATH.'/public'.$fileUrl,$code);
-
-            $companyRes = Db::name('package')->where('id',$id)->update(['mini_code'=>$fileUrl]);
-            if ($companyRes === false) {
-                $this->error('生成套餐小程序码失败');
-            }
-            $miniCode = $httpStr.$fileUrl;
-        } else {
-            $miniCode = $httpStr.$package['mini_code'];
-        }
-
-        $this->success('success',$miniCode);
 
-    }
 
     //上下架
     public function changestatus(){
@@ -295,6 +260,160 @@ class Package extends Apic
         $this->success('删除成功');
     }
 
+    public function showposter(){
+        $id = input('id',1);
+        $minicode = $this->getMiniCode($id,$this->auth->company_id);
+
+    }
+
+    //仅返回套餐二维码
+    private function getMiniCode($id,$companyid)
+    {
+        $package = Db::name('package')->where('id',$id)->find();
+
+        $httpStr = $_SERVER['REQUEST_SCHEME'].'://'.$_SERVER['HTTP_HOST'];
+        if (empty($package['mini_code'])) {
+            $client = new Client();
+            $tk = getAccessToken();
+            $miniCodeConfig = config('param.mini_code');
+            //$miniCodeConfig['env_version'] = 'trial'; //强制体验版
+            $miniCodeConfig['scene'] = 'id='.$id.'&shopId='.$companyid;
+            $res2 = $client->request('POST', 'https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token='.$tk, [
+                'json' => $miniCodeConfig,
+            ]);
+            $fileName = md5($id);
+            $fileUrl = '/uploads/package/'.$fileName.'.png';
+            $code = $res2->getBody()->getContents();
+            file_put_contents(ROOT_PATH.'/public'.$fileUrl,$code);
+
+            $companyRes = Db::name('package')->where('id',$id)->update(['mini_code'=>$fileUrl]);
+            if ($companyRes === false) {
+                $this->error('生成套餐小程序码失败');
+            }
+            $miniCode = $httpStr.$fileUrl;
+        } else {
+            $miniCode = $httpStr.$package['mini_code'];
+        }
+
+        $this->success('success',$miniCode);
+
+    }
+
+    //生成我的视频海报
+    //生成邀请码二维码图片
+    public function inviteimage($introcode = '') {
+        $params['text'] = config('h5_url') . '/#/pages/index/detail/detail?id=5&introcode=' . $introcode;
+        $qrcode_service = \addons\qrcode\library\Service::qrcode($params);
+//        $mimetype = 'image/png';
+//        $response = Response::create()->header("Content-Type", $mimetype);
+
+        // 直接显示二维码
+//        header('Content-Type: ' . $qrcode_service->getContentType());
+//        $response->content($qrcode_service->writeString());
+        $qrcodePath = ROOT_PATH . 'public/uploads/qrcode/';
+        if (!is_dir($qrcodePath)) {
+            @mkdir($qrcodePath);
+        }
+        if (is_really_writable($qrcodePath)) {
+            $filename = md5(implode('', $params)) . '.png';
+            $filePath = $qrcodePath . $filename;
+            $qrcode_service->writeFile($filePath);
+        }
+
+        return '/uploads/qrcode/' . $filename;
+    }
+
+
+    //生成视频分享海报
+    public function shareposter() {
+        $id = input('video_id', 0, 'intval'); //id
+        if (!$id) {
+            $this->error('参数缺失');
+        }
+        $info = Db::name('video')->where('id',$id)->find();
+        if (!$info) {
+            $this->error('视频不存在');
+        }
+
+        $inviteimage = $this->inviteimage($this->auth->introcode);
+
+        $data = [
+            [
+                "left"=> "10px",
+                "top"=> "250px",
+                "type"=> "img",
+                "width"=> "45px",
+                "height"=> "45px",
+                "src"=> one_domain_image($this->auth->avatar)//"https://metavision.oss-cn-hongkong.aliyuncs.com/uploads/20220615/f00cb545deb4c4e7296f444239d83e84.jpg"
+            ],
+            [
+                "left"=> "10px",
+                "top"=> "205px",
+                "type"=> "nickname",
+                "width"=> "166px",
+                "height"=> "38px",
+                "size"=> "11px",
+                "color"=> "#333333",
+                "content" => (iconv_strlen($info['name'], 'utf-8') <= 12 ? $info['name'] : mb_substr($info['name'], 0, 12) )
+            ],
+            [
+                "left"=> "60px",
+                "top"=> "270px",
+                "type"=> "nickname",
+                "width"=> "166px",
+                "height"=> "38px",
+                "size"=> "10px",
+                "color"=> "#666666",
+                "content" => (iconv_strlen($this->auth->nickname, 'utf-8') <= 8 ? $this->auth->nickname : mb_substr($this->auth->nickname, 0, 8))
+            ],
+            [
+                "left"=> "200px",
+                "top"=> "190px",
+                "type"=> "img",
+                "width"=> "110px",
+                "height"=> "110px",
+                "src"=> httpurllocal($inviteimage)//"https://metavision.oss-cn-hongkong.aliyuncs.com/uploads/20220615/f00cb545deb4c4e7296f444239d83e84.jpg"
+            ],
+            [
+                "left"=> "205px",
+                "top"=> "300px",
+                "type"=> "nickname",
+                "width"=> "166px",
+                "height"=> "38px",
+                "size"=> "9px",
+                "color"=> "#666666",
+                "content" => '长按扫码查看详情',
+            ],
+        ];
+
+
+        $data = json_encode($data, 320);
+
+        $poster = [
+            'id' => 1,
+            'title' => '测试',
+            'waittext' => '您的专属海报正在拼命生成中,请等待片刻...',
+            'bg_image' => '/assets/img/posterbg.png',
+            'data' => $data,
+            'status' => 'normal',
+            'weigh' => 0,
+            'createtime' => 1653993709,
+            'updatetime' => 1653994259,
+        ];
+
+        $image = new \addons\poster\library\Image();
+        $imgurl = $image->createPosterImage($poster, $this->auth->getUser());
+
+        if (!$imgurl) {
+            $this->error('生成海报出错');
+        }
+        $imgurl = $_SERVER["REQUEST_SCHEME"]."://".$_SERVER["HTTP_HOST"] . '/' . $imgurl;
+
+        //echo '<html><body><img src="'.$imgurl.'"></body></html>';exit;
+
+        $this->success('', $imgurl);
+    }
+
 
 
 }

+ 3 - 0
application/extra/addons.php

@@ -16,6 +16,9 @@ return [
         'upload_delete' => [
             'alioss',
         ],
+        'user_sidenav_after' => [
+            'poster',
+        ],
         'config_init' => [
             'qcloudsms',
             'umeditor',