Browse Source

朋友圈新增草稿状态

author
wanghongjun 8 months ago
parent
commit
da979fa49c
  1. 69
      app/enterprise/controller/Posts.php
  2. 6
      public/sql/database.sql

69
app/enterprise/controller/Posts.php

@ -17,6 +17,7 @@ class Posts extends BaseController
{
protected $url='';
protected $privacyUserArr = [2,4];
public function __construct()
{
@ -27,7 +28,7 @@ class Posts extends BaseController
// 朋友圈列表
public function index()
{
$where = '(p.delete_time = 0 and p.privacy > 0) ';
$where = '(p.delete_time = 0 and p.privacy > 0 and p.status = 1) ';
$where .= ' and ( p.user_id = ' . $this->uid;
$prefix = config('database.connections.mysql.prefix');
@ -41,17 +42,16 @@ class Posts extends BaseController
$where .= " or ( p.privacy = 2 and exists (
select 1 from {$prefix}posts_privacy_users pvu
where pvu.posts_id = p.id and pvu.user_id = p.user_id
and pvu.type = 1 and pvu.user_id in ({$friendIdStr})
and pvu.type = 1 and pvu.user_id in ({$this->uid})
))";
}
// 不可见
$where .= " or ( p.privacy = 4 and not exists (
// 不可见
$where .= " or ( p.privacy = 4 and not exists (
select 1 from {$prefix}posts_privacy_users peu
where peu.posts_id = p.id and peu.user_id = p.user_id
and peu.type = 2 and peu.user_id = {$this->uid}
))";
}
$where .= ')';
$field = 'p.id,p.content,p.location,p.address as location_address,p.type,p.user_id,p.create_time';
@ -64,16 +64,7 @@ class Posts extends BaseController
$data = $list->toArray()['data'];
foreach ($data as &$item) {
$friendNickname = Friend::where(['create_user' => $this->uid, 'friend_user_id' => $item['user_id'], 'status' => 1])->value('nickname');
$user = User::getUserInfo(['user_id' => $item['user_id'], 'status' => 1], 'realname, avatar, user_id');
if (empty($friendNickname)) {
$friendNickname = $user['realname'];
}
$item['user'] = [
'user_id' => $item['user_id'],
'avatar' => $user['avatar'] ?: avatarUrl($user['avatar'], $user['realname'], $user['user_id'], 120),
'nickname' => $friendNickname
];
$item['user'] = $this->getFriendUserInfo($item['user_id']);
$item['files'] = PostsFile::getPostsFile($item['id']);
@ -90,16 +81,32 @@ class Posts extends BaseController
return success('', $data,$list->total(),$list->currentPage());
}
// 获取好友用户信息
protected function getFriendUserInfo($user_id):array
{
$friendNickname = Friend::where(['create_user' => $this->uid, 'friend_user_id' => $user_id, 'status' => 1])->value('nickname');
$user = User::getUserInfo(['user_id' => $user_id, 'status' => 1], 'realname, avatar, user_id');
if (empty($friendNickname)) {
$friendNickname = $user['realname'];
}
return [
'user_id' => $user_id,
'avatar' => $user['avatar'] ?: avatarUrl($user['avatar'], $user['realname'], $user['user_id'], 120),
'nickname' => $friendNickname
];
}
// 我的朋友圈列表
public function myPosts()
{
$where = [
['user_id', '=', $this->uid],
['privacy', 'in', [1,2,3,4]],
['status', '=', 1],
['delete_time', '=', 0]
];
$field = 'id,content,location,address,type,user_id,create_time';
$field = 'id,content,location,address,type,user_id,create_time,privacy';
$order = 'create_time desc';
$model = new PostsModel();
@ -126,9 +133,11 @@ class Posts extends BaseController
$where = [
'id' => $posts_id,
'user_id' => $this->uid,
['privacy', 'in', [1,2,3,4]],
['status', '=', 1],
'delete_time' => 0
];
$field = 'id,content,location,address,type,user_id,create_time';
$field = 'id,content,location,address,type,user_id,create_time,privacy';
$data = (new PostsModel())->where($where)->field($field)->find();
if (!$data) {
return warning(lang('system.error'));
@ -184,8 +193,13 @@ class Posts extends BaseController
$imgArr = $this->request->param('img_arr', []);
$posts_id = $this->request->param('posts_id', '');
$user_ids = $this->request->param('user_ids', []);
$status = $this->request->param('status', '1');
$privacy_user_arr = [2,4];
if (!in_array($status, ['1','2'])) {
return error(lang('posts.user_empty'));
}
$privacy_user_arr = $this->privacyUserArr;
if (in_array($privacy, $privacy_user_arr)) {
if (empty($user_ids) || !is_array($user_ids)) {
return error(lang('posts.user_empty'));
@ -205,7 +219,7 @@ class Posts extends BaseController
if ($posts_id) {
$existsWhere = [
'id' => $posts_id,
'privacy' => 0,
'status' => 2,
'user_id' => $this->uid
];
$exists = (new PostsModel())->where($existsWhere)->find()->toArray();
@ -222,7 +236,8 @@ class Posts extends BaseController
'content' => $content,
'privacy' => $privacy,
'location' => $location ?? '',
'address' => $address ?? ''
'address' => $address ?? '',
'status' => $status
];
if ($posts_id) {
$info['update_time'] = time();
@ -318,8 +333,8 @@ class Posts extends BaseController
// 获取上传草稿帖子数据
public function getLastPosts()
{
$existsWhere = ['user_id' => $this->uid, 'privacy' => 0, 'delete_time' => 0];
$field = 'id as posts_id,content,type,location,address as location_address';
$existsWhere = ['user_id' => $this->uid, 'status' => 2, 'delete_time' => 0];
$field = 'id as posts_id,content,type,location,address as location_address,privacy';
$data = PostsModel::where($existsWhere)->field($field)->find();
if ($data) {
$fileWhere = [
@ -336,6 +351,14 @@ class Posts extends BaseController
$files[$fileKey]['src'] = File::where(['file_id' => $fileValue['file_id']])->value('src');
}
$data['files'] = $files;
$privacy_user =[];
if (in_array($data['privacy'], $this->privacyUserArr)) {
$PrivacyUsers = PostsPrivacyUsers::where(['posts_id' => $data['id']])->column('user_id');
foreach ($PrivacyUsers as $user_id) {
$privacy_user[] = $this->getFriendUserInfo($user_id);
}
}
$data['privacy_user'] = $privacy_user;
}
return success('', $data);
}

6
public/sql/database.sql

@ -343,11 +343,13 @@ CREATE TABLE `yu_posts` (
`user_id` INT(11) NOT NULL DEFAULT '0' COMMENT '用户id',
`content` TEXT COMMENT '文字内容',
`type` TINYINT(4) NOT NULL DEFAULT '0' COMMENT '1文字 2图片 3视频 12文字图片 13文字视频',
`privacy` TINYINT(4) NOT NULL DEFAULT '1' COMMENT '0草稿 1公开 2部分可见 3私密 4不给谁看',
`location` CHAR(15) DEFAULT NULL COMMENT '发布地址',
`privacy` TINYINT(4) NOT NULL DEFAULT '1' COMMENT '1公开 2部分可见 3私密 4不给谁看',
`location` VARCHAR(50) NOT NULL DEFAULT '' COMMENT '经纬度',
`create_time` INT(11) NOT NULL DEFAULT '0' COMMENT '创建时间',
`update_time` INT(11) NOT NULL DEFAULT '0' COMMENT '更新时间',
`delete_time` INT(11) NOT NULL DEFAULT '0' COMMENT '删除时间',
`address` VARCHAR(255) NOT NULL DEFAULT '' COMMENT '发布位置',
`status` TINYINT(1) NOT NULL DEFAULT '1' COMMENT '状态 0禁止 1正常 2草稿',
PRIMARY KEY (`id`),
KEY `user_id` (`user_id`)
) ENGINE=INNODB DEFAULT CHARSET=utf8mb4 COMMENT='帖子';

Loading…
Cancel
Save