基于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)

    @DeleteMapping("/orders/{orderId}")
    @ResponseBody
    public ResultVO deleteOrder(@PathVariable("orderId") Integer orderId) {
        int orders = orderHandleService.deleteOrderById(orderId);
        return new ResultVO(ResultCode.SUCCESS,null);
    }

}
package com.demo.controller;

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

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

    //跳转添加书籍页面
    @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);
    }

}
package com.demo.controller;

/**
 * @Description: 登录注册模块的控制器
 */

@Controller
public class LoginRegisterController {

    @Autowired
    private LoginRegisterService loginRegisterService;

    /**
     * 用户登录请求处理
     * @param user
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);
        }
        outBuff.flush();
        inBuff.close();
        outBuff.close();
    }
}
package com.demo.controller;

     * @return
     */
    @PostMapping("/admin/login")
    @ResponseBody
    public ResultVO adminLoginHandler(@RequestBody Admin admin, HttpSession session) {
        if(!("admin".equals(admin.getAdminName())&& "123456".equals(admin.getPassword()))){
            throw new CustomizeException(ResultCode.FAILED,"管理员账户或密码错误");
        }
        session.setAttribute("admin",admin);
        return new ResultVO(ResultCode.SUCCESS,"/admin/book_manage");
    }

    /**
     * 用户退出
     * @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);
    }
}
package com.demo.controller;

    @GetMapping("/login")
    public String toAdminLogin(){
        return "admin/login";
    }

}
package com.demo.interceptor;

/**
 * @Description: 登录验证拦截器
 */
public class ClientLoginInterceptor implements HandlerInterceptor {
    /**
     * 拦截请求判断是否已经登录
     * @param request
     * @param response
     * @param handler
     * @return
     * @throws Exception
     */
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        HttpSession session = request.getSession();
        if (session.getAttribute("user")==null) {
            //用户未登录,抛出异常
            throw new CustomizeException(ResultCode.USER_NOT_LOGGED_IN);
        }
        //已登录,放行请求
        return true;
    }
	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);
	}

	//添加验证
	@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);
	}	
}
    }
}
package com.demo.interceptor;

/**
 * @Description: 管理员访问拦截器
 */
public class AdminInterceptor implements HandlerInterceptor {
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        HttpSession session = request.getSession();
        if (session.getAttribute("admin")==null) {
            //用户未登录,抛出异常
            throw new CustomizeException(ResultCode.USER_NOT_LOGGED_IN);
        }
        Admin admin = (Admin) session.getAttribute("admin");
        //已登录,放行请求
        return true;
    }
}
package com.demo.service;

/**
 * @Description: 登录注册模块业务接口
 */
public interface LoginRegisterService {

    /**
     * 用户登录
    }

}
package com.demo.controller;

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

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);
        }
        outBuff.flush();
        inBuff.close();
        outBuff.close();
    }
}
package com.demo.controller;


    @PostMapping("/delete")
    public ResultVO bookDelete(Integer bookId) {
        int books = bookService.bookDeleteSearchById(bookId);
        return new ResultVO(ResultCode.SUCCESS, null);
    }

    //添加验证注解
    @PostMapping("/insert")
    public ResultVO bookInsert(@Valid Book record) {
        int books = bookService.bookInsert(record);
        return new ResultVO(ResultCode.SUCCESS, null);
    }

    @GetMapping("/searchcode")
  public ResultVO bookSerchByCategoryCode(String catrgoryCode,Integer page,Integer limit) {
      List<Book> books = bookService.bookSearchByCode(catrgoryCode,page,limit);
        PageInfo pageInfo = new PageInfo(books);
     if(books.size()!=0)
     {
      return new ResultVO(ResultCode.SUCCESS,(int)pageInfo.getTotal(), books);
     }
     else
    	 return new ResultVO(ResultCode.RECORD_NOT_FOUND, null);

  }

    //添加验证注解
    @PostMapping("/update")
    public ResultVO bookUpdate(@Valid Book record) {
        int books = bookService.bookUpdate(record);
        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);
     * @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);
    }

}
package com.demo.controller;

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

    //跳转订单管理页面
    @GetMapping("/order_manage")
    public String toOrderManage(){
        return "admin/order";
    }
        return new ResultVO(ResultCode.SUCCESS,null);
    }

}
package com.demo.controller;

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

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

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

public class ClientLoginInterceptor implements HandlerInterceptor {
    /**
     * 拦截请求判断是否已经登录
     * @param request
     * @param response
     * @param handler
     * @return
     * @throws Exception
     */
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        HttpSession session = request.getSession();
        if (session.getAttribute("user")==null) {
            //用户未登录,抛出异常
            throw new CustomizeException(ResultCode.USER_NOT_LOGGED_IN);
        }
        //已登录,放行请求
        return true;
    }
}
package com.demo.interceptor;

