瀏覽代碼

订单系统购物车相关功能

15313670163 2 月之前
父節點
當前提交
4d7bf4c079

+ 73 - 73
app/Amqp/Consumer/MqConsumer.php

@@ -1,73 +1,73 @@
-<?php
-
-declare (strict_types = 1);
-
-namespace App\Amqp\Consumer;
-
-use App\JsonRpc\ChatServiceInterface;
-use Hyperf\Amqp\Annotation\Consumer;
-use Hyperf\Amqp\Message\ConsumerMessage;
-use Hyperf\Amqp\Result;
-use Hyperf\Di\Annotation\Inject;
-use PhpAmqpLib\Message\AMQPMessage;
-use Psr\Log\LoggerInterface;
-use Hyperf\Redis\RedisFactory;
-
-#[Consumer(exchange: 'chatdev', routingKey: 'chatdev', queue: 'chatdev', name: "chatdev", nums: 1)]
-class MqConsumer extends ConsumerMessage
-{
-    /**
-     * @var ChatServiceInterface
-     */
-    #[Inject]
-    private $chatServiceClient;
-
-    protected $logger;
-    #[Inject]
-    protected RedisFactory $redisFactory;
-
-    public function __construct(LoggerInterface $logger)
-    {
-        $this->logger = $logger;
-    }
-
-    public function consumeMessage($data, AMQPMessage $message): Result
-    {
-        $redis = $this->redisFactory->get('default');
-        $lockKey = 'mq_consumer_lock';
-        $lockValue = uniqid();
-
-        // 获取锁
-        $lockAcquired = $redis->setnx($lockKey, $lockValue);
-        if (!$lockAcquired) {
-            $this->logger->info('Another consumer instance is already running.');
-            $this->logger->info($redis->get($lockKey));
-            // return Result::ACK;
-            return Result::REQUEUE;
-        }
-
-        // 设置锁过期时间,防止死锁
-        $redis->expire($lockKey, 60);
-        try {
-            // 数据存储
-            $this->logger->info('消费数据', ['data' => $data]);
-            var_dump($data, '=================消费数据==============');
-            // 调用数据处理服务
-            $result = $this->chatServiceClient->addChatRecords($data);
-            // 记录处理结果
-            $this->logger->info("消费成功:", ['result' => $result]);
-            return Result::ACK;
-        } catch (\Exception $e) {
-            // 记录错误
-            $this->logger->error("消费失败:", ['error' => $e->getMessage()]);
-            // 返回拒绝,重新入队
-            // return Result::REQUEUE;
-        }
-
-    }
-
-    public function isEnable(): bool
-    {
-        return true;
-    }
-}
+<?php
+
+declare (strict_types = 1);
+
+namespace App\Amqp\Consumer;
+
+use App\JsonRpc\ChatServiceInterface;
+use Hyperf\Amqp\Annotation\Consumer;
+use Hyperf\Amqp\Message\ConsumerMessage;
+use Hyperf\Amqp\Result;
+use Hyperf\Di\Annotation\Inject;
+use PhpAmqpLib\Message\AMQPMessage;
+use Psr\Log\LoggerInterface;
+use Hyperf\Redis\RedisFactory;
+
+#[Consumer(exchange: 'chatdev', routingKey: 'chatdev', queue: 'chatdev', name: "chatdev", nums: 1)]
+class MqConsumer extends ConsumerMessage
+{
+    /**
+     * @var ChatServiceInterface
+     */
+    #[Inject]
+    private $chatServiceClient;
+
+    protected $logger;
+    #[Inject]
+    protected RedisFactory $redisFactory;
+
+    public function __construct(LoggerInterface $logger)
+    {
+        $this->logger = $logger;
+    }
+
+    public function consumeMessage($data, AMQPMessage $message): Result
+    {
+        $redis = $this->redisFactory->get('default');
+        $lockKey = 'mq_consumer_lock';
+        $lockValue = uniqid();
+
+        // 获取锁
+        $lockAcquired = $redis->setnx($lockKey, $lockValue);
+        if (!$lockAcquired) {
+            $this->logger->info('Another consumer instance is already running.');
+            $this->logger->info($redis->get($lockKey));
+            // return Result::ACK;
+            return Result::REQUEUE;
+        }
+
+        // 设置锁过期时间,防止死锁
+        $redis->expire($lockKey, 60);
+        try {
+            // 数据存储
+            $this->logger->info('消费数据', ['data' => $data]);
+            var_dump($data, '=================消费数据==============');
+            // 调用数据处理服务
+            $result = $this->chatServiceClient->addChatRecords($data);
+            // 记录处理结果
+            $this->logger->info("消费成功:", ['result' => $result]);
+            return Result::ACK;
+        } catch (\Exception $e) {
+            // 记录错误
+            $this->logger->error("消费失败:", ['error' => $e->getMessage()]);
+            // 返回拒绝,重新入队
+            // return Result::REQUEUE;
+        }
+
+    }
+
+    public function isEnable(): bool
+    {
+        return true;
+    }
+}

+ 20 - 20
app/Amqp/Producer/MqProducer.php

@@ -1,20 +1,20 @@
-<?php
-
-declare (strict_types = 1);
-
-namespace App\Amqp\Producer;
-
-use Hyperf\Amqp\Annotation\Producer;
-use Hyperf\Amqp\Message\ProducerMessage;
-
-#[Producer(exchange: 'chatdev', routingKey: 'chatdev')]
-class MqProducer extends ProducerMessage
-{
-    public function __construct($data)
-    {
-//        $this->poolName = 'default';
-        var_dump($data, '生产者数据');
-
-        $this->payload = $data;
-    }
-}
+<?php
+
+declare (strict_types = 1);
+
+namespace App\Amqp\Producer;
+
+use Hyperf\Amqp\Annotation\Producer;
+use Hyperf\Amqp\Message\ProducerMessage;
+
+#[Producer(exchange: 'chatdev', routingKey: 'chatdev')]
+class MqProducer extends ProducerMessage
+{
+    public function __construct($data)
+    {
+//        $this->poolName = 'default';
+        var_dump($data, '生产者数据');
+
+        $this->payload = $data;
+    }
+}

+ 1105 - 1105
app/Controller/ChatController.php

