滴答拍摄影项目

news2024/11/24 14:54:34

@TOC

springboot0796滴答拍摄影项目

第1章 绪论

1.1背景及意义

随着社会的快速发展,计算机的影响是全面且深入的。人们生活水平的不断提高,日常生活中人们对拍摄影方面的要求也在不断提高,旅游的人数更是不断增加,使得拍摄影项目的开发成为必需而且紧迫的事情,通过网络拍摄爱好者对拍摄影项目及时了解信息管理,增加用户的选择,同时也方便对广大用户信息的及时查询、修改以及对用户信息的及时了解。滴答拍摄影项目对用户带来了更多的便利,该系统通过和数据库管理系统软件协作来满足用户的需求。计算机技术在现代管理中的应用,使计算机成为人们应用现代技术的重要工具。能够有效的解决获取信息便捷化、全面化的问题,提高效率。

1.2 研究概况

随着国内经济形势的不断发展,中国互联网进入了一个难得的高峰发展时期,这使得中外资本家纷纷转向互联网市场。 然而,许多管理领域的不合理结构,人员不足以及管理需求的增加使得更多的人具备了互联网管理的意识。

在当今高度发达的信息中,信息管理改革已成为一种更加广泛和全面的趋势。 “滴答拍摄影项目”是基于Mysql数据库,在SpringBoot框架的基础上实现的。为确保中国经济的持续发展,信息时代日益更新,蓬勃发展。同时,随着信息社会的快速发展,拍摄影面临着越来越多的信息,因此很难获得他们对高效信息的需求,如何使用方便快捷的方式使查询者在广阔的海洋信息中查询,存储,管理和共享信息方面有效,对我们的工作和生活具有重要的现实意义。因此,国内外学术界对此进行了深入而广泛的研究,一个新的研究领域——滴答拍摄影项目诞生了。

1.3 研究的内容

本选题主要以服务管理方式,可进行预约、收费等信息,实现管理员功能:首页、个人中心、用户管理、摄影师管理、摄影作品管理、摄影服务管理、收费类型管理、预约信息管理、摄影论坛、系统管理等信息管理功能。摄影师功能:首页、个人中心、摄影作品管理、摄影服务管理、收费类型管理、预约信息管理。前台首页功能:首页、摄影作品、摄影服务、摄影论坛、系统公告、个人中心、后台管理、在线客服。用户功能:首页、个人中心、摄影作品管理、摄影服务管理、预约信息管理、系统管理。

  1. 相关技术

2.1 JAVA简介

Java主要采用CORBA技术和安全模型,可以在互联网应用的数据保护。它还提供了对EJB(Enterprise JavaBeans)的全面支持,java servlet API,java(java server pages),和XML技术。多进步。例如,当我在微软Word中写这篇文章时,我还打开了一个MP3播放器来播放音乐。偶尔,我也会编辑Word,让我的机器执行打印作业,我也喜欢通过IE。对我来说,这些操作是同时执行的,我不需要等待一首歌来完成我的论文编辑。似乎他们都在我的机器上同时为我工作。事实是,对于一个CPU,它只能在某个时间点执行一个程序。CPU在这些程序之间不断地“跳跃”。那么为什么我们看不到任何破坏呢?这是因为,与我们的感情相比,它的速度太快了。因此,尽管我们看到一些同步操作,实际上对于计算机来说,它只能在某个时间点执行一个程序,除非您的计算机是多CPU的。

Java是一种计算机编程语言,具有封装、继承和多态性三个主要特性,广泛应用于企业Web应用程序开发和移动应用程序开发。

Java语言和一般编译器以及直译的区别在于,Java首先将源代码转换为字节码,然后将其转换为JVM的可执行文件,JVM可以在各种不同的JVM上运行。因此,实现了它的跨平台特性。虽然这使得Java在早期非常缓慢,但是随着Java的开发,它已经得到了改进。

2.2 MyEclipse开发环境

MyEclipse支持广泛、兼容性高并且功能强大,是一个Eclipse 插件集合,普遍适应于JAVA和J2EE的系统开发,支持 JDBC,Hibernate,AJAX,Struts,Java Servlet,Spring,EJB3等市面上存在的几乎所有数据库链接工具和主流Eclipse产品 开发工具。

MyEclipse在业内是所熟知的开发工具,该平台在开发的过程中运用的就是该工具。MyEclipse又被称之为企业级的工作平台,它是以Eclipse IDE为基础的。MyEclipse可以帮助我们进行数据库的研发和J2EE的使用,除此之外,还可以提高系统的运营能力,这突出表现在服务器的整合过程中。MyEclipse的功能相当完备,能够为J2EE的集成提供必要的环境支持,从而完成编码、测试、调试及发布等功能。它可以支持java,HTML,SQL,Javascript,Struts, CSS等。

2.3 Tomcat服务器

