一、个人简介

💖💖作者:计算机编程果茶熊
💙💙个人简介:曾长期从事计算机专业培训教学,担任过编程老师,同时本人也热爱上课教学,擅长Java、微信小程序、Python、Golang、安卓Android等多个IT方向。会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。平常喜欢分享一些自己开发中遇到的问题的解决办法,也喜欢交流技术,大家有技术代码这一块的问题可以问我!
💛💛想说的话:感谢大家的关注与支持!
💜💜
网站实战项目
安卓/小程序实战项目
大数据实战项目
计算机毕业设计选题
💕💕文末获取源码联系计算机编程果茶熊

二、系统介绍

开发语言:Java+Python
数据库:MySQL
系统架构:B/S
后端框架:SpringBoot(Spring+SpringMVC+Mybatis)+Django
前端:Vue+HTML+CSS+JavaScript+jQuery

《“鲜蔬坊”蔬菜销售平台》是一个基于B/S架构,旨在连接消费者与蔬菜商家,提供便捷在线购买服务的现代化Web应用。系统后端核心采用Java语言开发,并整合了高效稳定的Spring Boot框架,通过其内嵌的SpringMVC处理Web请求与响应,利用Mybatis作为持久层框架与MySQL数据库进行数据交互,实现了数据访问的灵活性与解耦。前端则采用渐进式JavaScript框架Vue,构建了响应式、用户体验友好的操作界面。平台功能设计全面,涵盖了用户管理、管理员管理及商家管理三大角色体系,确保了多用户权限的精细控制;蔬菜信息与蔬菜类型管理模块为商品展示提供了结构化的数据支持;订单管理作为整个系统的交易核心,处理从下单到支付的完整流程;而蔬菜小知识管理与论坛管理则有效增添了平台的社区互动性和内容价值,共同构建了一个集商品交易、信息分享与社区交流于一体的综合性蔬菜销售生态系统。

三、视频解说

–>视频展示请点击这里<–

四、部分功能展示

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

五、部分代码展示

// 核心功能1:订单创建 (OrderService.java)
public Map<String, Object> createOrder(Integer userId, List<CartItem> cartItems) {
    Map<String, Object> result = new HashMap<>();
    // 1. 校验购物车是否为空
    if (cartItems == null || cartItems.isEmpty()) {
        result.put("success", false);
        result.put("message", "购物车不能为空");
        return result;
    }
    // 2. 计算订单总金额并校验库存
    BigDecimal totalAmount = BigDecimal.ZERO;
    for (CartItem item : cartItems) {
        Vegetable vegetable = vegetableMapper.selectById(item.getVegetableId());
        if (vegetable == null || vegetable.getStock() < item.getQuantity()) {
            result.put("success", false);
            result.put("message", "商品 " + (vegetable != null ? vegetable.getName() : "未知") + " 库存不足");
            return result;
        }
        totalAmount = totalAmount.add(vegetable.getPrice().multiply(new BigDecimal(item.getQuantity())));
    }
    // 3. 创建订单主记录
    Order order = new Order();
    order.setOrderNo(generateOrderNo());
    order.setUserId(userId);
    order.setTotalAmount(totalAmount);
    order.setStatus("待支付");
    order.setCreateTime(new Date());
    orderMapper.insert(order);
    // 4. 创建订单详情并扣减库存
    for (CartItem item : cartItems) {
        OrderItem orderItem = new OrderItem();
        orderItem.setOrderId(order.getId());
        orderItem.setVegetableId(item.getVegetableId());
        orderItem.setQuantity(item.getQuantity());
        orderItem.setPrice(vegetableMapper.selectById(item.getVegetableId()).getPrice());
        orderItemMapper.insert(orderItem);
        // 扣减库存
        vegetableMapper.reduceStock(item.getVegetableId(), item.getQuantity());
    }
    result.put("success", true);
    result.put("orderNo", order.getOrderNo());
    return result;
}

// 核心功能2:商家发布新蔬菜 (VegetableService.java)
public boolean addVegetable(VegetableDTO vegetableDTO, Integer merchantId) {
    // 1. 参数校验
    if (vegetableDTO == null || StringUtils.isBlank(vegetableDTO.getName()) 
        || vegetableDTO.getPrice() == null || vegetableDTO.getTypeId() == null) {
        throw new IllegalArgumentException("蔬菜名称、价格和类型不能为空");
    }
    if (vegetableDTO.getPrice().compareTo(BigDecimal.ZERO) <= 0) {
        throw new IllegalArgumentException("蔬菜价格必须大于0");
    }
    // 2. 检查蔬菜类型是否存在
    VegetableType type = vegetableTypeMapper.selectById(vegetableDTO.getTypeId());
    if (type == null) {
        throw new IllegalArgumentException("指定的蔬菜类型不存在");
    }
    // 3. 构建Vegetable实体对象
    Vegetable vegetable = new Vegetable();
    vegetable.setName(vegetableDTO.getName());
    vegetable.setPrice(vegetableDTO.getPrice());
    vegetable.setMerchantId(merchantId);
    vegetable.setTypeId(vegetableDTO.getTypeId());
    vegetable.setDescription(vegetableDTO.getDescription());
    vegetable.setImageUrl(vegetableDTO.getImageUrl());
    vegetable.setStock(vegetableDTO.getStock() != null ? vegetableDTO.getStock() : 0);
    vegetable.setStatus("上架"); // 默认状态为上架
    vegetable.setCreateTime(new Date());
    vegetable.setUpdateTime(new Date());
    // 4. 执行数据库插入操作
    int insertCount = vegetableMapper.insert(vegetable);
    return insertCount > 0;
}

// 核心功能3:用户登录认证 (UserService.java)
public Map<String, Object> login(String username, String password, HttpSession session) {
    Map<String, Object> result = new HashMap<>();
    // 1. 根据用户名查询用户信息
    User user = userMapper.selectByUsername(username);
    if (user == null) {
        result.put("success", false);
        result.put("message", "用户名或密码错误");
        return result;
    }
    // 2. 校验密码(假设密码是加密存储的)
    if (!passwordEncoder.matches(password, user.getPassword())) {
        result.put("success", false);
        result.put("message", "用户名或密码错误");
        return result;
    }
    // 3. 检查用户状态是否正常
    if ("locked".equals(user.getStatus())) {
        result.put("success", false);
        result.put("message", "账户已被锁定,请联系管理员");
        return result;
    }
    // 4. 登录成功,将用户信息存入Session
    user.setPassword(null); // 敏感信息不存入session
    session.setAttribute("currentUser", user);
    // 5. 返回成功信息及用户基本信息
    result.put("success", true);
    result.put("message", "登录成功");
    result.put("user", user);
    return result;
}

六、部分文档展示

在这里插入图片描述

七、END

💕💕文末获取源码联系计算机编程果茶熊

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