基于Java+SpringBoot+vue的在线动漫信息平台设计与实现【源码(完整源码请私聊)+论文+演示视频+包运行成功】

news2025/3/1 22:02:42

 博主介绍:专注于Java技术领域和毕业项目实战

🍅文末获取源码联系🍅

👇🏻 精彩专栏推荐订阅👇🏻 不然下次找不到哟

Java项目精品实战案例(300套)

目录

一、效果演示

二、前言介绍

三、主要技术

四、系统设计(部分)

4.1、主要功能模块设计         

4.2、系统登录设计

五、运行截图

5.1、前台功能模块

5.1.1、注册界面

5.1.2、登录界面

5.1.3、前台首页界面

5.1.4、个人中心

5.1.5、热门动漫

5.1.6、文章专栏

5.2、会员后台功能模块

5.2.1、个人信息

5.2.2、会员分享管理

5.3、管理员功能模块

5.3.1、个人信息

5.3.2、热门动漫信息

5.3.3、会员信息

六、数据库设计(部分)

七、代码参考

八、源码获取


一、效果演示

基于springboot+vue的在线动漫信息交流分享平台

二、前言介绍

随着社会互联网技术的快速发展,每个行业都在努力与现代先进技术接轨,通过科技手段提高自身的优势;对于在线动漫信息平台当然也不能排除在外,随着网络技术的不断成熟,带动了在线动漫信息平台,它彻底改变了过去传统的管理方式,不仅使服务管理难度变低了,还提升了管理的灵活性。这种个性化的平台特别注重交互协调与管理的相互配合,激发了管理人员的创造性与主动性,对在线动漫信息平台而言非常有利。

三、主要技术

技术名作用
SpringBoot后端框架
Vue前端框架
MySQL数据库

四、系统设计(部分)

4.1、主要功能模块设计         

 

4.2、系统登录设计

 

五、运行截图

5.1、前台功能模块

5.1.1、注册界面

图5-1注册界面

5.1.2、登录界面

图5-2登陆界面

5.1.3、前台首页界面

会员登录进入到网站前台界面,可以进行查看首页、热门动漫、文章专栏、会员分享、论坛信息、个人中心、后台管理等功能模块,如图5-3所示。

图5-3前台首页界面

5.1.4、个人中心

图5-4 个人中心界面

5.1.5、热门动漫

5-5热门动漫界面图

5.1.6、文章专栏

图5-6文章专栏界面 

5.2、会员后台功能模块

5.2.1、个人信息

图5-8会员后台个人中心界面

5.2.2、会员分享管理

图5-9会员分享管理界面

5.3、管理员功能模块

管理员通过后台登录窗口进行输入自己的账号信息、密码、角色等信息,进行登录,如图5-10所示。

图5-10管理员登录界面

5.3.1、个人信息

图5-11个人信息界面

5.3.2、热门动漫信息

图5-12热门动漫信息界面

5.3.3、会员信息

图5-13会员信息界面

管理员通过系统管理页面查看轮播图/动漫资讯等进行上传图片进行添加、删除、修改以及查看并对整个系统进行维护等操作,进行查看或添加修改或删除,如图5-14所示。

5-14系统管理界面图

六、数据库设计(部分)

每个数据库的应用它们都是和区分开的,当运行到一定的程序当中,它就会与自己相关的协议与客户端进行通讯。那么这个系统就会对使这些数据进行连接。当我们选择哪个桥段的时候,接下来就会简单的叙述这个数据库是如何来创建的。

热门动漫信息:动漫名称、分类、标签、图片、作者、视频、更新日期、操作实体E-R图,如图4.6所示。

     图4.6热门动漫信息E-R图

会员信息:用户名、密码、姓名、性别、头像、手机、邮箱、个人签名、操作E-R图,如图4.7所示。

   图4.7会员信息E-R图

七、代码参考

