📖 File Reader
<?php
namespace app\api\controller;
use think\facade\Db;
/*聊天处理*/
class Chat extends Base
{
/*聊天窗口信息*/
public function chat_personnel_list()
{
$list = db::name("chat_personnel")->where("find_in_set($this->user_id,user_id_str) ")->page($this->page,$this->limit)->order("time desc")->select()
->toArray();
foreach ($list as $k => $v){
$user = db::name("user")->where("user_id in ($v[user_id_str])")->field("user_id,nickname,head")->select()->toArray();
foreach ($user as $k1 => $v1){
$user[$k1]["is_benren"] = $v1["user_id"] == $this->user_id?1:0;
}
$list[$k]["user"] = $user;
$zuihou_personnel_particulars_describe = db::name("chat_personnel_particulars")->where("chat_id = $v[id]")->order("id desc")->value("describe");
$list[$k]["zuihou_personnel_particulars_describe"] = $zuihou_personnel_particulars_describe;//聊天之后内容描述
$list[$k]["time"] = date("m-d",$v["time"]);
}
$count = db::name("chat_personnel")->where("find_in_set($this->user_id,user_id_str)")->count();
$pages = $this->vue_pages($count,$this->limit);
$data = [
'list'=>$list,
'pages'=>$pages,
];
return $this->succeed_json("ok",$data);
}
/*聊天窗口详情*/
public function chat_personnel_info()
{
$chat_id = input("param.chat_id");//窗口id
$chat_info = db::name("chat_personnel")->where("id = $chat_id")->field("id,user_id_str,user_id_str_check")->find();
$data = [
'chat_info'=>$chat_info,
];
return $this->succeed_json("ok",$data);
}
/*聊天窗口创建*/
public function chat_personnel_add()
{
$user_id_receive = input("param.user_id_receive");//接收人id
$type = input("param.type");
$where = 1;
if (!empty($type)){
$where .= " and type = $type";
}
$chat_info = db::name("chat_personnel")->where("find_in_set($user_id_receive,user_id_str) and find_in_set($this->user_id,user_id_str) and $where")->field("id,user_id_str,user_id_str_check")->find();
if (empty($chat_info)){
$info = [
'user_id_str'=>$user_id_receive.','.$this->user_id,
'type'=>$type,
];
$chat_id = db::name("chat_personnel")->insertGetId($info);
$chat_info = db::name("chat_personnel")->where("id = $chat_id")->field("id,user_id_str,user_id_str_check")->find();
}
$data = [
'chat_info'=>$chat_info,
];
return $this->succeed_json("ok",$data);
}
/*聊天窗口待查看标识更新*/
public function chat_personnel_update()
{
$chat_id = input("param.chat_id");//窗口id
$chat_info = db::name("chat_personnel")->where("id = $chat_id")->field("id,user_id_str,user_id_str_check")->find();
$user_id_arr_check = explode(',',$chat_info['user_id_str_check']);
$check_data = [];
foreach ($user_id_arr_check as $v){
if ($v != $this->user_id){
$check_data[] = $v;
}
}
$info = [
'user_id_str_check'=>implode(",", $check_data),
];
db::name("chat_personnel")->where("id = $chat_id")->update($info);
return $this->succeed_json("操作成功");
}
/*聊天信息存储*/
public function chat_upload()
{
$chat_id = input("param.chat_id");//窗口id
$describe = input("param.describe");
$type = input("param.type");
$chat_info = db::name("chat_personnel")->where("id = $chat_id")->field("id,user_id_str,user_id_str_check")->find();
if (empty($chat_info)){
return $this->error_json("聊天窗口不存在",405);
}
$user_id_arr = explode(',',$chat_info['user_id_str']);
if (!in_array($this->user_id,$user_id_arr)){
return $this->error_json("聊天窗口错误",405);
}
/*更新待查看会员*/
$user_id_arr = explode(',',$chat_info["user_id_str"]);
$user_id_arr_check = [];//待查看会员id
foreach ($user_id_arr as $v){
if ($v != $this->user_id){
$user_id_arr_check[] = $v;
}
}
$info = [
'user_id_str_check'=>implode(",", $user_id_arr_check),
'time'=>time(),
];
db::name("chat_personnel")->where("id = $chat_id")->update($info);
$info_particulars = [
'chat_id'=>$chat_id,
'user_id'=>$this->user_id,
'describe'=>$describe,
'type'=>$type,
'time_add'=>time(),
];
db::name("chat_personnel_particulars")->insertGetId($info_particulars);
return $this->succeed_json("发送成功");
}
/*聊天信息*/
public function chat_personnel_particulars_list()
{
$chat_id = input("param.chat_id");//窗口id
$list = db::name("chat_personnel_particulars")->alias("a")
->join("user b","a.user_id = b.user_id","left")
->field("a.*,b.nickname,b.head")
->where("a.chat_id = $chat_id")
->order("a.id desc")
->page($this->page,$this->limit)
->select()
->toArray();
foreach ($list as $k => $v){
$list[$k]["is_benren"] = $v["user_id"] == $this->user_id?1:0;
$list[$k]['time_add'] = date("Y-m-d H:i",$v['time_add']);
}
$count = db::name("chat_personnel_particulars")->alias("a")
->join("user b","a.user_id = b.user_id","left")
->where("a.chat_id = $chat_id")
->count();
$pages = $this->vue_pages($count,$this->limit);
$data = [
'list'=>$list,
'pages'=>$pages,
];
return $this->succeed_json("ok",$data);
}
/*聊天内容更新查询*/
public function chat_personnel_particulars_update_list()
{
$chat_id = input("param.chat_id");
$particulars_id = input("param.particulars_id");//聊天内容id
$list = db::name("chat_personnel_particulars")->alias("a")
->join("user b","a.user_id = b.user_id","left")
->field("a.*,b.nickname,b.head")
->where("a.chat_id = $chat_id and a.id > $particulars_id")
->order("a.id desc")
->select()
->toArray();
foreach ($list as $k => $v){
$list[$k]["is_benren"] = $v["user_id"] == $this->user_id?1:0;
$list[$k]['time_add'] = date("Y-m-d H:i",$v['time_add']);
}
$data = [
'list'=>$list,
];
return $this->succeed_json("ok",$data);
}
}