一.接着系统做进入结算的页面以及实
1)订单的创建
设置确认结算时候的跳转页面路径
实际路径获取和映射
测试点击确定结算跳转页面
前端映射
测试获取
2)实现购物车里面的商品增加减少时候数据库同步更新
【1】增加购物车商品加减的访问路径和方法
【2】在js里面从新定义加减条件
//商品增加 function addQuantity(obj){ var index = $(".car_btn_2").index(obj); var quantity = parseInt($(".car_ipt").eq(index).val()); var stock = parseInt($(".productStock").eq(index).val()); if (quantity == stock){ alert("库存不足"); return false; } quantity++; var price = parseFloat($(".productPrice").eq(index).val()) var cost = quantity*price; var id = parseInt($(".id").eq(index).val()); //将最新的数量总价发给后台动态更新数据库(基于jQeury的Ajax) $.ajax({ url:"/cart/update/"+id+"/"+quantity+"/"+cost, type:"POST", data:"", success:function (data) { if (data == "success"){ $(".qprice").eq(index).text('¥'+cost); $(".car_ipt").eq(index).val(quantity); var array = $(".qprice"); var totalCost = 0; for(var i = 0;i < array.length;i++){ var val = parseInt($(".qprice").eq(i).html().substring(1)); totalCost += val; } $("#totalprice").html("¥"+totalCost); } } }); } //商品减少 function subQuantity(obj) { var index = $(".car_btn_1").index(obj); var quantity = parseInt($(".car_ipt").eq(index).val()); if (quantity == 1){ alert("至少选择一件商品"); return false; } quantity--; var price = parseFloat($(".productPrice").eq(index).val()) var cost = quantity*price; var id = parseInt($(".id").eq(index).val()); $.ajax({ url:"/cart/update/"+id+"/"+quantity+"/"+cost, type:"POST", data:"", success:function (data) { if (data == "success"){ $(".qprice").eq(index).text('¥'+cost); $(".car_ipt").eq(index).val(quantity); var array = $(".qprice"); var totalCost = 0; for(var i = 0;i < array.length;i++){ var val = parseInt($(".qprice").eq(i).html().substring(1)); totalCost += val; } $("#totalprice").html("¥"+totalCost); } } }); }
点击修改时候跳回展示页面
启动测试
更新前数据库
前端显示
前端添加或减少商品数量
数据库同步更新
二.处理确认付款后选择信息
1. 先修改下前端页面的对应获取关系
2. 接下来写一下地址后台获取的测试:同意用go-to的方式创建新的测试类
package com.redhat.mmall002.service; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import java.util.HashMap; import java.util.Map; @SpringBootTest class UserAddressServiceTest { @Autowired private UserAddressService service; @Test void test(){ Map<String,Object> map = new HashMap<>(); map.put("user_id",10); service.listByMap(map).forEach(System.out::println); } }
测试结果
3.地址栏前端对应修改
4.访问路径方法调用
最后测试
记得加"${}"这种格式
5. 下一步实现点击确认订单然后生成订单
(1)OrderController访问路径及映射方法
@Controller @RequestMapping("/orders") public class OrderController { @Autowired private OrderService orderService; @PostMapping("/settlement3") public ModelAndView settlement3( Orders orders, HttpSession session ){ User user = (User) session.getAttribute("user"); orderService.save(orders,user); return null; } } (2)同样对没有进行登录的Order相关的访问进行过滤让其进行登录后再进行操作
(3)定义订单保存方法
(4)OrderServiceImpl实现层重写需要保存的类以及生成订单号的具体方法
@Service public class OrderServiceImpl extends ServiceImpl<OrderMapper, Orders> implements OrderService { @Override public boolean save(Orders orders, User user) { orders.setUserId(user.getId()); orders.setLoginName(user.getLoginName()); //生成订单号码 String seriaNumber = null; try{ StringBuffer result = new StringBuffer(); for (int i = 0;i<32;i++){ result.append(Integer.toHexString(new Random().nextInt(16))); } seriaNumber =result.toString().toUpperCase(); }catch (Exception e){ e.printStackTrace(); } orders.setSerialnumber(seriaNumber); return save(orders); } } 测试点击后数据数据生成情况
数据库保存信息