如何使用ssm实现大学学生成长系+vue

231 篇文章 0 订阅
128 篇文章 1 订阅

@TOC

ssm276大学学生成长系+vue

绪论

1.1研究背景

网络高速发展,全球的网络科技增长速度明显,后劲十足,网络的普及率明显的很大提高。截止今年的六月份,不完全统计,光中国的网民数量就已经达到了7.54亿,超过了总人口的一半以上,占全球网民总数的五分之一。而利用计算机进行传统信息管理也成为一种新的朝流,逐渐替代传统的管理方式。

据调查,传统阜阳师范大学学生成长管理模式面对大量学生信息、网课课程信息、选课记录信息、成绩信息、奖惩信息等,信息的及时更新等弊端凸显,传统的阜阳师范大学学生成长管理过度的依靠人力资源的登记管理,对于庞大的信息量,显然只依靠人力,很难准确的处理好大量的数据,传统的管理模式不仅效率低,出错率高,对于阜阳师范大学学生成长管理带来了诸多不便,因此,传统的阜阳师范大学学生成长管理模式已经远远无法满足当今阜阳师范大学的发展需求,我们急需对阜阳师范大学学生成长管理体系进行变革,开发基于计算机平台的阜阳师范大学学生成长系统。现代化的利用计算机来进行阜阳师范大学学生成长管理很大程序上可以提高效率,人力方面也大大的节省,界面简单易操作,只要会计算机就可以快速的进行阜阳师范大学学生成长相关信息的管理。对经济方面也是很大的节省,其优点是显而易见的。

1.2设计原则

在开始开发项目之前,必须要先考虑项目的实用性、科学性,以及该项目是否能够真正让用户受益并尽可能的发挥项目的作用。因此,在开发前,通过以下几条原则对项目进行判断:

(1)可行性原则。项目需要保证经济可行性和技术可行性,这包括了项目在浏览端、服务端等方面上的经济和技术上是可以达成的。

(2)适应性原则。项目要保证可维护性和可扩展性,这是每个非短期项目都需要考虑的,并且不论是维护还是扩展,都必须要建立在适应用户的正常需求的基础上。

(3)安全性及保密性原则。要充分保证用户信息的安全性和保密性,不能因为开发上的疏忽,导致用户的信息泄露。

(4)系统工程原则。为了确保项目的整体性,在项目调查、项目分析、项目设计、项目开发的过程中,都需遵从项目工程的方法和步骤逐步进行。

(5)统一规划、分期实施、逐步完善原则。项目开发的过程中,要按照规划、分期实施,特别是要注意在项目开发过程中要有条理,从点到面,一步步完善,不要贪图进度,要循环渐进的对项目进行开发。

1.3研究内容

根据阜阳师范大学学生成长系统编写的论文主要阐述了阜阳师范大学学生成长系统的开发过程中使用的技术,首先进行系统需求分析,进而进行系统设计,最后才是系统功能实现以及测试几个部分,在开始编写论文之前亲自到图书馆借阅Java书籍,MYSQL数据库书籍等编程书籍,然后针对开发的阜阳师范大学学生成长系统,去网上查找了很多别人做好的系统,根据他们的功能设计进行自己的系统的系统功能结构设计,出具需求报告,最后才是进行程序编码,系统完成后才能进行测试和最后的验收工作,程序开发流程大致如此。

这次编写的论文包含了6个部分的内容,具体内容如下:

第一部分绪论:文章主要从课题背景以及设计原则综合阐述了开发此系统的必要性。

第二部分相关技术:系统开发用到的各种技术都大致做出了简介

第三部分系统分析:从可行性分析和功能需求分析等角度综合研究了此次开发的系统

第四部分系统设计:功能模块设计和数据库设计这两部分内容都有专门的表格和图片表示

第五部分系统实现:进行系统主要功能模块的界面展示

第六部分系统测试:检验程序是否达到预期目标

2 系统关键技术

2.1 Java技术

