HouseBoard.php 12.3 KB
<?php
/**
 * Created by PhpStorm.
 * User: Administrator
 * Date: 2020/7/10
 * Time: 17:32
 */

namespace app\api\controller;


use app\common\controller\Api;
use think\Cache;
use think\Db;
use think\Validate;
 /**
 * 社区公告
 */
class HouseBoard extends Api
{
    protected $noNeedLogin = ['*'];
    protected $noNeedRight = ['*'];

    /**
     * @ApiTitle    (社区公告-首页)
     * @ApiSummary  (社区公告-首页)
     * @ApiMethod   (POST)
     * @ApiHeaders  (name=token, type=string, required=true, description="请求的Token")
     * @ApiReturn({
        "code": 1,
        "msg": "成功",
        "time": "1571492001",
        "data": {
              "is_binding"://是否绑定1已绑定2未绑定
              "house"://社区信息
              "house_board"://最新公告信息
        }
    })
     */
    public function index()
    {
        $user_id = $this->auth->id;
        $data = Db::name('user')->where('id',$user_id)->field('id,house_id')->find();
        if(empty($data['house_id'])){
            $info['is_binding'] = 2;
        }else{
            $info['is_binding'] = 1;
            /*小区信息*/
            $house = Db::name('house')
                ->where('id',$data['house_id'])
                ->field('image,name,thumbnail,bindnum')
                ->find();
            // 消息红点
            $message = Db::name('message')
                    ->where('house_id',$data['house_id'])
                    ->where('to_user_id',$user_id)
                    ->where('is_read',2)
                    ->field('id')
                    ->find();
            $house['have_message'] = !empty($message) ? 1 : 2;
            $house['image'] = cdnurl($house['image'],true);
            /*最新公告信息*/
            $house_board = Db::name('house_board')
                ->where('house_id',$data['house_id'])
                ->order('createtime desc')
                ->field('id,title,content,look_num,createtime')
                ->find();
            if(!empty($house_board)){
                $house_board['createtime'] = date('Y-m-d',$house_board['createtime']);
                // 最新公告是否已读
                $is_read = Db::name('house_board_detail')
                    ->where('user_id',$user_id)
                    ->where('house_board_id',$house_board['id'])
                    ->find();
                $house_board['is_new'] = !empty($is_read) ? 1 : 2;
                // 最新公告-用户头像
                $house_board['avatar'] = Db::name('house_board_detail')
                    ->alias('a')
                    ->join('user b','a.user_id = b.id')
                    ->where('a.house_board_id',$house_board['id'])
                    ->field('b.avatar,b.id')
                    ->limit(6)
                    ->select();
            }
            $info = array_merge($info,compact('house','house_board'));
        }
        $this->success('success',$info);
    }

    /**
     * @ApiTitle    (社区公告-业主信息)
     * @ApiSummary  (社区公告-业主信息)
     * @ApiMethod   (POST)
     * @ApiRoute    (/api/house/avatar)
     *
     * @ApiHeaders  (name=token, type=string, required=true, description="请求的Token")
     * @ApiParams   (name="house_board_id", type="inter", required=true, description="公告id")
     *
     *
     * @ApiReturn({
        "code": 1,
        "msg": "成功",
        "time": "1571492001",
        "data": {
            "id"://用户id
            "avatar"://用户头像
        }
    })
     */
    public function avatar()
    {
        (new House)->avatar();
    }

    /**
     * @ApiTitle    (社区公告-轮播图)
     * @ApiSummary  (社区公告-轮播图)
     * @ApiMethod   (POST)
     *
     * @ApiReturn({
        "code": 1,
        "msg": "成功",
        "time": "1571492001",
        "data": {
            "id"://id
            "image"://图片
            "url"://跳转地址
            "typeswitch"://开关0关1开
            "createtime"://创建时间
        }
    })
     */
    public function banner()
    {
        $qiniu = get_addon_config('qiniu')['cdnurl'];
        $data = Db::name('advertising')->field('updatetime',true)->order('createtime desc')->select();
        foreach ($data as &$v){
            $v['image'] = $qiniu.$v['image'];
            $v['createtime'] = date('Y-m-d H:i:s',$v['createtime']);
        }
        $this->success('success',$data);
    }


