ChatController.php 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248
  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. var_dump("会话列表:",$requireData);
  138. $result = $this->chatServiceClient->getTalkSessionList($requireData);
  139. var_dump($result);
  140. if($result['data']['row']){
  141. foreach ($result['data']['row'] as $k=>$v){
  142. $result['data']['row'][$k]['messages'] = [];
  143. }
  144. }
  145. return $result?Result::success($result['data']):Result::error($result['message']);
  146. }
  147. /**
  148. * 创建用户群
  149. * @return array
  150. */
  151. public function addTalkGroup()
  152. {
  153. $requireData = $this->request->all();
  154. $validator = $this->validationFactory->make(
  155. $requireData,
  156. [
  157. 'group_name' => 'required',
  158. 'user_id_arr' => 'required'
  159. ],
  160. [
  161. 'group_name.required' => '群名称不能为空',
  162. 'user_id_arr.required' => '好友ID不能为空',
  163. ]
  164. );
  165. if ($validator->fails()){
  166. $errorMessage = $validator->errors()->first();
  167. return Result::error($errorMessage);
  168. }
  169. $requireData['user_id'] = $this->UserId;
  170. $userIdArr = array(json_decode($requireData['user_id_arr']));
  171. $requireData['user_id_arr'] = $userIdArr[0];
  172. $requireData['user_id_arr'][] = $this->UserId;
  173. var_dump($requireData);
  174. $result = $this->chatServiceClient->addTalkGroup($requireData);
  175. return $result['code']==200?Result::success($result['data']):Result::error($result['message']);
  176. }
  177. /**
  178. * 会话详情
  179. * @return void
  180. */
  181. public function getTalkRecordsList()
  182. {
  183. $requireData = $this->request->all();
  184. $validator = $this->validationFactory->make(
  185. $requireData,
  186. [
  187. 'session_id' => 'required',
  188. 'talk_type' => 'required'
  189. ],
  190. [
  191. 'session_id.required' => '会话ID不能为空',
  192. 'talk_type.required' => '会话类型不能为空',
  193. ]
  194. );
  195. if ($validator->fails()){
  196. $errorMessage = $validator->errors()->first();
  197. return Result::error($errorMessage);
  198. }
  199. $requireData['page'] = $requireData['page']??1;
  200. $requireData['pageSize'] = $requireData['pageSize']??30;
  201. $result = $this->chatServiceClient->getTalkRecordsList($requireData);
  202. return $result['code']==200?Result::success($result['data']):Result::error($result['message']);
  203. }
  204. /**
  205. * 添加聊天
  206. * @return void
  207. */
  208. public function addTalkRecords()
  209. {
  210. $requireData = $this->request->all();
  211. $validator = $this->validationFactory->make(
  212. $requireData,
  213. [
  214. 'type' => 'required',
  215. 'content' => 'required',
  216. 'receiver'=>'required',
  217. ],
  218. [
  219. 'type.required' => '消息类型不能为空',
  220. 'content.required' => '内容不能为空',
  221. 'receiver.required' => '会话信息不能为空',
  222. ]
  223. );
  224. if ($validator->fails()){
  225. $errorMessage = $validator->errors()->first();
  226. return Result::error($errorMessage);
  227. }
  228. $requireData['user_id'] = $this->UserId;
  229. $result = $this->chatServiceClient->addTalkRecords($requireData);
  230. return $result['code']==200?Result::success($result['data']):Result::error($result['message']);
  231. }
  232. }