Springboot+vue二手房交易管理系统

Springboot+vue二手房交易管理系统,项目用mybatis与数据库,数据库为mysql,16个表结构。有问题直接加我询问,我会一直在线哒。
功能如下:
房东管理
用户管理
房源信息管理(可预约和查看评论)
看房预约管理
房型管理
支付管理
合同管理
城市管理
日常收费管理
系统公告,轮播图,公告分类管理
 
前台可登录用户和房东
后台可登录管理员。

部分数据库设计

discussfangyuanxinxi 评论信息

fangyuanxinxi 房源信息

用户表

部分代码设计:

package com.controller;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Map;
import java.util.List;
import javax.servlet.http.HttpServletRequest;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
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.annotation.IgnoreAuth;

import com.entity.KanfangyuyueEntity;
import com.entity.view.KanfangyuyueView;

import com.service.KanfangyuyueService;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.MPUtil;

/**
 * 看房预约
 * 后端接口
 */
@RestController
@RequestMapping("/kanfangyuyue")
public class KanfangyuyueController {
    @Autowired
    private KanfangyuyueService kanfangyuyueService;

    /**
     * 后端列表
     */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params, KanfangyuyueEntity kanfangyuyue, HttpServletRequest request) {
        String tableName = request.getSession().getAttribute("tableName").toString();
        if (tableName.equals("yonghu")) {
            kanfangyuyue.setYonghuzhanghao((String) request.getSession().getAttribute("username"));
        }
        if (tableName.equals("fangdong")) {
            kanfangyuyue.setFangdongzhanghao((String) request.getSession().getAttribute("username"));
        }
        EntityWrapper<KanfangyuyueEntity> ew = new EntityWrapper<KanfangyuyueEntity>();
        PageUtils page = kanfangyuyueService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, kanfangyuyue), params), params));
        return R.ok().put("data", page);
    }

    /**
     * 前端列表
     */
    @IgnoreAuth
    @RequestMapping("/list")
    public R list(@RequestParam Map<String, Object> params, KanfangyuyueEntity kanfangyuyue, HttpServletRequest request) {
        EntityWrapper<KanfangyuyueEntity> ew = new EntityWrapper<KanfangyuyueEntity>();
        PageUtils page = kanfangyuyueService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, kanfangyuyue), params), params));
        return R.ok().put("data", page);
    }

    /**
     * 列表
     */
    @RequestMapping("/lists")
    public R list(KanfangyuyueEntity kanfangyuyue) {
        EntityWrapper<KanfangyuyueEntity> ew = new EntityWrapper<KanfangyuyueEntity>();
        ew.allEq(MPUtil.allEQMapPre(kanfangyuyue, "kanfangyuyue"));
        return R.ok().put("data", kanfangyuyueService.selectListView(ew));
    }

    /**
     * 查询
     */
    @RequestMapping("/query")
    public R query(KanfangyuyueEntity kanfangyuyue) {
        EntityWrapper<KanfangyuyueEntity> ew = new EntityWrapper<KanfangyuyueEntity>();
        ew.allEq(MPUtil.allEQMapPre(kanfangyuyue, "kanfangyuyue"));
        KanfangyuyueView kanfangyuyueView = kanfangyuyueService.selectView(ew);
        return R.ok("查询看房预约成功").put("data", kanfangyuyueView);
    }

    /**
     * 后端详情
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") Long id) {
        KanfangyuyueEntity kanfangyuyue = kanfangyuyueService.selectById(id);
        return R.ok().put("data", kanfangyuyue);
    }

    /**
     * 前端详情
     */
    @IgnoreAuth
    @RequestMapping("/detail/{id}")
    public R detail(@PathVariable("id") Long id) {
        KanfangyuyueEntity kanfangyuyue = kanfangyuyueService.selectById(id);
        return R.ok().put("data", kanfangyuyue);
    }

    /**
     * 后端保存
     */
    @RequestMapping("/save")
    public R save(@RequestBody KanfangyuyueEntity kanfangyuyue, HttpServletRequest request) {
        kanfangyuyueService.insert(kanfangyuyue);
        return R.ok();
    }

    /**
     * 前端保存
     */
    @RequestMapping("/add")
    public R add(@RequestBody KanfangyuyueEntity kanfangyuyue, HttpServletRequest request) {
        kanfangyuyueService.insert(kanfangyuyue);
        return R.ok();
    }

    /**
     * 修改
     */
    @RequestMapping("/update")
    @Transactional
    public R update(@RequestBody KanfangyuyueEntity kanfangyuyue, HttpServletRequest request) {
        kanfangyuyueService.updateById(kanfangyuyue);//全部更新
        return R.ok();
    }

    /**
     * 审核
     */
    @RequestMapping("/shBatch")
    @Transactional
    public R update(@RequestBody Long[] ids, @RequestParam String sfsh, @RequestParam String shhf) {
        List<KanfangyuyueEntity> list = new ArrayList<KanfangyuyueEntity>();
        for (Long id : ids) {
            KanfangyuyueEntity kanfangyuyue = kanfangyuyueService.selectById(id);
            kanfangyuyue.setSfsh(sfsh);
            kanfangyuyue.setShhf(shhf);
            list.add(kanfangyuyue);
        }
        kanfangyuyueService.updateBatchById(list);
        return R.ok();
    }

    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids) {
        kanfangyuyueService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }
}

                       

