如何使用ssm实现大学生社团管理系统

@TOC

10925ssm大学生社团管理系统

第1章 前 言

1.1 研究背景

传统的社团管理方式是在线下实体进行的,由于社团构造的差异,用户需要到线下进行实际的体验,有很大的空间和时间限制。而随着社团类的不断普及,其性能、模块的透明化,越来越多的人群也开始出于各种各样的理由而热衷网上加入社团,传统的社团管理模式已经无法满足人的需求了。

互联网的产生,带来了网络的再次高速发展,人们的生活得到了翻天覆地的变化。人们可以随时随地的享受互联网带来的方便快捷,在生活工作中的方方面面的需要都能在网络上实现,比如学习、加入等等。也就是说网络成了人们目前最直接、最方便、最轻松的接入口。

在当今世界,互联网快速发展的现在,如何利用互联网创造更简单高效的生活,这是我们首要讨论的。需要社团信息管理相关网站,一方面使得管理员可以对社团管理的信息进行及时更新和信息化的管理,可以较为容易的获取各种社团信息的流通。另一方面用户可以利用互联网更直观的查看社团管理的相关信息。与传统的社团信息车方式相比,用户加入的方式更加轻松,系统的操作更加的准确,这是一种潜在趋势,或许可以有效加快社团管理的普及情况。

1.2 研究现状

经过调查,目前现代人的生活节奏加快,生活压力也在逐渐的增加,学校可以使用智能社团的功能给学生带来的便利,随着人们的网上加入不断的增加,越来越多的人们开始加入了网上加入的大潮中,但是我国对于网上社团加入信息管理效果低下,而且出错率也很高。因此大家都在寻找一款更加专业化的社团管理。

随着社团管理的不断出现,用户需求的不断增多,社团管理也不断的得到壮大,本系统主要根据用户的实际需要,方便用户利用互联网实现对社团管理的了解、对比,甚至是交易、活动。同时让管理者可以通过这个系统对用户实际需求以及各种类社团的所有了解和社团信息情况进行管理。设计该系统主要目的是为了方便人们的对各种类型的社团的横向对比,帮助学生节省时间,而且减少管理者资金的投入。

1.3 系统开发目标

对于网站的前台设计,要保证主界面的整洁有序,能够抓住人的眼球,不会产生视觉疲劳,更重要的是,带给人容易操作的直观感受,这样才能留住用户去进行使用,增加三分热度的延续期。在系统的后台设计上,要采取非常简洁有效的技术,开发方便的同时,便于以后的维护。我们不但要确保所有的功能都能够满足用户的需求,用户还要能自己主动通过网站去实现想要的操作,而管理者的简单通过网站对用户的需求情况进行了解和管理。为达到这一目的,提出以下目标:

(1)用户可以实时查看最新的社团信息,以及相关资讯;

(2)用户可以对比各大社团的信息,选择自己较为满意的社团;

(3)用户可以通过论坛互相交流加入社团心得;

(4)管理员可以在后台方便管理前台网页的各种信息;

(5)管理员可以方便查询、汇总用户的使用状态。

第2章 技术与原理

2.1 Java技术

Java技术它是一个容易让人学会和使用的一门服务器语言。它在编程的过程当中只需要很少的知识就能建立起一个真正的交互站点。对于这个教程来说它并不需要你完全去了解这种语言,只要能快速融入web站点就可以,还可以进行一些基本知识的编程就可以。

现代社会中,使用Java语言做动态网页是最常用的,主要是Java比较简单易懂,用户掌握的web 服务器编写脚本。Java语言技术在编程技术中具有一定的安全性和跨平台性功能,并且它可以直接支持分布式的网络应用和效率。在Java语言技术当中它的功能是方便简单的。对于这个语言技术来说它就像万花筒一样在进行开发的时候可以随机进行组合最后变成不同颜色的花瓣。随着现在互联网的快速发展和电子商务的不断发展,在各行各业的设施基础上都开始应用到了计算机,对于过去传统的的管理方式和客户需求都不能满足现在正常的供求关系,所以我们必须通过添加现在的新技术来满足客户的需求。从目前来看,Java技术已经在动态网页中应用的是比较广泛的一门技术。