package com.controller;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.commons.lang3.StringUtils;
import org.json.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.ResourceUtils;
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.annotation.IgnoreAuth;
import com.baidu.aip.face.AipFace;
import com.baidu.aip.face.MatchRequest;
import com.baidu.aip.util.Base64Util;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.entity.ConfigEntity;
import com.service.CommonService;
import com.service.ConfigService;
import com.utils.BaiduUtil;
import com.utils.FileUtil;
import com.utils.R;

/**
 * 通用接口
 */
@RestController
public class CommonController{
	@Autowired
	private CommonService commonService;
	
	@Autowired
	private ConfigService configService;
	
	private static AipFace client = null;
	
	private static String BAIDU_DITU_AK = null;
	
	@RequestMapping("/location")
	public R location(String lng,String lat) {
		if(BAIDU_DITU_AK==null) {
			BAIDU_DITU_AK = configService.selectOne(new EntityWrapper<ConfigEntity>().eq("name", "baidu_ditu_ak")).getValue();
			if(BAIDU_DITU_AK==null) {
				return R.error("请在配置管理中正确配置baidu_ditu_ak");
			}
		}
		Map<String, String> map = BaiduUtil.getCityByLonLat(BAIDU_DITU_AK, lng, lat);
		return R.ok().put("data", map);
	}
	
	/**
	 * 人脸比对
	 * 
	 * @param face1 人脸1
	 * @param face2 人脸2
	 * @return
	 */
	@RequestMapping("/matchFace")
	public R matchFace(String face1, String face2) {
		if(client==null) {
			/*String AppID = configService.selectOne(new EntityWrapper<ConfigEntity>().eq("name", "AppID")).getValue();*/
			String APIKey = configService.selectOne(new EntityWrapper<ConfigEntity>().eq("name", "APIKey")).getValue();
			String SecretKey = configService.selectOne(new EntityWrapper<ConfigEntity>().eq("name", "SecretKey")).getValue();
			String token = BaiduUtil.getAuth(APIKey, SecretKey);
			if(token==null) {
				return R.error("请在配置管理中正确配置APIKey和SecretKey");
			}
			client = new AipFace(null, APIKey, SecretKey);
			client.setConnectionTimeoutInMillis(2000);
			client.setSocketTimeoutInMillis(60000);
		}
		JSONObject res = null;
		try {
			File file1 = new File(ResourceUtils.getFile("classpath:static/upload").getAbsolutePath()+"/"+face1);
			File file2 = new File(ResourceUtils.getFile("classpath:static/upload").getAbsolutePath()+"/"+face2);
			String img1 = Base64Util.encode(FileUtil.FileToByte(file1));
			String img2 = Base64Util.encode(FileUtil.FileToByte(file2));
			MatchRequest req1 = new MatchRequest(img1, "BASE64");
			MatchRequest req2 = new MatchRequest(img2, "BASE64");
			ArrayList<MatchRequest> requests = new ArrayList<MatchRequest>();
			requests.add(req1);
			requests.add(req2);
			res = client.match(requests);
			System.out.println(res.get("result"));
		} catch (FileNotFoundException e) {
			e.printStackTrace();
			return R.error("文件不存在");
		} catch (IOException e) {
			e.printStackTrace();
		} 
		return R.ok().put("data", com.alibaba.fastjson.JSONObject.parse(res.get("result").toString()));
	}
    
	/**
	 * 获取table表中的column列表(联动接口)
	 * @param table
	 * @param column
	 * @return
	 */
	@IgnoreAuth
	@RequestMapping("/option/{tableName}/{columnName}")
	public R getOption(@PathVariable("tableName") String tableName, @PathVariable("columnName") String columnName,String level,String parent) {
		Map<String, Object> params = new HashMap<String, Object>();
		params.put("table", tableName);
		params.put("column", columnName);
		if(StringUtils.isNotBlank(level)) {
			params.put("level", level);
		}
		if(StringUtils.isNotBlank(parent)) {
			params.put("parent", parent);
		}
		List<String> data = commonService.getOption(params);
		return R.ok().put("data", data);
	}
	
