Lenguaje de desarrollo: Java
Herramientas de desarrollo: IDEA/Eclipse
Base de datos: MYSQL5.7
Servicio de aplicaciones: Tomcat7/Tomcat8
Marco de uso: springboot + vue
Versión JDK: jdk1.8
Este sistema tiene administradores; página de inicio, centro personal, gestión de usuarios, gestión de tipo de casa, gestión de información de la casa, gestión de visualización de citas, gestión de contratos en línea, gestión de evaluación de alquileres, foro de comunicación, gestión del sistema, usuarios; página de inicio, centro personal, visualización de citas Gestión de habitaciones, gestión de contratos en línea, gestión de evaluación de alquileres, gestión de mi colección, página de inicio de la página principal; página de inicio, información de vivienda, foro de intercambio, información de vivienda, centro personal, gestión de antecedentes, servicio al cliente en línea y otras funciones.
Análisis de flujo del sistema
Los usuarios deben tener su propia cuenta y contraseña, que debe ser correcta, para que puedan iniciar sesión en el sistema sin problemas. Después de ingresar al sitio web, los usuarios pueden consultar la información por sí mismos y pueden operar directamente en la página de detalles de la información de alquiler. El proceso específico es el siguiente
Para garantizar la seguridad del sistema, para usar este sistema para administrar la información del sistema, primero debe iniciar sesión en el sistema. Su diagrama de flujo de inicio de sesión específico se muestra en la figura
arquitectura del sistema
La estructura del sitio web de alquiler.
Diagrama de estructura del sistema de inicio de sesión
Diagrama de estructura del sistema, como se muestra en la figura.
Módulo de funciones de inicio en la página principal
En el sitio web de alquiler, puede ver la página de inicio, la información de la vivienda, el foro de intercambio, la información de la vivienda, el centro personal, la gestión de antecedentes, el servicio de atención al cliente en línea, etc., como se muestra en la figura.
Inicio de sesión de usuario, registro de usuario, a través del registro para obtener nombre de usuario, contraseña, nombre, teléfono móvil, tarjeta de identificación y otra información para registro e inicio de sesión, como se muestra en la figura
Inicio de sesión de usuario
informacion de la casa
Para programar una cita para verlo, puede ver el número de cita, el nombre de la casa, el tipo de casa, la fotografía, el área, el estado de la casa, la comunidad, el precio de alquiler mensual, los meses de alquiler, el monto del alquiler, el depósito, la fecha de la cita, el nombre de usuario y el teléfono móvil. , ID y otra información para enviar como se muestra en la figura
Foro de intercambio
informacion de vivienda
centro personal
Servicio en línea
Inicio de sesión de administrador
El administrador ingresa el nombre de usuario, la contraseña y el rol personal para iniciar sesión en el sistema. En este momento, la base de datos del sistema buscará información relevante. Si el nombre de usuario, la contraseña y el rol que ingresamos son incorrectos, la base de datos le pedirá un mensaje de error Al mismo tiempo, se le pedirá al administrador que vuelva a ingresar su nombre de usuario, contraseña y rol, hasta que la contraseña de la cuenta se ingrese correctamente, y se mostrará la información de inicio de sesión exitosa. Las representaciones de inicio de sesión del administrador del sitio web se muestran en la figura
Módulo de funciones de administrador
Gestión de usuarios
El administrador puede realizar operaciones de detalle, eliminación y modificación en la gestión de usuarios. El diagrama de efecto del programa es el siguiente
gestión de tipo de casa
El administrador puede realizar operaciones de detalle, borrado y modificación en la gestión del tipo de casa. El diagrama de efecto del programa es el siguiente
Gestión de la información de la vivienda
El administrador realiza operaciones como detalle, modificación y eliminación de la gestión de la información de la vivienda. El diagrama de efecto del programa es el siguiente
informacion de vivienda
El administrador puede realizar operaciones como detallar, borrar, modificar y visualizar información de la vivienda. El diagrama de efecto del programa es el siguiente
Gestión de visualización de citas
El administrador puede modificar la gestión de reservas, detalles y otras operaciones. El diagrama de efecto del programa es el siguiente
Gestión de contratos en línea
El administrador puede modificar y detallar la gestión de contratos online. El diagrama de efecto del programa es el siguiente
Foro de intercambio
Los administradores pueden modificar el foro de intercambio, los detalles y otras operaciones. El diagrama de efecto del programa es el siguiente
Módulo de función de usuario
Después de ingresar al sistema, los usuarios pueden realizar las operaciones correspondientes en la página de inicio, el centro personal, la gestión de visualización de citas, la gestión de firma en línea, la gestión de evaluación de alquileres y la gestión de mi colección. El diagrama de efecto del programa es el siguiente
Gestión de visualización de citas
Los usuarios pueden realizar operaciones como detallar, modificar, borrar, etc. a través de la gestión de visualización de citas. El diagrama de efecto del programa es el siguiente
Gestión de contratos en línea
Los usuarios pueden realizar operaciones como detalles y eliminación a través de la gestión de contratos en línea. El diagrama de efecto del programa es el siguiente
Gestión de evaluación de alquiler
Los usuarios pueden realizar operaciones como detallar y borrar a través de la gestión de evaluación de alquileres. El diagrama de efecto del programa es el siguiente
Parte del código:
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.ZulinpingjiaEntity;
import com.entity.view.ZulinpingjiaView;
import com.service.ZulinpingjiaService;
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("/zulinpingjia")
public class ZulinpingjiaController {
@Autowired
private ZulinpingjiaService zulinpingjiaService;
/**
* 后端列表
*/
@RequestMapping("/page")
public R page(@RequestParam Map<String, Object> params,ZulinpingjiaEntity zulinpingjia,
HttpServletRequest request){
String tableName = request.getSession().getAttribute("tableName").toString();
if(tableName.equals("yonghu")) {
zulinpingjia.setYonghuming((String)request.getSession().getAttribute("username"));
}
EntityWrapper<ZulinpingjiaEntity> ew = new EntityWrapper<ZulinpingjiaEntity>();
PageUtils page = zulinpingjiaService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, zulinpingjia), params), params));
return R.ok().put("data", page);
}
/**
* 前端列表
*/
@RequestMapping("/list")
public R list(@RequestParam Map<String, Object> params,ZulinpingjiaEntity zulinpingjia, HttpServletRequest request){
EntityWrapper<ZulinpingjiaEntity> ew = new EntityWrapper<ZulinpingjiaEntity>();
PageUtils page = zulinpingjiaService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, zulinpingjia), params), params));
return R.ok().put("data", page);
}
/**
* 列表
*/
@RequestMapping("/lists")
public R list( ZulinpingjiaEntity zulinpingjia){
EntityWrapper<ZulinpingjiaEntity> ew = new EntityWrapper<ZulinpingjiaEntity>();
ew.allEq(MPUtil.allEQMapPre( zulinpingjia, "zulinpingjia"));
return R.ok().put("data", zulinpingjiaService.selectListView(ew));
}
/**
* 查询
*/
@RequestMapping("/query")
public R query(ZulinpingjiaEntity zulinpingjia){
EntityWrapper< ZulinpingjiaEntity> ew = new EntityWrapper< ZulinpingjiaEntity>();
ew.allEq(MPUtil.allEQMapPre( zulinpingjia, "zulinpingjia"));
ZulinpingjiaView zulinpingjiaView = zulinpingjiaService.selectView(ew);
return R.ok("查询租赁评价成功").put("data", zulinpingjiaView);
}
/**
* 后端详情
*/
@RequestMapping("/info/{id}")
public R info(@PathVariable("id") Long id){
ZulinpingjiaEntity zulinpingjia = zulinpingjiaService.selectById(id);
return R.ok().put("data", zulinpingjia);
}
/**
* 前端详情
*/
@RequestMapping("/detail/{id}")
public R detail(@PathVariable("id") Long id){
ZulinpingjiaEntity zulinpingjia = zulinpingjiaService.selectById(id);
return R.ok().put("data", zulinpingjia);
}
/**
* 后端保存
*/
@RequestMapping("/save")
public R save(@RequestBody ZulinpingjiaEntity zulinpingjia, HttpServletRequest request){
zulinpingjia.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
//ValidatorUtils.validateEntity(zulinpingjia);
zulinpingjiaService.insert(zulinpingjia);
return R.ok();
}
/**
* 前端保存
*/
@RequestMapping("/add")
public R add(@RequestBody ZulinpingjiaEntity zulinpingjia, HttpServletRequest request){
zulinpingjia.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
//ValidatorUtils.validateEntity(zulinpingjia);
zulinpingjiaService.insert(zulinpingjia);
return R.ok();
}
/**
* 修改
*/
@RequestMapping("/update")
public R update(@RequestBody ZulinpingjiaEntity zulinpingjia, HttpServletRequest request){
//ValidatorUtils.validateEntity(zulinpingjia);
zulinpingjiaService.updateById(zulinpingjia);//全部更新
return R.ok();
}
/**
* 删除
*/
@RequestMapping("/delete")
public R delete(@RequestBody Long[] ids){
zulinpingjiaService.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<ZulinpingjiaEntity> wrapper = new EntityWrapper<ZulinpingjiaEntity>();
if(map.get("remindstart")!=null) {
wrapper.ge(columnName, map.get("remindstart"));
}
if(map.get("remindend")!=null) {
wrapper.le(columnName, map.get("remindend"));
}
String tableName = request.getSession().getAttribute("tableName").toString();
if(tableName.equals("yonghu")) {
wrapper.eq("yonghuming", (String)request.getSession().getAttribute("username"));
}
int count = zulinpingjiaService.selectCount(wrapper);
return R.ok().put("count", count);
}
}