Computer java project recommendation SSM (Spring+SpringMVC+MyBatis) takeaway ordering management system

Background of the project

Food is the first priority for the people, and the catering industry has always been an industry closely related to people's daily lives. The traditional ordering by phone or in-store consumption can no longer meet the needs of market development. With the rapid rise of the Internet, the Internet has increasingly become the best channel for providing information and is gradually moving into the traditional circulation field. The traditional catering industry is also facing huge challenges. At this time, it is very timely to launch takeout ordering.
Compared with the traditional way of ordering takeout by phone and ordering in the store, ordering takeout has its own unique advantages - intuitive, highly interactive, low cost, convenient and fast . Customers can learn about the latest products in a timely manner and provide timely feedback on merchants' services; they can also place orders at any time when merchants are open, and freely decide the delivery time, which is also a better service for consumers. For merchants, it can also be more convenient to retain valuable customers, tap potential customers, etc. Online takeout ordering provides rich information with pictures, texts and timely updates, which to a certain extent gives customers more choices and freedoms. At present, the main forms of online takeout ordering include merchants entering the network and creating their own stores. This paper mainly discusses how to use JAVA language to develop a takeout ordering system
. This system will be developed in strict accordance with the software The process carries out work at each stage, using B/S architecture and object-oriented programming ideas for project development. In the introduction, the author will discuss the current background of the takeout ordering system and the purpose of system development. Subsequent chapters will strictly follow the software development process to analyze and design the system at each stage.
The main users of the takeout ordering system are divided into administrators and users. The functions implemented include administrators: homepage, personal center, user management, restaurant information management, dish classification management, dish information management, Order evaluation management, system management, order management, user: homepage, personal center, order evaluation management, my collection management, order management, front desk homepage; homepage, restaurant information, dish information, announcement information, personal center, backend management, shopping Car, customer service and other functions. Since the functional module design of this website is relatively comprehensive, the entire information management process of the takeaway ordering system can be realized.
The use of this system can realize the informatization of the management of the takeout ordering system, which can facilitate the administrator to conduct more convenient and faster management, and can improve the work efficiency of the management personnel.

feature design

Function module diagram

Administrator module: The core user in the system is the administrator. After the administrator logs in, he manages the backend system through the administrator function. The main functions include: home page, personal center, user management, restaurant information management, dish classification management, dish information management, order evaluation management, system management, order management and other functions.
Insert image description here
User: Home page, personal center, order evaluation management, my collection management, order management and other functions
Insert image description here
Front desk home page: home page, restaurant information, dish information, announcements Information, personal center, background management, shopping cart, customer service and other functions
Insert image description here
The login module mainly meets the permissions of administrators and users to log in
Insert image description here
Users without accounts can enter Registration interface for registration operation
Insert image description here
Structure diagram of this takeaway ordering system
Insert image description here

Function screenshot

Front page function module

Takeaway ordering system, you can view the homepage, restaurant information, dish information, announcement information, personal center, backend management, shopping cart, customer service and other content on the front page
Insert image description here
Login, user To register, you can fill in the user name, password, name, mobile phone and other information to register on the user registration page
Insert image description here
Insert image description here
Personal information: Users can enter personal information to enter the user name, password, name, gender, avatar, mobile phone , balance, etc., you can check the balance recharge to add, delete, details and other operations
Insert image description here
Insert image description here
For dish information, on the dish information page, you can check the dish name, dish category, pictures, materials, portions, restaurant name, Contact number, price, dish introduction and other information for immediate reservation and rating
Insert image description here
Insert image description here
Announcement information, check the announcement information page by viewing the announcement content, etc.
Insert image description here

Administrator function module

Administrator login, log in by filling in the user name, password, and role entered during registration
Insert image description here
Administrator login into the takeout ordering system can view the homepage, personal center, user management, Restaurant information management, dish classification management, dish information management, order evaluation management, system management, order management and other information
Insert image description here
Personal center, the administrator operates the personal center and fills in the original password, new password, and confirmation Password and add, delete, modify and viewInsert image description here
User management: Administrators can enter the system to edit user names, passwords, names, genders, avatars, mobile phones, etc. Operation
Insert image description here
Restaurant information management. In the restaurant information management page, you can fill in the restaurant name, restaurant type, delivery time, delivery service, contact number, restaurant address and other information, and you can also update existing restaurants as needed. Information management to modify or delete operations
Insert image description here
Insert image description here
Dishes information management, on the menu information management page you can view the name of the dish, category of the dish, pictures, materials, portions, restaurant name, contact number, price, dishes Introduction and other content, and perform detailed operations such as adding, modifying or deleting existing dish information management as needed
Insert image description here
System management: Administrators view carousel images/announcement information and customer service management through the system management page You can upload pictures, publish announcements, reply, etc. to add, delete, modify and view, and perform order management on the entire system. You can view the order number, product name, and product pictures on the order management page. , purchase quantity, price/points, discount price, total price/total points, total discount price, payment type, status, address, etc., and perform detailed operations such as adding, modifying or deleting existing order management as neededInsert image description here
Insert image description here