Tomcat属于一种轻型的服务器,所以说在中小企业中并不具有普适性。但是当程序员需要开发或调试java 程序时,则通常会将该服务器作为首选。对于一个仅具有计算机基础知识的人来说,计算机系统具有一个好的Apache服务器,可以很好的对HTML 页面进行访问。Tomcat 虽然是Apache的扩展,但是它们都是可以独立运行的,二者是不互相干扰的。当配置正确的时候,Apache服务器为HTML 页面的运行提供技术支持,Tomcat 的任务则是运行Servle和java 页面。Tomca也具有一定的HTML页面处理功能。

2.4 MySQL数据库

Mysql的语言是非结构化的,用户可以在数据上进行工作。MySQL因为其速度、可靠性和适应性而备受关注。大多数人都认为在不需要事务化处理的情况下,MySQL是管理内容最好的选择。并且因为Mysql的语言和结构比较简单,但是功能和存储信息量很强大,所以得到了普遍的应用。

Mysql数据库在编程过程中的作用是很广泛的,为用户进行数据查询带来了方便。Mysql数据库的应用因其灵活性强,功能强大,所以在实现某功能时只需要一小段代码,而不像其他程序需要编写大段代码。总体来说,Mysql数据库的语言相对要简洁很多。

数据流程分析主要就是数据存储的储藏室,它是在计算机上进行的,而不是现实中的储藏室。数据的存放是按固定格式,而不是无序的,其定义就是:长期有固定格式,可以共享的存储在计算机存储器上。数据库管理主要是数据存储、修改和增加以及数据表的建立。为了保证系统数据的正常运行,一些有能力的处理者可以进行管理而不需要专业的人来处理。数据表的建立,可以对数据表中的数据进行调整,数据的重新组合及重新构造,保证数据的安全性。介于数据库的功能强大等特点,本系统的开发主要应用了Mysql进行对数据的管理。

2.5 Spring Boot框架

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章 系统分析

3.1 需求分析

滴答拍摄影项目主要是为了提高工作人员的工作效率和更方便快捷的满足用户,更好存储所有数据信息及快速方便的检索功能,对系统的各个模块是通过许多今天的发达系统做出合理的分析来确定考虑用户的可操作性,遵循开发的系统优化的原则,经过全面的调查和研究。

系统所要实现的功能分析,对于现在网络方便的管理,系统要实现用户可以直接在平台上进行查看所有数据信息,根据需求可以进行在线添加,删除或修改滴答拍摄影信息,这样既能节省时间,不用再像传统的方式耽误时间,真的很难去满足用户的各种需求。所以滴答拍摄影的开发不仅能满足用户的需求,还能减少原有不必要的工作量,大大提高了管理员的工作效率。

3.2 系统可行性分析

3.2.1技术可行性:技术背景

本企业网站在Windows操作系统中进行开发,并且目前PC机的性能已经可以胜任普通网站的web服务器。系统开发所使用的技术也都是自身所具有的,也是当下广泛应用的技术之一。

系统的开发环境和配置都是可以自行安装的,系统使用java开发工具,使用比较成熟的Mysql数据库进行对系统前台及后台的数据交互,根据技术语言对数据库,结合需求进行修改维护,可以使得网站运行更具有稳定性和安全性,从而完成实现网站的开发。

(1)硬件可行性分析

滴答拍摄影项目及信息分析的设计对于所使用的计算机没有什么硬性的要求,计算机只要可以正常的使用进行代码的编写及页面设计就可行,主要是对于服务器有些要求,对于平台搭建完成要上传的服务器是有一定的要求的,服务器必须选择安全性比较高的,然后就是在打开网站必须顺畅,不能停顿太长时间;性价比高;安全性高。

(2)软件可行性分析

开发整个系统使用的是云计算,流量的可扩展性和基于流量的智能调整云计算的优点就是流量的可扩展性和基于流量的智能调整,保障系统的安全和数据信息的及时备份。

因此,我们从两个方面进行了可行性研究,可以看出系统的开发没有问题。

3.2.2经济可行性

在滴答拍摄影项目开发之前所做的市场调研及其他相关的管理系统,都是没有任何费用的,都是通过开发者自己的努力,所有工作都是自己亲力亲为,在碰到自己比较难以解决的问题,大多是通过同学和指导老师的帮助进行相关信息的解决,所以对于滴答拍摄影项目的开发在经济上是完全可行的,没有任何费用支出的。

使用比较成熟的技术,系统是基于java的开发,采用Mysql数据库。所以系统在开发人力、财力要求不高,具有经济可行性。

3.2.3操作可行性:

可操作性主要是对滴答拍摄影项目设计完成后,用户的使用体验度,以及管理员可以通过系统随时管理相关的数据信息,并且对于管理员、用户、摄影师三个用户角色,都可以简单明了的进入到自己的系统界面,通过界面导航菜单可以简单明了地操作功能模块,方便用户信息的操作需求和摄影信息管理数据信息,对于系统的操作,不需要专业人员都可以直接进行功能模块的操作管理,所以在系统的可操作性是完全可以的。本系统的操作过程使用的也是界面窗口进行登录,所以操作人员只要会简单的电脑操作就完全可以的。

3.3 项目设计目标与原则

1、关于滴答拍摄影项目的基本要求