Java是一种非常常用的编程语言,在全球编程语言排行版上总是前三。在方兴未艾的计算机技术发展历程中,Java的身影无处不在,并且拥有旺盛的生命力。Java的跨平台能力十分强大,只需一次编译,任何地方都可以运行[1]。除此之外,它还拥有简单的语法和实用的类库,让编程人员可以尽可能将精力集中在问题的求解上,并且许多开源项目和科研成果都是采用它实现的。

在1995年这一年的5月份,著名的Sun Microsystems公司在程序开发设计上面郑重推出一种面向对象开发的程序设计语言——Java,最开始的时候Java是由詹姆斯.高斯林这位伟大的JAVA之父来进行主导,但是在后来由于各种原因,让甲骨文公司这个针对商业程序创建了oracle大型数据库的公司收购了Java。Java的平台总共算下来有3个,分别为javaME和javaSE以及javaEE这3个java平台。下面将对其进行分别介绍。

(1)在电脑桌面程序的开发上面需要选择JavaME,这个用得也比较多。

(2)企业也会根据工作以及业务需要开发各种软件,那么就会选用JavcEE这个支持企业版软件的开发的Java平台,JavcEE主攻运用在企业领域上面的web应用,JavcEE也在javaSE的基础上获得了比如jsp技术 ,Servlet技术等程序开发技术的支持。

(3)现在生活中手机的普及化,也使得手机端这样的移动设备的软件的兴起,JavaME这个迷你版java平台就能运用于移动端的软件开发操作。

2.2 MYSQL数据库

MySQL是典型的关系数据库系统,拥有开源免费、稳定、高效等特点,一直是中小型web项目的最佳数据库选择。MySQL作为当今IT领域使用人数最多的开源关系型数据库软件之一,在2018年的数据库使用率排名中位居第二,仅次于目前为止最成功的商业版数据库Orcle[1]。MySQL最大的优势之一就是无偿使用,这也是它成功的关键。

MySQL支持标准化数据库查询语言SQL。MySQL是一款非常适合个人开发者或小型组织开发团体的数据库管理系统,因为它是开源并且免费的,体积小、速度快、成本低以及其最重要的一点开放源码,深受程序设计人员的喜爱,这也让它成为了许许多多中小型开发网站数据库的首选,同时提供了多种开发的连接API。MySQL将数据的存放按照记录之间的关系存放到了不同的表中,减少了数据的冗余并且提高了开发的工作效率。MySQL支持开发中需要用的大型数据库,并能处理数以万计的记录。因为MySQL是开源的软件,所以在项目的预算中的时候不用花费额外的资金,大大降低了开发的总体成本,这也是MySQL数据库在中小型企业和独立的开发者中广泛流行的原因[9]。

2.3 B/S结构

在早期的程序开发中,使用得最多的莫过于C/S架构了,现在的生活中软件在生活的各个方面落地,使用了C/S架构开发出来的软件也是不在少数的,比如企业日常办公使用到的微软的OFFICE软件,我国自己研发的文档处理软件WPS,还有娱乐软件腾讯的QQ,腾讯的微信,以及电脑上安装的杀毒软件金山杀毒软件,瑞金杀毒软件等都是C/S架构。但是在Internet网络盛行之后,鉴于大家对数据信息共享的需求,在原来的C/S架构上进行了升级改进之后,有了现在的主流架构B/S架构,B/S架构就是在C/S架构上多了一个浏览器,让原来的直接访问服务器的方式,变成了通过浏览器去访问服务器。充分运用到了当下不断成熟的浏览器技术。也让软件的开发成本以及维护成本降低了。可以说B/S这种新型的架构模式让软件的开发变得便利化。

B/S框架是目前被广泛采用的一种先进的框架结构,它是一种基于互联网的程序架构。当前的使用已经非常广泛,突破了传统的C/S结构的模式,给程序开发的模式带来新的技术革命。它是随着互联网技术的不断发展而发展起来的。随着互联网技术的不断发展,各种政务网站已经不能单独在一台电脑上使用和运行了,所以基于互联网的模式就逐步的发展起来了,并且得到了大规模的应用。

图2-1 B/S模式三层结构图

2.4 SSM框架

本阜阳师范大学学生成长系统基于Spring、SpringMVC、Mybatis框架进行开发设计。