Java语言具有非常多种的特性:(1)跨平台的无关性;(2)面向对象; (3)安全性得以保障;(4)支持多个任务;(5)多种编写方式,代码编写简单。对比其他的低级语言、高级语言,Java语言具有明显的显著优势以及未来开阔的前景,可以广泛的应用在个人笔记本电脑、大数据、大型游戏等等。

Java语言具有面向对象的特性,并且易于理解。关于对象,其实可以理解成每一种事物都是一种对象,包括我们人类自身都是一种对象。利用面向对象语言的基本特征来解决软件开发中的实际问题,为有效软件开发提供了技术支持。

2.2 MySQL数据库

mysql数据库具有很多的优点,他操作起来非常的简单,只需要编写一小段代码就可以实现相应的功能,而且编写出的代码可以在任何的平台下进行使用,对使用平台没有任何的要求,因此任何的软件开发人员都可以利用mysql数据库来进行系统的开发设计,同时他也可以为软件开发节省了很多的开销,mysql数据库由于存储量大、操作简单。功能强大因此将他最为该系统的数据存储是完全可以的。

mysq数据库是一个开放的架构,任何软件开发员都可以进行使用,随着计算机网络的不断发展,MySQL数据库也在功能方面不断的进行提升,也更加适应所有的系统的开发,我们在对数据库进行操作的时候,是非常简单易上手的,我们只需要编写一小段的代码就可以实现相应的功能,而且编辑出的代码可以在任何的平台上使用,不需要在进行二次的编译。由于MySQL数据库具有以上非常多的优点,我们将它最为数据库的首选应用到系统的开发中,由于他的体积非常小,开发的成本也非常的低,所有受到很多软件开发者的喜欢,被更多的运用到系统的开放中,所以本系统也是利用MySQL数据库来对所有的数据进行存储和编辑。

2.3 B/S结构

B/S(浏览器/服务器)结构是目前使用最多的结构模式,它可以使得系统的开发更加的简单,好操作,而且还可以对其进行维护。使用该结构时只需要在计算机中安装数据库,和一些很常用的浏览器就可以了。浏览器就会与数据库进行信息的连接,可以实现很多的功能,B/S结构是可以直接进行使用的,而且B/S结构在使用中极大的减少了工作的维护。基于B/S的软件,所有的数据库之间都是相互独立的,因此是非常安全的。因为基于B/S结构可以清楚的看到系统正在处理的业务,并且能够及时的让管理人员作出决策,这样就可以避免企业的损失。B/S结构的基本特点是集中式的管理模式,用户使用系统生成数据后,这些数据就可以存储到系统的数据库中,方便日后能够用到,这样就可以满足人们的所有的需求。

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

2.4 SSM框架

当今流行的“SSM组合框架”是Spring + SpringMVC + MyBatis的缩写,受到很多的追捧,“组合SSM框架”是强强联手、各司其职、协调互补的团队精神。web项目的框架,通常更简单的数据源。Spring属于一个轻量级的反转控制框架(IoC),但它也是一个面向表面的容器(AOP)。SpringMVC常常用于控制器的分类工作模式,与模型对象分开,程序对象的作用与自动取款机进行处理。这种解耦治疗使整个系统的个性化变得更加容易。MyBatis是一个良好的可持续性框架,支持普通SQL查询,同时允许对存储过程的高级映射进行数据的优化处理。大型Java Web应用程序的由于开发成本太高,开发后难以维护和开发过程中一些难以解决的问题,而采用“SSM组合框架”,它允许建立业务层次结构,并为这个问题提供良好的解决方

第3章 需求分析

3.1 需求分析

开发系统的过程中,去调查用户的功能诉求,对需要存在的功能进行需求分析是特别重要的,且对于系统的开发有着实际的意义,设计社团管理通过对用户的需求进行分析,结合实际情况进行开发研究,对用户的所有需求做出一个完整的基本的框架,然后一步一步的完成、实现。需求分析可以为系统的开发提供一个目标,只有按照这个目标进行开发设计,才能进行完整的开发,这样设计出的系统才有使用的意义,才能在竞争激烈的软件市场中生存,才能真正的帮助人们解决问题,提高实际的效率。

3.2 系统可行性分析

3.2.1 技术可行性

