厦门住房和建设局网站,网站搜索排名高怎么做,网站由哪些部分组成部分组成,上海网站备案信息TOC
ssm766中学生课后服务的信息管理与推荐vue
第一章 绪论
1.1 选题背景
目前整个社会发展的速度#xff0c;严重依赖于互联网#xff0c;如果没有了互联网的存在#xff0c;市场可能会一蹶不振#xff0c;严重影响经济的发展水平#xff0c;影响人们的生活质量。计算…TOC
ssm766中学生课后服务的信息管理与推荐vue
第一章 绪论
1.1 选题背景
目前整个社会发展的速度严重依赖于互联网如果没有了互联网的存在市场可能会一蹶不振严重影响经济的发展水平影响人们的生活质量。计算机的发展不管是从硬件还是软件都有很多技术储备每年都有很多的技术和软件产生纵观各个领域无一不用互联网软件办公用的还是电脑居多但是人手一台智能设备已经变成了现在人们的生活日常哪怕的普通的老百姓都成了上知天文下知地理的所在这些都依赖于互联网技术。互联网技术在信息的传播方面是巨大的而信息的处理就变成了各种产业管理者和维护者的重任。人们已经习惯了互联网的存在所以经常操作一些互联网产品变成了日常所以开发一个中学生课后服务的信息管理让人们使用是没有一点问题的并且在这个过程中不仅能够规范中学生课后服务信息管理的使用流程还有信息处理流程也能让整个信息的传播处理都存在一种可控制的范围最重要的是计算机在中学生课后服务信息管理方面可以给管理者提供更好的帮助。
1.2 选题意义
当开发软件变成了一个潮流之后会发现不管任何行业都能开发适合自己的软件不管是内部员工管理还是财务管理甚至业务管理都可以数据化并且可以对这些数据集中处理进而根据数据处理结果就自然而然的提高了管理水平最重要的是开发一个软件投入使用开发过程其实就是梳理行业痛点的过程就是让软件来弥补行业的管理漏洞不断的优化事物的处理流程。中学生课后服务的信息管理就是一款专门开发的软件通过Web技术让使用者可以在任何一台智能设备上面通过浏览器进行操作使用对数据的处理不在局限于地域距离只要软件开发到位使用起来方便达到预期目的会发现有软件和没有软件的区别是很大的有了这款软件之后会发现数据的存储安全方面比起之前的满屋寻找记录的优势是多么的巨大。
1.3 研究内容
本文将从分析设计实现测试等角度来阐述本系统。
绪论介绍本系统开发的背景意义
开发环境介绍本系统的配置环境以及开发技术
系统分析介绍本系统的功能性能以及可行性
系统设计介绍本系统的数据库的设计以及功能结构的设计
系统实现介绍本系统的实现界面以及实现的功能
系统测试介绍本系统的功能测试以及测试结果
第二章 开发环境
开发本系统需要配置开发环境除了需要开发者安装相应的软件外也需要对开发中运用的技术进行了解和掌握。
2.1 Java语言
Java语言是目前最流行的语言之一不仅可以做桌面窗口形式的程序还可以做浏览器访问的程序目前最流行的就是用Java语言作为基础做各种程序的后台处理。Java语言是操作变量的语言而变量则是Java对于数据存在形式的定义变量用来操作内存而内存则牵扯到计算机安全问题这样Java语言反而有了免疫直接针对用Java语言开发出来的程序的病毒有效的提高了Java语言开发出来程序的生存能力。Java是具有动态运行能力的一种语言Java的类不仅仅可以用Java核心提供的基础类还可以进行重写这样会让Java的功能变得更加丰富甚至可以编写一些功能模块进行封装然后其他项目如果需要用到这些可以复用的功能完全可以直接引用然后在用得地方调用方法即可。Java是一种开源的语言可以对Java里面的各种类以及引用方法进行追溯甚至可以对已经编译过的语言进行反编译这样不仅仅提高学习的效率并且可以学习其他从业者提供的优雅的编程方式。Java语言发展到现在已经在各个行业扎根学习Java可以从事的行业很多并且学习的方法很多网上有很多免费的教程甚至有些高深的知识也只需要付费就可以进行学习而不是像Java语言之初每一个编程人员都需要用记事本进行手动编码现在有很多集成开发环境帮助Java从业者。选择Java语言进行编程是一种很好的解决问题的方式。
2.2 MYSQL数据库
一般学习程序开发的人员如果学习数据库的话肯定是要学习MySQL数据库MySQL数据库通过这么多年的不断发展社区版本都是免费的最重要的是小巧占用电脑空间比较小让更多的开发人员可以不需要更换更高级的电脑就可以进行学习。学习只是一个方面最重要的是MySQL市场占有率是世界第一基本上十个公司就有七八个用得MySQL数据库。MySQL的优点不只是这么粗浅MySQL首先是开源的只要不是商用就不用花钱并且大型的数据也是支持的只要是市面上存在的操作系统MySQL都可以有对应的版本可供使用。因为MySQL是开源的如果有对MySQL有特殊需求的甚至可以自己修改源码达到符合自己使用的目的。MySQL数据库好处多多最重要的一点符合本设计的开发需求可以说本设计只用到了MySQL的一些基础功能而这点基础功能就完全够用。MySQL学习的教程网上很多许多关于入门的教程就完全可以达到普通程序员的开发水平只需要把基本的知识学会了到公司里面也只是根据不同的业务逻辑进行不同的语句编写而已。
2.3 Eclipse开发工具
Eclipse是开源免费的仅仅这样理解也许会给人一种免费没有好货的感觉其实不是这样的。Eclipse是一个开发源代码的开发工具这样会很安全因为是开源的如果对使用者的电脑有害肯定能找到原因所在所以这一点安全方面是不用担心的。Eclipse是不用安装的这样就不用对系统盘增加压力可以放到任何一个盘里使用的时候打开不用的时候关闭不会偷偷的在后台运行不需要增加注册表负担启动还必须依靠Java的JDK才可以启动有效的避免了一些病毒入侵如果病毒入侵改变了源代码就不能运行了只能重新删除文件夹重新解压一份新的Eclipse即可用起来很安全。Eclipse发展到现在已经可以支持其他的开发语言了家族越来越强大功能越来越多最重要的还是没有收费这一点就让新手开发者省下很多的资金用来培养自己的学习而不用花钱买了开发软件才发现自己不适合进行开发永远免费的策略可以永远让人有想使用的机会。最重要的是Eclipse并不是免费功能就不够用恰恰相反不仅功能强大用起来完全符合本设计的开发需求所以选用了Eclipse作为开发工具。
2.4 SSM框架
首先SSM框架是指的三个框架第一个S是Spring MVC的首字母主要是作为控制视图层的一种框架第二个S是Spring框架的意思主要是用来作为Web层这一层主要是用来获取浏览器提交的一些信息并且把提交的信息处理后反馈给Spring MVC来控制不同的显示页面和内容第三个M是的意思是MyBatis框架主要是做为持久层用得把数据对象转换成数据库表里的值或者从数据库获取相应的数据转换成对应的Java对象让程序可以有效的进行转换和处理。三个框架可以有效的进行结合实现不同的作用起到了承上启下的作用。
第三章 系统分析
这个阶段需要依靠大量的资料作为研究本系统的基础数据除了分析系统开发可行问题之外还要再通过调查本系统针对的目标人群的需求来确定本系统功能并在本系统的性能上做出进一步分析。
3.1可行性分析
在项目进行开发之前必须要有可行性分析报告分别从技术角度经济角度操作角度上面进行分析经过可行性分析是实现科学开发的必要步骤。
3.1.1技术可行性
从技术的角度出发目前采用开发的技术完全能满足系统开发需要。目前市场上有现成的软件开发工具和开发技术这些可以保证系统开发的顺利进展。
3.1.2操作可行性
中学生课后服务的信息管理是根据用户经常使用的页面操作流程来进行设计的并且页面保证统一从视觉角度和操作角度上都能达到使用要求。
3.1.3经济可行性
在本次开发过程中因为需要通过电脑来进行配置开发的环境通过对技术的分析发现目前正在使用的电脑是可以满足开发需要的并不需要太多的金钱对电脑进行更换。所以从经济角度上分析可以满足开发要求。
从以上三个角度来进行分析论证证明了中学生课后服务的信息管理是可以正常开发并且使用的。
3.2系统流程分析
从系统的角色上分析每个用户角色都代表了不同的账号身份而不同的身份则代表着功能的异同所以首先要区分用户的角色身份问题。设置用户登录需要输入账号和密码输入的信息必须与数据库里已经存在的账号密码信息进行比对只有正确的账号和密码才可以进行下一步的页面显示操作如果不正确的账号密码则拒绝用户登录也代表着用户没有继续访问的权限系统是无法继续提供服务的。 图3-1 操作流程图
任何一个系统都有一个操作流程本设计里面对于任何数据的存储都有一定的合法要求只有符合设定要求的数据才可以进行存储。具体步骤参考下图。 图3-2 添加信息流程图
数据的存储并不是一成不变的当需要对已经存在的数据进行改变的时候同样也遵循着操作流程想更改数据首先要确定更改之前的数据是什么然后输入新的数据是否合法都要符合流程只有合法数据才可以被更新到数据库里存储。具体步骤参考下图。 图3-3 修改信息流程图
删除操作在数据存储方面是一件比较慎重的事件很有可能会产生失误操作所以一般删除操作的时候都要提示是否删除确定删除才会更新数据库内容实现删除目的。具体步骤参考下图。 图3-4 删除信息流程图
3.3系统性能分析
系统在使用过程中用户会享受到系统带来的便利。那么如何保持在长时间的使用过程中不出现乱七八糟的问题让使用系统变成一种操作上的享受使用上的便捷这就是需要考虑的问题。以下主要从系统的性能分析上面进行描述从数据完整以及数据安全包括系统的可扩展等方面进行介绍。
3.3.1系统安全性
注册用户与游客用户的区别就在于是否有账号如果有账号那么就有相关的注册用户权限有账号就有密码密码是保证账号安全性的前提游客只能浏览一些公共性信息如果需要用户登录才能观看的信息那么也需要使用账号登录的。对于系统安全性上面主要考虑角色的密码加密问题这样可以防止有效的密码数据拦截后的破解工作。一般密码如果有安全性要求的话是可以考虑加密存储。密码的加密存储大致有两种设计方法一种是密码在前台提交后就用Java Script进行MD5加密然后直接提交密文这样的好处是密文传输的安全性另一种是提交密码后在后台处理的过程中对密码进行加密或者解密这样会增加后台的处理负担。一般都居中考虑如果登录的话会把密码在后台进行加密与数据库密码进行对比。目前常用的加密方式是MD5加密方式。
3.3.2数据完整性
系统进行开发的最重要的目的就是数据的处理计算机有其擅长数据的存储以及处理工作所以数据的完整性是必须保证的不然系统的存在是没有必要的。数据不管是设计还是存储都必须完整从数据的输入就从各个方面保证数据的合法性违规数据不能直接提交的。数据处理逻辑也会保证数据的加工正常进而进行数据存储也会保证数据设计的合理这些都是有数据设定要求的。目前对数据的存储采用的关系型数据库关系型数据库有多年的历史功能强大迁移备份以及无人值守都可以进行自动备份的。
3.3.3系统可扩展性
系统是有必要存在扩展性的。在设计之初就要考虑可能存在的业务所以对系统的设计就要模块化设计这样需要进行扩展的时候只要在对应模块进行增加对应逻辑进行调试即可。系统可扩展性的提升会让系统增加不必要的工作量让程序设计更加符合规范。
3.4系统功能分析
本系统在功能分析上主要是根据目标用户群的角度进行分析为了便于展示分析结果这里就使用用例图进行功能展示。
管理员用例图的绘制结果见图3-5。管理员登录进入本系统操作的功能包括查看论坛帖子内容和回复内容管理课后服务信息回复课后服务留言审核课后服务报名信息管理公告管理用户等。 图3-5 管理员用例图
用户用例图的绘制结果见图3-6。用户登录进入本系统操作的功能包括查看课后服务对课后服务报名对课后服务发布留言参与论坛信息讨论与交流。 图3-6 用户用例图
第四章 系统设计
到目前为止市面上已经存在了各种各样的软件系统从系统的分类着手主要应用范围倾向于办公系统娱乐系统社交系统然后下面有很多比较细的分支系统。很多系统已经经过了市场的考验针对不同的业务场景已经开始出现了业务模块化程序员减代码化的各种设计方式。到目前为止当要设计一个系统的时候首先根据业务模型基本上都可以在网上找到类似的模板然后根据具体业务具体分析进而实现具体功能大众的就是最好的毕竟符合市场主流的就代表着肯定符合常规操作流程。
4.1 系统设计目标
系统设计的时候就要制定需要达成的目标。在功能上要严格符合设计需求不仅仅要减少操作步骤也要符合预期。因此在规范化的今天设计出符合项目要求的系统必须要达到下面设定的目标。
第一个目标就是友好性友好性主要体现在用户使用过程中不会对系统的操作产生一种不满减少操作者的愤怒这是相当重要的一个体现。前几年好多软件在这个友好性方面失去了市场就是因为在友好性这方面没有做好。国内互联网发展初期软件设计的目的就是能用就行至于友好性的对比那是不存在的因为硬件效率比较低计算机属于新兴行业所以大哥不说二哥都是不友好的。随着计算机硬件的提升很多开发者开始注意到要牺牲一定的计算器性能来提升友好性因为计算机发展到现在第一印象很重要一个软件设计的不好看会让大部分人对其产生质疑所以要在友好性上面下很大功夫进行雕琢。
第二个目标就是安全性安全性其实贯穿着整个软件行业的发展史计算机就是为解决人类重复性计算以及数据存储的目的而诞生的很多行业都需要计算机来进行计算减少出错几率并且把数据保留可以实时查询所以数据的安全性也很重要。
只要保证数据安全性的前提开发出符合功能需求的友好界面操作那么就达到了系统设计的目的。
4.2功能结构设计
本系统主要是基于数据的增加修改删除等操作使用者能够通过提前设定的登录功能进入指定的操作区这里对使用者设计的功能进行结构展示。
管理员功能结构图的绘制结果见图4-1。管理员登录进入本系统操作的功能包括查看论坛帖子内容和回复内容管理课后服务信息回复课后服务留言审核课后服务报名信息管理公告管理用户等。 图4-1 管理员功能结构图
用户功能结构图的绘制结果见图4-2。用户登录进入本系统操作的功能包括查看课后服务对课后服务报名对课后服务发布留言参与论坛信息讨论与交流。 图4-2 用户功能结构图
4.3数据库设计
如果说设计系统的功能很重要那么设计该系统的数据库将更重要毕竟系统服务于用户数据库服务于系统用户访问系统操作系统的所有数据都要依赖于数据库而系统的数据几乎都是保存在数据库中的所以一个高质量的程序必然拥有一个安全快速响应稳定可靠的数据库。本系统的MySQL数据库可以通过SQL语言来实现对系统数据的管理包括在指定表中插入数据在规定的表中更改数据以及删除指定表中的部分数据等操作。一般来说像MySQL这样的关系型数据库对于结构化查询语言SQL都能很好的进行支持。在编程中通过合理运用SQL语言便能操作数据库的各种数据真是非常方便快捷
4.3.1 数据库概念设计
本节内容主要是使用图形的方式来描述数据库中的实体每个实体的相应属性还有实体之间的相互联系常用的Visio工具即可满足绘制E-R图的需求。E-R图是由矩形椭圆菱形等图形元素组成矩形框中主要写实体的名称椭圆框中主要是登记该实体的属性而菱形框中主要是登记实体之间的联系名称最后使用实心线段把这些图形元素进行连接即可完成E-R图的绘制。当初步得到一个E-R图时需要进行检查使用分析的方式去修改重构E-R图以达到消除数据冗余或者是消除实体间联系冗余的目的。从而保持数据库的完整性以及降低数据库维护上面的难度。
1使用Visio这样的常用的实体属性图绘制工具来绘制用户实体属性图绘制结果见图4-3。 图4-3 用户实体属性图
2使用Visio这样的常用的实体属性图绘制工具来绘制课后服务实体属性图绘制结果见图4-4。 图4-4 课后服务实体属性图
3使用Visio这样的常用的实体属性图绘制工具来绘制课后服务报名实体属性图绘制结果见图4-5。 图4-5 课后服务报名实体属性图
4使用Visio这样的常用的实体属性图绘制工具来绘制管理员实体属性图绘制结果见图4-6。 图4-6 管理员实体属性图
5绘制的上述实体间存在的联系见图4-7。 图4-7 实体间关系E-R图
4.3.2 数据库物理设计
本系统数据在数据库中都是通过各种二维表进行记录保存的在数据库中设计这样的二维表也是比较重要的内容因为它影响着数据的存储效率。在设计二维表也就是关系模型之前一些有关二维表方面的常用概念需要进行充分了解。
关系一张具体的数据表即表示关系关系的名称与数据表的名称保持一致
元组数据表中每行显示的数据即代表元组
属性数据表中每列表示的数据即代表属性
关键字数据表中为了与其他数据表进行区分则需要在每张表中进行主键的设置
通过上节内容可以知晓数据库中的各个实体并通过一定方式把这些实体表示的内容进行数据表的转换通常来说每个实体都会对应一张具体的数据表在本系统指定的数据库中创建命名好的数据库才可以对数据表进行创建与设计。中学生课后服务的信息管理数据表设计结果展示如下
表4-1 论坛信息表
字段注释类型空id (主键)主键int(11)否forum_name帖子标题varchar(200)是yonghu_id用户int(11)是users_id管理员int(11)是forum_content发布内容text是super_ids父idint(11)是forum_state_types帖子状态int(11)是insert_time发帖时间timestamp是update_time修改时间timestamp是create_time创建时间timestamp是
表4-2 课后服务表
字段注释类型空id (主键)主键int(11)否kehoufuwu_name课后服务名称varchar(200)是kehoufuwu_photo课后服务照片varchar(200)是kehoufuwu_types课后服务类型int(11)是zan_number赞int(11)是cai_number踩int(11)是kehoufuwu_clicknum点击次数int(11)是kehoufuwu_content课后服务介绍text是create_time创建时间timestamp是
表4-3 课后服务收藏表
字段注释类型空id (主键)主键int(11)否kehoufuwu_id课后服务int(11)是yonghu_id用户int(11)是kehoufuwu_collection_types类型int(11)是insert_time收藏时间timestamp是create_time创建时间timestamp是
表4-4 课后服务留言表
字段注释类型空id (主键)主键int(11)否kehoufuwu_id课后服务int(11)是yonghu_id用户int(11)是kehoufuwu_liuyan_text留言内容text是insert_time留言时间timestamp是reply_text回复内容text是update_time回复时间timestamp是create_time创建时间timestamp是
表4-5 课后服务报名表
字段注释类型空id (主键)主键int(11)否kehoufuwu_id课后服务int(11)是yonghu_id用户int(11)是kehoufuwu_order_yesno_types申请状态int(11)是kehoufuwu_order_yesno_text申请结果text是insert_time申请时间timestamp是create_time创建时间timestamp是
表4-6 公告信息表
字段注释类型空id (主键)主键int(11)否news_name公告标题varchar(200)是news_types公告类型int(11)是news_photo公告图片varchar(200)是insert_time添加时间timestamp是news_content公告详情text是create_time创建时间timestamp是
表4-7 管理员表
字段注释类型空id (主键)主键bigint(20)否username用户名varchar(100)否password密码varchar(100)否role角色varchar(100)是addtime新增时间timestamp否
表4-8 用户表
字段注释类型空id (主键)主键int(11)否username账户varchar(200)是password密码varchar(200)是yonghu_name用户姓名varchar(200)是yonghu_photo头像varchar(255)是sex_types性别int(11)是yonghu_phone联系方式varchar(200)是yonghu_email邮箱varchar(200)是yonghu_delete假删int(11)是insert_time添加时间timestamp是create_time创建时间timestamp是 第五章 系统实现
这里主要是对系统设计实现进行描述通过系统的设计和数据库的设计通过编码后变成了可以进行操作的界面让一切想法变成了结果通过文字和具体程序操作界面的截图之间的配合可以把功能更直观的描述起来。
5.1管理员功能实现
5.1.1 课后服务管理
管理员进入如图5-1所示的课后服务管理界面之后管理员点击信息显示栏中最右侧的修改删除按钮可依次完成课后服务信息的修改删除操作课后服务信息包括课后服务名称课后服务类型课后服务照片等信息。 图5-1 课后服务管理界面
5.1.2 课后服务留言管理
管理员进入如图5-2所示的课后服务留言管理界面之后管理员点击信息显示栏中最右侧的回复删除按钮可依次完成课后服务留言信息的回复删除等操作课后服务留言信息有留言时间留言内容回复内容等。 图5-2 课后服务留言管理界面
5.1.3 课后服务报名管理
管理员进入如图5-3所示的课后服务报名管理界面之后管理员点击信息显示栏中最右侧的详情删除按钮可依次完成课后服务报名信息的详情查看删除等操作。用户的课后服务报名信息也需要管理员审核。 图5-3 课后服务报名管理界面
5.1.4 论坛信息管理
管理员进入如图5-4所示的论坛信息管理界面之后管理员点击信息显示栏中最右侧的修改删除按钮可依次完成论坛信息的修改删除等操作。管理员也能查看论坛帖子的回复内容。 图5-4 论坛信息管理界面
5.1.5 公告信息管理
管理员进入如图5-5所示的公告信息管理界面之后管理员点击信息显示栏中最右侧的修改删除按钮可依次完成公告信息的修改删除等操作。 图5-5 公告信息管理界面
5.2 用户功能实现
5.2.1 课后服务
用户进入如图5-6所示的课后服务界面之后用户可以查看课后服务信息界面右侧区域展示的系统推荐的课后服务信息同时用户可以对课后服务进行赞或踩或收藏喜欢的课后服务用户点击报名按钮即可参与课后服务报名操作。 图5-6 课后服务界面
5.2.2 论坛信息
用户进入如图5-7所示的论坛信息界面之后用户查看论坛信息界面展示的所有的论坛帖子内容每当用户查看完帖子内容之后可以发布个人评论信息。 图5-7 论坛信息界面
5.2.3 课后服务报名
用户进入如图5-8所示的课后服务报名界面之后用户对已经报名的课后服务信息进行查看查看课后服务报名的申请状态和申请结果信息。 图5-8 课后服务报名界面第六章 系统测试
在整个系统完成之后就需要进入系统测试环节。在系统测试环节的主要任务就是用不同的测试方法使用不同的测试用例来引出系统出现的问题只要测试出问题才可以让程序员有目的性的对问题进行解决最终让问题越来越少才能让用户验收程序。
PoiUtil.java
package com.utils;import org.apache.commons.io.FileUtils;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;import java.io.File;
import java.io.FileOutputStream;
import java.util.ArrayList;
import java.util.List;/*** 文件导入到处*/
public class PoiUtil {/*** 导入** param url* return* throws Exception*/public static ListListString poiImport(String url) throws Exception {ListListString list new ArrayList();// 创建Excel 读取文件内容HSSFWorkbook workbook new HSSFWorkbook(FileUtils.openInputStream(new File(url)));/*** 第一种方式读取Sheet页*/
// HSSFSheet sheet workbook.getSheet(Sheet0);/*** 第二种方式读取Sheet页*/HSSFSheet sheet workbook.getSheetAt(0);//获取工作表for (int i 0; i sheet.getLastRowNum()1; i) {HSSFRow row sheet.getRow(i);//获取行ListString rowlist new ArrayList();//行数据for (int j 0; j row.getLastCellNum(); j) {HSSFCell cell row.getCell(j);cell.setCellType(Cell.CELL_TYPE_STRING);String value cell.getStringCellValue();rowlist.add(value);//行中数据添加到行中}list.add(rowlist);//将行数据添加到list中}return list;}// 导出public static void poiExport(ListListString list, String url) throws Exception {//创建Excel工作薄HSSFWorkbook workbook new HSSFWorkbook();//创建一个工作表shheetHSSFSheet sheet workbook.createSheet();for (int i 0; i list.size(); i) {HSSFRow row sheet.createRow(i);ListString dataList list.get(i);for (int j 0; j dataList.size(); j) {HSSFCell cell row.createCell(j);cell.setCellValue(dataList.get(j));}}FileOutputStream stream FileUtils.openOutputStream(new File(url));workbook.write(stream);stream.close();}public static void main(String[] args) {try {//导入ListListString lists PoiUtil.poiImport(C:/Users/Administrator/Desktop/工作1.xls);System.out.println();//导出PoiUtil.poiExport(lists, C:/Users/Administrator/Desktop/工作1.xls);//
// ListListString list new ArrayList();
// ArrayListString dataList new ArrayList();
// dataList.add(标题1);
// dataList.add(标题2);
// dataList.add(标题3);
// list.add(dataList);
// // 追加数据
// for (int i 1; i 10; i) {// 这里的int 起始是1 也就是第二行开始
// ArrayListString dataList111 new ArrayList();
// dataList111.add(内容 i);
// dataList111.add(内容1111111121222222222333333333377777777411111111477777777 i);
// dataList111.add(内容 i);
// list.add(dataList111);
// }
// PoiUtil.poiExport(list, C:/Users/Administrator/Desktop/工作1.xls);} catch (Exception e) {e.printStackTrace();}}
}
KehoufuwuController.java package com.controller;import java.io.File;
import java.math.BigDecimal;
import java.net.URL;
import java.text.SimpleDateFormat;
import com.alibaba.fastjson.JSONObject;
import java.util.*;
import org.springframework.beans.BeanUtils;
import javax.servlet.http.HttpServletRequest;
import org.springframework.web.context.ContextLoader;
import javax.servlet.ServletContext;
import com.service.TokenService;
import com.utils.*;
import java.lang.reflect.InvocationTargetException;import com.service.DictionaryService;
import org.apache.commons.lang3.StringUtils;
import com.annotation.IgnoreAuth;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.entity.*;
import com.entity.view.*;
import com.service.*;
import com.utils.PageUtils;
import com.utils.R;
import com.alibaba.fastjson.*;/*** 课后服务* 后端接口* author* email
*/
RestController
Controller
RequestMapping(/kehoufuwu)
public class KehoufuwuController {private static final Logger logger LoggerFactory.getLogger(KehoufuwuController.class);Autowiredprivate KehoufuwuService kehoufuwuService;Autowiredprivate TokenService tokenService;Autowiredprivate DictionaryService dictionaryService;//级联表serviceAutowiredprivate YonghuService yonghuService;/*** 后端列表*/RequestMapping(/page)public R page(RequestParam MapString, Object params, HttpServletRequest request){logger.debug(page方法:,,Controller:{},,params:{},this.getClass().getName(),JSONObject.toJSONString(params));String role String.valueOf(request.getSession().getAttribute(role));if(false)return R.error(511,永不会进入);else if(用户.equals(role))params.put(yonghuId,request.getSession().getAttribute(userId));if(params.get(orderBy)null || params.get(orderBy)){params.put(orderBy,id);}PageUtils page kehoufuwuService.queryPage(params);//字典表数据转换ListKehoufuwuView list (ListKehoufuwuView)page.getList();for(KehoufuwuView c:list){//修改对应字典表字段dictionaryService.dictionaryConvert(c, request);}return R.ok().put(data, page);}/*** 后端详情*/RequestMapping(/info/{id})public R info(PathVariable(id) Long id, HttpServletRequest request){logger.debug(info方法:,,Controller:{},,id:{},this.getClass().getName(),id);KehoufuwuEntity kehoufuwu kehoufuwuService.selectById(id);if(kehoufuwu !null){//entity转viewKehoufuwuView view new KehoufuwuView();BeanUtils.copyProperties( kehoufuwu , view );//把实体数据重构到view中//修改对应字典表字段dictionaryService.dictionaryConvert(view, request);return R.ok().put(data, view);}else {return R.error(511,查不到数据);}}/*** 后端保存*/RequestMapping(/save)public R save(RequestBody KehoufuwuEntity kehoufuwu, HttpServletRequest request){logger.debug(save方法:,,Controller:{},,kehoufuwu:{},this.getClass().getName(),kehoufuwu.toString());String role String.valueOf(request.getSession().getAttribute(role));if(false)return R.error(511,永远不会进入);WrapperKehoufuwuEntity queryWrapper new EntityWrapperKehoufuwuEntity().eq(kehoufuwu_name, kehoufuwu.getKehoufuwuName()).eq(kehoufuwu_types, kehoufuwu.getKehoufuwuTypes()).eq(zan_number, kehoufuwu.getZanNumber()).eq(cai_number, kehoufuwu.getCaiNumber()).eq(kehoufuwu_clicknum, kehoufuwu.getKehoufuwuClicknum());logger.info(sql语句:queryWrapper.getSqlSegment());KehoufuwuEntity kehoufuwuEntity kehoufuwuService.selectOne(queryWrapper);if(kehoufuwuEntitynull){kehoufuwu.setKehoufuwuClicknum(1);kehoufuwu.setCreateTime(new Date());kehoufuwuService.insert(kehoufuwu);return R.ok();}else {return R.error(511,表中有相同数据);}}/*** 后端修改*/RequestMapping(/update)public R update(RequestBody KehoufuwuEntity kehoufuwu, HttpServletRequest request){logger.debug(update方法:,,Controller:{},,kehoufuwu:{},this.getClass().getName(),kehoufuwu.toString());String role String.valueOf(request.getSession().getAttribute(role));
// if(false)
// return R.error(511,永远不会进入);//根据字段查询是否有相同数据WrapperKehoufuwuEntity queryWrapper new EntityWrapperKehoufuwuEntity().notIn(id,kehoufuwu.getId()).andNew().eq(kehoufuwu_name, kehoufuwu.getKehoufuwuName()).eq(kehoufuwu_types, kehoufuwu.getKehoufuwuTypes()).eq(zan_number, kehoufuwu.getZanNumber()).eq(cai_number, kehoufuwu.getCaiNumber()).eq(kehoufuwu_clicknum, kehoufuwu.getKehoufuwuClicknum());logger.info(sql语句:queryWrapper.getSqlSegment());KehoufuwuEntity kehoufuwuEntity kehoufuwuService.selectOne(queryWrapper);if(.equals(kehoufuwu.getKehoufuwuPhoto()) || null.equals(kehoufuwu.getKehoufuwuPhoto())){kehoufuwu.setKehoufuwuPhoto(null);}if(kehoufuwuEntitynull){kehoufuwuService.updateById(kehoufuwu);//根据id更新return R.ok();}else {return R.error(511,表中有相同数据);}}/*** 删除*/RequestMapping(/delete)public R delete(RequestBody Integer[] ids){logger.debug(delete:,,Controller:{},,ids:{},this.getClass().getName(),ids.toString());kehoufuwuService.deleteBatchIds(Arrays.asList(ids));return R.ok();}/*** 批量上传*/RequestMapping(/batchInsert)public R save( String fileName, HttpServletRequest request){logger.debug(batchInsert方法:,,Controller:{},,fileName:{},this.getClass().getName(),fileName);Integer yonghuId Integer.valueOf(String.valueOf(request.getSession().getAttribute(userId)));SimpleDateFormat sdf new SimpleDateFormat(yyyy-MM-dd HH:mm:ss);try {ListKehoufuwuEntity kehoufuwuList new ArrayList();//上传的东西MapString, ListString seachFields new HashMap();//要查询的字段Date date new Date();int lastIndexOf fileName.lastIndexOf(.);if(lastIndexOf -1){return R.error(511,该文件没有后缀);}else{String suffix fileName.substring(lastIndexOf);if(!.xls.equals(suffix)){return R.error(511,只支持后缀为xls的excel文件);}else{URL resource this.getClass().getClassLoader().getResource(../../upload/ fileName);//获取文件路径File file new File(resource.getFile());if(!file.exists()){return R.error(511,找不到上传文件请联系管理员);}else{ListListString dataList PoiUtil.poiImport(file.getPath());//读取xls文件dataList.remove(0);//删除第一行因为第一行是提示for(ListString data:dataList){//循环KehoufuwuEntity kehoufuwuEntity new KehoufuwuEntity();
// kehoufuwuEntity.setKehoufuwuName(data.get(0)); //课后服务名称 要改的
// kehoufuwuEntity.setKehoufuwuPhoto();//详情和图片
// kehoufuwuEntity.setKehoufuwuTypes(Integer.valueOf(data.get(0))); //课后服务类型 要改的
// kehoufuwuEntity.setZanNumber(Integer.valueOf(data.get(0))); //赞 要改的
// kehoufuwuEntity.setCaiNumber(Integer.valueOf(data.get(0))); //踩 要改的
// kehoufuwuEntity.setKehoufuwuClicknum(Integer.valueOf(data.get(0))); //点击次数 要改的
// kehoufuwuEntity.setKehoufuwuContent();//详情和图片
// kehoufuwuEntity.setCreateTime(date);//时间kehoufuwuList.add(kehoufuwuEntity);//把要查询是否重复的字段放入map中}//查询是否重复kehoufuwuService.insertBatch(kehoufuwuList);return R.ok();}}}}catch (Exception e){e.printStackTrace();return R.error(511,批量插入数据异常请联系管理员);}}/*** 前端列表*/IgnoreAuthRequestMapping(/list)public R list(RequestParam MapString, Object params, HttpServletRequest request){logger.debug(list方法:,,Controller:{},,params:{},this.getClass().getName(),JSONObject.toJSONString(params));// 没有指定排序字段就默认id倒序if(StringUtil.isEmpty(String.valueOf(params.get(orderBy)))){params.put(orderBy,id);}PageUtils page kehoufuwuService.queryPage(params);//字典表数据转换ListKehoufuwuView list (ListKehoufuwuView)page.getList();for(KehoufuwuView c:list)dictionaryService.dictionaryConvert(c, request); //修改对应字典表字段return R.ok().put(data, page);}/*** 前端详情*/RequestMapping(/detail/{id})public R detail(PathVariable(id) Long id, HttpServletRequest request){logger.debug(detail方法:,,Controller:{},,id:{},this.getClass().getName(),id);KehoufuwuEntity kehoufuwu kehoufuwuService.selectById(id);if(kehoufuwu !null){//点击数量加1kehoufuwu.setKehoufuwuClicknum(kehoufuwu.getKehoufuwuClicknum()1);kehoufuwuService.updateById(kehoufuwu);//entity转viewKehoufuwuView view new KehoufuwuView();BeanUtils.copyProperties( kehoufuwu , view );//把实体数据重构到view中//修改对应字典表字段dictionaryService.dictionaryConvert(view, request);return R.ok().put(data, view);}else {return R.error(511,查不到数据);}}/*** 前端保存*/RequestMapping(/add)public R add(RequestBody KehoufuwuEntity kehoufuwu, HttpServletRequest request){logger.debug(add方法:,,Controller:{},,kehoufuwu:{},this.getClass().getName(),kehoufuwu.toString());WrapperKehoufuwuEntity queryWrapper new EntityWrapperKehoufuwuEntity().eq(kehoufuwu_name, kehoufuwu.getKehoufuwuName()).eq(kehoufuwu_types, kehoufuwu.getKehoufuwuTypes()).eq(zan_number, kehoufuwu.getZanNumber()).eq(cai_number, kehoufuwu.getCaiNumber()).eq(kehoufuwu_clicknum, kehoufuwu.getKehoufuwuClicknum());logger.info(sql语句:queryWrapper.getSqlSegment());KehoufuwuEntity kehoufuwuEntity kehoufuwuService.selectOne(queryWrapper);if(kehoufuwuEntitynull){kehoufuwu.setCreateTime(new Date());kehoufuwuService.insert(kehoufuwu);return R.ok();}else {return R.error(511,表中有相同数据);}}}
KehoufuwuCollectionServiceImpl.java
package com.service.impl;import com.utils.StringUtil;
import org.springframework.stereotype.Service;
import java.lang.reflect.Field;
import java.util.*;
import com.baomidou.mybatisplus.plugins.Page;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import org.springframework.transaction.annotation.Transactional;
import com.utils.PageUtils;
import com.utils.Query;
import org.springframework.web.context.ContextLoader;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import com.dao.KehoufuwuCollectionDao;
import com.entity.KehoufuwuCollectionEntity;
import com.service.KehoufuwuCollectionService;
import com.entity.view.KehoufuwuCollectionView;/*** 课后服务收藏 服务实现类*/
Service(kehoufuwuCollectionService)
Transactional
public class KehoufuwuCollectionServiceImpl extends ServiceImplKehoufuwuCollectionDao, KehoufuwuCollectionEntity implements KehoufuwuCollectionService {Overridepublic PageUtils queryPage(MapString,Object params) {if(params ! null (params.get(limit) null || params.get(page) null)){params.put(page,1);params.put(limit,10);}PageKehoufuwuCollectionView page new QueryKehoufuwuCollectionView(params).getPage();page.setRecords(baseMapper.selectListView(page,params));return new PageUtils(page);}}
声明 本博客适用于广泛的学术和教育用途包括但不限于个人学习、开发设计产品设计。仅供学习参考旨在为读者提供深入理解和学术研究的材料。