Spring 框架是在2004年首次发布,之后出现了多次的重大修订。Spring框架是由七个不同的模块组成,分别是SpringCore、Spring AOP、Spring ORM、Spring DAO、Spring Web Flow、Spring Context和Spring Web MVC[16]。这些模块提供不同的平台来开发不同的企业应用程序 ,本课题使用Spring Web MVC模块开发基于MVC的应用程序。

Spring Web MVC是基于Servlet API的原始Web框架,从一开始就包含在Spring 框架中。“Spring Web MVC”是该框架的正式名称,但通常被简称为“Spring MVC” [17]。Spring MVC框架提供了模型模块-视图模块-控制器的架构和可用于直接开发的Web应用程序的现成组件。Spring MVC模式将应用程序的不同方面分开,使元素之间形成松散耦合。

MyBatis原名叫做iBatis属于持久层框架,消除了大部分JDBC代码和参数的设置以及结果集的检索。这个框架不仅支持普通SQL查询和存储过程,还支持高级的映射[18]。MyBatis使用.xml和注解来做原始映射和配置,将接口和Java对象映射成数据库记录。

3 系统分析

3.1可行性分析

在系统开发之初要进行系统可行分析,这样做的目的就是使用最小成本解决最大问题,一旦程序开发满足用户需要,带来的好处也是很多的。下面我们将从技术上、操作上、经济上等方面来考虑这个系统到底值不值得开发。

3.1.1 技术可行性

技术可行性是指学习的技术是否能够完成本项目,如果团队本身没有相关的技术储备,而又能够迅速掌握此类技术,那项目应该达不到我们的设计要求。本文将开发的系统,将采用的关键技术包括JAVA开发技术、SSM架构、MYSQL数据库存储技术等。大学时将这些技术已经学习掌握,因此,就技术层面而言,该项目的开发是有保障的。

3.1.2 操作可行性

本人自己就是学生,程序开发经验不足,在界面设计上面不会设计太复杂,要讲究简单好看,操作上要方便,不能让用户觉得不流畅。用户一旦进入操作界面,界面上就会有相应提示,跟着操作提示就可以找到对应的功能操作模块,对于用户来说免培训就能使用。

3.1.3 经济可行性

由于自己本身就是学生,还没有正式参加工作,金钱上面一直都处于缺乏状态。所以在开发程序过程中,我是不会花太多经济成本在上面的。针对开发软件和数据库,还有界面设计的photoshop软件等在百度上面就可以直接下载,然后根据各种安装视频进行安装,这些资源都是免费的,程序编码阶段使用的源代码在百度上面可以轻松获得,在有网络的环境下就能下载下来,不需要支付任何费用,经济成本很低。

3.1.4 法律可行性

本阜阳师范大学学生成长系统开发的所有技术资料都为合法,知识产权问题不会发生在开发过程中,而且没有抄袭其他相关系统,不会有侵犯版权的问题。所以在开发过程中不会涉及法律责任。

综上所述, 本阜阳师范大学学生成长系统的开发是可行的。

3.2系统性能分析

3.2.1 系统安全性

程序在使用中是不允许其他访问者随意窃取程序里面的隐秘信息,也不允许其他操作者越权操作其他管理用户操作的功能,要真正杜绝这些现象就必须在程序开发之前把程序的安全性给考虑进去。

3.2.2 数据完整性

数据完整性是确保数据信息是否具有可靠性,是否具有参考价值的一个重要因素,数据信息只描述一部分,或者必有的数据信息反而为空等现象都是代表着这个数据信息不完整,有数据缺陷,这是个很严肃的问题,因为这样的数据信息跟垃圾信息没什么两样。

数据完整性不仅仅限于登记的数据要完整,它也需要程序里面的所有数据信息之间存在关联,而且这种联系也是要求不能出差错的。

3.2.3系统可扩展性

一切事物都是一直在发展,程序员开发软件也需要带着发展的思维去进行软件开发操作,这样的话,开发出来的程序在应对管理所需时,也会相对应的进行程序升级与更新。不论是功能完善还是数据库升级都能在原来的基础上对原有程序进行迭代升级。让开发出来的程序能够走得越来越远。这也是广大用户对程序软件的使用要求。

