1
0
mirror of https://gitee.com/koogua/course-tencent-cloud.git synced 2025-06-26 20:52:44 +08:00
xiaochong0302 a31c991b1c 1.优化ShareUrl
2.第三方登录增加账号可用性判断
3.优化公众号关注相关
2024-05-12 19:17:57 +08:00

231 lines
5.5 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
/**
* @copyright Copyright (c) 2022 深圳市酷瓜软件有限公司
* @license https://www.gnu.org/licenses/old-licenses/gpl-2.0.html
* @link https://www.koogua.com
*/
namespace App\Services\Logic\Url;
use App\Services\Service as AppService;
use App\Traits\Client as ClientTrait;
class ShareUrl extends AppService
{
/**
* WEB站点URL
*
* @var string
*/
protected $fullWebUrl;
/**
* H5站点URL
*
* @var string
*/
protected $fullH5Url;
/**
* 目标类型h5|web
*
* @var string
*/
protected $targetType;
use ClientTrait;
public function __construct()
{
$this->fullWebUrl = new FullWebUrl();
$this->fullH5Url = new FullH5Url();
}
public function handle($type, $id = 0, $referer = 0)
{
if ($type == 'article') {
$result = $this->getArticleUrl($id);
} elseif ($type == 'page') {
$result = $this->getPageUrl($id);
} elseif ($type == 'help') {
$result = $this->getHelpUrl($id);
} elseif ($type == 'question') {
$result = $this->getQuestionUrl($id);
} elseif ($type == 'course') {
$result = $this->getCourseUrl($id);
} elseif ($type == 'chapter') {
$result = $this->getChapterUrl($id);
} elseif ($type == 'user') {
$result = $this->getUserUrl($id);
} elseif ($type == 'teacher') {
$result = $this->getTeacherUrl($id);
} elseif ($type == 'topic') {
$result = $this->getTopicUrl($id);
} elseif ($type == 'package') {
$result = $this->getPackageUrl($id);
} elseif ($type == 'vip') {
$result = $this->getVipUrl();
} elseif ($type == 'point_gift') {
$result = $this->getPointGiftUrl($id);
} else {
$result = $this->getHomeUrl();
}
if ($referer > 0) {
$result['h5'] = $this->withReferer($result['h5'], $referer);
$result['web'] = $this->withReferer($result['web'], $referer);
}
$gotoH5 = $this->gotoH5Url();
return $gotoH5 ? $result['h5'] : $result['web'];
}
public function getHomeUrl()
{
$webUrl = $this->fullWebUrl->getHomeUrl();
$h5Url = $this->fullH5Url->getHomeUrl();
return ['web' => $webUrl, 'h5' => $h5Url];
}
public function getVipUrl()
{
$webUrl = $this->fullWebUrl->getVipUrl();
$h5Url = $this->fullH5Url->getVipIndexUrl();
return ['web' => $webUrl, 'h5' => $h5Url];
}
public function getHelpUrl($id)
{
$webUrl = $this->fullWebUrl->getHelpShowUrl($id);
$h5Url = $this->fullH5Url->getHelpInfoUrl($id);
return ['web' => $webUrl, 'h5' => $h5Url];
}
public function getPageUrl($id)
{
$webUrl = $this->fullWebUrl->getPageShowUrl($id);
$h5Url = $this->fullH5Url->getPageInfoUrl($id);
return ['web' => $webUrl, 'h5' => $h5Url];
}
public function getArticleUrl($id)
{
$webUrl = $this->fullWebUrl->getArticleShowUrl($id);
$h5Url = $this->fullH5Url->getArticleInfoUrl($id);
return ['web' => $webUrl, 'h5' => $h5Url];
}
public function getQuestionUrl($id)
{
$webUrl = $this->fullWebUrl->getQuestionShowUrl($id);
$h5Url = $this->fullH5Url->getQuestionInfoUrl($id);
return ['web' => $webUrl, 'h5' => $h5Url];
}
public function getTopicUrl($id)
{
$webUrl = $this->fullWebUrl->getTopicShowUrl($id);
$h5Url = $this->fullH5Url->getTopicInfoUrl($id);
return ['web' => $webUrl, 'h5' => $h5Url];
}
public function getPackageUrl($id)
{
$webUrl = $this->fullWebUrl->getPackageShowUrl($id);
$h5Url = $this->fullH5Url->getPackageInfoUrl($id);
return ['web' => $webUrl, 'h5' => $h5Url];
}
public function getCourseUrl($id)
{
$webUrl = $this->fullWebUrl->getCourseShowUrl($id);
$h5Url = $this->fullH5Url->getCourseInfoUrl($id);
return ['web' => $webUrl, 'h5' => $h5Url];
}
public function getChapterUrl($id)
{
$webUrl = $this->fullWebUrl->getChapterShowUrl($id);
$h5Url = $this->fullH5Url->getChapterInfoUrl($id);
return ['web' => $webUrl, 'h5' => $h5Url];
}
public function getUserUrl($id)
{
$webUrl = $this->fullWebUrl->getUserShowUrl($id);
$h5Url = $this->fullH5Url->getUserIndexUrl($id);
return ['web' => $webUrl, 'h5' => $h5Url];
}
public function getTeacherUrl($id)
{
$webUrl = $this->fullWebUrl->getTeacherShowUrl($id);
$h5Url = $this->fullH5Url->getTeacherIndexUrl($id);
return ['web' => $webUrl, 'h5' => $h5Url];
}
public function getPointGiftUrl($id)
{
$webUrl = $this->fullWebUrl->getPointGiftShowUrl($id);
$h5Url = $this->fullH5Url->getPointGiftInfoUrl($id);
return ['web' => $webUrl, 'h5' => $h5Url];
}
public function setTargetType($targetType)
{
$this->targetType = $targetType;
}
protected function withReferer($url, $referer)
{
$params = ['referer' => $referer];
if (strpos($url, '?') === false) {
$url .= '?' . http_build_query($params);
} else {
$url .= '&' . http_build_query($params);
}
return $url;
}
protected function gotoH5Url()
{
if (!$this->h5Enabled()) return false;
if ($this->targetType == 'h5') return true;
return $this->isMobileBrowser();
}
}