本系统采取的是目前应用最广泛的程序进行技术的支持,主要的技术支持是java语言,他作为一个相当成熟的语言程序,在众多的软件开发中起着很大作用。而且用java语言编辑出来程序可以直接运行,不需要借助其他的翻译器进行翻译。所以在技术方面是完全可以行的。

3.2.2 经济可行性

本项目开发的初衷就是为了节约,因为系统开发的所有过程都是我自己开发的我,而且在开发过程使用到的技术也都是市面上常见的容易操作的,所以不需要请专业的人士花资金来进行系统的开发,而且在项目开发的过程中我也学到了更多的知识。开发的这个软件可以在网络中进行免费的下载,对计算机的软硬件没有很高的要求,因此这个项目是非常实惠的,在经济方面是完全可性的。

3.2.3 操作可行性

操作可行性也就是系统的可用性,一个系统的操作是否容易决定着这个系统的使用度,在系统的操作方面的设计我都是采取简洁易懂的方式,操作的整个菜单界面整齐有序,所有的功能都有序的排列,不会出现重叠或者需要转换的现象,用户想要哪方面的操作都可以直接进行操作,所以该系统任何人都可以进行操作,不需要有相关专业的技术这样用户在操作起来就容易很多。

3.3 项目设计目标与原则

1、关于社团管理的基本要求

(1)功能要求:管理员可以对所有的社团信息进行查看管理,可以对社团负责人、用户进行管理,可以及时的查看社团信息的情况,还可以对社团成员、社团经费、活动报名、留言板等等进行查看和管理等功能模块。

(2)性能:因为社团管理管理中有很多的信息需要存储,因此对于系统的存储量有很大的要求,需要有一个强大的数据库的支持才能确保所有的信息都能安全稳定的进行存储。

(3)安全与保密要求:用户都必须通过管理员审核才能进入系统。

(4)环境要求:支持Windows系列、Vista系统等多种操作系统使用。

2、开发目标

社团管理的主要开发目标如下:

(1)用户可以实时查看最新的社团信息,以及相关资讯;

(2)用户可以对比各大社团的信息,选择自己较为满意的社团;

(3)用户可以通过留言互相交流加入社团心得;

(4)管理员可以在后台方便管理前台网页的各种信息;

3、设计原则

本社团管理采用JSP技术,Mysql数据库开发,充分保证了系统稳定性、完整性。

(1)系统响应效率:由于是社团管理,因此就需要系统的响应效率是非常高的,并且可以支持很多人同时进行系统的使用。

(2)界面简洁清晰:系统界面要简单有序,所有的功能一目了然。

(3)储存性高:因为是社团管理,所以就会在数据库要求上比较严格,信息录入的比较多,而且丰富复杂, 这就需要一个强大的数据库来存放更多的数据和保证数据的时时性。

(4)易学性:系统的设计一定要简单,使得人们使用起来非常好的顺手。

(5)稳定性需求:该系统在使用过程中必须保持稳定,不要出现卡顿、模糊等情况。

(6)稳定性:由于是社团管理,因此系统运行必须要十分的稳定。

3.4 系统流程分析

用户需要拥有属于自己的账号和密码,且必须正确,这样才能顺利登录到系统中。进入网站后,用户可以自行查询各种社团,在自己满意的社团的详情页面的最后,可以直接选择加入操作。具体流程如下图3-2所示:

图3-2 用户操作流程图

为了保证系统的安全性,要使用本系统对系统信息进行管理,必须先登陆到系统中。其具体登录流程图如图3-3所示:

图3-3 系统操作流程图

第4章 架构设计

4.1 系统体系结构

登录系统结构图,如图4-1所示:

大学生社团管理系统

用户登录

密码正确

管理员界面

用户界面

社团负责人界面

图4-1 登录结构图

系统结构图,如图4-2所示:

图4-2 系统结构图

4.2 数据库实体设计

数据库的功能就是对系统中所有的数据进行存储和管理。所有的数据可以在数据库中产时间的进行存储,方便用户的使用。而且所有的数据库中的数据也应该具有一定的共享性,任何的系统可以对一些数据进行使用,同时还应该保持一定的独立性,每一个数据库中的数据都有很强的安全性,可以被很好的存放到数据库,没有进行身份的验证是不能对这些数据进行查看和使用的。数据库的设计需要明确每一个实体之间的联系,系统的E-R图如下图所示::

