Proyecto de Microservicios | Diseño e Implementación de Plataforma de Información Turística Basada en Tecnología de Microservicios SpringCloud

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

1. Introducción ambiental

2. Introducción del proyecto

2.1 Introducción

2.2 Análisis de la demanda

 2.3 Arquitectura del sistema

Tres, pantalla del sistema

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

El sistema consta de diez módulos, y cada módulo se divide en módulos de sistema de microservicios que pueden ejecutarse de forma independiente, a saber, módulo de sistema de gestión en segundo plano, módulo de sistema front-end, módulo de sistema de usuario, módulo de sistema de pedidos, módulo de sistema de inicio de sesión único, módulo de sistema hotelero, módulo de sistema de billetes, módulo de sistema de billetes de tren, módulo de estrategia y atracciones.

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

 

 

Supongo que te gusta

Origin blog.csdn.net/BS009/article/details/131614438
Recomendado
Clasificación