3.3系统功能分析

本阜阳师范大学学生成长系统功能完善、操作简单、界面清晰,系统用户角色主要分3大类,即管理员、老师和学生。

管理员:管理员可登录进入系统后台对系统进行全面管理,管理员功能模块包括个人中心、学生管理、老师管理、网课课程管理、成绩信息管理、选课记录管理、学校信息管理、广告信息管理、奖惩信息管理、课程表管理、管理员管理以及系统管理,管理员实现了对系统信息的查看、添加、修改和删除的功能。

学生:学生在系统前台可查看系统信息,包括首页、网课课程、学校信息、广告信息、学校公告,登录后主要功能模块包括个人中心、网课课程管理、成绩信息管理、选课课程管理、学校信息管理、广告信息管理、奖惩信息管理、课程表管理以及我的收藏管理。

老师:老师登录后主要功能模块包括个人中心、网课课程管理、成绩信息管理、选课记录管理、学校信息管理、广告信息管理、课程表管理以及我的收藏管理。

3.4系统流程分析

3.4.1 登录流程

登录模块主要完成管理员和用户的权限登入,系统登录流程图如图3-1所示。

图3-1系统登录流程图

3.4.2添加信息流程

所有成功登录的用户均可实现添加信息功能,添加信息时系统会对添加的数据进行验证,验证通过才可写入数据库,添加信息流程图如图3-2所示。

图3-2 添加信息流程图

3.4.3删除信息流程

用户在删除信息时,系统会提示再次确认是否存在,确认删除则将信息从数据库删除,删除信息流程图如图3-3所示。

图3-3 删除信息流程图

4 系统设计

4.1系统概要设计

本阜阳师范大学学生成长系统并没有使用C/S结构,而是基于网络浏览器的方式去访问服务器,进而获取需要的数据信息,这种依靠浏览器进行数据访问的模式就是现在用得比较广泛的适用于广域网并且没有网速限制要求的B/S结构,图4-1就是开发出来的程序工作原理图。

图4-1 系统工作原理图

4.2系统结构设计

根据前面的各项设计分析,按照系统开发的基本理念对网站进行分解,从模块上主要可分为学生功能模块、老师功能模块和管理员功能模块,本阜阳师范大学学生成长系统结构如图4-2所示。

图4-2系统结构图

4.3数据库设计

4.3.1数据库E-R图设计

E-R图是一种描述显示数据类型间的关系的数据描述方法,E-R图可以完整地映射出现实模型的关系。E-R图中的三个最为重要的元素就是实体、属性、关系。E-R图即由这三点组成。

实体:E-R图中数据的实体,用矩形表示上面为实体名,下面为实体属性,实体包含主外键等关系。

属性:E-R图中的属性,是指实体的属性,实体由多条属性所构成,属性拥有自己的数据类型,数据大小。属性的优劣决定了E-R图中实体的健全性、完整性。

关系:E-R图中的关系是指实体之间的关系,用菱形来表示实体间的关系,这些菱形关系的联系上有着一对多或多对多的数据联系,这些构成了E-R图的关系,E-R图的关系紧密连接了实体,使实体间的关联性更加的显著、易懂。本阜阳师范大学学生成长系统的E-R图如下所示:

1.奖惩信息实体E-R图如图4-3所示:

图4-3 奖惩信息E-R图

2.老师信息实体E-R图如图4-4所示:

图4-4老师信息E-R图

3.网课课程信息实体E-R图如图4-5所示:

图4-5 网课课程信息E-R图

4.学生实体E-R图如图4-6所示:

图4-6 学生信息E-R图

5.管理员实体E-R图如图4-7所示:

图4-7 管理员信息E-R图

4.3.2数据库表设计

本阜阳师范大学学生成长系统需要后台数据库,系统采用MYSQL数据库进行数据的存储,下面介绍数据库中的各个表的详细信息。

表4-1 jiangchengxinxi奖惩信息表

