Java毕业设计实战项目之宠物商城系统的实现流程
时间:2022-12-29 10:51:44|栏目:JAVA代码|点击: 次
一、项目运行
环境配置:
Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。
项目技术:
Springboot + Maven + mybatis+ Vue 等等组成,B/S模式 + Maven管理等等。
后台相关接口:
/** * 后台相关接口 */ @Controller @RequestMapping("/admin") public class AdminController { private static final int rows = 10; @Autowired private AdminService adminService; @Autowired private OrderService orderService; @Autowired private UserService userService; @Autowired private GoodService goodService; @Autowired private TopService topService; @Autowired private TypeService typeService; /** * 管理员登录 * @return */ @RequestMapping("/login") public String login(Admins admin, HttpServletRequest request, HttpSession session) { if (adminService.checkUser(admin.getUsername(), admin.getPassword())) { session.setAttribute("username", admin.getUsername()); return "redirect:index"; } request.setAttribute("msg", "用户名或密码错误!"); return "/admin/login.jsp"; } /** * 退出 * @return */ @RequestMapping("/logout") public String logout(HttpSession session) { session.removeAttribute("admin"); return "/admin/login.jsp"; } /** * 后台首页 * @return */ @RequestMapping("/index") public String index(HttpServletRequest request) { request.setAttribute("msg", "恭喜你! 登录成功了"); return "/admin/index.jsp"; } /** * 订单列表 * * @return */ @RequestMapping("/orderList") public String orderList(@RequestParam(required=false, defaultValue="0")byte status, HttpServletRequest request, @RequestParam(required=false, defaultValue="1") int page) { request.setAttribute("flag", 1); request.setAttribute("status", status); request.setAttribute("orderList", orderService.getList(status, page, rows)); request.setAttribute("pageTool", PageUtil.getPageTool(request, orderService.getTotal(status), page, rows)); return "/admin/order_list.jsp"; } /** * 订单发货 * * @return */ @RequestMapping("/orderDispose") public String orderDispose(int id, byte status, @RequestParam(required=false, defaultValue="1") int page) { orderService.dispose(id); return "redirect:orderList?flag=1&status="+status+"&page="+page; } /** * 订单完成 * * @return */ @RequestMapping("/orderFinish") public String orderFinish(int id, byte status, @RequestParam(required=false, defaultValue="1") int page) { orderService.finish(id); return "redirect:orderList?flag=1&status="+status+"&page="+page; } /** * 订单删除 * * @return */ @RequestMapping("/orderDelete") public String orderDelete(int id, byte status, @RequestParam(required=false, defaultValue="1") int page) { orderService.delete(id); return "redirect:orderList?flag=1&status="+status+"&page="+page; } /** * 顾客管理 * * @return */ @RequestMapping("/userList") public String userList(HttpServletRequest request, @RequestParam(required=false, defaultValue="1") int page) { request.setAttribute("flag", 2); request.setAttribute("userList", userService.getList(page, rows)); request.setAttribute("pageTool", PageUtil.getPageTool(request, userService.getTotal(), page, rows)); return "/admin/user_list.jsp"; } /** * 顾客添加 * * @return */ @RequestMapping("/userAdd") public String userAdd(HttpServletRequest request) { request.setAttribute("flag", 2); return "/admin/user_add.jsp"; } /** * 顾客添加 * * @return */ @RequestMapping("/userSave") public String userSave(Users user, HttpServletRequest request, @RequestParam(required=false, defaultValue="1") int page) { if (userService.isExist(user.getUsername())) { request.setAttribute("msg", "用户名已存在!"); return "/admin/user_add.jsp"; } userService.add(user); return "redirect:userList?flag=2&page="+page; } /** * 顾客密码重置页面 * * @return */ @RequestMapping("/userRe") public String userRe(int id, HttpServletRequest request) { request.setAttribute("flag", 2); request.setAttribute("user", userService.get(id)); return "/admin/user_reset.jsp"; } /** * 顾客密码重置 * * @return */ @RequestMapping("/userReset") public String userReset(Users user, @RequestParam(required=false, defaultValue="1") int page) { String password = SafeUtil.encode(user.getPassword()); user = userService.get(user.getId()); user.setPassword(password); userService.update(user); return "redirect:userList?flag=2&page="+page; } /** * 顾客更新 * * @return */ @RequestMapping("/userEdit") public String userEdit(int id, HttpServletRequest request) { request.setAttribute("flag", 2); request.setAttribute("user", userService.get(id)); return "/admin/user_edit.jsp"; } /** * 顾客更新 * * @return */ @RequestMapping("/userUpdate") public String userUpdate(Users user, @RequestParam(required=false, defaultValue="1") int page) { userService.update(user); return "redirect:userList?flag=2&page="+page; } /** * 顾客删除 * * @return */ @RequestMapping("/userDelete") public String userDelete(Users user, @RequestParam(required=false, defaultValue="1") int page) { userService.delete(user); return "redirect:userList?flag=2&page="+page; } /** * 产品列表 * * @return */ @RequestMapping("/goodList") public String goodList(@RequestParam(required=false, defaultValue="0")byte status, HttpServletRequest request, @RequestParam(required=false, defaultValue="1") int page) { request.setAttribute("flag", 3); request.setAttribute("page", page); request.setAttribute("status", status); request.setAttribute("goodList", goodService.getList(status, page, rows)); request.setAttribute("pageTool", PageUtil.getPageTool(request, goodService.getTotal(status), page, rows)); return "/admin/good_list.jsp"; } /** * 产品添加 * * @return */ @RequestMapping("/goodAdd") public String goodAdd(HttpServletRequest request) { request.setAttribute("flag", 3); request.setAttribute("typeList", typeService.getList()); return "/admin/good_add.jsp"; } /** * 产品添加 * * @return * @throws Exception */ @RequestMapping("/goodSave") public String goodSave(String name, int price, String intro, int stock, int typeId, MultipartFile cover, MultipartFile image1, MultipartFile image2, @RequestParam(required=false, defaultValue="1") int page) throws Exception { Goods good = new Goods(); good.setName(name); good.setPrice(price); good.setIntro(intro); good.setStock(stock); good.setTypeId(typeId); good.setCover(UploadUtil.fileUpload(cover)); good.setImage1(UploadUtil.fileUpload(image1)); good.setImage2(UploadUtil.fileUpload(image2)); goodService.add(good); return "redirect:goodList?flag=3&page="+page; } /** * 产品更新 * * @return */ @RequestMapping("/goodEdit") public String goodEdit(int id, HttpServletRequest request) { request.setAttribute("flag", 3); request.setAttribute("typeList", typeService.getList()); request.setAttribute("good", goodService.get(id)); return "/admin/good_edit.jsp"; } /** * 产品更新 * * @return * @throws Exception */ @RequestMapping("/goodUpdate") public String goodUpdate(int id, String name, int price, String intro, int stock, int typeId, MultipartFile cover, MultipartFile image1, MultipartFile image2, @RequestParam(required=false, defaultValue="1") int page) throws Exception { Goods good = goodService.get(id); good.setName(name); good.setPrice(price); good.setIntro(intro); good.setStock(stock); good.setTypeId(typeId); if (Objects.nonNull(cover) && !cover.isEmpty()) { good.setCover(UploadUtil.fileUpload(cover)); } if (Objects.nonNull(image1) && !image1.isEmpty()) { good.setImage1(UploadUtil.fileUpload(image1)); } if (Objects.nonNull(image2) && !image2.isEmpty()) { good.setImage2(UploadUtil.fileUpload(image2)); } goodService.update(good); return "redirect:goodList?flag=3&page="+page; } /** * 产品删除 * * @return */ @RequestMapping("/goodDelete") public String goodDelete(int id, @RequestParam(required=false, defaultValue="1") int page) { goodService.delete(id); return "redirect:goodList?flag=3&page="+page; } /** * 添加推荐 * @return */ @RequestMapping("/topSave") public @ResponseBody String topSave(Tops tops, @RequestParam(required=false, defaultValue="0")byte status, @RequestParam(required=false, defaultValue="1") int page) { int id = topService.add(tops); return id > 0 ? "ok" : null; } /** * 删除推荐 * @return */ @RequestMapping("/topDelete") public @ResponseBody String topDelete(Tops tops, @RequestParam(required=false, defaultValue="0")byte status, @RequestParam(required=false, defaultValue="1") int page) { boolean flag = topService.delete(tops); return flag ? "ok" : null; } /** * 类目列表 * * @return */ @RequestMapping("/typeList") public String typeList(HttpServletRequest request) { request.setAttribute("flag", 4); request.setAttribute("typeList", typeService.getList()); return "/admin/type_list.jsp"; } /** * 类目添加 * * @return */ @RequestMapping("/typeSave") public String typeSave(Types type, @RequestParam(required=false, defaultValue="1") int page) { typeService.add(type); return "redirect:typeList?flag=4&page="+page; } /** * 类目更新 * * @return */ @RequestMapping("/typeEdit") public String typeUp(int id, HttpServletRequest request) { request.setAttribute("flag", 4); request.setAttribute("type", typeService.get(id)); return "/admin/type_edit.jsp"; } /** * 类目更新 * * @return */ @RequestMapping("/typeUpdate") public String typeUpdate(Types type, @RequestParam(required=false, defaultValue="1") int page) { typeService.update(type); return "redirect:typeList?flag=4&page="+page; } /** * 类目删除 * * @return */ @RequestMapping("/typeDelete") public String typeDelete(Types type, @RequestParam(required=false, defaultValue="1") int page) { typeService.delete(type); return "redirect:typeList?flag=4&page="+page; } /** * 管理员列表 * * @return */ @RequestMapping("/adminList") public String adminList(HttpServletRequest request, @RequestParam(required=false, defaultValue="1") int page) { request.setAttribute("flag", 5); request.setAttribute("adminList", adminService.getList(page, rows)); request.setAttribute("pageTool", PageUtil.getPageTool(request, adminService.getTotal(), page, rows)); return "/admin/admin_list.jsp"; } /** * 管理员修改自己密码 * * @return */ @RequestMapping("/adminRe") public String adminRe(HttpServletRequest request, HttpSession session) { request.setAttribute("flag", 5); request.setAttribute("admin", adminService.getByUsername(String.valueOf(session.getAttribute("username")))); return "/admin/admin_reset.jsp"; } /** * 管理员修改自己密码 * * @return */ @RequestMapping("/adminReset") public String adminReset(Admins admin, HttpServletRequest request) { request.setAttribute("flag", 5); if (adminService.get(admin.getId()).getPassword().equals(SafeUtil.encode(admin.getPassword()))) { admin.setPassword(SafeUtil.encode(admin.getPasswordNew())); adminService.update(admin); request.setAttribute("admin", admin); request.setAttribute("msg", "修改成功!"); }else { request.setAttribute("msg", "原密码错误!"); } return "/admin/admin_reset.jsp"; } /** * 管理员添加 * * @return */ @RequestMapping("/adminSave") public String adminSave(Admins admin, HttpServletRequest request, @RequestParam(required=false, defaultValue="1") int page) { if (adminService.isExist(admin.getUsername())) { request.setAttribute("msg", "用户名已存在!"); return "/admin/admin_add.jsp"; } adminService.add(admin); return "redirect:adminList?flag=5&page="+page; } /** * 管理员修改 * * @return */ @RequestMapping("/adminEdit") public String adminEdit(int id, HttpServletRequest request) { request.setAttribute("flag", 5); request.setAttribute("admin", adminService.get(id)); return "/admin/admin_edit.jsp"; } /** * 管理员更新 * * @return */ @RequestMapping("/adminUpdate") public String adminUpdate(Admins admin, @RequestParam(required=false, defaultValue="1") int page) { admin.setPassword(SafeUtil.encode(admin.getPassword())); adminService.update(admin); return "redirect:adminList?flag=5&page="+page; } /** * 管理员删除 * * @return */ @RequestMapping("/adminDelete") public String adminDelete(Admins admin, @RequestParam(required=false, defaultValue="1") int page) { adminService.delete(admin); return "redirect:adminList?flag=5&page="+page; } }
用户相关接口:
/** * 用户相关接口 */ @Controller @RequestMapping("/index") public class UserController{ private static final String INDENT_KEY = "order"; @Resource private UserService userService; @Resource private OrderService orderService; @Resource private GoodService goodService; @Resource private TypeService typeService; /** * 注册用户 * @return */ @RequestMapping("/register") public String register(@RequestParam(required=false, defaultValue="0")int flag, Users user, Model model){ model.addAttribute("typeList", typeService.getList()); if(flag==-1) { model.addAttribute("flag", 5); // 注册页面 return "/index/register.jsp"; } if (user.getUsername().isEmpty()) { model.addAttribute("msg", "用户名不能为空!"); return "/index/register.jsp"; }else if (userService.isExist(user.getUsername())) { model.addAttribute("msg", "用户名已存在!"); return "/index/register.jsp"; }else { String password = user.getPassword(); userService.add(user); user.setPassword(password); return "redirect:login?flag=-1"; // 注册成功后转去登录 } } /** * 用户登录 * @return */ @RequestMapping("/login") public String login(@RequestParam(required=false, defaultValue="0")int flag, Users user, HttpSession session, Model model) { model.addAttribute("typeList", typeService.getList()); if(flag==-1) { flag = 6; // 登录页面 return "/index/login.jsp"; } if(userService.checkUser(user.getUsername(), user.getPassword())){ session.setAttribute("user", userService.get(user.getUsername())); return "redirect:index"; } else { model.addAttribute("msg", "用户名或密码错误!"); return "/index/login.jsp"; } } /** * 注销登录 * @return */ @RequestMapping("/logout") public String logout(HttpSession session) { session.removeAttribute("user"); session.removeAttribute("order"); return "/index/login.jsp"; } /** * 查看购物车 * @return */ @RequestMapping("/cart") public String cart(Model model) { model.addAttribute("typeList", typeService.getList()); return "/index/cart.jsp"; } /** * 购买 * @return */ @RequestMapping("/buy") public @ResponseBody String buy(int goodid, HttpSession session){ Goods goods = goodService.get(goodid); if (goods .getStock() <= 0) { // 库存不足 return "empty"; } Orders order = (Orders) session.getAttribute(INDENT_KEY); if (order==null) { session.setAttribute(INDENT_KEY, orderService.add(goods)); }else { session.setAttribute(INDENT_KEY, orderService.addOrderItem(order, goods)); } return "ok"; } /** * 减少 */ @RequestMapping("/lessen") public @ResponseBody String lessen(int goodid, HttpSession session){ Orders order = (Orders) session.getAttribute(INDENT_KEY); if (order != null) { session.setAttribute(INDENT_KEY, orderService.lessenIndentItem(order, goodService.get(goodid))); } return "ok"; } /** * 删除 */ @RequestMapping("/delete") public @ResponseBody String delete(int goodid, HttpSession session){ Orders order = (Orders) session.getAttribute(INDENT_KEY); if (order != null) { session.setAttribute(INDENT_KEY, orderService.deleteIndentItem(order, goodService.get(goodid))); } return "ok"; } /** * 提交订单 * @return */ @RequestMapping("/save") public String save(ServletRequest request, HttpSession session, Model model){ model.addAttribute("typeList", typeService.getList()); Users user = (Users) session.getAttribute("user"); if (user == null) { request.setAttribute("msg", "请登录后提交订单!"); return "/index/login.jsp"; } Orders sessionOrder = (Orders) session.getAttribute(INDENT_KEY); if (sessionOrder != null) { if (sessionOrder != null) { for(Items item : sessionOrder.getItemList()){ // 检测商品库存(防止库存不足) Goods product = goodService.get(item.getGoodId()); if(item.getAmount() > product.getStock()){ request.setAttribute("msg", "商品 ["+product.getName()+"] 库存不足! 当前库存数量: "+product.getStock()); return "/index/cart.jsp"; } } } sessionOrder.setUserId(user.getId()); sessionOrder.setUser(userService.get(user.getId())); int orderid = orderService.save(sessionOrder); // 保存订单 session.removeAttribute(INDENT_KEY); // 清除购物车 return "redirect:topay?orderid="+orderid; } request.setAttribute("msg", "处理失败!"); return "/index/cart.jsp"; } /** * 支付页面 * @return */ @RequestMapping("/topay") public String topay(int orderid, ServletRequest request, Model model) { model.addAttribute("typeList", typeService.getList()); request.setAttribute("order", orderService.get(orderid)); return "/index/pay.jsp"; } /** * 支付(模拟) * @return */ @RequestMapping("/pay") public String pay(Orders order, Model model) { model.addAttribute("typeList", typeService.getList()); orderService.pay(order); return "redirect:payok?orderid="+order.getId(); } /** * 支付成功 * @return */ @RequestMapping("/payok") public String payok(int orderid, ServletRequest request, Model model) { model.addAttribute("typeList", typeService.getList()); Orders order = orderService.get(orderid); int paytype = order.getPaytype(); if(paytype == Orders.PAYTYPE_WECHAT || paytype == Orders.PAYTYPE_ALIPAY) { request.setAttribute("msg", "订单["+orderid+"]支付成功"); }else { request.setAttribute("msg", "订单["+orderid+"]货到付款"); } return "/index/payok.jsp"; } /** * 查看订单 * @return */ @RequestMapping("/order") public String order(HttpSession session, Model model){ model.addAttribute("flag", 3); model.addAttribute("typeList", typeService.getList()); Users user = (Users) session.getAttribute("user"); if (user == null) { model.addAttribute("msg", "请登录后查看订单!"); return "/index/login.jsp"; } List<Orders> orderList = orderService.getListByUserid(user.getId()); if (orderList!=null && !orderList.isEmpty()) { for(Orders order : orderList){ order.setItemList(orderService.getItemList(order.getId())); } } model.addAttribute("orderList", orderList); return "/index/order.jsp"; } /** * 个人信息 * @return */ @RequestMapping("/my") public String my(Users user, HttpSession session, Model model){ model.addAttribute("flag", 4); model.addAttribute("typeList", typeService.getList()); Users userLogin = (Users) session.getAttribute("user"); if (userLogin == null) { model.addAttribute("msg", "请先登录!"); return "/index/login.jsp"; } // 进入个人中心 if (Objects.isNull(user) || Objects.isNull(user.getId())) { return "/index/my.jsp"; } Users u = userService.get(user.getId()); // 修改资料 u.setName(user.getName()); u.setPhone(user.getPhone()); u.setAddress(user.getAddress()); userService.update(u); // 更新数据库 session.setAttribute("user", u); // 更新session model.addAttribute("msg", "信息修改成功!"); // 修改密码 if(user.getPasswordNew()!=null && !user.getPasswordNew().trim().isEmpty()) { if (user.getPassword()!=null && !user.getPassword().trim().isEmpty() && SafeUtil.encode(user.getPassword()).equals(u.getPassword())) { if (user.getPasswordNew()!=null && !user.getPasswordNew().trim().isEmpty()) { u.setPassword(SafeUtil.encode(user.getPasswordNew())); } userService.update(u); // 更新数据库 session.setAttribute("user", u); // 更新session model.addAttribute("msg", "密码修改成功!"); }else { model.addAttribute("msg", "原密码错误!"); } } return "/index/my.jsp"; } }
前台相关接口:
/** * 前台相关接口 */ @Controller @RequestMapping("/index") public class IndexController{ private static final int rows = 16; // 默认每页数量 @Autowired private TopService topService; @Autowired private GoodService goodService; @Autowired private TypeService typeService; /** * 首页 * @return */ @RequestMapping("/index") public String index(HttpServletRequest request){ request.setAttribute("flag", 1); request.setAttribute("typeList", typeService.getList()); request.setAttribute("top1List", topService.getList(Tops.TYPE_SCROLL, 1, 1)); request.setAttribute("top2List", topService.getList(Tops.TYPE_LARGE, 1, 6)); request.setAttribute("top3List", topService.getList(Tops.TYPE_SMALL, 1, 8)); return "/index/index.jsp"; } /** * 推荐列表 * @return */ @RequestMapping("/top") public String tops(int typeid, @RequestParam(required=false, defaultValue="1")int page, HttpServletRequest request) { request.setAttribute("flag", typeid==2 ? 7 : 8); request.setAttribute("typeList", typeService.getList()); request.setAttribute("goodList", goodService.getList(typeid, page, rows)); request.setAttribute("pageTool", PageUtil.getPageTool(request, goodService.getTotal(typeid), page, rows)); return "/index/goods.jsp"; } /** * 商品列表 * @return */ @RequestMapping("/goods") public String goods(int typeid, @RequestParam(required=false, defaultValue="1")int page, HttpServletRequest request){ request.setAttribute("flag", 2); if (typeid > 0) { request.setAttribute("type", typeService.get(typeid)); } request.setAttribute("typeList", typeService.getList()); request.setAttribute("goodList", goodService.getListByType(typeid, page, rows)); request.setAttribute("pageTool", PageUtil.getPageTool(request, goodService.getTotalByType(typeid), page, rows)); return "/index/goods.jsp"; } /** * 商品详情 * @return */ @RequestMapping("/detail") public String detail(int goodid, HttpServletRequest request){ request.setAttribute("good", goodService.get(goodid)); request.setAttribute("typeList", typeService.getList()); return "/index/detail.jsp"; } /** * 搜索 * @return */ @RequestMapping("/search") public String search(String name, @RequestParam(required=false, defaultValue="1")int page, HttpServletRequest request) { if (Objects.nonNull(name) && !name.trim().isEmpty()) { request.setAttribute("goodList", goodService.getListByName(name, page, rows)); request.setAttribute("pageTool", PageUtil.getPageTool(request, goodService.getTotalByName(name), page, rows)); } request.setAttribute("typeList", typeService.getList()); return "/index/goods.jsp"; } }