ssm+vue游戏攻略网站源码和论文

news2024/12/28 18:54:03

ssm+vue游戏攻略网站源码和论文052

 开发工具:idea 
 数据库mysql5.7+
 数据库链接工具:navcat,小海豚等
  技术:ssm

一、主要内容和基本要求

游戏攻略网站分为管理员与用户两种角色。

管理员的功能包括登录,用户管理,游戏分类管理,游戏攻略管理,游戏资讯管理等。

登录功能:管理员需要登录进入系统后台。

用户管理:实现用户信息的查询,修改,删除,用户禁言,取消禁言等操作,禁言的用户不能参与游戏攻略的评论操作。

游戏分类管理:实现游戏分类信息的增删改操作。

游戏攻略管理:实现游戏攻略信息的增删改查操作,可以查看用户对游戏攻略的评论。

游戏资讯管理:实现游戏资讯信息的增删改查操作。

用户的功能包括注册登录,游戏攻略,游戏资讯,修改个人信息,我的收藏等功能。

注册登录:用户需要先注册,再登录系统进入系统前台。

游戏攻略:用户查看游戏攻略信息,可以下载游戏攻略文件,可以收藏游戏攻略,可以评论游戏攻略,用户也能发布游戏攻略信息让其他人查看。

游戏资讯:用户查询查看游戏资讯信息。

修改个人信息:用户对个人资料进行查看和修改。

我的收藏:用户查看已经收藏的游戏攻略信息。

游戏攻略网站是属于JavaWeb项目,采用的开发框架为SSM框架,也就是Spring mvc、Spring、MyBatis这三个框架,页面设计用的是jsp技术作为动态页面文件设计,jsp文件里可以对实现html等界面布局的代码,采用SpringMVC替代传统的struts2框架,主要对jsp访问的拦截和控制,Spring作为整个控制的核心,通过控制反转技术和面向切面技术,让Spring自动对使用的类文件进行调用和导入,MyBatis主要作为底层操作数据库,不牵扯业务逻辑,开发工具采用MyEclipse,服务器用的是tomcat。编码语言是Java,数据库采用Mysql。

package com.controller;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Map;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Date;
import java.util.List;
import javax.servlet.http.HttpServletRequest;

import com.utils.ValidatorUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
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.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.annotation.IgnoreAuth;

import com.entity.YouxigonglueEntity;
import com.entity.view.YouxigonglueView;

import com.service.YouxigonglueService;
import com.service.TokenService;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.MD5Util;
import com.utils.MPUtil;
import com.utils.CommonUtil;


/**
 * 游戏攻略
 * 后端接口
 * @author 
 * @email 
 * @date 2021-02-22 15:48:18
 */
@RestController
@RequestMapping("/youxigonglue")
public class YouxigonglueController {
    @Autowired
    private YouxigonglueService youxigonglueService;
    