字段名称字段意义字段类型字段长度是否主键能否为空
id编号bigint20
addtime`创建时间timestamp
xuehao学号varchar200
xueshengxingming学生姓名varchar200
huojiangshijian获奖时间date
huojiangneirong获奖内容longtext
chengfashijian惩罚时间date
chengfaneirong惩罚内容longtext

表4-2 laoshi老师信息表

字段名称字段意义字段类型字段长度是否主键能否为空
id编号bigint20
addtime`创建时间timestamp
laoshigonghao老师工号varchar200
mima密码varchar200
laoshixingming老师姓名varchar200
xingbie`性别varchar200
shoujihaoma手机号码varchar200
ruzhishijian入职时间date
`gerenzhaopian个人照片varchar200

表4-3 wangkekecheng网课课程信息表

字段名称字段意义字段类型字段长度是否主键能否为空
id编号bigint20
addtime`创建时间timestamp
kechengbianhao课程编号varchar200
kechengmingcheng课程名称varchar200
kechengleixing课程类型varchar200
kechengshizhang课程时长varchar200
fengmiantupian封面图片varchar200
kechengjieshao课程介绍longtext
laoshigonghao`老师工号varchar200
laoshixingming老师姓名varchar200
shoujihaoma手机号码varchar200
sfsh是否审核varchar200
shhf审核回复longtext
clicktime最近点击时间datetime
clicknum点击次数int11

表4-4 xuesheng学生信息表

字段名称字段意义字段类型字段长度是否主键能否为空
id编号bigint20
addtime`创建时间timestamp
xuehao学号varchar200
mima密码varchar200
xueshengxingming``学生姓名varchar200
xingbie性别varchar200
chushengriqi`出生日期date200
lianxishouji联系手机varchar200
gerenzhaopian个人照片varchar200
ruxueshijian入学时间date

表4-5 users管理员信息表

字段名称字段意义字段类型字段长度是否主键能否为空
id编号bigint20
username用户名varchar100
password`密码varchar100
role角色varchar100
addtime`新增时间timestamp

5 系统的实现

5.1登录界面的实现

用户在登录界面可输入用户名和密码,选择登录类型,点击登录按钮进行登录系统,系统登录界面如图5-1所示

图5-1 系统登录界面

5.2学生管理界面的实现

管理员可增删改查学生信息,学生管理界面如图5-2所示,添加学生界面展示如图5-3所示。

图5-2 学生管理界面

图5-3 添加学生界面

5.3系统主界面的实现

用户在系统前台可查看系统信息,包括首页、网课课程、学校信息、广告信息以及学校公告等,系统主界面展示如图5-4所示。

图5-4 系统主界面

5.4老师管理界面的实现

管理员可增删改查老师信息,老师管理界面展示如图5-5所示。

图5-5 老师管理界面

5.5网课课程管理界面的实现

老师登录后可添加网课课程信息,管理员可审核、修改和删除网课课程信息,学生可查看网课课程信息,并可选课,添加网课课程界面展示如图5-6所示,网课课程管理界面展示如图5-7所示,网课课程详情界面展示如图5-8所示。

图5-6 添加网课课程界面

图5-7 网课课程管理界面

图5-8 网课课程详情界面

5.6学校信息管理界面的实现

管理员可增删改查学校信息,学校信息管理界面如图5-9所示。

图5-9 学校信息管理界面

25

WangkekechengController.java
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.format.annotation.DateTimeFormat;
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.WangkekechengEntity;
import com.entity.view.WangkekechengView;

import com.service.WangkekechengService;
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-04-26 19:43:58
 */
@RestController
@RequestMapping("/wangkekecheng")
public class WangkekechengController {
    @Autowired
    private WangkekechengService wangkekechengService;
    


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