    /**
     * @ApiTitle    (社区公告-公告列表)
     * @ApiSummary  (社区公告-公告列表)
     * @ApiMethod   (POST)
     *
     * @ApiHeaders  (name=token, type=string, required=true, description="请求的Token")
     * @ApiParams   (name="house_board_id", type=inter, required=true, description="社区id")
     * @ApiParams   (name="page", type="inter", required=false, description="当前页(默认1)")
     * @ApiParams   (name="pageNum", type="inter", required=false, description="每页显示数据个数(默认10)")
     *
     * @ApiReturn({
        "code": 1,
        "msg": "成功",
        "time": "1571492001",
        "data": {
            "total_num"://总条数
            "info":[
                "id"://公告id
                "title"://社区公告标题
                "content"://公告内容
                "look_num"://浏览人数
                "createtime"://时间
                "avatar"://用户头像
            ]
        }
    })
     */
    public function house_board_list()
    {
        $page = $this->request->param('page', 1, 'intval');
        $pageNum = $this->request->param('pageNum', 10, 'intval');
        $user_id = $this->auth->id;
        $house_id = $this->request->param('house_board_id');
        if(empty($house_id)){
            $this->error('社区id不能为空');
        }
        $data['total_num'] = Db::name('house_board')
            ->where('house_id',$house_id)
            ->count();
        $data['info'] = Db::name('house_board')
            ->where('house_id',$house_id)
            ->order('weigh desc')
            ->page($page,$pageNum)
            ->select();
        foreach ($data['info'] as &$v){
            $v['createtime'] = date('Y-m-d',$v['createtime']);
            //查询用户是否在已读公告详情中
            $house_board_detail = Db::name('house_board_detail')
                ->where('user_id',$user_id)
                ->where('house_board_id',$v['id'])
                ->find();
            if(empty($house_board_detail)){
                $info['user_id'] = $user_id;
                $info['house_board_id'] = $v['id'];
                $info['createtime'] = time();
                Db::name('house_board_detail')->insertGetId($info);
                Db::name('house_board')->where('id',$v['id'])->setInc('look_num');
            }

            $v['avatar'] = Db::name('house_board_detail')
                ->alias('a')
                ->join('user b','a.user_id = b.id')
                ->where('a.house_board_id',$v['id'])
                ->field('b.avatar,b.id')
                ->limit(6)
                ->select();
        }
        $this->success('success',$data);
    }

    /**
     * @ApiTitle    (社区公告-服务电话)
     * @ApiSummary  (社区公告-服务电话)
     * @ApiMethod   (POST)
     *
     * @ApiHeaders  (name=token, type=string, required=true, description="请求的Token")
     * @ApiParams   (name="house_id", type="string", required=true, description="小区id")
     *
     * @ApiReturn({
        "code": 1,
        "msg": "成功",
        "time": "1571492001",
        "data": {
              "id"://id
              "name"://电话名称
              "phone"://电话
        }
    })
     */
    public function house_phone()
    {
        $user_id = $this->auth->id;
        $house_id = $this->request->param('house_id');
        if(empty($house_id)){
            $this->error('缺少必要参数');
        }
        $data = Db::name('house_phone')->field('id,name,phone')->where('house_id',$house_id)->select();
        $this->success('success',$data);
    }


