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

运行截图

用户角色

 

 

 

 

 

 管理员角色

 

 

 

 

相关代码

房子控制器

package com.houserss.controller;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;

import com.houserss.common.Const;
import com.houserss.common.Const.Role;
import com.houserss.common.ServerResponse;
import com.houserss.dao.HouseMapper;
import com.houserss.pojo.House;
import com.houserss.pojo.User;
import com.houserss.service.IHouseService;
import com.houserss.vo.HouseVo;
import com.houserss.vo.PageInfoVo;

@Controller
@RequestMapping("/house/")
public class HouseController {

    @Autowired
    private IHouseService iHouseService;
    
    
    @Autowired
    private HouseMapper houseMapper;
    
    @RequestMapping(value="publish.do",method = RequestMethod.POST)
    @ResponseBody
    public ServerResponse<String> publish(House house, @RequestParam(value = "images", required = false)MultipartFile images[], String[] deletes, HttpSession session,HttpServletRequest request){
        User currentUser = (User)session.getAttribute(Const.CURRENT_USER);
        String path = request.getSession().getServletContext().getRealPath("upload");
        if(currentUser == null){
            return ServerResponse.createByErrorMessage("用户未登录,请登录后在编辑");
        }
        return iHouseService.publish(currentUser,house, images, deletes,path);
    }
    
    @RequestMapping(value="delete.do",method = RequestMethod.POST)
    @ResponseBody
    public ServerResponse<String> delete(int houseId, HttpSession session){
        User currentUser = (User)session.getAttribute(Const.CURRENT_USER);
        if(currentUser == null){
            return ServerResponse.createByErrorMessage("用户未登录,请登录后在删除");
        }
        return iHouseService.delete(currentUser,houseId);
    }
    
    @RequestMapping(value="houseList.do",method = RequestMethod.POST)
    @ResponseBody
    public ServerResponse<PageInfoVo<HouseVo>>  houseList(
            @RequestParam(value = "pageNum",defaultValue = "1")int pageNum,
            @RequestParam(value = "pageSize",defaultValue = "10") int pageSize,
            @RequestParam(value = "sellType",required = false)String sellType,
            @RequestParam(value = "zone",required = false)String zone,
            @RequestParam(value = "houseType",required = false)String houseType,
            @RequestParam(value = "minPrice",required = false)String minPrice,
            @RequestParam(value = "maxPrice",required = false)String maxPrice,
            @RequestParam(value = "orientation",required = false)String orientation,
            @RequestParam(value = "decorateType",required = false)Integer decorateType,
            @RequestParam(value = "minArea",required = false)String minArea,
            @RequestParam(value = "maxArea",required = false)String maxArea,
            @RequestParam(value = "address",required = false)String address,
            @RequestParam(value = "isSelf",defaultValue = "false")boolean isSelf,
            @RequestParam(value = "orderType",defaultValue = "0")int orderType,
            @RequestParam(value = "status",required=false)Integer status,
            @RequestParam(value = "isHide",required=false)Integer isHide,
            HttpSession session){
        int userId = 0;
        User currentUser = (User)session.getAttribute(Const.CURRENT_USER);
        if(currentUser != null && currentUser.getRoleType() == Role.ROLE_ADMIN) {
            return iHouseService.houseList(pageNum,pageSize,sellType,zone,houseType,minPrice,maxPrice,orientation,minArea,maxArea,address,decorateType,userId,orderType,status,isHide);
        }
        if(currentUser != null && isSelf) {
            userId = currentUser.getId();
        }
        return iHouseService.houseList(pageNum,pageSize,sellType,zone,houseType,minPrice,maxPrice,orientation,minArea,maxArea,address,decorateType,userId,orderType,status,isHide);
    }
    
    @RequestMapping(value="detailHouse.do",method = RequestMethod.POST)
    @ResponseBody
    public ServerResponse<HouseVo> detailHouse(int houseId, HttpSession session){
        return iHouseService.detailHouse(houseId);
    }
    
    @RequestMapping(value="updateHouse.do",method = RequestMethod.POST)
    @ResponseBody
    public ServerResponse<String> updateHouse(House house,HttpSession session){
        User currentUser = (User)session.getAttribute(Const.CURRENT_USER);
        if(currentUser == null){
            return ServerResponse.createByErrorMessage("用户未登录");
        }
        House tempHouse = houseMapper.selectById(house.getId());
        if(tempHouse == null) {
            return ServerResponse.createByErrorMessage("未找到要修改房源信息");
        }
        return iHouseService.againPublishHouse(house);
    }
    