@@ -1,1105 +1,1105 @@
-<?php
-
-declare (strict_types = 1);
-namespace App\Controller;
-
-use App\JsonRpc\ChatServiceInterface;
-use App\JsonRpc\UserServiceInterface;
-use App\Service\RedisService;
-use App\Tools\PublicData;
-use App\Tools\Result;
-use function Hyperf\Support\env;
-use Hyperf\Context\Context;
-use Hyperf\Di\Annotation\Inject;
-use Hyperf\Validation\Contract\ValidatorFactoryInterface;
-// use App\Controller\WebSocketController as WebSocket;
-use Hyperf\Context\ApplicationContext as ApplicationContext;
-use App\Controller\WebSocketController;
-use Swoole\WebSocket\Frame;
-
-/**
- *
- * Class ChatController
- * @package App\Controller
- */
-//#[AutoController]
-class ChatController extends AbstractController
-{
-    #[Inject]
-    protected ValidatorFactoryInterface $validationFactory;
-    /**
-     * @var ChatServiceInterface
-     */
-    #[Inject]
-    private $chatServiceClient;
-    #[Inject]
-    private UserServiceInterface $userServiceClient;
-    // #[Inject]
-    // private WebSocket $webSocketController;
-
-    /**
-     * 申请添加好友
-     * @return array
-     */
-    public function addFriend()
-    {
-        $requireData = $this->request->all();
-        $validator = $this->validationFactory->make(
-            $requireData,
-            [
-                'friend_id' => 'required',
-            ],
-            [
-                'friend_id.required' => '好友ID不能为空',
-            ]
-        );
-        if ($validator->fails()) {
-            $errorMessage = $validator->errors()->first();
-            return Result::error($errorMessage);
-        }
-        $requireData['user_id'] = Context::get("UserId");
-        //判断UserId是否是friend_id
-        $userId = $requireData['user_id'];
-        $friendId = $requireData['friend_id'];
-        if ($userId == $friendId) {
-            return Result::error('不能添加自己为好友');
-        }
-        //判断friend_id是否可用
-        $friendInfo = $this->userServiceClient->getUserInfo((int) $friendId);
-        if ($friendInfo['code'] == 0) {
-            return Result::error('好友ID不存在');
-        }
-        $result = $this->chatServiceClient->addFriend($requireData);
-       
-        return $result ? Result::success($result['message']) : Result::error($result['message']);
-    }
-
-   
-    /**
-     * 话题分类
-     * @return array
-     */
-    public function topicType()
-    {
-        $type = array(
-            '1' => '课题',
-            '2' => '维权',
-            '3' => '讨论',
-        );
-        $result = array();
-        foreach ($type as $k => $v) {
-            $result[] = ['value' => $k, 'label' => $v];
-        }
-        return Result::success($result);
-    }
-    /**
-     * 获取话题列表
-     * @return array
-     */
-    public function topicStatus()
-    {
-        $status = array(
-            '1' => '未审核',
-            '2' => '已通过',
-            '3' => '已拒绝',
-        );
-        $result = array();
-        foreach ($status as $k => $v) {
-            $result[] = ['value' => $k, 'label' => $v];
-        }
-        return Result::success($result);
-    }
-
-    /**
-     * 搜索好友列表
-     * @return array
-     */
-    public function searchFriend()
-    {
-        $requireData = $this->request->all();
-        $validator = $this->validationFactory->make(
-            $requireData,
-            [
-                'keyword' => 'required',
-            ],
-            [
-                'keyword.required' => '搜索关键字不能为空',
-            ]
-        );
-        if ($validator->fails()) {
-            $errorMessage = $validator->errors()->first();
-            return Result::error($errorMessage);
-        }
-        $requireData['user_id'] = Context::get("UserId");
-        // return Result::success($requireData);
-        $result = $this->chatServiceClient->searchFriend($requireData);
-        return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
-    }
-    /**
-     * 获取好友详情
-     * @return array
-     */
-    public function getFriendInfo()
-    {
-        $requireData = $this->request->all();
-        $validator = $this->validationFactory->make(
-            $requireData,
-            [
-                'friend_id' => 'required',
-            ],
-            [
-                'friend_id.required' => '好友ID不能为空',
-            ]
-        );
-        if ($validator->fails()) {
-            $errorMessage = $validator->errors()->first();
-            return Result::error($errorMessage);
-        }
-        $requireData['user_id'] = Context::get("UserId");
-        $result = $this->chatServiceClient->getFriendInfo($requireData);
-        return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
-
-    }
-
-    /**
-     * 获取我的好友列表
-     * @return array
-     */
-    public function getFriendsList()
-    {
-        $requireData = [];
-        $requireData['user_id'] = Context::get("UserId");
-        $requireData['status'] = 2;
-        $result = $this->chatServiceClient->getFriendsList($requireData);
-        return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
-    }
-    /**
-     * 获取好友申请列表
-     * @return array
-     */
-    public function getFriendsApplyList()
-    {
-        $requireData = [];
-        $requireData['friend_id'] = Context::get("UserId");
-        $requireData['status'] = 1;
-        $result = $this->chatServiceClient->getFriendsApplyList($requireData);
-        return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
-    }
-
-    /**
-     * 好友申请审核通过或拒绝
-     * @return array
-     */
-    public function applyFriend()
-    {
-        $requireData = $this->request->all();
-        $frindid =$requireData['apply_id'];
-        unset($requireData['apply_id']);
-        // 定义验证规则
-        $validator = $this->validationFactory->make(
-            $requireData,
-            [
-                'id' => 'required|integer',
-                'status' => 'required|in:2,4',
-            ],
-            [
-                'friend_id.required' => 'ID不能为空',
-                'status.required' => '状态不能为空',
-                'status.in' => '状态错误',
-            ]
-        );
-        // 验证请求数据
-        if ($validator->fails()) {
-            var_dump($validator->errors()->all());
-            return Result::error(implode(', ', $validator->errors()->all()), 0);
-        }
-        $requireData['user_id'] = Context::get("UserId");
-        // var_dump($requireData,'1111test');
-        $result = $this->chatServiceClient->applyFriend($requireData);
-        if ($result && $result['code'] != 0) {
-            $realResult = $result;
-            $redisClient = new RedisService();
-            $myFriends = $this->chatServiceClient->getFriendsList(['user_id' => $requireData['user_id'], 'status' => 2]);
-            // var_dump($myFriends, '--------------------1');
-            $redisClient->setUserFriends((string)$requireData['user_id'], $myFriends['data']);
-            $myFriends = $this->chatServiceClient->getFriendsList(['user_id' => $frindid, 'status' => 2]);
-            // var_dump($myFriends, '-------------3-------1');
-            $redisClient->setUserFriends((string)$frindid, $myFriends['data']);
-            $result =  $redisClient->getUserFriends((string)$requireData['user_id']);
-            // var_dump($result,'redis-结果');
-            $result =  $redisClient->getUserFriends((string)$frindid);
-            // var_dump($result,'redis-结果');
-            //redis 添加好友
-            $result = $realResult;
-        }
-        return $result && $result['code'] != 0 ? Result::success($result['data']) :     Result::error($result['message']);
-    }
-     /**
-     * 批量设置redis好友
-     * @return array
-     */
-    public function setFriends()
-    {
-        //获取所有用户
-        $userList = $this->userServiceClient->getUserList(['page' => 1, 'pageSize' => 1000 ]);
-        //获取id,循环写入redis
-        $userList = $userList['data']['rows'];
-        var_dump($userList,'111111111111');
-        
-        $redisClient = new RedisService();
-        foreach ($userList as $key => $value) {
-            var_dump($value,'----------------------');
-            $myFriends = $this->chatServiceClient->getFriendsList(['user_id' => $value['id'], 'status' => 2]);
-            $redisClient->setUserFriends((string)$value['id'], $myFriends['data']);
-        }
-        return Result::success();
-    }
-
-    /**
-     * 删除好友
-     * @return array
-     */
-    public function delFriend()
-    {
-        $requireData = $this->request->all();
-        $validator = $this->validationFactory->make(
-            $requireData,
-            [
-                'friend_id' => 'required',
-            ],
-            [
-                'friend_id.required' => '好友ID不能为空',
-            ]
-        );
-        if ($validator->fails()) {
-            $errorMessage = $validator->errors()->first();
-            return Result::error($errorMessage);
-        }
-        $requireData['user_id'] = Context::get("UserId");
-        $result = $this->chatServiceClient->delFriend($requireData);
-        //redis 删除好友
-        if ($result && $result['code'] != 0) {
-            $redisClient = new RedisService();
-            $myFriends = $this->chatServiceClient->getFriendsList(['user_id' => $requireData['user_id'], 'status' => 2]);
-            $redisClient->setUserFriends((string)$requireData['user_id'], $myFriends['data']);
-
-            $myFriends = $this->chatServiceClient->getFriendsList(['user_id' => $requireData['friend_id'], 'status' => 2]);
-            $redisClient->setUserFriends((string)$requireData['friend_id'], $myFriends['data']);
-        }
-        return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
-    }
-
-    /**
-     * 是否好友
-     * @return array
-     */
-    public function isFriend()
-    {
-        $requireData = $this->request->all();
-        $validator = $this->validationFactory->make(
-            $requireData,
-            [
-                'friend_id' => 'required',
-            ],
-            [
-                'friend_id.required' => '好友ID不能为空',
-            ]
-        );
-        if ($validator->fails()) {
-            $errorMessage = $validator->errors()->first();
-        }
-        $requireData['user_id'] = Context::get("UserId");
-        $result = $this->chatServiceClient->isFriend($requireData);
-        return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
-    }
-
-    /**
-     * 更新好友备注
-     * @return array
-     */
-    public function updateFriend()
-    {
-        $requireData = $this->request->all();
-        $validator = $this->validationFactory->make(
-            $requireData,
-            [
-                'friend_id' => 'required',
-                'remark' => 'required',
-            ],
-            [
-                'friend_id.required' => '好友ID不能为空',
-                'remark.required' => '备注不能为空',
-            ]
-        );
-        if ($validator->fails()) {
-            $errorMessage = $validator->errors()->first();
-            return Result::error($errorMessage);
-        }
-        $requireData['user_id'] = Context::get("UserId");
-        $result = $this->chatServiceClient->updateFriend($requireData);
-        return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
-    }
-    /**
-     * 会话
-     * @return array
-     */
-    public function getConversation()
-    {
-        $requireData = $this->request->all();
-        $requireData['user_id'] = Context::get("UserId");
-        $result = $this->chatServiceClient->getConversation($requireData);
-        return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
-    }
-    /**
-     * 获取聊天记录
-     * @return array
-     */
-    public function getChatRecords()
-    {
-        $requireData = $this->request->all();
-        $validator = $this->validationFactory->make(
-            $requireData,
-            [
-                'friend_id' => 'required',
-            ],
-            [
-                'friend_id.required' => '好友ID不能为空',
-            ]
-        );
-        if ($validator->fails()) {
-            $errorMessage = $validator->errors()->first();
-            return Result::error($errorMessage);
-        }
-        $requireData['user_id'] = Context::get("UserId");
-        $result = $this->chatServiceClient->getChatRecords($requireData);
-        return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
-    }
-    /**
-     * 获取群聊天
-     * @return array
-     */
-    public function getGroupChatRecords()
-    {
-        $requireData = $this->request->all();
-        $validator = $this->validationFactory->make(
-            $requireData,
-            [
-                'group_id' => 'required',
-            ],
-            [
-                'group_id.required' => '群ID不能为空',
-            ]
-        );
-        if ($validator->fails()) {
-            $errorMessage = $validator->errors()->first();
-        }
-        $requireData['user_id'] = Context::get("UserId");
-        $result = $this->chatServiceClient->getGroupChatRecords($requireData);
-        return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
-    }
-    /**
-     * 获取群成员列表
-     * @return array
-     */
-    public function getGroupMembers()
-    {
-        $requireData = $this->request->all();
-        $validator = $this->validationFactory->make(
-            $requireData,
-            [
-                'group_id' => 'required',
-            ],
-            [
-                'group_id.required' => '群ID不能为空',
-            ]
-        );
-        if ($validator->fails()) {
-            $errorMessage = $validator->errors()->first();
-            return Result::error($errorMessage);
-        }
-        $requireData['user_id'] = Context::get("UserId");
-        $result = $this->chatServiceClient->getGroupMembers($requireData);
-        return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
-    }
-    /**
-     * 获取群信息
-     * @return array
-     */
-    public function getGroupInfo()
-    {
-        $requireData = $this->request->all();
-        $validator = $this->validationFactory->make(
-            $requireData,
-            [
-                'group_id' => 'required',
-            ],
-            [
-                'group_id.required' => '群ID不能为空',
-            ]
-        );
-        if ($validator->fails()) {
-            $errorMessage = $validator->errors()->first();
-        }
-        $requireData['user_id'] = Context::get("UserId");
-        $result = $this->chatServiceClient->getGroupInfo($requireData);
-        return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
-    }
-    /**
-     * 获取群列表
-     * @return array
-     */
-    public function getGroupList()
-    {
-        $requireData = $this->request->all();
-        $requireData['user_id'] = Context::get("UserId");
-        $result = $this->chatServiceClient->getGroupList($requireData);
-        return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
-    }
-    /**
-     * 新建群
-     * @return array
-     */
-    public function addGroup()
-    {
-        $requireData = $this->request->all();
-        $validator = $this->validationFactory->make(
-            $requireData,
-            [
-                'group_name' => 'required',
-                'group_desc' => 'required',
-                // 'group_avatar' => 'required',
-                // 'group_member' => 'required',
-            ]
-            ,
-            [
-                'group_name.required' => '群名称不能为空',
-                'group_desc.required' => '群描述不能为空',
-                // 'group_avatar.required' => '群头像不能为空',
-                // 'group_member.required' => '群成员不能为空',
-            ]
-        );
-        if ($validator->fails()) {
-            $errorMessage = $validator->errors()->first();
-            return Result::error($errorMessage);
-        }
-        $requireData['user_id'] = Context::get("UserId");
-        $requireData['group_member'] = explode(',', ($requireData['group_member']));
-        $result = $this->chatServiceClient->addGroup($requireData);
-        return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
-    }
-    /**
-     * 退出群
-     * @return array
-     */
-    public function quitGroup()
-    {
-        $requireData = $this->request->all();
-        $validator = $this->validationFactory->make(
-            $requireData,
-            [
-                'group_id' => 'required',
-            ],
-            [
-                'group_id.required' => '群ID不能为空',
-            ]
-        );
-        if ($validator->fails()) {
-            $errorMessage = $validator->errors()->first();
-        }
-        $requireData['user_id'] = Context::get("UserId");
-        $result = $this->chatServiceClient->quitGroup($requireData);
-        return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
-    }
-    /**
-     * 删除群
-     * @return array
-     */
-    public function delGroup()
-    {
-        $requireData = $this->request->all();
-        $validator = $this->validationFactory->make(
-            $requireData,
-            [
-                'group_id' => 'required',
-            ],
-            [
-                'group_id.required' => '群ID不能为空',
-            ]
-        );
-        if ($validator->fails()) {
-            $errorMessage = $validator->errors()->first();
-            return Result::error($errorMessage);
-        }
-        $requireData['user_id'] = Context::get("UserId");
-        $result = $this->chatServiceClient->delGroup($requireData);
-        return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
-    }
-    /**
-     * 删除群成员
-     * @return array
-     */
-    public function delGroupMembers()
-    {
-        $requireData = $this->request->all();
-        $validator = $this->validationFactory->make(
-            $requireData,
-            [
-                'group_id' => 'required',
-                'group_member' => 'required',
-            ],
-            [
-                'group_id.required' => '群ID不能为空',
-                'group_member.required' => '群成员不能为空',
-            ]
-        );
-        if ($validator->fails()) {
-            $errorMessage = $validator->errors()->first();
-            return Result::error($errorMessage);
-        }
-        $requireData['user_id'] = Context::get("UserId");
-        $requireData['group_member'] = explode(',', ($requireData['group_member']));
-        $result = $this->chatServiceClient->delGroupMembers($requireData);
-        return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
-    }
-    /**
-     * 添加群成员
-     * @return array
-     */
-    public function updateGroupMembers()
-    {
-        $requireData = $this->request->all();
-        $validator = $this->validationFactory->make(
-            $requireData,
-            [
-                'group_id' => 'required',
-                'group_member' => 'required',
-            ],
-            [
-                'group_id.required' => '群ID不能为空',
-                'group_member.required' => '群成员不能为空',
-            ]
-        );
-
-        if ($validator->fails()) {
-            $errorMessage = $validator->errors()->first();
-            return Result::error($errorMessage);
-        }
-        $requireData['user_id'] = Context::get("UserId");
-        $requireData['group_member'] = explode(',', ($requireData['group_member']));
-        $result = $this->chatServiceClient->updateGroupMembers($requireData);
-        return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
-    }
-
-    /**
-     * 删除群成员
-     * @return array
-     */
-    public function deleteGroupMember()
-    {
-        $requireData = $this->request->all();
-        $validator = $this->validationFactory->make(
-            $requireData,
-            [
-                'group_id' => 'required',
-                'group_member' => 'required',
-            ],
-            [
-                'group_id.required' => '群ID不能为空',
-                'group_member.required' => '群成员不能为空',
-            ]
-        );
-        if ($validator->fails()) {
-            $errorMessage = $validator->errors()->first();
-            return Result::error($errorMessage);
-        }
-        $requireData['user_id'] = Context::get("UserId");
-        $requireData['group_member'] = explode(',', ($requireData['group_member']));
-        $result = $this->chatServiceClient->deleteGroupMember($requireData);
-        return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
-    }
-    /**
-     * 加入群
-     * @return array
-     */
-    public function joinGroup()
-    {
-        $requireData = $this->request->all();
-        $validator = $this->validationFactory->make(
-            $requireData,
-            [
-                'group_id' => 'required',
-            ],
-            [
-                'group_id.required' => '群ID不能为空',
-            ]
-        );
-        if ($validator->fails()) {
-            $errorMessage = $validator->errors()->first();
-            return Result::error($errorMessage);
-        }
-        $requireData['user_id'] = Context::get("UserId");
-        $result = $this->chatServiceClient->joinGroup($requireData);
-        return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
-    }
-
-    /**
-     * 更新群信息
-     * @return array
-     */
-    public function updateGroup()
-    {
-        $requireData = $this->request->all();
-        // 只接受指定的四个字段
-        $validatedData = $this->validationFactory->make(
-            $requireData,
-            [
-                'group_id' => 'required|string',
-                'group_name' => 'nullable|string',
-                'profile' => 'nullable|string',
-                'avatar' => 'nullable|string',
-            ],
-            [
-                'group_id.required' => '群ID不能为空',
-                // 'group_name.required' => '群名称不能为空',
-            ]
-        );
-
-        if ($validatedData->fails()) {
-            $errorMessage = $validatedData->errors()->first();
-            return Result::error($errorMessage);
-        }
-        $requireData['user_id'] = Context::get("UserId");
-        $result = $this->chatServiceClient->updateGroup($requireData);
-        return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
-    }
-    /**
-     * 获取商圈
-     * @return array
-     */
-    public function getTopicsList()
-    {
-        $requireData = $this->request->all();
-        $validator = $this->validationFactory->make(
-            $requireData,
-            [
-                'page' => 'required|integer',
-                'page_size' => 'required|integer',
-            ],
-            [
-                'page.required' => '页码不能为空',
-                'page_size.required' => '每页数量不能为空',
-            ]
-        );
-        if ($validator->fails()) {
-            $errorMessage = $validator->errors()->first();
-            return Result::error($errorMessage);
-        }
-        $requireData['user_id'] = Context::get("UserId");
-        $result = $this->chatServiceClient->getTopicsList($requireData);
-        return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
-    }
-    /**
-     * 新增话题商圈
-     * @return array
-     */
-    public function addTopic()
-    {
-        $requireData = $this->request->all();
-        $validator = $this->validationFactory->make(
-            $requireData,
-            [
-                'title' => 'required|string',
-                'type' => 'required|int',
-                'content' => 'required|string',
-            ],
-            [
-                'title.required' => '商圈名称不能为空',
-                'type.required' => '商圈类型不能为空',
-                'content.required' => '商圈内容不能为空',
-                'type.int' => '商圈类型只能是数字',
-                'content.string' => '商圈内容只能是字符串',
-                'title.string' => '商圈名称只能是字符串',
-            ]
-        );
-        if ($validator->fails()) {
-            $errorMessage = $validator->errors()->first();
-            return Result::error($errorMessage);
-        }
-        $requireData['user_id'] = Context::get("UserId");
-        $result = $this->chatServiceClient->addTopic($requireData);
-        return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
-    }
-    /**
-     * 更新话题商圈
-     * @return array
-     */
-    public function updateTopic()
-    {
-        $requireData = $this->request->all();
-        $validator = $this->validationFactory->make(
-            $requireData,
-            [
-                'id' => 'required|string',
-                // 'status' => 'required|integer',
-            ],
-            [
-                'topic_id.required' => '商圈ID不能为空',
-                // 'status.required' => '商圈状态不能为空',
-            ]
-        );
-        if ($validator->fails()) {
-            $errorMessage = $validator->errors()->first();
-            return Result::error($errorMessage);
-        }
-        $requireData['user_id'] = Context::get("UserId");
-        $result = $this->chatServiceClient->updateTopic($requireData);
-        return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
-    }
-    /**
-     * 删除话题商圈
-     * @return array
-     */
-    public function delTopic()
-    {
-        $requireData = $this->request->all();
-        $validator = $this->validationFactory->make(
-            $requireData,
-            [
-                'id' => 'required|string',
-            ],
-            [
-                'id.required' => '商圈ID不能为空',
-            ]
-        );
-        if ($validator->fails()) {
-            $errorMessage = $validator->errors()->first();
-            return Result::error($errorMessage);
-        }
-        $requireData['user_id'] = Context::get("UserId");
-        $result = $this->chatServiceClient->delTopic($requireData);
-        return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
-    }
-    /**
-     * 获取商圈详情
-     * @return array
-     */
-    public function getTopicInfo()
-    {
-        $requireData = $this->request->all();
-        $validator = $this->validationFactory->make(
-            $requireData,
-            [
-                'id' => 'required|string',
-            ],
-            [
-                'id.required' => '商圈ID不能为空',
-            ]
-        );
-        if ($validator->fails()) {
-            $errorMessage = $validator->errors()->first();
-            return Result::error($errorMessage);
-        }
-        $requireData['user_id'] = Context::get("UserId");
-        $result = $this->chatServiceClient->getTopicInfo($requireData);
-        return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
-    }
-    /**
-     * 获取商圈回复
-     * @return array
-     */
-    public function addReply()
-    {
-        $requireData = $this->request->all();
-        $validator = $this->validationFactory->make(
-            $requireData,
-            [
-                'id' => 'required|string',
-                'content' => 'required|string',
-            ],
-            [
-                'id.required' => '商圈ID不能为空',
-                'content.required' => '回复内容不能为空',
-            ]
-        );
-        if ($validator->fails()) {
-            $errorMessage = $validator->errors()->first();
-            return Result::error($errorMessage);
-        }
-        $requireData['user_id'] = Context::get("UserId");
-        $result = $this->chatServiceClient->addReply($requireData);
-        return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
-    }
-    /**
-     * 获取商圈评论
-     * @return array
-     */
-    public function getTopicReply()
-    {
-        $requireData = $this->request->all();
-        $validator = $this->validationFactory->make(
-            $requireData,
-            [
-                'id' => 'required|string',
-                'page' => 'required|integer',
-                'page_size' => 'required|integer',
-            ],
-            [
-                'id.required' => '商圈ID不能为空',
-                'page.required' => '页码不能为空',
-                'page_size.required' => '每页数量不能为空',
-            ]
-        );
-        if ($validator->fails()) {
-            $errorMessage = $validator->errors()->first();
-            return Result::error($errorMessage);
-        }
-        $requireData['user_id'] = Context::get("UserId");
-        $result = $this->chatServiceClient->getTopicReply($requireData);
-        return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
-    }
-    
-    
-    /**
-     * 获取 access_token
-     * @return array
-     */
-    public function getAccessToken()
-    {
-        $url = env("WECHAT") . "cgi-bin/token?appid=" . env("APPID") . "&secret=" . env("APP_SECRET") . "&grant_type=client_credential";
-        $result = PublicData::http_get($url);
-        $resultData = json_decode($result, true);
-        var_dump($url, $resultData);
-        if (isset($resultData['errcode'])) {
-            return Result::error($resultData['errmsg']);
-        }
-        return Result::success($resultData);
-    }
-    /**
-     * 删除一条聊天记录
-     * @return array
-     */
-    public function delRecords()
-    {
-        $requireData = $this->request->all();
-        $validator = $this->validationFactory->make(
-            $requireData,
-            [
-                'id' => 'required',
-            ],
-            [
-                'id.required' => '聊天记录ID不能为空',
-            ]
-        );
-        if ($validator->fails()) {
-            $errorMessage = $validator->errors()->first();
-        }
-        $requireData['user_id'] = Context::get("UserId");
-        $result = $this->chatServiceClient->delRecords($requireData);
-        return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
-    }
-    /**
-     * 删除所有聊天记录
-     * @return array
-     */
-    public function clearRecords()
-    {
-        $requireData = $this->request->all();
-        $validator = $this->validationFactory->make(
-            $requireData,
-            [
-                'friend_id' => 'required',
-            ],
-            [
-                'friend_id.required' => '聊天记录ID不能为空',
-            ]
-        );
-        if ($validator->fails()) {
-            $errorMessage =$validator->errors()->first();
-        }
-        $requireData['user_id'] = Context::get("UserId");
-        $result = $this->chatServiceClient->clearRecords($requireData);
-        return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
-    }
-    /**
-     * 删除群聊记录
-     * @return array
-     */
-    public function clearGroupRecords()
-    {
-        $requireData = $this->request->all();
-        $validator = $this->validationFactory->make(
-            $requireData,
-            [
-                'id' => 'required',
-            ],
-            [
-                'id.required' => '聊天记录ID不能为空',
-            ]
-        );
-        if ($validator->fails()) {
-            $errorMessage= $validator->errors()->first();
-        }
-        $requireData['user_id'] = Context::get("UserId");
-        $result = $this->chatServiceClient->clearGroupRecords($requireData);
-        return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
-    }
-    /**
-     * 撤回一条聊天记录
-     * @return array
-     */
-    public function recallRecord()
-    { 
-
-        $webSocketController = ApplicationContext::getContainer()->get(WebSocketController::class);
-        $frame = new Frame();
-        $frame->fd = 1; // 替换为实际的客户端 fd
-        $frame->data = json_encode([
-            'talk_type' => 1,
-            'receiver_id' => 2, // 接收者 ID
-            'content' => 'Hello, this is a test message!'
-        ]);
-    
-        $webSocketController->send(1, 'Hello, World!');
-        return Result::success('');
-    
-        $requireData = $this->request->all();
-        $validator = $this->validationFactory->make(
-            $requireData,
-            [
-                'content' => 'required',
-            ],
-            [
-                'content.required' => '聊天记录不能为空',
-            ]
-        );
-        $requireData['user_id'] = Context::get("UserId");
-        if ($validator->fails()) {
-            $errorMessage = $validator->errors()->first();
-        }
-        //接入websocket,发送撤回消息
-        $redisClient = new RedisService();
-        $fd = $redisClient->findFd((int) 32);
-        $maxRetries = 1;
-        $retryCount = 0;
-        $interval = 1; // 秒
-        while ($retryCount < $maxRetries) {
-            $response = $this->chatServiceClient->getRecordByContent($requireData);
-            // 如果成功,返回结果
-            if ($response['code'] === 0) {
-                if(!empty($response['data']['id'])){
-                    $records = $response['data'];
-                    foreach($records as $record){
-                        //判断 created_at 是否大于一分钟
-                        $createdAt = strtotime($record['created_at']);
-                        $currentTime = time();
-                        $timeDifference = $currentTime - $createdAt;
-                        if ($timeDifference > 60) {
-                             return Result::error('超过一分钟,无法撤回');
-                        }
-                    }
-                }
-                $result = $this->chatServiceClient->recallRecord($response['data']);
-                return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
-            }
-            // 如果失败,等待一段时间后重试
-            sleep($interval);
-            $retryCount++;
-        }
-        return Result::error('获取失败');
-    }
-    /**
-     * 获取一条信息
-     * @return array
-     */
-    public function getRecord()
-    {
-        $requireData = $this->request->all();
-        $validator = $this->validationFactory->make(
-            $requireData,
-            [
-                'id' => 'required',
-            ],
-            [
-                'id.required' => '聊天记录ID不能为空',
-            ]
-        );
-        if ($validator->fails()) {
-            $errorMessage= $validator->errors()->first();
-        }
-        $requireData['user_id'] = Context::get("UserId");
-        $result = $this->chatServiceClient->getRecord($requireData);
-            return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
-    }
-    /**
-     * 删除一条topicRely
-     * @return array
-     */
-    public function delReply()
-    {
-        $requireData = $this->request->all();
-        $validator = $this->validationFactory->make(
-            $requireData,
-            [
-                'id' => 'required',
-            ],
-            [
-                'id.required' => '回复ID不能为空',
-            ]
-        );
-        if ($validator->fails()) {
-            $errorMessage = $validator->errors()->first();
-        }
-        $requireData['user_id'] = Context::get("UserId");
-        $result = $this->chatServiceClient->delReply($requireData);
-        return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
-    }
-    /**
-     * 删除所有回复
-     * @return array
-     */
-    public function delAllReply()
-    {
-        $requireData = $this->request->all();
-        $validator = $this->validationFactory->make(
-            $requireData,
-            [
-                'topicid' => 'required',
-            ],
-            [
-                'topicid.required' => '回复ID不能为空',
-            ]
-        );
-        if ($validator->fails()) {
-            $errorMessage =$validator->errors()->first();
-        }
-        $requireData['user_id'] = Context::get("UserId");
-        $result = $this->chatServiceClient->delAllReply($requireData);
-        return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
-    }
-    /**
-     * 获取所有Topic
-     * @return array
-     */
-    public function getTopicsListAdmin()
-    {
-        $requireData = $this->request->all();
-        $validator = $this->validationFactory->make(
-            $requireData,
-            [
-                'page' => 'required',
-                'limit' => 'required',
-            ],
-            [
-                'page.required' => '页码不能为空',
-                'limit.required' => '每页数量不能为空',
-            ]
-        );
-        if ($validator->fails()) {
-            $errorMessage = $validator->errors()->first();
-        }
-        $requireData['user_id'] = Context::get("UserId");
-        $result = $this->chatServiceClient->getTopicsListAdmin($requireData);
-        return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
-    }
-    
-}
+<?php
+
+declare (strict_types = 1);
+namespace App\Controller;
+
+use App\JsonRpc\ChatServiceInterface;
+use App\JsonRpc\UserServiceInterface;
+use App\Service\RedisService;
+use App\Tools\PublicData;
+use App\Tools\Result;
+use function Hyperf\Support\env;
+use Hyperf\Context\Context;
+use Hyperf\Di\Annotation\Inject;
+use Hyperf\Validation\Contract\ValidatorFactoryInterface;
+// use App\Controller\WebSocketController as WebSocket;
+use Hyperf\Context\ApplicationContext as ApplicationContext;
+use App\Controller\WebSocketController;
+use Swoole\WebSocket\Frame;
+
+/**
+ *
+ * Class ChatController
+ * @package App\Controller
+ */
+//#[AutoController]
+class ChatController extends AbstractController
+{
+    #[Inject]
+    protected ValidatorFactoryInterface $validationFactory;
+    /**
+     * @var ChatServiceInterface
+     */
+    #[Inject]
+    private $chatServiceClient;
+    #[Inject]
+    private UserServiceInterface $userServiceClient;
+    // #[Inject]
+    // private WebSocket $webSocketController;
+
+    /**
+     * 申请添加好友
+     * @return array
+     */
+    public function addFriend()
+    {
+        $requireData = $this->request->all();
+        $validator = $this->validationFactory->make(
+            $requireData,
+            [
+                'friend_id' => 'required',
+            ],
+            [
+                'friend_id.required' => '好友ID不能为空',
+            ]
+        );
+        if ($validator->fails()) {
+            $errorMessage = $validator->errors()->first();
+            return Result::error($errorMessage);
+        }
+        $requireData['user_id'] = Context::get("UserId");
+        //判断UserId是否是friend_id
+        $userId = $requireData['user_id'];
+        $friendId = $requireData['friend_id'];
+        if ($userId == $friendId) {
+            return Result::error('不能添加自己为好友');
+        }
+        //判断friend_id是否可用
+        $friendInfo = $this->userServiceClient->getUserInfo((int) $friendId);
+        if ($friendInfo['code'] == 0) {
+            return Result::error('好友ID不存在');
+        }
+        $result = $this->chatServiceClient->addFriend($requireData);
+       
+        return $result ? Result::success($result['message']) : Result::error($result['message']);
+    }
+
+   
+    /**
+     * 话题分类
+     * @return array
+     */
+    public function topicType()
+    {
+        $type = array(
+            '1' => '课题',
+            '2' => '维权',
+            '3' => '讨论',
+        );
+        $result = array();
+        foreach ($type as $k => $v) {
+            $result[] = ['value' => $k, 'label' => $v];
+        }
+        return Result::success($result);
+    }
+    /**
+     * 获取话题列表
+     * @return array
+     */
+    public function topicStatus()
+    {
+        $status = array(
+            '1' => '未审核',
+            '2' => '已通过',
+            '3' => '已拒绝',
+        );
+        $result = array();
+        foreach ($status as $k => $v) {
+            $result[] = ['value' => $k, 'label' => $v];
+        }
+        return Result::success($result);
+    }
+
+    /**
+     * 搜索好友列表
+     * @return array
+     */
+    public function searchFriend()
+    {
+        $requireData = $this->request->all();
+        $validator = $this->validationFactory->make(
+            $requireData,
+            [
+                'keyword' => 'required',
+            ],
+            [
+                'keyword.required' => '搜索关键字不能为空',
+            ]
+        );
+        if ($validator->fails()) {
+            $errorMessage = $validator->errors()->first();
+            return Result::error($errorMessage);
+        }
+        $requireData['user_id'] = Context::get("UserId");
+        // return Result::success($requireData);
+        $result = $this->chatServiceClient->searchFriend($requireData);
+        return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
+    }
+    /**
+     * 获取好友详情
+     * @return array
+     */
+    public function getFriendInfo()
+    {
+        $requireData = $this->request->all();
+        $validator = $this->validationFactory->make(
+            $requireData,
+            [
+                'friend_id' => 'required',
+            ],
+            [
+                'friend_id.required' => '好友ID不能为空',
+            ]
+        );
+        if ($validator->fails()) {
+            $errorMessage = $validator->errors()->first();
+            return Result::error($errorMessage);
+        }
+        $requireData['user_id'] = Context::get("UserId");
+        $result = $this->chatServiceClient->getFriendInfo($requireData);
+        return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
+
+    }
+
+    /**
+     * 获取我的好友列表
+     * @return array
+     */
+    public function getFriendsList()
+    {
+        $requireData = [];
+        $requireData['user_id'] = Context::get("UserId");
+        $requireData['status'] = 2;
+        $result = $this->chatServiceClient->getFriendsList($requireData);
+        return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
+    }
+    /**
+     * 获取好友申请列表
+     * @return array
+     */
+    public function getFriendsApplyList()
+    {
+        $requireData = [];
+        $requireData['friend_id'] = Context::get("UserId");
+        $requireData['status'] = 1;
+        $result = $this->chatServiceClient->getFriendsApplyList($requireData);
+        return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
+    }
+
+    /**
+     * 好友申请审核通过或拒绝
+     * @return array
+     */
+    public function applyFriend()
+    {
+        $requireData = $this->request->all();
+        $frindid =$requireData['apply_id'];
+        unset($requireData['apply_id']);
+        // 定义验证规则
+        $validator = $this->validationFactory->make(
+            $requireData,
+            [
+                'id' => 'required|integer',
+                'status' => 'required|in:2,4',
+            ],
+            [
+                'friend_id.required' => 'ID不能为空',
+                'status.required' => '状态不能为空',
+                'status.in' => '状态错误',
+            ]
+        );
+        // 验证请求数据
+        if ($validator->fails()) {
+            var_dump($validator->errors()->all());
+            return Result::error(implode(', ', $validator->errors()->all()), 0);
+        }
+        $requireData['user_id'] = Context::get("UserId");
+        // var_dump($requireData,'1111test');
+        $result = $this->chatServiceClient->applyFriend($requireData);
+        if ($result && $result['code'] != 0) {
+            $realResult = $result;
+            $redisClient = new RedisService();
+            $myFriends = $this->chatServiceClient->getFriendsList(['user_id' => $requireData['user_id'], 'status' => 2]);
+            // var_dump($myFriends, '--------------------1');
+            $redisClient->setUserFriends((string)$requireData['user_id'], $myFriends['data']);
+            $myFriends = $this->chatServiceClient->getFriendsList(['user_id' => $frindid, 'status' => 2]);
+            // var_dump($myFriends, '-------------3-------1');
+            $redisClient->setUserFriends((string)$frindid, $myFriends['data']);
+            $result =  $redisClient->getUserFriends((string)$requireData['user_id']);
+            // var_dump($result,'redis-结果');
+            $result =  $redisClient->getUserFriends((string)$frindid);
+            // var_dump($result,'redis-结果');
+            //redis 添加好友
+            $result = $realResult;
+        }
+        return $result && $result['code'] != 0 ? Result::success($result['data']) :     Result::error($result['message']);
+    }
+     /**
+     * 批量设置redis好友
+     * @return array
+     */
+    public function setFriends()
+    {
+        //获取所有用户
+        $userList = $this->userServiceClient->getUserList(['page' => 1, 'pageSize' => 1000 ]);
+        //获取id,循环写入redis
+        $userList = $userList['data']['rows'];
+        var_dump($userList,'111111111111');
+        
+        $redisClient = new RedisService();
+        foreach ($userList as $key => $value) {
+            var_dump($value,'----------------------');
+            $myFriends = $this->chatServiceClient->getFriendsList(['user_id' => $value['id'], 'status' => 2]);
+            $redisClient->setUserFriends((string)$value['id'], $myFriends['data']);
+        }
+        return Result::success();
+    }
+
+    /**
+     * 删除好友
+     * @return array
+     */
+    public function delFriend()
+    {
+        $requireData = $this->request->all();
+        $validator = $this->validationFactory->make(
+            $requireData,
+            [
+                'friend_id' => 'required',
+            ],
+            [
+                'friend_id.required' => '好友ID不能为空',
+            ]
+        );
+        if ($validator->fails()) {
+            $errorMessage = $validator->errors()->first();
+            return Result::error($errorMessage);
+        }
+        $requireData['user_id'] = Context::get("UserId");
+        $result = $this->chatServiceClient->delFriend($requireData);
+        //redis 删除好友
+        if ($result && $result['code'] != 0) {
+            $redisClient = new RedisService();
+            $myFriends = $this->chatServiceClient->getFriendsList(['user_id' => $requireData['user_id'], 'status' => 2]);
+            $redisClient->setUserFriends((string)$requireData['user_id'], $myFriends['data']);
+
+            $myFriends = $this->chatServiceClient->getFriendsList(['user_id' => $requireData['friend_id'], 'status' => 2]);
+            $redisClient->setUserFriends((string)$requireData['friend_id'], $myFriends['data']);
+        }
+        return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
+    }
+
+    /**
+     * 是否好友
+     * @return array
+     */
+    public function isFriend()
+    {
+        $requireData = $this->request->all();
+        $validator = $this->validationFactory->make(
+            $requireData,
+            [
+                'friend_id' => 'required',
+            ],
+            [
+                'friend_id.required' => '好友ID不能为空',
+            ]
+        );
+        if ($validator->fails()) {
+            $errorMessage = $validator->errors()->first();
+        }
+        $requireData['user_id'] = Context::get("UserId");
+        $result = $this->chatServiceClient->isFriend($requireData);
+        return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
+    }
+
+    /**
+     * 更新好友备注
+     * @return array
+     */
+    public function updateFriend()
+    {
+        $requireData = $this->request->all();
+        $validator = $this->validationFactory->make(
+            $requireData,
+            [
+                'friend_id' => 'required',
+                'remark' => 'required',
+            ],
+            [
+                'friend_id.required' => '好友ID不能为空',
+                'remark.required' => '备注不能为空',
+            ]
+        );
+        if ($validator->fails()) {
+            $errorMessage = $validator->errors()->first();
+            return Result::error($errorMessage);
+        }
+        $requireData['user_id'] = Context::get("UserId");
+        $result = $this->chatServiceClient->updateFriend($requireData);
+        return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
+    }
+    /**
+     * 会话
+     * @return array
+     */
+    public function getConversation()
+    {
+        $requireData = $this->request->all();
+        $requireData['user_id'] = Context::get("UserId");
+        $result = $this->chatServiceClient->getConversation($requireData);
+        return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
+    }
+    /**
+     * 获取聊天记录
+     * @return array
+     */
+    public function getChatRecords()
+    {
+        $requireData = $this->request->all();
+        $validator = $this->validationFactory->make(
+            $requireData,
+            [
+                'friend_id' => 'required',
+            ],
+            [
+                'friend_id.required' => '好友ID不能为空',
+            ]
+        );
+        if ($validator->fails()) {
+            $errorMessage = $validator->errors()->first();
+            return Result::error($errorMessage);
+        }
+        $requireData['user_id'] = Context::get("UserId");
+        $result = $this->chatServiceClient->getChatRecords($requireData);
+        return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
+    }
+    /**
+     * 获取群聊天
+     * @return array
+     */
+    public function getGroupChatRecords()
+    {
+        $requireData = $this->request->all();
+        $validator = $this->validationFactory->make(
+            $requireData,
+            [
+                'group_id' => 'required',
+            ],
+            [
+                'group_id.required' => '群ID不能为空',
+            ]
+        );
+        if ($validator->fails()) {
+            $errorMessage = $validator->errors()->first();
+        }
+        $requireData['user_id'] = Context::get("UserId");
+        $result = $this->chatServiceClient->getGroupChatRecords($requireData);
+        return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
+    }
+    /**
+     * 获取群成员列表
+     * @return array
+     */
+    public function getGroupMembers()
+    {
+        $requireData = $this->request->all();
+        $validator = $this->validationFactory->make(
+            $requireData,
+            [
+                'group_id' => 'required',
+            ],
+            [
+                'group_id.required' => '群ID不能为空',
+            ]
+        );
+        if ($validator->fails()) {
+            $errorMessage = $validator->errors()->first();
+            return Result::error($errorMessage);
+        }
+        $requireData['user_id'] = Context::get("UserId");
+        $result = $this->chatServiceClient->getGroupMembers($requireData);
+        return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
+    }
+    /**
+     * 获取群信息
+     * @return array
+     */
+    public function getGroupInfo()
+    {
+        $requireData = $this->request->all();
+        $validator = $this->validationFactory->make(
+            $requireData,
+            [
+                'group_id' => 'required',
+            ],
+            [
+                'group_id.required' => '群ID不能为空',
+            ]
+        );
+        if ($validator->fails()) {
+            $errorMessage = $validator->errors()->first();
+        }
+        $requireData['user_id'] = Context::get("UserId");
+        $result = $this->chatServiceClient->getGroupInfo($requireData);
+        return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
+    }
+    /**
+     * 获取群列表
+     * @return array
+     */
+    public function getGroupList()
+    {
+        $requireData = $this->request->all();
+        $requireData['user_id'] = Context::get("UserId");
+        $result = $this->chatServiceClient->getGroupList($requireData);
+        return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
+    }
+    /**
+     * 新建群
+     * @return array
+     */
+    public function addGroup()
+    {
+        $requireData = $this->request->all();
+        $validator = $this->validationFactory->make(
+            $requireData,
+            [
+                'group_name' => 'required',
+                'group_desc' => 'required',
+                // 'group_avatar' => 'required',
+                // 'group_member' => 'required',
+            ]
+            ,
+            [
+                'group_name.required' => '群名称不能为空',
+                'group_desc.required' => '群描述不能为空',
+                // 'group_avatar.required' => '群头像不能为空',
+                // 'group_member.required' => '群成员不能为空',
+            ]
+        );
+        if ($validator->fails()) {
+            $errorMessage = $validator->errors()->first();
+            return Result::error($errorMessage);
+        }
+        $requireData['user_id'] = Context::get("UserId");
+        $requireData['group_member'] = explode(',', ($requireData['group_member']));
+        $result = $this->chatServiceClient->addGroup($requireData);
+        return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
+    }
+    /**
+     * 退出群
+     * @return array
+     */
+    public function quitGroup()
+    {
+        $requireData = $this->request->all();
+        $validator = $this->validationFactory->make(
+            $requireData,
+            [
+                'group_id' => 'required',
+            ],
+            [
+                'group_id.required' => '群ID不能为空',
+            ]
+        );
+        if ($validator->fails()) {
+            $errorMessage = $validator->errors()->first();
+        }
+        $requireData['user_id'] = Context::get("UserId");
+        $result = $this->chatServiceClient->quitGroup($requireData);
+        return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
+    }
+    /**
+     * 删除群
+     * @return array
+     */
+    public function delGroup()
+    {
+        $requireData = $this->request->all();
+        $validator = $this->validationFactory->make(
+            $requireData,
+            [
+                'group_id' => 'required',
+            ],
+            [
+                'group_id.required' => '群ID不能为空',
+            ]
+        );
+        if ($validator->fails()) {
+            $errorMessage = $validator->errors()->first();
+            return Result::error($errorMessage);
+        }
+        $requireData['user_id'] = Context::get("UserId");
+        $result = $this->chatServiceClient->delGroup($requireData);
+        return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
+    }
+    /**
+     * 删除群成员
+     * @return array
+     */
+    public function delGroupMembers()
+    {
+        $requireData = $this->request->all();
+        $validator = $this->validationFactory->make(
+            $requireData,
+            [
+                'group_id' => 'required',
+                'group_member' => 'required',
+            ],
+            [
+                'group_id.required' => '群ID不能为空',
+                'group_member.required' => '群成员不能为空',
+            ]
+        );
+        if ($validator->fails()) {
+            $errorMessage = $validator->errors()->first();
+            return Result::error($errorMessage);
+        }
+        $requireData['user_id'] = Context::get("UserId");
+        $requireData['group_member'] = explode(',', ($requireData['group_member']));
+        $result = $this->chatServiceClient->delGroupMembers($requireData);
+        return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
+    }
+    /**
+     * 添加群成员
+     * @return array
+     */
+    public function updateGroupMembers()
+    {
+        $requireData = $this->request->all();
+        $validator = $this->validationFactory->make(
+            $requireData,
+            [
+                'group_id' => 'required',
+                'group_member' => 'required',
+            ],
+            [
+                'group_id.required' => '群ID不能为空',
+                'group_member.required' => '群成员不能为空',
+            ]
+        );
+
+        if ($validator->fails()) {
+            $errorMessage = $validator->errors()->first();
+            return Result::error($errorMessage);
+        }
+        $requireData['user_id'] = Context::get("UserId");
+        $requireData['group_member'] = explode(',', ($requireData['group_member']));
+        $result = $this->chatServiceClient->updateGroupMembers($requireData);
+        return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
+    }
+
+    /**
+     * 删除群成员
+     * @return array
+     */
+    public function deleteGroupMember()
+    {
+        $requireData = $this->request->all();
+        $validator = $this->validationFactory->make(
+            $requireData,
+            [
+                'group_id' => 'required',
+                'group_member' => 'required',
+            ],
+            [
+                'group_id.required' => '群ID不能为空',
+                'group_member.required' => '群成员不能为空',
+            ]
+        );
+        if ($validator->fails()) {
+            $errorMessage = $validator->errors()->first();
+            return Result::error($errorMessage);
+        }
+        $requireData['user_id'] = Context::get("UserId");
+        $requireData['group_member'] = explode(',', ($requireData['group_member']));
+        $result = $this->chatServiceClient->deleteGroupMember($requireData);
+        return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
+    }
+    /**
+     * 加入群
+     * @return array
+     */
+    public function joinGroup()
+    {
+        $requireData = $this->request->all();
+        $validator = $this->validationFactory->make(
+            $requireData,
+            [
+                'group_id' => 'required',
+            ],
+            [
+                'group_id.required' => '群ID不能为空',
+            ]
+        );
+        if ($validator->fails()) {
+            $errorMessage = $validator->errors()->first();
+            return Result::error($errorMessage);
+        }
+        $requireData['user_id'] = Context::get("UserId");
+        $result = $this->chatServiceClient->joinGroup($requireData);
+        return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
+    }
+
+    /**
+     * 更新群信息
+     * @return array
+     */
+    public function updateGroup()
+    {
+        $requireData = $this->request->all();
+        // 只接受指定的四个字段
+        $validatedData = $this->validationFactory->make(
+            $requireData,
+            [
+                'group_id' => 'required|string',
+                'group_name' => 'nullable|string',
+                'profile' => 'nullable|string',
+                'avatar' => 'nullable|string',
+            ],
+            [
+                'group_id.required' => '群ID不能为空',
+                // 'group_name.required' => '群名称不能为空',
+            ]
+        );
+
+        if ($validatedData->fails()) {
+            $errorMessage = $validatedData->errors()->first();
+            return Result::error($errorMessage);
+        }
+        $requireData['user_id'] = Context::get("UserId");
+        $result = $this->chatServiceClient->updateGroup($requireData);
+        return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
+    }
+    /**
+     * 获取商圈
+     * @return array
+     */
+    public function getTopicsList()
+    {
+        $requireData = $this->request->all();
+        $validator = $this->validationFactory->make(
+            $requireData,
+            [
+                'page' => 'required|integer',
+                'page_size' => 'required|integer',
+            ],
+            [
+                'page.required' => '页码不能为空',
+                'page_size.required' => '每页数量不能为空',
+            ]
+        );
+        if ($validator->fails()) {
+            $errorMessage = $validator->errors()->first();
+            return Result::error($errorMessage);
+        }
+        $requireData['user_id'] = Context::get("UserId");
+        $result = $this->chatServiceClient->getTopicsList($requireData);
+        return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
+    }
+    /**
+     * 新增话题商圈
+     * @return array
+     */
+    public function addTopic()
+    {
+        $requireData = $this->request->all();
+        $validator = $this->validationFactory->make(
+            $requireData,
+            [
+                'title' => 'required|string',
+                'type' => 'required|int',
+                'content' => 'required|string',
+            ],
+            [
+                'title.required' => '商圈名称不能为空',
+                'type.required' => '商圈类型不能为空',
+                'content.required' => '商圈内容不能为空',
+                'type.int' => '商圈类型只能是数字',
+                'content.string' => '商圈内容只能是字符串',
+                'title.string' => '商圈名称只能是字符串',
+            ]
+        );
+        if ($validator->fails()) {
+            $errorMessage = $validator->errors()->first();
+            return Result::error($errorMessage);
+        }
+        $requireData['user_id'] = Context::get("UserId");
+        $result = $this->chatServiceClient->addTopic($requireData);
+        return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
+    }
+    /**
+     * 更新话题商圈
+     * @return array
+     */
+    public function updateTopic()
+    {
+        $requireData = $this->request->all();
+        $validator = $this->validationFactory->make(
+            $requireData,
+            [
+                'id' => 'required|string',
+                // 'status' => 'required|integer',
+            ],
+            [
+                'topic_id.required' => '商圈ID不能为空',
+                // 'status.required' => '商圈状态不能为空',
+            ]
+        );
+        if ($validator->fails()) {
+            $errorMessage = $validator->errors()->first();
+            return Result::error($errorMessage);
+        }
+        $requireData['user_id'] = Context::get("UserId");
+        $result = $this->chatServiceClient->updateTopic($requireData);
+        return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
+    }
+    /**
+     * 删除话题商圈
+     * @return array
+     */
+    public function delTopic()
+    {
+        $requireData = $this->request->all();
+        $validator = $this->validationFactory->make(
+            $requireData,
+            [
+                'id' => 'required|string',
+            ],
+            [
+                'id.required' => '商圈ID不能为空',
+            ]
+        );
+        if ($validator->fails()) {
+            $errorMessage = $validator->errors()->first();
+            return Result::error($errorMessage);
+        }
+        $requireData['user_id'] = Context::get("UserId");
+        $result = $this->chatServiceClient->delTopic($requireData);
+        return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
+    }
+    /**
+     * 获取商圈详情
+     * @return array
+     */
+    public function getTopicInfo()
+    {
+        $requireData = $this->request->all();
+        $validator = $this->validationFactory->make(
+            $requireData,
+            [
+                'id' => 'required|string',
+            ],
+            [
+                'id.required' => '商圈ID不能为空',
+            ]
+        );
+        if ($validator->fails()) {
+            $errorMessage = $validator->errors()->first();
+            return Result::error($errorMessage);
+        }
+        $requireData['user_id'] = Context::get("UserId");
+        $result = $this->chatServiceClient->getTopicInfo($requireData);
+        return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
+    }
+    /**
+     * 获取商圈回复
+     * @return array
+     */
+    public function addReply()
+    {
+        $requireData = $this->request->all();
+        $validator = $this->validationFactory->make(
+            $requireData,
+            [
+                'id' => 'required|string',
+                'content' => 'required|string',
+            ],
+            [
+                'id.required' => '商圈ID不能为空',
+                'content.required' => '回复内容不能为空',
+            ]
+        );
+        if ($validator->fails()) {
+            $errorMessage = $validator->errors()->first();
+            return Result::error($errorMessage);
+        }
+        $requireData['user_id'] = Context::get("UserId");
+        $result = $this->chatServiceClient->addReply($requireData);
+        return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
+    }
+    /**
+     * 获取商圈评论
+     * @return array
+     */
+    public function getTopicReply()
+    {
+        $requireData = $this->request->all();
+        $validator = $this->validationFactory->make(
+            $requireData,
+            [
+                'id' => 'required|string',
+                'page' => 'required|integer',
+                'page_size' => 'required|integer',
+            ],
+            [
+                'id.required' => '商圈ID不能为空',
+                'page.required' => '页码不能为空',
+                'page_size.required' => '每页数量不能为空',
+            ]
+        );
+        if ($validator->fails()) {
+            $errorMessage = $validator->errors()->first();
+            return Result::error($errorMessage);
+        }
+        $requireData['user_id'] = Context::get("UserId");
+        $result = $this->chatServiceClient->getTopicReply($requireData);
+        return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
+    }
+    
+    
+    /**
+     * 获取 access_token
+     * @return array
+     */
+    public function getAccessToken()
+    {
+        $url = env("WECHAT") . "cgi-bin/token?appid=" . env("APPID") . "&secret=" . env("APP_SECRET") . "&grant_type=client_credential";
+        $result = PublicData::http_get($url);
+        $resultData = json_decode($result, true);
+        var_dump($url, $resultData);
+        if (isset($resultData['errcode'])) {
+            return Result::error($resultData['errmsg']);
+        }
+        return Result::success($resultData);
+    }
+    /**
+     * 删除一条聊天记录
+     * @return array
+     */
+    public function delRecords()
+    {
+        $requireData = $this->request->all();
+        $validator = $this->validationFactory->make(
+            $requireData,
+            [
+                'id' => 'required',
+            ],
+            [
+                'id.required' => '聊天记录ID不能为空',
+            ]
+        );
+        if ($validator->fails()) {
+            $errorMessage = $validator->errors()->first();
+        }
+        $requireData['user_id'] = Context::get("UserId");
+        $result = $this->chatServiceClient->delRecords($requireData);
+        return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
+    }
+    /**
+     * 删除所有聊天记录
+     * @return array
+     */
+    public function clearRecords()
+    {
+        $requireData = $this->request->all();
+        $validator = $this->validationFactory->make(
+            $requireData,
+            [
+                'friend_id' => 'required',
+            ],
+            [
+                'friend_id.required' => '聊天记录ID不能为空',
+            ]
+        );
+        if ($validator->fails()) {
+            $errorMessage =$validator->errors()->first();
+        }
+        $requireData['user_id'] = Context::get("UserId");
+        $result = $this->chatServiceClient->clearRecords($requireData);
+        return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
+    }
+    /**
+     * 删除群聊记录
+     * @return array
+     */
+    public function clearGroupRecords()
+    {
+        $requireData = $this->request->all();
+        $validator = $this->validationFactory->make(
+            $requireData,
+            [
+                'id' => 'required',
+            ],
+            [
+                'id.required' => '聊天记录ID不能为空',
+            ]
+        );
+        if ($validator->fails()) {
+            $errorMessage= $validator->errors()->first();
+        }
+        $requireData['user_id'] = Context::get("UserId");
+        $result = $this->chatServiceClient->clearGroupRecords($requireData);
+        return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
+    }
+    /**
+     * 撤回一条聊天记录
+     * @return array
+     */
+    public function recallRecord()
+    { 
+
+        $webSocketController = ApplicationContext::getContainer()->get(WebSocketController::class);
+        $frame = new Frame();
+        $frame->fd = 1; // 替换为实际的客户端 fd
+        $frame->data = json_encode([
+            'talk_type' => 1,
+            'receiver_id' => 2, // 接收者 ID
+            'content' => 'Hello, this is a test message!'
+        ]);
+    
+        $webSocketController->send(1, 'Hello, World!');
+        return Result::success('');
+    
+        $requireData = $this->request->all();
+        $validator = $this->validationFactory->make(
+            $requireData,
+            [
+                'content' => 'required',
+            ],
+            [
+                'content.required' => '聊天记录不能为空',
+            ]
+        );
+        $requireData['user_id'] = Context::get("UserId");
+        if ($validator->fails()) {
+            $errorMessage = $validator->errors()->first();
+        }
+        //接入websocket,发送撤回消息
+        $redisClient = new RedisService();
+        $fd = $redisClient->findFd((int) 32);
+        $maxRetries = 1;
+        $retryCount = 0;
+        $interval = 1; // 秒
+        while ($retryCount < $maxRetries) {
+            $response = $this->chatServiceClient->getRecordByContent($requireData);
+            // 如果成功,返回结果
+            if ($response['code'] === 0) {
+                if(!empty($response['data']['id'])){
+                    $records = $response['data'];
+                    foreach($records as $record){
+                        //判断 created_at 是否大于一分钟
+                        $createdAt = strtotime($record['created_at']);
+                        $currentTime = time();
+                        $timeDifference = $currentTime - $createdAt;
+                        if ($timeDifference > 60) {
+                             return Result::error('超过一分钟,无法撤回');
+                        }
+                    }
+                }
+                $result = $this->chatServiceClient->recallRecord($response['data']);
+                return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
+            }
+            // 如果失败,等待一段时间后重试
+            sleep($interval);
+            $retryCount++;
+        }
+        return Result::error('获取失败');
+    }
+    /**
+     * 获取一条信息
+     * @return array
+     */
+    public function getRecord()
+    {
+        $requireData = $this->request->all();
+        $validator = $this->validationFactory->make(
+            $requireData,
+            [
+                'id' => 'required',
+            ],
+            [
+                'id.required' => '聊天记录ID不能为空',
+            ]
+        );
+        if ($validator->fails()) {
+            $errorMessage= $validator->errors()->first();
+        }
+        $requireData['user_id'] = Context::get("UserId");
+        $result = $this->chatServiceClient->getRecord($requireData);
+            return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
+    }
+    /**
+     * 删除一条topicRely
+     * @return array
+     */
+    public function delReply()
+    {
+        $requireData = $this->request->all();
+        $validator = $this->validationFactory->make(
+            $requireData,
+            [
+                'id' => 'required',
+            ],
+            [
+                'id.required' => '回复ID不能为空',
+            ]
+        );
+        if ($validator->fails()) {
+            $errorMessage = $validator->errors()->first();
+        }
+        $requireData['user_id'] = Context::get("UserId");
+        $result = $this->chatServiceClient->delReply($requireData);
+        return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
+    }
+    /**
+     * 删除所有回复
+     * @return array
+     */
+    public function delAllReply()
+    {
+        $requireData = $this->request->all();
+        $validator = $this->validationFactory->make(
+            $requireData,
+            [
+                'topicid' => 'required',
+            ],
+            [
+                'topicid.required' => '回复ID不能为空',
+            ]
+        );
+        if ($validator->fails()) {
+            $errorMessage =$validator->errors()->first();
+        }
+        $requireData['user_id'] = Context::get("UserId");
+        $result = $this->chatServiceClient->delAllReply($requireData);
+        return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
+    }
+    /**
+     * 获取所有Topic
+     * @return array
+     */
+    public function getTopicsListAdmin()
+    {
+        $requireData = $this->request->all();
+        $validator = $this->validationFactory->make(
+            $requireData,
+            [
+                'page' => 'required',
+                'limit' => 'required',
+            ],
+            [
+                'page.required' => '页码不能为空',
+                'limit.required' => '每页数量不能为空',
+            ]
+        );
+        if ($validator->fails()) {
+            $errorMessage = $validator->errors()->first();
+        }
+        $requireData['user_id'] = Context::get("UserId");
+        $result = $this->chatServiceClient->getTopicsListAdmin($requireData);
+        return $result && $result['code'] != 0 ? Result::success($result['data']) : Result::error($result['message']);
+    }
+    
+}