    /**
     * 后端列表
     */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params,YouxigonglueEntity youxigonglue, HttpServletRequest request){

        EntityWrapper<YouxigonglueEntity> ew = new EntityWrapper<YouxigonglueEntity>();
		PageUtils page = youxigonglueService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, youxigonglue), params), params));
        return R.ok().put("data", page);
    }
    
    /**
     * 前端列表
     */
	@IgnoreAuth
    @RequestMapping("/list")
    public R list(@RequestParam Map<String, Object> params,YouxigonglueEntity youxigonglue, HttpServletRequest request){
        EntityWrapper<YouxigonglueEntity> ew = new EntityWrapper<YouxigonglueEntity>();
		PageUtils page = youxigonglueService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, youxigonglue), params), params));
        return R.ok().put("data", page);
    }

	/**
     * 列表
     */
    @RequestMapping("/lists")
    public R list( YouxigonglueEntity youxigonglue){
       	EntityWrapper<YouxigonglueEntity> ew = new EntityWrapper<YouxigonglueEntity>();
      	ew.allEq(MPUtil.allEQMapPre( youxigonglue, "youxigonglue")); 
        return R.ok().put("data", youxigonglueService.selectListView(ew));
    }

	 /**
     * 查询
     */
    @RequestMapping("/query")
    public R query(YouxigonglueEntity youxigonglue){
        EntityWrapper< YouxigonglueEntity> ew = new EntityWrapper< YouxigonglueEntity>();
 		ew.allEq(MPUtil.allEQMapPre( youxigonglue, "youxigonglue")); 
		YouxigonglueView youxigonglueView =  youxigonglueService.selectView(ew);
		return R.ok("查询游戏攻略成功").put("data", youxigonglueView);
    }
	
    /**
     * 后端详情
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") Long id){
        YouxigonglueEntity youxigonglue = youxigonglueService.selectById(id);
		youxigonglue.setClicknum(youxigonglue.getClicknum()+1);
		youxigonglue.setClicktime(new Date());
		youxigonglueService.updateById(youxigonglue);
        return R.ok().put("data", youxigonglue);
    }

    /**
     * 前端详情
     */
	@IgnoreAuth
    @RequestMapping("/detail/{id}")
    public R detail(@PathVariable("id") Long id){
        YouxigonglueEntity youxigonglue = youxigonglueService.selectById(id);
		youxigonglue.setClicknum(youxigonglue.getClicknum()+1);
		youxigonglue.setClicktime(new Date());
		youxigonglueService.updateById(youxigonglue);
        return R.ok().put("data", youxigonglue);
    }
    


    /**
     * 赞或踩
     */
    @RequestMapping("/thumbsup/{id}")
    public R thumbsup(@PathVariable("id") String id,String type){
        YouxigonglueEntity youxigonglue = youxigonglueService.selectById(id);
        if(type.equals("1")) {
        	youxigonglue.setThumbsupnum(youxigonglue.getThumbsupnum()+1);
        } else {
        	youxigonglue.setCrazilynum(youxigonglue.getCrazilynum()+1);
        }
        youxigonglueService.updateById(youxigonglue);
        return R.ok();
    }

    /**
     * 后端保存
     */
    @RequestMapping("/save")
    public R save(@RequestBody YouxigonglueEntity youxigonglue, HttpServletRequest request){
    	youxigonglue.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(youxigonglue);

        youxigonglueService.insert(youxigonglue);
        return R.ok();
    }
    
    /**
     * 前端保存
     */
    @RequestMapping("/add")
    public R add(@RequestBody YouxigonglueEntity youxigonglue, HttpServletRequest request){
    	youxigonglue.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(youxigonglue);

        youxigonglueService.insert(youxigonglue);
        return R.ok();
    }

    /**
     * 修改
     */
    @RequestMapping("/update")
    public R update(@RequestBody YouxigonglueEntity youxigonglue, HttpServletRequest request){
        //ValidatorUtils.validateEntity(youxigonglue);
        youxigonglueService.updateById(youxigonglue);//全部更新
        return R.ok();
    }
    

    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids){
        youxigonglueService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }
    
    /**
     * 提醒接口
     */
	@RequestMapping("/remind/{columnName}/{type}")
	public R remindCount(@PathVariable("columnName") String columnName, HttpServletRequest request, 
						 @PathVariable("type") String type,@RequestParam Map<String, Object> map) {
		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));
			}
		}
		
		Wrapper<YouxigonglueEntity> wrapper = new EntityWrapper<YouxigonglueEntity>();
		if(map.get("remindstart")!=null) {
			wrapper.ge(columnName, map.get("remindstart"));
		}
		if(map.get("remindend")!=null) {
			wrapper.le(columnName, map.get("remindend"));
		}


		int count = youxigonglueService.selectCount(wrapper);
		return R.ok().put("count", count);
	}
	
	/**
     * 前端智能排序
     */
	@IgnoreAuth
    @RequestMapping("/autoSort")
    public R autoSort(@RequestParam Map<String, Object> params,YouxigonglueEntity youxigonglue, HttpServletRequest request,String pre){
        EntityWrapper<YouxigonglueEntity> ew = new EntityWrapper<YouxigonglueEntity>();
        Map<String, Object> newMap = new HashMap<String, Object>();
        Map<String, Object> param = new HashMap<String, Object>();
		Iterator<Map.Entry<String, Object>> it = param.entrySet().iterator();
		while (it.hasNext()) {
			Map.Entry<String, Object> entry = it.next();
			String key = entry.getKey();
			String newKey = entry.getKey();
			if (pre.endsWith(".")) {
				newMap.put(pre + newKey, entry.getValue());
			} else if (StringUtils.isEmpty(pre)) {
				newMap.put(newKey, entry.getValue());
			} else {
				newMap.put(pre + "." + newKey, entry.getValue());
			}
		}
		params.put("sort", "clicknum");
        
        params.put("order", "desc");
		PageUtils page = youxigonglueService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, youxigonglue), params), params));
        return R.ok().put("data", page);
    }


}

 

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

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

