基于Java+SpringBoot+vue的租房网站设计与实现(附源码,使用教程)下

简介: 基于Java+SpringBoot+vue的租房网站设计与实现(附源码,使用教程)

5.2.6在线签约管理

a4e310bf7530abb2daee19d9249b86b1_89112346421a4cd5b98846aac160c10a.png


图5-7在线签约管理界面


5.2.7交流论坛

898c8b4d97990289072781f29ca2d419_61cfd708b1654765982da18f479d380a.png


图5-8交流论坛界面


5.3、 用户 功能模块


用户进入系统可以对首页、个人中心、预约看房管理、在线签约管理、租赁评价管理、我的收藏管理进行相对应操作。程序成效图如下图5-9所示:


71d909eb2a3d946b68e82963afd0669b_1a39a2189aac4004b016fc712bad9c1e.png


5.3.预约看房管理


b9d5b6d74abde6c6902039b2737094c2_9e0b61070ee444ab80414edb0a8ca0b8.png


图5-10预约看房管理界面


5.3.2在线签约管理

0294138e3c235dd70cd35b30f4b64052_8d0510d400994fbdbd0e6b4b3f90d4ed.png


图5-11在线签约管理界面


5.3.2租赁评价管理

689cbb3ce4325dbdf637b16f74998706_a7aa25496e8148c8b8a3ac94dbafc644.png


图5-12租赁评价管理界面


5.4、前台首页功能模块


租房网站,在租房网站可以查看首页、房屋信息、交流论坛、房屋资讯、个人中心、后台管理、在线客服等内容,如图5-13所示。


4c6c2fddc9cef6fd8f27028a6311969b_0c047f4101a2409593a561c6e7f74699.png


5.4.1、用户登录、用户注册

8bc878a75f5ce6c2443572f0e988f37b_d396c26771b149b7bd2b8cf3942f37b2.png


c5b0b53d036e2d3ab24a435125e7ce89_e970254317e743a9b3f8124d518cb435.png


5.4.2、个人中心


144bbd1cc3a36460f0e75c9878a6e4a2_8a9d306eefb0496b9954beb6bf33e2fb.png


5.4.3、预约看房


301dee1232ed76c85052eca8029e7f98_d7849d92ef264197ab93130a3d393e6b.png


六、代码参考