		String tableName = request.getSession().getAttribute("tableName").toString();
		if(tableName.equals("laoshi")) {
			wangkekecheng.setLaoshigonghao((String)request.getSession().getAttribute("username"));
		}
        EntityWrapper<WangkekechengEntity> ew = new EntityWrapper<WangkekechengEntity>();
		PageUtils page = wangkekechengService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, wangkekecheng), params), params));
        return R.ok().put("data", page);
    }
    
    /**
     * 前端列表
     */
	@IgnoreAuth
    @RequestMapping("/list")
    public R list(@RequestParam Map<String, Object> params,WangkekechengEntity wangkekecheng, 
		HttpServletRequest request){
        EntityWrapper<WangkekechengEntity> ew = new EntityWrapper<WangkekechengEntity>();
		PageUtils page = wangkekechengService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, wangkekecheng), params), params));
        return R.ok().put("data", page);
    }

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

	 /**
     * 查询
     */
    @RequestMapping("/query")
    public R query(WangkekechengEntity wangkekecheng){
        EntityWrapper< WangkekechengEntity> ew = new EntityWrapper< WangkekechengEntity>();
 		ew.allEq(MPUtil.allEQMapPre( wangkekecheng, "wangkekecheng")); 
		WangkekechengView wangkekechengView =  wangkekechengService.selectView(ew);
		return R.ok("查询网课课程成功").put("data", wangkekechengView);
    }
	
    /**
     * 后端详情
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") Long id){
        WangkekechengEntity wangkekecheng = wangkekechengService.selectById(id);
		wangkekecheng.setClicknum(wangkekecheng.getClicknum()+1);
		wangkekecheng.setClicktime(new Date());
		wangkekechengService.updateById(wangkekecheng);
        return R.ok().put("data", wangkekecheng);
    }

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



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

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

        wangkekechengService.insert(wangkekecheng);
        return R.ok();
    }

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

    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids){
        wangkekechengService.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<WangkekechengEntity> wrapper = new EntityWrapper<WangkekechengEntity>();
		if(map.get("remindstart")!=null) {
			wrapper.ge(columnName, map.get("remindstart"));
		}
		if(map.get("remindend")!=null) {
			wrapper.le(columnName, map.get("remindend"));
		}

		String tableName = request.getSession().getAttribute("tableName").toString();
		if(tableName.equals("laoshi")) {
			wrapper.eq("laoshigonghao", (String)request.getSession().getAttribute("username"));
		}

		int count = wangkekechengService.selectCount(wrapper);
		return R.ok().put("count", count);
	}
	
	/**
     * 前端智能排序
     */
	@IgnoreAuth
    @RequestMapping("/autoSort")
    public R autoSort(@RequestParam Map<String, Object> params,WangkekechengEntity wangkekecheng, HttpServletRequest request,String pre){
        EntityWrapper<WangkekechengEntity> ew = new EntityWrapper<WangkekechengEntity>();
        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 = wangkekechengService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, wangkekecheng), params), params));
        return R.ok().put("data", page);
    }


}

XuexiaoxinxiController.java
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.format.annotation.DateTimeFormat;
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.XuexiaoxinxiEntity;
import com.entity.view.XuexiaoxinxiView;

import com.service.XuexiaoxinxiService;
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-04-26 19:43:58
 */
@RestController
@RequestMapping("/xuexiaoxinxi")
public class XuexiaoxinxiController {
    @Autowired
    private XuexiaoxinxiService xuexiaoxinxiService;
    


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

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

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

	 /**
     * 查询
     */
    @RequestMapping("/query")
    public R query(XuexiaoxinxiEntity xuexiaoxinxi){
        EntityWrapper< XuexiaoxinxiEntity> ew = new EntityWrapper< XuexiaoxinxiEntity>();
 		ew.allEq(MPUtil.allEQMapPre( xuexiaoxinxi, "xuexiaoxinxi")); 
		XuexiaoxinxiView xuexiaoxinxiView =  xuexiaoxinxiService.selectView(ew);
		return R.ok("查询学校信息成功").put("data", xuexiaoxinxiView);
    }
	
