springboot3+vue3支付宝在线支付案例,后端接口-购物车

package com.example.demo.controller;

import com.example.demo.bean.Goods;
import com.example.demo.bean.Orders;
import com.example.demo.bean.Result;
import com.example.demo.service.IGoodsService;
import com.example.demo.service.IOrdersService;
import com.example.demo.util.CreateId;
import com.example.demo.util.GetSystemTime;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.Collections;
import java.util.List;

@RestController
@RequestMapping("/order")
public class CartController {
    @Autowired
    private IGoodsService goodsService;
    @Autowired
    private IOrdersService ordersService;

    /**
     * 查询所有购物车的列表信息
     * @return
     */
    @GetMapping("/getAllorders")
    public Result<List<Orders>> getAllOrder(){
        Result<List<Orders>> result = new Result<List<Orders>>();
        List<Orders> allOrderList = ordersService.getAllOrders();
        if(allOrderList.size()>0){
            result.setCode(200);
            result.setMsg("查询购物车信息列表成功");
            result.setData(allOrderList);
            return result;
        }else{
            result.setCode(400);
            result.setMsg("查询失败,请稍后再试");
            return  result;
        }
    }


    /**
     * 根据产品的id,新增一条购物车信息
     * @param id
     * @return
     */
    @GetMapping("/addOneOrder")
    public Result<List<Orders>> addOneOrder(Integer id){
        //创建一个唯一的订单id。正整数。
        Integer orderNo = CreateId.createId2();
        //创建回传对象。
        Result<List<Orders>> result = new Result<List<Orders>>();
        //根据id查询产品信息。
        List<Goods> goods = goodsService.getOneGoodsById(Collections.singleton(id));
        String goodsName = goods.get(0).getName();
        Float goodsPrice = goods.get(0).getPrice();
        //封装order对象。
        Float total = Float.valueOf(goodsPrice);
        Orders orders = new Orders();
        orders.setOrderNo(orderNo);
        orders.setCreateUserId(1);
        orders.setGoodsName(goodsName);
        orders.setNumber(1);//默认数量是1.
        orders.setStatus(0);//默认状态是0。0:待支付,1:已支付
        orders.setTotal(total);//默认就是一个产品的单价。
        orders.setCreateTime(GetSystemTime.getDateTime());
        //调用业务层接口,新增一个订单信息。
        ordersService.addOneOrders(orders);
        result.setCode(200);
        result.setMsg("新增订单成功");
        return result;

    }
}

springboot3+vue3支付宝在线支付案例,后端接口-购物车!我定义了2个接口,一个是获取购物车列表信息,一个是新增一条购物车信息。


package com.example.demo.bean;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.aspectj.lang.annotation.AfterReturning;

import javax.persistence.*;
import java.sql.Timestamp;

@Data
@AllArgsConstructor
@NoArgsConstructor
@Entity
@Table(name = "tb_orders")
public class Orders {
    @javax.persistence.Id
    @org.springframework.data.annotation.Id
    @GeneratedValue(strategy= GenerationType.IDENTITY)//主键生成策略
    @Column(name = "id", nullable = false)
    private Integer id;//主键
    @Column(name = "order_no",nullable = true)
    private Integer orderNo;//订单编号
    @Column(name = "goods_name",nullable = true)
    private String goodsName;//订单内商品名字
    private Integer number;//订单总数量
    private Float total;//订单金额
    @Column(name = "create_time")
    private Timestamp createTime;
    @Column(name = "modify_time")
    private Timestamp modifyTime;
    @Column(name = "create_user_id")
    private Integer createUserId;
    @Column(name = "modify_user_id")
    private Integer modifyUserId;
    private Integer payNo;//支付结算的编码
    @Column(name = "pay_time")
    private Timestamp payTime;//支付结算的时间戳
    private Integer status;//订单的状态,0-未结算,1-已结算。

}

这个就是购物车的实体类。


package com.example.demo.service;

import com.example.demo.bean.Orders;

import java.util.List;

/**
 * 订单的业务层接口
 */
public interface IOrdersService {
    //获取所有的订单
    public List<Orders> getAllOrders();

