Browse Source

朋友圈消息通知接口

master
wanghongjun 9 months ago
parent
commit
ea273f712c
  1. 69
      app/enterprise/controller/Posts.php
  2. 49
      app/enterprise/model/PostsNotice.php

69
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\Posts as PostsModel;
use app\enterprise\model\Friend; use app\enterprise\model\Friend;
use app\enterprise\model\PostsFile; use app\enterprise\model\PostsFile;
use app\enterprise\model\PostsNotice;
use app\enterprise\model\PostsPrivacyUsers; use app\enterprise\model\PostsPrivacyUsers;
use app\enterprise\model\User; use app\enterprise\model\User;
use think\facade\Db; use think\facade\Db;
@ -421,6 +422,10 @@ class Posts extends BaseController
if (empty($posts_id)) { if (empty($posts_id)) {
return error(lang('system.fail')); 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 = [ $info = [
'user_id' => $this->uid, 'user_id' => $this->uid,
@ -431,11 +436,16 @@ class Posts extends BaseController
if ($exists_id) { if ($exists_id) {
(new Likes())->where('id', $exists_id)->delete(); (new Likes())->where('id', $exists_id)->delete();
PostsNotice::optionNotice($posts_id, $exists_id, $reply_user_id, 1, 'del');
return success(lang('posts.cancel_like')); return success(lang('posts.cancel_like'));
} }
$info['create_time'] = time(); $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')); return success(lang('posts.success_like'));
} }
@ -467,7 +477,13 @@ class Posts extends BaseController
'pid' => $pid, 'pid' => $pid,
'create_time' => time() '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')); return success(lang('system.success'));
} }
@ -490,13 +506,60 @@ class Posts extends BaseController
'relevance_id' => $posts_id 'relevance_id' => $posts_id
]; ];
$exists = (new Comment())->where($existsWhere)->find('id'); $exists = (new Comment())->where($existsWhere)->find();
if (!$exists) { if (!$exists) {
return error(lang('system.fail')); return error(lang('system.fail'));
} }
$exists->delete_time = time(); $exists->delete_time = time();
$exists->save(); $exists->save();
PostsNotice::optionNotice($posts_id, $exists['id'], $this->uid, 2, 'del');
return success(lang('system.success')); 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());
}
} }

49
app/enterprise/model/PostsNotice.php

@ -0,0 +1,49 @@
<?php
namespace app\enterprise\model;
use think\Model;
class PostsNotice extends Model
{
/**
* 添加 或 删除 消息
* @param $posts_id // 帖子id
* @param $relevance_id // 关联id
* @param $user_id // 通知用户id
* @param $type // 通知类型 1点赞 2评论
* @return void
*/
public static function optionNotice(
int $posts_id,
int $relevance_id,
int $user_id,
int $type = 1,
string $option = 'add'
) {
$data = [
'posts_id' => $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]);
}
}
Loading…
Cancel
Save