App_Controller_ChatController.proxy.php 29 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672
  1. <?php
  2. declare (strict_types=1);
  3. namespace App\Controller;
  4. use App\JsonRpc\ChatServiceInterface;
  5. use App\JsonRpc\UserServiceInterface;
  6. use App\Service\RedisService;
  7. use App\Tools\PublicData;
  8. use App\Tools\Result;
  9. use function Hyperf\Support\env;
  10. use Hyperf\Context\Context;
  11. use Hyperf\Di\Annotation\Inject;
  12. use Hyperf\Validation\Contract\ValidatorFactoryInterface;
  13. /**
  14. *
  15. * Class ChatController
  16. * @package App\Controller
  17. */
  18. //#[AutoController]
  19. class ChatController extends AbstractController
  20. {
  21. use \Hyperf\Di\Aop\ProxyTrait;
  22. use \Hyperf\Di\Aop\PropertyHandlerTrait;
  23. function __construct()
  24. {
  25. if (method_exists(parent::class, '__construct')) {
  26. parent::__construct(...func_get_args());
  27. }
  28. $this->__handlePropertyHandler(__CLASS__);
  29. }
  30. #[Inject]
  31. protected ValidatorFactoryInterface $validationFactory;
  32. /**
  33. * @var ChatServiceInterface
  34. */
  35. #[Inject]
  36. private $chatServiceClient;
  37. #[Inject]
  38. private UserServiceInterface $userServiceClient;
  39. /**
  40. * 申请添加好友
  41. * @return array
  42. */
  43. public function addFriend()
  44. {
  45. $requireData = $this->request->all();
  46. $validator = $this->validationFactory->make($requireData, ['friend_id' => 'required'], ['friend_id.required' => '好友ID不能为空']);
  47. if ($validator->fails()) {
  48. $errorMessage = $validator->errors()->first();
  49. return Result::error($errorMessage);
  50. }
  51. $requireData['user_id'] = Context::get("UserId");
  52. //判断UserId是否是friend_id
  53. $userId = $requireData['user_id'];
  54. $friendId = $requireData['friend_id'];
  55. if ($userId == $friendId) {
  56. return Result::error('不能添加自己为好友');
  57. }
  58. //判断friend_id是否可用
  59. $friendInfo = $this->userServiceClient->getUserInfo((int) $friendId);
  60. if ($friendInfo['code'] == 0) {
  61. return Result::error('好友ID不存在');
  62. }
  63. $result = $this->chatServiceClient->addFriend($requireData);
  64. //redis 添加好友
  65. if ($result && $result['code'] != 0) {
  66. $redisClient = new RedisService();
  67. $myFriends = $this->chatServiceClient->getFriendsList(['user_id' => $userId, 'status' => 2]);
  68. $redisClient->setUserFriends($userId, $myFriends['data']);
  69. }
  70. return $result ? Result::success($result['message']) : Result::error($result['message']);
  71. }
  72. /**
  73. * 话题分类
  74. * @return array
  75. */
  76. public function topicType()
  77. {
  78. $type = array('1' => '课题', '2' => '维权', '3' => '讨论');
  79. $result = array();
  80. foreach ($type as $k => $v) {
  81. $result[] = ['value' => $k, 'label' => $v];
  82. }
  83. return Result::success($result);
  84. }
  85. /**
  86. * 获取话题列表
  87. * @return array
  88. */
  89. public function topicStatus()
  90. {
  91. $status = array('1' => '未审核', '2' => '已通过', '3' => '已拒绝');
  92. $result = array();
  93. foreach ($status as $k => $v) {
  94. $result[] = ['value' => $k, 'label' => $v];
  95. }
  96. return Result::success($result);
  97. }
  98. /**
  99. * 搜索好友列表
  100. * @return array
  101. */
  102. public function searchFriend()
  103. {
  104. $requireData = $this->request->all();
  105. $validator = $this->validationFactory->make($requireData, ['keyword' => 'required'], ['keyword.required' => '搜索关键字不能为空']);
  106. if ($validator->fails()) {
  107. $errorMessage = $validator->errors()->first();
  108. return Result::error($errorMessage);
  109. }
  110. $requireData['user_id'] = Context::get("UserId");
  111. // return Result::success($requireData);
  112. $result = $this->chatServiceClient->searchFriend($requireData);
  113. return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
  114. }
  115. /**
  116. * 获取好友详情
  117. * @return array
  118. */
  119. public function getFriendInfo()
  120. {
  121. $requireData = $this->request->all();
  122. $validator = $this->validationFactory->make($requireData, ['friend_id' => 'required'], ['friend_id.required' => '好友ID不能为空']);
  123. if ($validator->fails()) {
  124. $errorMessage = $validator->errors()->first();
  125. return Result::error($errorMessage);
  126. }
  127. $requireData['user_id'] = Context::get("UserId");
  128. $result = $this->chatServiceClient->getFriendInfo($requireData);
  129. return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
  130. }
  131. /**
  132. * 获取我的好友列表
  133. * @return array
  134. */
  135. public function getFriendsList()
  136. {
  137. $requireData = [];
  138. $requireData['user_id'] = Context::get("UserId");
  139. $requireData['status'] = 2;
  140. $result = $this->chatServiceClient->getFriendsList($requireData);
  141. return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
  142. }
  143. /**
  144. * 获取好友申请列表
  145. * @return array
  146. */
  147. public function getFriendsApplyList()
  148. {
  149. $requireData = [];
  150. $requireData['friend_id'] = Context::get("UserId");
  151. $requireData['status'] = 1;
  152. $result = $this->chatServiceClient->getFriendsApplyList($requireData);
  153. return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
  154. }
  155. /**
  156. * 好友申请审核通过或拒绝
  157. * @return array
  158. */
  159. public function applyFriend()
  160. {
  161. $requireData = $this->request->all();
  162. // 定义验证规则
  163. $validator = $this->validationFactory->make($requireData, ['id' => 'required|integer', 'status' => 'required|in:2,4'], ['friend_id.required' => 'ID不能为空', 'status.required' => '状态不能为空', 'status.in' => '状态错误']);
  164. // 验证请求数据
  165. if ($validator->fails()) {
  166. var_dump($validator->errors()->all());
  167. return Result::error(implode(', ', $validator->errors()->all()), 0);
  168. }
  169. $requireData['user_id'] = Context::get("UserId");
  170. $result = $this->chatServiceClient->applyFriend($requireData);
  171. return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
  172. }
  173. /**
  174. * 删除好友
  175. * @return array
  176. */
  177. public function delFriend()
  178. {
  179. $requireData = $this->request->all();
  180. $validator = $this->validationFactory->make($requireData, ['friend_id' => 'required'], ['friend_id.required' => '好友ID不能为空']);
  181. if ($validator->fails()) {
  182. $errorMessage = $validator->errors()->first();
  183. return Result::error($errorMessage);
  184. }
  185. $requireData['user_id'] = Context::get("UserId");
  186. $result = $this->chatServiceClient->delFriend($requireData);
  187. //redis 删除好友
  188. if ($result && $result['code'] != 0) {
  189. $redisClient = new RedisService();
  190. $myFriends = $this->chatServiceClient->getFriendsList(['user_id' => $requireData['user_id'], 'status' => 2]);
  191. $redisClient->setUserFriends($requireData['user_id'], $myFriends['data']);
  192. }
  193. return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
  194. }
  195. /**
  196. * 是否好友
  197. * @return array
  198. */
  199. public function isFriend()
  200. {
  201. $requireData = $this->request->all();
  202. $validator = $this->validationFactory->make($requireData, ['friend_id' => 'required'], ['friend_id.required' => '好友ID不能为空']);
  203. if ($validator->fails()) {
  204. $errorMessage = $validator->errors()->first();
  205. }
  206. $requireData['user_id'] = Context::get("UserId");
  207. $result = $this->chatServiceClient->isFriend($requireData);
  208. return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
  209. }
  210. /**
  211. * 更新好友备注
  212. * @return array
  213. */
  214. public function updateFriend()
  215. {
  216. $requireData = $this->request->all();
  217. $validator = $this->validationFactory->make($requireData, ['friend_id' => 'required', 'remark' => 'required'], ['friend_id.required' => '好友ID不能为空', 'remark.required' => '备注不能为空']);
  218. if ($validator->fails()) {
  219. $errorMessage = $validator->errors()->first();
  220. return Result::error($errorMessage);
  221. }
  222. $requireData['user_id'] = Context::get("UserId");
  223. $result = $this->chatServiceClient->updateFriend($requireData);
  224. return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
  225. }
  226. /**
  227. * 会话
  228. * @return array
  229. */
  230. public function getConversation()
  231. {
  232. $requireData = $this->request->all();
  233. $requireData['user_id'] = Context::get("UserId");
  234. $result = $this->chatServiceClient->getConversation($requireData);
  235. return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
  236. }
  237. /**
  238. * 获取聊天记录
  239. * @return array
  240. */
  241. public function getChatRecords()
  242. {
  243. $requireData = $this->request->all();
  244. $validator = $this->validationFactory->make($requireData, ['friend_id' => 'required'], ['friend_id.required' => '好友ID不能为空']);
  245. if ($validator->fails()) {
  246. $errorMessage = $validator->errors()->first();
  247. return Result::error($errorMessage);
  248. }
  249. $requireData['user_id'] = Context::get("UserId");
  250. $result = $this->chatServiceClient->getChatRecords($requireData);
  251. return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
  252. }
  253. /**
  254. * 获取群聊天
  255. * @return array
  256. */
  257. public function getGroupChatRecords()
  258. {
  259. $requireData = $this->request->all();
  260. $validator = $this->validationFactory->make($requireData, ['group_id' => 'required'], ['group_id.required' => '群ID不能为空']);
  261. if ($validator->fails()) {
  262. $errorMessage = $validator->errors()->first();
  263. }
  264. $requireData['user_id'] = Context::get("UserId");
  265. $result = $this->chatServiceClient->getGroupChatRecords($requireData);
  266. return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
  267. }
  268. /**
  269. * 获取群成员列表
  270. * @return array
  271. */
  272. public function getGroupMembers()
  273. {
  274. $requireData = $this->request->all();
  275. $validator = $this->validationFactory->make($requireData, ['group_id' => 'required'], ['group_id.required' => '群ID不能为空']);
  276. if ($validator->fails()) {
  277. $errorMessage = $validator->errors()->first();
  278. return Result::error($errorMessage);
  279. }
  280. $requireData['user_id'] = Context::get("UserId");
  281. $result = $this->chatServiceClient->getGroupMembers($requireData);
  282. return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
  283. }
  284. /**
  285. * 获取群信息
  286. * @return array
  287. */
  288. public function getGroupInfo()
  289. {
  290. $requireData = $this->request->all();
  291. $validator = $this->validationFactory->make($requireData, ['group_id' => 'required'], ['group_id.required' => '群ID不能为空']);
  292. if ($validator->fails()) {
  293. $errorMessage = $validator->errors()->first();
  294. }
  295. $requireData['user_id'] = Context::get("UserId");
  296. $result = $this->chatServiceClient->getGroupInfo($requireData);
  297. return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
  298. }
  299. /**
  300. * 获取群列表
  301. * @return array
  302. */
  303. public function getGroupList()
  304. {
  305. $requireData = $this->request->all();
  306. $requireData['user_id'] = Context::get("UserId");
  307. $result = $this->chatServiceClient->getGroupList($requireData);
  308. return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
  309. }
  310. /**
  311. * 新建群
  312. * @return array
  313. */
  314. public function addGroup()
  315. {
  316. $requireData = $this->request->all();
  317. $validator = $this->validationFactory->make($requireData, ['group_name' => 'required', 'group_desc' => 'required'], ['group_name.required' => '群名称不能为空', 'group_desc.required' => '群描述不能为空']);
  318. if ($validator->fails()) {
  319. $errorMessage = $validator->errors()->first();
  320. return Result::error($errorMessage);
  321. }
  322. $requireData['user_id'] = Context::get("UserId");
  323. $requireData['group_member'] = explode(',', $requireData['group_member']);
  324. $result = $this->chatServiceClient->addGroup($requireData);
  325. return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
  326. }
  327. /**
  328. * 退出群
  329. * @return array
  330. */
  331. public function quitGroup()
  332. {
  333. $requireData = $this->request->all();
  334. $validator = $this->validationFactory->make($requireData, ['group_id' => 'required'], ['group_id.required' => '群ID不能为空']);
  335. if ($validator->fails()) {
  336. $errorMessage = $validator->errors()->first();
  337. }
  338. $requireData['user_id'] = Context::get("UserId");
  339. $result = $this->chatServiceClient->quitGroup($requireData);
  340. return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
  341. }
  342. /**
  343. * 删除群
  344. * @return array
  345. */
  346. public function delGroup()
  347. {
  348. $requireData = $this->request->all();
  349. $validator = $this->validationFactory->make($requireData, ['group_id' => 'required'], ['group_id.required' => '群ID不能为空']);
  350. if ($validator->fails()) {
  351. $errorMessage = $validator->errors()->first();
  352. return Result::error($errorMessage);
  353. }
  354. $requireData['user_id'] = Context::get("UserId");
  355. $result = $this->chatServiceClient->delGroup($requireData);
  356. return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
  357. }
  358. /**
  359. * 删除群成员
  360. * @return array
  361. */
  362. public function delGroupMembers()
  363. {
  364. $requireData = $this->request->all();
  365. $validator = $this->validationFactory->make($requireData, ['group_id' => 'required', 'group_member' => 'required'], ['group_id.required' => '群ID不能为空', 'group_member.required' => '群成员不能为空']);
  366. if ($validator->fails()) {
  367. $errorMessage = $validator->errors()->first();
  368. return Result::error($errorMessage);
  369. }
  370. $requireData['user_id'] = Context::get("UserId");
  371. $requireData['group_member'] = explode(',', $requireData['group_member']);
  372. $result = $this->chatServiceClient->delGroupMembers($requireData);
  373. return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
  374. }
  375. /**
  376. * 添加群成员
  377. * @return array
  378. */
  379. public function updateGroupMembers()
  380. {
  381. $requireData = $this->request->all();
  382. $validator = $this->validationFactory->make($requireData, ['group_id' => 'required', 'group_member' => 'required'], ['group_id.required' => '群ID不能为空', 'group_member.required' => '群成员不能为空']);
  383. if ($validator->fails()) {
  384. $errorMessage = $validator->errors()->first();
  385. return Result::error($errorMessage);
  386. }
  387. $requireData['user_id'] = Context::get("UserId");
  388. $requireData['group_member'] = explode(',', $requireData['group_member']);
  389. $result = $this->chatServiceClient->updateGroupMembers($requireData);
  390. return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
  391. }
  392. /**
  393. * 删除群成员
  394. * @return array
  395. */
  396. public function deleteGroupMember()
  397. {
  398. $requireData = $this->request->all();
  399. $validator = $this->validationFactory->make($requireData, ['group_id' => 'required', 'group_member' => 'required'], ['group_id.required' => '群ID不能为空', 'group_member.required' => '群成员不能为空']);
  400. if ($validator->fails()) {
  401. $errorMessage = $validator->errors()->first();
  402. return Result::error($errorMessage);
  403. }
  404. $requireData['user_id'] = Context::get("UserId");
  405. $requireData['group_member'] = explode(',', $requireData['group_member']);
  406. $result = $this->chatServiceClient->deleteGroupMember($requireData);
  407. return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
  408. }
  409. /**
  410. * 加入群
  411. * @return array
  412. */
  413. public function joinGroup()
  414. {
  415. $requireData = $this->request->all();
  416. $validator = $this->validationFactory->make($requireData, ['group_id' => 'required'], ['group_id.required' => '群ID不能为空']);
  417. if ($validator->fails()) {
  418. $errorMessage = $validator->errors()->first();
  419. return Result::error($errorMessage);
  420. }
  421. $requireData['user_id'] = Context::get("UserId");
  422. $result = $this->chatServiceClient->joinGroup($requireData);
  423. return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
  424. }
  425. /**
  426. * 更新群信息
  427. * @return array
  428. */
  429. public function updateGroup()
  430. {
  431. $requireData = $this->request->all();
  432. // 只接受指定的四个字段
  433. $validatedData = $this->validationFactory->make($requireData, ['group_id' => 'required|string', 'group_name' => 'nullable|string', 'profile' => 'nullable|string', 'avatar' => 'nullable|string'], ['group_id.required' => '群ID不能为空']);
  434. if ($validatedData->fails()) {
  435. $errorMessage = $validatedData->errors()->first();
  436. return Result::error($errorMessage);
  437. }
  438. $requireData['user_id'] = Context::get("UserId");
  439. $result = $this->chatServiceClient->updateGroup($requireData);
  440. return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
  441. }
  442. /**
  443. * 获取商圈
  444. * @return array
  445. */
  446. public function getTopicsList()
  447. {
  448. $requireData = $this->request->all();
  449. $validator = $this->validationFactory->make($requireData, ['page' => 'required|integer', 'page_size' => 'required|integer'], ['page.required' => '页码不能为空', 'page_size.required' => '每页数量不能为空']);
  450. if ($validator->fails()) {
  451. $errorMessage = $validator->errors()->first();
  452. return Result::error($errorMessage);
  453. }
  454. $requireData['user_id'] = Context::get("UserId");
  455. $result = $this->chatServiceClient->getTopicsList($requireData);
  456. return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
  457. }
  458. /**
  459. * 新增话题商圈
  460. * @return array
  461. */
  462. public function addTopic()
  463. {
  464. $requireData = $this->request->all();
  465. $validator = $this->validationFactory->make($requireData, ['title' => 'required|string', 'type' => 'required|string', 'content' => 'required|string'], ['title.required' => '商圈名称不能为空', 'type.required' => '商圈类型不能为空', 'content.required' => '商圈内容不能为空']);
  466. if ($validator->fails()) {
  467. $errorMessage = $validator->errors()->first();
  468. return Result::error($errorMessage);
  469. }
  470. $requireData['user_id'] = Context::get("UserId");
  471. $result = $this->chatServiceClient->addTopic($requireData);
  472. return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
  473. }
  474. /**
  475. * 更新话题商圈
  476. * @return array
  477. */
  478. public function updateTopic()
  479. {
  480. $requireData = $this->request->all();
  481. $validator = $this->validationFactory->make($requireData, ['id' => 'required|string'], ['topic_id.required' => '商圈ID不能为空']);
  482. if ($validator->fails()) {
  483. $errorMessage = $validator->errors()->first();
  484. return Result::error($errorMessage);
  485. }
  486. $requireData['user_id'] = Context::get("UserId");
  487. $result = $this->chatServiceClient->updateTopic($requireData);
  488. return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
  489. }
  490. /**
  491. * 删除话题商圈
  492. * @return array
  493. */
  494. public function delTopic()
  495. {
  496. $requireData = $this->request->all();
  497. $validator = $this->validationFactory->make($requireData, ['id' => 'required|string'], ['id.required' => '商圈ID不能为空']);
  498. if ($validator->fails()) {
  499. $errorMessage = $validator->errors()->first();
  500. return Result::error($errorMessage);
  501. }
  502. $requireData['user_id'] = Context::get("UserId");
  503. $result = $this->chatServiceClient->delTopic($requireData);
  504. return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
  505. }
  506. /**
  507. * 获取商圈详情
  508. * @return array
  509. */
  510. public function getTopicInfo()
  511. {
  512. $requireData = $this->request->all();
  513. $validator = $this->validationFactory->make($requireData, ['id' => 'required|string'], ['id.required' => '商圈ID不能为空']);
  514. if ($validator->fails()) {
  515. $errorMessage = $validator->errors()->first();
  516. return Result::error($errorMessage);
  517. }
  518. $requireData['user_id'] = Context::get("UserId");
  519. $result = $this->chatServiceClient->getTopicInfo($requireData);
  520. return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
  521. }
  522. /**
  523. * 获取商圈回复
  524. * @return array
  525. */
  526. public function addReply()
  527. {
  528. $requireData = $this->request->all();
  529. $validator = $this->validationFactory->make($requireData, ['id' => 'required|string', 'content' => 'required|string'], ['id.required' => '商圈ID不能为空', 'content.required' => '回复内容不能为空']);
  530. if ($validator->fails()) {
  531. $errorMessage = $validator->errors()->first();
  532. return Result::error($errorMessage);
  533. }
  534. $requireData['user_id'] = Context::get("UserId");
  535. $result = $this->chatServiceClient->addReply($requireData);
  536. return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
  537. }
  538. /**
  539. * 获取商圈评论
  540. * @return array
  541. */
  542. public function getTopicReply()
  543. {
  544. $requireData = $this->request->all();
  545. $validator = $this->validationFactory->make($requireData, ['id' => 'required|string', 'page' => 'required|integer', 'page_size' => 'required|integer'], ['id.required' => '商圈ID不能为空', 'page.required' => '页码不能为空', 'page_size.required' => '每页数量不能为空']);
  546. if ($validator->fails()) {
  547. $errorMessage = $validator->errors()->first();
  548. return Result::error($errorMessage);
  549. }
  550. $requireData['user_id'] = Context::get("UserId");
  551. $result = $this->chatServiceClient->getTopicReply($requireData);
  552. return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
  553. }
  554. /**-=-------------------------------------------------------
  555. * 获取好友列表
  556. * @return array
  557. */
  558. public function getContactList()
  559. {
  560. $requireData = $this->request->all();
  561. $requireData['user_id'] = Context::get("UserId");
  562. $requireData['keyWord'] = $this->request->input('keyWord', '');
  563. $result = $this->chatServiceClient->getContactList($requireData);
  564. return $result ? Result::success($result['data']) : Result::error($result['message']);
  565. }
  566. /**
  567. * 获取会话列表
  568. * @return array
  569. */
  570. public function getTalkSessionList()
  571. {
  572. $requireData = $this->request->all();
  573. $requireData['user_id'] = Context::get("UserId");
  574. var_dump("会话列表:", $requireData);
  575. $result = $this->chatServiceClient->getTalkSessionList($requireData);
  576. var_dump($result);
  577. if ($result['data']['row']) {
  578. foreach ($result['data']['row'] as $k => $v) {
  579. $result['data']['row'][$k]['messages'] = [];
  580. }
  581. }
  582. return $result ? Result::success($result['data']) : Result::error($result['message']);
  583. }
  584. /**
  585. * 创建用户群
  586. * @return array
  587. */
  588. public function addTalkGroup()
  589. {
  590. $requireData = $this->request->all();
  591. $validator = $this->validationFactory->make($requireData, ['group_name' => 'required', 'user_id_arr' => 'required'], ['group_name.required' => '群名称不能为空', 'user_id_arr.required' => '好友ID不能为空']);
  592. if ($validator->fails()) {
  593. $errorMessage = $validator->errors()->first();
  594. return Result::error($errorMessage);
  595. }
  596. $requireData['user_id'] = Context::get("UserId");
  597. $requireData['user_id_arr'] = $requireData['user_id_arr'];
  598. var_dump($requireData);
  599. $result = $this->chatServiceClient->addTalkGroup($requireData);
  600. return $result['code'] == 200 ? Result::success($result['data']) : Result::error($result['message']);
  601. }
  602. /**
  603. * 会话详情
  604. * @return void
  605. */
  606. public function getTalkRecordsList()
  607. {
  608. $requireData = $this->request->all();
  609. $validator = $this->validationFactory->make($requireData, ['session_id' => 'required', 'talk_type' => 'required'], ['session_id.required' => '会话ID不能为空', 'talk_type.required' => '会话类型不能为空']);
  610. if ($validator->fails()) {
  611. $errorMessage = $validator->errors()->first();
  612. return Result::error($errorMessage);
  613. }
  614. $requireData['page'] = $requireData['page'] ?? 1;
  615. $requireData['pageSize'] = $requireData['pageSize'] ?? 30;
  616. $result = $this->chatServiceClient->getTalkRecordsList($requireData);
  617. return $result['code'] == 200 ? Result::success($result['data']) : Result::error($result['message']);
  618. }
  619. /**
  620. * 添加聊天
  621. * @return void
  622. */
  623. public function addTalkRecords()
  624. {
  625. $requireData = $this->request->all();
  626. $validator = $this->validationFactory->make($requireData, ['type' => 'required', 'content' => 'required', 'receiver' => 'required'], ['type.required' => '消息类型不能为空', 'content.required' => '内容不能为空', 'receiver.required' => '会话信息不能为空']);
  627. if ($validator->fails()) {
  628. $errorMessage = $validator->errors()->first();
  629. return Result::error($errorMessage);
  630. }
  631. $requireData['user_id'] = Context::get("UserId");
  632. $result = $this->chatServiceClient->addTalkRecords($requireData);
  633. return $result['code'] == 200 ? Result::success($result['data']) : Result::error($result['message']);
  634. }
  635. /**
  636. * 获取openId
  637. * @return array|void
  638. */
  639. public function wechatOpenInfo()
  640. {
  641. $requireData = $this->request->all();
  642. $validator = $this->validationFactory->make($requireData, ['code' => 'required'], ['code.required' => 'code不能为空']);
  643. if ($validator->fails()) {
  644. $errorMessage = $validator->errors()->first();
  645. return Result::error($errorMessage);
  646. }
  647. $url = env("WECHAT") . "sns/jscode2session?appid=" . env("APPID") . "&secret=" . env("APP_SECRET") . "&js_code=" . $requireData['code'] . "&grant_type=authorization_code";
  648. $result = PublicData::http_get($url);
  649. $resultData = json_decode($result, true);
  650. if (isset($resultData['errcode'])) {
  651. return Result::error($resultData['errmsg']);
  652. }
  653. return Result::success($resultData);
  654. }
  655. /**
  656. * 获取 access_token
  657. * @return array
  658. */
  659. public function getAccessToken()
  660. {
  661. $url = env("WECHAT") . "cgi-bin/token?appid=" . env("APPID") . "&secret=" . env("APP_SECRET") . "&grant_type=client_credential";
  662. $result = PublicData::http_get($url);
  663. $resultData = json_decode($result, true);
  664. var_dump($url, $resultData);
  665. if (isset($resultData['errcode'])) {
  666. return Result::error($resultData['errmsg']);
  667. }
  668. return Result::success($resultData);
  669. }
  670. }