1
0
mirror of https://gitee.com/koogua/course-tencent-cloud.git synced 2025-06-27 21:10:24 +08:00

优化命名

This commit is contained in:
xiaochong0302 2020-09-17 21:29:29 +08:00
parent 970f2b8903
commit cddbc08c0b
426 changed files with 1912 additions and 2092 deletions

View File

@ -4,14 +4,20 @@
酷瓜云课堂,依托腾讯云基础服务架构,采用 C 扩展框架 Phalcon 开发,致力网络教育软件。 酷瓜云课堂,依托腾讯云基础服务架构,采用 C 扩展框架 Phalcon 开发,致力网络教育软件。
#### 系统功能
都有些什么功能?我也不想写一大堆,自己体验吧! 都有些什么功能?我也不想写一大堆,自己体验吧!
- [前台演示](https://ctc.koogua.com) - [前台演示](https://ctc.koogua.com)
- [后台演示](https://ctc.koogua.com/admin) - [后台演示](https://ctc.koogua.com/admin)
> 帐号100015@163.com / 123456 (前后台通用) 帐号100015@163.com / 123456 (前后台通用,请不要修改密码)
PS**管理后台已禁止提交并隐藏私人配置** 友情提示:
- 系统配置低1核 1G 1M 跑多个容器),手下留情
- 课程数据来源于网络(无实质内容),切莫购买
- 管理后台已禁止提交(私密配置已过滤)
#### 项目组件 #### 项目组件
@ -32,32 +38,7 @@ PS**管理后台已禁止提交并隐藏私人配置**
#### 安装指南 #### 安装指南
- [运行环境搭建](https://gitee.com/koogua/course-tencent-cloud-docker) - [运行环境搭建](https://gitee.com/koogua/course-tencent-cloud-docker)
- [系统服务配置](https://gitee.com/koogua/course-tencent-cloud/wikis/服务配置) - [系统服务配置](https://gitee.com/koogua/course-tencent-cloud/wikis)
#### 会推出商业服务吗?
- 如果不符合您对“开源”的认知,请移步其它同类产品,毕竟同类“免费”产品也很多。
- 如果使用协议不能满足您的需求,或者您希望有更好的支持,商业服务是不错的选择。
我们为用户提供的服务包括:
- 系统安装
- 系统定制
- 企业会员
#### 会有阿里云版吗?
阿里云版规划中,之前阿里云服务过期未续费,所以腾讯云版本先出。
#### 代码有加密吗?
所有代码都公开授权代码除外例如layim没有所谓的商业版和付费插件。
#### 通过这个项目能学到什么?
1. 项目规划phalcon实战缓存JWT即时通讯全文检索
2. dockersupervisordevops
3. gitlinuxphpmysqlredisnginx
#### 开发计划 #### 开发计划
@ -73,7 +54,29 @@ PS**管理后台已禁止提交并隐藏私人配置**
#### 加入我们 #### 加入我们
这是我的创业项目,个人能力和精力有限,要兼顾产品规划以及开发,还要处理很多琐碎事情。 这是一个创业项目,个人能力和精力有限,要兼顾产品规划以及开发,还要处理很多琐碎事情。目前在南山科技园某个众创空间,希望有 **深圳前端同学** 加入我们。
目前在南山科技园某个众创空间,希望有 **深圳前端同学** 加入我们。
联系邮箱76632555@qq.com 联系邮箱76632555@qq.com
#### 通过这个项目能学到什么?
- 项目规划phalcon缓存JWT即时通讯全文检索
- dockersupervisordevops
- gitlinuxphpmysqlredisnginx
#### 有阿里云版吗?
阿里云版规划中,之前阿里云服务过期未续费,所以腾讯云版本先出。
#### 代码有加密吗?
所有代码都公开授权代码除外例如layim没有所谓的商业版和付费插件。
#### 有商业服务吗?
生存是一个问题,生存才能发展,我们为用户提供的服务包括:
- 系统安装
- 系统定制
- 企业授权

View File

@ -1,72 +0,0 @@
<?php
namespace App\Caches;
use App\Models\Carousel as CarouselModel;
use Phalcon\Mvc\Model\Resultset;
use Phalcon\Mvc\Model\ResultsetInterface;
class IndexCarouselList extends Cache
{
protected $lifetime = 365 * 86400;
public function getLifetime()
{
return $this->lifetime;
}
public function getKey($id = null)
{
return 'index_carousel_list';
}
public function getContent($id = null)
{
$limit = 5;
$carousels = $this->findCarousels($limit);
if ($carousels->count() == 0) {
return [];
}
return $this->handleContent($carousels);
}
/**
* @param CarouselModel[] $carousels
* @return array
*/
protected function handleContent($carousels)
{
$result = [];
foreach ($carousels as $carousel) {
$result[] = [
'id' => $carousel->id,
'title' => $carousel->title,
'cover' => $carousel->cover,
'style' => $carousel->style,
'target' => $carousel->target,
'content' => $carousel->content,
];
}
return $result;
}
/**
* @param int $limit
* @return ResultsetInterface|Resultset|CarouselModel[]
*/
public function findCarousels($limit = 5)
{
return CarouselModel::query()
->where('published = 1')
->orderBy('priority ASC')
->limit($limit)
->execute();
}
}

View File

@ -0,0 +1,71 @@
<?php
namespace App\Caches;
use App\Models\Slide as SlideModel;
use Phalcon\Mvc\Model\Resultset;
use Phalcon\Mvc\Model\ResultsetInterface;
class IndexSlideList extends Cache
{
protected $lifetime = 365 * 86400;
public function getLifetime()
{
return $this->lifetime;
}
public function getKey($id = null)
{
return 'index_slide_list';
}
public function getContent($id = null)
{
$limit = 5;
$slides = $this->findSlides($limit);
if ($slides->count() == 0) {
return [];
}
return $this->handleContent($slides);
}
/**
* @param SlideModel[] $slides
* @return array
*/
protected function handleContent($slides)
{
$result = [];
foreach ($slides as $slide) {
$result[] = [
'id' => $slide->id,
'title' => $slide->title,
'cover' => $slide->cover,
'target' => $slide->target,
'content' => $slide->content,
];
}
return $result;
}
/**
* @param int $limit
* @return ResultsetInterface|Resultset|SlideModel[]
*/
public function findSlides($limit = 5)
{
return SlideModel::query()
->where('published = 1')
->orderBy('priority ASC')
->limit($limit)
->execute();
}
}

View File

@ -13,8 +13,8 @@ class CleanLogTask extends Task
$this->cleanSqlLog(); $this->cleanSqlLog();
$this->cleanListenerLog(); $this->cleanListenerLog();
$this->cleanCaptchaLog(); $this->cleanCaptchaLog();
$this->cleanMailerLog(); $this->cleanMailLog();
$this->cleanSmserLog(); $this->cleanSmsLog();
$this->cleanVodLog(); $this->cleanVodLog();
$this->cleanLiveLog(); $this->cleanLiveLog();
$this->cleanStorageLog(); $this->cleanStorageLog();
@ -99,17 +99,17 @@ class CleanLogTask extends Task
/** /**
* 清理短信服务日志 * 清理短信服务日志
*/ */
protected function cleanSmserLog() protected function cleanSmsLog()
{ {
$this->cleanLog('smser', 7); $this->cleanLog('sms', 7);
} }
/** /**
* 清理邮件服务日志 * 清理邮件服务日志
*/ */
protected function cleanMailerLog() protected function cleanMailLog()
{ {
$this->cleanLog('mailer', 7); $this->cleanLog('mail', 7);
} }
/** /**

View File

@ -9,7 +9,7 @@ use App\Models\Task as TaskModel;
use App\Models\Trade as TradeModel; use App\Models\Trade as TradeModel;
use App\Repos\Order as OrderRepo; use App\Repos\Order as OrderRepo;
use App\Repos\User as UserRepo; use App\Repos\User as UserRepo;
use App\Services\Smser\Order as OrderSmser; use App\Services\Sms\Order as OrderSms;
use Phalcon\Mvc\Model; use Phalcon\Mvc\Model;
use Phalcon\Mvc\Model\Resultset; use Phalcon\Mvc\Model\Resultset;
use Phalcon\Mvc\Model\ResultsetInterface; use Phalcon\Mvc\Model\ResultsetInterface;
@ -164,9 +164,9 @@ class DeliverTask extends Task
protected function handleOrderNotice(OrderModel $order) protected function handleOrderNotice(OrderModel $order)
{ {
$smser = new OrderSmser(); $sms = new OrderSms();
$smser->handle($order); $sms->handle($order);
} }
protected function handleOrderRefund(OrderModel $order) protected function handleOrderRefund(OrderModel $order)

View File

@ -5,7 +5,7 @@ namespace App\Console\Tasks;
use App\Models\CourseUser as CourseUserModel; use App\Models\CourseUser as CourseUserModel;
use App\Repos\Chapter as ChapterRepo; use App\Repos\Chapter as ChapterRepo;
use App\Services\LiveNotify as LiveNotifyService; use App\Services\LiveNotify as LiveNotifyService;
use App\Services\Smser\Live as LiveSmser; use App\Services\Sms\Live as LiveSms;
class LiveNotifyTask extends Task class LiveNotifyTask extends Task
{ {
@ -53,10 +53,10 @@ class LiveNotifyTask extends Task
if (!$targetUserIds) return; if (!$targetUserIds) return;
$smser = new LiveSmser(); $sms = new LiveSms();
foreach ($targetUserIds as $userId) { foreach ($targetUserIds as $userId) {
$smser->handle($chapterId, $userId, $chapterLive->start_time); $sms->handle($chapterId, $userId, $chapterLive->start_time);
} }
} }

View File

@ -13,7 +13,7 @@ use App\Repos\Trade as TradeRepo;
use App\Repos\User as UserRepo; use App\Repos\User as UserRepo;
use App\Services\Pay\Alipay as AlipayService; use App\Services\Pay\Alipay as AlipayService;
use App\Services\Pay\Wxpay as WxpayService; use App\Services\Pay\Wxpay as WxpayService;
use App\Services\Smser\Refund as RefundSmser; use App\Services\Sms\Refund as RefundSms;
use Phalcon\Mvc\Model\Resultset; use Phalcon\Mvc\Model\Resultset;
use Phalcon\Mvc\Model\ResultsetInterface; use Phalcon\Mvc\Model\ResultsetInterface;
@ -283,9 +283,9 @@ class RefundTask extends Task
*/ */
protected function handleRefundNotice(RefundModel $refund) protected function handleRefundNotice(RefundModel $refund)
{ {
$smser = new RefundSmser(); $sms = new RefundSms();
$smser->handle($refund); $sms->handle($refund);
} }
/** /**

View File

@ -49,7 +49,7 @@ class SiteMapTask extends Task
{ {
$service = new AppService(); $service = new AppService();
$settings = $service->getSectionSettings('site'); $settings = $service->getSettings('site');
return $settings['url'] ?? ''; return $settings['url'] ?? '';
} }

View File

@ -5,7 +5,7 @@ namespace App\Console\Tasks;
use App\Repos\Course as CourseRepo; use App\Repos\Course as CourseRepo;
use App\Services\Search\CourseDocument; use App\Services\Search\CourseDocument;
use App\Services\Search\CourseSearcher; use App\Services\Search\CourseSearcher;
use App\Services\Syncer\CourseIndex as CourseIndexSyncer; use App\Services\Sync\CourseIndex as CourseIndexSync;
class SyncCourseIndexTask extends Task class SyncCourseIndexTask extends Task
{ {
@ -54,9 +54,9 @@ class SyncCourseIndexTask extends Task
protected function getSyncKey() protected function getSyncKey()
{ {
$syncer = new CourseIndexSyncer(); $sync = new CourseIndexSync();
return $syncer->getSyncKey(); return $sync->getSyncKey();
} }
} }

View File

@ -5,7 +5,7 @@ namespace App\Console\Tasks;
use App\Repos\ImGroup as GroupRepo; use App\Repos\ImGroup as GroupRepo;
use App\Services\Search\GroupDocument; use App\Services\Search\GroupDocument;
use App\Services\Search\GroupSearcher; use App\Services\Search\GroupSearcher;
use App\Services\Syncer\GroupIndex as GroupIndexSyncer; use App\Services\Sync\GroupIndex as GroupIndexSync;
class SyncGroupIndexTask extends Task class SyncGroupIndexTask extends Task
{ {
@ -54,9 +54,9 @@ class SyncGroupIndexTask extends Task
protected function getSyncKey() protected function getSyncKey()
{ {
$syncer = new GroupIndexSyncer(); $sync = new GroupIndexSync();
return $syncer->getSyncKey(); return $sync->getSyncKey();
} }
} }

View File

@ -9,7 +9,7 @@ use App\Repos\ChapterUser as ChapterUserRepo;
use App\Repos\Course as CourseRepo; use App\Repos\Course as CourseRepo;
use App\Repos\CourseUser as CourseUserRepo; use App\Repos\CourseUser as CourseUserRepo;
use App\Repos\Learning as LearningRepo; use App\Repos\Learning as LearningRepo;
use App\Services\Syncer\Learning as LearningSyncer; use App\Services\Sync\Learning as LearningSync;
class SyncLearningTask extends Task class SyncLearningTask extends Task
{ {
@ -20,9 +20,9 @@ class SyncLearningTask extends Task
$redis = $this->getRedis(); $redis = $this->getRedis();
$syncer = new LearningSyncer(); $sync = new LearningSync();
$syncKey = $syncer->getSyncKey(); $syncKey = $sync->getSyncKey();
$requestIds = $redis->sMembers($syncKey); $requestIds = $redis->sMembers($syncKey);
@ -30,7 +30,7 @@ class SyncLearningTask extends Task
foreach ($requestIds as $requestId) { foreach ($requestIds as $requestId) {
$itemKey = $syncer->getItemKey($requestId); $itemKey = $sync->getItemKey($requestId);
$this->handleLearning($itemKey); $this->handleLearning($itemKey);

View File

@ -5,7 +5,7 @@ namespace App\Console\Tasks;
use App\Repos\User as UserRepo; use App\Repos\User as UserRepo;
use App\Services\Search\UserDocument; use App\Services\Search\UserDocument;
use App\Services\Search\UserSearcher; use App\Services\Search\UserSearcher;
use App\Services\Syncer\UserIndex as UserIndexSyncer; use App\Services\Sync\UserIndex as UserIndexSync;
class SyncUserIndexTask extends Task class SyncUserIndexTask extends Task
{ {
@ -54,9 +54,9 @@ class SyncUserIndexTask extends Task
protected function getSyncKey() protected function getSyncKey()
{ {
$syncer = new UserIndexSyncer(); $sync = new UserIndexSync();
return $syncer->getSyncKey(); return $sync->getSyncKey();
} }
} }

View File

@ -44,15 +44,15 @@ class ChapterController extends Controller
$course = $courseService->getCourse($courseId); $course = $courseService->getCourse($courseId);
$chapters = $courseService->getChapters($courseId); $chapters = $courseService->getChapters($courseId);
$this->view->pick('chapter/add_chapter');
if ($type == 'lesson') {
$this->view->pick('chapter/add_lesson');
}
$this->view->setVar('course', $course); $this->view->setVar('course', $course);
$this->view->setVar('parent_id', $parentId); $this->view->setVar('parent_id', $parentId);
$this->view->setVar('chapters', $chapters); $this->view->setVar('chapters', $chapters);
if ($type == 'chapter') {
$this->view->pick('chapter/add_chapter');
} else {
$this->view->pick('chapter/add_lesson');
}
} }
/** /**
@ -89,11 +89,12 @@ class ChapterController extends Controller
$chapter = $chapterService->getChapter($id); $chapter = $chapterService->getChapter($id);
$course = $courseService->getCourse($chapter->course_id); $course = $courseService->getCourse($chapter->course_id);
$this->view->setVar('chapter', $chapter); $this->view->pick('chapter/edit_chapter');
$this->view->setVar('course', $course);
if ($chapter->parent_id > 0) { if ($chapter->parent_id > 0) {
$this->view->pick('chapter/edit_lesson');
switch ($course->model) { switch ($course->model) {
case CourseModel::MODEL_VOD: case CourseModel::MODEL_VOD:
$vod = $contentService->getChapterVod($chapter->id); $vod = $contentService->getChapterVod($chapter->id);
@ -110,12 +111,10 @@ class ChapterController extends Controller
$this->view->setVar('read', $read); $this->view->setVar('read', $read);
break; break;
} }
$this->view->pick('chapter/edit_lesson');
} else {
$this->view->pick('chapter/edit_chapter');
} }
$this->view->setVar('chapter', $chapter);
$this->view->setVar('course', $course);
} }
/** /**

View File

@ -48,7 +48,7 @@ class SessionController extends \Phalcon\Mvc\Controller
$settingService = new SettingService(); $settingService = new SettingService();
$captcha = $settingService->getSectionSettings('captcha'); $captcha = $settingService->getSettings('captcha');
$this->view->pick('public/login'); $this->view->pick('public/login');
$this->view->setVar('app_info', $appInfo); $this->view->setVar('app_info', $appInfo);

View File

@ -29,7 +29,7 @@ class SettingController extends Controller
} else { } else {
$site = $settingService->getSectionSettings($section); $site = $settingService->getSettings($section);
$site['url'] = $site['url'] ?: kg_site_url(); $site['url'] = $site['url'] ?: kg_site_url();
@ -56,7 +56,7 @@ class SettingController extends Controller
} else { } else {
$secret = $settingService->getSectionSettings($section); $secret = $settingService->getSettings($section);
$this->view->setVar('secret', $secret); $this->view->setVar('secret', $secret);
} }
@ -81,7 +81,7 @@ class SettingController extends Controller
} else { } else {
$cos = $settingService->getSectionSettings($section); $cos = $settingService->getSettings($section);
$this->view->setVar('cos', $cos); $this->view->setVar('cos', $cos);
} }
@ -106,7 +106,7 @@ class SettingController extends Controller
} else { } else {
$vod = $settingService->getSectionSettings($section); $vod = $settingService->getSettings($section);
$this->view->setVar('vod', $vod); $this->view->setVar('vod', $vod);
} }
@ -169,11 +169,11 @@ class SettingController extends Controller
} }
/** /**
* @Route("/smser", name="admin.setting.smser") * @Route("/sms", name="admin.setting.sms")
*/ */
public function smserAction() public function smsAction()
{ {
$section = 'smser'; $section = 'sms';
$settingService = new SettingService(); $settingService = new SettingService();
@ -181,24 +181,24 @@ class SettingController extends Controller
$data = $this->request->getPost(); $data = $this->request->getPost();
$settingService->updateSmserSettings($section, $data); $settingService->updateSmsSettings($section, $data);
return $this->jsonSuccess(['msg' => '更新配置成功']); return $this->jsonSuccess(['msg' => '更新配置成功']);
} else { } else {
$smser = $settingService->getSectionSettings($section); $sms = $settingService->getSettings($section);
$this->view->setVar('smser', $smser); $this->view->setVar('sms', $sms);
} }
} }
/** /**
* @Route("/mailer", name="admin.setting.mailer") * @Route("/mail", name="admin.setting.mail")
*/ */
public function mailerAction() public function mailAction()
{ {
$section = 'mailer'; $section = 'mail';
$settingService = new SettingService(); $settingService = new SettingService();
@ -212,9 +212,9 @@ class SettingController extends Controller
} else { } else {
$mailer = $settingService->getSectionSettings($section); $mail = $settingService->getSettings($section);
$this->view->setVar('mailer', $mailer); $this->view->setVar('mail', $mail);
} }
} }
@ -242,7 +242,7 @@ class SettingController extends Controller
} else { } else {
$captcha = $settingService->getSectionSettings($section); $captcha = $settingService->getSettings($section);
$this->view->setVar('captcha', $captcha); $this->view->setVar('captcha', $captcha);
} }
@ -290,8 +290,8 @@ class SettingController extends Controller
} else { } else {
$main = $settingService->getSectionSettings('im.main'); $main = $settingService->getSettings('im.main');
$cs = $settingService->getSectionSettings('im.cs'); $cs = $settingService->getSettings('im.cs');
$this->view->setVar('main', $main); $this->view->setVar('main', $main);
$this->view->setVar('cs', $cs); $this->view->setVar('cs', $cs);

View File

@ -2,28 +2,28 @@
namespace App\Http\Admin\Controllers; namespace App\Http\Admin\Controllers;
use App\Http\Admin\Services\Carousel as CarouselService; use App\Http\Admin\Services\Slide as SlideService;
/** /**
* @RoutePrefix("/admin/carousel") * @RoutePrefix("/admin/slide")
*/ */
class CarouselController extends Controller class SlideController extends Controller
{ {
/** /**
* @Get("/list", name="admin.carousel.list") * @Get("/list", name="admin.slide.list")
*/ */
public function listAction() public function listAction()
{ {
$carouselService = new CarouselService(); $slideService = new SlideService();
$pager = $carouselService->getCarousels(); $pager = $slideService->getSlides();
$this->view->setVar('pager', $pager); $this->view->setVar('pager', $pager);
} }
/** /**
* @Get("/add", name="admin.carousel.add") * @Get("/add", name="admin.slide.add")
*/ */
public function addAction() public function addAction()
{ {
@ -31,17 +31,17 @@ class CarouselController extends Controller
} }
/** /**
* @Post("/create", name="admin.carousel.create") * @Post("/create", name="admin.slide.create")
*/ */
public function createAction() public function createAction()
{ {
$carouselService = new CarouselService(); $slideService = new SlideService();
$carousel = $carouselService->createCarousel(); $slide = $slideService->createSlide();
$location = $this->url->get([ $location = $this->url->get([
'for' => 'admin.carousel.edit', 'for' => 'admin.slide.edit',
'id' => $carousel->id, 'id' => $slide->id,
]); ]);
$content = [ $content = [
@ -53,27 +53,27 @@ class CarouselController extends Controller
} }
/** /**
* @Get("/{id:[0-9]+}/edit", name="admin.carousel.edit") * @Get("/{id:[0-9]+}/edit", name="admin.slide.edit")
*/ */
public function editAction($id) public function editAction($id)
{ {
$carouselService = new CarouselService(); $slideService = new SlideService();
$carousel = $carouselService->getCarousel($id); $slide = $slideService->getSlide($id);
$this->view->setVar('carousel', $carousel); $this->view->setVar('slide', $slide);
} }
/** /**
* @Post("/{id:[0-9]+}/update", name="admin.carousel.update") * @Post("/{id:[0-9]+}/update", name="admin.slide.update")
*/ */
public function updateAction($id) public function updateAction($id)
{ {
$carouselService = new CarouselService(); $slideService = new SlideService();
$carouselService->updateCarousel($id); $slideService->updateSlide($id);
$location = $this->url->get(['for' => 'admin.carousel.list']); $location = $this->url->get(['for' => 'admin.slide.list']);
$content = [ $content = [
'location' => $location, 'location' => $location,
@ -84,13 +84,13 @@ class CarouselController extends Controller
} }
/** /**
* @Post("/{id:[0-9]+}/delete", name="admin.carousel.delete") * @Post("/{id:[0-9]+}/delete", name="admin.slide.delete")
*/ */
public function deleteAction($id) public function deleteAction($id)
{ {
$carouselService = new CarouselService(); $slideService = new SlideService();
$carouselService->deleteCarousel($id); $slideService->deleteSlide($id);
$location = $this->request->getHTTPReferer(); $location = $this->request->getHTTPReferer();
@ -103,13 +103,13 @@ class CarouselController extends Controller
} }
/** /**
* @Post("/{id:[0-9]+}/restore", name="admin.carousel.restore") * @Post("/{id:[0-9]+}/restore", name="admin.slide.restore")
*/ */
public function restoreAction($id) public function restoreAction($id)
{ {
$carouselService = new CarouselService(); $slideService = new SlideService();
$carouselService->restoreCarousel($id); $slideService->restoreSlide($id);
$location = $this->request->getHTTPReferer(); $location = $this->request->getHTTPReferer();

View File

@ -7,9 +7,9 @@ use App\Http\Admin\Services\Setting as SettingService;
use App\Http\Admin\Services\WxpayTest as WxpayTestService; use App\Http\Admin\Services\WxpayTest as WxpayTestService;
use App\Services\Captcha as CaptchaService; use App\Services\Captcha as CaptchaService;
use App\Services\Live as LiveService; use App\Services\Live as LiveService;
use App\Services\Mailer\Test as TestMailerService; use App\Services\Mail\Test as TestMailService;
use App\Services\MyStorage as StorageService; use App\Services\MyStorage as StorageService;
use App\Services\Smser\Test as TestSmserService; use App\Services\Sms\Test as TestSmsService;
use App\Services\Vod as VodService; use App\Services\Vod as VodService;
/** /**
@ -66,7 +66,7 @@ class TestController extends Controller
$pushUrl = $liveService->getPushUrl($streamName); $pushUrl = $liveService->getPushUrl($streamName);
$qrcode = $this->url->get( $qrcode = $this->url->get(
['for' => 'desktop.qrcode'], ['for' => 'home.qrcode'],
['text' => urlencode($pushUrl)] ['text' => urlencode($pushUrl)]
); );
@ -96,15 +96,15 @@ class TestController extends Controller
} }
/** /**
* @Post("/smser", name="admin.test.smser") * @Post("/sms", name="admin.test.sms")
*/ */
public function smserAction() public function smsAction()
{ {
$phone = $this->request->getPost('phone', 'string'); $phone = $this->request->getPost('phone', 'string');
$smserService = new TestSmserService(); $smsService = new TestSmsService();
$response = $smserService->handle($phone); $response = $smsService->handle($phone);
if ($response) { if ($response) {
return $this->jsonSuccess(['msg' => '发送短信成功,请到收件箱确认']); return $this->jsonSuccess(['msg' => '发送短信成功,请到收件箱确认']);
@ -114,15 +114,15 @@ class TestController extends Controller
} }
/** /**
* @Post("/mailer", name="admin.test.mailer") * @Post("/mail", name="admin.test.mail")
*/ */
public function mailerAction() public function mailAction()
{ {
$email = $this->request->getPost('email', 'string'); $email = $this->request->getPost('email', 'string');
$mailerService = new TestMailerService(); $mailService = new TestMailService();
$result = $mailerService->handle($email); $result = $mailService->handle($email);
if ($result) { if ($result) {
return $this->jsonSuccess(['msg' => '发送邮件成功,请到收件箱确认']); return $this->jsonSuccess(['msg' => '发送邮件成功,请到收件箱确认']);

View File

@ -53,13 +53,13 @@ class UploadController extends Controller
} }
/** /**
* @Post("/editor/img", name="admin.upload.editor_img") * @Post("/content/img", name="admin.upload.content_img")
*/ */
public function uploadEditorImageAction() public function uploadContentImageAction()
{ {
$service = new StorageService(); $service = new StorageService();
$file = $service->uploadEditorImage(); $file = $service->uploadContentImage();
if ($file) { if ($file) {
return $this->jsonSuccess([ return $this->jsonSuccess([

View File

@ -3,7 +3,6 @@
namespace App\Http\Admin\Controllers; namespace App\Http\Admin\Controllers;
use App\Services\Vod as VodService; use App\Services\Vod as VodService;
use Phalcon\Mvc\View;
/** /**
* @RoutePrefix("/admin/vod") * @RoutePrefix("/admin/vod")
@ -31,10 +30,9 @@ class VodController extends Controller
$chapterId = $this->request->getQuery('chapter_id', 'int'); $chapterId = $this->request->getQuery('chapter_id', 'int');
$playUrl = $this->request->getQuery('play_url', 'string'); $playUrl = $this->request->getQuery('play_url', 'string');
$this->view->setRenderLevel(View::LEVEL_ACTION_VIEW);
$this->view->pick('public/vod_player'); $this->view->pick('public/vod_player');
$this->view->setVar('chapter_id', $chapterId); $this->view->setVar('chapter_id', $chapterId);
$this->view->setVar('play_url', urldecode($playUrl)); $this->view->setVar('play_url', $playUrl);
} }
} }

View File

@ -20,7 +20,7 @@ class AlipayTest extends PayTest
if ($code) { if ($code) {
$codeUrl = $this->url->get( $codeUrl = $this->url->get(
['for' => 'desktop.qrcode'], ['for' => 'home.qrcode'],
['text' => urlencode($code)] ['text' => urlencode($code)]
); );
} }

View File

@ -385,25 +385,25 @@ class AuthNode extends Service
'id' => '2-5-1', 'id' => '2-5-1',
'title' => '轮播列表', 'title' => '轮播列表',
'type' => 'menu', 'type' => 'menu',
'route' => 'admin.carousel.list', 'route' => 'admin.slide.list',
], ],
[ [
'id' => '2-5-2', 'id' => '2-5-2',
'title' => '添加轮播', 'title' => '添加轮播',
'type' => 'menu', 'type' => 'menu',
'route' => 'admin.carousel.add', 'route' => 'admin.slide.add',
], ],
[ [
'id' => '2-5-3', 'id' => '2-5-3',
'title' => '编辑轮播', 'title' => '编辑轮播',
'type' => 'button', 'type' => 'button',
'route' => 'admin.carousel.edit', 'route' => 'admin.slide.edit',
], ],
[ [
'id' => '2-5-4', 'id' => '2-5-4',
'title' => '删除轮播', 'title' => '删除轮播',
'type' => 'button', 'type' => 'button',
'route' => 'admin.carousel.delete', 'route' => 'admin.slide.delete',
], ],
], ],
], ],
@ -675,13 +675,13 @@ class AuthNode extends Service
'id' => '5-1-6', 'id' => '5-1-6',
'title' => '短信设置', 'title' => '短信设置',
'type' => 'menu', 'type' => 'menu',
'route' => 'admin.setting.smser', 'route' => 'admin.setting.sms',
], ],
[ [
'id' => '5-1-7', 'id' => '5-1-7',
'title' => '邮件设置', 'title' => '邮件设置',
'type' => 'menu', 'type' => 'menu',
'route' => 'admin.setting.mailer', 'route' => 'admin.setting.mail',
], ],
[ [
'id' => '5-1-8', 'id' => '5-1-8',

View File

@ -3,7 +3,7 @@
namespace App\Http\Admin\Services; namespace App\Http\Admin\Services;
use App\Caches\Chapter as ChapterCache; use App\Caches\Chapter as ChapterCache;
use App\Caches\CourseChapterList as CourseCatalogCache; use App\Caches\CourseChapterList as CatalogCache;
use App\Models\Chapter as ChapterModel; use App\Models\Chapter as ChapterModel;
use App\Models\ChapterLive as ChapterLiveModel; use App\Models\ChapterLive as ChapterLiveModel;
use App\Models\ChapterRead as ChapterReadModel; use App\Models\ChapterRead as ChapterReadModel;
@ -249,7 +249,7 @@ class Chapter extends Service
protected function rebuildCatalogCache(ChapterModel $chapter) protected function rebuildCatalogCache(ChapterModel $chapter)
{ {
$cache = new CourseCatalogCache(); $cache = new CatalogCache();
$cache->rebuild($chapter->course_id); $cache->rebuild($chapter->course_id);
} }

View File

@ -2,6 +2,7 @@
namespace App\Http\Admin\Services; namespace App\Http\Admin\Services;
use App\Caches\CourseChapterList as CatalogCache;
use App\Library\Utils\Word as WordUtil; use App\Library\Utils\Word as WordUtil;
use App\Models\Chapter as ChapterModel; use App\Models\Chapter as ChapterModel;
use App\Models\Course as CourseModel; use App\Models\Course as CourseModel;
@ -63,6 +64,8 @@ class ChapterContent extends Service
$this->updateChapterRead($chapter); $this->updateChapterRead($chapter);
break; break;
} }
$this->rebuildCatalogCache($chapter);
} }
protected function updateChapterVod(ChapterModel $chapter) protected function updateChapterVod(ChapterModel $chapter)
@ -166,4 +169,11 @@ class ChapterContent extends Service
$courseStats->updateReadAttrs($chapter->course_id); $courseStats->updateReadAttrs($chapter->course_id);
} }
protected function rebuildCatalogCache(ChapterModel $chapter)
{
$cache = new CatalogCache();
$cache->rebuild($chapter->course_id);
}
} }

View File

@ -21,7 +21,7 @@ use App\Repos\CourseCategory as CourseCategoryRepo;
use App\Repos\CourseRelated as CourseRelatedRepo; use App\Repos\CourseRelated as CourseRelatedRepo;
use App\Repos\CourseUser as CourseUserRepo; use App\Repos\CourseUser as CourseUserRepo;
use App\Repos\User as UserRepo; use App\Repos\User as UserRepo;
use App\Services\Syncer\CourseIndex as CourseIndexSyncer; use App\Services\Sync\CourseIndex as CourseIndexSync;
use App\Validators\Course as CourseValidator; use App\Validators\Course as CourseValidator;
class Course extends Service class Course extends Service
@ -363,9 +363,9 @@ class Course extends Service
protected function rebuildCourseIndex(CourseModel $course) protected function rebuildCourseIndex(CourseModel $course)
{ {
$syncer = new CourseIndexSyncer(); $sync = new CourseIndexSync();
$syncer->addItem($course->id); $sync->addItem($course->id);
} }
protected function saveTeachers(CourseModel $course, $teacherIds) protected function saveTeachers(CourseModel $course, $teacherIds)

View File

@ -24,7 +24,7 @@ class Session extends Service
$currentUser = $this->getCurrentUser(); $currentUser = $this->getCurrentUser();
if ($currentUser->id > 0) { if ($currentUser->id > 0) {
$this->response->redirect(['for' => 'desktop.index']); $this->response->redirect(['for' => 'home.index']);
} }
$post = $this->request->getPost(); $post = $this->request->getPost();
@ -33,7 +33,7 @@ class Session extends Service
$user = $accountValidator->checkAdminLogin($post['account'], $post['password']); $user = $accountValidator->checkAdminLogin($post['account'], $post['password']);
$captchaSettings = $this->getSectionSettings('captcha'); $captchaSettings = $this->getSettings('captcha');
/** /**
* 验证码是一次性的,放到最后检查,减少第三方调用 * 验证码是一次性的,放到最后检查,减少第三方调用

View File

@ -11,18 +11,18 @@ class Setting extends Service
public function getAlipaySettings() public function getAlipaySettings()
{ {
$alipay = $this->getSectionSettings('pay.alipay'); $alipay = $this->getSettings('pay.alipay');
$alipay['notify_url'] = $alipay['notify_url'] ?: kg_full_url(['for' => 'desktop.alipay_notify']); $alipay['notify_url'] = $alipay['notify_url'] ?: kg_full_url(['for' => 'home.alipay_notify']);
return $alipay; return $alipay;
} }
public function getWxpaySettings() public function getWxpaySettings()
{ {
$wxpay = $this->getSectionSettings('pay.wxpay'); $wxpay = $this->getSettings('pay.wxpay');
$wxpay['notify_url'] = $wxpay['notify_url'] ?: kg_full_url(['for' => 'desktop.wxpay_notify']); $wxpay['notify_url'] = $wxpay['notify_url'] ?: kg_full_url(['for' => 'home.wxpay_notify']);
return $wxpay; return $wxpay;
} }
@ -36,20 +36,20 @@ class Setting extends Service
public function getLiveSettings($section) public function getLiveSettings($section)
{ {
$result = $this->getSectionSettings($section); $result = $this->getSettings($section);
if ($section == 'live.notify') { if ($section == 'live.notify') {
$result['stream_begin_url'] = $result['stream_begin_url'] ?: kg_full_url(['for' => 'desktop.live_notify'], ['action' => 'streamBegin']); $result['stream_begin_url'] = $result['stream_begin_url'] ?: kg_full_url(['for' => 'home.live_notify'], ['action' => 'streamBegin']);
$result['stream_end_url'] = $result['stream_end_url'] ?: kg_full_url(['for' => 'desktop.live_notify'], ['action' => 'streamEnd']); $result['stream_end_url'] = $result['stream_end_url'] ?: kg_full_url(['for' => 'home.live_notify'], ['action' => 'streamEnd']);
$result['record_url'] = $result['record_url'] ?: kg_full_url(['for' => 'desktop.live_notify'], ['action' => 'record']); $result['record_url'] = $result['record_url'] ?: kg_full_url(['for' => 'home.live_notify'], ['action' => 'record']);
$result['snapshot_url'] = $result['snapshot_url'] ?: kg_full_url(['for' => 'desktop.live_notify'], ['action' => 'snapshot']); $result['snapshot_url'] = $result['snapshot_url'] ?: kg_full_url(['for' => 'home.live_notify'], ['action' => 'snapshot']);
$result['porn_url'] = $result['porn_url'] ?: kg_full_url(['for' => 'desktop.live_notify'], ['action' => 'porn']); $result['porn_url'] = $result['porn_url'] ?: kg_full_url(['for' => 'home.live_notify'], ['action' => 'porn']);
} }
return $result; return $result;
} }
public function getSectionSettings($section) public function getSettings($section)
{ {
$settingsRepo = new SettingRepo(); $settingsRepo = new SettingRepo();
@ -112,7 +112,7 @@ class Setting extends Service
$this->updateSectionSettings($section, $settings); $this->updateSectionSettings($section, $settings);
} }
public function updateSmserSettings($section, $settings) public function updateSmsSettings($section, $settings)
{ {
$settings['template'] = kg_json_encode($settings['template']); $settings['template'] = kg_json_encode($settings['template']);

View File

@ -2,16 +2,16 @@
namespace App\Http\Admin\Services; namespace App\Http\Admin\Services;
use App\Caches\IndexCarouselList as IndexCarouselListCache; use App\Caches\IndexSlideList as IndexSlideListCache;
use App\Library\Paginator\Query as PagerQuery; use App\Library\Paginator\Query as PagerQuery;
use App\Models\Carousel as CarouselModel; use App\Models\Slide as SlideModel;
use App\Repos\Carousel as CarouselRepo; use App\Repos\Slide as SlideRepo;
use App\Validators\Carousel as CarouselValidator; use App\Validators\Slide as SlideValidator;
class Carousel extends Service class Slide extends Service
{ {
public function getCarousels() public function getSlides()
{ {
$pagerQuery = new PagerQuery(); $pagerQuery = new PagerQuery();
@ -23,55 +23,55 @@ class Carousel extends Service
$page = $pagerQuery->getPage(); $page = $pagerQuery->getPage();
$limit = $pagerQuery->getLimit(); $limit = $pagerQuery->getLimit();
$carouselRepo = new CarouselRepo(); $slideRepo = new SlideRepo();
return $carouselRepo->paginate($params, $sort, $page, $limit); return $slideRepo->paginate($params, $sort, $page, $limit);
} }
public function getCarousel($id) public function getSlide($id)
{ {
return $this->findOrFail($id); return $this->findOrFail($id);
} }
public function createCarousel() public function createSlide()
{ {
$post = $this->request->getPost(); $post = $this->request->getPost();
$validator = new CarouselValidator(); $validator = new SlideValidator();
$data['title'] = $validator->checkTitle($post['title']); $data['title'] = $validator->checkTitle($post['title']);
$data['target'] = $validator->checkTarget($post['target']); $data['target'] = $validator->checkTarget($post['target']);
if ($post['target'] == CarouselModel::TARGET_COURSE) { if ($post['target'] == SlideModel::TARGET_COURSE) {
$course = $validator->checkCourse($post['content']); $course = $validator->checkCourse($post['content']);
$data['content'] = $course->id; $data['content'] = $course->id;
$data['cover'] = $course->cover; $data['cover'] = $course->cover;
$data['summary'] = $course->summary; $data['summary'] = $course->summary;
} elseif ($post['target'] == CarouselModel::TARGET_PAGE) { } elseif ($post['target'] == SlideModel::TARGET_PAGE) {
$page = $validator->checkPage($post['content']); $page = $validator->checkPage($post['content']);
$data['content'] = $page->id; $data['content'] = $page->id;
} elseif ($post['target'] == CarouselModel::TARGET_LINK) { } elseif ($post['target'] == SlideModel::TARGET_LINK) {
$data['content'] = $validator->checkLink($post['content']); $data['content'] = $validator->checkLink($post['content']);
} }
$data['priority'] = 20; $data['priority'] = 20;
$carousel = new CarouselModel(); $slide = new SlideModel();
$carousel->create($data); $slide->create($data);
$this->rebuildCarouselCache(); $this->rebuildSlideCache();
return $carousel; return $slide;
} }
public function updateCarousel($id) public function updateSlide($id)
{ {
$carousel = $this->findOrFail($id); $slide = $this->findOrFail($id);
$post = $this->request->getPost(); $post = $this->request->getPost();
$validator = new CarouselValidator(); $validator = new SlideValidator();
$data = []; $data = [];
@ -87,18 +87,14 @@ class Carousel extends Service
$data['cover'] = $validator->checkCover($post['cover']); $data['cover'] = $validator->checkCover($post['cover']);
} }
if (isset($post['style']['bg_color'])) {
$data['style']['bg_color'] = $validator->checkBgColor($post['style']['bg_color']);
}
if (isset($post['content'])) { if (isset($post['content'])) {
if ($carousel->target == CarouselModel::TARGET_COURSE) { if ($slide->target == SlideModel::TARGET_COURSE) {
$course = $validator->checkCourse($post['content']); $course = $validator->checkCourse($post['content']);
$data['content'] = $course->id; $data['content'] = $course->id;
} elseif ($carousel->target == CarouselModel::TARGET_PAGE) { } elseif ($slide->target == SlideModel::TARGET_PAGE) {
$page = $validator->checkPage($post['content']); $page = $validator->checkPage($post['content']);
$data['content'] = $page->id; $data['content'] = $page->id;
} elseif ($carousel->target == CarouselModel::TARGET_LINK) { } elseif ($slide->target == SlideModel::TARGET_LINK) {
$data['content'] = $validator->checkLink($post['content']); $data['content'] = $validator->checkLink($post['content']);
} }
} }
@ -111,51 +107,51 @@ class Carousel extends Service
$data['published'] = $validator->checkPublishStatus($post['published']); $data['published'] = $validator->checkPublishStatus($post['published']);
} }
$carousel->update($data); $slide->update($data);
$this->rebuildCarouselCache(); $this->rebuildSlideCache();
return $carousel; return $slide;
} }
public function deleteCarousel($id) public function deleteSlide($id)
{ {
$carousel = $this->findOrFail($id); $slide = $this->findOrFail($id);
$carousel->deleted = 1; $slide->deleted = 1;
$carousel->update(); $slide->update();
$this->rebuildCarouselCache(); $this->rebuildSlideCache();
return $carousel; return $slide;
} }
public function restoreCarousel($id) public function restoreSlide($id)
{ {
$carousel = $this->findOrFail($id); $slide = $this->findOrFail($id);
$carousel->deleted = 0; $slide->deleted = 0;
$carousel->update(); $slide->update();
$this->rebuildCarouselCache(); $this->rebuildSlideCache();
return $carousel; return $slide;
} }
protected function rebuildCarouselCache() protected function rebuildSlideCache()
{ {
$cache = new IndexCarouselListCache(); $cache = new IndexSlideListCache();
$cache->rebuild(); $cache->rebuild();
} }
protected function findOrFail($id) protected function findOrFail($id)
{ {
$validator = new CarouselValidator(); $validator = new SlideValidator();
return $validator->checkCarousel($id); return $validator->checkSlide($id);
} }
} }

View File

@ -2,7 +2,7 @@
{% block content %} {% block content %}
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.carousel.create'}) }}"> <form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.slide.create'}) }}">
<fieldset class="layui-elem-field layui-field-title"> <fieldset class="layui-elem-field layui-field-title">
<legend>添加轮播</legend> <legend>添加轮播</legend>
</fieldset> </fieldset>
@ -15,9 +15,9 @@
<div class="layui-form-item"> <div class="layui-form-item">
<label class="layui-form-label">目标类型</label> <label class="layui-form-label">目标类型</label>
<div class="layui-input-block"> <div class="layui-input-block">
<input type="radio" name="target" value="course" title="课程" lay-filter="target" checked="checked"> <input type="radio" name="target" value="1" title="课程" lay-filter="target" checked="checked">
<input type="radio" name="target" value="page" title="单页" lay-filter="target"> <input type="radio" name="target" value="2" title="单页" lay-filter="target">
<input type="radio" name="target" value="link" title="链接" lay-filter="target"> <input type="radio" name="target" value="3" title="链接" lay-filter="target">
</div> </div>
</div> </div>
<div class="layui-form-item"> <div class="layui-form-item">

View File

@ -3,67 +3,58 @@
{% block content %} {% block content %}
{%- macro content_label(target) %} {%- macro content_label(target) %}
{% if target == 'course' %} {% if target == 1 %}
课程编号 课程编号
{% elseif target == 'page' %} {% elseif target == 2 %}
单页编号 单页编号
{% elseif target == 'link' %} {% elseif target == 3 %}
链接地址 链接地址
{% endif %} {% endif %}
{%- endmacro %} {%- endmacro %}
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.carousel.update','id':carousel.id}) }}"> <form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.slide.update','id':slide.id}) }}">
<fieldset class="layui-elem-field layui-field-title"> <fieldset class="layui-elem-field layui-field-title">
<legend>编辑轮播</legend> <legend>编辑轮播</legend>
</fieldset> </fieldset>
<div class="layui-form-item"> <div class="layui-form-item">
<label class="layui-form-label">封面</label> <label class="layui-form-label">封面</label>
<div class="layui-input-inline"> <div class="layui-input-inline">
<img id="img-cover" class="kg-cover" src="{{ carousel.cover }}"> <img id="img-cover" class="kg-cover" src="{{ slide.cover }}">
<input type="hidden" name="cover" value="{{ carousel.cover }}"> <input type="hidden" name="cover" value="{{ slide.cover }}">
</div> </div>
<div class="layui-input-inline" style="padding-top:35px;"> <div class="layui-input-inline" style="padding-top:35px;">
<button id="change-cover" class="layui-btn layui-btn-sm" type="button">更换</button> <button id="change-cover" class="layui-btn layui-btn-sm" type="button">更换</button>
</div> </div>
</div> </div>
<div class="layui-form-item">
<label class="layui-form-label">背景色</label>
<div class="layui-input-inline">
<input class="layui-input" type="text" name="style[bg_color]" value="{{ carousel.style['bg_color'] }}" lay-verify="required">
</div>
<div class="layui-inline">
<div id="style-bg-color"></div>
</div>
</div>
<div class="layui-form-item"> <div class="layui-form-item">
<label class="layui-form-label">标题</label> <label class="layui-form-label">标题</label>
<div class="layui-input-block"> <div class="layui-input-block">
<input class="layui-input" type="text" name="title" value="{{ carousel.title }}" lay-verify="required"> <input class="layui-input" type="text" name="title" value="{{ slide.title }}" lay-verify="required">
</div> </div>
</div> </div>
<div class="layui-form-item"> <div class="layui-form-item">
<label class="layui-form-label">概要</label> <label class="layui-form-label">概要</label>
<div class="layui-input-block"> <div class="layui-input-block">
<textarea class="layui-textarea" name="summary">{{ carousel.summary }}</textarea> <input class="layui-input" type="text" name="summary" value="{{ slide.summary }}">
</div> </div>
</div> </div>
<div class="layui-form-item"> <div class="layui-form-item">
<label class="layui-form-label">{{ content_label(carousel.target) }}</label> <label class="layui-form-label">{{ content_label(slide.target) }}</label>
<div class="layui-input-block"> <div class="layui-input-block">
<input class="layui-input" type="text" name="content" value="{{ carousel.content }}" lay-verify="required"> <input class="layui-input" type="text" name="content" value="{{ slide.content }}" lay-verify="required">
</div> </div>
</div> </div>
<div class="layui-form-item"> <div class="layui-form-item">
<label class="layui-form-label">排序</label> <label class="layui-form-label">排序</label>
<div class="layui-input-block"> <div class="layui-input-block">
<input class="layui-input" type="text" name="priority" value="{{ carousel.priority }}" lay-verify="number"> <input class="layui-input" type="text" name="priority" value="{{ slide.priority }}" lay-verify="number">
</div> </div>
</div> </div>
<div class="layui-form-item"> <div class="layui-form-item">
<label class="layui-form-label">发布</label> <label class="layui-form-label">发布</label>
<div class="layui-input-block"> <div class="layui-input-block">
<input type="radio" name="published" value="1" title="是" {% if carousel.published == 1 %}checked{% endif %}> <input type="radio" name="published" value="1" title="是" {% if slide.published == 1 %}checked="checked"{% endif %}>
<input type="radio" name="published" value="0" title="否" {% if carousel.published == 0 %}checked{% endif %}> <input type="radio" name="published" value="0" title="否" {% if slide.published == 0 %}checked="checked"{% endif %}>
</div> </div>
</div> </div>
<div class="layui-form-item"> <div class="layui-form-item">
@ -82,27 +73,3 @@
{{ js_include('admin/js/cover.upload.js') }} {{ js_include('admin/js/cover.upload.js') }}
{% endblock %} {% endblock %}
{% block inline_js %}
<script>
layui.use(['jquery', 'colorpicker'], function () {
var $ = layui.jquery;
var colorPicker = layui.colorpicker;
colorPicker.render({
elem: '#style-bg-color',
color: '{{ carousel.style['bg_color'] }}',
predefine: true,
change: function (color) {
$('input[name="style[bg_color]"]').val(color);
}
});
});
</script>
{% endblock %}

View File

@ -3,17 +3,15 @@
{% block content %} {% block content %}
{%- macro target_info(value) %} {%- macro target_info(value) %}
{% if value == 'course' %} {% if value == 1 %}
<span class="layui-badge layui-bg-green">课程</span> <span class="layui-badge layui-bg-green">课程</span>
{% elseif value == 'page' %} {% elseif value == 2 %}
<span class="layui-badge layui-bg-blue">单页</span> <span class="layui-badge layui-bg-blue">单页</span>
{% elseif value == 'link' %} {% elseif value == 3 %}
<span class="layui-badge layui-bg-orange">链接</span> <span class="layui-badge layui-bg-gray">链接</span>
{% endif %} {% endif %}
{%- endmacro %} {%- endmacro %}
{% set add_url = url({'for':'admin.carousel.add'}) %}
<div class="kg-nav"> <div class="kg-nav">
<div class="kg-nav-left"> <div class="kg-nav-left">
<span class="layui-breadcrumb"> <span class="layui-breadcrumb">
@ -43,16 +41,16 @@
</thead> </thead>
<tbody> <tbody>
{% for item in pager.items %} {% for item in pager.items %}
{% set edit_url = url({'for':'admin.carousel.edit','id':item.id}) %} {% set edit_url = url({'for':'admin.slide.edit','id':item.id}) %}
{% set update_url = url({'for':'admin.carousel.update','id':item.id}) %} {% set update_url = url({'for':'admin.slide.update','id':item.id}) %}
{% set delete_url = url({'for':'admin.carousel.delete','id':item.id}) %} {% set delete_url = url({'for':'admin.slide.delete','id':item.id}) %}
{% set restore_url = url({'for':'admin.carousel.restore','id':item.id}) %} {% set restore_url = url({'for':'admin.slide.restore','id':item.id}) %}
<tr> <tr>
<td>{{ item.id }}</td> <td>{{ item.id }}</td>
<td>{{ item.title }}</td> <td><a href="{{ edit_url }}">{{ item.title }}</a></td>
<td>{{ target_info(item.target) }}</td> <td>{{ target_info(item.target) }}</td>
<td><input class="layui-input kg-priority" type="text" name="priority" title="数值越小排序越靠前" value="{{ item.priority }}" data-url="{{ update_url }}"></td> <td><input class="layui-input kg-priority" type="text" name="priority" title="数值越小排序越靠前" value="{{ item.priority }}" data-url="{{ update_url }}"></td>
<td><input type="checkbox" name="published" value="1" lay-filter="published" lay-skin="switch" lay-text="是|否" data-url="{{ update_url }}" {% if item.published == 1 %}checked{% endif %}></td> <td><input type="checkbox" name="published" value="1" lay-filter="published" lay-skin="switch" lay-text="是|否" data-url="{{ update_url }}" {% if item.published == 1 %}checked="checked"{% endif %}></td>
<td class="center"> <td class="center">
<div class="layui-dropdown"> <div class="layui-dropdown">
<button class="layui-btn layui-btn-sm"> 操作 <i class="layui-icon layui-icon-triangle-d"></i></button> <button class="layui-btn layui-btn-sm"> 操作 <i class="layui-icon layui-icon-triangle-d"></i></button>

View File

@ -21,8 +21,8 @@
<div class="layui-form-item"> <div class="layui-form-item">
<label class="layui-form-label">发布</label> <label class="layui-form-label">发布</label>
<div class="layui-input-block"> <div class="layui-input-block">
<input type="radio" name="published" value="1" title="是" {% if category.published == 1 %}checked{% endif %}> <input type="radio" name="published" value="1" title="是" {% if category.published == 1 %}checked="checked"{% endif %}>
<input type="radio" name="published" value="0" title="否" {% if category.published == 0 %}checked{% endif %}> <input type="radio" name="published" value="0" title="否" {% if category.published == 0 %}checked="checked"{% endif %}>
</div> </div>
</div> </div>
<div class="layui-form-item"> <div class="layui-form-item">

View File

@ -61,7 +61,7 @@
<td><span class="layui-badge layui-bg-gray">{{ item.level }}</span></td> <td><span class="layui-badge layui-bg-gray">{{ item.level }}</span></td>
<td><span class="layui-badge layui-bg-gray">{{ item.child_count }}</span></td> <td><span class="layui-badge layui-bg-gray">{{ item.child_count }}</span></td>
<td><input class="layui-input kg-priority" type="text" name="priority" title="数值越小排序越靠前" value="{{ item.priority }}" data-url="{{ update_url }}"></td> <td><input class="layui-input kg-priority" type="text" name="priority" title="数值越小排序越靠前" value="{{ item.priority }}" data-url="{{ update_url }}"></td>
<td><input type="checkbox" name="published" value="1" lay-skin="switch" lay-text="是|否" lay-filter="published" data-url="{{ update_url }}" {% if item.published == 1 %}checked{% endif %}></td> <td><input type="checkbox" name="published" value="1" lay-skin="switch" lay-text="是|否" lay-filter="published" data-url="{{ update_url }}" {% if item.published == 1 %}checked="checked"{% endif %}></td>
<td class="center"> <td class="center">
<div class="layui-dropdown"> <div class="layui-dropdown">
<button class="layui-btn layui-btn-sm">操作 <i class="layui-icon layui-icon-triangle-d"></i></button> <button class="layui-btn layui-btn-sm">操作 <i class="layui-icon layui-icon-triangle-d"></i></button>

View File

@ -41,7 +41,7 @@
{% block link_css %} {% block link_css %}
{% if chapter.model == '3' %} {% if chapter.model == 3 %}
{{ css_link('https://cdn.jsdelivr.net/npm/vditor/dist/index.css', false) }} {{ css_link('https://cdn.jsdelivr.net/npm/vditor/dist/index.css', false) }}
{% endif %} {% endif %}
@ -49,12 +49,12 @@
{% block include_js %} {% block include_js %}
{% if chapter.model == '3' %} {% if chapter.model == 3 %}
{{ js_include('https://cdn.jsdelivr.net/npm/vditor/dist/index.min.js', false) }} {{ js_include('https://cdn.jsdelivr.net/npm/vditor/dist/index.min.js', false) }}
{{ js_include('admin/js/vditor.js') }} {{ js_include('admin/js/vditor.js') }}
{% elseif chapter.model == '1' %} {% elseif chapter.model == 1 %}
{{ js_include('lib/vod-js-sdk-v6.min.js') }} {{ js_include('lib/vod-js-sdk-v6.min.js') }}
{{ js_include('lib/clipboard.min.js') }} {{ js_include('lib/clipboard.min.js') }}

View File

@ -42,7 +42,7 @@
</thead> </thead>
<tbody> <tbody>
{% for item in lessons %} {% for item in lessons %}
{% set preview_url = url({'for':'desktop.chapter.show','id':item.id}) %} {% set preview_url = url({'for':'home.chapter.show','id':item.id}) %}
{% set edit_url = url({'for':'admin.chapter.edit','id':item.id}) %} {% set edit_url = url({'for':'admin.chapter.edit','id':item.id}) %}
{% set update_url = url({'for':'admin.chapter.update','id':item.id}) %} {% set update_url = url({'for':'admin.chapter.update','id':item.id}) %}
{% set delete_url = url({'for':'admin.chapter.delete','id':item.id}) %} {% set delete_url = url({'for':'admin.chapter.delete','id':item.id}) %}
@ -56,8 +56,8 @@
<td>{{ live_time_info(item.attrs) }}</td> <td>{{ live_time_info(item.attrs) }}</td>
<td>{{ live_status_info(item.attrs['stream']['status']) }}</td> <td>{{ live_status_info(item.attrs['stream']['status']) }}</td>
<td><input class="layui-input kg-priority" type="text" name="priority" title="数值越小排序越靠前" value="{{ item.priority }}" data-url="{{ update_url }}"></td> <td><input class="layui-input kg-priority" type="text" name="priority" title="数值越小排序越靠前" value="{{ item.priority }}" data-url="{{ update_url }}"></td>
<td><input type="checkbox" name="free" value="1" lay-skin="switch" lay-text="是|否" lay-filter="free" data-url="{{ update_url }}" {% if item.free == 1 %}checked{% endif %}></td> <td><input type="checkbox" name="free" value="1" lay-skin="switch" lay-text="是|否" lay-filter="free" data-url="{{ update_url }}" {% if item.free == 1 %}checked="checked"{% endif %}></td>
<td><input type="checkbox" name="published" value="1" lay-skin="switch" lay-text="是|否" lay-filter="published" data-url="{{ update_url }}" {% if item.published == 1 %}checked{% endif %}></td> <td><input type="checkbox" name="published" value="1" lay-skin="switch" lay-text="是|否" lay-filter="published" data-url="{{ update_url }}" {% if item.published == 1 %}checked="checked"{% endif %}></td>
<td class="center"> <td class="center">
<div class="layui-dropdown"> <div class="layui-dropdown">
<button class="layui-btn layui-btn-sm">操作 <i class="layui-icon layui-icon-triangle-d"></i></button> <button class="layui-btn layui-btn-sm">操作 <i class="layui-icon layui-icon-triangle-d"></i></button>

View File

@ -21,7 +21,7 @@
</thead> </thead>
<tbody> <tbody>
{% for item in lessons %} {% for item in lessons %}
{% set preview_url = url({'for':'desktop.chapter.show','id':item.id}) %} {% set preview_url = url({'for':'home.chapter.show','id':item.id}) %}
{% set edit_url = url({'for':'admin.chapter.edit','id':item.id}) %} {% set edit_url = url({'for':'admin.chapter.edit','id':item.id}) %}
{% set update_url = url({'for':'admin.chapter.update','id':item.id}) %} {% set update_url = url({'for':'admin.chapter.update','id':item.id}) %}
{% set delete_url = url({'for':'admin.chapter.delete','id':item.id}) %} {% set delete_url = url({'for':'admin.chapter.delete','id':item.id}) %}
@ -34,8 +34,8 @@
</td> </td>
<td><span class="layui-badge layui-bg-gray">{{ item.attrs['word_count'] }}</span></td> <td><span class="layui-badge layui-bg-gray">{{ item.attrs['word_count'] }}</span></td>
<td><input class="layui-input kg-priority" type="text" name="priority" title="数值越小排序越靠前" value="{{ item.priority }}" data-url="{{ update_url }}"></td> <td><input class="layui-input kg-priority" type="text" name="priority" title="数值越小排序越靠前" value="{{ item.priority }}" data-url="{{ update_url }}"></td>
<td><input type="checkbox" name="free" value="1" lay-skin="switch" lay-text="是|否" lay-filter="free" data-url="{{ update_url }}" {% if item.free == 1 %}checked{% endif %}></td> <td><input type="checkbox" name="free" value="1" lay-skin="switch" lay-text="是|否" lay-filter="free" data-url="{{ update_url }}" {% if item.free == 1 %}checked="checked"{% endif %}></td>
<td><input type="checkbox" name="published" value="1" lay-skin="switch" lay-text="是|否" lay-filter="published" data-url="{{ update_url }}" {% if item.published == 1 %}checked{% endif %}></td> <td><input type="checkbox" name="published" value="1" lay-skin="switch" lay-text="是|否" lay-filter="published" data-url="{{ update_url }}" {% if item.published == 1 %}checked="checked"{% endif %}></td>
<td class="center"> <td class="center">
<div class="layui-dropdown"> <div class="layui-dropdown">
<button class="layui-btn layui-btn-sm">操作 <i class="layui-icon layui-icon-triangle-d"></i></button> <button class="layui-btn layui-btn-sm">操作 <i class="layui-icon layui-icon-triangle-d"></i></button>

View File

@ -37,7 +37,7 @@
</thead> </thead>
<tbody> <tbody>
{% for item in lessons %} {% for item in lessons %}
{% set preview_url = url({'for':'desktop.chapter.show','id':item.id}) %} {% set preview_url = url({'for':'home.chapter.show','id':item.id}) %}
{% set edit_url = url({'for':'admin.chapter.edit','id':item.id}) %} {% set edit_url = url({'for':'admin.chapter.edit','id':item.id}) %}
{% set update_url = url({'for':'admin.chapter.update','id':item.id}) %} {% set update_url = url({'for':'admin.chapter.update','id':item.id}) %}
{% set delete_url = url({'for':'admin.chapter.delete','id':item.id}) %} {% set delete_url = url({'for':'admin.chapter.delete','id':item.id}) %}
@ -51,8 +51,8 @@
<td>{{ file_status(item.attrs['file']['status']) }}</td> <td>{{ file_status(item.attrs['file']['status']) }}</td>
<td>{{ item.attrs['duration']|duration }}</td> <td>{{ item.attrs['duration']|duration }}</td>
<td><input class="layui-input kg-priority" type="text" name="priority" title="数值越小排序越靠前" value="{{ item.priority }}" data-url="{{ update_url }}"></td> <td><input class="layui-input kg-priority" type="text" name="priority" title="数值越小排序越靠前" value="{{ item.priority }}" data-url="{{ update_url }}"></td>
<td><input type="checkbox" name="free" value="1" lay-skin="switch" lay-text="是|否" lay-filter="free" data-url="{{ update_url }}" {% if item.free == 1 %}checked{% endif %}></td> <td><input type="checkbox" name="free" value="1" lay-skin="switch" lay-text="是|否" lay-filter="free" data-url="{{ update_url }}" {% if item.free == 1 %}checked="checked"{% endif %}></td>
<td><input type="checkbox" name="published" value="1" lay-skin="switch" lay-text="是|否" lay-filter="published" data-url="{{ update_url }}" {% if item.published == 1 %}checked{% endif %}></td> <td><input type="checkbox" name="published" value="1" lay-skin="switch" lay-text="是|否" lay-filter="published" data-url="{{ update_url }}" {% if item.published == 1 %}checked="checked"{% endif %}></td>
<td class="center"> <td class="center">
<div class="layui-dropdown"> <div class="layui-dropdown">
<button class="layui-btn layui-btn-sm">操作 <i class="layui-icon layui-icon-triangle-d"></i></button> <button class="layui-btn layui-btn-sm">操作 <i class="layui-icon layui-icon-triangle-d"></i></button>

View File

@ -57,7 +57,7 @@
<p>编号:{{ item.owner.id }}</p> <p>编号:{{ item.owner.id }}</p>
</td> </td>
<td>{{ date('Y-m-d H:i:s',item.create_time) }}</td> <td>{{ date('Y-m-d H:i:s',item.create_time) }}</td>
<td><input type="checkbox" name="published" value="1" lay-skin="switch" lay-text="是|否" lay-filter="published" data-url="{{ update_url }}" {% if item.published == 1 %}checked{% endif %}></td> <td><input type="checkbox" name="published" value="1" lay-skin="switch" lay-text="是|否" lay-filter="published" data-url="{{ update_url }}" {% if item.published == 1 %}checked="checked"{% endif %}></td>
<td class="center"> <td class="center">
<div class="layui-dropdown"> <div class="layui-dropdown">
<button class="layui-btn layui-btn-sm">操作 <i class="layui-icon layui-icon-triangle-d"></i></button> <button class="layui-btn layui-btn-sm">操作 <i class="layui-icon layui-icon-triangle-d"></i></button>

View File

@ -30,10 +30,10 @@
<div class="layui-form-item"> <div class="layui-form-item">
<label class="layui-form-label">难度</label> <label class="layui-form-label">难度</label>
<div class="layui-input-block"> <div class="layui-input-block">
<input type="radio" name="level" value="1" title="入门" {% if course.level == '1' %}checked{% endif %}> <input type="radio" name="level" value="1" title="入门" {% if course.level == '1' %}checked="checked"{% endif %}>
<input type="radio" name="level" value="2" title="初级" {% if course.level == '2' %}checked{% endif %}> <input type="radio" name="level" value="2" title="初级" {% if course.level == '2' %}checked="checked"{% endif %}>
<input type="radio" name="level" value="3" title="中级" {% if course.level == '3' %}checked{% endif %}> <input type="radio" name="level" value="3" title="中级" {% if course.level == '3' %}checked="checked"{% endif %}>
<input type="radio" name="level" value="4" title="高级" {% if course.level == '4' %}checked{% endif %}> <input type="radio" name="level" value="4" title="高级" {% if course.level == '4' %}checked="checked"{% endif %}>
</div> </div>
</div> </div>
<div class="layui-form-item"> <div class="layui-form-item">

View File

@ -69,7 +69,7 @@
</thead> </thead>
<tbody> <tbody>
{% for item in pager.items %} {% for item in pager.items %}
{% set preview_url = url({'for':'desktop.course.show','id':item.id}) %} {% set preview_url = url({'for':'home.course.show','id':item.id}) %}
{% set edit_url = url({'for':'admin.course.edit','id':item.id}) %} {% set edit_url = url({'for':'admin.course.edit','id':item.id}) %}
{% set update_url = url({'for':'admin.course.update','id':item.id}) %} {% set update_url = url({'for':'admin.course.update','id':item.id}) %}
{% set delete_url = url({'for':'admin.course.delete','id':item.id}) %} {% set delete_url = url({'for':'admin.course.delete','id':item.id}) %}
@ -97,7 +97,7 @@
<p>市场:{{ '¥%0.2f'|format(item.market_price) }}</p> <p>市场:{{ '¥%0.2f'|format(item.market_price) }}</p>
<p>会员:{{ '¥%0.2f'|format(item.vip_price) }}</p> <p>会员:{{ '¥%0.2f'|format(item.vip_price) }}</p>
</td> </td>
<td><input type="checkbox" name="published" value="1" lay-skin="switch" lay-text="是|否" lay-filter="published" data-url="{{ update_url }}" {% if item.published == 1 %}checked{% endif %}></td> <td><input type="checkbox" name="published" value="1" lay-skin="switch" lay-text="是|否" lay-filter="published" data-url="{{ update_url }}" {% if item.published == 1 %}checked="checked"{% endif %}></td>
<td class="center"> <td class="center">
<div class="layui-dropdown"> <div class="layui-dropdown">
<button class="layui-btn layui-btn-sm">操作 <i class="layui-icon layui-icon-triangle-d"></i></button> <button class="layui-btn layui-btn-sm">操作 <i class="layui-icon layui-icon-triangle-d"></i></button>

View File

@ -39,8 +39,8 @@
<div class="layui-form-item"> <div class="layui-form-item">
<label class="layui-form-label">发布</label> <label class="layui-form-label">发布</label>
<div class="layui-input-block"> <div class="layui-input-block">
<input type="radio" name="published" value="1" title="是" {% if help.published == 1 %}checked{% endif %}> <input type="radio" name="published" value="1" title="是" {% if help.published == 1 %}checked="checked"{% endif %}>
<input type="radio" name="published" value="0" title="否" {% if help.published == 0 %}checked{% endif %}> <input type="radio" name="published" value="0" title="否" {% if help.published == 0 %}checked="checked"{% endif %}>
</div> </div>
</div> </div>
<div class="layui-form-item"> <div class="layui-form-item">

View File

@ -32,7 +32,7 @@
<tbody> <tbody>
{% for item in helps %} {% for item in helps %}
{% set list_url = url({'for':'admin.help.list'},{'category_id':item.category.id}) %} {% set list_url = url({'for':'admin.help.list'},{'category_id':item.category.id}) %}
{% set preview_url = url({'for':'desktop.help.show','id':item.id}) %} {% set preview_url = url({'for':'home.help.show','id':item.id}) %}
{% set edit_url = url({'for':'admin.help.edit','id':item.id}) %} {% set edit_url = url({'for':'admin.help.edit','id':item.id}) %}
{% set update_url = url({'for':'admin.help.update','id':item.id}) %} {% set update_url = url({'for':'admin.help.update','id':item.id}) %}
{% set delete_url = url({'for':'admin.help.delete','id':item.id}) %} {% set delete_url = url({'for':'admin.help.delete','id':item.id}) %}
@ -42,7 +42,7 @@
<td><a href="{{ edit_url }}">{{ item.title }}</a></td> <td><a href="{{ edit_url }}">{{ item.title }}</a></td>
<td><a href="{{ list_url }}">{{ item.category.name }}</a></td> <td><a href="{{ list_url }}">{{ item.category.name }}</a></td>
<td class="center"><input class="layui-input kg-priority" type="text" name="priority" title="数值越小排序越靠前" value="{{ item.priority }}" data-url="{{ update_url }}"></td> <td class="center"><input class="layui-input kg-priority" type="text" name="priority" title="数值越小排序越靠前" value="{{ item.priority }}" data-url="{{ update_url }}"></td>
<td class="center"><input type="checkbox" name="published" value="1" lay-skin="switch" lay-text="是|否" lay-filter="published" data-url="{{ update_url }}" {% if item.published == 1 %}checked{% endif %}></td> <td class="center"><input type="checkbox" name="published" value="1" lay-skin="switch" lay-text="是|否" lay-filter="published" data-url="{{ update_url }}" {% if item.published == 1 %}checked="checked"{% endif %}></td>
<td class="center"> <td class="center">
<div class="layui-dropdown"> <div class="layui-dropdown">
<button class="layui-btn layui-btn-sm">操作 <i class="layui-icon layui-icon-triangle-d"></i></button> <button class="layui-btn layui-btn-sm">操作 <i class="layui-icon layui-icon-triangle-d"></i></button>

View File

@ -37,8 +37,8 @@
<div class="layui-form-item"> <div class="layui-form-item">
<label class="layui-form-label">发布</label> <label class="layui-form-label">发布</label>
<div class="layui-input-block"> <div class="layui-input-block">
<input type="radio" name="published" value="1" title="是" {% if group.published == 1 %}checked{% endif %}> <input type="radio" name="published" value="1" title="是" {% if group.published == 1 %}checked="checked"{% endif %}>
<input type="radio" name="published" value="0" title="否" {% if group.published == 0 %}checked{% endif %}> <input type="radio" name="published" value="0" title="否" {% if group.published == 0 %}checked="checked"{% endif %}>
</div> </div>
</div> </div>
<div class="layui-form-item"> <div class="layui-form-item">

View File

@ -49,7 +49,7 @@
</thead> </thead>
<tbody> <tbody>
{% for item in pager.items %} {% for item in pager.items %}
{% set preview_url = url({'for':'desktop.group.show','id':item.id}) %} {% set preview_url = url({'for':'home.group.show','id':item.id}) %}
{% set edit_url = url({'for':'admin.group.edit','id':item.id}) %} {% set edit_url = url({'for':'admin.group.edit','id':item.id}) %}
{% set update_url = url({'for':'admin.group.update','id':item.id}) %} {% set update_url = url({'for':'admin.group.update','id':item.id}) %}
{% set delete_url = url({'for':'admin.group.delete','id':item.id}) %} {% set delete_url = url({'for':'admin.group.delete','id':item.id}) %}
@ -59,7 +59,7 @@
<td><a href="{{ edit_url }}">{{ item.name }}</a> {{ type_info(item.type) }}</td> <td><a href="{{ edit_url }}">{{ item.name }}</a> {{ type_info(item.type) }}</td>
<td>{{ owner_info(item.owner) }}</td> <td>{{ owner_info(item.owner) }}</td>
<td><span class="layui-badge layui-bg-gray">{{ item.user_count }}</span></td> <td><span class="layui-badge layui-bg-gray">{{ item.user_count }}</span></td>
<td><input type="checkbox" name="published" value="1" lay-filter="published" lay-skin="switch" lay-text="是|否" data-url="{{ update_url }}" {% if item.published == 1 %}checked{% endif %}></td> <td><input type="checkbox" name="published" value="1" lay-filter="published" lay-skin="switch" lay-text="是|否" data-url="{{ update_url }}" {% if item.published == 1 %}checked="checked"{% endif %}></td>
<td class="center"> <td class="center">
<div class="layui-dropdown"> <div class="layui-dropdown">
<button class="layui-btn layui-btn-sm">操作 <i class="layui-icon layui-icon-triangle-d"></i></button> <button class="layui-btn layui-btn-sm">操作 <i class="layui-icon layui-icon-triangle-d"></i></button>

View File

@ -28,13 +28,13 @@
<li class="layui-nav-item"> <li class="layui-nav-item">
<a href="javascript:">{{ auth_user.name }}</a> <a href="javascript:">{{ auth_user.name }}</a>
<dl class="layui-nav-child"> <dl class="layui-nav-child">
<dd><a href="{{ url({'for':'desktop.my.profile'}) }}" target="_blank">基本资料</a></dd> <dd><a href="{{ url({'for':'home.uc.profile'}) }}" target="_blank">基本资料</a></dd>
<dd><a href="{{ url({'for':'desktop.my.account'}) }}" target="_blank">安全设置</a></dd> <dd><a href="{{ url({'for':'home.uc.account'}) }}" target="_blank">安全设置</a></dd>
<dd><a href="{{ url({'for':'admin.logout'}) }}">退出登录</a></dd> <dd><a href="{{ url({'for':'admin.logout'}) }}">退出登录</a></dd>
</dl> </dl>
</li> </li>
<li class="layui-nav-item"> <li class="layui-nav-item">
<a href="{{ url({'for':'desktop.index'}) }}" target="_blank">前台</a> <a href="{{ url({'for':'home.index'}) }}" target="_blank">前台</a>
</li> </li>
</ul> </ul>
</div> </div>

View File

@ -19,7 +19,7 @@
<td>获取渠道</td> <td>获取渠道</td>
<td> <td>
<a href="https://gitee.com/koogua/course-tencent-cloud" target="_blank">Gitee</a>&nbsp; <a href="https://gitee.com/koogua/course-tencent-cloud" target="_blank">Gitee</a>&nbsp;
<a href="https://github.com/koogua/course-tencent-cloud" target="_blank">Github</a> <a href="https://github.com/xiaochong0302/course-tencent-cloud" target="_blank">Github</a>
</td> </td>
</tr> </tr>
</tbody> </tbody>

View File

@ -27,22 +27,22 @@
<div class="layui-form-item"> <div class="layui-form-item">
<label class="layui-form-label">位置</label> <label class="layui-form-label">位置</label>
<div class="layui-input-block"> <div class="layui-input-block">
<input type="radio" name="position" value="1" title="顶部" {% if nav.position == 1 %}checked{% endif %}> <input type="radio" name="position" value="1" title="顶部" {% if nav.position == 1 %}checked="checked"{% endif %}>
<input type="radio" name="position" value="2" title="底部" {% if nav.position == 2 %}checked{% endif %}> <input type="radio" name="position" value="2" title="底部" {% if nav.position == 2 %}checked="checked"{% endif %}>
</div> </div>
</div> </div>
<div class="layui-form-item"> <div class="layui-form-item">
<label class="layui-form-label">目标</label> <label class="layui-form-label">目标</label>
<div class="layui-input-block"> <div class="layui-input-block">
<input type="radio" name="target" value="_blank" title="新窗口" {% if nav.target == '_blank' %}checked{% endif %}> <input type="radio" name="target" value="_blank" title="新窗口" {% if nav.target == '_blank' %}checked="checked"{% endif %}>
<input type="radio" name="target" value="_self" title="原窗口" {% if nav.target == '_self' %}checked{% endif %}> <input type="radio" name="target" value="_self" title="原窗口" {% if nav.target == '_self' %}checked="checked"{% endif %}>
</div> </div>
</div> </div>
<div class="layui-form-item"> <div class="layui-form-item">
<label class="layui-form-label">发布</label> <label class="layui-form-label">发布</label>
<div class="layui-input-block"> <div class="layui-input-block">
<input type="radio" name="published" value="1" title="是" {% if nav.published == 1 %}checked{% endif %}> <input type="radio" name="published" value="1" title="是" {% if nav.published == 1 %}checked="checked"{% endif %}>
<input type="radio" name="published" value="0" title="否" {% if nav.published == 0 %}checked{% endif %}> <input type="radio" name="published" value="0" title="否" {% if nav.published == 0 %}checked="checked"{% endif %}>
</div> </div>
</div> </div>
<div class="layui-form-item"> <div class="layui-form-item">

View File

@ -82,7 +82,7 @@
<td>{{ position_info(item.position) }}</td> <td>{{ position_info(item.position) }}</td>
<td>{{ target_info(item.target) }}</td> <td>{{ target_info(item.target) }}</td>
<td><input class="layui-input kg-priority" type="text" name="priority" title="数值越小排序越靠前" value="{{ item.priority }}" data-url="{{ update_url }}"></td> <td><input class="layui-input kg-priority" type="text" name="priority" title="数值越小排序越靠前" value="{{ item.priority }}" data-url="{{ update_url }}"></td>
<td><input type="checkbox" name="published" value="1" lay-skin="switch" lay-text="是|否" lay-filter="published" data-url="{{ update_url }}" {% if item.published == 1 %}checked{% endif %}></td> <td><input type="checkbox" name="published" value="1" lay-skin="switch" lay-text="是|否" lay-filter="published" data-url="{{ update_url }}" {% if item.published == 1 %}checked="checked"{% endif %}></td>
<td class="center"> <td class="center">
<div class="layui-dropdown"> <div class="layui-dropdown">
<button class="layui-btn layui-btn-sm">操作 <span class="layui-icon layui-icon-triangle-d"></span></button> <button class="layui-btn layui-btn-sm">操作 <span class="layui-icon layui-icon-triangle-d"></span></button>

View File

@ -43,7 +43,7 @@
<td><span class="layui-badge layui-bg-gray">{{ item.course_count }}</span></td> <td><span class="layui-badge layui-bg-gray">{{ item.course_count }}</span></td>
<td>{{ '¥%0.2f'|format(item.market_price) }}</td> <td>{{ '¥%0.2f'|format(item.market_price) }}</td>
<td>{{ '¥%0.2f'|format(item.vip_price) }}</td> <td>{{ '¥%0.2f'|format(item.vip_price) }}</td>
<td><input type="checkbox" name="published" value="1" lay-skin="switch" lay-text="是|否" lay-filter="published" data-url="{{ update_url }}" {% if item.published == 1 %}checked{% endif %}></td> <td><input type="checkbox" name="published" value="1" lay-skin="switch" lay-text="是|否" lay-filter="published" data-url="{{ update_url }}" {% if item.published == 1 %}checked="checked"{% endif %}></td>
<td class="center"> <td class="center">
<div class="layui-dropdown"> <div class="layui-dropdown">
<button class="layui-btn layui-btn-sm">操作 <i class="layui-icon layui-icon-triangle-d"></i></button> <button class="layui-btn layui-btn-sm">操作 <i class="layui-icon layui-icon-triangle-d"></i></button>

View File

@ -22,8 +22,8 @@
<div class="layui-form-item"> <div class="layui-form-item">
<label class="layui-form-label">发布</label> <label class="layui-form-label">发布</label>
<div class="layui-input-block"> <div class="layui-input-block">
<input type="radio" name="published" value="1" title="是" {% if page.published == 1 %}checked{% endif %}> <input type="radio" name="published" value="1" title="是" {% if page.published == 1 %}checked="checked"{% endif %}>
<input type="radio" name="published" value="0" title="否" {% if page.published == 0 %}checked{% endif %}> <input type="radio" name="published" value="0" title="否" {% if page.published == 0 %}checked="checked"{% endif %}>
</div> </div>
</div> </div>
<div class="layui-form-item"> <div class="layui-form-item">

View File

@ -31,7 +31,7 @@
</thead> </thead>
<tbody> <tbody>
{% for item in pager.items %} {% for item in pager.items %}
{% set preview_url = url({'for':'desktop.page.show','id':item.id}) %} {% set preview_url = url({'for':'home.page.show','id':item.id}) %}
{% set edit_url = url({'for':'admin.page.edit','id':item.id}) %} {% set edit_url = url({'for':'admin.page.edit','id':item.id}) %}
{% set update_url = url({'for':'admin.page.update','id':item.id}) %} {% set update_url = url({'for':'admin.page.update','id':item.id}) %}
{% set delete_url = url({'for':'admin.page.delete','id':item.id}) %} {% set delete_url = url({'for':'admin.page.delete','id':item.id}) %}
@ -40,7 +40,7 @@
<td><a href="{{ edit_url }}">{{ item.title }}</a></td> <td><a href="{{ edit_url }}">{{ item.title }}</a></td>
<td>{{ date('Y-m-d H:i',item.create_time) }}</td> <td>{{ date('Y-m-d H:i',item.create_time) }}</td>
<td>{{ date('Y-m-d H:i',item.update_time) }}</td> <td>{{ date('Y-m-d H:i',item.update_time) }}</td>
<td><input type="checkbox" name="published" value="1" lay-skin="switch" lay-text="是|否" lay-filter="published" data-url="{{ update_url }}" {% if item.published == 1 %}checked{% endif %}> <td><input type="checkbox" name="published" value="1" lay-skin="switch" lay-text="是|否" lay-filter="published" data-url="{{ update_url }}" {% if item.published == 1 %}checked="checked"{% endif %}>
</td> </td>
<td class="center"> <td class="center">
<div class="layui-dropdown"> <div class="layui-dropdown">

View File

@ -19,6 +19,6 @@
{% block link_css %} {% block link_css %}
{{ css_link("desktop/css/error.css") }} {{ css_link("home/css/error.css") }}
{% endblock %} {% endblock %}

View File

@ -18,7 +18,7 @@
{% block inline_js %} {% block inline_js %}
<script src="https://imgcache.qq.com/open/qcloud/video/vcplayer/TcPlayer-2.3.2.js"></script> <script src="https://imgcache.qq.com/open/qcloud/video/vcplayer/TcPlayer-2.3.3.js"></script>
<script> <script>
@ -26,8 +26,6 @@
var $ = layui.jquery; var $ = layui.jquery;
var playUrls = JSON.parse('{{ pull_urls|json_encode }}');
var options = { var options = {
live: true, live: true,
autoplay: true, autoplay: true,
@ -36,6 +34,7 @@
height: 405 height: 405
}; };
var playUrls = JSON.parse('{{ pull_urls|json_encode }}');
var formats = ['rtmp', 'flv', 'm3u8']; var formats = ['rtmp', 'flv', 'm3u8'];
var rates = ['od', 'hd', 'sd']; var rates = ['od', 'hd', 'sd'];
@ -48,9 +47,8 @@
}); });
}); });
console.log(options); new TcPlayer('player', options);
var player = new TcPlayer('player', options);
}); });
</script> </script>

View File

@ -26,7 +26,7 @@
{% endif %} {% endif %}
<div class="layui-form-item"> <div class="layui-form-item">
<div class="layui-input-block"> <div class="layui-input-block">
{% set disabled = captcha.enabled ? 'disabled' : '' %} {% set disabled = captcha.enabled ? 'disabled="disabled"' : '' %}
<button id="submit-btn" class="layui-btn layui-btn-fluid layui-btn-disabled" {{ disabled }} lay-submit="true" lay-filter="go">立即登录</button> <button id="submit-btn" class="layui-btn layui-btn-fluid layui-btn-disabled" {{ disabled }} lay-submit="true" lay-filter="go">立即登录</button>
<input type="hidden" name="ticket"> <input type="hidden" name="ticket">
<input type="hidden" name="rand"> <input type="hidden" name="rand">
@ -71,7 +71,7 @@
var $ = layui.jquery; var $ = layui.jquery;
var captcha = new TencentCaptcha( new TencentCaptcha(
$('#captcha-btn')[0], $('#captcha-btn')[0],
$('#captcha-btn').data('app-id'), $('#captcha-btn').data('app-id'),
function (res) { function (res) {

View File

@ -1,31 +1,38 @@
<!DOCTYPE html> {% extends 'templates/main.volt' %}
<html lang="zh-Hans-CN">
<head> {% block content %}
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> <div id="player"></div>
<title>视频点播</title>
<script src="https://imgcache.qq.com/open/qcloud/video/vcplayer/TcPlayer-2.3.2.js"></script> {% endblock %}
{% block inline_css %}
<style> <style>
html, body { .kg-body {
margin: 0;
padding: 0; padding: 0;
} }
</style> </style>
</head>
<body>
<div id="player"></div>
</body>
</html>
<script> {% endblock %}
var playUrl = '{{ play_url }}'; {% block inline_js %}
var player = new TcPlayer('player', { <script src="https://imgcache.qq.com/open/qcloud/video/vcplayer/TcPlayer-2.3.3.js"></script>
m3u8: playUrl,
<script>
layui.use(['jquery'], function () {
new TcPlayer('player', {
m3u8: '{{ play_url }}',
autoplay: false, autoplay: false,
width: 720, width: 720,
height: 405 height: 405
}); });
</script> });
</script>
{% endblock %}

View File

@ -54,7 +54,7 @@
<p>昵称:<a href="{{ list_by_owner_url }}">{{ item.owner.name }}</a></p> <p>昵称:<a href="{{ list_by_owner_url }}">{{ item.owner.name }}</a></p>
<p>编号:{{ item.owner.id }}</p> <p>编号:{{ item.owner.id }}</p>
</td> </td>
<td><input type="checkbox" name="published" value="1" lay-skin="switch" lay-text="是|否" lay-filter="published" data-url="{{ update_url }}" {% if item.published == 1 %}checked{% endif %}></td> <td><input type="checkbox" name="published" value="1" lay-skin="switch" lay-text="是|否" lay-filter="published" data-url="{{ update_url }}" {% if item.published == 1 %}checked="checked"{% endif %}></td>
<td class="center"> <td class="center">
<div class="layui-dropdown"> <div class="layui-dropdown">
<button class="layui-btn layui-btn-sm">操作 <i class="layui-icon layui-icon-triangle-d"></i></button> <button class="layui-btn layui-btn-sm">操作 <i class="layui-icon layui-icon-triangle-d"></i></button>

View File

@ -31,7 +31,7 @@
<td width="15%">{{ level2.title }}</td> <td width="15%">{{ level2.title }}</td>
<td> <td>
{% for level3 in level2.children %} {% for level3 in level2.children %}
<input type="checkbox" name="routes[]" title="{{ level3.title }}" value="{{ level3.route }}" {% if level3.route in role.routes %}checked{% endif %}> <input type="checkbox" name="routes[]" title="{{ level3.title }}" value="{{ level3.route }}" {% if level3.route in role.routes %}checked="checked"{% endif %}>
{% endfor %} {% endfor %}
</td> </td>
</tr> </tr>

View File

@ -2,8 +2,8 @@
<div class="layui-form-item"> <div class="layui-form-item">
<label class="layui-form-label">开启服务</label> <label class="layui-form-label">开启服务</label>
<div class="layui-input-block"> <div class="layui-input-block">
<input type="radio" name="enabled" value="1" title="是" lay-filter="status" {% if cs.enabled == 1 %}checked{% endif %}> <input type="radio" name="enabled" value="1" title="是" lay-filter="status" {% if cs.enabled == 1 %}checked="checked"{% endif %}>
<input type="radio" name="enabled" value="0" title="否" lay-filter="status" {% if cs.enabled == 0 %}checked{% endif %}> <input type="radio" name="enabled" value="0" title="否" lay-filter="status" {% if cs.enabled == 0 %}checked="checked"{% endif %}>
</div> </div>
</div> </div>
<div class="layui-form-item"> <div class="layui-form-item">

View File

@ -14,29 +14,29 @@
<div class="layui-form-item"> <div class="layui-form-item">
<label class="layui-form-label">开启图片上传</label> <label class="layui-form-label">开启图片上传</label>
<div class="layui-input-block"> <div class="layui-input-block">
<input type="radio" name="upload_img_enabled" value="1" title="是" {% if main.upload_img_enabled == "1" %}checked{% endif %}> <input type="radio" name="upload_img_enabled" value="1" title="是" {% if main.upload_img_enabled == "1" %}checked="checked"{% endif %}>
<input type="radio" name="upload_img_enabled" value="0" title="否" {% if main.upload_img_enabled == "0" %}checked{% endif %}> <input type="radio" name="upload_img_enabled" value="0" title="否" {% if main.upload_img_enabled == "0" %}checked="checked"{% endif %}>
</div> </div>
</div> </div>
<div class="layui-form-item"> <div class="layui-form-item">
<label class="layui-form-label">开启文件上传</label> <label class="layui-form-label">开启文件上传</label>
<div class="layui-input-block"> <div class="layui-input-block">
<input type="radio" name="upload_file_enabled" value="1" title="是" {% if main.upload_file_enabled == "1" %}checked{% endif %}> <input type="radio" name="upload_file_enabled" value="1" title="是" {% if main.upload_file_enabled == "1" %}checked="checked"{% endif %}>
<input type="radio" name="upload_file_enabled" value="0" title="否" {% if main.upload_file_enabled == "0" %}checked{% endif %}> <input type="radio" name="upload_file_enabled" value="0" title="否" {% if main.upload_file_enabled == "0" %}checked="checked"{% endif %}>
</div> </div>
</div> </div>
<div class="layui-form-item"> <div class="layui-form-item">
<label class="layui-form-label">开启音频栏</label> <label class="layui-form-label">开启音频栏</label>
<div class="layui-input-block"> <div class="layui-input-block">
<input type="radio" name="tool_audio_enabled" value="1" title="是" {% if main.tool_audio_enabled == "1" %}checked{% endif %}> <input type="radio" name="tool_audio_enabled" value="1" title="是" {% if main.tool_audio_enabled == "1" %}checked="checked"{% endif %}>
<input type="radio" name="tool_audio_enabled" value="0" title="否" {% if main.tool_audio_enabled == "0" %}checked{% endif %}> <input type="radio" name="tool_audio_enabled" value="0" title="否" {% if main.tool_audio_enabled == "0" %}checked="checked"{% endif %}>
</div> </div>
</div> </div>
<div class="layui-form-item"> <div class="layui-form-item">
<label class="layui-form-label">开启视频栏</label> <label class="layui-form-label">开启视频栏</label>
<div class="layui-input-block"> <div class="layui-input-block">
<input type="radio" name="tool_video_enabled" value="1" title="是" {% if main.tool_video_enabled == "1" %}checked{% endif %}> <input type="radio" name="tool_video_enabled" value="1" title="是" {% if main.tool_video_enabled == "1" %}checked="checked"{% endif %}>
<input type="radio" name="tool_video_enabled" value="0" title="否" {% if main.tool_video_enabled == "0" %}checked{% endif %}> <input type="radio" name="tool_video_enabled" value="0" title="否" {% if main.tool_video_enabled == "0" %}checked="checked"{% endif %}>
</div> </div>
</div> </div>
<div class="layui-form-item"> <div class="layui-form-item">

View File

@ -8,8 +8,8 @@
<div class="layui-form-item"> <div class="layui-form-item">
<label class="layui-form-label">拉流协议</label> <label class="layui-form-label">拉流协议</label>
<div class="layui-input-block"> <div class="layui-input-block">
<input type="radio" name="protocol" value="http" title="HTTP" {% if pull.protocol == "http" %}checked{% endif %}> <input type="radio" name="protocol" value="http" title="HTTP" {% if pull.protocol == "http" %}checked="checked"{% endif %}>
<input type="radio" name="protocol" value="https" title="HTTPS" {% if pull.protocol == "https" %}checked{% endif %}> <input type="radio" name="protocol" value="https" title="HTTPS" {% if pull.protocol == "https" %}checked="checked"{% endif %}>
</div> </div>
</div> </div>
<div class="layui-form-item"> <div class="layui-form-item">
@ -24,8 +24,8 @@
<div class="layui-form-item"> <div class="layui-form-item">
<label class="layui-form-label">开启鉴权</label> <label class="layui-form-label">开启鉴权</label>
<div class="layui-input-block"> <div class="layui-input-block">
<input type="radio" name="auth_enabled" value="1" title="是" lay-filter="pull_auth_enabled" {% if pull.auth_enabled == 1 %}checked{% endif %}> <input type="radio" name="auth_enabled" value="1" title="是" lay-filter="pull_auth_enabled" {% if pull.auth_enabled == 1 %}checked="checked"{% endif %}>
<input type="radio" name="auth_enabled" value="0" title="否" lay-filter="pull_auth_enabled" {% if pull.auth_enabled == 0 %}checked{% endif %}> <input type="radio" name="auth_enabled" value="0" title="否" lay-filter="pull_auth_enabled" {% if pull.auth_enabled == 0 %}checked="checked"{% endif %}>
</div> </div>
</div> </div>
<div id="pull-auth-block" style="{{ pull_auth_display }}"> <div id="pull-auth-block" style="{{ pull_auth_display }}">
@ -48,8 +48,8 @@
<div class="layui-form-item"> <div class="layui-form-item">
<label class="layui-form-label">开启转码</label> <label class="layui-form-label">开启转码</label>
<div class="layui-input-block"> <div class="layui-input-block">
<input type="radio" name="trans_enabled" value="1" title="是" lay-filter="pull_trans_enabled" {% if pull.trans_enabled == 1 %}checked{% endif %}> <input type="radio" name="trans_enabled" value="1" title="是" lay-filter="pull_trans_enabled" {% if pull.trans_enabled == 1 %}checked="checked"{% endif %}>
<input type="radio" name="trans_enabled" value="0" title="否" lay-filter="pull_trans_enabled" {% if pull.trans_enabled == 0 %}checked{% endif %}> <input type="radio" name="trans_enabled" value="0" title="否" lay-filter="pull_trans_enabled" {% if pull.trans_enabled == 0 %}checked="checked"{% endif %}>
</div> </div>
</div> </div>
<div id="pull-trans-tpl-block" style="{{ pull_trans_tpl_display }}"> <div id="pull-trans-tpl-block" style="{{ pull_trans_tpl_display }}">

View File

@ -16,8 +16,8 @@
<div class="layui-form-item"> <div class="layui-form-item">
<label class="layui-form-label">开启鉴权</label> <label class="layui-form-label">开启鉴权</label>
<div class="layui-input-block"> <div class="layui-input-block">
<input type="radio" name="auth_enabled" value="1" title="是" lay-filter="push_auth_enabled" {% if push.auth_enabled == 1 %}checked{% endif %}> <input type="radio" name="auth_enabled" value="1" title="是" lay-filter="push_auth_enabled" {% if push.auth_enabled == 1 %}checked="checked"{% endif %}>
<input type="radio" name="auth_enabled" value="0" title="否" lay-filter="push_auth_enabled" {% if push.auth_enabled == 0 %}checked{% endif %}> <input type="radio" name="auth_enabled" value="0" title="否" lay-filter="push_auth_enabled" {% if push.auth_enabled == 0 %}checked="checked"{% endif %}>
</div> </div>
</div> </div>
<div id="push-auth-block" style="{{ push_auth_display }}"> <div id="push-auth-block" style="{{ push_auth_display }}">

View File

@ -17,7 +17,7 @@
<div class="layui-form-item"> <div class="layui-form-item">
<label class="layui-form-label">推流地址</label> <label class="layui-form-label">推流地址</label>
<div class="layui-input-inline" style="width:350px;"> <div class="layui-input-inline" style="width:350px;">
<input id="tc1" class="layui-input" type="text" name="obs.fms_url" value="{{ obs.fms_url }}" readonly="readonly"> <input id="tc1" class="layui-input" type="text" name="obs_fms_url" value="{{ obs.fms_url }}" readonly="readonly">
</div> </div>
<div class="layui-input-inline" style="width:100px;"> <div class="layui-input-inline" style="width:100px;">
<span class="kg-copy layui-btn" data-clipboard-target="#tc1">复制</span> <span class="kg-copy layui-btn" data-clipboard-target="#tc1">复制</span>

View File

@ -2,60 +2,60 @@
{% block content %} {% block content %}
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.setting.mailer'}) }}"> <form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.setting.mail'}) }}">
<fieldset class="layui-elem-field layui-field-title"> <fieldset class="layui-elem-field layui-field-title">
<legend>邮件配置</legend> <legend>邮件配置</legend>
</fieldset> </fieldset>
<div class="layui-form-item"> <div class="layui-form-item">
<label class="layui-form-label">发送邮箱</label> <label class="layui-form-label">发送邮箱</label>
<div class="layui-input-block"> <div class="layui-input-block">
<input class="layui-input" type="text" name="smtp_from_email" value="{{ mailer.smtp_from_email }}"> <input class="layui-input" type="text" name="smtp_from_email" value="{{ mail.smtp_from_email }}">
</div> </div>
</div> </div>
<div class="layui-form-item"> <div class="layui-form-item">
<label class="layui-form-label">发送人</label> <label class="layui-form-label">发送人</label>
<div class="layui-input-block"> <div class="layui-input-block">
<input class="layui-input" type="text" name="smtp_from_name" value="{{ mailer.smtp_from_name }}"> <input class="layui-input" type="text" name="smtp_from_name" value="{{ mail.smtp_from_name }}">
</div> </div>
</div> </div>
<div class="layui-form-item"> <div class="layui-form-item">
<label class="layui-form-label">SMTP服务器</label> <label class="layui-form-label">SMTP服务器</label>
<div class="layui-input-block"> <div class="layui-input-block">
<input class="layui-input" type="text" name="smtp_host" value="{{ mailer.smtp_host }}"> <input class="layui-input" type="text" name="smtp_host" value="{{ mail.smtp_host }}">
</div> </div>
</div> </div>
<div class="layui-form-item"> <div class="layui-form-item">
<label class="layui-form-label">SMTP端口号</label> <label class="layui-form-label">SMTP端口号</label>
<div class="layui-input-block"> <div class="layui-input-block">
<input class="layui-input" type="text" name="smtp_port" value="{{ mailer.smtp_port }}"> <input class="layui-input" type="text" name="smtp_port" value="{{ mail.smtp_port }}">
</div> </div>
</div> </div>
<div class="layui-form-item"> <div class="layui-form-item">
<label class="layui-form-label">加密类型</label> <label class="layui-form-label">加密类型</label>
<div class="layui-input-block"> <div class="layui-input-block">
<input type="radio" name="smtp_encryption" value="ssl" title="SSL" {% if mailer.smtp_encryption == "ssl" %}checked{% endif %}> <input type="radio" name="smtp_encryption" value="ssl" title="SSL" {% if mail.smtp_encryption == "ssl" %}checked="checked"{% endif %}>
<input type="radio" name="smtp_encryption" value="tls" title="TLS" {% if mailer.smtp_encryption == "tls" %}checked{% endif %}> <input type="radio" name="smtp_encryption" value="tls" title="TLS" {% if mail.smtp_encryption == "tls" %}checked="checked"{% endif %}>
<input type="radio" name="smtp_encryption" value="" title="不加密" {% if mailer.smtp_encryption == "" %}checked{% endif %}> <input type="radio" name="smtp_encryption" value="" title="不加密" {% if mail.smtp_encryption == "" %}checked="checked"{% endif %}>
</div> </div>
</div> </div>
<div class="layui-form-item"> <div class="layui-form-item">
<label class="layui-form-label">账户验证</label> <label class="layui-form-label">账户验证</label>
<div class="layui-input-block"> <div class="layui-input-block">
<input type="radio" name="smtp_authentication" value="1" title="是" lay-filter="smtp_auth" {% if mailer.smtp_authentication == "1" %}checked{% endif %}> <input type="radio" name="smtp_auth_enabled" value="1" title="是" lay-filter="smtp_auth_enabled" {% if mail.smtp_auth_enabled == "1" %}checked="checked"{% endif %}>
<input type="radio" name="smtp_authentication" value="0" title="否" lay-filter="smtp_auth" {% if mailer.smtp_authentication == "0" %}checked{% endif %}> <input type="radio" name="smtp_auth_enabled" value="0" title="否" lay-filter="smtp_auth_enabled" {% if mail.smtp_auth_enabled == "0" %}checked="checked"{% endif %}>
</div> </div>
</div> </div>
<div id="smtp-auth-block"> <div id="smtp-auth-block">
<div class="layui-form-item"> <div class="layui-form-item">
<label class="layui-form-label">SMTP帐号</label> <label class="layui-form-label">SMTP帐号</label>
<div class="layui-input-block"> <div class="layui-input-block">
<input class="layui-input" type="text" name="smtp_username" value="{{ mailer.smtp_username }}"> <input class="layui-input" type="text" name="smtp_username" value="{{ mail.smtp_username }}">
</div> </div>
</div> </div>
<div class="layui-form-item"> <div class="layui-form-item">
<label class="layui-form-label">SMTP密码</label> <label class="layui-form-label">SMTP密码</label>
<div class="layui-input-block"> <div class="layui-input-block">
<input class="layui-input" type="text" name="smtp_password" value="{{ mailer.smtp_password }}"> <input class="layui-input" type="text" name="smtp_password" value="{{ mail.smtp_password }}">
</div> </div>
</div> </div>
</div> </div>
@ -68,7 +68,7 @@
</div> </div>
</form> </form>
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.test.mailer'}) }}"> <form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.test.mail'}) }}">
<fieldset class="layui-elem-field layui-field-title"> <fieldset class="layui-elem-field layui-field-title">
<legend>邮件测试</legend> <legend>邮件测试</legend>
</fieldset> </fieldset>
@ -98,7 +98,7 @@
var $ = layui.jquery; var $ = layui.jquery;
var form = layui.form; var form = layui.form;
form.on('radio(smtp_auth)', function (data) { form.on('radio(smtp_auth_enabled)', function (data) {
var block = $('#smtp-auth-block'); var block = $('#smtp-auth-block');
if (data.value === '1') { if (data.value === '1') {
block.show(); block.show();

View File

@ -2,8 +2,8 @@
<div class="layui-form-item"> <div class="layui-form-item">
<label class="layui-form-label">开启支付</label> <label class="layui-form-label">开启支付</label>
<div class="layui-input-block"> <div class="layui-input-block">
<input type="radio" name="enabled" value="1" title="是" {% if alipay.enabled == "1" %}checked{% endif %}> <input type="radio" name="enabled" value="1" title="是" {% if alipay.enabled == "1" %}checked="checked"{% endif %}>
<input type="radio" name="enabled" value="0" title="否" {% if alipay.enabled == "0" %}checked{% endif %}> <input type="radio" name="enabled" value="0" title="否" {% if alipay.enabled == "0" %}checked="checked"{% endif %}>
</div> </div>
</div> </div>
<div class="layui-form-item"> <div class="layui-form-item">

View File

@ -2,8 +2,8 @@
<div class="layui-form-item"> <div class="layui-form-item">
<label class="layui-form-label">开启支付</label> <label class="layui-form-label">开启支付</label>
<div class="layui-input-block"> <div class="layui-input-block">
<input type="radio" name="enabled" value="1" title="是" {% if wxpay.enabled == "1" %}checked{% endif %}> <input type="radio" name="enabled" value="1" title="是" {% if wxpay.enabled == "1" %}checked="checked"{% endif %}>
<input type="radio" name="enabled" value="0" title="否" {% if wxpay.enabled == "0" %}checked{% endif %}> <input type="radio" name="enabled" value="0" title="否" {% if wxpay.enabled == "0" %}checked="checked"{% endif %}>
</div> </div>
</div> </div>
<div class="layui-form-item"> <div class="layui-form-item">

View File

@ -12,8 +12,8 @@
<div class="layui-form-item"> <div class="layui-form-item">
<label class="layui-form-label">站点状态</label> <label class="layui-form-label">站点状态</label>
<div class="layui-input-block"> <div class="layui-input-block">
<input type="radio" name="status" value="normal" title="正常" lay-filter="status" {% if site.status == 'normal' %}checked{% endif %}> <input type="radio" name="status" value="normal" title="正常" lay-filter="status" {% if site.status == 'normal' %}checked="checked"{% endif %}>
<input type="radio" name="status" value="closed" title="关闭" lay-filter="status" {% if site.status == 'closed' %}checked{% endif %}> <input type="radio" name="status" value="closed" title="关闭" lay-filter="status" {% if site.status == 'closed' %}checked="checked"{% endif %}>
</div> </div>
</div> </div>
<div id="closed-tips-block" style="{{ closed_tips_display }}"> <div id="closed-tips-block" style="{{ closed_tips_display }}">
@ -27,8 +27,8 @@
<div class="layui-form-item"> <div class="layui-form-item">
<label class="layui-form-label">首页版式</label> <label class="layui-form-label">首页版式</label>
<div class="layui-input-block"> <div class="layui-input-block">
<input type="radio" name="index_tpl" value="simple" title="简洁" {% if site.index_tpl == 'simple' %}checked{% endif %}> <input type="radio" name="index_tpl" value="simple" title="简洁" {% if site.index_tpl == 'simple' %}checked="checked"{% endif %}>
<input type="radio" name="index_tpl" value="full" title="丰富" {% if site.index_tpl == 'full' %}checked{% endif %}> <input type="radio" name="index_tpl" value="full" title="丰富" {% if site.index_tpl == 'full' %}checked="checked"{% endif %}>
</div> </div>
</div> </div>
<div class="layui-form-item"> <div class="layui-form-item">
@ -92,8 +92,8 @@
<div class="layui-form-item"> <div class="layui-form-item">
<label class="layui-form-label">开启统计</label> <label class="layui-form-label">开启统计</label>
<div class="layui-input-block"> <div class="layui-input-block">
<input type="radio" name="analytics_enabled" value="1" title="是" lay-filter="analytics_enabled" {% if site.analytics_enabled == 1 %}checked{% endif %}> <input type="radio" name="analytics_enabled" value="1" title="是" lay-filter="analytics_enabled" {% if site.analytics_enabled == 1 %}checked="checked"{% endif %}>
<input type="radio" name="analytics_enabled" value="0" title="否" lay-filter="analytics_enabled" {% if site.analytics_enabled == 0 %}checked{% endif %}> <input type="radio" name="analytics_enabled" value="0" title="否" lay-filter="analytics_enabled" {% if site.analytics_enabled == 0 %}checked="checked"{% endif %}>
</div> </div>
</div> </div>
<div id="analytics-script-block" style="{{ analytics_script_display }}"> <div id="analytics-script-block" style="{{ analytics_script_display }}">

View File

@ -2,28 +2,28 @@
{% block content %} {% block content %}
{% set template = smser.template|json_decode %} {% set template = sms.template|json_decode %}
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.setting.smser'}) }}"> <form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.setting.sms'}) }}">
<fieldset class="layui-elem-field layui-field-title"> <fieldset class="layui-elem-field layui-field-title">
<legend>基础配置</legend> <legend>基础配置</legend>
</fieldset> </fieldset>
<div class="layui-form-item"> <div class="layui-form-item">
<label class="layui-form-label">App ID</label> <label class="layui-form-label">App ID</label>
<div class="layui-input-block"> <div class="layui-input-block">
<input class="layui-input" type="text" name="app_id" value="{{ smser.app_id }}" layui-verify="required"> <input class="layui-input" type="text" name="app_id" value="{{ sms.app_id }}" layui-verify="required">
</div> </div>
</div> </div>
<div class="layui-form-item"> <div class="layui-form-item">
<label class="layui-form-label">App Key</label> <label class="layui-form-label">App Key</label>
<div class="layui-input-block"> <div class="layui-input-block">
<input class="layui-input" type="text" name="app_key" value="{{ smser.app_key }}" layui-verify="required"> <input class="layui-input" type="text" name="app_key" value="{{ sms.app_key }}" layui-verify="required">
</div> </div>
</div> </div>
<div class="layui-form-item"> <div class="layui-form-item">
<label class="layui-form-label">内容签名</label> <label class="layui-form-label">内容签名</label>
<div class="layui-input-block"> <div class="layui-input-block">
<input class="layui-input" type="text" name="signature" placeholder="注意使用的是签名内容而非签名ID" value="{{ smser.signature }}" layui-verify="required"> <input class="layui-input" type="text" name="signature" placeholder="注意使用的是签名内容而非签名ID" value="{{ sms.signature }}" layui-verify="required">
</div> </div>
</div> </div>
<fieldset class="layui-elem-field layui-field-title"> <fieldset class="layui-elem-field layui-field-title">
@ -80,7 +80,7 @@
</div> </div>
</form> </form>
<form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.test.smser'}) }}"> <form class="layui-form kg-form" method="POST" action="{{ url({'for':'admin.test.sms'}) }}">
<fieldset class="layui-elem-field layui-field-title"> <fieldset class="layui-elem-field layui-field-title">
<legend>短信测试</legend> <legend>短信测试</legend>
</fieldset> </fieldset>

View File

@ -21,8 +21,8 @@
<div class="layui-form-item"> <div class="layui-form-item">
<label class="layui-form-label">访问协议</label> <label class="layui-form-label">访问协议</label>
<div class="layui-input-block"> <div class="layui-input-block">
<input type="radio" name="protocol" value="http" title="HTTP" {% if cos.protocol == "http" %}checked{% endif %}> <input type="radio" name="protocol" value="http" title="HTTP" {% if cos.protocol == "http" %}checked="checked"{% endif %}>
<input type="radio" name="protocol" value="https" title="HTTPS" {% if cos.protocol == "https" %}checked{% endif %}> <input type="radio" name="protocol" value="https" title="HTTPS" {% if cos.protocol == "https" %}checked="checked"{% endif %}>
</div> </div>
</div> </div>
<div class="layui-form-item"> <div class="layui-form-item">
@ -56,7 +56,7 @@
<td>mageMogr2/thumbnail/270x/interlace/0</td> <td>mageMogr2/thumbnail/270x/interlace/0</td>
</tr> </tr>
<tr> <tr>
<td>carousel_1100</td> <td>slide_1100</td>
<td>imageMogr2/thumbnail/1100x/interlace/0</td> <td>imageMogr2/thumbnail/1100x/interlace/0</td>
</tr> </tr>
</tbody> </tbody>

View File

@ -13,8 +13,8 @@
<div class="layui-form-item"> <div class="layui-form-item">
<label class="layui-form-label">存储方式</label> <label class="layui-form-label">存储方式</label>
<div class="layui-input-block"> <div class="layui-input-block">
<input type="radio" name="storage_type" value="nearby" title="就近存储" lay-filter="storage_type" {% if vod.storage_type == "nearby" %}checked{% endif %}> <input type="radio" name="storage_type" value="nearby" title="就近存储" lay-filter="storage_type" {% if vod.storage_type == "nearby" %}checked="checked"{% endif %}>
<input type="radio" name="storage_type" value="fixed" title="固定区域" lay-filter="storage_type" {% if vod.storage_type == "fixed" %}checked{% endif %}> <input type="radio" name="storage_type" value="fixed" title="固定区域" lay-filter="storage_type" {% if vod.storage_type == "fixed" %}checked="checked"{% endif %}>
</div> </div>
</div> </div>
<div id="storage-region-block" style="{{ storage_region_display }}"> <div id="storage-region-block" style="{{ storage_region_display }}">
@ -31,22 +31,22 @@
<div class="layui-form-item"> <div class="layui-form-item">
<label class="layui-form-label">视频格式</label> <label class="layui-form-label">视频格式</label>
<div class="layui-input-block"> <div class="layui-input-block">
<input type="radio" name="video_format" value="hls" title="HLS" lay-filter="video_format" {% if vod.video_format == "hls" %}checked{% endif %}> <input type="radio" name="video_format" value="hls" title="HLS" lay-filter="video_format" {% if vod.video_format == "hls" %}checked="checked"{% endif %}>
<input type="radio" name="video_format" value="mp4" title="MP4" disabled="disabled" lay-filter="video_format" {% if vod.video_format == "mp4" %}checked{% endif %}> <input type="radio" name="video_format" value="mp4" title="MP4" disabled="disabled" lay-filter="video_format" {% if vod.video_format == "mp4" %}checked="checked"{% endif %}>
</div> </div>
</div> </div>
<div class="layui-form-item"> <div class="layui-form-item">
<label class="layui-form-label">音频格式</label> <label class="layui-form-label">音频格式</label>
<div class="layui-input-block"> <div class="layui-input-block">
<input type="radio" name="audio_format" value="mp3" title="MP3" lay-filter="audio_format" {% if vod.audio_format == "mp3" %}checked{% endif %}> <input type="radio" name="audio_format" value="mp3" title="MP3" lay-filter="audio_format" {% if vod.audio_format == "mp3" %}checked="checked"{% endif %}>
<input type="radio" name="audio_format" value="m4a" title="M4A" disabled="disabled" lay-filter="audio_format" {% if vod.audio_format == "m4a" %}checked{% endif %}> <input type="radio" name="audio_format" value="m4a" title="M4A" disabled="disabled" lay-filter="audio_format" {% if vod.audio_format == "m4a" %}checked="checked"{% endif %}>
</div> </div>
</div> </div>
<div class="layui-form-item"> <div class="layui-form-item">
<label class="layui-form-label">开启水印</label> <label class="layui-form-label">开启水印</label>
<div class="layui-input-block"> <div class="layui-input-block">
<input type="radio" name="wmk_enabled" value="1" title="是" lay-filter="wmk_enabled" {% if vod.wmk_enabled == 1 %}checked{% endif %}> <input type="radio" name="wmk_enabled" value="1" title="是" lay-filter="wmk_enabled" {% if vod.wmk_enabled == 1 %}checked="checked"{% endif %}>
<input type="radio" name="wmk_enabled" value="0" title="否" lay-filter="wmk_enabled" {% if vod.wmk_enabled == 0 %}checked{% endif %}> <input type="radio" name="wmk_enabled" value="0" title="否" lay-filter="wmk_enabled" {% if vod.wmk_enabled == 0 %}checked="checked"{% endif %}>
</div> </div>
</div> </div>
<div id="wmk-tpl-block" style="{{ wmk_tpl_display }}"> <div id="wmk-tpl-block" style="{{ wmk_tpl_display }}">
@ -63,8 +63,8 @@
<div class="layui-form-item"> <div class="layui-form-item">
<label class="layui-form-label">分发协议</label> <label class="layui-form-label">分发协议</label>
<div class="layui-input-block"> <div class="layui-input-block">
<input type="radio" name="protocol" value="https" title="HTTPS" {% if vod.protocol == "https" %}checked{% endif %}> <input type="radio" name="protocol" value="https" title="HTTPS" {% if vod.protocol == "https" %}checked="checked"{% endif %}>
<input type="radio" name="protocol" value="http" title="HTTP" {% if vod.protocol == "http" %}checked{% endif %}> <input type="radio" name="protocol" value="http" title="HTTP" {% if vod.protocol == "http" %}checked="checked"{% endif %}>
</div> </div>
</div> </div>
<div class="layui-form-item"> <div class="layui-form-item">
@ -79,8 +79,8 @@
<div class="layui-form-item"> <div class="layui-form-item">
<label class="layui-form-label">开启防盗链</label> <label class="layui-form-label">开启防盗链</label>
<div class="layui-input-block"> <div class="layui-input-block">
<input type="radio" name="key_anti_enabled" value="1" title="是" lay-filter="key_anti_enabled" {% if vod.key_anti_enabled == 1 %}checked{% endif %}> <input type="radio" name="key_anti_enabled" value="1" title="是" lay-filter="key_anti_enabled" {% if vod.key_anti_enabled == 1 %}checked="checked"{% endif %}>
<input type="radio" name="key_anti_enabled" value="0" title="否" lay-filter="key_anti_enabled" {% if vod.key_anti_enabled == 0 %}checked{% endif %}> <input type="radio" name="key_anti_enabled" value="0" title="否" lay-filter="key_anti_enabled" {% if vod.key_anti_enabled == 0 %}checked="checked"{% endif %}>
</div> </div>
</div> </div>
<div id="key-anti-block" {{ key_anti_display }}> <div id="key-anti-block" {{ key_anti_display }}>

View File

@ -33,7 +33,7 @@
</thead> </thead>
<tbody> <tbody>
{% for item in pager.items %} {% for item in pager.items %}
{% set preview_url = url({'for':'desktop.topic.show','id':item.id}) %} {% set preview_url = url({'for':'home.topic.show','id':item.id}) %}
{% set edit_url = url({'for':'admin.topic.edit','id':item.id}) %} {% set edit_url = url({'for':'admin.topic.edit','id':item.id}) %}
{% set update_url = url({'for':'admin.topic.update','id':item.id}) %} {% set update_url = url({'for':'admin.topic.update','id':item.id}) %}
{% set delete_url = url({'for':'admin.topic.delete','id':item.id}) %} {% set delete_url = url({'for':'admin.topic.delete','id':item.id}) %}
@ -44,7 +44,7 @@
<td><span class="layui-badge layui-bg-gray">{{ item.course_count }}</span></td> <td><span class="layui-badge layui-bg-gray">{{ item.course_count }}</span></td>
<td>{{ date('Y-m-d H:i',item.create_time) }}</td> <td>{{ date('Y-m-d H:i',item.create_time) }}</td>
<td>{{ date('Y-m-d H:i',item.update_time) }}</td> <td>{{ date('Y-m-d H:i',item.update_time) }}</td>
<td><input type="checkbox" name="published" value="1" lay-skin="switch" lay-text="是|否" lay-filter="published" data-url="{{ update_url }}" {% if item.published == 1 %}checked{% endif %}></td> <td><input type="checkbox" name="published" value="1" lay-skin="switch" lay-text="是|否" lay-filter="published" data-url="{{ update_url }}" {% if item.published == 1 %}checked="checked"{% endif %}></td>
<td class="center"> <td class="center">
<div class="layui-dropdown"> <div class="layui-dropdown">
<button class="layui-btn layui-btn-sm">操作 <i class="layui-icon layui-icon-triangle-d"></i></button> <button class="layui-btn layui-btn-sm">操作 <i class="layui-icon layui-icon-triangle-d"></i></button>

View File

@ -29,18 +29,18 @@
<div class="layui-form-item"> <div class="layui-form-item">
<label class="layui-form-label">教学角色</label> <label class="layui-form-label">教学角色</label>
<div class="layui-input-block"> <div class="layui-input-block">
<input type="radio" name="edu_role" value="1" title="学员" {% if user.edu_role == 1 %}checked{% endif %}> <input type="radio" name="edu_role" value="1" title="学员" {% if user.edu_role == 1 %}checked="checked"{% endif %}>
<input type="radio" name="edu_role" value="2" title="讲师" {% if user.edu_role == 2 %}checked{% endif %}> <input type="radio" name="edu_role" value="2" title="讲师" {% if user.edu_role == 2 %}checked="checked"{% endif %}>
</div> </div>
</div> </div>
{% if auth_user.root == 1 %} {% if auth_user.root == 1 %}
<div class="layui-form-item"> <div class="layui-form-item">
<label class="layui-form-label">后台角色</label> <label class="layui-form-label">后台角色</label>
<div class="layui-input-block"> <div class="layui-input-block">
<input type="radio" name="admin_role" value="0" title="无" {% if user.admin_role == 0 %}checked{% endif %}> <input type="radio" name="admin_role" value="0" title="无" {% if user.admin_role == 0 %}checked="checked"{% endif %}>
{% for role in roles %} {% for role in roles %}
{% if role.id > 1 %} {% if role.id > 1 %}
<input type="radio" name="admin_role" value="{{ role.id }}" title="{{ role.name }}" {% if user.admin_role == role.id %}checked{% endif %}> <input type="radio" name="admin_role" value="{{ role.id }}" title="{{ role.name }}" {% if user.admin_role == role.id %}checked="checked"{% endif %}>
{% endif %} {% endif %}
{% endfor %} {% endfor %}
</div> </div>

View File

@ -68,7 +68,7 @@
</thead> </thead>
<tbody> <tbody>
{% for item in pager.items %} {% for item in pager.items %}
{% set preview_url = url({'for':'desktop.user.show','id':item.id}) %} {% set preview_url = url({'for':'home.user.show','id':item.id}) %}
{% set edit_url = url({'for':'admin.user.edit','id':item.id}) %} {% set edit_url = url({'for':'admin.user.edit','id':item.id}) %}
<tr> <tr>
<td>{{ item.id }}</td> <td>{{ item.id }}</td>

View File

@ -1,10 +0,0 @@
<div class="layui-card">
<div class="layui-card-header">教学中心</div>
<div class="layui-card-body">
<ul class="my-menu">
<li><a href="{{ url({'for':'desktop.teaching.courses'}) }}">我的课程</a></li>
<li><a href="{{ url({'for':'desktop.teaching.lives'}) }}">我的直播</a></li>
<li><a href="{{ url({'for':'desktop.teaching.consults'}) }}">课程咨询</a></li>
</ul>
</div>
</div>

View File

@ -1,19 +0,0 @@
{% extends 'templates/main.volt' %}
{% block content %}
{% set courses_url = url({'for':'desktop.topic.courses','id':topic.id}) %}
<div class="topic-info">
<div class="topic-title">{{ topic.title }}</div>
</div>
<div id="course-list" data-url="{{ courses_url }}"></div>
{% endblock %}
{% block include_js %}
{{ js_include('desktop/js/topic.show.js') }}
{% endblock %}

View File

@ -1,12 +1,12 @@
<?php <?php
namespace App\Http\Desktop\Controllers; namespace App\Http\Home\Controllers;
use App\Http\Desktop\Services\Account as AccountService; use App\Http\Home\Services\Account as AccountService;
use App\Services\Frontend\Account\EmailUpdate as EmailUpdateService; use App\Services\Logic\Account\EmailUpdate as EmailUpdateService;
use App\Services\Frontend\Account\PasswordReset as PasswordResetService; use App\Services\Logic\Account\PasswordReset as PasswordResetService;
use App\Services\Frontend\Account\PasswordUpdate as PasswordUpdateService; use App\Services\Logic\Account\PasswordUpdate as PasswordUpdateService;
use App\Services\Frontend\Account\PhoneUpdate as PhoneUpdateService; use App\Services\Logic\Account\PhoneUpdate as PhoneUpdateService;
use Phalcon\Mvc\View; use Phalcon\Mvc\View;
/** /**
@ -16,17 +16,17 @@ class AccountController extends Controller
{ {
/** /**
* @Get("/register", name="desktop.account.register") * @Get("/register", name="home.account.register")
*/ */
public function registerAction() public function registerAction()
{ {
if ($this->authUser->id > 0) { if ($this->authUser->id > 0) {
$this->response->redirect('/'); return $this->response->redirect('/');
} }
$service = new AccountService(); $service = new AccountService();
$captcha = $service->getSectionSettings('captcha'); $captcha = $service->getSettings('captcha');
$returnUrl = $this->request->getHTTPReferer(); $returnUrl = $this->request->getHTTPReferer();
@ -35,7 +35,7 @@ class AccountController extends Controller
} }
/** /**
* @Post("/register", name="desktop.account.do_register") * @Post("/register", name="home.account.do_register")
*/ */
public function doRegisterAction() public function doRegisterAction()
{ {
@ -54,7 +54,7 @@ class AccountController extends Controller
} }
/** /**
* @Get("/login", name="desktop.account.login") * @Get("/login", name="home.account.login")
*/ */
public function loginAction() public function loginAction()
{ {
@ -64,7 +64,7 @@ class AccountController extends Controller
$service = new AccountService(); $service = new AccountService();
$captcha = $service->getSectionSettings('captcha'); $captcha = $service->getSettings('captcha');
$returnUrl = $this->request->getHTTPReferer(); $returnUrl = $this->request->getHTTPReferer();
@ -73,7 +73,7 @@ class AccountController extends Controller
} }
/** /**
* @Post("/password/login", name="desktop.account.pwd_login") * @Post("/password/login", name="home.account.pwd_login")
*/ */
public function loginByPasswordAction() public function loginByPasswordAction()
{ {
@ -83,7 +83,7 @@ class AccountController extends Controller
$returnUrl = $this->request->getPost('return_url', 'string'); $returnUrl = $this->request->getPost('return_url', 'string');
$location = $returnUrl ?: $this->url->get(['for' => 'desktop.index']); $location = $returnUrl ?: $this->url->get(['for' => 'home.index']);
$content = ['location' => $location]; $content = ['location' => $location];
@ -91,7 +91,7 @@ class AccountController extends Controller
} }
/** /**
* @Post("/verify/login", name="desktop.account.verify_login") * @Post("/verify/login", name="home.account.verify_login")
*/ */
public function loginByVerifyAction() public function loginByVerifyAction()
{ {
@ -101,7 +101,7 @@ class AccountController extends Controller
$returnUrl = $this->request->getPost('return_url', 'string'); $returnUrl = $this->request->getPost('return_url', 'string');
$location = $returnUrl ?: $this->url->get(['for' => 'desktop.index']); $location = $returnUrl ?: $this->url->get(['for' => 'home.index']);
$content = ['location' => $location]; $content = ['location' => $location];
@ -109,7 +109,7 @@ class AccountController extends Controller
} }
/** /**
* @Get("/logout", name="desktop.account.logout") * @Get("/logout", name="home.account.logout")
*/ */
public function logoutAction() public function logoutAction()
{ {
@ -117,38 +117,38 @@ class AccountController extends Controller
$service->logout(); $service->logout();
$this->response->redirect(['for' => 'desktop.index']); $this->response->redirect(['for' => 'home.index']);
} }
/** /**
* @Get("/password/forget", name="desktop.account.forget_pwd") * @Get("/password/forget", name="home.account.forget_pwd")
*/ */
public function forgetPasswordAction() public function forgetPasswordAction()
{ {
if ($this->authUser->id > 0) { if ($this->authUser->id > 0) {
$this->response->redirect(['for' => 'desktop.index']); $this->response->redirect(['for' => 'home.index']);
} }
$service = new AccountService(); $service = new AccountService();
$captcha = $service->getSectionSettings('captcha'); $captcha = $service->getSettings('captcha');
$this->view->pick('account/forget_password'); $this->view->pick('account/forget_password');
$this->view->setVar('captcha', $captcha); $this->view->setVar('captcha', $captcha);
} }
/** /**
* @Get("/password/edit", name="desktop.account.edit_pwd") * @Get("/password/edit", name="home.account.edit_pwd")
*/ */
public function editPasswordAction() public function editPasswordAction()
{ {
if ($this->authUser->id == 0) { if ($this->authUser->id == 0) {
$this->response->redirect(['for' => 'desktop.account.login']); $this->response->redirect(['for' => 'home.account.login']);
} }
$service = new AccountService(); $service = new AccountService();
$captcha = $service->getSectionSettings('captcha'); $captcha = $service->getSettings('captcha');
$this->view->setRenderLevel(View::LEVEL_ACTION_VIEW); $this->view->setRenderLevel(View::LEVEL_ACTION_VIEW);
$this->view->pick('account/edit_password'); $this->view->pick('account/edit_password');
@ -156,17 +156,17 @@ class AccountController extends Controller
} }
/** /**
* @Get("/phone/edit", name="desktop.account.edit_phone") * @Get("/phone/edit", name="home.account.edit_phone")
*/ */
public function editPhoneAction() public function editPhoneAction()
{ {
if ($this->authUser->id == 0) { if ($this->authUser->id == 0) {
$this->response->redirect(['for' => 'desktop.account.login']); $this->response->redirect(['for' => 'home.account.login']);
} }
$service = new AccountService(); $service = new AccountService();
$captcha = $service->getSectionSettings('captcha'); $captcha = $service->getSettings('captcha');
$this->view->setRenderLevel(View::LEVEL_ACTION_VIEW); $this->view->setRenderLevel(View::LEVEL_ACTION_VIEW);
$this->view->pick('account/edit_phone'); $this->view->pick('account/edit_phone');
@ -174,17 +174,17 @@ class AccountController extends Controller
} }
/** /**
* @Get("/email/edit", name="desktop.account.edit_email") * @Get("/email/edit", name="home.account.edit_email")
*/ */
public function editEmailAction() public function editEmailAction()
{ {
if ($this->authUser->id == 0) { if ($this->authUser->id == 0) {
$this->response->redirect(['for' => 'desktop.account.login']); $this->response->redirect(['for' => 'home.account.login']);
} }
$service = new AccountService(); $service = new AccountService();
$captcha = $service->getSectionSettings('captcha'); $captcha = $service->getSettings('captcha');
$this->view->setRenderLevel(View::LEVEL_ACTION_VIEW); $this->view->setRenderLevel(View::LEVEL_ACTION_VIEW);
$this->view->pick('account/edit_email'); $this->view->pick('account/edit_email');
@ -192,7 +192,7 @@ class AccountController extends Controller
} }
/** /**
* @Post("/password/reset", name="desktop.account.reset_pwd") * @Post("/password/reset", name="home.account.reset_pwd")
*/ */
public function resetPasswordAction() public function resetPasswordAction()
{ {
@ -200,7 +200,7 @@ class AccountController extends Controller
$service->handle(); $service->handle();
$loginUrl = $this->url->get(['for' => 'desktop.account.login']); $loginUrl = $this->url->get(['for' => 'home.account.login']);
$content = [ $content = [
'location' => $loginUrl, 'location' => $loginUrl,
@ -211,7 +211,7 @@ class AccountController extends Controller
} }
/** /**
* @Post("/phone/update", name="desktop.account.update_phone") * @Post("/phone/update", name="home.account.update_phone")
*/ */
public function updatePhoneAction() public function updatePhoneAction()
{ {
@ -225,7 +225,7 @@ class AccountController extends Controller
} }
/** /**
* @Post("/email/update", name="desktop.account.update_email") * @Post("/email/update", name="home.account.update_email")
*/ */
public function updateEmailAction() public function updateEmailAction()
{ {
@ -239,7 +239,7 @@ class AccountController extends Controller
} }
/** /**
* @Post("/password/update", name="desktop.account.update_pwd") * @Post("/password/update", name="home.account.update_pwd")
*/ */
public function updatePasswordAction() public function updatePasswordAction()
{ {

View File

@ -1,14 +1,14 @@
<?php <?php
namespace App\Http\Desktop\Controllers; namespace App\Http\Home\Controllers;
use App\Models\ChapterLive as LiveModel; use App\Models\ChapterLive as LiveModel;
use App\Models\Course as CourseModel; use App\Models\Course as CourseModel;
use App\Services\Frontend\Chapter\ChapterInfo as ChapterInfoService; use App\Services\Logic\Chapter\ChapterInfo as ChapterInfoService;
use App\Services\Frontend\Chapter\ChapterLike as ChapterLikeService; use App\Services\Logic\Chapter\ChapterLike as ChapterLikeService;
use App\Services\Frontend\Chapter\DanmuList as ChapterDanmuListService; use App\Services\Logic\Chapter\DanmuList as ChapterDanmuListService;
use App\Services\Frontend\Chapter\Learning as ChapterLearningService; use App\Services\Logic\Chapter\Learning as ChapterLearningService;
use App\Services\Frontend\Course\ChapterList as CourseChapterListService; use App\Services\Logic\Course\ChapterList as CourseChapterListService;
/** /**
* @RoutePrefix("/chapter") * @RoutePrefix("/chapter")
@ -17,7 +17,7 @@ class ChapterController extends Controller
{ {
/** /**
* @Get("/{id:[0-9]+}", name="desktop.chapter.show") * @Get("/{id:[0-9]+}", name="home.chapter.show")
*/ */
public function showAction($id) public function showAction($id)
{ {
@ -28,8 +28,8 @@ class ChapterController extends Controller
$owned = $chapter['me']['owned'] ?? false; $owned = $chapter['me']['owned'] ?? false;
if (!$owned) { if (!$owned) {
$this->response->redirect([ return $this->response->redirect([
'for' => 'desktop.course.show', 'for' => 'home.course.show',
'id' => $chapter['course']['id'], 'id' => $chapter['course']['id'],
]); ]);
} }
@ -63,7 +63,7 @@ class ChapterController extends Controller
} }
/** /**
* @Get("/{id:[0-9]+}/danmu", name="desktop.chapter.danmu") * @Get("/{id:[0-9]+}/danmu", name="home.chapter.danmu")
*/ */
public function danmuAction($id) public function danmuAction($id)
{ {
@ -75,7 +75,7 @@ class ChapterController extends Controller
} }
/** /**
* @Post("/{id:[0-9]+}/like", name="desktop.chapter.like") * @Post("/{id:[0-9]+}/like", name="home.chapter.like")
*/ */
public function likeAction($id) public function likeAction($id)
{ {
@ -91,7 +91,7 @@ class ChapterController extends Controller
} }
/** /**
* @Post("/{id:[0-9]+}/learning", name="desktop.chapter.learning") * @Post("/{id:[0-9]+}/learning", name="home.chapter.learning")
*/ */
public function learningAction($id) public function learningAction($id)
{ {

View File

@ -1,13 +1,13 @@
<?php <?php
namespace App\Http\Desktop\Controllers; namespace App\Http\Home\Controllers;
use App\Services\Frontend\Consult\ConsultCreate as ConsultCreateService; use App\Services\Logic\Consult\ConsultCreate as ConsultCreateService;
use App\Services\Frontend\Consult\ConsultDelete as ConsultDeleteService; use App\Services\Logic\Consult\ConsultDelete as ConsultDeleteService;
use App\Services\Frontend\Consult\ConsultInfo as ConsultInfoService; use App\Services\Logic\Consult\ConsultInfo as ConsultInfoService;
use App\Services\Frontend\Consult\ConsultLike as ConsultLikeService; use App\Services\Logic\Consult\ConsultLike as ConsultLikeService;
use App\Services\Frontend\Consult\ConsultReply as ConsultReplyService; use App\Services\Logic\Consult\ConsultReply as ConsultReplyService;
use App\Services\Frontend\Consult\ConsultUpdate as ConsultUpdateService; use App\Services\Logic\Consult\ConsultUpdate as ConsultUpdateService;
/** /**
* @RoutePrefix("/consult") * @RoutePrefix("/consult")
@ -16,7 +16,7 @@ class ConsultController extends Controller
{ {
/** /**
* @Get("/add", name="desktop.consult.add") * @Get("/add", name="home.consult.add")
*/ */
public function addAction() public function addAction()
{ {
@ -24,7 +24,7 @@ class ConsultController extends Controller
} }
/** /**
* @Get("/{id:[0-9]+}/show", name="desktop.consult.show") * @Get("/{id:[0-9]+}/show", name="home.consult.show")
*/ */
public function showAction($id) public function showAction($id)
{ {
@ -36,7 +36,7 @@ class ConsultController extends Controller
} }
/** /**
* @Get("/{id:[0-9]+}/edit", name="desktop.consult.edit") * @Get("/{id:[0-9]+}/edit", name="home.consult.edit")
*/ */
public function editAction($id) public function editAction($id)
{ {
@ -48,7 +48,7 @@ class ConsultController extends Controller
} }
/** /**
* @Post("/create", name="desktop.consult.create") * @Post("/create", name="home.consult.create")
*/ */
public function createAction() public function createAction()
{ {
@ -66,7 +66,7 @@ class ConsultController extends Controller
} }
/** /**
* @Post("/{id:[0-9]+}/update", name="desktop.consult.update") * @Post("/{id:[0-9]+}/update", name="home.consult.update")
*/ */
public function updateAction($id) public function updateAction($id)
{ {
@ -80,7 +80,7 @@ class ConsultController extends Controller
} }
/** /**
* @Post("/{id:[0-9]+}/delete", name="desktop.consult.delete") * @Post("/{id:[0-9]+}/delete", name="home.consult.delete")
*/ */
public function deleteAction($id) public function deleteAction($id)
{ {
@ -94,7 +94,7 @@ class ConsultController extends Controller
} }
/** /**
* @Route("/{id:[0-9]+}/reply", name="desktop.consult.reply") * @Route("/{id:[0-9]+}/reply", name="home.consult.reply")
*/ */
public function replyAction($id) public function replyAction($id)
{ {
@ -119,7 +119,7 @@ class ConsultController extends Controller
} }
/** /**
* @Post("/{id:[0-9]+}/like", name="desktop.consult.like") * @Post("/{id:[0-9]+}/like", name="home.consult.like")
*/ */
public function likeAction($id) public function likeAction($id)
{ {

View File

@ -1,13 +1,13 @@
<?php <?php
namespace App\Http\Desktop\Controllers; namespace App\Http\Home\Controllers;
use App\Caches\NavTreeList as NavCache; use App\Caches\NavTreeList as NavCache;
use App\Caches\Setting as SettingCache; use App\Caches\Setting as SettingCache;
use App\Library\AppInfo; use App\Library\AppInfo as AppInfo;
use App\Library\Seo; use App\Library\Seo as Seo;
use App\Models\User as UserModel; use App\Models\User as UserModel;
use App\Services\Auth\Desktop as DesktopAuth; use App\Services\Auth\Home as HomeAuth;
use App\Traits\Response as ResponseTrait; use App\Traits\Response as ResponseTrait;
use App\Traits\Security as SecurityTrait; use App\Traits\Security as SecurityTrait;
use Phalcon\Config; use Phalcon\Config;
@ -52,7 +52,6 @@ class Controller extends \Phalcon\Mvc\Controller
public function beforeExecuteRoute(Dispatcher $dispatcher) public function beforeExecuteRoute(Dispatcher $dispatcher)
{ {
$this->siteInfo = $this->getSiteInfo(); $this->siteInfo = $this->getSiteInfo();
$this->authUser = $this->getAuthUser(); $this->authUser = $this->getAuthUser();
$this->checkSiteStatus(); $this->checkSiteStatus();
@ -91,7 +90,7 @@ class Controller extends \Phalcon\Mvc\Controller
protected function getAuthUser() protected function getAuthUser()
{ {
/** /**
* @var DesktopAuth $auth * @var HomeAuth $auth
*/ */
$auth = $this->getDI()->get('auth'); $auth = $this->getDI()->get('auth');
@ -140,7 +139,7 @@ class Controller extends \Phalcon\Mvc\Controller
return [ return [
'main' => $cache->get('im.main'), 'main' => $cache->get('im.main'),
'cs' => $cache->get('im.cs'), 'cs' => $cache->get('im.cs'),
'websocket' => $websocket, 'ws' => $websocket,
]; ];
} }

View File

@ -1,19 +1,19 @@
<?php <?php
namespace App\Http\Desktop\Controllers; namespace App\Http\Home\Controllers;
use App\Http\Desktop\Services\CourseQuery as CourseQueryService; use App\Http\Home\Services\CourseQuery as CourseQueryService;
use App\Services\Frontend\Course\ChapterList as CourseChapterListService; use App\Services\Logic\Course\ChapterList as CourseChapterListService;
use App\Services\Frontend\Course\ConsultList as CourseConsultListService; use App\Services\Logic\Course\ConsultList as CourseConsultListService;
use App\Services\Frontend\Course\CourseFavorite as CourseFavoriteService; use App\Services\Logic\Course\CourseFavorite as CourseFavoriteService;
use App\Services\Frontend\Course\CourseInfo as CourseInfoService; use App\Services\Logic\Course\CourseInfo as CourseInfoService;
use App\Services\Frontend\Course\CourseList as CourseListService; use App\Services\Logic\Course\CourseList as CourseListService;
use App\Services\Frontend\Course\PackageList as CoursePackageListService; use App\Services\Logic\Course\PackageList as CoursePackageListService;
use App\Services\Frontend\Course\RecommendedList as CourseRecommendedListService; use App\Services\Logic\Course\RecommendedList as CourseRecommendedListService;
use App\Services\Frontend\Course\RelatedList as CourseRelatedListService; use App\Services\Logic\Course\RelatedList as CourseRelatedListService;
use App\Services\Frontend\Course\ReviewList as CourseReviewListService; use App\Services\Logic\Course\ReviewList as CourseReviewListService;
use App\Services\Frontend\Course\TopicList as CourseTopicListService; use App\Services\Logic\Course\TopicList as CourseTopicListService;
use App\Services\Frontend\Reward\OptionList as RewardOptionList; use App\Services\Logic\Reward\OptionList as RewardOptionList;
use Phalcon\Mvc\View; use Phalcon\Mvc\View;
/** /**
@ -23,7 +23,7 @@ class CourseController extends Controller
{ {
/** /**
* @Get("/list", name="desktop.course.list") * @Get("/list", name="home.course.list")
*/ */
public function listAction() public function listAction()
{ {
@ -48,7 +48,7 @@ class CourseController extends Controller
} }
/** /**
* @Get("/pager", name="desktop.course.pager") * @Get("/pager", name="home.course.pager")
*/ */
public function pagerAction() public function pagerAction()
{ {
@ -64,7 +64,7 @@ class CourseController extends Controller
} }
/** /**
* @Get("/{id:[0-9]+}", name="desktop.course.show") * @Get("/{id:[0-9]+}", name="home.course.show")
*/ */
public function showAction($id) public function showAction($id)
{ {
@ -90,7 +90,7 @@ class CourseController extends Controller
} }
/** /**
* @Get("/{id:[0-9]+}/packages", name="desktop.course.packages") * @Get("/{id:[0-9]+}/packages", name="home.course.packages")
*/ */
public function packagesAction($id) public function packagesAction($id)
{ {
@ -99,12 +99,11 @@ class CourseController extends Controller
$packages = $service->handle($id); $packages = $service->handle($id);
$this->view->setRenderLevel(View::LEVEL_ACTION_VIEW); $this->view->setRenderLevel(View::LEVEL_ACTION_VIEW);
$this->view->pick('course/packages');
$this->view->setVar('packages', $packages); $this->view->setVar('packages', $packages);
} }
/** /**
* @Get("/{id:[0-9]+}/consults", name="desktop.course.consults") * @Get("/{id:[0-9]+}/consults", name="home.course.consults")
*/ */
public function consultsAction($id) public function consultsAction($id)
{ {
@ -115,12 +114,11 @@ class CourseController extends Controller
$pager->target = 'tab-consults'; $pager->target = 'tab-consults';
$this->view->setRenderLevel(View::LEVEL_ACTION_VIEW); $this->view->setRenderLevel(View::LEVEL_ACTION_VIEW);
$this->view->pick('course/consults');
$this->view->setVar('pager', $pager); $this->view->setVar('pager', $pager);
} }
/** /**
* @Get("/{id:[0-9]+}/reviews", name="desktop.course.reviews") * @Get("/{id:[0-9]+}/reviews", name="home.course.reviews")
*/ */
public function reviewsAction($id) public function reviewsAction($id)
{ {
@ -131,12 +129,11 @@ class CourseController extends Controller
$pager->target = 'tab-reviews'; $pager->target = 'tab-reviews';
$this->view->setRenderLevel(View::LEVEL_ACTION_VIEW); $this->view->setRenderLevel(View::LEVEL_ACTION_VIEW);
$this->view->pick('course/reviews');
$this->view->setVar('pager', $pager); $this->view->setVar('pager', $pager);
} }
/** /**
* @Get("/{id:[0-9]+}/recommended", name="desktop.course.recommended") * @Get("/{id:[0-9]+}/recommended", name="home.course.recommended")
*/ */
public function recommendedAction($id) public function recommendedAction($id)
{ {
@ -145,12 +142,11 @@ class CourseController extends Controller
$courses = $service->handle($id); $courses = $service->handle($id);
$this->view->setRenderLevel(View::LEVEL_ACTION_VIEW); $this->view->setRenderLevel(View::LEVEL_ACTION_VIEW);
$this->view->pick('course/recommended');
$this->view->setVar('courses', $courses); $this->view->setVar('courses', $courses);
} }
/** /**
* @Get("/{id:[0-9]+}/related", name="desktop.course.related") * @Get("/{id:[0-9]+}/related", name="home.course.related")
*/ */
public function relatedAction($id) public function relatedAction($id)
{ {
@ -159,12 +155,11 @@ class CourseController extends Controller
$courses = $service->handle($id); $courses = $service->handle($id);
$this->view->setRenderLevel(View::LEVEL_ACTION_VIEW); $this->view->setRenderLevel(View::LEVEL_ACTION_VIEW);
$this->view->pick('course/related');
$this->view->setVar('courses', $courses); $this->view->setVar('courses', $courses);
} }
/** /**
* @Get("/{id:[0-9]+}/topics", name="desktop.course.topics") * @Get("/{id:[0-9]+}/topics", name="home.course.topics")
*/ */
public function topicsAction($id) public function topicsAction($id)
{ {
@ -173,12 +168,11 @@ class CourseController extends Controller
$topics = $service->handle($id); $topics = $service->handle($id);
$this->view->setRenderLevel(View::LEVEL_ACTION_VIEW); $this->view->setRenderLevel(View::LEVEL_ACTION_VIEW);
$this->view->pick('course/topics');
$this->view->setVar('topics', $topics); $this->view->setVar('topics', $topics);
} }
/** /**
* @Post("/{id:[0-9]+}/favorite", name="desktop.course.favorite") * @Post("/{id:[0-9]+}/favorite", name="home.course.favorite")
*/ */
public function favoriteAction($id) public function favoriteAction($id)
{ {

View File

@ -1,9 +1,9 @@
<?php <?php
namespace App\Http\Desktop\Controllers; namespace App\Http\Home\Controllers;
use App\Services\Frontend\Danmu\DanmuCreate as DanmuCreateService; use App\Services\Logic\Danmu\DanmuCreate as DanmuCreateService;
use App\Services\Frontend\Danmu\DanmuInfo as DanmuInfoService; use App\Services\Logic\Danmu\DanmuInfo as DanmuInfoService;
/** /**
* @RoutePrefix("/danmu") * @RoutePrefix("/danmu")
@ -12,7 +12,7 @@ class DanmuController extends Controller
{ {
/** /**
* @Post("/create", name="desktop.danmu.create") * @Post("/create", name="home.danmu.create")
*/ */
public function createAction() public function createAction()
{ {

View File

@ -1,6 +1,6 @@
<?php <?php
namespace App\Http\Desktop\Controllers; namespace App\Http\Home\Controllers;
use App\Traits\Response as ResponseTrait; use App\Traits\Response as ResponseTrait;
@ -13,7 +13,7 @@ class ErrorController extends \Phalcon\Mvc\Controller
use ResponseTrait; use ResponseTrait;
/** /**
* @Get("/400", name="desktop.error.400") * @Get("/400", name="home.error.400")
*/ */
public function show400Action() public function show400Action()
{ {
@ -21,7 +21,7 @@ class ErrorController extends \Phalcon\Mvc\Controller
} }
/** /**
* @Get("/401", name="desktop.error.401") * @Get("/401", name="home.error.401")
*/ */
public function show401Action() public function show401Action()
{ {
@ -29,7 +29,7 @@ class ErrorController extends \Phalcon\Mvc\Controller
} }
/** /**
* @Get("/403", name="desktop.error.403") * @Get("/403", name="home.error.403")
*/ */
public function show403Action() public function show403Action()
{ {
@ -37,7 +37,7 @@ class ErrorController extends \Phalcon\Mvc\Controller
} }
/** /**
* @Get("/404", name="desktop.error.404") * @Get("/404", name="home.error.404")
*/ */
public function show404Action() public function show404Action()
{ {
@ -52,7 +52,7 @@ class ErrorController extends \Phalcon\Mvc\Controller
} }
/** /**
* @Get("/500", name="desktop.error.500") * @Get("/500", name="home.error.500")
*/ */
public function show500Action() public function show500Action()
{ {
@ -60,7 +60,7 @@ class ErrorController extends \Phalcon\Mvc\Controller
} }
/** /**
* @Get("/503", name="desktop.error.503") * @Get("/503", name="home.error.503")
*/ */
public function show503Action() public function show503Action()
{ {
@ -68,7 +68,7 @@ class ErrorController extends \Phalcon\Mvc\Controller
} }
/** /**
* @Get("/maintain", name="desktop.error.maintain") * @Get("/maintain", name="home.error.maintain")
*/ */
public function maintainAction() public function maintainAction()
{ {

View File

@ -1,9 +1,9 @@
<?php <?php
namespace App\Http\Desktop\Controllers; namespace App\Http\Home\Controllers;
use App\Services\Frontend\Help\HelpInfo as HelpInfoService; use App\Services\Logic\Help\HelpInfo as HelpInfoService;
use App\Services\Frontend\Help\HelpList as HelpListService; use App\Services\Logic\Help\HelpList as HelpListService;
/** /**
* @RoutePrefix("/help") * @RoutePrefix("/help")
@ -12,7 +12,7 @@ class HelpController extends Controller
{ {
/** /**
* @Get("/", name="desktop.help.index") * @Get("/", name="home.help.index")
*/ */
public function indexAction() public function indexAction()
{ {
@ -26,7 +26,7 @@ class HelpController extends Controller
} }
/** /**
* @Get("/{id:[0-9]+}", name="desktop.help.show") * @Get("/{id:[0-9]+}", name="home.help.show")
*/ */
public function showAction($id) public function showAction($id)
{ {

View File

@ -1,8 +1,8 @@
<?php <?php
namespace App\Http\Desktop\Controllers; namespace App\Http\Home\Controllers;
use App\Http\Desktop\Services\Im as ImService; use App\Http\Home\Services\Im as ImService;
use App\Traits\Response as ResponseTrait; use App\Traits\Response as ResponseTrait;
use Phalcon\Mvc\View; use Phalcon\Mvc\View;
@ -19,12 +19,12 @@ class ImController extends Controller
parent::initialize(); parent::initialize();
if ($this->authUser->id == 0) { if ($this->authUser->id == 0) {
return $this->response->redirect(['for' => 'desktop.account.login']); return $this->response->redirect(['for' => 'home.account.login']);
} }
} }
/** /**
* @Get("/", name="desktop.im.index") * @Get("/", name="home.im.index")
*/ */
public function indexAction() public function indexAction()
{ {
@ -44,7 +44,7 @@ class ImController extends Controller
} }
/** /**
* @Get("/cs", name="desktop.im.cs") * @Get("/cs", name="home.im.cs")
*/ */
public function csAction() public function csAction()
{ {
@ -56,7 +56,7 @@ class ImController extends Controller
} }
/** /**
* @Get("/init", name="desktop.im.init") * @Get("/init", name="home.im.init")
*/ */
public function initAction() public function initAction()
{ {
@ -68,7 +68,7 @@ class ImController extends Controller
} }
/** /**
* @Get("/group/users", name="desktop.im.group_users") * @Get("/group/users", name="home.im.group_users")
*/ */
public function groupUsersAction() public function groupUsersAction()
{ {
@ -80,7 +80,7 @@ class ImController extends Controller
} }
/** /**
* @Get("/msgbox", name="desktop.im.msgbox") * @Get("/msgbox", name="home.im.msgbox")
*/ */
public function msgboxAction() public function msgboxAction()
{ {
@ -88,12 +88,11 @@ class ImController extends Controller
$pager = $service->getNotices(); $pager = $service->getNotices();
$this->view->pick('im/msgbox');
$this->view->setVar('pager', $pager); $this->view->setVar('pager', $pager);
} }
/** /**
* @Get("/chatlog", name="desktop.im.chatlog") * @Get("/chatlog", name="home.im.chatlog")
*/ */
public function chatlogAction() public function chatlogAction()
{ {
@ -102,12 +101,11 @@ class ImController extends Controller
$pager = $service->getChatMessages(); $pager = $service->getChatMessages();
$this->view->setRenderLevel(View::LEVEL_ACTION_VIEW); $this->view->setRenderLevel(View::LEVEL_ACTION_VIEW);
$this->view->pick('im/chatlog');
$this->view->setVar('pager', $pager); $this->view->setVar('pager', $pager);
} }
/** /**
* @Get("/friend/msg/unread", name="desktop.im.unread_friend_msg") * @Get("/friend/msg/unread", name="home.im.unread_friend_msg")
*/ */
public function unreadFriendMessageAction() public function unreadFriendMessageAction()
{ {
@ -121,7 +119,7 @@ class ImController extends Controller
} }
/** /**
* @Get("/notice/unread", name="desktop.im.unread_notice") * @Get("/notice/unread", name="home.im.unread_notice")
*/ */
public function unreadNoticeAction() public function unreadNoticeAction()
{ {
@ -133,7 +131,7 @@ class ImController extends Controller
} }
/** /**
* @Get("/notice", name="desktop.im.notice") * @Get("/notice", name="home.im.notice")
*/ */
public function noticeAction() public function noticeAction()
{ {
@ -145,7 +143,7 @@ class ImController extends Controller
} }
/** /**
* @Post("/notice/read", name="desktop.im.read_notice") * @Post("/notice/read", name="home.im.read_notice")
*/ */
public function readNoticeAction() public function readNoticeAction()
{ {
@ -157,7 +155,7 @@ class ImController extends Controller
} }
/** /**
* @Get("/friend/status", name="desktop.im.friend_status") * @Get("/friend/status", name="home.im.friend_status")
*/ */
public function friendStatusAction() public function friendStatusAction()
{ {
@ -169,7 +167,7 @@ class ImController extends Controller
} }
/** /**
* @Get("/chat/history", name="desktop.im.chat_history") * @Get("/chat/history", name="home.im.chat_history")
*/ */
public function chatHistoryAction() public function chatHistoryAction()
{ {
@ -181,7 +179,7 @@ class ImController extends Controller
} }
/** /**
* @Post("/user/bind", name="desktop.im.bind_user") * @Post("/user/bind", name="home.im.bind_user")
*/ */
public function bindUserAction() public function bindUserAction()
{ {
@ -193,7 +191,7 @@ class ImController extends Controller
} }
/** /**
* @Post("/msg/chat/send", name="desktop.im.send_chat_msg") * @Post("/msg/chat/send", name="home.im.send_chat_msg")
*/ */
public function sendChatMessageAction() public function sendChatMessageAction()
{ {
@ -208,7 +206,7 @@ class ImController extends Controller
} }
/** /**
* @Post("/msg/cs/send", name="desktop.im.send_cs_msg") * @Post("/msg/cs/send", name="home.im.send_cs_msg")
*/ */
public function sendCsMessageAction() public function sendCsMessageAction()
{ {
@ -223,7 +221,7 @@ class ImController extends Controller
} }
/** /**
* @Post("/status/update", name="desktop.im.update_status") * @Post("/status/update", name="home.im.update_status")
*/ */
public function updateStatusAction() public function updateStatusAction()
{ {
@ -235,7 +233,7 @@ class ImController extends Controller
} }
/** /**
* @Post("/sign/update", name="desktop.desktop.im.update_sign") * @Post("/sign/update", name="home.home.im.update_sign")
*/ */
public function updateSignatureAction() public function updateSignatureAction()
{ {
@ -247,7 +245,7 @@ class ImController extends Controller
} }
/** /**
* @Post("/skin/update", name="desktop.desktop.im.update_skin") * @Post("/skin/update", name="home.home.im.update_skin")
*/ */
public function updateSKinAction() public function updateSKinAction()
{ {
@ -259,7 +257,7 @@ class ImController extends Controller
} }
/** /**
* @Post("/friend/apply", name="desktop.im.apply_friend") * @Post("/friend/apply", name="home.im.apply_friend")
*/ */
public function applyFriendAction() public function applyFriendAction()
{ {
@ -273,7 +271,7 @@ class ImController extends Controller
} }
/** /**
* @Post("/friend/accept", name="desktop.im.accept_friend") * @Post("/friend/accept", name="home.im.accept_friend")
*/ */
public function acceptFriendAction() public function acceptFriendAction()
{ {
@ -285,7 +283,7 @@ class ImController extends Controller
} }
/** /**
* @Post("/friend/refuse", name="desktop.im.refuse_friend") * @Post("/friend/refuse", name="home.im.refuse_friend")
*/ */
public function refuseFriendAction() public function refuseFriendAction()
{ {
@ -297,7 +295,7 @@ class ImController extends Controller
} }
/** /**
* @Post("/group/apply", name="desktop.im.apply_group") * @Post("/group/apply", name="home.im.apply_group")
*/ */
public function applyGroupAction() public function applyGroupAction()
{ {
@ -311,7 +309,7 @@ class ImController extends Controller
} }
/** /**
* @Post("/group/accept", name="desktop.desktop.im.accept_group") * @Post("/group/accept", name="home.home.im.accept_group")
*/ */
public function acceptGroupAction() public function acceptGroupAction()
{ {
@ -323,7 +321,7 @@ class ImController extends Controller
} }
/** /**
* @Post("/group/refuse", name="desktop.desktop.im.refuse_group") * @Post("/group/refuse", name="home.home.im.refuse_group")
*/ */
public function refuseGroupAction() public function refuseGroupAction()
{ {
@ -335,7 +333,7 @@ class ImController extends Controller
} }
/** /**
* @Post("/friend/{id:[0-9]+}/quit", name="desktop.im.quit_friend") * @Post("/friend/{id:[0-9]+}/quit", name="home.im.quit_friend")
*/ */
public function quitFriendAction($id) public function quitFriendAction($id)
{ {
@ -349,7 +347,7 @@ class ImController extends Controller
} }
/** /**
* @Post("/group/{id:[0-9]+}/quit", name="desktop.im.quit_group") * @Post("/group/{id:[0-9]+}/quit", name="home.im.quit_group")
*/ */
public function quitGroupAction($id) public function quitGroupAction($id)
{ {

View File

@ -1,8 +1,8 @@
<?php <?php
namespace App\Http\Desktop\Controllers; namespace App\Http\Home\Controllers;
use App\Http\Desktop\Services\ImGroup as ImGroupService; use App\Http\Home\Services\ImGroup as ImGroupService;
use Phalcon\Mvc\View; use Phalcon\Mvc\View;
/** /**
@ -12,7 +12,7 @@ class ImGroupController extends Controller
{ {
/** /**
* @Get("/list", name="desktop.group.list") * @Get("/list", name="home.group.list")
*/ */
public function listAction() public function listAction()
{ {
@ -22,7 +22,7 @@ class ImGroupController extends Controller
} }
/** /**
* @Get("/pager", name="desktop.group.pager") * @Get("/pager", name="home.group.pager")
*/ */
public function pagerAction() public function pagerAction()
{ {
@ -38,7 +38,7 @@ class ImGroupController extends Controller
} }
/** /**
* @Get("/{id:[0-9]+}", name="desktop.group.show") * @Get("/{id:[0-9]+}", name="home.group.show")
*/ */
public function showAction($id) public function showAction($id)
{ {
@ -53,7 +53,7 @@ class ImGroupController extends Controller
} }
/** /**
* @Get("/{id:[0-9]+}/users", name="desktop.group.users") * @Get("/{id:[0-9]+}/users", name="home.group.users")
*/ */
public function usersAction($id) public function usersAction($id)
{ {
@ -69,7 +69,7 @@ class ImGroupController extends Controller
} }
/** /**
* @Get("/{id:[0-9]+}/users/active", name="desktop.group.active_users") * @Get("/{id:[0-9]+}/users/active", name="home.group.active_users")
*/ */
public function activeUsersAction($id) public function activeUsersAction($id)
{ {

View File

@ -1,8 +1,8 @@
<?php <?php
namespace App\Http\Desktop\Controllers; namespace App\Http\Home\Controllers;
use App\Http\Desktop\Services\ImGroup as ImGroupService; use App\Http\Home\Services\ImGroup as ImGroupService;
/** /**
* @RoutePrefix("/igm") * @RoutePrefix("/igm")
@ -11,7 +11,7 @@ class ImGroupManageController extends Controller
{ {
/** /**
* @Get("/{id:[0-9]+}/users", name="desktop.igm.users") * @Get("/{id:[0-9]+}/users", name="home.igm.users")
*/ */
public function usersAction($id) public function usersAction($id)
{ {
@ -27,7 +27,7 @@ class ImGroupManageController extends Controller
} }
/** /**
* @Get("/{id:[0-9]+}/edit", name="desktop.igm.edit") * @Get("/{id:[0-9]+}/edit", name="home.igm.edit")
*/ */
public function editAction($id) public function editAction($id)
{ {
@ -40,7 +40,7 @@ class ImGroupManageController extends Controller
} }
/** /**
* @Post("/{id:[0-9]+}/update", name="desktop.igm.update") * @Post("/{id:[0-9]+}/update", name="home.igm.update")
*/ */
public function updateAction($id) public function updateAction($id)
{ {
@ -54,7 +54,7 @@ class ImGroupManageController extends Controller
} }
/** /**
* @Post("/{gid:[0-9]+}/user/{uid:[0-9]+}/delete", name="desktop.igm.delete_user") * @Post("/{gid:[0-9]+}/user/{uid:[0-9]+}/delete", name="home.igm.delete_user")
*/ */
public function deleteGroupUserAction($gid, $uid) public function deleteGroupUserAction($gid, $uid)
{ {

View File

@ -1,14 +1,14 @@
<?php <?php
namespace App\Http\Desktop\Controllers; namespace App\Http\Home\Controllers;
use App\Http\Desktop\Services\Index as IndexService; use App\Http\Home\Services\Index as IndexService;
class IndexController extends Controller class IndexController extends Controller
{ {
/** /**
* @Get("/", name="desktop.index") * @Get("/", name="home.index")
*/ */
public function indexAction() public function indexAction()
{ {
@ -30,7 +30,7 @@ class IndexController extends Controller
$this->view->pick('index/full'); $this->view->pick('index/full');
$this->view->setVar('lives', $service->getLives()); $this->view->setVar('lives', $service->getLives());
$this->view->setVar('carousels', $service->getCarousels()); $this->view->setVar('slides', $service->getSlides());
$this->view->setVar('new_courses', $service->getNewCourses()); $this->view->setVar('new_courses', $service->getNewCourses());
$this->view->setVar('free_courses', $service->getFreeCourses()); $this->view->setVar('free_courses', $service->getFreeCourses());
$this->view->setVar('vip_courses', $service->getVipCourses()); $this->view->setVar('vip_courses', $service->getVipCourses());
@ -42,7 +42,7 @@ class IndexController extends Controller
$this->view->pick('index/simple'); $this->view->pick('index/simple');
$this->view->setVar('lives', $service->getLives()); $this->view->setVar('lives', $service->getLives());
$this->view->setVar('carousels', $service->getCarousels()); $this->view->setVar('slides', $service->getSlides());
$this->view->setVar('new_courses', $service->getSimpleNewCourses()); $this->view->setVar('new_courses', $service->getSimpleNewCourses());
$this->view->setVar('free_courses', $service->getSimpleFreeCourses()); $this->view->setVar('free_courses', $service->getSimpleFreeCourses());
$this->view->setVar('vip_courses', $service->getSimpleVipCourses()); $this->view->setVar('vip_courses', $service->getSimpleVipCourses());

View File

@ -1,9 +1,9 @@
<?php <?php
namespace App\Http\Desktop\Controllers; namespace App\Http\Home\Controllers;
use App\Models\User as UserModel; use App\Models\User as UserModel;
use App\Services\Auth\Desktop as DesktopAuth; use App\Services\Auth\Home as HomeAuth;
use App\Traits\Response as ResponseTrait; use App\Traits\Response as ResponseTrait;
use App\Traits\Security as SecurityTrait; use App\Traits\Security as SecurityTrait;
use Phalcon\Mvc\Dispatcher; use Phalcon\Mvc\Dispatcher;
@ -41,7 +41,7 @@ class LayerController extends \Phalcon\Mvc\Controller
protected function getAuthUser() protected function getAuthUser()
{ {
/** /**
* @var DesktopAuth $auth * @var HomeAuth $auth
*/ */
$auth = $this->getDI()->get('auth'); $auth = $this->getDI()->get('auth');

View File

@ -1,8 +1,8 @@
<?php <?php
namespace App\Http\Desktop\Controllers; namespace App\Http\Home\Controllers;
use App\Http\Desktop\Services\Live as LiveService; use App\Http\Home\Services\Live as LiveService;
use App\Traits\Response as ResponseTrait; use App\Traits\Response as ResponseTrait;
use Phalcon\Mvc\View; use Phalcon\Mvc\View;
@ -15,7 +15,7 @@ class LiveController extends Controller
use ResponseTrait; use ResponseTrait;
/** /**
* @Get("/{id:[0-9]+}/chats", name="desktop.live.chats") * @Get("/{id:[0-9]+}/chats", name="home.live.chats")
*/ */
public function chatsAction($id) public function chatsAction($id)
{ {
@ -29,7 +29,7 @@ class LiveController extends Controller
} }
/** /**
* @Get("/{id:[0-9]+}/stats", name="desktop.live.stats") * @Get("/{id:[0-9]+}/stats", name="home.live.stats")
*/ */
public function statsAction($id) public function statsAction($id)
{ {
@ -41,7 +41,7 @@ class LiveController extends Controller
} }
/** /**
* @Get("/{id:[0-9]+}/status", name="desktop.live.status") * @Get("/{id:[0-9]+}/status", name="home.live.status")
*/ */
public function statusAction($id) public function statusAction($id)
{ {
@ -53,7 +53,7 @@ class LiveController extends Controller
} }
/** /**
* @Post("/{id:[0-9]+}/user/bind", name="desktop.live.bind_user") * @Post("/{id:[0-9]+}/user/bind", name="home.live.bind_user")
*/ */
public function bindUserAction($id) public function bindUserAction($id)
{ {
@ -65,7 +65,7 @@ class LiveController extends Controller
} }
/** /**
* @Post("/{id:[0-9]+}/msg/send", name="desktop.live.send_msg") * @Post("/{id:[0-9]+}/msg/send", name="home.live.send_msg")
*/ */
public function sendMessageAction($id) public function sendMessageAction($id)
{ {

View File

@ -1,12 +1,12 @@
<?php <?php
namespace App\Http\Desktop\Controllers; namespace App\Http\Home\Controllers;
use App\Models\Order as OrderModel; use App\Models\Order as OrderModel;
use App\Services\Frontend\Order\OrderCancel as OrderCancelService; use App\Services\Logic\Order\OrderCancel as OrderCancelService;
use App\Services\Frontend\Order\OrderConfirm as OrderConfirmService; use App\Services\Logic\Order\OrderConfirm as OrderConfirmService;
use App\Services\Frontend\Order\OrderCreate as OrderCreateService; use App\Services\Logic\Order\OrderCreate as OrderCreateService;
use App\Services\Frontend\Order\OrderInfo as OrderInfoService; use App\Services\Logic\Order\OrderInfo as OrderInfoService;
use Phalcon\Mvc\Dispatcher; use Phalcon\Mvc\Dispatcher;
use Phalcon\Mvc\View; use Phalcon\Mvc\View;
@ -21,7 +21,7 @@ class OrderController extends Controller
parent::beforeExecuteRoute($dispatcher); parent::beforeExecuteRoute($dispatcher);
if ($this->authUser->id == 0) { if ($this->authUser->id == 0) {
$this->response->redirect(['for' => 'desktop.account.login']); $this->response->redirect(['for' => 'home.account.login']);
return false; return false;
} }
@ -29,7 +29,7 @@ class OrderController extends Controller
} }
/** /**
* @Get("/info", name="desktop.order.info") * @Get("/info", name="home.order.info")
*/ */
public function infoAction() public function infoAction()
{ {
@ -44,7 +44,7 @@ class OrderController extends Controller
} }
/** /**
* @Get("/confirm", name="desktop.order.confirm") * @Get("/confirm", name="home.order.confirm")
*/ */
public function confirmAction() public function confirmAction()
{ {
@ -59,7 +59,7 @@ class OrderController extends Controller
} }
/** /**
* @Post("/create", name="desktop.order.create") * @Post("/create", name="home.order.create")
*/ */
public function createAction() public function createAction()
{ {
@ -67,13 +67,13 @@ class OrderController extends Controller
$order = $service->handle(); $order = $service->handle();
$location = $this->url->get(['for' => 'desktop.order.pay'], ['sn' => $order->sn]); $location = $this->url->get(['for' => 'home.order.pay'], ['sn' => $order->sn]);
return $this->jsonSuccess(['location' => $location]); return $this->jsonSuccess(['location' => $location]);
} }
/** /**
* @Get("/pay", name="desktop.order.pay") * @Get("/pay", name="home.order.pay")
*/ */
public function payAction() public function payAction()
{ {
@ -84,14 +84,14 @@ class OrderController extends Controller
$order = $service->handle($sn); $order = $service->handle($sn);
if ($order['status'] != OrderModel::STATUS_PENDING) { if ($order['status'] != OrderModel::STATUS_PENDING) {
$this->response->redirect(['for' => 'desktop.my.orders']); $this->response->redirect(['for' => 'home.my.orders']);
} }
$this->view->setVar('order', $order); $this->view->setVar('order', $order);
} }
/** /**
* @Post("/cancel", name="desktop.order.cancel") * @Post("/cancel", name="home.order.cancel")
*/ */
public function cancelAction() public function cancelAction()
{ {

View File

@ -1,9 +1,9 @@
<?php <?php
namespace App\Http\Desktop\Controllers; namespace App\Http\Home\Controllers;
use App\Services\Frontend\Package\CourseList as PackageCourseListService; use App\Services\Logic\Package\CourseList as PackageCourseListService;
use App\Services\Frontend\Package\PackageInfo as PackageInfoService; use App\Services\Logic\Package\PackageInfo as PackageInfoService;
/** /**
* @RoutePrefix("/package") * @RoutePrefix("/package")
@ -12,7 +12,7 @@ class PackageController extends Controller
{ {
/** /**
* @Get("/{id:[0-9]+}/info", name="desktop.package.info") * @Get("/{id:[0-9]+}/info", name="home.package.info")
*/ */
public function infoAction($id) public function infoAction($id)
{ {
@ -24,7 +24,7 @@ class PackageController extends Controller
} }
/** /**
* @Get("/{id:[0-9]+}/courses", name="desktop.package.courses") * @Get("/{id:[0-9]+}/courses", name="home.package.courses")
*/ */
public function coursesAction($id) public function coursesAction($id)
{ {

View File

@ -1,8 +1,8 @@
<?php <?php
namespace App\Http\Desktop\Controllers; namespace App\Http\Home\Controllers;
use App\Services\Frontend\Page\PageInfo as PageInfoService; use App\Services\Logic\Page\PageInfo as PageInfoService;
/** /**
* @RoutePrefix("/page") * @RoutePrefix("/page")
@ -11,7 +11,7 @@ class PageController extends Controller
{ {
/** /**
* @Get("/{id:[0-9]+}", name="desktop.page.show") * @Get("/{id:[0-9]+}", name="home.page.show")
*/ */
public function showAction($id) public function showAction($id)
{ {

View File

@ -1,6 +1,6 @@
<?php <?php
namespace App\Http\Desktop\Controllers; namespace App\Http\Home\Controllers;
use App\Library\CsrfToken as CsrfTokenService; use App\Library\CsrfToken as CsrfTokenService;
use App\Repos\Upload as UploadRepo; use App\Repos\Upload as UploadRepo;
@ -20,7 +20,7 @@ class PublicController extends \Phalcon\Mvc\Controller
use SecurityTrait; use SecurityTrait;
/** /**
* @Get("/img/{id:[0-9]+}", name="desktop.img") * @Get("/img/{id:[0-9]+}", name="home.img")
*/ */
public function imageAction($id) public function imageAction($id)
{ {
@ -45,7 +45,7 @@ class PublicController extends \Phalcon\Mvc\Controller
} }
/** /**
* @Get("/qrcode", name="desktop.qrcode") * @Get("/qrcode", name="home.qrcode")
*/ */
public function qrcodeAction() public function qrcodeAction()
{ {
@ -63,7 +63,7 @@ class PublicController extends \Phalcon\Mvc\Controller
} }
/** /**
* @Post("/token/refresh", name="desktop.refresh_token") * @Post("/token/refresh", name="home.refresh_token")
*/ */
public function refreshTokenAction() public function refreshTokenAction()
{ {
@ -77,7 +77,7 @@ class PublicController extends \Phalcon\Mvc\Controller
} }
/** /**
* @Post("/alipay/notify", name="desktop.alipay_notify") * @Post("/alipay/notify", name="home.alipay_notify")
*/ */
public function alipayNotifyAction() public function alipayNotifyAction()
{ {
@ -93,7 +93,7 @@ class PublicController extends \Phalcon\Mvc\Controller
} }
/** /**
* @Post("/wxpay/notify", name="desktop.wxpay_notify") * @Post("/wxpay/notify", name="home.wxpay_notify")
*/ */
public function wxpayNotifyAction() public function wxpayNotifyAction()
{ {
@ -109,7 +109,7 @@ class PublicController extends \Phalcon\Mvc\Controller
} }
/** /**
* @Post("/live/notify", name="desktop.live_notify") * @Post("/live/notify", name="home.live_notify")
*/ */
public function liveNotifyAction() public function liveNotifyAction()
{ {

View File

@ -1,12 +1,12 @@
<?php <?php
namespace App\Http\Desktop\Controllers; namespace App\Http\Home\Controllers;
use App\Services\Frontend\Order\OrderInfo as OrderInfoService; use App\Services\Logic\Order\OrderInfo as OrderInfoService;
use App\Services\Frontend\Refund\RefundCancel as RefundCancelService; use App\Services\Logic\Refund\RefundCancel as RefundCancelService;
use App\Services\Frontend\Refund\RefundConfirm as RefundConfirmService; use App\Services\Logic\Refund\RefundConfirm as RefundConfirmService;
use App\Services\Frontend\Refund\RefundCreate as RefundCreateService; use App\Services\Logic\Refund\RefundCreate as RefundCreateService;
use App\Services\Frontend\Refund\RefundInfo as RefundInfoService; use App\Services\Logic\Refund\RefundInfo as RefundInfoService;
use Phalcon\Mvc\View; use Phalcon\Mvc\View;
/** /**
@ -16,7 +16,7 @@ class RefundController extends Controller
{ {
/** /**
* @Get("/confirm", name="desktop.refund.confirm") * @Get("/confirm", name="home.refund.confirm")
*/ */
public function confirmAction() public function confirmAction()
{ {
@ -36,7 +36,7 @@ class RefundController extends Controller
} }
/** /**
* @Post("/create", name="desktop.refund.create") * @Post("/create", name="home.refund.create")
*/ */
public function createAction() public function createAction()
{ {
@ -45,7 +45,7 @@ class RefundController extends Controller
$service->handle(); $service->handle();
$content = [ $content = [
'location' => $this->url->get(['for' => 'desktop.my.refunds']), 'location' => $this->url->get(['for' => 'home.my.refunds']),
'msg' => '申请退款成功', 'msg' => '申请退款成功',
]; ];
@ -53,7 +53,7 @@ class RefundController extends Controller
} }
/** /**
* @Get("/info", name="desktop.refund.info") * @Get("/info", name="home.refund.info")
*/ */
public function infoAction() public function infoAction()
{ {
@ -68,7 +68,7 @@ class RefundController extends Controller
} }
/** /**
* @Post("/cancel", name="desktop.refund.cancel") * @Post("/cancel", name="home.refund.cancel")
*/ */
public function cancelAction() public function cancelAction()
{ {
@ -79,7 +79,7 @@ class RefundController extends Controller
$service->handle($sn); $service->handle($sn);
$content = [ $content = [
'location' => $this->url->get(['for' => 'desktop.my.refunds']), 'location' => $this->url->get(['for' => 'home.my.refunds']),
'msg' => '取消退款成功', 'msg' => '取消退款成功',
]; ];

View File

@ -1,12 +1,12 @@
<?php <?php
namespace App\Http\Desktop\Controllers; namespace App\Http\Home\Controllers;
use App\Services\Frontend\Review\ReviewCreate as ReviewCreateService; use App\Services\Logic\Review\ReviewCreate as ReviewCreateService;
use App\Services\Frontend\Review\ReviewDelete as ReviewDeleteService; use App\Services\Logic\Review\ReviewDelete as ReviewDeleteService;
use App\Services\Frontend\Review\ReviewInfo as ReviewInfoService; use App\Services\Logic\Review\ReviewInfo as ReviewInfoService;
use App\Services\Frontend\Review\ReviewLike as ReviewLikeService; use App\Services\Logic\Review\ReviewLike as ReviewLikeService;
use App\Services\Frontend\Review\ReviewUpdate as ReviewUpdateService; use App\Services\Logic\Review\ReviewUpdate as ReviewUpdateService;
use Phalcon\Mvc\View; use Phalcon\Mvc\View;
/** /**
@ -16,7 +16,7 @@ class ReviewController extends Controller
{ {
/** /**
* @Get("/add", name="desktop.review.add") * @Get("/add", name="home.review.add")
*/ */
public function addAction() public function addAction()
{ {
@ -24,7 +24,7 @@ class ReviewController extends Controller
} }
/** /**
* @Get("/{id:[0-9]+}/edit", name="desktop.review.edit") * @Get("/{id:[0-9]+}/edit", name="home.review.edit")
*/ */
public function editAction($id) public function editAction($id)
{ {
@ -37,7 +37,7 @@ class ReviewController extends Controller
} }
/** /**
* @Get("/{id:[0-9]+}/info", name="desktop.review.info") * @Get("/{id:[0-9]+}/info", name="home.review.info")
*/ */
public function infoAction($id) public function infoAction($id)
{ {
@ -49,7 +49,7 @@ class ReviewController extends Controller
} }
/** /**
* @Post("/create", name="desktop.review.create") * @Post("/create", name="home.review.create")
*/ */
public function createAction() public function createAction()
{ {
@ -70,7 +70,7 @@ class ReviewController extends Controller
} }
/** /**
* @Post("/{id:[0-9]+}/update", name="desktop.review.update") * @Post("/{id:[0-9]+}/update", name="home.review.update")
*/ */
public function updateAction($id) public function updateAction($id)
{ {
@ -91,7 +91,7 @@ class ReviewController extends Controller
} }
/** /**
* @Post("/{id:[0-9]+}/delete", name="desktop.review.delete") * @Post("/{id:[0-9]+}/delete", name="home.review.delete")
*/ */
public function deleteAction($id) public function deleteAction($id)
{ {
@ -105,7 +105,7 @@ class ReviewController extends Controller
} }
/** /**
* @Post("/{id:[0-9]+}/like", name="desktop.review.like") * @Post("/{id:[0-9]+}/like", name="home.review.like")
*/ */
public function likeAction($id) public function likeAction($id)
{ {

View File

@ -1,10 +1,10 @@
<?php <?php
namespace App\Http\Desktop\Controllers; namespace App\Http\Home\Controllers;
use App\Services\Frontend\Search\Course as CourseSearchService; use App\Services\Logic\Search\Course as CourseSearchService;
use App\Services\Frontend\Search\Group as GroupSearchService; use App\Services\Logic\Search\Group as GroupSearchService;
use App\Services\Frontend\Search\User as UserSearchService; use App\Services\Logic\Search\User as UserSearchService;
use App\Traits\Response as ResponseTrait; use App\Traits\Response as ResponseTrait;
/** /**
@ -16,7 +16,7 @@ class SearchController extends Controller
use ResponseTrait; use ResponseTrait;
/** /**
* @Get("/", name="desktop.search.index") * @Get("/", name="home.search.index")
*/ */
public function indexAction() public function indexAction()
{ {
@ -24,7 +24,7 @@ class SearchController extends Controller
$type = $this->request->get('type', ['trim', 'string'], 'course'); $type = $this->request->get('type', ['trim', 'string'], 'course');
if (empty($query)) { if (empty($query)) {
return $this->response->redirect(['for' => 'desktop.course.list']); return $this->response->redirect(['for' => 'home.course.list']);
} }
$this->seo->prependTitle(['搜索', $query]); $this->seo->prependTitle(['搜索', $query]);
@ -43,7 +43,7 @@ class SearchController extends Controller
} }
/** /**
* @Get("/form", name="desktop.search.form") * @Get("/form", name="home.search.form")
*/ */
public function formAction() public function formAction()
{ {

View File

@ -1,19 +1,18 @@
<?php <?php
namespace App\Http\Desktop\Controllers; namespace App\Http\Home\Controllers;
use App\Services\Frontend\Teaching\ConsultList as ConsultListService; use App\Services\Logic\Teacher\Console\ConsultList as ConsultListService;
use App\Services\Frontend\Teaching\CourseList as CourseListService; use App\Services\Logic\Teacher\Console\CourseList as CourseListService;
use App\Services\Frontend\Teaching\LiveList as LiveListService; use App\Services\Logic\Teacher\Console\LiveList as LiveListService;
use App\Services\Frontend\Teaching\LivePushUrl as LivePushUrlService; use App\Services\Logic\Teacher\Console\LivePushUrl as LivePushUrlService;
use Phalcon\Mvc\Dispatcher; use Phalcon\Mvc\Dispatcher;
/** /**
* @RoutePrefix("/teaching") * @RoutePrefix("/tc")
*/ */
class TeachingController extends Controller class TeacherConsoleController extends Controller
{ {
public function beforeExecuteRoute(Dispatcher $dispatcher) public function beforeExecuteRoute(Dispatcher $dispatcher)
@ -21,7 +20,7 @@ class TeachingController extends Controller
parent::beforeExecuteRoute($dispatcher); parent::beforeExecuteRoute($dispatcher);
if ($this->authUser->id == 0) { if ($this->authUser->id == 0) {
$this->response->redirect(['for' => 'desktop.account.login']); $this->response->redirect(['for' => 'home.account.login']);
return false; return false;
} }
@ -29,7 +28,7 @@ class TeachingController extends Controller
} }
/** /**
* @Get("/", name="desktop.teaching.index") * @Get("/index", name="home.tc.index")
*/ */
public function indexAction() public function indexAction()
{ {
@ -37,7 +36,7 @@ class TeachingController extends Controller
} }
/** /**
* @Get("/courses", name="desktop.teaching.courses") * @Get("/courses", name="home.tc.courses")
*/ */
public function coursesAction() public function coursesAction()
{ {
@ -45,13 +44,12 @@ class TeachingController extends Controller
$pager = $service->handle(); $pager = $service->handle();
$pager->items = kg_array_object($pager->items); $this->view->pick('teacher/console/courses');
$this->view->setVar('pager', $pager); $this->view->setVar('pager', $pager);
} }
/** /**
* @Get("/lives", name="desktop.teaching.lives") * @Get("/lives", name="home.tc.lives")
*/ */
public function livesAction() public function livesAction()
{ {
@ -59,13 +57,12 @@ class TeachingController extends Controller
$pager = $service->handle(); $pager = $service->handle();
$pager->items = kg_array_object($pager->items); $this->view->pick('teacher/console/lives');
$this->view->setVar('pager', $pager); $this->view->setVar('pager', $pager);
} }
/** /**
* @Get("/consults", name="desktop.teaching.consults") * @Get("/consults", name="home.tc.consults")
*/ */
public function consultsAction() public function consultsAction()
{ {
@ -73,22 +70,21 @@ class TeachingController extends Controller
$pager = $service->handle(); $pager = $service->handle();
$pager->items = kg_array_object($pager->items); $this->view->pick('teacher/console/consults');
$this->view->setVar('pager', $pager); $this->view->setVar('pager', $pager);
} }
/** /**
* @Get("/live/push", name="desktop.teaching.live_push") * @Get("/live/{id:[0-9]+}", name="home.tc.live")
*/ */
public function livePushAction() public function liveAction($id)
{ {
$service = new LivePushUrlService(); $service = new LivePushUrlService();
$pushUrl = $service->handle(); $pushUrl = $service->handle($id);
$qrcode = $this->url->get( $qrcode = $this->url->get(
['for' => 'desktop.qrcode'], ['for' => 'home.qrcode'],
['text' => urlencode($pushUrl)] ['text' => urlencode($pushUrl)]
); );
@ -99,7 +95,7 @@ class TeachingController extends Controller
'stream_code' => substr($pushUrl, $pos + 1), 'stream_code' => substr($pushUrl, $pos + 1),
]; ];
$this->view->pick('teaching/live_push'); $this->view->pick('teacher/console/live_push');
$this->view->setVar('qrcode', $qrcode); $this->view->setVar('qrcode', $qrcode);
$this->view->setVar('obs', $obs); $this->view->setVar('obs', $obs);
} }

View File

@ -1,8 +1,8 @@
<?php <?php
namespace App\Http\Desktop\Controllers; namespace App\Http\Home\Controllers;
use App\Services\Frontend\Teacher\TeacherList as TeacherListService; use App\Services\Logic\Teacher\TeacherList as TeacherListService;
use Phalcon\Mvc\View; use Phalcon\Mvc\View;
/** /**
@ -12,7 +12,7 @@ class TeacherController extends Controller
{ {
/** /**
* @Get("/list", name="desktop.teacher.list") * @Get("/list", name="home.teacher.list")
*/ */
public function listAction() public function listAction()
{ {
@ -20,7 +20,7 @@ class TeacherController extends Controller
} }
/** /**
* @Get("/pager", name="desktop.teacher.pager") * @Get("/pager", name="home.teacher.pager")
*/ */
public function pagerAction() public function pagerAction()
{ {
@ -31,12 +31,11 @@ class TeacherController extends Controller
$pager->target = 'teacher-list'; $pager->target = 'teacher-list';
$this->view->setRenderLevel(View::LEVEL_ACTION_VIEW); $this->view->setRenderLevel(View::LEVEL_ACTION_VIEW);
$this->view->pick('teacher/pager');
$this->view->setVar('pager', $pager); $this->view->setVar('pager', $pager);
} }
/** /**
* @Get("/{id:[0-9]+}", name="desktop.teacher.show") * @Get("/{id:[0-9]+}", name="home.teacher.show")
*/ */
public function showAction($id) public function showAction($id)
{ {

View File

@ -1,9 +1,9 @@
<?php <?php
namespace App\Http\Desktop\Controllers; namespace App\Http\Home\Controllers;
use App\Services\Frontend\Topic\CourseList as TopicCourseListService; use App\Services\Logic\Topic\CourseList as TopicCourseListService;
use App\Services\Frontend\Topic\TopicInfo as TopicInfoService; use App\Services\Logic\Topic\TopicInfo as TopicInfoService;
use Phalcon\Mvc\View; use Phalcon\Mvc\View;
/** /**
@ -13,7 +13,7 @@ class TopicController extends Controller
{ {
/** /**
* @Get("/{id:[0-9]+}", name="desktop.topic.show") * @Get("/{id:[0-9]+}", name="home.topic.show")
*/ */
public function showAction($id) public function showAction($id)
{ {
@ -21,14 +21,14 @@ class TopicController extends Controller
$topic = $service->handle($id); $topic = $service->handle($id);
$this->seo->prependTitle($topic['title']); $this->seo->prependTitle(['专题', $topic['title']]);
$this->seo->setDescription($topic['summary']); $this->seo->setDescription($topic['summary']);
$this->view->setVar('topic', $topic); $this->view->setVar('topic', $topic);
} }
/** /**
* @Get("/{id:[0-9]+}/courses", name="desktop.topic.courses") * @Get("/{id:[0-9]+}/courses", name="home.topic.courses")
*/ */
public function coursesAction($id) public function coursesAction($id)
{ {
@ -39,7 +39,6 @@ class TopicController extends Controller
$pager->target = 'course-list'; $pager->target = 'course-list';
$this->view->setRenderLevel(View::LEVEL_ACTION_VIEW); $this->view->setRenderLevel(View::LEVEL_ACTION_VIEW);
$this->view->pick('topic/courses');
$this->view->setVar('pager', $pager); $this->view->setVar('pager', $pager);
} }

View File

@ -1,9 +1,9 @@
<?php <?php
namespace App\Http\Desktop\Controllers; namespace App\Http\Home\Controllers;
use App\Http\Desktop\Services\Trade as TradeService; use App\Http\Home\Services\Trade as TradeService;
use App\Services\Frontend\Trade\TradeInfo as TradeInfoService; use App\Services\Logic\Trade\TradeInfo as TradeInfoService;
/** /**
* @RoutePrefix("/trade") * @RoutePrefix("/trade")
@ -12,7 +12,7 @@ class TradeController extends Controller
{ {
/** /**
* @Post("/create", name="desktop.trade.create") * @Post("/create", name="home.trade.create")
*/ */
public function createAction() public function createAction()
{ {
@ -24,7 +24,7 @@ class TradeController extends Controller
} }
/** /**
* @Get("/status", name="desktop.trade.status") * @Get("/status", name="home.trade.status")
*/ */
public function statusAction() public function statusAction()
{ {

View File

@ -1,7 +1,7 @@
<?php <?php
namespace App\Http\Desktop\Controllers; namespace App\Http\Home\Controllers;
use App\Services\MyStorage as StorageService; use App\Services\MyStorage as StorageService;
@ -12,7 +12,7 @@ class UploadController extends Controller
{ {
/** /**
* @Post("/avatar/img", name="desktop.upload.avatar_img") * @Post("/avatar/img", name="home.upload.avatar_img")
*/ */
public function uploadAvatarImageAction() public function uploadAvatarImageAction()
{ {
@ -33,14 +33,14 @@ class UploadController extends Controller
} }
/** /**
* @Post("/im/img", name="desktop.upload.im_img") * @Post("/im/img", name="home.upload.im_img")
*/ */
public function uploadImImageAction() public function uploadImImageAction()
{ {
} }
/** /**
* @Post("/im/file", name="desktop.upload.im_file") * @Post("/im/file", name="home.upload.im_file")
*/ */
public function uploadImFileAction() public function uploadImFileAction()
{ {

View File

@ -1,24 +1,24 @@
<?php <?php
namespace App\Http\Desktop\Controllers; namespace App\Http\Home\Controllers;
use App\Services\Frontend\My\AccountInfo as AccountInfoService; use App\Services\Logic\User\Console\AccountInfo as AccountInfoService;
use App\Services\Frontend\My\ConsultList as MyConsultListService; use App\Services\Logic\User\Console\ConsultList as ConsultListService;
use App\Services\Frontend\My\CourseList as MyCourseListService; use App\Services\Logic\User\Console\CourseList as CourseListService;
use App\Services\Frontend\My\FavoriteList as MyFavoriteListService; use App\Services\Logic\User\Console\FavoriteList as FavoriteListService;
use App\Services\Frontend\My\FriendList as MyFriendListService; use App\Services\Logic\User\Console\FriendList as FriendListService;
use App\Services\Frontend\My\GroupList as MyGroupListService; use App\Services\Logic\User\Console\GroupList as GroupListService;
use App\Services\Frontend\My\OrderList as MyOrderListService; use App\Services\Logic\User\Console\OrderList as OrderListService;
use App\Services\Frontend\My\ProfileInfo as ProfileInfoService; use App\Services\Logic\User\Console\ProfileInfo as ProfileInfoService;
use App\Services\Frontend\My\ProfileUpdate as ProfileUpdateService; use App\Services\Logic\User\Console\ProfileUpdate as ProfileUpdateService;
use App\Services\Frontend\My\RefundList as MyRefundListService; use App\Services\Logic\User\Console\RefundList as RefundListService;
use App\Services\Frontend\My\ReviewList as MyReviewListService; use App\Services\Logic\User\Console\ReviewList as ReviewListService;
use Phalcon\Mvc\Dispatcher; use Phalcon\Mvc\Dispatcher;
/** /**
* @RoutePrefix("/my") * @RoutePrefix("/uc")
*/ */
class MyController extends Controller class UserConsoleController extends Controller
{ {
public function beforeExecuteRoute(Dispatcher $dispatcher) public function beforeExecuteRoute(Dispatcher $dispatcher)
@ -26,7 +26,7 @@ class MyController extends Controller
parent::beforeExecuteRoute($dispatcher); parent::beforeExecuteRoute($dispatcher);
if ($this->authUser->id == 0) { if ($this->authUser->id == 0) {
$this->response->redirect(['for' => 'desktop.account.login']); $this->response->redirect(['for' => 'home.account.login']);
return false; return false;
} }
@ -34,7 +34,7 @@ class MyController extends Controller
} }
/** /**
* @Get("/", name="desktop.my.index") * @Get("/index", name="home.uc.index")
*/ */
public function indexAction() public function indexAction()
{ {
@ -42,7 +42,7 @@ class MyController extends Controller
} }
/** /**
* @Get("/profile", name="desktop.my.profile") * @Get("/profile", name="home.uc.profile")
*/ */
public function profileAction() public function profileAction()
{ {
@ -50,11 +50,12 @@ class MyController extends Controller
$user = $service->handle(); $user = $service->handle();
$this->view->pick('user/console/profile');
$this->view->setVar('user', $user); $this->view->setVar('user', $user);
} }
/** /**
* @Get("/account", name="desktop.my.account") * @Get("/account", name="home.uc.account")
*/ */
public function accountAction() public function accountAction()
{ {
@ -62,112 +63,119 @@ class MyController extends Controller
$account = $service->handle(); $account = $service->handle();
$this->view->pick('user/console/account');
$this->view->setVar('account', $account); $this->view->setVar('account', $account);
} }
/** /**
* @Get("/courses", name="desktop.my.courses") * @Get("/courses", name="home.uc.courses")
*/ */
public function coursesAction() public function coursesAction()
{ {
$service = new MyCourseListService(); $service = new CourseListService();
$pager = $service->handle(); $pager = $service->handle();
$this->view->pick('user/console/courses');
$this->view->setVar('pager', $pager); $this->view->setVar('pager', $pager);
} }
/** /**
* @Get("/favorites", name="desktop.my.favorites") * @Get("/favorites", name="home.uc.favorites")
*/ */
public function favoritesAction() public function favoritesAction()
{ {
$service = new MyFavoriteListService(); $service = new FavoriteListService();
$pager = $service->handle(); $pager = $service->handle();
$this->view->pick('user/console/favorites');
$this->view->setVar('pager', $pager); $this->view->setVar('pager', $pager);
} }
/** /**
* @Get("/consults", name="desktop.my.consults") * @Get("/consults", name="home.uc.consults")
*/ */
public function consultsAction() public function consultsAction()
{ {
$service = new MyConsultListService(); $service = new ConsultListService();
$pager = $service->handle(); $pager = $service->handle();
$this->view->pick('user/console/consults');
$this->view->setVar('pager', $pager); $this->view->setVar('pager', $pager);
} }
/** /**
* @Get("/reviews", name="desktop.my.reviews") * @Get("/reviews", name="home.uc.reviews")
*/ */
public function reviewsAction() public function reviewsAction()
{ {
$service = new MyReviewListService(); $service = new ReviewListService();
$pager = $service->handle(); $pager = $service->handle();
$this->view->pick('user/console/reviews');
$this->view->setVar('pager', $pager); $this->view->setVar('pager', $pager);
} }
/** /**
* @Get("/orders", name="desktop.my.orders") * @Get("/orders", name="home.uc.orders")
*/ */
public function ordersAction() public function ordersAction()
{ {
$service = new MyOrderListService(); $service = new OrderListService();
$pager = $service->handle(); $pager = $service->handle();
$this->view->pick('user/console/orders');
$this->view->setVar('pager', $pager); $this->view->setVar('pager', $pager);
} }
/** /**
* @Get("/refunds", name="desktop.my.refunds") * @Get("/refunds", name="home.uc.refunds")
*/ */
public function refundsAction() public function refundsAction()
{ {
$service = new MyRefundListService(); $service = new RefundListService();
$pager = $service->handle(); $pager = $service->handle();
$this->view->pick('user/console/refunds');
$this->view->setVar('pager', $pager); $this->view->setVar('pager', $pager);
} }
/** /**
* @Get("/friends", name="desktop.my.friends") * @Get("/friends", name="home.uc.friends")
*/ */
public function friendsAction() public function friendsAction()
{ {
$service = new MyFriendListService(); $service = new FriendListService();
$pager = $service->handle(); $pager = $service->handle();
$this->view->pick('my/friends'); $this->view->pick('user/console/friends');
$this->view->setVar('pager', $pager); $this->view->setVar('pager', $pager);
} }
/** /**
* @Get("/groups", name="desktop.my.groups") * @Get("/groups", name="home.uc.groups")
*/ */
public function groupsAction() public function groupsAction()
{ {
$scope = $this->request->getQuery('scope', 'string', 'joined'); $scope = $this->request->getQuery('scope', 'string', 'joined');
$service = new MyGroupListService(); $service = new GroupListService();
$pager = $service->handle($scope); $pager = $service->handle($scope);
$this->view->pick('my/groups'); $this->view->pick('user/console/groups');
$this->view->setVar('scope', $scope); $this->view->setVar('scope', $scope);
$this->view->setVar('pager', $pager); $this->view->setVar('pager', $pager);
} }
/** /**
* @Post("/profile/update", name="desktop.my.update_profile") * @Post("/profile/update", name="home.uc.update_profile")
*/ */
public function updateProfileAction() public function updateProfileAction()
{ {

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