Skip to content

Commit a627056

Browse files
committed
增加好友备注渲染
1 parent a595f43 commit a627056

File tree

5 files changed

+46
-45
lines changed

5 files changed

+46
-45
lines changed

app/Controller/Laboratory/FriendController.php

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
use App\Controller\AbstractController;
88
use App\Model\Auth\User;
99
use App\Model\Laboratory\FriendChatHistory;
10+
use App\Model\Laboratory\FriendRelation;
1011
use Hyperf\HttpServer\Annotation\Controller;
1112
use Hyperf\HttpServer\Annotation\Middleware;
1213
use Hyperf\HttpServer\Annotation\Middlewares;
@@ -63,6 +64,12 @@ public function historyMessage()
6364
$list = [];
6465
foreach ($messageList as $key => $value) {
6566
$sendTime = intval($value['send_time'] / 1000);
67+
//获取用户联系人
68+
$user = User::query()->select('id', 'desc', 'avatar')->where('id', $value['from_uid'])->first();
69+
$displayName = $user['desc'];
70+
$friendRemark = FriendRelation::query()->where('uid', $value['to_uid'])->where('friend_id', $value['from_uid'])->value('friend_remark');
71+
if (!empty($friendRemark) && $value['from_uid'] != $userInfo['id']) $displayName = $friendRemark;
72+
6673
$list[] = [
6774
'id' => $value['message_id'],
6875
'status' => $value['status'],
@@ -72,8 +79,8 @@ public function historyMessage()
7279
'fileExt' => $value['file_ext'],
7380
'sendTime' => date('Y-m-d', $sendTime) == date('Y-m-d') ? date('H:i:s', $sendTime) : date('Y-m-d, H:i:s', $sendTime) ,
7481
'content' => $value['content'],
75-
'avatar' => User::query()->where('id', $value['from_uid'])->value('avatar'),
76-
'displayName' => User::query()->where('id', $value['from_uid'])->value('desc'),
82+
'avatar' => $user['avatar'],
83+
'displayName' => $displayName,
7784
];
7885
}
7986
return $this->success([

app/Controller/Laboratory/MessageController.php

Lines changed: 0 additions & 36 deletions
This file was deleted.

app/Controller/Laboratory/Ws/FriendController.php

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
use App\Foundation\Facades\MessageParser;
1010
use App\Model\Auth\User;
1111
use App\Model\Laboratory\FriendChatHistory;
12+
use App\Model\Laboratory\FriendRelation;
1213
use App\Model\Laboratory\GroupChatHistory;
1314
use App\Pool\Redis;
1415
use App\Service\Laboratory\MessageService;
@@ -34,6 +35,8 @@ public function sendMessage()
3435

3536
$contactId = Redis::getInstance()->hget(ChatRedisKey::ONLINE_USER_FD_KEY, (string)$contactData['toContactId']);
3637
$receptionState = empty($contactId) ? FriendChatHistory::RECEPTION_STATE_NO : FriendChatHistory::RECEPTION_STATE_YES;
38+
if (!empty($name = FriendRelation::getFriendRemarkNameById($contactData['fromUser']['id'], $contactData['toContactId']))) $contactData['fromUser']['displayName'] = $name;
39+
3740
//添加聊天记录
3841
FriendChatHistory::addMessage($contactData, $receptionState);
3942
$contactData['status'] = FriendChatHistory::FRIEND_CHAT_MESSAGE_STATUS_SUCCEED;
@@ -87,6 +90,12 @@ public function pullMessage()
8790

8891
$list = [];
8992
foreach ($messageList as $key => $value) {
93+
//获取用户联系人
94+
$userInfo = User::query()->select('id', 'desc', 'avatar')->where('id', $value['from_uid'])->first();
95+
$displayName = $userInfo['desc'];
96+
$friendRemark = FriendRelation::query()->where('uid', $value['to_uid'])->where('friend_id', $value['from_uid'])->value('friend_remark');
97+
if (!empty($friendRemark) && $value['from_uid'] != $contactData['user_id']) $displayName = $friendRemark;
98+
9099
$temp = [
91100
'id' => $value['message_id'],
92101
'status' => $value['status'],
@@ -99,12 +108,13 @@ public function pullMessage()
99108
'fileExt' => $value['file_ext'],
100109
'isGroup' => false,
101110
'fromUser' => [
102-
'id' => $value['from_uid'],
103-
'avatar' => User::query()->where('id', $value['from_uid'])->value('avatar'),
104-
'displayName' => User::query()->where('id', $value['from_uid'])->value('desc'),
111+
'id' => $userInfo['id'],
112+
'avatar' => $userInfo['avatar'] ?? '',
113+
'displayName' => $displayName,
105114
],
106115
];
107-
if ($temp['type'] == FriendChatHistory::FRIEND_CHAT_MESSAGE_TYPE_FORWARD) $temp['content'] = MessageService::getInstance()->formatForwardMessage($temp['content'], $temp['fromUser']);
116+
if ($temp['type'] == FriendChatHistory::FRIEND_CHAT_MESSAGE_TYPE_FORWARD)
117+
$temp['content'] = MessageService::getInstance()->formatForwardMessage($temp['content'], $temp['fromUser']);
108118
$list[] = $temp;
109119
}
110120
return [

app/Model/Laboratory/FriendRelation.php

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,13 @@
66

77
use App\Model\Model;
88

9+
/**
10+
* 好友关系表
11+
* Class FriendRelation
12+
* @package App\Model\Laboratory
13+
* @Author YiYuan-Lin
14+
* @Date: 2021/7/9
15+
*/
916
class FriendRelation extends Model
1017
{
1118
/**
@@ -51,4 +58,17 @@ class FriendRelation extends Model
5158
public function getUser() {
5259
return $this->belongsTo('App\Model\Auth\User', 'friend_id', 'id');
5360
}
61+
62+
/**
63+
* 获取好友关系的好友备注
64+
* @param int 发送方 $fromUid
65+
* @param int 接收方 $toUid
66+
* @return \Hyperf\Utils\HigherOrderTapProxy|mixed|string|void
67+
*/
68+
public static function getFriendRemarkNameById(int $fromUid, int $toUid)
69+
{
70+
if (empty($fromUid) || empty($toUid)) return '';
71+
72+
return static::query()->where('uid', $toUid)->where('friend_id', $fromUid)->value('friend_remark');
73+
}
5474
}

app/Service/Laboratory/InitService.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -130,16 +130,16 @@ private function getUnReadMessageByUser(array $user, array $currentUserInfo) : a
130130

131131
$lastMessage = FriendChatHistory::query()
132132
->where(function ($query) use ($currentUserInfo, $user) {
133-
$query->where('from_uid', $currentUserInfo['id'])->where('to_uid', $user['id']);
133+
$query->where('from_uid', $currentUserInfo['id'])->where('to_uid', $user['get_user']['id']);
134134
})->orWhere(function ($query) use ($currentUserInfo, $user) {
135-
$query->where('from_uid', $user['id'])->where('to_uid', $currentUserInfo['id']);
135+
$query->where('from_uid', $user['get_user']['id'])->where('to_uid', $currentUserInfo['id']);
136136
})
137137
->orderBy('send_time', 'desc')
138138
->first();
139139

140140
$unread = FriendChatHistory::query()
141141
->where(function ($query) use ($currentUserInfo, $user) {
142-
$query->where('from_uid', $user['id'])->where('to_uid', $currentUserInfo['id'])
142+
$query->where('from_uid', $user['get_user']['id'])->where('to_uid', $currentUserInfo['id'])
143143
->where('reception_state', FriendChatHistory::RECEPTION_STATE_NO);
144144
})
145145
->orderBy('send_time', 'desc')

0 commit comments

Comments
 (0)