	/**
	 * 根据table中的column获取单条记录
	 * @param table
	 * @param column
	 * @return
	 */
	@IgnoreAuth
	@RequestMapping("/follow/{tableName}/{columnName}")
	public R getFollowByOption(@PathVariable("tableName") String tableName, @PathVariable("columnName") String columnName, @RequestParam String columnValue) {
		Map<String, Object> params = new HashMap<String, Object>();
		params.put("table", tableName);
		params.put("column", columnName);
		params.put("columnValue", columnValue);
		Map<String, Object> result = commonService.getFollowByOption(params);
		return R.ok().put("data", result);
	}
	
	/**
	 * 修改table表的sfsh状态
	 * @param table
	 * @param map
	 * @return
	 */
	@RequestMapping("/sh/{tableName}")
	public R sh(@PathVariable("tableName") String tableName, @RequestBody Map<String, Object> map) {
		map.put("table", tableName);
		commonService.sh(map);
		return R.ok();
	}
	
	/**
	 * 获取需要提醒的记录数
	 * @param tableName
	 * @param columnName
	 * @param type 1:数字 2:日期
	 * @param map
	 * @return
	 */
	@IgnoreAuth
	@RequestMapping("/remind/{tableName}/{columnName}/{type}")
	public R remindCount(@PathVariable("tableName") String tableName, @PathVariable("columnName") String columnName, 
						 @PathVariable("type") String type,@RequestParam Map<String, Object> map) {
		map.put("table", tableName);
		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));
			}
		}
		
		int count = commonService.remindCount(map);
		return R.ok().put("count", count);
	}
	
	/**
	 * 单列求和
	 */
	@IgnoreAuth
	@RequestMapping("/cal/{tableName}/{columnName}")
	public R cal(@PathVariable("tableName") String tableName, @PathVariable("columnName") String columnName) {
		Map<String, Object> params = new HashMap<String, Object>();
		params.put("table", tableName);
		params.put("column", columnName);
		Map<String, Object> result = commonService.selectCal(params);
		return R.ok().put("data", result);
	}
	
	/**
	 * 分组统计
	 */
	@IgnoreAuth
	@RequestMapping("/group/{tableName}/{columnName}")
	public R group(@PathVariable("tableName") String tableName, @PathVariable("columnName") String columnName) {
		Map<String, Object> params = new HashMap<String, Object>();
		params.put("table", tableName);
		params.put("column", columnName);
		List<Map<String, Object>> result = commonService.selectGroup(params);
		return R.ok().put("data", result);
	}
	
	/**
	 * (按值统计)
	 */
	@IgnoreAuth
	@RequestMapping("/value/{tableName}/{xColumnName}/{yColumnName}")
	public R value(@PathVariable("tableName") String tableName, @PathVariable("yColumnName") String yColumnName, @PathVariable("xColumnName") String xColumnName) {
		Map<String, Object> params = new HashMap<String, Object>();
		params.put("table", tableName);
		params.put("xColumn", xColumnName);
		params.put("yColumn", yColumnName);
		List<Map<String, Object>> result = commonService.selectValue(params);
		return R.ok().put("data", result);
	}
	
}

八、源码获取

大家点赞、收藏、关注、评论啦 、查看文章结尾👇🏻获取联系方式👇🏻

精彩专栏推荐订阅:下方专栏👇🏻👇🏻👇🏻👇🏻

Java项目精品实战案例(300套)

私信我即可打包获取300多个项目源码+论文+演示视频~

​​​

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/412359.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

一文吃透泛型

本文已经收录到Github仓库&#xff0c;该仓库包含计算机基础、Java基础、多线程、JVM、数据库、Redis、Spring、Mybatis、SpringMVC、SpringBoot、分布式、微服务、设计模式、架构、校招社招分享等核心知识点&#xff0c;欢迎star~ Github地址 如果访问不了Github&#xff0c…

CVE-2017-10271 WebLogic XMLDecoder反序列化漏洞

