基于SSM的搬家预约信息管理系统

系统描述

进入21世纪,计算机技术迅速向着网络化的、集成化方向发展。传统的单机版应用软件正在逐渐退出舞台,取而代之的是支持网络、支持多种数据信息的新一代网络版应用软件,形成了信息化的社会。信息化社会的形成和微电子技术日新月异的发展,对落后低效的办公手段提出了挑战,信息是管理的基础,是进行决策的基本依据。本搬家预约系统是将IT技术用于搬家预约信息的管理, 它能够收集与存储搬家预约的档案信息,提供更新与检索搬家预约信息档案的接口;提高工作效率。

本系统是基于JAVA平台开发的一套搬家预约信息管理的系统。前端采用Vue渐进式框架,后台采用SSM框架。数据库采用MySQL建立数据之间的转换。论文主要介绍了本课题的开发背景,所要完成的功能和开发的过程。重点的说明了系统设计的重点、设计思想、难点技术和解决方案。

技术描述

文章末尾获取源码

开发语言:Java

技术框架:SSM

前端语言:Vue\HTML

持久层框架:Mybatis

服务器:Tomcat7\8\9\10

数据库:MySQL5.7以上

项目管理工具:Maven

项目开发工具:IDEA\Eclipse

系统展示

管理员可以对用户进行添加修改删除查询操作。

 

管理员可以对司机进行添加修改删除查询操作。 

 管理员可以对搬家人员进行添加修改删除查询操作。

 管理员可以对搬家须知进行添加修改删除查询操作。

 管理员可以对搬家服务进行添加修改删除查询操作。

 搬家人员可以在搬家订单里面查看关于自己的搬家订单信息。

 司机可以在搬家订单里面查看关于自己的搬家订单信息。

 用户可以在搬家订单里面查看关于自己的搬家订单信息。

用户可以收藏搬家信息,也可以删除收藏的信息,还可以查询自己收藏的信息。 

 用户可以在前台页面查看搬家新闻信息。

 用户可以在前台页面查看搬家须知信息。

 用户可以在前台页面查看搬家服务信息,还可以进行预约操作。

 

代码实现:

跨域实现

package com.interceptor;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.HashMap;
import java.util.Map;
import com.alibaba.fastjson.JSONObject;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.web.method.HandlerMethod;
import org.springframework.web.servlet.HandlerInterceptor;

import com.annotation.IgnoreAuth;
import com.entity.EIException;
import com.entity.TokenEntity;
import com.service.TokenService;
import com.utils.R;

/**
 * 权限(Token)验证
 */
@Component
public class AuthorizationInterceptor implements HandlerInterceptor {

    public static final String LOGIN_TOKEN_KEY = "Token";

    @Autowired
    private TokenService tokenService;
    
	@Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {

        //支持跨域请求
        response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
        response.setHeader("Access-Control-Max-Age", "3600");
        response.setHeader("Access-Control-Allow-Credentials", "true");
        response.setHeader("Access-Control-Allow-Headers", "x-requested-with,request-source,Token, Origin,imgType, Content-Type, cache-control,postman-token,Cookie, Accept,authorization");
        response.setHeader("Access-Control-Allow-Origin", request.getHeader("Origin"));

        IgnoreAuth annotation;
        if (handler instanceof HandlerMethod) {
            annotation = ((HandlerMethod) handler).getMethodAnnotation(IgnoreAuth.class);
        } else {
            return true;
        }

        //从header中获取token
        String token = request.getHeader(LOGIN_TOKEN_KEY);
        
        /**
         * 不需要验证权限的方法直接放过
         */
        if(annotation!=null) {
        	return true;
        }
        
        TokenEntity tokenEntity = null;
        if(StringUtils.isNotBlank(token)) {
        	tokenEntity = tokenService.getTokenEntity(token);
        }
        
        if(tokenEntity != null) {
        	request.getSession().setAttribute("userId", tokenEntity.getUserid());
        	request.getSession().setAttribute("role", tokenEntity.getRole());
        	request.getSession().setAttribute("tableName", tokenEntity.getTablename());
        	request.getSession().setAttribute("username", tokenEntity.getUsername());
        	return true;
        }
        
		PrintWriter writer = null;
		response.setCharacterEncoding("UTF-8");
		response.setContentType("application/json; charset=utf-8");
		try {
		    writer = response.getWriter();
		    writer.print(JSONObject.toJSONString(R.error(401, "请先登录")));
		} finally {
		    if(writer != null){
		        writer.close();
		    }
		}
//				throw new EIException("请先登录", 401);
		return false;
    }
}