    //根据id查询某一个订单信息
    public Orders getOneOrdersById(Integer id);

    //删除指定id的订单
    public void deleteOneOrdersById(Integer id);

    //更新指定id的订单
    public void updateOneOrdersById(Orders orders);

    //新增一个订单
    public void addOneOrders(Orders orders);

}

购物车的业务层接口代码


package com.example.demo.service.impl;

import com.example.demo.bean.Orders;
import com.example.demo.mapper.OrdersMapper;
import com.example.demo.service.IOrdersService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;
@Service
public class OrdersService implements IOrdersService {
    @Autowired
    private OrdersMapper ordersMapper;

    @Override
    public List<Orders> getAllOrders() {
        return ordersMapper.findAll();
    }

    @Override
    public Orders getOneOrdersById(Integer id) {
        return ordersMapper.getReferenceById(id);
    }

    @Override
    public void deleteOneOrdersById(Integer id) {
        ordersMapper.deleteById(id);
    }

    @Override
    public void updateOneOrdersById(Orders orders) {
        ordersMapper.save(orders);
    }

    @Override
    public void addOneOrders(Orders orders) {
        ordersMapper.save(orders);
    }
}

购物车的业务接口实现类


package com.example.demo.mapper;

import com.example.demo.bean.Orders;
import org.springframework.data.jpa.repository.JpaRepository;

public interface OrdersMapper extends JpaRepository<Orders,Integer> {
}

业务逻辑是,在产品列表的页面,有一个加入购物车的按钮,绑定了一个点击事件。会触发这个业务接口。在数据库内新增一条购物消息。


如图所示,前端页面。购买按钮就是绑定了加入购物车的接口地址。


import { ref } from 'vue'
import { defineStore } from 'pinia'
import axios from 'axios'
const baseUrl = 'http://erxmns.natappfree.cc'
export const useGoodsStore = defineStore('goods', () => {
  const goodsList = ref([])
  
  /**
   * 获取产品列表
   */
  const  getGoodsList = async ()=> {
      const res = await axios.get(baseUrl+'/goods/alllist')
      goodsList.value = res.data.data
  }

  /**
   * 加入购物车
   */

  const addOneOrders= async (id)=>{
    const res = await axios.get(baseUrl+'/order/addOneOrder?id='+id)
    if(res.data.code===200){
      alert('新增订单成功')
    }else{
      alert('新增订单失败')
    }
    
  }
  return {goodsList,getGoodsList,addOneOrders }
})

如图代码,在产品的业务接口goods.js内,我们定义好了一个方法。新增一条购物消息。

它调用了接口地址,就是后端的购物车接口之一。


 /**
   * 加入购物车
   */

  const addOneOrders= async (id)=>{
    const res = await axios.get(baseUrl+'/order/addOneOrder?id='+id)
    if(res.data.code===200){
      alert('新增订单成功')
    }else{
      alert('新增订单失败')
    }
    
  }

如图,后台数据库购物车的数据表各个字段情况。

相关推荐
梓仁沐白14 分钟前
ubuntu+windows双系统切换后蓝牙设备无法连接
windows·ubuntu
九鼎科技-Leo4 小时前
什么是 WPF 中的依赖属性?有什么作用?
windows·c#·.net·wpf
Yang.996 小时前
基于Windows系统用C++做一个点名工具
c++·windows·sql·visual studio code·sqlite3
我不瘦但很逗7 小时前
Windows下使用DBeaver连接云数据库(MySQL)
数据库·windows
ashane13148 小时前
Java list
java·windows·list
万里沧海寄云帆8 小时前
Word 插入分节符页码更新问题
windows·microsoft·word
dot.Net安全矩阵9 小时前
.NET 通过模块和驱动收集本地EDR的工具
windows·安全·web安全·.net·交互
编程修仙11 小时前
Collections工具类
linux·windows·python
程序员小羊!12 小时前
高级 SQL 技巧讲解
windows
xiangshangdemayi14 小时前
Windows环境GeoServer打包Docker极速入门
windows·docker·容器·geoserver·打包·数据挂载