靶场环境&#xff1a;vulnstack靶机-委派靶场 漏洞描述 CVE-2017-10271漏洞产生的原因大致是Weblogic的WLS Security组件对外提供webservice服务&#xff0c;其中使用了XMLDecoder来解析用户传入的XML数据&#xff0c;在解析的过程中出现反序列化漏洞&#xff0c;导致可执行任…

【RabbitMQ】Spring整合RabbitMQ、Spring实现RabbitMQ五大工作模式(万字长文)

目录 一、准备 1、创建maven项目​编辑 2、引入依赖 3、创建配置文件 1.RabbitMQ配置文件 2.生产者项目配置文件 3.消费者项目配置文件 二、生产者xml中文件创建队列 三、生产者xml文件中创建交换机以及绑定队列 1、创建交换机 2、绑定队列 四、消费者xml文件中创建…

第五十八章 线段树(一)

第五十八章 线段树&#xff08;一&#xff09;一、树状数组的缺陷二、线段树的作用三、线段树的基本构成1、节点定义2、线段树的结构四、线段树的重要函数1、构造线段树——bulid函数2、查询区间——query函数3、单点修改——modify函数五、例题一、树状数组的缺陷 在前面两个…

flink 的 State

目录 一、前言 二、什么是State 2.1&#xff1a;什么时候需要历史数据 2.2&#xff1a;为什么要容错&#xff0c;以及checkpoint如何进行容错 2.3&#xff1a;state basckend 又是什么 三、有哪些常见的是 State 四、 State的使用 五、State backend 5.1 MemoryState…

进程,线程,调度和调度算法基本知识

进程 我们编写的代码只是一个存储在硬盘的静态文件&#xff0c;通过编译后就会生成二进制可执行文件&#xff0c;当我们运行这个可执行文件后&#xff0c;它会被装载到内存中&#xff0c;接着 CPU 会执行程序中的每一条指令&#xff0c;那么这个运行中的程序&#xff0c;就被称…

【C++】内联函数理解

内联函数 内联函数的使用是对于C语言中宏函数的一种改进&#xff0c;他继承了宏的优点并避免了宏的缺点。 宏的优点&#xff1a;a. 代码复用性高 b. 宏函数减少栈帧建立&#xff0c;提高效率 宏的缺点&#xff1a;a. 可读性差 b. 没有类型安全检查 c. 不方便调试 C基本不再建议…

银行数字化转型导师坚鹏:金融数据治理、数据安全政策解读

金融数据治理、数据安全政策解读及大数据应用课程背景&#xff1a; 很多银行存在以下问题&#xff1a; 不知道如何准确理解金融数据治理及数据安全相关政策 不清楚金融数据治理及数据安全相关政策对银行有什么影响&#xff1f; 不清楚如何有效应用金融数据治理及数据安全相关…

软考软件设计师 下午试题二笔记

E-R图基本图形元素 实体 一个实体的存在要以另一个实体存在为前提&#xff0c;这个就是弱实体&#xff0c;比如家属和职工&#xff0c;家属的存在就是依赖于职工 属性 属性带下划线的是主键 联系 三个实体之间的联系 试题二问题一例题 问题二 将er图转成关系模式就是问题二答…

Cell Discovery:人类特异基因促进大脑皮层折叠新机制

在人类进化过程中&#xff0c;新皮层的扩张与智力的提高和认知功能的改善密切相关。这种扩张的一个关键方面是大脑皮层沟回的形成&#xff0c;它使扩张的皮质表面积能够适应有限的颅骨空间。这些进化特征主要依赖于多种神经干细胞和祖细胞亚型及其神经源性分裂产生的更多数量的…

《计算机网络-自顶向下》05. 网络层-控制平面

文章目录路由控制方式每路由控制逻辑集中式控制路由选择算法LS —— 链路状态路由选择算法DV —— 距离向量路由选择算法LS 和 DV 算法的比较自治系统内部路由协议RIPOSPF自治系统外部路由协议&#xff1a;BGP通告 BGP 路由信息选择最好的路由相关术语热土豆选择路由选择算法&a…