/**
 * @Description: 管理员访问拦截器
 */
public class AdminInterceptor implements HandlerInterceptor {
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        HttpSession session = request.getSession();
        if (session.getAttribute("admin")==null) {
            //用户未登录,抛出异常
            throw new CustomizeException(ResultCode.USER_NOT_LOGGED_IN);
        }
        Admin admin = (Admin) session.getAttribute("admin");
        //已登录,放行请求
        return true;
    }
}
package com.demo.service;

    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);
    }

}
package com.demo.controller;

/**
 * @Description: 书籍管理模块控制器
 */
@RestController
@RequestMapping("/book")
public class BookController {

    @Autowired
    private BookService bookService;

    @GetMapping("/searchid")
    public ResultVO bookSearchByBookId(Integer bookId) {
        // Book books=bookMapper.selectByBookId(bookIde);
        Book books = bookService.bookSearchById(bookId);
        if (books != null)
            return new ResultVO(ResultCode.SUCCESS,books);

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

	//添加验证
	@PostMapping("/insert")
	public ResultVO categoryInsert(@Valid Category record)
	{
		

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

	//添加验证
	@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)
	{
     * @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);
    }

}
package com.demo.controller;
     * 更新购物车的商品数量
     * @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();
        cart.setCartId(cartId);
        cart.setQuantity(quantity);
        shoppingCartService.updateShoppingCart(cart);
        return new ResultVO(ResultCode.SUCCESS);
    }

    /**
     * 添加到购物车请求处理
     *
     * @param cart 接收前台传来的参数
     * @return
     */
    @PostMapping("/list")
    public ResultVO addToShoppingCart(@Valid ShoppingCart cart, HttpSession session) {
        User user = (User) session.getAttribute("user");
        cart.setUserId(user.getUserId());
        shoppingCartService.addToShoppingCart(cart);
        return new ResultVO(ResultCode.SUCCESS);
    }

    /**
     * 删除前台传来的cartId的购物车项
     * @param cartId
     * @return
     */
    @DeleteMapping("/list/{cartId}")
    public ResultVO deleteCartItem(@PathVariable("cartId") Integer cartId) {
        shoppingCartService.deleteShoppingCartByCartId(cartId);
        return new ResultVO(ResultCode.SUCCESS);
    }

    /**
     * 批量删除购物车
     * @param cartIds
     * @return
     */
    @DeleteMapping("/list")
    public ResultVO deleteCartItem(@RequestBody int[] cartIds) {
        shoppingCartService.deleteShoppingCarts(cartIds);

    @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);
        }
        outBuff.flush();
        inBuff.close();
        outBuff.close();
    }
}
package com.demo.controller;

package com.demo.controller;

/**
 * @Description: 客户端路由控制器
 */
@Controller
public class ClientRouterController {

    //跳转首页
    @GetMapping({"/","/index"})
    public String toHomePage(){
        return "index";
    }

    //跳转登录页面
    @GetMapping("/login")
    public String toLogin(HttpSession session){
        if(session.getAttribute("user")!=null){
            return "redirect:/";
        }
        return "login";
    }

    //跳转注册页面
    @GetMapping("/register")
    public String toRegister(){
        return "register";
    }

    //跳转个人订单页面
    @GetMapping("/{userName}/orders")
    	List<Order> orders = orderService.selectByUserId(userId);
    	if(orders.size()!=0)
    	{
    		return new ResultVO(ResultCode.SUCCESS,orders);
    	}
        else
        	return new ResultVO(ResultCode.RECORD_NOT_FOUND,null);
    }*/

    @GetMapping("/list/{orderId}")
        public ResultVO getOrderByOrderId(@PathVariable("orderId") Integer orderId) {
    	Order orders = orderService.selectByOrderId(orderId);
    	if(orders!=null)
        return new ResultVO(ResultCode.SUCCESS,orders);
    	else
    	return new ResultVO(ResultCode.RECORD_NOT_FOUND,null);
    }

    /**
     * 多条件搜索订单 ---- by guozongchao
     * @param order
     * @param page
     * @param limit
     * @return
     */
    @GetMapping("/search")
    public ResultVO searchOrders(Order order, Integer page, Integer limit) {
        if (order.getConsigneeName().isEmpty()) {
            order.setConsigneeName(null);
        }
        List<Order> orders = orderService.searchOrders(order, page, limit);
        PageInfo pageInfo = new PageInfo(orders);
        return new ResultVO(ResultCode.SUCCESS, (int) pageInfo.getTotal(), orders);
    }

}
package com.demo.controller;

        }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 e
     * @return
     */
    @ExceptionHandler(Exception.class)
    public ResultVO ExceptionHandler(Exception e){
        log.error(e.getMessage());
        return new ResultVO(ResultCode.UNKNOWN_ERROR,e.getMessage());
    }
}
package com.demo.controller;

