diff --git a/app/Http/Web/Controllers/CourseController.php b/app/Http/Web/Controllers/CourseController.php index 1376ff67..4507c78e 100644 --- a/app/Http/Web/Controllers/CourseController.php +++ b/app/Http/Web/Controllers/CourseController.php @@ -28,16 +28,12 @@ class CourseController extends Controller */ public function listAction() { - $_REQUEST['limit'] = 12; - - $service = new CourseListService(); - - $pager = $service->handle(); - - $pager->items = kg_array_object($pager->items); - $service = new CourseQueryService(); + $params = $service->getQueryParams(); + + $pagerUrl = $this->url->get(['for' => 'web.course.pager'], $params); + $topCategories = $service->handleTopCategories(); $subCategories = $service->handleSubCategories(); @@ -45,11 +41,27 @@ class CourseController extends Controller $levels = $service->handleLevels(); $sorts = $service->handleSorts(); + $this->view->setVar('pager_url', $pagerUrl); $this->view->setVar('top_categories', $topCategories); $this->view->setVar('sub_categories', $subCategories); $this->view->setVar('models', $models); $this->view->setVar('levels', $levels); $this->view->setVar('sorts', $sorts); + } + + /** + * @Get("/pager", name="web.course.pager") + */ + public function pagerAction() + { + $service = new CourseListService(); + + $pager = $service->handle(); + $pager->items = kg_array_object($pager->items); + $pager->target = 'course-list'; + + $this->view->setRenderLevel(View::LEVEL_ACTION_VIEW); + $this->view->pick('course/list_pager'); $this->view->setVar('pager', $pager); } diff --git a/app/Http/Web/Controllers/LiveController.php b/app/Http/Web/Controllers/LiveController.php index b4ab59ed..afa219c9 100644 --- a/app/Http/Web/Controllers/LiveController.php +++ b/app/Http/Web/Controllers/LiveController.php @@ -9,19 +9,11 @@ use Phalcon\Mvc\View; /** * @RoutePrefix("/live") */ -class LiveController extends \Phalcon\Mvc\Controller +class LiveController extends Controller { use ResponseTrait; - /** - * @Get("/{id:[0-9]+}/members", name="web.live.members") - */ - public function membersAction($id) - { - return $this->jsonSuccess(); - } - /** * @Get("/{id:[0-9]+}/stats", name="web.live.stats") */ @@ -48,14 +40,6 @@ class LiveController extends \Phalcon\Mvc\Controller return $this->jsonSuccess(); } - /** - * @Post("/{id:[0-9]+}/unbind", name="web.live.unbind") - */ - public function unbindAction($id) - { - - } - /** * @Post("/{id:[0-9]+}/message", name="web.live.message") */ diff --git a/app/Http/Web/Services/CourseQuery.php b/app/Http/Web/Services/CourseQuery.php index 92a65247..b0b4e34f 100644 --- a/app/Http/Web/Services/CourseQuery.php +++ b/app/Http/Web/Services/CourseQuery.php @@ -210,7 +210,7 @@ class CourseQuery extends Service return $result; } - protected function getQueryParams() + public function getQueryParams() { $query = $this->request->getQuery(); diff --git a/app/Http/Web/Services/Im.php b/app/Http/Web/Services/Im.php index d1ab3807..826e5c0c 100644 --- a/app/Http/Web/Services/Im.php +++ b/app/Http/Web/Services/Im.php @@ -15,6 +15,7 @@ use App\Repos\ImGroup as ImGroupRepo; use App\Repos\ImGroupMessage as ImGroupMessageRepo; use App\Repos\ImSystemMessage as ImSystemMessageRepo; use App\Repos\ImUser as ImUserRepo; +use App\Repos\User as UserRepo; use App\Validators\ImFriendUser as ImFriendUserValidator; use App\Validators\ImGroup as ImGroupValidator; use App\Validators\ImGroupUser as ImGroupUserValidator; @@ -24,7 +25,7 @@ use GatewayClient\Gateway; /** * 警告: - * user对象有更新操作会导致afterFetch()中的设置失效, + * 对象有更新操作会导致afterFetch()中的设置失效, * 有相关依赖的要重新调用一次afterFetch() */ class Im extends Service @@ -34,20 +35,20 @@ class Im extends Service public function init() { - $user = $this->getLoginUser(); + $loginUser = $this->getLoginUser(); - $imUser = $this->getImUser($user->id); + $user = $this->getImUser($loginUser->id); $mine = [ - 'id' => $imUser->id, - 'username' => $imUser->name, - 'avatar' => $imUser->avatar, - 'sign' => $imUser->sign, - 'status' => $imUser->status, + 'id' => $user->id, + 'username' => $user->name, + 'avatar' => $user->avatar, + 'sign' => $user->sign, + 'status' => $user->status, ]; - $friend = $this->handleFriendList($imUser); - $group = $this->handleGroupList($imUser); + $friend = $this->handleFriendList($user); + $group = $this->handleGroupList($user); return [ 'mine' => $mine, @@ -68,7 +69,7 @@ class Im extends Service $page = $pagerQuery->getPage(); $limit = $pagerQuery->getLimit(); - $userRepo = new ImUserRepo(); + $userRepo = new UserRepo(); $pager = $userRepo->paginate($params, $sort, $page, $limit); @@ -293,9 +294,9 @@ class Im extends Service public function bindUser() { - $user = $this->getLoginUser(); + $loginUser = $this->getLoginUser(); - $imUser = $this->getImUser($user->id); + $user = $this->getImUser($loginUser->id); $clientId = $this->request->getPost('client_id'); @@ -313,7 +314,7 @@ class Im extends Service } } - $this->pushOnlineTips($imUser); + $this->pushOnlineTips($user); } public function sendMessage() @@ -434,9 +435,9 @@ class Im extends Service public function updateStatus() { - $user = $this->getLoginUser(); + $loginUser = $this->getLoginUser(); - $imUser = $this->getImUser($user->id); + $user = $this->getImUser($loginUser->id); $status = $this->request->getPost('status'); @@ -444,16 +445,16 @@ class Im extends Service $validator->checkSign($status); - $imUser->update(['status' => $status]); + $user->update(['status' => $status]); - $this->pushOnlineTips($imUser); + $this->pushOnlineTips($user); } public function updateSignature() { - $user = $this->getLoginUser(); + $loginUser = $this->getLoginUser(); - $imUser = $this->getImUser($user->id); + $user = $this->getImUser($loginUser->id); $sign = $this->request->getPost('sign'); @@ -461,16 +462,16 @@ class Im extends Service $sign = $validator->checkSign($sign); - $imUser->update(['sign' => $sign]); + $user->update(['sign' => $sign]); - return $imUser; + return $user; } public function updateSkin() { - $user = $this->getLoginUser(); + $loginUser = $this->getLoginUser(); - $imUser = $this->getImUser($user->id); + $user = $this->getImUser($loginUser->id); $skin = $this->request->getPost('skin'); @@ -478,9 +479,9 @@ class Im extends Service $skin = $validator->checkSkin($skin); - $imUser->update(['skin' => $skin]); + $user->update(['skin' => $skin]); - return $imUser; + return $user; } protected function pushOnlineTips(ImUserModel $user) @@ -503,9 +504,9 @@ class Im extends Service $this->persistent->online_push_time = time(); - $imUserRepo = new ImUserRepo(); + $userRepo = new ImUserRepo(); - $friendUsers = $imUserRepo->findImFriendUsers($user->id); + $friendUsers = $userRepo->findImFriendUsers($user->id); if ($friendUsers->count() == 0) { return; diff --git a/app/Http/Web/Services/ImFriendTrait.php b/app/Http/Web/Services/ImFriendTrait.php index 6a70533a..3ceb4bc9 100644 --- a/app/Http/Web/Services/ImFriendTrait.php +++ b/app/Http/Web/Services/ImFriendTrait.php @@ -5,10 +5,9 @@ namespace App\Http\Web\Services; use App\Models\ImFriendGroup as ImFriendGroupModel; use App\Models\ImFriendUser as ImFriendUserModel; use App\Models\ImSystemMessage as ImSystemMessageModel; -use App\Models\User as UserModel; +use App\Models\ImUser as ImUserModel; use App\Repos\ImFriendUser as ImFriendUserRepo; -use App\Repos\ImSystemMessage as ImSystemMessageRepo; -use App\Repos\User as UserRepo; +use App\Repos\ImUser as ImUserRepo; use App\Validators\ImFriendUser as ImFriendUserValidator; use App\Validators\ImMessage as ImMessageValidator; use GatewayClient\Gateway; @@ -18,9 +17,11 @@ Trait ImFriendTrait public function applyFriend() { - $post = $this->request->getPost(); + $loginUser = $this->getLoginUser(); - $user = $this->getLoginUser(); + $user = $this->getImUser($loginUser->id); + + $post = $this->request->getPost(); $validator = new ImFriendUserValidator(); @@ -37,7 +38,9 @@ Trait ImFriendTrait public function acceptFriend() { - $user = $this->getLoginUser(); + $loginUser = $this->getLoginUser(); + + $user = $this->getImUser($loginUser->id); $messageId = $this->request->getPost('message_id'); $groupId = $this->request->getPost('group_id'); @@ -54,9 +57,7 @@ Trait ImFriendTrait return; } - $userRepo = new UserRepo(); - - $sender = $userRepo->findById($message->sender_id); + $sender = $this->getImUser($message->sender_id); $friendUserRepo = new ImFriendUserRepo(); @@ -85,7 +86,9 @@ Trait ImFriendTrait } $itemInfo = $message->item_info; + $itemInfo['status'] = ImSystemMessageModel::REQUEST_ACCEPTED; + $message->update(['item_info' => $itemInfo]); $this->handleAcceptFriendNotice($user, $sender, $message); @@ -93,7 +96,9 @@ Trait ImFriendTrait public function refuseFriend() { - $user = $this->getLoginUser(); + $loginUser = $this->getLoginUser(); + + $user = $this->getImUser($loginUser->id); $messageId = $this->request->getPost('message_id'); @@ -106,19 +111,19 @@ Trait ImFriendTrait } $itemInfo = $message->item_info; + $itemInfo['status'] = ImSystemMessageModel::REQUEST_REFUSED; + $message->update(['item_info' => $itemInfo]); - $userRepo = new UserRepo(); - - $sender = $userRepo->findById($message->sender_id); + $sender = $this->getImUser($message->sender_id); $this->handleRefuseFriendNotice($user, $sender); } - protected function handleApplyFriendNotice(UserModel $sender, UserModel $receiver, ImFriendGroupModel $group, $remark) + protected function handleApplyFriendNotice(ImUserModel $sender, ImUserModel $receiver, ImFriendGroupModel $group, $remark) { - $userRepo = new UserRepo(); + $userRepo = new ImUserRepo(); $itemType = ImSystemMessageModel::TYPE_FRIEND_REQUEST; @@ -163,7 +168,7 @@ Trait ImFriendTrait } } - protected function handleAcceptFriendNotice(UserModel $sender, UserModel $receiver, ImSystemMessageModel $applyMessage) + protected function handleAcceptFriendNotice(ImUserModel $sender, ImUserModel $receiver, ImSystemMessageModel $applyMessage) { $sysMsgModel = new ImSystemMessageModel(); @@ -189,9 +194,12 @@ Trait ImFriendTrait /** * 上层操作更新了item_info,类型发生了变化,故重新获取 */ - $messageRepo = new ImSystemMessageRepo(); - $message = $messageRepo->findById($applyMessage->id); - $itemInfo = $message->item_info; + $applyMessage->afterFetch(); + + /** + * @var array $itemInfo + */ + $itemInfo = $applyMessage->item_info; $content = kg_json_encode([ 'type' => 'friend_accepted', @@ -210,7 +218,7 @@ Trait ImFriendTrait } } - protected function handleRefuseFriendNotice(UserModel $sender, UserModel $receiver) + protected function handleRefuseFriendNotice(ImUserModel $sender, ImUserModel $receiver) { $sysMsgModel = new ImSystemMessageModel(); diff --git a/app/Http/Web/Services/ImGroupTrait.php b/app/Http/Web/Services/ImGroupTrait.php index a1b3fded..045024db 100644 --- a/app/Http/Web/Services/ImGroupTrait.php +++ b/app/Http/Web/Services/ImGroupTrait.php @@ -5,10 +5,10 @@ namespace App\Http\Web\Services; use App\Models\ImGroup as ImGroupModel; use App\Models\ImGroupUser as ImGroupUserModel; use App\Models\ImSystemMessage as ImSystemMessageModel; -use App\Models\User as UserModel; +use App\Models\ImUser as ImUserModel; use App\Repos\ImGroup as ImGroupRepo; use App\Repos\ImGroupUser as ImGroupUserRepo; -use App\Repos\User as UserRepo; +use App\Repos\ImUser as ImUserRepo; use App\Validators\ImGroup as ImGroupValidator; use App\Validators\ImGroupUser as ImGroupUserValidator; use App\Validators\ImMessage as ImMessageValidator; @@ -19,9 +19,11 @@ Trait ImGroupTrait public function applyGroup() { - $post = $this->request->getPost(); + $loginUser = $this->getLoginUser(); - $user = $this->getLoginUser(); + $user = $this->getImUser($loginUser->id); + + $post = $this->request->getPost(); $validator = new ImGroupUserValidator(); @@ -36,7 +38,9 @@ Trait ImGroupTrait public function acceptGroup() { - $user = $this->getLoginUser(); + $loginUser = $this->getLoginUser(); + + $user = $this->getImUser($loginUser->id); $messageId = $this->request->getPost('message_id'); @@ -56,9 +60,7 @@ Trait ImGroupTrait $validator->checkOwner($user->id, $group->user_id); - $userRepo = new UserRepo(); - - $applicant = $userRepo->findById($message->sender_id); + $applicant = $this->getImUser($message->sender_id); $groupUserRepo = new ImGroupUserRepo(); @@ -73,7 +75,9 @@ Trait ImGroupTrait } $itemInfo = $message->item_info; + $itemInfo['status'] = ImSystemMessageModel::REQUEST_ACCEPTED; + $message->update(['item_info' => $itemInfo]); $this->handleAcceptGroupNotice($user, $applicant, $group); @@ -83,7 +87,9 @@ Trait ImGroupTrait public function refuseGroup() { - $user = $this->getLoginUser(); + $loginUser = $this->getLoginUser(); + + $user = $this->getImUser($loginUser->id); $messageId = $this->request->getPost('message_id'); @@ -104,19 +110,19 @@ Trait ImGroupTrait $validator->checkOwner($user->id, $group->user_id); $itemInfo = $message->item_info; + $itemInfo['status'] = ImSystemMessageModel::REQUEST_REFUSED; + $message->update(['item_info' => $itemInfo]); - $userRepo = new UserRepo(); - - $sender = $userRepo->findById($message->sender_id); + $sender = $this->getImUser($message->sender_id); $this->handleRefuseGroupNotice($user, $sender); } - protected function handleApplyGroupNotice(UserModel $sender, ImGroupModel $group, $remark) + protected function handleApplyGroupNotice(ImUserModel $sender, ImGroupModel $group, $remark) { - $userRepo = new UserRepo(); + $userRepo = new ImUserRepo(); $receiver = $userRepo->findById($group->user_id); @@ -163,7 +169,7 @@ Trait ImGroupTrait } } - protected function handleAcceptGroupNotice(UserModel $sender, UserModel $receiver, ImGroupModel $group) + protected function handleAcceptGroupNotice(ImUserModel $sender, ImUserModel $receiver, ImGroupModel $group) { $sysMsgModel = new ImSystemMessageModel(); @@ -199,7 +205,7 @@ Trait ImGroupTrait } } - protected function handleRefuseGroupNotice(UserModel $sender, UserModel $receiver) + protected function handleRefuseGroupNotice(ImUserModel $sender, ImUserModel $receiver) { $sysMsgModel = new ImSystemMessageModel(); @@ -224,7 +230,7 @@ Trait ImGroupTrait } } - protected function handleNewGroupUserNotice(UserModel $newUser, ImGroupModel $group) + protected function handleNewGroupUserNotice(ImUserModel $newUser, ImGroupModel $group) { $groupRepo = new ImGroupRepo(); diff --git a/app/Http/Web/Services/Live.php b/app/Http/Web/Services/Live.php index c6b98007..061e9abe 100644 --- a/app/Http/Web/Services/Live.php +++ b/app/Http/Web/Services/Live.php @@ -15,7 +15,7 @@ class Live extends Service { $chapter = $this->checkChapterCache($id); - Gateway::$registerAddress = '127.0.0.1:1238'; + Gateway::$registerAddress = $this->getRegisterAddress(); $groupName = $this->getGroupName($chapter->id); @@ -44,7 +44,7 @@ class Live extends Service $groupName = $this->getGroupName($chapter->id); - Gateway::$registerAddress = '127.0.0.1:1238'; + Gateway::$registerAddress = $this->getRegisterAddress(); if ($user->id > 0) { Gateway::bindUid($clientId, $user->id); @@ -59,36 +59,21 @@ class Live extends Service $user = $this->getLoginUser(); - $from = $this->request->getPost('from'); - $to = $this->request->getPost('to'); - - Gateway::$registerAddress = '127.0.0.1:1238'; + Gateway::$registerAddress = $this->getRegisterAddress(); $groupName = $this->getGroupName($chapter->id); - $excludeClientId = null; - - if ($user->id == $from['id']) { - $excludeClientId = Gateway::getClientIdByUid($user->id); - } - - $content = [ - 'username' => $from['username'], - 'avatar' => $from['avatar'], - 'content' => $from['content'], - 'fromid' => $from['id'], - 'id' => $to['id'], - 'type' => $to['type'], - 'timestamp' => 1000 * time(), - 'mine' => false, - ]; + $excludeClientId = Gateway::getClientIdByUid($user->id); $message = json_encode([ 'type' => 'show_message', - 'content' => $content, + 'user' => [ + 'id' => $user->id, + 'name' => $user->name, + 'avatar' => $user->avatar, + ], ]); - Gateway::sendToGroup($groupName, $message, $excludeClientId); } @@ -105,13 +90,10 @@ class Live extends Service $result = []; foreach ($users->toArray() as $key => $user) { - $user['avatar'] = $baseUrl . $user['avatar']; - $result[] = [ 'id' => $user['id'], 'name' => $user['name'], - 'title' => $user['title'], 'vip' => $user['vip'], 'avatar' => $user['avatar'], ]; @@ -122,7 +104,14 @@ class Live extends Service protected function getGroupName($groupId) { - return "chapter_{$groupId}"; + return "live_{$groupId}"; + } + + protected function getRegisterAddress() + { + $config = $this->getDI()->get('config'); + + return $config->websocket->register_address; } } diff --git a/app/Http/Web/Views/chapter/show_live.volt b/app/Http/Web/Views/chapter/show_live.volt index cc9ab01c..e99b0530 100644 --- a/app/Http/Web/Views/chapter/show_live.volt +++ b/app/Http/Web/Views/chapter/show_live.volt @@ -2,11 +2,14 @@ {% block content %} -
@@ -26,11 +46,8 @@ + - - - - {% endblock %} @@ -39,25 +56,7 @@ - {{ js_include('lib/layui/layui.js') }} {{ js_include('web/js/live.player.js') }} {{ js_include('web/js/live.im.js') }} -{% endblock %} - -{% block inline_js %} - - - {% endblock %} \ No newline at end of file diff --git a/app/Http/Web/Views/chapter/show_vod.volt b/app/Http/Web/Views/chapter/show_vod.volt index aea91173..ac19621e 100644 --- a/app/Http/Web/Views/chapter/show_vod.volt +++ b/app/Http/Web/Views/chapter/show_vod.volt @@ -3,6 +3,7 @@ {% block content %} {% set course_url = url({'for':'web.course.show','id':chapter.course.id}) %} + {% set learning_url = url({'for':'web.chapter.learning','id':chapter.id}) %} +