+ 5 - 1
app/Controller/CollectorController.php

@@ -484,7 +484,6 @@ class CollectorController extends AbstractController
                 break;
                 
         }
-
         if(isset($requireData['writer_class']) && $requireData['type'] == 2){
             $validator = $this->validationFactory->make(
                 $requireData,
@@ -500,6 +499,7 @@ class CollectorController extends AbstractController
                 return Result::error($errorMessage);
             }  
         }
+        
         if(isset($requireData['writer']) && $requireData['type'] != 3){
             $validator = $this->validationFactory->make(
                 $requireData,
@@ -602,12 +602,14 @@ class CollectorController extends AbstractController
                 'page.required' => '第几页不能为空'
             ]
         ); 
+
         if ($validator->fails()) {
             $errorMessage = $validator->errors()->first();
             return Result::error($errorMessage);
         }
         $result = $this->collectorServiceClient->getInfo($requireData);        
         return $result['code']==200?Result::success($result['data']):Result::error($result['message']);
+        
     }
 
     /**
@@ -641,6 +643,7 @@ class CollectorController extends AbstractController
     {
         $requireData = $this->request->all();
         $validator = $this->validationFactory->make(
+
             $requireData,
             [
                 'art_id' => 'required',
@@ -660,6 +663,7 @@ class CollectorController extends AbstractController
                 'is_original.required' => '原创不能为空',
                 'islink.required' => '外链不能为空'
             ]
+            
         ); 
         if ($validator->fails()) {
             $errorMessage = $validator->errors()->first();

+ 283 - 283
app/Controller/LoginController.php

@@ -1,283 +1,283 @@
-<?php
-declare (strict_types = 1);
-namespace App\Controller;
-
-use App\JsonRpc\UserServiceInterface;
-use App\Tools\CommonService;
-use App\Tools\PublicData;
-use App\Tools\Result;
-use function Hyperf\Support\env;
-use Hyperf\Di\Annotation\Inject;
-use Hyperf\HttpServer\Annotation\AutoController;
-use Hyperf\Validation\Contract\ValidatorFactoryInterface;
-use \Phper666\JWTAuth\JWT;
-
-/**
- * @AutoController()
- */
-class LoginController extends AbstractController
-{
-
-    #[Inject]
-    protected ValidatorFactoryInterface $validationFactory;
-
-    /**
-     * @var UserServiceInterface
-     */
-    #[Inject]
-    private $userServiceClient;
-    public function login(Jwt $jwt)
-    {
-        var_dump("我要登陆了");
-//        $this->logger->info("验证之前");
-
-        $reqData = $this->request->all();
-        $validator = $this->validationFactory->make(
-            $reqData,
-            [
-                'username' => 'required',
-                'password' => 'required',
-                'type' => 'required',
-            ],
-            [
-                'username.required' => '用户名不能为空',
-                'password.required' => '密码不能为空',
-                'type.required' => '登录方式必填',
-            ]
-        );
-
-        if ($validator->fails()) {
-            $errorMessage = $validator->errors()->first();
-            return Result::error($errorMessage);
-        }
-        $comm = new CommonService();
-        $ip = $comm->userIp();
-        $redis = $this->container->get(\Hyperf\Redis\Redis::class);
-        $code = $redis->get('code' . $ip);
-        if (empty($code)) {
-            return Result::error("验证码已过期");
-        }
-//        var_dump("验证码:", $code);
-        if (strtolower($code) != strtolower($reqData['captcha'])) {
-            return Result::error("验证码错误");
-        }
-        //$reqData
-        $where = [];
-        if ($reqData['type'] == 1) { //密码登录
-            $where = [
-                'user_name' => $reqData['username'],
-            ];
-        }
-//        $this->logger->info("验证之前");
-        $userInfos = $this->userServiceClient->verifyUserInfo($where);
-        if ($userInfos['code'] == 0) {
-            return Result::error("用户不存在");
-        }
-//        var_dump("数据:",$userInfos);
-        if($userInfos['data']['status']==0){
-            return Result::error("用户已经冻结");
-        }
-//        var_dump("用户信息:", $userInfos);
-//        $this->logger->info("验证用户返回值:", $userInfos);
-        if (md5(md5($reqData['password']) . $userInfos['data']['salt']) != $userInfos['data']['password']) {
-            return Result::error("登陆密码错误");
-        }
-        $userData = [
-            'uid' => $userInfos['data']['id'], // 如果使用单点登录,必须存在配置文件中的sso_key的值,一般设置为用户的id
-            'user_name' => $userInfos['data']['user_name'],
-            'mobile' => $userInfos['data']['mobile'],
-            'email' => $userInfos['data']['email'],
-            // 'rong_token' => $userInfos['data']['rong_token'],
-            'level_id' => $userInfos['data']['level_id'],
-            'type_id' => $userInfos['data']['type_id'],
-        ];
-//        var_dump($userData);
-        // 使用默认场景登录
-        $token = $jwt->getToken('default', $userData);
-        $data = [
-            'token' => $token->toString(),
-            'exp' => $jwt->getTTL($token->toString()),
-        ];
-        return Result::success($data);
-    }
-
-    /**
-     * @return void
-     */
-    public function checkVerifyCode(Jwt $jwt)
-    {
-        //其它信息暂时不管 先以openid
-        $reqData = $this->request->all();
-        $validator = $this->validationFactory->make(
-            $reqData,
-            [
-                'token' => 'required',
-            ],
-            [
-                'token.required' => 'token不能为空',
-            ]
-        );
-        if ($validator->fails()) {
-            $errorMessage = $validator->errors()->first();
-            return Result::error($errorMessage);
-        }
-        $userInfo = $jwt->getClaimsByToken($reqData['token']);
-        if ($userInfo) {
-            return Result::success(['token' => $reqData['token']]);
-        } else {
-            return Result::error("token无效");
-        }
-    }
-    /**
-     * 注册或登陆
-     * @return void
-     */
-    public function registerOrLogin(Jwt $jwt)
-    {
-        //获取access_token
-        $reqData = $this->request->all();
-        $validator = $this->validationFactory->make(
-            $reqData,
-            [
-                'code' => 'required',
-            ],
-            [
-                'code.required' => 'code不能为空',
-            ]
-        );
-
-        if ($validator->fails()) {
-            $errorMessage = $validator->errors()->first();
-            return Result::error($errorMessage);
-        }
-
-        $url = env("WECHAT") . "cgi-bin/token?appid=" . env("APPID") . "&secret=" . env("APP_SECRET") . "&grant_type=client_credential";
-        $result = PublicData::http_get($url);
-        $accessTokenData = json_decode($result, true);
-        //获取openid
-        $url = env("WECHAT") . "sns/jscode2session?appid=" . env("APPID") . "&secret=" . env("APP_SECRET") . "&js_code=" . $reqData['loginCode'] . "&grant_type=authorization_code";
-        $result = PublicData::http_get($url);
-        $openInfoData = json_decode($result, true);
-        if (isset($openInfoData['errcode']) && in_array($openInfoData['errcode'], [40163, 40029])) {
-            return Result::error($openInfoData['errmsg']);
-        }
-        $data = [
-            'code' => $reqData['code'],
-            'openid' => $openInfoData['openid'],
-        ];
-        // 将数组转换为JSON字符串
-        $jsonData = json_encode($data);
-        // 初始化cURL会话
-        $ch = curl_init(env("WECHAT") . "wxa/business/getuserphonenumber?access_token=" . $accessTokenData['access_token']);
-
-        // 设置cURL选项 Todo 这里有一万个wc 封装成post方法就报错,后期再研究
-        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
-        curl_setopt($ch, CURLOPT_POST, true);
-        curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonData);
-        curl_setopt($ch, CURLOPT_HTTPHEADER, [
-            'Content-Type: application/json',
-            'Content-Length: ' . strlen($jsonData),
-        ]);
-        // 执行cURL会话
-        $response = curl_exec($ch);
-        // 检查是否有错误发生
-        if (curl_errno($ch)) {
-            return Result::error("获取手机号失败");
-        }
-        // 关闭cURL会话
-        curl_close($ch);
-        $response = json_decode($response, true);
-        if ($response['errcode'] == '40029') {
-            return Result::error($openInfoData['errmsg']);
-        }
-        // 打印响应内容
-        var_dump($openInfoData, $response);
-        //根据openid 获取token
-
-        $checkUserInfo = $this->userServiceClient->verifyUserInfo([
-            'user_name' => $response['phone_info']['purePhoneNumber'],
-        ]);
-        if ($checkUserInfo['code'] == 0) {
-            $salt = rand(1, 999999);
-            $createUserData = [
-                'user_name' => $response['phone_info']['purePhoneNumber'],
-                'salt' => $salt,
-                'password' => $openInfoData['openid'],
-                'type_id' => 20000,
-            ];
-            $checkUserInfo = $this->userServiceClient->createUser($createUserData);
-        }
-        //根据openid和手机号判断是否注册,未注册直接注册
-        $wechatReqData = [
-            'openid' => $openInfoData['openid'],
-            'purePhoneNumber' => $response['phone_info']['purePhoneNumber'],
-        ];
-        $wechatInfo = $this->userServiceClient->getWechatInfo($wechatReqData);
-        if ($wechatInfo['code'] == 0) {
-            $wechatData = [
-                'openid' => $openInfoData['openid'],
-                'phoneNumber' => $response['phone_info']['phoneNumber'],
-                'purePhoneNumber' => $response['phone_info']['purePhoneNumber'],
-                'countryCode' => $response['phone_info']['countryCode'],
-                'watermark' => json_encode($response['phone_info']['watermark']),
-                'user_id' => $checkUserInfo['data']['id'],
-            ];
-            $this->userServiceClient->addWechatInfo($wechatData);
-        }
-        var_dump($checkUserInfo);
-        $userData = [
-            'uid' => $checkUserInfo['data']['id'], // 如果使用单点登录,必须存在配置文件中的sso_key的值,一般设置为用户的id
-            'user_name' => $response['phone_info']['phoneNumber'],
-            'mobile' => $checkUserInfo['data']['mobile'] ?? '',
-            'email' => $checkUserInfo['data']['email'],
-//            'rong_token' => $userInfos['data']['rong_token'],
-            'level_id' => $checkUserInfo['data']['level_id'],
-            'type_id' => $checkUserInfo['data']['type_id'],
-        ];
-        // 使用默认场景登录
-        $token = $jwt->getToken('default', $userData);
-        $data = [
-            'token' => $token->toString(),
-            'exp' => $jwt->getTTL($token->toString()),
-        ];
-        return Result::success($data);
-
-    }
-    public function getToken(JWT $jwt)
-    {
-        $reqData = $this->request->all();
-        $userInfos = $this->userServiceClient->getUserInfo((int) $reqData['id']);
-        $userData = [
-            'uid' => $userInfos['data']['id'], // 如果使用单点登录,必须存在配置文件中的sso_key的值,一般设置为用户的id
-            'user_name' => $userInfos['data']['user_name'],
-            'mobile' => $userInfos['data']['mobile'],
-            'email' => $userInfos['data']['email'],
-
-            'level_id' => $userInfos['data']['level_id'],
-
-            'type_id' => $userInfos['data']['type_id'],
-
-        ];
-        var_dump($userInfos);
-        // 使用默认场景登录
-        $token = $jwt->getToken('default', $userData);
-
-        return Result::success($token->toString());
-    }
-
-    public function httpPost()
-    {
-
-    }
-    # http头部必须携带token才能访问的路由
-    public function getData(Jwt $jwt)
-    {
-//        var_dump($this->UserId);
-        $h = $this->request->getHeaders();
-//        var_dump($this->request->getHeaders());
-//        $a= 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJwaHBlcjY2Ni9qd3QiLCJ1aWQiOjMyLCJ1c2VyX25hbWUiOiIxIiwicm9sZV9pZCI6MSwibW9iaWxlIjoiMTU4MDEyNDU3NTUiLCJlbWFpbCI6IjVAcXEuY29tIiwicm9uZ190b2tlbiI6IiIsImxldmVsX2lkIjo4LCJqd3Rfc2NlbmUiOiJkZWZhdWx0IiwianRpIjoiZGVmYXVsdF82Njc1MjJkZDQ3YWYxMi41MTE5MjI5MiIsImlhdCI6MTcxODk1MjY2OSwibmJmIjoxNzE4OTUyNjY5LCJleHAiOjE3MjE1NDQ2Njl9.e0JW8fgNrwBdFgmQ8GNtES2ME1SbcbIih5MsQWzT6sk';
-        $arr = $jwt->getClaimsByToken($h['token'][0]);
-        var_dump($h['token'][0], "+++++++++++", $arr, "===####");
-        return $this->response->json(['code' => 0, 'msg' => 'success', 'data' => ['a' => 1]]);
-    }
-}
+<?php
+declare (strict_types = 1);
+namespace App\Controller;
+
+use App\JsonRpc\UserServiceInterface;
+use App\Tools\CommonService;
+use App\Tools\PublicData;
+use App\Tools\Result;
+use function Hyperf\Support\env;
+use Hyperf\Di\Annotation\Inject;
+use Hyperf\HttpServer\Annotation\AutoController;
+use Hyperf\Validation\Contract\ValidatorFactoryInterface;
+use \Phper666\JWTAuth\JWT;
+
+/**
+ * @AutoController()
+ */
+class LoginController extends AbstractController
+{
+
+    #[Inject]
+    protected ValidatorFactoryInterface $validationFactory;
+
+    /**
+     * @var UserServiceInterface
+     */
+    #[Inject]
+    private $userServiceClient;
+    public function login(Jwt $jwt)
+    {
+        var_dump("我要登陆了");
+//        $this->logger->info("验证之前");
+
+        $reqData = $this->request->all();
+        $validator = $this->validationFactory->make(
+            $reqData,
+            [
+                'username' => 'required',
+                'password' => 'required',
+                'type' => 'required',
+            ],
+            [
+                'username.required' => '用户名不能为空',
+                'password.required' => '密码不能为空',
+                'type.required' => '登录方式必填',
+            ]
+        );
+
+        if ($validator->fails()) {
+            $errorMessage = $validator->errors()->first();
+            return Result::error($errorMessage);
+        }
+        $comm = new CommonService();
+        $ip = $comm->userIp();
+        $redis = $this->container->get(\Hyperf\Redis\Redis::class);
+        $code = $redis->get('code' . $ip);
+        if (empty($code)) {
+            return Result::error("验证码已过期");
+        }
+//        var_dump("验证码:", $code);
+        if (strtolower($code) != strtolower($reqData['captcha'])) {
+            return Result::error("验证码错误");
+        }
+        //$reqData
+        $where = [];
+        if ($reqData['type'] == 1) { //密码登录
+            $where = [
+                'user_name' => $reqData['username'],
+            ];
+        }
+//        $this->logger->info("验证之前");
+        $userInfos = $this->userServiceClient->verifyUserInfo($where);
+        if ($userInfos['code'] == 0) {
+            return Result::error("用户不存在");
+        }
+//        var_dump("数据:",$userInfos);
+        if($userInfos['data']['status']==0){
+            return Result::error("用户已经冻结");
+        }
+//        var_dump("用户信息:", $userInfos);
+//        $this->logger->info("验证用户返回值:", $userInfos);
+        if (md5(md5($reqData['password']) . $userInfos['data']['salt']) != $userInfos['data']['password']) {
+            return Result::error("登陆密码错误");
+        }
+        $userData = [
+            'uid' => $userInfos['data']['id'], // 如果使用单点登录,必须存在配置文件中的sso_key的值,一般设置为用户的id
+            'user_name' => $userInfos['data']['user_name'],
+            'mobile' => $userInfos['data']['mobile'],
+            'email' => $userInfos['data']['email'],
+            // 'rong_token' => $userInfos['data']['rong_token'],
+            'level_id' => $userInfos['data']['level_id'],
+            'type_id' => $userInfos['data']['type_id'],
+        ];
+//        var_dump($userData);
+        // 使用默认场景登录
+        $token = $jwt->getToken('default', $userData);
+        $data = [
+            'token' => $token->toString(),
+            'exp' => $jwt->getTTL($token->toString()),
+        ];
+        return Result::success($data);
+    }
+
+    /**
+     * @return void
+     */
+    public function checkVerifyCode(Jwt $jwt)
+    {
+        //其它信息暂时不管 先以openid
+        $reqData = $this->request->all();
+        $validator = $this->validationFactory->make(
+            $reqData,
+            [
+                'token' => 'required',
+            ],
+            [
+                'token.required' => 'token不能为空',
+            ]
+        );
+        if ($validator->fails()) {
+            $errorMessage = $validator->errors()->first();
+            return Result::error($errorMessage);
+        }
+        $userInfo = $jwt->getClaimsByToken($reqData['token']);
+        if ($userInfo) {
+            return Result::success(['token' => $reqData['token']]);
+        } else {
+            return Result::error("token无效");
+        }
+    }
+    /**
+     * 注册或登陆
+     * @return void
+     */
+    public function registerOrLogin(Jwt $jwt)
+    {
+        //获取access_token
+        $reqData = $this->request->all();
+        $validator = $this->validationFactory->make(
+            $reqData,
+            [
+                'code' => 'required',
+            ],
+            [
+                'code.required' => 'code不能为空',
+            ]
+        );
+
+        if ($validator->fails()) {
+            $errorMessage = $validator->errors()->first();
+            return Result::error($errorMessage);
+        }
+
+        $url = env("WECHAT") . "cgi-bin/token?appid=" . env("APPID") . "&secret=" . env("APP_SECRET") . "&grant_type=client_credential";
+        $result = PublicData::http_get($url);
+        $accessTokenData = json_decode($result, true);
+        //获取openid
+        $url = env("WECHAT") . "sns/jscode2session?appid=" . env("APPID") . "&secret=" . env("APP_SECRET") . "&js_code=" . $reqData['loginCode'] . "&grant_type=authorization_code";
+        $result = PublicData::http_get($url);
+        $openInfoData = json_decode($result, true);
+        if (isset($openInfoData['errcode']) && in_array($openInfoData['errcode'], [40163, 40029])) {
+            return Result::error($openInfoData['errmsg']);
+        }
+        $data = [
+            'code' => $reqData['code'],
+            'openid' => $openInfoData['openid'],
+        ];
+        // 将数组转换为JSON字符串
+        $jsonData = json_encode($data);
+        // 初始化cURL会话
+        $ch = curl_init(env("WECHAT") . "wxa/business/getuserphonenumber?access_token=" . $accessTokenData['access_token']);
+
+        // 设置cURL选项 Todo 这里有一万个wc 封装成post方法就报错,后期再研究
+        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
+        curl_setopt($ch, CURLOPT_POST, true);
+        curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonData);
+        curl_setopt($ch, CURLOPT_HTTPHEADER, [
+            'Content-Type: application/json',
+            'Content-Length: ' . strlen($jsonData),
+        ]);
+        // 执行cURL会话
+        $response = curl_exec($ch);
+        // 检查是否有错误发生
+        if (curl_errno($ch)) {
+            return Result::error("获取手机号失败");
+        }
+        // 关闭cURL会话
+        curl_close($ch);
+        $response = json_decode($response, true);
+        if ($response['errcode'] == '40029') {
+            return Result::error($openInfoData['errmsg']);
+        }
+        // 打印响应内容
+        var_dump($openInfoData, $response);
+        //根据openid 获取token
+
+        $checkUserInfo = $this->userServiceClient->verifyUserInfo([
+            'user_name' => $response['phone_info']['purePhoneNumber'],
+        ]);
+        if ($checkUserInfo['code'] == 0) {
+            $salt = rand(1, 999999);
+            $createUserData = [
+                'user_name' => $response['phone_info']['purePhoneNumber'],
+                'salt' => $salt,
+                'password' => $openInfoData['openid'],
+                'type_id' => 20000,
+            ];
+            $checkUserInfo = $this->userServiceClient->createUser($createUserData);
+        }
+        //根据openid和手机号判断是否注册,未注册直接注册
+        $wechatReqData = [
+            'openid' => $openInfoData['openid'],
+            'purePhoneNumber' => $response['phone_info']['purePhoneNumber'],
+        ];
+        $wechatInfo = $this->userServiceClient->getWechatInfo($wechatReqData);
+        if ($wechatInfo['code'] == 0) {
+            $wechatData = [
+                'openid' => $openInfoData['openid'],
+                'phoneNumber' => $response['phone_info']['phoneNumber'],
+                'purePhoneNumber' => $response['phone_info']['purePhoneNumber'],
+                'countryCode' => $response['phone_info']['countryCode'],
+                'watermark' => json_encode($response['phone_info']['watermark']),
+                'user_id' => $checkUserInfo['data']['id'],
+            ];
+            $this->userServiceClient->addWechatInfo($wechatData);
+        }
+        var_dump($checkUserInfo);
+        $userData = [
+            'uid' => $checkUserInfo['data']['id'], // 如果使用单点登录,必须存在配置文件中的sso_key的值,一般设置为用户的id
+            'user_name' => $response['phone_info']['phoneNumber'],
+            'mobile' => $checkUserInfo['data']['mobile'] ?? '',
+            'email' => $checkUserInfo['data']['email'],
+//            'rong_token' => $userInfos['data']['rong_token'],
+            'level_id' => $checkUserInfo['data']['level_id'],
+            'type_id' => $checkUserInfo['data']['type_id'],
+        ];
+        // 使用默认场景登录
+        $token = $jwt->getToken('default', $userData);
+        $data = [
+            'token' => $token->toString(),
+            'exp' => $jwt->getTTL($token->toString()),
+        ];
+        return Result::success($data);
+
+    }
+    public function getToken(JWT $jwt)
+    {
+        $reqData = $this->request->all();
+        $userInfos = $this->userServiceClient->getUserInfo((int) $reqData['id']);
+        $userData = [
+            'uid' => $userInfos['data']['id'], // 如果使用单点登录,必须存在配置文件中的sso_key的值,一般设置为用户的id
+            'user_name' => $userInfos['data']['user_name'],
+            'mobile' => $userInfos['data']['mobile'],
+            'email' => $userInfos['data']['email'],
+
+            'level_id' => $userInfos['data']['level_id'],
+
+            'type_id' => $userInfos['data']['type_id'],
+
+        ];
+        var_dump($userInfos);
+        // 使用默认场景登录
+        $token = $jwt->getToken('default', $userData);
+
+        return Result::success($token->toString());
+    }
+
+    public function httpPost()
+    {
+
+    }
+    # http头部必须携带token才能访问的路由
+    public function getData(Jwt $jwt)
+    {
+//        var_dump($this->UserId);
+        $h = $this->request->getHeaders();
+//        var_dump($this->request->getHeaders());
+//        $a= 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJwaHBlcjY2Ni9qd3QiLCJ1aWQiOjMyLCJ1c2VyX25hbWUiOiIxIiwicm9sZV9pZCI6MSwibW9iaWxlIjoiMTU4MDEyNDU3NTUiLCJlbWFpbCI6IjVAcXEuY29tIiwicm9uZ190b2tlbiI6IiIsImxldmVsX2lkIjo4LCJqd3Rfc2NlbmUiOiJkZWZhdWx0IiwianRpIjoiZGVmYXVsdF82Njc1MjJkZDQ3YWYxMi41MTE5MjI5MiIsImlhdCI6MTcxODk1MjY2OSwibmJmIjoxNzE4OTUyNjY5LCJleHAiOjE3MjE1NDQ2Njl9.e0JW8fgNrwBdFgmQ8GNtES2ME1SbcbIih5MsQWzT6sk';
+        $arr = $jwt->getClaimsByToken($h['token'][0]);
+        var_dump($h['token'][0], "+++++++++++", $arr, "===####");
+        return $this->response->json(['code' => 0, 'msg' => 'success', 'data' => ['a' => 1]]);
+    }
+}

