1. 概述
私信是一种基于网站内部的交流方式,与评论、留言等功能不同,私信是一种点对点的交流方式,可以实现用户之间的交流,对于一些需要保密的信息,私信是一个理想的交流方式。
2. 实现
私信功能的实现是基于thinkphp框架的,下面我们来介绍如何实现私信功能。
2.1 数据库设计
先来看看私信功能需要用到的数据库设计。
CREATE TABLE `msg` (
`id` int(11) NOT NULL COMMENT '私信ID',
`send_id` int(11) NOT NULL COMMENT '发送者ID',
`receive_id` int(11) NOT NULL COMMENT '接收者ID',
`content` varchar(255) NOT NULL COMMENT '私信内容',
`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
PRIMARY KEY (`id`)
);
msg表中包含私信的ID、发送者ID、接收者ID、私信内容和创建时间。
2.2 控制器设计
接下来是控制器设计。
2.2.1 发送私信
public function sendMail()
{
if (request()->isPost()) {
$data = input('post.');
$validate = validate('Msg');
if (!$validate->check($data)) {
return json(['code' => 0, 'msg' => $validate->getError()]);
}
$model = new MsgModel();
$result = $model->save($data);
if ($result) {
return json(['code' => 1, 'msg' => '发送成功!']);
} else {
return json(['code' => 0, 'msg' => '发送失败!']);
}
} else {
return json(['code' => 0, 'msg' => '非法请求!']);
}
}
在发送私信的控制器中,我们首先会判断请求方式是否为POST,然后通过validate函数验证发送内容的合法性,如果合法,就将内容保存到数据库中。
2.2.2 获取私信列表
public function getMailList()
{
$user_id = input('get.user_id');
$model = new MsgModel();
$list = $model->where('(send_id='.$user_id.' and receive_id='.$user_id.')')->order('create_time desc')->select();
return json(['code' => 1, 'msg' => '获取成功!', 'data' => $list]);
}
在获取私信列表的控制器中,我们通过用户ID进行筛选,并按照创建时间进行降序排列。
2.3 模型设计
最后是模型设计。
namespace app\common\model;
use think\Model;
class MsgModel extends Model
{
protected $table = 'msg';
}
在Model中只需要指定表名即可。
3. 总结
私信功能是一个非常有用和实用的功能,通过这篇文章的介绍,相信大家能够掌握私信功能的实现方法和思路。