bright-liu4917 / bmo-low-code
后端低代码开发平台
Installs: 155
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-30 14:50:55 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"
#### 基线表 等配置 #####
## 地区 ##
DB_REGION_CONNECTION=mysql
DB_REGION_HOST=dphzmy-ztkrn3qkvmu6fbk9-pub.proxy.dms.aliyuncs.com
DB_REGION_PORT=3306
DB_REGION_DATABASE=core_knlg
DB_REGION_USERNAME=3ArpWTh77g35xSoGAW6gTf0o
DB_REGION_PASSWORD=2DsVhJkKEb6QuSEMszMdIKxjz0s1UP
DB_REGION_CONNECTION_TIMEOUT=10
DB_REGION_PREPARES=false
内置方法
低代码查询数据
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:场景表名 向业务总台后端要表名
