当前位置:   article > 正文

springboot3+vue3支付宝在线支付案例,后端接口-购物车_vue 支付宝 手机网页支付

vue 支付宝 手机网页支付
  1. package com.example.demo.controller;
  2. import com.example.demo.bean.Goods;
  3. import com.example.demo.bean.Orders;
  4. import com.example.demo.bean.Result;
  5. import com.example.demo.service.IGoodsService;
  6. import com.example.demo.service.IOrdersService;
  7. import com.example.demo.util.CreateId;
  8. import com.example.demo.util.GetSystemTime;
  9. import org.springframework.beans.factory.annotation.Autowired;
  10. import org.springframework.web.bind.annotation.GetMapping;
  11. import org.springframework.web.bind.annotation.PostMapping;
  12. import org.springframework.web.bind.annotation.RequestMapping;
  13. import org.springframework.web.bind.annotation.RestController;
  14. import java.util.Collections;
  15. import java.util.List;
  16. @RestController
  17. @RequestMapping("/order")
  18. public class CartController {
  19. @Autowired
  20. private IGoodsService goodsService;
  21. @Autowired
  22. private IOrdersService ordersService;
  23. /**
  24. * 查询所有购物车的列表信息
  25. * @return
  26. */
  27. @GetMapping("/getAllorders")
  28. public Result<List<Orders>> getAllOrder(){
  29. Result<List<Orders>> result = new Result<List<Orders>>();
  30. List<Orders> allOrderList = ordersService.getAllOrders();
  31. if(allOrderList.size()>0){
  32. result.setCode(200);
  33. result.setMsg("查询购物车信息列表成功");
  34. result.setData(allOrderList);
  35. return result;
  36. }else{
  37. result.setCode(400);
  38. result.setMsg("查询失败,请稍后再试");
  39. return result;
  40. }
  41. }
  42. /**
  43. * 根据产品的id,新增一条购物车信息
  44. * @param id
  45. * @return
  46. */
  47. @GetMapping("/addOneOrder")
  48. public Result<List<Orders>> addOneOrder(Integer id){
  49. //创建一个唯一的订单id。正整数。
  50. Integer orderNo = CreateId.createId2();
  51. //创建回传对象。
  52. Result<List<Orders>> result = new Result<List<Orders>>();
  53. //根据id查询产品信息。
  54. List<Goods> goods = goodsService.getOneGoodsById(Collections.singleton(id));
  55. String goodsName = goods.get(0).getName();
  56. Float goodsPrice = goods.get(0).getPrice();
  57. //封装order对象。
  58. Float total = Float.valueOf(goodsPrice);
  59. Orders orders = new Orders();
  60. orders.setOrderNo(orderNo);
  61. orders.setCreateUserId(1);
  62. orders.setGoodsName(goodsName);
  63. orders.setNumber(1);//默认数量是1.
  64. orders.setStatus(0);//默认状态是00:待支付,1:已支付
  65. orders.setTotal(total);//默认就是一个产品的单价。
  66. orders.setCreateTime(GetSystemTime.getDateTime());
  67. //调用业务层接口,新增一个订单信息。
  68. ordersService.addOneOrders(orders);
  69. result.setCode(200);
  70. result.setMsg("新增订单成功");
  71. return result;
  72. }
  73. }

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


  1. package com.example.demo.bean;
  2. import lombok.AllArgsConstructor;
  3. import lombok.Data;
  4. import lombok.NoArgsConstructor;
  5. import org.aspectj.lang.annotation.AfterReturning;
  6. import javax.persistence.*;
  7. import java.sql.Timestamp;
  8. @Data
  9. @AllArgsConstructor
  10. @NoArgsConstructor
  11. @Entity
  12. @Table(name = "tb_orders")
  13. public class Orders {
  14. @javax.persistence.Id
  15. @org.springframework.data.annotation.Id
  16. @GeneratedValue(strategy= GenerationType.IDENTITY)//主键生成策略
  17. @Column(name = "id", nullable = false)
  18. private Integer id;//主键
  19. @Column(name = "order_no",nullable = true)
  20. private Integer orderNo;//订单编号
  21. @Column(name = "goods_name",nullable = true)
  22. private String goodsName;//订单内商品名字
  23. private Integer number;//订单总数量
  24. private Float total;//订单金额
  25. @Column(name = "create_time")
  26. private Timestamp createTime;
  27. @Column(name = "modify_time")
  28. private Timestamp modifyTime;
  29. @Column(name = "create_user_id")
  30. private Integer createUserId;
  31. @Column(name = "modify_user_id")
  32. private Integer modifyUserId;
  33. private Integer payNo;//支付结算的编码
  34. @Column(name = "pay_time")
  35. private Timestamp payTime;//支付结算的时间戳
  36. private Integer status;//订单的状态,0-未结算,1-已结算。
  37. }

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


  1. package com.example.demo.service;
  2. import com.example.demo.bean.Orders;
  3. import java.util.List;
  4. /**
  5. * 订单的业务层接口
  6. */
  7. public interface IOrdersService {
  8. //获取所有的订单
  9. public List<Orders> getAllOrders();
  10. //根据id查询某一个订单信息
  11. public Orders getOneOrdersById(Integer id);
  12. //删除指定id的订单
  13. public void deleteOneOrdersById(Integer id);
  14. //更新指定id的订单
  15. public void updateOneOrdersById(Orders orders);
  16. //新增一个订单
  17. public void addOneOrders(Orders orders);
  18. }

 购物车的业务层接口代码


  1. package com.example.demo.service.impl;
  2. import com.example.demo.bean.Orders;
  3. import com.example.demo.mapper.OrdersMapper;
  4. import com.example.demo.service.IOrdersService;
  5. import org.springframework.beans.factory.annotation.Autowired;
  6. import org.springframework.stereotype.Service;
  7. import java.util.List;
  8. @Service
  9. public class OrdersService implements IOrdersService {
  10. @Autowired
  11. private OrdersMapper ordersMapper;
  12. @Override
  13. public List<Orders> getAllOrders() {
  14. return ordersMapper.findAll();
  15. }
  16. @Override
  17. public Orders getOneOrdersById(Integer id) {
  18. return ordersMapper.getReferenceById(id);
  19. }
  20. @Override
  21. public void deleteOneOrdersById(Integer id) {
  22. ordersMapper.deleteById(id);
  23. }
  24. @Override
  25. public void updateOneOrdersById(Orders orders) {
  26. ordersMapper.save(orders);
  27. }
  28. @Override
  29. public void addOneOrders(Orders orders) {
  30. ordersMapper.save(orders);
  31. }
  32. }