+ 98 - 2
app/Controller/OrderController.php

@@ -34,7 +34,7 @@ class OrderController extends AbstractController
     /***
      * 状态说明
      */
-
+    
     public function getStatus()
     {
 
@@ -54,8 +54,13 @@ class OrderController extends AbstractController
             6 => '待审核',
             7 => '已失效',
             8 => '投放中'
-        ];   
+        ];
+        $data['check'] = [
+            1 => '已通过',
+            2 => '已驳回',
+            6 => '待审核',
            
+        ];        
         return Result::success($data);
     }
     /**
@@ -471,4 +476,95 @@ class OrderController extends AbstractController
         $result = $this->orderServiceClient->delOrderAdmin($requireData);
         return $result['code'] == 200 ? Result::success($result['data']) : Result::error($result['message']);
     }
+
+
+    /**
+     * 用户创建购物车
+     */
+    public function addShoppingCart()
+    {
+        // return Result::success('ok');
+        $requireData['user_id'] = Context::get("UserId");
+        $result = $this->orderServiceClient->addShoppingCart($requireData);
+        // Result::success($result['data']);
+        return $result['code'] == 200 ? Result::success($result['data']) : Result::error($result['message']);
+    }
+    /**
+     * 用户添加购物车中的广告位
+     */
+    public function addShoppingCartAD()
+    {
+        $requireData = $this->request->all();
+        $validator = $this->validationFactory->make(
+            $requireData,
+            [
+                'shopping_id' =>'required|integer',
+                'pid' =>'required|integer'
+            ],
+            [
+                'shopping_id.required' => '购物订单id不能为空',
+                'shopping_id.integer' => '购物订单id格式不正确',
+                'pid.required' => '广告位id不能为空',
+                'pid.integer' => '广告位id格式不正确'
+            ]
+        );
+        if ($validator->fails()) {
+            $errorMessage = $validator->errors()->first();
+            return Result::error($errorMessage);
+        }
+        $requireData['user_id'] = Context::get("UserId");
+        $result = $this->orderServiceClient->addShoppingCartAD($requireData);
+        return $result['code'] == 200? Result::success($result['data']) : Result::error($result['message']);
+    }
+    /**
+     * 用户获取购物车中的广告位
+     */
+    public function getShoppingCartAD()
+    {
+        $requireData = $this->request->all();
+        $validator = $this->validationFactory->make(
+            $requireData,
+            [
+                'shopping_id' =>'required|integer'
+            ], 
+            [
+               'shopping_id.required' => '购物订单id不能为空',
+               'shopping_id.integer' => '购物订单id格式不正确'
+            ]
+        );
+        if ($validator->fails()) {
+            $errorMessage = $validator->errors()->first();
+            return Result::error($errorMessage); 
+        }
+        $requireData['user_id'] = Context::get("UserId");
+        $result = $this->orderServiceClient->getShoppingCartAD($requireData);
+        return $result['code'] == 200? Result::success($result['data']) : Result::error($result['message']);
+    }
+    /**
+     * 用户删除购物车中的广告位
+    */
+    public function delShoppingCartAD()
+    {
+        $requireData = $this->request->all();
+        $validator = $this->validationFactory->make(
+            $requireData,
+            [
+                'shopping_id' =>'required|integer',
+                'pid' =>'required|integer'
+            ],
+            [
+                'shopping_id.required' => '购物订单id不能为空',
+                'shopping_id.integer' => '购物订单id格式不正确',
+                'pid.required' => '广告位id不能为空',
+                'pid.integer' => '广告位id格式不正确', 
+            ] 
+        );
+        if ($validator->fails()) {
+            $errorMessage = $validator->errors()->first();
+            return Result::error($errorMessage); 
+        } 
+        $requireData['user_id'] = Context::get("UserId");
+        $result = $this->orderServiceClient->delShoppingCartAD($requireData);
+        return $result['code'] == 200? Result::success($result['data']) : Result::error($result['message']);
+    }
 }