    @RequestMapping(value="setHideStatus.do",method = RequestMethod.POST)
    @ResponseBody
    public ServerResponse<String> setHideStatus(@RequestParam(required=true)int houseId,
            @RequestParam(required=true)int isHide,HttpSession session){
        User currentUser = (User)session.getAttribute(Const.CURRENT_USER);
        if(currentUser == null){
            return ServerResponse.createByErrorMessage("用户未登录");
        }
        House tempHouse = houseMapper.selectById(houseId);
        if(tempHouse == null) {
            return ServerResponse.createByErrorMessage("未找到要修改房源信息");
        }
        if(currentUser.getRoleType() == Role.ROLE_ADMIN){
            return iHouseService.setHideStatus(houseId,isHide);
        }else{
            if(tempHouse.getUserId() == currentUser.getId()){
                return iHouseService.setHideStatus(houseId,isHide);
            }
        }
        return ServerResponse.createByErrorMessage("设置房源状态异常");
    }
    // backend
    
    /**
     * 审核房源
     * @param session
     * @return
     */
    @RequestMapping(value="verified.do",method = RequestMethod.POST)
    @ResponseBody
    public ServerResponse<String> verified(@RequestParam(required=true)int houseId,
            @RequestParam(required=true)int status,@RequestParam(defaultValue="",required=false)String reason,
            HttpSession session){
        User currentUser = (User)session.getAttribute(Const.CURRENT_USER);
        if(currentUser == null){
            return ServerResponse.createByErrorMessage("用户未登录");
        }
        if(currentUser.getRoleType() != Role.ROLE_ADMIN) {
            return ServerResponse.createByErrorMessage("该用户无权限访问");
        }
        return iHouseService.verified(houseId,status,reason);
    }
    
}

投诉信息控制器

package com.houserss.controller;

import javax.servlet.http.HttpSession;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

import com.houserss.common.Const;
import com.houserss.common.Const.Role;
import com.houserss.common.ServerResponse;
import com.houserss.pojo.ReportInfo;
import com.houserss.pojo.User;
import com.houserss.service.IReportService;
import com.houserss.vo.PageInfoVo;
import com.houserss.vo.ReportInfoVo;

@Controller
@RequestMapping("/reportInfo/")
public class ReportInfoController {
    @Autowired
    private IReportService iReportService;
    
    /**
     * 投诉user或房源0用户  1房源
     * @param reportInfo
     * @param session
     * @return
     */
    @RequestMapping(value="report.do",method = RequestMethod.POST)
    @ResponseBody
    public ServerResponse<String> reportHouse(ReportInfo reportInfo, HttpSession session){
        User currentUser = (User)session.getAttribute(Const.CURRENT_USER);
        if(currentUser == null){
            return ServerResponse.createByErrorMessage("用户未登录,请登录后在举报");
        }
        reportInfo.setReporterId(currentUser.getId());
        return iReportService.report(reportInfo);
    }

    /**
     * 查看被成功投诉房源列表
     * @param type (1房子)
     * @param session
     * @return
     */
    @RequestMapping(value="selectHouseReportInfo.do",method = RequestMethod.POST)
    @ResponseBody
    public ServerResponse<PageInfoVo<ReportInfoVo>> selectHouseReportInfo( 
            @RequestParam(value = "pageNum",defaultValue = "1")int pageNum,
            @RequestParam(value = "pageSize",defaultValue = "10") int pageSize,
            @RequestParam(value = "type",required = true) int type,
            HttpSession session){
        User currentUser = (User)session.getAttribute(Const.CURRENT_USER);
        if(currentUser == null){
            return ServerResponse.createByErrorMessage("用户未登录,请登录后在查看");
        }
        return iReportService.selectHouseReportInfo(pageNum,pageSize,type,currentUser);
    }
    
    // backend
    
    
    /**
     * 查看投诉列表
     * @param type (0用户 1房子)
     * @param session
     * @return
     */
    @RequestMapping(value="selectReportInfo.do",method = RequestMethod.POST)
    @ResponseBody
    public ServerResponse<PageInfoVo<ReportInfoVo>> selectReportInfo( 
            @RequestParam(value = "pageNum",defaultValue = "1")int pageNum,
            @RequestParam(value = "pageSize",defaultValue = "10") int pageSize,
            @RequestParam(value = "type",required = true) int type,
            @RequestParam(value = "status",defaultValue = "0") int status,
            HttpSession session){
        User currentUser = (User)session.getAttribute(Const.CURRENT_USER);
        if(currentUser == null){
            return ServerResponse.createByErrorMessage("用户未登录,请登录后在查看");
        }
        if(currentUser.getRoleType() == Role.ROLE_ADMIN){
        	return iReportService.selectReportInfo(pageNum,pageSize,type,status,null);
        }else{
        	return iReportService.selectReportInfo(pageNum,pageSize,type,status,currentUser);
        }
    }
    
    
    /**
     * @param id
     * @param status 1(封禁、删除),2(不处理)
     * @param session
     * @return
     */
    @RequestMapping(value="dealReport.do",method = RequestMethod.POST)
    @ResponseBody
    public ServerResponse<String> dealReport(int id,int status,HttpSession session){
        User currentUser = (User)session.getAttribute(Const.CURRENT_USER);
        if(currentUser == null){
            return ServerResponse.createByErrorMessage("用户未登录,请登录后在处理");
        }
        if(currentUser.getRoleType() != Role.ROLE_ADMIN){
            return ServerResponse.createByErrorMessage("该用户无权限处理");
        }
        return iReportService.dealReport(id,status);
    }
    
}

