源码获取:俺的博客首页 "资源" 里下载!
项目介绍
该项目分为前后台,分为普通用户与管理员两种角色。
前台主要功能包括:
普通用户的注册、登录,房屋列表展示,租房,我的订单、用户中心等功能模块;
后台主要功能包括:
系统设置:菜单管理、角色管理、修改密码;
用户管理:用户列表;
系统日志:日志列表;
房屋管理:房屋列表;
租赁管理:租赁列表;
环境需要
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+EasyUI+Echarts+jQuery
使用说明
1. 使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件;
2. 使用IDEA/Eclipse/MyEclipse导入项目,Eclipse/MyEclipse导入时,若为maven项目请选择maven;
若为maven项目,导入成功后请执行maven clean;maven install命令,然后运行;
3. 将项目中db.properties配置文件中的数据库配置改为自己的配置;
4. 运行项目,输入localhost:8080即可
扫描二维码关注公众号,回复:
14235724 查看本文章

后台管理员控制层:
@Controller
@RequestMapping("/admin")
public class Adminfunctioncontroller {
@Resource
private RentwithdrawnService rentwithdrawnService;
@Resource
private LeaseinformationService leaseinformationService;
@Resource
private CheckoutapplicationService checkoutapplicationService;
@Resource
private MydailylifeService mydailylifeService;
@Resource
private RentcollectionService rentcollectionService;
@Resource
private FaultService faultService;
@Resource
private UserlistService userlistService;
@Resource
private LeaseimgService leaseimgService;
@Resource
private HeadPortraitImgService headPortraitImgService;
/**
* 注销
*/
@RequestMapping("/admincancel")
public String cancellation(HttpServletRequest request) {
HttpSession session = request.getSession();
session.removeAttribute("admin");
System.out.println("注销成功");
return "official";
}
@RequestMapping("/details")
public ModelAndView listCategory(@RequestParam int pn) {
ModelAndView mav = new ModelAndView("rentingdel");
// 设置分页传输
PageHelper.startPage(pn, 10);
// 查询所有数据
List<rentwithdrawn> list = rentwithdrawnService.selectRwState("已退租");
// 使用PageInFo封装查询结果
PageInfo<rentwithdrawn> pageInfo = new PageInfo<rentwithdrawn>(list, 5);
// 放入转发参数
mav.addObject("cs", pageInfo);
return mav;
}
@RequestMapping("/delect")
public ModelAndView delect(@RequestParam int id) {
ModelAndView mav = new ModelAndView("rentingdel");
rentwithdrawnService.deleteByPrimaryKey(id);
return mav;
}
@RequestMapping("/rentinglist")
public ModelAndView listHouseState(@RequestParam int pn) {
ModelAndView mav = new ModelAndView("rentinglist");
// 设置分页传输
PageHelper.startPage(pn, 10);
// 查询所有数据
List<leaseinformation> list = leaseinformationService.selecthousteaseWith("出租中");
// 使用PageInFo封装查询结果
PageInfo<leaseinformation> pageInfo = new PageInfo<leaseinformation>(list, 5);
// 放入转发参数
mav.addObject("cs", pageInfo);
return mav;
}
@RequestMapping("/delectcontract")
public ModelAndView delectcontract(@RequestParam int id) {
ModelAndView mav = new ModelAndView("rentinglist");
leaseinformationService.updacontract(id);
return mav;
}
/**
* 看房申请列表
*/
@RequestMapping("/houseapply")
public ModelAndView kanfansqing(@RequestParam int pn) {
ModelAndView mav = new ModelAndView("houseapply");
// 设置分页传输
PageHelper.startPage(pn, 10);
// 查询所有数据
List<checkoutapplication> list = checkoutapplicationService.selectCoaState();
// 使用PageInFo封装查询结果
PageInfo<checkoutapplication> pageInfo = new PageInfo<checkoutapplication>(list, 5);
// 放入转发参数
mav.addObject("cs", pageInfo);
return mav;
}
/**
* 预约看房申请
*/
@RequestMapping("/tonyizp")
public ModelAndView tonyizp(@RequestParam int id, String housecall, String name) throws ParseException {
ModelAndView mav = new ModelAndView("houseapply");
checkoutapplicationService.xgaiCoaState("已同意", id);
leaseinformation house = leaseinformationService.selectHouseCall(housecall).get(0);
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");// 设置日期格式
Calendar c = Calendar.getInstance();
c.add(Calendar.DATE, 30);// 计算30天后的时间
String t1 = df.format(new Date());
String t2 = df.format(c.getTime());
// 格式转换date格式
Date date1 = df.parse(t1);
Date date2 = df.parse(t2);
house.setHousestartingdate(date1);
house.setHouseclosingdate(date2);
house.setHousestate("出租中");
house.setUsername(name);
leaseinformationService.updateByPrimaryKey(house);
return mav;
}
@RequestMapping("/jujzp")
public ModelAndView jujzp(@RequestParam int id) {
ModelAndView mav = new ModelAndView("houseapply");
checkoutapplicationService.xgaiCoaState("已拒绝", id);
return mav;
}
/**
* 退房申请
*/
@RequestMapping("/tzshenqing")
public ModelAndView tzshenqing(@RequestParam int pn) {
ModelAndView mav = new ModelAndView("housedel");
// 设置分页传输
PageHelper.startPage(pn, 10);
// 查询所有数据
List<checkoutapplication> list = checkoutapplicationService.selectCoaState1();
// 使用PageInFo封装查询结果
PageInfo<checkoutapplication> pageInfo = new PageInfo<checkoutapplication>(list, 5);
// 放入转发参数
mav.addObject("cs", pageInfo);
return mav;
}
/**
* 删除退房记录
*/
@RequestMapping("/delecttzsq")
public ModelAndView delecttzsq(@RequestParam int id) {
ModelAndView mav = new ModelAndView("housedel");
checkoutapplicationService.deleteByPrimaryKey(id);
return mav;
}
/**
* 同意退房
*/
@RequestMapping("/checkoutmvc")
public ModelAndView checkoutmvc(@RequestParam int id,String housecall) {
ModelAndView mav = new ModelAndView("housedel");
String news=checkoutapplicationService.updateState("已同意", id);
if(news.equals("同意退租成功!")) {
System.out.println(news);
System.out.println(leaseinformationService.updateCancelForeignKey(housecall));
}
return mav;
}
/**
* 拒绝退房
*/
@RequestMapping("/refusemvc")
public ModelAndView refusemvc(@RequestParam int id) {
ModelAndView mav = new ModelAndView("housedel");
System.out.println(checkoutapplicationService.updateState("已拒绝", id));
return mav;
}
/**
* 分页查找所有用户
*/
@RequestMapping("/pagingselectuser")
public String pagingselectuser(Model model, @RequestParam(value = "pn", defaultValue = "1") Integer pn,
@RequestParam(required = false, defaultValue = "6") Integer pageSize) {
PageHelper.startPage(pn, 10);
List<userlist> userlist = userlistService.selectAll();
PageInfo<userlist> p = new PageInfo<userlist>(userlist, 3);
model.addAttribute("p", p);
return "account";
}
/**
* 删除用户信息
*/
@RequestMapping("/deletuser")
public String deletuser(int id,String username,HttpServletRequest request) {
userlistService.updateJointTabledelete(username);
headPortraitImgService.deletuserimg(userlistService.selectUserId(id).getUsercall());
userlistService.deleteByPrimaryKey(id);
return "redirect:pagingselectuser.do";
}
/**
* 添加房源
*
* @throws IOException
* @throws IllegalStateException
*/
@RequestMapping("/addhouse")
public String addhouse(String housecall, String address, String area, String rent, String housetype, String[] state,
@RequestParam(value = "file", required = false) MultipartFile file, HttpServletRequest request)
throws IllegalStateException, IOException {
if (housecall.equals("") || address.equals("") || area.equals("") || rent.equals("") || state.equals("")
|| housetype.equals("")) {
request.setAttribute("erro", "输入房源信息不能缺少任意一项!");
return "housingadd";
}
List<leaseinformation> list = leaseinformationService.queryAll();
for (leaseinformation leaseinformation : list) {
if (housecall.equals(leaseinformation.getHousecall())) {
request.setAttribute("erro", "该房源编号已存在");
return "housingadd";
}
}
String path = "";
String imgname = "";
if (!file.isEmpty()) {
// 生成uuid作为文件名称
String uuid = UUID.randomUUID().toString().replaceAll("-", "");
// 获得文件类型(可以判断如果不是图片,禁止上传)
String contentType = file.getContentType();
// 获得文件后缀名称
String imageName = contentType.substring(contentType.indexOf("/") + 1);
path = "C://Users/Rain/Desktop/ssm_leaseOfHouses/WebContent/leaseimg/" + uuid + "." + imageName;
file.transferTo(new File(path));
imgname = uuid + "." + imageName;
}
leaseimg img = new leaseimg();
img.setImgname(address);
img.setImgroute(imgname);
leaseimgService.insert(img);
int id = leaseimgService.selectAll().get(leaseimgService.selectAll().size() - 1).getId();
leaseinformation house = new leaseinformation();
house.setHouseaddress(address);
house.setHousesize(Double.valueOf(area));
house.setHousemoney(rent);
house.setHousestate(state[0]);
house.setHousecall(housecall);
//获取当前时间和一个月后的时间
Date date = new Date();
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
String HouseStartingDate=sdf.format(date);
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.DATE, 30);
String HouseClosingDate=sdf.format(cal.getTime());
house.setHousestartingdate(date);
house.setHouseclosingdate(cal.getTime());
house.setHousestartingdatetemp(HouseStartingDate);
house.setHouseclosingdatetemp(HouseClosingDate);
house.setId(id);
house.setHousetype(housetype);
house.setHouserecommend("未设置");
leaseinformationService.addHouse(house);
request.setAttribute("sessce", "添加成功");
return "housingadd";
}
/**
* 分页展示房源信息
*/
@RequestMapping("/pagingselecthouse")
public String pagingselecthouse(Model model, @RequestParam(value = "pn", defaultValue = "1") Integer pn,
@RequestParam(required = false, defaultValue = "6") Integer pageSize) {
PageHelper.startPage(pn, 10);
List<leaseinformation> leaseinformation = leaseinformationService.queryAll();
PageInfo<leaseinformation> p = new PageInfo<leaseinformation>(leaseinformation, 3);
model.addAttribute("p", p);
return "housinglist";
}
/**
* 获取修改房源信息
*/
@RequestMapping("/getupdatehouse")
public String getupdatehouse(int houseid, HttpServletRequest request) {
List<leaseinformation> house = leaseinformationService.queryID(houseid);
request.setAttribute("uphouse", house);
return "houseupdate";
}
/**
* 修改房源信息
*/
@RequestMapping("/updatehouse")
public String updatehouse(Integer houseid, String housetype, String address, String area, String rent, String state,
HttpServletRequest request) {
leaseinformation house = leaseinformationService.queryID(houseid).get(0);
request.removeAttribute("uphouse");
house.setHouseaddress(address);
house.setHousemoney(rent);
house.setHousetype(housetype);
house.setHousesize(Double.valueOf(area));
house.setHousestate(state);
house.setHouseid(houseid);
leaseinformationService.updateByPrimaryKey(house);
request.setAttribute("sessce", "修改成功");
request.setAttribute("newhouse", house);
return "houseupdate";
}
/**
* 删除房源信息
*/
@RequestMapping("/delethouse")
public String delethouse(int houseid, HttpServletRequest request) {
if (houseid >= 0) {
int id = leaseinformationService.queryID(houseid).get(0).getId();
leaseinformationService.deleteByPrimaryKey(houseid);
leaseimgService.deleteByPrimaryKey(id);
}
return "redirect:pagingselecthouse.do";
}
/*
* 推荐房屋列表
*/
@RequestMapping("/recommendlist")
public String recommendlist(Model model, @RequestParam(value = "pn", defaultValue = "1") Integer pn,
@RequestParam(required = false, defaultValue = "6") Integer pageSize) {
PageHelper.startPage(pn, 10);
List<leaseinformation> leaseinformation = leaseinformationService.selectAllLeasable();
PageInfo<leaseinformation> p = new PageInfo<leaseinformation>(leaseinformation, 3);
model.addAttribute("p", p);
return "recommendhouse";
}
/**
* 修改推荐信息
*/
@RequestMapping("/updaterecommend")
public String updatehouse(Integer houseid) {
leaseinformation house = leaseinformationService.queryID(houseid).get(0);
if (house.getHouserecommend().equals("未推荐")) {
house.setHouserecommend("已推荐");
} else {
house.setHouserecommend("未推荐");
}
leaseinformationService.updateByPrimaryKey(house);
return "redirect:recommendlist.do?";
}
/**
* 分页查询日程信息
*/
@RequestMapping("/schedulelist")
public String mydailylifelist(@RequestParam(value = "pn", defaultValue = "1") Integer pn, Model model) {
// 引用PageHelper分页插件
PageHelper.startPage(pn, 10);
List<mydailylife> mydailylifes = mydailylifeService.selectAll();
PageInfo<mydailylife> page = new PageInfo<mydailylife>(mydailylifes, 3);
model.addAttribute("p", page);
return "schedulelist";
}
/**
* 添加日程
*/
@RequestMapping("/addmydailylife")
public String mydailylifeadd(mydailylife mydailylife) {
mydailylifeService.insert(mydailylife);
return "redirect:/admin/schedulelist.do";
}
/**
* 修改日程
*/
@RequestMapping("/updatemydailylife")
public String mydailylifeupdate1(Integer id, HttpServletRequest request) {
mydailylife mydailylife = mydailylifeService.selectByPrimaryKey(id);
request.setAttribute("mydailylife", mydailylife);
return "scheduleupdate";
}
@RequestMapping("/toupdate")
public String mydailylifeupdate2(mydailylife mydailylife) {
mydailylifeService.updateByPrimaryKey(mydailylife);
return "redirect:/admin/schedulelist.do";
}
/**
* 删除日程
*/
@RequestMapping("/delmydailylife")
public String mydailylifedel(Integer id) {
mydailylifeService.deleteByPrimaryKey(id);
return "redirect:/admin/schedulelist.do";
}
// 报障
/**
* 查询待处理报障
*/
@RequestMapping("/Adminselectrepairwait")
public String selectrepairwait(String state, @RequestParam(value = "pn", defaultValue = "1") Integer pn,
Model model) {
state = "未处理";
// 引用PageHelper分页插件
PageHelper.startPage(pn, 10);
List<fault> faultlist = faultService.AdminSelectStateAll(state);
PageInfo<fault> page = new PageInfo<fault>(faultlist, 3);
model.addAttribute("p", page);
return "repairwait";
}
/**
* 已完成全部报障
*/
@RequestMapping("/Adminselectrepairdone")
public String selectrepairdone(String state, @RequestParam(value = "pn", defaultValue = "1") Integer pn,
Model model) {
state = "已处理";
// 引用PageHelper分页插件
PageHelper.startPage(pn, 10);
List<fault> faultdone = faultService.AdminSelectStateAll(state);
PageInfo<fault> page = new PageInfo<fault>(faultdone, 3);
model.addAttribute("p", page);
return "repairdone";
}
/**
* 报障状态修改
*/
@RequestMapping("/adminrepairwait")
public String updaterepairwait(Integer id) {
fault fault = faultService.selectByPrimaryKey(id);
String fhouseid = fault.getFhouseid();
String fhouseaddress = fault.getFhouseaddress();
Double fprice = fault.getFprice();
Date fdate = fault.getFdate();
String fcontent = fault.getFcontent();
String fusername = fault.getFusername();
String fuserid = fault.getFuserid();
String fuserphone = fault.getFuserphone();
String fstate = "已处理";
fault f = new fault(fhouseid, fhouseaddress, fprice, fdate, fcontent, fusername, fuserid, fuserphone, fstate,
id);
faultService.updateByPrimaryKey(f);
return "redirect:/admin/Adminselectrepairwait.do";
}
/**
* 报障删除
*/
@RequestMapping("/adminrepairdone")
public String delrepair(Integer id) {
faultService.deleteByPrimaryKey(id);
return "redirect:/admin/Adminselectrepairdone.do";
}
/**
* 搜索报障
*/
@RequestMapping("/repairselect")
public String repairselect(QueryVo vo, @RequestParam(value = "pn", defaultValue = "1") Integer pn, Model model) {
// 引用PageHelper分页插件
PageHelper.startPage(pn, 10);
List<fault> faultdone = faultService.repairselect(vo);
for (fault temp : faultdone) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String date = sdf.format(temp.getFdate());
temp.setFdatetemp(date);
}
PageInfo<fault> page = new PageInfo<fault>(faultdone, 3);
model.addAttribute("p", page);
model.addAttribute("vo", vo);
return "repairdone";
}
/**
* 我要收租
*/
@RequestMapping("/adminrentshou")
public String rentshou(@RequestParam(value = "pn", defaultValue = "1") Integer pn, Model model) {
// 引用PageHelper分页插件
PageHelper.startPage(pn, 10);
List<userlist> userlists = userlistService.rentSelectAll();
PageInfo<userlist> page = new PageInfo<userlist>(userlists, 3);
model.addAttribute("rent", page);
return "rentshou";
}
/**
* 获取收租信息
*/
@RequestMapping("/adminrentselect")
public String rentadd(String housecall, Model model) {
userlist userlist = userlistService.selectUserCallWith(housecall);
model.addAttribute("addrent", userlist);
return "rentadd";
}
/**
* 添加代缴租金
*/
@RequestMapping("/adminrentadd")
public String rentaddwait(rentcollection rentcollection) {
rentcollectionService.insert(rentcollection);
return "redirect:/admin/adminrentshou.do";
}
/**
* 代缴租金
*/
@RequestMapping("/adminrentwait")
public String rentwait(String rcstate, @RequestParam(value = "pn", defaultValue = "1") Integer pn, Model model) {
rcstate = "未缴纳";
// 引用PageHelper分页插件
PageHelper.startPage(pn, 10);
List<rentcollection> rentlists = rentcollectionService.selectPaidStateAll(rcstate);
PageInfo<rentcollection> page = new PageInfo<rentcollection>(rentlists, 3);
model.addAttribute("rent", page);
return "rentwait";
}
/**
* 删除租金缴纳记录
*/
@RequestMapping("/admindelrent")
public String delrent(Integer id) {
rentcollectionService.deleteByPrimaryKey(id);
return "redirect:/admin/adminselectPaidAll.do";
}
/**
* 搜索查询
*/
@RequestMapping("/adminselectPaidAll")
public String adminselectPaidAll(QueryVo vo, @RequestParam(value = "pn", defaultValue = "1") Integer pn,
Model model) {
// 引用PageHelper分页插件
PageHelper.startPage(pn, 10);
List<rentcollection> rentlists = rentcollectionService.selectPaidAll(vo);
for (rentcollection temp : rentlists) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String date = sdf.format(temp.getRcdate());
temp.setRcdatetemp(date);
if(temp.getRcpaiddate()!=null) {
String Rcpaiddate = sdf.format(temp.getRcpaiddate());
temp.setRcpaiddatetemp(Rcpaiddate);
}
}
PageInfo<rentcollection> page = new PageInfo<rentcollection>(rentlists, 3);
model.addAttribute("rent", page);
model.addAttribute("vo", vo);
return "rentdone";
}
/**
* 查看合同
*/
@RequestMapping("/viewcontractadmin")
public ModelAndView viewcontractadmin(String username, String userid, String houseaddress,
String housestartingdatetemp, String houseclosingdatetemp, String housemoney, String userphone,
String houseid, HttpServletRequest request, HttpSession session) {
ModelAndView mav = new ModelAndView("rentinglist");
String arraytemp[] = { username, userid, houseaddress, housestartingdatetemp, houseclosingdatetemp, housemoney,
userphone, houseid };
System.out.println(Arrays.toString(arraytemp));
String temp = arraytemp[7] + "pdf.pdf";
File filetemp = new File("C://Users/Rain/Desktop/ssm_leaseOfHouses/WebContent/contract/pdf/" + temp);
if (!filetemp.exists()) {
System.out.println(new DocumentConversion().DocumentGeneration(arraytemp));
new DocumentConversion().PdfGeneration(arraytemp[7]);
filetemp = new File("C://Users/Rain/Desktop/ssm_leaseOfHouses/WebContent/contract/pdf/" + temp);
}
String pdf = filetemp.getName();
// 放入转发参数
mav.addObject("pdftemp", pdf);
return mav;
}
}
房屋信息控制器:
/**
* 房屋信息控制器
*/
@Controller
@RequestMapping("/leaseinformationmvc")
public class LeaseinformationController {
@Autowired
LeaseinformationService leaseinformationService;
@RequestMapping("/details")
public ModelAndView listCategory(@RequestParam int id){
ModelAndView mav = new ModelAndView("details");
List<leaseinformation> cs= leaseinformationService.allANDimg1(id);
for (leaseinformation leaseinformation : cs) {
System.out.println(leaseinformation.getLeaseimg().getImgroute());
}
// 放入转发参数
mav.addObject("cs", cs);
return mav;
}
}
支付管理控制层:
@Controller
@RequestMapping("/alipaymvc")
public class PayController {
@Resource
private RentcollectionService rentcollectionService;
@Resource
private HeadPortraitImgService headPortraitImgService;
/**
* 回调并缴纳租金
*/
@RequestMapping(value = "/returnUrl", method = RequestMethod.GET)
public ModelAndView returnUrl(HttpServletRequest request, HttpServletResponse response,HttpSession session) throws UnsupportedEncodingException, AlipayApiException {
session.setAttribute("user", AlipayConfig.usercall);
headportraitimg headportraitimg = headPortraitImgService.selectheadportrait(AlipayConfig.usercall);
if (headportraitimg.getHeadportraitimgaddress() != null) {
session.setAttribute("headportraitimg", headportraitimg.getHeadportraitimgaddress());
}
ModelAndView mav = new ModelAndView("redirect:/jsp/personacenter.jsp");
// 获取支付宝GET过来反馈信息
Map<String, String> params = new HashMap<String, String>();
Map<String, String[]> requestParams = request.getParameterMap();
for (Iterator<String> iter = requestParams.keySet().iterator(); iter.hasNext();) {
String name = (String) iter.next();
String[] values = (String[]) requestParams.get(name);
String valueStr = "";
for (int i = 0; i < values.length; i++) {
valueStr = (i == values.length - 1) ? valueStr + values[i] : valueStr + values[i] + ",";
}
// 乱码解决,这段代码在出现乱码时使用
valueStr = new String(valueStr.getBytes("utf-8"), "utf-8");
params.put(name, valueStr);
}
System.out.println(params);//查看参数都有哪些
boolean signVerified = AlipaySignature.rsaCheckV1(params, AlipayConfig.alipay_public_key, AlipayConfig.charset, AlipayConfig.sign_type); // 调用SDK验证签名
//验证签名通过
if(signVerified){
// 商户订单号
String out_trade_no = new String(request.getParameter("out_trade_no").getBytes("ISO-8859-1"), "UTF-8");
// 支付宝交易号
String trade_no = new String(request.getParameter("trade_no").getBytes("ISO-8859-1"), "UTF-8");
// 付款金额
String total_amount = new String(request.getParameter("total_amount").getBytes("ISO-8859-1"), "UTF-8");
System.out.println("商户订单号="+out_trade_no);
System.out.println("支付宝交易号="+trade_no);
System.out.println("付款金额="+total_amount);
/**
* 缴纳租金
*/
Warning news = rentcollectionService.updateState(Integer.parseInt(AlipayConfig.rcid));
System.out.println(news.getWarningContent());
}else{
mav.addObject("news", new Warning(2, "支付失败!"));
}
return mav;
}
}
源码获取:俺的博客首页 "资源" 里下载!