+ 277 - 277
app/Controller/WebSocketController.php

@@ -1,277 +1,277 @@
-<?php
-declare (strict_types = 1);
-
-namespace App\Controller;
-
-use App\Amqp\Producer\MqProducer;
-use App\JsonRpc\ChatServiceInterface;
-use App\JsonRpc\UserServiceInterface;
-use App\Service\Message\ReceiveHandleService;
-use App\Service\RedisService;
-use Hyperf\Amqp\Producer;
-use Hyperf\Context\ApplicationContext as ContextApplicationContext;
-use Hyperf\Contract\OnCloseInterface;
-use Hyperf\Contract\OnMessageInterface;
-use Hyperf\Contract\OnOpenInterface;
-use Hyperf\Di\Annotation\Inject;
-use Hyperf\Engine\WebSocket\Response;
-use Phper666\JWTAuth\JWT;
-use swoole\Server;
-
-class WebSocketController implements OnMessageInterface, OnOpenInterface, OnCloseInterface
-{
-
-    #[Inject]
-    protected JWT $jwt;
-    /**
-     * @var ChatServiceInterface
-     */
-    #[Inject]
-    private $chatServiceClient;
-    /**
-     * @var UserServiceInterface
-     */
-    #[Inject]
-    private $userServiceClient;
-
-    /**
-     * @Inject
-     * @var ReceiveHandleService
-     */
-    protected $receiveHandle;
-    protected $server;
-
-    
-    public function onMessage($server, $frame): void
-    {
-        //把数据推给前端
-        $redisClient = new RedisService();
-        $userId = $redisClient->findUser((string) $frame->fd);
-        //存入队列
-        $result = json_decode($frame->data, true);
-        $result['user_id'] = $userId;
-        var_dump($result, '-------------1----');
-        $userInfo = $redisClient->getUserInfo((string) $userId);
-        if ($userInfo) {
-            $userInfoArr = json_decode($userInfo);
-            $result['user_avatar'] = $userInfoArr['avatar'];
-        } else {
-            $userInfos = $this->userServiceClient->getUserInfo((int) $userId);
-            $redisClient->setUserInfo($userId, $userInfos['data']);
-            $result['user_avatar'] = $userInfos['data']['avatar'];
-        }
-        $myFriends = $redisClient->getUserFriends((string) $userId);
-        $myFriendsArr = [];
-        if ($myFriends) {
-            $myFriendsArr = json_decode($myFriends);
-
-        } else {
-            $myFriends = $this->chatServiceClient->getFriendsList(['user_id' => $userId, 'status' => 2]);
-            $redisClient->setUserFriends($userId, $myFriends['data']);
-            $myFriendsArr = $myFriends['data'];
-        }
-        
-        //推送给前台
-        //组装数据+头像
-        if ($result['talk_type'] == 1) {
-            //判断$result['receiver_id']是否是好友
-        $myFriendsID = array_column($myFriendsArr, 'friend_id');
-        if (!in_array($result['receiver_id'], $myFriendsID)) {
-            $myFriends = $this->chatServiceClient->getFriendsList(['user_id' => $userId, 'status' => 2]);
-            $redisClient->setUserFriends($userId, $myFriends['data']);
-            $myFriendsArr = $myFriends['data'];
-                if (!in_array($result['receiver_id'], $myFriendsID)) {
-                    $result['content'] = '您还不是好友,无法发送消息!';
-                    $server->push((int) $frame->fd, json_encode($result));
-                }
-            return;
-        }
-            //给自己推一条数据
-            if ($server->isEstablished($frame->fd)) {
-                $result['is_read'] = 1;
-                $server->push((int) $frame->fd, json_encode($result));
-                // 尝试连接
-                try {
-                    $saiddata = $result;
-                    $saiddata['action'] = 'said';
-                    $message = new MqProducer($saiddata);
-                    $producer = ContextApplicationContext::getContainer()->get(Producer::class);
-                    $re = $producer->produce($message);
-                    var_dump('消息发送成功' . $frame->fd);
-                } catch (\Exception $e) {
-                    var_dump('消息发送失败: ' . $e->getMessage());
-                    $this->retry($message);
-                }
-            } else {
-                //给自己发一条未读消息
-                try {
-                    $saiddata = $result;
-                    $saiddata['action'] = 'said';
-                    $saiddata['is_read'] = 0;
-                    $message = new MqProducer($saiddata);
-                    $producer = ContextApplicationContext::getContainer()->get(Producer::class);
-                    $re = $producer->produce($message);
-                    var_dump('消息发送成功' . $frame->fd);
-                } catch (\Exception $e) {
-                    var_dump('消息发送失败: ' . $e->getMessage());
-                    $this->retry($message);
-                }
-            }
-            //给好友推送消息
-            $fd = $redisClient->findFd((int) $result['receiver_id']);
-            if ($server->isEstablished((int) $fd)) {
-                $data = $result;
-
-                $data['is_read'] = 1;
-                $server->push((int) $fd, json_encode(value: $data));
-                var_dump('消息给好友发送成功' . $fd);
-                // 尝试连接
-                try {
-                    $chatdata = $result;
-                    $chatdata['action'] = 'recieved';
-                    $chatdata['receiver_id'] = $result['user_id'];
-                    $chatdata['user_id'] = $result['receiver_id'];
-                    $message = new MqProducer($chatdata);
-                    $producer = ContextApplicationContext::getContainer()->get(Producer::class);
-                    $re = $producer->produce($message);
-                    var_dump('消息发送成功');
-                } catch (\Exception $e) {
-                    var_dump('消息发送失败: ' . $e->getMessage());
-                    $this->retry($message);
-                }
-            } else {
-                try {
-                    $chatdata = $result;
-                    $chatdata['action'] = 'recieved';
-                    $chatdata['receiver_id'] = $result['user_id'];
-                    $chatdata['user_id'] = $result['receiver_id'];
-                    $chatdata['is_read'] = 0;
-                    $message = new MqProducer($chatdata);
-                    $producer = ContextApplicationContext::getContainer()->get(Producer::class);
-                    $re = $producer->produce($message);
-                    var_dump('消息发送成功');
-                } catch (\Exception $e) {
-                    var_dump('消息发送失败: ' . $e->getMessage());
-                    $this->retry($message);
-                }
-            }
-        } else if ($result['talk_type'] == 2) {
-            //根据群找到 群用户,群发一遍消息
-            $groupUserList = $this->chatServiceClient->getGroupMembers(['group_id' => $result['receiver_id']]);
-            var_dump($groupUserList['data'],'----------------------------------');
-            if ($groupUserList['data']) {
-                $chatdata = $result;
-                foreach ($groupUserList['data'] as $val) {
-                    $fd = $redisClient->findFd((int) $val['user_id']);
-                    if ($server->isEstablished((int) $fd)) {
-                        var_dump($fd, $val['user_id']);
-                        $server->push((int) $fd, json_encode($result));
-                        try {
-                            //分发说,只记录自己对自己
-                            if ($result['user_id'] == $val['user_id']) {
-                                $chatdata['receiver_id'] = $result['receiver_id'];
-                                $chatdata['user_id'] = $result['user_id'];
-                                $chatdata['group_receiver_id'] = $val['user_id'];
-                                $chatdata['is_read'] = 1;
-                                $chatdata['action'] = 'said';
-                                $message = new MqProducer($chatdata);
-                                $producer = ContextApplicationContext::getContainer()->get(Producer::class);
-                                $re = $producer->produce($message);
-                            }
-                            //分发接收,不记录自己
-                            if ($chatdata['user_id'] != $val['user_id']) {
-                                $chatdata['receiver_id'] = $result['receiver_id'];
-                                $chatdata['user_id'] = $val['user_id'];
-                                $chatdata['group_receiver_id'] = $result['user_id'];
-                                $chatdata['is_read'] = 1;
-                                $chatdata['action'] = 'recieved';
-                                $message = new MqProducer($chatdata);
-                                $producer = ContextApplicationContext::getContainer()->get(Producer::class);
-                                $re = $producer->produce($message);
-                                var_dump('消息发送成功');
-                            }
-                        } catch (\Exception $e) {
-                            var_dump('消息发送失败: ' . $e->getMessage());
-                        }
-                    } else {
-                        try {
-                            //分发说,只记录自己对自己
-                            if ($result['user_id'] == $val['user_id']) {
-                                $chatdata['receiver_id'] = $result['receiver_id'];
-                                $chatdata['user_id'] = $result['user_id'];
-                                $chatdata['group_receiver_id'] = $val['user_id'];
-                                $chatdata['is_read'] = 0;
-                                $chatdata['action'] = 'said';
-                                $message = new MqProducer($chatdata);
-                                $producer = ContextApplicationContext::getContainer()->get(Producer::class);
-                                $re = $producer->produce($message);
-                            }
-                            //分发接收,不记录自己
-                            if ($chatdata['user_id'] != $val['user_id']) {
-                                $chatdata['receiver_id'] = $result['receiver_id'];
-                                $chatdata['user_id'] = $val['user_id'];
-                                $chatdata['group_receiver_id'] = $result['user_id'];
-                                $chatdata['is_read'] = 0;
-                                $chatdata['action'] = 'recieved';
-                                $message = new MqProducer($chatdata);
-                                $producer = ContextApplicationContext::getContainer()->get(Producer::class);
-                                $re = $producer->produce($message);
-                                var_dump('消息发送成功');
-                            }
-                        } catch (\Exception $e) {
-                            var_dump('消息发送失败: ' . $e->getMessage());
-                        }
-                    }
-                }
-            }
-        }
-    }
-    public function retry($message): void
-    {
-        $maxRetries = 10; // 最大重试次数
-        $retryCount = 0;
-        while ($retryCount < $maxRetries) {
-            try {
-                $producer = ContextApplicationContext::getContainer()->get(Producer::class);
-                $re = $producer->produce($message);
-                var_dump('重试消息发送成功');
-                break;
-            } catch (\Exception $e) {
-                $retryCount++;
-                if ($retryCount >= $maxRetries) {
-                    var_dump('达到最大重试次数,消息发送失败: ' . $e->getMessage());
-                } else {
-                    var_dump('第 ' . $retryCount . ' 次重试失败: ' . $e->getMessage());
-                }
-            }
-        }
-    }
-    public function onClose($server, int $fd, int $reactorId): void
-    {
-        var_dump('closed::::::::::::::::::', $fd, "======", $reactorId, "+++++++++++");
-        $redisClient = new RedisService();
-        $userId = $redisClient->findUser((string) $fd);
-        $redisClient->unbind((string) $fd, (int) $userId);
-    }
-    public function onOpen($server, $request): void
-    {
-        $token = $request->get['token'];
-        $userInfo = $this->jwt->getClaimsByToken($token);
-        $response = (new Response($server))->init($request);
-        $fd = $response->getFd();
-        $server->bind($fd, $userInfo['uid']);
-        $redisClient = new RedisService();
-        $redisClient->bind((string) $fd, $userInfo['uid']);
-        $server->push($request->fd, json_encode([
-            "event" => "connect",
-            "content" => [
-                "ping_interval" => 20,
-                "ping_timeout" => 20 * 3,
-                "content" => "连接成功",
-                "fd" => $fd,
-                "user_id" => $userInfo['uid'],
-            ],
-        ]));
-    }
-
-}
+<?php
+declare (strict_types = 1);
+
+namespace App\Controller;
+
+use App\Amqp\Producer\MqProducer;
+use App\JsonRpc\ChatServiceInterface;
+use App\JsonRpc\UserServiceInterface;
+use App\Service\Message\ReceiveHandleService;
+use App\Service\RedisService;
+use Hyperf\Amqp\Producer;
+use Hyperf\Context\ApplicationContext as ContextApplicationContext;
+use Hyperf\Contract\OnCloseInterface;
+use Hyperf\Contract\OnMessageInterface;
+use Hyperf\Contract\OnOpenInterface;
+use Hyperf\Di\Annotation\Inject;
+use Hyperf\Engine\WebSocket\Response;
+use Phper666\JWTAuth\JWT;
+use swoole\Server;
+
+class WebSocketController implements OnMessageInterface, OnOpenInterface, OnCloseInterface
+{
+
+    #[Inject]
+    protected JWT $jwt;
+    /**
+     * @var ChatServiceInterface
+     */
+    #[Inject]
+    private $chatServiceClient;
+    /**
+     * @var UserServiceInterface
+     */
+    #[Inject]
+    private $userServiceClient;
+
+    /**
+     * @Inject
+     * @var ReceiveHandleService
+     */
+    protected $receiveHandle;
+    protected $server;
+
+    
+    public function onMessage($server, $frame): void
+    {
+        //把数据推给前端
+        $redisClient = new RedisService();
+        $userId = $redisClient->findUser((string) $frame->fd);
+        //存入队列
+        $result = json_decode($frame->data, true);
+        $result['user_id'] = $userId;
+        var_dump($result, '-------------1----');
+        $userInfo = $redisClient->getUserInfo((string) $userId);
+        if ($userInfo) {
+            $userInfoArr = json_decode($userInfo);
+            $result['user_avatar'] = $userInfoArr['avatar'];
+        } else {
+            $userInfos = $this->userServiceClient->getUserInfo((int) $userId);
+            $redisClient->setUserInfo($userId, $userInfos['data']);
+            $result['user_avatar'] = $userInfos['data']['avatar'];
+        }
+        $myFriends = $redisClient->getUserFriends((string) $userId);
+        $myFriendsArr = [];
+        if ($myFriends) {
+            $myFriendsArr = json_decode($myFriends);
+
+        } else {
+            $myFriends = $this->chatServiceClient->getFriendsList(['user_id' => $userId, 'status' => 2]);
+            $redisClient->setUserFriends($userId, $myFriends['data']);
+            $myFriendsArr = $myFriends['data'];
+        }
+        
+        //推送给前台
+        //组装数据+头像
+        if ($result['talk_type'] == 1) {
+            //判断$result['receiver_id']是否是好友
+        $myFriendsID = array_column($myFriendsArr, 'friend_id');
+        if (!in_array($result['receiver_id'], $myFriendsID)) {
+            $myFriends = $this->chatServiceClient->getFriendsList(['user_id' => $userId, 'status' => 2]);
+            $redisClient->setUserFriends($userId, $myFriends['data']);
+            $myFriendsArr = $myFriends['data'];
+                if (!in_array($result['receiver_id'], $myFriendsID)) {
+                    $result['content'] = '您还不是好友,无法发送消息!';
+                    $server->push((int) $frame->fd, json_encode($result));
+                }
+            return;
+        }
+            //给自己推一条数据
+            if ($server->isEstablished($frame->fd)) {
+                $result['is_read'] = 1;
+                $server->push((int) $frame->fd, json_encode($result));
+                // 尝试连接
+                try {
+                    $saiddata = $result;
+                    $saiddata['action'] = 'said';
+                    $message = new MqProducer($saiddata);
+                    $producer = ContextApplicationContext::getContainer()->get(Producer::class);
+                    $re = $producer->produce($message);
+                    var_dump('消息发送成功' . $frame->fd);
+                } catch (\Exception $e) {
+                    var_dump('消息发送失败: ' . $e->getMessage());
+                    $this->retry($message);
+                }
+            } else {
+                //给自己发一条未读消息
+                try {
+                    $saiddata = $result;
+                    $saiddata['action'] = 'said';
+                    $saiddata['is_read'] = 0;
+                    $message = new MqProducer($saiddata);
+                    $producer = ContextApplicationContext::getContainer()->get(Producer::class);
+                    $re = $producer->produce($message);
+                    var_dump('消息发送成功' . $frame->fd);
+                } catch (\Exception $e) {
+                    var_dump('消息发送失败: ' . $e->getMessage());
+                    $this->retry($message);
+                }
+            }
+            //给好友推送消息
+            $fd = $redisClient->findFd((int) $result['receiver_id']);
+            if ($server->isEstablished((int) $fd)) {
+                $data = $result;
+
+                $data['is_read'] = 1;
+                $server->push((int) $fd, json_encode(value: $data));
+                var_dump('消息给好友发送成功' . $fd);
+                // 尝试连接
+                try {
+                    $chatdata = $result;
+                    $chatdata['action'] = 'recieved';
+                    $chatdata['receiver_id'] = $result['user_id'];
+                    $chatdata['user_id'] = $result['receiver_id'];
+                    $message = new MqProducer($chatdata);
+                    $producer = ContextApplicationContext::getContainer()->get(Producer::class);
+                    $re = $producer->produce($message);
+                    var_dump('消息发送成功');
+                } catch (\Exception $e) {
+                    var_dump('消息发送失败: ' . $e->getMessage());
+                    $this->retry($message);
+                }
+            } else {
+                try {
+                    $chatdata = $result;
+                    $chatdata['action'] = 'recieved';
+                    $chatdata['receiver_id'] = $result['user_id'];
+                    $chatdata['user_id'] = $result['receiver_id'];
+                    $chatdata['is_read'] = 0;
+                    $message = new MqProducer($chatdata);
+                    $producer = ContextApplicationContext::getContainer()->get(Producer::class);
+                    $re = $producer->produce($message);
+                    var_dump('消息发送成功');
+                } catch (\Exception $e) {
+                    var_dump('消息发送失败: ' . $e->getMessage());
+                    $this->retry($message);
+                }
+            }
+        } else if ($result['talk_type'] == 2) {
+            //根据群找到 群用户,群发一遍消息
+            $groupUserList = $this->chatServiceClient->getGroupMembers(['group_id' => $result['receiver_id']]);
+            var_dump($groupUserList['data'],'----------------------------------');
+            if ($groupUserList['data']) {
+                $chatdata = $result;
+                foreach ($groupUserList['data'] as $val) {
+                    $fd = $redisClient->findFd((int) $val['user_id']);
+                    if ($server->isEstablished((int) $fd)) {
+                        var_dump($fd, $val['user_id']);
+                        $server->push((int) $fd, json_encode($result));
+                        try {
+                            //分发说,只记录自己对自己
+                            if ($result['user_id'] == $val['user_id']) {
+                                $chatdata['receiver_id'] = $result['receiver_id'];
+                                $chatdata['user_id'] = $result['user_id'];
+                                $chatdata['group_receiver_id'] = $val['user_id'];
+                                $chatdata['is_read'] = 1;
+                                $chatdata['action'] = 'said';
+                                $message = new MqProducer($chatdata);
+                                $producer = ContextApplicationContext::getContainer()->get(Producer::class);
+                                $re = $producer->produce($message);
+                            }
+                            //分发接收,不记录自己
+                            if ($chatdata['user_id'] != $val['user_id']) {
+                                $chatdata['receiver_id'] = $result['receiver_id'];
+                                $chatdata['user_id'] = $val['user_id'];
+                                $chatdata['group_receiver_id'] = $result['user_id'];
+                                $chatdata['is_read'] = 1;
+                                $chatdata['action'] = 'recieved';
+                                $message = new MqProducer($chatdata);
+                                $producer = ContextApplicationContext::getContainer()->get(Producer::class);
+                                $re = $producer->produce($message);
+                                var_dump('消息发送成功');
+                            }
+                        } catch (\Exception $e) {
+                            var_dump('消息发送失败: ' . $e->getMessage());
+                        }
+                    } else {
+                        try {
+                            //分发说,只记录自己对自己
+                            if ($result['user_id'] == $val['user_id']) {
+                                $chatdata['receiver_id'] = $result['receiver_id'];
+                                $chatdata['user_id'] = $result['user_id'];
+                                $chatdata['group_receiver_id'] = $val['user_id'];
+                                $chatdata['is_read'] = 0;
+                                $chatdata['action'] = 'said';
+                                $message = new MqProducer($chatdata);
+                                $producer = ContextApplicationContext::getContainer()->get(Producer::class);
+                                $re = $producer->produce($message);
+                            }
+                            //分发接收,不记录自己
+                            if ($chatdata['user_id'] != $val['user_id']) {
+                                $chatdata['receiver_id'] = $result['receiver_id'];
+                                $chatdata['user_id'] = $val['user_id'];
+                                $chatdata['group_receiver_id'] = $result['user_id'];
+                                $chatdata['is_read'] = 0;
+                                $chatdata['action'] = 'recieved';
+                                $message = new MqProducer($chatdata);
+                                $producer = ContextApplicationContext::getContainer()->get(Producer::class);
+                                $re = $producer->produce($message);
+                                var_dump('消息发送成功');
+                            }
+                        } catch (\Exception $e) {
+                            var_dump('消息发送失败: ' . $e->getMessage());
+                        }
+                    }
+                }
+            }
+        }
+    }
+    public function retry($message): void
+    {
+        $maxRetries = 10; // 最大重试次数
+        $retryCount = 0;
+        while ($retryCount < $maxRetries) {
+            try {
+                $producer = ContextApplicationContext::getContainer()->get(Producer::class);
+                $re = $producer->produce($message);
+                var_dump('重试消息发送成功');
+                break;
+            } catch (\Exception $e) {
+                $retryCount++;
+                if ($retryCount >= $maxRetries) {
+                    var_dump('达到最大重试次数,消息发送失败: ' . $e->getMessage());
+                } else {
+                    var_dump('第 ' . $retryCount . ' 次重试失败: ' . $e->getMessage());
+                }
+            }
+        }
+    }
+    public function onClose($server, int $fd, int $reactorId): void
+    {
+        var_dump('closed::::::::::::::::::', $fd, "======", $reactorId, "+++++++++++");
+        $redisClient = new RedisService();
+        $userId = $redisClient->findUser((string) $fd);
+        $redisClient->unbind((string) $fd, (int) $userId);
+    }
+    public function onOpen($server, $request): void
+    {
+        $token = $request->get['token'];
+        $userInfo = $this->jwt->getClaimsByToken($token);
+        $response = (new Response($server))->init($request);
+        $fd = $response->getFd();
+        $server->bind($fd, $userInfo['uid']);
+        $redisClient = new RedisService();
+        $redisClient->bind((string) $fd, $userInfo['uid']);
+        $server->push($request->fd, json_encode([
+            "event" => "connect",
+            "content" => [
+                "ping_interval" => 20,
+                "ping_timeout" => 20 * 3,
+                "content" => "连接成功",
+                "fd" => $fd,
+                "user_id" => $userInfo['uid'],
+            ],
+        ]));
+    }
+
+}

