基于java springboot网上蛋糕商城项目设计和实现

news2024/11/16 9:21:25

基于java springboot网上蛋糕商城项目设计和实现

博主介绍:多年java开发经验,专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域
作者主页 央顺技术团队
Java毕设项目精品实战案例《1000套》
欢迎点赞 收藏 ⭐留言
文末获取源码联系方式

文章目录

  • 基于java springboot网上蛋糕商城项目设计和实现
  • 主要功能截图:
    • 登录和注册、
    • 首页轮播图以及推荐宠物商品浏览以及模糊查看和分类查看等操作:
    • 加入购物车和订单操作以及修改收货信息等.流程都是非常完善的
    • 完整购买下单以及支付流程
    • 模拟支付宝支付、这里是模拟的 直接支付成功
    • 后台admin管理员数据维护模块:
    • 后台主要功能设计:每个模块都有列表查询、添加、修改。删除等操作
    • 轮播图配置
    • 配置热销商品和喜欢商品等
    • 商品详情配置管理列表
    • 用户信息管理:
    • 订单信息管理:订单信息流程主要有:用户模拟支付了以后配货、出库、订单完成、以及查看订单信息和查看收件人信息等功能
  • 代码结构:idea、eclipse直接导入就可运行、
  • 数据库结构:
  • 获取源码:

主要技术:spring、 springmvc、 springboot、 mybatis 、 jquery 、 md5 、bootstarp.js tomcat、富文本编译器、拦截器等
主要功能:登录、注册、商品浏览、分类设置、模糊查找、轮播图、热销商品、购物车、订单、订单流程控制、用户管理、修改密码等

主要功能截图:

登录和注册、

登录模块后台代码

package ltd.newbee.mall.controller.admin;
 
import ltd.newbee.mall.common.ServiceResultEnum;
import ltd.newbee.mall.entity.AdminUser;
import ltd.newbee.mall.service.AdminUserService;
 
import org.springframework.stereotype.Controller;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;
 
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
 
/**
 * @author 13
 */
@Controller
@RequestMapping("/admin")
public class AdminController {
 
    @Resource
    private AdminUserService adminUserService;
 
    @GetMapping({"/login"})
    public String login() {
        return "admin/login";
    }
 
    @GetMapping({"/test"})
    public String test() {
        return "admin/test";
    }
 
 
    @GetMapping({"", "/", "/index", "/index.html"})
    public String index(HttpServletRequest request) {
        request.setAttribute("path", "index");
        request.setAttribute("categoryCount", 0);
        request.setAttribute("blogCount", 0);
        request.setAttribute("linkCount", 0);
        request.setAttribute("tagCount", 0);
        request.setAttribute("commentCount", 0);
        request.setAttribute("path", "index");
        return "admin/index";
    }
 
    @PostMapping(value = "/login")
    public String login(@RequestParam("userName") String userName,
                        @RequestParam("password") String password,
                        @RequestParam("verifyCode") String verifyCode,
                        HttpSession session) {
        if (StringUtils.isEmpty(verifyCode)) {
            session.setAttribute("errorMsg", "验证码不能为空");
            return "admin/login";
        }
        if (StringUtils.isEmpty(userName) || StringUtils.isEmpty(password)) {
            session.setAttribute("errorMsg", "用户名或密码不能为空");
            return "admin/login";
        }
        String kaptchaCode = session.getAttribute("verifyCode") + "";
        if (StringUtils.isEmpty(kaptchaCode) || !verifyCode.equals(kaptchaCode)) {
            session.setAttribute("errorMsg", "验证码错误");
            return "admin/login";
        }
        AdminUser adminUser = adminUserService.login(userName, password);
        if (adminUser != null) {
            session.setAttribute("loginUser", adminUser.getNickName());
            session.setAttribute("loginUserId", adminUser.getAdminUserId());
            //session过期时间设置为7200秒 即两小时
            //session.setMaxInactiveInterval(60 * 60 * 2);
            return "redirect:/admin/index";
        } else {
            session.setAttribute("errorMsg", "登陆失败,请联系作者获得测试账号");
            return "admin/login";
        }
    }
 
    @GetMapping("/profile")
    public String profile(HttpServletRequest request) {
        Integer loginUserId = (int) request.getSession().getAttribute("loginUserId");
        AdminUser adminUser = adminUserService.getUserDetailById(loginUserId);
        if (adminUser == null) {
            return "admin/login";
        }
        request.setAttribute("path", "profile");
        request.setAttribute("loginUserName", adminUser.getLoginUserName());
        request.setAttribute("nickName", adminUser.getNickName());
        return "admin/profile";
    }
 
