• Java项目:SSM在线租房售房平台多城市版本


    作者主页:夜未央5788

     简介:Java领域优质创作者、Java项目、学习资料、技术互助

    文末获取源码

    项目介绍

    本项目分为前后台,共有管理员与普通用户两种角色;
    管理员角色包含以下功能:
    管理员登录,修改基本信息,用户管理,租房管理,售房管理,举报用户管理,举报房源管理等功能。

    用户角色包含以下功能:
    用户角色,修改个人信息,发布租房信息,发布售房信息,查找房源,查看消息通知,查看被举报记录,租房管理,售房管理等功能。

    环境需要

    1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。
    2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA;
    3.tomcat环境:Tomcat 7.x,8.x,9.x版本均可
    4.硬件环境:windows 7/8/10 1G内存以上;或者 Mac OS; 

    5.数据库:MySql 5.7版本;

    6.是否Maven项目:是;

    技术栈

    1. 后端:Spring+SpringMVC+Mybatis

    2. 前端:JSP+CSS+JavaScript+Bootstrap+jQuery

    使用说明

    1. 使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件;

    2. 使用IDEA/Eclipse/MyEclipse导入项目,Eclipse/MyEclipse导入时,若为maven项目请选择maven;

    若为maven项目,导入成功后请执行maven clean;maven install命令,然后运行;

    3. 将项目中datasource.properties配置文件中的数据库配置改为自己的配置;

    4. 运行项目,http://localhost:8080/
    用户账号/密码:user/123456
    管理员账号/密码:admin/admin

    运行截图

    用户角色

     

     

     

     

     

     管理员角色

     

     

     

     

    相关代码

    房子控制器

    1. package com.houserss.controller;
    2. import javax.servlet.http.HttpServletRequest;
    3. import javax.servlet.http.HttpSession;
    4. import org.springframework.beans.factory.annotation.Autowired;
    5. import org.springframework.stereotype.Controller;
    6. import org.springframework.web.bind.annotation.RequestMapping;
    7. import org.springframework.web.bind.annotation.RequestMethod;
    8. import org.springframework.web.bind.annotation.RequestParam;
    9. import org.springframework.web.bind.annotation.ResponseBody;
    10. import org.springframework.web.multipart.MultipartFile;
    11. import com.houserss.common.Const;
    12. import com.houserss.common.Const.Role;
    13. import com.houserss.common.ServerResponse;
    14. import com.houserss.dao.HouseMapper;
    15. import com.houserss.pojo.House;
    16. import com.houserss.pojo.User;
    17. import com.houserss.service.IHouseService;
    18. import com.houserss.vo.HouseVo;
    19. import com.houserss.vo.PageInfoVo;
    20. @Controller
    21. @RequestMapping("/house/")
    22. public class HouseController {
    23. @Autowired
    24. private IHouseService iHouseService;
    25. @Autowired
    26. private HouseMapper houseMapper;
    27. @RequestMapping(value="publish.do",method = RequestMethod.POST)
    28. @ResponseBody
    29. public ServerResponse publish(House house, @RequestParam(value = "images", required = false)MultipartFile images[], String[] deletes, HttpSession session,HttpServletRequest request){
    30. User currentUser = (User)session.getAttribute(Const.CURRENT_USER);
    31. String path = request.getSession().getServletContext().getRealPath("upload");
    32. if(currentUser == null){
    33. return ServerResponse.createByErrorMessage("用户未登录,请登录后在编辑");
    34. }
    35. return iHouseService.publish(currentUser,house, images, deletes,path);
    36. }
    37. @RequestMapping(value="delete.do",method = RequestMethod.POST)
    38. @ResponseBody
    39. public ServerResponse delete(int houseId, HttpSession session){
    40. User currentUser = (User)session.getAttribute(Const.CURRENT_USER);
    41. if(currentUser == null){
    42. return ServerResponse.createByErrorMessage("用户未登录,请登录后在删除");
    43. }
    44. return iHouseService.delete(currentUser,houseId);
    45. }
    46. @RequestMapping(value="houseList.do",method = RequestMethod.POST)
    47. @ResponseBody
    48. public ServerResponse> houseList(
    49. @RequestParam(value = "pageNum",defaultValue = "1")int pageNum,
    50. @RequestParam(value = "pageSize",defaultValue = "10") int pageSize,
    51. @RequestParam(value = "sellType",required = false)String sellType,
    52. @RequestParam(value = "zone",required = false)String zone,
    53. @RequestParam(value = "houseType",required = false)String houseType,
    54. @RequestParam(value = "minPrice",required = false)String minPrice,
    55. @RequestParam(value = "maxPrice",required = false)String maxPrice,
    56. @RequestParam(value = "orientation",required = false)String orientation,
    57. @RequestParam(value = "decorateType",required = false)Integer decorateType,
    58. @RequestParam(value = "minArea",required = false)String minArea,
    59. @RequestParam(value = "maxArea",required = false)String maxArea,
    60. @RequestParam(value = "address",required = false)String address,
    61. @RequestParam(value = "isSelf",defaultValue = "false")boolean isSelf,
    62. @RequestParam(value = "orderType",defaultValue = "0")int orderType,
    63. @RequestParam(value = "status",required=false)Integer status,
    64. @RequestParam(value = "isHide",required=false)Integer isHide,
    65. HttpSession session){
    66. int userId = 0;
    67. User currentUser = (User)session.getAttribute(Const.CURRENT_USER);
    68. if(currentUser != null && currentUser.getRoleType() == Role.ROLE_ADMIN) {
    69. return iHouseService.houseList(pageNum,pageSize,sellType,zone,houseType,minPrice,maxPrice,orientation,minArea,maxArea,address,decorateType,userId,orderType,status,isHide);
    70. }
    71. if(currentUser != null && isSelf) {
    72. userId = currentUser.getId();
    73. }
    74. return iHouseService.houseList(pageNum,pageSize,sellType,zone,houseType,minPrice,maxPrice,orientation,minArea,maxArea,address,decorateType,userId,orderType,status,isHide);
    75. }
    76. @RequestMapping(value="detailHouse.do",method = RequestMethod.POST)
    77. @ResponseBody
    78. public ServerResponse detailHouse(int houseId, HttpSession session){
    79. return iHouseService.detailHouse(houseId);
    80. }
    81. @RequestMapping(value="updateHouse.do",method = RequestMethod.POST)
    82. @ResponseBody
    83. public ServerResponse updateHouse(House house,HttpSession session){
    84. User currentUser = (User)session.getAttribute(Const.CURRENT_USER);
    85. if(currentUser == null){
    86. return ServerResponse.createByErrorMessage("用户未登录");
    87. }
    88. House tempHouse = houseMapper.selectById(house.getId());
    89. if(tempHouse == null) {
    90. return ServerResponse.createByErrorMessage("未找到要修改房源信息");
    91. }
    92. return iHouseService.againPublishHouse(house);
    93. }
    94. @RequestMapping(value="setHideStatus.do",method = RequestMethod.POST)
    95. @ResponseBody
    96. public ServerResponse setHideStatus(@RequestParam(required=true)int houseId,
    97. @RequestParam(required=true)int isHide,HttpSession session){
    98. User currentUser = (User)session.getAttribute(Const.CURRENT_USER);
    99. if(currentUser == null){
    100. return ServerResponse.createByErrorMessage("用户未登录");
    101. }
    102. House tempHouse = houseMapper.selectById(houseId);
    103. if(tempHouse == null) {
    104. return ServerResponse.createByErrorMessage("未找到要修改房源信息");
    105. }
    106. if(currentUser.getRoleType() == Role.ROLE_ADMIN){
    107. return iHouseService.setHideStatus(houseId,isHide);
    108. }else{
    109. if(tempHouse.getUserId() == currentUser.getId()){
    110. return iHouseService.setHideStatus(houseId,isHide);
    111. }
    112. }
    113. return ServerResponse.createByErrorMessage("设置房源状态异常");
    114. }
    115. // backend
    116. /**
    117. * 审核房源
    118. * @param session
    119. * @return
    120. */
    121. @RequestMapping(value="verified.do",method = RequestMethod.POST)
    122. @ResponseBody
    123. public ServerResponse verified(@RequestParam(required=true)int houseId,
    124. @RequestParam(required=true)int status,@RequestParam(defaultValue="",required=false)String reason,
    125. HttpSession session){
    126. User currentUser = (User)session.getAttribute(Const.CURRENT_USER);
    127. if(currentUser == null){
    128. return ServerResponse.createByErrorMessage("用户未登录");
    129. }
    130. if(currentUser.getRoleType() != Role.ROLE_ADMIN) {
    131. return ServerResponse.createByErrorMessage("该用户无权限访问");
    132. }
    133. return iHouseService.verified(houseId,status,reason);
    134. }
    135. }

    投诉信息控制器

    1. package com.houserss.controller;
    2. import javax.servlet.http.HttpSession;
    3. import org.springframework.beans.factory.annotation.Autowired;
    4. import org.springframework.stereotype.Controller;
    5. import org.springframework.web.bind.annotation.RequestMapping;
    6. import org.springframework.web.bind.annotation.RequestMethod;
    7. import org.springframework.web.bind.annotation.RequestParam;
    8. import org.springframework.web.bind.annotation.ResponseBody;
    9. import com.houserss.common.Const;
    10. import com.houserss.common.Const.Role;
    11. import com.houserss.common.ServerResponse;
    12. import com.houserss.pojo.ReportInfo;
    13. import com.houserss.pojo.User;
    14. import com.houserss.service.IReportService;
    15. import com.houserss.vo.PageInfoVo;
    16. import com.houserss.vo.ReportInfoVo;
    17. @Controller
    18. @RequestMapping("/reportInfo/")
    19. public class ReportInfoController {
    20. @Autowired
    21. private IReportService iReportService;
    22. /**
    23. * 投诉user或房源0用户 1房源
    24. * @param reportInfo
    25. * @param session
    26. * @return
    27. */
    28. @RequestMapping(value="report.do",method = RequestMethod.POST)
    29. @ResponseBody
    30. public ServerResponse reportHouse(ReportInfo reportInfo, HttpSession session){
    31. User currentUser = (User)session.getAttribute(Const.CURRENT_USER);
    32. if(currentUser == null){
    33. return ServerResponse.createByErrorMessage("用户未登录,请登录后在举报");
    34. }
    35. reportInfo.setReporterId(currentUser.getId());
    36. return iReportService.report(reportInfo);
    37. }
    38. /**
    39. * 查看被成功投诉房源列表
    40. * @param type (1房子)
    41. * @param session
    42. * @return
    43. */
    44. @RequestMapping(value="selectHouseReportInfo.do",method = RequestMethod.POST)
    45. @ResponseBody
    46. public ServerResponse> selectHouseReportInfo(
    47. @RequestParam(value = "pageNum",defaultValue = "1")int pageNum,
    48. @RequestParam(value = "pageSize",defaultValue = "10") int pageSize,
    49. @RequestParam(value = "type",required = true) int type,
    50. HttpSession session){
    51. User currentUser = (User)session.getAttribute(Const.CURRENT_USER);
    52. if(currentUser == null){
    53. return ServerResponse.createByErrorMessage("用户未登录,请登录后在查看");
    54. }
    55. return iReportService.selectHouseReportInfo(pageNum,pageSize,type,currentUser);
    56. }
    57. // backend
    58. /**
    59. * 查看投诉列表
    60. * @param type (0用户 1房子)
    61. * @param session
    62. * @return
    63. */
    64. @RequestMapping(value="selectReportInfo.do",method = RequestMethod.POST)
    65. @ResponseBody
    66. public ServerResponse> selectReportInfo(
    67. @RequestParam(value = "pageNum",defaultValue = "1")int pageNum,
    68. @RequestParam(value = "pageSize",defaultValue = "10") int pageSize,
    69. @RequestParam(value = "type",required = true) int type,
    70. @RequestParam(value = "status",defaultValue = "0") int status,
    71. HttpSession session){
    72. User currentUser = (User)session.getAttribute(Const.CURRENT_USER);
    73. if(currentUser == null){
    74. return ServerResponse.createByErrorMessage("用户未登录,请登录后在查看");
    75. }
    76. if(currentUser.getRoleType() == Role.ROLE_ADMIN){
    77. return iReportService.selectReportInfo(pageNum,pageSize,type,status,null);
    78. }else{
    79. return iReportService.selectReportInfo(pageNum,pageSize,type,status,currentUser);
    80. }
    81. }
    82. /**
    83. * @param id
    84. * @param status 1(封禁、删除),2(不处理)
    85. * @param session
    86. * @return
    87. */
    88. @RequestMapping(value="dealReport.do",method = RequestMethod.POST)
    89. @ResponseBody
    90. public ServerResponse dealReport(int id,int status,HttpSession session){
    91. User currentUser = (User)session.getAttribute(Const.CURRENT_USER);
    92. if(currentUser == null){
    93. return ServerResponse.createByErrorMessage("用户未登录,请登录后在处理");
    94. }
    95. if(currentUser.getRoleType() != Role.ROLE_ADMIN){
    96. return ServerResponse.createByErrorMessage("该用户无权限处理");
    97. }
    98. return iReportService.dealReport(id,status);
    99. }
    100. }

    用户控制器

    1. package com.houserss.controller;
    2. import javax.servlet.http.HttpSession;
    3. import org.apache.commons.lang3.StringUtils;
    4. import org.springframework.beans.factory.annotation.Autowired;
    5. import org.springframework.stereotype.Controller;
    6. import org.springframework.web.bind.annotation.RequestMapping;
    7. import org.springframework.web.bind.annotation.RequestMethod;
    8. import org.springframework.web.bind.annotation.RequestParam;
    9. import org.springframework.web.bind.annotation.ResponseBody;
    10. import com.houserss.common.Const;
    11. import com.houserss.common.Const.Role;
    12. import com.houserss.common.ServerResponse;
    13. import com.houserss.pojo.User;
    14. import com.houserss.service.IUserService;
    15. import com.houserss.service.impl.UserServiceImpl;
    16. import com.houserss.util.MD5Util;
    17. import com.houserss.util.TimeUtils;
    18. import com.houserss.vo.DeleteHouseVo;
    19. import com.houserss.vo.PageInfoVo;
    20. /**
    21. * Created by admin
    22. */
    23. @Controller
    24. @RequestMapping("/user/")
    25. public class UserController {
    26. @Autowired
    27. private IUserService iUserService;
    28. /**
    29. * 用户登录
    30. * @param username
    31. * @param password
    32. * @param session
    33. * @return
    34. */
    35. @RequestMapping(value = "login.do",method = RequestMethod.POST)
    36. @ResponseBody
    37. public ServerResponse login(User user,String uvcode, HttpSession session){
    38. String code = (String)session.getAttribute("validationCode");
    39. if(StringUtils.isNotBlank(code)) {
    40. if(!code.equalsIgnoreCase(uvcode)) {
    41. return ServerResponse.createByErrorMessage("验证码不正确");
    42. }
    43. }
    44. ServerResponse response = iUserService.login(user.getUsername(),user.getPassword());
    45. if(response.isSuccess()){
    46. session.setAttribute(Const.CURRENT_USER,response.getData());
    47. }
    48. return response;
    49. }
    50. @RequestMapping(value = "logout.do",method = RequestMethod.POST)
    51. @ResponseBody
    52. public ServerResponse logout(HttpSession session){
    53. session.removeAttribute(Const.CURRENT_USER);
    54. return ServerResponse.createBySuccess();
    55. }
    56. // admin 8D223A2A35C5A05467F1FF10537C7915
    57. @RequestMapping(value = "register.do",method = RequestMethod.POST)
    58. @ResponseBody
    59. public ServerResponse register(User user,HttpSession session){
    60. return iUserService.register(user);
    61. }
    62. @RequestMapping(value = "check_valid.do",method = RequestMethod.POST)
    63. @ResponseBody
    64. public ServerResponse checkValid(String str,String type){
    65. return iUserService.checkValid(str,type);
    66. }
    67. @RequestMapping(value = "reset_password.do",method = RequestMethod.POST)
    68. @ResponseBody
    69. public ServerResponse resetPassword(HttpSession session,String passwordOld,String passwordNew){
    70. User user = (User)session.getAttribute(Const.CURRENT_USER);
    71. if(user == null){
    72. return ServerResponse.createByErrorMessage("用户未登录");
    73. }
    74. return iUserService.resetPassword(passwordOld,passwordNew,user);
    75. }
    76. @RequestMapping(value = "update_information.do",method = RequestMethod.POST)
    77. @ResponseBody
    78. public ServerResponse update_information(HttpSession session,User user){
    79. User currentUser = (User)session.getAttribute(Const.CURRENT_USER);
    80. if(currentUser == null){
    81. return ServerResponse.createByErrorMessage("用户未登录");
    82. }
    83. user.setId(currentUser.getId());
    84. return iUserService.updateInformation(currentUser, user);
    85. }
    86. @RequestMapping(value = "userList.do",method = RequestMethod.POST)
    87. @ResponseBody
    88. public ServerResponse> get_AllUser(
    89. @RequestParam(value = "pageNum",defaultValue = "1")int pageNum,
    90. @RequestParam(value = "pageSize",defaultValue = "10") int pageSize,
    91. HttpSession session){
    92. User currentUser = (User)session.getAttribute(Const.CURRENT_USER);
    93. if(currentUser == null){
    94. return ServerResponse.createByErrorMessage("用户未登录");
    95. }
    96. if(currentUser.getRoleType() != Role.ROLE_ADMIN) {
    97. return ServerResponse.createByErrorMessage("该用户无权限访问");
    98. }
    99. return iUserService.getAllUser(pageNum,pageSize);
    100. }
    101. @RequestMapping(value = "sendResetPwdMail.do",method = RequestMethod.POST)
    102. @ResponseBody
    103. public ServerResponse sendResetPwdMail(@RequestParam(required=true)String username,
    104. @RequestParam(required=true)String email,@RequestParam(required=true)String code,HttpSession session){
    105. String validationCode = (String)session.getAttribute("validationCode");
    106. if(StringUtils.isNotBlank(validationCode)) {
    107. if(!validationCode.equalsIgnoreCase(code)) {
    108. return ServerResponse.createByErrorMessage("验证码不正确");
    109. }
    110. }
    111. return iUserService.sendResetPwdMail(username,email);
    112. }
    113. @RequestMapping(value = "resetpassword.do",method = RequestMethod.POST)
    114. @ResponseBody
    115. public ServerResponse resetPasswdByEmail(@RequestParam(required=true)String password,
    116. @RequestParam(required=true)String sign,@RequestParam(required=true)String userId,@RequestParam(required=true)String time){
    117. // 判断时间
    118. if((TimeUtils.currentSecond() - Integer.valueOf(time)) > TimeUtils.DAY_SECONDS*2 ){
    119. return ServerResponse.createByErrorMessage("链接超时,请重新发邮件获取链接");
    120. }
    121. String signMD5 = MD5Util.MD5EncodeUtf8(""+userId + time + UserServiceImpl.key);
    122. if(!signMD5.equals(sign)){
    123. return ServerResponse.createByErrorMessage("sign错误。");
    124. }
    125. User user = new User();
    126. user.setId(Integer.valueOf(userId));
    127. user.setPassword(MD5Util.MD5EncodeUtf8(password));
    128. return iUserService.resetPasswd(user);
    129. }
    130. @RequestMapping(value = "getDeleteHouseMessge.do",method = RequestMethod.POST)
    131. @ResponseBody
    132. public ServerResponse> getDeleteHouseMessge(
    133. @RequestParam(value = "pageNum",defaultValue = "1")int pageNum,
    134. @RequestParam(value = "pageSize",defaultValue = "10") int pageSize,
    135. HttpSession session){
    136. User currentUser = (User)session.getAttribute(Const.CURRENT_USER);
    137. if(currentUser == null){
    138. return ServerResponse.createByErrorMessage("用户未登录,请登录后在处理");
    139. }
    140. return iUserService.getDeleteHouseMessge(pageNum,pageSize,currentUser);
    141. }
    142. @RequestMapping(value = "deleteMessage.do",method = RequestMethod.POST)
    143. @ResponseBody
    144. public ServerResponse deleteMessage(int id,
    145. HttpSession session){
    146. User currentUser = (User)session.getAttribute(Const.CURRENT_USER);
    147. if(currentUser == null){
    148. return ServerResponse.createByErrorMessage("用户未登录,请登录后在处理");
    149. }
    150. return iUserService.deleteMessage(id,currentUser);
    151. }
    152. // backend
    153. /**
    154. * @param userId
    155. * @param status 0正常 1封禁
    156. * @param session
    157. * @return
    158. */
    159. @RequestMapping(value = "changeUserStatus.do",method = RequestMethod.POST)
    160. @ResponseBody
    161. public ServerResponse ban(int userId,int status,HttpSession session){
    162. User currentUser = (User)session.getAttribute(Const.CURRENT_USER);
    163. if(currentUser == null){
    164. return ServerResponse.createByErrorMessage("用户未登录,请登录后在处理");
    165. }
    166. if(currentUser.getRoleType() != Role.ROLE_ADMIN){
    167. return ServerResponse.createByErrorMessage("该用户无权限处理");
    168. }
    169. return iUserService.changeUserStatus(userId,status);
    170. }
    171. }

    房间service

    1. package com.houserss.service;
    2. import org.springframework.web.multipart.MultipartFile;
    3. import com.houserss.common.ServerResponse;
    4. import com.houserss.pojo.DeleteHouse;
    5. import com.houserss.pojo.House;
    6. import com.houserss.pojo.User;
    7. import com.houserss.vo.HouseVo;
    8. import com.houserss.vo.PageInfoVo;
    9. public interface IHouseService {
    10. ServerResponse publish(User user,House house,MultipartFile[] images,String[] deletes,String path);
    11. ServerResponse> houseList(int pageNum,int pageSize,String sellType,String zone,String houseType,String minPrice,String maxPrice,
    12. String orientation,String minArea,String maxArea,String address,Integer decorateType,int userId,int orderType,Integer status,Integer isHide);
    13. ServerResponse delete(User user,int houseId);
    14. ServerResponse detailHouse(int houseId);
    15. ServerResponse verified(int houseId,int status,String reason);
    16. ServerResponse againPublishHouse(House houes);
    17. ServerResponse setHideStatus(int houesId,int isHide);
    18. }

    如果也想学习本系统,下面领取。回复:195ssm

     

  • 相关阅读:
    15. 从零开始编写一个类nginx工具, 如果将nginx.conf转成yaml,toml,json会怎么样
    微信开放平台第三方开发,实现代小程序备案申请
    智云通CRM:客户为什么不买?
    【QT5-程序控制电源-RS232-SCPI协议-上位机-基础样例【1】】
    LAMP及论坛搭建
    go 设计模式——单例模式
    剑指 Offer 31. 栈的压入、弹出序列
    项目经理必备的可视化管理工具
    mongo索引
    【分布式应用】消息队列之卡夫卡 + EFLFK集群部署
  • 原文地址:https://blog.csdn.net/hanyunlong1989/article/details/126339655