+ 199 - 199
app/JsonRpc/ChatService.php

@@ -1,199 +1,199 @@
-<?php
-
-namespace App\JsonRpc;
-
-use Hyperf\RpcClient\AbstractServiceClient;
-
-class ChatService extends AbstractServiceClient implements ChatServiceInterface
-{
-    /**
-     * 定义对应服务提供者的服务名称
-     * @var string
-     */
-    protected string $serviceName = 'ChatService';
-    /**
-     * 定义对应服务提供者的服务协议
-     * @var string
-     */
-    protected string $protocol = 'jsonrpc-http';
-
-    /**
-     * 添加申请
-     * @param array $data
-     * @return mixed
-     */
-    public function addFriend(array $data): mixed
-    {
-        return $this->__request(__FUNCTION__, $data);
-    }
-    public function getFriendsList(array $data)
-    {
-        return $this->__request(__FUNCTION__, $data);
-    }
-    public function applyFriend(array $data)
-    {
-        return $this->__request(__FUNCTION__, $data);
-    }
-    public function delFriend(array $data)
-    {
-        return $this->__request(__FUNCTION__, $data);
-    }
-    public function getFriendInfo(array $data)
-    {
-        return $this->__request(__FUNCTION__, $data);
-    }
-    public function isFriend(array $data)
-    {
-        return $this->__request(__FUNCTION__, $data);
-    }
-    public function updateFriend(array $data)
-    {
-        return $this->__request(__FUNCTION__, $data);
-    }
-    public function searchFriend(array $data)
-    {
-        return $this->__request(__FUNCTION__, $data);
-    }
-    public function addChatRecords(array $data)
-    {
-        return $this->__request(__FUNCTION__, $data);
-    }
-    public function getChatRecords(array $data)
-    {
-        return $this->__request(__FUNCTION__, $data);
-    }
-
-    public function getConversation(array $data)
-    {
-        return $this->__request(__FUNCTION__, $data);
-    }
-    public function getGroupMembers(array $data)
-    {
-        return $this->__request(__FUNCTION__, $data);
-    }
-    public function getGroupInfo(array $data)
-    {
-        return $this->__request(__FUNCTION__, $data);
-    }
-    public function getGroupList(array $data)
-    {
-        return $this->__request(__FUNCTION__, $data);
-    }
-    public function addGroup(array $data)
-    {
-        return $this->__request(__FUNCTION__, $data);
-    }
-    public function addGroupMembers(array $data)
-    {
-        return $this->__request(__FUNCTION__, $data);
-    }
-    public function delGroupMember(array $data)
-    {
-        return $this->__request(__FUNCTION__, $data);
-    }
-    public function getChatGroupList(array $data)
-    {
-        return $this->__request(__FUNCTION__, $data);
-    }
-    public function getFriendsApplyList(array $data)
-    {
-        return $this->__request(__FUNCTION__, $data);
-    }
-    public function updateGroup(array $data)
-    {
-        return $this->__request(__FUNCTION__, $data);
-    }
-    public function quitGroup(array $data)
-    {
-        return $this->__request(__FUNCTION__, $data);
-    }
-    public function joinGroup(array $data)
-    {
-        return $this->__request(__FUNCTION__, $data);
-    }
-    public function getGroupApplyList(array $data)
-    {
-        return $this->__request(__FUNCTION__, $data);
-    }
-    public function delGroup(array $data)
-    {
-        return $this->__request(__FUNCTION__, $data);
-    }
-    public function delGroupMembers(array $data)
-    {
-        return $this->__request(__FUNCTION__, $data);
-    }
-
-    public function getGroupMemberInfo(array $data)
-    {
-        return $this->__request(__FUNCTION__, $data);
-    }
-    public function getTopicsList(array $data)
-    {
-        return $this->__request(__FUNCTION__, $data);
-    }
-    public function addTopic(array $data)
-    {
-        return $this->__request(__FUNCTION__, $data);
-    }
-    public function updateTopic(array $data)
-    {
-        return $this->__request(__FUNCTION__, $data);
-    }
-    public function delTopic(array $data)
-    {
-        return $this->__request(__FUNCTION__, $data);
-    }
-    public function getTopicInfo(array $data)
-    {
-        return $this->__request(__FUNCTION__, $data);
-    }
-    public function addReply(array $data)
-    {
-        return $this->__request(__FUNCTION__, $data);
-    }
-    public function getTopicReply(array $data)
-    {
-        return $this->__request(__FUNCTION__, $data);
-    }
-    public function getGroupChatRecords(array $data)
-    {
-        return $this->__request(__FUNCTION__, $data);
-    }
-    public function updateGroupMembers(array $data)
-    {
-        return $this->__request(__FUNCTION__, $data);
-    }
-    public function clearRecords(array $data)
-    {
-        return $this->__request(__FUNCTION__, $data);
-    }
-    public function recallRecord(array $data)
-    {
-        return $this->__request(__FUNCTION__, $data);
-    }
-    public function clearGroupRecords(array $data)
-    {
-        return $this->__request(__FUNCTION__, $data);
-    }
-    public function delRecords(array $data)
-    {
-        return $this->__request(__FUNCTION__, $data);
-    }
-    public function getRecord(array $data)
-    {
-        return $this->__request(__FUNCTION__, $data);
-    }
-    public function delReply(array $data)
-    {
-        return $this->__request(__FUNCTION__, $data);
-    }
-    public function delAllReply(array $data)
-    {
-        return $this->__request(__FUNCTION__, $data);
-    }
-    public function getTopicsListAdmin(array $data)
-    {
-        return $this->__request(__FUNCTION__, $data);
-    }
-}
+<?php
+
+namespace App\JsonRpc;
+
+use Hyperf\RpcClient\AbstractServiceClient;
+
+class ChatService extends AbstractServiceClient implements ChatServiceInterface
+{
+    /**
+     * 定义对应服务提供者的服务名称
+     * @var string
+     */
+    protected string $serviceName = 'ChatService';
+    /**
+     * 定义对应服务提供者的服务协议
+     * @var string
+     */
+    protected string $protocol = 'jsonrpc-http';
+
+    /**
+     * 添加申请
+     * @param array $data
+     * @return mixed
+     */
+    public function addFriend(array $data): mixed
+    {
+        return $this->__request(__FUNCTION__, $data);
+    }
+    public function getFriendsList(array $data)
+    {
+        return $this->__request(__FUNCTION__, $data);
+    }
+    public function applyFriend(array $data)
+    {
+        return $this->__request(__FUNCTION__, $data);
+    }
+    public function delFriend(array $data)
+    {
+        return $this->__request(__FUNCTION__, $data);
+    }
+    public function getFriendInfo(array $data)
+    {
+        return $this->__request(__FUNCTION__, $data);
+    }
+    public function isFriend(array $data)
+    {
+        return $this->__request(__FUNCTION__, $data);
+    }
+    public function updateFriend(array $data)
+    {
+        return $this->__request(__FUNCTION__, $data);
+    }
+    public function searchFriend(array $data)
+    {
+        return $this->__request(__FUNCTION__, $data);
+    }
+    public function addChatRecords(array $data)
+    {
+        return $this->__request(__FUNCTION__, $data);
+    }
+    public function getChatRecords(array $data)
+    {
+        return $this->__request(__FUNCTION__, $data);
+    }
+
+    public function getConversation(array $data)
+    {
+        return $this->__request(__FUNCTION__, $data);
+    }
+    public function getGroupMembers(array $data)
+    {
+        return $this->__request(__FUNCTION__, $data);
+    }
+    public function getGroupInfo(array $data)
+    {
+        return $this->__request(__FUNCTION__, $data);
+    }
+    public function getGroupList(array $data)
+    {
+        return $this->__request(__FUNCTION__, $data);
+    }
+    public function addGroup(array $data)
+    {
+        return $this->__request(__FUNCTION__, $data);
+    }
+    public function addGroupMembers(array $data)
+    {
+        return $this->__request(__FUNCTION__, $data);
+    }
+    public function delGroupMember(array $data)
+    {
+        return $this->__request(__FUNCTION__, $data);
+    }
+    public function getChatGroupList(array $data)
+    {
+        return $this->__request(__FUNCTION__, $data);
+    }
+    public function getFriendsApplyList(array $data)
+    {
+        return $this->__request(__FUNCTION__, $data);
+    }
+    public function updateGroup(array $data)
+    {
+        return $this->__request(__FUNCTION__, $data);
+    }
+    public function quitGroup(array $data)
+    {
+        return $this->__request(__FUNCTION__, $data);
+    }
+    public function joinGroup(array $data)
+    {
+        return $this->__request(__FUNCTION__, $data);
+    }
+    public function getGroupApplyList(array $data)
+    {
+        return $this->__request(__FUNCTION__, $data);
+    }
+    public function delGroup(array $data)
+    {
+        return $this->__request(__FUNCTION__, $data);
+    }
+    public function delGroupMembers(array $data)
+    {
+        return $this->__request(__FUNCTION__, $data);
+    }
+
+    public function getGroupMemberInfo(array $data)
+    {
+        return $this->__request(__FUNCTION__, $data);
+    }
+    public function getTopicsList(array $data)
+    {
+        return $this->__request(__FUNCTION__, $data);
+    }
+    public function addTopic(array $data)
+    {
+        return $this->__request(__FUNCTION__, $data);
+    }
+    public function updateTopic(array $data)
+    {
+        return $this->__request(__FUNCTION__, $data);
+    }
+    public function delTopic(array $data)
+    {
+        return $this->__request(__FUNCTION__, $data);
+    }
+    public function getTopicInfo(array $data)
+    {
+        return $this->__request(__FUNCTION__, $data);
+    }
+    public function addReply(array $data)
+    {
+        return $this->__request(__FUNCTION__, $data);
+    }
+    public function getTopicReply(array $data)
+    {
+        return $this->__request(__FUNCTION__, $data);
+    }
+    public function getGroupChatRecords(array $data)
+    {
+        return $this->__request(__FUNCTION__, $data);
+    }
+    public function updateGroupMembers(array $data)
+    {
+        return $this->__request(__FUNCTION__, $data);
+    }
+    public function clearRecords(array $data)
+    {
+        return $this->__request(__FUNCTION__, $data);
+    }
+    public function recallRecord(array $data)
+    {
+        return $this->__request(__FUNCTION__, $data);
+    }
+    public function clearGroupRecords(array $data)
+    {
+        return $this->__request(__FUNCTION__, $data);
+    }
+    public function delRecords(array $data)
+    {
+        return $this->__request(__FUNCTION__, $data);
+    }
+    public function getRecord(array $data)
+    {
+        return $this->__request(__FUNCTION__, $data);
+    }
+    public function delReply(array $data)
+    {
+        return $this->__request(__FUNCTION__, $data);
+    }
+    public function delAllReply(array $data)
+    {
+        return $this->__request(__FUNCTION__, $data);
+    }
+    public function getTopicsListAdmin(array $data)
+    {
+        return $this->__request(__FUNCTION__, $data);
+    }
+}

