README.md 3.9 KB

基础框架 - 后端管理系统

路由

路由提供者Provider中预定义两个路由

  • bside 代表B端用户访问路由 完整路由:{{url}}/a/xxx
  • aside 代表管理员访问路由 完整路由:{{url}}/b/xxx

枚举

使用插件bensampo/laravel-enum 版本4 github地址:https://github.com/BenSampo/laravel-enum/blob/v4.2.0/README.md

  • 创建枚举类 : php artisan make:enum ”文件名“
  • 给枚举类生成注释: php artisan enum:annotate "文件名"
  • 如有翻译本地化需求,在 resources/lang/zh-CN/enums.php文件中中文翻译,英文语言包不用写,会自动翻译键名
  • 在验证器中使用 : '参数名' => ['required ', new EnumValue(CaptchaType::class)],(或者按照键名new EnumKey)
  • 可参考Enums/Common/Common.php枚举类

状态码

  • 该系统所有状态码都定义在 App\Enums\Commom\Code枚举类中
  • 大大类 和 大类不能变动 ,以大类为基准步长为100,根据业务自定义状态码

中间件

  • 登录验证中间件 ”loginauth“
  • Bside路由默认已经使用的中间件组为bside
  • Aside路由默认已经使用的中间件组为aside

参数加密

  • .env文件中有三个配置,其中iv必须是八位
  • 参数加密不开启的时候,前端正常传入参数,是明文不安全

控制器

  • 各个端控制器目录:App\Http\Controllers\XXXside
  • BaseController基础控制器,需要被其他控制器继承
  • 控制器中只需要干三件事情:
    第一,验证参数(如果注入了自定义验证Request就可以省略$request->validate这一步)
    第二,调用逻辑层Logic
    第三,success返回---错误直接走异常处理

请求and响应

  • 控制器方法注入请求Illuminate\Http\Request或者注入自定义请求表单
  • 创建请求表单: php artisan make:request 文件名
  • 请求表单中定义,用户是否有权限请求以及参数验证规则
  • 控制器中调用request->validated()
  • 响应只能调用BaseController的success()方法 > 注意!全站返回不能编写自定义的message,只能通过Code码

逻辑层

  • App\Http\Logic逻辑层只能被控制器调用
  • 要继承基类BaseLogic,return 使用基类定义的方法 ## 错误截获
  • 自定义某端全局异常:App\Exceptions\XXXsideGlobalException,throw new XXXsideGlobalException($code); 注意也只能传入Code码

注意!.env文件APP_DEBUG控制是否显示详细错误信息,否则就按照本地化的错误码的message来显示

日志规范

  • 配置文件logging.php中预定义了B端错误日志bside
  • 日志格式:logs -> bside(端)-> 2022-06(年月)-> 日期_级别.log (预定义了两个级别 errors和info)
  • errors错误日志会在异常抛出的时候自动记录,info手动调用
  • 共工具类App\Utils\LogUtils 提供了两个方法errorBside,infoBside记录日志

数据迁移

  • 每个版本的迭代如有数据结构修改,必须写到数据迁移里面
  • 创建迁移 :php artisan make:migration create_users_table --create=users 或者 php artisan make:migration add_votes_to_users_table --table=users (--create是创建表 --table是编辑表)
  • 编写迁移脚本
  • 执行迁移: php artisan migrate

数据填充

  • 每个版本的迭代如有数据预设置,必须写到数据填充里面
  • 创建填充 : php artisan make:seeder 文件名
  • 如果是简单的直接在seeder文件的run()方法中写insert
  • 如果较复杂需要编写模型工厂:php artisan make:factory UserFactory
  • 执行填充 : composer dump-autoload (用来重新生成composer映射) ,php artisan db:seed

Redis

  • 配置文件database.php中的redis
  • 所有使用到的键名需要在枚举类中定义:App\Enums\Common\RedisKey
  • 工具类App\Utils\RedisUtils中提供了获取redis实例的方法
  • traits文件App\Traits\RedisTraits中,定义了常用的redis方法,使用的时候只需要: use RedisTrait;