@TOC
springboot589健身俱乐部网站--论文
系统概述
该系统由个人管理员、用户和教练三部分组成。其中:用户进入系统首页可以查看健身课程、健身器材、会员卡信息、新闻公告、在线留言、后台管理、个人中心等信息;管理员则是根据不同需求设置了不同功能,可以通过后台管理接口管理用户信息。
3.2 需求分析
需求分析,也称为软件需求分析、系统需求分析或需求分析工程,是指开发人员经过充分的研究和分析,准确地理解用户和项目在功能、性能、可靠性等方面的具体需求,并将用户的非正式需求表述转化为确定系统必须执行的需求的完整定义的过程[11]。
功能需求分析是系统设计的前提,它要求开发者和用户定义开发什么样的体系和系统需要什么样的功能。本文主要介绍了一种基于windows平台实现的健身俱乐部网站。该系统为用户找到健身俱乐部信息提供了更安全、更高效、更便捷的途径。本系统有三个角色:管理员、用户和教练,要求具备以下功能:
(1)用户可以浏览主页了解健身课程、健身器材、会员卡信息、新闻公告等信息,并进行在线留言;
(2)管理员通过后台管理员界面,实现对用户信息管理,可以查看健身课程、健身器材等信息,让用户实时知道最新的健身俱乐部管理信息;
3.3 可行性分析
可行性分析是指通过比较项目的主要内容和支撑条件,如市场需求、资源供应、环境影响、资金筹措情况、盈利能力等,预测项目建成后可能产生的资金、经济效益、社会和环境影响,为项目决策提供依据的综合性系统分析方法。可行性研究报告编制的质量直接影响着投资决策的成,而可行性研究报告编制程序又决定了可行性研究报告能否得到有效执行。因此,必须重视可行性研究工作,提高其编制水平。可行性分析应当具有预见性、公正性、可靠性和科学性[13]。
3.3.1 技术可行性分析
本系统是为了为用户寻找健身俱乐部管理提供更加安全、高效、便捷的方式,本系统需要运用到Java、MySQL、springboot、B/S结构等技术,这些技术在国内外已经非常成熟[14],在大学期间也有所涉及,相关的知识和工具在网络上也可以查到,再加上老师的指导,在技术上的难题可以得到解决。
3.3.2 经济可行性分析
该系统的主题是基于springboot的健身俱乐部网站的设计与实现。开发所需的软件资源是Eclipse。我们可以在它的网站上安装一个免费的版本,这对我们的开发和使用是足够好的。数据库就是MySQL数据库。是开源是免费的,服务器使用Tomcat服务器,浏览器使用日常IE浏览器,springboot框架是开源的。经过可行性评估,软件资源支出符合经济可行性[15]。硬件方面,配备齐全的笔记本电脑作为工具在经济上是可行的。
3.4 本章小结
健身俱乐部网站从市场、技术、经济、功能等方面分析了系统的功能需求,可以满足用户的健身俱乐部管理需求,帮助用户安全、高效地找到合适的健身俱乐部管理信息,因此有必要对其进行课题研究。
第4章 系统设计
系统设计是将被设计对象划分为单个模块进行构建,各个模块相互支持,相互制约,它们的组合是一个完整的系统。通过系统设计,可以最大限度地满足系统的预期目标,明确软件开发的目的。
4.1 系统基本结构设计
本次系统采用springboot框架集进行开发,springboot框架是一款企业界主流的软件开发框架,其简化了开发流程,大大缩减了软件开发所需的时间提高了软件的响应速度。系统总体结构图如图4-1所示。
图4-1 系统总体结构图
4.2 数据库设计
数据库结构设计的好坏直接影响到健身俱乐部网站的效率和实现的效果。本系统的数据库采用MySQL数据库,MySQL是一种开放源代码的关系型数据库管理系统,使用最常见的数据库管理语言SQL进行数据库管理。
4.2.1 数据库E-R图设计
E-R图也可称为实体-联系图,其可以清楚的显示实体与实体之间的关系,是描述概念模型的有效方式,通过各实体间的关系方便数据库结构的设计。以下是本系统主要的实体属性图如下所示。
健身器材实体如图4-2所示。
图4-2健身器材实体属性图
训练计划实体如图4-3所示。
图4-3训练计划实体属性图
会员卡信息实体如图4-4所示。
图4-4会员卡信息实体属性图
在线留言实体如图4-5所示。
图4-5在线留言实体属性图
4.2.2 数据库表设计
数据表是用来保存多种数据的表,它是所有数据库的核心对象,且对于软件开发有着不可替代的作用。其相关数据表如下:
表4-1:健身器材
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
---|---|---|---|---|---|
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
qicaimingcheng | varchar | 200 | 器材名称 | ||
qicaileixing | varchar | 200 | 器材类型 | ||
guige | varchar | 200 | 规格 | ||
shuliang | int | 数量 | |||
qicaiweizhi | varchar | 200 | 器材位置 | ||
qicaijieshao | longtext | 4294967295 | 器材介绍 | ||
qicaitupian | longtext | 4294967295 | 器材图片 |
表4-2:训练计划
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
---|---|---|---|---|---|
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
kechengmingcheng | varchar | 200 | 课程名称 | ||
kechengleixing | varchar | 200 | 课程类型 | ||
kaishishijian | datetime | 开始时间 | |||
jieshushijian | datetime | 结束时间 | |||
xunlianneirong | longtext | 4294967295 | 训练内容 | ||
zhanghao | varchar | 200 | 账号 | ||
xingming | varchar | 200 | 姓名 | ||
jiaolianzhanghao | varchar | 200 | 教练账号 | ||
jiaolianxingming | varchar | 200 | 教练姓名 |
表4-3:会员卡信息
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
---|---|---|---|---|---|
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
huiyuankamingcheng | varchar | 200 | 会员卡名称 | ||
huiyuankaleixing | varchar | 200 | 会员卡类型 | ||
huiyuankaqixian | varchar | 200 | 会员卡期限 | ||
banlijiage | int | 办理价格 | |||
huiyuankajieshao | longtext | 4294967295 | 会员卡介绍 | ||
huiyuankatupian | longtext | 4294967295 | 会员卡图片 |
表4-4:用户表
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
---|---|---|---|---|---|
id | bigint | 主键 | 主键 | ||
username | varchar | 100 | 用户名 | ||
password | varchar | 100 | 密码 | ||
role | varchar | 100 | 角色 | 管理员 | |
addtime | timestamp | 新增时间 | CURRENT_TIMESTAMP |
表4-5:健身器材评论表
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
---|---|---|---|---|---|
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
refid | bigint | 关联表id | |||
userid | bigint | 用户id | |||
avatarurl | longtext | 4294967295 | 头像 | ||
nickname | varchar | 200 | 用户名 | ||
content | longtext | 4294967295 | 评论内容 | ||
reply | longtext | 4294967295 | 回复内容 |
表4-6:token表
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
---|---|---|---|---|---|
id | bigint | 主键 | 主键 | ||
userid | bigint | 用户id | |||
username | varchar | 100 | 用户名 | ||
tablename | varchar | 100 | 表名 | ||
role | varchar | 100 | 角色 | ||
token | varchar | 200 | 密码 | ||
addtime | timestamp | 新增时间 | CURRENT_TIMESTAMP | ||
expiratedtime | timestamp | 过期时间 | CURRENT_TIMESTAMP |
表4-7:健身课程评论表
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
---|---|---|---|---|---|
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
refid | bigint | 关联表id | |||
userid | bigint | 用户id | |||
avatarurl | longtext | 4294967295 | 头像 | ||
nickname | varchar | 200 | 用户名 | ||
content | longtext | 4294967295 | 评论内容 | ||
reply | longtext | 4294967295 | 回复内容 |
表4-8:关于我们
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
---|---|---|---|---|---|
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
title | varchar | 200 | 标题 | ||
subtitle | varchar | 200 | 副标题 | ||
content | longtext | 4294967295 | 内容 | ||
picture1 | longtext | 4294967295 | 图片1 | ||
picture2 | longtext | 4294967295 | 图片2 | ||
picture3 | longtext | 4294967295 | 图片3 |
表4-9:器材借用
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
---|---|---|---|---|---|
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
qicaimingcheng | varchar | 200 | 器材名称 | ||
qicaileixing | varchar | 200 | 器材类型 | ||
guige | varchar | 200 | 规格 | ||
shuliang | int | 数量 | |||
jieyongshijian | datetime | 借用时间 | |||
beizhu | varchar | 200 | 备注 | ||
zhanghao | varchar | 200 | 账号 | ||
xingming | varchar | 200 | 姓名 | ||
sfsh | varchar | 200 | 是否审核 | 待审核 | |
shhf | longtext | 4294967295 | 审核回复 |
表4-10:配置文件
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
---|---|---|---|---|---|
id | bigint | 主键 | 主键 | ||
name | varchar | 100 | 配置参数名称 | ||
value | varchar | 100 | 配置参数值 |
表4-11:新闻公告
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
---|---|---|---|---|---|
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
title | varchar | 200 | 标题 | ||
introduction | longtext | 4294967295 | 简介 | ||
picture | longtext | 4294967295 | 图片 | ||
content | longtext | 4294967295 | 内容 |
表4-12:收藏表
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
---|---|---|---|---|---|
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
userid | bigint | 用户id | |||
refid | bigint | 商品id | |||
tablename | varchar | 200 | 表名 | ||
name | varchar | 200 | 名称 | ||
picture | longtext | 4294967295 | 图片 | ||
type | varchar | 200 | 类型(1:收藏,21:赞,22:踩,31:竞拍参与,41:关注) | 1 | |
inteltype | varchar | 200 | 推荐类型 | ||
remark | varchar | 200 | 备注 |
表4-13:办卡信息
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
---|---|---|---|---|---|
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
huiyuankamingcheng | varchar | 200 | 会员卡名称 | ||
huiyuankaleixing | varchar | 200 | 会员卡类型 | ||
huiyuankaqixian | varchar | 200 | 会员卡期限 | ||
banlijiage | int | 办理价格 | |||
bankashijian | datetime | 办卡时间 | |||
bankashuoming | varchar | 200 | 办卡说明 | ||
zhanghao | varchar | 200 | 账号 | ||
xingming | varchar | 200 | 姓名 | ||
sfsh | varchar | 200 | 是否审核 | 待审核 | |
shhf | longtext | 4294967295 | 审核回复 | ||
ispay | varchar | 200 | 是否支付 | 未支付 |
表4-14:在线留言
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
---|---|---|---|---|---|
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
userid | bigint | 留言人id | |||
username | varchar | 200 | 用户名 | ||
avatarurl | longtext | 4294967295 | 头像 | ||
content | longtext | 4294967295 | 留言内容 | ||
cpicture | longtext | 4294967295 | 留言图片 | ||
reply | longtext | 4294967295 | 回复内容 | ||
rpicture | longtext | 4294967295 | 回复图片 |
表4-15:课程预约
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
---|---|---|---|---|---|
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
kechengmingcheng | varchar | 200 | 课程名称 | ||
kechengleixing | varchar | 200 | 课程类型 | ||
kechengjiage | int | 课程价格 | |||
yuyueshijian | datetime | 预约时间 | |||
yuyueshuoming | varchar | 200 | 预约说明 | ||
jiaolianzhanghao | varchar | 200 | 教练账号 | ||
jiaolianxingming | varchar | 200 | 教练姓名 | ||
zhanghao | varchar | 200 | 账号 | ||
xingming | varchar | 200 | 姓名 | ||
sfsh | varchar | 200 | 是否审核 | 待审核 | |
shhf | longtext | 4294967295 | 审核回复 | ||
ispay | varchar | 200 | 是否支付 | 未支付 |
表4-16:教室信息
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
---|---|---|---|---|---|
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
jiaoshimingcheng | varchar | 200 | 教室名称 | ||
jiaoshiweizhi | varchar | 200 | 教室位置 | ||
jiaoshizhuangtai | varchar | 200 | 教室状态 | ||
jiaoshishebei | longtext | 4294967295 | 教室设备 |
表4-17:用户
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
---|---|---|---|---|---|
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
zhanghao | varchar | 200 | 账号 | ||
mima | varchar | 200 | 密码 | ||
xingming | varchar | 200 | 姓名 | ||
xingbie | varchar | 200 | 性别 | ||
nianling | int | 年龄 | |||
shouji | varchar | 200 | 手机 | ||
touxiang | longtext | 4294967295 | 头像 |
表4-18:健身课程
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
---|---|---|---|---|---|
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
kechengmingcheng | varchar | 200 | 课程名称 | ||
kechengleixing | varchar | 200 | 课程类型 | ||
shangkedidian | varchar | 200 | 上课地点 | ||
kechengjiage | int | 课程价格 | |||
kechengjieshao | longtext | 4294967295 | 课程介绍 | ||
kechengtupian | longtext | 4294967295 | 课程图片 | ||
jiaolianzhanghao | varchar | 200 | 教练账号 | ||
jiaolianxingming | varchar | 200 | 教练姓名 | ||
clicktime | datetime | 最近点击时间 | |||
clicknum | int | 点击次数 | 0 |
表4-19:教练
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
---|---|---|---|---|---|
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
jiaolianzhanghao | varchar | 200 | 教练账号 | ||
mima | varchar | 200 | 密码 | ||
jiaolianxingming | varchar | 200 | 教练姓名 | ||
xingbie | varchar | 200 | 性别 | ||
nianling | int | 年龄 | |||
shouji | varchar | 200 | 手机 | ||
touxiang | longtext | 4294967295 | 头像 |
4.3 本章小结
通过本章针对健身俱乐部网站功能的总体结构、E-R属性图和数据表的大概介绍,对在开发系统时所要涉及到的数据库进行简单设计,为下一章系统的实现做好铺垫。
第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.2后台模块实现
后台用户登录,在登录页面选择需要登录的角色,在正确输入用户名和密码后,进入操作系统进行操作;如图5-7所示。
图5-7后台登录界面
5.2.1管理员模块实现
管理员进入主页面,主要功能包括对首页、个人中心、用户管理、教练管理、健身课程管理、课程预约管理、健身器材管理、器材借用管理、会员卡信息管理、办卡信息管理、训练计划管理、教室信息管理、在线留言、系统管理等进行操作。管理员主页面如图5-8所示:
图5-8 管理员主界面
管理员点击用户管理。在用户页面输入账号和姓名进行查询、新增或删除用户列表,并根据需要对用户详情信息进行详情、修改或删除操作;如图5-9所示:
图5-9用户管理界面
管理员点击教练管理。在教练页面输入教练账号和教练姓名进行查询、新增或删除教练列表,并根据需要对教练详情信息进行详情、修改或删除操作;如图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-18所示:
图5-18教室信息管理界面
管理员点击在线留言管理。在在线留言页面输入用户名进行查询或删除在线留言列表,并根据需要对在线留言详情信息进行详情、修改、回复或删除操作;如图5-19所示:
图5-19在线留言管理界面
管理员点击系统管理。在系统简介页面输入标题进行查询、新增或删除系统简介列表,并根据需要对系统简介详情信息进行详情或修改操作;还可以对关于我们、轮播图管理、新闻公告进行相应操作;如图5-20所示:
图5-20系统管理界面
5.2.2教练实现
教练进入主页面,主要功能包括对首页、个人中心、课程预约管理、训练计划管理等进行操作。教练主页面如图5-21所示:
图5-21教练主界面
5.2.3用户模块实现
用户进入主页面,主要功能包括对首页、个人中心、课程预约管理、器材借用管理、办卡信息管理、训练计划管理等进行相应操作。用户主页面如图5-22所示:
图5-22用户主界面
5.3 本章小结
第五章主要内容是系统实现,首先实现了本系统中最重要的前台功能,其次分别实现了对管理员、用户、和教练等功能的管理,并对主要代码的编写,完成了系统全部功能设计。
StoreupController.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.transaction.annotation.Transactional;
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.StoreupEntity;
import com.entity.view.StoreupView;
import com.service.StoreupService;
import com.service.TokenService;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.MD5Util;
import com.utils.MPUtil;
import com.utils.CommonUtil;
import java.io.IOException;
/**
* 收藏表
* 后端接口
* @author
* @email
* @date 2023-02-02 22:16:35
*/
@RestController
@RequestMapping("/storeup")
public class StoreupController {
@Autowired
private StoreupService storeupService;
/**
* 后端列表
*/
@RequestMapping("/page")
public R page(@RequestParam Map<String, Object> params,StoreupEntity storeup,
HttpServletRequest request){
if(!request.getSession().getAttribute("role").toString().equals("管理员")) {
storeup.setUserid((Long)request.getSession().getAttribute("userId"));
}
EntityWrapper<StoreupEntity> ew = new EntityWrapper<StoreupEntity>();
PageUtils page = storeupService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, storeup), params), params));
return R.ok().put("data", page);
}
/**
* 前端列表
*/
@IgnoreAuth
@RequestMapping("/list")
public R list(@RequestParam Map<String, Object> params,StoreupEntity storeup,
HttpServletRequest request){
EntityWrapper<StoreupEntity> ew = new EntityWrapper<StoreupEntity>();
PageUtils page = storeupService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, storeup), params), params));
return R.ok().put("data", page);
}
/**
* 列表
*/
@RequestMapping("/lists")
public R list( StoreupEntity storeup){
EntityWrapper<StoreupEntity> ew = new EntityWrapper<StoreupEntity>();
ew.allEq(MPUtil.allEQMapPre( storeup, "storeup"));
return R.ok().put("data", storeupService.selectListView(ew));
}
/**
* 查询
*/
@RequestMapping("/query")
public R query(StoreupEntity storeup){
EntityWrapper< StoreupEntity> ew = new EntityWrapper< StoreupEntity>();
ew.allEq(MPUtil.allEQMapPre( storeup, "storeup"));
StoreupView storeupView = storeupService.selectView(ew);
return R.ok("查询收藏表成功").put("data", storeupView);
}
/**
* 后端详情
*/
@RequestMapping("/info/{id}")
public R info(@PathVariable("id") Long id){
StoreupEntity storeup = storeupService.selectById(id);
return R.ok().put("data", storeup);
}
/**
* 前端详情
*/
@IgnoreAuth
@RequestMapping("/detail/{id}")
public R detail(@PathVariable("id") Long id){
StoreupEntity storeup = storeupService.selectById(id);
return R.ok().put("data", storeup);
}
/**
* 后端保存
*/
@RequestMapping("/save")
public R save(@RequestBody StoreupEntity storeup, HttpServletRequest request){
storeup.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
//ValidatorUtils.validateEntity(storeup);
storeup.setUserid((Long)request.getSession().getAttribute("userId"));
storeupService.insert(storeup);
return R.ok();
}
/**
* 前端保存
*/
@RequestMapping("/add")
public R add(@RequestBody StoreupEntity storeup, HttpServletRequest request){
storeup.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
//ValidatorUtils.validateEntity(storeup);
storeupService.insert(storeup);
return R.ok();
}
/**
* 修改
*/
@RequestMapping("/update")
@Transactional
public R update(@RequestBody StoreupEntity storeup, HttpServletRequest request){
//ValidatorUtils.validateEntity(storeup);
storeupService.updateById(storeup);//全部更新
return R.ok();
}
/**
* 删除
*/
@RequestMapping("/delete")
public R delete(@RequestBody Long[] ids){
storeupService.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<StoreupEntity> wrapper = new EntityWrapper<StoreupEntity>();
if(map.get("remindstart")!=null) {
wrapper.ge(columnName, map.get("remindstart"));
}
if(map.get("remindend")!=null) {
wrapper.le(columnName, map.get("remindend"));
}
if(!request.getSession().getAttribute("role").toString().equals("管理员")) {
wrapper.eq("userid", (Long)request.getSession().getAttribute("userId"));
}
int count = storeupService.selectCount(wrapper);
return R.ok().put("count", count);
}
}
AlipayConfig.java
package com.config;
import java.io.FileWriter;
import java.io.IOException;
/* *
*类名:AlipayConfig
*功能:基础配置类
*详细:设置帐户有关信息及返回路径
*修改日期:2017-04-05
*说明:
*以下代码只是为了方便商户测试而提供的样例代码,商户可以根据自己网站的需要,按照技术文档编写,并非一定要使用该代码。
*该代码仅供学习和研究支付宝接口使用,只是提供一个参考。
*/
public class AlipayConfig {
}
HuiyuankaxinxiServiceImpl.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.HuiyuankaxinxiDao;
import com.entity.HuiyuankaxinxiEntity;
import com.service.HuiyuankaxinxiService;
import com.entity.vo.HuiyuankaxinxiVO;
import com.entity.view.HuiyuankaxinxiView;
@Service("huiyuankaxinxiService")
public class HuiyuankaxinxiServiceImpl extends ServiceImpl<HuiyuankaxinxiDao, HuiyuankaxinxiEntity> implements HuiyuankaxinxiService {
@Override
public PageUtils queryPage(Map<String, Object> params) {
Page<HuiyuankaxinxiEntity> page = this.selectPage(
new Query<HuiyuankaxinxiEntity>(params).getPage(),
new EntityWrapper<HuiyuankaxinxiEntity>()
);
return new PageUtils(page);
}
@Override
public PageUtils queryPage(Map<String, Object> params, Wrapper<HuiyuankaxinxiEntity> wrapper) {
Page<HuiyuankaxinxiView> page =new Query<HuiyuankaxinxiView>(params).getPage();
page.setRecords(baseMapper.selectListView(page,wrapper));
PageUtils pageUtil = new PageUtils(page);
return pageUtil;
}
@Override
public List<HuiyuankaxinxiVO> selectListVO(Wrapper<HuiyuankaxinxiEntity> wrapper) {
return baseMapper.selectListVO(wrapper);
}
@Override
public HuiyuankaxinxiVO selectVO(Wrapper<HuiyuankaxinxiEntity> wrapper) {
return baseMapper.selectVO(wrapper);
}
@Override
public List<HuiyuankaxinxiView> selectListView(Wrapper<HuiyuankaxinxiEntity> wrapper) {
return baseMapper.selectListView(wrapper);
}
@Override
public HuiyuankaxinxiView selectView(Wrapper<HuiyuankaxinxiEntity> wrapper) {
return baseMapper.selectView(wrapper);
}
}
home.vue
<template>
<div class="content">
<div class="text" :style='{"margin":"50px auto","fontSize":"34px","color":"rgb(51, 51, 51)","textAlign":"center","fontWeight":"bold"}'>欢迎使用 {{this.$project.projectName}}</div>
</div>
</template>
<script>
//0
import router from '@/router/router-static'
import * as echarts from 'echarts'
export default {
data() {
return {
};
},
mounted(){
this.init();
},
methods:{
init(){
if(this.$storage.get('Token')){
this.$http({
url: `${this.$storage.get('sessionTable')}/session`,
method: "get"
}).then(({ data }) => {
if (data && data.code != 0) {
router.push({ name: 'login' })
}
});
}else{
router.push({ name: 'login' })
}
},
}
};
</script>
<style lang="scss" scoped>
.cardView {
display: flex;
flex-wrap: wrap;
width: 100%;
.cards {
display: flex;
align-items: center;
width: 100%;
margin-bottom: 10px;
justify-content: center;
.card {
width: calc(25% - 20px);
margin: 0 10px;
/deep/.el-card__body{
padding: 0;
}
}
}
}
</style>