自学实践前后端项目4 MMall商城 6

一.接着系统做进入结算的页面以及实

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);
    }
}
测试点击后数据数据生成情况

数据库保存信息

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值