EasyTalk 项目介绍
来源:互联网 发布:中昌数据什么时候开盘 编辑:程序博客网 时间:2024/06/08 03:08
EasyTalk 项目介绍
GitHub 地址
https://github.com/yangqingxian/thinkphp/tree/feature/EasyTalk下载地址:
https://github.com/yangqingxian/thinkphp.git
设计初衷
自己动手设计该系统主要是公司内部需要一个能发布一些常见问题的系统,可以方便员工查看一些东西,该系统主要需要实现的功能有:
- 可以限制人员编辑(针对人员)
- 可以设置问题可修改和不可修改(针对问题)
- 问题下可增加插件
- 问题下可留言
- 支持模糊搜索
- 支持部门搜索
- 提问可以@别人回答
- 提问支持打标签
- 支持标签搜索
- 支持图片内容上传显示
然后又为了能使该系统能贴合进公司现有的管理系统,所以还需要加上员工使用邮箱和密码进行登录,或者直接从现有管理系统中通过token
进行登录.本来是本着去找开源项目直接该的心态去完成这个任务的,但是本人性格实在是......不是自己的东西用起来总是感觉不方便,所以宁可自己从头开始搭建了,于是就用了10天时间完成了这个系统的第一版,大体能使用了,但是可能还存在这样或者那样的错误,继续迭代吧.
主要实现功能
每个用户在登录后都可以进行问题的发布,在问题中可以进行附件上传,图片上传等,而且在其中可以设置标签,@他人等功能,并且在其中可以设置可以编辑的人员,该人员具有编辑,删除该问题的权限.在问题发布成功后,用户可以进行回复,该回复会以socket
的方式通知在线用户.
采用软件与服务
- 开发框架:thinkphp 3.2.3
- 数据库:MongoDB
- 文件存储:OSS
- 消息通信:WorkMan
- 文本编辑js插件:umeditor
- 辅助js:fist
- 前端框架:Bootstrap
其中PHP操作MongoDB采用的扩展库是MongoDB
,不是Mongo
,所以请确保你有安装MongoDB扩展.
主体设计理念
本着不引入session
的理念,所以在用户登录成功后,均使用用户的user_id/user_name/department_id/department_name
以及后台的一个KEY
组成token
,在用户的所有操作中都需要提交这些字段值,在后台验证成功后才可以进行相应的操作,否则会视用户为违规操作,跳转到登录页面重新登录.
上传操作中,会先将附件上传至临时目录,在用户点击确认后,才会将附件转移到最终保存目录,所以只需定期清理临时文件夹就可以减少OSS
上的文件冗余.
为了减少用户在多个页面之间进行跳转,而导致socket
重连,所以在首页中引入iframe
,所有操作均在该iframe
中进行完成,保证除非用户关闭窗口,否则不会与后台socket
进行重连.
而在iframe
中,为了保证高度的自适应,所以是在嵌套iframe
的页面中设置了两个隐藏域:
<input type="hidden" id="pageName" name="pageName"><input type="hidden" id="count" name="count">
再来通过在各个页面中修改这两个隐藏域的值,再来根据该隐藏域的值设置iframe
的高度,以此来达到每个页面的高度随着内容进行修改的功能.
界面展示
登录页面
首页
新增问题页面
问题详细展示
@消息查看页面
发布问题回复页面
文件结构与功能
MongoDB
扩展编写的MongoDB数据库操作类 BaseOperate 底层操作类的基类,主要负责提供单例模式中的类实例对象 QuestionOperate 问题的底层操作类,为了减少控制器中代码数量,所以大部分功能均在该类中实现 MessageOperate 消息的底层操作类 OSS Common.class.php OSS配置类 Attachment.class.php 文件,图片上传到OSS时的类 umeditor umeditor.config.js umeditor配置文件 dialogs image image.js umeditor中图片上传操作js web-msg-sender Question.php 借助WorkerMan实现的socket通信 数据结构
该软件主要有4个数据库,各个数据库名称与主要功能如下:
- Question:问题表,主要存储问题主体
- Message:回复消息,主要存储一个用户对另一个用户的消息回复
- Response:@他人的消息存储
- Assistance:辅助参数存储
"Question"数据结构
"Message"数据结构
"Response"数据结构
- EasyTalk 项目介绍
- 开源微博EasyTalk任意用户密码修改 (变量覆盖)
- 项目介绍
- 项目介绍
- 项目实战--项目介绍
- 微博项目---项目介绍
- 项目开发介绍
- 校校通项目介绍
- 保全系统项目介绍
- Jetspeed项目的介绍
- 开源项目介绍
- GanttProject 项目介绍
- SegWord项目介绍
- Jetspeed项目的介绍
- Apache java项目 介绍
- FlashBlog v1 项目介绍
- 企业项目管理软件介绍
- Jetspeed项目的介绍
- 线程与进程的分析
- 砝码称重
- C++中,有哪4种与类型转换相关的关键字?各有什么特点?应该在什么场合下使用?
- 实践mahout推荐引擎
- setTimeout,异步,原理
- EasyTalk 项目介绍
- Diplomas and Certificates (Codeforces
- SVM+HOG对图像进行多分类(OpenCV实现)
- MapReduce练习:DataJoin联结练习
- [iOS [转] CAEmitterLayers属性解释] 鱼缸气泡效果(非完美)
- 爬取动态的网页。
- 一次完整的HTTP请求过程
- 教你如何迅速秒杀掉:99%的海量数据处理面试题
- 为什么选择Nginx