基于javaweb的SpringBoot房屋租赁系统(java+springboot+maven+ssm+jsp+jquery+mysql)

运行环境

Java≥8、MySQL≥5.7

开发工具

eclipse/idea/myeclipse/sts等均可配置运行

适用

课程设计,大作业,毕业设计,项目练习,学习演示等

功能说明

211424070701

221424070701

231424070701

241424070701

251424070701

261424070701

271424070701

291424070701

301424070701

基于javaweb的SpringBoot房屋租赁系统(java+springboot+maven+ssm+jsp+jquery+mysql)

项目介绍

基于springboot房屋出租系统 有前台和后台

登陆角色:用户+房东+管理员

前台功能模块:登陆+注册+整租+合租+租房+新闻资讯+用户反馈+搜索+忘记密码+联系房东等

后台功能模块: 用户端:订单管理+个人信息+我的家+我的收藏+密码修改+我的反馈 管理员端:房子管理+订单管理+新闻资讯管理+反馈管理+用户管理+个人信息+我的收藏+密码修改 房东端:房子管理+订单管理+个人信息+我的收藏+密码修改+我的反馈

环境需要

1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。 2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA; 3.硬件环境:windows 7/8/10 1G内存以上;或者 Mac OS; 4.数据库:MySql 5.7/8.0版本均可; 5.是否Maven项目:是;

技术栈

后端:SpringBoot(Spring+SpringMVC+Mybatis)

前端: JSP、css、JavaScript、JQuery、Ajax

使用说明

项目运行: 1. 使用Navicat或者其它工具,在mysql中创建对应sql文件名称的数据库,并导入项目的sql文件; 2. 使用IDEA/Eclipse/MyEclipse导入项目,导入成功后请执行maven clean;maven install命令,然后运行; 3. 将项目中application.yml配置文件中的数据库配置改为自己的配置; 4. 运行项目,控制台提示运行成功后再去运行前端项目; 5. 管理员用户名密码:admin/admin 普通用户名密码:user/123456

文档介绍(课题背景与意义、系统实现功能、课题研究现状、系统相关技术、java技术、B/S架构、Mysql介绍、Mysql环境配置、Springboot框架、系统需求分析、系统功能、可行性研究、经济可行性、技术可行性、运行可行性、事件可行性、系统业务过程分析、系统业务过程分析、系统用例图、系统设计、数据库设计、系统整体设计、系统设计思想、系统流程图、系统详情设计、系统功能模块、系统功能模块、管理员功能模块):

房屋租赁系统-首页展示:

最新整租咨询展示:

 租房列表展示:

旅游景点展示页面:

后台管理展示页:

后台订单管理展示页:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
    model.addAttribute("house", house);
return "admin/house-publish";
}

/*
* 发布房屋提交
* */
@RequestMapping("/publish/submit")
@ResponseBody
public JsonResult publishSubmit(House house, @RequestParam("key") String key, HttpSession session) {
try {
if (house.getId() == null) { //如果为空,新增;
house.setCreateTime(new Date());
house.setUserId(getLoginUserId());
} else { //修改
House queryHouse = houseService.get(house.getId());
if (queryHouse == null) {
return JsonResult.error("发布失败,未找到此房屋");
}
//如果无管理员权限编辑别人的房屋,跳转到403页面
if (!loginUserIsAdmin() && Objects.equals(house.getUserId(), getLoginUserId())) {
return JsonResult.error("发布失败,无法编辑他人房屋信息。");
}
}
house.setStatus(HouseStatusEnum.NOT_CHECK.getValue());
//获取轮播图
String sessionKey = Constant.SESSION_IMG_PREFIX + key;
List<String> imgList = (List<String>) session.getAttribute(sessionKey);
if (imgList != null && imgList.size() > 0) {
//设置轮播图,转换成JSON格式存储
house.setSlideUrl(JSON.toJSONString(imgList));
//将第一个图放到缩略图中
house.setThumbnailUrl(imgList.get(0));
}
houseService.insertOrUpdate(house);
} catch (Exception e) {
return JsonResult.error("发布失败,请填写完整信息");
}
return JsonResult.success("发布成功", house.getId());
}


