|
@@ -1,1105 +1,1105 @@
|
|
|
-<?php
|
|
|
-
|
|
|
-declare (strict_types = 1);
|
|
|
-namespace App\Controller;
|
|
|
-
|
|
|
-use App\JsonRpc\ChatServiceInterface;
|
|
|
-use App\JsonRpc\UserServiceInterface;
|
|
|
-use App\Service\RedisService;
|
|
|
-use App\Tools\PublicData;
|
|
|
-use App\Tools\Result;
|
|
|
-use function Hyperf\Support\env;
|
|
|
-use Hyperf\Context\Context;
|
|
|
-use Hyperf\Di\Annotation\Inject;
|
|
|
-use Hyperf\Validation\Contract\ValidatorFactoryInterface;
|
|
|
-// use App\Controller\WebSocketController as WebSocket;
|
|
|
-use Hyperf\Context\ApplicationContext as ApplicationContext;
|
|
|
-use App\Controller\WebSocketController;
|
|
|
-use Swoole\WebSocket\Frame;
|
|
|
-
|
|
|
-/**
|
|
|
- *
|
|
|
- * Class ChatController
|
|
|
- * @package App\Controller
|
|
|
- */
|
|
|
-//#[AutoController]
|
|
|
-class ChatController extends AbstractController
|
|
|
-{
|
|
|
- #[Inject]
|
|
|
- protected ValidatorFactoryInterface $validationFactory;
|
|
|
- /**
|
|
|
- * @var ChatServiceInterface
|
|
|
- */
|
|
|
- #[Inject]
|
|
|
- private $chatServiceClient;
|
|
|
- #[Inject]
|
|
|
- private UserServiceInterface $userServiceClient;
|
|
|
- // #[Inject]
|
|
|
- // private WebSocket $webSocketController;
|
|
|
-
|
|
|
- /**
|
|
|
- * 申请添加好友
|
|
|
- * @return array
|
|
|
- */
|
|
|
- public function addFriend()
|
|
|
- {
|
|
|
- $requireData = $this->request->all();
|
|
|
- $validator = $this->validationFactory->make(
|
|
|
- $requireData,
|
|
|
- [
|
|
|
- 'friend_id' => 'required',
|
|
|
- ],
|
|
|
- [
|
|
|
- 'friend_id.required' => '好友ID不能为空',
|
|
|
- ]
|
|
|
- );
|
|
|
- if ($validator->fails()) {
|
|
|
- $errorMessage = $validator->errors()->first();
|
|
|
- return Result::error($errorMessage);
|
|
|
- }
|
|
|
- $requireData['user_id'] = Context::get("UserId");
|
|
|
- //判断UserId是否是friend_id
|
|
|
- $userId = $requireData['user_id'];
|
|
|
- $friendId = $requireData['friend_id'];
|
|
|
- if ($userId == $friendId) {
|
|
|
- return Result::error('不能添加自己为好友');
|
|
|
- }
|
|
|
- //判断friend_id是否可用
|
|
|
- $friendInfo = $this->userServiceClient->getUserInfo((int) $friendId);
|
|
|
- if ($friendInfo['code'] == 0) {
|
|
|
- return Result::error('好友ID不存在');
|
|
|
- }
|
|
|
- $result = $this->chatServiceClient->addFriend($requireData);
|
|
|
-
|
|
|
- return $result ? Result::success($result['message']) : Result::error($result['message']);
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- /**
|
|
|
- * 话题分类
|
|
|
- * @return array
|
|
|
- */
|
|
|
- public function topicType()
|
|
|
- {
|
|
|
- $type = array(
|
|
|
- '1' => '课题',
|
|
|
- '2' => '维权',
|
|
|
- '3' => '讨论',
|
|
|
- );
|
|
|
- $result = array();
|
|
|
- foreach ($type as $k => $v) {
|
|
|
- $result[] = ['value' => $k, 'label' => $v];
|
|
|
- }
|
|
|
- return Result::success($result);
|
|
|
- }
|
|
|
- /**
|
|
|
- * 获取话题列表
|
|
|
- * @return array
|
|
|
- */
|
|
|
- public function topicStatus()
|
|
|
- {
|
|
|
- $status = array(
|
|
|
- '1' => '未审核',
|
|
|
- '2' => '已通过',
|
|
|
- '3' => '已拒绝',
|
|
|
- );
|
|
|
- $result = array();
|
|
|
- foreach ($status as $k => $v) {
|
|
|
- $result[] = ['value' => $k, 'label' => $v];
|
|
|
- }
|
|
|
- return Result::success($result);
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 搜索好友列表
|
|
|
- * @return array
|
|
|
- */
|
|
|
- public function searchFriend()
|
|
|
- {
|
|
|
- $requireData = $this->request->all();
|
|
|
- $validator = $this->validationFactory->make(
|
|
|
- $requireData,
|
|
|
- [
|
|
|
- 'keyword' => 'required',
|
|
|
- ],
|
|
|
- [
|
|
|
- 'keyword.required' => '搜索关键字不能为空',
|
|
|
- ]
|
|
|
- );
|
|
|
- if ($validator->fails()) {
|
|
|
- $errorMessage = $validator->errors()->first();
|
|
|
- return Result::error($errorMessage);
|
|
|
- }
|
|
|
- $requireData['user_id'] = Context::get("UserId");
|
|
|
- // return Result::success($requireData);
|
|
|
- $result = $this->chatServiceClient->searchFriend($requireData);
|
|
|
- return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
|
|
|
- }
|
|
|
- /**
|
|
|
- * 获取好友详情
|
|
|
- * @return array
|
|
|
- */
|
|
|
- public function getFriendInfo()
|
|
|
- {
|
|
|
- $requireData = $this->request->all();
|
|
|
- $validator = $this->validationFactory->make(
|
|
|
- $requireData,
|
|
|
- [
|
|
|
- 'friend_id' => 'required',
|
|
|
- ],
|
|
|
- [
|
|
|
- 'friend_id.required' => '好友ID不能为空',
|
|
|
- ]
|
|
|
- );
|
|
|
- if ($validator->fails()) {
|
|
|
- $errorMessage = $validator->errors()->first();
|
|
|
- return Result::error($errorMessage);
|
|
|
- }
|
|
|
- $requireData['user_id'] = Context::get("UserId");
|
|
|
- $result = $this->chatServiceClient->getFriendInfo($requireData);
|
|
|
- return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 获取我的好友列表
|
|
|
- * @return array
|
|
|
- */
|
|
|
- public function getFriendsList()
|
|
|
- {
|
|
|
- $requireData = [];
|
|
|
- $requireData['user_id'] = Context::get("UserId");
|
|
|
- $requireData['status'] = 2;
|
|
|
- $result = $this->chatServiceClient->getFriendsList($requireData);
|
|
|
- return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
|
|
|
- }
|
|
|
- /**
|
|
|
- * 获取好友申请列表
|
|
|
- * @return array
|
|
|
- */
|
|
|
- public function getFriendsApplyList()
|
|
|
- {
|
|
|
- $requireData = [];
|
|
|
- $requireData['friend_id'] = Context::get("UserId");
|
|
|
- $requireData['status'] = 1;
|
|
|
- $result = $this->chatServiceClient->getFriendsApplyList($requireData);
|
|
|
- return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 好友申请审核通过或拒绝
|
|
|
- * @return array
|
|
|
- */
|
|
|
- public function applyFriend()
|
|
|
- {
|
|
|
- $requireData = $this->request->all();
|
|
|
- $frindid =$requireData['apply_id'];
|
|
|
- unset($requireData['apply_id']);
|
|
|
- // 定义验证规则
|
|
|
- $validator = $this->validationFactory->make(
|
|
|
- $requireData,
|
|
|
- [
|
|
|
- 'id' => 'required|integer',
|
|
|
- 'status' => 'required|in:2,4',
|
|
|
- ],
|
|
|
- [
|
|
|
- 'friend_id.required' => 'ID不能为空',
|
|
|
- 'status.required' => '状态不能为空',
|
|
|
- 'status.in' => '状态错误',
|
|
|
- ]
|
|
|
- );
|
|
|
- // 验证请求数据
|
|
|
- if ($validator->fails()) {
|
|
|
- var_dump($validator->errors()->all());
|
|
|
- return Result::error(implode(', ', $validator->errors()->all()), 0);
|
|
|
- }
|
|
|
- $requireData['user_id'] = Context::get("UserId");
|
|
|
- // var_dump($requireData,'1111test');
|
|
|
- $result = $this->chatServiceClient->applyFriend($requireData);
|
|
|
- if ($result && $result['code'] != 0) {
|
|
|
- $realResult = $result;
|
|
|
- $redisClient = new RedisService();
|
|
|
- $myFriends = $this->chatServiceClient->getFriendsList(['user_id' => $requireData['user_id'], 'status' => 2]);
|
|
|
- // var_dump($myFriends, '--------------------1');
|
|
|
- $redisClient->setUserFriends((string)$requireData['user_id'], $myFriends['data']);
|
|
|
- $myFriends = $this->chatServiceClient->getFriendsList(['user_id' => $frindid, 'status' => 2]);
|
|
|
- // var_dump($myFriends, '-------------3-------1');
|
|
|
- $redisClient->setUserFriends((string)$frindid, $myFriends['data']);
|
|
|
- $result = $redisClient->getUserFriends((string)$requireData['user_id']);
|
|
|
- // var_dump($result,'redis-结果');
|
|
|
- $result = $redisClient->getUserFriends((string)$frindid);
|
|
|
- // var_dump($result,'redis-结果');
|
|
|
- //redis 添加好友
|
|
|
- $result = $realResult;
|
|
|
- }
|
|
|
- return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
|
|
|
- }
|
|
|
- /**
|
|
|
- * 批量设置redis好友
|
|
|
- * @return array
|
|
|
- */
|
|
|
- public function setFriends()
|
|
|
- {
|
|
|
- //获取所有用户
|
|
|
- $userList = $this->userServiceClient->getUserList(['page' => 1, 'pageSize' => 1000 ]);
|
|
|
- //获取id,循环写入redis
|
|
|
- $userList = $userList['data']['rows'];
|
|
|
- var_dump($userList,'111111111111');
|
|
|
-
|
|
|
- $redisClient = new RedisService();
|
|
|
- foreach ($userList as $key => $value) {
|
|
|
- var_dump($value,'----------------------');
|
|
|
- $myFriends = $this->chatServiceClient->getFriendsList(['user_id' => $value['id'], 'status' => 2]);
|
|
|
- $redisClient->setUserFriends((string)$value['id'], $myFriends['data']);
|
|
|
- }
|
|
|
- return Result::success();
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 删除好友
|
|
|
- * @return array
|
|
|
- */
|
|
|
- public function delFriend()
|
|
|
- {
|
|
|
- $requireData = $this->request->all();
|
|
|
- $validator = $this->validationFactory->make(
|
|
|
- $requireData,
|
|
|
- [
|
|
|
- 'friend_id' => 'required',
|
|
|
- ],
|
|
|
- [
|
|
|
- 'friend_id.required' => '好友ID不能为空',
|
|
|
- ]
|
|
|
- );
|
|
|
- if ($validator->fails()) {
|
|
|
- $errorMessage = $validator->errors()->first();
|
|
|
- return Result::error($errorMessage);
|
|
|
- }
|
|
|
- $requireData['user_id'] = Context::get("UserId");
|
|
|
- $result = $this->chatServiceClient->delFriend($requireData);
|
|
|
- //redis 删除好友
|
|
|
- if ($result && $result['code'] != 0) {
|
|
|
- $redisClient = new RedisService();
|
|
|
- $myFriends = $this->chatServiceClient->getFriendsList(['user_id' => $requireData['user_id'], 'status' => 2]);
|
|
|
- $redisClient->setUserFriends((string)$requireData['user_id'], $myFriends['data']);
|
|
|
-
|
|
|
- $myFriends = $this->chatServiceClient->getFriendsList(['user_id' => $requireData['friend_id'], 'status' => 2]);
|
|
|
- $redisClient->setUserFriends((string)$requireData['friend_id'], $myFriends['data']);
|
|
|
- }
|
|
|
- return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 是否好友
|
|
|
- * @return array
|
|
|
- */
|
|
|
- public function isFriend()
|
|
|
- {
|
|
|
- $requireData = $this->request->all();
|
|
|
- $validator = $this->validationFactory->make(
|
|
|
- $requireData,
|
|
|
- [
|
|
|
- 'friend_id' => 'required',
|
|
|
- ],
|
|
|
- [
|
|
|
- 'friend_id.required' => '好友ID不能为空',
|
|
|
- ]
|
|
|
- );
|
|
|
- if ($validator->fails()) {
|
|
|
- $errorMessage = $validator->errors()->first();
|
|
|
- }
|
|
|
- $requireData['user_id'] = Context::get("UserId");
|
|
|
- $result = $this->chatServiceClient->isFriend($requireData);
|
|
|
- return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 更新好友备注
|
|
|
- * @return array
|
|
|
- */
|
|
|
- public function updateFriend()
|
|
|
- {
|
|
|
- $requireData = $this->request->all();
|
|
|
- $validator = $this->validationFactory->make(
|
|
|
- $requireData,
|
|
|
- [
|
|
|
- 'friend_id' => 'required',
|
|
|
- 'remark' => 'required',
|
|
|
- ],
|
|
|
- [
|
|
|
- 'friend_id.required' => '好友ID不能为空',
|
|
|
- 'remark.required' => '备注不能为空',
|
|
|
- ]
|
|
|
- );
|
|
|
- if ($validator->fails()) {
|
|
|
- $errorMessage = $validator->errors()->first();
|
|
|
- return Result::error($errorMessage);
|
|
|
- }
|
|
|
- $requireData['user_id'] = Context::get("UserId");
|
|
|
- $result = $this->chatServiceClient->updateFriend($requireData);
|
|
|
- return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
|
|
|
- }
|
|
|
- /**
|
|
|
- * 会话
|
|
|
- * @return array
|
|
|
- */
|
|
|
- public function getConversation()
|
|
|
- {
|
|
|
- $requireData = $this->request->all();
|
|
|
- $requireData['user_id'] = Context::get("UserId");
|
|
|
- $result = $this->chatServiceClient->getConversation($requireData);
|
|
|
- return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
|
|
|
- }
|
|
|
- /**
|
|
|
- * 获取聊天记录
|
|
|
- * @return array
|
|
|
- */
|
|
|
- public function getChatRecords()
|
|
|
- {
|
|
|
- $requireData = $this->request->all();
|
|
|
- $validator = $this->validationFactory->make(
|
|
|
- $requireData,
|
|
|
- [
|
|
|
- 'friend_id' => 'required',
|
|
|
- ],
|
|
|
- [
|
|
|
- 'friend_id.required' => '好友ID不能为空',
|
|
|
- ]
|
|
|
- );
|
|
|
- if ($validator->fails()) {
|
|
|
- $errorMessage = $validator->errors()->first();
|
|
|
- return Result::error($errorMessage);
|
|
|
- }
|
|
|
- $requireData['user_id'] = Context::get("UserId");
|
|
|
- $result = $this->chatServiceClient->getChatRecords($requireData);
|
|
|
- return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
|
|
|
- }
|
|
|
- /**
|
|
|
- * 获取群聊天
|
|
|
- * @return array
|
|
|
- */
|
|
|
- public function getGroupChatRecords()
|
|
|
- {
|
|
|
- $requireData = $this->request->all();
|
|
|
- $validator = $this->validationFactory->make(
|
|
|
- $requireData,
|
|
|
- [
|
|
|
- 'group_id' => 'required',
|
|
|
- ],
|
|
|
- [
|
|
|
- 'group_id.required' => '群ID不能为空',
|
|
|
- ]
|
|
|
- );
|
|
|
- if ($validator->fails()) {
|
|
|
- $errorMessage = $validator->errors()->first();
|
|
|
- }
|
|
|
- $requireData['user_id'] = Context::get("UserId");
|
|
|
- $result = $this->chatServiceClient->getGroupChatRecords($requireData);
|
|
|
- return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
|
|
|
- }
|
|
|
- /**
|
|
|
- * 获取群成员列表
|
|
|
- * @return array
|
|
|
- */
|
|
|
- public function getGroupMembers()
|
|
|
- {
|
|
|
- $requireData = $this->request->all();
|
|
|
- $validator = $this->validationFactory->make(
|
|
|
- $requireData,
|
|
|
- [
|
|
|
- 'group_id' => 'required',
|
|
|
- ],
|
|
|
- [
|
|
|
- 'group_id.required' => '群ID不能为空',
|
|
|
- ]
|
|
|
- );
|
|
|
- if ($validator->fails()) {
|
|
|
- $errorMessage = $validator->errors()->first();
|
|
|
- return Result::error($errorMessage);
|
|
|
- }
|
|
|
- $requireData['user_id'] = Context::get("UserId");
|
|
|
- $result = $this->chatServiceClient->getGroupMembers($requireData);
|
|
|
- return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
|
|
|
- }
|
|
|
- /**
|
|
|
- * 获取群信息
|
|
|
- * @return array
|
|
|
- */
|
|
|
- public function getGroupInfo()
|
|
|
- {
|
|
|
- $requireData = $this->request->all();
|
|
|
- $validator = $this->validationFactory->make(
|
|
|
- $requireData,
|
|
|
- [
|
|
|
- 'group_id' => 'required',
|
|
|
- ],
|
|
|
- [
|
|
|
- 'group_id.required' => '群ID不能为空',
|
|
|
- ]
|
|
|
- );
|
|
|
- if ($validator->fails()) {
|
|
|
- $errorMessage = $validator->errors()->first();
|
|
|
- }
|
|
|
- $requireData['user_id'] = Context::get("UserId");
|
|
|
- $result = $this->chatServiceClient->getGroupInfo($requireData);
|
|
|
- return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
|
|
|
- }
|
|
|
- /**
|
|
|
- * 获取群列表
|
|
|
- * @return array
|
|
|
- */
|
|
|
- public function getGroupList()
|
|
|
- {
|
|
|
- $requireData = $this->request->all();
|
|
|
- $requireData['user_id'] = Context::get("UserId");
|
|
|
- $result = $this->chatServiceClient->getGroupList($requireData);
|
|
|
- return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
|
|
|
- }
|
|
|
- /**
|
|
|
- * 新建群
|
|
|
- * @return array
|
|
|
- */
|
|
|
- public function addGroup()
|
|
|
- {
|
|
|
- $requireData = $this->request->all();
|
|
|
- $validator = $this->validationFactory->make(
|
|
|
- $requireData,
|
|
|
- [
|
|
|
- 'group_name' => 'required',
|
|
|
- 'group_desc' => 'required',
|
|
|
- // 'group_avatar' => 'required',
|
|
|
- // 'group_member' => 'required',
|
|
|
- ]
|
|
|
- ,
|
|
|
- [
|
|
|
- 'group_name.required' => '群名称不能为空',
|
|
|
- 'group_desc.required' => '群描述不能为空',
|
|
|
- // 'group_avatar.required' => '群头像不能为空',
|
|
|
- // 'group_member.required' => '群成员不能为空',
|
|
|
- ]
|
|
|
- );
|
|
|
- if ($validator->fails()) {
|
|
|
- $errorMessage = $validator->errors()->first();
|
|
|
- return Result::error($errorMessage);
|
|
|
- }
|
|
|
- $requireData['user_id'] = Context::get("UserId");
|
|
|
- $requireData['group_member'] = explode(',', ($requireData['group_member']));
|
|
|
- $result = $this->chatServiceClient->addGroup($requireData);
|
|
|
- return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
|
|
|
- }
|
|
|
- /**
|
|
|
- * 退出群
|
|
|
- * @return array
|
|
|
- */
|
|
|
- public function quitGroup()
|
|
|
- {
|
|
|
- $requireData = $this->request->all();
|
|
|
- $validator = $this->validationFactory->make(
|
|
|
- $requireData,
|
|
|
- [
|
|
|
- 'group_id' => 'required',
|
|
|
- ],
|
|
|
- [
|
|
|
- 'group_id.required' => '群ID不能为空',
|
|
|
- ]
|
|
|
- );
|
|
|
- if ($validator->fails()) {
|
|
|
- $errorMessage = $validator->errors()->first();
|
|
|
- }
|
|
|
- $requireData['user_id'] = Context::get("UserId");
|
|
|
- $result = $this->chatServiceClient->quitGroup($requireData);
|
|
|
- return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
|
|
|
- }
|
|
|
- /**
|
|
|
- * 删除群
|
|
|
- * @return array
|
|
|
- */
|
|
|
- public function delGroup()
|
|
|
- {
|
|
|
- $requireData = $this->request->all();
|
|
|
- $validator = $this->validationFactory->make(
|
|
|
- $requireData,
|
|
|
- [
|
|
|
- 'group_id' => 'required',
|
|
|
- ],
|
|
|
- [
|
|
|
- 'group_id.required' => '群ID不能为空',
|
|
|
- ]
|
|
|
- );
|
|
|
- if ($validator->fails()) {
|
|
|
- $errorMessage = $validator->errors()->first();
|
|
|
- return Result::error($errorMessage);
|
|
|
- }
|
|
|
- $requireData['user_id'] = Context::get("UserId");
|
|
|
- $result = $this->chatServiceClient->delGroup($requireData);
|
|
|
- return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
|
|
|
- }
|
|
|
- /**
|
|
|
- * 删除群成员
|
|
|
- * @return array
|
|
|
- */
|
|
|
- public function delGroupMembers()
|
|
|
- {
|
|
|
- $requireData = $this->request->all();
|
|
|
- $validator = $this->validationFactory->make(
|
|
|
- $requireData,
|
|
|
- [
|
|
|
- 'group_id' => 'required',
|
|
|
- 'group_member' => 'required',
|
|
|
- ],
|
|
|
- [
|
|
|
- 'group_id.required' => '群ID不能为空',
|
|
|
- 'group_member.required' => '群成员不能为空',
|
|
|
- ]
|
|
|
- );
|
|
|
- if ($validator->fails()) {
|
|
|
- $errorMessage = $validator->errors()->first();
|
|
|
- return Result::error($errorMessage);
|
|
|
- }
|
|
|
- $requireData['user_id'] = Context::get("UserId");
|
|
|
- $requireData['group_member'] = explode(',', ($requireData['group_member']));
|
|
|
- $result = $this->chatServiceClient->delGroupMembers($requireData);
|
|
|
- return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
|
|
|
- }
|
|
|
- /**
|
|
|
- * 添加群成员
|
|
|
- * @return array
|
|
|
- */
|
|
|
- public function updateGroupMembers()
|
|
|
- {
|
|
|
- $requireData = $this->request->all();
|
|
|
- $validator = $this->validationFactory->make(
|
|
|
- $requireData,
|
|
|
- [
|
|
|
- 'group_id' => 'required',
|
|
|
- 'group_member' => 'required',
|
|
|
- ],
|
|
|
- [
|
|
|
- 'group_id.required' => '群ID不能为空',
|
|
|
- 'group_member.required' => '群成员不能为空',
|
|
|
- ]
|
|
|
- );
|
|
|
-
|
|
|
- if ($validator->fails()) {
|
|
|
- $errorMessage = $validator->errors()->first();
|
|
|
- return Result::error($errorMessage);
|
|
|
- }
|
|
|
- $requireData['user_id'] = Context::get("UserId");
|
|
|
- $requireData['group_member'] = explode(',', ($requireData['group_member']));
|
|
|
- $result = $this->chatServiceClient->updateGroupMembers($requireData);
|
|
|
- return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 删除群成员
|
|
|
- * @return array
|
|
|
- */
|
|
|
- public function deleteGroupMember()
|
|
|
- {
|
|
|
- $requireData = $this->request->all();
|
|
|
- $validator = $this->validationFactory->make(
|
|
|
- $requireData,
|
|
|
- [
|
|
|
- 'group_id' => 'required',
|
|
|
- 'group_member' => 'required',
|
|
|
- ],
|
|
|
- [
|
|
|
- 'group_id.required' => '群ID不能为空',
|
|
|
- 'group_member.required' => '群成员不能为空',
|
|
|
- ]
|
|
|
- );
|
|
|
- if ($validator->fails()) {
|
|
|
- $errorMessage = $validator->errors()->first();
|
|
|
- return Result::error($errorMessage);
|
|
|
- }
|
|
|
- $requireData['user_id'] = Context::get("UserId");
|
|
|
- $requireData['group_member'] = explode(',', ($requireData['group_member']));
|
|
|
- $result = $this->chatServiceClient->deleteGroupMember($requireData);
|
|
|
- return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
|
|
|
- }
|
|
|
- /**
|
|
|
- * 加入群
|
|
|
- * @return array
|
|
|
- */
|
|
|
- public function joinGroup()
|
|
|
- {
|
|
|
- $requireData = $this->request->all();
|
|
|
- $validator = $this->validationFactory->make(
|
|
|
- $requireData,
|
|
|
- [
|
|
|
- 'group_id' => 'required',
|
|
|
- ],
|
|
|
- [
|
|
|
- 'group_id.required' => '群ID不能为空',
|
|
|
- ]
|
|
|
- );
|
|
|
- if ($validator->fails()) {
|
|
|
- $errorMessage = $validator->errors()->first();
|
|
|
- return Result::error($errorMessage);
|
|
|
- }
|
|
|
- $requireData['user_id'] = Context::get("UserId");
|
|
|
- $result = $this->chatServiceClient->joinGroup($requireData);
|
|
|
- return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 更新群信息
|
|
|
- * @return array
|
|
|
- */
|
|
|
- public function updateGroup()
|
|
|
- {
|
|
|
- $requireData = $this->request->all();
|
|
|
- // 只接受指定的四个字段
|
|
|
- $validatedData = $this->validationFactory->make(
|
|
|
- $requireData,
|
|
|
- [
|
|
|
- 'group_id' => 'required|string',
|
|
|
- 'group_name' => 'nullable|string',
|
|
|
- 'profile' => 'nullable|string',
|
|
|
- 'avatar' => 'nullable|string',
|
|
|
- ],
|
|
|
- [
|
|
|
- 'group_id.required' => '群ID不能为空',
|
|
|
- // 'group_name.required' => '群名称不能为空',
|
|
|
- ]
|
|
|
- );
|
|
|
-
|
|
|
- if ($validatedData->fails()) {
|
|
|
- $errorMessage = $validatedData->errors()->first();
|
|
|
- return Result::error($errorMessage);
|
|
|
- }
|
|
|
- $requireData['user_id'] = Context::get("UserId");
|
|
|
- $result = $this->chatServiceClient->updateGroup($requireData);
|
|
|
- return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
|
|
|
- }
|
|
|
- /**
|
|
|
- * 获取商圈
|
|
|
- * @return array
|
|
|
- */
|
|
|
- public function getTopicsList()
|
|
|
- {
|
|
|
- $requireData = $this->request->all();
|
|
|
- $validator = $this->validationFactory->make(
|
|
|
- $requireData,
|
|
|
- [
|
|
|
- 'page' => 'required|integer',
|
|
|
- 'page_size' => 'required|integer',
|
|
|
- ],
|
|
|
- [
|
|
|
- 'page.required' => '页码不能为空',
|
|
|
- 'page_size.required' => '每页数量不能为空',
|
|
|
- ]
|
|
|
- );
|
|
|
- if ($validator->fails()) {
|
|
|
- $errorMessage = $validator->errors()->first();
|
|
|
- return Result::error($errorMessage);
|
|
|
- }
|
|
|
- $requireData['user_id'] = Context::get("UserId");
|
|
|
- $result = $this->chatServiceClient->getTopicsList($requireData);
|
|
|
- return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
|
|
|
- }
|
|
|
- /**
|
|
|
- * 新增话题商圈
|
|
|
- * @return array
|
|
|
- */
|
|
|
- public function addTopic()
|
|
|
- {
|
|
|
- $requireData = $this->request->all();
|
|
|
- $validator = $this->validationFactory->make(
|
|
|
- $requireData,
|
|
|
- [
|
|
|
- 'title' => 'required|string',
|
|
|
- 'type' => 'required|int',
|
|
|
- 'content' => 'required|string',
|
|
|
- ],
|
|
|
- [
|
|
|
- 'title.required' => '商圈名称不能为空',
|
|
|
- 'type.required' => '商圈类型不能为空',
|
|
|
- 'content.required' => '商圈内容不能为空',
|
|
|
- 'type.int' => '商圈类型只能是数字',
|
|
|
- 'content.string' => '商圈内容只能是字符串',
|
|
|
- 'title.string' => '商圈名称只能是字符串',
|
|
|
- ]
|
|
|
- );
|
|
|
- if ($validator->fails()) {
|
|
|
- $errorMessage = $validator->errors()->first();
|
|
|
- return Result::error($errorMessage);
|
|
|
- }
|
|
|
- $requireData['user_id'] = Context::get("UserId");
|
|
|
- $result = $this->chatServiceClient->addTopic($requireData);
|
|
|
- return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
|
|
|
- }
|
|
|
- /**
|
|
|
- * 更新话题商圈
|
|
|
- * @return array
|
|
|
- */
|
|
|
- public function updateTopic()
|
|
|
- {
|
|
|
- $requireData = $this->request->all();
|
|
|
- $validator = $this->validationFactory->make(
|
|
|
- $requireData,
|
|
|
- [
|
|
|
- 'id' => 'required|string',
|
|
|
- // 'status' => 'required|integer',
|
|
|
- ],
|
|
|
- [
|
|
|
- 'topic_id.required' => '商圈ID不能为空',
|
|
|
- // 'status.required' => '商圈状态不能为空',
|
|
|
- ]
|
|
|
- );
|
|
|
- if ($validator->fails()) {
|
|
|
- $errorMessage = $validator->errors()->first();
|
|
|
- return Result::error($errorMessage);
|
|
|
- }
|
|
|
- $requireData['user_id'] = Context::get("UserId");
|
|
|
- $result = $this->chatServiceClient->updateTopic($requireData);
|
|
|
- return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
|
|
|
- }
|
|
|
- /**
|
|
|
- * 删除话题商圈
|
|
|
- * @return array
|
|
|
- */
|
|
|
- public function delTopic()
|
|
|
- {
|
|
|
- $requireData = $this->request->all();
|
|
|
- $validator = $this->validationFactory->make(
|
|
|
- $requireData,
|
|
|
- [
|
|
|
- 'id' => 'required|string',
|
|
|
- ],
|
|
|
- [
|
|
|
- 'id.required' => '商圈ID不能为空',
|
|
|
- ]
|
|
|
- );
|
|
|
- if ($validator->fails()) {
|
|
|
- $errorMessage = $validator->errors()->first();
|
|
|
- return Result::error($errorMessage);
|
|
|
- }
|
|
|
- $requireData['user_id'] = Context::get("UserId");
|
|
|
- $result = $this->chatServiceClient->delTopic($requireData);
|
|
|
- return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
|
|
|
- }
|
|
|
- /**
|
|
|
- * 获取商圈详情
|
|
|
- * @return array
|
|
|
- */
|
|
|
- public function getTopicInfo()
|
|
|
- {
|
|
|
- $requireData = $this->request->all();
|
|
|
- $validator = $this->validationFactory->make(
|
|
|
- $requireData,
|
|
|
- [
|
|
|
- 'id' => 'required|string',
|
|
|
- ],
|
|
|
- [
|
|
|
- 'id.required' => '商圈ID不能为空',
|
|
|
- ]
|
|
|
- );
|
|
|
- if ($validator->fails()) {
|
|
|
- $errorMessage = $validator->errors()->first();
|
|
|
- return Result::error($errorMessage);
|
|
|
- }
|
|
|
- $requireData['user_id'] = Context::get("UserId");
|
|
|
- $result = $this->chatServiceClient->getTopicInfo($requireData);
|
|
|
- return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
|
|
|
- }
|
|
|
- /**
|
|
|
- * 获取商圈回复
|
|
|
- * @return array
|
|
|
- */
|
|
|
- public function addReply()
|
|
|
- {
|
|
|
- $requireData = $this->request->all();
|
|
|
- $validator = $this->validationFactory->make(
|
|
|
- $requireData,
|
|
|
- [
|
|
|
- 'id' => 'required|string',
|
|
|
- 'content' => 'required|string',
|
|
|
- ],
|
|
|
- [
|
|
|
- 'id.required' => '商圈ID不能为空',
|
|
|
- 'content.required' => '回复内容不能为空',
|
|
|
- ]
|
|
|
- );
|
|
|
- if ($validator->fails()) {
|
|
|
- $errorMessage = $validator->errors()->first();
|
|
|
- return Result::error($errorMessage);
|
|
|
- }
|
|
|
- $requireData['user_id'] = Context::get("UserId");
|
|
|
- $result = $this->chatServiceClient->addReply($requireData);
|
|
|
- return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
|
|
|
- }
|
|
|
- /**
|
|
|
- * 获取商圈评论
|
|
|
- * @return array
|
|
|
- */
|
|
|
- public function getTopicReply()
|
|
|
- {
|
|
|
- $requireData = $this->request->all();
|
|
|
- $validator = $this->validationFactory->make(
|
|
|
- $requireData,
|
|
|
- [
|
|
|
- 'id' => 'required|string',
|
|
|
- 'page' => 'required|integer',
|
|
|
- 'page_size' => 'required|integer',
|
|
|
- ],
|
|
|
- [
|
|
|
- 'id.required' => '商圈ID不能为空',
|
|
|
- 'page.required' => '页码不能为空',
|
|
|
- 'page_size.required' => '每页数量不能为空',
|
|
|
- ]
|
|
|
- );
|
|
|
- if ($validator->fails()) {
|
|
|
- $errorMessage = $validator->errors()->first();
|
|
|
- return Result::error($errorMessage);
|
|
|
- }
|
|
|
- $requireData['user_id'] = Context::get("UserId");
|
|
|
- $result = $this->chatServiceClient->getTopicReply($requireData);
|
|
|
- return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- /**
|
|
|
- * 获取 access_token
|
|
|
- * @return array
|
|
|
- */
|
|
|
- public function getAccessToken()
|
|
|
- {
|
|
|
- $url = env("WECHAT") . "cgi-bin/token?appid=" . env("APPID") . "&secret=" . env("APP_SECRET") . "&grant_type=client_credential";
|
|
|
- $result = PublicData::http_get($url);
|
|
|
- $resultData = json_decode($result, true);
|
|
|
- var_dump($url, $resultData);
|
|
|
- if (isset($resultData['errcode'])) {
|
|
|
- return Result::error($resultData['errmsg']);
|
|
|
- }
|
|
|
- return Result::success($resultData);
|
|
|
- }
|
|
|
- /**
|
|
|
- * 删除一条聊天记录
|
|
|
- * @return array
|
|
|
- */
|
|
|
- public function delRecords()
|
|
|
- {
|
|
|
- $requireData = $this->request->all();
|
|
|
- $validator = $this->validationFactory->make(
|
|
|
- $requireData,
|
|
|
- [
|
|
|
- 'id' => 'required',
|
|
|
- ],
|
|
|
- [
|
|
|
- 'id.required' => '聊天记录ID不能为空',
|
|
|
- ]
|
|
|
- );
|
|
|
- if ($validator->fails()) {
|
|
|
- $errorMessage = $validator->errors()->first();
|
|
|
- }
|
|
|
- $requireData['user_id'] = Context::get("UserId");
|
|
|
- $result = $this->chatServiceClient->delRecords($requireData);
|
|
|
- return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
|
|
|
- }
|
|
|
- /**
|
|
|
- * 删除所有聊天记录
|
|
|
- * @return array
|
|
|
- */
|
|
|
- public function clearRecords()
|
|
|
- {
|
|
|
- $requireData = $this->request->all();
|
|
|
- $validator = $this->validationFactory->make(
|
|
|
- $requireData,
|
|
|
- [
|
|
|
- 'friend_id' => 'required',
|
|
|
- ],
|
|
|
- [
|
|
|
- 'friend_id.required' => '聊天记录ID不能为空',
|
|
|
- ]
|
|
|
- );
|
|
|
- if ($validator->fails()) {
|
|
|
- $errorMessage =$validator->errors()->first();
|
|
|
- }
|
|
|
- $requireData['user_id'] = Context::get("UserId");
|
|
|
- $result = $this->chatServiceClient->clearRecords($requireData);
|
|
|
- return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
|
|
|
- }
|
|
|
- /**
|
|
|
- * 删除群聊记录
|
|
|
- * @return array
|
|
|
- */
|
|
|
- public function clearGroupRecords()
|
|
|
- {
|
|
|
- $requireData = $this->request->all();
|
|
|
- $validator = $this->validationFactory->make(
|
|
|
- $requireData,
|
|
|
- [
|
|
|
- 'id' => 'required',
|
|
|
- ],
|
|
|
- [
|
|
|
- 'id.required' => '聊天记录ID不能为空',
|
|
|
- ]
|
|
|
- );
|
|
|
- if ($validator->fails()) {
|
|
|
- $errorMessage= $validator->errors()->first();
|
|
|
- }
|
|
|
- $requireData['user_id'] = Context::get("UserId");
|
|
|
- $result = $this->chatServiceClient->clearGroupRecords($requireData);
|
|
|
- return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
|
|
|
- }
|
|
|
- /**
|
|
|
- * 撤回一条聊天记录
|
|
|
- * @return array
|
|
|
- */
|
|
|
- public function recallRecord()
|
|
|
- {
|
|
|
-
|
|
|
- $webSocketController = ApplicationContext::getContainer()->get(WebSocketController::class);
|
|
|
- $frame = new Frame();
|
|
|
- $frame->fd = 1; // 替换为实际的客户端 fd
|
|
|
- $frame->data = json_encode([
|
|
|
- 'talk_type' => 1,
|
|
|
- 'receiver_id' => 2, // 接收者 ID
|
|
|
- 'content' => 'Hello, this is a test message!'
|
|
|
- ]);
|
|
|
-
|
|
|
- $webSocketController->send(1, 'Hello, World!');
|
|
|
- return Result::success('');
|
|
|
-
|
|
|
- $requireData = $this->request->all();
|
|
|
- $validator = $this->validationFactory->make(
|
|
|
- $requireData,
|
|
|
- [
|
|
|
- 'content' => 'required',
|
|
|
- ],
|
|
|
- [
|
|
|
- 'content.required' => '聊天记录不能为空',
|
|
|
- ]
|
|
|
- );
|
|
|
- $requireData['user_id'] = Context::get("UserId");
|
|
|
- if ($validator->fails()) {
|
|
|
- $errorMessage = $validator->errors()->first();
|
|
|
- }
|
|
|
- //接入websocket,发送撤回消息
|
|
|
- $redisClient = new RedisService();
|
|
|
- $fd = $redisClient->findFd((int) 32);
|
|
|
- $maxRetries = 1;
|
|
|
- $retryCount = 0;
|
|
|
- $interval = 1; // 秒
|
|
|
- while ($retryCount < $maxRetries) {
|
|
|
- $response = $this->chatServiceClient->getRecordByContent($requireData);
|
|
|
- // 如果成功,返回结果
|
|
|
- if ($response['code'] === 0) {
|
|
|
- if(!empty($response['data']['id'])){
|
|
|
- $records = $response['data'];
|
|
|
- foreach($records as $record){
|
|
|
- //判断 created_at 是否大于一分钟
|
|
|
- $createdAt = strtotime($record['created_at']);
|
|
|
- $currentTime = time();
|
|
|
- $timeDifference = $currentTime - $createdAt;
|
|
|
- if ($timeDifference > 60) {
|
|
|
- return Result::error('超过一分钟,无法撤回');
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- $result = $this->chatServiceClient->recallRecord($response['data']);
|
|
|
- return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
|
|
|
- }
|
|
|
- // 如果失败,等待一段时间后重试
|
|
|
- sleep($interval);
|
|
|
- $retryCount++;
|
|
|
- }
|
|
|
- return Result::error('获取失败');
|
|
|
- }
|
|
|
- /**
|
|
|
- * 获取一条信息
|
|
|
- * @return array
|
|
|
- */
|
|
|
- public function getRecord()
|
|
|
- {
|
|
|
- $requireData = $this->request->all();
|
|
|
- $validator = $this->validationFactory->make(
|
|
|
- $requireData,
|
|
|
- [
|
|
|
- 'id' => 'required',
|
|
|
- ],
|
|
|
- [
|
|
|
- 'id.required' => '聊天记录ID不能为空',
|
|
|
- ]
|
|
|
- );
|
|
|
- if ($validator->fails()) {
|
|
|
- $errorMessage= $validator->errors()->first();
|
|
|
- }
|
|
|
- $requireData['user_id'] = Context::get("UserId");
|
|
|
- $result = $this->chatServiceClient->getRecord($requireData);
|
|
|
- return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
|
|
|
- }
|
|
|
- /**
|
|
|
- * 删除一条topicRely
|
|
|
- * @return array
|
|
|
- */
|
|
|
- public function delReply()
|
|
|
- {
|
|
|
- $requireData = $this->request->all();
|
|
|
- $validator = $this->validationFactory->make(
|
|
|
- $requireData,
|
|
|
- [
|
|
|
- 'id' => 'required',
|
|
|
- ],
|
|
|
- [
|
|
|
- 'id.required' => '回复ID不能为空',
|
|
|
- ]
|
|
|
- );
|
|
|
- if ($validator->fails()) {
|
|
|
- $errorMessage = $validator->errors()->first();
|
|
|
- }
|
|
|
- $requireData['user_id'] = Context::get("UserId");
|
|
|
- $result = $this->chatServiceClient->delReply($requireData);
|
|
|
- return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
|
|
|
- }
|
|
|
- /**
|
|
|
- * 删除所有回复
|
|
|
- * @return array
|
|
|
- */
|
|
|
- public function delAllReply()
|
|
|
- {
|
|
|
- $requireData = $this->request->all();
|
|
|
- $validator = $this->validationFactory->make(
|
|
|
- $requireData,
|
|
|
- [
|
|
|
- 'topicid' => 'required',
|
|
|
- ],
|
|
|
- [
|
|
|
- 'topicid.required' => '回复ID不能为空',
|
|
|
- ]
|
|
|
- );
|
|
|
- if ($validator->fails()) {
|
|
|
- $errorMessage =$validator->errors()->first();
|
|
|
- }
|
|
|
- $requireData['user_id'] = Context::get("UserId");
|
|
|
- $result = $this->chatServiceClient->delAllReply($requireData);
|
|
|
- return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
|
|
|
- }
|
|
|
- /**
|
|
|
- * 获取所有Topic
|
|
|
- * @return array
|
|
|
- */
|
|
|
- public function getTopicsListAdmin()
|
|
|
- {
|
|
|
- $requireData = $this->request->all();
|
|
|
- $validator = $this->validationFactory->make(
|
|
|
- $requireData,
|
|
|
- [
|
|
|
- 'page' => 'required',
|
|
|
- 'limit' => 'required',
|
|
|
- ],
|
|
|
- [
|
|
|
- 'page.required' => '页码不能为空',
|
|
|
- 'limit.required' => '每页数量不能为空',
|
|
|
- ]
|
|
|
- );
|
|
|
- if ($validator->fails()) {
|
|
|
- $errorMessage = $validator->errors()->first();
|
|
|
- }
|
|
|
- $requireData['user_id'] = Context::get("UserId");
|
|
|
- $result = $this->chatServiceClient->getTopicsListAdmin($requireData);
|
|
|
- return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
|
|
|
- }
|
|
|
-
|
|
|
-}
|
|
|
+<?php
|
|
|
+
|
|
|
+declare (strict_types = 1);
|
|
|
+namespace App\Controller;
|
|
|
+
|
|
|
+use App\JsonRpc\ChatServiceInterface;
|
|
|
+use App\JsonRpc\UserServiceInterface;
|
|
|
+use App\Service\RedisService;
|
|
|
+use App\Tools\PublicData;
|
|
|
+use App\Tools\Result;
|
|
|
+use function Hyperf\Support\env;
|
|
|
+use Hyperf\Context\Context;
|
|
|
+use Hyperf\Di\Annotation\Inject;
|
|
|
+use Hyperf\Validation\Contract\ValidatorFactoryInterface;
|
|
|
+// use App\Controller\WebSocketController as WebSocket;
|
|
|
+use Hyperf\Context\ApplicationContext as ApplicationContext;
|
|
|
+use App\Controller\WebSocketController;
|
|
|
+use Swoole\WebSocket\Frame;
|
|
|
+
|
|
|
+/**
|
|
|
+ *
|
|
|
+ * Class ChatController
|
|
|
+ * @package App\Controller
|
|
|
+ */
|
|
|
+//#[AutoController]
|
|
|
+class ChatController extends AbstractController
|
|
|
+{
|
|
|
+ #[Inject]
|
|
|
+ protected ValidatorFactoryInterface $validationFactory;
|
|
|
+ /**
|
|
|
+ * @var ChatServiceInterface
|
|
|
+ */
|
|
|
+ #[Inject]
|
|
|
+ private $chatServiceClient;
|
|
|
+ #[Inject]
|
|
|
+ private UserServiceInterface $userServiceClient;
|
|
|
+ // #[Inject]
|
|
|
+ // private WebSocket $webSocketController;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 申请添加好友
|
|
|
+ * @return array
|
|
|
+ */
|
|
|
+ public function addFriend()
|
|
|
+ {
|
|
|
+ $requireData = $this->request->all();
|
|
|
+ $validator = $this->validationFactory->make(
|
|
|
+ $requireData,
|
|
|
+ [
|
|
|
+ 'friend_id' => 'required',
|
|
|
+ ],
|
|
|
+ [
|
|
|
+ 'friend_id.required' => '好友ID不能为空',
|
|
|
+ ]
|
|
|
+ );
|
|
|
+ if ($validator->fails()) {
|
|
|
+ $errorMessage = $validator->errors()->first();
|
|
|
+ return Result::error($errorMessage);
|
|
|
+ }
|
|
|
+ $requireData['user_id'] = Context::get("UserId");
|
|
|
+ //判断UserId是否是friend_id
|
|
|
+ $userId = $requireData['user_id'];
|
|
|
+ $friendId = $requireData['friend_id'];
|
|
|
+ if ($userId == $friendId) {
|
|
|
+ return Result::error('不能添加自己为好友');
|
|
|
+ }
|
|
|
+ //判断friend_id是否可用
|
|
|
+ $friendInfo = $this->userServiceClient->getUserInfo((int) $friendId);
|
|
|
+ if ($friendInfo['code'] == 0) {
|
|
|
+ return Result::error('好友ID不存在');
|
|
|
+ }
|
|
|
+ $result = $this->chatServiceClient->addFriend($requireData);
|
|
|
+
|
|
|
+ return $result ? Result::success($result['message']) : Result::error($result['message']);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 话题分类
|
|
|
+ * @return array
|
|
|
+ */
|
|
|
+ public function topicType()
|
|
|
+ {
|
|
|
+ $type = array(
|
|
|
+ '1' => '课题',
|
|
|
+ '2' => '维权',
|
|
|
+ '3' => '讨论',
|
|
|
+ );
|
|
|
+ $result = array();
|
|
|
+ foreach ($type as $k => $v) {
|
|
|
+ $result[] = ['value' => $k, 'label' => $v];
|
|
|
+ }
|
|
|
+ return Result::success($result);
|
|
|
+ }
|
|
|
+ /**
|
|
|
+ * 获取话题列表
|
|
|
+ * @return array
|
|
|
+ */
|
|
|
+ public function topicStatus()
|
|
|
+ {
|
|
|
+ $status = array(
|
|
|
+ '1' => '未审核',
|
|
|
+ '2' => '已通过',
|
|
|
+ '3' => '已拒绝',
|
|
|
+ );
|
|
|
+ $result = array();
|
|
|
+ foreach ($status as $k => $v) {
|
|
|
+ $result[] = ['value' => $k, 'label' => $v];
|
|
|
+ }
|
|
|
+ return Result::success($result);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 搜索好友列表
|
|
|
+ * @return array
|
|
|
+ */
|
|
|
+ public function searchFriend()
|
|
|
+ {
|
|
|
+ $requireData = $this->request->all();
|
|
|
+ $validator = $this->validationFactory->make(
|
|
|
+ $requireData,
|
|
|
+ [
|
|
|
+ 'keyword' => 'required',
|
|
|
+ ],
|
|
|
+ [
|
|
|
+ 'keyword.required' => '搜索关键字不能为空',
|
|
|
+ ]
|
|
|
+ );
|
|
|
+ if ($validator->fails()) {
|
|
|
+ $errorMessage = $validator->errors()->first();
|
|
|
+ return Result::error($errorMessage);
|
|
|
+ }
|
|
|
+ $requireData['user_id'] = Context::get("UserId");
|
|
|
+ // return Result::success($requireData);
|
|
|
+ $result = $this->chatServiceClient->searchFriend($requireData);
|
|
|
+ return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
|
|
|
+ }
|
|
|
+ /**
|
|
|
+ * 获取好友详情
|
|
|
+ * @return array
|
|
|
+ */
|
|
|
+ public function getFriendInfo()
|
|
|
+ {
|
|
|
+ $requireData = $this->request->all();
|
|
|
+ $validator = $this->validationFactory->make(
|
|
|
+ $requireData,
|
|
|
+ [
|
|
|
+ 'friend_id' => 'required',
|
|
|
+ ],
|
|
|
+ [
|
|
|
+ 'friend_id.required' => '好友ID不能为空',
|
|
|
+ ]
|
|
|
+ );
|
|
|
+ if ($validator->fails()) {
|
|
|
+ $errorMessage = $validator->errors()->first();
|
|
|
+ return Result::error($errorMessage);
|
|
|
+ }
|
|
|
+ $requireData['user_id'] = Context::get("UserId");
|
|
|
+ $result = $this->chatServiceClient->getFriendInfo($requireData);
|
|
|
+ return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取我的好友列表
|
|
|
+ * @return array
|
|
|
+ */
|
|
|
+ public function getFriendsList()
|
|
|
+ {
|
|
|
+ $requireData = [];
|
|
|
+ $requireData['user_id'] = Context::get("UserId");
|
|
|
+ $requireData['status'] = 2;
|
|
|
+ $result = $this->chatServiceClient->getFriendsList($requireData);
|
|
|
+ return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
|
|
|
+ }
|
|
|
+ /**
|
|
|
+ * 获取好友申请列表
|
|
|
+ * @return array
|
|
|
+ */
|
|
|
+ public function getFriendsApplyList()
|
|
|
+ {
|
|
|
+ $requireData = [];
|
|
|
+ $requireData['friend_id'] = Context::get("UserId");
|
|
|
+ $requireData['status'] = 1;
|
|
|
+ $result = $this->chatServiceClient->getFriendsApplyList($requireData);
|
|
|
+ return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 好友申请审核通过或拒绝
|
|
|
+ * @return array
|
|
|
+ */
|
|
|
+ public function applyFriend()
|
|
|
+ {
|
|
|
+ $requireData = $this->request->all();
|
|
|
+ $frindid =$requireData['apply_id'];
|
|
|
+ unset($requireData['apply_id']);
|
|
|
+ // 定义验证规则
|
|
|
+ $validator = $this->validationFactory->make(
|
|
|
+ $requireData,
|
|
|
+ [
|
|
|
+ 'id' => 'required|integer',
|
|
|
+ 'status' => 'required|in:2,4',
|
|
|
+ ],
|
|
|
+ [
|
|
|
+ 'friend_id.required' => 'ID不能为空',
|
|
|
+ 'status.required' => '状态不能为空',
|
|
|
+ 'status.in' => '状态错误',
|
|
|
+ ]
|
|
|
+ );
|
|
|
+ // 验证请求数据
|
|
|
+ if ($validator->fails()) {
|
|
|
+ var_dump($validator->errors()->all());
|
|
|
+ return Result::error(implode(', ', $validator->errors()->all()), 0);
|
|
|
+ }
|
|
|
+ $requireData['user_id'] = Context::get("UserId");
|
|
|
+ // var_dump($requireData,'1111test');
|
|
|
+ $result = $this->chatServiceClient->applyFriend($requireData);
|
|
|
+ if ($result && $result['code'] != 0) {
|
|
|
+ $realResult = $result;
|
|
|
+ $redisClient = new RedisService();
|
|
|
+ $myFriends = $this->chatServiceClient->getFriendsList(['user_id' => $requireData['user_id'], 'status' => 2]);
|
|
|
+ // var_dump($myFriends, '--------------------1');
|
|
|
+ $redisClient->setUserFriends((string)$requireData['user_id'], $myFriends['data']);
|
|
|
+ $myFriends = $this->chatServiceClient->getFriendsList(['user_id' => $frindid, 'status' => 2]);
|
|
|
+ // var_dump($myFriends, '-------------3-------1');
|
|
|
+ $redisClient->setUserFriends((string)$frindid, $myFriends['data']);
|
|
|
+ $result = $redisClient->getUserFriends((string)$requireData['user_id']);
|
|
|
+ // var_dump($result,'redis-结果');
|
|
|
+ $result = $redisClient->getUserFriends((string)$frindid);
|
|
|
+ // var_dump($result,'redis-结果');
|
|
|
+ //redis 添加好友
|
|
|
+ $result = $realResult;
|
|
|
+ }
|
|
|
+ return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
|
|
|
+ }
|
|
|
+ /**
|
|
|
+ * 批量设置redis好友
|
|
|
+ * @return array
|
|
|
+ */
|
|
|
+ public function setFriends()
|
|
|
+ {
|
|
|
+ //获取所有用户
|
|
|
+ $userList = $this->userServiceClient->getUserList(['page' => 1, 'pageSize' => 1000 ]);
|
|
|
+ //获取id,循环写入redis
|
|
|
+ $userList = $userList['data']['rows'];
|
|
|
+ var_dump($userList,'111111111111');
|
|
|
+
|
|
|
+ $redisClient = new RedisService();
|
|
|
+ foreach ($userList as $key => $value) {
|
|
|
+ var_dump($value,'----------------------');
|
|
|
+ $myFriends = $this->chatServiceClient->getFriendsList(['user_id' => $value['id'], 'status' => 2]);
|
|
|
+ $redisClient->setUserFriends((string)$value['id'], $myFriends['data']);
|
|
|
+ }
|
|
|
+ return Result::success();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 删除好友
|
|
|
+ * @return array
|
|
|
+ */
|
|
|
+ public function delFriend()
|
|
|
+ {
|
|
|
+ $requireData = $this->request->all();
|
|
|
+ $validator = $this->validationFactory->make(
|
|
|
+ $requireData,
|
|
|
+ [
|
|
|
+ 'friend_id' => 'required',
|
|
|
+ ],
|
|
|
+ [
|
|
|
+ 'friend_id.required' => '好友ID不能为空',
|
|
|
+ ]
|
|
|
+ );
|
|
|
+ if ($validator->fails()) {
|
|
|
+ $errorMessage = $validator->errors()->first();
|
|
|
+ return Result::error($errorMessage);
|
|
|
+ }
|
|
|
+ $requireData['user_id'] = Context::get("UserId");
|
|
|
+ $result = $this->chatServiceClient->delFriend($requireData);
|
|
|
+ //redis 删除好友
|
|
|
+ if ($result && $result['code'] != 0) {
|
|
|
+ $redisClient = new RedisService();
|
|
|
+ $myFriends = $this->chatServiceClient->getFriendsList(['user_id' => $requireData['user_id'], 'status' => 2]);
|
|
|
+ $redisClient->setUserFriends((string)$requireData['user_id'], $myFriends['data']);
|
|
|
+
|
|
|
+ $myFriends = $this->chatServiceClient->getFriendsList(['user_id' => $requireData['friend_id'], 'status' => 2]);
|
|
|
+ $redisClient->setUserFriends((string)$requireData['friend_id'], $myFriends['data']);
|
|
|
+ }
|
|
|
+ return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 是否好友
|
|
|
+ * @return array
|
|
|
+ */
|
|
|
+ public function isFriend()
|
|
|
+ {
|
|
|
+ $requireData = $this->request->all();
|
|
|
+ $validator = $this->validationFactory->make(
|
|
|
+ $requireData,
|
|
|
+ [
|
|
|
+ 'friend_id' => 'required',
|
|
|
+ ],
|
|
|
+ [
|
|
|
+ 'friend_id.required' => '好友ID不能为空',
|
|
|
+ ]
|
|
|
+ );
|
|
|
+ if ($validator->fails()) {
|
|
|
+ $errorMessage = $validator->errors()->first();
|
|
|
+ }
|
|
|
+ $requireData['user_id'] = Context::get("UserId");
|
|
|
+ $result = $this->chatServiceClient->isFriend($requireData);
|
|
|
+ return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 更新好友备注
|
|
|
+ * @return array
|
|
|
+ */
|
|
|
+ public function updateFriend()
|
|
|
+ {
|
|
|
+ $requireData = $this->request->all();
|
|
|
+ $validator = $this->validationFactory->make(
|
|
|
+ $requireData,
|
|
|
+ [
|
|
|
+ 'friend_id' => 'required',
|
|
|
+ 'remark' => 'required',
|
|
|
+ ],
|
|
|
+ [
|
|
|
+ 'friend_id.required' => '好友ID不能为空',
|
|
|
+ 'remark.required' => '备注不能为空',
|
|
|
+ ]
|
|
|
+ );
|
|
|
+ if ($validator->fails()) {
|
|
|
+ $errorMessage = $validator->errors()->first();
|
|
|
+ return Result::error($errorMessage);
|
|
|
+ }
|
|
|
+ $requireData['user_id'] = Context::get("UserId");
|
|
|
+ $result = $this->chatServiceClient->updateFriend($requireData);
|
|
|
+ return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
|
|
|
+ }
|
|
|
+ /**
|
|
|
+ * 会话
|
|
|
+ * @return array
|
|
|
+ */
|
|
|
+ public function getConversation()
|
|
|
+ {
|
|
|
+ $requireData = $this->request->all();
|
|
|
+ $requireData['user_id'] = Context::get("UserId");
|
|
|
+ $result = $this->chatServiceClient->getConversation($requireData);
|
|
|
+ return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
|
|
|
+ }
|
|
|
+ /**
|
|
|
+ * 获取聊天记录
|
|
|
+ * @return array
|
|
|
+ */
|
|
|
+ public function getChatRecords()
|
|
|
+ {
|
|
|
+ $requireData = $this->request->all();
|
|
|
+ $validator = $this->validationFactory->make(
|
|
|
+ $requireData,
|
|
|
+ [
|
|
|
+ 'friend_id' => 'required',
|
|
|
+ ],
|
|
|
+ [
|
|
|
+ 'friend_id.required' => '好友ID不能为空',
|
|
|
+ ]
|
|
|
+ );
|
|
|
+ if ($validator->fails()) {
|
|
|
+ $errorMessage = $validator->errors()->first();
|
|
|
+ return Result::error($errorMessage);
|
|
|
+ }
|
|
|
+ $requireData['user_id'] = Context::get("UserId");
|
|
|
+ $result = $this->chatServiceClient->getChatRecords($requireData);
|
|
|
+ return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
|
|
|
+ }
|
|
|
+ /**
|
|
|
+ * 获取群聊天
|
|
|
+ * @return array
|
|
|
+ */
|
|
|
+ public function getGroupChatRecords()
|
|
|
+ {
|
|
|
+ $requireData = $this->request->all();
|
|
|
+ $validator = $this->validationFactory->make(
|
|
|
+ $requireData,
|
|
|
+ [
|
|
|
+ 'group_id' => 'required',
|
|
|
+ ],
|
|
|
+ [
|
|
|
+ 'group_id.required' => '群ID不能为空',
|
|
|
+ ]
|
|
|
+ );
|
|
|
+ if ($validator->fails()) {
|
|
|
+ $errorMessage = $validator->errors()->first();
|
|
|
+ }
|
|
|
+ $requireData['user_id'] = Context::get("UserId");
|
|
|
+ $result = $this->chatServiceClient->getGroupChatRecords($requireData);
|
|
|
+ return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
|
|
|
+ }
|
|
|
+ /**
|
|
|
+ * 获取群成员列表
|
|
|
+ * @return array
|
|
|
+ */
|
|
|
+ public function getGroupMembers()
|
|
|
+ {
|
|
|
+ $requireData = $this->request->all();
|
|
|
+ $validator = $this->validationFactory->make(
|
|
|
+ $requireData,
|
|
|
+ [
|
|
|
+ 'group_id' => 'required',
|
|
|
+ ],
|
|
|
+ [
|
|
|
+ 'group_id.required' => '群ID不能为空',
|
|
|
+ ]
|
|
|
+ );
|
|
|
+ if ($validator->fails()) {
|
|
|
+ $errorMessage = $validator->errors()->first();
|
|
|
+ return Result::error($errorMessage);
|
|
|
+ }
|
|
|
+ $requireData['user_id'] = Context::get("UserId");
|
|
|
+ $result = $this->chatServiceClient->getGroupMembers($requireData);
|
|
|
+ return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
|
|
|
+ }
|
|
|
+ /**
|
|
|
+ * 获取群信息
|
|
|
+ * @return array
|
|
|
+ */
|
|
|
+ public function getGroupInfo()
|
|
|
+ {
|
|
|
+ $requireData = $this->request->all();
|
|
|
+ $validator = $this->validationFactory->make(
|
|
|
+ $requireData,
|
|
|
+ [
|
|
|
+ 'group_id' => 'required',
|
|
|
+ ],
|
|
|
+ [
|
|
|
+ 'group_id.required' => '群ID不能为空',
|
|
|
+ ]
|
|
|
+ );
|
|
|
+ if ($validator->fails()) {
|
|
|
+ $errorMessage = $validator->errors()->first();
|
|
|
+ }
|
|
|
+ $requireData['user_id'] = Context::get("UserId");
|
|
|
+ $result = $this->chatServiceClient->getGroupInfo($requireData);
|
|
|
+ return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
|
|
|
+ }
|
|
|
+ /**
|
|
|
+ * 获取群列表
|
|
|
+ * @return array
|
|
|
+ */
|
|
|
+ public function getGroupList()
|
|
|
+ {
|
|
|
+ $requireData = $this->request->all();
|
|
|
+ $requireData['user_id'] = Context::get("UserId");
|
|
|
+ $result = $this->chatServiceClient->getGroupList($requireData);
|
|
|
+ return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
|
|
|
+ }
|
|
|
+ /**
|
|
|
+ * 新建群
|
|
|
+ * @return array
|
|
|
+ */
|
|
|
+ public function addGroup()
|
|
|
+ {
|
|
|
+ $requireData = $this->request->all();
|
|
|
+ $validator = $this->validationFactory->make(
|
|
|
+ $requireData,
|
|
|
+ [
|
|
|
+ 'group_name' => 'required',
|
|
|
+ 'group_desc' => 'required',
|
|
|
+ // 'group_avatar' => 'required',
|
|
|
+ // 'group_member' => 'required',
|
|
|
+ ]
|
|
|
+ ,
|
|
|
+ [
|
|
|
+ 'group_name.required' => '群名称不能为空',
|
|
|
+ 'group_desc.required' => '群描述不能为空',
|
|
|
+ // 'group_avatar.required' => '群头像不能为空',
|
|
|
+ // 'group_member.required' => '群成员不能为空',
|
|
|
+ ]
|
|
|
+ );
|
|
|
+ if ($validator->fails()) {
|
|
|
+ $errorMessage = $validator->errors()->first();
|
|
|
+ return Result::error($errorMessage);
|
|
|
+ }
|
|
|
+ $requireData['user_id'] = Context::get("UserId");
|
|
|
+ $requireData['group_member'] = explode(',', ($requireData['group_member']));
|
|
|
+ $result = $this->chatServiceClient->addGroup($requireData);
|
|
|
+ return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
|
|
|
+ }
|
|
|
+ /**
|
|
|
+ * 退出群
|
|
|
+ * @return array
|
|
|
+ */
|
|
|
+ public function quitGroup()
|
|
|
+ {
|
|
|
+ $requireData = $this->request->all();
|
|
|
+ $validator = $this->validationFactory->make(
|
|
|
+ $requireData,
|
|
|
+ [
|
|
|
+ 'group_id' => 'required',
|
|
|
+ ],
|
|
|
+ [
|
|
|
+ 'group_id.required' => '群ID不能为空',
|
|
|
+ ]
|
|
|
+ );
|
|
|
+ if ($validator->fails()) {
|
|
|
+ $errorMessage = $validator->errors()->first();
|
|
|
+ }
|
|
|
+ $requireData['user_id'] = Context::get("UserId");
|
|
|
+ $result = $this->chatServiceClient->quitGroup($requireData);
|
|
|
+ return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
|
|
|
+ }
|
|
|
+ /**
|
|
|
+ * 删除群
|
|
|
+ * @return array
|
|
|
+ */
|
|
|
+ public function delGroup()
|
|
|
+ {
|
|
|
+ $requireData = $this->request->all();
|
|
|
+ $validator = $this->validationFactory->make(
|
|
|
+ $requireData,
|
|
|
+ [
|
|
|
+ 'group_id' => 'required',
|
|
|
+ ],
|
|
|
+ [
|
|
|
+ 'group_id.required' => '群ID不能为空',
|
|
|
+ ]
|
|
|
+ );
|
|
|
+ if ($validator->fails()) {
|
|
|
+ $errorMessage = $validator->errors()->first();
|
|
|
+ return Result::error($errorMessage);
|
|
|
+ }
|
|
|
+ $requireData['user_id'] = Context::get("UserId");
|
|
|
+ $result = $this->chatServiceClient->delGroup($requireData);
|
|
|
+ return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
|
|
|
+ }
|
|
|
+ /**
|
|
|
+ * 删除群成员
|
|
|
+ * @return array
|
|
|
+ */
|
|
|
+ public function delGroupMembers()
|
|
|
+ {
|
|
|
+ $requireData = $this->request->all();
|
|
|
+ $validator = $this->validationFactory->make(
|
|
|
+ $requireData,
|
|
|
+ [
|
|
|
+ 'group_id' => 'required',
|
|
|
+ 'group_member' => 'required',
|
|
|
+ ],
|
|
|
+ [
|
|
|
+ 'group_id.required' => '群ID不能为空',
|
|
|
+ 'group_member.required' => '群成员不能为空',
|
|
|
+ ]
|
|
|
+ );
|
|
|
+ if ($validator->fails()) {
|
|
|
+ $errorMessage = $validator->errors()->first();
|
|
|
+ return Result::error($errorMessage);
|
|
|
+ }
|
|
|
+ $requireData['user_id'] = Context::get("UserId");
|
|
|
+ $requireData['group_member'] = explode(',', ($requireData['group_member']));
|
|
|
+ $result = $this->chatServiceClient->delGroupMembers($requireData);
|
|
|
+ return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
|
|
|
+ }
|
|
|
+ /**
|
|
|
+ * 添加群成员
|
|
|
+ * @return array
|
|
|
+ */
|
|
|
+ public function updateGroupMembers()
|
|
|
+ {
|
|
|
+ $requireData = $this->request->all();
|
|
|
+ $validator = $this->validationFactory->make(
|
|
|
+ $requireData,
|
|
|
+ [
|
|
|
+ 'group_id' => 'required',
|
|
|
+ 'group_member' => 'required',
|
|
|
+ ],
|
|
|
+ [
|
|
|
+ 'group_id.required' => '群ID不能为空',
|
|
|
+ 'group_member.required' => '群成员不能为空',
|
|
|
+ ]
|
|
|
+ );
|
|
|
+
|
|
|
+ if ($validator->fails()) {
|
|
|
+ $errorMessage = $validator->errors()->first();
|
|
|
+ return Result::error($errorMessage);
|
|
|
+ }
|
|
|
+ $requireData['user_id'] = Context::get("UserId");
|
|
|
+ $requireData['group_member'] = explode(',', ($requireData['group_member']));
|
|
|
+ $result = $this->chatServiceClient->updateGroupMembers($requireData);
|
|
|
+ return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 删除群成员
|
|
|
+ * @return array
|
|
|
+ */
|
|
|
+ public function deleteGroupMember()
|
|
|
+ {
|
|
|
+ $requireData = $this->request->all();
|
|
|
+ $validator = $this->validationFactory->make(
|
|
|
+ $requireData,
|
|
|
+ [
|
|
|
+ 'group_id' => 'required',
|
|
|
+ 'group_member' => 'required',
|
|
|
+ ],
|
|
|
+ [
|
|
|
+ 'group_id.required' => '群ID不能为空',
|
|
|
+ 'group_member.required' => '群成员不能为空',
|
|
|
+ ]
|
|
|
+ );
|
|
|
+ if ($validator->fails()) {
|
|
|
+ $errorMessage = $validator->errors()->first();
|
|
|
+ return Result::error($errorMessage);
|
|
|
+ }
|
|
|
+ $requireData['user_id'] = Context::get("UserId");
|
|
|
+ $requireData['group_member'] = explode(',', ($requireData['group_member']));
|
|
|
+ $result = $this->chatServiceClient->deleteGroupMember($requireData);
|
|
|
+ return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
|
|
|
+ }
|
|
|
+ /**
|
|
|
+ * 加入群
|
|
|
+ * @return array
|
|
|
+ */
|
|
|
+ public function joinGroup()
|
|
|
+ {
|
|
|
+ $requireData = $this->request->all();
|
|
|
+ $validator = $this->validationFactory->make(
|
|
|
+ $requireData,
|
|
|
+ [
|
|
|
+ 'group_id' => 'required',
|
|
|
+ ],
|
|
|
+ [
|
|
|
+ 'group_id.required' => '群ID不能为空',
|
|
|
+ ]
|
|
|
+ );
|
|
|
+ if ($validator->fails()) {
|
|
|
+ $errorMessage = $validator->errors()->first();
|
|
|
+ return Result::error($errorMessage);
|
|
|
+ }
|
|
|
+ $requireData['user_id'] = Context::get("UserId");
|
|
|
+ $result = $this->chatServiceClient->joinGroup($requireData);
|
|
|
+ return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 更新群信息
|
|
|
+ * @return array
|
|
|
+ */
|
|
|
+ public function updateGroup()
|
|
|
+ {
|
|
|
+ $requireData = $this->request->all();
|
|
|
+ // 只接受指定的四个字段
|
|
|
+ $validatedData = $this->validationFactory->make(
|
|
|
+ $requireData,
|
|
|
+ [
|
|
|
+ 'group_id' => 'required|string',
|
|
|
+ 'group_name' => 'nullable|string',
|
|
|
+ 'profile' => 'nullable|string',
|
|
|
+ 'avatar' => 'nullable|string',
|
|
|
+ ],
|
|
|
+ [
|
|
|
+ 'group_id.required' => '群ID不能为空',
|
|
|
+ // 'group_name.required' => '群名称不能为空',
|
|
|
+ ]
|
|
|
+ );
|
|
|
+
|
|
|
+ if ($validatedData->fails()) {
|
|
|
+ $errorMessage = $validatedData->errors()->first();
|
|
|
+ return Result::error($errorMessage);
|
|
|
+ }
|
|
|
+ $requireData['user_id'] = Context::get("UserId");
|
|
|
+ $result = $this->chatServiceClient->updateGroup($requireData);
|
|
|
+ return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
|
|
|
+ }
|
|
|
+ /**
|
|
|
+ * 获取商圈
|
|
|
+ * @return array
|
|
|
+ */
|
|
|
+ public function getTopicsList()
|
|
|
+ {
|
|
|
+ $requireData = $this->request->all();
|
|
|
+ $validator = $this->validationFactory->make(
|
|
|
+ $requireData,
|
|
|
+ [
|
|
|
+ 'page' => 'required|integer',
|
|
|
+ 'page_size' => 'required|integer',
|
|
|
+ ],
|
|
|
+ [
|
|
|
+ 'page.required' => '页码不能为空',
|
|
|
+ 'page_size.required' => '每页数量不能为空',
|
|
|
+ ]
|
|
|
+ );
|
|
|
+ if ($validator->fails()) {
|
|
|
+ $errorMessage = $validator->errors()->first();
|
|
|
+ return Result::error($errorMessage);
|
|
|
+ }
|
|
|
+ $requireData['user_id'] = Context::get("UserId");
|
|
|
+ $result = $this->chatServiceClient->getTopicsList($requireData);
|
|
|
+ return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
|
|
|
+ }
|
|
|
+ /**
|
|
|
+ * 新增话题商圈
|
|
|
+ * @return array
|
|
|
+ */
|
|
|
+ public function addTopic()
|
|
|
+ {
|
|
|
+ $requireData = $this->request->all();
|
|
|
+ $validator = $this->validationFactory->make(
|
|
|
+ $requireData,
|
|
|
+ [
|
|
|
+ 'title' => 'required|string',
|
|
|
+ 'type' => 'required|int',
|
|
|
+ 'content' => 'required|string',
|
|
|
+ ],
|
|
|
+ [
|
|
|
+ 'title.required' => '商圈名称不能为空',
|
|
|
+ 'type.required' => '商圈类型不能为空',
|
|
|
+ 'content.required' => '商圈内容不能为空',
|
|
|
+ 'type.int' => '商圈类型只能是数字',
|
|
|
+ 'content.string' => '商圈内容只能是字符串',
|
|
|
+ 'title.string' => '商圈名称只能是字符串',
|
|
|
+ ]
|
|
|
+ );
|
|
|
+ if ($validator->fails()) {
|
|
|
+ $errorMessage = $validator->errors()->first();
|
|
|
+ return Result::error($errorMessage);
|
|
|
+ }
|
|
|
+ $requireData['user_id'] = Context::get("UserId");
|
|
|
+ $result = $this->chatServiceClient->addTopic($requireData);
|
|
|
+ return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
|
|
|
+ }
|
|
|
+ /**
|
|
|
+ * 更新话题商圈
|
|
|
+ * @return array
|
|
|
+ */
|
|
|
+ public function updateTopic()
|
|
|
+ {
|
|
|
+ $requireData = $this->request->all();
|
|
|
+ $validator = $this->validationFactory->make(
|
|
|
+ $requireData,
|
|
|
+ [
|
|
|
+ 'id' => 'required|string',
|
|
|
+ // 'status' => 'required|integer',
|
|
|
+ ],
|
|
|
+ [
|
|
|
+ 'topic_id.required' => '商圈ID不能为空',
|
|
|
+ // 'status.required' => '商圈状态不能为空',
|
|
|
+ ]
|
|
|
+ );
|
|
|
+ if ($validator->fails()) {
|
|
|
+ $errorMessage = $validator->errors()->first();
|
|
|
+ return Result::error($errorMessage);
|
|
|
+ }
|
|
|
+ $requireData['user_id'] = Context::get("UserId");
|
|
|
+ $result = $this->chatServiceClient->updateTopic($requireData);
|
|
|
+ return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
|
|
|
+ }
|
|
|
+ /**
|
|
|
+ * 删除话题商圈
|
|
|
+ * @return array
|
|
|
+ */
|
|
|
+ public function delTopic()
|
|
|
+ {
|
|
|
+ $requireData = $this->request->all();
|
|
|
+ $validator = $this->validationFactory->make(
|
|
|
+ $requireData,
|
|
|
+ [
|
|
|
+ 'id' => 'required|string',
|
|
|
+ ],
|
|
|
+ [
|
|
|
+ 'id.required' => '商圈ID不能为空',
|
|
|
+ ]
|
|
|
+ );
|
|
|
+ if ($validator->fails()) {
|
|
|
+ $errorMessage = $validator->errors()->first();
|
|
|
+ return Result::error($errorMessage);
|
|
|
+ }
|
|
|
+ $requireData['user_id'] = Context::get("UserId");
|
|
|
+ $result = $this->chatServiceClient->delTopic($requireData);
|
|
|
+ return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
|
|
|
+ }
|
|
|
+ /**
|
|
|
+ * 获取商圈详情
|
|
|
+ * @return array
|
|
|
+ */
|
|
|
+ public function getTopicInfo()
|
|
|
+ {
|
|
|
+ $requireData = $this->request->all();
|
|
|
+ $validator = $this->validationFactory->make(
|
|
|
+ $requireData,
|
|
|
+ [
|
|
|
+ 'id' => 'required|string',
|
|
|
+ ],
|
|
|
+ [
|
|
|
+ 'id.required' => '商圈ID不能为空',
|
|
|
+ ]
|
|
|
+ );
|
|
|
+ if ($validator->fails()) {
|
|
|
+ $errorMessage = $validator->errors()->first();
|
|
|
+ return Result::error($errorMessage);
|
|
|
+ }
|
|
|
+ $requireData['user_id'] = Context::get("UserId");
|
|
|
+ $result = $this->chatServiceClient->getTopicInfo($requireData);
|
|
|
+ return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
|
|
|
+ }
|
|
|
+ /**
|
|
|
+ * 获取商圈回复
|
|
|
+ * @return array
|
|
|
+ */
|
|
|
+ public function addReply()
|
|
|
+ {
|
|
|
+ $requireData = $this->request->all();
|
|
|
+ $validator = $this->validationFactory->make(
|
|
|
+ $requireData,
|
|
|
+ [
|
|
|
+ 'id' => 'required|string',
|
|
|
+ 'content' => 'required|string',
|
|
|
+ ],
|
|
|
+ [
|
|
|
+ 'id.required' => '商圈ID不能为空',
|
|
|
+ 'content.required' => '回复内容不能为空',
|
|
|
+ ]
|
|
|
+ );
|
|
|
+ if ($validator->fails()) {
|
|
|
+ $errorMessage = $validator->errors()->first();
|
|
|
+ return Result::error($errorMessage);
|
|
|
+ }
|
|
|
+ $requireData['user_id'] = Context::get("UserId");
|
|
|
+ $result = $this->chatServiceClient->addReply($requireData);
|
|
|
+ return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
|
|
|
+ }
|
|
|
+ /**
|
|
|
+ * 获取商圈评论
|
|
|
+ * @return array
|
|
|
+ */
|
|
|
+ public function getTopicReply()
|
|
|
+ {
|
|
|
+ $requireData = $this->request->all();
|
|
|
+ $validator = $this->validationFactory->make(
|
|
|
+ $requireData,
|
|
|
+ [
|
|
|
+ 'id' => 'required|string',
|
|
|
+ 'page' => 'required|integer',
|
|
|
+ 'page_size' => 'required|integer',
|
|
|
+ ],
|
|
|
+ [
|
|
|
+ 'id.required' => '商圈ID不能为空',
|
|
|
+ 'page.required' => '页码不能为空',
|
|
|
+ 'page_size.required' => '每页数量不能为空',
|
|
|
+ ]
|
|
|
+ );
|
|
|
+ if ($validator->fails()) {
|
|
|
+ $errorMessage = $validator->errors()->first();
|
|
|
+ return Result::error($errorMessage);
|
|
|
+ }
|
|
|
+ $requireData['user_id'] = Context::get("UserId");
|
|
|
+ $result = $this->chatServiceClient->getTopicReply($requireData);
|
|
|
+ return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取 access_token
|
|
|
+ * @return array
|
|
|
+ */
|
|
|
+ public function getAccessToken()
|
|
|
+ {
|
|
|
+ $url = env("WECHAT") . "cgi-bin/token?appid=" . env("APPID") . "&secret=" . env("APP_SECRET") . "&grant_type=client_credential";
|
|
|
+ $result = PublicData::http_get($url);
|
|
|
+ $resultData = json_decode($result, true);
|
|
|
+ var_dump($url, $resultData);
|
|
|
+ if (isset($resultData['errcode'])) {
|
|
|
+ return Result::error($resultData['errmsg']);
|
|
|
+ }
|
|
|
+ return Result::success($resultData);
|
|
|
+ }
|
|
|
+ /**
|
|
|
+ * 删除一条聊天记录
|
|
|
+ * @return array
|
|
|
+ */
|
|
|
+ public function delRecords()
|
|
|
+ {
|
|
|
+ $requireData = $this->request->all();
|
|
|
+ $validator = $this->validationFactory->make(
|
|
|
+ $requireData,
|
|
|
+ [
|
|
|
+ 'id' => 'required',
|
|
|
+ ],
|
|
|
+ [
|
|
|
+ 'id.required' => '聊天记录ID不能为空',
|
|
|
+ ]
|
|
|
+ );
|
|
|
+ if ($validator->fails()) {
|
|
|
+ $errorMessage = $validator->errors()->first();
|
|
|
+ }
|
|
|
+ $requireData['user_id'] = Context::get("UserId");
|
|
|
+ $result = $this->chatServiceClient->delRecords($requireData);
|
|
|
+ return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
|
|
|
+ }
|
|
|
+ /**
|
|
|
+ * 删除所有聊天记录
|
|
|
+ * @return array
|
|
|
+ */
|
|
|
+ public function clearRecords()
|
|
|
+ {
|
|
|
+ $requireData = $this->request->all();
|
|
|
+ $validator = $this->validationFactory->make(
|
|
|
+ $requireData,
|
|
|
+ [
|
|
|
+ 'friend_id' => 'required',
|
|
|
+ ],
|
|
|
+ [
|
|
|
+ 'friend_id.required' => '聊天记录ID不能为空',
|
|
|
+ ]
|
|
|
+ );
|
|
|
+ if ($validator->fails()) {
|
|
|
+ $errorMessage =$validator->errors()->first();
|
|
|
+ }
|
|
|
+ $requireData['user_id'] = Context::get("UserId");
|
|
|
+ $result = $this->chatServiceClient->clearRecords($requireData);
|
|
|
+ return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
|
|
|
+ }
|
|
|
+ /**
|
|
|
+ * 删除群聊记录
|
|
|
+ * @return array
|
|
|
+ */
|
|
|
+ public function clearGroupRecords()
|
|
|
+ {
|
|
|
+ $requireData = $this->request->all();
|
|
|
+ $validator = $this->validationFactory->make(
|
|
|
+ $requireData,
|
|
|
+ [
|
|
|
+ 'id' => 'required',
|
|
|
+ ],
|
|
|
+ [
|
|
|
+ 'id.required' => '聊天记录ID不能为空',
|
|
|
+ ]
|
|
|
+ );
|
|
|
+ if ($validator->fails()) {
|
|
|
+ $errorMessage= $validator->errors()->first();
|
|
|
+ }
|
|
|
+ $requireData['user_id'] = Context::get("UserId");
|
|
|
+ $result = $this->chatServiceClient->clearGroupRecords($requireData);
|
|
|
+ return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
|
|
|
+ }
|
|
|
+ /**
|
|
|
+ * 撤回一条聊天记录
|
|
|
+ * @return array
|
|
|
+ */
|
|
|
+ public function recallRecord()
|
|
|
+ {
|
|
|
+
|
|
|
+ $webSocketController = ApplicationContext::getContainer()->get(WebSocketController::class);
|
|
|
+ $frame = new Frame();
|
|
|
+ $frame->fd = 1; // 替换为实际的客户端 fd
|
|
|
+ $frame->data = json_encode([
|
|
|
+ 'talk_type' => 1,
|
|
|
+ 'receiver_id' => 2, // 接收者 ID
|
|
|
+ 'content' => 'Hello, this is a test message!'
|
|
|
+ ]);
|
|
|
+
|
|
|
+ $webSocketController->send(1, 'Hello, World!');
|
|
|
+ return Result::success('');
|
|
|
+
|
|
|
+ $requireData = $this->request->all();
|
|
|
+ $validator = $this->validationFactory->make(
|
|
|
+ $requireData,
|
|
|
+ [
|
|
|
+ 'content' => 'required',
|
|
|
+ ],
|
|
|
+ [
|
|
|
+ 'content.required' => '聊天记录不能为空',
|
|
|
+ ]
|
|
|
+ );
|
|
|
+ $requireData['user_id'] = Context::get("UserId");
|
|
|
+ if ($validator->fails()) {
|
|
|
+ $errorMessage = $validator->errors()->first();
|
|
|
+ }
|
|
|
+ //接入websocket,发送撤回消息
|
|
|
+ $redisClient = new RedisService();
|
|
|
+ $fd = $redisClient->findFd((int) 32);
|
|
|
+ $maxRetries = 1;
|
|
|
+ $retryCount = 0;
|
|
|
+ $interval = 1; // 秒
|
|
|
+ while ($retryCount < $maxRetries) {
|
|
|
+ $response = $this->chatServiceClient->getRecordByContent($requireData);
|
|
|
+ // 如果成功,返回结果
|
|
|
+ if ($response['code'] === 0) {
|
|
|
+ if(!empty($response['data']['id'])){
|
|
|
+ $records = $response['data'];
|
|
|
+ foreach($records as $record){
|
|
|
+ //判断 created_at 是否大于一分钟
|
|
|
+ $createdAt = strtotime($record['created_at']);
|
|
|
+ $currentTime = time();
|
|
|
+ $timeDifference = $currentTime - $createdAt;
|
|
|
+ if ($timeDifference > 60) {
|
|
|
+ return Result::error('超过一分钟,无法撤回');
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ $result = $this->chatServiceClient->recallRecord($response['data']);
|
|
|
+ return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
|
|
|
+ }
|
|
|
+ // 如果失败,等待一段时间后重试
|
|
|
+ sleep($interval);
|
|
|
+ $retryCount++;
|
|
|
+ }
|
|
|
+ return Result::error('获取失败');
|
|
|
+ }
|
|
|
+ /**
|
|
|
+ * 获取一条信息
|
|
|
+ * @return array
|
|
|
+ */
|
|
|
+ public function getRecord()
|
|
|
+ {
|
|
|
+ $requireData = $this->request->all();
|
|
|
+ $validator = $this->validationFactory->make(
|
|
|
+ $requireData,
|
|
|
+ [
|
|
|
+ 'id' => 'required',
|
|
|
+ ],
|
|
|
+ [
|
|
|
+ 'id.required' => '聊天记录ID不能为空',
|
|
|
+ ]
|
|
|
+ );
|
|
|
+ if ($validator->fails()) {
|
|
|
+ $errorMessage= $validator->errors()->first();
|
|
|
+ }
|
|
|
+ $requireData['user_id'] = Context::get("UserId");
|
|
|
+ $result = $this->chatServiceClient->getRecord($requireData);
|
|
|
+ return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
|
|
|
+ }
|
|
|
+ /**
|
|
|
+ * 删除一条topicRely
|
|
|
+ * @return array
|
|
|
+ */
|
|
|
+ public function delReply()
|
|
|
+ {
|
|
|
+ $requireData = $this->request->all();
|
|
|
+ $validator = $this->validationFactory->make(
|
|
|
+ $requireData,
|
|
|
+ [
|
|
|
+ 'id' => 'required',
|
|
|
+ ],
|
|
|
+ [
|
|
|
+ 'id.required' => '回复ID不能为空',
|
|
|
+ ]
|
|
|
+ );
|
|
|
+ if ($validator->fails()) {
|
|
|
+ $errorMessage = $validator->errors()->first();
|
|
|
+ }
|
|
|
+ $requireData['user_id'] = Context::get("UserId");
|
|
|
+ $result = $this->chatServiceClient->delReply($requireData);
|
|
|
+ return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
|
|
|
+ }
|
|
|
+ /**
|
|
|
+ * 删除所有回复
|
|
|
+ * @return array
|
|
|
+ */
|
|
|
+ public function delAllReply()
|
|
|
+ {
|
|
|
+ $requireData = $this->request->all();
|
|
|
+ $validator = $this->validationFactory->make(
|
|
|
+ $requireData,
|
|
|
+ [
|
|
|
+ 'topicid' => 'required',
|
|
|
+ ],
|
|
|
+ [
|
|
|
+ 'topicid.required' => '回复ID不能为空',
|
|
|
+ ]
|
|
|
+ );
|
|
|
+ if ($validator->fails()) {
|
|
|
+ $errorMessage =$validator->errors()->first();
|
|
|
+ }
|
|
|
+ $requireData['user_id'] = Context::get("UserId");
|
|
|
+ $result = $this->chatServiceClient->delAllReply($requireData);
|
|
|
+ return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
|
|
|
+ }
|
|
|
+ /**
|
|
|
+ * 获取所有Topic
|
|
|
+ * @return array
|
|
|
+ */
|
|
|
+ public function getTopicsListAdmin()
|
|
|
+ {
|
|
|
+ $requireData = $this->request->all();
|
|
|
+ $validator = $this->validationFactory->make(
|
|
|
+ $requireData,
|
|
|
+ [
|
|
|
+ 'page' => 'required',
|
|
|
+ 'limit' => 'required',
|
|
|
+ ],
|
|
|
+ [
|
|
|
+ 'page.required' => '页码不能为空',
|
|
|
+ 'limit.required' => '每页数量不能为空',
|
|
|
+ ]
|
|
|
+ );
|
|
|
+ if ($validator->fails()) {
|
|
|
+ $errorMessage = $validator->errors()->first();
|
|
|
+ }
|
|
|
+ $requireData['user_id'] = Context::get("UserId");
|
|
|
+ $result = $this->chatServiceClient->getTopicsListAdmin($requireData);
|
|
|
+ return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
|
|
|
+ }
|
|
|
+
|
|
|
+}
|