源码获取:博客首页 "资源" 里下载!

这个项目涉及到Shiro整合JWT、秒杀功能所具备的基本要求(限流、乐观锁、接口隐藏、JMeter高并发测试等等)、消息中间件RabbitMQ的异步邮件通知和死信队列沙箱支付宝模拟支付等等技术亮点。

项目功能:该项目分为买家、卖家、管理员三个角色。买家角色的功能:登录、注册、浏览图书、管理购物车、结算订单、支付订单、查看订单、修改个人信息等等功能。

卖家角色的功能:登录、注册、浏览商品、管理自己发布的图书、管理收到的订单、查看自己的收益详情等等。管理员角色的功能:登录、管理所有用户信息、管理权限信息、管理所有卖家发布的图书、管理所有订单信息、管理所有支付信息、查看总共收益详情等等。

应用技术:SSM + Jsp + MySQL + Redis + JWT + Shiro + RabbitMQ + EasyUI + 沙箱支付宝 + 令牌桶限流 + 乐观锁等等

运行环境:Eclipse/IntelliJ IDEA + MySQL5.7 + Maven3.6.3+ JDK1.8 + Redis5.0.5+ Tomcat8.5 + RabbitMQ3.7.7

订单管理控制层:

@Controller
@RequestMapping("/order")
public class OrderController {@Autowiredprivate IOrderService orderService;@Autowiredprivate ICartService cartService;@Autowiredprivate IBookInfoService bookInfoService;/*** 填写订单信息页面** @param bookId* @param buyNum* @param request* @return*/@GetMapping("/info")public String orderInfo(@RequestParam(required = false, defaultValue = "0") int bookId,@RequestParam(required = false, defaultValue = "0") int buyNum,HttpServletRequest request) throws BSException {if (bookId != 0) {//点了立即购买,放到request域中,也session的立即购买域中以区分购物车中的书籍BookInfo bookInfo = bookInfoService.findById(bookId);if (bookInfo != null) {BSResult bsResult = cartService.addToCart(bookInfo, null, buyNum);request.getSession().setAttribute("buyNowCart", bsResult.getData());request.setAttribute("cart", bsResult.getData());return "order_info";} else {request.setAttribute("exception", "不好意思,书籍库存不足或不存在了!");return "exception";}}//没有点立即购买,购物车中的总金额大于0才让填写订单信息Cart cart = (Cart) request.getSession().getAttribute("cart");if (cart != null && cart.getTotal() > 0) {return "order_info";} else {return "cart";}}@GetMapping("/payPage/{orderId}")public String toPay(@PathVariable("orderId") String orderId, Model model) {BSResult bsResult = orderService.findOrderById(orderId);if (bsResult.getCode() == 200) {model.addAttribute("order", bsResult.getData());return "payment";}return "exception";}@RequestMapping("/deletion/{orderId}")public String deletion(@PathVariable("orderId") String orderId) {BSResult bsResult = orderService.deleteOrder(orderId);if (bsResult.getCode() == 200) {return "redirect:/order/list";}return "exception";}/*** 订单列表** @return*/@GetMapping("/list")public String orderList(HttpServletRequest request) {User loginUser = (User) request.getSession().getAttribute("loginUser");List<OrderCustom> orderCustoms = orderService.findOrdersByUserId(loginUser.getUserId());request.setAttribute("orderCustoms", orderCustoms);return "order_list";}/*** 创建订单** @return*/@PostMapping("/creation")public String createOrder(User userDTO, String express, int payMethod, HttpServletRequest request) {//立即购买,优先创建订单Cart buyNowCart = (Cart) request.getSession().getAttribute("buyNowCart");User loginUser = (User) request.getSession().getAttribute("loginUser");userDTO.setUserId(loginUser.getUserId());userDTO.setZipCode(loginUser.getZipCode());if (buyNowCart != null) {BSResult bsResult = orderService.createOrder(buyNowCart, userDTO, express, payMethod);if (bsResult.getCode() == 200) {request.setAttribute("order", bsResult.getData());cartService.clearCart(request, "buyNowCart");return "payment";} else {request.setAttribute("exception", bsResult.getMessage());return "exception";}}//普通购物车Cart cart = (Cart) request.getSession().getAttribute("cart");if (cart != null) {BSResult bsResult = orderService.createOrder(cart, userDTO, express, payMethod);if (bsResult.getCode() == 200) {request.setAttribute("order", bsResult.getData());cartService.clearCart(request, "cart");return "payment";} else {request.setAttribute("exception", bsResult.getMessage());return "exception";}} else {request.setAttribute("exception", "购物车为空!");return "exception";}}/*** 确认收货** @param orderId* @return*/@RequestMapping("/confirm/{orderId}")public String confirmReceiving(@PathVariable("orderId") String orderId, Model model) {BSResult bsResult = orderService.confirmReceiving(orderId);if (bsResult.getCode() == 200) {return "redirect:/order/list";} else {model.addAttribute("exception", bsResult.getMessage());return "exception";}}
}

购物车管理控制层:

@Controller
@RequestMapping("/cart")
public class CartController {@Autowiredprivate IBookInfoService bookInfoService;@Autowiredprivate ICartService cartService;//返回购物差页面@GetMapping("/items")public String showCart() {return "cart";}/*** 加入购物车** @param bookId* @param request* @return*/@RequestMapping("/addition")public String addToCart(@RequestParam(value = "bookId",defaultValue = "0") int bookId,@RequestParam(required = false,defaultValue = "0") int buyNum,HttpServletRequest request) {Cart cart = (Cart) request.getSession().getAttribute("cart");//根据要加入购物车的bookId查询bookInfoBookInfo bookInfo = bookInfoService.queryBookAvailable(bookId);if (bookInfo != null) {//这本书在数据库里BSResult bsResult = cartService.addToCart(bookInfo, cart, buyNum);request.getSession().setAttribute("cart", bsResult.getData());request.setAttribute("bookInfo", bookInfo);} else {//数据库里没有这本书,或库存不足request.setAttribute("bookInfo", null);}return "addcart";}@GetMapping("/clear")public String clearCart(HttpServletRequest request) {cartService.clearCart(request,"cart");return "cart";}@GetMapping("/deletion/{bookId}")public String deleteCartItem(@PathVariable("bookId") int bookId,HttpServletRequest request){cartService.deleteCartItem(bookId, request);return "redirect:/cart/items";}/*** 更新某个购物车项的购买数量* @param bookId* @param newNum* @param request* @return*/@PostMapping("/buy/num/update")@ResponseBodypublic BSResult updateBuyNum(int bookId, int newNum, HttpServletRequest request){return cartService.updateBuyNum(bookId, newNum, request);}@PostMapping("/checkOne")@ResponseBodypublic BSResult checkACartItem(int bookId,HttpServletRequest request){Cart cart = (Cart)request.getSession().getAttribute("cart");return cartService.checkedOrNot(cart, bookId);}
}

书信息管理控制层:

@Controller
@RequestMapping("/book")
public class BookInfoController {@Autowiredprivate IBookInfoService bookInfoService;@Autowiredprivate BookDescMapper bookDescMapper;/*** 查询某一本书籍详情** @param bookId* @param model* @return*/@RequestMapping("/info/{bookId}")public String bookInfo(@PathVariable("bookId") Integer bookId, Model model) throws BSException {//查询书籍BookInfo bookInfo = bookInfoService.findById(bookId);//查询书籍推荐列表List<BookInfo> recommendBookList = bookInfoService.findBookListByCateId(bookInfo.getBookCategoryId(), 1, 5);//查询书籍详情BookDesc bookDesc = bookDescMapper.selectByPrimaryKey(bookId);//增加访问量bookInfoService.addLookMount(bookInfo);Collections.shuffle(recommendBookList);model.addAttribute("bookInfo", bookInfo);model.addAttribute("bookDesc", bookDesc);model.addAttribute("recommendBookList", recommendBookList);return "book_info";}/*** 通过关键字和书籍分类搜索书籍列表** @param keywords* @return*/@RequestMapping("/list")public String bookSearchList(@RequestParam(defaultValue = "", required = false) String keywords,@RequestParam(defaultValue = "0", required = false) int cateId,//分类Id,默认为0,即不按照分类Id查@RequestParam(defaultValue = "1", required = false) int page,@RequestParam(defaultValue = "6", required = false) int pageSize,Model model) {keywords = keywords.trim();PageInfo<BookInfo> bookPageInfo = bookInfoService.findBookListByCondition(keywords, cateId, page, pageSize,0);//storeId为0,不按照商店Id查询model.addAttribute("bookPageInfo", bookPageInfo);model.addAttribute("keywords", keywords);model.addAttribute("cateId", cateId);return "book_list";}}

源码获取:博客首页 "资源" 里下载!

Java项目:网上图书商城系统(java+SSM+Jsp+MySQL+Redis+JWT+Shiro+RabbitMQ+EasyUI)相关推荐

