课程名称:多端全栈项目实战:商业级代驾全流程落地
课程章节: 华夏代驾全栈小程序实战
课程讲师: 神思者
课程内容:
规则引擎的调用
课程收获:
课程中的规则引擎是带有阿里血统的QLExpress,作为一个嵌入式规则引擎在业务系统中使用,让业务规则定义简便而不失灵活。QLExpress支持标准的JAVA语法,还可以支持自定义操作符号、操作符号重载、 函数定义、宏定义、数据延迟加载等。至于其他的规则引擎,由于都不支持复杂语法,所以我们只能用QLExpress了

规则引擎的规则:自己定义 比如
code里面 Y代表年份接下来就是2022N版本第一版
name可以是汉字文字备注,
rule是规则编号等
status 状态 1使用 2未使用
creatrtime 创建时间等
接下来是把规则引擎打包成jar文件,然后再项目中引用
接下来定义 estimateOderChange
@RestController@RequestMapping("/charge")@Tag(name = "ChargeRuleController", description = "代驾费用的Web接口")public class ChargeRuleController{
@PostMapping("/estimateOrderCharge")
public R estimateOrderCharge(@RequestBody @Valid EstimateOrderChargeForm form) {
HashMap map = chargeRuleService.calculateOrderCharge(form.getMileage(), form.getTime(), 0, key);
return R.ok().put("result", map);
}} 调用这个方法的时候需要传入两个参数 分别是 里程和下单时间
接下来需要编写form类
@Data@Schema(description = "预估代驾费用的表单")public class EstimateOrderChargeForm {
@NotBlank(message = "mileage不能为空")
@Pattern(regexp = "^[1-9]\\d*\\.\\d+$|^0\\.\\d*[1-9]\\d*$|^[1-9]\\d*$", message = "mileage内容不正确")
@Schema(description = "代驾公里数")
private String mileage;
@NotBlank(message = "time不能为空")
@Pattern(regexp = "^(20|21|22|23|[0-1]\\d):[0-5]\\d:[0-5]\\d$", message = "time内容不正确")
@Schema(description = "代驾开始时间")
private String time;}下面进行测试 传入的参数 分别是 12.5公里 时间是凌晨一点
{
"msg": "success",
"result": {
"amount": "115.00", //总金额
"chargeRuleId": "714601916034166785", //使用的规则ID
"baseMileage": "8", //代驾基础里程
"baseMileagePrice": "85", // 基础里程费
"exceedMileagePrice": "3.5", //超出规定里程后每公里3.5元
"mileageFee": "102.50", //本订单里程费
"baseMinute": "10", //免费等时10分钟
"exceedMinutePrice": "1.0", //超出10分钟后,每分钟1元
"waitingFee": "0.00", //本订单等时费
"baseReturnMileage": "8", //总里程超过8公里后,要加收返程费
"exceedReturnPrice": "1.0", //返程里程是每公里1元
"returnMileage": "12.5", //本订单的返程里程
"returnFee": "12.50", //本订单返程费
},
"code": 200}
如此 规则引擎调用成功了~

随时随地看视频
热门评论
-
会飞的鸟12342023-04-18 0
查看全部评论您好呀,语雀笔记可以分享一下么