名称 最后更新
app 正在载入提交数据...
bootstrap 正在载入提交数据...
config 正在载入提交数据...
database 正在载入提交数据...
public 正在载入提交数据...
resources 正在载入提交数据...
routes 正在载入提交数据...
storage 正在载入提交数据...
tests 正在载入提交数据...
.editorconfig 正在载入提交数据...
.env.development 正在载入提交数据...
.env.production 正在载入提交数据...
.gitattributes 正在载入提交数据...
.gitignore 正在载入提交数据...
.styleci.yml 正在载入提交数据...
README.md 正在载入提交数据...
artisan 正在载入提交数据...
composer.json 正在载入提交数据...
package.json 正在载入提交数据...
phpunit.xml 正在载入提交数据...
server.php 正在载入提交数据...
webpack.mix.js 正在载入提交数据...

基础框架 - 后端管理系统

路由

路由提供者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;