(1)管理员功能要求:可以管理首页、个人中心、用户管理、摄影师管理、摄影作品管理、摄影服务管理、收费类型管理、预约信息管理、摄影论坛、系统管理等功能模块。

(2)用户功能模块:首页、个人中心、摄影作品管理、摄影服务管理、预约信息管理、系统管理。

(3)摄影师功能模块:首页、个人中心、摄影作品管理、摄影服务管理、收费类型管理、预约信息管理。

(4)性能:在不同操作系统上均能无差错实现在不同类型的用户登入相应界面后能不出差错、方便地进行预期操作。

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

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

2、开发目标

滴答拍摄影项目的主要开发目标如下:

(1)实现管理系统信息关系的系统化、规范化和自动化;

(2)减少维护人员的工作量以及实现用户对信息的控制和管理;

(3)方便查询信息及管理信息等;

(4)通过网络操作,提高改善处理问题和操作人员工作的效率;

(5)考虑到用户多样性特点,要求界面和操作简便易懂。

3、设计原则

本滴答拍摄影项目采用java技术,Mysql数据库开发,充分保证了系统稳定性、完整性。

滴答拍摄影项目的设计与实现的设计思想如下:

  1. 操作简单方便、系统界面安全良、简单明了的页面布局、方便查询滴答拍摄影项目相关信息。

2、即时可见:对滴答拍摄影项目信息的处理将立马在对应地点可以查询到,从而实现“即时发布、即时见效”的系统功能。

3.4系统流程分析

3.4.1操作流程

系统登录流程图,如图所示:

图3-1登录流程图

3.4.2添加信息流程

添加信息流程图,如图所示:

图3-2添加信息流程图

3.4.3删除信息流程

删除信息流程图,如图所示:

图3-3删除信息流程图

第4章 系统设计

4.1 系统体系结构

滴答拍摄影项目的结构图4-1所示:

服务器和程序

用户

管理员

摄影师 师

图4-1 系统结构

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

滴答拍摄影项目

用户登录

密码正确

管理员界面

用户界面

用户界面

图4-2 登录结构图

滴答拍摄影项目结构图,如图4-3所示。

图4-3 滴答拍摄影项目结构图

4.2开发流程设计

系统流程的分析是通过调查系统所涉及问题的识别、可行性、可操作性、系统分析处理能力等具体环节来调节、整理系统的设计方案以确保系统能达到理想的状态。这些操作都要从注册、登录处着眼进行一系列的流程测试保证数据库的完整,从而把控系统所涉及信息管理的安全、保证信息输入、输出正常转换。然后,通过实际操作完成流程图的绘制工作。

滴答拍摄影项目的开发对管理模块和系统使用的数据库进行分析,编写代码,系统测试,如图4-4所示。

图4-4开发系统流程图

4.3 数据库设计原则

学习编程,我们都知道数据库设计是基于需要设计的系统功能,我们需要建立一个数据库关系模型,用于存储数据信息,这样当我们在程序中时,就没有必要为程序页面添加数据,从而提高系统的效率。数据库存储了很多信息,可以说是信息管理系统的核心和基础,数据库还为系统提供了添加、删除、修改和检查等操作模块,使系统能够快速找到自己想要的信息,而不是在程序代码中找到。数据库中信息表的每个部分根据一定的关系精确地组合,排列和组合成数据表。

通过滴答拍摄影项目的功能进行规划分成几个实体信息,实体信息将通过ER图进行说明,本系统的主要实体图如下:

管理员信息属性图如图4-5所示。

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

用户管理:用户名、密码、姓名、性别、手机、邮箱、照片实体属性图如图4-6所示。

图4-6用户信息属性图

摄影师管理:摄影师账号、密码、摄影师姓名、性别、年龄、摄影年限、联系方式、邮箱、照片、代表作品实体属性图如图4-7所示。

图4-7摄影师管理属性图

4.4 数据表

数据库表是数据库重要的组成部分,其实数据库只是一个框架,数据库表才是数据库的本质,本系统数据库表如下:

allusers表:

序号字段名称字段类型大小允许为空最大长度备注
1idInt410
2username150255
3pwd150255
4cx150255
5addtimeDateTime819

sheyingfuwu表:

序号字段名称字段类型大小允许为空最大长度备注
1idInt410
2addtime150255
3sheyingshizhanghao150255
4sheyingshixingmingDateTime8255
5xingbie150255
6nianlingDateTime8255
7sheyingnianxian150255
8lianxifangshiDateTime8255
9youxiang150255
10zhaopianDateTime8255
11daibiaozuopin150255
12shoufeileixingDateTime8255
13shoufeijiage150

sheyingshi表:

序号字段名称字段类型大小允许为空最大长度备注
1idInt410
2addtime150255
3sheyingshizhanghao150255
4mimaDateTime8255
5sheyingshixingming150255
6xingbieDateTime8255
7nianling150255
8sheyingnianxianDateTime8255
9lianxifangshi150255
10youxiangDateTime8255
11zhaopian150255
12daibiaozuopinDateTime8255

sheyingzuopin表:

