基于java springboot+mybaits-plus+vue云旅游网站设计与实现_百战旅游网项目(1)

景点信息管理:

七、细节

八、部分关键代码:

echarts图实现:

用户管理:

信息发送:

九、数据库表:


一、项目简介

云旅游系统,是一个基于MVC的设计模式,采用前后端分离技术,前端使用Vue,后端使用Springboot所实现旅游类网站.

二、技术组合

前端:Vue

后端:SpringBoot+mybatis-plus

数据库:mysql

前台请求后台:ajax

三、环境

Mysql数据库、IDEA集成开发环境、webStrom

四、功能简介

云旅游系统,主界面通过调用各省旅游信息接口,实时动态更新旅游信息,方便用户能够快速知道目标旅游景点的相关信息。主要功能包括前台和后台功能:

1.前台功能:

  1. 用户注册、登录(用户可以编辑自己的资料,照片…)、按用户所在位置进行景点推荐,支持用户上传景点图片、短视频、游记、图集上传功能,支持景点收藏、路线收藏、攻略收藏
  2. 旅游资讯、云视频、云游记、云图集、云景点、云路线、云攻略

(可以仿新浪旅游:http://travel.sina.com.cn/lvyou/)

旅游资讯调用第三方API(比如各省旅游信息接口),这个模块可以提前给我说,我来注册,用我的AppID 、API Key、 Secret Key,到时候方便些。

3.用户可以通过模糊查询或者按地区以及按类别进行对目标地点查询

4.支持景点热度排行榜

2.后台功能(管理员):

用户管理、内容管理、业务管理、数据分析(可以用vchart,或者其他,没要求)

六、系统的演示:

系统的首页:

地图的演示:

景点信息:

景点视频信息:

用户信息展示:

管理员信息管理:

百度地图管理:

景点信息管理:

七、细节:

工程包路径:edu.mm.CloudTravel

八、部分关键代码:

echarts图实现:

package com.example.controller;

import cn.hutool.json.JSONObject;
import com.example.common.Result;
import com.example.entity.*;
import com.example.service.*;
import com.example.vo.*;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;
import java.util.*;
import java.util.stream.Collectors;

@RestController
@RequestMapping("/echarts")
public class EchartsController {

	@Resource
	private AdminInfoService adminInfoService;
	@Resource
	private UserInfoService userInfoService;
	@Resource
	private GonglueInfoService gonglueInfoService;


    @GetMapping("/get/{modelName}")
    Result<List<EchartsData>> getEchartsData(@PathVariable String modelName) {
        List<EchartsData> list = new ArrayList<>();
        switch (modelName) {
			case "adminInfo":
				List<AdminInfoVo> adminInfoList = adminInfoService.findAll();
				List<AdminInfo> adminInfoMaleList = adminInfoList.stream().filter(x -> "男".equals(x.getSex())).collect(Collectors.toList());
				Map<String, Integer> adminInfoMap = new HashMap<>(2);
				adminInfoMap.put("男", adminInfoMaleList.size());
				adminInfoMap.put("女", adminInfoList.size() - adminInfoMaleList.size());
				getPieData("管理员", list, adminInfoMap);
				getBarData("管理员", list, adminInfoMap);

				break;
			case "userInfo":
				List<UserInfoVo> userInfoList = userInfoService.findAll();
				List<UserInfo> userInfoMaleList = userInfoList.stream().filter(x -> "男".equals(x.getSex())).collect(Collectors.toList());
				Map<String, Integer> userInfoMap = new HashMap<>(2);
				userInfoMap.put("男", userInfoMaleList.size());
				userInfoMap.put("女", userInfoList.size() - userInfoMaleList.size());
				getPieData("用户", list, userInfoMap);
				getBarData("用户", list, userInfoMap);

				break;

			case "gonglueInfo":
				List<GonglueInfoVo> gonglueInfoList = gonglueInfoService.findAll();
				Map<String, Integer> gonglueInfoMap = new HashMap<>(2);
				for (GonglueInfo gonglueInfo : gonglueInfoList) {
					Integer value = gonglueInfoMap.get(gonglueInfo.getName());
					if (value != null && value != 0) {
						gonglueInfoMap.put(gonglueInfo.getName(), value + 1);
					} else {
						gonglueInfoMap.put(gonglueInfo.getName(), 1);
					}
				}
				getPieData("旅游攻略", list, gonglueInfoMap);
				getBarData("旅游攻略", list, gonglueInfoMap);

				break;

            default:
                break;
        }
        return Result.success(list);
    }

    @GetMapping("/options")
        Result<List<Map<String, String>>> getOptions() {
        List<Map<String, String>> options = new ArrayList<>();

		Map<String, String> optionMap1 = new HashMap<>();
		optionMap1.put("value", "adminInfo");
		optionMap1.put("label", "管理员信息");
		options.add(optionMap1);
		Map<String, String> optionMap2 = new HashMap<>();
		optionMap2.put("value", "userInfo");
		optionMap2.put("label", "用户信息");
		options.add(optionMap2);
		Map<String, String> optionMap3 = new HashMap<>();
		optionMap3.put("value", "gonglueInfo");
		optionMap3.put("label", "旅游攻略信息");
		options.add(optionMap3);

        return Result.success(options);
    }

    private void getPieData(String name, List<EchartsData> pieList, Map<String, Integer> dataMap) {
        EchartsData pieData = new EchartsData();
        EchartsData.Series series = new EchartsData.Series();

        Map<String, String> titleMap = new HashMap<>(2);
        titleMap.put("text", name + "信息");
        pieData.setTitle(titleMap);

        series.setName(name + "比例");
        series.setType("pie");
        series.setRadius("55%");

        List<Object> objects = new ArrayList<>();
        List<Object> legendList = new ArrayList<>();
        for (String key : dataMap.keySet()) {
            Integer value = dataMap.get(key);
            objects.add(new JSONObject().putOpt("name", key).putOpt("value", value));
            legendList.add(key);
        }
        series.setData(objects);

        pieData.setSeries(Collections.singletonList(series));
        Map<String, Boolean> map = new HashMap<>();
        map.put("show", true);
        pieData.setTooltip(map);

        Map<String, Object> legendMap = new HashMap<>(4);
        legendMap.put("orient", "vertical");
        legendMap.put("x", "left");
        legendMap.put("y", "center");
        legendMap.put("data", legendList);
        pieData.setLegend(legendMap);



### 笔者福利

##### 以下是小编自己针对马上即将到来的金九银十准备的一套“面试宝典”,不管是技术还是HR的问题都有针对性的回答。

**有了这个,面试踩雷?不存在的!**

##### 回馈粉丝,诚意满满!!!

![](https://img-blog.csdnimg.cn/img_convert/86d1056f19121a4573dbf2ca1595c41c.webp?x-oss-process=image/format,png)
![](https://img-blog.csdnimg.cn/img_convert/23b8a1811b7eb61c4525ab7bc4ed4515.webp?x-oss-process=image/format,png)
![](https://img-blog.csdnimg.cn/img_convert/830d1b5cb853136b1210b580ebb3edd4.webp?x-oss-process=image/format,png)
![](https://img-blog.csdnimg.cn/img_convert/b277beb283bf79a258e7adb2fe29712a.webp?x-oss-process=image/format,png)

p);



### 笔者福利

##### 以下是小编自己针对马上即将到来的金九银十准备的一套“面试宝典”,不管是技术还是HR的问题都有针对性的回答。

**有了这个,面试踩雷?不存在的!**

##### 回馈粉丝,诚意满满!!!

[外链图片转存中...(img-fnIreeR8-1714652366500)]
[外链图片转存中...(img-z76AFj4E-1714652366501)]
[外链图片转存中...(img-uXAXqos7-1714652366501)]
[外链图片转存中...(img-LFYhgY7m-1714652366501)]

> **本文已被[CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】](https://bbs.csdn.net/topics/618154847)收录**
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值