应用场景
针对需要动态占用库存并且在建立订单时只能选择空闲状态车辆(或产品、服务)的租赁、车辆、服务的预约排期处理。中间件具备两个功能,新增排期记录和更新排期记录。中间件部署在自身服务器,轻流端通过webhook对中间件数据库进行创建和更新,订单表单中通过Q-Linker进行接口查询数据库空闲车辆(或产品、服务)。
注:应用场景主要针对预约制,所以传递数据必须包含起始时间和终止时间,相当于提前预定时间段范围,如果涉及到时间延长就需要从轻流端考虑逻辑设计。
预备表单
轻流这边预备几项基础操作表单,有利于做为独立模块,在需要的时候直接可以通过Q-Robot来进行相关处理。
注:由于设计之初是用于车辆租赁排期使用,所以以该场景的字段名称距离,实际上名称可以根据自己的实际场景定义。
创建/更新记录表
车型:定义车型,在订单查询时可以实现双重筛选,根据车型来筛选有效车牌,如果不是排车场景也可以换成例如房间类型、产品类型等
车牌号:在建立订单查询占用状态时主要获取的信息,如果不是排车场景,也可以换成例如房间号、产品SN码等
排车订单:具体订单号,可以为空,但是要要更新该记录状态来定义这条记录是否被占用的情况下是以订单号来进行查询的,所以创建订单时一定要将订单号传递过来,便于我们要更新记录占用状态时候可以识别到
取车时间:最重要的起始时间,系统会根据取车时间和还车时间来判断订单是否被占用,例如创建订单时我们要先定义取车时间和还车时间,这时订单选择的时间会和数据库的记录进行匹配,一旦两边时间产生了任何重合就判定为占用,则不显示这条记录所包含的车牌号,如果没有重合占用则可被订单引用。
还车时间:最重要的结束时间,意义与取车时间一样,只是一个是起始时间,一个是终止时间
租期时长:非必要内容,只是为了方便数据存储和传输的时候记录,如果表单内自己计算的话这个字段可以忽略
排车状态:定义该条记录数据的当前状态,用数字传递和存储
1 代表有效占用
2 代表取消占用
3 代表订单完结
记录类型:定义本次数据传输的类型是创建数据还是更新数据,默认内容0或者1,0代表创建数据,1代表更新数据(传输到数据库时就是存储0或者1来进行判断)
中间件源代码
1、上传代码
注:这里需要一定的运维知识,源代码采用的thinkphp框架,代码类型为PHP,使用时绑定根目录为public文件夹,设定thinkphp标准伪静态(宝塔系统控制面板可直接选择设置thinkphp框架的伪静态)
完全不懂的如何部署的不太建议去使用中间件了,部署过程有疑问的可以评论区询问
2、初始化数据库文件
将源代码中的application/carmng.sql 文件导入数据库
3、初始化数据库接口
修改源代码中的application/database.php文件,
database修改为自己的数据库名
username修改为自己的数据库用户名
password修改为自己的数据库密码
dns中的数据库名称替换为自己的数据库名
return [
// 数据库类型
'type' => 'mysql',
// 服务器地址
'hostname' => '127.0.0.1',//一般不用修改,但是连接不上的时候可以尝试用数据库的ip地址
// 数据库名
'database' => '数据库名', //填写实际的数据库名
// 用户名
'username' => '数据库用户名',//填写实际的数据库用户名
// 密码
'password' => '数据库密码',//填写实际的数据库密码
// 端口
'hostport' => '3306',
// 连接dsn
'dsn' => 'mysql:dbname=数据库名;host=127.0.0.1',//需修改数据库名
// 数据库连接参数
'params' => [],
// 数据库编码默认采用utf8
'charset' => 'utf8',
// 数据库表前缀
'prefix' => 'u_',
// 数据库调试模式
'debug' => true,
// 数据库部署方式:0 集中式(单一服务器),1 分布式(主从服务器)
'deploy' => 0,
// 数据库读写是否分离 主从式有效
'rw_separate' => false,
// 读写分离后 主服务器数量
'master_num' => 1,
// 指定从服务器序号
'slave_no' => '',
// 是否严格检查字段是否存在
'fields_strict' => true,
// 数据集返回类型
'resultset_type' => '\think\Collection',
// 自动写入时间戳字段
'auto_timestamp' => false,
// 时间字段取出后的默认时间格式
'datetime_format' => 'Y-m-d H:i:s',
// 是否需要进行SQL性能分析
'sql_explain' => false,
];
配置轻流接口
由于有创建和更新两种状态,建议做两个一样的应用,或者在应用当中判断是更新还是创建来做分支处理,可以用文本字段自动判定然后输入0或者1,0代表创建,1代表更新
WEBHOOK
在之前与制作的「创建/更新记录表」中编辑应用,添加流程,添加webhook流程,如下设置:
URL:设置为中间件部署的网址
QueryParam设置:
‘car_xing’: ‘全新CT6’, //车型
‘car_pai’: ‘粤XLT188’, //车牌号
‘car_pcdd’: ‘PCDD20130612080000’,//订单编号
‘quche_time’: ‘2023-06-01 08:00:00’, //取车时间
‘huanche_time’: ‘2023-06-10 08:00:00’,//还车时间
‘zuqi_shichang’: 1个月2天,//租期时长
‘paiche_zhuangtai’: 1,//状态:1/有效排车/2/取消排车/3/收车完结
‘is_update’: 0 //类型:0/创建数据/1更新数据
QueryParam中绑定实际需要的字段
请求方式:POST (就是webhook设置的Method参数)
Body Type:设置为url-encoded
这里配置完成之后,后续的相关动作都可以通过Q-Robot创建这里的数据来达到创建和更新中间件数据的目的,另外在中间件刚刚配置完成时,数据库空着,理论上这时候还没有车辆可以被订单索引调用,所以理论上在建立好车辆档案后,车辆档案需要先创建中间件数据,相当于占位,状态数据可以直接传递2,这样相当有有这个车辆(或产品服务)进入数据库了,同时有没有将库存占用,这样就可以索引调用了。
Q-Linker
主要配置在需要调用查询是否可用库存的地方,例如订单发起页面当中,增加Q-Linker字段,也可以在轻商城里面直接配置Q-Linker,然后在具体表单中使用插件预设内容,具体配置为
创建变量(用于后续具体页面绑定字段):车型、取车时间、还车时间
URL:http://这里填写你自己部署中间件的网址/index/index/search
QueryParam设置:
car_xing 绑定车型
quche_time 绑定取车时间
huanche_time 绑定还车时间
Method设置:GET
Result Format设置:基础别名:车牌号,JSON Path:$.car_pai
轻商城的模版配置好后,在到订单发起页面当中增加Q-Linker字段,配置模式为「使用插件中心模版」,然后选中刚刚配置的模版,接着将字段与模版当中刚才建立的变量进行绑定:
点击完成后,Q-Linker字段开启自动触发,接着建立一个数据关联字段,关联目标就选择这个Q-Linker,关联字段选择车牌号(刚才Q-Linker的Result Format配置的就是回调的车牌信息),自此完成配置,可以发起新的订单测试一下,数据是否生效!
更多的灵活应用就可以根据自身需要调用Q-Linker查询或者通过Q-Robot来添加创建/更新表来实现了。
没有回复内容