fmock icon indicating copy to clipboard operation
fmock copied to clipboard

a forums use laravel 7

StyleCI Build Status License License

About FMock

A forums build with laravel.

FMock墨客社区。

客户端项目地址 https://github.com/ShyZhen/fmock-uniapp

Environment

必要

  • PHP >= 7.2.5
  • Mysql
  • Redis

以下为非必要

  • Nodejs
  • ElasticSearch = 7.4.2
  • ElasticSearch-analysis-ik 7.4.2
  • RabbitMQ

Installation

1.下载代码安装依赖

  • git clone https://github.com/ShyZhen/fmock.git
  • 创建项目数据库
  • copy .env.example .env and edit .env

除了基本的APP配置、数据库配置、以及redis缓存配置(前四个代码块),仍需配置Smtp 邮箱服务、Sms短信服务、Github OAuth 第三方登录。 根据自己vhost配置 APP_URL CLIENT_URL SERVER_URL ADMIN_URL 如果想上传文件到七牛,需要开启.env中的QiniuService=true,并配置好七牛的各项参数。

  • composer 全量镜像不稳定,推荐更换composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
  • composer self-update && composer install

2. 执行初始化安装

  • php artisan fmock:install

3. 权限设置

  • chmod -R 766 storage/ && chmod -R 766 bootstrap/cache/ 根据自己实际用户组情况设置777或者766

4.异步、消息队列开启(目前仅有发送短信、邮件封装了redis队列,QueueStart=true时必须执行)

  • ~~使用redis做队列:php artisan queue:work redis --queue=FMockTestQueue,sendSmsQueue --daemon --quiet --delay=3 --sleep=3 --tries=3~~

ES Quick Use

Code Info

  • 新建es类并继承抽象类Base/ElasticSearch,例如PostElasticSearch
  • 必须实现抽象函数 createIndexgetIndexName,这样就可以完全使用基类中的任意方法(其中createIndex方法仅在es:init中使用)
  • 使用方法参考Web/TestController@esTest

ES Init

  • php artisan es:init, 该命令将创建文章默认的index,并设置文章默认的mappings

ES observer

  • 需要提前开启env中的ESToObserver
  • 创建Observers,例如app/Observers/PostObserver.php
  • app/Providers/ObserversServiceProvider.php中添加观察者模型,例如Post::observe(PostObserver::class);

RabbitMQ Quick Use

Code Info

  • 函数类库在\app\Library\RabbitMQ下,分别为生成类、消费类、消费回调业务函数

Consume Bash Start

  • 启动消费脚本前要确定队列、交换机等存在,可以事先调用一次send:
   $rabbitMQ = new Publish();
   $params = ['key1' => 'value1', 'key2' => 'value2', 'action' => 'sms'];
   print_r($rabbitMQ->send(env('RABBITMQ_QUEUE'), json_encode($params)));
  • 启动消费脚本命令:
   php artisan rabbitmq:start

Consume Callback

  • 启动消费脚本之后,所有的回调逻辑处理函数全部在app\Library\RabbitMQ\RabbitMQHandle.php文件中,你只需要更新此处即可

API Info

  • 支持邮箱、手机号sms(阿里短信服务)验证码发送,以及完善的正则匹配
  • 支持邮箱、手机号(中国)登录注册
  • 多重验证,包括IP限制,账号尝试失败限制,有效避免爆破
  • 完全前后端分离模式,token鉴权,多端分开部署
  • 共用一套API接口代码,便于维护
  • 代码分层架构,controller service repo model 便于扩展
  • 支持GitHub第三方登录(后续会支持微信登录)
  • 支持微信小程序登录
  • 支持切换上传图片到七牛云与本地存储,使用七牛融合CDN进行静态资源加速
  • 七牛图片样式:fmock 最大宽度1080缩放,供内容详情使用;fmockmin 固定宽高剪裁,供首页海报图使用;
  • 记录用户上传文件日志,用户后续控制
  • 支持社区的基本操作:普通文章模块、问答模块、点赞、评论、搜藏
  • Delta格式富文本编辑器
  • 支持粉丝系统,查看用户关注、粉丝列表等操作,支持redis以及关系型数据库两种存储方式,量小推荐使用数据库
  • 支持ElasticSearch,使用Observer自动插入ES数据
  • 支持短视频上传七牛并切片、添加水印等操作(记得更新相关文件上传配置,例如nginx的client_body_temp/client_body_buffer_size 10/client_max_body_size 1024m)

Other file

  • 代码结构 代码结构
  • Postman合集(仅供参考)
  • rp原型

API Index

登录注册

  • 发送注册验证码
  • 用户注册
  • 检查用户状态
  • 登录
  • 发送改密验证码
  • 修改密码
  • 我的信息
  • 获取GitHub登录url
  • 登出

用户信息

  • 获取指定用户信息
  • 更新个人信息
  • 更新个人昵称
  • 某用户发布的所有评论(包括自己)
  • 某用户发布的所有文章(包括自己)
  • 某用户发布的所有(回答)文章(包括自己)
  • 查看某个用户与自己的关注、互粉状态
  • 查看某个用户的关注列表(包括自己)
  • 查看某个用户的粉丝列表(包括自己)
  • 查看我关注的用户们最新发布的文章、回答、视频

文件上传相关

  • 上传图片
  • 更换用户头像
  • 上传视频并入库
  • 前端上传获取token
  • 七牛工作流转码回调
  • 保存数据入库
  • 轮询videoItem获取转码结果

视频(集)模块

  • 更新视频信息,上传转码后调用
  • 删除我的某个视频

文章模块

  • 获取首页文章列表
  • 获取指定文章
  • 新建文章
  • 更新指定文章
  • 删除指定文章
  • 获取指定文章的回答
  • 获取指定回答详情
  • 新建(回答)文章
  • 更新指定(回答)文章
  • 删除指定(回答)文章
  • 获取我关注的所有文章
  • 收藏某篇文章
  • 取消收藏文章

交互动作

  • 赞/取消赞(文章)
  • 踩/取消踩(文章)
  • 查看赞/踩/收藏状态(文章)
  • 赞/取消赞(回答)
  • 踩/取消踩(回答)
  • 查看赞/踩/收藏状态(回答)
  • 赞/取消赞(评论)
  • 踩/取消踩(评论)
  • 查看赞/踩/收藏状态(评论)
  • 赞/取消赞(视频)
  • 踩/取消踩(视频)
  • 查看赞/踩/收藏状态(视频)
  • 关注、取关某用户

评论相关

  • 获取文章评论
  • 创建评论、回复
  • 删除自己的评论、回复

Admin管理后台

Security Vulnerabilities

If you discover a security vulnerability within FMock, please send an e-mail to huaixiu.zhen via [email protected]. All security vulnerabilities will be promptly addressed.

License

The FMock is open-sourced software licensed under the MIT license.