/**
 * @Description: 客户端路由控制器
 */
@Controller
public class ClientRouterController {

    //跳转首页
    @GetMapping({"/","/index"})
    public String toHomePage(){
        return "index";
    }

    //跳转登录页面
    @GetMapping("/login")
    public String toLogin(HttpSession session){
        if(session.getAttribute("user")!=null){
            return "redirect:/";
        }
        return "login";
    }

    //跳转注册页面
    @GetMapping("/register")
     * @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);
    }*/
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);
        }
        outBuff.flush();
        inBuff.close();
        outBuff.close();
    }
}
package com.demo.controller;

package com.demo.controller;

/**
 * @Description: 客户端路由控制器
 */
@Controller
public class ClientRouterController {

    //跳转首页
    @GetMapping({"/","/index"})
    public String toHomePage(){
        return "index";
    }

    //跳转登录页面
    @GetMapping("/login")
    public String toLogin(HttpSession session){
        if(session.getAttribute("user")!=null){
            return "redirect:/";
        }
        return "login";
    }

    //跳转注册页面
    @GetMapping("/register")
    public String toRegister(){
        return "register";
    }

    //跳转个人订单页面
    @GetMapping("/{userName}/orders")
    public String toOrderCenter(@PathVariable("userName") String userName,HttpSession session){
        User user= (User) session.getAttribute("user");

  }

    //添加验证注解
    @PostMapping("/update")
    public ResultVO bookUpdate(@Valid Book record) {
        int books = bookService.bookUpdate(record);
        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);
    }

}
package com.demo.controller;

请添加图片描述

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

目 录 目 录 2 前 言 2 需求分析 4 一、 用户需求分析 4 1.图书查询需求 4 2.购物车管理需求 4 3.订单处理需求 4 4.管理员与客户的分类功能 4 系统开发技术 6 一、 MVC模式简介 6 1.电子商务概况摘要 7 系统总体设计 9 1.UML活动关系图 9 2.系统组成 10 3.功能设计 10 (1)图书信息管理 10 (2)购物车管理 10 (3)会员注册 10 (4)订单处理 11 数据库设计与实现 12 一、 数据库的需求分析 12 1.数据库的逻辑设计 12 2.数据表基本结构 14 3.创建数据表脚本 15 系统实现过程 17 开发平台 17 一、系统各组件实现 17 用户表示层 17 系统测试与运行 26 一、 系统测试 26 二、测试结果 26 结 论 29 参考文献 30 谢 辞 31 毕业设计(论文)成绩评定表(理科) 32 (1)注册的主要的代码如下 protected void btnAdd_Click(object sender, EventArgs e) { Accountmod.AccountId = tbusername.Text.Trim(); Accountmod.AccountPwd = tbpwd.Text.Trim(); Accountmod.Auth = "0"; Accountmod.Email = tbEmail.Text.Trim(); Accountmod.Logintimes = 0; Accountmod.LogIp = Request.ServerVariables["Remote_Addr"].ToString(); Accountmod.Telephone = tbphone.Text.Trim(); Accountmod.TrueName = tbTruename.Text.Trim(); Accountmod.Sex = RadioButtonList1.SelectedValue; Accountmod.Balance = 0; lbshow.Text = "用户注册成功!"; Accountbll.Add(Accountmod); Panel1.Visible = false; } protected void btnCheck_Click(object sender, EventArgs e) { DataSet ds = Accountbll.GetList("AccountId='" + tbusername.Text.Trim() + "'"); if (ds.Tables[0].Rows.Count == 0) { lbshow.Text = "该账户可以使用"; btnAdd.Enabled = true; } else { lbshow.Text = "该账户已被占用!"; btnAdd.Enabled = false; } } 2.图书详细信息显示: 本页面是客户登陆成功后的页面,上面会显示出各种图书的列表,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值