优化代码
parent
51f2c36f16
commit
1137e3e762
|
@ -11,9 +11,11 @@
|
||||||
namespace App\Controller\Api\V1;
|
namespace App\Controller\Api\V1;
|
||||||
|
|
||||||
use App\Cache\LastMessage;
|
use App\Cache\LastMessage;
|
||||||
|
use App\Cache\Repository\LockRedis;
|
||||||
use App\Cache\UnreadTalk;
|
use App\Cache\UnreadTalk;
|
||||||
use App\Constants\TalkMessageType;
|
use App\Constants\TalkMessageType;
|
||||||
use App\Constants\TalkMode;
|
use App\Constants\TalkMode;
|
||||||
|
use App\Model\UsersFriend;
|
||||||
use App\Support\UserRelation;
|
use App\Support\UserRelation;
|
||||||
use Hyperf\Di\Annotation\Inject;
|
use Hyperf\Di\Annotation\Inject;
|
||||||
use Hyperf\HttpServer\Annotation\Controller;
|
use Hyperf\HttpServer\Annotation\Controller;
|
||||||
|
@ -82,12 +84,21 @@ class TalkController extends CController
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$user_id = $this->uid();
|
$user_id = $this->uid();
|
||||||
|
$lock = 'talk:list:' . $user_id . '-' . $params['receiver_id'] . '-' . $params['talk_type'];
|
||||||
|
if (!LockRedis::getInstance()->lock($lock, 10)) {
|
||||||
|
return $this->response->fail('创建失败!');
|
||||||
|
}
|
||||||
|
|
||||||
if (!UserRelation::isFriendOrGroupMember($user_id, $params['receiver_id'], $params['talk_type'])) {
|
if (!UserRelation::isFriendOrGroupMember($user_id, $params['receiver_id'], $params['talk_type'])) {
|
||||||
|
LockRedis::getInstance()->delete($lock);
|
||||||
return $this->response->fail('暂不属于好友关系或群聊成员,无法进行聊天!');
|
return $this->response->fail('暂不属于好友关系或群聊成员,无法进行聊天!');
|
||||||
}
|
}
|
||||||
|
|
||||||
$result = $this->talkListService->create($user_id, $params['receiver_id'], $params['talk_type']);
|
$result = $this->talkListService->create($user_id, $params['receiver_id'], $params['talk_type']);
|
||||||
if (!$result) return $this->response->fail('创建失败!');
|
if (!$result) {
|
||||||
|
LockRedis::getInstance()->delete($lock);
|
||||||
|
return $this->response->fail('创建失败!');
|
||||||
|
}
|
||||||
|
|
||||||
$data = [
|
$data = [
|
||||||
'id' => $result['id'],
|
'id' => $result['id'],
|
||||||
|
@ -105,10 +116,11 @@ class TalkController extends CController
|
||||||
];
|
];
|
||||||
|
|
||||||
if ($result['talk_type'] == TalkMode::PRIVATE_CHAT) {
|
if ($result['talk_type'] == TalkMode::PRIVATE_CHAT) {
|
||||||
$userInfo = User::where('id', $user_id)->first(['nickname', 'avatar']);
|
$userInfo = User::where('id', $data['receiver_id'])->first(['nickname', 'avatar']);
|
||||||
$data['avatar'] = $userInfo->avatar;
|
$data['avatar'] = $userInfo->avatar;
|
||||||
$data['name'] = $userInfo->nickname;
|
$data['name'] = $userInfo->nickname;
|
||||||
$data['unread_num'] = UnreadTalk::getInstance()->read($data['receiver_id'], $user_id);
|
$data['unread_num'] = UnreadTalk::getInstance()->read($data['receiver_id'], $user_id);
|
||||||
|
$data['remark_name'] = UsersFriend::getFriendRemark($user_id, (int)$data['receiver_id']);
|
||||||
} else if ($result['talk_type'] == TalkMode::GROUP_CHAT) {
|
} else if ($result['talk_type'] == TalkMode::GROUP_CHAT) {
|
||||||
$groupInfo = Group::where('id', $data['receiver_id'])->first(['group_name', 'avatar']);
|
$groupInfo = Group::where('id', $data['receiver_id'])->first(['group_name', 'avatar']);
|
||||||
$data['name'] = $groupInfo->group_name;
|
$data['name'] = $groupInfo->group_name;
|
||||||
|
|
Loading…
Reference in New Issue