ChatController.php 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247
  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. #[Inject]
  23. protected ValidatorFactoryInterface $validationFactory;
  24. /**
  25. * @var ChatServiceInterface
  26. */
  27. #[Inject]
  28. private $chatServiceClient;
  29. /**
  30. * 申请添加好友
  31. * @return array
  32. */
  33. public function addContactApply()
  34. {
  35. $requireData = $this->request->all();
  36. $validator = $this->validationFactory->make(
  37. $requireData,
  38. [
  39. 'friend_id' => 'required',
  40. ],
  41. [
  42. 'friend_id.required' => '好友ID不能为空',
  43. ]
  44. );
  45. if ($validator->fails()){
  46. $errorMessage = $validator->errors()->first();
  47. return Result::error($errorMessage);
  48. }
  49. $requireData['user_id'] = $this->UserId;
  50. $result = $this->chatServiceClient->addContactApply($requireData);
  51. return $result?Result::success($result['data']):Result::error($result['message']);
  52. }
  53. /**
  54. * 获取我的好友申请列表
  55. * @return array
  56. */
  57. public function getContactApplyList()
  58. {
  59. $requireData = [];
  60. $requireData['user_id'] = $this->UserId;
  61. $result = $this->chatServiceClient->getContactApplyList($requireData);
  62. return $result?Result::success($result['data']):Result::error($result['message']);
  63. }
  64. /**
  65. * 好有审核通过或拒绝
  66. * @return void
  67. */
  68. public function updateContactApply()
  69. {
  70. $requireData = $this->request->all();
  71. $validator = $this->validationFactory->make(
  72. $requireData,
  73. [
  74. 'friend_id' => 'required',
  75. 'type'=>'required'
  76. ],
  77. [
  78. 'friend_id.required' => '好友ID不能为空',
  79. 'type.required' => '操作状态不能为空',
  80. ]
  81. );
  82. if ($validator->fails()){
  83. $errorMessage = $validator->errors()->first();
  84. return Result::error($errorMessage);
  85. }
  86. $requireData['user_id'] = $this->UserId;
  87. //type==1 同意 type==2 拒绝
  88. $result = $this->chatServiceClient->updateContactApply($requireData);
  89. if($requireData['type']==1){
  90. }
  91. return $result?Result::success($result['data']):Result::error($result['message']);
  92. }
  93. /**
  94. * 删除好友
  95. * @return array
  96. */
  97. public function delContact()
  98. {
  99. $requireData = $this->request->all();
  100. $validator = $this->validationFactory->make(
  101. $requireData,
  102. [
  103. 'friend_id' => 'required',
  104. ],
  105. [
  106. 'friend_id.required' => '好友ID不能为空',
  107. ]
  108. );
  109. if ($validator->fails()){
  110. $errorMessage = $validator->errors()->first();
  111. return Result::error($errorMessage);
  112. }
  113. $requireData['user_id'] = $this->UserId;
  114. $result = $this->chatServiceClient->delContact($requireData);
  115. return $result?Result::success($result['data']):Result::error($result['message']);
  116. }
  117. /**
  118. * 获取好友列表
  119. * @return array
  120. */
  121. public function getContactList()
  122. {
  123. $requireData = $this->request->all();
  124. $requireData['user_id'] = $this->UserId;
  125. $requireData['keyWord'] = $this->request->input('keyWord','');
  126. $result = $this->chatServiceClient->getContactList($requireData);
  127. return $result?Result::success($result['data']):Result::error($result['message']);
  128. }
  129. /**
  130. * 获取会话列表
  131. * @return array
  132. */
  133. public function getTalkSessionList()
  134. {
  135. $requireData = $this->request->all();
  136. $requireData['user_id'] = $this->UserId;
  137. $result = $this->chatServiceClient->getTalkSessionList($requireData);
  138. var_dump($result);
  139. if($result['data']['row']){
  140. foreach ($result['data']['row'] as $k=>$v){
  141. $result['data']['row'][$k]['messages'] = [];
  142. }
  143. }
  144. return $result?Result::success($result['data']):Result::error($result['message']);
  145. }
  146. /**
  147. * 创建用户群
  148. * @return array
  149. */
  150. public function addTalkGroup()
  151. {
  152. $requireData = $this->request->all();
  153. $validator = $this->validationFactory->make(
  154. $requireData,
  155. [
  156. 'group_name' => 'required',
  157. 'user_id_arr' => 'required'
  158. ],
  159. [
  160. 'group_name.required' => '群名称不能为空',
  161. 'user_id_arr.required' => '好友ID不能为空',
  162. ]
  163. );
  164. if ($validator->fails()){
  165. $errorMessage = $validator->errors()->first();
  166. return Result::error($errorMessage);
  167. }
  168. $requireData['user_id'] = $this->UserId;
  169. $userIdArr = array(json_decode($requireData['user_id_arr']));
  170. $requireData['user_id_arr'] = $userIdArr[0];
  171. $requireData['user_id_arr'][] = $this->UserId;
  172. var_dump($requireData);
  173. $result = $this->chatServiceClient->addTalkGroup($requireData);
  174. return $result['code']==200?Result::success($result['data']):Result::error($result['message']);
  175. }
  176. /**
  177. * 会话详情
  178. * @return void
  179. */
  180. public function getTalkRecordsList()
  181. {
  182. $requireData = $this->request->all();
  183. $validator = $this->validationFactory->make(
  184. $requireData,
  185. [
  186. 'session_id' => 'required',
  187. 'talk_type' => 'required'
  188. ],
  189. [
  190. 'session_id.required' => '会话ID不能为空',
  191. 'talk_type.required' => '会话类型不能为空',
  192. ]
  193. );
  194. if ($validator->fails()){
  195. $errorMessage = $validator->errors()->first();
  196. return Result::error($errorMessage);
  197. }
  198. $requireData['page'] = $requireData['page']??1;
  199. $requireData['pageSize'] = $requireData['pageSize']??30;
  200. $result = $this->chatServiceClient->getTalkRecordsList($requireData);
  201. return $result['code']==200?Result::success($result['data']):Result::error($result['message']);
  202. }
  203. /**
  204. * 添加聊天
  205. * @return void
  206. */
  207. public function addTalkRecords()
  208. {
  209. $requireData = $this->request->all();
  210. $validator = $this->validationFactory->make(
  211. $requireData,
  212. [
  213. 'type' => 'required',
  214. 'content' => 'required',
  215. 'receiver'=>'required',
  216. ],
  217. [
  218. 'type.required' => '消息类型不能为空',
  219. 'content.required' => '内容不能为空',
  220. 'receiver.required' => '会话信息不能为空',
  221. ]
  222. );
  223. if ($validator->fails()){
  224. $errorMessage = $validator->errors()->first();
  225. return Result::error($errorMessage);
  226. }
  227. $requireData['user_id'] = $this->UserId;
  228. $result = $this->chatServiceClient->addTalkRecords($requireData);
  229. return $result['code']==200?Result::success($result['data']):Result::error($result['message']);
  230. }
  231. }