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

基于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+mysql的SpringBoot+MyBatis网上书店管理系统在线购书系统(前台、后台)(javaweb+springboot+thymeleaf+html+mysql)

   @PostMapping("/update1")
    public ResultVO updateUser( User record) {
        int users =userService.updateByUserId(record);
        return new ResultVO(ResultCode.SUCCESS,null);
    }*/

    /**
     * 修改    添加验证注解和RequestBody注解    --By guozongchao
     * @param record
     * @return
     */
    @PostMapping("/update")
    public ResultVO updateUser(@RequestBody @Valid User record) {
        int users =userService.updateByUserId(record);
        return new ResultVO(ResultCode.SUCCESS,null);
    }

    @GetMapping("/search")
    public ResultVO searchUsers(User user, Integer page, Integer limit) {
        if (user.getUserName().isEmpty()) {
            user.setUserName(null);
        }
        if (user.getEmail().isEmpty()) {
            user.setEmail(null);
        }
        List<User> users = userService.searchUsers(user, page, limit);
        PageInfo pageInfo = new PageInfo(users);
        return new ResultVO(ResultCode.SUCCESS, (int) pageInfo.getTotal(), users);
    }

}

/**
 * @Description: 书籍管理模块控制器

/**
 * @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);
    }

    /**
     * 根据前台传来的categoryCode,响应对应的分类的书籍
     * 需要进行分页响应
     * 如果categoryCode为null,则响应所有书籍
     * @param categoryCode   分类代码
     * @param page           页码
     * @param limit          每页的数量
     * @return
     */
    @GetMapping("/books")
    @ResponseBody
    public ResultVO getBooksByCategoryCode(@RequestParam(required = false) String categoryCode, @RequestParam(required = false) Integer page, @RequestParam(required = false) Integer limit) {
        List<Book> books = bookDisplayService.getBooksByCategoryCode(page==null?1:page, limit==null?10:limit, categoryCode);
        PageInfo pageInfo = new PageInfo(books);  //获得分页信息
        return new ResultVO(ResultCode.SUCCESS, (int) pageInfo.getTotal(),books);
    }

    /**
     * 根据请求的bookId,返回该Id的书籍信息,响应Html视图
     * @param bookId
     * @return
     */
    @GetMapping("/books/details/{bookId}")
    public String bookDetailsView(@PathVariable("bookId") Integer bookId, Model model) {
        PageInfo pageInfo = new PageInfo(books);  //获得分页信息
        return new ResultVO(ResultCode.SUCCESS, (int) pageInfo.getTotal(),books);
    }

    /**
     * 根据请求的bookId,返回该Id的书籍信息,响应Html视图
     * @param bookId
     * @return
     */
    @GetMapping("/books/details/{bookId}")
    public String bookDetailsView(@PathVariable("bookId") Integer bookId, Model model) {
        Book book = bookDisplayService.getBookDetailsByBookId(bookId);
        model.addAttribute("book", book);
        return "details";
    }

    /**
     * 首页根据书名搜索书籍
     * @param bookName
     * @return
     */
    @GetMapping("/books/search")
    @ResponseBody
    public ResultVO searchBook(@RequestParam(required = true) String bookName) {
        List<Book> books = bookDisplayService.searchBooksByBookName(1, 10, bookName);
        PageInfo pageInfo = new PageInfo(books);
        return new ResultVO(ResultCode.SUCCESS, (int) pageInfo.getTotal(), books);
    }

}

        if(user!=null){
            throw new CustomizeException(ResultCode.FAILED,"用户名已存在");
        }
        userMapper.insert(record);
    }

    @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");
        List<Order> orders = orderHandleService.getOrdersByUserId(user.getUserId(), page, limit);
        PageInfo pageInfo = new PageInfo(orders);
        return new ResultVO(ResultCode.SUCCESS, (int)pageInfo.getTotal(),orders);
    }

    }

}