序号字段名称字段类型大小允许为空最大长度备注
1idInt410
2addtime150255
4zuopinbiaoti150255
5sheyingshizhanghao150255
6sheyingshixingmingDateTime8
7zuopinyilan8
8zuopinjieshaoDateTime8255

yonghu表:

序号字段名称字段类型大小允许为空最大长度备注
1idInt410
2addtime150255
4yonghuming150255
5mima150255
6xingmingDateTime8
7xingbieDateTime
8shouji
9youxiangDateTime8
10zhaopian150

第5章 系统详细设计

5.1管理员功能模块

滴答拍摄影项目,在管理员登录系统的首页可以通过点击登录,可以填写账号、密码、等信息进行登录操作等信息,如图5-1所示。

图5-1管理员登录首页界面图

用户管理,通过内容列表可以获取用户名、密码、姓名、性别、手机、邮箱、照片等信息可进行详情、修改、删除或查看操作,如图5-2所示。

图5-2用户管理界面图

摄影作品管理,通过内容列表可以获取作品标题、摄影师账号、摄影师姓名、作品一览等信息可进行详情、修改、删除或查看操作,如图5-3所示。

图5-3摄影作品管理界面图

摄影服务品管理,通过内容列表获取摄影服务信息可进行详情、修改、删除或查看操作。如图5-4所示

图5-4摄影服务品管理界面图

预约信息管理,管理员通过内容列表可以用户预约详细信息可进行详情、修改、删除或查看等操作,如图5-5所示。

图5-5预约信息管理界面图

摄影论坛管理,通过论坛内容查看用户提交的信息可进行查看详情、修改、删除或查看等操作,如图5-6所示。

图5-6摄影论坛界面图

系统管理:管理员通过系统管理页面查看轮播图/系统公告、在线客服等进行上传图片、发布公告、在线客服进行添加、删除、修改以及查看并对整个系统进行维护等操作。,如图5-7所示。

图5-7系统管理界面图

5.2前台功能模块

用户注册,通过填写用户名、密码、姓名、性别、手机、邮箱等信息,输入完成后选择注册信息无误后选择登陆,即可进入滴答拍摄影项目,如图5-8所示。

图5-8用户注册、登陆界面图

前台首页浏览,通过内容列表可以获取网站首页、摄影作品、摄影服务、摄影论坛、系统公告、个人中心、后台管理、在线客服等信息操作内容,如图5-9所示。

图5-9用户前台浏览管理界面图

个人中心,通过内容列表可以获取用户名、密码、姓名、性别、手机、邮箱等信息可进行增、删、改或查看等操作,如图5-10所示。

图5-10个人中心界面图

摄影作品,通过页面列表可以查看作品,可进行评论、点赞查看等操作,如图5-11所示。

图5-11摄影作品界面图

摄影论坛,通过页面列表可以发布帖子,查看等操作,如图5-12所示。

图5-12摄影论坛界面图

5.3用户功能模块

首页,在首页页面通过查看首页、个人中心、摄影作品管理、摄影服务管理、预约信息管理、系统管理等信息,如图5-13所示。

图5-13首页界面图

预约信息管理,用户可以查看预约进行对摄影师进行预约、支付查看审核等操作。效果如下图所示5-14所示

图5-14预约信息管理界面图

5.4摄影师功能模块

注册、登陆,在注册页面通过填写摄影师账号、密码、摄影师姓名、性别、年龄、摄影年限、联系方式、邮箱等信息进行注册,信息无误进行登陆如图5-15所示。

图5-15注册、登录界面图

个人信息,用户对个人信息进行填写摄影师账号、密码、摄影师姓名、性别、年龄、摄影年限、联系方式、邮箱、照片、代表作品,并进行添加、修改、删除以及查看个人信息等操作。效果如下图所示5-16所示

图5-16个人信息界面图

摄影作品管理,在摄摄影作品可以通过填写作品标题、摄影师账号、摄影师姓名、作品一览内容并进行添加以及查看。效果如下图所示5-17所示

图5-17摄影作品界面图

摄影服务管理,在摄影服务页面可以对服务内容并进行添加、修改以及查看。效果如下图所示5-18所示

图5-18摄影服务界面图

收费类型管理,在收费类型页面可以通过填写收费类型项目内容并进行添加以及查看。效果如下图所示5-19所示

图5-19收费类型界面图

SheyingshiController.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.SheyingshiEntity;
import com.entity.view.SheyingshiView;

import com.service.SheyingshiService;
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-02-26 10:53:29
 */
@RestController
@RequestMapping("/sheyingshi")
public class SheyingshiController {
    @Autowired
    private SheyingshiService sheyingshiService;
    
	@Autowired
	private TokenService tokenService;
	
	/**
	 * 登录
	 */
	@IgnoreAuth
	@RequestMapping(value = "/login")
	public R login(String username, String password, String captcha, HttpServletRequest request) {
		SheyingshiEntity user = sheyingshiService.selectOne(new EntityWrapper<SheyingshiEntity>().eq("sheyingshizhanghao", username));
		if(user==null || !user.getMima().equals(password)) {
			return R.error("账号或密码不正确");
		}
		
		String token = tokenService.generateToken(user.getId(), username,"sheyingshi",  "摄影师" );
		return R.ok().put("token", token);
	}
	