Insert image description here

User function module

User login, log in by filling in user name, password, and role
Insert image description here
Order evaluation management, on the order evaluation management page, by filling in the order number, product name, dish category, rating, Review date, user name, mobile phone, review content and other content to view, add, delete
Insert image description here
Order management, on the order management page you can view the order number, product name, product pictures, purchase quantity, price/ Points, discount price, total price/total points, total discount price, payment type, status, address, etc., and perform detailed operations such as details and deletion of existing order management as needed
Insert image description here
Collection management :On the collection management page, you can view the collection ID, table name, collection name, collection pictures, etc., and perform operations such as details, deletion or viewing
Insert image description here

Related code

Database configuration

# Tomcat
server:
    tomcat:
        uri-encoding: UTF-8
    port: 8080
    servlet:
        context-path: /springbootr1tjf

spring:
    datasource:
        driverClassName: com.mysql.jdbc.Driver
        url: jdbc:mysql://127.0.0.1:3306/springbootr1tjf?useUnicode=true&characterEncoding=utf-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2B8
        username: root
        password: 123456

#        driverClassName: com.microsoft.sqlserver.jdbc.SQLServerDriver
#        url: jdbc:sqlserver://127.0.0.1:1433;DatabaseName=springbootr1tjf
#        username: sa
#        password: 123456

    servlet:
      multipart:
        max-file-size: 10MB
        max-request-size: 10MB
    resources:
      static-locations: classpath:static/,file:static/