  1. 基于javaweb的网上图书商城系统(java+ssm+jsp+mysql+redis+jwt+shiro+rabbitmq+easyui)

    基于javaweb的网上图书商城系统(java+ssm+jsp+mysql+redis+jwt+shiro+rabbitmq+easyui) 运行环境 Java≥8.MySQL≥5.7.Tomcat≥ ...

  2. 基于javaweb+mysql的网上图书商城网上书店(java+SSM+Jsp+MySQL+Redis+JWT+Shiro+RabbitMQ+EasyUI)

    这个项目涉及到Shiro整合JWT.秒杀功能所具备的基本要求(限流.乐观锁.接口隐藏.JMeter高并发测试等等).消息中间件RabbitMQ的异步邮件通知和死信队列.沙箱支付宝模拟支付等等技术亮点. ...

  3. Java项目:网上花店商城系统(java+jsp+servlert+mysql+ajax)

    源码获取:博客首页 "资源" 里下载! 一.项目简述 功能: 一套完整的网上花店商场系统,系统支持前台会员的注册 登陆系统留言,花朵的品种选择,详情浏览,加入购物 车,购买花朵等: ...

  4. Java项目:优咪商城系统(java+SpringBoot+html+bootstrap+layui+maven+mysql)

    源码获取:博客首页 "资源" 里下载! 项目介绍 优咪网上购物体验系统 1. 该平台主要有两大功能: (1) 浏览平台官方和认证作者提供的篮球相关信息,信息类型包括:视频,新闻,评 ...

