博主主页:一季春秋
博主简介:专注Java技术领域和毕业设计项目实战、Java、微信小程序、安卓等技术开发,远程调试部署、代码讲解、文档指导、ppt制作等技术指导。
主要内容:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、小程序、安卓app、大数据等设计与开发。感兴趣的可以收藏+关注,所有项目均配有开发文档,一系列安装配置教程,可以定制功能包安装运行!!
🍅文末获取联系🍅
系统介绍
本论文基于SpringBoot框架,设计并实现了一个游戏攻略交流平台的小程序。该小程序致力于为游戏玩家提供一个方便快捷的平台,用于分享、探讨游戏攻略和心得体会。通过分析游戏攻略平台的需求,本文采用了前后端分离的设计模式,使用了SpringBoot框架搭建后端服务,并结合小程序框架实现了前端界面。实现的功能包括用户管理、游戏信息管理、投票信息管理、系统管理(轮播图管理)、资源管理(游戏资讯、资讯分类)、交流管理(交流论坛、论坛分类)等。本文通过详细的设计和实现步骤,展示了该游戏攻略交流平台小程序的整体架构和功能特点。最后,通过实际测试验证了该小程序的稳定性和可靠性。整体而言,该小程序为游戏玩家提供了一个便捷的交流平台,有助于丰富游戏体验,提高玩家之间的互动交流。
系统主要技术
开发语言:Java
使用框架:spring boot
前端技术:JavaScript、Vue 、css3
开发工具:IDEA/MyEclipse/Eclipse、Visual Studio Code
数据库:MySQL 5.7/8.0
数据库管理工具:phpstudy/Navicat
JDK版本:jdk1.8
Maven: apache-maven 3.8.1-bin
功能需求分析
基于springboot的游戏攻略交流平台小程序中的web后台管理端采用了IntelliJ IDEA 2019.3.4 开发工具,配合了java开发语言中springboot开发框架以及tomcat8.0服务器、jdk1.8,微信端采用了微信开发者工具稳定版1.05.2111300,页面使用wxss和wxml进行布局,微信端和web后台管理端采用json接口通信。
1.小程序端玩家用户需求:
登录注册:提供用户账号的注册和登录功能,保障用户的数据安全和个人信息管理。
首页:展示推荐的游戏攻略、热门游戏、最新发布的攻略等内容,方便用户快速了解和浏览游戏攻略信息。
游戏信息:提供游戏列表、搜索、游戏详情等功能,让玩家可以方便地查询和了解游戏的相关信息,并可以对喜欢的游戏进行投票。
交流论坛:允许玩家在论坛中发表和回复帖子,与其他玩家交流游戏攻略、心得体会等。
游戏资讯:提供游戏相关的游戏资讯,包括游戏发布、更新、活动等信息,满足用户获取游戏资讯的需求。
我的:提供用户个人信息管理功能,包括修改密码、查看收藏的攻略、查看投票信息等。
2.管理员需求:
后台首页:提供数据统计、运营情况等信息的展示,方便管理员及时了解平台运营状态。
系统用户:管理小程序端的用户信息,包括用户账号、角色等信息的管理。
游戏信息管理:管理游戏的基本信息,包括游戏名称、封面图、简介等。
投票信息管理:管理玩家对攻略的投票信息,包括投票数量、用户投票信息等。
系统管理:管理平台的轮播图,用于展示推荐的游戏攻略、游戏资讯等内容。
资源管理:管理游戏资讯的发布、修改、删除等操作,包括资讯内容、分类等的管理。
交流管理:管理交流论坛的帖子,包括发布帖子、删除帖子、回复帖子等。
通过对小程序端玩家用户和管理员的功能需求进行分析,可以为基于Spring Boot的游戏攻略交流平台小程序的设计与实现提供指导,确保平台能够满足用户的需求,并提供良好的用户体验。
系统展示
前台微信端
用户注册界面
不是基于springboot的游戏攻略交流平台小程序的用户可以通过微信小程序在线进行注册,填写上自己的账号、密码、重复密码、昵称、邮箱登信息后点击“提交”按钮后将会验证是否有非空数据,再验证密码和重复密码是否一样,最后验证是否账号重复,都验证没问题后即可注册成功。注册实现了用户注册和发布者注册两部分,其用户注册界面展示如下图
用户登录界面
微信小程序上注册后的用户可以通过自己的用户名和密码进行登录,在用户填写好自己的用户名和密码信息并点击“登录”按钮后,将会先验证是否有非空数据,再验证填写的用户信息和数据库中保存的是否一致,一致后将会登录成功,登录成功后将会在左上角上显示用户信息;否则将会提示相应错误信息,用户登录界面如下图
输入有效的用户名和密码信息,点击“登录”按钮,自动跳转到“首页”页面,首页界面如下图
交流论坛界面
用户点击交流论坛按钮,可以在论坛中发表和回复帖子,与其他玩家交流游戏攻略、心得体会等,界面如下图
游戏信息详情界面
用户点击游戏信息可以进入游戏信息列表,点击任意一个游戏信息后将可以进入到该游戏信息的详情界面中,用户可以查看游戏信息的详细介绍,还可以进行投票、点赞、收藏、评论等,房源详情界面如下图
投票界面
在游戏信息详情页面左下角点击“投票”后进入到“投票”界面,输入相关信息后,点击“提交”按钮后将会生成自己的投票信息,投票界面如下图
我的界面
点击基于springboot的游戏攻略交流平台小程序端底部的“我的”菜单进行“我的”页面,用户可以管理自己的基本信息、收藏、投票信息,界面如下图
后台管理员端
系统用户界面
管理员点击“系统用户”这一菜单会显示管理员、玩家用户这两个子菜单,管理员可以对这两个角色的信息进行增删改查操作。界面如下图
游戏信息管理界面
管理员点击后台左边的“游戏信息管理”菜单后将可以对游戏信息进行管理,包括添加、编辑和删除游戏信息等,游戏信息管理界面如下图
系统管理界面
管理员点击“系统管理”这一菜单会显示轮播图这一个子菜单,管理员可以对前台展示的轮播图进行设置,界面如下图所示。
投票信息管理界面
点击“投票信息管理”这个菜单,可以管理玩家对攻略的投票信息,包括投票数量、用户投票信息等。投票信息管理界面如下图所示。
资源管理界面
管理员点击“资源管理”这一菜单会显示游戏资讯、资讯分类这两个子菜单,管理员可以对这两部分涉及到的功能进行更新维护,更好的服务于前台用户。界面如下图所示。
部分核心代码
/**
* 登录相关
*/
@RequestMapping("users")
@RestController
public class UsersController {
@Autowired
private UsersService usersService;
@Autowired
private TokenService tokenService;
/**
* 登录
*/
@IgnoreAuth
@PostMapping(value = "/login")
public R login(String username, String password, String captcha, HttpServletRequest request) {
UsersEntity user = usersService.selectOne(new EntityWrapper<UsersEntity>().eq("username", username));
if(user==null || !user.getPassword().equals(password)) {
return R.error("账号或密码不正确");
}
String token = tokenService.generateToken(user.getId(),username, "users", user.getRole());
R r = R.ok();
r.put("token", token);
r.put("role",user.getRole());
r.put("userId",user.getId());
return r;
}
/**
* 注册
*/
@IgnoreAuth
@PostMapping(value = "/register")
public R register(@RequestBody UsersEntity user){
// ValidatorUtils.validateEntity(user);
if(usersService.selectOne(new EntityWrapper<UsersEntity>().eq("username", user.getUsername())) !=null) {
return R.error("用户已存在");
}
usersService.insert(user);
return R.ok();
}
/**
* 退出
*/
@GetMapping(value = "logout")
public R logout(HttpServletRequest request) {
request.getSession().invalidate();
return R.ok("退出成功");
}
/**
* 修改密码
*/
@GetMapping(value = "/updatePassword")
public R updatePassword(String oldPassword, String newPassword, HttpServletRequest request) {
UsersEntity users = usersService.selectById((Integer)request.getSession().getAttribute("userId"));
if(newPassword == null){
return R.error("新密码不能为空") ;
}
if(!oldPassword.equals(users.getPassword())){
return R.error("原密码输入错误");
}
if(newPassword.equals(users.getPassword())){
return R.error("新密码不能和原密码一致") ;
}
users.setPassword(newPassword);
usersService.updateById(users);
return R.ok();
}
/**
* 密码重置
*/
@IgnoreAuth
@RequestMapping(value = "/resetPass")
public R resetPass(String username, HttpServletRequest request){
UsersEntity user = usersService.selectOne(new EntityWrapper<UsersEntity>().eq("username", username));
if(user==null) {
return R.error("账号不存在");
}
user.setPassword("123456");
usersService.update(user,null);
return R.ok("密码已重置为:123456");
}
/**
* 列表
*/
@RequestMapping("/page")
public R page(@RequestParam Map<String, Object> params,UsersEntity user){
EntityWrapper<UsersEntity> ew = new EntityWrapper<UsersEntity>();
PageUtils page = usersService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.allLike(ew, user), params), params));
return R.ok().put("data", page);
}
/**
* 列表
*/
@RequestMapping("/list")
public R list( UsersEntity user){
EntityWrapper<UsersEntity> ew = new EntityWrapper<UsersEntity>();
ew.allEq(MPUtil.allEQMapPre( user, "user"));
return R.ok().put("data", usersService.selectListView(ew));
}
/**
* 信息
*/
@RequestMapping("/info/{id}")
public R info(@PathVariable("id") String id){
UsersEntity user = usersService.selectById(id);
return R.ok().put("data", user);
}
/**
* 获取用户的session用户信息
*/
@RequestMapping("/session")
public R getCurrUser(HttpServletRequest request){
Integer id = (Integer)request.getSession().getAttribute("userId");
UsersEntity user = usersService.selectById(id);
return R.ok().put("data", user);
}
/**
* 保存
*/
@PostMapping("/save")
public R save(@RequestBody UsersEntity user){
// ValidatorUtils.validateEntity(user);
if(usersService.selectOne(new EntityWrapper<UsersEntity>().eq("username", user.getUsername())) !=null) {
return R.error("用户已存在");
}
usersService.insert(user);
return R.ok();
}
/**
* 修改
*/
@RequestMapping("/update")
public R update(@RequestBody UsersEntity user){
// ValidatorUtils.validateEntity(user);
usersService.updateById(user);//全部更新
return R.ok();
}
/**
* 删除
*/
@RequestMapping("/delete")
public R delete(@RequestBody Long[] ids){
List<UsersEntity> user = usersService.selectList(null);
if(user.size() > 1){
usersService.deleteBatchIds(Arrays.asList(ids));
}else{
return R.error("管理员最少保留一个");
}
return R.ok();
}
}