黑马瑞吉外卖day06中点击去结算没有跳转到订单界面的问题解决

问题:瑞吉外卖项目的前端内容里,在购物车中点击去结算没有跳转到订单界面,如下截图

解决方法 :在AddressBookController里,找到getDefault方法,把

queryWrapper.eq(AddressBook::getId, BaseContext.getCurrentId());

改为

queryWrapper.eq(AddressBook::getUserId, BaseContext.getCurrentId());

错误原因:由于构建查询语句匹配错误,用用户的id去匹配地址的id,从而导致查询不到对应用户的默认地址(当初没有直接复制资料,自己打,没想到出问题了。。。)

再说说我是这么解决的 

解决过程:

第一步:先查找index.html页面,发现它只是做了订单的页面跳转,没有其它处理,排除出错

//跳转到去结算界面
toAddOrderPage(){
    if(this.cartData.length > 0){
        window.requestAnimationFrame(()=>{
            window.location.href ='/front/page/add-order.html'
        })
   }
}

第二步:查看add-order.html页面,直接查看钩子函数即初始化的函数(因为:页面一跳转进来就直接跳转到另外一个页面,说明是初始化时就有问题了)

initData(){
    //获取默认的地址
    this.defaultAddress()
    //获取购物车的商品
    this.getCartData()
},
//获取默认地址
async defaultAddress(){
    const res = await  getDefaultAddressApi()
    if(res.code === 1){
        this.address = res.data
        this.getFinishTime()
    }else{
        window.requestAnimationFrame(()=>{
        window.location.href = '/front/page/address-edit.html'
    })
  }
},

我们发现,这里有个获取默认地址的请求,我们ctrl+鼠标左键点击getDefaultAddressApi()

//获取默认地址
function getDefaultAddressApi() {
  return $axios({
    'url': `/addressBook/default`,
    'method': 'get',
  })
}

发现这里有个ajax请求,很好,我们就可以在Controller层找问题,点开AddressBookController中,找到对应的get请求且地址映射为default的方法,随后比对就发现了问题

    //查询默认地址
    @GetMapping("default")
    public R<AddressBook> getDefault(){
        LambdaQueryWrapper<AddressBook> queryWrapper = new LambdaQueryWrapper<>();
        //queryWrapper.eq(AddressBook::getId, BaseContext.getCurrentId());错误的
        queryWrapper.eq(AddressBook::getUserId, BaseContext.getCurrentId());
        queryWrapper.eq(AddressBook::getIsDefault,1);

        AddressBook addressBook = addressBookService.getOne(queryWrapper);

        if(addressBook != null){
            return R.success(addressBook);
        }else{
            return R.error("没有找到该对象");
        }
    }

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值