用户控制器

package com.houserss.controller;

import javax.servlet.http.HttpSession;

import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

import com.houserss.common.Const;
import com.houserss.common.Const.Role;
import com.houserss.common.ServerResponse;
import com.houserss.pojo.User;
import com.houserss.service.IUserService;
import com.houserss.service.impl.UserServiceImpl;
import com.houserss.util.MD5Util;
import com.houserss.util.TimeUtils;
import com.houserss.vo.DeleteHouseVo;
import com.houserss.vo.PageInfoVo;

/**
 * Created by admin
 */
@Controller
@RequestMapping("/user/")
public class UserController {
    @Autowired
    private IUserService iUserService;

    /**
     * 用户登录
     * @param username
     * @param password
     * @param session
     * @return
     */
    @RequestMapping(value = "login.do",method = RequestMethod.POST)
    @ResponseBody
    public ServerResponse<User> login(User user,String uvcode, HttpSession session){
        String code = (String)session.getAttribute("validationCode");
        if(StringUtils.isNotBlank(code)) {
            if(!code.equalsIgnoreCase(uvcode)) {
                return ServerResponse.createByErrorMessage("验证码不正确");
            }
        }
        ServerResponse<User> response = iUserService.login(user.getUsername(),user.getPassword());
        if(response.isSuccess()){
            session.setAttribute(Const.CURRENT_USER,response.getData());
        }
        return response;
    }

    @RequestMapping(value = "logout.do",method = RequestMethod.POST)
    @ResponseBody
    public ServerResponse<String> logout(HttpSession session){
        session.removeAttribute(Const.CURRENT_USER);
        return ServerResponse.createBySuccess();
    }

    // admin 8D223A2A35C5A05467F1FF10537C7915
    
    @RequestMapping(value = "register.do",method = RequestMethod.POST)
    @ResponseBody
    public ServerResponse<String> register(User user,HttpSession session){
        return iUserService.register(user);
    }

    @RequestMapping(value = "check_valid.do",method = RequestMethod.POST)
    @ResponseBody
    public ServerResponse<String> checkValid(String str,String type){
        return iUserService.checkValid(str,type);
    }

    @RequestMapping(value = "reset_password.do",method = RequestMethod.POST)
    @ResponseBody
    public ServerResponse<String> resetPassword(HttpSession session,String passwordOld,String passwordNew){
        User user = (User)session.getAttribute(Const.CURRENT_USER);
        if(user == null){
            return ServerResponse.createByErrorMessage("用户未登录");
        }
        return iUserService.resetPassword(passwordOld,passwordNew,user);
    }

    @RequestMapping(value = "update_information.do",method = RequestMethod.POST)
    @ResponseBody
    public ServerResponse<User> update_information(HttpSession session,User user){
        User currentUser = (User)session.getAttribute(Const.CURRENT_USER);
        if(currentUser == null){
            return ServerResponse.createByErrorMessage("用户未登录");
        }
        user.setId(currentUser.getId());
        return iUserService.updateInformation(currentUser, user);
    }
    
    @RequestMapping(value = "userList.do",method = RequestMethod.POST)
    @ResponseBody
    public ServerResponse<PageInfoVo<User>> get_AllUser(
            @RequestParam(value = "pageNum",defaultValue = "1")int pageNum,
            @RequestParam(value = "pageSize",defaultValue = "10") int pageSize,
            HttpSession session){
        User currentUser = (User)session.getAttribute(Const.CURRENT_USER);
        if(currentUser == null){
            return ServerResponse.createByErrorMessage("用户未登录");
        }
        if(currentUser.getRoleType() != Role.ROLE_ADMIN) {
            return ServerResponse.createByErrorMessage("该用户无权限访问");
        }
        return iUserService.getAllUser(pageNum,pageSize);
    }
    