管理员实体主要存储管理信息包账号、密码、验证码、角色属性。管理员信息属性图如图4-5所示。

图4-5 管理员信息实体属性图

用户信息主要包括用户名、密码、姓名 、性别、头像、手机、邮箱、身份证等属性,用户信息属性图如图4-6所示。

图4-6用户信息实体属性图

社团负责人管理实体属性主要包括社团编号、密码、姓名、社团名称、性别、头像、联系电、话邮箱、身份证等属性。社团负责人管理实体属性图如图4-7所示。

图4-7社团负责人管理实体属性图

社团信息属性主要包括社团编号、社团名称、类型、图片、社团宗旨、创办日期、社团地址、联系电话、邮箱等属性。社团信息实体属性图如图4-8所示。

图4-8社团信息实体属性图

4.3 数据库表设计

当社团管理在运行的时候,数据库要能确保自己的独立性,想要哪部分的数据就选择相应的设置选项,对应的数据就会以表格的形式展现出来。当对这一个功能进行设置,他就会与数据库进行连接,会在对话框中弹出相应的数据源。

表4-1 allusers表

列名 数据类型 长度 约束
id int 11 NOT NULL
username varchar 50 default NULL
pwd varchar 50 default NULL
cx varchar 50 default NULL

表4-2:yonghu表

列名 数据类型 长度 约束
id int 11 NOT NULL
addtime varchar 50 default NULL
yonghuming varchar 50 default NULL
mima varchar 50 default NULL
xingming varchar 50 default NULL
xingbie varchar 50 default NULL
touxiang varchar 50 default NULL
shouji varchar 255 default NULL
youxiang varchar 255 default NULL
shenfenzheng varchar 255 default NULL

表4-3:shetuanfuzeren表

列名 数据类型 长度 约束
id int 11 NOT NULL
addtime varchar 50 default NULL
shetuanbianhao varchar 50 default NULL
mima varchar 50 default NULL
xingming varchar 50 default NULL
shetuanmingcheng varchar 50 default NULL
xingbie varchar 50 default NULL
touxiang varchar 50 default NULL
lianxidianhua varchar 50 default NULL
youxiang varchar 255 default NULL
shenfenzheng varchar 255 default NULL

表4-4:shetuanxinxi表

列名 数据类型 长度 约束
id int 11 NOT NULL
addtime varchar 50 default NULL
shetuanbianhao varchar 50 default NULL
shetuanmingcheng varchar 50 default NULL
fenlei varchar 50 default NULL
tupian varchar 50 default NULL
shetuanzongzhi varchar 50 default NULL
chuangbanriqi varchar 50 default NULL
shetuandizhi varchar 50 default NULL
lianxidianhua varchar 50 default NULL
youxiang varchar 50 default NULL
shetuanfengcai varchar 255 default NULL

表4-5:shetuanxinwen表

列名 数据类型 长度 约束
ID int 11 NOT NULL
addtime varchar 50 default NULL
biaoti varchar 50 default NULL
leixing varchar 50 default NULL
tupian varchar 50 default NULL
neirong varchar 50 default NULL
faburiqi varchar 50 default NULL
shetuanbianhao varchar 255 default NULL
shetuanmingcheng varchar 255 default NULL

表4-6:yonghuzixun表

列名 数据类型 长度 约束
id int 11 NOT NULL
addtime varchar 50 default NULL
shetuanbianhao varchar 2 default NULL
shetuanmingcheng varchar 50 default NULL
tupian varchar 50 default NULL
zixunneirong varchar 50 default NULL
liuyanriqi varchar 255 default NULL
beizhu varchar 255 default NULL
yonghuming varchar 255 default NULL
shouji varchar 255 default NULL
sfsh varchar 255 default NULL

#########

第5章 系统实现

5.1 管理员后台功能模块

管理员通过点击后台管理,进入页面可以输入账号、密码、验证码进行登录相对应操作,如图5-1所示。

图5-1系统首页界面图

用户信息,管理员查看用户可以进行编辑用户名、密码、姓名 、性别、头像、手机、邮箱、身份证的操作,可以根据界面上的进行添加、删除、修改等操作,具体操作如图5-2所示。

图5-2用户界面图

社团负责人,在社团负责人面中可以对所有的信息进行查看,可以填写社团编号、密码、姓名、社团名称、性别、头像、联系电话、邮箱、身份证等,并可以进行添加、删除、修改等操作如图5-3所示。