需要私聊我

                                          

                ​​​​​​​        ​​​​​​​        ​​​​​​​        

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/678778.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C语言 指针——函数指针的典型应用:通用排序

目录 编程实现升序和降序排序 如果不使用函数指针编程… 使用函数指针编写一个通用的排序函数 小结 编程实现升序和降序排序 如果不使用函数指针编程… 使用函数指针编写一个通用的排序函数 小结 正确理解指针的概念  指针是一种特殊的数据类型  指针类型的变量&am…

【动态规划】状态压缩dp

发现dp调试打最后二维dp表非常有用 1.吃奶酪类 先出状态&#xff0c;再走到哪 dp[1][0]0;for(int i3;i<maxn;i){//状态 for(int j1;j<n;j){//走过j if(i&(1<<j)){ for(int k0;k<n;k){//刚才在k dp[i][j]; } } } } P1433 吃奶酪 - 洛谷 | 计算机科学教育新生…

ARP欺骗的原理与详细步骤

ARP是什么&#xff1a; 我还记得在计算机网络课程当中&#xff0c;学过ARP协议&#xff0c;ARP是地址转换协议&#xff0c;是链路层的协议&#xff0c;是硬件与上层之间的接口&#xff0c;同时对上层提供服务。在局域网中主机与主机之间不能直接通过IP地址进行通信&#xff0c…

做ozon开单前需要多少钱,做ozon开单前需要多少钱

在电子商务的浪潮中&#xff0c;OZON平台以其独特的商业模式和市场定位&#xff0c;吸引了众多创业者和商家的目光。然而&#xff0c;在决定投身OZON平台之前&#xff0c;对开店成本的全面了解至关重要。本文将详细解析OZON开店前的各项费用&#xff0c;并提供一些高效投入的策…

go的反射和断言

在go中对于一个变量&#xff0c;主要包含两个信息变量类型&#xff08;type&#xff09;和变量值&#xff08;value&#xff09; 可以通过reflect包在运行的时候动态获取变量信息&#xff0c;并能够进行操作 对于Type可以通过reflect.TypeOf()获取到变量的类型信息 reflect.Ty…

网络服务DHCP的安装

DHCP的安装 检查并且安装dhcp有关软件包 rpm -qc dhcp #检查是否存在dhcp yum install -y dhcp #进行yum安装查看系统的配置文件 切换到对应目录查看相关文件配置&#xff0c;发现是空目录。 将官方提供的example复制到原配置文件中 cp /usr/share/doc/dhcp-4.2.5/dhcpd.…

This Python interpreter is in a conda environment

今天在查看python版本的时候出现警告 Warning: This Python interpreter is in a conda environment, but the environment has not been activated. Libraries may fail to load. To activate this environment please see https://conda.io/activation 这个警告意味着你…

Windows家庭版 WSL2非C盘详细安装配置与WSL代理设置+WSL基础环境CUDA安装

1 WSL2 配置 1.1 WSL 开启 注意&#xff1a;需要在windows功能中开启“Hyper-V”和“适用于Linux的Windows子系统”功能 但是&#xff01;windows家庭版&#xff08;windows home&#xff09;是默认没有Hyper-V功能的&#xff0c;自己手动安装&#xff1a; 创建一个记事本&a…

DeepDriving | 基于YOLOv8分割模型实现垃圾识别

本文来源公众号“DeepDriving”&#xff0c;仅用于学术分享&#xff0c;侵权删&#xff0c;干货满满。 原文链接&#xff1a;基于YOLOv8分割模型实现垃圾识别 0. 引言 YOLOv8是Ultralytics开源的一个非常火的AI算法&#xff0c;目前支持目标检测、实例分割、姿态估计等任务。…

