6
0
Fork 0
jiqu-library-server/app/Endpoint/Api/Http/Controllers/ShareBgController.php

70 lines
2.1 KiB
PHP

<?php
namespace App\Endpoint\Api\Http\Controllers;
use App\Endpoint\Api\Http\Resources\ShareBgResource;
use App\Models\{ShareBg, User};
use Illuminate\Http\Request;
use SimpleSoftwareIO\QrCode\Facades\QrCode;
use Illuminate\Support\Facades\Storage;
use App\Exceptions\BizException;
use EasyWeChat\Kernel\Http\StreamResponse;
class ShareBgController extends Controller
{
/**
* 分享背景图
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\JsonResponse
*/
public function index(Request $request)
{
return ShareBgResource::collection(ShareBg::where('is_use', true)->orderBy('sort', 'desc')->get());
}
public function userQrCode(Request $request)
{
$user = $request->user();
$qr_code = $user->userInfo->invite_qrcode;
if (!$qr_code || $request->input('force')) {
$disk = Storage::disk('public');
$app = $this->getWechatApp();
$scene = http_build_query([
'i' => $user->userInfo->code
]);
$response = $app->app_code->getUnlimit($scene, [
'page' => 'pages/welcome/index',
'check_path' => false,
// develop: 开发版, trial: 体验版
'env_version' => app()->isProduction() ? 'release' : $request->input('env_version', 'trial'),
'width' => $request->input('width', 200),
]);
if ($response instanceof StreamResponse) {
$filepath = 'invite-qrocde';
$filename = $user->id . '.png';
$response->saveAs($disk->path($filepath), $filename);
$qr_code = $disk->url($filepath . '/' . $filename);
$user->userInfo->update([
'invite_qrcode' => $qr_code
]);
} else {
throw new BizException('生成失败');
}
}
return response()->json([
'qr_code' => $qr_code,
]);
}
protected function getWechatApp($getway = 'default')
{
return \EasyWeChat\Factory::miniProgram(config('wechat.mini_program.' . $getway));
}
}