bright-liu4917 / bmo-low-code
后端低代码开发平台
Installs: 127
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 0
Open Issues: 0
pkg:composer/bright-liu4917/bmo-low-code
Requires
- php: ^8.0
- gupo/better-laravel: ^1.1
- gupo/laravel-database-logger: ^1.2.0
- gupo/laravel-db-query: ^1.0.0
- gupo/laravel-debugging: ^1.0
- gupo/laravel-enum: ^1.1.0
- illuminate/database: ^9.0|^10.0
- illuminate/support: ^9.0|^10.0
- laravel/framework: ^9.0
This package is auto-updated.
Last update: 2025-10-29 13:30:54 UTC
README
安装 Composer 包
composer require bright-liu4917/bmo-low-code
发布配置文件
php artisan vendor:publish --provider="BrightLiu\LowCode\Providers\LowCodeServiceProvider"
env配置文件
#### 是否开启调试模式 开启后 执行初始化 “/innerapi/v2/init/org-disease” 不会执行事务
DEV_ENABLE=false
#### 用户中心 #####
BMO_ORG_ID=用户中心ID 用户中心 org_id 可以不写,预留的
BMO_APP_ID=用户中心 app_id
BMO_APP_SECRET=用户中心 app_secret
#### 用户中心 #####
#### 业务中台 #####
BMP_CHEETAH_MEDICAL_PLATFORM_URI=业务中台接口地址 宝庆老师
BMP_CHEETAH_MEDICAL_CROWD_KIT_URI=人群基线接口地址 童java
#### 业务中台 #####
#### 低代码配置 #####
#### 如果前端入参有"X-Gp-Scene-Code"参数 配置scene_code 否则 disease_code
LOW_CODE_SET_USE_TABLE_FIELD = scene_code #默认
#### 低代码配置 #####
#### 基线表 等配置 #####
DB_MEDICAL_PLATFORM_HOST
DB_MEDICAL_PLATFORM_PORT
DB_MEDICAL_PLATFORM_DATABASE
DB_MEDICAL_PLATFORM_USERNAME
DB_MEDICAL_PLATFORM_PASSWORD
DB_MEDICAL_CROWD_PSN_WDTH_TABLE=人员宽表一般是"crowd_psn_wdth"
DB_BUSINESS_CENTER_CROWD_TYPE_TABLE=患者标签关系表一般是 "feature_user_detail"
#### 基线表 等配置 #####
内置方法
低代码查询数据
QueryEngineService::instance()
->autoClient()//自动获取客户端入参数信息
//->innerJoin()
// 设置查询条件 内置多种查询方法 whereUserId、 whereManageOrgCode、 whereIdCrdNo
->whereMixed(
[
["ptt_crwd_clsf_cd", "=", "9efe2444eaf14606896bc68290abc5e7"],//模糊查询
["ptt_nm", "like", "朱文奎f"],//模糊查询
["crowd_id", "=", "330121196205038717f"]
// ["or", "id_crd_no", "like", "330121196205038717f"],//或查询
// ["ptt_nm", "in", ["active", "pending"]],//包含 查询
// ["or", "age", "not in", [18, 20]], //不包含
// ["slf_tel_no", "between", ["2023-01-01", "2023-12-31"]],//区间查询
// ["or", "slf_tel_no", "not between", [60, 80]],//不在区间
// ["slf_tel_no", "is", "null"],//是null
// ["slf_tel_no", "is not", "null"],//不是null
// ["raw", "slf_tel_no = 'active' AND slf_tel_no >= 90"]//原生sql
],
)
->setCache($ttl)//设置缓存时间
->orderBy([["id_crd_no", "asc"]])//排序
->select(["fields"])//查询字段
->getCountResult()//多个查询方法
获取患者基础信息
ResidentService::instance()->getBasicInfo($empi)
获取患者完整信息
ResidentService::instance()->getInfo($empi)
更新患者信息
ResidentService::instance()->updateInfo($empi,['age'=>18])
纳管患者 相关参数 manage_org_code,manage_org_name,manage_doctor_code,manage_doctor_name 如不入参 会通过上下文获取
ResidentService::instance()->manageResident($empi,["相关参数"])
出组患者 相关参数
ResidentService::instance()->removeManageResident($empi,boolean(是否清理纳管信息默认为true))
创建管理方案
ResidentService::instance()->createManagePlan(....)
dependencies
通过配置 low-code.dependencies 项,重写包内部的处理逻辑,目前支持如下映射:
| 路由 | 源 | 说明 |
|---|---|---|
| api/v2/resident/resident-archive/info | \BrightLiu\LowCode\Resources\Resident\ResidentArchive\InfoResource::php | 居民档案详情数据 |
| api/v2/low-code/list/query | \BrightLiu\LowCode\Resources\LowCode\LowCodeList\QuerySource::php | 患者列表数据 |
QuerySource
<?php declare(strict_types=1); use BrightLiu\LowCode\Resources\Resident\ResidentArchive\InfoResource; use BrightLiu\LowCode\Support\Attribute\Converters\Age; use BrightLiu\LowCode\Support\Attribute\Converters\IdCrdNo; use BrightLiu\LowCode\Support\Attribute\Converters\SlfTelNo; class BizInfoResource extends InfoResource { protected function fetchConversion(): Conversion { // 可选为每个字段转换类,在其中处理值转换逻辑 // 参考 BrightLiu\LowCode\Support\Attribute\Converters 中的内置转换类 return Conversion::make([ Age::class, IdCrdNo::class, SlfTelNo::class ]); } /** * 白名单 * PS: 优先级高于黑名单 */ protected function fillable(): ?array { // PS: 只有在其中的字段才会返给前端,null时不限,默认为null。 // - 优先级高于黑名单。 return null; } /** * 黑名单 */ public function guarded(): ?array { // PS: 在其中的字段不会返给前端,null时不限,默认为null。 // - 优先级低于黑名单。 // - 当filleable方法存在有效值时,该方法无效。 return null; } }
InfoResource
注意事项
1.
⚠️⚠️⚠️ api/v2/low-code/list/query 需要业务自己继承后,重新实现 主要是resource 返回数据结构 ⚠️⚠️⚠️
2.
通知前端必须header入参
X-Gp-Org-Id 机构ID 前端自己申请写死
X-Gp-System-Code 系统编码 研发PM定义
X-Gp-Disease-Code 疾病编码 后端开发定义 比如 (sanya)
X-Gp-Scene-Code 场景编码 后端开发定义 比如配药(CHRONIC_DISEASE)
X-Gp-Arc-Code Arc_code 前端自己获取
小工具
1 低代码查询方式 入参print_sql=1 打印原生sql 如下图 截图1
截图1
store/templates.json 模板文件以下内容,案例文件在README.md,同级目录下 ⚠️json 内容根据需求自定义
最后完成初始化 如手动调用
post /innerapi/v2/init/org-disease
header 必须入参
X-Gp-Org-Id 机构ID 前端自己申请写死
X-Gp-System-Code 系统编码 研发PM定义
X-Gp-Disease-Code 疾病编码 业务中台后端开发定义 比如 (SANYA)
X-Gp-Scene-Code 场景编码 后端开发定义 比如 “慢病配药”(CHRONIC_DISEASE)
X-Gp-Arc-Code Arc_code 前端自己获取
json 入参
table_name:场景表名 向业务总台后端要表名
