App_Controller_ChatController.proxy.php 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184
  1. <?php
  2. declare (strict_types=1);
  3. namespace App\Controller;
  4. use App\JsonRpc\ChatServiceInterface;
  5. use App\Tools\PublicData;
  6. use Hyperf\Di\Annotation\Inject;
  7. use Hyperf\HttpServer\Annotation\AutoController;
  8. use App\Tools\Result;
  9. use Hyperf\Validation\Contract\ValidatorFactoryInterface;
  10. use App\Amqp\Producer\DemoProducer;
  11. use Hyperf\Context\ApplicationContext;
  12. use App\Amqp\Producer;
  13. use Hyperf\Snowflake\IdGeneratorInterface;
  14. /**
  15. *
  16. * Class ChatController
  17. * @package App\Controller
  18. */
  19. #[AutoController]
  20. class ChatController extends AbstractController
  21. {
  22. use \Hyperf\Di\Aop\ProxyTrait;
  23. use \Hyperf\Di\Aop\PropertyHandlerTrait;
  24. function __construct(\Hyperf\Logger\LoggerFactory $loggerFactory)
  25. {
  26. if (method_exists(parent::class, '__construct')) {
  27. parent::__construct(...func_get_args());
  28. }
  29. $this->__handlePropertyHandler(__CLASS__);
  30. }
  31. #[Inject]
  32. protected ValidatorFactoryInterface $validationFactory;
  33. /**
  34. * @var ChatServiceInterface
  35. */
  36. #[Inject]
  37. private $chatServiceClient;
  38. /**
  39. * 申请添加好友
  40. * @return array
  41. */
  42. public function addContactApply()
  43. {
  44. $requireData = $this->request->all();
  45. $validator = $this->validationFactory->make($requireData, ['friend_id' => 'required'], ['friend_id.required' => '好友ID不能为空']);
  46. if ($validator->fails()) {
  47. $errorMessage = $validator->errors()->first();
  48. return Result::error($errorMessage);
  49. }
  50. $requireData['user_id'] = $this->UserId;
  51. $result = $this->chatServiceClient->addContactApply($requireData);
  52. return $result ? Result::success($result['data']) : Result::error($result['message']);
  53. }
  54. /**
  55. * 获取我的好友申请列表
  56. * @return array
  57. */
  58. public function getContactApplyList()
  59. {
  60. $requireData = [];
  61. $requireData['user_id'] = $this->UserId;
  62. $result = $this->chatServiceClient->getContactApplyList($requireData);
  63. return $result ? Result::success($result['data']) : Result::error($result['message']);
  64. }
  65. /**
  66. * 好有审核通过或拒绝
  67. * @return void
  68. */
  69. public function updateContactApply()
  70. {
  71. $requireData = $this->request->all();
  72. $validator = $this->validationFactory->make($requireData, ['friend_id' => 'required', 'type' => 'required'], ['friend_id.required' => '好友ID不能为空', 'type.required' => '操作状态不能为空']);
  73. if ($validator->fails()) {
  74. $errorMessage = $validator->errors()->first();
  75. return Result::error($errorMessage);
  76. }
  77. $requireData['user_id'] = $this->UserId;
  78. //type==1 同意 type==2 拒绝
  79. $result = $this->chatServiceClient->updateContactApply($requireData);
  80. if ($requireData['type'] == 1) {
  81. }
  82. return $result ? Result::success($result['data']) : Result::error($result['message']);
  83. }
  84. /**
  85. * 删除好友
  86. * @return array
  87. */
  88. public function delContact()
  89. {
  90. $requireData = $this->request->all();
  91. $validator = $this->validationFactory->make($requireData, ['friend_id' => 'required'], ['friend_id.required' => '好友ID不能为空']);
  92. if ($validator->fails()) {
  93. $errorMessage = $validator->errors()->first();
  94. return Result::error($errorMessage);
  95. }
  96. $requireData['user_id'] = $this->UserId;
  97. $result = $this->chatServiceClient->delContact($requireData);
  98. return $result ? Result::success($result['data']) : Result::error($result['message']);
  99. }
  100. /**
  101. * 获取好友列表
  102. * @return array
  103. */
  104. public function getContactList()
  105. {
  106. $requireData = $this->request->all();
  107. $requireData['user_id'] = $this->UserId;
  108. $requireData['keyWord'] = $this->request->input('keyWord', '');
  109. $result = $this->chatServiceClient->getContactList($requireData);
  110. return $result ? Result::success($result['data']) : Result::error($result['message']);
  111. }
  112. /**
  113. * 获取会话列表
  114. * @return array
  115. */
  116. public function getTalkSessionList()
  117. {
  118. $requireData = $this->request->all();
  119. $requireData['user_id'] = $this->UserId;
  120. $result = $this->chatServiceClient->getTalkSessionList($requireData);
  121. var_dump($result);
  122. if ($result['data']['row']) {
  123. foreach ($result['data']['row'] as $k => $v) {
  124. $result['data']['row'][$k]['messages'] = [];
  125. }
  126. }
  127. return $result ? Result::success($result['data']) : Result::error($result['message']);
  128. }
  129. /**
  130. * 创建用户群
  131. * @return array
  132. */
  133. public function addTalkGroup()
  134. {
  135. $requireData = $this->request->all();
  136. $validator = $this->validationFactory->make($requireData, ['group_name' => 'required', 'user_id_arr' => 'required'], ['group_name.required' => '群名称不能为空', 'user_id_arr.required' => '好友ID不能为空']);
  137. if ($validator->fails()) {
  138. $errorMessage = $validator->errors()->first();
  139. return Result::error($errorMessage);
  140. }
  141. $requireData['user_id'] = $this->UserId;
  142. $userIdArr = array(json_decode($requireData['user_id_arr']));
  143. $requireData['user_id_arr'] = $userIdArr[0];
  144. $requireData['user_id_arr'][] = $this->UserId;
  145. var_dump($requireData);
  146. $result = $this->chatServiceClient->addTalkGroup($requireData);
  147. return $result['code'] == 200 ? Result::success($result['data']) : Result::error($result['message']);
  148. }
  149. /**
  150. * 会话详情
  151. * @return void
  152. */
  153. public function getTalkRecordsList()
  154. {
  155. $requireData = $this->request->all();
  156. $validator = $this->validationFactory->make($requireData, ['session_id' => 'required', 'talk_type' => 'required'], ['session_id.required' => '会话ID不能为空', 'talk_type.required' => '会话类型不能为空']);
  157. if ($validator->fails()) {
  158. $errorMessage = $validator->errors()->first();
  159. return Result::error($errorMessage);
  160. }
  161. $requireData['page'] = $requireData['page'] ?? 1;
  162. $requireData['pageSize'] = $requireData['pageSize'] ?? 30;
  163. $result = $this->chatServiceClient->getTalkRecordsList($requireData);
  164. return $result['code'] == 200 ? Result::success($result['data']) : Result::error($result['message']);
  165. }
  166. /**
  167. * 添加聊天
  168. * @return void
  169. */
  170. public function addTalkRecords()
  171. {
  172. $requireData = $this->request->all();
  173. $validator = $this->validationFactory->make($requireData, ['type' => 'required', 'content' => 'required', 'receiver' => 'required'], ['type.required' => '消息类型不能为空', 'content.required' => '内容不能为空', 'receiver.required' => '会话信息不能为空']);
  174. if ($validator->fails()) {
  175. $errorMessage = $validator->errors()->first();
  176. return Result::error($errorMessage);
  177. }
  178. $requireData['user_id'] = $this->UserId;
  179. $result = $this->chatServiceClient->addTalkRecords($requireData);
  180. return $result['code'] == 200 ? Result::success($result['data']) : Result::error($result['message']);
  181. }
  182. }