登录实现


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.MD5Util;
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();
    }
}

  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 基于SSM(Spring、SpringMVC、MyBatis)框架实现驾校预约管理系统,可以通过以下步骤进行: 1. 系统需求分析:首先对驾校预约管理系统的需求进行分析,包括学员预约、课程安排、教练管理、学员管理等功能。 2. 数据库设计:根据需求分析,设计数据库表结构,包括学生表、教练表、课程表等,并确定各表之间的关联关系。 3. 环境配置:搭建开发环境,包括安装Eclipse、Tomcat、MySQL等,配置SSM框架的相关依赖。 4. 创建项目:在Eclipse中创建一个基于SSM框架的Web项目,并导入相关依赖。 5. DAO层开发:使用MyBatis框架进行数据库访问操作,创建对应的Mapper接口和Mapper.xml文件,实现数据库的增删改查操作。 6. Service层开发:在Service层实现系统的具体业务逻辑,调用DAO层的方法进行数据处理,并通过事务管理保证数据的一致性。 7. Controller层开发:使用SpringMVC框架处理用户请求,编写Controller类和对应的请求处理方法,并通过注解进行RequestMapping的映射。 8. 视图层开发:使用JSP等前端技术实现用户界面,根据需求设计相应的页面,展示相关信息,并与Controller层的方法进行数据交互。 9. 集成测试:对系统进行整体测试,包括功能测试、性能测试、安全性测试等,确保系统的稳定性和可靠性。 10. 上线部署:将完成开发的系统部署到生产环境中,进行后续调试和优化,保证系统正常运行。 以上是基于SSM框架实现驾校预约管理系统的大致步骤,通过这些步骤,可以开发出一个功能完善、性能良好的系统,提供可靠的驾校预约管理服务。 ### 回答2: 基于SSM(Spring+SpringMVC+MyBatis)框架,可以实现驾校预约管理系统。以下是该系统的主要模块和功能: 1. 学员管理:管理学员的基本信息,包括姓名、性别、年龄、联系方式等,可以新增、修改、删除学员信息。 2. 教练管理:管理教练的信息,包括姓名、性别、年龄、从业年限等,可以新增、修改、删除教练信息。 3. 课程管理:管理驾校的课程,包括课程名称、课程时长、课程费用等,可以新增、修改、删除课程信息。 4. 预约管理:学员可以根据自己的需求进行课程预约,可以选择教练和课程进行预约预约成功后,系统会自动将预约信息保存,并生成相应的预约编号。 5. 排班管理:根据学员的预约情况和教练的时间安排,系统自动生成排班表,包括上课时间、教练等信息。 6. 学员考勤:学员上课后,教练可以通过系统进行学员考勤,记录学员的上课情况和表现。 7. 教练评价:学员可以根据教练的教学质量进行评价和打分,系统将评价结果保存并生成评价报告。 8. 系统管理:系统管理员可以管理系统的用户信息,包括学员、教练和管理员账号的新增、修改、删除等。 该驾校预约管理系统基于SSM框架,通过集成Spring来实现IOC和AOP的功能,使用SpringMVC来处理前端请求和响应,通过MyBatis框架与数据库进行交互,提供数据持久化的功能。同时,可以应用前端技术如HTML、CSS、JavaScript等,美化界面和增强用户体验。 通过该系统,学员可以方便地进行预约和管理自己的学习进度,教练可以更好地安排课程和管理学员,系统管理员可以对系统进行维护和管理。整体来说,该驾校预约管理系统可以提高驾校的运营效率,提升学员和教练的满意度。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值