Java List数据结构与常用方法

1.1 数据结构概述 Java的集合框架其实就是对数据结构的封装&#xff0c;在学习集合框架之前&#xff0c;有必要先了解下数据结构。 1.1.1 什么是数据结构 所谓数据结构&#xff0c;其实就是计算机存储、组织数据的方式。 数据结构是用来分析研究数据存储操作的&#xff0c;其实…

【Mac】Keyboard Maestro for Mac(键盘大师)软件介绍及安装教程

软件介绍 Keyboard Maestro for mac&#xff08;键盘大师&#xff09;是目前Mac OS平台上功能最为齐全的Mac键盘增强工具&#xff0c;它能将你的Keyboard作用发挥到极致&#xff0c;可以根据命令或计划自动执行简单或复杂的应用程序或网站&#xff0c;文本或图像。使用Keyboar…

力扣234. 回文链表

给你一个单链表的头节点 head &#xff0c;请你判断该链表是否为回文链表。如果是&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 示例 1&#xff1a; 输入&#xff1a;head [1,2,2,1] 输出&#xff1a;true # Definition for singly-linked list. # c…

Facebook开户 | Facebook海外三不限的价值

在当今数字化时代&#xff0c;海外数字营销已经成为企业推广和品牌建设的重要手段。在这个过程中&#xff0c;社交媒体平台扮演着至关重要的角色&#xff0c;而Facebook作为全球最大的社交媒体平台之一&#xff0c;其海外三不限账户近年来引起了越来越多数字营销从业者的关注。…

【数据结构与算法 | 二叉树篇】力扣101, 104, 111

1. 力扣101 : 对称二叉树 (1). 题 给你一个二叉树的根节点 root &#xff0c; 检查它是否轴对称。 示例 1&#xff1a; 输入&#xff1a;root [1,2,2,3,4,4,3] 输出&#xff1a;true示例 2&#xff1a; 输入&#xff1a;root [1,2,2,null,3,null,3] 输出&#xff1a;false…

【Redis数据库】数据类型(2.3w字超详细)

文章目录 一、字符串类型概述1.1、数据类型1.2、字符串简介1.3、字符串应用场景 二、字符串命令三、哈希类型概述3.1、哈希介绍3.2、哈希类型应用场景3.3、哈希命令 四、列表类型概述4.1、列表简介4.2、使用场景4.3、列表命令 五、集合概述5.1、集合简介5.2、使用场景5.3、集合…

Vue.js 动画与过渡效果实战

title: Vue.js 动画与过渡效果实战 date: 2024/6/4 updated: 2024/6/4 description: 这篇文章介绍了如何在网页设计中使用过渡动画和组件效果&#xff0c;以及如何利用模式和列表展示信息。还提到了使用钩子实现组件间通信的方法。 categories: 前端开发 tags: 过渡动画组件…

VS 2022调试技巧:远程调试、线程检查、性能检查

&#x1f3c6;作者&#xff1a;科技、互联网行业优质创作者 &#x1f3c6;专注领域&#xff1a;.Net技术、软件架构、人工智能、数字化转型、DeveloperSharp、微服务、工业互联网、智能制造 &#x1f3c6;欢迎关注我&#xff08;Net数字智慧化基地&#xff09;&#xff0c;里面…

总交易量突破 3000 亿美元,APX Finance 成本轮牛市最大的黑马?

“APX Finance 总交易量现已突破 3000 亿美元&#xff0c;已然成为链上衍生品赛道的主力军” 自 2021 年链上衍生品市场进入萌芽期以来&#xff0c;该板块始终保持着较高的市场增速&#xff0c;即便如此该领域仍旧存在极大的发展空间。一方面&#xff0c;衍生品板块交易量目前占…

微信小程序发布遇到的一些问题记录

1.报错组件没有按需导入 在该路径配置微信小程序添加"lazyCodeLoading" : "requiredComponents" "mp-weixin" : { "appid" : "你的appid", "setting" : { "urlCheck" : f…

工业设备联网监控

在当今这个工业4.0和智能制造蓬勃发展的时代&#xff0c;如何对工业设备进行高效、智能的联网监控&#xff0c;已经成为众多企业关注的焦点。HiWoo Cloud平台以其卓越的联网监控能力和创新的技术应用&#xff0c;正成为更多企业的选择。今天&#xff0c;我们就来详细探讨一下Hi…