    @RequestMapping(value = "sendResetPwdMail.do",method = RequestMethod.POST)
    @ResponseBody
    public ServerResponse<String> sendResetPwdMail(@RequestParam(required=true)String username,
            @RequestParam(required=true)String email,@RequestParam(required=true)String code,HttpSession session){
        String validationCode = (String)session.getAttribute("validationCode");
        if(StringUtils.isNotBlank(validationCode)) {
            if(!validationCode.equalsIgnoreCase(code)) {
                return ServerResponse.createByErrorMessage("验证码不正确");
            }
        }
        return iUserService.sendResetPwdMail(username,email);
    }

    @RequestMapping(value = "resetpassword.do",method = RequestMethod.POST)
    @ResponseBody
    public ServerResponse<String> resetPasswdByEmail(@RequestParam(required=true)String password,
            @RequestParam(required=true)String sign,@RequestParam(required=true)String userId,@RequestParam(required=true)String time){
        //  判断时间
        if((TimeUtils.currentSecond() -  Integer.valueOf(time)) > TimeUtils.DAY_SECONDS*2 ){
            return ServerResponse.createByErrorMessage("链接超时,请重新发邮件获取链接");
        }
        String signMD5 = MD5Util.MD5EncodeUtf8(""+userId + time + UserServiceImpl.key);
        if(!signMD5.equals(sign)){
            return ServerResponse.createByErrorMessage("sign错误。");
        }
        User user = new User();
        user.setId(Integer.valueOf(userId));
        user.setPassword(MD5Util.MD5EncodeUtf8(password));
        
        return iUserService.resetPasswd(user);
    }
    
    @RequestMapping(value = "getDeleteHouseMessge.do",method = RequestMethod.POST)
    @ResponseBody
    public ServerResponse<PageInfoVo<DeleteHouseVo>> getDeleteHouseMessge(
            @RequestParam(value = "pageNum",defaultValue = "1")int pageNum,
            @RequestParam(value = "pageSize",defaultValue = "10") int pageSize,
    		HttpSession session){
    	User currentUser = (User)session.getAttribute(Const.CURRENT_USER);
        if(currentUser == null){
            return ServerResponse.createByErrorMessage("用户未登录,请登录后在处理");
        }
        return iUserService.getDeleteHouseMessge(pageNum,pageSize,currentUser);
    }
    
    @RequestMapping(value = "deleteMessage.do",method = RequestMethod.POST)
    @ResponseBody
    public ServerResponse<String> deleteMessage(int id,
    		HttpSession session){
    	User currentUser = (User)session.getAttribute(Const.CURRENT_USER);
        if(currentUser == null){
            return ServerResponse.createByErrorMessage("用户未登录,请登录后在处理");
        }
        return iUserService.deleteMessage(id,currentUser);
    }
    
    
    // backend
    
    /**
     * @param userId
     * @param status  0正常  1封禁
     * @param session
     * @return
     */
    @RequestMapping(value = "changeUserStatus.do",method = RequestMethod.POST)
    @ResponseBody
    public ServerResponse<String> ban(int userId,int status,HttpSession session){
    	 User currentUser = (User)session.getAttribute(Const.CURRENT_USER);
         if(currentUser == null){
             return ServerResponse.createByErrorMessage("用户未登录,请登录后在处理");
         }
         if(currentUser.getRoleType() != Role.ROLE_ADMIN){
             return ServerResponse.createByErrorMessage("该用户无权限处理");
         }
    	return  iUserService.changeUserStatus(userId,status);
    }
    
    
    
    
    
}

房间service

package com.houserss.service;

import org.springframework.web.multipart.MultipartFile;

import com.houserss.common.ServerResponse;
import com.houserss.pojo.DeleteHouse;
import com.houserss.pojo.House;
import com.houserss.pojo.User;
import com.houserss.vo.HouseVo;
import com.houserss.vo.PageInfoVo;

public interface IHouseService {
    ServerResponse<String> publish(User user,House house,MultipartFile[] images,String[] deletes,String path);
    
    ServerResponse<PageInfoVo<HouseVo>> houseList(int pageNum,int pageSize,String sellType,String zone,String houseType,String minPrice,String maxPrice,
            String orientation,String minArea,String maxArea,String address,Integer decorateType,int userId,int orderType,Integer status,Integer isHide);
    
    ServerResponse<String> delete(User user,int houseId);
    
    ServerResponse<HouseVo> detailHouse(int houseId);
    
    ServerResponse<String> verified(int houseId,int status,String reason);
    
    ServerResponse<String> againPublishHouse(House houes);
    
    ServerResponse<String> setHideStatus(int houesId,int isHide);
    
}

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

 


版权声明:本文为hanyunlong1989原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。