基于javaweb+mysql的springboot在线点餐系统(java+springboot+maven+mybatis+vue+mysql+redis)
运行环境
Java≥8、MySQL≥5.7、Node.js≥10
开发工具
后端:eclipse/idea/myeclipse/sts等均可配置运行
前端:WebStorm/VSCode/HBuilderX等均可
适用
课程设计,大作业,毕业设计,项目练习,学习演示等
功能说明
基于javaweb+mysql的SpringBoot在线点餐系统(java+springboot+maven+mybatis+vue+mysql+redis)
项目描述:
这是一个基于SpringBoot+Vue框架开发的在线点餐系统。首先,这是一个前后端分离的项目。具有一个在线点餐系统该有的所有功能。
项目功能:
此项目分为两个角色:普通用户和管理员。普通用户有登录注册、浏览商品信息、添加购物车、结算订单、查看个人信息、查看个人订单详情等等功能。管理员有管理所有商品信息、管理所有订单信息、管理所有用户信息、查看收益数据图表等等功能。
应用技术:SpringBoot + VueCli + MySQL + MyBatis + Redis + ElementUI
运行环境:IntelliJ IDEA2019.3.5 + MySQL5.7+ Redis5.0.5 + JDK1.8 + Maven3.6.3+ Node14.16.1
*/
@PostMapping("/list")
public ResponseDTO<List<ProductDTO>> getProductList(@RequestBody ProductDTO productDTO){
return productService.getProductList(productDTO);
}
/**
* 前台获取最新上线菜单数据
* @return
*/
@PostMapping("/new")
public ResponseDTO<List<ProductDTO>> listByCreateTime(){
return productService.listByCreateTime();
}
/**
* 前台根据商品id获取商品信息
* @param productDTO
* @return
*/
@PostMapping("/get")
public ResponseDTO<ProductDTO> getById(@RequestBody ProductDTO productDTO){
return productService.getById(productDTO);
}
}
/**
*/
@RestController("AdminCategoryController")
public ResponseDTO<Boolean> saveCategory(@RequestBody CategoryDTO categoryDTO){
return categoryService.saveCategory(categoryDTO);
}
/**
* 后台分页获取商品分类数据
* @param pageDTO
* @return
*/
@PostMapping("/list")
public ResponseDTO<PageDTO<CategoryDTO>> getCategoryListByPage(@RequestBody PageDTO<CategoryDTO> pageDTO){
return categoryService.getCategoryListByPage(pageDTO);
}
/**
* 后台删除商品分类数据
* @param categoryDTO
* @return
*/
@PostMapping("/remove")
public ResponseDTO<Boolean> removeCategory(@RequestBody CategoryDTO categoryDTO){
return categoryService.removeCategory(categoryDTO);
}
/**
* 后台获取所有商品分类数据
* @return
*/
@PostMapping("/all")
public ResponseDTO<List<CategoryDTO>> getAllCategoryList(){
return categoryService.getAllCategoryList();
}
/**
* 获取五个成交额最高的商品分类
* @return
*/
@PostMapping("/total-price")
public ResponseDTO<List<CategoryDTO>> getCategoryListByPrice(){
return categoryService.getCategoryListByPrice();
}
}
/**
*/
@RestController("WebProductController")
@RequestMapping("/web/product")
public class ProductController {
@Resource
private IProductService productService;
/**
* 获取首页推荐商品数据
* @return
*/
@PostMapping("/recommend_list")
public ResponseDTO<List<ProductDTO>> getRecommendList(){
return productService.getRecommendList();
}
/**
* 获取首页热销商品数据
* @return
*/
@PostMapping("/sale_list")
public ResponseDTO<List<ProductDTO>> getSaleList(){
return productService.getSaleList();
}
/**
* 获取首页高人气商品数据
* @return
*/
@PostMapping("/view_list")
public ResponseDTO<List<ProductDTO>> getViewList(){
return productService.getViewList();
}
/**
* 首页获取全部菜单数据
* @param productDTO
* @return
*/
@PostMapping("/save")
public ResponseDTO<Boolean> saveUser(@RequestBody UserDTO userDTO){
return userService.saveUser(userDTO);
}
/**
* 后台分页获取用户数据
* @param pageDTO
* @return
*/
@PostMapping("/list")
public ResponseDTO<PageDTO<UserDTO>> getUserListByPage(@RequestBody PageDTO<UserDTO> pageDTO){
return userService.getUserListByPage(pageDTO);
}
/**
* 后台删除用户数据
* @param userDTO
* @return
*/
@PostMapping("/remove")
public ResponseDTO<Boolean> removeUser(@RequestBody UserDTO userDTO){
return userService.removeUser(userDTO);
}
/**
* 后台获取用户总数
* @return
*/
@PostMapping("/total")
public ResponseDTO<Long> getUserTotal(){
return userService.getUserTotal();
}
/**
* 后台获取在线用户
* @return
*/
@PostMapping("/online")
public ResponseDTO<List<UserDTO>> getOnlineUser(){
return userService.getOnlineUser();
}
/**
* 后台用户登录
* @param userDTO
* @return
*/
}
/**
* 获取个人订单信息
* @param orderDTO
* @return
*/
@PostMapping("/self-order")
public ResponseDTO<List<OrderDTO>> getByUserId(@RequestBody OrderDTO orderDTO){
return orderService.getByUserId(orderDTO);
}
/**
* 取消订单操作
* @param orderDTO
* @return
*/
@PostMapping("/cancel")
public ResponseDTO<Boolean> cancelOrder(@RequestBody OrderDTO orderDTO){
return orderService.updateOrderState(orderDTO);
}
}
/**
*/
@RestController("WebCategoryController")
@RequestMapping("/web/category")
public class CategoryController {
@Resource
private ICategoryService categoryService;
/**
@RestController("AdminOrderController")
@RequestMapping("/admin/order")
public class OrderController {
@Resource
private IOrderService orderService;
/**
* 后台分页获取订单数据
* @param pageDTO
* @return
*/
@PostMapping("/list")
public ResponseDTO<PageDTO<OrderDTO>> getOrderListByPage(@RequestBody PageDTO<OrderDTO> pageDTO){
return orderService.getOrderListByPage(pageDTO);
}
/**
* 后台修改订单状态
* @param orderDTO
* @return
*/
@PostMapping("/edit-state")
public ResponseDTO<Boolean> editState(@RequestBody OrderDTO orderDTO){
return orderService.updateOrderState(orderDTO);
}
/**
* 根据订单id获取订单详情信息
* @param orderDTO
* @return
*/
@PostMapping("/order-item")
public ResponseDTO<OrderDTO> getOrderItemByOrderId(@RequestBody OrderDTO orderDTO){
return orderService.getOrderItemByOrderId(orderDTO);
}
/**
* 后台删除订单数据
* @param orderDTO
* @return
*/
@PostMapping("/remove")
public ResponseDTO<Boolean> removeOrder(@RequestBody OrderDTO orderDTO){
return orderService.removeOrder(orderDTO);
}
* 获取个人订单信息
* @param orderDTO
* @return
*/
@PostMapping("/self-order")
public ResponseDTO<List<OrderDTO>> getByUserId(@RequestBody OrderDTO orderDTO){
return orderService.getByUserId(orderDTO);
}
/**
* 取消订单操作
* @param orderDTO
* @return
*/
@PostMapping("/cancel")
public ResponseDTO<Boolean> cancelOrder(@RequestBody OrderDTO orderDTO){
return orderService.updateOrderState(orderDTO);
}
}
/**
*/
@RestController("WebCategoryController")
@RequestMapping("/web/category")
public class CategoryController {
@Resource
private ICategoryService categoryService;
/**
}
/**
*/
@RestController("WebUserController")
@RequestMapping("/web/user")
public class UserController {
@Resource
private IUserService userService;
/**
* 用户注册操作处理
* @param userDTO
* @return
*/
@PostMapping("/register")
public ResponseDTO<Boolean> register(@RequestBody UserDTO userDTO){
return userService.register(userDTO);
}
/**
* 前台登录操作处理
* @param userDTO
* @return
*/
@PostMapping("/login")
public ResponseDTO<UserDTO> webLogin(@RequestBody UserDTO userDTO){
return userService.webLogin(userDTO);
}
/**
/**
*/
@RestController("AdminUserController")
@RequestMapping("/admin/user")
public class UserController {
@Resource
private IUserService userService;
/**
* 后台保存用户数据(添加、修改)
* @param userDTO
* @return
*/
@PostMapping("/save")
public ResponseDTO<Boolean> saveUser(@RequestBody UserDTO userDTO){
return userService.saveUser(userDTO);
}
/**
* 后台分页获取用户数据
* @param pageDTO
* @return
*/
@PostMapping("/list")
public ResponseDTO<PageDTO<UserDTO>> getUserListByPage(@RequestBody PageDTO<UserDTO> pageDTO){
return userService.getUserListByPage(pageDTO);
}
/**
* 后台删除用户数据
* @param userDTO
* @return
*/
@PostMapping("/remove")
public ResponseDTO<Boolean> removeUser(@RequestBody UserDTO userDTO){
return userService.removeUser(userDTO);
}
/**
* 后台获取用户总数
@PostMapping("/count-state-date")
public ResponseDTO<List<Integer>> getOrderCountByDateAndState(){
return orderService.getOrderCountByDateAndState();
}
}
/**
*/
@RestController("AdminUserController")
@RequestMapping("/admin/user")
public class UserController {
@Resource
private IUserService userService;
/**
* 后台保存用户数据(添加、修改)
* @param userDTO
* @return
*/
@PostMapping("/save")
public ResponseDTO<Boolean> saveUser(@RequestBody UserDTO userDTO){
return userService.saveUser(userDTO);
}
/**
* 后台分页获取用户数据
* @param pageDTO
* @return
*/
@PostMapping("/list")
public ResponseDTO<PageDTO<UserDTO>> getUserListByPage(@RequestBody PageDTO<UserDTO> pageDTO){
/**
*/
@RestController("WebOrderController")
@RequestMapping("/web/order")
public class OrderController {
@Resource
private IOrderService orderService;
/**
* 提交订单操作
* @param orderDTO
* @return
*/
@PostMapping("/add")
public ResponseDTO<Boolean> addOrder(@RequestBody OrderDTO orderDTO){
return orderService.addOrder(orderDTO);
}
/**
* 获取个人订单信息
* @param orderDTO
* @return
*/
@PostMapping("/self-order")
public ResponseDTO<List<OrderDTO>> getByUserId(@RequestBody OrderDTO orderDTO){
return orderService.getByUserId(orderDTO);
}
/**
* 取消订单操作
* @param orderDTO
* @return
*/
@PostMapping("/cancel")
public ResponseDTO<Boolean> cancelOrder(@RequestBody OrderDTO orderDTO){
return orderService.updateOrderState(orderDTO);
}
private static final Logger logger = LoggerFactory.getLogger(PhotoController.class);
/**
* 系统统一的图片查看方法
*
* @param filename
* @return
*/
@RequestMapping(value = "/view")
public ResponseEntity<?> viewPhoto(@RequestParam(name = "filename", required = true) String filename) {
Resource resource = resourceLoader.getResource("file:" + uploadPhotoPath + filename);
try {
return ResponseEntity.ok(resource);
} catch (Exception e) {
return ResponseEntity.notFound().build();
}
}
/**
* 自定义上传图片处理
*
* @param photo
* @param request
* @return
*/
@PostMapping(value = "/upload_photo")
public ResponseDTO<String> uploadPhoto(MultipartFile photo, HttpServletRequest request) {
if (photo == null) {
return ResponseDTO.errorByMsg(CodeMsg.PHOTO_EMPTY);
}
//检查上传文件大小 不能超过2MB
if (photo.getSize() > 2 * 1024 * 1024) {
return ResponseDTO.errorByMsg(CodeMsg.PHOTO_SURPASS_MAX_SIZE);
}
//获取文件后缀
String suffix = photo.getOriginalFilename().substring(photo.getOriginalFilename().lastIndexOf(".") + 1, photo.getOriginalFilename().length());
if (!CommonUtil.isPhoto(suffix)) {
return ResponseDTO.errorByMsg(CodeMsg.PHOTO_FORMAT_NOT_CORRECT);
}
String path = request.getContextPath();
String savePath = uploadPhotoPath + CommonUtil.getFormatterDate(new Date(), "yyyyMMdd") + "\\";
/**
*/
/**
* 运行时触发异常捕获
*/
@ControllerAdvice
public class ExceptionsHandler {
private final Logger logger = LoggerFactory.getLogger(ExceptionsHandler.class);
@ExceptionHandler(RuntimeException.class)
@ResponseBody
public ResponseDTO<Boolean> handle(RuntimeException e) {
e.printStackTrace();
if(!CommonUtil.isEmpty(e.getMessage())) {
logger.info("异常信息={}", e.getMessage());
if ("订单交易失败,请稍后重试!".equals(e.getMessage())) {
return ResponseDTO.errorByMsg(CodeMsg.ORDER_ADD_ERROR);
}
}
return ResponseDTO.errorByMsg(CodeMsg.SYSTEM_ERROR);
}
@ExceptionHandler(MaxUploadSizeExceededException.class)
@ResponseBody
public ResponseDTO<Boolean> handle(MaxUploadSizeExceededException e) {
e.printStackTrace();
return ResponseDTO.errorByMsg(CodeMsg.PHOTO_SURPASS_MAX_SIZE);
}
}
/**
*/
@RestController("WebOrderController")
@RequestMapping("/web/order")
public class OrderController {
@Resource
private IOrderService orderService;
/**
* 后台分页获取订单数据
* @param pageDTO
* @return
*/
@PostMapping("/list")
public ResponseDTO<PageDTO<OrderDTO>> getOrderListByPage(@RequestBody PageDTO<OrderDTO> pageDTO){
return orderService.getOrderListByPage(pageDTO);
}
/**
* 后台修改订单状态
* @param orderDTO
* @return
*/
@PostMapping("/edit-state")
public ResponseDTO<Boolean> editState(@RequestBody OrderDTO orderDTO){
return orderService.updateOrderState(orderDTO);
}
/**
* 根据订单id获取订单详情信息
* @param orderDTO
* @return
*/
@PostMapping("/order-item")
public ResponseDTO<OrderDTO> getOrderItemByOrderId(@RequestBody OrderDTO orderDTO){
return orderService.getOrderItemByOrderId(orderDTO);
}
/**
* 后台删除订单数据
* @param orderDTO
* @return
*/
@PostMapping("/remove")
public ResponseDTO<Boolean> removeOrder(@RequestBody OrderDTO orderDTO){
return orderService.removeOrder(orderDTO);
}
/**
* 后台获取订单总数
* @return
*/
@PostMapping("/list")
public ResponseDTO<List<CartDTO>> listCart(@RequestBody CartDTO cartDTO){
return cartService.listCart(cartDTO);
}
/**
* 更新购物车中商品数量
* @param cartDTO
* @return
*/
@PostMapping("/update")
public ResponseDTO<Boolean> updateQuantity(@RequestBody CartDTO cartDTO){
return cartService.updateQuantity(cartDTO);
}
}
/**
*/
/**
* 运行时触发异常捕获
*/
@ControllerAdvice
public class ExceptionsHandler {
private final Logger logger = LoggerFactory.getLogger(ExceptionsHandler.class);
@ExceptionHandler(RuntimeException.class)
@ResponseBody
public ResponseDTO<Boolean> handle(RuntimeException e) {
e.printStackTrace();
if(!CommonUtil.isEmpty(e.getMessage())) {
logger.info("异常信息={}", e.getMessage());
if ("订单交易失败,请稍后重试!".equals(e.getMessage())) {
return ResponseDTO.errorByMsg(CodeMsg.ORDER_ADD_ERROR);
}
}
return ResponseDTO.errorByMsg(CodeMsg.SYSTEM_ERROR);
}
@ExceptionHandler(MaxUploadSizeExceededException.class)
* 后台删除用户数据
* @param userDTO
* @return
*/
@PostMapping("/remove")
public ResponseDTO<Boolean> removeUser(@RequestBody UserDTO userDTO){
return userService.removeUser(userDTO);
}
/**
* 后台获取用户总数
* @return
*/
@PostMapping("/total")
public ResponseDTO<Long> getUserTotal(){
return userService.getUserTotal();
}
/**
* 后台获取在线用户
* @return
*/
@PostMapping("/online")
public ResponseDTO<List<UserDTO>> getOnlineUser(){
return userService.getOnlineUser();
}
/**
* 后台用户登录
* @param userDTO
* @return
*/
@PostMapping("/login")
public ResponseDTO<UserDTO> login(@RequestBody UserDTO userDTO){
return userService.adminLogin(userDTO);
}
/**
* 后台检查管理员是否登录
* @param userDTO
* @return
*/
@PostMapping("/check_login")
public ResponseDTO<UserDTO> checkLogin(@RequestBody UserDTO userDTO){
return userService.checkLogin(userDTO);
}
/**
* 后台用户退出登录
* @return
*/
@PostMapping("/logout")
public ResponseDTO<Boolean> logout(@RequestBody UserDTO userDTO){
*/
@PostMapping("/save")
public ResponseDTO<Boolean> saveRole(@RequestBody RoleDTO roleDTO){
return roleService.saveRole(roleDTO);
}
/**
* 后台分页获取角色数据
* @param pageDTO
* @return
*/
@PostMapping("/list")
public ResponseDTO<PageDTO<RoleDTO>> getRoleListByPage(@RequestBody PageDTO<RoleDTO> pageDTO){
return roleService.getRoleListByPage(pageDTO);
}
/**
* 后台获取所有角色数据
* @return
*/
@PostMapping("/all")
public ResponseDTO<List<RoleDTO>> getAllRoleList(){
return roleService.getAllRoleList();
}
/**
* 后台删除角色数据
* @param roleDTO
* @return
*/
@PostMapping("/remove")
public ResponseDTO<Boolean> removeRole(@RequestBody RoleDTO roleDTO){
return roleService.removeRole(roleDTO);
}
}