当前位置: 首页 > news >正文

水果商城,可运行

文章目录

  • 项目介绍
    • 一、技术栈
    • 二、本项目分为前后台,有管理员与用户两种角色;
      • 1、管理员角色包含以下功能:
      • 2、用户角色包含以下功能:
    • 三、用户功能页面展示
    • 四、管理员功能页面展示
    • 五、部分代码展示
    • 六、获取整套项目源码

项目介绍

一、技术栈

java+jsp

技术栈:Spring+SpringMVC+Mybatis

在这里插入图片描述

二、本项目分为前后台,有管理员与用户两种角色;

1、管理员角色包含以下功能:

六大功能模块:类目管理、用户管理、商品管理、订单管理、公告管理、评论管理

在这里插入图片描述

2、用户角色包含以下功能:

1、用户登录/注册 2、查看首页 3、查看商品详情 4、查看购物车 5、提交订单 6、修改个人信息 7、修改密码 8、查看我的订单 9、添加配送地址 10、查看收藏夹等功能 11、搜索商品 12、查看公告 13、评论留言 14、商品收藏

三、用户功能页面展示

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

四、管理员功能页面展示

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

五、部分代码展示

package com.javapandeng.controller;import com.alibaba.fastjson.JSONObject;
import com.javapandeng.po.Item;
import com.javapandeng.po.Car;
import com.javapandeng.service.ItemService;
import com.javapandeng.service.CarService;
import com.javapandeng.utils.Consts;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;import javax.servlet.http.HttpServletRequest;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.List;/*** 购物车*/
@Controller
@RequestMapping("/car")
public class CarController {@Autowiredprivate CarService carService;@Autowiredprivate ItemService itemService;@RequestMapping("/exAdd")@ResponseBodypublic String exAdd(Car car, HttpServletRequest request){JSONObject js = new JSONObject();Object attribute = request.getSession().getAttribute(Consts.USERID);if(attribute==null){js.put(Consts.RES,0);return js.toJSONString();}//保存到购物车Integer userId = Integer.valueOf(attribute.toString());car.setUserId(userId);Item item = itemService.load(car.getItemId());String price = item.getPrice();Double valueOf = Double.valueOf(price);car.setPrice(valueOf);if(item.getZk()!=null){valueOf = valueOf*item.getZk()/10;BigDecimal bg = new BigDecimal(valueOf).setScale(2, RoundingMode.UP);car.setPrice(bg.doubleValue());valueOf = bg.doubleValue();}Integer num = car.getNum();Double t = valueOf*num;BigDecimal bg = new BigDecimal(t).setScale(2, RoundingMode.UP);double doubleValue = bg.doubleValue();car.setTotal(doubleValue+"");carService.insert(car);js.put(Consts.RES,1);return js.toJSONString();}/*** 转向我的购物车页面*/@RequestMapping("/findBySql")public String findBySql(Model model,HttpServletRequest request){Object attribute = request.getSession().getAttribute(Consts.USERID);if(attribute==null){return "redirect:/login/toLogin";}Integer userId = Integer.valueOf(attribute.toString());String sql = "select * from car where user_id="+userId+" order by id desc";List<Car> list = carService.listBySqlReturnEntity(sql);model.addAttribute("list",list);return "car/car";}/*** 删除购物车*/@RequestMapping("/delete")@ResponseBodypublic String delete(Integer id){carService.deleteById(id);return "success";}
}
package com.javapandeng.controller;import com.javapandeng.base.BaseController;
import com.javapandeng.po.Comment;
import com.javapandeng.service.CommentService;
import com.javapandeng.utils.Consts;
import com.javapandeng.utils.Pager;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;import javax.servlet.http.HttpServletRequest;
import java.util.Date;/*** 评论*/
@Controller
@RequestMapping("/comment")
public class CommentController extends BaseController {@Autowiredprivate CommentService commentService;/*** 添加执行*/@RequestMapping("/exAdd")public String exAdd(Comment comment, HttpServletRequest request){Object attribute = request.getSession().getAttribute(Consts.USERID);if(attribute==null){return "redirect:/login/toLogin";}Integer userId = Integer.valueOf(attribute.toString());comment.setAddTime(new Date());comment.setUserId(userId);commentService.insert(comment);return "redirect:/itemOrder/my.action";}}
package com.javapandeng.controller;import com.alibaba.fastjson.JSONObject;
import com.javapandeng.base.BaseController;
import com.javapandeng.po.*;
import com.javapandeng.service.*;
import com.javapandeng.utils.Consts;
import com.javapandeng.utils.Pager;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;import javax.servlet.http.HttpServletRequest;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;/*** 订单管理*/
@Controller
@RequestMapping("/itemOrder")
public class ItemOrderController extends BaseController {@Autowiredprivate ItemOrderService itemOrderService;@Autowiredprivate UserService userService;@Autowiredprivate CarService carService;@Autowiredprivate OrderDetailService orderDetailService;@Autowiredprivate ItemService itemService;/*** 订单管理列表*/@RequestMapping("/findBySql")public String findBySql(ItemOrder itemOrder, Model model){//分页查询String sql = "select * from item_order where 1=1 ";if(!(isEmpty(itemOrder.getCode()))){sql +=" and code like '%"+itemOrder.getCode()+"%' ";}sql += " order by id desc";Pager<ItemOrder> pagers = itemOrderService.findBySqlRerturnEntity(sql);model.addAttribute("pagers",pagers);//存储查询条件model.addAttribute("obj",itemOrder);return "itemOrder/itemOrder";}/*** 我的订单*/@RequestMapping("/my")public String my(Model model, HttpServletRequest request){Object attribute = request.getSession().getAttribute(Consts.USERID);if(attribute==null){return "redirect:/login/uLogin";}Integer userId = Integer.valueOf(attribute.toString());//全部订单String sql = "select * from item_order where user_id="+userId+" order by id desc";List<ItemOrder> all = itemOrderService.listBySqlReturnEntity(sql);//待发货String sql2 = "select * from item_order where user_id="+userId+" and status=0 order by id desc";List<ItemOrder> dfh = itemOrderService.listBySqlReturnEntity(sql2);//已取消String sql3 = "select * from item_order where user_id="+userId+" and status=1 order by id desc";List<ItemOrder> yqx = itemOrderService.listBySqlReturnEntity(sql3);//已发货String sql4 = "select * from item_order where user_id="+userId+" and status=2 order by id desc";List<ItemOrder> dsh = itemOrderService.listBySqlReturnEntity(sql4);//已收货String sql5 = "select * from item_order where user_id="+userId+" and status=3 order by id desc";List<ItemOrder> ysh = itemOrderService.listBySqlReturnEntity(sql5);model.addAttribute("all",all);model.addAttribute("dfh",dfh);model.addAttribute("yqx",yqx);model.addAttribute("dsh",dsh);model.addAttribute("ysh",ysh);return "itemOrder/my";}/*** 购物车结算提交*/@RequestMapping("/exAdd")@ResponseBodypublic String exAdd(@RequestBody List<CarDto> list,HttpServletRequest request){Object attribute = request.getSession().getAttribute(Consts.USERID);JSONObject js = new JSONObject();if(attribute==null){js.put(Consts.RES,0);return js.toJSONString();}Integer userId = Integer.valueOf(attribute.toString());User byId = userService.getById(userId);if(StringUtils.isEmpty(byId.getAddress())){js.put(Consts.RES,2);return js.toJSONString();}List<Integer> ids = new ArrayList<>();BigDecimal to = new BigDecimal(0);for(CarDto c:list){ids.add(c.getId());Car load = carService.load(c.getId());to = to.add(new BigDecimal(load.getPrice()).multiply(new BigDecimal(c.getNum())));}ItemOrder order = new ItemOrder();order.setStatus(0);order.setCode(getOrderNo());order.setIsDelete(0);order.setTotal(to.setScale(2,BigDecimal.ROUND_HALF_UP).toString());order.setUserId(userId);order.setAddTime(new Date());itemOrderService.insert(order);//订单详情放入orderDetail,删除购物车if(!CollectionUtils.isEmpty(ids)){for(CarDto c:list){Car load = carService.load(c.getId());OrderDetail de = new OrderDetail();de.setItemId(load.getItemId());de.setOrderId(order.getId());de.setStatus(0);de.setNum(c.getNum());de.setTotal(String.valueOf(c.getNum()*load.getPrice()));orderDetailService.insert(de);//修改成交数Item load2 = itemService.load(load.getItemId());load2.setGmNum(load2.getGmNum()+c.getNum());itemService.updateById(load2);//删除购物车carService.deleteById(c.getId());}}js.put(Consts.RES,1);return js.toJSONString();}private static String date;private static long orderNum = 0L;public static synchronized String getOrderNo(){String str = new SimpleDateFormat("yyyyMMddHHmm").format(new Date());if(date==null||!date.equals(str)){date = str;orderNum = 0L;}orderNum++;long orderNO = Long.parseLong(date)*10000;orderNO += orderNum;return orderNO+"";}/*** 取消订单*/@RequestMapping("/qx")public String qx(Integer id,Model model){ItemOrder obj =itemOrderService.load(id);obj.setStatus(1);itemOrderService.updateById(obj);model.addAttribute("obj",obj);return "redirect:/itemOrder/my";}/*** 后台发货*/@RequestMapping("/fh")public String fh(Integer id,Model model){ItemOrder obj =itemOrderService.load(id);obj.setStatus(2);itemOrderService.updateById(obj);model.addAttribute("obj",obj);return "redirect:/itemOrder/findBySql";}/*** 用户收货*/@RequestMapping("/sh")public String sh(Integer id,Model model){ItemOrder obj =itemOrderService.load(id);obj.setStatus(3);itemOrderService.updateById(obj);model.addAttribute("obj",obj);return "redirect:/itemOrder/my";}/*** 用户评价入口*/@RequestMapping("/pj")public String pj(Integer id,Model model){model.addAttribute("id",id);return "itemOrder/pj";}
}

六、获取整套项目源码

相关文章:

水果商城,可运行

文章目录项目介绍一、技术栈二、本项目分为前后台&#xff0c;有管理员与用户两种角色&#xff1b;1、管理员角色包含以下功能&#xff1a;2、用户角色包含以下功能&#xff1a;三、用户功能页面展示四、管理员功能页面展示五、部分代码展示六、获取整套项目源码项目介绍 一、…...

LiveGBS国标GB/T28181国标视频流媒体平台-功能报警订阅配置报警预案告警截图及录像

LiveGBS国标GB/T28181国标视频流媒体平台-功能报警订阅配置报警预案告警截图及录像1、报警信息1.1、报警查询1.2、配置开启报警订阅1.2.1、国标设备编辑1.2.2、选择开启报警订阅1.3、配置摄像头报警1.3.1、配置摄像头报警通道ID1.3.2、配置摄像头开启侦测1.3.3、尝试触发摄像头…...

软件测试---测试分类

一 : 按测试对象划分 1.1 可靠性测试 可靠性&#xff08;Availability&#xff09;即可用性&#xff0c;是指系统正常运行的能力或者程度&#xff0c;一般用正常向用户提供软件服务的时间占总时间的百分比表示。 1.2 容错性测试 行李箱 , 四个轮子 , 坏了一个 , 说明这个容错…...

剑指 Offer II 015. 字符串中的所有变位词

题目链接 剑指 Offer II 015. 字符串中的所有变位词 mid 题目描述 给定两个字符串 s和 p&#xff0c;找到 s中所有 p的 变位词 的子串&#xff0c;返回这些子串的起始索引。不考虑答案输出的顺序。 变位词 指字母相同&#xff0c;但排列不同的字符串。 示例 1&#xff1a; 输…...

【SpringCloud】SpringCloud详细教程之微服务比较

目录前言一.什么是微服务&#xff1f;为什么要使用微服务二.微服务对比三.企业开发场景前言 我会通过实际代码来给展示每个组件的用法 一.什么是微服务&#xff1f;为什么要使用微服务 分布式&#xff0c;把一个项目拆分成多个模块&#xff0c;每一个模块相当于一个服务。 微…...

二.项目使用vue-router,引入ant-design-vue的UI框架,引入less

根据前文《使用Vue脚手架工具搭建vue项目》搭建好脚手架后使用 1.vue-router 2.引入UI框架ant design vue 3.引入less 1.vue-router vue-router分为两种模式(默认为hash模式)&#xff1a; hash history hash&#xff1a; 特征&#xff1a; 1.hash会在浏览器路径里带#号&#…...

网络安全怎么学?20年白帽子老江湖告诉你

很多人都知道龙叔是个老程序员&#xff0c;但却不知道其实我也是个H客&#xff0c;20年前我就开始痴迷于H客技术&#xff0c;可以说是网络安全方面的老江湖了。 到现在&#xff0c;我还依然会去研究这一块&#xff0c;偶尔会和一些网安的朋友交流技术&#xff0c;比如说红盟的…...

药房管理系统;药库管理系统

第一&#xff0c;主要功能&#xff1a;  本系统集日常销售、药品进销存、会员积分、GSP管理等药店所需的所有功能于一体&#xff0c;实现店铺管理的全部自动化。第二、新功能&#xff1a;  增加了“按功能查询药品”的功能&#xff0c;使软件用户可以根据客户的症状推荐合适…...

深眸科技|机器视觉提升制造性能,焕发传统企业智造新活力!

随着机器视觉技术的成熟与发展&#xff0c;其在工业制造中得到越来越广泛的应用。机器视觉在工业制造领域的应用朝着智能识别、智能检测、智能测量以及智能互联的完整智能体系方向发展。此外&#xff0c;快速变化的市场需求&#xff0c;不断涌入行业的竞争对手&#xff0c;让传…...

ubuntu安装SSH的方法

Ubuntu安装SSH的方法。14版的ubuntu经过测试&#xff0c;默认没有开启SSH&#xff0c;所以需要安装。 1、虚拟机设置网卡为桥接模式&#xff0c;即NAT。12版虚拟机默认的。 2、查看ubuntu使用的ip。 ifconfig即可查看&#xff0c;14版的ubuntu自带这个命令。 3、查看是否pi…...

哪种蓝牙耳机通话效果好?通话清晰的蓝牙耳机推荐

出门的时候&#xff0c;如果戴耳机和别人通话&#xff0c;就不必把耳机摘下来&#xff0c;接电话变得前所未有的简单。现在的蓝牙耳机&#xff0c;已经不是单纯的用来听音乐了&#xff0c;而是一种更好的功能。下面这四款蓝牙耳机不仅适合听歌&#xff0c;通话还清晰&#xff0…...

IT运维如何完成一场高质量复盘

复盘的终极目标是&#xff1a;还原事实&#xff0c;找到薄弱点加以改进。 提到复盘&#xff0c;很多人的第一反应是线上故障&#xff0c;有人要背锅了。 复盘真正的价值是还原事实&#xff0c;在薄弱处加以改进。如何做一次高质量的复盘&#xff0c;我们给出3点建议。 1、坦…...

JVM调优面试题——基础知识

文章目录1、JDK&#xff0c;JRE以及JVM的关系2、编译器到底干了什么事&#xff1f;3、类加载机制是什么&#xff1f;3.1、装载(Load)3.2、链接(Link)3.3、初始化(Initialize)4、类加载器有哪些&#xff1f;5、什么是双亲委派机制&#xff1f;6、介绍一下JVM内存划分&#xff08…...

三、mongdb 查询

一、 MongoDB文档检索 MongoDB中有多种方式可以检索文档: 1.1 查询过滤器 使用查询过滤器从集合中检索文档。查询过滤器是一组键值对,可按字段值查询文档。 例如: db.col.find({"status":"A"})这个示例查询status等于“A”的文档。 1.2 范围查询操作符…...

python的 ping 网络状态监测方法(含多IP)

ping 基本概念 ping &#xff08;Packet Internet Groper&#xff09;是一种因特网包探索器&#xff0c;用于测试网络连接量的程序。Ping是工作在 TCP/IP网络体系结构中应用层的一个服务命令&#xff0c; 主要是向特定的目的主机发送 ICMP&#xff08;Internet Control Messag…...

【独家】华为OD机试提供C语言题解 - 单词反转

最近更新的博客 华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南)华为od机试,独家整理 已参加机试人员的实战技巧文章目录 最近更新的博客使用说明单词…...

Linux docker环境安装,docker-compose安装,jdk17安装

安装docker 删除之前安装的docker yum remove docker \docker-client \docker-client-latest \docker- common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-sqlinux \docker-engine-selinux \docker-engine \docker-ce安装yum工具 yum install -y y…...

界面开发(3)--- PyQt5用户登录界面连接数据库

文章目录数据库账户注册账号登录找回密码为了实现用户登录界面的登录功能&#xff0c;我们必须建立一个数据库&#xff0c;并把账号和对应的密码&#xff0c;存储到数据库中。如果输入的账号和密码与数据库中的一致&#xff0c;那我们就允许用户登录&#xff0c;进入新的界面。…...

以下真的没有任何要写的了,我需要凑字数,请大家原谅

以下真的没有任何要写的了&#xff0c;我需要凑字数&#xff0c;请大家原谅&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#…...

2023年 Java 发展趋势

GitHub 语言统计表明&#xff0c;Java在编程语言中排名第二&#xff0c;而在2022年的TIOBE指数中&#xff0c;Java排在第四。 抛开排名&#xff0c;Java是自诞生以来企业使用率最高的编程语言&#xff0c;作为一种编程语言&#xff0c;它比许多竞争对手都有更多的优点&#xf…...

深入剖析AI大模型:大模型时代的 Prompt 工程全解析

今天聊的内容&#xff0c;我认为是AI开发里面非常重要的内容。它在AI开发里无处不在&#xff0c;当你对 AI 助手说 "用李白的风格写一首关于人工智能的诗"&#xff0c;或者让翻译模型 "将这段合同翻译成商务日语" 时&#xff0c;输入的这句话就是 Prompt。…...

Leetcode 3576. Transform Array to All Equal Elements

Leetcode 3576. Transform Array to All Equal Elements 1. 解题思路2. 代码实现 题目链接&#xff1a;3576. Transform Array to All Equal Elements 1. 解题思路 这一题思路上就是分别考察一下是否能将其转化为全1或者全-1数组即可。 至于每一种情况是否可以达到&#xf…...

线程与协程

1. 线程与协程 1.1. “函数调用级别”的切换、上下文切换 1. 函数调用级别的切换 “函数调用级别的切换”是指&#xff1a;像函数调用/返回一样轻量地完成任务切换。 举例说明&#xff1a; 当你在程序中写一个函数调用&#xff1a; funcA() 然后 funcA 执行完后返回&…...

2024年赣州旅游投资集团社会招聘笔试真

2024年赣州旅游投资集团社会招聘笔试真 题 ( 满 分 1 0 0 分 时 间 1 2 0 分 钟 ) 一、单选题(每题只有一个正确答案,答错、不答或多答均不得分) 1.纪要的特点不包括()。 A.概括重点 B.指导传达 C. 客观纪实 D.有言必录 【答案】: D 2.1864年,()预言了电磁波的存在,并指出…...

基于Uniapp开发HarmonyOS 5.0旅游应用技术实践

一、技术选型背景 1.跨平台优势 Uniapp采用Vue.js框架&#xff0c;支持"一次开发&#xff0c;多端部署"&#xff0c;可同步生成HarmonyOS、iOS、Android等多平台应用。 2.鸿蒙特性融合 HarmonyOS 5.0的分布式能力与原子化服务&#xff0c;为旅游应用带来&#xf…...

MySQL 8.0 OCP 英文题库解析(十三)

Oracle 为庆祝 MySQL 30 周年&#xff0c;截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始&#xff0c;将英文题库免费公布出来&#xff0c;并进行解析&#xff0c;帮助大家在一个月之内轻松通过OCP认证。 本期公布试题111~120 试题1…...

零基础设计模式——行为型模式 - 责任链模式

第四部分&#xff1a;行为型模式 - 责任链模式 (Chain of Responsibility Pattern) 欢迎来到行为型模式的学习&#xff01;行为型模式关注对象之间的职责分配、算法封装和对象间的交互。我们将学习的第一个行为型模式是责任链模式。 核心思想&#xff1a;使多个对象都有机会处…...

基于SpringBoot在线拍卖系统的设计和实现

摘 要 随着社会的发展&#xff0c;社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。 在线拍卖系统&#xff0c;主要的模块包括管理员&#xff1b;首页、个人中心、用户管理、商品类型管理、拍卖商品管理、历史竞拍管理、竞拍订单…...

Spring AI Chat Memory 实战指南:Local 与 JDBC 存储集成

一个面向 Java 开发者的 Sring-Ai 示例工程项目&#xff0c;该项目是一个 Spring AI 快速入门的样例工程项目&#xff0c;旨在通过一些小的案例展示 Spring AI 框架的核心功能和使用方法。 项目采用模块化设计&#xff0c;每个模块都专注于特定的功能领域&#xff0c;便于学习和…...

DeepSeek源码深度解析 × 华为仓颉语言编程精粹——从MoE架构到全场景开发生态

前言 在人工智能技术飞速发展的今天&#xff0c;深度学习与大模型技术已成为推动行业变革的核心驱动力&#xff0c;而高效、灵活的开发工具与编程语言则为技术创新提供了重要支撑。本书以两大前沿技术领域为核心&#xff0c;系统性地呈现了两部深度技术著作的精华&#xff1a;…...