手记

【九月打卡】第10天 多端全栈项目实战

课程名称:多端全栈项目实战:商业级代驾全流程落地


课程章节:  华夏代驾全栈小程序实战


课程讲师: 神思者


课程内容: 


    规则引擎的调用


课程收获:


    课程中的规则引擎是带有阿里血统的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}

    


如此 规则引擎调用成功了~



    

0人推荐
随时随地看视频
慕课网APP

热门评论

您好呀,语雀笔记可以分享一下么

查看全部评论