+ 52 - 52
app/JsonRpc/ChatServiceInterface.php

@@ -1,52 +1,52 @@
-<?php
-
-namespace App\JsonRpc;
-
-interface ChatServiceInterface
-{
-    /**
-     * 添加好友申请
-     * @param array $data
-     * @return array
-     */
-    public function addFriend(array $data);
-    public function getFriendsList(array $data);
-    public function applyFriend(array $data);
-    public function delFriend(array $data);
-    public function isFriend(array $data);
-    public function updateFriend(array $data);
-    public function searchFriend(array $data);
-    public function addChatRecords(array $data);
-    public function getConversation(array $data);
-    public function getChatRecords(array $data);
-    public function getGroupList(array $data);
-    public function getGroupInfo(array $data);
-    public function addGroup(array $data);
-    public function getGroupMembers(array $data);
-    public function getFriendsApplyList(array $data);
-    public function updateGroup(array $data);
-    public function delGroup(array $data);
-    public function quitGroup(array $data);
-    public function joinGroup(array $data);
-    public function delGroupMembers(array $data);
-    public function getFriendInfo(array $data);
-    public function getTopicsList(array $data);
-    public function addTopic(array $data);
-    public function updateTopic(array $data);
-    public function delTopic(array $data);
-    public function getTopicInfo(array $data);
-    public function addReply(array $data);
-    public function getTopicReply(array $data);
-    public function getGroupChatRecords(array $data);
-    public function updateGroupMembers(array $data);
-    public function clearRecords(array $data);
-    public function recallRecord(array $data);
-    public function clearGroupRecords(array $data);
-    public function delRecords(array $data);
-    public function getRecord(array $data);
-    public function getGroupApplyList(array $data);
-    public function delReply(array $data);
-    public function delAllReply(array $data);
-    public function getTopicsListAdmin(array $data);
-
-}
+<?php
+
+namespace App\JsonRpc;
+
+interface ChatServiceInterface
+{
+    /**
+     * 添加好友申请
+     * @param array $data
+     * @return array
+     */
+    public function addFriend(array $data);
+    public function getFriendsList(array $data);
+    public function applyFriend(array $data);
+    public function delFriend(array $data);
+    public function isFriend(array $data);
+    public function updateFriend(array $data);
+    public function searchFriend(array $data);
+    public function addChatRecords(array $data);
+    public function getConversation(array $data);
+    public function getChatRecords(array $data);
+    public function getGroupList(array $data);
+    public function getGroupInfo(array $data);
+    public function addGroup(array $data);
+    public function getGroupMembers(array $data);
+    public function getFriendsApplyList(array $data);
+    public function updateGroup(array $data);
+    public function delGroup(array $data);
+    public function quitGroup(array $data);
+    public function joinGroup(array $data);
+    public function delGroupMembers(array $data);
+    public function getFriendInfo(array $data);
+    public function getTopicsList(array $data);
+    public function addTopic(array $data);
+    public function updateTopic(array $data);
+    public function delTopic(array $data);
+    public function getTopicInfo(array $data);
+    public function addReply(array $data);
+    public function getTopicReply(array $data);
+    public function getGroupChatRecords(array $data);
+    public function updateGroupMembers(array $data);
+    public function clearRecords(array $data);
+    public function recallRecord(array $data);
+    public function clearGroupRecords(array $data);
+    public function delRecords(array $data);
+    public function getRecord(array $data);
+    public function getGroupApplyList(array $data);
+    public function delReply(array $data);
+    public function delAllReply(array $data);
+    public function getTopicsListAdmin(array $data);
+
+}

