基于javaweb+mysql的springboot+mybatis网上书店管理系统在线购书系统(前台、后台)(javaweb+springboot+thymeleaf+html+mysql)

本文详细描述了一个基于JavaWeb、SpringBoot、MyBatis的网上书店管理系统,包括购书前台、管理后台功能,如商品展示、用户管理、订单操作、图片上传以及错误处理。
摘要由CSDN通过智能技术生成

基于javaweb+mysql的springboot+mybatis网上书店管理系统在线购书系统(前台、后台)(javaweb+springboot+thymeleaf+html+mysql)

私信源码获取及调试交流

运行环境

Java≥8、MySQL≥5.7

开发工具

eclipse/idea/myeclipse/sts等均可配置运行

适用

课程设计,大作业,毕业设计,项目练习,学习演示等

功能说明

前台:购书

后台:管理书、用户、订单发货等

前台

后台

技术框架

JavaWeb SpringBoot MyBatis Thymeleaf html layui JavaScript SpringMVC MySQL

基于javaweb的SpringBoot+MyBatis网上书店管理系统在线购书系统(前台、后台)(javaweb+springboot+thymeleaf+html+mysql)

    @GetMapping("/search")
    public ResultVO searchBooks(Book book,Integer page, Integer limit) {
        if(book.getBookName().isEmpty()){
            book.setBookName(null);
        }
        if(book.getIsbn().isEmpty()){
            book.setIsbn(null);
        }
        List<Book> books = bookService.searchBooks(book, page, limit);
        PageInfo pageInfo = new PageInfo(books);
        return new ResultVO(ResultCode.SUCCESS, (int) pageInfo.getTotal(), books);
    }

}

/**
 * @Description: 首页商品展示模块控制器
 */
@Controller
@RequestMapping("/index")
public class BookDisplayController {

    @Autowired
    private BookDisplayService bookDisplayService;

    /**
     * 处理前台获取所有分类的请求
     * @return
     */
    @GetMapping("/category")
    @ResponseBody
    public ResultVO getCategories() {
        List<Category> categories = bookDisplayService.getAllCategories();
        return new ResultVO(ResultCode.SUCCESS,categories);
    }


/**
 * @Description: 购物城模块控制器
 */
@RestController
@RequestMapping("/cart")
public class ShoppingCartController {

    @Autowired
    private ShoppingCartService shoppingCartService;
    /**
     * 根据用户ID获取该用户的购物车
     * @param session
     * @return
     */
    @GetMapping("/list")
    public ResultVO getCartByUserId(HttpSession session) {
        User user = (User) session.getAttribute("user");
        List<ShoppingCart> carts = shoppingCartService.getShoppingCartsByUserId(user.getUserId());
        return new ResultVO(ResultCode.SUCCESS, carts);
    }

