SpringBoot百货超市商城系统 附带详细运行指导视频

一、项目演示

项目演示地址: 视频地址

二、项目介绍

项目描述:这是一个基于SpringBoot框架开发的百货超市系统。首先,这是一个很适合SpringBoot初学者学习的项目,代码简洁规范,注释说明详细,易于理解和学习。其次,这项目功能完备,具有一个百货超市商城系统的所有基础功能。

项目功能:此项目分为两个角色:普通用户管理员普通用户有登录注册、浏览商品信息、添加购物车、提交订单、管理个人信息、管理个人订单等等功能。管理员有管理所有商品信息、管理所有订单信息、管理所有用户信息、查看收益数据图表等等功能。

应用技术:SpringBoot + MyBatis + Thymeleaf + Bootstrap + MySQL + LayUI

运行环境:Eclipse/IntelliJ IDEA(项目压缩包中自带) + MySQL5.7(项目压缩包中自带) + Maven3.6.3(项目压缩包中自带) + JDK1.8(项目压缩包中自带)

三、运行截图

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

四、主要代码

1.提交订单代码:

	/**
     * 结算订单操作
     * @param orderDTO
     * @param request
     * @return
     */
    @Override
    public ResponseDTO<Boolean> submitOrder(OrderDTO orderDTO, HttpServletRequest request) {
        // 进行统一表单验证
        CodeMsg validate = ValidateEntityUtil.validate(orderDTO);
        if (!validate.getCode().equals(CodeMsg.SUCCESS.getCode())) {
            return ResponseDTO.errorByMsg(validate);
        }
        User user = (User) request.getSession().getAttribute(SessionConstant.HOME_SESSION_LOGIN_KEY);
        CartExample cartExample = new CartExample();
        cartExample.createCriteria().andUserIdEqualTo(user.getId());
        List<Cart> cartList = cartMapper.selectByExample(cartExample);
        BigDecimal totalPrice = new BigDecimal(0);
        Order order = CopyUtil.copy(orderDTO, Order.class);
        order.setId(UuidUtil.getShortUuid());
        order.setUserId(user.getId());
        order.setDeleted(OrderDeleteEnum.NO.getCode());
        order.setCreateTime(new Date());
        List<OrderItem> orderItemList = new ArrayList<>();
        // 验证库存和计算总价
        for(Cart cart : cartList) {
            Product product = productMapper.selectByPrimaryKey(cart.getProductId());
            if(cart.getQuantity() > product.getStock()) {
                CodeMsg codeMsg = CodeMsg.PRODUCT_STOCK_OVER;
                codeMsg.setMsg("商品【" + product.getName() + "】库存不足!");
                return ResponseDTO.errorByMsg(codeMsg);
            }
            totalPrice = totalPrice.add(product.getPrice().multiply(new BigDecimal(cart.getQuantity())));
            OrderItem orderItem = new OrderItem();
            orderItem.setId(UuidUtil.getShortUuid());
            orderItem.setProductId(cart.getProductId());
            orderItem.setOrderId(order.getId());
            orderItem.setProductName(product.getName());
            orderItem.setProductPhoto(product.getPhoto());
            orderItem.setProductPrice(product.getPrice());
            orderItem.setQuantity(cart.getQuantity());
            orderItem.setSumPrice(new BigDecimal(cart.getQuantity()).multiply(product.getPrice()));
            orderItemList.add(orderItem);
        }
        // 订单详情落库
        for(OrderItem orderItem : orderItemList) {
            if(orderItemMapper.insertSelective(orderItem) == 0) {
                throw new RuntimeException(CodeMsg.ORDER_ADD_ERROR.getMsg());
            }
        }
        // 订单数据落地
        order.setState(OrderStateEnum.PAYED.getCode());
        order.setTotalPrice(totalPrice);
        if(orderMapper.insertSelective(order) == 0) {
            throw new RuntimeException(CodeMsg.ORDER_ADD_ERROR.getMsg());
        }
        // 清空购物车数据
        cartMapper.deleteByExample(cartExample);
        return ResponseDTO.successByMsg(true,"下单成功");
    }

2.前台用户登录代码:

 	/**
     * 前台用户登录操作
     * @param userDTO
     * @param request
     * @return
     */
    @Override
    public ResponseDTO<Boolean> homeLogin(UserDTO userDTO, HttpServletRequest request) {
        if(userDTO == null) {
            return ResponseDTO.errorByMsg(CodeMsg.DATA_ERROR);
        }
        if(CommonUtil.isEmpty(userDTO.getUsername())) {
            return ResponseDTO.errorByMsg(CodeMsg.USERNAME_EMPTY);
        }
        if(CommonUtil.isEmpty(userDTO.getPassword())) {
            return ResponseDTO.errorByMsg(CodeMsg.PASSWORD_EMPTY);
        }
        UserExample userExample = new UserExample();
        userExample.createCriteria()
                .andUsernameEqualTo(userDTO.getUsername())
                .andPasswordEqualTo(userDTO.getPassword());
        List<User> userList = userMapper.selectByExample(userExample);
        if(userList.size() == 0) {
            return ResponseDTO.errorByMsg(CodeMsg.USERNAME_PASSWORD_ERROR);
        }
        request.getSession().setAttribute(SessionConstant.HOME_SESSION_LOGIN_KEY, userList.get(0));

        return ResponseDTO.successByMsg(true, "登录成功!");
    }

3.保存商品信息代码:

	/**
     * 保存商品信息
     * @param productDTO
     * @return
     */
    @Override
    public ResponseDTO<Boolean> save(ProductDTO productDTO) {
        if(productDTO == null) {
            return ResponseDTO.errorByMsg(CodeMsg.DATA_ERROR);
        }
        // 进行统一表单验证
        CodeMsg validate = ValidateEntityUtil.validate(productDTO);
        if (!validate.getCode().equals(CodeMsg.SUCCESS.getCode())) {
            return ResponseDTO.errorByMsg(validate);
        }
        Product product = CopyUtil.copy(productDTO, Product.class);
        if(CommonUtil.isEmpty(product.getId())){
            // 添加操作
            product.setId(UuidUtil.getShortUuid());
            product.setCreateTime(new Date());
            if(productMapper.insertSelective(product) == 0){
                return ResponseDTO.errorByMsg(CodeMsg.PRODUCT_ADD_ERROR);
            }
        }else {
            // 修改操作
            if(productMapper.updateByPrimaryKeySelective(product) == 0){
                return ResponseDTO.errorByMsg(CodeMsg.PRODUCT_EDIT_ERROR);
            }
        }
        return ResponseDTO.success(true);
    }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

这里是杨杨吖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值