图5-3社团负责人界面图

社团信息,在社团信息当中可以填写社团编号、社团名称、类型、图片、社团宗旨、创办日期、社团地址、联系电话、邮箱,并且可以对这些选社团信息进行编辑和删除、添加等操作,如图5-4所示。

图5-4社团信息界面图

社团新闻管理,在社团新闻管理页面可以对社团新闻信息进行添加、删除、修改等操作,如图5-5所示。

图5-5社团新闻界面图

社团活动,在社团活动当中可以填写活动名称、类型、图片、活动时间、活动地点社团编号、社团地址、社团名称、联系电话、并且可以对这些选社团活动信息进行编辑和删除、添加等操作,如图5-6所示。

图5-6社团活动界面图

社团成员管理,在社团成员管理当中可以填写社团编号、社团名称、类型、图片、申请内容、申请日期、备注、用户名等等,并且可以对这些选社团成员管理进行编辑和删除、添加/修改等操作,如图5-7所示。

图5-7社团成员管理界面图

留言板管理,在留言板当中可以填写用户、留言内容、回复内容等等并且可以对这些选留言板管理进行编辑和删除、添加、修改等操作,如图5-8所示。

图5-8留言板管理界面图

系统管理:该页面为轮播图管理界面。管理员可以在此页面进行首页轮播图的管理等进行上传图片进行添加、删除、修改以及查看并对整个系统进行维护等操作。如图5-9所示。

图5-9系统界面图

5.2 社团负责人功能模块

社团负责人通过点击后台管理,进入页面可以输入账号、密码、验证码进行登录相对应操作,如图5-10所示。

图5-10社团负责人登录界面图

个人中心,在个人中心页面中可以对个人信息进行添加、删除修改 等操作,如图5-11所示。

图5-11个人中心界面图

社团信息,在社团信息当中可以填写社团编号、社团名称、类型、图片、社团宗旨、创办日期、社团地址、联系电话、邮箱,并且可以对这些选社团信息进行编辑和删除、添加等操作,如图5-12所示。

图5-12社团信息界面图

用户咨询信息,在用户咨询信息可以对用户的咨询进行查看审核回复等操作,如下图5-13所示。

图5-13用户咨询界面图

社团经费管理,可以对社团经费信息进行编辑经费名称、社团编号、社团名称、使用壮态、费用等进行查看详情删除、修改等操作,如图5-14所示。

图5-14社团经费管理界面图

5.3 用户前后台功能模块

5.3.1用户前台功能模块

######### 用户通过系统注册、登录,用户通过输入用户名、密码、姓名、手机、邮箱、身份证等进行注册,然后进行登陆操作,如图5-15所示。

图5-15用户注册、登录信息管理界面图

前台首页,通过系统查看前台的社团信息、社团新闻、社团活动、留言反馈、我的个人信息、后台管理信息,如图5-16所示。,

图5-16前台首页界面图

社团信息,在社团页面中可以查看社团编号、社团名称、类型、图片、社团宗旨、创办日期、社团地址、联系电话、邮箱等可以申请加入、评论详细操作,如图5-17所示。

图5-17社团信息界面图

留言反馈,在留言反馈页面中用户可以进行留言,管理员和社团负责人会进行回复等详细操作,如图5-18所示。

图5-18留言反馈界面图

我的个人中心,在个人中心、我的收藏页面中可以查看户名、密码、姓名 、性别、头像、手机、邮箱、身份证等查看详情删除、修改等操作,如图5-19所示。

图5-19个人中心界面图

用户后台登录,用户通过输入用户名、密码加入后台等详细操作,如图5-20所示。

图5-20用户后台界面图

个人信息,在个人信息页面中可以对个人资料进行编辑添加、修改、删除查看内容等详细操作,如图5-21所示。

图5-21个人信息界面图

用户咨询管理,在咨询管理页面中可以对社团编号、社团名称、图片、留言

日期等等进行查看详情修改、删除等详细操作,如图5-22所示。

图5-22用户咨询管理界面图

我的收藏管理,在我的收藏页面中可以收藏ID、表名、收藏名称、收藏图片等等进行查看详情删除等详细操作,如图5-23所示。

图5-23收藏管理界面图

