今天要分享的内容有两块,
1、保存聊天记录到数据库(形成持久化);
2、初始化打开聊天界面,显示最近的聊天记录。
等不及了,那么开始吧……
一、建立数据库表
聊天记录表:
用户名表:
二、在《打造微信一样的聊天功能:tp5+workerman实现在线聊天客服功能(一)》代码的基础上修改代码:
1、在events.php增加或修改(红框中的代码):
2、视图层index增加(红框中的代码):
get_message_list(fid,tid)获取聊天记录函数代码如下 :
//初始化上一次的聊天记录
function get_message_list(fid,tid)
{
$.post('{:url("index/get_message_list")}',
{fid:fid,tid,tid},
function(data){
$.each(data,function(i,v){
console.log(v);
if(v.fid==fid){
$("#message").append('<p style="float:left"><img src="http://192.168.1.103/tp/public/static/'+fid+'.png" style="border-radius:50%">'+fid+'SAY:'+v.content+'</p><div style="clear: both;"></div>');
}else
{
$("#message").append('<p style="float:right">'+v.content+':SAY'+tid+'<img src="http://192.168.1.103/tp/public/static/'+tid+'.png" style="border-radius:50%"></p><div style="clear: both;"></div>');
}
})
})
}
saved(message) 保存聊天内容函数代码如下:
//保存每一次聊天内容
function saved(mes)
{
$.post('{:url("index/saved")}',
mes,
function(data){
})
}
3、控制器index增加方法:
//保存聊天内容方法
public function saved(){
if(request()->isAjax()){
$data=input('post.');
$adddata=[
'fid'=>$data['fid'],
'tid'=>$data['tid'],
'content'=>$data['data'],
'isread'=>$data['isread'],
'addtime'=>$data['time']
];
$id=Db::name('chat')->insertGetId($adddata);
echo $id;
}
}
//聊天内容记录方法
public function get_message_list(){
if(request()->isAjax()){
$message=Db::name('chat')
->where("(fid=:fid and tid=:tid) or (fid=:tid1 and tid=:fid1)",['fid'=>input('fid'),'tid'=>input('tid'),'fid1'=>input('fid'),'tid1'=>input('tid')])
->select();
return json($message);
}
}