    /**
     * 后端详情
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") Long id){
        XuexiaoxinxiEntity xuexiaoxinxi = xuexiaoxinxiService.selectById(id);
		xuexiaoxinxi.setClicknum(xuexiaoxinxi.getClicknum()+1);
		xuexiaoxinxi.setClicktime(new Date());
		xuexiaoxinxiService.updateById(xuexiaoxinxi);
        return R.ok().put("data", xuexiaoxinxi);
    }

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



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

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

        xuexiaoxinxiService.insert(xuexiaoxinxi);
        return R.ok();
    }

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

    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids){
        xuexiaoxinxiService.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<XuexiaoxinxiEntity> wrapper = new EntityWrapper<XuexiaoxinxiEntity>();
		if(map.get("remindstart")!=null) {
			wrapper.ge(columnName, map.get("remindstart"));
		}
		if(map.get("remindend")!=null) {
			wrapper.le(columnName, map.get("remindend"));
		}


		int count = xuexiaoxinxiService.selectCount(wrapper);
		return R.ok().put("count", count);
	}
	
	/**
     * 前端智能排序
     */
	@IgnoreAuth
    @RequestMapping("/autoSort")
    public R autoSort(@RequestParam Map<String, Object> params,XuexiaoxinxiEntity xuexiaoxinxi, HttpServletRequest request,String pre){
        EntityWrapper<XuexiaoxinxiEntity> ew = new EntityWrapper<XuexiaoxinxiEntity>();
        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 = xuexiaoxinxiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, xuexiaoxinxi), params), params));
        return R.ok().put("data", page);
    }


}

JiangchengxinxiServiceImpl.java
package com.service.impl;

import org.springframework.stereotype.Service;
import java.util.Map;
import java.util.List;

import com.baomidou.mybatisplus.mapper.Wrapper;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.plugins.Page;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import com.utils.PageUtils;
import com.utils.Query;


import com.dao.JiangchengxinxiDao;
import com.entity.JiangchengxinxiEntity;
import com.service.JiangchengxinxiService;
import com.entity.vo.JiangchengxinxiVO;
import com.entity.view.JiangchengxinxiView;

@Service("jiangchengxinxiService")
public class JiangchengxinxiServiceImpl extends ServiceImpl<JiangchengxinxiDao, JiangchengxinxiEntity> implements JiangchengxinxiService {
	

    @Override
    public PageUtils queryPage(Map<String, Object> params) {
        Page<JiangchengxinxiEntity> page = this.selectPage(
                new Query<JiangchengxinxiEntity>(params).getPage(),
                new EntityWrapper<JiangchengxinxiEntity>()
        );
        return new PageUtils(page);
    }
    
    @Override
	public PageUtils queryPage(Map<String, Object> params, Wrapper<JiangchengxinxiEntity> wrapper) {
		  Page<JiangchengxinxiView> page =new Query<JiangchengxinxiView>(params).getPage();
	        page.setRecords(baseMapper.selectListView(page,wrapper));
	    	PageUtils pageUtil = new PageUtils(page);
	    	return pageUtil;
 	}
    
    @Override
	public List<JiangchengxinxiVO> selectListVO(Wrapper<JiangchengxinxiEntity> wrapper) {
 		return baseMapper.selectListVO(wrapper);
	}
	
	@Override
	public JiangchengxinxiVO selectVO(Wrapper<JiangchengxinxiEntity> wrapper) {
 		return baseMapper.selectVO(wrapper);
	}
	
	@Override
	public List<JiangchengxinxiView> selectListView(Wrapper<JiangchengxinxiEntity> wrapper) {
		return baseMapper.selectListView(wrapper);
	}

	@Override
	public JiangchengxinxiView selectView(Wrapper<JiangchengxinxiEntity> wrapper) {
		return baseMapper.selectView(wrapper);
	}

}