  5. Java项目:二手图书商城平台(java+SSM+JSP+JS+jquery+Mysql)

    源码获取:俺的博客首页 "资源" 里下载! 项目介绍 用户角色包含以下功能: 用户登录,查看商品详情,按分类查看,查看我的书架,上传二手书等功能. PS:这个没有管理员角色. 环境 ...

  6. Java项目:茶叶售卖商城系统(java+SSM+JSP+EasyUi+mysql)

    源码获取:博客首页 "资源" 里下载! 这是一个应用SSM框架的项目,前端页面整洁清晰.该系统有两个角色,一个是普通用户,另一个是管理员. 普通用户具有注册.登录.查看商品.添加购 ...

  7. Java项目:在线甜品商城系统(java+SSM+JSP+JavaScript+Mysql)

    源码获取:俺的博客首页 "资源" 里下载! 项目介绍 管理员角色包含以下功能: 管理员登录,套餐管理,甜品管理,预定管理等功能. 用户角色包含以下功能: 用户登录与注册,查看首页, ...

  8. Java项目:网上电商系统(java+SSM+mysql+maven+tomcat)

    源码获取:博客首页 "资源" 里下载! 一.项目简述 功能:本系统分用户前台和管理员后台. 前台展示+后台管理,前台界面可实现用户登录,用户注 册,商品展示,商品明细展示,用户信息 ...

  9. Java项目:家居购物商城系统(java+html+jdbc+mysql)

    源码获取:博客首页 "资源" 里下载! 一.项目简述 功能: Java Web精品项目源码,家居商城分类展示,商品展示, 商品下单,购物车,个人中心,后台管理,用户管理,商品管理, ...

最新文章

  1. urb数据结构【转】
  2. 使用VC++ 读取显示DEM文件
  3. linux基础命令chown,Linux常用命令及组件:chown和chmod
  4. 调用未绑定的父类方法和使用supper 函数 之间的选择.
  5. rt5350 中断处理分析
  6. 《In Search of an Understandable Consensus Algorithm》翻译
  7. Git 使用方法(一)-本地篇
  8. This program requires version 3.4.0 of the Protocol Buffer runtime library
  9. 王思聪吃热狗火了,程序员开发各种恶搞小程序!王校长:我不要脸的啊
  10. 公司员工考勤系统Java代码
  11. nvidia driver 驱动重装教程
  12. 使用GetPixel要注意
  13. 微众银行再次入驻微信小程序,人人可申请,66万人提额100亿,发福利啦!!!...
  14. 回忆老友蒋新松先生及庆贺《机器人产业发展规划》的发布
  15. 最新的VMware Workstation Pro 17安装教程+安装包下载
  16. How to find block sql from dba_waiters v$session v$sql
  17. 解决input输入框与select下拉框水平不对齐
  18. SAS学习步骤和参考书
  19. 【科普资料】从科学精神到科学知识的材料
  20. closeEvent

热门文章

  1. Sg.js框架核心概念
  2. Quixel megascans模型材质贴图合集包
  3. C语言网络编程:socket函数
  4. 编译内核指定模块,筛选当前模块依赖的组件
  5. 简易git操作 -- 让你的格子绿起来
  6. 线程互斥和同步-- 互斥锁
  7. Linux安装Nodejs
  8. Handlebars模板引擎
  9. 【bzoj3924】[Zjoi2015]幻想乡战略游戏 动态点分治
  10. C# 的三种序列化方法