    /**
     * @ApiTitle    (社区公告-物业留言)
     * @ApiSummary  (社区公告-物业留言)
     * @ApiMethod   (POST)
     *
     * @ApiHeaders  (name=token, type=string, required=true, description="请求的Token")
     * @ApiParams   (name="house_id", type="string", required=true, description="小区id")
     *
     * @ApiReturn({
        "code": 1,
        "msg": "成功",
        "time": "1571492001",
        "data": {
            "id"://id
            "user_id"://用户id
            "avatar"://管理员头像
            "nickname"://昵称
            "is_have"://是否带有红标签 1有2没有
        }
    })
     */
    public function house_admin_list()
    {
        $user_id = $this->auth->id;
        $house_id = $this->request->param('house_id');
        if(empty($house_id)){
            $this->error('缺少必要参数');
        }

        $data = Db::name('house_admin')
            ->alias('a')
            ->join('user b','a.user_id = b.id')
            ->where('a.house_id',$house_id)
            ->field('a.id,a.user_id,b.avatar,b.nickname')
            ->order('a.is_direct')
            ->select();
        foreach ($data as &$v){
            $mes = Db::name('message')
                ->where('house_id',$house_id)
                ->where('user_id',$v['user_id'])
                ->where('to_user_id',$user_id)
                ->where('is_read',2)
                ->find();
            if(empty($mes)){
                $v['is_have'] = 2;
            }else{
                $v['is_have'] = 1;
            }
        }
        $this->success('success',$data);
    }

    /**
     * @ApiTitle    (社区公告-物业留言-详情)
     * @ApiSummary  (社区公告-物业留言-详情)
     * @ApiMethod   (POST)
     *
     * @ApiHeaders  (name=token, type=string, required=true, description="请求的Token")
     * @ApiParams   (name="house_id", type="inter", required=true, description="社区id")
     * @ApiParams   (name="user_id", type="inter", required=true, description="社区物业管理员用户id")
     *
     * @ApiReturn({
        "code": 1,
        "msg": "成功",
        "time": "1571492001",
        "data": {
            "id"://id
            "user_id"://发送者id
            "house_id"://社区id
            "to_user_id"://接收者用户id
            "type"://消息类型1文字类型2图片类型
            "content"://文字消息
            "image"://图片消息
            "is_read"://是否已读1已读2未读
            "createtime"://创建时间
            "updatetime"://修改时间
            "nickname"://昵称
            "is_have"://是否带有红标签 1有2没有
            "is_left"://是否在右边  1是2否
        }
    })
     */
    public function chat_record()
    {
        $qiniu = get_addon_config('qiniu')['cdnurl'];
        $user_id = $this->auth->id;    //当前登录用户id
        $house_id = $this->request->param('house_id');      //社区id
        $wuye_user_id = $this->request->param('user_id');   //物业用户id
        if(empty($house_id) || empty($wuye_user_id)){
            $this->error('缺少必要参数');
        }

        $house_admin = Db::name('house_admin')->where('user_id',$wuye_user_id)->where('house_id',$house_id)->find();
        if(empty($house_admin)){
            $this->error('参数有误,社区与管理员id不匹配');
        }

        $data = Db::name('message')
            ->where('house_id',$house_id)
            ->where('user_id',$user_id)
            ->where('to_user_id',$wuye_user_id)
            ->order('createtime desc')
            ->select();
        foreach ($data as &$v){
            $v['is_right'] = 1;
            if($v['type'] == 2){
                $v['image'] = $qiniu.$v['image'];
            }
        }
        $arr = Db::name('message')
            ->where('house_id',$house_id)
            ->where('user_id',$wuye_user_id)
            ->where('to_user_id',$user_id)
            ->order('createtime desc')
            ->select();
        foreach ($arr as &$v){
            $v['is_right'] = 2;
            if($v['type'] == 2){
                $v['image'] = $qiniu.$v['image'];
            }
        }

        $info = array_merge($data,$arr);

        array_multisort(array_column($info,'createtime'),SORT_DESC,$info);
        foreach ($info as &$val){
            $val['createtime'] = date('Y-m-d H:i:s',$val['createtime']);
        }

        $this->success('success',$info);

    }
}