App_Controller_ChatController.proxy.php 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185
  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. var_dump("会话列表:", $requireData);
  121. $result = $this->chatServiceClient->getTalkSessionList($requireData);
  122. var_dump($result);
  123. if ($result['data']['row']) {
  124. foreach ($result['data']['row'] as $k => $v) {
  125. $result['data']['row'][$k]['messages'] = [];
  126. }
  127. }
  128. return $result ? Result::success($result['data']) : Result::error($result['message']);
  129. }
  130. /**
  131. * 创建用户群
  132. * @return array
  133. */
  134. public function addTalkGroup()
  135. {
  136. $requireData = $this->request->all();
  137. $validator = $this->validationFactory->make($requireData, ['group_name' => 'required', 'user_id_arr' => 'required'], ['group_name.required' => '群名称不能为空', 'user_id_arr.required' => '好友ID不能为空']);
  138. if ($validator->fails()) {
  139. $errorMessage = $validator->errors()->first();
  140. return Result::error($errorMessage);
  141. }
  142. $requireData['user_id'] = $this->UserId;
  143. $userIdArr = array(json_decode($requireData['user_id_arr']));
  144. $requireData['user_id_arr'] = $userIdArr[0];
  145. $requireData['user_id_arr'][] = $this->UserId;
  146. var_dump($requireData);
  147. $result = $this->chatServiceClient->addTalkGroup($requireData);
  148. return $result['code'] == 200 ? Result::success($result['data']) : Result::error($result['message']);
  149. }
  150. /**
  151. * 会话详情
  152. * @return void
  153. */
  154. public function getTalkRecordsList()
  155. {
  156. $requireData = $this->request->all();
  157. $validator = $this->validationFactory->make($requireData, ['session_id' => 'required', 'talk_type' => 'required'], ['session_id.required' => '会话ID不能为空', 'talk_type.required' => '会话类型不能为空']);
  158. if ($validator->fails()) {
  159. $errorMessage = $validator->errors()->first();
  160. return Result::error($errorMessage);
  161. }
  162. $requireData['page'] = $requireData['page'] ?? 1;
  163. $requireData['pageSize'] = $requireData['pageSize'] ?? 30;
  164. $result = $this->chatServiceClient->getTalkRecordsList($requireData);
  165. return $result['code'] == 200 ? Result::success($result['data']) : Result::error($result['message']);
  166. }
  167. /**
  168. * 添加聊天
  169. * @return void
  170. */
  171. public function addTalkRecords()
  172. {
  173. $requireData = $this->request->all();
  174. $validator = $this->validationFactory->make($requireData, ['type' => 'required', 'content' => 'required', 'receiver' => 'required'], ['type.required' => '消息类型不能为空', 'content.required' => '内容不能为空', 'receiver.required' => '会话信息不能为空']);
  175. if ($validator->fails()) {
  176. $errorMessage = $validator->errors()->first();
  177. return Result::error($errorMessage);
  178. }
  179. $requireData['user_id'] = $this->UserId;
  180. $result = $this->chatServiceClient->addTalkRecords($requireData);
  181. return $result['code'] == 200 ? Result::success($result['data']) : Result::error($result['message']);
  182. }
  183. }