🍅 作者主页:Selina .a
🍅 简介:Java领域优质创作者🏆、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行交流合作。
主要内容:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、物联网、机器学习等设计与开发。
🍅文末获取源码联系🍅
目录
课题的提出
相比于以前的传统手工管理方式,智能化的管理方式可以大幅降低房地产公司的运营人员成本,实现了房地产销售的标准化、制度化、程序化的管理,有效地防止了房地产销售的随意管理,提高了信息的处理速度和精确度,能够及时、准确地查询和修正房地产信息、房源信息等信息。
课题主要采用Uni-weixin、springboot架构技术,前端以小程序页面呈现给用户,结合后台java语言使页面更加完善,后台使用MySQL数据库进行数据存储。微信小程序主要包括用户、销售员工、房源户型、房地产信息、房源信息、电话咨询、预约看房、发送房源、看房信息、预估计算、购房订单、发送通知等功能,从而实现智能化的管理方式,提高工作效率。
数据库设计
学习程序设计,如果要了解数据库管理系统或者是根据需求而制定的系统接口,就必须创建一种数据库管理系统的模式,用来保存数据资料,这样当在应用编程过程中时候,就不需要再向操作系统页面上加载信息,进而增加了整个系统的工作效率。信息库管理系统中保存着许多数据,应该说是一个管理信息系统建设的中心和基础,而信息库管理系统也为管理信息系统建设提出了新增、删除、更改和搜索的操作功能,使管理信息系统建设能够迅速地查询所需要的数据,而不会直接从程序代码中查找。信息库管理系统通过将信息表的各个组成部分按照特定的方法准确地合并,排序和组成信息库管理系统。
通过对房地产销售管理系统的主要功能信息进行规划并分为若干功能实体信息,实体信息将使用E-R图加以表示,本系统的主要功能实体图如图4-2、图4-3、图4-4所示。
系统功能设计
注册界面,第一次使用本小程序的使用者,首先是要进行注册,点击“注册”,然后就会进入到注册的页面里面,将用户信息录入注册表,确认信息正确后,页面才会跳转到登录界面,用户登录成功后可使用本小程序所提供的所有功能,如图5-1所示。
登录界面,首先双击打开微信小程序端系统,连上网络之后会显示出本系统的登录界面,这是进入小程序的第初始页面“登录”,能成功进入到该登录界面则代表小程序的开启是成功的,接下来就可以操作本系统所带有的其他所有的功能,如图5-2所示。
系统首页是用户注册登录后进入的第一个界面,用户可通过小程序端首页进入对应的页面或者通过小程序最下面的那一行导航栏中的“首页、房地产信息、房源信息、我的”,也可以点击“我的”进入我的页面,在我的页面可以对电话咨询、预约看房、发送房源、看房信息、预估计算、购房订单等进行详细操作,如图5-3所示。
用户点击房地产信息,在房地产信息页面的输入栏填写集团名称,进行搜索,还可以查看集团名称、地产名称、图片、地理位置、开盘时间、在售价格等详情。如图5-4所示。
用户点击房源信息,在房源信息页面的输入栏填写房源类型,进行搜索,然后查看标题、房源类型、房源户型、状态、建筑面积、楼层、价格、朝向、发布时间、图片、房源地址、交付类型、员工工号、电话号码、点击次数等详情,根据需要可致电咨询或预约看房等操作。如图5-5所示。
在我的功能界面,用户点击“我的”进入我的页面,在我的页面可以对电话咨询、预约看房、发送房源、看房信息、预估计算、购房订单等进行详细操作,如图5-6所示。
管理员的登陆界面包括管理员的账号、密码,其中就是已有的账号,还有需要注册的账号。只要管理员在账号上注册,注册信息就会被录入 MySQL数据库,有一个资料库,只要输入成功,就可以登陆,然后进入主页的管理。管理员登录界面如图5-7所示。
管理员登录到房地产销售管理系统可以查看系统首页、个人中心、用户管理、销售员工管理、房源类型管理、房源户型管理、房地产信息管理、房源信息管理、电话咨询管理、预约看房管理、发送房源管理、看房信息管理、预估计算管理、购房订单管理、发送通知管理、 系统管理等功能进行详细操作,如图5-8所示。
管理员点击用户管理;在用户管理页面输入用户账号、用户姓名、性别、头像、电话号码等信息,进行查询,新增或删除用户信息等操作;如图5-9所示。
管理员点击销售员工管理;在销售员工管理页面对员工工号、员工姓名、性别、头像、年龄、电话号码等信息,进行查询或新增、删除销售员工信息等操作;如图5-111所示。
管理员点击房地产信息管理;在房地产信息管理页面输入集团名称、地产名称、图片、地理位置、开盘时间、在售价格等信息,进行查询、新增或删除房地产信息等操作;如图5-13所示。
管理员点击房源信息管理;在房源信息管理页面对标题、房源类型、房源户型、状态、建筑面积、楼层、价格、朝向、发布时间、图片、房源地址、交付类型、员工工号、电话号码、点击次数等信息,进行查询、新增或删除房源信息等操作;如图5-14所示。
管理员点击电话咨询管理;在电话咨询管理页面对咨询编号、房源类型、房源户型、楼层、图片、价格、咨询时间、用户账号、用户姓名、员工工号、员工姓名、电话号码、回复等信息,进行查询或删除电话咨询等操作;如图5-15所示。
管理员点击预约看房管理;在预约看房管理页面对预约编号、房源类型、房源户型、楼层、价格、图片、看房时间、预约时间、用户账号、用户姓名、员工工号、员工姓名、电话号码、审核回复、审核状态等信息,进行查询或删除预约看房等操作;如图5-156所示。
管理员点击发送房源管理;在发送房源管理页面对发送编号、房源类型、房源户型、类型、面积、价格、图片、朝向、朝向、房源地址、发送时间、用户账号、用户姓名、电话号码等信息,进行查询新增或删除发送房源等操作;如图5-17所示。
注册界面,第一次使用本系统的使用者,首先是要进行注册,点击“注册”,然后就会进入到注册的页面里面,将销售员工信息录入注册表,确认信息正确后,系统才会进入登录界面,销售员工登录成功后可使用本系统所提供的所有功能,如图5-18所示。
登录界面,首先双击打开系统,连上网络之后会显示出本系统的登录界面,这是进入系统的第初始页面“登录”,能成功进入到该登录界面则代表系统的开启是成功的,接下来就可以操作本系统所带有的其他所有的功能,如图5-19所示。
销售员工登录系统后,可以对系统首页、个人中心、电话咨询管理、预约看房管理、看房信息管理、预估计算管理、购房订单管理、发送通知管理等功能进行相应操作,如图5-20所示。
关键代码
package com.controller;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Date;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
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.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import com.annotation.IgnoreAuth;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.entity.TokenEntity;
import com.entity.UserEntity;
import com.service.TokenService;
import com.service.UserService;
import com.utils.CommonUtil;
import com.utils.MPUtil;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.ValidatorUtils;
/**
* 登录相关
*/
@RequestMapping("users")
@RestController
public class UserController{
@Autowired
private UserService userService;
@Autowired
private TokenService tokenService;
/**
* 登录
*/
@IgnoreAuth
@PostMapping(value = "/login")
public R login(String username, String password, String captcha, HttpServletRequest request) {
UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));
if(user==null || !user.getPassword().equals(password)) {
return R.error("账号或密码不正确");
}
String token = tokenService.generateToken(user.getId(),username, "users", user.getRole());
return R.ok().put("token", token);
}
/**
* 注册
*/
@IgnoreAuth
@PostMapping(value = "/register")
public R register(@RequestBody UserEntity user){
// ValidatorUtils.validateEntity(user);
if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {
return R.error("用户已存在");
}
userService.insert(user);
return R.ok();
}
/**
* 退出
*/
@GetMapping(value = "logout")
public R logout(HttpServletRequest request) {
request.getSession().invalidate();
return R.ok("退出成功");
}
/**
* 密码重置
*/
@IgnoreAuth
@RequestMapping(value = "/resetPass")
public R resetPass(String username, HttpServletRequest request){
UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));
if(user==null) {
return R.error("账号不存在");
}
user.setPassword("123456");
userService.update(user,null);
return R.ok("密码已重置为:123456");
}
/**
* 列表
*/
@RequestMapping("/page")
public R page(@RequestParam Map<String, Object> params,UserEntity user){
EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();
PageUtils page = userService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.allLike(ew, user), params), params));
return R.ok().put("data", page);
}
/**
* 列表
*/
@RequestMapping("/list")
public R list( UserEntity user){
EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();
ew.allEq(MPUtil.allEQMapPre( user, "user"));
return R.ok().put("data", userService.selectListView(ew));
}
/**
* 信息
*/
@RequestMapping("/info/{id}")
public R info(@PathVariable("id") String id){
UserEntity user = userService.selectById(id);
return R.ok().put("data", user);
}
/**
* 获取用户的session用户信息
*/
@RequestMapping("/session")
public R getCurrUser(HttpServletRequest request){
Long id = (Long)request.getSession().getAttribute("userId");
UserEntity user = userService.selectById(id);
return R.ok().put("data", user);
}
/**
* 保存
*/
@PostMapping("/save")
public R save(@RequestBody UserEntity user){
// ValidatorUtils.validateEntity(user);
if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {
return R.error("用户已存在");
}
userService.insert(user);
return R.ok();
}
/**
* 修改
*/
@RequestMapping("/update")
public R update(@RequestBody UserEntity user){
// ValidatorUtils.validateEntity(user);
UserEntity u = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername()));
if(u!=null && u.getId()!=user.getId() && u.getUsername().equals(user.getUsername())) {
return R.error("用户名已存在。");
}
userService.updateById(user);//全部更新
return R.ok();
}
/**
* 删除
*/
@RequestMapping("/delete")
public R delete(@RequestBody Long[] ids){
userService.deleteBatchIds(Arrays.asList(ids));
return R.ok();
}
}
专栏推荐
Spring Boot+Vue+CSS+JavaScript+HTML等技术项目专栏推荐
推荐项目
基于Node.js+Vue+MySQL的小型企业工资管理系统
基于Spring Boot+Android+MySQL的记录生活管理系统
源码获取
大家点赞、收藏、关注、评论啦 、查看👇🏻获取联系方式👇🏻