作者主页:夜未央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