> 文档中心 > 基于SpringBoot的房屋租赁管理系统

基于SpringBoot的房屋租赁管理系统


摘要

在网络高速发展的时代,众多的软件被开发出来,给用户带来了很大的选择余地,而且人们越来越追求更个性的需求。在这种时代背景下,房东只能以用户为导向,所以开发租房网站是必须的。
系统采用了Java技术,将所有业务模块采用以浏览器交互的模式,选择MySQL作为系统的数据库,开发工具选择 eclipse来进行系统的设计。基本实现了租房网站应有的主要功能模块,本系统有管理员;首页、个人中心、用户管理、房屋类型管理、房屋信息管理、预约看房管理、在线签约管理、租赁评价管理、交流论坛、系统管理,用户;首页、个人中心、预约看房管理、在线签约管理、租赁评价管理、我的收藏管理,前台首页;首页、房屋信息、交流论坛、房屋资讯、个人中心、后台管理、在线客服等功能。
对系统进行测试后,改善了程序逻辑和代码。同时确保系统中所有的程序都能正常运行,所有的功能都能操作,并且该系统有很好的操作体验,实现了租房网站。

关键词 租房网站;Java语言; Mysql数据库;springboot框架

主要功能截图

登录

在这里插入图片描述

用户管理

在这里插入图片描述

房屋信息

在这里插入图片描述

签约房屋合同

在这里插入图片描述

相关代码实现

登录相关模块

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")@RestControllerpublic class UserController{@Autowiredprivate UserService userService;@Autowiredprivate 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();    }}

用户接口模块

