课程名称:多端全栈项目实战:商业级代驾全流程落地
课程章节: 华夏代驾全栈小程序实战
课程讲师: 神思者
课程内容:
规则引擎的调用
课程收获:
课程中的规则引擎是带有阿里血统的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}
如此 规则引擎调用成功了~
热门评论
您好呀,语雀笔记可以分享一下么