HuodongbaomingController.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.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.HuodongbaomingEntity;
import com.entity.view.HuodongbaomingView;

import com.service.HuodongbaomingService;
import com.service.TokenService;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.MPUtil;
import com.utils.CommonUtil;


/**
 * 活动报名
 * 后端接口
 * @author 
 * @email 
 * @date 2020-11-26 08:47:15
 */
@RestController
@RequestMapping("/huodongbaoming")
public class HuodongbaomingController {
    @Autowired
    private HuodongbaomingService huodongbaomingService;
    


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

		String tableName = request.getSession().getAttribute("tableName").toString();
		if(tableName.equals("shetuanfuzeren")) {
			huodongbaoming.setShetuanbianhao((String)request.getSession().getAttribute("username"));
		}
		if(tableName.equals("yonghu")) {
			huodongbaoming.setYonghuming((String)request.getSession().getAttribute("username"));
		}
        EntityWrapper<HuodongbaomingEntity> ew = new EntityWrapper<HuodongbaomingEntity>();
		PageUtils page = huodongbaomingService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, huodongbaoming), params), params));
        return R.ok().put("data", page);
    }
    
    /**
     * 前端列表
     */
    @RequestMapping("/list")
    public R list(@RequestParam Map<String, Object> params,HuodongbaomingEntity huodongbaoming, HttpServletRequest request){
        EntityWrapper<HuodongbaomingEntity> ew = new EntityWrapper<HuodongbaomingEntity>();
		PageUtils page = huodongbaomingService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, huodongbaoming), params), params));
        return R.ok().put("data", page);
    }

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

	 /**
     * 查询
     */
    @RequestMapping("/query")
    public R query(HuodongbaomingEntity huodongbaoming){
        EntityWrapper< HuodongbaomingEntity> ew = new EntityWrapper< HuodongbaomingEntity>();
 		ew.allEq(MPUtil.allEQMapPre( huodongbaoming, "huodongbaoming")); 
		HuodongbaomingView huodongbaomingView =  huodongbaomingService.selectView(ew);
		return R.ok("查询活动报名成功").put("data", huodongbaomingView);
    }
	
    /**
     * 后端详情
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") String id){
        HuodongbaomingEntity huodongbaoming = huodongbaomingService.selectById(id);
        return R.ok().put("data", huodongbaoming);
    }

    /**
     * 前端详情
     */
    @RequestMapping("/detail/{id}")
    public R detail(@PathVariable("id") String id){
        HuodongbaomingEntity huodongbaoming = huodongbaomingService.selectById(id);
        return R.ok().put("data", huodongbaoming);
    }
    



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

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

        huodongbaomingService.insert(huodongbaoming);
        return R.ok();
    }

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

    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids){
        huodongbaomingService.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<HuodongbaomingEntity> wrapper = new EntityWrapper<HuodongbaomingEntity>();
		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("shetuanfuzeren")) {
			wrapper.eq("shetuanbianhao", (String)request.getSession().getAttribute("username"));
		}
		if(tableName.equals("yonghu")) {
			wrapper.eq("yonghuming", (String)request.getSession().getAttribute("username"));
		}

		int count = huodongbaomingService.selectCount(wrapper);
		return R.ok().put("count", count);
	}
	


}

ShetuanxinxiServiceImpl.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.ShetuanxinxiDao;
import com.entity.ShetuanxinxiEntity;
import com.service.ShetuanxinxiService;
import com.entity.vo.ShetuanxinxiVO;
import com.entity.view.ShetuanxinxiView;

@Service("shetuanxinxiService")
public class ShetuanxinxiServiceImpl extends ServiceImpl<ShetuanxinxiDao, ShetuanxinxiEntity> implements ShetuanxinxiService {
	

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

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

}

ShetuanjingfeiServiceImpl.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.ShetuanjingfeiDao;
import com.entity.ShetuanjingfeiEntity;
import com.service.ShetuanjingfeiService;
import com.entity.vo.ShetuanjingfeiVO;
import com.entity.view.ShetuanjingfeiView;

@Service("shetuanjingfeiService")
public class ShetuanjingfeiServiceImpl extends ServiceImpl<ShetuanjingfeiDao, ShetuanjingfeiEntity> implements ShetuanjingfeiService {
	

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

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

}

