From ea273f712cd72d7f4b4691a7bb4f36ec9da815d3 Mon Sep 17 00:00:00 2001 From: wanghongjun <1445693971@qq.com> Date: Wed, 18 Jun 2025 11:32:17 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9C=8B=E5=8F=8B=E5=9C=88=E6=B6=88=E6=81=AF?= =?UTF-8?q?=E9=80=9A=E7=9F=A5=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/enterprise/controller/Posts.php | 69 ++++++++++++++++++++++++++-- app/enterprise/model/PostsNotice.php | 49 ++++++++++++++++++++ 2 files changed, 115 insertions(+), 3 deletions(-) create mode 100644 app/enterprise/model/PostsNotice.php diff --git a/app/enterprise/controller/Posts.php b/app/enterprise/controller/Posts.php index 06e9a93..2957543 100644 --- a/app/enterprise/controller/Posts.php +++ b/app/enterprise/controller/Posts.php @@ -9,6 +9,7 @@ use app\enterprise\model\Likes; use app\enterprise\model\Posts as PostsModel; use app\enterprise\model\Friend; use app\enterprise\model\PostsFile; +use app\enterprise\model\PostsNotice; use app\enterprise\model\PostsPrivacyUsers; use app\enterprise\model\User; use think\facade\Db; @@ -421,6 +422,10 @@ class Posts extends BaseController if (empty($posts_id)) { return error(lang('system.fail')); } + $reply_user_id = PostsModel::where('id', $posts_id)->value('user_id'); + if (!empty($reply_user_id)) { + return error(lang('system.fail')); + } $info = [ 'user_id' => $this->uid, @@ -431,11 +436,16 @@ class Posts extends BaseController if ($exists_id) { (new Likes())->where('id', $exists_id)->delete(); + PostsNotice::optionNotice($posts_id, $exists_id, $reply_user_id, 1, 'del'); return success(lang('posts.cancel_like')); } $info['create_time'] = time(); - (new Likes())->save($info); + $id = (new Likes())->insertGetId($info); + + if ($reply_user_id != $this->uid) { + PostsNotice::optionNotice($posts_id, $id, $reply_user_id); + } return success(lang('posts.success_like')); } @@ -467,7 +477,13 @@ class Posts extends BaseController 'pid' => $pid, 'create_time' => time() ]; - Comment::create($info); + $id = (new Comment())->insertGetId($info); + if (!$reply_user_id) { + $reply_user_id = PostsModel::where('id', $posts_id)->value('user_id'); + } + if ($reply_user_id != $this->uid) { + PostsNotice::optionNotice($posts_id, $id, $reply_user_id, 2); + } return success(lang('system.success')); } @@ -490,13 +506,60 @@ class Posts extends BaseController 'relevance_id' => $posts_id ]; - $exists = (new Comment())->where($existsWhere)->find('id'); + $exists = (new Comment())->where($existsWhere)->find(); if (!$exists) { return error(lang('system.fail')); } $exists->delete_time = time(); $exists->save(); + PostsNotice::optionNotice($posts_id, $exists['id'], $this->uid, 2, 'del'); return success(lang('system.success')); } + + // 提醒消息列表 + public function getNoticeList() + { + + $model = new PostsNotice(); + $where = [ + ['user_id', '=', $this->uid] + ]; + $field = '*'; + $order = 'create_time desc'; + + $list = $this->paginate($model->where($where)->field($field)->order($order)); + $data = []; + if ($list) { + $data = $list->toArray()['data']; + foreach ($data as &$item) { + + // 第一张图 或是视频 + $fileWhere = [ + 'posts_id' => $item['posts_id'], + 'delete_time' => 0 + ]; + $files = PostsFile::where($fileWhere) + ->field('file_id,type') + ->order('sort asc') + ->find(); + + $item['file'] = []; + if ($files) { + $filesWhere = ['file_id' => $files['file_id'], 'delete_time' => 0]; + $files['src'] = File::where($filesWhere)->value('src'); + $item['file'] = $files; + } + // 标记已读 + if (!$item['is_read']) { + PostsNotice::read($item['id']); + } + // 用户信息 + $item['user'] = $this->getFriendUserInfo($item['user_id']); + // 评论回复 + unset($item['is_read']); + } + } + return success('', $data,$list->total(),$list->currentPage()); + } } \ No newline at end of file diff --git a/app/enterprise/model/PostsNotice.php b/app/enterprise/model/PostsNotice.php new file mode 100644 index 0000000..1b5de24 --- /dev/null +++ b/app/enterprise/model/PostsNotice.php @@ -0,0 +1,49 @@ + $posts_id, + 'relevance_id' => $relevance_id, + 'user_id' => $user_id, + 'type' => $type + ]; + if ($option == 'add') { + self::create($data); + } elseif ($option == 'del') { + self::where($data)->delete(); + } + } + + /** + * 标记已读 + * @param $id + * @return void + */ + public static function read($id) + { + $data = ['is_read' => 1]; + self::update($data, ['id' => $id]); + } + +} \ No newline at end of file