• 基于springboot的房屋租赁系统


    博主主页猫头鹰源码

    博主简介:Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万+、专注Java技术领域和毕业设计项目实战

    主要内容:毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询

    文末联系获取

    项目介绍: 

    该系统创作于2022年5月,经过详细的数据库设计。基于springboot技术,数据层为MyBatis,mysql数据库,页面采用html,具有完整的业务逻辑,适合话题:房屋租赁、房屋、酒店、民宿等,项目具有租赁的完整流程。

    项目功能:

    1. 登录注册功能,分为三种用户权限(不能注册为管理员)
    2. 租户、房东、管理员
    3. 租户页面:能够管理个人信息、查看房源(支持条件查找)、查看租房信息和租金信息(不用做出支付功能,有个表格就行)
    4. 房东页面:能够管理个人信息、发布房源、修改房源状态(“已签”、“洽谈中”、“已预订”)、管理租金(租客代缴租金、租客已缴租金)
    5. 租户和房东都有一个我要反馈功能,反馈给管理员(可做可不做)
    6. 管理员:用户管理(修改用户账号信息和用户权限)、房源管理、查看反馈、简单的统计报表查看
    7. 可视界面不要求过分复杂,简洁明了即可

    数据库表结构文档:

    系统包含技术:

    后端:springBoot、mybatis
    前端:bootstrap、js、css等,html页面
    开发工具:idea
    数据库:mysql 5.7
    JDK版本:jdk1.8

    部分截图说明:

    下面是用户首页,展示最新的房屋信息

    下面是房屋列表,分页展示,也可以筛选

     房源详情,有详细的介绍

    下面是后台登录,管理员和房东可以登录

     管理员首页

    管理员对房源的管理,不能添加,由房东添加房源

    管理员对房东维护

    管理员查看统计信息

    房东新增房源信息,可以维护基本信息以及图片

    部分代码:

    1. /**进入列表页面*/
    2. @GetMapping("/feedback")
    3. public String userIframe(){
    4. return "FeedbackList";
    5. }
    6. /**列表数据*/
    7. @GetMapping("/list")
    8. @ResponseBody
    9. public PageResultVo findFeedback(Feedback feedback, Integer limit, Integer page, HttpSession session){
    10. String type = (String)session.getAttribute("type");
    11. if(type.equals("02")){
    12. Manage manage = (Manage)session.getAttribute("userInfo");
    13. feedback.setType("01");
    14. feedback.setHmid(String.valueOf(manage.getId()));
    15. }
    16. if(type.equals("03")){
    17. User user = (User)session.getAttribute("userInfo");
    18. feedback.setType("02");
    19. feedback.setHmid(String.valueOf(user.getId()));
    20. }
    21. PageHelper.startPage(page,limit);
    22. List<Feedback> feedbackList = feedbackService.selectByCondition(feedback);
    23. for(int i=0;i<feedbackList.size();i++){
    24. if(feedbackList.get(i).getHmid()!=null){
    25. if(feedbackList.get(i).getType().equals("01")){
    26. Manage manage = manageService.selectById(feedbackList.get(i).getHmid());
    27. feedbackList.get(i).setHmname(manage.getRealname());
    28. }else{
    29. User user = userService.selectById(feedbackList.get(i).getHmid());
    30. feedbackList.get(i).setHmname(user.getRealname());
    31. }
    32. }
    33. }
    34. PageInfo<Feedback> pages = new PageInfo<>(feedbackList);
    35. return JsonData.table(feedbackList,pages.getTotal());
    36. }
    37. /**编辑详情*/
    38. @GetMapping("/edit")
    39. @ResponseBody
    40. public Feedback edit(Model model, String id){
    41. return feedbackService.selectById(id);
    42. }
    43. /**编辑*/
    44. @PostMapping("/edit")
    45. @ResponseBody
    46. public JsonData edit(Feedback feedback){
    47. int a = feedbackService.updateById(feedback);
    48. if (a > 0) {
    49. return JsonData.success(null,"编辑成功!");
    50. } else {
    51. return JsonData.fail("编辑失败");
    52. }
    53. }
    54. /**删除*/
    55. @PostMapping("/del")
    56. @ResponseBody
    57. public JsonData del(String id){
    58. try{
    59. feedbackService.deleteById(Integer.parseInt(id));
    60. }catch(Exception ex){
    61. JsonData.fail("出现错误");
    62. }
    63. return JsonData.success(null,"删除成功");
    64. }
    65. /**新增*/
    66. @PostMapping("/add")
    67. @ResponseBody
    68. public JsonData add(Feedback feedback, HttpSession session){
    69. Date date = new Date();
    70. feedback.setCreateTime(date);
    71. String type = (String)session.getAttribute("type");
    72. if(type.equals("02")){
    73. Manage manage = (Manage)session.getAttribute("userInfo");
    74. feedback.setHmid(String.valueOf(manage.getId()));
    75. feedback.setType("01");
    76. }
    77. if(type.equals("03")){
    78. User user = (User)session.getAttribute("userInfo");
    79. feedback.setHmid(String.valueOf(user.getId()));
    80. feedback.setType("02");
    81. }
    82. int num = feedbackService.addByCondition(feedback);
    83. if(num > 0){
    84. return JsonData.success(null,"添加成功");
    85. }else {
    86. return JsonData.fail("添加失败");
    87. }
    88. }

    下面是文件上传的核心代码:

    1. /**
    2. * 文件上传
    3. * @param dropFile
    4. * @param request
    5. * @return
    6. */
    7. @ResponseBody
    8. @RequestMapping(value = "/avatar", method = RequestMethod.POST)
    9. public Map<String, Object> acticleAvatar(MultipartFile dropFile, HttpServletRequest request) throws IOException {
    10. Map<String, Object> result = new HashMap<>();
    11. //获取文件后缀
    12. String fileName = dropFile.getOriginalFilename();
    13. String fileSuffix = fileName.substring(fileName.lastIndexOf('.'));
    14. //文件存放路径
    15. String fileDirPath = new String(uploadDir);
    16. File fileDir = new File(fileDirPath);
    17. //判断文件是否存在
    18. if (!fileDir.exists()){
    19. fileDir.mkdirs();
    20. }
    21. File file = new File(fileDir.getAbsolutePath()+ File.separator+ UUID.randomUUID() + fileSuffix);
    22. try {
    23. dropFile.transferTo(file);
    24. } catch (IOException e) {
    25. e.printStackTrace();
    26. }
    27. //传到前端
    28. result.put("fileName", "http://localhost:"+port+"/upload/"+file.getName());
    29. return result;
    30. }
    31. /**
    32. * 后台内容图片上传
    33. * @param dropFile
    34. * @param request
    35. * @return
    36. */
    37. @RequestMapping(value = "/ContentUpload", method = RequestMethod.POST)
    38. @ResponseBody
    39. public Map<String, Object> hotelContentUpload(MultipartFile dropFile, HttpServletRequest request) {
    40. Map<String, Object> result = new HashMap<>();
    41. //获取文件后缀
    42. String fileName = dropFile.getOriginalFilename();
    43. String fileSuffix = fileName.substring(fileName.lastIndexOf('.'));
    44. //文件存放路径
    45. String fileDirPath = new String(uploadDir);
    46. File fileDir = new File(fileDirPath);
    47. //判断文件是否存在
    48. if (!fileDir.exists()){
    49. fileDir.mkdirs();
    50. }
    51. File file = new File(fileDir.getAbsolutePath()+ File.separator+ UUID.randomUUID() + fileSuffix);
    52. try {
    53. dropFile.transferTo(file);
    54. } catch (IOException e) {
    55. e.printStackTrace();
    56. }
    57. //传到前端
    58. result.put("errno",0);
    59. result.put("data",new String[] {"http://localhost:"+port+"/upload/" + file.getName()});
    60. return result;
    61. }

    用户登录功能:

    1. /**
    2. * 登录
    3. * 将提交数据(username,password)写入Admin对象
    4. */
    5. @RequestMapping(value = "/login")
    6. @ResponseBody
    7. public String login(String username, String password, String type, Model model, HttpSession session) {
    8. Map mp = new HashMap();
    9. if(username.equals("") || password.equals("")){
    10. return "202";
    11. }
    12. if(type.equals("01")){
    13. mp.put("username",username);
    14. mp.put("password",password);
    15. List<Admin> admins = adminService.queryFilter(mp);
    16. if(admins!=null && admins.size()==1){
    17. session.setAttribute("userInfo", admins.get(0));
    18. session.setAttribute("type", "01");
    19. }else{
    20. return "201";
    21. }
    22. }else if(type.equals("02")){
    23. mp.put("phone",username);
    24. mp.put("password",password);
    25. mp.put("type","01");
    26. List<Manage> manages = manageService.queryFilter(mp);
    27. if(manages!=null && manages.size()==1){
    28. session.setAttribute("userInfo", manages.get(0));
    29. session.setAttribute("type", "02");
    30. }else{
    31. return "201";
    32. }
    33. }else{
    34. mp.put("phone",username);
    35. mp.put("password",password);
    36. mp.put("type","02");
    37. List<User> users = userService.queryFilter(mp);
    38. if(users!=null && users.size()==1){
    39. session.setAttribute("userInfo", users.get(0));
    40. session.setAttribute("type", "03");
    41. return "203";
    42. }else{
    43. return "201";
    44. }
    45. }
    46. return "200";
    47. }

    以上就是部分功能展示,从整体上来看,本系统功能是十分完整的,界面设计简洁大方,交互友好,数据库设计也很合理,规模适中,代码工整,清晰,适合学习使用。

    好了,今天就到这儿吧,小伙伴们点赞、收藏、评论,一键三连走起呀,下期见~~

  • 相关阅读:
    指针及其他有关的
    游戏专属i9-13900k服务器配置一个月多少钱
    详解 InnoDB Cluster 主机名问题
    SVN版本库合并
    知识问答之初步入门-2
    计算机毕设(附源码)JAVA-SSM家庭安防系统
    当找不到对应版本依赖的时候,点击右上角的maven标志来解决!
    Lightrun还可以这样用?
    干货!一次伪静态页面的SQL注入!白帽黑客实战 。
    nacos集群配置(超完整)
  • 原文地址:https://blog.csdn.net/mtyedu/article/details/126493692