package com.controller;
    import java.text.SimpleDateFormat;
    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.Calendar;
    import java.util.Map;
    import java.util.HashMap;
    import java.util.Iterator;
    import java.util.Date;
    import java.util.List;
    import javax.servlet.http.HttpServletRequest;
    import com.utils.ValidatorUtils;
    import org.apache.commons.lang3.StringUtils;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.format.annotation.DateTimeFormat;
    import org.springframework.web.bind.annotation.PathVariable;
    import org.springframework.web.bind.annotation.RequestBody;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestParam;
    import org.springframework.web.bind.annotation.RestController;
    import com.baomidou.mybatisplus.mapper.EntityWrapper;
    import com.baomidou.mybatisplus.mapper.Wrapper;
    import com.annotation.IgnoreAuth;
    import com.entity.ChatEntity;
    import com.entity.view.ChatView;
    import com.service.ChatService;
    import com.service.TokenService;
    import com.utils.PageUtils;
    import com.utils.R;
    import com.utils.MD5Util;
    import com.utils.MPUtil;
    import com.utils.CommonUtil;
    /**
     * 在线客服
     * 后端接口
     * @author 
     * @email 
     * @date 2021-03-11 14:12:56
     */
    @RestController
    @RequestMapping("/chat")
    public class ChatController {
        @Autowired
        private ChatService chatService;
        /**
         * 后端列表
         */
        @RequestMapping("/page")
        public R page(@RequestParam Map<String, Object> params,ChatEntity chat,
      HttpServletRequest request){
          if(!request.getSession().getAttribute("role").toString().equals("管理员")) {
          chat.setUserid((Long)request.getSession().getAttribute("userId"));
          }
            EntityWrapper<ChatEntity> ew = new EntityWrapper<ChatEntity>();
      PageUtils page = chatService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, chat), params), params));
            return R.ok().put("data", page);
        }
        /**
         * 前端列表
         */
        @RequestMapping("/list")
        public R list(@RequestParam Map<String, Object> params,ChatEntity chat, HttpServletRequest request){
          if(!request.getSession().getAttribute("role").toString().equals("管理员")) {
          chat.setUserid((Long)request.getSession().getAttribute("userId"));
          }
            EntityWrapper<ChatEntity> ew = new EntityWrapper<ChatEntity>();
      PageUtils page = chatService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, chat), params), params));
            return R.ok().put("data", page);
        }
      /**
         * 列表
         */
        @RequestMapping("/lists")
        public R list( ChatEntity chat){
            EntityWrapper<ChatEntity> ew = new EntityWrapper<ChatEntity>();
            ew.allEq(MPUtil.allEQMapPre( chat, "chat")); 
            return R.ok().put("data", chatService.selectListView(ew));
        }
      /**
         * 查询
         */
        @RequestMapping("/query")
        public R query(ChatEntity chat){
            EntityWrapper< ChatEntity> ew = new EntityWrapper< ChatEntity>();
        ew.allEq(MPUtil.allEQMapPre( chat, "chat")); 
      ChatView chatView =  chatService.selectView(ew);
      return R.ok("查询在线客服成功").put("data", chatView);
        }
        /**
         * 后端详情
         */
        @RequestMapping("/info/{id}")
        public R info(@PathVariable("id") Long id){
            ChatEntity chat = chatService.selectById(id);
            return R.ok().put("data", chat);
        }
        /**
         * 前端详情
         */
        @RequestMapping("/detail/{id}")
        public R detail(@PathVariable("id") Long id){
            ChatEntity chat = chatService.selectById(id);
            return R.ok().put("data", chat);
        }
        /**
         * 后端保存
         */
        @RequestMapping("/save")
        public R save(@RequestBody ChatEntity chat, HttpServletRequest request){
          chat.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
          //ValidatorUtils.validateEntity(chat);
          if(StringUtils.isNotBlank(chat.getAsk())) {
        chatService.updateForSet("isreply=0", new EntityWrapper<ChatEntity>().eq("userid", request.getSession().getAttribute("userId")));
          chat.setUserid((Long)request.getSession().getAttribute("userId"));
          chat.setIsreply(1);
          }
          if(StringUtils.isNotBlank(chat.getReply())) {
          chatService.updateForSet("isreply=0", new EntityWrapper<ChatEntity>().eq("userid", chat.getUserid()));
          chat.setAdminid((Long)request.getSession().getAttribute("userId"));
          }
            chatService.insert(chat);
            return R.ok();
        }
        /**
         * 前端保存
         */
        @RequestMapping("/add")
        public R add(@RequestBody ChatEntity chat, HttpServletRequest request){
          chat.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
          //ValidatorUtils.validateEntity(chat);
          chat.setUserid((Long)request.getSession().getAttribute("userId"));
          if(StringUtils.isNotBlank(chat.getAsk())) {
        chatService.updateForSet("isreply=0", new EntityWrapper<ChatEntity>().eq("userid", request.getSession().getAttribute("userId")));
          chat.setUserid((Long)request.getSession().getAttribute("userId"));
          chat.setIsreply(1);
          }
          if(StringUtils.isNotBlank(chat.getReply())) {
          chatService.updateForSet("isreply=0", new EntityWrapper<ChatEntity>().eq("userid", chat.getUserid()));
          chat.setAdminid((Long)request.getSession().getAttribute("userId"));
          }
            chatService.insert(chat);
            return R.ok();
        }
        /**
         * 修改
         */
        @RequestMapping("/update")
        public R update(@RequestBody ChatEntity chat, HttpServletRequest request){
            //ValidatorUtils.validateEntity(chat);
            chatService.updateById(chat);//全部更新
            return R.ok();
        }
        /**
         * 删除
         */
        @RequestMapping("/delete")
        public R delete(@RequestBody Long[] ids){
            chatService.deleteBatchIds(Arrays.asList(ids));
            return R.ok();
        }
        /**
         * 提醒接口
         */
      @RequestMapping("/remind/{columnName}/{type}")
      public R remindCount(@PathVariable("columnName") String columnName, HttpServletRequest request, 
           @PathVariable("type") String type,@RequestParam Map<String, Object> map) {
      map.put("column", columnName);
      map.put("type", type);
      if(type.equals("2")) {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Calendar c = Calendar.getInstance();
        Date remindStartDate = null;
        Date remindEndDate = null;
        if(map.get("remindstart")!=null) {
        Integer remindStart = Integer.parseInt(map.get("remindstart").toString());
        c.setTime(new Date()); 
        c.add(Calendar.DAY_OF_MONTH,remindStart);
        remindStartDate = c.getTime();
        map.put("remindstart", sdf.format(remindStartDate));
        }
        if(map.get("remindend")!=null) {
        Integer remindEnd = Integer.parseInt(map.get("remindend").toString());
        c.setTime(new Date());
        c.add(Calendar.DAY_OF_MONTH,remindEnd);
        remindEndDate = c.getTime();
        map.put("remindend", sdf.format(remindEndDate));
        }
      }
      Wrapper<ChatEntity> wrapper = new EntityWrapper<ChatEntity>();
      if(map.get("remindstart")!=null) {
        wrapper.ge(columnName, map.get("remindstart"));
      }
      if(map.get("remindend")!=null) {
        wrapper.le(columnName, map.get("remindend"));
      }
      int count = chatService.selectCount(wrapper);
      return R.ok().put("count", count);
      }
    }