相关文章

Laravel 框架构造器的查询表达式构造器的 Where 派生查询 ⑥

作者 : SYFStrive 博客首页 : HomePage &#x1f4dc;&#xff1a; THINK PHP &#x1f4cc;&#xff1a;个人社区&#xff08;欢迎大佬们加入&#xff09; &#x1f449;&#xff1a;社区链接&#x1f517; &#x1f4cc;&#xff1a;觉得文章不错可以点点关注 &#x1f44…

QCC_BES 音频重采样算法实现

+V hezkz17进数字音频系统研究开发交流答疑群(课题组) 这段代码是一个用于将音频数据进行立体声重采样的函数。以下是对代码的解读: 函数接受以下参数: pcm_buf:16位有符号整型的音频缓冲区,存储了输入的音频数据。pcm_len:音频缓冲区的长度。mic1:16位有符号整型的音频…

SpringBoot 01 如何创建 和pom的解析

目录 1 Springboot的创建 步骤 2 项目的书写和运行 创建service包并在其下写一个service文件 项目的运行 pom文件的一些配置 parent web test 打包 打包过程 1 Springboot的创建 步骤 首先new一个新项目 然后依照如下创建 2 项目的书写和运行 创建service包并…

企业网络日志安全与 EventLog Analyzer

企业的网络日志安全是一项至关重要的任务。随着信息技术的迅猛发展&#xff0c;网络攻击和数据泄露的威胁也与日俱增。为了应对这些威胁&#xff0c;企业需要强大的工具来监控、分析和保护其网络日志。而ManageEngine的EventLog Analyzer正是这样一款卓越的解决方案。 网络日志…

意外发现Cortex-M内核带的64bit时间戳,比32bit的DWT时钟周期计数器更方便,再也不用担心溢出问题了

视频&#xff1a; https://www.bilibili.com/video/BV1Bw411D7F5 意外发现Cortex-M内核带的64bit时间戳&#xff0c;比32bit的DWT时钟周期计数器更方便&#xff0c;再也不用担心溢出问题了 介绍&#xff1a; 看参数手册的Debug章节&#xff0c;System ROM Table里面带Timestam…

PS基础操作

1&#xff1a;盖印图层。 1. 建立新图层&#xff1a;盖印前要先新建一透明层&#xff0c;或者添加调整图层和中性色图层。 2. 按快捷键Ctrl Alt Shift E盖印所有可见图层&#xff1b;Ctrl Alt E盖印所选图层 2&#xff1a;复制图层。 复制图层CtrlJ 3&#xff1a;shift…

读SQL学习指南(第3版)笔记04_查询入门

1. 在执行语句之前&#xff0c;会先检查下列事项 1.1. 是否有权限执行该语句 1.2. 是否有权限访问指定的数据 1.3. 语句的语法是否正确 2. select子句 2.1. select子句是select语句中的第一个子句&#xff0c;但最后才会被数据库服务器评估 2.2. 决定哪些列应该包含在查询…

stm32之15.超声波与灯光功能一起实现(进阶)

主函数代码修改 --------------------- 源码 int main(void) {uint32_t t0;uint32_t distance;NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);led_init();key_init();/* 初始化串口1波特率为115200bps&#xff0c;若发送/接收数据有乱码&#xff0c;请检查PLL */usart1_ini…

vue 使用C-Lodop打印小票

先从官网下载js文件 https://www.lodop.net/LodopDemo.html 打开安装程序&#xff0c;一直下一步既可&#xff0c;我这边已经安装过就不演示了。 // 引入 import { getLodop } from /utils/CLodopfuncs.js;// 使用 let LODOP getLodop()let Count LODOP.GET_PRINTER_COUNT…

嵌入式ARM 音频算法开发库

