一、个人简介
- 💖💖作者:计算机编程果茶熊
- 💙💙个人简介:曾长期从事计算机专业培训教学,担任过编程老师,同时本人也热爱上课教学,擅长Java、微信小程序、Python、Golang、安卓Android等多个IT方向。会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。平常喜欢分享一些自己开发中遇到的问题的解决办法,也喜欢交流技术,大家有技术代码这一块的问题可以问我!
- 💛💛想说的话:感谢大家的关注与支持!
- 💜💜
- 网站实战项目
- 安卓/小程序实战项目
- 💕💕文末获取源码联系计算机编程果茶熊
二、系统介绍
- 开发语言:Java+Python
- 数据库:MySQL
- 系统架构:B/S
- 后端框架:SpringBoot(Spring+SpringMVC+Mybatis)+Django
- 前端:Vue+HTML+CSS+JavaScript+jQuery
- 房产销售平台系统是基于B/S架构开发的综合性房产交易管理系统,采用Java/Python双版本技术路线,分别基于Spring Boot(Spring+SpringMVC+Mybatis)和Django框架实现后端功能,前端统一使用Vue+ElementUI+HTML技术栈,数据存储依托MySQL数据库。系统功能模块完善,包含首页展示、个人中心、用户管理、中介管理、房源信息管理、房源类型管理、房屋户型管理、预约看房管理、在线签约管理、留言板管理及系统管理等11个核心模块,实现了房产信息的全流程数字化管理。用户可通过系统浏览各类房源信息,按需筛选合适的房屋户型,在线预约看房并完成签约流程;中介机构能够便捷地发布和管理房源信息,跟进客户需求;管理员则可对系统用户、房源数据和业务流程进行全方位监控和管理。该系统界面友好、操作简便,有效连接了购房者、中介和房产商三方,提高了房产交易效率,为房地产市场数字化转型提供了可靠的技术支持。
三、房产销售平台系统-视频解说
毕设迷茫到导师点赞:一个房产销售平台系统让我从代码小白变身全栈工程师
四、房产销售平台系统-功能展示
五、房产销售平台系统-代码展示
// 核心功能1: 房源信息管理
@Service
public class HouseInfoServiceImpl implements HouseInfoService {
@Autowired
private HouseInfoMapper houseInfoMapper;
@Autowired
private HouseTypeMapper houseTypeMapper;
@Autowired
private HouseLayoutMapper houseLayoutMapper;
@Override
@Transactional
public ResponseResult addHouseInfo(HouseInfoDTO houseInfoDTO) {
try {
// 数据校验
if (houseInfoDTO == null || StringUtils.isEmpty(houseInfoDTO.getTitle())) {
return ResponseResult.error("房源信息不完整");
}
// 检查房源类型是否存在
HouseType houseType = houseTypeMapper.selectById(houseInfoDTO.getTypeId());
if (houseType == null) {
return ResponseResult.error("房源类型不存在");
}
// 检查户型是否存在
HouseLayout houseLayout = houseLayoutMapper.selectById(houseInfoDTO.getLayoutId());
if (houseLayout == null) {
return ResponseResult.error("户型不存在");
}
// 构建房源实体
HouseInfo houseInfo = new HouseInfo();
BeanUtils.copyProperties(houseInfoDTO, houseInfo);
houseInfo.setStatus(HouseStatusEnum.AVAILABLE.getCode());
houseInfo.setCreateTime(new Date());
houseInfo.setUpdateTime(new Date());
// 处理房源图片
if (houseInfoDTO.getImages() != null && !houseInfoDTO.getImages().isEmpty()) {
houseInfo.setMainImage(houseInfoDTO.getImages().get(0));
houseInfo.setImages(String.join(",", houseInfoDTO.getImages()));
}
// 保存房源信息
houseInfoMapper.insert(houseInfo);
// 记录操作日志
log.info("新增房源信息成功,房源ID: {}", houseInfo.getId());
return ResponseResult.success("添加房源成功", houseInfo.getId());
} catch (Exception e) {
log.error("添加房源失败", e);
throw new BusinessException("系统异常,添加房源失败");
}
}
}
// 核心功能2: 预约看房管理
@Service
public class AppointmentServiceImpl implements AppointmentService {
@Autowired
private AppointmentMapper appointmentMapper;
@Autowired
private HouseInfoMapper houseInfoMapper;
@Autowired
private UserMapper userMapper;
@Autowired
private AgentMapper agentMapper;
@Override
@Transactional
public ResponseResult createAppointment(AppointmentDTO appointmentDTO) {
// 参数校验
if (appointmentDTO == null || appointmentDTO.getHouseId() == null ||
appointmentDTO.getUserId() == null || appointmentDTO.getAppointTime() == null) {
return ResponseResult.error("预约信息不完整");
}
// 检查房源是否存在且可预约
HouseInfo houseInfo = houseInfoMapper.selectById(appointmentDTO.getHouseId());
if (houseInfo == null) {
return ResponseResult.error("房源不存在");
}
if (!HouseStatusEnum.AVAILABLE.getCode().equals(houseInfo.getStatus())) {
return ResponseResult.error("该房源当前不可预约");
}
// 检查用户是否存在
User user = userMapper.selectById(appointmentDTO.getUserId());
if (user == null) {
return ResponseResult.error("用户不存在");
}
// 检查预约时间是否合理
Date appointTime = appointmentDTO.getAppointTime();
Date now = new Date();
if (appointTime.before(now)) {
return ResponseResult.error("预约时间不能早于当前时间");
}
// 检查该时间段是否已有预约
List<Appointment> existingAppointments = appointmentMapper.findByHouseIdAndTimeRange(
appointmentDTO.getHouseId(),
appointTime,
DateUtils.addHours(appointTime, 2)
);
if (!existingAppointments.isEmpty()) {
return ResponseResult.error("该时间段已被预约,请选择其他时间");
}
// 分配中介
Long agentId = assignAgent(houseInfo.getAgentId(), appointTime);
if (agentId == null) {
return ResponseResult.error("暂无可用中介,请稍后再试");
}
// 创建预约记录
Appointment appointment = new Appointment();
BeanUtils.copyProperties(appointmentDTO, appointment);
appointment.setAgentId(agentId);
appointment.setStatus(AppointmentStatusEnum.PENDING.getCode());
appointment.setCreateTime(now);
appointment.setUpdateTime(now);
appointmentMapper.insert(appointment);
// 发送预约通知
sendAppointmentNotification(appointment, user, houseInfo);
return ResponseResult.success("预约成功", appointment.getId());
}
}
// 核心功能3: 在线签约管理
@Service
public class ContractServiceImpl implements ContractService {
@Autowired
private ContractMapper contractMapper;
@Autowired
private HouseInfoMapper houseInfoMapper;
@Autowired
private UserMapper userMapper;
@Autowired
private PaymentService paymentService;
@Override
@Transactional
public ResponseResult createContract(ContractDTO contractDTO) {
// 参数校验
if (contractDTO == null || contractDTO.getHouseId() == null ||
contractDTO.getBuyerId() == null || contractDTO.getTotalAmount() == null) {
return ResponseResult.error("合同信息不完整");
}
// 检查房源状态
HouseInfo houseInfo = houseInfoMapper.selectById(contractDTO.getHouseId());
if (houseInfo == null) {
return ResponseResult.error("房源不存在");
}
if (!HouseStatusEnum.AVAILABLE.getCode().equals(houseInfo.getStatus())) {
return ResponseResult.error("该房源当前不可签约");
}
// 检查买家信息
User buyer = userMapper.selectById(contractDTO.getBuyerId());
if (buyer == null) {
return ResponseResult.error("买家信息不存在");
}
// 验证合同金额
if (contractDTO.getTotalAmount().compareTo(houseInfo.getPrice()) != 0) {
return ResponseResult.error("合同金额与房源价格不符");
}
// 生成合同编号
String contractNo = generateContractNumber();
// 创建合同
Contract contract = new Contract();
BeanUtils.copyProperties(contractDTO, contract);
contract.setContractNo(contractNo);
contract.setSellerId(houseInfo.getOwnerId());
contract.setStatus(ContractStatusEnum.PENDING.getCode());
contract.setCreateTime(new Date());
contract.setUpdateTime(new Date());
// 设置合同有效期
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.DAY_OF_MONTH, 30);
contract.setExpireTime(calendar.getTime());
// 保存合同
contractMapper.insert(contract);
// 更新房源状态为签约中
houseInfo.setStatus(HouseStatusEnum.SIGNING.getCode());
houseInfo.setUpdateTime(new Date());
houseInfoMapper.updateById(houseInfo);
// 生成首付款支付订单
BigDecimal downPayment = contract.getTotalAmount().multiply(
new BigDecimal(contract.getDownPaymentRate()).divide(new BigDecimal(100))
);
PaymentDTO paymentDTO = new PaymentDTO();
paymentDTO.setContractId(contract.getId());
paymentDTO.setUserId(contract.getBuyerId());
paymentDTO.setAmount(downPayment);
paymentDTO.setPaymentType(PaymentTypeEnum.DOWN_PAYMENT.getCode());
paymentService.createPayment(paymentDTO);
// 发送合同通知
sendContractNotification(contract, buyer, houseInfo);
return ResponseResult.success("合同创建成功", contract.getId());
}
}
六、房产销售平台系统-文档展示
七、END
💕💕文末获取源码联系计算机编程果茶熊