	/**
     * 注册
     */
	@IgnoreAuth
    @RequestMapping("/register")
    public R register(@RequestBody SheyingshiEntity sheyingshi){
    	//ValidatorUtils.validateEntity(sheyingshi);
    	SheyingshiEntity user = sheyingshiService.selectOne(new EntityWrapper<SheyingshiEntity>().eq("sheyingshizhanghao", sheyingshi.getSheyingshizhanghao()));
		if(user!=null) {
			return R.error("注册用户已存在");
		}
		Long uId = new Date().getTime();
		sheyingshi.setId(uId);
        sheyingshiService.insert(sheyingshi);
        return R.ok();
    }
	
	/**
	 * 退出
	 */
	@RequestMapping("/logout")
	public R logout(HttpServletRequest request) {
		request.getSession().invalidate();
		return R.ok("退出成功");
	}
	
	/**
     * 获取用户的session用户信息
     */
    @RequestMapping("/session")
    public R getCurrUser(HttpServletRequest request){
    	Long id = (Long)request.getSession().getAttribute("userId");
        SheyingshiEntity user = sheyingshiService.selectById(id);
        return R.ok().put("data", user);
    }
    
    /**
     * 密码重置
     */
    @IgnoreAuth
	@RequestMapping(value = "/resetPass")
    public R resetPass(String username, HttpServletRequest request){
    	SheyingshiEntity user = sheyingshiService.selectOne(new EntityWrapper<SheyingshiEntity>().eq("sheyingshizhanghao", username));
    	if(user==null) {
    		return R.error("账号不存在");
    	}
        user.setMima("123456");
        sheyingshiService.updateById(user);
        return R.ok("密码已重置为:123456");
    }


    /**
     * 后端列表
     */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params,SheyingshiEntity sheyingshi, HttpServletRequest request){
        EntityWrapper<SheyingshiEntity> ew = new EntityWrapper<SheyingshiEntity>();
		PageUtils page = sheyingshiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, sheyingshi), params), params));

        return R.ok().put("data", page);
    }
    
    /**
     * 前端列表
     */
    @RequestMapping("/list")
    public R list(@RequestParam Map<String, Object> params,SheyingshiEntity sheyingshi, HttpServletRequest request){
        EntityWrapper<SheyingshiEntity> ew = new EntityWrapper<SheyingshiEntity>();
		PageUtils page = sheyingshiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, sheyingshi), params), params));
        return R.ok().put("data", page);
    }

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

	 /**
     * 查询
     */
    @RequestMapping("/query")
    public R query(SheyingshiEntity sheyingshi){
        EntityWrapper< SheyingshiEntity> ew = new EntityWrapper< SheyingshiEntity>();
 		ew.allEq(MPUtil.allEQMapPre( sheyingshi, "sheyingshi")); 
		SheyingshiView sheyingshiView =  sheyingshiService.selectView(ew);
		return R.ok("查询摄影师成功").put("data", sheyingshiView);
    }
	
    /**
     * 后端详情
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") Long id){
        SheyingshiEntity sheyingshi = sheyingshiService.selectById(id);
        return R.ok().put("data", sheyingshi);
    }

    /**
     * 前端详情
     */
    @RequestMapping("/detail/{id}")
    public R detail(@PathVariable("id") Long id){
        SheyingshiEntity sheyingshi = sheyingshiService.selectById(id);
        return R.ok().put("data", sheyingshi);
    }
    



    /**
     * 后端保存
     */
    @RequestMapping("/save")
    public R save(@RequestBody SheyingshiEntity sheyingshi, HttpServletRequest request){
    	sheyingshi.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(sheyingshi);
    	SheyingshiEntity user = sheyingshiService.selectOne(new EntityWrapper<SheyingshiEntity>().eq("sheyingshizhanghao", sheyingshi.getSheyingshizhanghao()));
		if(user!=null) {
			return R.error("用户已存在");
		}
		sheyingshi.setId(new Date().getTime());
        sheyingshiService.insert(sheyingshi);
        return R.ok();
    }
    
    /**
     * 前端保存
     */
    @RequestMapping("/add")
    public R add(@RequestBody SheyingshiEntity sheyingshi, HttpServletRequest request){
    	sheyingshi.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(sheyingshi);
    	SheyingshiEntity user = sheyingshiService.selectOne(new EntityWrapper<SheyingshiEntity>().eq("sheyingshizhanghao", sheyingshi.getSheyingshizhanghao()));
		if(user!=null) {
			return R.error("用户已存在");
		}
		sheyingshi.setId(new Date().getTime());
        sheyingshiService.insert(sheyingshi);
        return R.ok();
    }

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

    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids){
        sheyingshiService.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<SheyingshiEntity> wrapper = new EntityWrapper<SheyingshiEntity>();
		if(map.get("remindstart")!=null) {
			wrapper.ge(columnName, map.get("remindstart"));
		}
		if(map.get("remindend")!=null) {
			wrapper.le(columnName, map.get("remindend"));
		}


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


}

InterceptorConfig.java
package com.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;

