From 681af2a1ca9ba89e5de7572119ee318029b38a08 Mon Sep 17 00:00:00 2001 From: xiadc <251308692@qq.com> Date: Sat, 31 May 2025 18:00:13 +0800 Subject: [PATCH] =?UTF-8?q?feat(message):=20=E5=A2=9E=E5=8A=A0=E6=B6=88?= =?UTF-8?q?=E6=81=AF=E5=88=86=E7=B1=BB=E5=8A=9F=E8=83=BD=E5=B9=B6=E4=BC=98?= =?UTF-8?q?=E5=8C=96=E6=B6=88=E6=81=AF=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增 msgGroup 方法实现消息分类功能 - 优化 msg 方法,支持分页并解析消息内容 - 修改 Circle 控制器中的消息发送逻辑 --- addons/shopro/controller/user/User.php | 38 ++++++++++++++++++++++---- addons/shopro/controller/zy/Circle.php | 6 ++-- 2 files changed, 36 insertions(+), 8 deletions(-) diff --git a/addons/shopro/controller/user/User.php b/addons/shopro/controller/user/User.php index 5d9c265..96dc098 100644 --- a/addons/shopro/controller/user/User.php +++ b/addons/shopro/controller/user/User.php @@ -318,18 +318,45 @@ class User extends Common } + // 分类消息 + public function msgGroup() + { + $params = $this->request->param(); + + $query1 = Message::field('*,count(*) as num')->where('user_id', $this->auth->id); + $query2 = Message::field('*,count(*) as num')->where('user_id', $this->auth->id); + if (isset($params['type'])) { + $query1->where('type', $params['type']); + $query2->where('type', $params['type']); + } + $query1->group('from_id')->order('update_time', 'desc'); + $query2->group('from_id')->order('update_time', 'desc'); + $num = $query2->where('status', 0)->column('count(*) as num','from_id');// ->column('count(*) as num', 'gender'); + // dd($num); + $res = $query1->paginate($params['pageSize'] ?? 10); + $list = $res->items(); + foreach ($list as &$r) { + $r['content'] = json_decode($r['content'], true); + $r['num'] = $num[$r['from_id']] ?? 0; + } + $this->success('Success', ['list' => $list, 'count' => $res->total()]); + } + // 用户消息 public function msg() { $params = $this->request->param(); - $model = Message::where('user_id', $this->auth->id); + $query = Message::where('user_id', $this->auth->id); if (isset($params['type'])) { - $model->where('type', $params['type']); + $query->where('type', $params['type']); } - $res = $model->select(); - - $this->success('Success', $res); + $res = $query->paginate($params['pageSize'] ?? 10); + $list = $res->items(); + foreach ($list as &$r) { + $r['content'] = json_decode($r['content'], true); + } + $this->success('Success', ['list' => $list, 'count' => $res->total()]); } // 消息读取 @@ -341,6 +368,7 @@ class User extends Common $this->error(__('No rows were found')); } $model->save(['status' => 1]); //已读 + $model['content'] = json_decode($model['content'], true); $this->success('Success', $model); } diff --git a/addons/shopro/controller/zy/Circle.php b/addons/shopro/controller/zy/Circle.php index f919085..39d241e 100644 --- a/addons/shopro/controller/zy/Circle.php +++ b/addons/shopro/controller/zy/Circle.php @@ -139,7 +139,7 @@ class Circle extends Base 'name' => '互动消息', 'avatar' => '', 'from_id' => 0, - 'target_id' => $circle->user_id, + 'user_id' => $circle->user_id, 'content' => json_encode([ 'topic' => '点赞', 'content' => $user['nickname'] . '点赞了你的帖子', @@ -233,9 +233,9 @@ class Circle extends Base $model->save(['status' => $params['status']]); (new Message())->allowField(true)->save([ // 消息通知 'type' => 3, - 'name' => '系统通知', + 'name' => '通知消息', 'avatar' => '', - 'from_id' => 0, + 'from_id' => 1, 'target_id' => $model->user_id, 'content' => json_encode([ 'topic' => '影圈审核',