diff --git a/app/Builders/FriendUserList.php b/app/Builders/FriendUserList.php new file mode 100644 index 00000000..962e3291 --- /dev/null +++ b/app/Builders/FriendUserList.php @@ -0,0 +1,41 @@ +getFriends($relations); + + foreach ($relations as $key => $value) { + $relations[$key]['friend'] = $users[$value['friend_id']] ?? new \stdClass(); + } + + return $relations; + } + + public function getFriends(array $relations) + { + $ids = kg_array_column($relations, 'friend_id'); + + $userRepo = new UserRepo(); + + $users = $userRepo->findByIds($ids, ['id', 'name', 'avatar', 'about', 'vip']); + + $baseUrl = kg_ci_base_url(); + + $result = []; + + foreach ($users->toArray() as $user) { + $user['avatar'] = $baseUrl . $user['avatar']; + $result[$user['id']] = $user; + } + + return $result; + } + +} diff --git a/app/Http/Web/Controllers/UserController.php b/app/Http/Web/Controllers/UserController.php index d35a4155..de780983 100644 --- a/app/Http/Web/Controllers/UserController.php +++ b/app/Http/Web/Controllers/UserController.php @@ -4,6 +4,7 @@ namespace App\Http\Web\Controllers; use App\Services\Frontend\User\CourseList as UserCourseListService; use App\Services\Frontend\User\FavoriteList as UserFavoriteListService; +use App\Services\Frontend\User\FriendList as UserFriendListService; use App\Services\Frontend\User\UserInfo as UserInfoService; use Phalcon\Mvc\View; @@ -66,7 +67,7 @@ class UserController extends Controller { $target = $this->request->get('target', 'trim', 'tab-friends'); - $service = new UserFavoriteListService(); + $service = new UserFriendListService(); $pager = $service->handle($id); $pager->items = kg_array_object($pager->items); diff --git a/app/Http/Web/Services/Messenger.php b/app/Http/Web/Services/Messenger.php index 26d080c6..24b13bbd 100644 --- a/app/Http/Web/Services/Messenger.php +++ b/app/Http/Web/Services/Messenger.php @@ -254,6 +254,7 @@ class Messenger extends Service $validator = new ImMessageValidator(); $validator->checkReceiver($to['id'], $to['type']); + $validator->checkIfBlocked($user->id, $to['id'], $to['type']); $from['content'] = $validator->checkContent($from['content']); @@ -269,7 +270,7 @@ class Messenger extends Service ]; if ($to['type'] == 'group') { - $content['id'] = $to['id']; + $message['id'] = $to['id']; } $content = json_encode([ @@ -404,9 +405,8 @@ class Messenger extends Service $friendUser = $friendUserRepo->findFriendUser($user->id, $sender->id); - $friendUserModel = new ImFriendUserModel(); - if (!$friendUser) { + $friendUserModel = new ImFriendUserModel(); $friendUserModel->create([ 'user_id' => $user->id, 'friend_id' => $sender->id, @@ -419,9 +419,10 @@ class Messenger extends Service $groupId = $message->item_info['group']['id'] ?: 0; if (!$friendUser) { + $friendUserModel = new ImFriendUserModel(); $friendUserModel->create([ - 'user_id' => $user->id, - 'friend_id' => $sender->id, + 'user_id' => $sender->id, + 'friend_id' => $user->id, 'group_id' => $groupId, ]); } @@ -813,7 +814,7 @@ class Messenger extends Service } } - protected function handleAcceptFriendNotice(UserModel $sender, UserModel $receiver, ImSystemMessageModel $message) + protected function handleAcceptFriendNotice(UserModel $sender, UserModel $receiver, ImSystemMessageModel $applyMessage) { $sysMsgModel = new ImSystemMessageModel(); @@ -837,8 +838,10 @@ class Messenger extends Service if ($online) { /** - * @var array $itemInfo + * 上层操作更新了item_info,类型发生了变化,故重新获取 */ + $messageRepo = new ImSystemMessageRepo(); + $message = $messageRepo->findById($applyMessage->id); $itemInfo = $message->item_info; $content = kg_json_encode([ @@ -962,6 +965,7 @@ class Messenger extends Service 'group' => [ 'id' => $group->id, 'name' => $group->name, + 'avatar' => $group->avatar, ], ]); diff --git a/app/Http/Web/Views/messenger/find.volt b/app/Http/Web/Views/messenger/find.volt index 75fe9de4..f5d02c02 100644 --- a/app/Http/Web/Views/messenger/find.volt +++ b/app/Http/Web/Views/messenger/find.volt @@ -2,25 +2,26 @@ {% block content %} -