pay.vue
<template>
  <div class="container">
    <el-alert title="确认支付前请先核对订单信息" type="success" :closable="false"></el-alert>
    <!-- <div class="top-content">
      <span>收款人</span>
      <el-input style="width:300px" v-model="name" placeholder="收款人"></el-input>
      <span style="margin-left:20px">收款账号</span>
      <el-input style="width:300px" v-model="account" placeholder="收款账号"></el-input>
    </div> -->
    <!-- <div class="price-content">
      <span>金额</span>
      <span>¥99.0</span>
    </div> -->
    <div class="pay-type-content">
      <div class="pay-type-item">
        <el-radio v-model="type" label="微信支付"></el-radio>
        <img src="@/assets/img/test/weixin.png" alt>
        <!-- <span>微信支付</span> -->
      </div>
      <div class="pay-type-item">
        <el-radio v-model="type" label="支付宝支付"></el-radio>
        <img src="@/assets/img/test/zhifubao.png" alt>
        <!-- <span>支付宝支付</span> -->
      </div>
      <div class="pay-type-item">
        <el-radio v-model="type" label="建设银行"></el-radio>
        <img src="@/assets/img/test/jianshe.png" alt>
        <!-- <span>建设银行</span> -->
      </div>
      <div class="pay-type-item">
        <el-radio v-model="type" label="农业银行"></el-radio>
        <img src="@/assets/img/test/nongye.png" alt>
        <!-- <span>农业银行</span> -->
      </div>
      <div class="pay-type-item">
        <el-radio v-model="type" label="中国银行"></el-radio>
        <img src="@/assets/img/test/zhongguo.png" alt>
        <!-- <span>中国银行</span> -->
      </div>
      <div class="pay-type-item">
        <el-radio v-model="type" label="交通银行"></el-radio>
        <img src="@/assets/img/test/jiaotong.png" alt>
        <!-- <span>交通银行</span> -->
      </div>
    </div>
    <div class="buton-content">
      <el-button @click="submitTap" type="primary">确认支付</el-button>
      <el-button @click="back()">返回</el-button>
    </div>
  </div>
</template>
<script>
// import { Message } from "element-ui";
export default {
  data() {
    return {
      name: "",
      account: "",
      type: "",
      table: "",
      obj: ""
    };
  },
  mounted() {
    let table = this.$storage.get("paytable");
    let obj = this.$storage.getObj("payObject");
    this.table = table;
    this.obj = obj;
  },
  methods: {
    submitTap() {
      // if (!this.name) {
      //   this.$message.error("请输入收款人姓名");
      //   return;
      // }
      // if (!this.account) {
      //   this.$message.error("请输入收款人账号");
      //   return;
      // }
      if (!this.type) {
        this.$message.error("请选择支付方式");
        return;
      }
      this.$confirm(`确定支付?`, "提示", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "warning"
      }).then(() => {
        this.obj.ispay = "已支付";
        this.$http({
          url: `${this.table}/update`,
          method: "post",
          data: this.obj
        }).then(({ data }) => {
          if (data && data.code === 0) {
            this.$message({
              message: "支付成功",
              type: "success",
              duration: 1500,
              onClose: () => {
                this.$router.go(-1);
              }
            });
          } else {
            this.$message.error(data.msg);
          }
        });
      });
    },
    back(){
      this.$router.go(-1);
    }
  }
};
</script>
<style lang="scss" scoped>
.container {
  margin: 10px;
  font-size: 14px;
  span {
    width: 60px;
  }
  .top-content {
    display: flex;
    align-items: center;
    padding: 20px;
  }
  .price-content {
    display: flex;
    align-items: center;
    margin-top: 20px;
    padding-bottom: 20px;
    padding: 20px;
    border-bottom: 1px solid #eeeeee;
    font-size: 20px;
    font-weight: bold;
    color: red;
  }
  .pay-type-content {
    display: flex;
    align-items: center;
    margin-top: 20px;
    flex-wrap: wrap;
    span {
      width: 100px;
    }
    .pay-type-item {
      display: flex;
      align-items: center;
      justify-content: space-between;
      width: 300px;
      margin: 20px;
      border: 1px solid #eeeeee;
      padding: 20px;
    }
  }
  .buton-content {
    margin: 20px;
  }
}
</style>

声明

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