    @PostMapping("/profile/password")
    @ResponseBody
    public String passwordUpdate(HttpServletRequest request, @RequestParam("originalPassword") String originalPassword,
                                 @RequestParam("newPassword") String newPassword) {
        if (StringUtils.isEmpty(originalPassword) || StringUtils.isEmpty(newPassword)) {
            return "参数不能为空";
        }
        Integer loginUserId = (int) request.getSession().getAttribute("loginUserId");
        if (adminUserService.updatePassword(loginUserId, originalPassword, newPassword)) {
            //修改成功后清空session中的数据,前端控制跳转至登录页
            request.getSession().removeAttribute("loginUserId");
            request.getSession().removeAttribute("loginUser");
            request.getSession().removeAttribute("errorMsg");
            return ServiceResultEnum.SUCCESS.getResult();
        } else {
            return "修改失败";
        }
    }
 
    @PostMapping("/profile/name")
    @ResponseBody
    public String nameUpdate(HttpServletRequest request, @RequestParam("loginUserName") String loginUserName,
                             @RequestParam("nickName") String nickName) {
        if (StringUtils.isEmpty(loginUserName) || StringUtils.isEmpty(nickName)) {
            return "参数不能为空";
        }
        Integer loginUserId = (int) request.getSession().getAttribute("loginUserId");
        if (adminUserService.updateName(loginUserId, loginUserName, nickName)) {
            return ServiceResultEnum.SUCCESS.getResult();
        } else {
            return "修改失败";
        }
    }
 
    @GetMapping("/logout")
    public String logout(HttpServletRequest request) {
        request.getSession().removeAttribute("loginUserId");
        request.getSession().removeAttribute("loginUser");
        request.getSession().removeAttribute("errorMsg");
        return "admin/login";
    }
}

首页轮播图以及推荐宠物商品浏览以及模糊查看和分类查看等操作:

在这里插入图片描述
为你推荐蛋糕商品管理模块:
管理员可以对为你推荐蛋糕商品进行添加、修改、删除和浏览操作配置、配置好后用户端首页为你推荐蛋糕商品会显示最新的商品信息。
在这里插入图片描述

加入购物车和订单操作以及修改收货信息等.流程都是非常完善的

在这里插入图片描述

完整购买下单以及支付流程

在这里插入图片描述

模拟支付宝支付、这里是模拟的 直接支付成功

在这里插入图片描述

后台admin管理员数据维护模块:

在这里插入图片描述

后台主要功能设计:每个模块都有列表查询、添加、修改。删除等操作

在这里插入图片描述

轮播图配置

在这里插入图片描述

配置热销商品和喜欢商品等

在这里插入图片描述
商品类型灵活管理控制、此处配置前端用户就展示那些

商品详情配置管理列表

在这里插入图片描述
添加蛋糕商品、这个地方用的富文本编译器上传的商品信息、可以直接从淘宝等地方复制数据过来。
在这里插入图片描述

用户信息管理:

在这里插入图片描述

订单信息管理:订单信息流程主要有:用户模拟支付了以后配货、出库、订单完成、以及查看订单信息和查看收件人信息等功能

在这里插入图片描述

代码结构:idea、eclipse直接导入就可运行、

在这里插入图片描述

数据库结构:

在这里插入图片描述

获取源码:

大家点赞、收藏、关注、评论啦
🍅查看下方微信号获取联系方式 📝
🚀🚀🚀精彩系列推荐
Java毕设项目精品实战案例《1000套》
精彩专栏推荐订阅:在下方专栏

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1499838.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

酷克数据荣获粤港澳大湾区金融创新成果“特优解决方案”奖

近日,“第二届金融创新优秀应用案例与解决方案技术成果评定”正式揭晓,酷克数据提交的“HashData云原生金融信创数据仓库”入选特优解决方案,成为数据治理与数据平台类目中唯一的厂商方案。 本次评定历时5个多月,共257个项目参与申…

了解开源可视化表单的主要优势

为什么可视化表单深受大家喜爱?这就需要了解开源可视化表单的优势和特点了。在流程化办公深入人心的今天,提高办公协作效率早已成为大家的发展目标,低代码技术平台、开源可视化表单是提升办公协作效率的得力助手,一起来看看它的优…

项目管理工具及模板(甘特图、OKR周报、任务管理、头脑风暴等)

项目管理常用模板大全: 1. 项目组OKR周报 2. 项目组传统周报工作法 3. 项目甘特图 4. 团队名单 5. 招聘跟进表 6. 出勤统计 7. 年度工作日历 8. 项目工作年计划 9. 版本排期 10. 项目组任务管理 11. 项目规划模板 12. 产品分析报告 13. 头脑风暴 信息化项目建设全套…

什么是TikTok账号权重?打破TikTok0播放的方法

许多TikTok账号运营者都会遇到一个难题,那就是视频要么播放量很低,要么0播放!不管内容做的多好,最好都是竹篮打水一场空!其实你可能忽略了一个问题,那就是账号权重。下面好好跟大家讲讲这个东西&#xff01…

5V转3.3V/2.5V/1.2V芯片PW2053,专为锂电池设计,低功耗外围简单