#mybatis
mybatis-plus:
  mapper-locations: classpath*:mapper/*.xml
  #实体扫描,多个package用逗号或者分号分隔
  typeAliasesPackage: com.entity
  global-config:
    #主键类型  0:"数据库ID自增", 1:"用户输入ID",2:"全局唯一ID (数字类型唯一ID)", 3:"全局唯一ID UUID";
    id-type: 1
    #字段策略 0:"忽略判断",1:"非 NULL 判断"),2:"非空判断"
    field-strategy: 2
    #驼峰下划线转换
    db-column-underline: true
    #刷新mapper 调试神器
    refresh-mapper: true
    #逻辑删除配置
    logic-delete-value: -1
    logic-not-delete-value: 0
    #自定义SQL注入器
    sql-injector: com.baomidou.mybatisplus.mapper.LogicSqlInjector
  configuration:
    map-underscore-to-camel-case: true
    cache-enabled: false
    call-setters-on-nulls: true
    #springboot 项目mybatis plus 设置 jdbcTypeForNull (oracle数据库需配置JdbcType.NULL, 默认是Other)
    jdbc-type-for-null: 'null' 

Controller



    package com.controller;

    import java.util.Arrays;
    import java.util.Calendar;
    import java.util.Date;
    import java.util.Map;
    
    import javax.servlet.http.HttpServletRequest;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.PathVariable;
    import org.springframework.web.bind.annotation.PostMapping;
    import org.springframework.web.bind.annotation.RequestBody;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestParam;
    import org.springframework.web.bind.annotation.ResponseBody;
    import org.springframework.web.bind.annotation.RestController;
    
    import com.annotation.IgnoreAuth;
    import com.baomidou.mybatisplus.mapper.EntityWrapper;
    import com.entity.TokenEntity;
    import com.entity.UserEntity;
    import com.service.TokenService;
    import com.service.UserService;
    import com.utils.CommonUtil;
    import com.utils.MPUtil;
    import com.utils.PageUtils;
    import com.utils.R;
    import com.utils.ValidatorUtils;
    
    /**
     * 登录相关
     */
    @RequestMapping("users")
    @RestController
    public class UserController{
    
    
    	
    	@Autowired
    	private UserService userService;
    	
    	@Autowired
    	private TokenService tokenService;
    
    	/**
    	 * 登录
    	 */
    	@IgnoreAuth
    	@PostMapping(value = "/login")
    	public R login(String username, String password, String captcha, HttpServletRequest request) {
    
    
    		UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));
    		if(user==null || !user.getPassword().equals(password)) {
    
    
    			return R.error("账号或密码不正确");
    		}
    		String token = tokenService.generateToken(user.getId(),username, "users", user.getRole());
    		return R.ok().put("token", token);
    	}
    	
    	/**
    	 * 注册
    	 */
    	@IgnoreAuth
    	@PostMapping(value = "/register")
    	public R register(@RequestBody UserEntity user){
    
    
    //    	ValidatorUtils.validateEntity(user);
        	if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {
    
    
        		return R.error("用户已存在");
        	}
            userService.insert(user);
            return R.ok();
        }
    
    	/**
    	 * 退出
    	 */
    	@GetMapping(value = "logout")
    	public R logout(HttpServletRequest request) {
    
    
    		request.getSession().invalidate();
    		return R.ok("退出成功");
    	}
    	
    	/**
         * 密码重置
         */
        @IgnoreAuth
    	@RequestMapping(value = "/resetPass")
        public R resetPass(String username, HttpServletRequest request){
    
    
        	UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));
        	if(user==null) {
    
    
        		return R.error("账号不存在");
        	}
        	user.setPassword("123456");
            userService.update(user,null);
            return R.ok("密码已重置为:123456");
        }
    	
    	/**
         * 列表
         */
        @RequestMapping("/page")
        public R page(@RequestParam Map<String, Object> params,UserEntity user){
    
    
            EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();
        	PageUtils page = userService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.allLike(ew, user), params), params));
            return R.ok().put("data", page);
        }
    
    	/**
         * 列表
         */
        @RequestMapping("/list")
        public R list( UserEntity user){
    
    
           	EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();
          	ew.allEq(MPUtil.allEQMapPre( user, "user")); 
            return R.ok().put("data", userService.selectListView(ew));
        }
    
        /**
         * 信息
         */
        @RequestMapping("/info/{id}")
        public R info(@PathVariable("id") String id){
    
    
            UserEntity user = userService.selectById(id);
            return R.ok().put("data", user);
        }
        
        /**
         * 获取用户的session用户信息
         */
        @RequestMapping("/session")
        public R getCurrUser(HttpServletRequest request){
    
    
        	Long id = (Long)request.getSession().getAttribute("userId");
            UserEntity user = userService.selectById(id);
            return R.ok().put("data", user);
        }
    
        /**
         * 保存
         */
        @PostMapping("/save")
        public R save(@RequestBody UserEntity user){
    
    
    //    	ValidatorUtils.validateEntity(user);
        	if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {
    
    
        		return R.error("用户已存在");
        	}
            userService.insert(user);
            return R.ok();
        }
    
        /**
         * 修改
         */
        @RequestMapping("/update")
        public R update(@RequestBody UserEntity user){
    
    
    //        ValidatorUtils.validateEntity(user);
        	UserEntity u = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername()));
        	if(u!=null && u.getId()!=user.getId() && u.getUsername().equals(user.getUsername())) {
    
    
        		return R.error("用户名已存在。");
        	}
            userService.updateById(user);//全部更新
            return R.ok();
        }
    
        /**
         * 删除
         */
        @RequestMapping("/delete")
        public R delete(@RequestBody Long[] ids){
    
    
            userService.deleteBatchIds(Arrays.asList(ids));
            return R.ok();
        }
    }



Business layer (Service)



    package com.service;
    
    import java.util.List;
    import java.util.Map;
    
    import org.apache.ibatis.annotations.Param;
    
    import com.baomidou.mybatisplus.mapper.Wrapper;
    import com.baomidou.mybatisplus.service.IService;
    import com.entity.UserEntity;
    import com.utils.PageUtils;


    /**
     * 系统用户
     */
    public interface UserService extends IService<UserEntity> {
    
    
     	PageUtils queryPage(Map<String, Object> params);
        
       	List<UserEntity> selectListView(Wrapper<UserEntity> wrapper);
       	
       	PageUtils queryPage(Map<String, Object> params,Wrapper<UserEntity> wrapper);
    	   	
    }


Data access layer (Dao)

package com.dao;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import com.baomidou.mybatisplus.mapper.BaseMapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.baomidou.mybatisplus.plugins.pagination.Pagination;
import com.entity.UserEntity;

/**
 * 用户
 */
public interface UserDao extends BaseMapper<UserEntity> {
    
    
	
	List<UserEntity> selectListView(@Param("ew") Wrapper<UserEntity> wrapper);

	List<UserEntity> selectListView(Pagination page,@Param("ew") Wrapper<UserEntity> wrapper);
	
}


Project acquisition:

https://gitee.com/sinonfin/L-javaWebSha/tree/master

Guess you like

Origin blog.csdn.net/mojikopi/article/details/134920125