提示
说明:在开发调试过程中难免会有测试,调试产生脏数据,为了不影响后续开发,需要将调试数据清空.需要对数据库,缓存,以及es进行清空,如果每次都整体初始化是非常繁琐的,因此特别整理该文档,方便开发调试
测试实例
在开发过程中,随着业务变化,后台业务菜单一定会出现调整,这里选用最具有代表性的菜单(Permission)调试来说明
提示
说明:在开发调试过程中难免会有测试,调试产生脏数据,为了不影响后续开发,需要将调试数据清空.需要对数据库,缓存,以及es进行清空,如果每次都整体初始化是非常繁琐的,因此特别整理该文档,方便开发调试
在开发过程中,随着业务变化,后台业务菜单一定会出现调整,这里选用最具有代表性的菜单(Permission)调试来说明
都位于common目录下:
common/type/index.uts公共类型common/common.cssApp.uvue中引入<style>
/*每个页面公共css */
@import "./common/uni.css";
@import "./common/common.css";
/* #ifdef WEB */
.uni-top-window uni-tabbar .uni-tabbar {
background-color: #fff !important;
}
/* #endif */
/* #ifdef MP-WEIXIN */
page {
background-color: #efeff4;
}
/* #endif */
</style>
针对业务开发的自定义全局组件全部位于 youhujun/V1/components目录下
通过pages.json中的easycom可以看出基本可以满足大部分组件定义需要,特殊情况处理可以自行调整
"easycom": {
"autoscan": true,
"custom": {
// "^uni-(.*)": "@/uni_modules/uni-$1/components/uni-$1/uni-$1.vue",
"^yh-(.*)": "@/youhujun/V1/components/yh-$1/yh-$1.uvue",
"^yh-(.*)-(.*)": "@/youhujun/V1/components/yh-$1-$2/yh-$1-$2.uvue",
"^yh-(.*)-(.*)-(.*)": "@/youhujun/V1/components/yh-$1-$2-$3/yh-$1-$2-$3.uvue",
"^yh-(.*)-(.*)-(.*)-(.*)": "@/youhujun/V1/components/yh-$1-$2-$3/yh-$1-$2-$3-$4.uvue"
}
},
虽然事件结合事件监听也可以是异步执行,但是队列可以更加灵活的控制执行时间和执行次数,以及执行优先级等,所以项目异步全局使用队列来实现.
use App\Jobs\LaravelFastApi\V1\Admin\Login\AdminLogoutJob;
use App\Jobs\LaravelFastApi\V1\Admin\Login\EsAdminLoginJob;
//登录成功以后 12个小时以后数据库自动退出
//如果是开发模式就不执行自动退出
$developMode = config('youhujun.develop_mode');
if (!$developMode) {
AdminLogoutJob::dispatchIf($adminObject->remember_token, $adminObject)->delay(now()->addSeconds(3600 * 12));
}
EsAdminLoginJob::dispatchIf($adminObject->remember_token, $adminObject)->delay(now()->addSeconds(3));
因为用户资产高度敏感,所以单独拿出一章来说明
提示
注意需要结合DTO BusinessChangeUserAssetDTO
以下分别是 用户资产变更事件
提示
主要介绍如何使用laravel-fast-api-youhujun组件包的事件,事件作为AOP切面编程思想的直观落地体现
注意
1选择用事件来处理,虽然看起来冗余繁琐,但是可以实现松耦合和高可扩展性
2因为新版采用的是mysql+es双写架构,因此如果es需要同步处理,建议创建对应事件,代码解耦同步处理.
3如果需要异步处理,可以创建job队列,可以根据情况,将Job队列或者放在Service业务逻辑层,或者放置在EventListener事件监听层处理
提示
laravel-fast-api-youhujun底座提炼封装了契约层,用于实现通用基础功能和自由业务特殊业务逻辑的解耦
下面通过示例来说明如何处理使用
提示
再次建议,如下面示例,针对该契约,业务内部传递参数使用AddUserHandlerContractDTO,避免使用数组传递参数,
这样数据结构更清晰,便于维护
EsQueryFacade 是游鹄生态系统中 Elasticsearch 查询的封装门面,提供 Laravel 风格的链式查询语法,自动将常见查询条件转换为 ES DSL 语法。
特点:
=、>、>=、<、<=、!=、like、in、between、null/notNull 等常用操作符orWhere、orWhereLike 逻辑查询.keyword 后缀LengthAwarePaginator)和普通查询