1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > tp框架实现一对多单发站内信功能。

tp框架实现一对多单发站内信功能。

时间:2023-06-18 20:58:59

相关推荐

tp框架实现一对多单发站内信功能。

站内信功能

前言:

公司项目需要一个站内信功能,但我没做过,所以做个记录,根据需求,需要后台发送站内信,前台用户接受,默认状态保持为未读,当用户点击查看时,更改状态为已读状态,并且站内信可回复。

后台使用的是tp5.0结合layui做的系统界面。layui简单来说,真香,直接搜索匹配要输入的用户

需求:一对多功能

管理员向用户发送一个站内信,用户接受到,可以回复。站内信的本质,其实就是数据库的增删改查,设计好数据表之后,只需要我们来创建发送,即可。

数据表设计

表设计:

现在技术不够,采用简单的mysql处理,暂不考虑实时性。数据表的设计,因为要考虑的是,管理员发送,客户需要接受到,所以采用innodb存储引擎。数据字段:站内信id、发件人、收件人、内容、主题、考虑上传文件(三个字段)、是否读取、发送时间、更新时间、状态(表示回复、还是发送)

create table ms_letter(l_id int(11) not null comment "站内信id",u_id int(11) not null comment "用户id",u_name char(50) not null comment '收件人姓名',s_id int(11) not null comment "发件人id",desc text not null comment "发送内容",theme varchar(100) not null comment "发送主题",status tinyint(4) not null comment "发送状态 1为读取,0为 未读",words varchar(200) default comment '文件上传1',words1 varchar(200) default comment '文件上传2',words2 varchar(200) default comment '文件上传3',create_time int(11) default comment '创建时间',update_time int(11) default comment '更新时间'primary key(l_id))engine = innodb default charset = utf8m64;

tp5.0编写方法

创建后端控制器:php think make:controller admin/Letter;

<?phpnamespace app\admin\controller;use think\Controller;use think\Request;# 站内信功能class Letter extends Controller{# 查看所有的站内信public function index(){return $this->fetch();}# layui获取数据,因为layui的分页不太会用,所以需要磨练一下,如何使用layui的分页,不能成为短板public function letterAll(){$data = \app\admin\model\Letter::letterAll();return json(['code' => 0,'data' => $data,'msg' =>'']);}# 发送站内信方法public function create(Request $request){if($request->isPost()){# 获取传递过来的所有的数据$data = $request->param();$rule = ['u_id|收件人' => 'require|number','theme|主题' => 'require','desc|发送内容' => 'require'];$validate = new \think\Validate($rule);if(!$validate->check($data)){$error = $validate->getError();return json(['code' => 100,'msg' => $error]);}# 编写主要内容$data['s_id'] = session('uid');$data['status'] = 0;$data['zt'] = 1;$res = \app\admin\model\Letter::create($data,true);if($res){return json(['code' => 200,'msg' => '发送成功']);}else{return json(['code' => 101,'msg' => '发送成功']);}}# 获取所有的用户姓名$data = \app\admin\model\UpserDetailed::field('upuser_id,name')->select();$this->assign('data',$data);return $this->fetch();}# 修改站内信数据public function edit(Request $request){$data = $request->param();# 查询对应的letter数据$letter = \app\admin\model\Letter::editLetter($data['l_id']);$this->assign('letter',$letter);return $this->fetch();}# 删除站内信public function delLet(Request $request){$data = $request->param('l_id');$res = \app\admin\model\Letter::where("l_id",$data)->delete();if($res){return json(['code' => 200,'msg' => '删除成功']);}else{return json(['code' => 100,'msg' => '删除失败']);}}}

创建后端模型文件:php think make:model admin/Letter;

<?phpnamespace app\admin\model;use think\Model;class Letter extends Model{# 获取所有的信息public static function letterAll(){return self::table('think_letter')->alias('l')->join('think_upser_detailed d','d.upuser_id = l.u_id','left')->field('l.l_id,d.name,l.create_time,l.theme')->order('l.create_time desc')->select();}# 查询要修改的信息public static function editLetter($l_id){return self::table('think_letter')->alias('l')->join('think_upser_detailed d','d.upuser_id = l.u_id','left')->where('l.l_id',$l_id)->order('l.create_time desc')->field('l.l_id,d.upuser_id,d.name,l.words1,l.desc,l.theme')->find();}}

编写视图模板,前端写的 和数据差不多就可以了,使用的是layui前端框架,挺好用的这个框架

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FlTxy9HD-1588745093942)(C:\Users\admin\AppData\Roaming\Typora\typora-user-images\image-180351754.png)]

结尾

基本做站内信的效果是就是增删改查,现在是最主要的是回复功能,有点问题,略微留点小bug,过后处理,

站内信模块,主要的要点是根据:要发送的人,谁发送的,主题内容,主要内容等,然后判断一个状态,默认状态为0,如果为0则是未读取,当前台用户接受到之后,当他第点击的时候,更新数据库状态值为1,标识为已读。

现在是基本功能实现,但是需要考虑的是回复功能。

第一次做,回复就是在做一张表,用来关联上站内信的表,现在是时效信不太好,暂且这么处理,第一次做成站内信,还是蛮开心的,写代码是我快乐。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。