相关文章
|
14天前
|
安全 Java 编译器
Kotlin教程笔记(27) -Kotlin 与 Java 共存(二)
Kotlin教程笔记(27) -Kotlin 与 Java 共存(二)
|
14天前
|
Java 开发工具 Android开发
Kotlin教程笔记(26) -Kotlin 与 Java 共存(一)
Kotlin教程笔记(26) -Kotlin 与 Java 共存(一)
|
14天前
|
Java 编译器 Android开发
Kotlin教程笔记(28) -Kotlin 与 Java 混编
Kotlin教程笔记(28) -Kotlin 与 Java 混编
|
15天前
|
监控 前端开发 Java
Java SpringBoot –性能分析与调优
Java SpringBoot –性能分析与调优
|
18天前
|
JavaScript Java 项目管理
Java毕设学习 基于SpringBoot + Vue 的医院管理系统 持续给大家寻找Java毕设学习项目(附源码)
基于SpringBoot + Vue的医院管理系统,涵盖医院、患者、挂号、药物、检查、病床、排班管理和数据分析等功能。开发工具为IDEA和HBuilder X,环境需配置jdk8、Node.js14、MySQL8。文末提供源码下载链接。
|
21天前
|
缓存 Java 程序员
Java|SpringBoot 项目开发时,让 FreeMarker 文件编辑后自动更新
在开发过程中,FreeMarker 文件编辑后,每次都需要重启应用才能看到效果,效率非常低下。通过一些配置后,可以让它们免重启自动更新。
23 0
|
5天前
|
JavaScript 前端开发
如何在 Vue 项目中配置 Tree Shaking?
通过以上针对 Webpack 或 Rollup 的配置方法,就可以在 Vue 项目中有效地启用 Tree Shaking,从而优化项目的打包体积,提高项目的性能和加载速度。在实际配置过程中,需要根据项目的具体情况和需求,对配置进行适当的调整和优化。
|
5天前
|
存储 缓存 JavaScript
在 Vue 中使用 computed 和 watch 时,性能问题探讨
本文探讨了在 Vue.js 中使用 computed 计算属性和 watch 监听器时可能遇到的性能问题,并提供了优化建议,帮助开发者提高应用性能。
|
5天前
|
存储 缓存 JavaScript
如何在大型 Vue 应用中有效地管理计算属性和侦听器
在大型 Vue 应用中,合理管理计算属性和侦听器是优化性能和维护性的关键。本文介绍了如何通过模块化、状态管理和避免冗余计算等方法,有效提升应用的响应性和可维护性。
|
5天前
|
存储 缓存 JavaScript
Vue 中 computed 和 watch 的差异
Vue 中的 `computed` 和 `watch` 都用于处理数据变化,但使用场景不同。`computed` 用于计算属性,依赖于其他数据自动更新;`watch` 用于监听数据变化,执行异步或复杂操作。