import com.interceptor.AuthorizationInterceptor;

@Configuration
public class InterceptorConfig extends WebMvcConfigurationSupport{
	
	@Bean
    public AuthorizationInterceptor getAuthorizationInterceptor() {
        return new AuthorizationInterceptor();
    }
	
	@Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(getAuthorizationInterceptor()).addPathPatterns("/**").excludePathPatterns("/static/**");
        super.addInterceptors(registry);
	}
	
	/**
	 * springboot 2.0配置WebMvcConfigurationSupport之后,会导致默认配置被覆盖,要访问静态资源需要重写addResourceHandlers方法
	 */
	@Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
		registry.addResourceHandler("/**")
        .addResourceLocations("classpath:/resources/")
        .addResourceLocations("classpath:/static/")
        .addResourceLocations("classpath:/admin/")
        .addResourceLocations("classpath:/front/")
        .addResourceLocations("classpath:/public/");
		super.addResourceHandlers(registry);
    }
}

ChatServiceImpl.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.ChatDao;
import com.entity.ChatEntity;
import com.service.ChatService;
import com.entity.vo.ChatVO;
import com.entity.view.ChatView;

@Service("chatService")
public class ChatServiceImpl extends ServiceImpl<ChatDao, ChatEntity> implements ChatService {
	
	
    @Override
    public PageUtils queryPage(Map<String, Object> params) {
        Page<ChatEntity> page = this.selectPage(
                new Query<ChatEntity>(params).getPage(),
                new EntityWrapper<ChatEntity>()
        );
        return new PageUtils(page);
    }
    
    @Override
	public PageUtils queryPage(Map<String, Object> params, Wrapper<ChatEntity> wrapper) {
		  Page<ChatView> page =new Query<ChatView>(params).getPage();
	        page.setRecords(baseMapper.selectListView(page,wrapper));
	    	PageUtils pageUtil = new PageUtils(page);
	    	return pageUtil;
 	}
    
    @Override
	public List<ChatVO> selectListVO(Wrapper<ChatEntity> wrapper) {
 		return baseMapper.selectListVO(wrapper);
	}
	
	@Override
	public ChatVO selectVO(Wrapper<ChatEntity> wrapper) {
 		return baseMapper.selectVO(wrapper);
	}
	
	@Override
	public List<ChatView> selectListView(Wrapper<ChatEntity> wrapper) {
		return baseMapper.selectListView(wrapper);
	}

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

}

const menu = {
    list() {
        return [{"backMenu":[{"child":[{"buttons":["新增","查看","修改","删除"],"menu":"用户","menuJump":"列表","tableName":"yonghu"}],"menu":"用户管理"},{"child":[{"buttons":["新增","查看","修改","删除"],"menu":"摄影师","menuJump":"列表","tableName":"sheyingshi"}],"menu":"摄影师管理"},{"child":[{"buttons":["查看","修改","删除","查看评论"],"menu":"摄影作品","menuJump":"列表","tableName":"sheyingzuopin"}],"menu":"摄影作品管理"},{"child":[{"buttons":["查看","修改","删除","查看评论"],"menu":"摄影服务","menuJump":"列表","tableName":"sheyingfuwu"}],"menu":"摄影服务管理"},{"child":[{"buttons":["查看","修改","删除","新增"],"menu":"收费类型","menuJump":"列表","tableName":"shoufeileixing"}],"menu":"收费类型管理"},{"child":[{"buttons":["查看","删除","修改"],"menu":"预约信息","menuJump":"列表","tableName":"yuyuexinxi"}],"menu":"预约信息管理"},{"child":[{"buttons":["新增","查看","修改","删除"],"menu":"摄影论坛","tableName":"forum"}],"menu":"摄影论坛"},{"child":[{"buttons":["新增","查看","修改","删除"],"menu":"轮播图管理","tableName":"config"},{"buttons":["新增","查看","修改","删除"],"menu":"系统公告","tableName":"news"},{"buttons":["查看","修改","删除"],"menu":"在线客服","tableName":"chat"}],"menu":"系统管理"}],"frontMenu":[{"child":[{"buttons":["查看","查看评论"],"menu":"摄影作品列表","menuJump":"列表","tableName":"sheyingzuopin"}],"menu":"摄影作品模块"},{"child":[{"buttons":["查看","查看评论","预约"],"menu":"摄影服务列表","menuJump":"列表","tableName":"sheyingfuwu"}],"menu":"摄影服务模块"}],"hasBackLogin":"是","hasBackRegister":"否","hasFrontLogin":"否","hasFrontRegister":"否","roleName":"管理员","tableName":"users"},{"backMenu":[{"child":[{"buttons":["查看","查看评论"],"menu":"摄影作品","menuJump":"列表","tableName":"sheyingzuopin"}],"menu":"摄影作品管理"},{"child":[{"buttons":["查看","查看评论","预约"],"menu":"摄影服务","menuJump":"列表","tableName":"sheyingfuwu"}],"menu":"摄影服务管理"},{"child":[{"buttons":["查看","支付"],"menu":"预约信息","menuJump":"列表","tableName":"yuyuexinxi"}],"menu":"预约信息管理"},{"child":[{"buttons":["查看"],"menu":"在线客服","tableName":"chat"}],"menu":"系统管理"}],"frontMenu":[{"child":[{"buttons":["查看","查看评论"],"menu":"摄影作品列表","menuJump":"列表","tableName":"sheyingzuopin"}],"menu":"摄影作品模块"},{"child":[{"buttons":["查看","查看评论","预约"],"menu":"摄影服务列表","menuJump":"列表","tableName":"sheyingfuwu"}],"menu":"摄影服务模块"}],"hasBackLogin":"是","hasBackRegister":"是","hasFrontLogin":"是","hasFrontRegister":"是","roleName":"用户","tableName":"yonghu"},{"backMenu":[{"child":[{"buttons":["新增","查看","修改","删除","查看评论"],"menu":"摄影作品","menuJump":"列表","tableName":"sheyingzuopin"}],"menu":"摄影作品管理"},{"child":[{"buttons":["查看","修改","删除","查看评论","新增"],"menu":"摄影服务","menuJump":"列表","tableName":"sheyingfuwu"}],"menu":"摄影服务管理"},{"child":[{"buttons":["新增","查看","修改","删除"],"menu":"收费类型","menuJump":"列表","tableName":"shoufeileixing"}],"menu":"收费类型管理"},{"child":[{"buttons":["查看","修改","删除","审核"],"menu":"预约信息","menuJump":"列表","tableName":"yuyuexinxi"}],"menu":"预约信息管理"}],"frontMenu":[{"child":[{"buttons":["查看","查看评论"],"menu":"摄影作品列表","menuJump":"列表","tableName":"sheyingzuopin"}],"menu":"摄影作品模块"},{"child":[{"buttons":["查看","查看评论","预约"],"menu":"摄影服务列表","menuJump":"列表","tableName":"sheyingfuwu"}],"menu":"摄影服务模块"}],"hasBackLogin":"是","hasBackRegister":"是","hasFrontLogin":"是","hasFrontRegister":"是","roleName":"摄影师","tableName":"sheyingshi"}]
    }
}
export default menu;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2063894.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