我V hezkz17进数字音频系统研究开发交流答疑群(课题组) CMSIS DSP Library 算法库&#xff0c;是开源的算法库 BES的SDK也使用了该库&#xff0c;要想自己设计嵌入式音频算法&#xff0c;可在Cortex-M内核平台可以基于此库开发算法 AEC, AGC, ANC, ENC, RNC, 。。。。。。…

Ansible 创建使用角色

使用 Ansible Galaxy 和要求文件 /ansible/roles/requirements.yml 。从以下 URL 下载角色并安装到 /ansible/roles &#xff1a; http://materials/haproxy.tar 此角色的名称应当为 balancer http://materials/phpinfo.tar 此角色的名称应当为 phpinfo #创建 vim /ansible/r…

四、Kafka Broker

4.1.1 Zookeeper 存储的 Kafka 信息 4.1.2 Kafka Broker 总体工作流程 4.2 生产经验 - 节点的服役和退役 自己的理解&#xff1a;其实就是将kafka的分区&#xff0c;负载到集群中的各个节点上。 1、服役新节点 2、退役旧节点 4.3 kafka副本

商城-学习整理-集群-K8S(二十三)

目录 一、k8s 集群部署1、k8s 快速入门1&#xff09;、简介2&#xff09;、架构1、整体主从方式2、Master 节点架构3、Node 节点架构 3&#xff09;、概念4&#xff09;、快速体验1、安装 minikube2、体验 nginx 部署升级 5&#xff09;、流程叙述 2、k8s 集群安装1、kubeadm2、…

【学习FreeRTOS】第14章——FreeRTOS信号量

1.信号量的简介 信号量是一种解决同步问题的机制&#xff0c;可以实现对共享资源的有序访问。 信号量&#xff1a;用于传递状态&#xff08;区别于队列传递消息&#xff09; 信号量的计数值都有限制&#xff1a;限定最大值。 如果最大值被限定为1&#xff0c;那么它就是二值…

Kaggle回归问题Mercedes——Benz Greener Manufacturing

目录 前言1 题目介绍2 数据清洗3 数据可视化分析4 模型训练5 源码 前言 这是我在大三选修课的课程设计&#xff0c;内容参考了Kaggle上高赞的代码&#xff0c;有详细批注&#xff0c;整体比较基础&#xff0c;结构相对完整&#xff0c;便于初学者学习。这个是一个回归问题&…

BLE ch582 广播数据格式

BLE 蓝牙数据广播格式{6个字节(蓝牙设备MAC 地址&#xff09;AD structure…AD structure N } 37字节 AD structure 长度类型内容 修改被扫描状态(被发现状态)的name:take 被扫描状态的name&#xff1a; take 链接后的状态变成&#xff1b;变成广播态&#xff1b;name: BLE…

Go 语言的实战案例 | 青训营

Powered by:NEFU AB-IN 文章目录 Go 语言的实战案例 | 青训营 Go补充简介猜数游戏在线词典项目 Go 语言的实战案例 | 青训营 GO语言工程实践课后作业&#xff1a;实现思路、代码以及路径记录 Go补充简介 在计算机编程领域&#xff0c;Go 语言&#xff08;也称为 Golang&…

二叉树---前,中,后序遍历做题技巧(前,中,后,层次,线索二叉树)

1.由二叉树求前&#xff0c;中&#xff0c;后序遍历 前序:根左右&#xff08;每一个小方块都遵循&#xff09; 得到&#xff1a;A,B,D,H,E,I,C,F,G 中序&#xff1a;左根右&#xff08;每一个小方块都遵循&#xff09; 得到&#xff1a;H,D,B,I,E,A,F,C,G 后序&#xff1a;左右…

js 模块 简单实验

1.代码 1.1 t2.js var year "test"; export { year }; 1.2 t1.js import { year } from ./t2.jsalert(year); 1.3 t.html <script type"module" src"./t1.js"></script> 2.运行结果

MyBatis动态SQL、模糊查询与结果映射

目录 前言 一、MyBatis动态SQL 1.动态SQL是什么 2.动态SQL的作用 3.常用动态SQL元素 1. where if 元素 2. set if 元素 3. choose when otherwise 元素 4. 自定义 trim 元素 <1>. 自定义 trim 元素改写上面的 where if 语句 <2>. 自定义 trim 元素改…