router-static.js
import Vue from 'vue';
//配置路由
import VueRouter from 'vue-router'
Vue.use(VueRouter);
//1.创建组件
import Index from '@/views/index'
import Home from '@/views/home'
import Login from '@/views/login'
import NotFound from '@/views/404'
import UpdatePassword from '@/views/update-password'
import pay from '@/views/pay'
import register from '@/views/register'
import center from '@/views/center'
    import discussxuexiaoxinxi from '@/views/modules/discussxuexiaoxinxi/list'
    import xuexiaoxinxi from '@/views/modules/xuexiaoxinxi/list'
    import discusswangkekecheng from '@/views/modules/discusswangkekecheng/list'
    import news from '@/views/modules/news/list'
    import xuesheng from '@/views/modules/xuesheng/list'
    import xuankejilu from '@/views/modules/xuankejilu/list'
    import discussguanggaoxinxi from '@/views/modules/discussguanggaoxinxi/list'
    import jiangchengxinxi from '@/views/modules/jiangchengxinxi/list'
    import laoshi from '@/views/modules/laoshi/list'
    import storeup from '@/views/modules/storeup/list'
    import users from '@/views/modules/users/list'
    import wangkekecheng from '@/views/modules/wangkekecheng/list'
    import kechengbiao from '@/views/modules/kechengbiao/list'
    import chengjixinxi from '@/views/modules/chengjixinxi/list'
    import guanggaoxinxi from '@/views/modules/guanggaoxinxi/list'
    import chat from '@/views/modules/chat/list'
    import config from '@/views/modules/config/list'


//2.配置路由   注意:名字
const routes = [{
    path: '/index',
    name: '首页',
    component: Index,
    children: [{
      // 这里不设置值,是把main作为默认页面
      path: '/',
      name: '首页',
      component: Home,
      meta: {icon:'', title:'center'}
    }, {
      path: '/updatePassword',
      name: '修改密码',
      component: UpdatePassword,
      meta: {icon:'', title:'updatePassword'}
    }, {
      path: '/pay',
      name: '支付',
      component: pay,
      meta: {icon:'', title:'pay'}
    }, {
      path: '/center',
      name: '个人信息',
      component: center,
      meta: {icon:'', title:'center'}
    }
      ,{
	path: '/discussxuexiaoxinxi',
        name: '学校信息评论',
        component: discussxuexiaoxinxi
      }
      ,{
	path: '/xuexiaoxinxi',
        name: '学校信息',
        component: xuexiaoxinxi
      }
      ,{
	path: '/discusswangkekecheng',
        name: '网课课程评论',
        component: discusswangkekecheng
      }
      ,{
	path: '/news',
        name: '学校公告',
        component: news
      }
      ,{
	path: '/xuesheng',
        name: '学生',
        component: xuesheng
      }
      ,{
	path: '/xuankejilu',
        name: '选课记录',
        component: xuankejilu
      }
      ,{
	path: '/discussguanggaoxinxi',
        name: '广告信息评论',
        component: discussguanggaoxinxi
      }
      ,{
	path: '/jiangchengxinxi',
        name: '奖惩信息',
        component: jiangchengxinxi
      }
      ,{
	path: '/laoshi',
        name: '老师',
        component: laoshi
      }
      ,{
	path: '/storeup',
        name: '我的收藏管理',
        component: storeup
      }
      ,{
	path: '/users',
        name: '管理员',
        component: users
      }
      ,{
	path: '/wangkekecheng',
        name: '网课课程',
        component: wangkekecheng
      }
      ,{
	path: '/kechengbiao',
        name: '课程表',
        component: kechengbiao
      }
      ,{
	path: '/chengjixinxi',
        name: '成绩信息',
        component: chengjixinxi
      }
      ,{
	path: '/guanggaoxinxi',
        name: '广告信息',
        component: guanggaoxinxi
      }
      ,{
	path: '/chat',
        name: '在线客服',
        component: chat
      }
      ,{
	path: '/config',
        name: '轮播图管理',
        component: config
      }
    ]
  },
  {
    path: '/login',
    name: 'login',
    component: Login,
    meta: {icon:'', title:'login'}
  },
  {
    path: '/register',
    name: 'register',
    component: register,
    meta: {icon:'', title:'register'}
  },
  {
    path: '/',
    name: '首页',
    redirect: '/index'
  }, /*默认跳转路由*/
  {
    path: '*',
    component: NotFound
  }
]
//3.实例化VueRouter  注意:名字
const router = new VueRouter({
  mode: 'hash',
  /*hash模式改为history*/
  routes // (缩写)相当于 routes: routes
})

export default router;

声明

本博客适用于广泛的学术和教育用途,包括但不限于个人学习、开发设计,产品设计。仅供学习参考,旨在为读者提供深入理解和学术研究的材料。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值