<?php
namespace app\common\model;

use think\Db;
use think\Exception;

class Post extends Base
{

    public function addSave($userId,$orgId){

        $data=[
            'user_id'=>$userId,
            'content'=>trim(input('content')),
            'imgs'=>input('imgs'),
            'enable'=>1,
            'create_time'=>getTime(),
            'update_time'=>getTime(),
            'org_id'=>$orgId,
        ];
        if(!$data['content'] && !$data['imgs']){
            $this->error = '请添加内容或图片';
            return false;
        }
        $ret=$this->insert($data);
        return $ret;
    }
    public function lists($page,$size,$orgId,$userId){
        $offset = ($page - 1) * $size;
        $post=$this
            ->field('id,user_id,content,create_time,imgs')
            ->where([
                'enable'=>1,
                'del'=>0,
                'org_id'=>$orgId,
            ])
            ->order('id desc')
            ->limit($offset,$size)
            ->select();
        $post = $post?$post->toArray():[];
        foreach ($post as $k=>$val){
            $like = Db::name('post_like')
                ->where('user_id',$userId)
                ->where('post_id',$val['id'])
               ->find();
            $post[$k]['status'] = $like?1:0;


            $post[$k]['imgs'] = empty($val['imgs']) ? [] : explode(',',$val['imgs']);
            $user_name=Db::name('user')
                ->field('real_name,head_image')
                ->where('id',$val['user_id'])
                ->find();
            $post[$k]['user_name']=$user_name['real_name'];
            $post[$k]['head_image']=$user_name['head_image'];

            //获取点赞人的名称
            $like=Db::name('post_like')
                ->alias('l')
                ->field('u.real_name,l.id as like_id')
                ->join('user u','u.id=l.user_id')
                ->where('l.post_id',$val['id'])
                ->select();

            $post[$k]['like']=$like;
            //获取回复信息
            $reply=Db::name('post_reply')
                ->field('id as reply_id,content,user_id,post_reply_id')
                ->where([
                    'post_id'=>$val['id'],
                    'enable'=>1,
                    'del'=>0,
                ])
                ->order('create_time asc')
                ->select();
            foreach ($reply as $key=>$value){
                $userName=Db::name('user')
                    ->field('real_name')
                    ->where('id',$value['user_id'])
                    ->find();
                $replyName=Db::name('post_reply')
                    ->alias('pr')
                    ->join('user u','u.id = pr.user_id')
                    ->field('u.real_name')
                    ->where('pr.id',$value['post_reply_id'])
                    ->find();
                $reply[$key]['userName']=$userName?$userName['real_name']:'';
                $reply[$key]['replyName']=$replyName?$replyName['real_name']:'';
            }
            $post[$k]['reply']=$reply;
        }
        return $post;
    }
    public function del($id){
        $data=['del'=>1];
        $del=$this->where('id',$id)->update($data);
        return $del;
    }
}