Página de inicio del autor: Programación de las mil grullas de papel
Sobre el autor: Java, front-end y Python se han desarrollado durante muchos años y han trabajado como ingeniero senior, gerente de proyectos y arquitecto.
Contenido principal: desarrollo de proyectos de Java, desarrollo de proyectos de Python, datos universitarios y desarrollo de proyectos de IA, diseño de proyectos de MCU, arreglo de tecnología de entrevistas, uso compartido de la última tecnología
Favoritos, likes, no se pierdan, es bueno seguir al autor
Obtenga el código fuente al final del artículo
Número de artículo: BS-PT-087
Tabla de contenido
En cuarto lugar, la pantalla del código central
5. Exhibición de trabajos relacionados
1. Introducción ambiental
Configuración regional: Java: jdk1.8
Base de datos: Mysql: mysql5.7
Servidor de aplicaciones: Tomcat: tomcat8.5.31
Herramientas de desarrollo: IDEA o eclipse
Tecnología de desarrollo de fondo: sistema de arquitectura de microservicio springcloud
Tecnología de desarrollo front-end: vue+elementui
2. Introducción del proyecto
2.1 Introducción
El turismo, como un importante módulo de servicios, juega un papel importante en la promoción del desarrollo económico de mi país.El impacto de la epidemia en los últimos años ha llevado a un completo estancamiento de la industria del turismo, lo que ha tenido un gran impacto en el desarrollo económico del país. Por lo tanto, la recuperación de la industria del turismo se ha acelerado. La sinergia multifacética para promover el desarrollo de la industria del turismo puede dar un gran impulso al desarrollo saludable y estable de la economía del país. La industria de TI puede ayudar al desarrollo de la industria del turismo. Puede utilizar la tecnología madura existente para crear una plataforma de información turística amigable e interactiva para el usuario, resolver la contradicción entre los usuarios y el turismo, y realizar la visualización de información entre los usuarios y el turismo. como la seguridad de la información y el servicio personalizado brindan a los usuarios una experiencia de viaje más amigable y cómoda.
Este trabajo diseña e implementa un sistema de plataforma de información turística basado en la arquitectura de microservicios SpringCloud, de acuerdo a las plataformas relevantes existentes en el mercado, analizando y resumiendo sus ventajas y desventajas, se determina la estructura funcional del sistema. Este sistema presta más atención a la facilidad de uso y la interacción del usuario, y divide el sistema en módulos de microservicios, como servicio básico, servicio de pedidos, tarea programada, centro de usuario y servicio de pago. La interfaz de la interfaz de usuario de la plataforma de información turística está bellamente diseñada, la página está ordenada y se mejora la comodidad visual del usuario; el sistema tiene funciones completas y una operación simple, lo que aumenta la facilidad de uso y la versatilidad de la plataforma. Además, se desarrolla utilizando la arquitectura de microservicios SpringCloud para aumentar la escalabilidad de la plataforma.
2.2 Análisis de la demanda
Módulo de sistema de gestión en segundo plano: gestión de pantalla frontal, gestión de usuarios, gestión de administradores, gestión de hoteles, gestión de billetes de avión, gestión de billetes de tren, gestión de atracciones estratégicas, gestión de pedidos, estadísticas del sistema, gestión de administradores y otras funciones. Incluye la gestión de la recepción del usuario, la información del usuario, la información del administrador, la información del hotel, la información de los boletos aéreos, la información de la estrategia y los lugares panorámicos, la información de los datos del sistema y la información de los pedidos.
Módulo de sistema de front-end: incluye pantalla de front-end, módulo de usuario, módulo de hotel, módulo de boletos aéreos, módulo de boleto de tren, módulo de atracción de estrategia, módulo de pedidos, etc. Principalmente, los usuarios y turistas pueden registrar cuentas en el sistema de front-end, Inicie sesión en el sistema y busque información sobre todos los productos (incluidos hoteles, boletos aéreos, boletos de tren, boletos para lugares panorámicos), compre bienes, verifique pedidos y otras operaciones. Módulo del sistema de membresía: los usuarios pueden consultar sobre pedidos en el sistema, administrar pedidos, cupones y otra información.
Módulo del sistema de usuarios: los usuarios pueden registrar cuentas, iniciar sesión y modificar información personal como contraseñas, avatares, etc. Los usuarios que no han iniciado sesión solo pueden disfrutar de algunas funciones del sistema, como consultar información del hotel, y no pueden reservar habitaciones de hotel .
Módulo de sistema de pedidos: los usuarios del sistema pueden buscar o reservar hoteles, boletos aéreos, boletos de tren, boletos de lugares pintorescos, etc. en este sistema. Luego de que se complete la compra o la reserva, habrá la información del pedido correspondiente. Los usuarios pueden ver o modificar el pedido. información a través del pedido o de acuerdo con la información de la cuenta.
Módulo de sistema de inicio de sesión único: en este sistema de aplicaciones múltiples, los usuarios solo necesitan iniciar sesión una vez para acceder a todos los sistemas en esta plataforma.
Módulo de sistema hotelero: los usuarios pueden ver la información del hotel, incluida la búsqueda de la información del hotel que desean por ciudad, nombre, calificación, ubicación, etc., y también proporcionar clasificaciones de información del hotel para ayudar a los usuarios a encontrar rápidamente la información del hotel que desean. El sistema del hotel primero busca el hotel y luego busca la información de la habitación del hotel para completar la reserva de la habitación.
Módulo de sistema de boletos: los usuarios pueden consultar la información del boleto por fecha, ciudad de salida y ciudad de destino como condiciones de consulta.
Módulo de sistema de boletos de tren: los usuarios pueden consultar la información del boleto de tren por fecha, ciudad de salida y ciudad de destino como condiciones de consulta.
Módulo Raiders y Atracciones: Este módulo incluye la compra de entradas a las atracciones y el reparto de Raiders. Los boletos de atracción se pueden buscar de forma aproximada por ciudad y nombre de lugar pintoresco. Al mismo tiempo, se configura una lista caliente de lugares escénicos para mostrar los lugares escénicos más populares recientemente para atraer a los usuarios a registrarse.
Su diagrama de módulo funcional principal se muestra en la Figura 1
Figura 1 Diagrama del módulo funcional
2.3 Arquitectura del sistema
Esta plataforma de información turística se basa en el proyecto web desplegado por la tecnología de microservicios spring cloud.De acuerdo con la demanda esperada, la dificultad de desarrollo y los requisitos de rendimiento, la forma arquitectónica adoptada es una arquitectura en capas. El despliegue de arquitectura en capas específico del sistema se muestra en la Figura 2.
Figura 2 Diagrama de implementación del sistema
El sistema se divide en usuarios front-end y back-end. Los usuarios de primer plano son principalmente usuarios ordinarios, y los usuarios ordinarios incluyen usuarios registrados y usuarios no registrados. Dependiendo de si ha iniciado sesión o no, el alcance del acceso del usuario y las funciones que se pueden utilizar son diferentes. Los usuarios en segundo plano son principalmente personal de mantenimiento en segundo plano y usuarios administradores en segundo plano. La Figura 3 y la Figura 4 muestran los recursos del ámbito de acceso del usuario de los extremos delantero y trasero.
Figura 3 Diagrama de caso de uso de la recepción de la plataforma de información turística
Figura 4 Backstage de la plataforma de información de viajes
Tres, pantalla del sistema
Registro e inicio de sesión de usuario front-end
Gestión de módulos hoteleros
Pantalla de información de boletos
modulo de billete de tren
Módulo de información de atracción
Módulo de estrategia
Gestión tras bambalinas
Otro ligeramente
En cuarto lugar, la pantalla del código central
package com.lypt.controller;
import com.lypt.api.CommonResult;
import com.lypt.pojo.springcloud_graduation.User;
import com.lypt.pojo.vo.PhoneCode;
import com.lypt.service.UserService;
import com.lypt.uitls.RandomUtil;
import com.lypt.uitls.SMSUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@RestController
@RequestMapping("/user")
public class UserController {
@Autowired
public UserService userService;
@Autowired
SMSUtils smsUtils;
/**
* 登录
* @param user
* @return
*/
@RequestMapping(value = "/login")
public CommonResult login( User user) {
System.out.println(user.toString());
User user1 = userService.userByUsernameUserPass(user);
if (user1 != null)
return CommonResult.success(user1);
else
return CommonResult.validateFailed();
}
/**
* 获取所有用户信息
* @return
*/
@RequestMapping("/getAll")
public List<User> getAll(){
List<User> list = userService.getAll();
return list;
}
/**
* 根据用户uid查询用户信息
* @return
*/
@RequestMapping("/getUserByUid")
public CommonResult getUserByUid(Integer uid){
User userByUid = userService.getUserByUid(uid);
return CommonResult.success(userByUid);
}
/**
* 修改用户信息
* @return
*/
@RequestMapping("/updateUser")
public CommonResult updateUser(User user){
User user1 = userService.updateUser(user);
if (user1 != null){
return CommonResult.success(user1);
}else {
return CommonResult.failed();
}
}
/**
* 添加用户信息
* @return
*/
@RequestMapping("/addUser")
public CommonResult addUser(User user){
User user1 = userService.addUser(user);
if (user1 != null){
return CommonResult.success(user1);
}else {
return CommonResult.failed();
}
}
/**
* 发送短信验证码
* @param phone
* @return
*/
@RequestMapping("/code")
public CommonResult code(String phone){
//获取长度为四的验证码
String getcode = RandomUtil.getcode(4);
//发送短信验证码
smsUtils.sendMsg(phone,getcode);
PhoneCode phoneCode = new PhoneCode();
phoneCode.setCode(getcode);
phoneCode.setPhone(phone);
//讲手机号和验证码发送给前台
return CommonResult.success(phoneCode);
}
}
package com.lypt.controller.admin;
import com.lypt.api.CommonResult;
import com.lypt.pojo.vo.*;
import com.lypt.service.*;
import com.lypt.uitls.ComparatorSort;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
@RestController
@RequestMapping("/admin/echarts")
public class AdminEchartsController {
@Autowired
TrainOrderService trainOrderService;
@Autowired
ScenicOrderService scenicOrderService;
@Autowired
PlaneOrderService planeOrderService;
@Autowired
BookOrderService bookOrderService;
@Autowired
UserService userService;
@RequestMapping("/topData")
public CommonResult topData(){
AdminTopData adminTopData = new AdminTopData();
//用户数量
adminTopData.setUserNumber(userService.AllUserNumber());
//一周销售额
Double totalPrice = 0.00;
totalPrice+= trainOrderService.weekData();
totalPrice+= scenicOrderService.weekData();
totalPrice+=planeOrderService.weekData();
totalPrice+= bookOrderService.weekData();
adminTopData.setWeekSalesVolume(totalPrice);
AllTypeOrderData allTypeOrderData1 = trainOrderService.allOrderData();
AllTypeOrderData allTypeOrderData2 = scenicOrderService.allOrderData();
AllTypeOrderData allTypeOrderData3 = planeOrderService.allOrderData();
AllTypeOrderData allTypeOrderData4 = bookOrderService.allOrderData();
//所有订单数量
int totalNumber = 0;
totalNumber+=allTypeOrderData1.getTotal();
totalNumber+=allTypeOrderData2.getTotal();
totalNumber+=allTypeOrderData3.getTotal();
totalNumber+=allTypeOrderData4.getTotal();
adminTopData.setAllOrderNumber(totalNumber);
//总销售额
Double allOrderPrice = 0.00;
allOrderPrice+=allTypeOrderData1.getTotalPrice();
allOrderPrice+=allTypeOrderData2.getTotalPrice();
allOrderPrice+=allTypeOrderData3.getTotalPrice();
allOrderPrice+=allTypeOrderData4.getTotalPrice();
adminTopData.setAllSalesVolume(allOrderPrice);
return CommonResult.success(adminTopData);
}
@RequestMapping("/weekBuyRanking")
public CommonResult weekBuyRanking(){
WeekSalesVolume weekSalesVolume1 = new WeekSalesVolume();
WeekSalesVolume weekSalesVolume2 = new WeekSalesVolume();
WeekSalesVolume weekSalesVolume3 = new WeekSalesVolume();
WeekSalesVolume weekSalesVolume4 = new WeekSalesVolume();
weekSalesVolume1.setTypeName("酒店");
weekSalesVolume1.setMoney(bookOrderService.weekData());
weekSalesVolume2.setTypeName("机票");
weekSalesVolume2.setMoney(planeOrderService.weekData());
weekSalesVolume3.setTypeName("火车票");
weekSalesVolume3.setMoney(trainOrderService.weekData());
weekSalesVolume4.setTypeName("景点门票");
weekSalesVolume4.setMoney(scenicOrderService.weekData());
ArrayList<Object> list = new ArrayList<>();
list.add(weekSalesVolume1);
list.add(weekSalesVolume2);
list.add(weekSalesVolume3);
list.add(weekSalesVolume4);
ComparatorSort comparatorSort = new ComparatorSort();
Collections.sort(list,comparatorSort);
return CommonResult.success(list);
}
@RequestMapping("/allBuyTotal")
public CommonResult allBuyTotal(){
ArrayList<Object> list = new ArrayList<>();
AllSalesVolume allSalesVolume1 = new AllSalesVolume();
AllSalesVolume allSalesVolume2 = new AllSalesVolume();
AllSalesVolume allSalesVolume3 = new AllSalesVolume();
AllSalesVolume allSalesVolume4 = new AllSalesVolume();
allSalesVolume1.setName("酒店");
allSalesVolume1.setValue(bookOrderService.allOrderData().getTotalPrice());
allSalesVolume2.setName("机票");
allSalesVolume2.setValue(planeOrderService.allOrderData().getTotalPrice());
allSalesVolume3.setName("火车票");
allSalesVolume3.setValue(trainOrderService.allOrderData().getTotalPrice());
allSalesVolume4.setName("景区门票");
allSalesVolume4.setValue(scenicOrderService.allOrderData().getTotalPrice());
list.add(allSalesVolume1);
list.add(allSalesVolume2);
list.add(allSalesVolume3);
list.add(allSalesVolume4);
return CommonResult.success(list);
}
@RequestMapping("/weekScenicDay")
public CommonResult weekScenicDay(){
WeekOnDay weekOnDay = scenicOrderService.weekOrderNumber();
return CommonResult.success(weekOnDay);
}
}
package com.lypt.controller.admin;
import com.github.pagehelper.PageInfo;
import com.lypt.api.CommonResult;
import com.lypt.pojo.springcloud_graduation.Manage;
import com.lypt.pojo.vo.Page;
import com.lypt.pojo.vo.Users;
import com.lypt.pojo.vo.Users2;
import com.lypt.service.ManageService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.PropertySource;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
@PropertySource("classpath:nginxconfig.properties")
@RestController
@RequestMapping("/admin")
public class AdminManageController {
@Value("${pichost}")
private String pichost;
@Autowired
ManageService manageService;
@RequestMapping("/userInfo")
public CommonResult userInfo(){
ArrayList<String> list = new ArrayList<>();
list.add("admin");
Users user = new Users();
user.setUsername("admin");
user.setAvatar("https://wpimg.wallstcn.com/f778738c-e4f8-4870-b634-56703b4acafe.gif");
user.setPermissions(list);
return CommonResult.success(user);
}
@RequestMapping("/login")
public CommonResult login(){
Users2 users2 = new Users2();
users2.setAccessToken("admin");
return CommonResult.success(users2);
}
@RequestMapping("/manage/getAllList")
public CommonResult getAllList(Page page,Manage manage){
List<Manage> allList = manageService.getAllList(page, manage);
PageInfo pageInfo = new PageInfo(allList);
return CommonResult.success(pageInfo);
}
/**
* 上传图片
* @param tupian
* @return
*/
@RequestMapping("/manage/uploadImg")
public CommonResult uploadFile(MultipartFile tupian){
System.out.println("nihao");
String url=null;
if(tupian!=null&&!tupian.isEmpty()){
String name= UUID.randomUUID().toString();//生成随机的uuid作为文件名
int pos=tupian.getOriginalFilename().lastIndexOf(".");//后缀的位置
String fileName=name+tupian.getOriginalFilename().substring(pos);//得到文件名
try {
tupian.transferTo(new File("D:\\date\\images\\bysj\\user\\"+fileName));
} catch (IOException e) {
e.printStackTrace();
}
url=pichost+"bysj/user/"+fileName;
System.out.println(url);
}
return CommonResult.success(url);
}
/**
* 添加/修改管理员
* @param manage
* @return
*/
@RequestMapping("/manage/addManage")
public CommonResult addManage(Manage manage){
Boolean aBoolean = manageService.addManage(manage);
if (aBoolean){
return CommonResult.success("添加/修改管理员成功");
}else {
return CommonResult.failed();
}
}
}
5. Exhibición de trabajos relacionados
Proyectos prácticos basados en el desarrollo de Java, el desarrollo de Python, el desarrollo de PHP, el desarrollo de C# y otros desarrollos de lenguajes relacionados
Proyectos prácticos front-end desarrollados en base a Nodejs, Vue y otras tecnologías front-end
Trabajos relacionados basados en el subprograma WeChat y el desarrollo de aplicaciones Android APP
Desarrollo y aplicación de IoT integrado basado en 51 microcomputadoras de un solo chip
Aplicación inteligente de IA basada en varios algoritmos
Diversos sistemas de gestión y recomendación de datos basados en big data