    /**
     * 更新购物车的商品数量
     * @param cartId  购物车Id
     * @param quantity  商品购买数量
     * @return
     */
    @PutMapping("/list/{cartId}")
    public ResultVO updateCartItem(@PathVariable("cartId") Integer cartId,Integer quantity) {
        if(quantity<=0){
            throw new CustomizeException(ResultCode.FAILED,"购物数量必须大于0");
        }
        if(quantity>10){
            throw new CustomizeException(ResultCode.FAILED,"每件商品限购10件");
        }
        ShoppingCart cart = new ShoppingCart();

/**
 * @Description: 图片上传控制器
 */
@RestController
@RequestMapping("/upload")
public class ImageUploadController {

    @PostMapping("/book_image")
    public ResultVO uploadBookImage(MultipartFile bookImage, HttpServletRequest request) {
        //获取项目上传文件夹路径
        String srcPath = "src/main/resources/static/images/book_images";
        String targetFileName = System.currentTimeMillis() + bookImage.getOriginalFilename().substring(bookImage.getOriginalFilename().lastIndexOf("."));
        //上传
        try {
            File srcFile = new File(new File(srcPath).getAbsolutePath(), targetFileName);
            bookImage.transferTo(srcFile);
            copyToTargetDir(srcFile, targetFileName);
        } catch (Exception e) {
            e.printStackTrace();
            throw new CustomizeException(ResultCode.FAILED, "上传图片失败");
        }
        return new ResultVO(ResultCode.SUCCESS, targetFileName);
    }

    private void copyToTargetDir(File srcFile, String targetFileName) throws Exception {
        String targetPath = "target/classes/static/images/book_images";
        InputStream inBuff = new BufferedInputStream(new FileInputStream(srcFile));
        OutputStream outBuff = new BufferedOutputStream(new FileOutputStream(new File(new File(targetPath).getAbsolutePath(), targetFileName)));
        byte[] b = new byte[1024 * 5 * 10];
        int len;
        while ((len = inBuff.read(b)) != -1) {
            outBuff.write(b, 0, len);

/**
 * @Description: 用户管理模块控制器
 */
@RestController
@RequestMapping("/user")
public class UserController {
   @Autowired
   private UserService userService;
    /**
     * 分页获取用户列表
     * @param page
     * @param limit
     * @return
     */
    @GetMapping("/list")
    public ResultVO getUserList(@RequestParam(required = false) Integer page, @RequestParam(required = false) Integer limit) {
        List<User> users=  userService.selectAll(page,limit);
        PageInfo pageInfo = new PageInfo(users);
        return new ResultVO(ResultCode.SUCCESS,(int)pageInfo.getTotal(),users);
    }

    /**
     * 删除指定用户ID
     * @param userId
     * @return
     */
    @DeleteMapping("/list/{userId}")
    public ResultVO deleteUser(@PathVariable("userId") Integer userId) {
        int users =userService.deleteByUserId(userId);

/**
 * @Description: 用户管理模块控制器
 */
@RestController
@RequestMapping("/user")
public class UserController {
   @Autowired
   private UserService userService;
    /**
     * 分页获取用户列表
     * @param page
     * @param limit
     * @return
     */
    @GetMapping("/list")
    public ResultVO getUserList(@RequestParam(required = false) Integer page, @RequestParam(required = false) Integer limit) {
        List<User> users=  userService.selectAll(page,limit);
        PageInfo pageInfo = new PageInfo(users);
        return new ResultVO(ResultCode.SUCCESS,(int)pageInfo.getTotal(),users);
    }

    /**
     * 删除指定用户ID
     * @param userId
     * @return
     */
    @DeleteMapping("/list/{userId}")
    public ResultVO deleteUser(@PathVariable("userId") Integer userId) {
        int users =userService.deleteByUserId(userId);
        return new ResultVO(ResultCode.SUCCESS,null);
    }

/*    暂时不需要
    @PostMapping("/insert")
    public ResultVO insertUser(User record) {
        int users =userService.insert(record);
        return new ResultVO(ResultCode.SUCCESS,null);
        return new ResultVO(ResultCode.SUCCESS, null);
    }

    /**
     * 多条件搜索   ----by guozongchao
     * @param book
     * @param page
     * @param limit
     * @return
     */
    @GetMapping("/search")
    public ResultVO searchBooks(Book book,Integer page, Integer limit) {
        if(book.getBookName().isEmpty()){
            book.setBookName(null);
        }
        if(book.getIsbn().isEmpty()){
            book.setIsbn(null);
        }
        List<Book> books = bookService.searchBooks(book, page, limit);
        PageInfo pageInfo = new PageInfo(books);
        return new ResultVO(ResultCode.SUCCESS, (int) pageInfo.getTotal(), books);
    }

}

/**
 * @Description: 首页商品展示模块控制器
     * @param orderId
     * @return
     */
    @DeleteMapping("/orders/{orderId}")
    @ResponseBody
    public ResultVO deleteOrder(@PathVariable("orderId") Integer orderId) {
        int orders = orderHandleService.deleteOrderById(orderId);
        return new ResultVO(ResultCode.SUCCESS,null);
    }

}

/**
 * @Description: 后台页面的路由跳转
 */
@Controller
@RequestMapping("/admin")
public class AdminRouterController {

    //跳转用户管理页面
    @GetMapping("/user_manage")
    public String toUserManage(){
        return "admin/user";
    }

    //跳转书籍管理页面
    @GetMapping({"/","/book_manage"})
    public String toBookManage(){
        return "admin/books";
    }

    //跳转分类管理页面
    @GetMapping("/category_manage")
    public String toCategoryManage(){
        return "admin/category";
    }

 * @Description: 用户管理模块控制器
 */
@RestController
@RequestMapping("/user")
public class UserController {
   @Autowired
   private UserService userService;
    /**
     * 分页获取用户列表
     * @param page
     * @param limit
     * @return
     */
    @GetMapping("/list")
    public ResultVO getUserList(@RequestParam(required = false) Integer page, @RequestParam(required = false) Integer limit) {
        List<User> users=  userService.selectAll(page,limit);
        PageInfo pageInfo = new PageInfo(users);
        return new ResultVO(ResultCode.SUCCESS,(int)pageInfo.getTotal(),users);
    }

    /**
     * 删除指定用户ID
     * @param userId
     * @return
     */
    @DeleteMapping("/list/{userId}")
    public ResultVO deleteUser(@PathVariable("userId") Integer userId) {
        int users =userService.deleteByUserId(userId);
        return new ResultVO(ResultCode.SUCCESS,null);
    }

/*    暂时不需要
    @PostMapping("/insert")
    public ResultVO insertUser(User record) {
        int users =userService.insert(record);
        return new ResultVO(ResultCode.SUCCESS,null);
    }
    */

   /* @GetMapping("/search")
    public ResultVO searchUserById(Integer userId) {
        User users =userService.selectByUserId(userId);
        if(users!=null)
        return new ResultVO(ResultCode.SUCCESS,users);
        else
		else
			return new ResultVO(ResultCode.RECORD_NOT_FOUND,null);
	}
	@PostMapping("/delete")
	public ResultVO categoryDelete(String categoryCode)
	{
		int categories = categoryService.deleteByByCategoryCode(categoryCode);
		return new ResultVO(ResultCode.SUCCESS,null);
	}

	//添加验证
	@PostMapping("/insert")
	public ResultVO categoryInsert(@Valid Category record)
	{
		
		int categories = categoryService.insert(record);
		return new ResultVO(ResultCode.SUCCESS,null);
	}

	//添加验证
	@PostMapping("/update")
	public  ResultVO categoryUpdate(@Valid Category record)
	{
		int categories = categoryService.updateByCategoryCode(record);
		return new ResultVO(ResultCode.SUCCESS,null);
	}

	//添加分页
	@GetMapping("/searchall")
	public  ResultVO categorySearchAll(Integer page,Integer limit)
	{
		List<Category> categories = categoryService.selectAll(page==null?0:page,limit==null?10:limit);
		if(categories.size()!=0)
			return new ResultVO(ResultCode.SUCCESS,categories);
		else
			return new ResultVO(ResultCode.RECORD_NOT_FOUND,null);
	}	
}

            File srcFile = new File(new File(srcPath).getAbsolutePath(), targetFileName);
            bookImage.transferTo(srcFile);
            copyToTargetDir(srcFile, targetFileName);
        } catch (Exception e) {
            e.printStackTrace();
            throw new CustomizeException(ResultCode.FAILED, "上传图片失败");
        }
        return new ResultVO(ResultCode.SUCCESS, targetFileName);
    }

    private void copyToTargetDir(File srcFile, String targetFileName) throws Exception {
        String targetPath = "target/classes/static/images/book_images";
        InputStream inBuff = new BufferedInputStream(new FileInputStream(srcFile));
        OutputStream outBuff = new BufferedOutputStream(new FileOutputStream(new File(new File(targetPath).getAbsolutePath(), targetFileName)));
        byte[] b = new byte[1024 * 5 * 10];
        int len;
        while ((len = inBuff.read(b)) != -1) {
            outBuff.write(b, 0, len);
        }
        outBuff.flush();
        inBuff.close();
        outBuff.close();
    }
}

/**
 * @Description: 分类管理模块控制器
 */
@RestController
    @GetMapping("/{userName}/shopping_cart")
    public String toUserShoppingCart(@PathVariable("userName") String userName,HttpSession session){
        User user= (User) session.getAttribute("user");
        if(user!=null && user.getUserName().equals(userName)){
            return "shopping_cart";
        }
        return "redirect:/login";
    }

}

/**
 * @Description: 登录注册模块实现类
 */
@Service
public class LoginRegisterServiceImpl implements LoginRegisterService {

    @Resource
    private UserMapper userMapper;

    /**
     * 用户登录处理
     * @param record
     * @param session
     */
    @Override
    public void userLogin(User record, HttpSession session) {
        User user=userMapper.selectByUserName(record.getUserName());
        if(user==null){
            //用户不存在
            throw new CustomizeException(ResultCode.USER_NOT_FOUND);
        }
    @Override
    public void adminLogin(Admin admin, HttpSession session) {

    }
}

/**
 * @Description: 用户中心模块
 */
@Controller
@RequestMapping("/user_center")
public class UserCenterController {

    @Autowired
    private OrderHandleService orderHandleService;

    /**
     * 根据用户ID,获取用户订单
     * @return
     */
    @GetMapping("/orders")
    @ResponseBody
    public ResultVO getUserOrders(Integer page, Integer limit, HttpSession session) {
        User user = (User) session.getAttribute("user");
        inBuff.close();
        outBuff.close();
    }
}

/**
 * @Description: 分类管理模块控制器
 */
@RestController
@RequestMapping("category")
public class CategoryController {
	@Autowired
	private CategoryService categoryService;
	@Resource
	private CategoryMapper categoryMapper;
	@GetMapping("/searchcode")
	public ResultVO categorySearchByCode(String categoryCode)
	{
		
		Category categories = categoryService.selectByByCategoryCode(categoryCode);
		if(categories!=null)
		return new ResultVO(ResultCode.SUCCESS,categories);
		else
			return new ResultVO(ResultCode.RECORD_NOT_FOUND,null);
	}
	@PostMapping("/delete")
	public ResultVO categoryDelete(String categoryCode)
	{
		int categories = categoryService.deleteByByCategoryCode(categoryCode);
		return new ResultVO(ResultCode.SUCCESS,null);
	}

	//添加分页
	@GetMapping("/searchall")
	public  ResultVO categorySearchAll(Integer page,Integer limit)
	{
		List<Category> categories = categoryService.selectAll(page==null?0:page,limit==null?10:limit);
		if(categories.size()!=0)
			return new ResultVO(ResultCode.SUCCESS,categories);
		else
			return new ResultVO(ResultCode.RECORD_NOT_FOUND,null);
	}	
}

/**
 * @Description: 全局异常处理
 */
@RestControllerAdvice
public class GlobalExceptionHandler {

    private static final Logger log = LoggerFactory.getLogger(GlobalExceptionHandler.class);
    /**
     * 自定义异常处理
     * @param e
     * @return
     */
    @ExceptionHandler(CustomizeException.class)
    public ResultVO customizeExceptionHandler(CustomizeException e){
        log.error(e.getMessage());
        return new ResultVO(e.getCode(),e.getMsg(),null);
    }

    /**
     * 参数校验异常处理和数据绑定异常处理
     * @param e
     * @return
     */
        List<Order> orders = orderHandleService.getAllOrdersByPage(page, limit);
        PageInfo pageInfo = new PageInfo(orders);
        return new ResultVO(ResultCode.SUCCESS,(int)pageInfo.getTotal(),orders);
    }

    /**
     * 用户提交订单处理
     * @param order
     * @param session
     * @return
     */
    @PostMapping("/submit")
    public ResultVO orderSubmit(@RequestBody @Valid Order order, HttpSession session) {
        User user = (User) session.getAttribute("user");
        order.setUserId(user.getUserId());
        orderHandleService.createOrder(order);
        return new ResultVO(ResultCode.SUCCESS,"/"+user.getUserName()+"/orders");
    }

    /**
     * 更新订单信息,比如审核通过
     * @param order
     * @return
     */
    @PutMapping("/list/{orderId}")
    public ResultVO updateOrder(@PathVariable("orderId") Integer orderId,@RequestBody Order order) {
           Order orders1 = orderService.selectByOrderId(orderId);
           if(orders1!=null)
           {
        	order.setOrderId(orderId);
        	int orders = orderService.updateByOrderId(order);
        	return new ResultVO(ResultCode.SUCCESS,null);
           }
           else
        	return new ResultVO(ResultCode.RECORD_NOT_FOUND,null);
    }

    /**
     * 删除指定orderId的订单
     * @param orderId
     * @return
    }

    /**
     * 用户退出
     * @param session
     * @return
     */
    @GetMapping("/logout")
    public String userLogout(HttpSession session){
        session.removeAttribute("user");
        return "redirect:/login";
    }

    /**
     * 后台管理退出
     * @param session
     * @return
     */
    @GetMapping("/admin/logout")
    public String adminLogout(HttpSession session){
        session.removeAttribute("admin");
        return "redirect:/";
    }

    @GetMapping("/checkLoggedIn")
    @ResponseBody
    public ResultVO checkUserIsLoggedIn(HttpSession session) {
        if (session.getAttribute("user") == null) {
            throw new CustomizeException(ResultCode.USER_NOT_LOGGED_IN);
        }
        return new ResultVO(ResultCode.SUCCESS);
    }
}

/**

/**
 * @Description: 订单管理模块
 */
@RestController
@RequestMapping("/order")
public class OrderController {
     @Autowired
     private OrderService orderService;

    @Autowired
    private OrderHandleService orderHandleService;

    /**
     * 分页获取订单列表,如果都为空,则获取所有
     * @param page    页码
     * @param limit   每页的条数
     * @return
     */
    @GetMapping("/list")
    public ResultVO getOrderList(@RequestParam(required = false) Integer page, @RequestParam(required = false) Integer limit) {
        List<Order> orders = orderHandleService.getAllOrdersByPage(page, limit);
        PageInfo pageInfo = new PageInfo(orders);
        return new ResultVO(ResultCode.SUCCESS,(int)pageInfo.getTotal(),orders);
    }

    /**
     * 用户提交订单处理
     * @param order
     * @param session
     * @return
     */
    @PostMapping("/submit")
    public ResultVO orderSubmit(@RequestBody @Valid Order order, HttpSession session) {
        User user = (User) session.getAttribute("user");
        order.setUserId(user.getUserId());
    }

    /**
     * 用户退出
     * @param session
     * @return
     */
    @GetMapping("/logout")
    public String userLogout(HttpSession session){
        session.removeAttribute("user");
        return "redirect:/login";
    }

    /**
     * 后台管理退出
     * @param session
     * @return
     */
    @GetMapping("/admin/logout")
    public String adminLogout(HttpSession session){
        session.removeAttribute("admin");
        return "redirect:/";
    }

    @GetMapping("/checkLoggedIn")
    @ResponseBody
    public ResultVO checkUserIsLoggedIn(HttpSession session) {
        if (session.getAttribute("user") == null) {
            throw new CustomizeException(ResultCode.USER_NOT_LOGGED_IN);
        }
        return new ResultVO(ResultCode.SUCCESS);
    }
}

请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

java毕业

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值