package com.controller;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.Arrays;import java.util.Calendar;import java.util.Map;import java.util.HashMap;import java.util.Iterator;import java.util.Date;import java.util.List;import javax.servlet.http.HttpServletRequest;import com.utils.ValidatorUtils;import org.apache.commons.lang3.StringUtils;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.format.annotation.DateTimeFormat;import org.springframework.web.bind.annotation.PathVariable;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.RestController;import com.baomidou.mybatisplus.mapper.EntityWrapper;import com.baomidou.mybatisplus.mapper.Wrapper;import com.annotation.IgnoreAuth;import com.entity.YonghuEntity;import com.entity.view.YonghuView;import com.service.YonghuService;import com.service.TokenService;import com.utils.PageUtils;import com.utils.R;import com.utils.MD5Util;import com.utils.MPUtil;import com.utils.CommonUtil;/ * 用户 * 后端接口 * @author  * @email  * @date 2021-03-11 14:12:56 */@RestController@RequestMapping("/yonghu")public class YonghuController {    @Autowired    private YonghuService yonghuService;    @Autowiredprivate TokenService tokenService;/ * 登录 */@IgnoreAuth@RequestMapping(value = "/login")public R login(String username, String password, String captcha, HttpServletRequest request) {YonghuEntity user = yonghuService.selectOne(new EntityWrapper<YonghuEntity>().eq("yonghuming", username));if(user==null || !user.getMima().equals(password)) {return R.error("账号或密码不正确");}String token = tokenService.generateToken(user.getId(), username,"yonghu",  "用户" );return R.ok().put("token", token);}/     * 注册     */@IgnoreAuth    @RequestMapping("/register")    public R register(@RequestBody YonghuEntity yonghu){    //ValidatorUtils.validateEntity(yonghu);    YonghuEntity user = yonghuService.selectOne(new EntityWrapper<YonghuEntity>().eq("yonghuming", yonghu.getYonghuming()));if(user!=null) {return R.error("注册用户已存在");}Long uId = new Date().getTime();yonghu.setId(uId); yonghuService.insert(yonghu); return R.ok();    }/ * 退出 */@RequestMapping("/logout")public R logout(HttpServletRequest request) {request.getSession().invalidate();return R.ok("退出成功");}/     * 获取用户的session用户信息     */    @RequestMapping("/session")    public R getCurrUser(HttpServletRequest request){    Long id = (Long)request.getSession().getAttribute("userId"); YonghuEntity user = yonghuService.selectById(id); return R.ok().put("data", user);    } /     * 密码重置     */    @IgnoreAuth@RequestMapping(value = "/resetPass")    public R resetPass(String username, HttpServletRequest request){    YonghuEntity user = yonghuService.selectOne(new EntityWrapper<YonghuEntity>().eq("yonghuming", username));    if(user==null) {    return R.error("账号不存在");    } user.setMima("123456"); yonghuService.updateById(user); return R.ok("密码已重置为:123456");    }    /     * 后端列表     */    @RequestMapping("/page")    public R page(@RequestParam Map<String, Object> params,YonghuEntity yonghu,HttpServletRequest request){ EntityWrapper<YonghuEntity> ew = new EntityWrapper<YonghuEntity>();PageUtils page = yonghuService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, yonghu), params), params)); return R.ok().put("data", page);    } /     * 前端列表     */    @RequestMapping("/list")    public R list(@RequestParam Map<String, Object> params,YonghuEntity yonghu, HttpServletRequest request){ EntityWrapper<YonghuEntity> ew = new EntityWrapper<YonghuEntity>();PageUtils page = yonghuService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, yonghu), params), params)); return R.ok().put("data", page);    }/     * 列表     */    @RequestMapping("/lists")    public R list( YonghuEntity yonghu){EntityWrapper<YonghuEntity> ew = new EntityWrapper<YonghuEntity>();      ew.allEq(MPUtil.allEQMapPre( yonghu, "yonghu"));  return R.ok().put("data", yonghuService.selectListView(ew));    } /     * 查询     */    @RequestMapping("/query")    public R query(YonghuEntity yonghu){ EntityWrapper< YonghuEntity> ew = new EntityWrapper< YonghuEntity>(); ew.allEq(MPUtil.allEQMapPre( yonghu, "yonghu")); YonghuView yonghuView =  yonghuService.selectView(ew);return R.ok("查询用户成功").put("data", yonghuView);    }    /     * 后端详情     */    @RequestMapping("/info/{id}")    public R info(@PathVariable("id") Long id){ YonghuEntity yonghu = yonghuService.selectById(id); return R.ok().put("data", yonghu);    }    /     * 前端详情     */    @RequestMapping("/detail/{id}")    public R detail(@PathVariable("id") Long id){ YonghuEntity yonghu = yonghuService.selectById(id); return R.ok().put("data", yonghu);    } /     * 后端保存     */    @RequestMapping("/save")    public R save(@RequestBody YonghuEntity yonghu, HttpServletRequest request){    yonghu.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());    //ValidatorUtils.validateEntity(yonghu);    YonghuEntity user = yonghuService.selectOne(new EntityWrapper<YonghuEntity>().eq("yonghuming", yonghu.getYonghuming()));if(user!=null) {return R.error("用户已存在");}yonghu.setId(new Date().getTime()); yonghuService.insert(yonghu); return R.ok();    } /     * 前端保存     */    @RequestMapping("/add")    public R add(@RequestBody YonghuEntity yonghu, HttpServletRequest request){    yonghu.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());    //ValidatorUtils.validateEntity(yonghu);    YonghuEntity user = yonghuService.selectOne(new EntityWrapper<YonghuEntity>().eq("yonghuming", yonghu.getYonghuming()));if(user!=null) {return R.error("用户已存在");}yonghu.setId(new Date().getTime()); yonghuService.insert(yonghu); return R.ok();    }    /     * 修改     */    @RequestMapping("/update")    public R update(@RequestBody YonghuEntity yonghu, HttpServletRequest request){ //ValidatorUtils.validateEntity(yonghu); yonghuService.updateById(yonghu);//全部更新 return R.ok();    } /     * 删除     */    @RequestMapping("/delete")    public R delete(@RequestBody Long[] ids){ yonghuService.deleteBatchIds(Arrays.asList(ids)); return R.ok();    } /     * 提醒接口     */@RequestMapping("/remind/{columnName}/{type}")public R remindCount(@PathVariable("columnName") String columnName, HttpServletRequest request,  @PathVariable("type") String type,@RequestParam Map<String, Object> map) {map.put("column", columnName);map.put("type", type);if(type.equals("2")) {SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");Calendar c = Calendar.getInstance();Date remindStartDate = null;Date remindEndDate = null;if(map.get("remindstart")!=null) {Integer remindStart = Integer.parseInt(map.get("remindstart").toString());c.setTime(new Date()); c.add(Calendar.DAY_OF_MONTH,remindStart);remindStartDate = c.getTime();map.put("remindstart", sdf.format(remindStartDate));}if(map.get("remindend")!=null) {Integer remindEnd = Integer.parseInt(map.get("remindend").toString());c.setTime(new Date());c.add(Calendar.DAY_OF_MONTH,remindEnd);remindEndDate = c.getTime();map.put("remindend", sdf.format(remindEndDate));}}Wrapper<YonghuEntity> wrapper = new EntityWrapper<YonghuEntity>();if(map.get("remindstart")!=null) {wrapper.ge(columnName, map.get("remindstart"));}if(map.get("remindend")!=null) {wrapper.le(columnName, map.get("remindend"));}int count = yonghuService.selectCount(wrapper);return R.ok().put("count", count);}}