Springboot+Vue项目-基于Java+MySQL的房产销售系统(附源码+演示视频+LW)

大家好!我是程序猿老A,感谢您阅读本文,欢迎一键三连哦。

💞当前专栏:Java毕业设计

精彩专栏推荐👇🏻👇🏻👇🏻

🎀 Python毕业设计

🌎微信小程序毕业设计

开发环境

开发语言:Java

框架:Springboot+Vue

JDK版本:JDK1.8

服务器:tomcat7

数据库:mysql 5.7

数据库工具:Navicat12

开发软件:eclipse/myeclipse/idea

Maven包:Maven3.3.9

浏览器:谷歌浏览器

演示视频

springboot016房产销售系统录像

源码下载地址:

https://download.csdn.net/download/2301_76953549/89099775

LW目录

【如需全文请按文末获取联系】

目录

一、项目简介

使用房产销售系统分为管理员和用户、销售经理三个角色的权限子模块。

管理员所能使用的功能主要有:首页、个人中心、用户管理、销售经理管理、房源信息管理、房源类型管理、房子户型管理、交易订单管理、预约看房管理、评价管理、我的收藏管理、系统管理等。

用户可以实现首页、个人中心、房源信息管理、交易订单管理、预约看房管理、评价管理、我的收藏管理等。

销售经理可以实现首页、个人中心、房源信息管理、交易订单管理、预约看房管理、评价管理等。

二、系统设计

2.1软件功能模块设计

此系统功能较为全面如下图系统功能结构如图4-3所示。

2.2数据库设计

房产销售系统的数据流程:

用户管理实体E-R图,如图4.5所示。

评价管理E-R图,如图4.6所示。

三、系统项目部分截图

3.1用户功能模块

用户点击进入到系统操作界面,可以对首页、个人中心、房源信息管理、交易订单管理、预约看房管理、评价管理、我的收藏管理等功能模块,个人信息:通过列表可以获取账号、姓名、性别、手机、邮箱、照片、备注并进行修改操作,如图5-1所示。

交易订单管理:通过列表可以获取账号、姓名、订单编号、房源名称、房源类型、房源户型、房源图片、总计、销售账号、销售姓名、交易时间、备注、是否支付等信息,进行详情、评价、删除等操作,如图5-3所示。

预约看房管理:通过列表可以获取账号、姓名、手机、房源名称、房源类型、房源户型、房源图片、预约时间、销售账号、销售姓名、销售手机、审核回复、审核状态等信息,进行详情、删除操作,如图5-4所示。

3.2管理员功能模块

管理员通过用户名和密码、角色填写完成后进行登录,如图5-5所示。管理员登录成功后进入到系统操作界面,可以对首页、个人中心、用户管理、销售经理管理、房源信息管理、房源类型管理、房子户型管理、交易订单管理、预约看房管理、评价管理、我的收藏管理、系统管理等功能模块进行相对应操作。

用户管理:通过列表可以获取账号、姓名、性别、手机、邮箱、照片、备注等内容,可以进行详情、修改或删除等操作,如图5-6所示。


房源信息管理:通过列表可以获取房源名称、房源类型、房源户型、房源图片、所在区域、房源位置、房源面积、每米价格、总计、发布时间、销售账号、销售姓名、销售手机等信息,进行详情、修改、查看评论、删除等操作,如图5-8所示。

房子户型管理:通过列表可以获取房子户型等信息,进行修改或删除操作,如图5-10所示。

3.3销售经理功能模块

销售经理点击进入到系统操作界面,可以对首页、个人中心、房源信息管理、交易订单管理、预约看房管理、评价管理等功能模块,房源信息管理:通过列表可以获取房源名称、房源类型、房源户型、房源图片、所在区域、房源位置、房源面积、每米价格、总计、发布时间、销售账号、销售姓名、销售手机等信息并进行详情、修改、查看评论删除等操作,如图5-12所示。

3.4前台首页功能模块