FPGA开发——IIC协议介绍

简介 其实关于IIC通信协议的相关原理的相关理论我在最开始的文章当中进行过讲解&#xff0c;但是没有详细的去进行过说明&#xff0c;在今天的这篇文章中我们就来详细说明一下IIC协议的相关理论。 一、IIC 总线组成 1、定义介绍 采用串行总线可以简化系统硬件结构、减小系统…

科技在环境保护中的作用

面对日益严峻的环境问题&#xff0c;‌科技在环境保护中发挥着越来越重要的作用。‌从清洁能源的开发和应用&#xff0c;‌到环保技术的不断进步&#xff0c;‌再到智能环保监测系统的建立&#xff0c;‌科技正以前所未有的力量推动着环境保护事业的发展。‌ 清洁能源技术的开…

揭秘!移动安全管理系统是什么?有什么功能?(从小白到精通一文揭晓!)

在2024年&#xff0c;移动终端管控软件在企业和组织中的应用日益广泛。 移动安全管理系统不仅提高了管理效率&#xff0c;还增强了数据安全性和移动办公的便捷性。 以下是六款值得推荐的移动终端管控软件&#xff1a; 1. 安企神 特点&#xff1a;作为行业领头羊&#xff0c;…

【PHP入门教程】PHPStudy环境搭建+HelloWorld运行

文章目录 PHP 的历史PHP 的用途PHP 的特点和优势PHP 环境搭建环境准备安装window 安装CentOS / Ubuntu / Debian 安装 第一个Hello World使用Apache服务运行命令行运行代码 PHP 的历史 PHP&#xff08;Hypertext Preprocessor&#xff09;超文本预处理器是一种开源的通用脚本语…

m3u8转mp4,3款软件让你快速转换!

在这个数字化时代&#xff0c;视频已成为我们生活中不可或缺的一部分。无论是学习资料、娱乐影片还是工作演示&#xff0c;视频文件总是以不同的格式存在。其中&#xff0c;M3U8和MP4作为两种常见的视频格式&#xff0c;各有其应用场景。然而&#xff0c;有时我们需要将M3U8格式…

如何在算家云搭建模型Linly-Talker(数字人文本配音)

一、模型介绍 Linly-Talker 是一款集成了多种人工智能技术的数字人对话系统&#xff0c;集成了各种技术,例如 Whisper、Linly、微软语音服务和 SadTalker 会说话的生成系统。该系统部署在 Gradio 上&#xff0c;用户可通过上传图像与 AI 助手进行互动&#xff0c;可以根据自己…

UDP+TCP

一、UDP协议 1.recvfrom:recvform(int sockfd,void *buf,size_t len,int flags,struct sockaddr *src_addr,socklen_t *addrlen); 参数&#xff1a;socket的fd; 保存数据的空间地址 &#xff1b; 空间大小&#xff1b; 默认接收方式&#xff08;默认阻塞&#xf…