/*
* 下架房屋提交
* */
@RequestMapping("/down")
@ResponseBody
public JsonResult downHouse(@RequestParam("id") Long id) {
try {
House house = houseService.get(id);
if (house == null) {
return JsonResult.error("下架失败,没有选择的房屋。");
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
        //仅限管理员有权限审核
if (!loginUserIsAdmin()) {
return JsonResult.error("您无权限审核房屋信息");
}
if (!Objects.equals(house.getStatus(), HouseStatusEnum.NOT_CHECK.getValue())) {
return JsonResult.error("房屋状态不为待审核状态,无法审核。");
}
house.setStatus(HouseStatusEnum.NOT_RENT.getValue());
houseService.update(house);
} catch (Exception e) {
return JsonResult.error("审核房屋信息失败,请重试。");
}

return JsonResult.success("审核成功!");
}


/*
* 房屋审核拒绝
* */
@RequestMapping("/checkReject")
@ResponseBody
public JsonResult checkRejectHouse(@RequestParam("id") Long id) {
try {
House house = houseService.get(id);
if (house == null) {
return JsonResult.error("审核失败,您未选中需要审核的房屋。");
}
//仅限管理员有权限审核
if (!loginUserIsAdmin()) {
return JsonResult.error("您无权限审核房屋信息");
}
if (!Objects.equals(house.getStatus(), HouseStatusEnum.NOT_CHECK.getValue())) {
return JsonResult.error("房屋状态不为待审核状态,无法审核。");
}
house.setStatus(HouseStatusEnum.CHECK_REJECT.getValue());
houseService.update(house);
} catch (Exception e) {
return JsonResult.error("审核房屋信息失败,请重试。");
}

return JsonResult.success("审核成功!");
}


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
        model.addAttribute("pageInfo", feedbackPage);
model.addAttribute("pagePrefix", "/news?");

List<Order> newestOrder = orderService.newestOrderInfo();
List<News> newestNews = newsService.newestNews();
String userCount = userService.findAllUserNums();
String ownerCount = userService.findOwnerNums();
String userFeedbackCount = userService.userFeedbackCount();
String orderNum = orderService.orderNum();
String houseCount = houseService.houseCount();

model.addAttribute("userCount", userCount);
model.addAttribute("ownerCount", ownerCount);
model.addAttribute("houseCount", houseCount);
model.addAttribute("userFeedbackCount", userFeedbackCount);
model.addAttribute("orderNum", orderNum);
model.addAttribute("newestOrder", newestOrder);
model.addAttribute("newestNews", newestNews);

return "admin/admin-control";
}

}



/*
* 注册控制器
* */
@Controller
@RequestMapping("/register")
public class RegisterController extends BaseController {
@Autowired
private UserService userService;

/*
* 注册提交
* */
@RequestMapping(value = "/submit", method = RequestMethod.POST)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36


@Controller
@RequestMapping("/admin/giftcard")
public class GiftcardController extends BaseController {
@Autowired
private UserService userService;

@Autowired
private GiftcardService giftcardService;

/*
* 充值兑换余额到账户
* */
@RequestMapping("/redeem")
@ResponseBody
public JsonResult redeem(@RequestParam("series") String series) {
if(series.equals("")){
return JsonResult.error("请填写礼品卡代码或PIN!");
}
User user = userService.get(getLoginUserId());
if (user == null) {
return JsonResult.error("您还未登录!");
}
//判断序列号 是否存在、有效
Double redeem_value = giftcardService.checkValidGiftcard(series, GiftcardStatusEnum.NORMAL.getValue());
if (Objects.equals(redeem_value, null) || Objects.equals(redeem_value, "")) {
return JsonResult.error("兑换码不存在或已被使用或已到期");
}
Date date = new Date();
//进行兑换,将礼品卡设置为 status = -1已使用并且,将使用者设置为当前用户
giftcardService.redeemGiftcard(series, GiftcardStatusEnum.USED.getValue(), date, user.getUserName());
Double currentBalance = giftcardService.currentBalance(user.getUserName());
String afterBalance = String.format("%.2f", redeem_value + currentBalance);
giftcardService.addToUserBalance(afterBalance, user.getUserName());
return JsonResult.success("兑换成功!礼品卡为您兑换了" + redeem_value + "元");
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
            if (news.getId() == null) {  //如果新闻ID为空的话则新增ID;
news.setCreateTime(new Date());
} else {
News queryNews = newsService.get(news.getId());
if (queryNews == null) {
return JsonResult.error("发布失败,未找到此新闻资讯ID");
}
}
//提取摘要
int postSummary = 300;
String summaryText = HtmlUtil.cleanHtmlTag(news.getContent());
if (summaryText.length() > postSummary) {
String summary = summaryText.substring(0, postSummary);
news.setSummary(summary);
} else {
news.setSummary(summaryText);
}

newsService.insertOrUpdate(news);
} catch (Exception e) {
return JsonResult.error("发布失败,请将内容补充完整!");
}

return JsonResult.success("发布成功", news.getId());
}


/*
* 删除新闻资讯
* */
@RequestMapping("/delete")
@ResponseBody
public JsonResult deleteNews(@RequestParam("id") Long id) {
try {
News news = newsService.get(id);
if (news == null) {
return JsonResult.error("删除失败,未找到新闻资讯ID。");
}
newsService.delete(id);
} catch (Exception e) {
return JsonResult.error("删除新闻资讯信息失败,请重试。");
}

return JsonResult.success("删除成功!");
}

}


项目链接:
https://javayms.github.io?id=231524180701201ie
https://javayms.pages.dev?id=231524180701201ie