房产销售系统,在前台首页可以查看首页、房源信息、个人中心、后台管理等内容,如图5-14所示。

个人中心,在个人中心页面通过填写账号、密码、姓名、性别、手机、邮箱、照片、备注等信息进行更新信息等操作,如图5-16所示。

四、部分核心代码

4.1 用户部分

java 复制代码
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.XiaoshoujingliEntity;
import com.entity.view.XiaoshoujingliView;

import com.service.XiaoshoujingliService;
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-13 12:37:12
 */
@RestController
@RequestMapping("/xiaoshoujingli")
public class XiaoshoujingliController {
    @Autowired
    private XiaoshoujingliService xiaoshoujingliService;
    
	@Autowired
	private TokenService tokenService;
	
	/**
	 * 登录
	 */
	@IgnoreAuth
	@RequestMapping(value = "/login")
	public R login(String username, String password, String captcha, HttpServletRequest request) {
		XiaoshoujingliEntity user = xiaoshoujingliService.selectOne(new EntityWrapper<XiaoshoujingliEntity>().eq("xiaoshouzhanghao", username));
		if(user==null || !user.getMima().equals(password)) {
			return R.error("账号或密码不正确");
		}
		
		String token = tokenService.generateToken(user.getId(), username,"xiaoshoujingli",  "销售经理" );
		return R.ok().put("token", token);
	}
	
	/**
     * 注册
     */
	@IgnoreAuth
    @RequestMapping("/register")
    public R register(@RequestBody XiaoshoujingliEntity xiaoshoujingli){
    	//ValidatorUtils.validateEntity(xiaoshoujingli);
    	XiaoshoujingliEntity user = xiaoshoujingliService.selectOne(new EntityWrapper<XiaoshoujingliEntity>().eq("xiaoshouzhanghao", xiaoshoujingli.getXiaoshouzhanghao()));
		if(user!=null) {
			return R.error("注册用户已存在");
		}
		Long uId = new Date().getTime();
		xiaoshoujingli.setId(uId);
        xiaoshoujingliService.insert(xiaoshoujingli);
        return R.ok();
    }
	
	/**
	 * 退出
	 */
	@RequestMapping("/logout")
	public R logout(HttpServletRequest request) {
		request.getSession().invalidate();
		return R.ok("退出成功");
	}
	
	/**
     * 获取用户的session用户信息
     */
    @RequestMapping("/session")
    public R getCurrUser(HttpServletRequest request){
    	Long id = (Long)request.getSession().getAttribute("userId");
        XiaoshoujingliEntity user = xiaoshoujingliService.selectById(id);
        return R.ok().put("data", user);
    }
    
    /**
     * 密码重置
     */
    @IgnoreAuth
	@RequestMapping(value = "/resetPass")
    public R resetPass(String username, HttpServletRequest request){
    	XiaoshoujingliEntity user = xiaoshoujingliService.selectOne(new EntityWrapper<XiaoshoujingliEntity>().eq("xiaoshouzhanghao", username));
    	if(user==null) {
    		return R.error("账号不存在");
    	}
        user.setMima("123456");
        xiaoshoujingliService.updateById(user);
        return R.ok("密码已重置为:123456");
    }


