博主主页:猫头鹰源码
博主简介:Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万+、专注Java技术领域和毕业设计项目实战
主要内容:毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询
文末联系获取
该系统创作于2022年5月,经过详细的数据库设计。基于springboot技术,数据层为MyBatis,mysql数据库,页面采用html,具有完整的业务逻辑,适合话题:房屋租赁、房屋、酒店、民宿等,项目具有租赁的完整流程。
- 登录注册功能,分为三种用户权限(不能注册为管理员)
- 租户、房东、管理员
- 租户页面:能够管理个人信息、查看房源(支持条件查找)、查看租房信息和租金信息(不用做出支付功能,有个表格就行)
- 房东页面:能够管理个人信息、发布房源、修改房源状态(“已签”、“洽谈中”、“已预订”)、管理租金(租客代缴租金、租客已缴租金)
- 租户和房东都有一个我要反馈功能,反馈给管理员(可做可不做)
- 管理员:用户管理(修改用户账号信息和用户权限)、房源管理、查看反馈、简单的统计报表查看
- 可视界面不要求过分复杂,简洁明了即可
后端:springBoot、mybatis
前端:bootstrap、js、css等,html页面
开发工具:idea
数据库:mysql 5.7
JDK版本:jdk1.8
下面是用户首页,展示最新的房屋信息
下面是房屋列表,分页展示,也可以筛选
房源详情,有详细的介绍
下面是后台登录,管理员和房东可以登录
管理员首页
管理员对房源的管理,不能添加,由房东添加房源
管理员对房东维护
管理员查看统计信息
房东新增房源信息,可以维护基本信息以及图片
- /**进入列表页面*/
- @GetMapping("/feedback")
- public String userIframe(){
- return "FeedbackList";
- }
-
- /**列表数据*/
- @GetMapping("/list")
- @ResponseBody
- public PageResultVo findFeedback(Feedback feedback, Integer limit, Integer page, HttpSession session){
- String type = (String)session.getAttribute("type");
- if(type.equals("02")){
- Manage manage = (Manage)session.getAttribute("userInfo");
- feedback.setType("01");
- feedback.setHmid(String.valueOf(manage.getId()));
- }
- if(type.equals("03")){
- User user = (User)session.getAttribute("userInfo");
- feedback.setType("02");
- feedback.setHmid(String.valueOf(user.getId()));
- }
- PageHelper.startPage(page,limit);
- List<Feedback> feedbackList = feedbackService.selectByCondition(feedback);
- for(int i=0;i<feedbackList.size();i++){
- if(feedbackList.get(i).getHmid()!=null){
- if(feedbackList.get(i).getType().equals("01")){
- Manage manage = manageService.selectById(feedbackList.get(i).getHmid());
- feedbackList.get(i).setHmname(manage.getRealname());
- }else{
- User user = userService.selectById(feedbackList.get(i).getHmid());
- feedbackList.get(i).setHmname(user.getRealname());
- }
- }
- }
- PageInfo<Feedback> pages = new PageInfo<>(feedbackList);
- return JsonData.table(feedbackList,pages.getTotal());
- }
-
-
- /**编辑详情*/
- @GetMapping("/edit")
- @ResponseBody
- public Feedback edit(Model model, String id){
- return feedbackService.selectById(id);
- }
-
-
- /**编辑*/
- @PostMapping("/edit")
- @ResponseBody
- public JsonData edit(Feedback feedback){
- int a = feedbackService.updateById(feedback);
- if (a > 0) {
- return JsonData.success(null,"编辑成功!");
- } else {
- return JsonData.fail("编辑失败");
- }
- }
-
-
- /**删除*/
- @PostMapping("/del")
- @ResponseBody
- public JsonData del(String id){
- try{
- feedbackService.deleteById(Integer.parseInt(id));
- }catch(Exception ex){
- JsonData.fail("出现错误");
- }
- return JsonData.success(null,"删除成功");
- }
-
- /**新增*/
- @PostMapping("/add")
- @ResponseBody
- public JsonData add(Feedback feedback, HttpSession session){
- Date date = new Date();
- feedback.setCreateTime(date);
- String type = (String)session.getAttribute("type");
- if(type.equals("02")){
- Manage manage = (Manage)session.getAttribute("userInfo");
- feedback.setHmid(String.valueOf(manage.getId()));
- feedback.setType("01");
- }
- if(type.equals("03")){
- User user = (User)session.getAttribute("userInfo");
- feedback.setHmid(String.valueOf(user.getId()));
- feedback.setType("02");
- }
- int num = feedbackService.addByCondition(feedback);
- if(num > 0){
- return JsonData.success(null,"添加成功");
- }else {
- return JsonData.fail("添加失败");
- }
- }
下面是文件上传的核心代码:
- /**
- * 文件上传
- * @param dropFile
- * @param request
- * @return
- */
- @ResponseBody
- @RequestMapping(value = "/avatar", method = RequestMethod.POST)
- public Map<String, Object> acticleAvatar(MultipartFile dropFile, HttpServletRequest request) throws IOException {
- Map<String, Object> result = new HashMap<>();
- //获取文件后缀
- String fileName = dropFile.getOriginalFilename();
- String fileSuffix = fileName.substring(fileName.lastIndexOf('.'));
- //文件存放路径
- String fileDirPath = new String(uploadDir);
- File fileDir = new File(fileDirPath);
- //判断文件是否存在
- if (!fileDir.exists()){
- fileDir.mkdirs();
- }
- File file = new File(fileDir.getAbsolutePath()+ File.separator+ UUID.randomUUID() + fileSuffix);
- try {
- dropFile.transferTo(file);
- } catch (IOException e) {
- e.printStackTrace();
- }
- //传到前端
- result.put("fileName", "http://localhost:"+port+"/upload/"+file.getName());
- return result;
- }
-
-
- /**
- * 后台内容图片上传
- * @param dropFile
- * @param request
- * @return
- */
- @RequestMapping(value = "/ContentUpload", method = RequestMethod.POST)
- @ResponseBody
- public Map<String, Object> hotelContentUpload(MultipartFile dropFile, HttpServletRequest request) {
- Map<String, Object> result = new HashMap<>();
- //获取文件后缀
- String fileName = dropFile.getOriginalFilename();
- String fileSuffix = fileName.substring(fileName.lastIndexOf('.'));
- //文件存放路径
- String fileDirPath = new String(uploadDir);
- File fileDir = new File(fileDirPath);
- //判断文件是否存在
- if (!fileDir.exists()){
- fileDir.mkdirs();
- }
- File file = new File(fileDir.getAbsolutePath()+ File.separator+ UUID.randomUUID() + fileSuffix);
- try {
- dropFile.transferTo(file);
- } catch (IOException e) {
- e.printStackTrace();
- }
- //传到前端
- result.put("errno",0);
- result.put("data",new String[] {"http://localhost:"+port+"/upload/" + file.getName()});
- return result;
- }
用户登录功能:
- /**
- * 登录
- * 将提交数据(username,password)写入Admin对象
- */
- @RequestMapping(value = "/login")
- @ResponseBody
- public String login(String username, String password, String type, Model model, HttpSession session) {
- Map mp = new HashMap();
- if(username.equals("") || password.equals("")){
- return "202";
- }
- if(type.equals("01")){
- mp.put("username",username);
- mp.put("password",password);
- List<Admin> admins = adminService.queryFilter(mp);
- if(admins!=null && admins.size()==1){
- session.setAttribute("userInfo", admins.get(0));
- session.setAttribute("type", "01");
- }else{
- return "201";
- }
- }else if(type.equals("02")){
- mp.put("phone",username);
- mp.put("password",password);
- mp.put("type","01");
- List<Manage> manages = manageService.queryFilter(mp);
- if(manages!=null && manages.size()==1){
- session.setAttribute("userInfo", manages.get(0));
- session.setAttribute("type", "02");
- }else{
- return "201";
- }
- }else{
- mp.put("phone",username);
- mp.put("password",password);
- mp.put("type","02");
- List<User> users = userService.queryFilter(mp);
- if(users!=null && users.size()==1){
- session.setAttribute("userInfo", users.get(0));
- session.setAttribute("type", "03");
- return "203";
- }else{
- return "201";
- }
- }
- return "200";
- }
以上就是部分功能展示,从整体上来看,本系统功能是十分完整的,界面设计简洁大方,交互友好,数据库设计也很合理,规模适中,代码工整,清晰,适合学习使用。
好了,今天就到这儿吧,小伙伴们点赞、收藏、评论,一键三连走起呀,下期见~~