文章

立即抢购和我的订单展示功能的实现

Title01.png内容概述

今天我要为我的小程序实现一个小功能:对于具体服务项目的抢购操作。

因为只是一个毕设,所以正儿八经的支付功能就不去实现了,只需要在对应界面点击立即抢购即可以在后端生成对应的订单数据,然后将对应订单数据返回给微信端用于我的订单展示。

订单页面如下:

Title02.png

逻辑实现

2.1 立即抢购

依旧首先展示代码

微信端代码如下:

  showSuccessMessage() {
    wx.request({
      url: 'http://localhost:11000/api/order',
      method:'post',
      header: {
                'content-type': 'application/json', // 默认值
                'token':u.token
              },
      data:{
        userId:u.id,
        price:this.data.program.price,
        programId:this.data.program.id
      },
      success(res){
          if(res.data.code == 200){
            Message.success({
              context: this,
              offset: [20, 32],
              duration: 3000,
              content:'恭喜您抢购成功!',
            });
        }
      }    
    })
  },

总的来说就是在点击按钮之后发送一个请求给后端,携带的数据为本页面展示的项目价格,项目id和userid三个,然后经过后端逻辑的处理给予一个返回值。如果返回值的code值为200则代表成功传输数据,然后就在微信端界面弹出提示信息。

后端代码展示:

@PostMapping
    @ApiOperation("添加订单")
    public ResponseResult add(@RequestBody Orders order){
        Boolean add = orderService.save(order);
        if(!add){
            throw new CustomException(60001,"订单添加失败!!");
        }
        return ResponseResult.success();
    }

后端则是一个很简单的增加方法,需要接受一个order对象,这个order对象包含的属性明显多于我们传入的数据量,可是即使如此也能当作一个order对象使用,因为毕竟我们没限制order的全部对象不能为空。

使用提前封装好的增加函数将order存入数据库并返回一个bool值,若成功则返回正确信息,若失败则返回错误log。

在微信端我们发出的请求也是标准格式:指定请求地址,请求方法,请求头,以及具体的数据。

请求数据也是通过键值对的方式::::》数据库中属性名:需要传入的数据(本界面的data申明里的program.id和program.price以及从本地存储器中获取到的用户id)。

请求成功之后,微信端收到的返回体一大坨,我们需要在其中找寻我们需要的信息。比如返回数据的code,用来判断是否真正成功

若code=200则代表添加成功,弹出抢购成功提示消息。

2.2我的订单

少废话,上代码:

onShow() {
    let that = this;
    wx.request({
      url: 'http://localhost:11000/api/order?userId='+u.id+'&size=9999',
      method:'get',
      header: {
                'content-type': 'application/json', // 默认值
                'token':u.token
              },
        success (res) {
                  that.setData({
                    order:res.data.data
                  })
            console.log(res.data);
        },
        fail(err){
                      console.log(err);
                    }
    })
  },

在我的订单界面我们选择在onShow()界面发送请求,即页面每次展示的时候,这涉及到微信页面的生命周期问题,这里不过多概述。

这里和之前稍有不同的是请求地址的填写方式:

url: 'http://localhost:11000/api/order?userId='+u.id+'&size=9999',

因为在后端代码查询中我们可以使用多种信息查询的方式,所以在这里我们可以指定多种查询条件,且切记第一个插入的信息前必须是?后边每一个都是&。

且写在单引号里边的是静态不可变的,如这里的size=9999,想要动态查询就必须把动态的东西写在单引号外,比如这里的u.id。

PS:size是我们指定一个页面可以展示多少个订单信息的参数。

获取成功则将订单信息放入我们提前申明好的微信端的order对象里。

至此我们则可以在MyOrder界面展示所有订单表所拥有的信息了。

举例如下:(将标题展示为所订购项目id)

License:  CC BY 4.0