Swagger教程

Swagger 目标 Swagger简介【了解】 Springboot整合swagger【掌握】 Swagger 常用注解【掌握】 一、Swagger简介 ​ Swagger 是一系列 RESTful API 的工具&#xff0c;通过 Swagger 可以获得项目的⼀种交互式文档&#xff0c;客户端 SDK 的自 动生成等功能。 ​ Swagger …

TryHackMe-Year of the Owl(Windows渗透测试)

Year of the Owl 当迷宫在你面前&#xff0c;你迷失了方向时&#xff0c;有时跳墙思考是前进的方向。 端口扫描 循例 nmap SMB枚举 smbmap enum4linux也什么都没有 Web枚举 80端口 gobuster扫到一堆403&#xff0c;并没有什么有用的信息 443端口与80端口一致 47001端口依…

【SQL】公网远程访问局域网SQL Server数据库【无公网IP内网穿透】

目录 1.前言 2.本地安装和设置SQL Server 2.1 SQL Server下载 2.2 SQL Server本地连接测试 2.3 Cpolar内网穿透的下载和安装 2.3 Cpolar内网穿透的注册 3.1 Cpolar云端设置 3.2 Cpolar本地设置 4.公网访问测试 5.结语 转发自CSDN远程穿透的文章&#xff1a;[无需公网IP&am…

详解以太坊

以太坊原理 以太坊通过建立终极的抽象的基础层-内置有图灵完备编程语言的区块链-使得任何人都能够创建合约和去中心化应用&#xff0c;并在其中设立他们自由定义的所有权规则、交易方式和状态转换函数。 图灵完备&#xff1a;能够运行非常复杂的运算&#xff0c;最简单的理解…

基于共享储能电站的工业用户日前优化经济调度

目录 1 主要内容 共享电站示意图 目标函数 2 部分程序 3 程序结果 4 程序链接 1 主要内容 该程序方法复现《基于共享储能电站的工业用户日前优化经济调度》算例2和算例3&#xff0c;根据共享储能电站的商业运营模式&#xff0c;将共享储能电站应用到工业用户经济优化调度…

〖Python网络爬虫实战⑨〗- 正则表达式基本原理

订阅&#xff1a;新手可以订阅我的其他专栏。免费阶段订阅量1000 python项目实战 Python编程基础教程系列&#xff08;零基础小白搬砖逆袭) 说明&#xff1a;本专栏持续更新中&#xff0c;目前专栏免费订阅&#xff0c;在转为付费专栏前订阅本专栏的&#xff0c;可以免费订阅付…

【Linux】用户命令(创建,修改,切换,删除,密码)

目录 1.创建 查看用户信息 查看id 2.修改 修改用户名 修改用户uid 操作前&#xff1a; 操作后 修改组名 操作前&#xff1a; 操作后: 修改组id 操作前&#xff1a; 操作后&#xff1a; 操作前&#xff1a; 操作后: 3.切换用户 4.删除 操作前&#xff1a; 操作…

如何在Spring Boot中使用Spring MVC

目录 1.MVC 2.Spring MVC 3.Spring Boot中使用Spring MVC 3.1.配置 3.1.1.文件配置 3.1.2.代码配置 3.2.使用 3.2.1.映射处理器 3.2.2.传参 3.2.3.参数转换 3.2.4.数据校验 3.2.5.数据模型 3.2.6.视图和解析器 3.2.7.拦截器 1.MVC MVC 是一种常见的软件设计模式…

企业级信息系统开发讲课笔记2.4 利用MyBatis实现条件查询

文章目录零、本节学习目标一、查询需求二、打开MyBatisDemo项目三、对学生表实现条件查询&#xff08;一&#xff09;创建学生映射器配置文件&#xff08;二&#xff09;在MyBatis配置文件里注册学生映射器配置文件&#xff08;三&#xff09;创建学生映射器接口&#xff08;四…