@TOC
springboot426水产养殖系统--论文pf
第一章 课题背景及研究内容
1.1 课题背景
信息数据从传统到当代,是一直在变革当中,突如其来的互联网让传统的信息管理看到了革命性的曙光,因为传统信息管理从时效性,还是安全性,还是可操作性等各个方面来讲,遇到了互联网时代才发现能补上自古以来的短板,有效的提升管理的效率和业务水平。传统的管理模式,时间越久管理的内容越多,也需要更多的人来对数据进行整理,并且数据的汇总查询方面效率也是极其的低下,并且数据安全方面永远不会保证安全性能。结合数据内容管理的种种缺点,在互联网时代都可以得到有效的补充。结合先进的互联网技术,开发符合需求的软件,让数据内容管理不管是从录入的及时性,查看的及时性还是汇总分析的及时性,都能让正确率达到最高,管理更加的科学和便捷。本次开发的水产养殖系统实现了字典管理、公告管理、水产资讯管理、水产管理、水产收藏管理、水质管理、饲料管理、饲料使用管理、养殖区域管理、养殖区域收藏管理、养殖区域留言管理、用户管理、管理员管理等功能。系统用到了关系型数据库中王者MySql作为系统的数据库,有效的对数据进行安全的存储,有效的备份,对数据可靠性方面得到了保证。并且程序也具备程序需求的所有功能,使得操作性还是安全性都大大提高,让水产养殖系统更能从理念走到现实,确确实实的让人们提升信息处理效率。
1.2 开发目的和意义
小康时代的到来,使得人们满意度上升,生活各个方面都产生了许多变化,比如办公都有相应软件,很多工作都要求员工会操作计算机,可以说现在的时代基本被软件覆盖得差不多了,软件行业的特征就是大家都在使用软件代替传统手工记载操作,软件的出现让我们的生活还有工作又向前翻了新篇章。水产养殖系统是一个利用软件形式管理水产信息的平台。管理员管理租车信息也不再需要用纸张进行信息记录及查询管理操作,所有的操作都是利用电脑进行办公,用户需要使用密码还有用户名进行系统登录操作,按照系统主页界面的各个功能展示进行相关操作,无论添加或者是删除,拟或是修改查询等操作,时间上不需要太多,短短几分钟就会搞定。况且软件是不限制办公地点以及办公时间的,只要有操作需要,随时随地登录系统就可以完成任务。办公效率提高这个不再是难题。公告租赁店对于租车信息的管理操作早就应该进行变革了,利用软件管理租车信息,节约人力物力成本,这是一个新的租车信息管理的创举。
1.3 论文研究内容
本次开发的水产养殖系统的论文从下面几个部分进行编写:
第一章:本章介绍了程序开发背景和目的意义,罗列出了论文写作内容信息,让我们知道论文编写是如何进展的。
第二章:本章主要讲解了系统开发用到的相关技术方面的知识,比如SSM技术,MySQL数据库知识等内容。帮助人们更好的理解系统技术上面的相关知识。
第三章:文章第3章主要介绍了系统开发的可行性问题,从经济,时间,操作等内容上面进行了大致介绍,确定系统开发确实可行,然后分析了系统的开发流程,确定系统需要具备的大概的功能,保障系统能够稳定使用和运行。
第四章:这个章节主要绘制出了系统功能架构,让我们更直观了解水产养殖系统的功能,对后台数据库表进行了设计,还画出了对应的E-R图。
第五章:这个章节主要介绍系统各个部分功能具体实现的界面效果。让我们了解到各个部分的功能详细情况。
第六章:这个部分主要就是对水产养殖系统进行整体测试,看看程序是否能够达到用户使用要求,程序能否进行验收上交操作。
第二章 相关技术
本次开发水产养殖系统使用的是Vue进行程序开发,水产养殖系统的数据信息选择MySQL数据库进行存放。
2.1 VUE介绍
Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。另一方面,当与现代化的工具链以及各种支持类库结合使用时,Vue 也完全能够为复杂的单页应用提供驱动。
2.2 MySQL数据库
开发的程序面向用户的只是程序的功能界面,让用户操作程序界面的各个功能,那么很多人就会问,用户使用程序功能生成的数据信息放在哪里的?这个就需要涉及到数据库的知识了,一般来说,程序开发通常就会对常用数据存储工具的特点进行分析比对,比如Mysql数据库的特点与优势,Access数据库的特点与优势,Sqlserver数据库的特点与优势等,最终看哪个数据库与需要开发的程序比较匹配,也符合程序功能运行需要的数据存储要求,比如,需要开发商业级别的程序,存储的数据对数据库要求较高,可以选用Oracle,如果只是比较简单的程序,对数据存储没有过多要求,可以选用微软旗下的Access,当开发程序要求数据库占用空间小,并能满足程序数据存储要求时,就可以考虑Oracle公司从瑞典MySQL AB公司在很早之前就收购过一个关系型数据库,它是现在的Mysql数据库。所以水产养殖系统后台数据库使用的是MySQL进行数据库方面的开发工作的,MySQL它是微软开发的一款平台软件,这个软件可以给用户提供高效率的智能数据,并且数据信息还是很可靠,使用它进行数据存储可以满足大众企业管理各种各样的数据信息的需求。MySQL在MySQL版本里面它是最全面的,也是最强大的开发平台, MySQL在许多关键之处都进行了改进的操作,它也增加了很多新特性,这些改进和更新让公司能够对关键应用程序进行高效运行,并且还可以让公司降低发送信息给用户的成本,以及降低数据信息管理的基础设施。因此MySQL在公司以及企业中它的地位是非常高的,ERP还有OA系统,以及公司财务的系统都离不开MySQL,在软件开发非常流行的今天,MySQL也被用来作为网站开发的网站后台数据库,可以说公司使用MySQL进行数据管理不仅节约成本,还可以让公司数据信息的管理效率大大提高,公司数据存放在MySQL平台上,数据信息的安全性也不用担心,因为MySQL他可以给数据库里面的日志还有数据文件以及整个数据库进行加密操作,另外MySQL还提供在线备份功能,这样可以节约存储空间,加快数据备份的速度。总之,选择MySQL进行在线系统的后台数据库开发是很有优势的。这是个不错的软件选择。
第三章 系统分析
3.1可行性分析
可行性分析从时间,经济以及操作和技术上面进行调查和研究,确保合理利用信息资源,避免在进行程序设计过程中因为考虑不周到所带来的困扰,帮助我们更好的进行程序设计。
3.1.1时间可行性
本次进行系统开发,我预留了两个月时间来完成,从系统的需求分析,功能结构设计,功能详细设计以及系统测试等环节,两个月时间是可以完成程序开发操作的,我打算每天早中晚都进行程序的编写操作,这期间也包括查阅各种资料信息,加上同学以及老师的帮助和指点,相信程序开发的时间也会缩短不少。所以时间上是可行的。
3.1.2 经济可行性
水产养殖系统的开发平台是IDEA,数据库选用MySQL数据库,使用的浏览器都是大众浏览器,这些软件是不需要收费就能进行下载安装操作的。在系统开发的硬件选择上面,我使用的是自己的笔记本进行开发操作。因此在进行系统开发时,经济上面无需额外支出。开发出来的程序可以提高办公效率,带来的经济效益比较高,系统开发的投入产出比很可观。
3.1.3 操作可行性
水产养殖系统的界面设计比较简单,界面布局根据用户日常使用习惯进行设计,网站各个功能在导航栏里面清晰可见,网站的数据操作可视化,用户操作网站不需要培训就能上手,只需要跟着网站功能提示进行操作就行。
3.1.4 技术可行性
作为计算机专业学生,在学校期间就学习到许多关于编程方面的知识,像SSM技术,还有MySQL数据库等知识,我对IDEA开发平台以及MySQL数据库的操作也比较熟练,所以技术上面还是有一定把握。
3.1.5 法律可行性
自己本人开发的软件和用到的资料来源都是图书馆以及百度文库和百度网页等渠道,并不涉及违法。在个人毕业设计上面,无论源代码还是论文编写内容不存在抄袭行为。
从上面的经济,操作以及时间上面进行的分析,得出结论就是这次开发的水产养殖系统在开发上面是能够进行的,系统开发出来能创造更大的经济效益,越早开发升值空间越大。
3.2系统流程分析
水产养殖系统的开发也是有对应的流程,开发之前必须要进行用户功能需求的分析,最后根据功能需求进行网站设计还有数据库相关数据的设计工作,此次开发的水产养殖系统开发流程如图3.1所示。
图3.1 程序操作流程图
系统开发完成之后会给用户提供登录入口,在这个界面用户输入的信息会得到验证,通过验证之后才能进去水产养殖系统的访问主界面,系统登录执行流程如下:
图3.2 系统执行流程图
3.3系统功能需求分析
系统的开发离不开前期的需求分析,这个阶段就是让程序员知道自己该做什么事情,在进行需求分析的时候,着重点就是用户对系统的功能要求,这个阶段要是分析得很到位,系统开发出来投入使用时,用户就会发现系统的功能跟用户需求保持一致,程序稳定性也是达标的,可以说需求分析是决定系统开发成败的关键,它主要就是把现实世界进行抽象化,然后把抽象化的对象用来构建模型。
水产养殖系统的受益群体主要是工作人员,该网站能够方便使用者进行数据信息的查找和管理工作,本次开发的网站我们设计的界面展示主要分为管理员界面以及用户界面,具体界面的功能分布如下。
水产养殖系统管理员可以管理用户的基本信息,可以管理公告信息,可以管理公告信息等。
3.4 系统非功能需求分析
(1)完整性需求
本次开发的水产养殖系统里面记录的数据信息不能保持为空,并且数据信息一定要核对正确才行,系统里面数据之间存在的联系不能出错,不能够张冠李戴,数据表里面同一数据在不同数据表里面的显示内容要一样。
(2)性能需求
用户在操作水产养殖系统的各个部分内容时,弹出的页面响应时间不能太长,最好控制在三秒钟以内,最大限制值就是四秒,这个是给用户一个好的程序体验。并且系统还要能够承载多人同时在线进行水产养殖系统的访问操作。
(3)界面需求
水产养殖系统界面设计上面应该考虑到用户日常操作习惯,比如导航栏的设计不能在右边,这个完全违背了用户使用网站的操作习惯,同时功能导航的字体以及颜色应该比较显眼,方便用户容易找寻,避免用户在进行功能操作上面浪费太多时间。
(4)安全性需求
水产养殖系统的安全性要有保证,给用户一种可靠,可以信赖的感觉,系统在运行过程中,不能总是出错,与用户进行功能界面交互时,要及时给出反馈信息,另外系统要设置登录窗口,让不是系统的用户不可以进行系统功能界面的访问操作。系统用户也要经过用户名密码的填写操作,才可以进入系统主界面,这样就可以保障系统数据信息处于一种安全状态。
第四章 系统设计
4.1 总体功能
水产养殖系统是根据需求定制开发,开发软件选用IDEA平台配合MySQL数据库进行开发环境的搭建操作,网站采用WEB应用程序中最流行的小程序结构进行开发,用户访问系统数据仅仅需要在客户端安装谷歌浏览器或者是当下常用浏览器就可以访问网站内容。
4.2 系统模块设计
水产养殖系统系统在进行系统中功能模块的划分时,采用层次图来进行表示。层次图具有树形结构,它能使用矩形框来描绘数据信息。顶层代表的数据结构很完整,顶层下面的矩形框表示的数据就是子集数据,当然处于最下面的矩形框就是不能再进行细分的数据元素了,使用层次方框图描述系统功能能让用户一目了然,能够明白系统的功能,以及对应功能板块下面的子功能都可以清楚领会。水产养殖系统分为管理员和用户两部分操作角色,下面将对他们的功能进行阐述。
管理员可以管理用户的基本信息,可以管理等功能。管理员功能结构图如下:
图4.1 管理员功能结构图
4.3 数据库设计
4.3.1 数据库设计
数据库设计它是建立在数据库还有它对应的应用系统的一门技术,只要是信息系统开发还有系统建设,都会用到数据库设计,但是这个数据库设计并不是很简单就可以完成的,设计期间会遇到很多麻烦事,在设计期间需要考虑再考虑,逐步完善。主要内容也就是把数据库里面的对象还有对象之间的联系进行系统规划操作,还有把他们结构化的过程。
4.3.2 数据库E-R 图
E-R 图分成三部分内容,分别是实体,实体的属性以及实体之间的关系这三个部分的内容,通常长方形表示的就是实体,椭圆形表示的就是属性,菱形表示的就是关系了。在E-R 图里面,实体就是对象,比如学生,人,音乐等都能代表实体,实体都具备自己的成员,比如张三就是学生实体里面的成员。一个学生会具有自己的姓名,年龄,出生日期等信息,这些信息就是学生这个实体的属性,因此E-R 图属性代表的就是数据对象具备的属性,E-R 图的关系就是实体跟实体之间的关系了,比如学生跟课程会存在一定的关系,这种关系使用菱形进行表示。
(1)下图是用户实体和其具备的属性。
用户实体属性图
(2)下图是养殖区域实体和其具备的属性。
养殖区域实体属性图
(3)下图是水产收藏实体和其具备的属性。
水产收藏实体属性图
(4)下图是公告实体和其具备的属性。
公告实体属性图
(5)下图是饲料实体和其具备的属性。
饲料实体属性图
(6)下图是水产资讯实体和其具备的属性。
水产资讯实体属性图
(7)下图是养殖区域收藏实体和其具备的属性。
养殖区域收藏实体属性图
(8)下图是养殖区域留言实体和其具备的属性。
养殖区域留言实体属性图
(9)下图是饲料使用实体和其具备的属性。
饲料使用实体属性图
(10)下图是水质实体和其具备的属性。
水质实体属性图
(11)下图是水产实体和其具备的属性。
水产实体属性图
4.3.3 数据库表设计
数据库里面的数据表存放的就是各种数据记录,我们在进行系统增删改查操作时,其实也是在对应数据表里面进行的增删改查操作,一个好的数据库能够缩短信息处理时间,所以说数据库的设计工作不容小觑,数据库里面设置哪些表,表里面的字段设计以及字段类型和字段长度等信息都要考虑周到才行,比如时间这个字段,它的数据类型就不能是int型,不然在系统操作中就会弹出输入数据格式不符合要求的报错提示。下面简单介绍水产养殖系统的一些数据表。
表4.1字典表
序号 | 列名 | 数据类型 | 说明 | 允许空 |
---|---|---|---|---|
1 | Id | Int | id | 否 |
2 | dic_code | String | 字段 | 是 |
3 | dic_name | String | 字段名 | 是 |
4 | code_index | Integer | 编码 | 是 |
5 | index_name | String | 编码名字 | 是 |
6 | super_id | Integer | 父字段id | 是 |
7 | beizhu | String | 备注 | 是 |
8 | create_time | Date | 创建时间 | 是 |
表4.2公告表
序号 | 列名 | 数据类型 | 说明 | 允许空 |
---|---|---|---|---|
1 | Id | Int | id | 否 |
2 | gonggao_name | String | 公告名称 | 是 |
3 | gonggao_photo | String | 公告图片 | 是 |
4 | gonggao_types | Integer | 公告类型 | 是 |
5 | insert_time | Date | 发布时间 | 是 |
6 | gonggao_content | String | 公告详情 | 是 |
7 | create_time | Date | 创建时间 | 是 |
表4.3水产资讯表
序号 | 列名 | 数据类型 | 说明 | 允许空 |
---|---|---|---|---|
1 | Id | Int | id | 否 |
2 | news_name | String | 水产资讯名称 | 是 |
3 | news_photo | String | 水产资讯图片 | 是 |
4 | news_types | Integer | 水产资讯类型 | 是 |
5 | insert_time | Date | 发布时间 | 是 |
6 | news_content | String | 水产资讯详情 | 是 |
7 | create_time | Date | 创建时间 | 是 |
表4.4水产表
序号 | 列名 | 数据类型 | 说明 | 允许空 |
---|---|---|---|---|
1 | Id | Int | id | 否 |
2 | yangzhiquyu_id | Integer | 养殖区域 | 是 |
3 | yonghu_id | Integer | 用户 | 是 |
4 | shuichan_name | String | 水产名称 | 是 |
5 | shuichan_uuid_number | String | 水产编号 | 是 |
6 | shuichan_photo | String | 水产照片 | 是 |
7 | shuichan_file | String | 水产附件 | 是 |
8 | shuichan_types | Integer | 水产类型 | 是 |
9 | shuichan_number | Integer | 养殖数量 | 是 |
10 | toufang_time | Date | 投放日期 | 是 |
11 | laochu_time | Date | 捞出日期 | 是 |
12 | shuichan_content | String | 水产介绍 | 是 |
13 | insert_time | Date | 录入时间 | 是 |
14 | create_time | Date | 创建时间 | 是 |
表4.5水产收藏表
序号 | 列名 | 数据类型 | 说明 | 允许空 |
---|---|---|---|---|
1 | Id | Int | id | 否 |
2 | shuichan_id | Integer | 水产 | 是 |
3 | yonghu_id | Integer | 用户 | 是 |
4 | shuichan_collection_types | Integer | 类型 | 是 |
5 | insert_time | Date | 收藏时间 | 是 |
6 | create_time | Date | 创建时间 | 是 |
表4.6水质表
序号 | 列名 | 数据类型 | 说明 | 允许空 |
---|---|---|---|---|
1 | Id | Int | id | 否 |
2 | yangzhiquyu_id | Integer | 养殖区域 | 是 |
3 | yonghu_id | Integer | 用户 | 是 |
4 | shuizhi_uuid_number | String | 水质编号 | 是 |
5 | shuizhi_photo | String | 水质照片 | 是 |
6 | shuizhi_file | String | 附件 | 是 |
7 | shuizhi_types | Integer | 水质状态 | 是 |
8 | shuizhi_time | Date | 所属日期 | 是 |
9 | shuizhi_content | String | 水质详情 | 是 |
10 | insert_time | Date | 上传时间 | 是 |
11 | create_time | Date | 创建时间 | 是 |
表4.7饲料表
序号 | 列名 | 数据类型 | 说明 | 允许空 |
---|---|---|---|---|
1 | Id | Int | id | 否 |
2 | siliao_uuid_number | String | 饲料编号 | 是 |
3 | siliao_name | String | 饲料名称 | 是 |
4 | siliao_photo | String | 饲料照片 | 是 |
5 | siliao_file | String | 附件 | 是 |
6 | siliao_number | Integer | 数量 | 是 |
7 | siliao_danwei | String | 单位 | 是 |
8 | siliao_types | Integer | 饲料类型 | 是 |
9 | siliao_content | String | 饲料介绍 | 是 |
10 | insert_time | Date | 录入时间 | 是 |
11 | create_time | Date | 创建时间 | 是 |
表4.8饲料使用表
序号 | 列名 | 数据类型 | 说明 | 允许空 |
---|---|---|---|---|
1 | Id | Int | id | 否 |
2 | siliao_id | Integer | 饲料 | 是 |
3 | shuichan_id | Integer | 水产 | 是 |
4 | yonghu_id | Integer | 用户 | 是 |
5 | siliao_shiyong_number | Integer | 使用数量 | 是 |
6 | siliao_shiyong_types | Integer | 使用类型 | 是 |
7 | siliao_shiyong_content | String | 使用缘由 | 是 |
8 | siliao_shiyong_file | String | 附件 | 是 |
9 | siliao_shiyong_time | Date | 使用时间 | 是 |
10 | insert_time | Date | 录入时间 | 是 |
11 | create_time | Date | 创建时间 | 是 |
表4.9养殖区域表
序号 | 列名 | 数据类型 | 说明 | 允许空 |
---|---|---|---|---|
1 | Id | Int | id | 否 |
2 | yangzhiquyu_name | String | 区域名称 | 是 |
3 | yangzhiquyu_uuid_number | String | 养殖区域编号 | 是 |
4 | yangzhiquyu_photo | String | 养殖区域照片 | 是 |
5 | yangzhiquyu_address | String | 养殖区域地点 | 是 |
6 | yangzhiquyu_types | Integer | 养殖区域类型 | 是 |
7 | yangzhiquyu_content | String | 养殖区域介绍 | 是 |
8 | insert_time | Date | 录入时间 | 是 |
9 | create_time | Date | 创建时间 | 是 |
表4.10养殖区域收藏表
序号 | 列名 | 数据类型 | 说明 | 允许空 |
---|---|---|---|---|
1 | Id | Int | id | 否 |
2 | yangzhiquyu_id | Integer | 养殖区域 | 是 |
3 | yonghu_id | Integer | 用户 | 是 |
4 | yangzhiquyu_collection_types | Integer | 类型 | 是 |
5 | insert_time | Date | 收藏时间 | 是 |
6 | create_time | Date | 创建时间 | 是 |
表4.11养殖区域留言表
序号 | 列名 | 数据类型 | 说明 | 允许空 |
---|---|---|---|---|
1 | Id | Int | id | 否 |
2 | yangzhiquyu_id | Integer | 养殖区域 | 是 |
3 | yonghu_id | Integer | 用户 | 是 |
4 | yangzhiquyu_liuyan_text | String | 留言内容 | 是 |
5 | insert_time | Date | 留言时间 | 是 |
6 | reply_text | String | 回复内容 | 是 |
7 | update_time | Date | 回复时间 | 是 |
8 | create_time | Date | 创建时间 | 是 |
表4.12用户表
序号 | 列名 | 数据类型 | 说明 | 允许空 |
---|---|---|---|---|
1 | Id | Int | id | 否 |
2 | yonghu_name | String | 用户姓名 | 是 |
3 | yonghu_phone | String | 用户手机号 | 是 |
4 | yonghu_id_number | String | 用户身份证号 | 是 |
5 | yonghu_photo | String | 用户头像 | 是 |
6 | yonghu_email | String | 用户邮箱 | 是 |
7 | jinyong_types | Integer | 账户状态 | 是 |
8 | create_time | Date | 创建时间 | 是 |
表4.13管理员表
序号 | 列名 | 数据类型 | 说明 | 允许空 |
---|---|---|---|---|
1 | Id | Int | id | 否 |
2 | username | String | 学生名 | 是 |
3 | password | String | 密码 | 是 |
4 | role | String | 角色 | 是 |
5 | addtime | Date | 新增时间 | 是 |
第五章 系统实现
5.1 管理员功能模块的实现
5.1.1 水产列表
如图5.1显示的就是水产列表页面,此页面提供给管理员的功能有:查看水产、新增水产、修改水产、删除水产等。
图5.1 水产列表页面
5.1.2 公告信息管理
管理员可以对公告信息进行管理,可以新增公告信息,修改公告信息,删除无效的公告信息。公告信息管理界面如图5.2所示。
图5.2 公告信息管理页面
5.1.3 公告类型管理
公告类型管理页面显示所有公告类型,在此页面既可以让管理员添加新的公告信息类型,也能对已有的公告类型信息执行编辑更新,失效的公告类型信息也能让管理员快速删除。下图就是公告类型管理页面。公告类型管理界面如图5.3所示。
图5.3公告类型管理界面
5.1.4 水产资讯管理
如图5.4显示的就是水产资讯管理页面,此页面提供给管理员的功能有:新增水产资讯,修改水产资讯,删除水产资讯。
图5.4水产资讯管理页面
5.1.5 新闻类型管理
如图5.5显示的就是新闻类型管理页面,此页面提供给管理员的功能有:新增新闻类型,修改新闻类型,删除新闻类型。
图5.5 新闻类型管理页面
DateUtil.java
package com.utils;
import java.text.Format;
import java.text.SimpleDateFormat;
import java.util.Date;
public class DateUtil {
public static String convertString(Date date,String format){
if(date == null){
return null;
}
SimpleDateFormat sdf = new SimpleDateFormat(format);
return sdf.format(date);
}
}
NewsController.java
package com.controller;
import java.io.File;
import java.math.BigDecimal;
import java.net.URL;
import java.text.SimpleDateFormat;
import com.alibaba.fastjson.JSONObject;
import java.util.*;
import org.springframework.beans.BeanUtils;
import javax.servlet.http.HttpServletRequest;
import org.springframework.web.context.ContextLoader;
import javax.servlet.ServletContext;
import com.service.TokenService;
import com.utils.*;
import java.lang.reflect.InvocationTargetException;
import com.service.DictionaryService;
import org.apache.commons.lang3.StringUtils;
import com.annotation.IgnoreAuth;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.entity.*;
import com.entity.view.*;
import com.service.*;
import com.utils.PageUtils;
import com.utils.R;
import com.alibaba.fastjson.*;
/**
* 水产资讯
* 后端接口
* @author
* @email
*/
@RestController
@Controller
@RequestMapping("/news")
public class NewsController {
private static final Logger logger = LoggerFactory.getLogger(NewsController.class);
private static final String TABLE_NAME = "news";
@Autowired
private NewsService newsService;
@Autowired
private TokenService tokenService;
@Autowired
private DictionaryService dictionaryService;//字典
@Autowired
private GonggaoService gonggaoService;//公告
@Autowired
private ShuichanService shuichanService;//水产
@Autowired
private ShuichanCollectionService shuichanCollectionService;//水产收藏
@Autowired
private ShuizhiService shuizhiService;//水质
@Autowired
private SiliaoService siliaoService;//饲料
@Autowired
private SiliaoShiyongService siliaoShiyongService;//饲料使用
@Autowired
private YangzhiquyuService yangzhiquyuService;//养殖区域
@Autowired
private YangzhiquyuCollectionService yangzhiquyuCollectionService;//养殖区域收藏
@Autowired
private YangzhiquyuLiuyanService yangzhiquyuLiuyanService;//养殖区域留言
@Autowired
private YonghuService yonghuService;//用户
@Autowired
private UsersService usersService;//管理员
/**
* 后端列表
*/
@RequestMapping("/page")
public R page(@RequestParam Map<String, Object> params, HttpServletRequest request){
logger.debug("page方法:,,Controller:{},,params:{}",this.getClass().getName(),JSONObject.toJSONString(params));
String role = String.valueOf(request.getSession().getAttribute("role"));
if(false)
return R.error(511,"永不会进入");
else if("用户".equals(role))
params.put("yonghuId",request.getSession().getAttribute("userId"));
CommonUtil.checkMap(params);
PageUtils page = newsService.queryPage(params);
//字典表数据转换
List<NewsView> list =(List<NewsView>)page.getList();
for(NewsView c:list){
//修改对应字典表字段
dictionaryService.dictionaryConvert(c, request);
}
return R.ok().put("data", page);
}
/**
* 后端详情
*/
@RequestMapping("/info/{id}")
public R info(@PathVariable("id") Long id, HttpServletRequest request){
logger.debug("info方法:,,Controller:{},,id:{}",this.getClass().getName(),id);
NewsEntity news = newsService.selectById(id);
if(news !=null){
//entity转view
NewsView view = new NewsView();
BeanUtils.copyProperties( news , view );//把实体数据重构到view中
//修改对应字典表字段
dictionaryService.dictionaryConvert(view, request);
return R.ok().put("data", view);
}else {
return R.error(511,"查不到数据");
}
}
/**
* 后端保存
*/
@RequestMapping("/save")
public R save(@RequestBody NewsEntity news, HttpServletRequest request){
logger.debug("save方法:,,Controller:{},,news:{}",this.getClass().getName(),news.toString());
String role = String.valueOf(request.getSession().getAttribute("role"));
if(false)
return R.error(511,"永远不会进入");
Wrapper<NewsEntity> queryWrapper = new EntityWrapper<NewsEntity>()
.eq("news_name", news.getNewsName())
.eq("news_types", news.getNewsTypes())
;
logger.info("sql语句:"+queryWrapper.getSqlSegment());
NewsEntity newsEntity = newsService.selectOne(queryWrapper);
if(newsEntity==null){
news.setInsertTime(new Date());
news.setCreateTime(new Date());
newsService.insert(news);
return R.ok();
}else {
return R.error(511,"表中有相同数据");
}
}
/**
* 后端修改
*/
@RequestMapping("/update")
public R update(@RequestBody NewsEntity news, HttpServletRequest request) throws NoSuchFieldException, ClassNotFoundException, IllegalAccessException, InstantiationException {
logger.debug("update方法:,,Controller:{},,news:{}",this.getClass().getName(),news.toString());
NewsEntity oldNewsEntity = newsService.selectById(news.getId());//查询原先数据
String role = String.valueOf(request.getSession().getAttribute("role"));
// if(false)
// return R.error(511,"永远不会进入");
if("".equals(news.getNewsPhoto()) || "null".equals(news.getNewsPhoto())){
news.setNewsPhoto(null);
}
newsService.updateById(news);//根据id更新
return R.ok();
}
/**
* 删除
*/
@RequestMapping("/delete")
public R delete(@RequestBody Integer[] ids, HttpServletRequest request){
logger.debug("delete:,,Controller:{},,ids:{}",this.getClass().getName(),ids.toString());
List<NewsEntity> oldNewsList =newsService.selectBatchIds(Arrays.asList(ids));//要删除的数据
newsService.deleteBatchIds(Arrays.asList(ids));
return R.ok();
}
/**
* 批量上传
*/
@RequestMapping("/batchInsert")
public R save( String fileName, HttpServletRequest request){
logger.debug("batchInsert方法:,,Controller:{},,fileName:{}",this.getClass().getName(),fileName);
Integer yonghuId = Integer.valueOf(String.valueOf(request.getSession().getAttribute("userId")));
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//.eq("time", new SimpleDateFormat("yyyy-MM-dd").format(new Date()))
try {
List<NewsEntity> newsList = new ArrayList<>();//上传的东西
Map<String, List<String>> seachFields= new HashMap<>();//要查询的字段
Date date = new Date();
int lastIndexOf = fileName.lastIndexOf(".");
if(lastIndexOf == -1){
return R.error(511,"该文件没有后缀");
}else{
String suffix = fileName.substring(lastIndexOf);
if(!".xls".equals(suffix)){
return R.error(511,"只支持后缀为xls的excel文件");
}else{
URL resource = this.getClass().getClassLoader().getResource("static/upload/" + fileName);//获取文件路径
File file = new File(resource.getFile());
if(!file.exists()){
return R.error(511,"找不到上传文件,请联系管理员");
}else{
List<List<String>> dataList = PoiUtil.poiImport(file.getPath());//读取xls文件
dataList.remove(0);//删除第一行,因为第一行是提示
for(List<String> data:dataList){
//循环
NewsEntity newsEntity = new NewsEntity();
// newsEntity.setNewsName(data.get(0)); //新闻名称 要改的
// newsEntity.setNewsPhoto("");//详情和图片
// newsEntity.setNewsTypes(Integer.valueOf(data.get(0))); //新闻类型 要改的
// newsEntity.setInsertTime(date);//时间
// newsEntity.setNewsContent("");//详情和图片
// newsEntity.setCreateTime(date);//时间
newsList.add(newsEntity);
//把要查询是否重复的字段放入map中
}
//查询是否重复
newsService.insertBatch(newsList);
return R.ok();
}
}
}
}catch (Exception e){
e.printStackTrace();
return R.error(511,"批量插入数据异常,请联系管理员");
}
}
/**
* 前端列表
*/
@IgnoreAuth
@RequestMapping("/list")
public R list(@RequestParam Map<String, Object> params, HttpServletRequest request){
logger.debug("list方法:,,Controller:{},,params:{}",this.getClass().getName(),JSONObject.toJSONString(params));
CommonUtil.checkMap(params);
PageUtils page = newsService.queryPage(params);
//字典表数据转换
List<NewsView> list =(List<NewsView>)page.getList();
for(NewsView c:list)
dictionaryService.dictionaryConvert(c, request); //修改对应字典表字段
return R.ok().put("data", page);
}
/**
* 前端详情
*/
@RequestMapping("/detail/{id}")
public R detail(@PathVariable("id") Long id, HttpServletRequest request){
logger.debug("detail方法:,,Controller:{},,id:{}",this.getClass().getName(),id);
NewsEntity news = newsService.selectById(id);
if(news !=null){
//entity转view
NewsView view = new NewsView();
BeanUtils.copyProperties( news , view );//把实体数据重构到view中
//修改对应字典表字段
dictionaryService.dictionaryConvert(view, request);
return R.ok().put("data", view);
}else {
return R.error(511,"查不到数据");
}
}
/**
* 前端保存
*/
@RequestMapping("/add")
public R add(@RequestBody NewsEntity news, HttpServletRequest request){
logger.debug("add方法:,,Controller:{},,news:{}",this.getClass().getName(),news.toString());
Wrapper<NewsEntity> queryWrapper = new EntityWrapper<NewsEntity>()
.eq("news_name", news.getNewsName())
.eq("news_types", news.getNewsTypes())
// .notIn("news_types", new Integer[]{102})
;
logger.info("sql语句:"+queryWrapper.getSqlSegment());
NewsEntity newsEntity = newsService.selectOne(queryWrapper);
if(newsEntity==null){
news.setInsertTime(new Date());
news.setCreateTime(new Date());
newsService.insert(news);
return R.ok();
}else {
return R.error(511,"表中有相同数据");
}
}
}
SiliaoShiyongController.java
package com.controller;
import java.io.File;
import java.math.BigDecimal;
import java.net.URL;
import java.text.SimpleDateFormat;
import com.alibaba.fastjson.JSONObject;
import java.util.*;
import org.springframework.beans.BeanUtils;
import javax.servlet.http.HttpServletRequest;
import org.springframework.web.context.ContextLoader;
import javax.servlet.ServletContext;
import com.service.TokenService;
import com.utils.*;
import java.lang.reflect.InvocationTargetException;
import com.service.DictionaryService;
import org.apache.commons.lang3.StringUtils;
import com.annotation.IgnoreAuth;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.entity.*;
import com.entity.view.*;
import com.service.*;
import com.utils.PageUtils;
import com.utils.R;
import com.alibaba.fastjson.*;
/**
* 饲料使用
* 后端接口
* @author
* @email
*/
@RestController
@Controller
@RequestMapping("/siliaoShiyong")
public class SiliaoShiyongController {
private static final Logger logger = LoggerFactory.getLogger(SiliaoShiyongController.class);
private static final String TABLE_NAME = "siliaoShiyong";
@Autowired
private SiliaoShiyongService siliaoShiyongService;
@Autowired
private TokenService tokenService;
@Autowired
private DictionaryService dictionaryService;//字典
@Autowired
private GonggaoService gonggaoService;//公告
@Autowired
private NewsService newsService;//水产资讯
@Autowired
private ShuichanService shuichanService;//水产
@Autowired
private ShuichanCollectionService shuichanCollectionService;//水产收藏
@Autowired
private ShuizhiService shuizhiService;//水质
@Autowired
private SiliaoService siliaoService;//饲料
@Autowired
private YangzhiquyuService yangzhiquyuService;//养殖区域
@Autowired
private YangzhiquyuCollectionService yangzhiquyuCollectionService;//养殖区域收藏
@Autowired
private YangzhiquyuLiuyanService yangzhiquyuLiuyanService;//养殖区域留言
@Autowired
private YonghuService yonghuService;//用户
@Autowired
private UsersService usersService;//管理员
/**
* 后端列表
*/
@RequestMapping("/page")
public R page(@RequestParam Map<String, Object> params, HttpServletRequest request){
logger.debug("page方法:,,Controller:{},,params:{}",this.getClass().getName(),JSONObject.toJSONString(params));
String role = String.valueOf(request.getSession().getAttribute("role"));
if(false)
return R.error(511,"永不会进入");
else if("用户".equals(role))
params.put("yonghuId",request.getSession().getAttribute("userId"));
CommonUtil.checkMap(params);
PageUtils page = siliaoShiyongService.queryPage(params);
//字典表数据转换
List<SiliaoShiyongView> list =(List<SiliaoShiyongView>)page.getList();
for(SiliaoShiyongView c:list){
//修改对应字典表字段
dictionaryService.dictionaryConvert(c, request);
}
return R.ok().put("data", page);
}
/**
* 后端详情
*/
@RequestMapping("/info/{id}")
public R info(@PathVariable("id") Long id, HttpServletRequest request){
logger.debug("info方法:,,Controller:{},,id:{}",this.getClass().getName(),id);
SiliaoShiyongEntity siliaoShiyong = siliaoShiyongService.selectById(id);
if(siliaoShiyong !=null){
//entity转view
SiliaoShiyongView view = new SiliaoShiyongView();
BeanUtils.copyProperties( siliaoShiyong , view );//把实体数据重构到view中
//级联表 饲料
//级联表
SiliaoEntity siliao = siliaoService.selectById(siliaoShiyong.getSiliaoId());
if(siliao != null){
BeanUtils.copyProperties( siliao , view ,new String[]{ "id", "createTime", "insertTime", "updateTime", "yonghuId"});//把级联的数据添加到view中,并排除id和创建时间字段,当前表的级联注册表
view.setSiliaoId(siliao.getId());
}
//级联表 水产
//级联表
ShuichanEntity shuichan = shuichanService.selectById(siliaoShiyong.getShuichanId());
if(shuichan != null){
BeanUtils.copyProperties( shuichan , view ,new String[]{ "id", "createTime", "insertTime", "updateTime", "yonghuId"});//把级联的数据添加到view中,并排除id和创建时间字段,当前表的级联注册表
view.setShuichanId(shuichan.getId());
}
//级联表 用户
//级联表
YonghuEntity yonghu = yonghuService.selectById(siliaoShiyong.getYonghuId());
if(yonghu != null){
BeanUtils.copyProperties( yonghu , view ,new String[]{ "id", "createTime", "insertTime", "updateTime", "yonghuId"});//把级联的数据添加到view中,并排除id和创建时间字段,当前表的级联注册表
view.setYonghuId(yonghu.getId());
}
//修改对应字典表字段
dictionaryService.dictionaryConvert(view, request);
return R.ok().put("data", view);
}else {
return R.error(511,"查不到数据");
}
}
/**
* 后端保存
*/
@RequestMapping("/save")
public R save(@RequestBody SiliaoShiyongEntity siliaoShiyong, HttpServletRequest request){
logger.debug("save方法:,,Controller:{},,siliaoShiyong:{}",this.getClass().getName(),siliaoShiyong.toString());
String role = String.valueOf(request.getSession().getAttribute("role"));
if(false)
return R.error(511,"永远不会进入");
else if("用户".equals(role))
siliaoShiyong.setYonghuId(Integer.valueOf(String.valueOf(request.getSession().getAttribute("userId"))));
siliaoShiyong.setInsertTime(new Date());
siliaoShiyong.setCreateTime(new Date());
siliaoShiyongService.insert(siliaoShiyong);
return R.ok();
}
/**
* 后端修改
*/
@RequestMapping("/update")
public R update(@RequestBody SiliaoShiyongEntity siliaoShiyong, HttpServletRequest request) throws NoSuchFieldException, ClassNotFoundException, IllegalAccessException, InstantiationException {
logger.debug("update方法:,,Controller:{},,siliaoShiyong:{}",this.getClass().getName(),siliaoShiyong.toString());
SiliaoShiyongEntity oldSiliaoShiyongEntity = siliaoShiyongService.selectById(siliaoShiyong.getId());//查询原先数据
String role = String.valueOf(request.getSession().getAttribute("role"));
// if(false)
// return R.error(511,"永远不会进入");
// else if("用户".equals(role))
// siliaoShiyong.setYonghuId(Integer.valueOf(String.valueOf(request.getSession().getAttribute("userId"))));
if("".equals(siliaoShiyong.getSiliaoShiyongFile()) || "null".equals(siliaoShiyong.getSiliaoShiyongFile())){
siliaoShiyong.setSiliaoShiyongFile(null);
}
siliaoShiyongService.updateById(siliaoShiyong);//根据id更新
return R.ok();
}
/**
* 删除
*/
@RequestMapping("/delete")
public R delete(@RequestBody Integer[] ids, HttpServletRequest request){
logger.debug("delete:,,Controller:{},,ids:{}",this.getClass().getName(),ids.toString());
List<SiliaoShiyongEntity> oldSiliaoShiyongList =siliaoShiyongService.selectBatchIds(Arrays.asList(ids));//要删除的数据
siliaoShiyongService.deleteBatchIds(Arrays.asList(ids));
return R.ok();
}
/**
* 批量上传
*/
@RequestMapping("/batchInsert")
public R save( String fileName, HttpServletRequest request){
logger.debug("batchInsert方法:,,Controller:{},,fileName:{}",this.getClass().getName(),fileName);
Integer yonghuId = Integer.valueOf(String.valueOf(request.getSession().getAttribute("userId")));
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//.eq("time", new SimpleDateFormat("yyyy-MM-dd").format(new Date()))
try {
List<SiliaoShiyongEntity> siliaoShiyongList = new ArrayList<>();//上传的东西
Map<String, List<String>> seachFields= new HashMap<>();//要查询的字段
Date date = new Date();
int lastIndexOf = fileName.lastIndexOf(".");
if(lastIndexOf == -1){
return R.error(511,"该文件没有后缀");
}else{
String suffix = fileName.substring(lastIndexOf);
if(!".xls".equals(suffix)){
return R.error(511,"只支持后缀为xls的excel文件");
}else{
URL resource = this.getClass().getClassLoader().getResource("static/upload/" + fileName);//获取文件路径
File file = new File(resource.getFile());
if(!file.exists()){
return R.error(511,"找不到上传文件,请联系管理员");
}else{
List<List<String>> dataList = PoiUtil.poiImport(file.getPath());//读取xls文件
dataList.remove(0);//删除第一行,因为第一行是提示
for(List<String> data:dataList){
//循环
SiliaoShiyongEntity siliaoShiyongEntity = new SiliaoShiyongEntity();
// siliaoShiyongEntity.setSiliaoId(Integer.valueOf(data.get(0))); //饲料 要改的
// siliaoShiyongEntity.setShuichanId(Integer.valueOf(data.get(0))); //水产 要改的
// siliaoShiyongEntity.setYonghuId(Integer.valueOf(data.get(0))); //用户 要改的
// siliaoShiyongEntity.setSiliaoShiyongNumber(Integer.valueOf(data.get(0))); //使用数量 要改的
// siliaoShiyongEntity.setSiliaoShiyongTypes(Integer.valueOf(data.get(0))); //使用类型 要改的
// siliaoShiyongEntity.setSiliaoShiyongContent("");//详情和图片
// siliaoShiyongEntity.setSiliaoShiyongFile(data.get(0)); //附件 要改的
// siliaoShiyongEntity.setSiliaoShiyongTime(sdf.parse(data.get(0))); //使用时间 要改的
// siliaoShiyongEntity.setInsertTime(date);//时间
// siliaoShiyongEntity.setCreateTime(date);//时间
siliaoShiyongList.add(siliaoShiyongEntity);
//把要查询是否重复的字段放入map中
}
//查询是否重复
siliaoShiyongService.insertBatch(siliaoShiyongList);
return R.ok();
}
}
}
}catch (Exception e){
e.printStackTrace();
return R.error(511,"批量插入数据异常,请联系管理员");
}
}
/**
* 前端列表
*/
@IgnoreAuth
@RequestMapping("/list")
public R list(@RequestParam Map<String, Object> params, HttpServletRequest request){
logger.debug("list方法:,,Controller:{},,params:{}",this.getClass().getName(),JSONObject.toJSONString(params));
CommonUtil.checkMap(params);
PageUtils page = siliaoShiyongService.queryPage(params);
//字典表数据转换
List<SiliaoShiyongView> list =(List<SiliaoShiyongView>)page.getList();
for(SiliaoShiyongView c:list)
dictionaryService.dictionaryConvert(c, request); //修改对应字典表字段
return R.ok().put("data", page);
}
/**
* 前端详情
*/
@RequestMapping("/detail/{id}")
public R detail(@PathVariable("id") Long id, HttpServletRequest request){
logger.debug("detail方法:,,Controller:{},,id:{}",this.getClass().getName(),id);
SiliaoShiyongEntity siliaoShiyong = siliaoShiyongService.selectById(id);
if(siliaoShiyong !=null){
//entity转view
SiliaoShiyongView view = new SiliaoShiyongView();
BeanUtils.copyProperties( siliaoShiyong , view );//把实体数据重构到view中
//级联表
SiliaoEntity siliao = siliaoService.selectById(siliaoShiyong.getSiliaoId());
if(siliao != null){
BeanUtils.copyProperties( siliao , view ,new String[]{ "id", "createDate"});//把级联的数据添加到view中,并排除id和创建时间字段
view.setSiliaoId(siliao.getId());
}
//级联表
ShuichanEntity shuichan = shuichanService.selectById(siliaoShiyong.getShuichanId());
if(shuichan != null){
BeanUtils.copyProperties( shuichan , view ,new String[]{ "id", "createDate"});//把级联的数据添加到view中,并排除id和创建时间字段
view.setShuichanId(shuichan.getId());
}
//级联表
YonghuEntity yonghu = yonghuService.selectById(siliaoShiyong.getYonghuId());
if(yonghu != null){
BeanUtils.copyProperties( yonghu , view ,new String[]{ "id", "createDate"});//把级联的数据添加到view中,并排除id和创建时间字段
view.setYonghuId(yonghu.getId());
}
//修改对应字典表字段
dictionaryService.dictionaryConvert(view, request);
return R.ok().put("data", view);
}else {
return R.error(511,"查不到数据");
}
}
/**
* 前端保存
*/
@RequestMapping("/add")
public R add(@RequestBody SiliaoShiyongEntity siliaoShiyong, HttpServletRequest request){
logger.debug("add方法:,,Controller:{},,siliaoShiyong:{}",this.getClass().getName(),siliaoShiyong.toString());
SiliaoEntity siliaoEntity = siliaoService.selectById(siliaoShiyong.getSiliaoId());
if(siliaoEntity == null){
return R.error("查不到饲料");
}
int balance = siliaoEntity.getSiliaoNumber() - siliaoShiyong.getSiliaoShiyongNumber();
if(balance<0)
return R.error("使用数量不能大于库存数量");
siliaoEntity.setSiliaoNumber(balance);
siliaoService.updateById(siliaoEntity);
siliaoShiyong.setInsertTime(new Date());
siliaoShiyong.setCreateTime(new Date());
siliaoShiyongService.insert(siliaoShiyong);
return R.ok();
}
}
pay.vue
<template>
<div class="container">
<el-alert title="检查好账户哦" type="success" :closable="false"></el-alert>
<el-row style="margin: 20px 0 0 20px;">
充值金额:<el-input v-model="newMoney" placeholder="充值金额" style="width: 40%" clearable></el-input>
</el-row>
<div class="pay-type-content">
<label>
<div class="pay-type-item" :span="8">
<el-radio v-model="type" label="微信支付"></el-radio>
<img src="@/assets/img/test/weixin.png" alt>
</div>
</label>
<label>
<div class="pay-type-item" :span="8">
<el-radio v-model="type" label="支付宝支付"></el-radio>
<img src="@/assets/img/test/zhifubao.png" alt>
</div>
</label>
<label>
<div class="pay-type-item" :span="8">
<el-radio v-model="type" label="建设银行"></el-radio>
<img src="@/assets/img/test/jianshe.png" alt>
</div>
</label>
<label>
<div class="pay-type-item">
<el-radio v-model="type" label="农业银行"></el-radio>
<img src="@/assets/img/test/nongye.png" alt>
</div>
</label>
<label>
<div class="pay-type-item">
<el-radio v-model="type" label="中国银行"></el-radio>
<img src="@/assets/img/test/zhongguo.png" alt>
</div>
</label>
<label>
<div class="pay-type-item">
<el-radio v-model="type" label="交通银行"></el-radio>
<img src="@/assets/img/test/jiaotong.png" alt>
</div>
</label>
<label>
<div class="pay-type-item">
<el-radio v-model="type" label="民生银行"></el-radio>
<img src="@/assets/img/test/minsheng.png" alt>
</div>
</label>
<label>
<div class="pay-type-item">
<el-radio v-model="type" label="工商银行"></el-radio>
<img src="@/assets/img/test/gongshang.png" alt>
</div>
</label>
</div>
<div class="buton-content">
<el-button @click="submitTap" type="primary">确认支付</el-button>
<el-button @click="back()">返回</el-button>
</div>
</div>
</template>
<script>
// import { Message } from "element-ui";
export default {
data() {
return {
sessionTable:"",//表
role:"",//权限
userId:"",//账户
type:"支付宝支付",
newMoney: "100",//充值金额
user:{},
};
},
mounted() {
let _this =this;
this.sessionTable = this.$storage.get("sessionTable");
this.role = this.$storage.get("role");
this.userId = this.$storage.get("userId");
this.$http({
url: `${this.sessionTable}/session`,
method: "get"
}).then(({ data }) => {
if (data && data.code === 0) {
_this.user = data.data;
} else {
_this.$message.error(data.msg);
}
});
},
methods: {
submitTap() {
let _this =this;
if(_this.newMoney == null || _this.newMoney == "" || _this.newMoney <=0){
this.$message.error("充值金额必须大于0");
return false;
}
_this.$confirm(`确定充值么?`, "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
}).then(() => {
_this.$http({
url: `${_this.sessionTable}/update`,
method: "post",
data: {
id:_this.userId,
newMoney:Number(_this.newMoney)+Number(_this.user.newMoney),
}
}).then(({ data }) => {
if (data && data.code === 0) {
_this.$message({
message: "充值成功",
type: "success",
duration: 1500,
onClose: () => {
_this.$router.replace({ path: "/center" });
}
});
} else {
this.$message.error(data.msg);
}
});
});
},
back(){
this.$router.replace({ path: "/center" });
}
}
};
</script>
<style lang="scss" scoped>
.container {
margin: 10px;
font-size: 14px;
span {
width: 60px;
}
.top-content {
display: flex;
align-items: center;
padding: 20px;
}
.price-content {
display: flex;
align-items: center;
margin-top: 20px;
padding-bottom: 20px;
padding: 20px;
border-bottom: 1px solid #eeeeee;
font-size: 20px;
font-weight: bold;
color: red;
}
.pay-type-content {
display: flex;
align-items: center;
margin-top: 20px;
flex-wrap: wrap;
span {
width: 100px;
}
.pay-type-item {
display: flex;
align-items: center;
justify-content: space-between;
width: 300px;
margin: 20px;
border: 1px solid #eeeeee;
padding: 20px;
}
}
.buton-content {
margin: 20px;
}
}
</style>
声明
本博客适用于广泛的学术和教育用途,包括但不限于个人学习、开发设计,产品设计。仅供学习参考,旨在为读者提供深入理解和学术研究的材料。