旧物置换网站
@TOC
springboot0746旧物置换网站
研究背景
近年来,随着网络技术的不断发展,越来越多人喜欢在网络上查找信息,将自己喜欢的信息收藏,方便自己进行查看。旧物置换网站对用户、卖家和管理员都有很大帮助,旧物置换网站通过和数据库管理系软件协作来实现用户、卖家与管理员之间的一个很好的操作平台,基于这一点,设计了一个旧物置换网站。
经过对以上的情况进行分析,我们对用户的实际需求进行了详细的分析,指定出了相应的开发计划,为了方便用户在线进行查找旧物信息、置换交易以及可以在线进行查询操作,帮助管理员节省很多的管理时间以及可以减少工作量,使得管理工作更加快捷顺利的进行,因此开发设计了该系统。
随着计算机的不断发展,已经融入到我们生活工作的每一个领域中,给我们的生活工作带来了很多的便利,因此,希望可以通过该系统的开发也能使旧物置换网站实现信息化管理,减轻人的负担,提高工作效率。
1.2 研究现状
与其他国家相比,我国的软件产业相对落后,在信息化建设方面起步也比较晚,但是随着我国经济的不断发展,以及网络技术的不断提高,我国也在不断的进行软件行业的摸索,也得到了一些成果,我国的软件产业得到了快速的发展,越来越多的软件系统出现在人们的视线中,也逐渐改变着人们生活工作的方式。但是,对于信息化的建设,与很多发达国家相比,由于信息化程度的落后以及经费的不足,我国的旧物置换网站开发方面还是相对落后的,因此,要不断的努力探索,争取开发出一个实用的旧物置换网站,来实现旧物置换的信息化。因此本课题以旧物置换为例,目的是开发一个实用的旧物置换网站。
旧物置换网站的开发运用java技术,以及MYSQL、springboot框架等技术的支持下共同完成了该网站系统的开发,实现了旧物置换网站的信息化,用户可以有一个非常好的平台体验,管理员也可以通过该系统进行更加方便的管理操作,实现了之前指定好的计划。
1.3 研究内容
通过对管理员、卖家和用户的需求分析,我们将该旧物置换网站的功能逐步进行了添加,然后进行功能分析和检测,而且针对这两方面进行了深入研究探讨,该旧物置换网站主要对开发背景、市场需求、数据库分析、功能模块以及开发技术进行了着重介绍和分析。最后对系统中的功能信息进行测试和分析。本次毕业实现的旧物置换网站,不管是可行性分析、系统整体框架设计还是编码,都需要严格遵守软件开发的三个周期八个阶段,在该系统的开发过程中,要保证系统具有良好的时效性、易安装性以及稳定性。在代码编写时一定要按照要求进行,让代码编写看起来更美观,开发出一个便于用户的使用的旧物置换网站是本次开发的主要目标。在系统完成之后,利用电脑来将系统进行安置,并且用户可以通过电脑随时进行查看用户信息、卖家信息、旧物信息、置换交易等信息。此次在旧物置换网站的开发中,对系统要进行可行性分析、系统需求分析等基本分析,并且完成系统的部署和测试,在这些功能都实现之后,通过电脑进行操作系统。系统规划分析中,需要按照以下所示的技术路线。
第二章 开发技术介绍
此次B/S结构、Java技术以及mysql数据库是该旧物置换网站的主要开发技术,然后对系统的整体设计、数据库设计、功能模块设计、系统页面设计以及系统程序设计进行了详细的研究与规划。
2.1 系统开发平台
在该旧物置换网站中,Eclipse 技术可以给用户带来极大方便,其主要特点就是可以使用户学习起来方便、快捷,另一方面就是信息储存量也是非常大的,该功能主要被应用为数据库中进行查询和编程。并且该功能的数据应用比较灵活,通过我们现在的发展可以得知,只要利用一小部分代码就可以来实现非常强大的功能。因此,该系统数据库开发主要是由Eclipse 技术进行系统代码管理。
2.2 平台开发相关技术
2.2.1 B/S架构
B/S结构的特点也非常多,例如在很多浏览器中都可以做出信号请求。并且可以适当的减轻用户的工作量,通过对客户端安装或者是配置少量的运行软件就能够逐步减少用户的工作量,这些功能的操作主要是由服务器来进行控制的,由于该软件的技术不断成熟,最主要的特点就是与浏览器相互配合为软件开发带来了极大的便利,不仅能够减少开发成本,还能够不断加强系统的软件功能,层层相互独立和展现层是该B/S结构完成相互连接的主要特性。
2.2.2 Java技术介绍
Java语言擅长开发互联网类应用和企业级应用,现在已经相当的成熟,而且也是目前使用最多的编程语言之一。Java语言具有很好的面向对象性,可以符合人的思维模式进行设计,封装是将对象的属性和方法尽可能地隐藏起来,使得外界并不知道是如何实现的,外界能通过接口进行访问,继承是指每个类都会有一个父类,所有的子类都有父类的方法,可以进行继承,但是只有final修饰的类不能被继承,通过继承可以使得代码得到重新利用,能够提高软件的开发效率,也是多态的前提。
Java就像C语言、C#语言等,也是一种程序开发语言,而它的特点就是面向对象。作为一种程序开发与设计的语言,它有很多特性,主要特性就是面向对象、夸平台以及可以分布式运行。Java语言项目不但安全性高、稳定性强,而且可以并发运行。
为了提高开发的速度及效率,必须做到代码的重复使用和简化程序的复杂度,要达到上述的要求java语言通过封装、继承与多态等方式实现,这样可以很大程度上达到信息的封装,提高代码复用率,减少冗余度,提高效率。在Java中难能可贵的一点就是它的垃圾回收机制,它使得以往程序中大量存在的内存泄漏的问题得到了较好的缓解。所谓的内存泄漏就是程序向操作系统申请了一块存储空间,比如定义了一个变量,但是由于某种原因,这个变量一直没有使用,但是仍然占用着系统的内存空间,可能一两个这样的变量对程序和操作系统造不成什么大的影响,但是试想如果这样的变量定义的多了系统的内存空间就会一步步减少,从而造成机器的性能降低甚至宕机。但是在Java中有垃圾回收机制的存在,这种机制极大地避免了内存泄漏的出现,在Java虚拟机中,垃圾回收机制会对长时间没有引用变量指向的对象实施垃圾回收,简单的说就是将这个对象销毁,以避免内存泄漏的情况出现。
2.2.3 mysql数据库介绍
MySQL是一款Relational Database Management System,直译过来的意思就是关系型数据库管理系统,MySQL有着它独特的特点,这些特点使他成为目前最流行的RDBMS之一,MySQL想比与其他数据库如ORACLE、DB2等,它属于一款体积小、速度快的数据库,重点是它符合本次毕业设计的真实旧物置换环境,拥有成本低,开发源码这些特点,这也是选择它的主要原因。
本系统使用了MySQL数据库,建立了多张数据库表来存储旧物置换以及旧物置换网站相关数据。系统中主要应用查询(select),修改(update),删除(delete)以及增加(insert)等语句来实现系统功能。
2.2.4 springboot框架
Spring框架是Java平台上的一种开源应用框架,提供具有控制反转特性的容器。尽管Spring框架自身对编程模型没有限制,但其在Java应用中的频繁使用让它备受青睐,以至于后来让它作为EJB(EnterpriseJavaBeans)模型的补充,甚至是替补。Spring框架为开发提供了一系列的解决方案,比如利用控制反转的核心特性,并通过依赖注入实现控制反转来实现管理对象生命周期容器化,利用面向切面编程进行声明式的事务管理,整合多种持久化技术管理数据访问,提供大量优秀的Web框架方便开发等等。Spring框架具有控制反转(IOC)特性,IOC旨在方便项目维护和测试,它提供了一种通过Java的反射机制对Java对象进行统一的配置和管理的方法。Spring框架利用容器管理对象的生命周期,容器可以通过扫描XML文件或类上特定Java注解来配置对象,开发者可以通过依赖查找或依赖注入来获得对象。Spring框架具有面向切面编程(AOP)框架,SpringAOP框架基于代理模式,同时运行时可配置;AOP框架主要针对模块之间的交叉关注点进行模块化。Spring框架的AOP框架仅提供基本的AOP特性,虽无法与AspectJ框架相比,但通过与AspectJ的集成,也可以满足基本需求。Spring框架下的事务管理、远程访问等功能均可以通过使用SpringAOP技术实现。Spring的事务管理框架为Java平台带来了一种抽象机制,使本地和全局事务以及嵌套事务能够与保存点一起工作,并且几乎可以在Java平台的任何环境中工作。
第三章 系统分析
通过对系统功能模块分析可以得知,主要是对项目元素组合、分解和更换做出相应的单元,再通过系统模块来规划出一个原则,系统的设计首先是围绕管理员需求进行开发设计的,主要是为了能够更好的管理信息和服务于用户,其次就是围绕旧物置换进行设计,最终的设计必须要满足管理员、卖家和用户的需求,这样才能够实现系统的最大意义和价值,并且在设计的时候一定要避免代码相互重复的情况发生。
3.1 可行性分析
可行性分析是每开发一个项目必不可少的一部分,可行性分析可以直接影响一个系统的存活问题,针对开发意义进行分析,还有就是是否可以通过所开发的系统来弥补传统手工统计模式的不足,是否能够更好的解决旧物置换存在的问题等,通过对该旧物置换网站的开发设计,不仅能够逐步减少工作人员的工作量,而且还可以进行高效工作和管理。所以该系统的开发实现了最大的意义和价值,在系统完成后,利益是否大过于成本,是否能够达到预期效果,这些方面都要进行可行性分析,再通过分析之后,就可以决定是否开发此系统。该旧物置换网站的开发设计中,以下几点进行了可行性分析:技术可行性:通过Java技术的采用,由于该技术不断成熟,所以使用该技术设计旧物置换网站是具有可行性的。经济可行性:在开发过程中,系统完成后的利益是否大过于开发成本。操作可行性:旧物置换网站的开发设计中,方便用户的可操作性和实用性。
3.1.1 技术可行性
由于Java技术的不断成熟,所以它在本次旧物置换网站中是非常重要的,该系统的开发主要是基于服务端采用Java 、B/S结构和mysql数据库进行开发设计的。通过对这些技术进行使用,从而保证了系统的完整性和简单性。并且在数据库中保证数据的安全性和稳定性。在校时间我们对Java语言技术和mysql数据库技术进行了学习和交流,并且对软件测试也是简单的了解,然后根据这些管理方式我们可以做出一个简单的系统开发、检验和辨别。通过Java技术和Mysql数据库的相互配合开发出一个高效、稳定的旧物置换网站。
(1)轻量级系统,使用灵活:旧物置换网站,设计时,考虑到不同使用者的习惯,让系统比较轻量级,便于安装,也完成了系统所具备的所有功能,在以上基础上,通过系统测试与优化,让操作更加灵活。
(2)系统开发0成本:该旧物置换网站,以开源的Windows 7 操作系统为基础,采用Java技术编码开发,并使用MySQL轻量级数据库,没有多余的开发成本。
(3)覆盖范围:任何城市,都能安装使用本次设计的旧物置换网站,对系统使用方没有严格的规定,平台搭建好了就能使用。
3.1.2 经济可行性
通过经济效益和社会价值来决定一个系统的存活问题,是否通过开发旧物置换网站来帮助管理员减少工作,是否能够方便用户的使用,假如开发的软件不能够实现成本节约和资源节约,并且还要投入大量的时间、经济和精力,那么这个系统的开发设计是没有意义和价值的,就不具备开发设计的条件。
3.1.3 操作可行性
此次开发的旧物置换网站登录界面是我们最常见的一种登录窗口进行造成的,只需通过电脑就可以登录访问,没有那些复杂的登录过程。该旧物置换网站主要是采用B/S结构、Java语言技术以及mysql数据库进行开发设计的,使得系统的开发更高效和稳定,也体现出来该系统的的现代化和规范化。用户可以轻松的进行学习,其系统主要特点就是易操作和易管理。
3.2 系统性能分析
1.系统功能完整性:根据系统每一个功能模块,都能够设计出当初的算法和代码,用户信息主要是以文字和表格的模式进行介绍。
2.系统运行分析:系统中的每一个功能都要有相应的代码和编写数据的关系。系统的物理的数据主要是通过需求分析和可行性分析进行分析和显示的。
3.界面设计:系统中的软件都是由不同的代码来进行处理和分析的,并且保证了系统界面的易操作性能。
4.安全分析:不同的角色要有不同的信息,所以我们登录系统时必须要使用自己的账号和密码进行登录,不能随意进行操作,这样才可以保证系统的安全性。
3.3 系统功能需求分析
任务需求分析是每个系统开发设计必不可少的一部分,系统质量的好坏可以直接影响系统的存活问题,所以我们必须要将任务需求分析做到位,旧物置换网站的设计在初期的分析是尤为重要的,通过任务分析可以更顺利的进行系统设计,并且保证了用户的满意度。
(1)用户功能需求
用户进入前台系统可以查看首页、旧物信息、网站公告、个人中心、后台管理等操作。前台首页用例如图3-1所示。 ######### 图3-1前台首页用例图
(2)管理员功能需求
管理员登陆后,主要功能模块包括首页、个人中心、用户管理、卖家管理、旧物类型管理、旧物信息管理、置换交易管理、系统管理等功能。管理员用例图如图3-2所示。
图3-2 管理员用例图
第四章 系统设计
4.1 系统的功能结构图
过系统需求分析,该旧物置换网站功能结构图如图4-1所示: #########
图4-1 系统功能结构图
4.2 数据库概念结构设计
4.2.1 数据库E-R图
概念设计主要是通过数据库的概念结构和模式进行建立数据库嗯逻辑结构,然后利用数据库的DBMS进行完成,它不需要计算机系统的支持。通过系统的整体来看,主要是对数据库进行管理、整理、更新等操作。数据库的功能是非常强大的,每个系统的开发肯定离不开数据库,通过数据库可以看得出整个系统的质量和效率,根据以上的系统分析,对系统中的主要实体进行规划。以下是几个关键实体的实体关系图:
(1) 用户管理:用户名、密码、姓名、性别、头像、手机、邮箱、图片实体E-R图如图4-2所示:
图4-2用户信息实体属性图
(2) 卖家管理:卖家名、密码、姓名、性别、手机、邮箱、照片实体E-R图如图4-3所示:
图4-3卖家信息实体属性图
(3) 旧物信息管理:卖家名、姓名、手机、旧物名称、旧物类型、旧物照片、置换需求实体E-R图如图4-4所示:
图4-4旧物信息实体图
#########
4.2.2 数据库逻辑结构设计
数据库的主要功能就是对相关信息就行存储,通过某种计算进行数据储存,其数据库的数据存储是井井有条的。并且其中的数据具有一定的独立性和安全性。通过对系统功能设计的要求和功能模块的规划,该旧物置换网站的设计与实现设计到了多个数据表。以下信息是介绍数据库表的设计结构以及功能建立数据库表:
allusers表:
序号 | 字段名称 | 字段类型 | 大小 | 允许为空 | 最大长度 | 备注 |
---|---|---|---|---|---|---|
1 | id | Int | 4 | 10 | ||
2 | username | 150 | 255 | |||
3 | pwd | 150 | 255 | |||
4 | cx | 150 | 255 | |||
5 | addtime | DateTime | 8 | 19 |
jiuwuxinxi表:
序号 | 字段名称 | 字段类型 | 大小 | 允许为空 | 最大长度 | 备注 | |
---|---|---|---|---|---|---|---|
1 | id | Int | 4 | 10 | |||
2 | addtime | 150 | 255 | ||||
3 | maijiaming | 150 | 255 | ||||
4 | xueshengxingming | DateTime | 8 | 255 | |||
5 | xingming | 150 | 255 | ||||
6 | shouji | DateTime | 8 | 255 | |||
7 | jiuwumingcheng | 150 | 255 | ||||
8 | jiuwuleixing | DateTime | 8 | 255 | |||
9 | jiuwutupian | 150 | 255 | ||||
zhihuanxuqiu | DateTime | 8 | 255 | ||||
jiuwuxiangqing | 150 | 255 |
maijia表:
序号 | 字段名称 | 字段类型 | 大小 | 允许为空 | 最大长度 | 备注 |
---|---|---|---|---|---|---|
1 | id | Int | 4 | 10 | ||
2 | addtime | 150 | 255 | |||
3 | maijiaming | 150 | 255 | |||
4 | mima | DateTime | 8 | 255 | ||
5 | xingming | 150 | 255 | |||
6 | xingbie | DateTime | 8 | 255 | ||
7 | shouji | 150 | 255 | |||
8 | youxiang | DateTime | 8 | 255 | ||
9 | zhaopian | 150 | 255 |
yonghu表:
序号 | 字段名称 | 字段类型 | 大小 | 允许为空 | 最大长度 | 备注 |
---|---|---|---|---|---|---|
1 | id | Int | 4 | 10 | ||
2 | addtime | 150 | 255 | |||
4 | yonghuming | 150 | 255 | |||
5 | mima | 150 | 255 | |||
6 | xingming | DateTime | 8 | |||
7 | xingbie | 8 | ||||
8 | shouji | DateTime | 8 | 255 | ||
9 | youxiang | |||||
10 | zhaopian | DateTime | 8 | 255 |
zhihuanjiaoyi表:
序号 | 字段名称 | 字段类型 | 大小 | 允许为空 | 最大长度 | 备注 |
---|---|---|---|---|---|---|
1 | id | Int | 4 | 10 | ||
2 | addtime | 150 | 255 | |||
4 | yonghuming | 150 | 255 | |||
5 | xingming | 150 | 255 | |||
6 | shouji | DateTime | 8 | |||
7 | jiuwumingcheng | DateTime | ||||
8 | jiuwutupian | |||||
9 | zhihuanwu | DateTime | 8 | |||
10 | wupintupian | DateTime | 8 | |||
11 | wupinxiangqing | DateTime | 8 | 255 | ||
12 |
sfsh | DateTime | 8 | 255 | ||
14 | shhf | DateTime | 8 | 255 |
第五章 系统功能实现
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.2用户功能模块
用户登录,通过填写账号、密码、角色等信息,输入完成后选择登录即可进入旧物置换系统。程序效果图如下图5-7所示:
图5-7用户登录界面
用户首页,用户登录进入旧物置换网站可以查看首页、个人中心、旧物信息管理、置换交易管理等内容,如图5-8所示。
图5-8首页界面图
置换交易管理,用户在置换交易可以查看用户名、姓名、手机、旧物名称、旧物类型、置换物、物品图片、查看卖家回复等进行详情、删除、修改等操作,如图5-9所示。
图5-9置换交易界面图
5.3管理员功能模块
管理员登录,通过填写账号、密码、角色等信息,输入完成后选择登录即可进入旧物置换系统。程序效果图如下图5-10所示:
图5-10管理员登录界面
首页,管理员登录进入旧物置换系统可以查看首页、个人中心、用户管理、卖家管理、旧物类型管理、旧物信息管理、置换交易管理、系统管理等内容。程序效果图如下图5-11所示:
图5-11管理员首页界面
个人中心,管理员对个人中心进行操作填写原密码、新密码、确认密码并进行添加、删除、修改以及查看。程序效果图如下图5-12所示:
图5-12密码修改界面
用户管理:管理员进用户管理可以对用户名、密码、姓名、性别、头像、手机、邮箱、图片等进行添加、删除、修改操作。程序效果图如下图5-13所示:
图5-13用户管理界面
卖家管理:管理员进入卖家管理可以对卖家名、密码、姓名、性别、手机、邮箱、照片等进行添加、删除、修改操作。程序效果图如下图5-14所示:
图5-14卖家管理界面
旧物信息管理:管理员进入旧物信息可以对卖家名、姓名、手机、旧物名称、旧物类型、旧物照片、置换需求等进行添加、删除、修改操作。程序效果图如下图5-15所示:
图5-15旧物信息管理界面
置换交易管理:管理员进入置换交易管理可以对卖家名、密码、姓名、性别、手机、邮箱、照片等进行添加、删除、修改操作。程序效果图如下图5-16所示:
图5-16置换交易管理界面
系统管理:管理员通过系统管理页面查看轮播图/网站公告等进行上传图片,发布公告进行添加、删除、修改以及查看并对整个系统进行维护等操作。程序效果图如下图5-17所示:
图5-17系统管理界面
5.4卖家功能模块
卖家注册、登录,卖家通过填写卖家名、密码、姓名、性别、手机、邮箱,信息无误后进行填写卖家名、密码、角色等信息,输入完成后选择登录即可进入旧物置换系统,如图5-18所示。
图5-18卖家注册、登录界面图
首页,卖家登录进入旧物置换网站可以查看首页、个人中心、旧物类型管理、旧物信息管理、置换交易管理等信息,如图5-19所示。
图5-19首页功能界面图
个人中心,在个人信息列表可以查看卖家名、密码、姓名、性别、手机、邮箱、照片等内容,还可以根据需要修改或删除等操作,如图5-20所示。
图5-20个人信息界面图
旧物信息管理,在旧物信息列表可以编辑卖家名、姓名、手机、旧物名称、旧物类型、旧物照片、置换需求等信息,并可根据需要进行修改或删除等操作,如图5-21所示。
图5-21旧物信息界面图
置换交易管理,在置换交易列表可以查看用户名、姓名、手机、旧物名称、旧物类型、置换物、物品图片、审核回复等信息,并可根据需要进行审核、添加、修改或删除等操作,如图5-22所示。
图5-22置换交易界面图
系统测
JiuwuleixingServiceImpl.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.JiuwuleixingDao;
import com.entity.JiuwuleixingEntity;
import com.service.JiuwuleixingService;
import com.entity.vo.JiuwuleixingVO;
import com.entity.view.JiuwuleixingView;
@Service("jiuwuleixingService")
public class JiuwuleixingServiceImpl extends ServiceImpl<JiuwuleixingDao, JiuwuleixingEntity> implements JiuwuleixingService {
@Override
public PageUtils queryPage(Map<String, Object> params) {
Page<JiuwuleixingEntity> page = this.selectPage(
new Query<JiuwuleixingEntity>(params).getPage(),
new EntityWrapper<JiuwuleixingEntity>()
);
return new PageUtils(page);
}
@Override
public PageUtils queryPage(Map<String, Object> params, Wrapper<JiuwuleixingEntity> wrapper) {
Page<JiuwuleixingView> page =new Query<JiuwuleixingView>(params).getPage();
page.setRecords(baseMapper.selectListView(page,wrapper));
PageUtils pageUtil = new PageUtils(page);
return pageUtil;
}
@Override
public List<JiuwuleixingVO> selectListVO(Wrapper<JiuwuleixingEntity> wrapper) {
return baseMapper.selectListVO(wrapper);
}
@Override
public JiuwuleixingVO selectVO(Wrapper<JiuwuleixingEntity> wrapper) {
return baseMapper.selectVO(wrapper);
}
@Override
public List<JiuwuleixingView> selectListView(Wrapper<JiuwuleixingEntity> wrapper) {
return baseMapper.selectListView(wrapper);
}
@Override
public JiuwuleixingView selectView(Wrapper<JiuwuleixingEntity> wrapper) {
return baseMapper.selectView(wrapper);
}
}
JiuwuleixingController.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.JiuwuleixingEntity;
import com.entity.view.JiuwuleixingView;
import com.service.JiuwuleixingService;
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-03-03 15:21:53
*/
@RestController
@RequestMapping("/jiuwuleixing")
public class JiuwuleixingController {
@Autowired
private JiuwuleixingService jiuwuleixingService;
/**
* 后端列表
*/
@RequestMapping("/page")
public R page(@RequestParam Map<String, Object> params,JiuwuleixingEntity jiuwuleixing, HttpServletRequest request){
EntityWrapper<JiuwuleixingEntity> ew = new EntityWrapper<JiuwuleixingEntity>();
PageUtils page = jiuwuleixingService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, jiuwuleixing), params), params));
return R.ok().put("data", page);
}
/**
* 前端列表
*/
@RequestMapping("/list")
public R list(@RequestParam Map<String, Object> params,JiuwuleixingEntity jiuwuleixing, HttpServletRequest request){
EntityWrapper<JiuwuleixingEntity> ew = new EntityWrapper<JiuwuleixingEntity>();
PageUtils page = jiuwuleixingService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, jiuwuleixing), params), params));
return R.ok().put("data", page);
}
/**
* 列表
*/
@RequestMapping("/lists")
public R list( JiuwuleixingEntity jiuwuleixing){
EntityWrapper<JiuwuleixingEntity> ew = new EntityWrapper<JiuwuleixingEntity>();
ew.allEq(MPUtil.allEQMapPre( jiuwuleixing, "jiuwuleixing"));
return R.ok().put("data", jiuwuleixingService.selectListView(ew));
}
/**
* 查询
*/
@RequestMapping("/query")
public R query(JiuwuleixingEntity jiuwuleixing){
EntityWrapper< JiuwuleixingEntity> ew = new EntityWrapper< JiuwuleixingEntity>();
ew.allEq(MPUtil.allEQMapPre( jiuwuleixing, "jiuwuleixing"));
JiuwuleixingView jiuwuleixingView = jiuwuleixingService.selectView(ew);
return R.ok("查询旧物类型成功").put("data", jiuwuleixingView);
}
/**
* 后端详情
*/
@RequestMapping("/info/{id}")
public R info(@PathVariable("id") Long id){
JiuwuleixingEntity jiuwuleixing = jiuwuleixingService.selectById(id);
return R.ok().put("data", jiuwuleixing);
}
/**
* 前端详情
*/
@RequestMapping("/detail/{id}")
public R detail(@PathVariable("id") Long id){
JiuwuleixingEntity jiuwuleixing = jiuwuleixingService.selectById(id);
return R.ok().put("data", jiuwuleixing);
}
/**
* 后端保存
*/
@RequestMapping("/save")
public R save(@RequestBody JiuwuleixingEntity jiuwuleixing, HttpServletRequest request){
jiuwuleixing.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
//ValidatorUtils.validateEntity(jiuwuleixing);
jiuwuleixingService.insert(jiuwuleixing);
return R.ok();
}
/**
* 前端保存
*/
@RequestMapping("/add")
public R add(@RequestBody JiuwuleixingEntity jiuwuleixing, HttpServletRequest request){
jiuwuleixing.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
//ValidatorUtils.validateEntity(jiuwuleixing);
jiuwuleixingService.insert(jiuwuleixing);
return R.ok();
}
/**
* 修改
*/
@RequestMapping("/update")
public R update(@RequestBody JiuwuleixingEntity jiuwuleixing, HttpServletRequest request){
//ValidatorUtils.validateEntity(jiuwuleixing);
jiuwuleixingService.updateById(jiuwuleixing);//全部更新
return R.ok();
}
/**
* 删除
*/
@RequestMapping("/delete")
public R delete(@RequestBody Long[] ids){
jiuwuleixingService.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<JiuwuleixingEntity> wrapper = new EntityWrapper<JiuwuleixingEntity>();
if(map.get("remindstart")!=null) {
wrapper.ge(columnName, map.get("remindstart"));
}
if(map.get("remindend")!=null) {
wrapper.le(columnName, map.get("remindend"));
}
int count = jiuwuleixingService.selectCount(wrapper);
return R.ok().put("count", count);
}
}
ZhihuanjiaoyiController.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.ZhihuanjiaoyiEntity;
import com.entity.view.ZhihuanjiaoyiView;
import com.service.ZhihuanjiaoyiService;
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-03-03 15:21:53
*/
@RestController
@RequestMapping("/zhihuanjiaoyi")
public class ZhihuanjiaoyiController {
@Autowired
private ZhihuanjiaoyiService zhihuanjiaoyiService;
/**
* 后端列表
*/
@RequestMapping("/page")
public R page(@RequestParam Map<String, Object> params,ZhihuanjiaoyiEntity zhihuanjiaoyi, HttpServletRequest request){
String tableName = request.getSession().getAttribute("tableName").toString();
if(tableName.equals("yonghu")) {
zhihuanjiaoyi.setYonghuming((String)request.getSession().getAttribute("username"));
}
EntityWrapper<ZhihuanjiaoyiEntity> ew = new EntityWrapper<ZhihuanjiaoyiEntity>();
PageUtils page = zhihuanjiaoyiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, zhihuanjiaoyi), params), params));
return R.ok().put("data", page);
}
/**
* 前端列表
*/
@RequestMapping("/list")
public R list(@RequestParam Map<String, Object> params,ZhihuanjiaoyiEntity zhihuanjiaoyi, HttpServletRequest request){
EntityWrapper<ZhihuanjiaoyiEntity> ew = new EntityWrapper<ZhihuanjiaoyiEntity>();
PageUtils page = zhihuanjiaoyiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, zhihuanjiaoyi), params), params));
return R.ok().put("data", page);
}
/**
* 列表
*/
@RequestMapping("/lists")
public R list( ZhihuanjiaoyiEntity zhihuanjiaoyi){
EntityWrapper<ZhihuanjiaoyiEntity> ew = new EntityWrapper<ZhihuanjiaoyiEntity>();
ew.allEq(MPUtil.allEQMapPre( zhihuanjiaoyi, "zhihuanjiaoyi"));
return R.ok().put("data", zhihuanjiaoyiService.selectListView(ew));
}
/**
* 查询
*/
@RequestMapping("/query")
public R query(ZhihuanjiaoyiEntity zhihuanjiaoyi){
EntityWrapper< ZhihuanjiaoyiEntity> ew = new EntityWrapper< ZhihuanjiaoyiEntity>();
ew.allEq(MPUtil.allEQMapPre( zhihuanjiaoyi, "zhihuanjiaoyi"));
ZhihuanjiaoyiView zhihuanjiaoyiView = zhihuanjiaoyiService.selectView(ew);
return R.ok("查询置换交易成功").put("data", zhihuanjiaoyiView);
}
/**
* 后端详情
*/
@RequestMapping("/info/{id}")
public R info(@PathVariable("id") Long id){
ZhihuanjiaoyiEntity zhihuanjiaoyi = zhihuanjiaoyiService.selectById(id);
return R.ok().put("data", zhihuanjiaoyi);
}
/**
* 前端详情
*/
@RequestMapping("/detail/{id}")
public R detail(@PathVariable("id") Long id){
ZhihuanjiaoyiEntity zhihuanjiaoyi = zhihuanjiaoyiService.selectById(id);
return R.ok().put("data", zhihuanjiaoyi);
}
/**
* 后端保存
*/
@RequestMapping("/save")
public R save(@RequestBody ZhihuanjiaoyiEntity zhihuanjiaoyi, HttpServletRequest request){
zhihuanjiaoyi.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
//ValidatorUtils.validateEntity(zhihuanjiaoyi);
zhihuanjiaoyiService.insert(zhihuanjiaoyi);
return R.ok();
}
/**
* 前端保存
*/
@RequestMapping("/add")
public R add(@RequestBody ZhihuanjiaoyiEntity zhihuanjiaoyi, HttpServletRequest request){
zhihuanjiaoyi.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
//ValidatorUtils.validateEntity(zhihuanjiaoyi);
zhihuanjiaoyiService.insert(zhihuanjiaoyi);
return R.ok();
}
/**
* 修改
*/
@RequestMapping("/update")
public R update(@RequestBody ZhihuanjiaoyiEntity zhihuanjiaoyi, HttpServletRequest request){
//ValidatorUtils.validateEntity(zhihuanjiaoyi);
zhihuanjiaoyiService.updateById(zhihuanjiaoyi);//全部更新
return R.ok();
}
/**
* 删除
*/
@RequestMapping("/delete")
public R delete(@RequestBody Long[] ids){
zhihuanjiaoyiService.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<ZhihuanjiaoyiEntity> wrapper = new EntityWrapper<ZhihuanjiaoyiEntity>();
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("yonghu")) {
wrapper.eq("yonghuming", (String)request.getSession().getAttribute("username"));
}
int count = zhihuanjiaoyiService.selectCount(wrapper);
return R.ok().put("count", count);
}
}
register.vue
<template>
<div>
<img class="bg" src="@/assets/img/bg.jpg">
<el-form :model="ruleForm" :rules="rules" ref="ruleForm" class="login-form">
<h1 class="h1">旧物置换网站注册</h1>
<el-form-item v-if="tableName=='yonghu'" label="用户名" prop="yonghuyonghuming">
<el-input v-model="ruleForm.yonghuming" placeholder="用户名"></el-input>
</el-form-item>
<el-form-item v-if="tableName=='yonghu'" label="密码" prop="yonghumima">
<el-input v-model="ruleForm.mima" placeholder="密码"></el-input>
</el-form-item>
<el-form-item v-if="tableName=='yonghu'" label="姓名" prop="yonghuxingming">
<el-input v-model="ruleForm.xingming" placeholder="姓名"></el-input>
</el-form-item>
<el-form-item v-if="tableName=='yonghu'" label="手机" prop="yonghushouji">
<el-input v-model="ruleForm.shouji" placeholder="手机"></el-input>
</el-form-item>
<el-form-item v-if="tableName=='yonghu'" label="邮箱" prop="yonghuyouxiang">
<el-input v-model="ruleForm.youxiang" placeholder="邮箱"></el-input>
</el-form-item>
<el-form-item v-if="tableName=='maijia'" label="卖家名" prop="maijiamaijiaming">
<el-input v-model="ruleForm.maijiaming" placeholder="卖家名"></el-input>
</el-form-item>
<el-form-item v-if="tableName=='maijia'" label="密码" prop="maijiamima">
<el-input v-model="ruleForm.mima" placeholder="密码"></el-input>
</el-form-item>
<el-form-item v-if="tableName=='maijia'" label="姓名" prop="maijiaxingming">
<el-input v-model="ruleForm.xingming" placeholder="姓名"></el-input>
</el-form-item>
<el-form-item v-if="tableName=='maijia'" label="手机" prop="maijiashouji">
<el-input v-model="ruleForm.shouji" placeholder="手机"></el-input>
</el-form-item>
<el-form-item v-if="tableName=='maijia'" label="邮箱" prop="maijiayouxiang">
<el-input v-model="ruleForm.youxiang" placeholder="邮箱"></el-input>
</el-form-item>
<el-button @click="login()" class="btn-login" type="primary">注册</el-button>
</el-form>
</div>
</template>
<script>
export default {
data() {
return {
ruleForm: {
},
tableName:"",
rules: {}
};
},
mounted(){
let table = this.$storage.get("loginTable");
this.tableName = table;
},
methods: {
// 获取uuid
getUUID () {
return new Date().getTime();
},
// 注册
login() {
if((!this.ruleForm.yonghuming) && `yonghu` == this.tableName){
this.$message.error(`用户名不能为空`);
return
}
if((!this.ruleForm.mima) && `yonghu` == this.tableName){
this.$message.error(`密码不能为空`);
return
}
if((!this.ruleForm.xingming) && `yonghu` == this.tableName){
this.$message.error(`姓名不能为空`);
return
}
if(`yonghu` == this.tableName && this.ruleForm.youxiang&&(!this.$validate.isEmail(this.ruleForm.youxiang))){
this.$message.error(`邮箱应输入邮件格式`);
return
}
if((!this.ruleForm.maijiaming) && `maijia` == this.tableName){
this.$message.error(`卖家名不能为空`);
return
}
if((!this.ruleForm.mima) && `maijia` == this.tableName){
this.$message.error(`密码不能为空`);
return
}
if((!this.ruleForm.xingming) && `maijia` == this.tableName){
this.$message.error(`姓名不能为空`);
return
}
if(`maijia` == this.tableName && this.ruleForm.youxiang&&(!this.$validate.isEmail(this.ruleForm.youxiang))){
this.$message.error(`邮箱应输入邮件格式`);
return
}
this.$refs["ruleForm"].validate(valid => {
if (valid) {
this.$http({
url: `${this.tableName}/register`,
method: "post",
data:this.ruleForm
}).then(({ data }) => {
if (data && data.code === 0) {
this.$router.replace({ path: "/login" });
} else {
this.$message.error(data.msg);
}
});
}
});
}
}
};
</script>
<style lang="scss" scoped>
</style>