+ 27 - 2
app/JsonRpc/OrderService.php

@@ -106,11 +106,36 @@ class OrderService extends AbstractServiceClient implements OrderServiceInterfac
         return $this->__request(__FUNCTION__, $data);
     }
 
+    
     /**
      * @param array $data
-     * @return array|mixed
+     * @return mixed
+     */
+    public function addShoppingCart(array $data)
+    {
+        return $this->__request(__FUNCTION__, $data);
+    }
+    /**
+     * @param array $data
+     * @return mixed
+     */
+    public function getShoppingCartAD(array $data)
+    {
+        return $this->__request(__FUNCTION__, $data);
+    }
+    /**
+     * @param array $data
+     * @return mixed
+     */
+    public function addShoppingCartAD(array $data)
+    {
+        return $this->__request(__FUNCTION__, $data);
+    }
+    /**
+     * @param array $data
+     * @return mixed
      */
-    public function getPrice(array $data)
+    public function delShoppingCartAD(array $data)
     {
         return $this->__request(__FUNCTION__, $data);
     }

+ 17 - 0
app/JsonRpc/OrderServiceInterface.php

@@ -68,4 +68,21 @@ interface OrderServiceInterface
      */
     public function delOrderAD(array $data);
 
+    
+    /**
+     * @param array $data
+     */
+    public function addShoppingCart(array $data);
+    /**
+     * @param array $data
+     */
+    public function getShoppingCartAD(array $data);
+    /**
+     * @param array $data
+     */
+    public function addShoppingCartAD(array $data);
+    /**
+     * @param array $data
+     */
+    public function delShoppingCartAD(array $data);
 }

+ 28 - 28
app/Tools/Result.php

@@ -1,29 +1,29 @@
-<?php
-namespace App\Tools;
-use App\Constants\ErrorCode;
-class Result
-{
-    protected Request $request;
-    public static function success($data = [])
-    {
-        return static::result(ErrorCode::SUCCESS, ErrorCode::getMessage(ErrorCode::SUCCESS), $data);
-    }
-    public static function error($message = '', $code = ErrorCode::ERROR, $data = [])
-    {
-        if (empty($message)) {
-            return static::result($code, ErrorCode::getMessage($code), $data);
-        } else {
-            return static::result($code, $message, $data);
-        }
-    }
-    protected static function result($code, $message, $data)
-    {
-        return [
-            'code' => $code,
-            'message' => $message,
-            'data' => $data,
-        ];
-    }
-
-
+<?php
+namespace App\Tools;
+use App\Constants\ErrorCode;
+class Result
+{
+//    protected Request $request;
+    public static function success($data = [])
+    {
+        return static::result(ErrorCode::SUCCESS, ErrorCode::getMessage(ErrorCode::SUCCESS), $data);
+    }
+    public static function error($message = '', $code = ErrorCode::ERROR, $data = [])
+    {
+        if (empty($message)) {
+            return static::result($code, ErrorCode::getMessage($code), $data);
+        } else {
+            return static::result($code, $message, $data);
+        }
+    }
+    protected static function result($code, $message, $data)
+    {
+        return [
+            'code' => $code,
+            'message' => $message,
+            'data' => $data,
+        ];
+    }
+
+
 }

+ 0 - 1
composer.json

@@ -45,7 +45,6 @@
         "hyperf/service-governance-nacos": "^3.1",
         "hyperf/snowflake": "^3.1",
         "hyperf/translation": "^3.1",
-        "hyperf/utils": "^3.1",
         "hyperf/validation": "^3.1",
         "hyperf/websocket-server": "^3.1",
         "openai-php/client": "^0.10.3",

+ 0 - 3
composer.lock

@@ -2638,9 +2638,6 @@
             "extra": {
                 "hyperf": {
                     "config": "Hyperf\\Engine\\ConfigProvider"
-                },
-                "branch-alias": {
-                    "dev-master": "2.12-dev"
                 }
             },
             "autoload": {

+ 56 - 56
config/api/chat.php

@@ -1,56 +1,56 @@
-<?php
-
-declare (strict_types = 1);
-use App\Controller\ChatController;
-use App\Middleware\Auth\FooMiddleware;
-use Hyperf\HttpServer\Router\Router;
-
-Router::addGroup(
-    '/chat', function () {
-        Router::post('/addFriend', [ChatController::class, 'addFriend']);
-        Router::post('/getFriendsList', [ChatController::class, 'getFriendsList']);
-        Router::post('/getFriendsApplyList', [ChatController::class, 'getFriendsApplyList']);
-        Router::post('/applyFriend', [ChatController::class, 'applyFriend']);
-        Router::post('/delFriend', [ChatController::class, 'delFriend']);
-        Router::post('/isFriend', [ChatController::class, 'isFriend']);
-        Router::post('/updateFriend', [ChatController::class, 'updateFriend']);
-        Router::post('/searchFriend', [ChatController::class, 'searchFriend']);
-        Router::post('/getFriendInfo', [ChatController::class, 'getFriendInfo']);
-
-        Router::post('/getConversation', [ChatController::class, 'getConversation']);
-        Router::post('/getChatRecords', [ChatController::class, 'getChatRecords']);
-        Router::post('/getGroupChatRecords', [ChatController::class, 'getGroupChatRecords']);
-
-        Router::post('/delRecords', [ChatController::class, 'delRecords']);
-        Router::post('/clearRecords', [ChatController::class, 'clearRecords']);
-        Router::post('/clearGroupRecords', [ChatController::class, 'clearGroupRecords']);
-        Router::post('/recallRecord', [ChatController::class, 'recallRecord']);
-        Router::post('/getRecord', [ChatController::class, 'getRecord']);
-
-        Router::post('/getGroupMembers', [ChatController::class, 'getGroupMembers']);
-        Router::post('/getGroupInfo', [ChatController::class, 'getGroupInfo']);
-        Router::post('/getGroupList', [ChatController::class, 'getGroupList']);
-        Router::post('/addGroup', [ChatController::class, 'addGroup']); //创建群
-        Router::post('/delGroup', [ChatController::class, 'delGroup']);
-        Router::post('/updateGroup', [ChatController::class, 'updateGroup']);
-        Router::post('/quitGroup', [ChatController::class, 'quitGroup']);
-        Router::post('/joinGroup', [ChatController::class, 'joinGroup']);
-        Router::post('/updateGroupMembers', [ChatController::class, 'updateGroupMembers']);
-
-        Router::post('/getTopicsList', [ChatController::class, 'getTopicsList']);
-        Router::post('/addTopic', [ChatController::class, 'addTopic']);
-        Router::post('/updateTopic', [ChatController::class, 'updateTopic']);
-        Router::post('/delTopic', [ChatController::class, 'delTopic']);
-        Router::post('/getTopicInfo', [ChatController::class, 'getTopicInfo']);
-        Router::post('/addReply', [ChatController::class, 'addReply']);
-        Router::post('/getTopicReply', [ChatController::class, 'getTopicReply']);
-        Router::post('/topicType', [ChatController::class, 'topicType']);
-        Router::post('/topicStatus', [ChatController::class, 'topicStatus']);
-        Router::post('/delReply', [ChatController::class, 'delReply']);
-        Router::post('/delAllReply', [ChatController::class, 'delAllReply']);
-        Router::post('/getTopicsListAdmin', [ChatController::class, 'getTopicsListAdmin']);
-
-        Router::post('/uploadFile', [ChatController::class, 'uploadFile']);
-    },
-    ['middleware' => [FooMiddleware::class]]
-);
+<?php
+
+declare (strict_types = 1);
+use App\Controller\ChatController;
+use App\Middleware\Auth\FooMiddleware;
+use Hyperf\HttpServer\Router\Router;
+
+Router::addGroup(
+    '/chat', function () {
+        Router::post('/addFriend', [ChatController::class, 'addFriend']);
+        Router::post('/getFriendsList', [ChatController::class, 'getFriendsList']);
+        Router::post('/getFriendsApplyList', [ChatController::class, 'getFriendsApplyList']);
+        Router::post('/applyFriend', [ChatController::class, 'applyFriend']);
+        Router::post('/delFriend', [ChatController::class, 'delFriend']);
+        Router::post('/isFriend', [ChatController::class, 'isFriend']);
+        Router::post('/updateFriend', [ChatController::class, 'updateFriend']);
+        Router::post('/searchFriend', [ChatController::class, 'searchFriend']);
+        Router::post('/getFriendInfo', [ChatController::class, 'getFriendInfo']);
+
+        Router::post('/getConversation', [ChatController::class, 'getConversation']);
+        Router::post('/getChatRecords', [ChatController::class, 'getChatRecords']);
+        Router::post('/getGroupChatRecords', [ChatController::class, 'getGroupChatRecords']);
+
+        Router::post('/delRecords', [ChatController::class, 'delRecords']);
+        Router::post('/clearRecords', [ChatController::class, 'clearRecords']);
+        Router::post('/clearGroupRecords', [ChatController::class, 'clearGroupRecords']);
+        Router::post('/recallRecord', [ChatController::class, 'recallRecord']);
+        Router::post('/getRecord', [ChatController::class, 'getRecord']);
+
+        Router::post('/getGroupMembers', [ChatController::class, 'getGroupMembers']);
+        Router::post('/getGroupInfo', [ChatController::class, 'getGroupInfo']);
+        Router::post('/getGroupList', [ChatController::class, 'getGroupList']);
+        Router::post('/addGroup', [ChatController::class, 'addGroup']); //创建群
+        Router::post('/delGroup', [ChatController::class, 'delGroup']);
+        Router::post('/updateGroup', [ChatController::class, 'updateGroup']);
+        Router::post('/quitGroup', [ChatController::class, 'quitGroup']);
+        Router::post('/joinGroup', [ChatController::class, 'joinGroup']);
+        Router::post('/updateGroupMembers', [ChatController::class, 'updateGroupMembers']);
+
+        Router::post('/getTopicsList', [ChatController::class, 'getTopicsList']);
+        Router::post('/addTopic', [ChatController::class, 'addTopic']);
+        Router::post('/updateTopic', [ChatController::class, 'updateTopic']);
+        Router::post('/delTopic', [ChatController::class, 'delTopic']);
+        Router::post('/getTopicInfo', [ChatController::class, 'getTopicInfo']);
+        Router::post('/addReply', [ChatController::class, 'addReply']);
+        Router::post('/getTopicReply', [ChatController::class, 'getTopicReply']);
+        Router::post('/topicType', [ChatController::class, 'topicType']);
+        Router::post('/topicStatus', [ChatController::class, 'topicStatus']);
+        Router::post('/delReply', [ChatController::class, 'delReply']);
+        Router::post('/delAllReply', [ChatController::class, 'delAllReply']);
+        Router::post('/getTopicsListAdmin', [ChatController::class, 'getTopicsListAdmin']);
+
+        Router::post('/uploadFile', [ChatController::class, 'uploadFile']);
+    },
+    ['middleware' => [FooMiddleware::class]]
+);

+ 12 - 6
config/api/order.php

@@ -9,15 +9,14 @@ Router::addGroup(
     '/order', function () {
         //订单状态对应
         Router::get('/getStatus', [OrderController::class, 'getStatus']);
-        
         //查询广告
         Router::post('/getAD', [OrderController::class, 'getAD']);
         //根据网站搜索广告
         Router::post('/getWebsiteAd', [OrderController::class, 'getWebsiteAd']);
-        
+
         //获取订单金额
         Router::post('/getPrice', [OrderController::class, 'getPrice']);
-        
+
         //添加订单
         Router::post('/addAD', [OrderController::class, 'addAD']);
 
@@ -30,7 +29,6 @@ Router::addGroup(
         //删除广告
         Router::get('/delOrderAD', [OrderController::class, 'delOrderAD']);
 
-        
         //后台管理
         //获取订单列表
         Router::post('/getOrderListAdmin', [OrderController::class, 'getOrderListAdmin']);
@@ -53,13 +51,21 @@ Router::addGroup(
         Router::post('/getADList', [OrderController::class, 'getADList']);
         //获取广告详情
         Router::post('/getADDetail', [OrderController::class, 'getADDetail']);
-        //添加广告
-        Router::post('/addADAdmin', [OrderController::class, 'addAD']);
         //修改广告
         Router::post('/editAD', [OrderController::class, 'editAD']);
         //删除广告
         Router::post('/delAD', [OrderController::class, 'delAD']);
 
+        //创建购物车
+        Router::post('/addShoppingCart', [OrderController::class, 'addShoppingCart']);
+        //获取购物车中的广告位
+        Router::post('/getShoppingCartAD', [OrderController::class, 'getShoppingCartAD']);
+        //添加购物车中的广告位
+        Router::post('/addShoppingCartAD', [OrderController::class, 'addShoppingCartAD']);
+        //删除购物车中的广告位
+        Router::post('/delShoppingCartAD', [OrderController::class, 'delShoppingCartAD']);
+
+
     },
     ['middleware' => [FooMiddleware::class]]