    /**
     * 后端列表
     */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params,XiaoshoujingliEntity xiaoshoujingli,
		HttpServletRequest request){
        EntityWrapper<XiaoshoujingliEntity> ew = new EntityWrapper<XiaoshoujingliEntity>();
		PageUtils page = xiaoshoujingliService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, xiaoshoujingli), params), params));

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

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

	 /**
     * 查询
     */
    @RequestMapping("/query")
    public R query(XiaoshoujingliEntity xiaoshoujingli){
        EntityWrapper< XiaoshoujingliEntity> ew = new EntityWrapper< XiaoshoujingliEntity>();
 		ew.allEq(MPUtil.allEQMapPre( xiaoshoujingli, "xiaoshoujingli")); 
		XiaoshoujingliView xiaoshoujingliView =  xiaoshoujingliService.selectView(ew);
		return R.ok("查询销售经理成功").put("data", xiaoshoujingliView);
    }
	
    /**
     * 后端详情
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") Long id){
        XiaoshoujingliEntity xiaoshoujingli = xiaoshoujingliService.selectById(id);
        return R.ok().put("data", xiaoshoujingli);
    }

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



    /**
     * 后端保存
     */
    @RequestMapping("/save")
    public R save(@RequestBody XiaoshoujingliEntity xiaoshoujingli, HttpServletRequest request){
    	xiaoshoujingli.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(xiaoshoujingli);
    	XiaoshoujingliEntity user = xiaoshoujingliService.selectOne(new EntityWrapper<XiaoshoujingliEntity>().eq("xiaoshouzhanghao", xiaoshoujingli.getXiaoshouzhanghao()));
		if(user!=null) {
			return R.error("用户已存在");
		}
		xiaoshoujingli.setId(new Date().getTime());
        xiaoshoujingliService.insert(xiaoshoujingli);
        return R.ok();
    }
    
    /**
     * 前端保存
     */
    @RequestMapping("/add")
    public R add(@RequestBody XiaoshoujingliEntity xiaoshoujingli, HttpServletRequest request){
    	xiaoshoujingli.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(xiaoshoujingli);
    	XiaoshoujingliEntity user = xiaoshoujingliService.selectOne(new EntityWrapper<XiaoshoujingliEntity>().eq("xiaoshouzhanghao", xiaoshoujingli.getXiaoshouzhanghao()));
		if(user!=null) {
			return R.error("用户已存在");
		}
		xiaoshoujingli.setId(new Date().getTime());
        xiaoshoujingliService.insert(xiaoshoujingli);
        return R.ok();
    }

    /**
     * 修改
     */
    @RequestMapping("/update")
    public R update(@RequestBody XiaoshoujingliEntity xiaoshoujingli, HttpServletRequest request){
        //ValidatorUtils.validateEntity(xiaoshoujingli);
        xiaoshoujingliService.updateById(xiaoshoujingli);//全部更新
        return R.ok();
    }
    

    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids){
        xiaoshoujingliService.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<XiaoshoujingliEntity> wrapper = new EntityWrapper<XiaoshoujingliEntity>();
		if(map.get("remindstart")!=null) {
			wrapper.ge(columnName, map.get("remindstart"));
		}
		if(map.get("remindend")!=null) {
			wrapper.le(columnName, map.get("remindend"));
		}


		int count = xiaoshoujingliService.selectCount(wrapper);
		return R.ok().put("count", count);
	}
	


}

获取源码或论文

如需对应的LW或源码,以及其他定制需求,也可以下方V.X撩我wenruo0209。

相关推荐
独断万古他化2 分钟前
【Java 实战项目】多用户网页版聊天室:消息传输模块 —— 基于 WebSocket 实现实时通信
java·spring boot·后端·websocket·ajax·mybatis
yyt3630458419 分钟前
spring单例bean线程安全问题讨论
java·spring
Sweet锦20 分钟前
SpringBoot 3.5 集成 InfluxDB 1.8
spring boot·时序数据库
我是大猴子29 分钟前
事务失效的几种情况以及是为什么(详解)
java·开发语言
wertyuytrewm1 小时前
Java面试——Java基础
java·jvm·面试
Java水解1 小时前
Spring Boot 消息队列与异步处理
spring boot·后端
czlczl200209251 小时前
RAG实现思路流程
java·jvm
带娃的IT创业者1 小时前
WeClaw_40_系统监控与日志体系:多层次日志架构与Trace追踪
java·开发语言·python·架构·系统监控·日志系统·链路追踪
Y001112361 小时前
JDBC原理
java·开发语言·数据库·jdbc
程序员侠客行2 小时前
Tomcat 从陌生到熟悉
java·tomcat·web