/**
 * @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
     * 分页获取用户列表
     * @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
        return new ResultVO(ResultCode.USER_NOT_FOUND,null);
    }*/

   /*  原来
   @PostMapping("/update1")
    public ResultVO updateUser( User record) {
        int users =userService.updateByUserId(record);
        return new ResultVO(ResultCode.SUCCESS,null);
    }*/

    /**
     * 修改    添加验证注解和RequestBody注解    --By guozongchao
     * @param record
     * @return
     */
    @PostMapping("/update")
    //跳转用户管理页面
    @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";
    }

    //跳转订单管理页面
    @GetMapping("/order_manage")
    public String toOrderManage(){
        return "admin/order";
    }

    //跳转添加书籍页面
    @GetMapping("/add_book")
    public String AddBook(){
        return "admin/add_book";
    }

    //跳转后台登录页面
    @GetMapping("/login")
    public String toAdminLogin(){
        return "admin/login";
    }

}

/**
 * @Description: 登录验证拦截器
     * @return
     */
    @GetMapping("/books")
    @ResponseBody
    public ResultVO getBooksByCategoryCode(@RequestParam(required = false) String categoryCode, @RequestParam(required = false) Integer page, @RequestParam(required = false) Integer limit) {
        List<Book> books = bookDisplayService.getBooksByCategoryCode(page==null?1:page, limit==null?10:limit, categoryCode);
        PageInfo pageInfo = new PageInfo(books);  //获得分页信息
        return new ResultVO(ResultCode.SUCCESS, (int) pageInfo.getTotal(),books);
    }

    /**
     * 根据请求的bookId,返回该Id的书籍信息,响应Html视图
     * @param bookId
     * @return
     */
    @GetMapping("/books/details/{bookId}")
    public String bookDetailsView(@PathVariable("bookId") Integer bookId, Model model) {
        Book book = bookDisplayService.getBookDetailsByBookId(bookId);
        model.addAttribute("book", book);
        return "details";
    }

    /**
     * 首页根据书名搜索书籍
     * @param bookName
     * @return
     */
    @GetMapping("/books/search")
    @ResponseBody
    public ResultVO searchBook(@RequestParam(required = true) String bookName) {
        List<Book> books = bookDisplayService.searchBooksByBookName(1, 10, bookName);
        PageInfo pageInfo = new PageInfo(books);
        return new ResultVO(ResultCode.SUCCESS, (int) pageInfo.getTotal(), books);
    }

}

            //密码错误
            throw new CustomizeException(ResultCode.PASSWORD_ERROR);
        }
        session.setAttribute("user",user);
    }

    /**
     * 用户注册处理
     * @param record
     */
    @Override
    public void userRegister(User record) {
        User user=userMapper.selectByUserName(record.getUserName());
        if(user!=null){
            throw new CustomizeException(ResultCode.FAILED,"用户名已存在");
        }
        userMapper.insert(record);
    }

    @Override
    public void adminLogin(Admin admin, HttpSession session) {

    }
}

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

    /**
     * 根据前台传来的categoryCode,响应对应的分类的书籍
     * 需要进行分页响应
     * 如果categoryCode为null,则响应所有书籍
     * @param categoryCode   分类代码
     * @param page           页码
     * @param limit          每页的数量
     * @return
     */
    @GetMapping("/books")
    @ResponseBody
    public ResultVO getBooksByCategoryCode(@RequestParam(required = false) String categoryCode, @RequestParam(required = false) Integer page, @RequestParam(required = false) Integer limit) {
        List<Book> books = bookDisplayService.getBooksByCategoryCode(page==null?1:page, limit==null?10:limit, categoryCode);
        PageInfo pageInfo = new PageInfo(books);  //获得分页信息
        return new ResultVO(ResultCode.SUCCESS, (int) pageInfo.getTotal(),books);
    }

    /**
     * 根据请求的bookId,返回该Id的书籍信息,响应Html视图
     * @param bookId
     * @return
     */
    @GetMapping("/books/details/{bookId}")
    public String bookDetailsView(@PathVariable("bookId") Integer bookId, Model model) {
        Book book = bookDisplayService.getBookDetailsByBookId(bookId);
        model.addAttribute("book", book);
        return "details";
    }

    /**
     * 首页根据书名搜索书籍
     * @param bookName
     * @return
     */
    @GetMapping("/books/search")
    @ResponseBody
    public ResultVO searchBook(@RequestParam(required = true) String bookName) {
        List<Book> books = bookDisplayService.searchBooksByBookName(1, 10, bookName);
        PageInfo pageInfo = new PageInfo(books);
        return new ResultVO(ResultCode.SUCCESS, (int) pageInfo.getTotal(), books);
    }

    }

}