在现代电子设备领域,高效、稳定的电源管理至关重要。为了满足这一需求,我们向您隆重推荐PW2053高效同步降压调节器。这款调节器以其出色的性能和广泛的应用领域,赢得了市场的广泛认可。 一、产品描述 PW2053是一款采用恒定频率、电流模式架…

【操作系统概念】 第8章:内存管理

文章目录 0.前言8.1 背景8.1.1 基本硬件8.1.2 地址绑定8.1.3 逻辑地址空间和物理地址空间8.1.4 动态加载(dynamic loading)8.1.5 动态链接(dynamically linking)与共享库 8.3 连续内存分配(contiguous memory allocati…

防御保护----IPSEC VPPN实验

实验拓扑: 实验背景:FW1和FW2是双机热备的状态。 实验要求:在FW和FW3之间建立一条IPSEC通道,保证10.0.2.0/24网段可以正常访问到192.168.1.0/24 IPSEC VPPN实验配置(由于是双机热备状态,所以FW1和FW2只需要…

数据结构——二叉树 原理

1.树 ①树的概念 树是一种非线性的数据结构,它是由(>0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。 有一个特殊的结点,称为根结点,根节点没…

CNC机加工引入复合机器人可以提高生产效率,降低成本

CNC加工企业在过去依赖大量的人工来完成生产线上的各项任务,包括CNC机床的上下料、物料搬运以及部分装配工作。然而,随着产能需求的不断增长和人工成本的持续上升,企业逐渐意识到自动化升级的重要性与迫切性。 面临的挑战与需求: …

分布式架构下 网络通信的底层实现原理(一)

什么是通信? 当我们通过浏览器访问一个网址时,一段时间后该网址会渲染出访问的内容,这个过程是怎么实现的呢? 这种通信方式是基于http协议实现的,那么什么是协议? 像一个中国人和一个外国人交流时&#xf…

人工智能(AI)与电网系统的结合

人工智能(AI)与电网系统的结合可以带来许多潜在的好处,包括提高电网的运行效率、安全性和可靠性。以下是一些主要的应用领域,希望对大家有所帮助。北京木奇移动技术有限公司,专业的软件外包开发公司,欢迎交…

Codeforces Round 932 (Div. 2)C. Messenger in MAC 有序简化题目,dp,dp优化

Problem - C - Codeforces 目录 题意: 思路: 状态转移方程: 参考代码: 题意: 给两个长度为n数组a,b,和整数 l 任取若干下标,使得这个式子 不超过 l 的最多下标数。 思路: …

【干货】桌面运维当中,我最常见遇到的几个问题!

作为IT工程师,不管大小事凡是涉及到信息化相关的都会来找,平常碰到最多的当然是电脑使用方面的了,比如什么C盘满了需要帮忙清一下,电脑太慢了需要帮忙看看啥的,一般新来的小伙子们就会被分配去干这些事情,但…

git克隆过程报错

设置 git config 来强制 git 使用 HTTP 1.1 git config --global http.version HTTP/1.1想将其设置回 HTTP2,你可以这样做 git config --global http.version HTTP/2

植物病害识别:YOLO茶叶病害识别数据集

茶叶病害识别数据集,3200多张茶叶病害图像数据,yolo标注完整,适用于茶叶病害识别,包含藻斑病、褐斑病、鸟眼斑病,炭疽病,红斑病5个类别。 增强方式:(3倍增强) 剪切&…

数据库备份.....

一.环境准备 数据库备份,数据库为school,素材如下 >create database school; >use school1.创建student和score表CREATE TABLE student ( id INT(10) NOT NULL UNIQUE PRIMARY KEY , name VARCHAR(20) NOT NULL , sex VARCHAR(4) , bi…

为什么TikTok视频0播放?账号权重提高要重视

许多TikTok账号运营者都会遇到一个难题,那就是视频要么播放量很低,要么0播放!不管内容做的多好,最好都是竹篮打水一场空!其实你可能忽略了一个问题,那就是账号权重。下面好好跟大家讲讲这个东西&#xff01…

redis缓存(穿透, 雪崩, 击穿, 数据不一致, 数据并发竞争 ), 分布式锁(watch乐观锁, setnx, redission)

redis的watch缓存机制 WATCH 机制原理: WATCH 机制:使用 WATCH 监视一个或多个 key , 跟踪 key 的 value 修改情况,如果有key 的 value 值在事务 EXEC 执行之前被修改了,整个事务被取消。EXEC 返回提示信息,表示 事务已…

代码随想录刷题笔记-Day31

1. 最大子序和 53. 最大子数组和https://leetcode.cn/problems/maximum-subarray/ 给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 子数组:是数组中的一个连续…

软件工程顶会——ICSE '24 论文清单、摘要

1、A Comprehensive Study of Learning-based Android Malware Detectors under Challenging Environments 近年来,学习型Android恶意软件检测器不断增多。这些检测器可以分为三种类型:基于字符串、基于图像和基于图形。它们大多在理想情况下取得了良好的…