为了账号安全,请及时绑定邮箱和手机立即绑定

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

标签:
SpringBoot

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


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


课程讲师: 神思者


课程内容: 


    规则引擎的调用


课程收获:


    课程中的规则引擎是带有阿里血统的QLExpress,作为一个嵌入式规则引擎在业务系统中使用,让业务规则定义简便而不失灵活。QLExpress支持标准的JAVA语法,还可以支持自定义操作符号、操作符号重载、 函数定义、宏定义、数据延迟加载等。至于其他的规则引擎,由于都不支持复杂语法,所以我们只能用QLExpress了


    https://img1.sycdn.imooc.com//632193660001a5a407390056.jpg

        规则引擎的规则:自己定义 比如

        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}

    


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



    https://img1.sycdn.imooc.com//63219320000129b507690660.jpg

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 2
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消