/**
 * @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);
    }
	@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);
	}	
}

/**
     * @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: 首页商品展示模块控制器
 */
@Controller
@RequestMapping("/index")
public class BookDisplayController {

    @Autowired
    private BookDisplayService bookDisplayService;

    /**
    /**
     * 根据前台传来的categoryCode,响应对应的分类的书籍
     * 需要进行分页响应
     * 如果categoryCode为null,则响应所有书籍
     * @param categoryCode   分类代码
     * @param page           页码
     * @param limit          每页的数量
     * @return
     */
    @GetMapping("/books")
    @ResponseBody
    public ResultVO getBooksByCategoryCode(@RequestParam(required = false) String categoryCode, @RequestParam(required = false) Integer page, @RequestParam(required = false) Integer limit) {
        List<Book> books = bookDisplayService.getBooksByCategoryCode(page==null?1:page, limit==null?10:limit, categoryCode);
        PageInfo pageInfo = new PageInfo(books);  //获得分页信息
        return new ResultVO(ResultCode.SUCCESS, (int) pageInfo.getTotal(),books);
    }

    /**
     * 根据请求的bookId,返回该Id的书籍信息,响应Html视图
     * @param bookId
     * @return
     */
    @GetMapping("/books/details/{bookId}")
    public String bookDetailsView(@PathVariable("bookId") Integer bookId, Model model) {
        Book book = bookDisplayService.getBookDetailsByBookId(bookId);
        model.addAttribute("book", book);
        return "details";
    }

    /**
     * 首页根据书名搜索书籍
     * @param bookName
     * @return
     */
    @GetMapping("/books/search")
    @ResponseBody
    public ResultVO searchBook(@RequestParam(required = true) String bookName) {
        List<Book> books = bookDisplayService.searchBooksByBookName(1, 10, bookName);
        PageInfo pageInfo = new PageInfo(books);
        return new ResultVO(ResultCode.SUCCESS, (int) pageInfo.getTotal(), books);
    }

}


/**
 * @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
     */
    @ExceptionHandler(value = {MethodArgumentNotValidException.class, BindException.class})
    public ResultVO methodArgumentNotValidExceptionHandler(Exception e) {
        BindingResult bindingResult;
        if(e instanceof MethodArgumentNotValidException){
            MethodArgumentNotValidException ex= (MethodArgumentNotValidException)e;
            bindingResult = ex.getBindingResult();
        }else {
            BindException ex=(BindException)e;
            bindingResult = ex.getBindingResult();
        }
        ObjectError error = bindingResult.getAllErrors().get(0);
        return new ResultVO(ResultCode.ARGUMENT_NOT_VALID,error.getDefaultMessage(),null);
    }
     * 批量删除购物车
     * @param cartIds
     * @return
     */
    @DeleteMapping("/list")
    public ResultVO deleteCartItem(@RequestBody int[] cartIds) {
        shoppingCartService.deleteShoppingCarts(cartIds);
        return new ResultVO(ResultCode.SUCCESS);
    }

}

/**
 * @Description: 用户管理模块控制器
 */
@RestController
@RequestMapping("/user")
public class UserController {
   @Autowired
   private UserService userService;
    /**
     * 分页获取用户列表
     * @param page
     * @param limit
     * @return
     */
    @Override
    public void userRegister(User record) {
        User user=userMapper.selectByUserName(record.getUserName());
        if(user!=null){
            throw new CustomizeException(ResultCode.FAILED,"用户名已存在");
        }
        userMapper.insert(record);
    }

    @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");
        List<Order> orders = orderHandleService.getOrdersByUserId(user.getUserId(), page, limit);
        PageInfo pageInfo = new PageInfo(orders);

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值