购物车的业务接口实现类


  1. package com.example.demo.mapper;
  2. import com.example.demo.bean.Orders;
  3. import org.springframework.data.jpa.repository.JpaRepository;
  4. public interface OrdersMapper extends JpaRepository<Orders,Integer> {
  5. }

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


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


  1. import { ref } from 'vue'
  2. import { defineStore } from 'pinia'
  3. import axios from 'axios'
  4. const baseUrl = 'http://erxmns.natappfree.cc'
  5. export const useGoodsStore = defineStore('goods', () => {
  6. const goodsList = ref([])
  7. /**
  8. * 获取产品列表
  9. */
  10. const getGoodsList = async ()=> {
  11. const res = await axios.get(baseUrl+'/goods/alllist')
  12. goodsList.value = res.data.data
  13. }
  14. /**
  15. * 加入购物车
  16. */
  17. const addOneOrders= async (id)=>{
  18. const res = await axios.get(baseUrl+'/order/addOneOrder?id='+id)
  19. if(res.data.code===200){
  20. alert('新增订单成功')
  21. }else{
  22. alert('新增订单失败')
  23. }
  24. }
  25. return {goodsList,getGoodsList,addOneOrders }
  26. })

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

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


  1. /**
  2. * 加入购物车
  3. */
  4. const addOneOrders= async (id)=>{
  5. const res = await axios.get(baseUrl+'/order/addOneOrder?id='+id)
  6. if(res.data.code===200){
  7. alert('新增订单成功')
  8. }else{
  9. alert('新增订单失败')
  10. }
  11. }

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/爱喝兽奶帝天荒/article/detail/804322
推荐阅读
相关标签
  

闽ICP备14008679号