@TOC
ssm103宠物领养系统+vue
课题背景
在当今的社会,可以说是信息技术的发展时代,在社会的方方面面无不涉及到各种信息的处理。信息是人们对客观世界的具体描述,是人们进行交流与联系的重要途径。人类社会就处在一个对信息进行有效合理的加工中。它将促进整个社会的发展。随着社会信息技术的提高,计算机已被广泛应用于当今社会的各个领域,成为推动社会发展的首要技术动力。
在现在的社会生活中,人们的生活品质不断的提高,物质的需求也相应的得到了满足。但是也有一些人在物质上的满足并不能填满心里的孤寂。当一个人在外拼搏,就算在工作氛围中有很多人的陪伴,但是回家也可能会是一个冷冷清清的环境。所以这时候如果有了一个宠物的陪伴,心里的孤寂也会得到很大的慰藉,饲养宠物可以给我们带来快乐,也让我们的心灵得到慰藉。这让用户宠物领养的需求日益在增加,但是人们在领养宠物方面却缺乏一个很好的平台,针对这一情况,开发了本宠物领养系统,为用户通过一个全新的宠物领养的平台,提高效率。
-
设计原则
在开始开发项目之前,必须要先考虑项目的实用性、科学性,以及该项目是否能够真正让用户受益并尽可能的发挥项目的作用。因此,在开发前,通过以下几条原则对项目进行判断:
(1)可行性原则。项目需要保证经济可行性和技术可行性,这包括了项目在浏览端、服务端等方面上的经济和技术上是可以达成的。
(2)适应性原则。项目要保证可维护性和可扩展性,这是每个非短期项目都需要考虑的,并且不论是维护还是扩展,都必须要建立在适应用户的正常需求的基础上。
(3)安全性及保密性原则。要充分保证用户信息的安全性和保密性,不能因为开发上的疏忽,导致用户的信息泄露。
(4)系统工程原则。为了确保项目的整体性,在项目调查、项目分析、项目设计、项目开发的过程中,都需遵从项目工程的方法和步骤逐步进行。
(5)统一规划、分期实施、逐步完善原则。项目开发的过程中,要按照规划、分期实施,特别是要注意在项目开发过程中要有条理,从点到面,一步步完善,不要贪图进度,要循环渐进的对项目进行开发。
-
论文组织结构
第一章主要是简单的介绍下设计本网站的研究背景、设计原则,在这一章里主要是让大家了解下我的设计的前因后果,为接下来我的其它章节做铺垫。
第二章主要是介绍在设计过程中所涉及到的技术。
第三章主要是介绍下设计这个网站所需要的需求以及我们的功能需求分析,因为只有更好的分析清楚我们的功能需求才能更好的完成我们的设计。
第四章网站系统设计,主要介绍了网站结构的设计以及展示了数据库E-R图设计,这一章主要是为了能让大家更好的了解网站的一些基本设计信息。
第五章系统的实现,介绍了系统每个模块的设计与实现,让大家能清晰的了解系统的主要功能。
第六章系统的测试,这章主要是测试下各个部分每个功能是否能用,看下是否有错误。
第七章总结,进行最后的总结工作。
-
系统关键技术
-
JSP技术
-
JSP(Java脚本页面)是Sun和许多参与建立的公司所提倡的动态web技术。将Java程序添加到传统的web页面HTML文件(*)。htm,*。Html) [7]。
JSP这种能够独立使用的编程语言可以嵌入在html语言里面运行,正因为JSP参照了许多编程语言的特性,使得JSP在web的脚本技术当中也占有一定的重要位置,对于刚入门编程行业的初学者来讲,jsp这种编程语言不仅容易学习,而且还具备许多高级的特性。在程序的开发过程中,使用jsp也不失为一种正确的选择,像表单数据的收集操作以及字符串信息的处理方面等等,jsp都能很轻松地解决,帮助程序开发者省下许多时间,JSP 新版本的发布,标志着一个全新的JSP时代的到来,它最大的特点就是引入了面向对象的全部机制,并保留了向下的兼容性[8]。综上所述,使用JSP,可以自由的选择操作系统、Web服务器以及合适的数据库管理系统。同时,设计开发时,有两种选择,一种是面向过程,另一种是面向对象,或者也可以两种都使用,可以称为混和方式设计。
JSP的优点:编写一次,始终运行。还有jsp可以延展可以缩短的强大优势,还有就是支持多种开发语言并且兼容性好,适用于很多平台顺利运行。
-
JAVA技术
Java是面向对象进行编程的一门语言,基础语法和C语言、C++都差不多,Java删除了C++里面的多指针、继承、自动的强制类型转换等,Java的JVM还可以自动进行垃圾回收,减少了程序员的后顾之忧。最重要的一点是Java语言是支持跨平台的,这使Java语言的使用更加广泛。
JDK(Java Development Kit)是Java语言的软件开发工具包。Java开发中JDK是最重要的核心,JDK里面有JRE,包括client和server端的。环境变量需要配置好。[1]
JRE(JAVA Runtime Environment)是支持Java程序运行的标准环境,JRE里面只有client运行环境,会自动的添加PATH 。
-
B/S结构
此次设计的网络结构模式B/S结构(Browser/Server)。B/S架构也称为B/S模式,是一种服务器以及浏览器架构模式。B/S的工作模式都是先由浏览器请求,服务器再响应。B/S体系结构解决了异构系统中的连接难题,大大改善了系统的开放性,让系统的扩展和维护更加简单;同时,B/S体系结构操作也比较容易,界面全都为浏览器模式,容易分发数据的捕获程序。只要安装通用的浏览器(如WWW浏览器)就能通过Web服务器与数据库进行数据交互。此结构的好处之一在于由于它使用的统一的浏览器,使其可以在不同的地方且不需要用专门的软件进行操作,实现了不论你使用怎样的接入网的方式都可以对公共的数据进行调用和浏览。
相对于C/S模式,B/S模式是对C/S模式应用的扩展,B/S模式不用对不同的计算机安装不同应用程序,还有安全性的要求及对模式上手难度都比前者更好。B/S模式可以让客户机的压力大大减轻,工作的负荷被合理的分配了。
图2-1 B/S模式三层结构图
-
MYSQL数据库
MySQL 是关系型数据库管理系统的代表, 因为MySQL是其免费开源的,而且MySQL的功能已经足够用对于学习和中小型企业来讲,所以开发中小型网站都会选择MySQL作为网站的数据库。[13]
MySQL具有开放性,它是一种关系型数据库管理系统,并且它的源代码可以被大众所熟知[3]。由于MySQL是开放源代码的,因此,只要经过授权就可以在自己需求的基础上对其进行修改。MySQL因为其固有的特点而备受关注,它具有很强的适应性,并且十分可靠,查询速度快。MySQL安装起来非常方便,且数据存储量大,不需要事务化处理。Sql语言拥有很多的方法,在项目中编写sql语句时使用起来是非常方便的,不会像其他语言那样需要编写更多的语句。正因为MySQL使用sql语言进行数据库管理,所以它收到了大多数程序员的热爱。
-
系统分析
-
可行性分析
-
本节通过对系统实行的目的初步调查和分析,提出可行性方案并对其一一进行论证。我们在这里主要从技术可行性、经济可行性和操作可行性等方面进行分析。
-
操作可行性
本人自己就是学生,程序开发经验不足,在界面设计上面不会设计太复杂,要讲究简单好看,操作上要方便,不能让用户觉得不流畅。用户一旦进入操作界面,界面上就会有相应提示,跟着操作提示就可以找到对应的功能操作模块,对于用户来说免培训就能使用。
-
经济可行性
由于自己本身就是学生,还没有正式参加工作,金钱上面一直都处于缺乏状态。所以在开发程序过程中,我是不会花太多经济成本在上面的。针对开发软件和数据库,还有界面设计的photoshop软件等在百度上面就可以直接下载,然后根据各种安装视频进行安装,这些资源都是免费的,程序编码阶段使用的源代码在百度上面可以轻松获得,在有网络的环境下就能下载下来,不需要支付任何费用,经济成本很低。
-
技术可行性
本系统使用Java语言作为后面控制层编码的语言,Java语言有面向对象的特点,所以使用它会让整体结构更加的清晰[3]。JSP将内容的生成和显示进行分离以为方便进行动态网站的开发[4]。同时使用mysql存储数据,保证数据不会丢失。此系统在技术上来说是非常成熟的,可以进行非常平稳的技术开发。
-
法律可行性
本课题开发和运行的宠物领养系统没有任何与国家法律法规相违背的之处。而且宠物领养系统所使用的操作方式是根据一般大众的日常习惯研发的,操作简单易懂,便于管理。所以具有法律可行性。
从上面几个部分的可行性分析得出,这次开发的宠物领养系统在开发上面没有什么大问题,值得开发。
-
系统功能分析
本宠物领养系统主要包括两大功能模块,即管理员模块、用户模块。下面将对这两个大功能进行具体功能需求分析。
(1)管理员:管理员登录后主要功能包括个人中心、用户管理、送养宠物管理、地区类型管理、失信黑名单管理、申请领养管理、宠物秀管理以及系统管理。管理员用例图如图3-1所示。
图3-1管理员用例图
(2)用户:用户进入系统前台可查看系统信息,包括网站首页、送养宠物、失信黑名单以及宠物秀等。用户要想实现宠物领养操作,必须进行登录系统,未有账号用户可进入注册界面进行注册操作,注册登录后主要功能包括个人中心、送养宠物管理、失信黑名单管理、申请领养管理以及宠物秀管理。用户用例图如图3-2所示。
图3-2用户用例图
-
系统性能分析
(1)系统的存储性:因为是宠物领养系统,所以就会在数据库要求上比较严格,信息录入的比较多,而且丰富复杂, 这就需要一个强大的数据库来存放更多的数据和保证数据的时时性。
(2)系统的易学性:系统设计的应该简单易学的,设计的各种功能应该简单操作,不需要努力学习培训,缩短用户熟悉系统的进程。
(3)系统的数据要求:数据应该录入准确,需要更新时,数据应该可以及时的修改,数据还应该有独立保存,不能删除数据的时候会连带着把还需要的数据都删除掉。
(4)系统稳定性:开发的宠物领养系统要求运行稳定,运行过程中无界面不清楚、字体模糊等现象。
(5)系统的兼容性:该系统采用Java技术开发。Web开发采用Java Servlet和JSP应用程序,可以在Linux和Windows等平台上使用,具有良好的兼容性。
-
系统流程分析
-
注册流程
-
未有账号的用户可进行注册操作,注册流程图如图3-3所示。
图3-3 注册流程图
-
登录流程
登录模块主要满足了管理员和用户的权限登录,用户在登录界面输入用户名和密码,点击登录,通过验证,进入系统,登录流程图如图3-4所示。
图3-4登录流程图
-
系统设计
-
系统结构设计
-
在系统结构设计过程中,首先,整个系统分成几个小的模块,小的问题,然后,进一步细分模块,添加细节。根据第三章中系统功能需求分析,可构建本宠物领养系统的结构图,如图4-1所示。
图4-1 系统结构图
-
系统顺序图设计
顺序图表示交互、是指为得到一个期望的结果而在多个分类器角色之间进行的交互序列。
(1)登录顺序图
用户在登录时,首先进入系统登录窗口,用户需要输入用户名和密码,点击登录按钮进行登录操作,系统会以用户名和密码为参数在数据库中进行登录信息的验证,验证成功则登录成功,进入用户主界面。登录模块顺序图如图4-2所示。
图4-2 登录顺序图
(2)注册顺序图
未有账号的用户可进入注册界面进行注册操作,在注册界面输入注册信息,点击提交按钮,系统首先判断用户名是否存在,存在则提示重新输入,不存在则验证注册信息是否正确,正确则在数据库中添加注册数据,提示注册成功。用户注册模块顺序图如图4-3所示。
图4-3 注册顺序图
-
数据库设计
一个好的数据库可以关系到程序开发的优劣,数据库设计离不开表结构的设计,还有表与表之间的联系,以及系统开发需要设计的数据表内容等信息。在进行数据库设计期间,还是需要多花时间进行考虑,最终设计出配套程序的数据库出来。
-
数据库E-R图设计
E-R图是一种描述显示数据类型间的关系的数据描述方法,E-R图可以完整地映射出现实模型的关系。E-R图中的三个最为重要的元素就是实体、属性、关系,E-R图即由这三点组成。E-R图是最能体系各个实体之间关系的,包括每个实体都包括哪些属性,搞清楚这些我们设计数据库表的时候才能够不遗忘,才能完整的设计。下面我们例出本宠物领养系统主要的几个E-R图。
1、管理员信息实体属性E-R图如图4-4所示:
图4-4 管理员信息实体属性E-R图
2、宠物秀信息实体属性E-R图如图4-5所示:
图4-5 宠物秀信息实体属性E-R图
3、地区类型信息实体属性E-R图如图4-6所示:
图4-6 地区类型信息实体属性E-R图
4、申请领养信息实体属性E-R图如图4-7所示:
图4-7 申请领养信息实体属性E-R图
5、送养宠物信息实体属性E-R图如图4-8所示:
图4-8 送养宠物信息实体属性E-R图
-
数据库表设计
宠物领养系统采用MYSQL数据库进行数据的储存,下面介绍数据库中的各个表的详细信息。
表4-1 users管理员信息表
字段名 | 数据类型 | 是否允许空 | 字段含义 |
---|---|---|---|
id` | bigint(20) | NOT NULL | 编号 |
username` | varchar(100) | NULL | 用户名 |
password` | varchar(100) | NULL | 密码 |
role | varchar(100) | NULL | 角色 |
addtime | timestamp | NULL | 新增时间 |
表4-2 chongwuxiu宠物秀信息表
字段名 | 数据类型 | 是否允许空 | 字段含义 |
---|---|---|---|
`id | bigint(20) | NOT NULL | 编号 |
addtime | timestamp | NULL | 创建时间 |
chongwudongtai | longtext | NULL | 宠物动态 |
chongwuzhaopian | varchar(200) | NULL | 宠物照片 |
shouyanghao | varchar(200) | NULL | 收养号 |
shouyangming | varchar(200) | NULL | 收养名 |
thumbsupnum| `int(11) | NULL | 赞数 | |
crazilynum| `int(11) | NULL | 踩数 | |
clicktime | ` datetime | NULL | 最近点击时间 |
表4-3 diquleixing地区类型信息表
字段名 | 数据类型 | 主键/允许空 | 字段含义 |
---|---|---|---|
`id | bigint(20) | NOT NULL | 编号 |
addtime | timestamp | NULL | 创建时间 |
leixing | varchar(200) | NULL | 类型 |
表4-4 shenqinglingyang申请领养信息表
字段名 | 数据类型 | 主键/允许空 | 字段含义 |
---|---|---|---|
`id | bigint(20) | NOT NULL | 编号 |
addtime | timestamp | NULL | 创建时间 |
chongwumingcheng | varchar(200) | NULL | 宠物名称 |
chongwuzhaopian | varchar(200) | NULL | 宠物照片 |
chongwudizhi | varchar(200) | NULL | 宠物地址 |
songyanghao | varchar(200) | NULL | 送养号 |
songyangming | varchar(200) | NULL | 送养名 |
diqu | varchar(200) | NULL | 地区 |
shouyanghao | varchar(200) | NULL | 收养号 |
shouyangming | varchar(200) | NULL | 收养名 |
xingbie | varchar(200) | NULL | 性别 |
shouji | varchar(200) | NULL | 手机 |
weixinhao | varchar(200) | NULL | 微信号 |
dizhi| `varchar(200) | NULL | 地址 | |
lingyangyuanyin | varchar(200) | NULL | 领养原因 |
yangchongjingyan | varchar(200) | NULL | 养宠经验' |
sfsh | varchar(200) | NULL | 是否审核 |
shhf` | longtext | 审核回复 |
表4-5 `songyangchongwu送养宠物信息表
字段名 | 数据类型 | 主键/允许空 | 字段含义 |
---|---|---|---|
`id | bigint(20) | NOT NULL | 编号 |
addtime | timestamp | NULL | 创建时间 |
chongwumingcheng | varchar(200) | NULL | 宠物名称 |
chongwuzhaopian | varchar(200) | NULL | 宠物照片 |
chongwudizhi | varchar(200) | NULL | 宠物地址 |
diqu | varchar(200) | NULL | 地区 |
fabushijian| `datetime | NULL | 发布时间 | |
songyanghao| `varchar(200) | NULL | 送养号 | |
songyangming | varchar(200) | NULL | 送养名 |
shouji | varchar(200) | NULL | 手机 |
songyangzhuangtai | varchar(200) | NULL | 送养状态 |
sfsh | varchar(200) | NULL | 是否审核 |
shhf` | longtext | 审核回复 |
-
系统的实现
-
用户功能模块的实现
-
系统主界面
-
-
用户进入本系统可查看系统信息,系统主界面展示如图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-8所示
图5-9 用户管理界面
-
送养宠物管理界面
管理员可查看所有送养宠物信息,并可对其进行审核、修改和删除操作,送养宠物管理界面展示如图5-10所示。
图5-10 送养宠物管理界面
-
地区类型管理界面
管理员可添加、修改和删除地区类型信息,地区类型管理界面如图5-11所示,添加地区类型界面展示如图5-12所示。
图5-11 地区类型管理界面
图5-12 添加地区类型界面
-
申请领养管理界面
管理员可查看所有所有申请领养信息,并可对其进行审核操作,申请领养管理界面如图5-13所示。
图5-13 申请领养管理界面
-
宠物秀管理界面
管理员可查看所有宠物秀信息,并可对其进行删除操作,宠物秀管理界面如图5-14所示。
图5-14 宠物秀管理界面
BaiduUtil.java
package com.utils;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.json.JSONObject;
/**
* 类说明 :
*/
public class BaiduUtil {
/**
* 根据经纬度获得省市区信息
* @param lon 纬度
* @param lat 经度
* @param coordtype 经纬度坐标系
* @return
*/
public static Map<String, String> getCityByLonLat(String key, String lng, String lat) {
String location = lat + "," + lng;
try {
//拼装url
String url = "http://api.map.baidu.com/reverse_geocoding/v3/?ak="+key+"&output=json&coordtype=wgs84ll&location="+location;
String result = HttpClientUtils.doGet(url);
JSONObject o = new JSONObject(result);
Map<String, String> area = new HashMap<>();
area.put("province", o.getJSONObject("result").getJSONObject("addressComponent").getString("province"));
area.put("city", o.getJSONObject("result").getJSONObject("addressComponent").getString("city"));
area.put("district", o.getJSONObject("result").getJSONObject("addressComponent").getString("district"));
area.put("street", o.getJSONObject("result").getJSONObject("addressComponent").getString("street"));
return area;
}catch (Exception e) {
e.printStackTrace();
}
return null;
}
/**
* 获取API访问token
* 该token有一定的有效期,需要自行管理,当失效时需重新获取.
* @param ak - 百度云官网获取的 API Key
* @param sk - 百度云官网获取的 Securet Key
* @return assess_token
*/
public static String getAuth(String ak, String sk) {
// 获取token地址
String authHost = "https://aip.baidubce.com/oauth/2.0/token?";
String getAccessTokenUrl = authHost
// 1. grant_type为固定参数
+ "grant_type=client_credentials"
// 2. 官网获取的 API Key
+ "&client_id=" + ak
// 3. 官网获取的 Secret Key
+ "&client_secret=" + sk;
try {
URL realUrl = new URL(getAccessTokenUrl);
// 打开和URL之间的连接
HttpURLConnection connection = (HttpURLConnection) realUrl.openConnection();
connection.setRequestMethod("GET");
connection.connect();
// 获取所有响应头字段
Map<String, List<String>> map = connection.getHeaderFields();
// 遍历所有的响应头字段
for (String key : map.keySet()) {
System.err.println(key + "--->" + map.get(key));
}
// 定义 BufferedReader输入流来读取URL的响应
BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String result = "";
String line;
while ((line = in.readLine()) != null) {
result += line;
}
/**
* 返回结果示例
*/
System.err.println("result:" + result);
org.json.JSONObject jsonObject = new org.json.JSONObject(result);
String access_token = jsonObject.getString("access_token");
return access_token;
} catch (Exception e) {
System.err.printf("获取token失败!");
e.printStackTrace(System.err);
}
return null;
}
}
LingyangchenggongController.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.LingyangchenggongEntity;
import com.entity.view.LingyangchenggongView;
import com.service.LingyangchenggongService;
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-29 18:02:25
*/
@RestController
@RequestMapping("/lingyangchenggong")
public class LingyangchenggongController {
@Autowired
private LingyangchenggongService lingyangchenggongService;
/**
* 后端列表
*/
@RequestMapping("/page")
public R page(@RequestParam Map<String, Object> params,LingyangchenggongEntity lingyangchenggong,
HttpServletRequest request){
String tableName = request.getSession().getAttribute("tableName").toString();
if(tableName.equals("songyangren")) {
lingyangchenggong.setSongyanghao((String)request.getSession().getAttribute("username"));
}
if(tableName.equals("shouyangren")) {
lingyangchenggong.setShouyanghao((String)request.getSession().getAttribute("username"));
}
EntityWrapper<LingyangchenggongEntity> ew = new EntityWrapper<LingyangchenggongEntity>();
PageUtils page = lingyangchenggongService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, lingyangchenggong), params), params));
return R.ok().put("data", page);
}
/**
* 前端列表
*/
@RequestMapping("/list")
public R list(@RequestParam Map<String, Object> params,LingyangchenggongEntity lingyangchenggong, HttpServletRequest request){
EntityWrapper<LingyangchenggongEntity> ew = new EntityWrapper<LingyangchenggongEntity>();
PageUtils page = lingyangchenggongService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, lingyangchenggong), params), params));
return R.ok().put("data", page);
}
/**
* 列表
*/
@RequestMapping("/lists")
public R list( LingyangchenggongEntity lingyangchenggong){
EntityWrapper<LingyangchenggongEntity> ew = new EntityWrapper<LingyangchenggongEntity>();
ew.allEq(MPUtil.allEQMapPre( lingyangchenggong, "lingyangchenggong"));
return R.ok().put("data", lingyangchenggongService.selectListView(ew));
}
/**
* 查询
*/
@RequestMapping("/query")
public R query(LingyangchenggongEntity lingyangchenggong){
EntityWrapper< LingyangchenggongEntity> ew = new EntityWrapper< LingyangchenggongEntity>();
ew.allEq(MPUtil.allEQMapPre( lingyangchenggong, "lingyangchenggong"));
LingyangchenggongView lingyangchenggongView = lingyangchenggongService.selectView(ew);
return R.ok("查询领养成功成功").put("data", lingyangchenggongView);
}
/**
* 后端详情
*/
@RequestMapping("/info/{id}")
public R info(@PathVariable("id") Long id){
LingyangchenggongEntity lingyangchenggong = lingyangchenggongService.selectById(id);
return R.ok().put("data", lingyangchenggong);
}
/**
* 前端详情
*/
@RequestMapping("/detail/{id}")
public R detail(@PathVariable("id") Long id){
LingyangchenggongEntity lingyangchenggong = lingyangchenggongService.selectById(id);
return R.ok().put("data", lingyangchenggong);
}
/**
* 后端保存
*/
@RequestMapping("/save")
public R save(@RequestBody LingyangchenggongEntity lingyangchenggong, HttpServletRequest request){
lingyangchenggong.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
//ValidatorUtils.validateEntity(lingyangchenggong);
lingyangchenggongService.insert(lingyangchenggong);
return R.ok();
}
/**
* 前端保存
*/
@RequestMapping("/add")
public R add(@RequestBody LingyangchenggongEntity lingyangchenggong, HttpServletRequest request){
lingyangchenggong.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
//ValidatorUtils.validateEntity(lingyangchenggong);
lingyangchenggongService.insert(lingyangchenggong);
return R.ok();
}
/**
* 修改
*/
@RequestMapping("/update")
public R update(@RequestBody LingyangchenggongEntity lingyangchenggong, HttpServletRequest request){
//ValidatorUtils.validateEntity(lingyangchenggong);
lingyangchenggongService.updateById(lingyangchenggong);//全部更新
return R.ok();
}
/**
* 删除
*/
@RequestMapping("/delete")
public R delete(@RequestBody Long[] ids){
lingyangchenggongService.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<LingyangchenggongEntity> wrapper = new EntityWrapper<LingyangchenggongEntity>();
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("songyangren")) {
wrapper.eq("songyanghao", (String)request.getSession().getAttribute("username"));
}
if(tableName.equals("shouyangren")) {
wrapper.eq("shouyanghao", (String)request.getSession().getAttribute("username"));
}
int count = lingyangchenggongService.selectCount(wrapper);
return R.ok().put("count", count);
}
}
NewsController.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.NewsEntity;
import com.entity.view.NewsView;
import com.service.NewsService;
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-29 18:02:25
*/
@RestController
@RequestMapping("/news")
public class NewsController {
@Autowired
private NewsService newsService;
/**
* 后端列表
*/
@RequestMapping("/page")
public R page(@RequestParam Map<String, Object> params,NewsEntity news,
HttpServletRequest request){
EntityWrapper<NewsEntity> ew = new EntityWrapper<NewsEntity>();
PageUtils page = newsService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, news), params), params));
return R.ok().put("data", page);
}
/**
* 前端列表
*/
@IgnoreAuth
@RequestMapping("/list")
public R list(@RequestParam Map<String, Object> params,NewsEntity news, HttpServletRequest request){
EntityWrapper<NewsEntity> ew = new EntityWrapper<NewsEntity>();
PageUtils page = newsService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, news), params), params));
return R.ok().put("data", page);
}
/**
* 列表
*/
@RequestMapping("/lists")
public R list( NewsEntity news){
EntityWrapper<NewsEntity> ew = new EntityWrapper<NewsEntity>();
ew.allEq(MPUtil.allEQMapPre( news, "news"));
return R.ok().put("data", newsService.selectListView(ew));
}
/**
* 查询
*/
@RequestMapping("/query")
public R query(NewsEntity news){
EntityWrapper< NewsEntity> ew = new EntityWrapper< NewsEntity>();
ew.allEq(MPUtil.allEQMapPre( news, "news"));
NewsView newsView = newsService.selectView(ew);
return R.ok("查询宠物资讯成功").put("data", newsView);
}
/**
* 后端详情
*/
@RequestMapping("/info/{id}")
public R info(@PathVariable("id") Long id){
NewsEntity news = newsService.selectById(id);
return R.ok().put("data", news);
}
/**
* 前端详情
*/
@IgnoreAuth
@RequestMapping("/detail/{id}")
public R detail(@PathVariable("id") Long id){
NewsEntity news = newsService.selectById(id);
return R.ok().put("data", news);
}
/**
* 后端保存
*/
@RequestMapping("/save")
public R save(@RequestBody NewsEntity news, HttpServletRequest request){
news.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
//ValidatorUtils.validateEntity(news);
newsService.insert(news);
return R.ok();
}
/**
* 前端保存
*/
@RequestMapping("/add")
public R add(@RequestBody NewsEntity news, HttpServletRequest request){
news.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
//ValidatorUtils.validateEntity(news);
newsService.insert(news);
return R.ok();
}
/**
* 修改
*/
@RequestMapping("/update")
public R update(@RequestBody NewsEntity news, HttpServletRequest request){
//ValidatorUtils.validateEntity(news);
newsService.updateById(news);//全部更新
return R.ok();
}
/**
* 删除
*/
@RequestMapping("/delete")
public R delete(@RequestBody Long[] ids){
newsService.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<NewsEntity> wrapper = new EntityWrapper<NewsEntity>();
if(map.get("remindstart")!=null) {
wrapper.ge(columnName, map.get("remindstart"));
}
if(map.get("remindend")!=null) {
wrapper.le(columnName, map.get("remindend"));
}
int count = newsService.selectCount(wrapper);
return R.ok().put("count", count);
}
}
menu.js
const menu = {
list() {
return [{"backMenu":[{"child":[{"buttons":["新增","查看","修改","删除"],"menu":"送养人","menuJump":"列表","tableName":"songyangren"}],"menu":"送养人管理"},{"child":[{"buttons":["查看","修改","删除","审核"],"menu":"送养宠物","menuJump":"列表","tableName":"songyangchongwu"}],"menu":"送养宠物管理"},{"child":[{"buttons":["新增","查看","修改","删除"],"menu":"地区类型","menuJump":"列表","tableName":"diquleixing"}],"menu":"地区类型管理"},{"child":[{"buttons":["查看","删除","审核"],"menu":"失信黑名单","menuJump":"列表","tableName":"shixinheimingdan"}],"menu":"失信黑名单管理"},{"child":[{"buttons":["查看","删除","修改","新增"],"menu":"申请领养","menuJump":"列表","tableName":"shenqinglingyang"}],"menu":"申请领养管理"},{"child":[{"buttons":["查看","删除"],"menu":"宠物秀","menuJump":"列表","tableName":"chongwuxiu"}],"menu":"宠物秀管理"},{"child":[{"buttons":["新增","查看","修改","删除"],"menu":"收养人","menuJump":"列表","tableName":"shouyangren"}],"menu":"收养人管理"},{"child":[{"buttons":["查看","修改","删除"],"menu":"待初审申请","menuJump":"列表","tableName":"daichushenshenqing"}],"menu":"待初审申请管理"},{"child":[{"buttons":["删除","修改","查看","审核","领养成功"],"menu":"等终审申请","menuJump":"列表","tableName":"dengzhongshenshenqing"}],"menu":"等终审申请管理"},{"child":[{"buttons":["查看","修改","删除"],"menu":"领养成功","menuJump":"列表","tableName":"lingyangchenggong"}],"menu":"领养成功管理"},{"child":[{"buttons":["删除","修改","查看"],"menu":"取消申请领养","menuJump":"列表","tableName":"quxiaoshenqinglingyang"}],"menu":"取消申请领养管理"},{"child":[{"buttons":["查看","修改","删除"],"menu":"取消待初审申请","menuJump":"列表","tableName":"quxiaodaichushenshenqing"}],"menu":"取消待初审申请管理"},{"child":[{"buttons":["查看","修改","删除"],"menu":"取消终审申请","menuJump":"列表","tableName":"quxiaozhongshenshenqing"}],"menu":"取消终审申请管理"},{"child":[{"buttons":["查看","修改","删除"],"menu":"管理员","tableName":"users"}],"menu":"管理员管理"},{"child":[{"buttons":["新增","查看","修改","删除"],"menu":"宠物资讯","tableName":"news"},{"buttons":["新增","查看","修改","删除"],"menu":"轮播图管理","tableName":"config"}],"menu":"系统管理"}],"frontMenu":[{"child":[{"buttons":["查看","领养"],"menu":"送养宠物列表","menuJump":"列表","tableName":"songyangchongwu"}],"menu":"送养宠物模块"},{"child":[{"buttons":["查看"],"menu":"失信黑名单列表","menuJump":"列表","tableName":"shixinheimingdan"}],"menu":"失信黑名单模块"},{"child":[{"buttons":["查看"],"menu":"宠物秀列表","menuJump":"列表","tableName":"chongwuxiu"}],"menu":"宠物秀模块"}],"hasBackLogin":"是","hasBackRegister":"否","hasFrontLogin":"否","hasFrontRegister":"否","roleName":"管理员","tableName":"users"},{"backMenu":[{"child":[{"buttons":["删除","新增","查看","修改"],"menu":"送养宠物","menuJump":"列表","tableName":"songyangchongwu"}],"menu":"送养宠物管理"},{"child":[{"buttons":["查看","新增","删除","修改"],"menu":"失信黑名单","menuJump":"列表","tableName":"shixinheimingdan"}],"menu":"失信黑名单管理"},{"child":[{"buttons":["查看","修改","删除","审核","取消","待初审"],"menu":"申请领养","menuJump":"列表","tableName":"shenqinglingyang"}],"menu":"申请领养管理"},{"child":[{"buttons":["查看","修改","删除","取消"],"menu":"待初审申请","menuJump":"列表","tableName":"daichushenshenqing"}],"menu":"待初审申请管理"},{"child":[{"buttons":["查看","修改","删除","取消"],"menu":"等终审申请","menuJump":"列表","tableName":"dengzhongshenshenqing"}],"menu":"等终审申请管理"},{"child":[{"buttons":["查看","修改","删除"],"menu":"领养成功","menuJump":"列表","tableName":"lingyangchenggong"}],"menu":"领养成功管理"},{"child":[{"buttons":["查看","修改","删除"],"menu":"取消申请领养","menuJump":"列表","tableName":"quxiaoshenqinglingyang"}],"menu":"取消申请领养管理"},{"child":[{"buttons":["查看","修改","删除"],"menu":"取消待初审申请","menuJump":"列表","tableName":"quxiaodaichushenshenqing"}],"menu":"取消待初审申请管理"},{"child":[{"buttons":["查看","修改","删除"],"menu":"取消终审申请","menuJump":"列表","tableName":"quxiaozhongshenshenqing"}],"menu":"取消终审申请管理"}],"frontMenu":[{"child":[{"buttons":["查看","领养"],"menu":"送养宠物列表","menuJump":"列表","tableName":"songyangchongwu"}],"menu":"送养宠物模块"},{"child":[{"buttons":["查看"],"menu":"失信黑名单列表","menuJump":"列表","tableName":"shixinheimingdan"}],"menu":"失信黑名单模块"},{"child":[{"buttons":["查看"],"menu":"宠物秀列表","menuJump":"列表","tableName":"chongwuxiu"}],"menu":"宠物秀模块"}],"hasBackLogin":"否","hasBackRegister":"否","hasFrontLogin":"是","hasFrontRegister":"是","roleName":"送养人","tableName":"songyangren"},{"backMenu":[{"child":[{"buttons":["查看"],"menu":"申请领养","menuJump":"列表","tableName":"shenqinglingyang"}],"menu":"申请领养管理"},{"child":[{"buttons":["新增","查看","修改","删除"],"menu":"宠物秀","menuJump":"列表","tableName":"chongwuxiu"}],"menu":"宠物秀管理"},{"child":[{"buttons":["查看","进入待终审"],"menu":"待初审申请","menuJump":"列表","tableName":"daichushenshenqing"}],"menu":"待初审申请管理"},{"child":[{"buttons":["查看"],"menu":"等终审申请","menuJump":"列表","tableName":"dengzhongshenshenqing"}],"menu":"等终审申请管理"},{"child":[{"buttons":["查看"],"menu":"领养成功","menuJump":"列表","tableName":"lingyangchenggong"}],"menu":"领养成功管理"},{"child":[{"buttons":["查看"],"menu":"取消申请领养","menuJump":"列表","tableName":"quxiaoshenqinglingyang"}],"menu":"取消申请领养管理"},{"child":[{"buttons":["查看"],"menu":"取消待初审申请","menuJump":"列表","tableName":"quxiaodaichushenshenqing"}],"menu":"取消待初审申请管理"},{"child":[{"buttons":["查看"],"menu":"取消终审申请","menuJump":"列表","tableName":"quxiaozhongshenshenqing"}],"menu":"取消终审申请管理"}],"frontMenu":[{"child":[{"buttons":["查看","领养"],"menu":"送养宠物列表","menuJump":"列表","tableName":"songyangchongwu"}],"menu":"送养宠物模块"},{"child":[{"buttons":["查看"],"menu":"失信黑名单列表","menuJump":"列表","tableName":"shixinheimingdan"}],"menu":"失信黑名单模块"},{"child":[{"buttons":["查看"],"menu":"宠物秀列表","menuJump":"列表","tableName":"chongwuxiu"}],"menu":"宠物秀模块"}],"hasBackLogin":"否","hasBackRegister":"否","hasFrontLogin":"是","hasFrontRegister":"是","roleName":"收养人","tableName":"shouyangren"}]
}
}
export default menu;
声明
本博客适用于广泛的学术和教育用途,包括但不限于个人学习、开发设计,产品设计。仅供学习参考,旨在为读者提供深入理解和学术研究的材料。