【蓝桥杯集训100题】scratch游泳时长 蓝桥杯scratch比赛专项预测编程题 集训模拟练习题第27题

目录 scratch游泳时长 一、题目要求 编程实现 二、案例分析 1、角色分析 2、背景分析 3、前期准备 三、解题思路 1、思路分析 2、详细过程 四、程序编写 五、考点分析 六、推荐资料 1、入门基础 2、蓝桥杯比赛 3、考级资料 4、视频课程 5、python资料 scratc…

5 分钟 Stable Diffusion 本地安装指南

一、Stable Diffusion 简介 Stable Diffusion 是一款非常强大的基于深度学习的 AI 图像生成技术。它由众多研究团队和开发者共同努力而成&#xff0c;其中包括德国慕尼黑大学和总部位于纽约的 RunwayML 公司的国际研究团队。 Stable Diffusion 的工作原理基于扩散模型。简单来…

TCP和UDP编程的学习

UDP编程特点&#xff1a;c/s模型 不可靠 &#xff1b; 无链接 &#xff1b;数据报形式&#xff08;效率高&#xff09;&#xff1b; TCP编程特点&#xff1a; 面向链接&#xff1b; 可靠传输&#xff1b;&#xff08;保证数据准确可靠&#xff09;&#xff1b; 面向字节流&a…

ES6解构赋值详解;全面掌握:JavaScript解构赋值的终极指南

目录 全面掌握&#xff1a;JavaScript解构赋值的终极指南 一、数组解构赋值 1、基本用法 2、跳过元素 3、剩余元素 4、默认值 二、对象解构赋值 1、基本用法 2、变量重命名 3、默认值 4、嵌套解构 三、复杂的嵌套结构解构 四、函数参数解构赋值 1、对象解构作为函…

wordrpess心得

基本心得 多语言切换方式&#xff1a; 使用en.xxxx和jp.xxx多域名实现&#xff0c;配合宝塔面板管理 举例&#xff1a;切换按钮 <div class"language-switcher"><a class"language-button" href"https://xxx">JA</a> <a c…

【C++ Primer Plus习题】2.2

问题: 解答: #include <iostream> using namespace std;#define LONG_TO_MA 220int main() {double distance 0;cout << "请输入距离(单位为long):";while (true){cin >> distance;if (cin.fail()){cout << "输入有误!请输入数字:&qu…

一键过原创工具,轻松搬运文章秒变原创

在当今信息爆炸的时代&#xff0c;内容创作的重要性不言而喻。对于追求效率的创作者来说&#xff0c;一键过原创工具无疑是一股清新的风潮&#xff0c;它以其独特的功能&#xff0c;让文章搬运变得轻松&#xff0c;瞬间转化为原创佳作。一键过原创工具的诞生&#xff0c;不仅代…

【OpenCV】 中使用 Lucas-Kanade 光流进行对象跟踪和路径映射

文章目录 一、说明二、什么是Lucas-Kanade 方法三、Lucas-Kanade 原理四、代码实现4.1 第 1 步&#xff1a;用户在第一帧绘制一个矩形4.2 第 2 步&#xff1a;从图像中提取关键点4.3 第 3 步&#xff1a;跟踪每一帧的关键点 一、说明 本文针对基于光流法的目标追踪进行叙述&am…

Godot利用刚体让3d物体动起来

效果如图 有人说你怎么能控制刚体不是物理引擎控制吗&#xff1f;哈哈&#xff0c;非也&#xff0c;非也&#xff0c;我控制不是刚体而是相机&#xff0c;记住刚体的运动状态是不受玩家控制的&#xff0c;你最多给一个力&#xff0c;但是这个力怎么让物体运动是由物理引擎控制。…

Vivado生成bitstream时报[DRC CFGBVS-1]警告的问题

目录 警告信息解决方法 警告信息 [DRC CFGBVS-1] Missing CFGBVS and CONFIG_VOLTAGE Design Properties: Neither the CFGBVS nor CONFIG_VOLTAGE voltage property is set in the current_design. Configuration bank voltage select (CFGBVS) must be set to VCCO or GND, …

6.Linux_服务器搭建

TFTP服务器 1、概述 什么是TFTP服务器&#xff1a; TFTP&#xff08;Trivial File Transfer Protocol&#xff09;即简单文件传输协议是TCP/IP协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议&#xff0c;提供不复杂、开销不大的文件传输服务。端口号为69 介…

垃圾分类网站

TOC springboot0769垃圾分类网站 绪论 1.1研究背景 随着网络不断的普及发展&#xff0c;垃圾分类网站依靠网络技术的支持得到了快速的发展&#xff0c;首先要从用户的实际需求出发&#xff0c;通过了解用户的需求开发出具有针对性的垃圾分类、垃圾图谱等功能&#xff0c;利…

集成测试怎么做?

任何产品想要长期保持高质量运行&#xff0c;集成测试正是实现这一目标必不可少的工具。 本文重点介绍集成测试实现的流程&#xff0c;而非测试工具本身。我们的目的是聚焦于创建测试过程中你可能遇到的问题&#xff0c;以便你能自主地推进工作。 缺陷的成本 细节决定成败&a…