-
diff --git a/app/Http/Api/Controllers/AccountController.php b/app/Http/Api/Controllers/AccountController.php
new file mode 100644
index 00000000..6ce03879
--- /dev/null
+++ b/app/Http/Api/Controllers/AccountController.php
@@ -0,0 +1,113 @@
+register();
+
+ return $this->jsonSuccess(['token' => $token]);
+ }
+
+ /**
+ * @Post("/password/login", name="api.account.register")
+ */
+ public function loginByPasswordAction()
+ {
+ $service = new AccountService();
+
+ $token = $service->loginByPassword();
+
+ return $this->jsonSuccess(['token' => $token]);
+ }
+
+ /**
+ * @Post("/verify/login", name="api.account.verify_login")
+ */
+ public function loginByVerifyAction()
+ {
+ $service = new AccountService();
+
+ $token = $service->loginByVerify();
+
+ return $this->jsonSuccess(['token' => $token]);
+ }
+
+ /**
+ * @Get("/logout", name="api.account.logout")
+ */
+ public function logoutAction()
+ {
+ $service = new AccountService();
+
+ $service->logout();
+
+ return $this->jsonSuccess();
+ }
+
+ /**
+ * @Post("/password/reset", name="api.account.reset_pwd")
+ */
+ public function resetPasswordAction()
+ {
+ $service = new PasswordResetService();
+
+ $service->handle();
+
+ return $this->jsonSuccess();
+ }
+
+ /**
+ * @Post("/phone/update", name="api.account.update_phone")
+ */
+ public function updatePhoneAction()
+ {
+ $service = new PhoneUpdateService();
+
+ $service->handle();
+
+ return $this->jsonSuccess();
+ }
+
+ /**
+ * @Post("/email/update", name="api.account.update_email")
+ */
+ public function updateEmailAction()
+ {
+ $service = new EmailUpdateService();
+
+ $service->handle();
+
+ return $this->jsonSuccess();
+ }
+
+ /**
+ * @Post("/password/update", name="api.account.update_pwd")
+ */
+ public function updatePasswordAction()
+ {
+ $service = new PasswordUpdateService();
+
+ $service->handle();
+
+ return $this->jsonSuccess();
+ }
+
+}
diff --git a/app/Http/Api/Controllers/ChapterController.php b/app/Http/Api/Controllers/ChapterController.php
new file mode 100644
index 00000000..3e0a75eb
--- /dev/null
+++ b/app/Http/Api/Controllers/ChapterController.php
@@ -0,0 +1,64 @@
+handle($id);
+
+ return $this->jsonSuccess(['resources' => $resources]);
+ }
+
+ /**
+ * @Get("/{id:[0-9]+}/info", name="api.chapter.info")
+ */
+ public function infoAction($id)
+ {
+ $service = new ChapterInfoService();
+
+ $chapter = $service->handle($id);
+
+ return $this->jsonSuccess(['chapter' => $chapter]);
+ }
+
+ /**
+ * @Post("/{id:[0-9]+}/like", name="api.chapter.like")
+ */
+ public function likeAction($id)
+ {
+ $service = new ChapterLikeService();
+
+ $service->handle($id);
+
+ return $this->jsonSuccess();
+ }
+
+ /**
+ * @Post("/{id:[0-9]+}/learning", name="api.chapter.learning")
+ */
+ public function learningAction($id)
+ {
+ $service = new ChapterLearningService();
+
+ $service->handle($id);
+
+ return $this->jsonSuccess();
+ }
+
+}
diff --git a/app/Http/Api/Controllers/ChapterLiveController.php b/app/Http/Api/Controllers/ChapterLiveController.php
new file mode 100644
index 00000000..e54c9ad2
--- /dev/null
+++ b/app/Http/Api/Controllers/ChapterLiveController.php
@@ -0,0 +1,73 @@
+getRecentChats($id);
+
+ return $this->jsonSuccess(['chats' => $chats]);
+ }
+
+ /**
+ * @Get("/{id:[0-9]+}/stats", name="api.live.stats")
+ */
+ public function statsAction($id)
+ {
+ $service = new ChapterLiveService();
+
+ $stats = $service->getStats($id);
+
+ return $this->jsonSuccess(['stats' => $stats]);
+ }
+
+ /**
+ * @Get("/{id:[0-9]+}/status", name="api.live.status")
+ */
+ public function statusAction($id)
+ {
+ $service = new ChapterLiveService();
+
+ $status = $service->getStatus($id);
+
+ return $this->jsonSuccess(['status' => $status]);
+ }
+
+ /**
+ * @Post("/{id:[0-9]+}/user/bind", name="api.live.bind_user")
+ */
+ public function bindUserAction($id)
+ {
+ $service = new ChapterLiveService();
+
+ $service->bindUser($id);
+
+ return $this->jsonSuccess();
+ }
+
+ /**
+ * @Post("/{id:[0-9]+}/msg/send", name="api.live.send_msg")
+ */
+ public function sendMessageAction($id)
+ {
+ $service = new ChapterLiveService();
+
+ $message = $service->sendMessage($id);
+
+ return $this->jsonSuccess(['message' => $message]);
+ }
+
+}
diff --git a/app/Http/Api/Controllers/ConsultController.php b/app/Http/Api/Controllers/ConsultController.php
new file mode 100644
index 00000000..79f3e03c
--- /dev/null
+++ b/app/Http/Api/Controllers/ConsultController.php
@@ -0,0 +1,97 @@
+handle($id);
+
+ return $this->jsonSuccess(['consult' => $consult]);
+ }
+
+ /**
+ * @Post("/create", name="api.consult.create")
+ */
+ public function createAction()
+ {
+ $service = new ConsultCreateService();
+
+ $consult = $service->handle();
+
+ $service = new ConsultInfoService();
+
+ $consult = $service->handle($consult->id);
+
+ return $this->jsonSuccess(['consult' => $consult]);
+ }
+
+ /**
+ * @Post("/{id:[0-9]+}/update", name="api.consult.update")
+ */
+ public function updateAction($id)
+ {
+ $service = new ConsultUpdateService();
+
+ $consult = $service->handle($id);
+
+ $service = new ConsultInfoService();
+
+ $consult = $service->handle($consult->id);
+
+ return $this->jsonSuccess(['consult' => $consult]);
+ }
+
+ /**
+ * @Post("/{id:[0-9]+}/delete", name="api.consult.delete")
+ */
+ public function deleteAction($id)
+ {
+ $service = new ConsultDeleteService();
+
+ $service->handle($id);
+
+ return $this->jsonSuccess();
+ }
+
+ /**
+ * @Post("/{id:[0-9]+}/like", name="api.consult.like")
+ */
+ public function likeAction($id)
+ {
+ $service = new ConsultLikeService();
+
+ $service->handle($id);
+
+ return $this->jsonSuccess();
+ }
+
+ /**
+ * @Post("/{id:[0-9]+}/unlike", name="api.consult.unlike")
+ */
+ public function unlikeAction($id)
+ {
+ $service = new ConsultLikeService();
+
+ $service->handle($id);
+
+ return $this->jsonSuccess();
+ }
+
+}
diff --git a/app/Http/Api/Controllers/Controller.php b/app/Http/Api/Controllers/Controller.php
index 24ae2d03..50a6611d 100644
--- a/app/Http/Api/Controllers/Controller.php
+++ b/app/Http/Api/Controllers/Controller.php
@@ -2,6 +2,7 @@
namespace App\Http\Api\Controllers;
+use App\Services\Auth\Api as AppAuth;
use App\Traits\Response as ResponseTrait;
use App\Traits\Security as SecurityTrait;
use Phalcon\Mvc\Dispatcher;
@@ -14,7 +15,32 @@ class Controller extends \Phalcon\Mvc\Controller
public function beforeExecuteRoute(Dispatcher $dispatcher)
{
- $this->checkRateLimit();
+ /**
+ * 存在Origin头信息才设置跨域
+ */
+ if ($this->request->getHeader('Origin')) {
+ $this->setCors();
+ }
+
+ /**
+ * Options请求不验证签名和限流
+ */
+ if (!$this->request->isOptions()) {
+ //$this->checkApiSignature();
+ //$this->checkRateLimit();
+ }
+
+ return true;
+ }
+
+ protected function getAuthUser()
+ {
+ /**
+ * @var AppAuth $auth
+ */
+ $auth = $this->getDI()->get('auth');
+
+ return $auth->getCurrentUser();
}
}
diff --git a/app/Http/Api/Controllers/CourseController.php b/app/Http/Api/Controllers/CourseController.php
new file mode 100644
index 00000000..a130533b
--- /dev/null
+++ b/app/Http/Api/Controllers/CourseController.php
@@ -0,0 +1,128 @@
+handle();
+
+ return $this->jsonSuccess(['categories' => $categories]);
+ }
+
+ /**
+ * @Get("/list", name="api.course.list")
+ */
+ public function listAction()
+ {
+ $service = new CourseListService();
+
+ $pager = $service->handle();
+
+ return $this->jsonSuccess(['pager' => $pager]);
+ }
+
+ /**
+ * @Get("/{id:[0-9]+}/info", name="api.course.info")
+ */
+ public function infoAction($id)
+ {
+ $service = new CourseInfoService();
+
+ $course = $service->handle($id);
+
+ return $this->jsonSuccess(['course' => $course]);
+ }
+
+ /**
+ * @Get("/{id:[0-9]+}/chapters", name="api.course.chapters")
+ */
+ public function chaptersAction($id)
+ {
+ $service = new CourseChapterListService();
+
+ $chapters = $service->handle($id);
+
+ return $this->jsonSuccess(['chapters' => $chapters]);
+ }
+
+ /**
+ * @Get("/{id:[0-9]+}/packages", name="api.course.packages")
+ */
+ public function packagesAction($id)
+ {
+ $service = new CoursePackageListService();
+
+ $packages = $service->handle($id);
+
+ return $this->jsonSuccess(['packages' => $packages]);
+ }
+
+ /**
+ * @Get("/{id:[0-9]+}/consults", name="api.course.consults")
+ */
+ public function consultsAction($id)
+ {
+ $service = new CourseConsultListService();
+
+ $pager = $service->handle($id);
+
+ return $this->jsonSuccess(['pager' => $pager]);
+ }
+
+ /**
+ * @Get("/{id:[0-9]+}/reviews", name="api.course.reviews")
+ */
+ public function reviewsAction($id)
+ {
+ $service = new CourseReviewListService();
+
+ $pager = $service->handle($id);
+
+ return $this->jsonSuccess(['pager' => $pager]);
+ }
+
+ /**
+ * @Post("/{id:[0-9]+}/favorite", name="api.course.favorite")
+ */
+ public function favoriteAction($id)
+ {
+ $service = new CourseFavoriteService();
+
+ $service->handle($id);
+
+ return $this->jsonSuccess();
+ }
+
+ /**
+ * @Post("/{id:[0-9]+}/unfavorite", name="api.course.unfavorite")
+ */
+ public function unfavoriteAction($id)
+ {
+ $service = new CourseFavoriteService();
+
+ $service->handle($id);
+
+ return $this->jsonSuccess();
+ }
+
+}
diff --git a/app/Http/Api/Controllers/HelpController.php b/app/Http/Api/Controllers/HelpController.php
new file mode 100644
index 00000000..60879eb3
--- /dev/null
+++ b/app/Http/Api/Controllers/HelpController.php
@@ -0,0 +1,38 @@
+handle();
+
+ return $this->jsonSuccess(['helps' => $helps]);
+ }
+
+ /**
+ * @Get("/{id:[0-9]+}", name="api.help.info")
+ */
+ public function infoAction($id)
+ {
+ $service = new HelpInfoService();
+
+ $help = $service->handle($id);
+
+ return $this->jsonSuccess(['help' => $help]);
+ }
+
+}
diff --git a/app/Http/Api/Controllers/ImGroupController.php b/app/Http/Api/Controllers/ImGroupController.php
new file mode 100644
index 00000000..330d7c31
--- /dev/null
+++ b/app/Http/Api/Controllers/ImGroupController.php
@@ -0,0 +1,51 @@
+handle();
+
+ return $this->jsonSuccess(['pager' => $pager]);
+ }
+
+ /**
+ * @Get("/{id:[0-9]+}/info", name="api.im_group.info")
+ */
+ public function infoAction($id)
+ {
+ $service = new GroupInfoService();
+
+ $group = $service->handle($id);
+
+ return $this->jsonSuccess(['group' => $group]);
+ }
+
+ /**
+ * @Get("/{id:[0-9]+}/users", name="api.im_group.users")
+ */
+ public function usersAction($id)
+ {
+ $service = new GroupUserListService();
+
+ $pager = $service->handle($id);
+
+ return $this->jsonSuccess(['pager' => $pager]);
+ }
+
+}
diff --git a/app/Http/Api/Controllers/IndexController.php b/app/Http/Api/Controllers/IndexController.php
index b7c9f968..1aba3a64 100644
--- a/app/Http/Api/Controllers/IndexController.php
+++ b/app/Http/Api/Controllers/IndexController.php
@@ -2,39 +2,63 @@
namespace App\Http\Api\Controllers;
+use App\Caches\IndexSimpleFreeCourseList;
+use App\Caches\IndexSimpleNewCourseList;
+use App\Caches\IndexSimpleVipCourseList;
+use App\Caches\IndexSlideList;
+
/**
- * @RoutePrefix("/api")
+ * @RoutePrefix("/api/index")
*/
class IndexController extends Controller
{
/**
- * @Get("/", name="api.index")
+ * @Get("/slides", name="api.index.slides")
*/
- public function indexAction()
+ public function slidesAction()
{
- return $this->jsonSuccess(['data' => 'ok']);
+ $cache = new IndexSlideList();
+
+ $slides = $cache->get();
+
+ return $this->jsonSuccess(['slides' => $slides]);
}
/**
- * @Get("/routes", name="api.routes")
+ * @Get("/courses/new", name="api.index.new_courses")
*/
- public function routesAction()
+ public function newCoursesAction()
{
- $definitions = [];
+ $cache = new IndexSimpleNewCourseList();
- $routes = $this->router->getRoutes();
+ $courses = $cache->get();
- foreach ($routes as $route) {
- if (strpos($route->getPattern(), '/api') !== false) {
- $definitions[] = [
- 'pattern' => $route->getPattern(),
- 'methods' => $route->getHttpMethods(),
- ];
- }
- }
+ return $this->jsonSuccess(['courses' => $courses]);
+ }
- return $this->jsonSuccess(['routes' => $definitions]);
+ /**
+ * @Get("/courses/free", name="api.index.free_courses")
+ */
+ public function freeCoursesAction()
+ {
+ $cache = new IndexSimpleFreeCourseList();
+
+ $courses = $cache->get();
+
+ return $this->jsonSuccess(['courses' => $courses]);
+ }
+
+ /**
+ * @Get("/courses/vip", name="api.index.vip_courses")
+ */
+ public function vipCoursesAction()
+ {
+ $cache = new IndexSimpleVipCourseList();
+
+ $courses = $cache->get();
+
+ return $this->jsonSuccess(['courses' => $courses]);
}
}
diff --git a/app/Http/Api/Controllers/OrderController.php b/app/Http/Api/Controllers/OrderController.php
new file mode 100644
index 00000000..5aeb68fe
--- /dev/null
+++ b/app/Http/Api/Controllers/OrderController.php
@@ -0,0 +1,76 @@
+request->getQuery('sn', 'string');
+
+ $service = new OrderInfoService();
+
+ $order = $service->handle($sn);
+
+ return $this->jsonSuccess(['order' => $order]);
+ }
+
+ /**
+ * @Get("/confirm", name="api.order.confirm")
+ */
+ public function confirmAction()
+ {
+ $itemId = $this->request->getQuery('item_id', 'int');
+ $itemType = $this->request->getQuery('item_type', 'int');
+
+ $service = new OrderConfirmService();
+
+ $confirm = $service->handle($itemId, $itemType);
+
+ return $this->jsonSuccess(['confirm' => $confirm]);
+
+ }
+
+ /**
+ * @Post("/create", name="api.order.create")
+ */
+ public function createAction()
+ {
+ $service = new OrderCreateService();
+
+ $order = $service->handle();
+
+ $service = new OrderInfoService();
+
+ $order = $service->handle($order->sn);
+
+ return $this->jsonSuccess(['order' => $order]);
+ }
+
+ /**
+ * @Post("/cancel", name="api.order.cancel")
+ */
+ public function cancelAction()
+ {
+ $sn = $this->request->getPost('sn', 'string');
+
+ $service = new OrderCancelService();
+
+ $order = $service->handle($sn);
+
+ return $this->jsonSuccess(['order' => $order]);
+ }
+
+}
diff --git a/app/Http/Api/Controllers/PageController.php b/app/Http/Api/Controllers/PageController.php
new file mode 100644
index 00000000..b18e31f6
--- /dev/null
+++ b/app/Http/Api/Controllers/PageController.php
@@ -0,0 +1,25 @@
+handle($id);
+
+ return $this->jsonSuccess(['page' => $page]);
+ }
+
+}
diff --git a/app/Http/Api/Controllers/PublicController.php b/app/Http/Api/Controllers/PublicController.php
index f2f0a85c..27d98e64 100644
--- a/app/Http/Api/Controllers/PublicController.php
+++ b/app/Http/Api/Controllers/PublicController.php
@@ -2,14 +2,85 @@
namespace App\Http\Api\Controllers;
+use App\Services\Logic\Reward\OptionList as RewardOptionList;
+use App\Services\Logic\Vip\OptionList as VipOptionList;
+use App\Services\Service as AppService;
use App\Traits\Response as ResponseTrait;
/**
* @RoutePrefix("/api")
*/
-class PublicController extends \Phalcon\Mvc\Controller
+class PublicController extends Controller
{
use ResponseTrait;
+ /**
+ * @Options("/{match:(.*)}", name="api.match_options")
+ */
+ public function corsAction()
+ {
+ $this->response->setStatusCode(204);
+
+ return $this->response;
+ }
+
+ /**
+ * @Get("/now", name="api.public.now")
+ */
+ public function nowAction()
+ {
+ return $this->jsonSuccess(['now' => time()]);
+ }
+
+ /**
+ * @Get("/site/info", name="api.public.site_info")
+ */
+ public function siteInfoAction()
+ {
+ $service = new AppService();
+
+ $site = $service->getSettings('site');
+
+ return $this->jsonSuccess(['site' => $site]);
+ }
+
+ /**
+ * @Get("/captcha/info", name="api.public.captcha_info")
+ */
+ public function captchaInfoAction()
+ {
+ $service = new AppService();
+
+ $captcha = $service->getSettings('captcha');
+
+ unset($captcha['secret_key']);
+
+ return $this->jsonSuccess(['captcha' => $captcha]);
+ }
+
+ /**
+ * @Get("/reward/options", name="api.public.reward_options")
+ */
+ public function rewardOptionsAction()
+ {
+ $service = new RewardOptionList();
+
+ $options = $service->handle();
+
+ return $this->jsonSuccess(['options' => $options]);
+ }
+
+ /**
+ * @Get("/vip/options", name="api.public.vip_options")
+ */
+ public function vipOptionsAction()
+ {
+ $service = new VipOptionList();
+
+ $options = $service->handle();
+
+ return $this->jsonSuccess(['options' => $options]);
+ }
+
}
diff --git a/app/Http/Api/Controllers/RefundController.php b/app/Http/Api/Controllers/RefundController.php
new file mode 100644
index 00000000..018cf1cf
--- /dev/null
+++ b/app/Http/Api/Controllers/RefundController.php
@@ -0,0 +1,78 @@
+request->getQuery('sn', 'string');
+
+ $service = new RefundConfirmService();
+
+ $confirm = $service->handle($sn);
+
+ return $this->jsonSuccess(['confirm' => $confirm]);
+ }
+
+ /**
+ * @Get("/info", name="api.refund.info")
+ */
+ public function infoAction()
+ {
+ $sn = $this->request->getQuery('sn', 'string');
+
+ $service = new RefundInfoService();
+
+ $refund = $service->handle($sn);
+
+ return $this->jsonSuccess(['refund' => $refund]);
+ }
+
+ /**
+ * @Post("/create", name="api.refund.create")
+ */
+ public function createAction()
+ {
+ $service = new RefundCreateService();
+
+ $refund = $service->handle();
+
+ $service = new RefundInfoService();
+
+ $refund = $service->handle($refund->sn);
+
+ return $this->jsonSuccess(['refund' => $refund]);
+ }
+
+ /**
+ * @Post("/cancel", name="api.refund.cancel")
+ */
+ public function cancelAction()
+ {
+ $sn = $this->request->getPost('sn', 'string');
+
+ $service = new RefundCancelService();
+
+ $service->handle($sn);
+
+ $service = new RefundInfoService();
+
+ $refund = $service->handle($sn);
+
+ return $this->jsonSuccess(['refund' => $refund]);
+ }
+
+}
diff --git a/app/Http/Api/Controllers/ReviewController.php b/app/Http/Api/Controllers/ReviewController.php
new file mode 100644
index 00000000..7030ccbf
--- /dev/null
+++ b/app/Http/Api/Controllers/ReviewController.php
@@ -0,0 +1,97 @@
+handle($id);
+
+ return $this->jsonSuccess(['review' => $review]);
+ }
+
+ /**
+ * @Post("/create", name="api.order.create")
+ */
+ public function createAction()
+ {
+ $service = new ReviewCreateService();
+
+ $review = $service->handle();
+
+ $service = new ReviewInfoService();
+
+ $review = $service->handle($review->id);
+
+ return $this->jsonSuccess(['review' => $review]);
+ }
+
+ /**
+ * @Post("/{id:[0-9]+}/update", name="api.review.update")
+ */
+ public function updateAction($id)
+ {
+ $service = new ReviewUpdateService();
+
+ $service->handle($id);
+
+ $service = new ReviewInfoService();
+
+ $review = $service->handle($id);
+
+ return $this->jsonSuccess(['review' => $review]);
+ }
+
+ /**
+ * @Post("/{id:[0-9]+}/delete", name="api.review.delete")
+ */
+ public function deleteAction($id)
+ {
+ $service = new ReviewDeleteService();
+
+ $service->handle($id);
+
+ return $this->jsonSuccess();
+ }
+
+ /**
+ * @Post("/{id:[0-9]+}/like", name="api.review.like")
+ */
+ public function likeAction($id)
+ {
+ $service = new ReviewLikeService();
+
+ $service->handle($id);
+
+ return $this->jsonSuccess();
+ }
+
+ /**
+ * @Post("/{id:[0-9]+}/unlike", name="api.review.unlike")
+ */
+ public function unlikeAction($id)
+ {
+ $service = new ReviewLikeService();
+
+ $service->handle($id);
+
+ return $this->jsonSuccess();
+ }
+
+}
diff --git a/app/Http/Api/Controllers/SearchController.php b/app/Http/Api/Controllers/SearchController.php
new file mode 100644
index 00000000..e2a8dd32
--- /dev/null
+++ b/app/Http/Api/Controllers/SearchController.php
@@ -0,0 +1,61 @@
+request->get('query', ['trim', 'string']);
+ $type = $this->request->get('type', ['trim', 'string'], 'course');
+
+ $pager = [
+ 'total_pages' => 0,
+ 'total_items' => 0,
+ 'items' => [],
+ ];
+
+ if (empty($query)) {
+ return $this->jsonSuccess(['pager' => $pager]);
+ }
+
+ $service = $this->getSearchService($type);
+
+ $pager = $service->search();
+
+ return $this->jsonSuccess(['pager' => $pager]);
+ }
+
+ /**
+ * @param string $type
+ * @return CourseSearchService|GroupSearchService|UserSearchService
+ */
+ protected function getSearchService($type)
+ {
+ switch ($type) {
+ case 'group':
+ $service = new GroupSearchService;
+ break;
+ case 'user':
+ $service = new UserSearchService();
+ break;
+ default:
+ $service = new CourseSearchService();
+ break;
+ }
+
+ return $service;
+ }
+
+}
diff --git a/app/Http/Api/Controllers/TeacherController.php b/app/Http/Api/Controllers/TeacherController.php
new file mode 100644
index 00000000..f9c000a7
--- /dev/null
+++ b/app/Http/Api/Controllers/TeacherController.php
@@ -0,0 +1,51 @@
+handle();
+
+ return $this->jsonSuccess(['pager' => $pager]);
+ }
+
+ /**
+ * @Get("/{id:[0-9]+}/info", name="api.teacher.info")
+ */
+ public function infoAction($id)
+ {
+ $service = new TeacherInfoService();
+
+ $teacher = $service->handle($id);
+
+ return $this->jsonSuccess(['teacher' => $teacher]);
+ }
+
+ /**
+ * @Get("/{id:[0-9]+}/courses", name="api.teacher.courses")
+ */
+ public function coursesAction($id)
+ {
+ $service = new CourseListService();
+
+ $pager = $service->handle($id);
+
+ return $this->jsonSuccess(['pager' => $pager]);
+ }
+
+}
diff --git a/app/Http/Api/Controllers/TradeController.php b/app/Http/Api/Controllers/TradeController.php
new file mode 100644
index 00000000..f9252452
--- /dev/null
+++ b/app/Http/Api/Controllers/TradeController.php
@@ -0,0 +1,88 @@
+request->getQuery('sn', 'string');
+
+ $service = new TradeInfoService();
+
+ $trade = $service->handle($sn);
+
+ return $this->jsonSuccess(['trade' => $trade]);
+ }
+
+ /**
+ * @Get("/h5/pay", name="api.trade.h5_pay")
+ */
+ public function h5PayAction()
+ {
+ $sn = $this->request->getQuery('sn', 'string');
+
+ $service = new TradeService();
+
+ $response = $service->h5Pay($sn);
+
+ if (!$response) {
+ echo "H5支付跳转失败,请回退重试";
+ }
+
+ $response->send();
+
+ exit();
+ }
+
+ /**
+ * @Post("/h5/create", name="api.trade.h5_create")
+ */
+ public function createH5TradeAction()
+ {
+ $service = new TradeService();
+
+ $trade = $service->createH5Trade();
+
+ $service = new TradeInfoService();
+
+ $trade = $service->handle($trade->sn);
+
+ return $this->jsonSuccess(['trade' => $trade]);
+ }
+
+ /**
+ * @Post("/mp/create", name="api.trade.mp_create")
+ */
+ public function createMpTradeAction()
+ {
+ $service = new TradeService();
+
+ $content = $service->createMpTrade();
+
+ return $this->jsonSuccess($content);
+ }
+
+ /**
+ * @Post("/app/create", name="api.trade.app_create")
+ */
+ public function createAppTradeAction()
+ {
+ $service = new TradeService();
+
+ $content = $service->createMpTrade();
+
+ return $this->jsonSuccess($content);
+ }
+
+}
\ No newline at end of file
diff --git a/app/Http/Api/Controllers/UploadController.php b/app/Http/Api/Controllers/UploadController.php
new file mode 100644
index 00000000..40cf7a61
--- /dev/null
+++ b/app/Http/Api/Controllers/UploadController.php
@@ -0,0 +1,50 @@
+uploadAvatarImage();
+
+ if (!$file) {
+ return $this->jsonError(['msg' => '上传文件失败']);
+ }
+
+ $data = [
+ 'src' => $service->getImageUrl($file->path),
+ 'title' => $file->name,
+ ];
+
+ return $this->jsonSuccess(['data' => $data]);
+ }
+
+ /**
+ * @Post("/im/img", name="api.upload.im_img")
+ */
+ public function uploadImImageAction()
+ {
+ }
+
+ /**
+ * @Post("/im/file", name="api.upload.im_file")
+ */
+ public function uploadImFileAction()
+ {
+
+ }
+
+}
\ No newline at end of file
diff --git a/app/Http/Api/Controllers/UserConsoleController.php b/app/Http/Api/Controllers/UserConsoleController.php
new file mode 100644
index 00000000..671ff955
--- /dev/null
+++ b/app/Http/Api/Controllers/UserConsoleController.php
@@ -0,0 +1,155 @@
+handle();
+
+ return $this->jsonSuccess(['profile' => $profile]);
+ }
+
+ /**
+ * @Get("/account", name="api.uc.account")
+ */
+ public function accountAction()
+ {
+ $service = new AccountInfoService();
+
+ $account = $service->handle();
+
+ return $this->jsonSuccess(['account' => $account]);
+ }
+
+ /**
+ * @Get("/courses", name="api.uc.courses")
+ */
+ public function coursesAction()
+ {
+ $service = new CourseListService();
+
+ $pager = $service->handle();
+
+ return $this->jsonSuccess(['pager' => $pager]);
+ }
+
+ /**
+ * @Get("/favorites", name="api.uc.favorites")
+ */
+ public function favoritesAction()
+ {
+ $service = new FavoriteListService();
+
+ $pager = $service->handle();
+
+ return $this->jsonSuccess(['pager' => $pager]);
+ }
+
+ /**
+ * @Get("/consults", name="api.uc.consults")
+ */
+ public function consultsAction()
+ {
+ $service = new ConsultListService();
+
+ $pager = $service->handle();
+
+ return $this->jsonSuccess(['pager' => $pager]);
+ }
+
+ /**
+ * @Get("/reviews", name="api.uc.reviews")
+ */
+ public function reviewsAction()
+ {
+ $service = new ReviewListService();
+
+ $pager = $service->handle();
+
+ return $this->jsonSuccess(['pager' => $pager]);
+ }
+
+ /**
+ * @Get("/orders", name="api.uc.orders")
+ */
+ public function ordersAction()
+ {
+ $service = new OrderListService();
+
+ $pager = $service->handle();
+
+ return $this->jsonSuccess(['pager' => $pager]);
+ }
+
+ /**
+ * @Get("/refunds", name="api.uc.refunds")
+ */
+ public function refundsAction()
+ {
+ $service = new RefundListService();
+
+ $pager = $service->handle();
+
+ return $this->jsonSuccess(['pager' => $pager]);
+ }
+
+ /**
+ * @Get("/friends", name="api.uc.friends")
+ */
+ public function friendsAction()
+ {
+ $service = new FriendListService();
+
+ $pager = $service->handle();
+
+ return $this->jsonSuccess(['pager' => $pager]);
+ }
+
+ /**
+ * @Get("/groups", name="api.uc.groups")
+ */
+ public function groupsAction()
+ {
+ $service = new GroupListService();
+
+ $pager = $service->handle();
+
+ return $this->jsonSuccess(['pager' => $pager]);
+ }
+
+ /**
+ * @Post("/profile/update", name="api.uc.update_profile")
+ */
+ public function updateProfileAction()
+ {
+ $service = new ProfileUpdateService();
+
+ $service->handle();
+
+ return $this->jsonSuccess();
+ }
+
+}
diff --git a/app/Http/Api/Controllers/UserController.php b/app/Http/Api/Controllers/UserController.php
new file mode 100644
index 00000000..8bd37126
--- /dev/null
+++ b/app/Http/Api/Controllers/UserController.php
@@ -0,0 +1,77 @@
+handle($id);
+
+ return $this->jsonSuccess(['user' => $user]);
+ }
+
+ /**
+ * @Get("/{id:[0-9]+}/courses", name="api.user.courses")
+ */
+ public function coursesAction($id)
+ {
+ $service = new UserCourseListService();
+
+ $pager = $service->handle($id);
+
+ return $this->jsonSuccess(['pager' => $pager]);
+ }
+
+ /**
+ * @Get("/{id:[0-9]+}/favorites", name="api.user.favorites")
+ */
+ public function favoritesAction($id)
+ {
+ $service = new UserFavoriteListService();
+
+ $pager = $service->handle($id);
+
+ return $this->jsonSuccess(['pager' => $pager]);
+ }
+
+ /**
+ * @Get("/{id:[0-9]+}/friends", name="api.user.friends")
+ */
+ public function friendsAction($id)
+ {
+ $service = new UserFriendListService();
+
+ $pager = $service->handle($id);
+
+ return $this->jsonSuccess(['pager' => $pager]);
+ }
+
+ /**
+ * @Get("/{id:[0-9]+}/groups", name="api.user.groups")
+ */
+ public function groupsAction($id)
+ {
+ $service = new UserGroupListService();
+
+ $pager = $service->handle($id);
+
+ return $this->jsonSuccess(['pager' => $pager]);
+ }
+
+}
diff --git a/app/Http/Api/Controllers/VerifyController.php b/app/Http/Api/Controllers/VerifyController.php
new file mode 100644
index 00000000..5594e7ab
--- /dev/null
+++ b/app/Http/Api/Controllers/VerifyController.php
@@ -0,0 +1,38 @@
+handle();
+
+ return $this->jsonSuccess();
+ }
+
+ /**
+ * @Post("/email/code", name="api.verify.email_code")
+ */
+ public function emailCodeAction()
+ {
+ $service = new EmailCodeService();
+
+ $service->handle();
+
+ return $this->jsonSuccess();
+ }
+
+}
diff --git a/app/Http/Api/Controllers/VipController.php b/app/Http/Api/Controllers/VipController.php
new file mode 100644
index 00000000..a9854b11
--- /dev/null
+++ b/app/Http/Api/Controllers/VipController.php
@@ -0,0 +1,40 @@
+request->getQuery('type', 'string', 'discount');
+
+ $service = new VipCourseListService();
+
+ $pager = $service->handle($type);
+
+ return $this->jsonSuccess(['pager' => $pager]);
+ }
+
+ /**
+ * @Get("/users", name="api.vip.users")
+ */
+ public function usersAction()
+ {
+ $service = new VipUserListService();
+
+ $pager = $service->handle();
+
+ return $this->jsonSuccess(['pager' => $pager]);
+ }
+
+}
diff --git a/app/Http/Api/Module.php b/app/Http/Api/Module.php
index 3ea77f24..684e10e6 100644
--- a/app/Http/Api/Module.php
+++ b/app/Http/Api/Module.php
@@ -2,7 +2,7 @@
namespace App\Http\Api;
-use App\Services\Auth\Api as ApiAuth;
+use App\Services\Auth\Api as AppAuth;
use Phalcon\DiInterface;
use Phalcon\Mvc\ModuleDefinitionInterface;
use Phalcon\Mvc\View;
@@ -24,7 +24,7 @@ class Module implements ModuleDefinitionInterface
});
$di->setShared('auth', function () {
- return new ApiAuth();
+ return new AppAuth();
});
}
diff --git a/app/Http/Api/Services/Account.php b/app/Http/Api/Services/Account.php
new file mode 100644
index 00000000..96d09ce6
--- /dev/null
+++ b/app/Http/Api/Services/Account.php
@@ -0,0 +1,85 @@
+auth = $this->getDI()->get('auth');
+ }
+
+ public function register()
+ {
+ $service = new RegisterService();
+
+ $account = $service->handle();
+
+ $userRepo = new UserRepo();
+
+ $user = $userRepo->findById($account->id);
+
+ return $this->auth->saveAuthInfo($user);
+ }
+
+ public function loginByPassword()
+ {
+ $post = $this->request->getPost();
+
+ /**
+ * 使用[account|phone|email]做账户名字段兼容
+ */
+ if (isset($post['phone'])) {
+ $post['account'] = $post['phone'];
+ } elseif (isset($post['email'])) {
+ $post['account'] = $post['email'];
+ }
+
+ $validator = new AccountValidator();
+
+ $user = $validator->checkUserLogin($post['account'], $post['password']);
+
+ //$validator = new CaptchaValidator();
+
+ //$validator->checkCode($post['ticket'], $post['rand']);
+
+ return $this->auth->saveAuthInfo($user);
+ }
+
+ public function loginByVerify()
+ {
+ $post = $this->request->getPost();
+
+ /**
+ * 使用[account|phone|email]做账户名字段兼容
+ */
+ if (isset($post['phone'])) {
+ $post['account'] = $post['phone'];
+ } elseif (isset($post['email'])) {
+ $post['account'] = $post['email'];
+ }
+
+ $validator = new AccountValidator();
+
+ $user = $validator->checkVerifyLogin($post['account'], $post['verify_code']);
+
+ return $this->auth->saveAuthInfo($user);
+ }
+
+ public function logout()
+ {
+ $this->auth->clearAuthInfo();
+ }
+
+}
diff --git a/app/Http/Api/Services/Login.php b/app/Http/Api/Services/Login.php
deleted file mode 100644
index 7ffc50fe..00000000
--- a/app/Http/Api/Services/Login.php
+++ /dev/null
@@ -1,33 +0,0 @@
-checkUserLogin($name, $password);
-
- $auth = new ApiAuth();
-
- return $auth->saveAuthInfo($user);
- }
-
- public function loginByVerify($name, $code)
- {
- $validator = new AccountValidator();
-
- $user = $validator->checkVerifyLogin($name, $code);
-
- $auth = new ApiAuth();
-
- return $auth->saveAuthInfo($user);
- }
-
-}
diff --git a/app/Http/Api/Services/Logout.php b/app/Http/Api/Services/Logout.php
deleted file mode 100644
index 76877ce8..00000000
--- a/app/Http/Api/Services/Logout.php
+++ /dev/null
@@ -1,17 +0,0 @@
-clearAuthInfo();
- }
-
-}
diff --git a/app/Http/Api/Services/Trade.php b/app/Http/Api/Services/Trade.php
new file mode 100644
index 00000000..74b3f7ae
--- /dev/null
+++ b/app/Http/Api/Services/Trade.php
@@ -0,0 +1,125 @@
+checkTradeBySn($sn);
+
+ $response = null;
+
+ if ($trade->channel == TradeModel::CHANNEL_ALIPAY) {
+ $alipay = new Alipay();
+ $response = $alipay->wap($trade);
+ } elseif ($trade->channel == TradeModel::CHANNEL_WXPAY) {
+ $wxpay = new Wxpay();
+ $response = $wxpay->wap($trade);
+ }
+
+ return $response;
+ }
+
+ public function createH5Trade()
+ {
+ $post = $this->request->getPost();
+
+ $validator = new ClientValidator();
+
+ $platform = $this->getPlatform();
+
+ $validator->checkH5Platform($platform);
+
+ $order = $this->checkOrderBySn($post['order_sn']);
+
+ $user = $this->getLoginUser();
+
+ $validator = new TradeValidator();
+
+ $channel = $validator->checkChannel($post['channel']);
+
+ $trade = new TradeModel();
+
+ $trade->subject = $order->subject;
+ $trade->amount = $order->amount;
+ $trade->channel = $channel;
+ $trade->order_id = $order->id;
+ $trade->owner_id = $user->id;
+
+ $trade->create();
+
+ return $trade;
+ }
+
+ public function createMpTrade()
+ {
+ $post = $this->request->getPost();
+
+ $validator = new ClientValidator();
+
+ $platform = $this->getPlatform();
+
+ $platform = $validator->checkMpPlatform($platform);
+
+ $order = $this->checkOrderBySn($post['order_sn']);
+
+ $user = $this->getLoginUser();
+
+ $channel = TradeModel::CHANNEL_WXPAY;
+
+ if ($platform == ClientModel::TYPE_MP_ALIPAY) {
+ $channel = TradeModel::CHANNEL_ALIPAY;
+ } elseif ($platform == ClientModel::TYPE_MP_WEIXIN) {
+ $channel = TradeModel::CHANNEL_WXPAY;
+ }
+
+ $trade = new TradeModel();
+
+ $trade->subject = $order->subject;
+ $trade->amount = $order->amount;
+ $trade->channel = $channel;
+ $trade->order_id = $order->id;
+ $trade->owner_id = $user->id;
+
+ $trade->create();
+
+ $response = null;
+
+ if ($post['channel'] == TradeModel::CHANNEL_ALIPAY) {
+ $alipay = new Alipay();
+ $buyerId = '';
+ $response = $alipay->mini($trade, $buyerId);
+ } elseif ($post['channel'] == TradeModel::CHANNEL_WXPAY) {
+ $wxpay = new Wxpay();
+ $openId = '';
+ $response = $wxpay->mini($trade, $openId);
+ }
+
+ return $response;
+ }
+
+ public function createAppTrade()
+ {
+
+ }
+
+ protected function getPlatform()
+ {
+ return $this->request->getHeader('X-Platform');
+ }
+
+}
diff --git a/app/Http/Home/Controllers/AccountController.php b/app/Http/Home/Controllers/AccountController.php
index 4e2fc3d0..8dc2d285 100644
--- a/app/Http/Home/Controllers/AccountController.php
+++ b/app/Http/Home/Controllers/AccountController.php
@@ -81,9 +81,7 @@ class AccountController extends Controller
$location = $returnUrl ?: $this->url->get(['for' => 'home.index']);
- $content = ['location' => $location];
-
- return $this->jsonSuccess($content);
+ return $this->jsonSuccess(['location' => $location]);
}
/**
@@ -99,9 +97,7 @@ class AccountController extends Controller
$location = $returnUrl ?: $this->url->get(['for' => 'home.index']);
- $content = ['location' => $location];
-
- return $this->jsonSuccess($content);
+ return $this->jsonSuccess(['location' => $location]);
}
/**
diff --git a/app/Http/Home/Controllers/ChapterController.php b/app/Http/Home/Controllers/ChapterController.php
index dace273d..4cc0cc3c 100644
--- a/app/Http/Home/Controllers/ChapterController.php
+++ b/app/Http/Home/Controllers/ChapterController.php
@@ -29,6 +29,18 @@ class ChapterController extends Controller
$this->view->setVar('items', $items);
}
+ /**
+ * @Get("/{id:[0-9]+}/danmus", name="home.chapter.danmus")
+ */
+ public function danmusAction($id)
+ {
+ $service = new ChapterDanmuListService();
+
+ $items = $service->handle($id);
+
+ return $this->jsonSuccess(['items' => $items]);
+ }
+
/**
* @Get("/{id:[0-9]+}", name="home.chapter.show")
*/
@@ -75,18 +87,6 @@ class ChapterController extends Controller
$this->view->setVar('catalog', $catalog);
}
- /**
- * @Get("/{id:[0-9]+}/danmu", name="home.chapter.danmu")
- */
- public function danmuAction($id)
- {
- $service = new ChapterDanmuListService();
-
- $items = $service->handle($id);
-
- return $this->jsonSuccess(['items' => $items]);
- }
-
/**
* @Post("/{id:[0-9]+}/like", name="home.chapter.like")
*/
@@ -98,9 +98,7 @@ class ChapterController extends Controller
$msg = $like->deleted == 0 ? '点赞成功' : '取消点赞成功';
- $content = ['msg' => $msg];
-
- return $this->jsonSuccess($content);
+ return $this->jsonSuccess(['msg' => $msg]);
}
/**
diff --git a/app/Http/Home/Controllers/ChapterLiveController.php b/app/Http/Home/Controllers/ChapterLiveController.php
index 9261f92b..e68c33d0 100644
--- a/app/Http/Home/Controllers/ChapterLiveController.php
+++ b/app/Http/Home/Controllers/ChapterLiveController.php
@@ -3,7 +3,6 @@
namespace App\Http\Home\Controllers;
use App\Http\Home\Services\ChapterLive as ChapterLiveService;
-use App\Traits\Response as ResponseTrait;
use Phalcon\Mvc\View;
/**
@@ -12,8 +11,6 @@ use Phalcon\Mvc\View;
class ChapterLiveController extends Controller
{
- use ResponseTrait;
-
/**
* @Get("/{id:[0-9]+}/chats", name="home.live.chats")
*/
diff --git a/app/Http/Home/Controllers/ConsultController.php b/app/Http/Home/Controllers/ConsultController.php
index e31c1f32..93779f46 100644
--- a/app/Http/Home/Controllers/ConsultController.php
+++ b/app/Http/Home/Controllers/ConsultController.php
@@ -58,9 +58,12 @@ class ConsultController extends Controller
$service = new ConsultInfoService();
- $service->handle($consult->id);
+ $consult = $service->handle($consult->id);
- $content = ['msg' => '提交咨询成功'];
+ $content = [
+ 'consult' => $consult,
+ 'msg' => '提交咨询成功',
+ ];
return $this->jsonSuccess($content);
}
@@ -72,9 +75,16 @@ class ConsultController extends Controller
{
$service = new ConsultUpdateService();
- $service->handle($id);
+ $consult = $service->handle($id);
- $content = ['msg' => '更新咨询成功'];
+ $service = new ConsultInfoService();
+
+ $consult = $service->handle($consult->id);
+
+ $content = [
+ 'consult' => $consult,
+ 'msg' => '更新咨询成功',
+ ];
return $this->jsonSuccess($content);
}
@@ -88,9 +98,7 @@ class ConsultController extends Controller
$service->handle($id);
- $content = ['msg' => '删除咨询成功'];
-
- return $this->jsonSuccess($content);
+ return $this->jsonSuccess(['msg' => '删除咨询成功']);
}
/**
@@ -102,9 +110,16 @@ class ConsultController extends Controller
$service = new ConsultReplyService();
- $service->handle($id);
+ $consult = $service->handle($id);
- $content = ['msg' => '回复咨询成功'];
+ $service = new ConsultInfoService();
+
+ $consult = $service->handle($consult->id);
+
+ $content = [
+ 'consult' => $consult,
+ 'msg' => '回复咨询成功',
+ ];
return $this->jsonSuccess($content);
@@ -129,9 +144,7 @@ class ConsultController extends Controller
$msg = $like->deleted == 0 ? '点赞成功' : '取消点赞成功';
- $content = ['msg' => $msg];
-
- return $this->jsonSuccess($content);
+ return $this->jsonSuccess(['msg' => $msg]);
}
}
diff --git a/app/Http/Home/Controllers/Controller.php b/app/Http/Home/Controllers/Controller.php
index 30819779..df84d9d2 100644
--- a/app/Http/Home/Controllers/Controller.php
+++ b/app/Http/Home/Controllers/Controller.php
@@ -58,6 +58,7 @@ class Controller extends \Phalcon\Mvc\Controller
'controller' => 'error',
'action' => 'maintain',
]);
+ return false;
}
if ($this->isNotSafeRequest()) {
diff --git a/app/Http/Home/Controllers/ImController.php b/app/Http/Home/Controllers/ImController.php
index f768edb4..7461363e 100644
--- a/app/Http/Home/Controllers/ImController.php
+++ b/app/Http/Home/Controllers/ImController.php
@@ -3,7 +3,6 @@
namespace App\Http\Home\Controllers;
use App\Http\Home\Services\Im as ImService;
-use App\Traits\Response as ResponseTrait;
use Phalcon\Mvc\View;
/**
@@ -12,8 +11,6 @@ use Phalcon\Mvc\View;
class ImController extends Controller
{
- use ResponseTrait;
-
public function initialize()
{
parent::initialize();
@@ -265,9 +262,7 @@ class ImController extends Controller
$service->applyFriend();
- $content = ['msg' => '发送申请成功,请等待对方通过'];
-
- return $this->jsonSuccess($content);
+ return $this->jsonSuccess(['msg' => '发送申请成功']);
}
/**
@@ -303,9 +298,7 @@ class ImController extends Controller
$service->applyGroup();
- $content = ['msg' => '发送申请成功,请等待管理员通过'];
-
- return $this->jsonSuccess($content);
+ return $this->jsonSuccess(['msg' => '发送申请成功']);
}
/**
@@ -341,9 +334,7 @@ class ImController extends Controller
$service->quitFriend($id);
- $content = ['msg' => '解除好友成功'];
-
- return $this->jsonSuccess($content);
+ return $this->jsonSuccess(['msg' => '解除好友成功']);
}
/**
@@ -355,9 +346,7 @@ class ImController extends Controller
$service->quitGroup($id);
- $content = ['msg' => '退出群组成功'];
-
- return $this->jsonSuccess($content);
+ return $this->jsonSuccess(['msg' => '退出群组成功']);
}
}
diff --git a/app/Http/Home/Controllers/ImGroupManageController.php b/app/Http/Home/Controllers/ImGroupManageController.php
index 3b76dcfc..f62bf1b1 100644
--- a/app/Http/Home/Controllers/ImGroupManageController.php
+++ b/app/Http/Home/Controllers/ImGroupManageController.php
@@ -48,9 +48,7 @@ class ImGroupManageController extends Controller
$service->updateGroup($id);
- $content = ['msg' => '更新群组成功'];
-
- return $this->jsonSuccess($content);
+ return $this->jsonSuccess(['msg' => '更新群组成功']);
}
/**
@@ -62,8 +60,10 @@ class ImGroupManageController extends Controller
$service->deleteGroupUser($gid, $uid);
+ $location = $this->request->getHTTPReferer();
+
$content = [
- 'location' => $this->request->getHTTPReferer(),
+ 'location' => $location,
'msg' => '移除用户成功',
];
diff --git a/app/Http/Home/Controllers/IndexController.php b/app/Http/Home/Controllers/IndexController.php
index bdee64b7..ea099b71 100644
--- a/app/Http/Home/Controllers/IndexController.php
+++ b/app/Http/Home/Controllers/IndexController.php
@@ -3,10 +3,26 @@
namespace App\Http\Home\Controllers;
use App\Http\Home\Services\Index as IndexService;
+use App\Traits\Client as ClientTrait;
+use Phalcon\Mvc\Dispatcher;
class IndexController extends Controller
{
+ use ClientTrait;
+
+ public function beforeExecuteRoute(Dispatcher $dispatcher)
+ {
+ if ($this->isMobileBrowser()) {
+
+ $this->response->redirect('/h5', true);
+
+ return false;
+ }
+
+ return parent::beforeExecuteRoute($dispatcher);
+ }
+
/**
* @Get("/", name="home.index")
*/
diff --git a/app/Http/Home/Controllers/OrderController.php b/app/Http/Home/Controllers/OrderController.php
index 591c8187..2fe33eff 100644
--- a/app/Http/Home/Controllers/OrderController.php
+++ b/app/Http/Home/Controllers/OrderController.php
@@ -48,8 +48,8 @@ class OrderController extends Controller
*/
public function confirmAction()
{
- $itemId = $this->request->getQuery('item_id', 'int');
- $itemType = $this->request->getQuery('item_type', 'int');
+ $itemId = $this->request->getQuery('item_id', 'string');
+ $itemType = $this->request->getQuery('item_type', 'string');
$service = new OrderConfirmService();
diff --git a/app/Http/Home/Controllers/RefundController.php b/app/Http/Home/Controllers/RefundController.php
index 327cc361..b55bd061 100644
--- a/app/Http/Home/Controllers/RefundController.php
+++ b/app/Http/Home/Controllers/RefundController.php
@@ -44,8 +44,10 @@ class RefundController extends Controller
$service->handle();
+ $location = $this->url->get(['for' => 'home.my.refunds']);
+
$content = [
- 'location' => $this->url->get(['for' => 'home.my.refunds']),
+ 'location' => $location,
'msg' => '申请退款成功',
];
@@ -78,8 +80,10 @@ class RefundController extends Controller
$service->handle($sn);
+ $location = $this->url->get(['for' => 'home.my.refunds']);
+
$content = [
- 'location' => $this->url->get(['for' => 'home.my.refunds']),
+ 'location' => $location,
'msg' => '取消退款成功',
];
diff --git a/app/Http/Home/Controllers/ReviewController.php b/app/Http/Home/Controllers/ReviewController.php
index 48b09a67..e353bf9d 100644
--- a/app/Http/Home/Controllers/ReviewController.php
+++ b/app/Http/Home/Controllers/ReviewController.php
@@ -99,9 +99,7 @@ class ReviewController extends Controller
$service->handle($id);
- $content = ['msg' => '删除评价成功'];
-
- return $this->jsonSuccess($content);
+ return $this->jsonSuccess(['msg' => '删除评价成功']);
}
/**
@@ -115,9 +113,7 @@ class ReviewController extends Controller
$msg = $like->deleted == 0 ? '点赞成功' : '取消点赞成功';
- $content = ['msg' => $msg];
-
- return $this->jsonSuccess($content);
+ return $this->jsonSuccess(['msg' => $msg]);
}
}
diff --git a/app/Http/Home/Controllers/SearchController.php b/app/Http/Home/Controllers/SearchController.php
index 66c249fa..e722a23e 100644
--- a/app/Http/Home/Controllers/SearchController.php
+++ b/app/Http/Home/Controllers/SearchController.php
@@ -5,7 +5,6 @@ namespace App\Http\Home\Controllers;
use App\Services\Logic\Search\Course as CourseSearchService;
use App\Services\Logic\Search\Group as GroupSearchService;
use App\Services\Logic\Search\User as UserSearchService;
-use App\Traits\Response as ResponseTrait;
/**
* @RoutePrefix("/search")
@@ -13,8 +12,6 @@ use App\Traits\Response as ResponseTrait;
class SearchController extends Controller
{
- use ResponseTrait;
-
/**
* @Get("/", name="home.search.index")
*/
@@ -42,14 +39,6 @@ class SearchController extends Controller
$this->view->setVar('pager', $pager);
}
- /**
- * @Get("/form", name="home.search.form")
- */
- public function formAction()
- {
-
- }
-
/**
* @param string $type
* @return CourseSearchService|GroupSearchService|UserSearchService
diff --git a/app/Http/Home/Controllers/UploadController.php b/app/Http/Home/Controllers/UploadController.php
index 73da70f8..e7877cf0 100644
--- a/app/Http/Home/Controllers/UploadController.php
+++ b/app/Http/Home/Controllers/UploadController.php
@@ -20,16 +20,16 @@ class UploadController extends Controller
$file = $service->uploadAvatarImage();
- if ($file) {
- return $this->jsonSuccess([
- 'data' => [
- 'src' => $service->getImageUrl($file->path),
- 'title' => $file->name,
- ]
- ]);
- } else {
+ if (!$file) {
return $this->jsonError(['msg' => '上传文件失败']);
}
+
+ $data = [
+ 'src' => $service->getImageUrl($file->path),
+ 'title' => $file->name,
+ ];
+
+ return $this->jsonSuccess(['data' => $data]);
}
/**
diff --git a/app/Http/Home/Controllers/VerifyController.php b/app/Http/Home/Controllers/VerifyController.php
index d89245bb..1e1666a5 100644
--- a/app/Http/Home/Controllers/VerifyController.php
+++ b/app/Http/Home/Controllers/VerifyController.php
@@ -4,7 +4,6 @@ namespace App\Http\Home\Controllers;
use App\Services\Logic\Verify\EmailCode as EmailCodeService;
use App\Services\Logic\Verify\SmsCode as SmsCodeService;
-use App\Services\Logic\Verify\VerifyCode as VerifyCodeService;
use App\Traits\Response as ResponseTrait;
/**
@@ -15,18 +14,6 @@ class VerifyController extends \Phalcon\Mvc\Controller
use ResponseTrait;
- /**
- * @Post("/code", name="verify.code")
- */
- public function verifyCodeAction()
- {
- $service = new VerifyCodeService();
-
- $service->handle();
-
- return $this->jsonSuccess();
- }
-
/**
* @Post("/sms/code", name="verify.sms_code")
*/
diff --git a/app/Http/Home/Services/Account.php b/app/Http/Home/Services/Account.php
index 4858213d..38efb3b2 100644
--- a/app/Http/Home/Services/Account.php
+++ b/app/Http/Home/Services/Account.php
@@ -3,7 +3,7 @@
namespace App\Http\Home\Services;
use App\Repos\User as UserRepo;
-use App\Services\Auth as AuthService;
+use App\Services\Auth\Home as AuthService;
use App\Services\Logic\Account\Register as RegisterService;
use App\Validators\Account as AccountValidator;
use App\Validators\Captcha as CaptchaValidator;
@@ -40,13 +40,13 @@ class Account extends Service
{
$post = $this->request->getPost();
- $accountValidator = new AccountValidator();
+ $validator = new AccountValidator();
- $user = $accountValidator->checkUserLogin($post['account'], $post['password']);
+ $user = $validator->checkUserLogin($post['account'], $post['password']);
- $captchaValidator = new CaptchaValidator();
+ $validator = new CaptchaValidator();
- $captchaValidator->checkCode($post['ticket'], $post['rand']);
+ $validator->checkCode($post['ticket'], $post['rand']);
$this->auth->saveAuthInfo($user);
}
@@ -55,9 +55,9 @@ class Account extends Service
{
$post = $this->request->getPost();
- $accountValidator = new AccountValidator();
+ $validator = new AccountValidator();
- $user = $accountValidator->checkVerifyLogin($post['account'], $post['verify_code']);
+ $user = $validator->checkVerifyLogin($post['account'], $post['verify_code']);
$this->auth->saveAuthInfo($user);
}
diff --git a/app/Http/Home/Views/course/show_catalog.volt b/app/Http/Home/Views/course/show_catalog.volt
index cf542f8f..60500c47 100644
--- a/app/Http/Home/Views/course/show_catalog.volt
+++ b/app/Http/Home/Views/course/show_catalog.volt
@@ -36,7 +36,7 @@
{% set priv = lesson.me.owned ? 'allow' : 'deny' %}
- {{ lesson.title|e }}
+ {{ lesson.title }}
{% if lesson.free == 1 %}
免费
{% endif %}
diff --git a/app/Http/Home/Views/macros/course.volt b/app/Http/Home/Views/macros/course.volt
index e6f7dfa9..82f6d237 100644
--- a/app/Http/Home/Views/macros/course.volt
+++ b/app/Http/Home/Views/macros/course.volt
@@ -32,12 +32,12 @@
{% if course.market_price > course.vip_price %}
@@ -69,11 +69,11 @@
{% set course_url = url({'for':'home.course.show','id':course.id}) %}