admin 11 mēnešus atpakaļ
vecāks
revīzija
e328d9411f
100 mainītis faili ar 3886 papildinājumiem un 0 dzēšanām
  1. Binārs
      files/01f97de49a414e51845ee264f373df41.docx
  2. Binārs
      files/171e59e2d3ae45a79e4fc80a809a2d0f.docx
  3. 38
    0
      files/1ae0010db35c4071a115f4f74a538cb8.txt
  4. Binārs
      files/26dbb78fe7c44bad995a11a55ce23d49.docx
  5. Binārs
      files/2fec2856ff604d10a11242aebdc9d9ef.webp
  6. Binārs
      files/4618fef86f5640c7920b0d50c79eeeb6.webp
  7. Binārs
      files/65f71856a0714ae9aa623c7a559e9aea.docx
  8. Binārs
      files/8009c70f71ac4a7eb0bfc18285a1c854.webp
  9. 5
    0
      files/83eeb99272ed4708921856c2c67efdfe.txt
  10. Binārs
      files/93af3e4a17814498953858c09689aa5c.jpg
  11. 38
    0
      files/cc1698a0677c499e990c878e98e6f92e.txt
  12. 33
    0
      springboot_vue/.gitignore
  13. Binārs
      springboot_vue/.mvn/wrapper/maven-wrapper.jar
  14. 2
    0
      springboot_vue/.mvn/wrapper/maven-wrapper.properties
  15. 331
    0
      springboot_vue/mvnw
  16. 188
    0
      springboot_vue/mvnw.cmd
  17. 152
    0
      springboot_vue/pom.xml
  18. 20
    0
      springboot_vue/src/main/java/com/ly/SpringbootVueApplication.java
  19. 111
    0
      springboot_vue/src/main/java/com/ly/component/WebSocketServer.java
  20. 9
    0
      springboot_vue/src/main/java/com/ly/config/AuthAccess.java
  21. 24
    0
      springboot_vue/src/main/java/com/ly/config/CorsConfig.java
  22. 25
    0
      springboot_vue/src/main/java/com/ly/config/InterceptorConfig.java
  23. 16
    0
      springboot_vue/src/main/java/com/ly/config/MpConfig.java
  24. 17
    0
      springboot_vue/src/main/java/com/ly/config/WebSocketConfig.java
  25. 77
    0
      springboot_vue/src/main/java/com/ly/controller/ApprovalController.java
  26. 122
    0
      springboot_vue/src/main/java/com/ly/controller/ArticleController.java
  27. 130
    0
      springboot_vue/src/main/java/com/ly/controller/BidsController.java
  28. 90
    0
      springboot_vue/src/main/java/com/ly/controller/BudgetController.java
  29. 49
    0
      springboot_vue/src/main/java/com/ly/controller/CalendarController.java
  30. 100
    0
      springboot_vue/src/main/java/com/ly/controller/CommentController.java
  31. 83
    0
      springboot_vue/src/main/java/com/ly/controller/CourseController.java
  32. 55
    0
      springboot_vue/src/main/java/com/ly/controller/EchartsController.java
  33. 288
    0
      springboot_vue/src/main/java/com/ly/controller/FileController.java
  34. 62
    0
      springboot_vue/src/main/java/com/ly/controller/GenresController.java
  35. 132
    0
      springboot_vue/src/main/java/com/ly/controller/ManageController.java
  36. 76
    0
      springboot_vue/src/main/java/com/ly/controller/MenuController.java
  37. 70
    0
      springboot_vue/src/main/java/com/ly/controller/RoleController.java
  38. 135
    0
      springboot_vue/src/main/java/com/ly/controller/TenderController.java
  39. 280
    0
      springboot_vue/src/main/java/com/ly/controller/UserController.java
  40. 26
    0
      springboot_vue/src/main/java/com/ly/controller/UserDTO.java
  41. 13
    0
      springboot_vue/src/main/java/com/ly/controller/UserPasswordDTO.java
  42. 70
    0
      springboot_vue/src/main/java/com/ly/controller/ValidationController.java
  43. 67
    0
      springboot_vue/src/main/java/com/ly/controller/interceptor/JwtInterceptor.java
  44. 41
    0
      springboot_vue/src/main/java/com/ly/controller/util/CodeGenerator.java
  45. 12
    0
      springboot_vue/src/main/java/com/ly/controller/util/Constants.java
  46. 26
    0
      springboot_vue/src/main/java/com/ly/controller/util/R.java
  47. 30
    0
      springboot_vue/src/main/java/com/ly/controller/util/Result.java
  48. 7
    0
      springboot_vue/src/main/java/com/ly/controller/util/RoleEnum.java
  49. 61
    0
      springboot_vue/src/main/java/com/ly/controller/util/TokenUtils.java
  50. 14
    0
      springboot_vue/src/main/java/com/ly/controller/util/ValidationEnum.java
  51. 9
    0
      springboot_vue/src/main/java/com/ly/dao/ApprovalDao.java
  52. 12
    0
      springboot_vue/src/main/java/com/ly/dao/ArticleDao.java
  53. 12
    0
      springboot_vue/src/main/java/com/ly/dao/BidsDao.java
  54. 18
    0
      springboot_vue/src/main/java/com/ly/dao/BudgetDao.java
  55. 12
    0
      springboot_vue/src/main/java/com/ly/dao/CalendarDao.java
  56. 19
    0
      springboot_vue/src/main/java/com/ly/dao/CommentDao.java
  57. 17
    0
      springboot_vue/src/main/java/com/ly/dao/CourseDao.java
  58. 9
    0
      springboot_vue/src/main/java/com/ly/dao/DictDao.java
  59. 9
    0
      springboot_vue/src/main/java/com/ly/dao/FileDao.java
  60. 10
    0
      springboot_vue/src/main/java/com/ly/dao/GenresDao.java
  61. 14
    0
      springboot_vue/src/main/java/com/ly/dao/ManageDao.java
  62. 9
    0
      springboot_vue/src/main/java/com/ly/dao/MenuDao.java
  63. 13
    0
      springboot_vue/src/main/java/com/ly/dao/RoleDao.java
  64. 20
    0
      springboot_vue/src/main/java/com/ly/dao/RoleMenuDao.java
  65. 13
    0
      springboot_vue/src/main/java/com/ly/dao/TenderDao.java
  66. 18
    0
      springboot_vue/src/main/java/com/ly/dao/UserDao.java
  67. 18
    0
      springboot_vue/src/main/java/com/ly/dao/ValidationMapper.java
  68. 13
    0
      springboot_vue/src/main/java/com/ly/domain/Approval.java
  69. 21
    0
      springboot_vue/src/main/java/com/ly/domain/Article.java
  70. 20
    0
      springboot_vue/src/main/java/com/ly/domain/Bids.java
  71. 25
    0
      springboot_vue/src/main/java/com/ly/domain/Budget.java
  72. 13
    0
      springboot_vue/src/main/java/com/ly/domain/Calendar.java
  73. 32
    0
      springboot_vue/src/main/java/com/ly/domain/Comment.java
  74. 16
    0
      springboot_vue/src/main/java/com/ly/domain/Course.java
  75. 12
    0
      springboot_vue/src/main/java/com/ly/domain/Dict.java
  76. 24
    0
      springboot_vue/src/main/java/com/ly/domain/Files.java
  77. 9
    0
      springboot_vue/src/main/java/com/ly/domain/Genres.java
  78. 16
    0
      springboot_vue/src/main/java/com/ly/domain/Manage.java
  79. 28
    0
      springboot_vue/src/main/java/com/ly/domain/Menu.java
  80. 18
    0
      springboot_vue/src/main/java/com/ly/domain/Role.java
  81. 12
    0
      springboot_vue/src/main/java/com/ly/domain/RoleMenu.java
  82. 18
    0
      springboot_vue/src/main/java/com/ly/domain/Tender.java
  83. 39
    0
      springboot_vue/src/main/java/com/ly/domain/User.java
  84. 39
    0
      springboot_vue/src/main/java/com/ly/domain/Validation.java
  85. 22
    0
      springboot_vue/src/main/java/com/ly/exception/GlobalExceptionHandler.java
  86. 13
    0
      springboot_vue/src/main/java/com/ly/exception/ServiceException.java
  87. 8
    0
      springboot_vue/src/main/java/com/ly/service/ApprovalService.java
  88. 9
    0
      springboot_vue/src/main/java/com/ly/service/ArticleService.java
  89. 9
    0
      springboot_vue/src/main/java/com/ly/service/BidsService.java
  90. 12
    0
      springboot_vue/src/main/java/com/ly/service/BudgetService.java
  91. 7
    0
      springboot_vue/src/main/java/com/ly/service/CalendarService.java
  92. 14
    0
      springboot_vue/src/main/java/com/ly/service/CommentService.java
  93. 11
    0
      springboot_vue/src/main/java/com/ly/service/CourseService.java
  94. 7
    0
      springboot_vue/src/main/java/com/ly/service/FilesService.java
  95. 7
    0
      springboot_vue/src/main/java/com/ly/service/GenresService.java
  96. 19
    0
      springboot_vue/src/main/java/com/ly/service/IValidationService.java
  97. 8
    0
      springboot_vue/src/main/java/com/ly/service/ManageService.java
  98. 13
    0
      springboot_vue/src/main/java/com/ly/service/MenuService.java
  99. 15
    0
      springboot_vue/src/main/java/com/ly/service/RoleService.java
  100. 0
    0
      springboot_vue/src/main/java/com/ly/service/TenderService.java

Binārs
files/01f97de49a414e51845ee264f373df41.docx Parādīt failu


Binārs
files/171e59e2d3ae45a79e4fc80a809a2d0f.docx Parādīt failu


+ 38
- 0
files/1ae0010db35c4071a115f4f74a538cb8.txt Parādīt failu

@@ -0,0 +1,38 @@
1
+197	檀洪森	A-生产实际	A-在实验实习、工程实践和社会调查中完成的	基于SpringBoot和Vue框架的电子招投标系统的设计与实现	所有专业普本可选
2
+随着我国计算机技术的不断发展,信息化办公和无纸化办公越来越普遍,信息化建设也被各级法院提上日程.人民法院作为国家审判机关,招标是其进行自我建设不可或缺的工作环节.传统的招标工作不仅效率低下,而且存在着信息透明度以及公平公正等问题.电子招投标系统作为法院信息化建设的项目之一,不仅改变了传统的纸质办公模式,提高了办公效率,而且丰富了法院的信息化建设.通过对比传统的招投标业务,分析法院招标模式,我们基于B/S模式开发了电子招投标系统.电子招投标系统从招标项目发起开始,对招标项目进行发标,开标,评标,定标等环节实施,同时供应商作为投标人,在系统允许的投标时间内,进行电子投标,实现了全程电子无纸化招投标.本文围绕电子招投标系统的设计与实现,进行了如下工作:(1)介绍了本项目国内研究现状,介绍了本系统所使用的开发技术与框架,包括MVC思想,SpringBoot框架,Vue框架,Mybatis框架以及Activiti工作流.(2)通过分析法院招投标业务需求,对系统进行整体架构,模块划分,设计数据库,最后进行项目详细设计.(3)基于需求分析和项目整体设计,着重阐述了电子招投标系统的工作流管理,项目管理,招标管理,投标管理和系统管理等相关模块的实现.本文将Activiti工作流引入电子招投标系统,满足了法院流程审批需求.同时实现了招标模块与投标模块,满足了法院招投标业务需求.系统管理等其他模块
3
+
4
+电子招投标系统是一个基于网络技术的系统,实现招投标、评标、合同等业务全过程的数字化、网络化和高度集成,它主要由网络安全系统和网上业务系统组成。该系统不仅要解决招标人对招标文件的电子发布、传输、公告发布和下载等问题,而且要解决投标人对招标文件的安全性、投标时间的准确性和有效性、评标的安全性等问题不同地区的专家在相互阅读、评价、交流的同时,还可以提供丰富的投标项目历史数据、投标人历史数据、拟投标产品的丰富数据,满足各种数据仓库、数据挖掘、数据共享等需求,不同需求的数据查询、数据分析等功能......
5
+
6
+
7
+电子招投标系统核心价值:
8
+1、实现全程无纸:
9
+
10
+全过程交易载体文件全电子化,大大加快信息的流动速度,提高社会效率;节约大量纸张,绿色环保。
11
+
12
+2、实现全程共享:
13
+
14
+场地、网络、服务机构等资源共享;评标专家信息共享;投标单位诚信记录共享;中标价格信息共享。
15
+
16
+3、实现全程受控:
17
+
18
+全方位规范化网上备案、监管、 监察。流程固化并预先定义;全过程电子化网上留痕、可溯可查;关键节点自动预警提醒;违规行为自动监控,及时纠正。
19
+
20
+4、实现全程安全:
21
+
22
+结合数字证书技术,对招投标过程进行安全保护;基于CA的身份认证;标书加密签名;使用多方密钥开标;数字文件投标远比纸质文件投标具有更高的安全性。
23
+
24
+电子招投标系统优势:
25
+1、提供完整的解决方案与配套服务,帮助用户最低成本使用系统
26
+
27
+2、采用了一系列标准化接口,可与其他外部系统互联互通,数据共享,为后续扩展做了充足的准备
28
+
29
+3、配备全套操作指引与帮助,将标准定制进入系统,避免人工出错
30
+
31
+4、在操作方面遵循人性化设计,大量采用自动带入、自动生成等手段,将固化的工作交由机器完成,最大化减轻操作人员工作。
32
+
33
+5、系统建设经验丰富、研发与管理水平先进
34
+
35
+6、多级安全保护措施、有效保证系统及数据安全
36
+
37
+7、平台高度功能高度灵活,可自由选配与定制,快速开发,避免重复建设
38
+

Binārs
files/26dbb78fe7c44bad995a11a55ce23d49.docx Parādīt failu


Binārs
files/2fec2856ff604d10a11242aebdc9d9ef.webp Parādīt failu


Binārs
files/4618fef86f5640c7920b0d50c79eeeb6.webp Parādīt failu


Binārs
files/65f71856a0714ae9aa623c7a559e9aea.docx Parādīt failu


Binārs
files/8009c70f71ac4a7eb0bfc18285a1c854.webp Parādīt failu


+ 5
- 0
files/83eeb99272ed4708921856c2c67efdfe.txt Parādīt failu

@@ -0,0 +1,5 @@
1
+student=tenderee=article_id 招标人
2
+course=budget
3
+bidder=teacher=budget_id 投标人
4
+
5
+

Binārs
files/93af3e4a17814498953858c09689aa5c.jpg Parādīt failu


+ 38
- 0
files/cc1698a0677c499e990c878e98e6f92e.txt Parādīt failu

@@ -0,0 +1,38 @@
1
+197	檀洪森	A-生产实际	A-在实验实习、工程实践和社会调查中完成的	基于SpringBoot和Vue框架的电子招投标系统的设计与实现	所有专业普本可选
2
+随着我国计算机技术的不断发展,信息化办公和无纸化办公越来越普遍,信息化建设也被各级法院提上日程.人民法院作为国家审判机关,招标是其进行自我建设不可或缺的工作环节.传统的招标工作不仅效率低下,而且存在着信息透明度以及公平公正等问题.电子招投标系统作为法院信息化建设的项目之一,不仅改变了传统的纸质办公模式,提高了办公效率,而且丰富了法院的信息化建设.通过对比传统的招投标业务,分析法院招标模式,我们基于B/S模式开发了电子招投标系统.电子招投标系统从招标项目发起开始,对招标项目进行发标,开标,评标,定标等环节实施,同时供应商作为投标人,在系统允许的投标时间内,进行电子投标,实现了全程电子无纸化招投标.本文围绕电子招投标系统的设计与实现,进行了如下工作:(1)介绍了本项目国内研究现状,介绍了本系统所使用的开发技术与框架,包括MVC思想,SpringBoot框架,Vue框架,Mybatis框架以及Activiti工作流.(2)通过分析法院招投标业务需求,对系统进行整体架构,模块划分,设计数据库,最后进行项目详细设计.(3)基于需求分析和项目整体设计,着重阐述了电子招投标系统的工作流管理,项目管理,招标管理,投标管理和系统管理等相关模块的实现.本文将Activiti工作流引入电子招投标系统,满足了法院流程审批需求.同时实现了招标模块与投标模块,满足了法院招投标业务需求.系统管理等其他模块
3
+
4
+电子招投标系统是一个基于网络技术的系统,实现招投标、评标、合同等业务全过程的数字化、网络化和高度集成,它主要由网络安全系统和网上业务系统组成。该系统不仅要解决招标人对招标文件的电子发布、传输、公告发布和下载等问题,而且要解决投标人对招标文件的安全性、投标时间的准确性和有效性、评标的安全性等问题不同地区的专家在相互阅读、评价、交流的同时,还可以提供丰富的投标项目历史数据、投标人历史数据、拟投标产品的丰富数据,满足各种数据仓库、数据挖掘、数据共享等需求,不同需求的数据查询、数据分析等功能......
5
+
6
+
7
+电子招投标系统核心价值:
8
+1、实现全程无纸:
9
+
10
+全过程交易载体文件全电子化,大大加快信息的流动速度,提高社会效率;节约大量纸张,绿色环保。
11
+
12
+2、实现全程共享:
13
+
14
+场地、网络、服务机构等资源共享;评标专家信息共享;投标单位诚信记录共享;中标价格信息共享。
15
+
16
+3、实现全程受控:
17
+
18
+全方位规范化网上备案、监管、 监察。流程固化并预先定义;全过程电子化网上留痕、可溯可查;关键节点自动预警提醒;违规行为自动监控,及时纠正。
19
+
20
+4、实现全程安全:
21
+
22
+结合数字证书技术,对招投标过程进行安全保护;基于CA的身份认证;标书加密签名;使用多方密钥开标;数字文件投标远比纸质文件投标具有更高的安全性。
23
+
24
+电子招投标系统优势:
25
+1、提供完整的解决方案与配套服务,帮助用户最低成本使用系统
26
+
27
+2、采用了一系列标准化接口,可与其他外部系统互联互通,数据共享,为后续扩展做了充足的准备
28
+
29
+3、配备全套操作指引与帮助,将标准定制进入系统,避免人工出错
30
+
31
+4、在操作方面遵循人性化设计,大量采用自动带入、自动生成等手段,将固化的工作交由机器完成,最大化减轻操作人员工作。
32
+
33
+5、系统建设经验丰富、研发与管理水平先进
34
+
35
+6、多级安全保护措施、有效保证系统及数据安全
36
+
37
+7、平台高度功能高度灵活,可自由选配与定制,快速开发,避免重复建设
38
+

+ 33
- 0
springboot_vue/.gitignore Parādīt failu

@@ -0,0 +1,33 @@
1
+HELP.md
2
+target/
3
+!.mvn/wrapper/maven-wrapper.jar
4
+!**/src/main/**/target/
5
+!**/src/test/**/target/
6
+
7
+### STS ###
8
+.apt_generated
9
+.classpath
10
+.factorypath
11
+.project
12
+.settings
13
+.springBeans
14
+.sts4-cache
15
+
16
+### IntelliJ IDEA ###
17
+.idea
18
+*.iws
19
+*.iml
20
+*.ipr
21
+
22
+### NetBeans ###
23
+/nbproject/private/
24
+/nbbuild/
25
+/dist/
26
+/nbdist/
27
+/.nb-gradle/
28
+build/
29
+!**/src/main/**/build/
30
+!**/src/test/**/build/
31
+
32
+### VS Code ###
33
+.vscode/

Binārs
springboot_vue/.mvn/wrapper/maven-wrapper.jar Parādīt failu


+ 2
- 0
springboot_vue/.mvn/wrapper/maven-wrapper.properties Parādīt failu

@@ -0,0 +1,2 @@
1
+distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.8.6/apache-maven-3.8.6-bin.zip
2
+wrapperUrl=https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar

+ 331
- 0
springboot_vue/mvnw Parādīt failu

@@ -0,0 +1,331 @@
1
+#!/bin/sh
2
+# ----------------------------------------------------------------------------
3
+# Licensed to the Apache Software Foundation (ASF) under one
4
+# or more contributor license agreements.  See the NOTICE file
5
+# distributed with this work for additional information
6
+# regarding copyright ownership.  The ASF licenses this file
7
+# to you under the Apache License, Version 2.0 (the
8
+# "License"); you may not use this file except in compliance
9
+# with the License.  You may obtain a copy of the License at
10
+#
11
+#    https://www.apache.org/licenses/LICENSE-2.0
12
+#
13
+# Unless required by applicable law or agreed to in writing,
14
+# software distributed under the License is distributed on an
15
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16
+# KIND, either express or implied.  See the License for the
17
+# specific language governing permissions and limitations
18
+# under the License.
19
+# ----------------------------------------------------------------------------
20
+
21
+# ----------------------------------------------------------------------------
22
+# Maven Start Up Batch script
23
+#
24
+# Required ENV vars:
25
+# ------------------
26
+#   JAVA_HOME - location of a JDK home dir
27
+#
28
+# Optional ENV vars
29
+# -----------------
30
+#   M2_HOME - location of maven2's installed home dir
31
+#   MAVEN_OPTS - parameters passed to the Java VM when running Maven
32
+#     e.g. to debug Maven itself, use
33
+#       set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
34
+#   MAVEN_SKIP_RC - flag to disable loading of mavenrc files
35
+# ----------------------------------------------------------------------------
36
+
37
+if [ -z "$MAVEN_SKIP_RC" ]; then
38
+
39
+  if [ -f /usr/local/etc/mavenrc ]; then
40
+    . /usr/local/etc/mavenrc
41
+  fi
42
+
43
+  if [ -f /etc/mavenrc ]; then
44
+    . /etc/mavenrc
45
+  fi
46
+
47
+  if [ -f "$HOME/.mavenrc" ]; then
48
+    . "$HOME/.mavenrc"
49
+  fi
50
+
51
+fi
52
+
53
+# OS specific support.  $var _must_ be set to either true or false.
54
+cygwin=false
55
+darwin=false
56
+mingw=false
57
+case "$(uname)" in
58
+CYGWIN*) cygwin=true ;;
59
+MINGW*) mingw=true ;;
60
+Darwin*)
61
+  darwin=true
62
+  # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home
63
+  # See https://developer.apple.com/library/mac/qa/qa1170/_index.html
64
+  if [ -z "$JAVA_HOME" ]; then
65
+    if [ -x "/usr/libexec/java_home" ]; then
66
+      export JAVA_HOME="$(/usr/libexec/java_home)"
67
+    else
68
+      export JAVA_HOME="/Library/Java/Home"
69
+    fi
70
+  fi
71
+  ;;
72
+esac
73
+
74
+if [ -z "$JAVA_HOME" ]; then
75
+  if [ -r /etc/gentoo-release ]; then
76
+    JAVA_HOME=$(java-config --jre-home)
77
+  fi
78
+fi
79
+
80
+if [ -z "$M2_HOME" ]; then
81
+  ## resolve links - $0 may be a link to maven's home
82
+  PRG="$0"
83
+
84
+  # need this for relative symlinks
85
+  while [ -h "$PRG" ]; do
86
+    ls=$(ls -ld "$PRG")
87
+    link=$(expr "$ls" : '.*-> \(.*\)$')
88
+    if expr "$link" : '/.*' >/dev/null; then
89
+      PRG="$link"
90
+    else
91
+      PRG="$(dirname "$PRG")/$link"
92
+    fi
93
+  done
94
+
95
+  saveddir=$(pwd)
96
+
97
+  M2_HOME=$(dirname "$PRG")/..
98
+
99
+  # make it fully qualified
100
+  M2_HOME=$(cd "$M2_HOME" && pwd)
101
+
102
+  cd "$saveddir"
103
+  # echo Using m2 at $M2_HOME
104
+fi
105
+
106
+# For Cygwin, ensure paths are in UNIX format before anything is touched
107
+if $cygwin; then
108
+  [ -n "$M2_HOME" ] &&
109
+    M2_HOME=$(cygpath --unix "$M2_HOME")
110
+  [ -n "$JAVA_HOME" ] &&
111
+    JAVA_HOME=$(cygpath --unix "$JAVA_HOME")
112
+  [ -n "$CLASSPATH" ] &&
113
+    CLASSPATH=$(cygpath --path --unix "$CLASSPATH")
114
+fi
115
+
116
+# For Mingw, ensure paths are in UNIX format before anything is touched
117
+if $mingw; then
118
+  [ -n "$M2_HOME" ] &&
119
+    M2_HOME="$( (
120
+      cd "$M2_HOME"
121
+      pwd
122
+    ))"
123
+  [ -n "$JAVA_HOME" ] &&
124
+    JAVA_HOME="$( (
125
+      cd "$JAVA_HOME"
126
+      pwd
127
+    ))"
128
+fi
129
+
130
+if [ -z "$JAVA_HOME" ]; then
131
+  javaExecutable="$(which javac)"
132
+  if [ -n "$javaExecutable" ] && ! [ "$(expr \"$javaExecutable\" : '\([^ ]*\)')" = "no" ]; then
133
+    # readlink(1) is not available as standard on Solaris 10.
134
+    readLink=$(which readlink)
135
+    if [ ! $(expr "$readLink" : '\([^ ]*\)') = "no" ]; then
136
+      if $darwin; then
137
+        javaHome="$(dirname \"$javaExecutable\")"
138
+        javaExecutable="$(cd \"$javaHome\" && pwd -P)/javac"
139
+      else
140
+        javaExecutable="$(readlink -f \"$javaExecutable\")"
141
+      fi
142
+      javaHome="$(dirname \"$javaExecutable\")"
143
+      javaHome=$(expr "$javaHome" : '\(.*\)/bin')
144
+      JAVA_HOME="$javaHome"
145
+      export JAVA_HOME
146
+    fi
147
+  fi
148
+fi
149
+
150
+if [ -z "$JAVACMD" ]; then
151
+  if [ -n "$JAVA_HOME" ]; then
152
+    if [ -x "$JAVA_HOME/jre/sh/java" ]; then
153
+      # IBM's JDK on AIX uses strange locations for the executables
154
+      JAVACMD="$JAVA_HOME/jre/sh/java"
155
+    else
156
+      JAVACMD="$JAVA_HOME/bin/java"
157
+    fi
158
+  else
159
+    JAVACMD="$(
160
+      \unset -f command
161
+      \command -v java
162
+    )"
163
+  fi
164
+fi
165
+
166
+if [ ! -x "$JAVACMD" ]; then
167
+  echo "Error: JAVA_HOME is not defined correctly." >&2
168
+  echo "  We cannot execute $JAVACMD" >&2
169
+  exit 1
170
+fi
171
+
172
+if [ -z "$JAVA_HOME" ]; then
173
+  echo "Warning: JAVA_HOME environment variable is not set."
174
+fi
175
+
176
+CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher
177
+
178
+# traverses directory structure from process work directory to filesystem root
179
+# first directory with .mvn subdirectory is considered project base directory
180
+find_maven_basedir() {
181
+
182
+  if [ -z "$1" ]; then
183
+    echo "Path not specified to find_maven_basedir"
184
+    return 1
185
+  fi
186
+
187
+  basedir="$1"
188
+  wdir="$1"
189
+  while [ "$wdir" != '/' ]; do
190
+    if [ -d "$wdir"/.mvn ]; then
191
+      basedir=$wdir
192
+      break
193
+    fi
194
+    # workaround for JBEAP-8937 (on Solaris 10/Sparc)
195
+    if [ -d "${wdir}" ]; then
196
+      wdir=$(
197
+        cd "$wdir/.."
198
+        pwd
199
+      )
200
+    fi
201
+    # end of workaround
202
+  done
203
+  echo "${basedir}"
204
+}
205
+
206
+# concatenates all lines of a file
207
+concat_lines() {
208
+  if [ -f "$1" ]; then
209
+    echo "$(tr -s '\n' ' ' <"$1")"
210
+  fi
211
+}
212
+
213
+BASE_DIR=$(find_maven_basedir "$(pwd)")
214
+if [ -z "$BASE_DIR" ]; then
215
+  exit 1
216
+fi
217
+
218
+##########################################################################################
219
+# Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
220
+# This allows using the maven wrapper in projects that prohibit checking in binary data.
221
+##########################################################################################
222
+if [ -r "$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" ]; then
223
+  if [ "$MVNW_VERBOSE" = true ]; then
224
+    echo "Found .mvn/wrapper/maven-wrapper.jar"
225
+  fi
226
+else
227
+  if [ "$MVNW_VERBOSE" = true ]; then
228
+    echo "Couldn't find .mvn/wrapper/maven-wrapper.jar, downloading it ..."
229
+  fi
230
+  if [ -n "$MVNW_REPOURL" ]; then
231
+    jarUrl="$MVNW_REPOURL/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar"
232
+  else
233
+    jarUrl="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar"
234
+  fi
235
+  while IFS="=" read key value; do
236
+    case "$key" in wrapperUrl)
237
+      jarUrl="$value"
238
+      break
239
+      ;;
240
+    esac
241
+  done <"$BASE_DIR/.mvn/wrapper/maven-wrapper.properties"
242
+  if [ "$MVNW_VERBOSE" = true ]; then
243
+    echo "Downloading from: $jarUrl"
244
+  fi
245
+  wrapperJarPath="$BASE_DIR/.mvn/wrapper/maven-wrapper.jar"
246
+  if $cygwin; then
247
+    wrapperJarPath=$(cygpath --path --windows "$wrapperJarPath")
248
+  fi
249
+
250
+  if command -v wget >/dev/null; then
251
+    if [ "$MVNW_VERBOSE" = true ]; then
252
+      echo "Found wget ... using wget"
253
+    fi
254
+    if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then
255
+      wget "$jarUrl" -O "$wrapperJarPath" || rm -f "$wrapperJarPath"
256
+    else
257
+      wget --http-user=$MVNW_USERNAME --http-password=$MVNW_PASSWORD "$jarUrl" -O "$wrapperJarPath" || rm -f "$wrapperJarPath"
258
+    fi
259
+  elif command -v curl >/dev/null; then
260
+    if [ "$MVNW_VERBOSE" = true ]; then
261
+      echo "Found curl ... using curl"
262
+    fi
263
+    if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then
264
+      curl -o "$wrapperJarPath" "$jarUrl" -f
265
+    else
266
+      curl --user $MVNW_USERNAME:$MVNW_PASSWORD -o "$wrapperJarPath" "$jarUrl" -f
267
+    fi
268
+
269
+  else
270
+    if [ "$MVNW_VERBOSE" = true ]; then
271
+      echo "Falling back to using Java to download"
272
+    fi
273
+    javaClass="$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.java"
274
+    # For Cygwin, switch paths to Windows format before running javac
275
+    if $cygwin; then
276
+      javaClass=$(cygpath --path --windows "$javaClass")
277
+    fi
278
+    if [ -e "$javaClass" ]; then
279
+      if [ ! -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then
280
+        if [ "$MVNW_VERBOSE" = true ]; then
281
+          echo " - Compiling MavenWrapperDownloader.java ..."
282
+        fi
283
+        # Compiling the Java class
284
+        ("$JAVA_HOME/bin/javac" "$javaClass")
285
+      fi
286
+      if [ -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then
287
+        # Running the downloader
288
+        if [ "$MVNW_VERBOSE" = true ]; then
289
+          echo " - Running MavenWrapperDownloader.java ..."
290
+        fi
291
+        ("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperDownloader "$MAVEN_PROJECTBASEDIR")
292
+      fi
293
+    fi
294
+  fi
295
+fi
296
+##########################################################################################
297
+# End of extension
298
+##########################################################################################
299
+
300
+export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"}
301
+if [ "$MVNW_VERBOSE" = true ]; then
302
+  echo $MAVEN_PROJECTBASEDIR
303
+fi
304
+MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS"
305
+
306
+# For Cygwin, switch paths to Windows format before running java
307
+if $cygwin; then
308
+  [ -n "$M2_HOME" ] &&
309
+    M2_HOME=$(cygpath --path --windows "$M2_HOME")
310
+  [ -n "$JAVA_HOME" ] &&
311
+    JAVA_HOME=$(cygpath --path --windows "$JAVA_HOME")
312
+  [ -n "$CLASSPATH" ] &&
313
+    CLASSPATH=$(cygpath --path --windows "$CLASSPATH")
314
+  [ -n "$MAVEN_PROJECTBASEDIR" ] &&
315
+    MAVEN_PROJECTBASEDIR=$(cygpath --path --windows "$MAVEN_PROJECTBASEDIR")
316
+fi
317
+
318
+# Provide a "standardized" way to retrieve the CLI args that will
319
+# work with both Windows and non-Windows executions.
320
+MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $@"
321
+export MAVEN_CMD_LINE_ARGS
322
+
323
+WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
324
+
325
+exec "$JAVACMD" \
326
+  $MAVEN_OPTS \
327
+  $MAVEN_DEBUG_OPTS \
328
+  -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \
329
+  "-Dmaven.home=${M2_HOME}" \
330
+  "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \
331
+  ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@"

+ 188
- 0
springboot_vue/mvnw.cmd Parādīt failu

@@ -0,0 +1,188 @@
1
+@REM ----------------------------------------------------------------------------
2
+@REM Licensed to the Apache Software Foundation (ASF) under one
3
+@REM or more contributor license agreements.  See the NOTICE file
4
+@REM distributed with this work for additional information
5
+@REM regarding copyright ownership.  The ASF licenses this file
6
+@REM to you under the Apache License, Version 2.0 (the
7
+@REM "License"); you may not use this file except in compliance
8
+@REM with the License.  You may obtain a copy of the License at
9
+@REM
10
+@REM    https://www.apache.org/licenses/LICENSE-2.0
11
+@REM
12
+@REM Unless required by applicable law or agreed to in writing,
13
+@REM software distributed under the License is distributed on an
14
+@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15
+@REM KIND, either express or implied.  See the License for the
16
+@REM specific language governing permissions and limitations
17
+@REM under the License.
18
+@REM ----------------------------------------------------------------------------
19
+
20
+@REM ----------------------------------------------------------------------------
21
+@REM Maven Start Up Batch script
22
+@REM
23
+@REM Required ENV vars:
24
+@REM JAVA_HOME - location of a JDK home dir
25
+@REM
26
+@REM Optional ENV vars
27
+@REM M2_HOME - location of maven2's installed home dir
28
+@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands
29
+@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a keystroke before ending
30
+@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven
31
+@REM     e.g. to debug Maven itself, use
32
+@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
33
+@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files
34
+@REM ----------------------------------------------------------------------------
35
+
36
+@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on'
37
+@echo off
38
+@REM set title of command window
39
+title %0
40
+@REM enable echoing by setting MAVEN_BATCH_ECHO to 'on'
41
+@if "%MAVEN_BATCH_ECHO%" == "on"  echo %MAVEN_BATCH_ECHO%
42
+
43
+@REM set %HOME% to equivalent of $HOME
44
+if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%")
45
+
46
+@REM Execute a user defined script before this one
47
+if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre
48
+@REM check for pre script, once with legacy .bat ending and once with .cmd ending
49
+if exist "%USERPROFILE%\mavenrc_pre.bat" call "%USERPROFILE%\mavenrc_pre.bat" %*
50
+if exist "%USERPROFILE%\mavenrc_pre.cmd" call "%USERPROFILE%\mavenrc_pre.cmd" %*
51
+:skipRcPre
52
+
53
+@setlocal
54
+
55
+set ERROR_CODE=0
56
+
57
+@REM To isolate internal variables from possible post scripts, we use another setlocal
58
+@setlocal
59
+
60
+@REM ==== START VALIDATION ====
61
+if not "%JAVA_HOME%" == "" goto OkJHome
62
+
63
+echo.
64
+echo Error: JAVA_HOME not found in your environment. >&2
65
+echo Please set the JAVA_HOME variable in your environment to match the >&2
66
+echo location of your Java installation. >&2
67
+echo.
68
+goto error
69
+
70
+:OkJHome
71
+if exist "%JAVA_HOME%\bin\java.exe" goto init
72
+
73
+echo.
74
+echo Error: JAVA_HOME is set to an invalid directory. >&2
75
+echo JAVA_HOME = "%JAVA_HOME%" >&2
76
+echo Please set the JAVA_HOME variable in your environment to match the >&2
77
+echo location of your Java installation. >&2
78
+echo.
79
+goto error
80
+
81
+@REM ==== END VALIDATION ====
82
+
83
+:init
84
+
85
+@REM Find the project base dir, i.e. the directory that contains the folder ".mvn".
86
+@REM Fallback to current working directory if not found.
87
+
88
+set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR%
89
+IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir
90
+
91
+set EXEC_DIR=%CD%
92
+set WDIR=%EXEC_DIR%
93
+:findBaseDir
94
+IF EXIST "%WDIR%"\.mvn goto baseDirFound
95
+cd ..
96
+IF "%WDIR%"=="%CD%" goto baseDirNotFound
97
+set WDIR=%CD%
98
+goto findBaseDir
99
+
100
+:baseDirFound
101
+set MAVEN_PROJECTBASEDIR=%WDIR%
102
+cd "%EXEC_DIR%"
103
+goto endDetectBaseDir
104
+
105
+:baseDirNotFound
106
+set MAVEN_PROJECTBASEDIR=%EXEC_DIR%
107
+cd "%EXEC_DIR%"
108
+
109
+:endDetectBaseDir
110
+
111
+IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig
112
+
113
+@setlocal EnableExtensions EnableDelayedExpansion
114
+for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a
115
+@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS%
116
+
117
+:endReadAdditionalConfig
118
+
119
+SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe"
120
+set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar"
121
+set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
122
+
123
+set DOWNLOAD_URL="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar"
124
+
125
+FOR /F "usebackq tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO (
126
+    IF "%%A"=="wrapperUrl" SET DOWNLOAD_URL=%%B
127
+)
128
+
129
+@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
130
+@REM This allows using the maven wrapper in projects that prohibit checking in binary data.
131
+if exist %WRAPPER_JAR% (
132
+    if "%MVNW_VERBOSE%" == "true" (
133
+        echo Found %WRAPPER_JAR%
134
+    )
135
+) else (
136
+    if not "%MVNW_REPOURL%" == "" (
137
+        SET DOWNLOAD_URL="%MVNW_REPOURL%/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar"
138
+    )
139
+    if "%MVNW_VERBOSE%" == "true" (
140
+        echo Couldn't find %WRAPPER_JAR%, downloading it ...
141
+        echo Downloading from: %DOWNLOAD_URL%
142
+    )
143
+
144
+    powershell -Command "&{"^
145
+		"$webclient = new-object System.Net.WebClient;"^
146
+		"if (-not ([string]::IsNullOrEmpty('%MVNW_USERNAME%') -and [string]::IsNullOrEmpty('%MVNW_PASSWORD%'))) {"^
147
+		"$webclient.Credentials = new-object System.Net.NetworkCredential('%MVNW_USERNAME%', '%MVNW_PASSWORD%');"^
148
+		"}"^
149
+		"[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $webclient.DownloadFile('%DOWNLOAD_URL%', '%WRAPPER_JAR%')"^
150
+		"}"
151
+    if "%MVNW_VERBOSE%" == "true" (
152
+        echo Finished downloading %WRAPPER_JAR%
153
+    )
154
+)
155
+@REM End of extension
156
+
157
+@REM Provide a "standardized" way to retrieve the CLI args that will
158
+@REM work with both Windows and non-Windows executions.
159
+set MAVEN_CMD_LINE_ARGS=%*
160
+
161
+%MAVEN_JAVA_EXE% ^
162
+  %JVM_CONFIG_MAVEN_PROPS% ^
163
+  %MAVEN_OPTS% ^
164
+  %MAVEN_DEBUG_OPTS% ^
165
+  -classpath %WRAPPER_JAR% ^
166
+  "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" ^
167
+  %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %*
168
+if ERRORLEVEL 1 goto error
169
+goto end
170
+
171
+:error
172
+set ERROR_CODE=1
173
+
174
+:end
175
+@endlocal & set ERROR_CODE=%ERROR_CODE%
176
+
177
+if not "%MAVEN_SKIP_RC%"=="" goto skipRcPost
178
+@REM check for post script, once with legacy .bat ending and once with .cmd ending
179
+if exist "%USERPROFILE%\mavenrc_post.bat" call "%USERPROFILE%\mavenrc_post.bat"
180
+if exist "%USERPROFILE%\mavenrc_post.cmd" call "%USERPROFILE%\mavenrc_post.cmd"
181
+:skipRcPost
182
+
183
+@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on'
184
+if "%MAVEN_BATCH_PAUSE%"=="on" pause
185
+
186
+if "%MAVEN_TERMINATE_CMD%"=="on" exit %ERROR_CODE%
187
+
188
+cmd /C exit /B %ERROR_CODE%

+ 152
- 0
springboot_vue/pom.xml Parādīt failu

@@ -0,0 +1,152 @@
1
+<?xml version="1.0" encoding="UTF-8"?>
2
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
4
+    <modelVersion>4.0.0</modelVersion>
5
+    <parent>
6
+        <groupId>org.springframework.boot</groupId>
7
+        <artifactId>spring-boot-starter-parent</artifactId>
8
+        <version>2.7.3</version>
9
+        <relativePath/> <!-- lookup parent from repository -->
10
+    </parent>
11
+    <groupId>com.ly</groupId>
12
+    <artifactId>springboot_vue</artifactId>
13
+    <version>0.0.1-SNAPSHOT</version>
14
+    <name>springboot_vue</name>
15
+    <description>Demo project for Spring Boot</description>
16
+    <properties>
17
+        <java.version>1.8</java.version>
18
+    </properties>
19
+    <dependencies>
20
+        <dependency>
21
+            <groupId>org.springframework.boot</groupId>
22
+            <artifactId>spring-boot-starter-web</artifactId>
23
+        </dependency>
24
+        <dependency>
25
+            <groupId>org.mybatis.spring.boot</groupId>
26
+            <artifactId>mybatis-spring-boot-starter</artifactId>
27
+            <version>2.2.0</version>
28
+        </dependency>
29
+        <dependency>
30
+            <groupId>mysql</groupId>
31
+            <artifactId>mysql-connector-java</artifactId>
32
+            <scope>runtime</scope>
33
+        </dependency>
34
+        <!--       邮箱依赖-->
35
+        <dependency>
36
+            <groupId>org.springframework.boot</groupId>
37
+            <artifactId>spring-boot-starter-mail</artifactId>
38
+        </dependency>
39
+        <dependency>
40
+            <groupId>org.projectlombok</groupId>
41
+            <artifactId>lombok</artifactId>
42
+            <optional>true</optional>
43
+        </dependency>
44
+        <!-- 代码生成器 -->
45
+        <dependency>
46
+            <groupId>com.baomidou</groupId>
47
+            <artifactId>mybatis-plus-generator</artifactId>
48
+            <version>3.5.1</version>
49
+        </dependency>
50
+        <dependency>
51
+            <groupId>org.apache.velocity</groupId>
52
+            <artifactId>velocity</artifactId>
53
+            <version>1.7</version>
54
+        </dependency>
55
+        <!-- websocket -->
56
+        <dependency>
57
+            <groupId>org.springframework.boot</groupId>
58
+            <artifactId>spring-boot-starter-websocket</artifactId>
59
+        </dependency>
60
+
61
+        <dependency>
62
+            <groupId>org.springframework.boot</groupId>
63
+            <artifactId>spring-boot-starter-test</artifactId>
64
+            <scope>test</scope>
65
+        </dependency>
66
+        <!--解决配置文件注解问题-->
67
+        <dependency>
68
+            <groupId>org.springframework.boot</groupId>
69
+            <artifactId>spring-boot-configuration-processor</artifactId>
70
+        </dependency>
71
+        <!--mp依赖-->
72
+        <dependency>
73
+            <groupId>com.baomidou</groupId>
74
+            <artifactId>mybatis-plus-boot-starter</artifactId>
75
+            <version>3.4.3</version>
76
+        </dependency>
77
+        <!--druid依赖-->
78
+        <dependency>
79
+            <groupId>com.alibaba</groupId>
80
+            <artifactId>druid-spring-boot-starter</artifactId>
81
+            <version>1.2.6</version>
82
+        </dependency>
83
+        <!--hutool工具-->
84
+        <dependency>
85
+            <groupId>cn.hutool</groupId>
86
+            <artifactId>hutool-all</artifactId>
87
+            <version>5.8.5</version>
88
+        </dependency>
89
+        <dependency>
90
+            <groupId>org.apache.poi</groupId>
91
+            <artifactId>poi-ooxml</artifactId>
92
+            <version>4.1.2</version>
93
+        </dependency>
94
+        <!-- JWT依赖 -->
95
+        <dependency>
96
+            <groupId>com.auth0</groupId>
97
+            <artifactId>java-jwt</artifactId>
98
+            <version>3.4.0</version>
99
+        </dependency>
100
+        <!--redis-->
101
+        <dependency>
102
+            <groupId>org.springframework.boot</groupId>
103
+            <artifactId>spring-boot-starter-data-redis</artifactId>
104
+        </dependency>
105
+
106
+
107
+    </dependencies>
108
+
109
+    <build>
110
+        <plugins>
111
+            <plugin>
112
+                <groupId>org.springframework.boot</groupId>
113
+                <artifactId>spring-boot-maven-plugin</artifactId>
114
+                <configuration>
115
+                    <excludes>
116
+                        <exclude>
117
+                            <groupId>org.projectlombok</groupId>
118
+                            <artifactId>lombok</artifactId>
119
+                        </exclude>
120
+                    </excludes>
121
+                </configuration>
122
+            </plugin>
123
+        </plugins>
124
+    </build>
125
+    <repositories>
126
+        <repository>
127
+            <id>nexus-aliyun</id>
128
+            <name>nexus-aliyun</name>
129
+            <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
130
+            <releases>
131
+                <enabled>true</enabled>
132
+            </releases>
133
+            <snapshots>
134
+                <enabled>false</enabled>
135
+            </snapshots>
136
+        </repository>
137
+    </repositories>
138
+
139
+    <pluginRepositories>
140
+        <pluginRepository>
141
+            <id>public</id>
142
+            <name>aliyun nexus</name>
143
+            <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
144
+            <releases>
145
+                <enabled>true</enabled>
146
+            </releases>
147
+            <snapshots>
148
+                <enabled>false</enabled>
149
+            </snapshots>
150
+        </pluginRepository>
151
+    </pluginRepositories>
152
+</project>

+ 20
- 0
springboot_vue/src/main/java/com/ly/SpringbootVueApplication.java Parādīt failu

@@ -0,0 +1,20 @@
1
+package com.ly;
2
+
3
+import org.springframework.boot.SpringApplication;
4
+import org.springframework.boot.autoconfigure.SpringBootApplication;
5
+//启用缓存
6
+import org.springframework.cache.annotation.EnableCaching;
7
+import org.springframework.web.bind.annotation.GetMapping;
8
+import org.springframework.web.bind.annotation.RestController;
9
+
10
+
11
+@SpringBootApplication
12
+public class SpringbootVueApplication {
13
+
14
+    public static void main(String[] args) {
15
+        SpringApplication.run(SpringbootVueApplication.class, args);
16
+
17
+    }
18
+
19
+
20
+}

+ 111
- 0
springboot_vue/src/main/java/com/ly/component/WebSocketServer.java Parādīt failu

@@ -0,0 +1,111 @@
1
+package com.ly.component;
2
+
3
+import cn.hutool.json.JSONArray;
4
+import cn.hutool.json.JSONObject;
5
+import cn.hutool.json.JSONUtil;
6
+import org.slf4j.Logger;
7
+import org.slf4j.LoggerFactory;
8
+import org.springframework.stereotype.Component;
9
+
10
+import javax.websocket.*;
11
+import javax.websocket.server.PathParam;
12
+import javax.websocket.server.ServerEndpoint;
13
+import java.util.Map;
14
+import java.util.concurrent.ConcurrentHashMap;
15
+
16
+/**
17
+ * @author websocket服务
18
+ */
19
+@ServerEndpoint(value = "/imserver/{username}")
20
+@Component
21
+public class WebSocketServer {
22
+    private static final Logger log = LoggerFactory.getLogger(WebSocketServer.class);
23
+    /**
24
+     * 记录当前在线连接数
25
+     */
26
+    public static final Map<String, Session> sessionMap = new ConcurrentHashMap<>();
27
+    /**
28
+     * 连接建立成功调用的方法
29
+     */
30
+    @OnOpen
31
+    public void onOpen(Session session, @PathParam("username") String username) {
32
+        sessionMap.put(username, session);
33
+        log.info("有新用户加入,username={}, 当前在线人数为:{}", username, sessionMap.size());
34
+        JSONObject result = new JSONObject();
35
+        JSONArray array = new JSONArray();
36
+        result.set("users", array);
37
+        for (Object key : sessionMap.keySet()) {
38
+            JSONObject jsonObject = new JSONObject();
39
+            jsonObject.set("username", key);
40
+            // {"username", "zhang", "username": "admin"}
41
+            array.add(jsonObject);
42
+        }
43
+//        {"users": [{"username": "zhang"},{ "username": "admin"}]}
44
+        sendAllMessage(JSONUtil.toJsonStr(result));  // 后台发送消息给所有的客户端
45
+    }
46
+    /**
47
+     * 连接关闭调用的方法
48
+     */
49
+    @OnClose
50
+    public void onClose(Session session, @PathParam("username") String username) {
51
+        sessionMap.remove(username);
52
+        log.info("有一连接关闭,移除username={}的用户session, 当前在线人数为:{}", username, sessionMap.size());
53
+    }
54
+    /**
55
+     * 收到客户端消息后调用的方法
56
+     * 后台收到客户端发送过来的消息
57
+     * onMessage 是一个消息的中转站
58
+     * 接受 浏览器端 socket.send 发送过来的 json数据
59
+     * @param message 客户端发送过来的消息
60
+     */
61
+    @OnMessage
62
+    public void onMessage(String message, Session session, @PathParam("username") String username) {
63
+        log.info("服务端收到用户username={}的消息:{}", username, message);
64
+        JSONObject obj = JSONUtil.parseObj(message);
65
+        String toUsername = obj.getStr("to"); // to表示发送给哪个用户,比如 admin
66
+        String text = obj.getStr("text"); // 发送的消息文本  hello
67
+        // {"to": "admin", "text": "聊天文本"}
68
+        Session toSession = sessionMap.get(toUsername); // 根据 to用户名来获取 session,再通过session发送消息文本
69
+        if (toSession != null) {
70
+            // 服务器端 再把消息组装一下,组装后的消息包含发送人和发送的文本内容
71
+            // {"from": "zhang", "text": "hello"}
72
+            JSONObject jsonObject = new JSONObject();
73
+            jsonObject.set("from", username);  // from 是 zhang
74
+            jsonObject.set("text", text);  // text 同上面的text
75
+            this.sendMessage(jsonObject.toString(), toSession);
76
+            log.info("发送给用户username={},消息:{}", toUsername, jsonObject.toString());
77
+        } else {
78
+            log.info("发送失败,未找到用户username={}的session", toUsername);
79
+        }
80
+    }
81
+    @OnError
82
+    public void onError(Session session, Throwable error) {
83
+        log.error("发生错误");
84
+        error.printStackTrace();
85
+    }
86
+    /**
87
+     * 服务端发送消息给客户端
88
+     */
89
+    private void sendMessage(String message, Session toSession) {
90
+        try {
91
+            log.info("服务端给客户端[{}]发送消息{}", toSession.getId(), message);
92
+            toSession.getBasicRemote().sendText(message);
93
+        } catch (Exception e) {
94
+            log.error("服务端发送消息给客户端失败", e);
95
+        }
96
+    }
97
+    /**
98
+     * 服务端发送消息给所有客户端
99
+     */
100
+    private void sendAllMessage(String message) {
101
+        try {
102
+            for (Session session : sessionMap.values()) {
103
+                log.info("服务端给客户端[{}]发送消息{}", session.getId(), message);
104
+                session.getBasicRemote().sendText(message);
105
+            }
106
+        } catch (Exception e) {
107
+            log.error("服务端发送消息给客户端失败", e);
108
+        }
109
+    }
110
+}
111
+

+ 9
- 0
springboot_vue/src/main/java/com/ly/config/AuthAccess.java Parādīt failu

@@ -0,0 +1,9 @@
1
+package com.ly.config;
2
+import java.lang.annotation.*;
3
+
4
+@Target({ElementType.METHOD})
5
+@Retention(RetentionPolicy.RUNTIME)
6
+@Documented
7
+public @interface AuthAccess {
8
+
9
+}

+ 24
- 0
springboot_vue/src/main/java/com/ly/config/CorsConfig.java Parādīt failu

@@ -0,0 +1,24 @@
1
+package com.ly.config;
2
+import org.springframework.context.annotation.Bean;
3
+import org.springframework.context.annotation.Configuration;
4
+import org.springframework.web.cors.CorsConfiguration;
5
+import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
6
+import org.springframework.web.filter.CorsFilter;
7
+@Configuration
8
+public class CorsConfig {
9
+    // 当前跨域请求最大有效时长。这里默认1天
10
+    private static final long MAX_AGE = 24 * 60 * 60;
11
+
12
+    @Bean
13
+    public CorsFilter corsFilter() {
14
+        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
15
+        CorsConfiguration corsConfiguration = new CorsConfiguration();
16
+        corsConfiguration.addAllowedOrigin("http://localhost:8080"); // 1 设置访问源地址
17
+        corsConfiguration.addAllowedHeader("*"); // 2 设置访问源请求头
18
+        corsConfiguration.addAllowedMethod("*"); // 3 设置访问源请求方法
19
+        corsConfiguration.setMaxAge(MAX_AGE);
20
+        source.registerCorsConfiguration("/**", corsConfiguration); // 4 对接口配置跨域设置
21
+        return new CorsFilter(source);
22
+    }
23
+
24
+}

+ 25
- 0
springboot_vue/src/main/java/com/ly/config/InterceptorConfig.java Parādīt failu

@@ -0,0 +1,25 @@
1
+package com.ly.config;
2
+
3
+import com.ly.controller.interceptor.JwtInterceptor;
4
+import org.springframework.context.annotation.Bean;
5
+import org.springframework.context.annotation.Configuration;
6
+import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
7
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
8
+@Configuration
9
+public class InterceptorConfig implements WebMvcConfigurer {
10
+
11
+   @Override
12
+   public void addInterceptors(InterceptorRegistry registry) {
13
+       registry.addInterceptor(jwtInterceptor())
14
+                .addPathPatterns("/**")  // 拦截所有请求,通过判断token是否合法来决定是否需要登录
15
+               .excludePathPatterns("/user/login", "/user/register", "/**/export", "/**/import" ,"/file/**"
16
+               , "/swagger-resources/**", "/webjars/**","/user/register1");
17
+   }
18
+
19
+    @Bean
20
+    public JwtInterceptor jwtInterceptor() {
21
+        return new JwtInterceptor();
22
+    }
23
+
24
+
25
+}

+ 16
- 0
springboot_vue/src/main/java/com/ly/config/MpConfig.java Parādīt failu

@@ -0,0 +1,16 @@
1
+package com.ly.config;
2
+
3
+import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
4
+import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
5
+import org.springframework.context.annotation.Bean;
6
+import org.springframework.context.annotation.Configuration;
7
+//分页拦截器
8
+@Configuration
9
+public class MpConfig {
10
+    @Bean
11
+    public MybatisPlusInterceptor mpInterceptor(){
12
+        MybatisPlusInterceptor mp=new MybatisPlusInterceptor();
13
+        mp.addInnerInterceptor(new PaginationInnerInterceptor());
14
+        return mp;
15
+    }
16
+}

+ 17
- 0
springboot_vue/src/main/java/com/ly/config/WebSocketConfig.java Parādīt failu

@@ -0,0 +1,17 @@
1
+package com.ly.config;
2
+
3
+import org.springframework.context.annotation.Bean;
4
+import org.springframework.context.annotation.Configuration;
5
+import org.springframework.web.socket.server.standard.ServerEndpointExporter;
6
+
7
+@Configuration
8
+public class WebSocketConfig {
9
+    /**
10
+     * 注入一个ServerEndpointExporter,该Bean会自动注册使用@ServerEndpoint注解申明的websocket endpoint
11
+     */
12
+    @Bean
13
+    public ServerEndpointExporter serverEndpointExporter() {
14
+        return new ServerEndpointExporter();
15
+    }
16
+}
17
+

+ 77
- 0
springboot_vue/src/main/java/com/ly/controller/ApprovalController.java Parādīt failu

@@ -0,0 +1,77 @@
1
+package com.ly.controller;
2
+
3
+import cn.hutool.core.date.DateUtil;
4
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
5
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
6
+import com.ly.controller.util.Result;
7
+import com.ly.controller.util.RoleEnum;
8
+import com.ly.controller.util.TokenUtils;
9
+import com.ly.domain.Approval;
10
+import com.ly.domain.Role;
11
+import com.ly.domain.User;
12
+import com.ly.service.ApprovalService;
13
+import com.ly.service.RoleService;
14
+import org.springframework.web.bind.annotation.*;
15
+
16
+import javax.annotation.Resource;
17
+import java.util.List;
18
+
19
+@RequestMapping("/approval")
20
+@RestController
21
+public class ApprovalController {
22
+    @Resource
23
+    private ApprovalService approvalService;
24
+
25
+
26
+
27
+    @DeleteMapping("/{id}")
28
+    public Result delete(@PathVariable Integer id) {
29
+        approvalService.removeById(id);
30
+        return Result.success();
31
+    }
32
+
33
+    @PostMapping("/del/batch")
34
+    public Result deleteBatch(@RequestBody List<Integer> ids) {
35
+        approvalService.removeByIds(ids);
36
+        return Result.success();
37
+    }
38
+
39
+    @GetMapping
40
+    public Result findAll() {
41
+        return Result.success(approvalService.list());
42
+    }
43
+
44
+    @GetMapping("/{id}")
45
+    public Result findOne(@PathVariable Integer id) {
46
+        return Result.success(approvalService.getById(id));
47
+    }
48
+
49
+    @PostMapping
50
+    public Result save(@RequestBody Approval approval) {
51
+        if (approval.getId() == null) {
52
+            // 新增
53
+            approval.setTime(DateUtil.today());
54
+            approval.setUser(TokenUtils.getCurrentUser().getUsername());
55
+        }
56
+        approvalService.saveOrUpdate(approval);
57
+        return Result.success();
58
+    }
59
+
60
+    // 分页查询做一下筛选
61
+    @GetMapping("/page")
62
+    public Result findPage(@RequestParam(defaultValue = "") String name,
63
+                           @RequestParam Integer pageNum,
64
+                           @RequestParam Integer pageSize) {
65
+        QueryWrapper<Approval> queryWrapper = new QueryWrapper<>();
66
+        queryWrapper.orderByDesc("id");
67
+        if (!"".equals(name)) {
68
+            queryWrapper.like("name", name);
69
+        }
70
+        User currentUser = TokenUtils.getCurrentUser();
71
+        if (RoleEnum.tenderee.toString().equals(currentUser.getRole())) {  // 角色是招标人
72
+            queryWrapper.eq("user", currentUser.getUsername()).or().eq("state","审核通过");
73
+        }
74
+        return Result.success(approvalService.page(new Page<>(pageNum, pageSize), queryWrapper));
75
+    }
76
+
77
+}

+ 122
- 0
springboot_vue/src/main/java/com/ly/controller/ArticleController.java Parādīt failu

@@ -0,0 +1,122 @@
1
+package com.ly.controller;
2
+
3
+import cn.hutool.core.collection.CollUtil;
4
+import cn.hutool.core.date.DateUtil;
5
+import cn.hutool.core.util.StrUtil;
6
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
7
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
8
+import com.ly.controller.util.Constants;
9
+import com.ly.controller.util.Result;
10
+import com.ly.controller.util.RoleEnum;
11
+import com.ly.controller.util.TokenUtils;
12
+import com.ly.dao.ArticleDao;
13
+import com.ly.domain.*;
14
+import com.ly.exception.ServiceException;
15
+import com.ly.service.ArticleService;
16
+import com.ly.service.UserService;
17
+import org.springframework.beans.factory.annotation.Autowired;
18
+import org.springframework.web.bind.annotation.*;
19
+
20
+import javax.annotation.Resource;
21
+import java.text.SimpleDateFormat;
22
+import java.util.List;
23
+
24
+@RequestMapping("/article")
25
+@RestController
26
+public class ArticleController  {
27
+    @Autowired
28
+    private ArticleService articleService;
29
+    @Autowired
30
+    private ArticleDao articleDao;
31
+    @Autowired
32
+    private UserService userService;
33
+    @PostMapping
34
+    public Result save(@RequestBody Article article) {
35
+        if(article.getId()==null){
36
+        article.setUser(TokenUtils.getCurrentUser().getNickname());
37
+       // article.setUser(TokenUtils.getCurrentUser().getUsername());
38
+            QueryWrapper<User> queryWrapper = new QueryWrapper<User>();
39
+            queryWrapper.eq("nickname",TokenUtils.getCurrentUser().getNickname());
40
+            User one =  userService.getOne(queryWrapper);
41
+
42
+            userService.updateById(one);
43
+
44
+        }else {
45
+            return Result.error(Constants.CODE_400, "参数错误");
46
+
47
+        }
48
+        articleService.saveOrUpdate(article);
49
+        return Result.success();
50
+
51
+
52
+    }
53
+    @PostMapping("save1")
54
+    public Result save1(@RequestBody Article article) {
55
+        if(article.getId()==null){
56
+            article.setUser(TokenUtils.getCurrentUser().getNickname());
57
+            article.setUid(TokenUtils.getCurrentUser().getId());
58
+            List<Article> list = articleService.list(new QueryWrapper<Article>()
59
+                    .eq("uid", TokenUtils.getCurrentUser().getId())
60
+                    .eq("user", TokenUtils.getCurrentUser().getNickname()));
61
+            if (CollUtil.isNotEmpty(list)){
62
+                throw  new ServiceException("-1","您已经投标过项目了!");
63
+            }
64
+        }
65
+        articleService.saveOrUpdate(article);
66
+        return Result.success();
67
+    }
68
+    @PutMapping
69
+    public Result updates(@RequestBody Article article){
70
+        article.setState("待审核");
71
+        article.setFeedback("");
72
+        articleService.updateById(article);
73
+        return Result.success();
74
+    }
75
+    @PutMapping("update")
76
+    public Result update1(@RequestBody Article article){
77
+        articleService.updateById(article);
78
+        return Result.success();
79
+    }
80
+    @DeleteMapping("/{id}")
81
+    public Result delete(@PathVariable Integer id) {
82
+        articleService.removeById(id);
83
+        return Result.success();
84
+    }
85
+
86
+    @PostMapping("/del/batch")
87
+    public Result deleteBatch(@RequestBody List<Integer> ids) {
88
+        articleService.removeByIds(ids);
89
+        return Result.success();
90
+    }
91
+    @GetMapping
92
+    public Result findAll() {
93
+
94
+        return Result.success(articleService.list());
95
+    }
96
+
97
+    @GetMapping("/{id}")
98
+    public Result findOne(@PathVariable Integer id) {
99
+        return Result.success(articleService.getById(id));
100
+    }
101
+
102
+    @GetMapping("/page")
103
+    public Result findPage(@RequestParam(defaultValue = "") String name,
104
+                           @RequestParam Integer pageNum,
105
+                           @RequestParam Integer pageSize) {
106
+        QueryWrapper<Article> queryWrapper = new QueryWrapper<>();
107
+        QueryWrapper<Manage> queryWrapper1 = new QueryWrapper<>();
108
+        queryWrapper.orderByDesc("id");
109
+        if (!"".equals(name)) {
110
+            queryWrapper.like("name", name);
111
+        }
112
+        User currentUser = TokenUtils.getCurrentUser();
113
+        if (RoleEnum.bidder.toString().equals(currentUser.getRole())) {
114
+            queryWrapper.eq("user",currentUser.getNickname()).or().eq("state","审核通过").eq("states","待开标");
115
+
116
+        }
117
+        if (RoleEnum.tenderee.toString().equals(currentUser.getRole())) {
118
+            queryWrapper.eq("user",currentUser.getNickname());
119
+        }
120
+        return Result.success(articleService.page(new Page<>(pageNum, pageSize), queryWrapper));
121
+    }
122
+}

+ 130
- 0
springboot_vue/src/main/java/com/ly/controller/BidsController.java Parādīt failu

@@ -0,0 +1,130 @@
1
+package com.ly.controller;
2
+
3
+import cn.hutool.core.collection.CollUtil;
4
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
5
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
6
+import com.ly.controller.util.Constants;
7
+import com.ly.controller.util.Result;
8
+import com.ly.controller.util.RoleEnum;
9
+import com.ly.controller.util.TokenUtils;
10
+import com.ly.dao.ArticleDao;
11
+import com.ly.dao.BidsDao;
12
+import com.ly.domain.Article;
13
+import com.ly.domain.Bids;
14
+import com.ly.domain.Manage;
15
+import com.ly.domain.User;
16
+import com.ly.exception.ServiceException;
17
+import com.ly.service.ArticleService;
18
+import com.ly.service.BidsService;
19
+import com.ly.service.UserService;
20
+import org.springframework.beans.factory.annotation.Autowired;
21
+import org.springframework.web.bind.annotation.*;
22
+
23
+import javax.annotation.Resource;
24
+import java.util.List;
25
+
26
+@RequestMapping("/bids")
27
+@RestController
28
+public class BidsController {
29
+    @Autowired
30
+    private BidsService bidsService;
31
+    @Resource
32
+    private BidsDao bidsDao;
33
+    @Autowired
34
+    private UserService userService;
35
+    @PostMapping
36
+    public Result save(@RequestBody Bids bids) {
37
+        if(bids.getId()==null){
38
+            bids.setUser(TokenUtils.getCurrentUser().getNickname());
39
+       // article.setUser(TokenUtils.getCurrentUser().getUsername());
40
+            QueryWrapper<User> queryWrapper = new QueryWrapper<User>();
41
+
42
+            queryWrapper.eq("nickname",TokenUtils.getCurrentUser().getNickname());
43
+            User one =  userService.getOne(queryWrapper);
44
+
45
+
46
+            userService.updateById(one);
47
+
48
+        }else {
49
+            return Result.error(Constants.CODE_400, "参数错误");
50
+
51
+        }
52
+        bidsService.saveOrUpdate(bids);
53
+        return Result.success();
54
+
55
+
56
+    }
57
+    @PostMapping("save1")
58
+    public Result save1(@RequestBody Bids bids) {
59
+        if(bids.getId()==null){
60
+            bids.setUser(TokenUtils.getCurrentUser().getNickname());
61
+            bids.setUid(TokenUtils.getCurrentUser().getId());
62
+            List<Bids> list = bidsService.list(new QueryWrapper<Bids>()
63
+                    .eq("uid", TokenUtils.getCurrentUser().getId())
64
+                    .eq("type", bids.getType()));
65
+            List<Bids> list1 = bidsService.list(new QueryWrapper<Bids>()
66
+                    .eq("name", bids.getName()));
67
+            if (CollUtil.isNotEmpty(list)){
68
+                throw  new ServiceException("500","您已经发布过该类型招标项目了!");
69
+            }
70
+            if (CollUtil.isNotEmpty(list1)){
71
+                throw  new ServiceException("500","招标项目名已存在了,请修改!");
72
+            }
73
+        }
74
+        bidsService.saveOrUpdate(bids);
75
+        return Result.success();
76
+    }
77
+    @PutMapping
78
+    public Result updates(@RequestBody Bids bids){
79
+        bids.setState("待审核");
80
+        bids.setFeedback("");
81
+        bidsService.updateById(bids);
82
+        return Result.success();
83
+    }
84
+    @PutMapping("update")
85
+    public Result update1(@RequestBody Bids bids){
86
+        bidsService.updateById(bids);
87
+        return Result.success();
88
+    }
89
+    @DeleteMapping("/{id}")
90
+    public Result delete(@PathVariable Integer id) {
91
+        bidsService.removeById(id);
92
+        return Result.success();
93
+    }
94
+
95
+    @PostMapping("/del/batch")
96
+    public Result deleteBatch(@RequestBody List<Integer> ids) {
97
+        bidsService.removeByIds(ids);
98
+        return Result.success();
99
+    }
100
+    @GetMapping("/findAll")
101
+    public Result findAll() {
102
+        return Result.success(bidsService.list());
103
+    }
104
+
105
+    @GetMapping("/{id}")
106
+    public Result findOne(@PathVariable Integer id) {
107
+        return Result.success(bidsService.getById(id));
108
+    }
109
+
110
+    @GetMapping("/page")
111
+    public Result findPage(@RequestParam(defaultValue = "") String name,
112
+                           @RequestParam Integer pageNum,
113
+                           @RequestParam Integer pageSize) {
114
+        QueryWrapper<Bids> queryWrapper = new QueryWrapper<>();
115
+      //  QueryWrapper<Manage> queryWrapper1 = new QueryWrapper<>();
116
+        queryWrapper.orderByDesc("id");
117
+        if (!"".equals(name)) {
118
+            queryWrapper.like("name", name);
119
+        }
120
+        User currentUser = TokenUtils.getCurrentUser();
121
+        if (RoleEnum.bidder.toString().equals(currentUser.getRole())) {
122
+            queryWrapper.eq("user",currentUser.getNickname()).or().eq("state","审核通过").eq("states","待开标");
123
+
124
+        }
125
+        if (RoleEnum.tenderee.toString().equals(currentUser.getRole())) {
126
+            queryWrapper.eq("uid",currentUser.getId());
127
+        }
128
+        return Result.success(bidsService.page(new Page<>(pageNum, pageSize), queryWrapper));
129
+    }
130
+}

+ 90
- 0
springboot_vue/src/main/java/com/ly/controller/BudgetController.java Parādīt failu

@@ -0,0 +1,90 @@
1
+package com.ly.controller;
2
+
3
+import cn.hutool.core.date.DateUtil;
4
+import cn.hutool.core.util.StrUtil;
5
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
6
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
7
+import com.ly.controller.util.Constants;
8
+import com.ly.controller.util.Result;
9
+import com.ly.controller.util.TokenUtils;
10
+import com.ly.dao.ArticleDao;
11
+import com.ly.domain.Article;
12
+import com.ly.domain.Budget;
13
+import com.ly.domain.Course;
14
+import com.ly.domain.Dict;
15
+import com.ly.service.ArticleService;
16
+import com.ly.service.BudgetService;
17
+import org.springframework.beans.factory.annotation.Autowired;
18
+import org.springframework.web.bind.annotation.*;
19
+
20
+import java.util.List;
21
+
22
+@RequestMapping("/budget")
23
+@RestController
24
+public class BudgetController {
25
+    @Autowired
26
+    private BudgetService budgetService;
27
+
28
+    @Autowired
29
+    private ArticleDao articleDao;
30
+
31
+    @PostMapping
32
+    public Result save(@RequestBody Budget budget) {
33
+        if(budget.getId()==null){
34
+            budget.setTime(DateUtil.now());
35
+
36
+            budget.setUser(TokenUtils.getCurrentUser().getNickname());
37
+
38
+        }
39
+        budgetService.saveOrUpdate(budget);
40
+        return Result.success();
41
+    }
42
+
43
+    @DeleteMapping("/{id}")
44
+    public Result delete(@PathVariable Integer id) {
45
+        budgetService.removeById(id);
46
+        return Result.success();
47
+    }
48
+
49
+    @PostMapping("/del/batch")
50
+    public Result deleteBatch(@RequestBody List<Integer> ids) {
51
+        budgetService.removeByIds(ids);
52
+        return Result.success();
53
+    }
54
+    @GetMapping
55
+    public Result findAll() {
56
+
57
+        return Result.success(budgetService.list());
58
+    }
59
+    @PostMapping("/articleBudget/{budgetId}/{articleId}")
60
+    public Result articleBudget(@PathVariable Integer budgetId, @PathVariable Integer articleId) {
61
+        budgetService.setArticleBudget(budgetId, articleId);
62
+        return Result.success();
63
+    }
64
+    @GetMapping("/{id}")
65
+    public Result findOne(@PathVariable Integer id) {
66
+        return Result.success(budgetService.getById(id));
67
+    }
68
+
69
+    @GetMapping("/page")
70
+    public Result findPage(@RequestParam String name,
71
+                           @RequestParam Integer pageNum,
72
+                           @RequestParam Integer pageSize) {
73
+       // QueryWrapper<Budget> queryWrapper = new QueryWrapper<>();
74
+      //  queryWrapper.orderByDesc("id");
75
+    //    if (StrUtil.isNotBlank(name)) {
76
+     //       queryWrapper.like("name", name);
77
+   //     }
78
+      //  return Result.success(budgetService.page(new Page<>(pageNum, pageSize), queryWrapper));
79
+        Page<Budget> page = budgetService.findPage(new Page<>(pageNum, pageSize), name);
80
+        return Result.success(page);
81
+
82
+    }
83
+
84
+    @GetMapping("/name")
85
+    public Result getName() {
86
+        QueryWrapper<Article>queryWrapper=new QueryWrapper<>();
87
+        queryWrapper.eq("name", Constants.DICT_TYPE_ICON);
88
+        return Result.success(articleDao.selectList(null));
89
+    }
90
+}

+ 49
- 0
springboot_vue/src/main/java/com/ly/controller/CalendarController.java Parādīt failu

@@ -0,0 +1,49 @@
1
+package com.ly.controller;
2
+
3
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
4
+import com.ly.controller.util.Result;
5
+import com.ly.dao.CalendarDao;
6
+import com.ly.domain.Calendar;
7
+import com.ly.domain.User;
8
+import com.ly.domain.Validation;
9
+import com.ly.service.CalendarService;
10
+import org.springframework.web.bind.annotation.*;
11
+
12
+import javax.annotation.Resource;
13
+import java.util.List;
14
+
15
+@RequestMapping("/calendar")
16
+@RestController
17
+public class CalendarController {
18
+    @Resource
19
+    private CalendarService calendarService;
20
+    @Resource
21
+    private CalendarDao calendarDao;
22
+    @PostMapping
23
+    public Result save(@RequestBody Calendar calendar) {
24
+        calendarService.saveOrUpdate(calendar);
25
+        return Result.success();
26
+    }
27
+
28
+    @DeleteMapping("/{id}")
29
+    public Result delete(@PathVariable Integer id) {
30
+        calendarService.removeById(id);
31
+        return Result.success();
32
+    }
33
+
34
+
35
+
36
+    @GetMapping
37
+    public Result findAll() {
38
+
39
+        return Result.success(calendarService.list());
40
+    }
41
+
42
+        @GetMapping("/date/{date}")
43
+        public Result date(@PathVariable String date) {
44
+            QueryWrapper<Calendar> queryWrapper = new QueryWrapper<>();
45
+            queryWrapper.eq("date", date);
46
+            return Result.success(calendarService.getOne(queryWrapper));
47
+        }
48
+
49
+}

+ 100
- 0
springboot_vue/src/main/java/com/ly/controller/CommentController.java Parādīt failu

@@ -0,0 +1,100 @@
1
+package com.ly.controller;
2
+
3
+import cn.hutool.core.date.DateUtil;
4
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
5
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
6
+import com.ly.controller.util.Result;
7
+import com.ly.controller.util.TokenUtils;
8
+import com.ly.domain.Comment;
9
+import com.ly.domain.Role;
10
+import com.ly.service.CommentService;
11
+import org.springframework.beans.factory.annotation.Autowired;
12
+import org.springframework.web.bind.annotation.*;
13
+
14
+import javax.annotation.Resource;
15
+import java.util.List;
16
+import java.util.Optional;
17
+import java.util.stream.Collectors;
18
+
19
+@RestController
20
+@RequestMapping("/comment")
21
+public class CommentController {
22
+
23
+    @Resource
24
+    private CommentService commentService;
25
+
26
+    // 新增或者更新
27
+    @PostMapping
28
+    public Result save(@RequestBody Comment comment) {
29
+        if (comment.getId() == null) { // 新增评论
30
+            comment.setUserId(TokenUtils.getCurrentUser().getId());
31
+            comment.setTime(DateUtil.now());
32
+
33
+            if (comment.getPid() != null) {  // 判断如果是回复,进行处理
34
+                Integer pid = comment.getPid();
35
+                Comment pComment = commentService.getById(pid);
36
+                if (pComment.getOriginId() != null) {  // 如果当前回复的父级有祖宗,那么就设置相同的祖宗
37
+                    comment.setOriginId(pComment.getOriginId());
38
+                } else {  // 否则就设置父级为当前回复的祖宗
39
+                    comment.setOriginId(comment.getPid());
40
+                }
41
+            }
42
+
43
+        }
44
+        commentService.saveOrUpdate(comment);
45
+        return Result.success();
46
+    }
47
+
48
+    @DeleteMapping("/{id}")
49
+    public Result delete(@PathVariable Integer id) {
50
+        commentService.removeById(id);
51
+        return Result.success();
52
+    }
53
+
54
+    @PostMapping("/del/batch")
55
+    public Result deleteBatch(@RequestBody List<Integer> ids) {
56
+        commentService.removeByIds(ids);
57
+        return Result.success();
58
+    }
59
+
60
+    @GetMapping
61
+    public Result findAll() {
62
+        return Result.success(commentService.list());
63
+    }
64
+
65
+
66
+    @GetMapping("/tree/{articleId}")
67
+    public Result findTree(@PathVariable Integer articleId) {
68
+        List<Comment> articleComments = commentService.findCommentDetail(articleId);  // 查询所有的评论和回复数据
69
+        // 查询评论数据(不包括回复)
70
+        List<Comment> originList = articleComments.stream().filter(comment -> comment.getOriginId() == null).collect(Collectors.toList());
71
+
72
+        // 设置评论数据的子节点,也就是回复内容
73
+        for (Comment origin : originList) {
74
+            List<Comment> comments = articleComments.stream().filter(comment -> origin.getId().equals(comment.getOriginId())).collect(Collectors.toList());  // 表示回复对象集合
75
+            comments.forEach(comment -> {
76
+                Optional<Comment> pComment = articleComments.stream().filter(c1 -> c1.getId().equals(comment.getPid())).findFirst();  // 找到当前评论的父级
77
+                pComment.ifPresent((v -> {  // 找到父级评论的用户id和用户昵称,并设置给当前的回复对象
78
+                    comment.setPUserId(v.getUserId());
79
+                    comment.setPNickname(v.getNickname());
80
+                }));
81
+            });
82
+            origin.setChildren(comments);
83
+        }
84
+        return Result.success(originList);
85
+    }
86
+
87
+    @GetMapping("/{id}")
88
+    public Result findOne(@PathVariable Integer id) {
89
+        return Result.success(commentService.getById(id));
90
+    }
91
+
92
+    @GetMapping("/page")
93
+    public Result findPage(@RequestParam Integer pageNum,
94
+                           @RequestParam Integer pageSize) {
95
+        QueryWrapper<Comment> queryWrapper = new QueryWrapper<>();
96
+        queryWrapper.orderByDesc("id");
97
+        return Result.success(commentService.page(new Page<>(pageNum, pageSize), queryWrapper));
98
+    }
99
+
100
+}

+ 83
- 0
springboot_vue/src/main/java/com/ly/controller/CourseController.java Parādīt failu

@@ -0,0 +1,83 @@
1
+package com.ly.controller;
2
+
3
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
4
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
5
+import com.ly.controller.util.Result;
6
+import com.ly.domain.Course;
7
+import com.ly.domain.Role;
8
+import com.ly.domain.User;
9
+import com.ly.service.CourseService;
10
+import com.ly.service.RoleService;
11
+import com.ly.service.UserService;
12
+import org.springframework.web.bind.annotation.*;
13
+
14
+import javax.annotation.Resource;
15
+import java.util.List;
16
+
17
+@RequestMapping("/course")
18
+@RestController
19
+public class CourseController {
20
+    @Resource
21
+    private CourseService courseService;
22
+
23
+    @Resource
24
+    private UserService userService;
25
+    // 新增或者更新
26
+    @PostMapping
27
+    public Result save(@RequestBody Course course) {
28
+        courseService.saveOrUpdate(course);
29
+        return Result.success();
30
+    }
31
+    @PostMapping("/studentCourse/{courseId}/{studentId}")
32
+    public Result studentCourse(@PathVariable Integer courseId, @PathVariable Integer studentId) {
33
+        courseService.setStudentCourse(courseId, studentId);
34
+        return Result.success();
35
+    }
36
+
37
+    @DeleteMapping("/{id}")
38
+    public Result delete(@PathVariable Integer id) {
39
+        courseService.removeById(id);
40
+        return Result.success();
41
+    }
42
+
43
+    @PostMapping("/del/batch")
44
+    public Result deleteBatch(@RequestBody List<Integer> ids) {
45
+        courseService.removeByIds(ids);
46
+        return Result.success();
47
+    }
48
+
49
+    @GetMapping
50
+    public Result findAll() {
51
+        return Result.success(courseService.list());
52
+    }
53
+
54
+    @GetMapping("/{id}")
55
+    public Result findOne(@PathVariable Integer id) {
56
+        return Result.success(courseService.getById(id));
57
+    }
58
+
59
+    @GetMapping("/page")
60
+    public Result findPage(@RequestParam String name,
61
+                           @RequestParam Integer pageNum,
62
+                           @RequestParam Integer pageSize) {
63
+       // QueryWrapper<Course> queryWrapper = new QueryWrapper<>();
64
+      //  queryWrapper.like("name", name);
65
+      // queryWrapper.orderByDesc("id");
66
+      //  Page<Course> page = courseService.page(new Page<>(pageNum, pageSize), queryWrapper);
67
+      //  List<Course> records = page.getRecords();
68
+     //  for (Course record : records) {
69
+       //    User user = userService.getById(record.getTeacherId());
70
+      //     if(user != null) {
71
+        //       record.setTeacher(user.getNickname());
72
+      //     }
73
+
74
+
75
+    //   }
76
+    Page<Course> page = courseService.findPage(new Page<>(pageNum, pageSize), name);
77
+        return Result.success(page);
78
+
79
+    }
80
+
81
+
82
+
83
+}

+ 55
- 0
springboot_vue/src/main/java/com/ly/controller/EchartsController.java Parādīt failu

@@ -0,0 +1,55 @@
1
+package com.ly.controller;
2
+
3
+import cn.hutool.core.collection.CollUtil;
4
+import cn.hutool.core.date.DateUtil;
5
+import cn.hutool.core.date.Quarter;
6
+import com.ly.controller.util.Result;
7
+import com.ly.domain.User;
8
+import com.ly.service.UserService;
9
+import org.springframework.beans.factory.annotation.Autowired;
10
+import org.springframework.web.bind.annotation.GetMapping;
11
+import org.springframework.web.bind.annotation.RequestMapping;
12
+import org.springframework.web.bind.annotation.RestController;
13
+
14
+import java.util.Date;
15
+import java.util.HashMap;
16
+import java.util.List;
17
+import java.util.Map;
18
+
19
+@RequestMapping("/echarts")
20
+@RestController
21
+public class EchartsController {
22
+    @Autowired
23
+    private UserService userService;
24
+    //展示数据例子(死数据)
25
+    @GetMapping("/example")
26
+    public Result get(){
27
+        Map<String,Object> map=new HashMap<>();
28
+        map.put("x", CollUtil.newArrayList("Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"));
29
+        map.put("y",CollUtil.newArrayList(150, 230, 224, 218, 135, 147, 260));
30
+        return Result.success(map);
31
+    }
32
+
33
+    @GetMapping("/members")
34
+    public Result members(){
35
+        List<User>list=userService.list();
36
+        int q1=0;//第一季度
37
+        int q2=0;//第二季度
38
+        int q3=0;//第三季度
39
+        int q4=0;//第四季度
40
+        for (User user:list){
41
+            Date createTime=user.getCreateTime();
42
+            Quarter quarter= DateUtil.quarterEnum(createTime);
43
+            switch(quarter){
44
+                case Q1:q1+=1;break;
45
+                case Q2:q2+=1;break;
46
+                case Q3:q3+=1;break;
47
+                case Q4:q4+=1;break;
48
+                default:break;
49
+            }
50
+        }
51
+        return Result.success(CollUtil.newArrayList(q1,q2,q3,q4));
52
+
53
+    }
54
+
55
+}

+ 288
- 0
springboot_vue/src/main/java/com/ly/controller/FileController.java Parādīt failu

@@ -0,0 +1,288 @@
1
+package com.ly.controller;
2
+
3
+import cn.hutool.core.date.DateUtil;
4
+import cn.hutool.core.io.FileUtil;
5
+import cn.hutool.core.util.IdUtil;
6
+import cn.hutool.core.util.StrUtil;
7
+import cn.hutool.crypto.SecureUtil;
8
+import cn.hutool.json.JSONArray;
9
+import cn.hutool.json.JSONObject;
10
+import cn.hutool.json.JSONUtil;
11
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
12
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
13
+import com.ly.controller.util.Constants;
14
+import com.ly.controller.util.Result;
15
+import com.ly.controller.util.RoleEnum;
16
+import com.ly.controller.util.TokenUtils;
17
+import com.ly.dao.FileDao;
18
+import com.ly.domain.Article;
19
+import com.ly.domain.User;
20
+import com.ly.service.FilesService;
21
+import com.ly.service.UserService;
22
+import org.springframework.beans.factory.annotation.Autowired;
23
+import org.springframework.beans.factory.annotation.Value;
24
+import org.springframework.data.redis.core.StringRedisTemplate;
25
+import org.springframework.web.bind.annotation.*;
26
+import org.springframework.web.multipart.MultipartFile;
27
+import java.io.File;
28
+import javax.annotation.Resource;
29
+import javax.servlet.ServletOutputStream;
30
+import javax.servlet.http.HttpServletResponse;
31
+import java.io.IOException;
32
+import java.net.URLEncoder;
33
+import java.util.List;
34
+
35
+import com.ly.domain.Files;
36
+
37
+@RestController
38
+@RequestMapping("/file")
39
+public class FileController {
40
+    @Value("${files.upload.path}")
41
+    private String fileUploadPath;
42
+
43
+    @Value("${server.ip}")
44
+    private String serverIp;
45
+    @Resource
46
+    private FilesService filesService;
47
+    @Resource
48
+    private FileDao fileDao;
49
+    @Resource
50
+    private UserService userService;
51
+    @Autowired
52
+    private StringRedisTemplate stringRedisTemplate;
53
+    /**
54
+     * 文件上传接口
55
+     *
56
+     * @param file 前端传递过来的文件
57
+     * @return
58
+     * @throws IOException
59
+     */
60
+    @PostMapping("/upload")
61
+    public String upload(@RequestParam MultipartFile file) throws IOException {
62
+        String originalFilename = file.getOriginalFilename();
63
+        String type = FileUtil.extName(originalFilename);
64
+        long size = file.getSize();
65
+
66
+        // 定义一个文件唯一的标识码
67
+        String fileUUID = IdUtil.fastSimpleUUID() + StrUtil.DOT + type;
68
+
69
+        File uploadFile = new File(fileUploadPath + fileUUID);
70
+        // 判断配置的文件目录是否存在,若不存在则创建一个新的文件目录
71
+        File parentFile = uploadFile.getParentFile();
72
+        if (!parentFile.exists()) {
73
+            parentFile.mkdirs();
74
+        }
75
+
76
+        String url;
77
+        // 获取文件的md5
78
+        String md5 = SecureUtil.md5(file.getInputStream());
79
+        // 从数据库查询是否存在相同的记录
80
+        Files dbFiles = getFileByMd5(md5);
81
+        if (dbFiles != null) {
82
+            url = dbFiles.getUrl();
83
+        } else {
84
+            // 上传文件到磁盘
85
+            file.transferTo(uploadFile);
86
+            // 数据库若不存在重复文件,则不删除刚才上传的文件
87
+            url = "http://" + serverIp + ":9090/file/" + fileUUID;
88
+        }
89
+
90
+
91
+        // 存储数据库
92
+        Files saveFile = new Files();
93
+        saveFile.setName(originalFilename);
94
+        saveFile.setType(type);
95
+        saveFile.setSize(size / 1024); // 单位 kb
96
+        saveFile.setUrl(url);
97
+        saveFile.setMd5(md5);
98
+        saveFile.setTime(DateUtil.now());
99
+        saveFile.setRole(TokenUtils.getCurrentUser().getRole());
100
+        saveFile.setUser(TokenUtils.getCurrentUser().getNickname());
101
+        fileDao.insert(saveFile);
102
+
103
+        // 从redis取出数据,操作完,再设置(不用查询数据库)
104
+//        String json = stringRedisTemplate.opsForValue().get(Constants.FILES_KEY);
105
+//        List<Files> files1 = JSONUtil.toBean(json, new TypeReference<List<Files>>() {
106
+//        }, true);
107
+//        files1.add(saveFile);
108
+//        setCache(Constants.FILES_KEY, JSONUtil.toJsonStr(files1));
109
+
110
+
111
+        // 从数据库查出数据
112
+//        List<Files> files = fileMapper.selectList(null);
113
+//        // 设置最新的缓存
114
+//        setCache(Constants.FILES_KEY, JSONUtil.toJsonStr(files));
115
+        flushRedis(Constants.FILES_KEY);// 最简单的方式:直接清空缓存
116
+
117
+
118
+        return url;
119
+    }
120
+
121
+    /**
122
+     * 文件下载接口   http://localhost:9090/file/{fileUUID}
123
+     *
124
+     * @param fileUUID
125
+     * @param response
126
+     * @throws IOException
127
+     */
128
+    @GetMapping("/{fileUUID}")
129
+    public void download(@PathVariable String fileUUID, HttpServletResponse response) throws IOException {
130
+        // 根据文件的唯一标识码获取文件
131
+        File uploadFile = new File(fileUploadPath + fileUUID);
132
+        // 设置输出流的格式
133
+        ServletOutputStream os = response.getOutputStream();
134
+        response.addHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileUUID, "UTF-8"));
135
+        response.setContentType("application/octet-stream");
136
+
137
+        // 读取文件的字节流
138
+        os.write(FileUtil.readBytes(uploadFile));
139
+        os.flush();
140
+        os.close();
141
+    }
142
+
143
+
144
+    /**
145
+     * 通过文件的md5查询文件
146
+     *
147
+     * @param md5
148
+     * @return
149
+     */
150
+    private Files getFileByMd5(String md5) {
151
+        // 查询文件的md5是否存在
152
+        QueryWrapper<Files> queryWrapper = new QueryWrapper<>();
153
+        queryWrapper.eq("md5", md5);
154
+        List<Files> filesList = fileDao.selectList(queryWrapper);
155
+        return filesList.size() == 0 ? null : filesList.get(0);
156
+    }
157
+
158
+    //    @CachePut(value = "files", key = "'frontAll'")
159
+    @PostMapping("/update")
160
+    public Result update(@RequestBody Files files) {
161
+        fileDao.updateById(files);
162
+        flushRedis(Constants.FILES_KEY);
163
+        return Result.success();
164
+    }
165
+
166
+    @GetMapping("/detail/{id}")
167
+    public Result getById(@PathVariable Integer id) {
168
+        return Result.success(fileDao.selectById(id));
169
+    }
170
+
171
+    //清除一条缓存,key为要清空的数据
172
+//    @CacheEvict(value="files",key="'frontAll'")
173
+    @DeleteMapping("/{id}")
174
+    public Result delete(@PathVariable Integer id) {
175
+        Files files = fileDao.selectById(id);
176
+        files.setIsDelete(true);
177
+        fileDao.updateById(files);
178
+        flushRedis(Constants.FILES_KEY);
179
+        return Result.success();
180
+    }
181
+
182
+    @PostMapping("/del/batch")
183
+    public Result deleteBatch(@RequestBody List<Integer> ids) {
184
+        // select * from sys_file where id in (id,id,id...)
185
+        QueryWrapper<Files> queryWrapper = new QueryWrapper<>();
186
+        queryWrapper.in("id", ids);
187
+        List<Files> files = fileDao.selectList(queryWrapper);
188
+        for (Files file : files) {
189
+            file.setIsDelete(true);
190
+            fileDao.updateById(file);
191
+        }
192
+        return Result.success();
193
+    }
194
+
195
+    @GetMapping("/filerole/{role}")
196
+    public Result findUsersByRole(@PathVariable String role) {
197
+        QueryWrapper<Files> queryWrapper = new QueryWrapper<>();
198
+        queryWrapper.eq("role", role);
199
+        List<Files> list = filesService.list(queryWrapper);
200
+        return Result.success(list);
201
+    }
202
+    /**
203
+     * 分页查询接口
204
+     *
205
+     * @param pageNum
206
+     * @param pageSize
207
+     * @param name
208
+     * @return
209
+     */
210
+    @GetMapping("/page")
211
+    public Result findPage(@RequestParam Integer pageNum,
212
+                           @RequestParam Integer pageSize,
213
+                           @RequestParam(defaultValue = "") String name) {
214
+
215
+        QueryWrapper<Files> queryWrapper = new QueryWrapper<>();
216
+        // 查询未删除的记录
217
+        queryWrapper.eq("is_delete", false);
218
+        queryWrapper.orderByDesc("id");
219
+        if (!"".equals(name)) {
220
+            queryWrapper.like("name", name);
221
+        }
222
+        User currentUser = TokenUtils.getCurrentUser();
223
+        if (RoleEnum.bidder.toString().equals(currentUser.getRole())) {
224
+            queryWrapper.eq("user",currentUser.getNickname());
225
+
226
+        }
227
+        if (RoleEnum.tenderee.toString().equals(currentUser.getRole())) {
228
+            queryWrapper.eq("user",currentUser.getNickname());
229
+        }
230
+
231
+        return Result.success(fileDao.selectPage(new Page<>(pageNum, pageSize), queryWrapper));
232
+    }
233
+    @GetMapping("bidderfile/page")
234
+    public Result findPage1(@RequestParam Integer pageNum,
235
+                           @RequestParam Integer pageSize,
236
+                           @RequestParam(defaultValue = "") String name) {
237
+
238
+        QueryWrapper<Files> queryWrapper = new QueryWrapper<>();
239
+        // 查询未删除的记录
240
+        queryWrapper.eq("is_delete", false);
241
+        queryWrapper.orderByDesc("id");
242
+        if (!"".equals(name)) {
243
+            queryWrapper.like("name", name);
244
+        } User currentUser = TokenUtils.getCurrentUser();
245
+        if (RoleEnum.tenderee.toString().equals(currentUser.getRole())) {
246
+
247
+            queryWrapper.eq("is_Delete",false).eq("enable",true).eq("type","docx").eq("role","bidder").
248
+                   or().eq("is_Delete",false).eq("enable",true).eq("type","doc").eq("role","bidder").
249
+                   or().eq("is_Delete",false).eq("enable",true).eq("type","pdf").eq("role","bidder");
250
+        }
251
+
252
+
253
+        return Result.success(fileDao.selectPage(new Page<>(pageNum, pageSize), queryWrapper));
254
+    }
255
+
256
+    @GetMapping("tendereefile/page")
257
+    public Result findPage2(@RequestParam Integer pageNum,
258
+                            @RequestParam Integer pageSize,
259
+                            @RequestParam(defaultValue = "") String name) {
260
+
261
+        QueryWrapper<Files> queryWrapper = new QueryWrapper<>();
262
+        // 查询未删除的记录
263
+        queryWrapper.eq("is_delete", false);
264
+        queryWrapper.orderByDesc("id");
265
+        if (!"".equals(name)) {
266
+            queryWrapper.like("name", name);
267
+        } User currentUser = TokenUtils.getCurrentUser();
268
+        if (RoleEnum.bidder.toString().equals(currentUser.getRole())) {
269
+            queryWrapper.eq("is_Delete",false).eq("enable",true).eq("type","docx").eq("role","tenderee").
270
+                    or().eq("is_Delete",false).eq("enable",true).eq("type","doc").eq("role","tenderee").
271
+                    or().eq("is_Delete",false).eq("enable",true).eq("type","pdf").eq("role","tenderee");
272
+        }
273
+
274
+
275
+        return Result.success(fileDao.selectPage(new Page<>(pageNum, pageSize), queryWrapper));
276
+    }
277
+    // 设置缓存
278
+    private void setCache(String key, String value) {
279
+        stringRedisTemplate.opsForValue().set(key, value);
280
+    }
281
+    // 删除缓存
282
+    private void flushRedis(String key) {
283
+        stringRedisTemplate.delete(key);
284
+    }
285
+
286
+}
287
+
288
+

+ 62
- 0
springboot_vue/src/main/java/com/ly/controller/GenresController.java Parādīt failu

@@ -0,0 +1,62 @@
1
+package com.ly.controller;
2
+
3
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
4
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
5
+import com.ly.controller.util.Result;
6
+import com.ly.domain.Genres;
7
+import com.ly.domain.Validation;
8
+import com.ly.service.GenresService;
9
+import com.ly.service.IValidationService;
10
+import org.springframework.web.bind.annotation.*;
11
+
12
+import javax.annotation.Resource;
13
+import java.util.List;
14
+
15
+@RestController
16
+@RequestMapping("/genres")
17
+public class GenresController {
18
+    @Resource
19
+    private GenresService genresService;
20
+
21
+    // 新增或者更新
22
+    @PostMapping
23
+    public Result save(@RequestBody Genres genres) {
24
+        genresService.saveOrUpdate(genres);
25
+        return Result.success();
26
+    }
27
+
28
+    @DeleteMapping("/{id}")
29
+    public Result delete(@PathVariable Integer id) {
30
+        genresService.removeById(id);
31
+        return Result.success();
32
+    }
33
+
34
+    @PostMapping("/del/batch")
35
+    public Result deleteBatch(@RequestBody List<Integer> ids) {
36
+        genresService.removeByIds(ids);
37
+        return Result.success();
38
+    }
39
+
40
+    @GetMapping
41
+    public Result findAll() {
42
+        return Result.success(genresService.list());
43
+    }
44
+
45
+    @GetMapping("/{id}")
46
+    public Result findOne(@PathVariable Integer id) {
47
+        return Result.success(genresService.getById(id));
48
+    }
49
+
50
+    @GetMapping("/page")
51
+    public Result findPage(@RequestParam Integer pageNum,
52
+                           @RequestParam Integer pageSize,
53
+                           @RequestParam(defaultValue = "") String name) {
54
+        QueryWrapper<Genres> queryWrapper = new QueryWrapper<>();
55
+        if (!"".equals(name)) {
56
+            queryWrapper.like("name", name);
57
+        }
58
+        queryWrapper.orderByDesc("id");
59
+
60
+        return Result.success(genresService.page(new Page<>(pageNum, pageSize), queryWrapper));
61
+    }
62
+}

+ 132
- 0
springboot_vue/src/main/java/com/ly/controller/ManageController.java Parādīt failu

@@ -0,0 +1,132 @@
1
+package com.ly.controller;
2
+
3
+import cn.hutool.core.bean.BeanUtil;
4
+import cn.hutool.core.date.DateUtil;
5
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
6
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
7
+import com.ly.controller.util.Constants;
8
+import com.ly.controller.util.Result;
9
+import com.ly.controller.util.RoleEnum;
10
+import com.ly.controller.util.TokenUtils;
11
+import com.ly.dao.ManageDao;
12
+import com.ly.domain.Approval;
13
+import com.ly.domain.Article;
14
+import com.ly.domain.Manage;
15
+import com.ly.domain.User;
16
+import com.ly.exception.ServiceException;
17
+import com.ly.service.ArticleService;
18
+import com.ly.service.ManageService;
19
+import com.ly.service.UserService;
20
+import org.springframework.beans.factory.annotation.Autowired;
21
+import org.springframework.web.bind.annotation.*;
22
+
23
+import java.util.List;
24
+
25
+@RestController
26
+@RequestMapping("/manage")
27
+public class ManageController {
28
+    @Autowired
29
+    private ManageService manageService;
30
+    @Autowired
31
+    private ManageDao manageDao;
32
+    @Autowired
33
+    private ArticleService articleService;
34
+    @Autowired
35
+    private UserService userService;
36
+    @PostMapping
37
+    public Result save(@RequestBody Manage manage) {
38
+      if (manage.getId()==null){
39
+            manage.setNickname(TokenUtils.getCurrentUser().getNickname());
40
+
41
+
42
+      }
43
+
44
+
45
+        manageService.saveOrUpdate(manage);
46
+        return Result.success();
47
+    }
48
+
49
+    @PutMapping
50
+    public Result updates(@RequestBody Manage manage){
51
+
52
+       String name =  manage.getName();
53
+        QueryWrapper<Article> queryWrapper = new QueryWrapper<Article>();
54
+        queryWrapper.eq("name",name);
55
+        Article getone =  articleService.getOne(queryWrapper);
56
+        getone.setStates(manage.getStates());
57
+        articleService.updateById(getone);
58
+        manageService.updateById(manage);
59
+        //  article.setStates(manage.getStates());
60
+        //   articleService.updateById(article);
61
+        return Result.success();
62
+    }
63
+    @DeleteMapping("/{id}")
64
+    public Result delete(@PathVariable Integer id) {
65
+        manageService.removeById(id);
66
+        return Result.success();
67
+    }
68
+
69
+    @PostMapping("/del/batch")
70
+    public Result deleteBatch(@RequestBody List<Integer> ids) {
71
+        manageService.removeByIds(ids);
72
+        return Result.success();
73
+    }
74
+
75
+    @GetMapping
76
+    public Result findAll() {
77
+        return Result.success(manageService.list());
78
+    }
79
+
80
+    @GetMapping("/{id}")
81
+    public Result findOne(@PathVariable Integer id) {
82
+        return Result.success(manageService.getById(id));
83
+    }
84
+    @GetMapping("/page")
85
+    public Result findPage(@RequestParam(defaultValue = "") String name,
86
+                           @RequestParam Integer pageNum,
87
+                           @RequestParam Integer pageSize) {
88
+        QueryWrapper<Manage> queryWrapper = new QueryWrapper<>();
89
+        queryWrapper.orderByDesc("id");
90
+        if (!"".equals(name)) {
91
+            queryWrapper.like("name", name);
92
+        }
93
+       User currentUser = TokenUtils.getCurrentUser();
94
+      if (RoleEnum.bidder.toString().equals(currentUser.getRole())){  // 角色是
95
+           queryWrapper.eq("nickname", currentUser.getNickname());
96
+
97
+       }  if (RoleEnum.tenderee.toString().equals(currentUser.getRole())){  // 角色是
98
+            queryWrapper.eq("user", currentUser.getNickname());
99
+
100
+        }
101
+        return Result.success(manageService.page(new Page<>(pageNum, pageSize), queryWrapper));
102
+    }
103
+
104
+    @GetMapping("/name")
105
+    public Result getName() {
106
+        QueryWrapper<Article>queryWrapper=new QueryWrapper<>();
107
+        queryWrapper.eq("name", Constants.DICT_TYPE_ICON);
108
+        return Result.success(manageDao.selectList(null));
109
+    }
110
+
111
+    @GetMapping("/pages")
112
+    public Result findPages(@RequestParam(defaultValue = "") String name,
113
+                           @RequestParam Integer pageNum,
114
+                           @RequestParam Integer pageSize) {
115
+        QueryWrapper<Manage> queryWrapper = new QueryWrapper<>();
116
+        queryWrapper.orderByDesc("id");
117
+        if (!"".equals(name)) {
118
+            queryWrapper.like("name", name);
119
+        }
120
+        User currentUser = TokenUtils.getCurrentUser();
121
+        if (RoleEnum.bidder.toString().equals(currentUser.getRole())){
122
+            queryWrapper.eq("nickname", currentUser.getNickname()).eq("states","已中标");
123
+
124
+        }
125
+        if (RoleEnum.tenderee.toString().equals(currentUser.getRole())){
126
+            queryWrapper.eq("nickname", currentUser.getNickname()).eq("states","已中标");
127
+
128
+        }
129
+        return Result.success(manageService.page(new Page<>(pageNum, pageSize), queryWrapper));
130
+    }
131
+
132
+}

+ 76
- 0
springboot_vue/src/main/java/com/ly/controller/MenuController.java Parādīt failu

@@ -0,0 +1,76 @@
1
+package com.ly.controller;
2
+
3
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
4
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
5
+import com.ly.controller.util.Constants;
6
+import com.ly.controller.util.Result;
7
+import com.ly.dao.DictDao;
8
+import com.ly.domain.Dict;
9
+import com.ly.domain.Menu;
10
+import com.ly.domain.Role;
11
+import com.ly.service.MenuService;
12
+import com.ly.service.RoleService;
13
+import org.springframework.web.bind.annotation.*;
14
+
15
+import javax.annotation.Resource;
16
+import java.util.List;
17
+import java.util.stream.Collectors;
18
+
19
+@RestController
20
+@RequestMapping("/menu")
21
+public class MenuController {
22
+    @Resource
23
+    private MenuService menuService;
24
+
25
+    @Resource
26
+    private DictDao dictDao;
27
+    // 新增或者更新
28
+    @PostMapping
29
+    public Result save(@RequestBody Menu menu) {
30
+        menuService.saveOrUpdate(menu);
31
+        return Result.success();
32
+    }
33
+
34
+    @DeleteMapping("/{id}")
35
+    public Result delete(@PathVariable Integer id) {
36
+        menuService.removeById(id);
37
+        return Result.success();
38
+    }
39
+
40
+    @PostMapping("/del/batch")
41
+    public Result deleteBatch(@RequestBody List<Integer> ids) {
42
+        menuService.removeByIds(ids);
43
+        return Result.success();
44
+    }
45
+    @GetMapping("/ids")
46
+    public Result findAllIds() {
47
+        return Result.success(menuService.list().stream().map(Menu::getId));
48
+    }
49
+    @GetMapping
50
+    public Result findAll(@RequestParam(defaultValue = "") String name) {
51
+
52
+        return Result.success(menuService.findMenus(name));
53
+    }
54
+
55
+    @GetMapping("/{id}")
56
+    public Result findOne(@PathVariable Integer id) {
57
+        return Result.success(menuService.getById(id));
58
+    }
59
+
60
+    @GetMapping("/page")
61
+    public Result findPage(@RequestParam String name,
62
+                           @RequestParam Integer pageNum,
63
+                           @RequestParam Integer pageSize) {
64
+        QueryWrapper<Menu> queryWrapper = new QueryWrapper<>();
65
+        queryWrapper.like("name", name);
66
+        queryWrapper.orderByDesc("id");
67
+        return Result.success(menuService.page(new Page<>(pageNum, pageSize), queryWrapper));
68
+    }
69
+
70
+    @GetMapping("/icons")
71
+    public Result getIcons() {
72
+        QueryWrapper<Dict>queryWrapper=new QueryWrapper<>();
73
+        queryWrapper.eq("type", Constants.DICT_TYPE_ICON);
74
+        return Result.success(dictDao.selectList(null));
75
+    }
76
+}

+ 70
- 0
springboot_vue/src/main/java/com/ly/controller/RoleController.java Parādīt failu

@@ -0,0 +1,70 @@
1
+package com.ly.controller;
2
+
3
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
4
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
5
+import com.ly.controller.util.Result;
6
+import com.ly.domain.Menu;
7
+import com.ly.domain.Role;
8
+import com.ly.service.RoleService;
9
+import org.springframework.web.bind.annotation.*;
10
+
11
+import javax.annotation.Resource;
12
+import java.util.List;
13
+
14
+@RestController
15
+@RequestMapping("/role")
16
+public class RoleController {
17
+    @Resource
18
+    private RoleService roleService;
19
+
20
+    // 新增或者更新
21
+    @PostMapping
22
+    public Result save(@RequestBody Role role) {
23
+        roleService.saveOrUpdate(role);
24
+        return Result.success();
25
+    }
26
+
27
+    @DeleteMapping("/{id}")
28
+    public Result delete(@PathVariable Integer id) {
29
+        roleService.removeById(id);
30
+        return Result.success();
31
+    }
32
+
33
+    @PostMapping("/del/batch")
34
+    public Result deleteBatch(@RequestBody List<Integer> ids) {
35
+        roleService.removeByIds(ids);
36
+        return Result.success();
37
+    }
38
+
39
+    @GetMapping
40
+    public Result findAll() {
41
+        return Result.success(roleService.list());
42
+    }
43
+
44
+    @GetMapping("/{id}")
45
+    public Result findOne(@PathVariable Integer id) {
46
+        return Result.success(roleService.getById(id));
47
+    }
48
+
49
+    @GetMapping("/page")
50
+    public Result findPage(@RequestParam String name,
51
+                           @RequestParam Integer pageNum,
52
+                           @RequestParam Integer pageSize) {
53
+        QueryWrapper<Role> queryWrapper = new QueryWrapper<>();
54
+        queryWrapper.like("name", name);
55
+        queryWrapper.orderByDesc("id");
56
+        return Result.success(roleService.page(new Page<>(pageNum, pageSize), queryWrapper));
57
+    }
58
+    //绑定角色和菜单的关系
59
+    @PostMapping("/roleMenu/{roleId}")
60
+    public Result roleMenu(@PathVariable Integer roleId,@RequestBody List<Integer> menuIds) {
61
+        roleService.setRoleMenu(roleId,menuIds);
62
+        return Result.success();
63
+    }
64
+
65
+    @GetMapping("/roleMenu/{roleId}")
66
+    public Result getRoleMenu(@PathVariable Integer roleId) {
67
+
68
+        return Result.success(roleService.getRoleMenu(roleId));
69
+    }
70
+}

+ 135
- 0
springboot_vue/src/main/java/com/ly/controller/TenderController.java Parādīt failu

@@ -0,0 +1,135 @@
1
+package com.ly.controller;
2
+
3
+import cn.hutool.core.collection.CollUtil;
4
+import cn.hutool.core.date.DateUtil;
5
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
6
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
7
+import com.ly.controller.util.Result;
8
+import com.ly.controller.util.RoleEnum;
9
+import com.ly.controller.util.TokenUtils;
10
+import com.ly.domain.*;
11
+import com.ly.exception.ServiceException;
12
+import com.ly.service.ArticleService;
13
+import com.ly.service.BidsService;
14
+import com.ly.service.RoleService;
15
+import com.ly.service.TenderService;
16
+import org.springframework.beans.factory.annotation.Autowired;
17
+import org.springframework.web.bind.annotation.*;
18
+
19
+import javax.annotation.Resource;
20
+import java.util.List;
21
+
22
+@RestController
23
+@RequestMapping("/tender")
24
+public class TenderController {
25
+    @Resource
26
+    private TenderService tenderService;
27
+    @Autowired
28
+    private ArticleService articleService;
29
+    @Autowired
30
+    private BidsService bidsService;
31
+    // 新增或者更新
32
+    @PostMapping
33
+    public Result save(@RequestBody Tender tender) {
34
+
35
+        if(tender.getId()==null){
36
+            List<Tender> list = tenderService.list(new QueryWrapper<Tender>().eq("pid", tender.getPid())
37
+                    .eq("uid", TokenUtils.getCurrentUser().getId()));
38
+            if (CollUtil.isNotEmpty(list)){
39
+                throw  new ServiceException("-1","您已经投标过该项目了!");
40
+            }
41
+            tender.setTime(DateUtil.now());
42
+            tender.setUid(TokenUtils.getCurrentUser().getId());
43
+            tender.setUser(TokenUtils.getCurrentUser().getNickname());
44
+
45
+        }
46
+        tenderService.saveOrUpdate(tender);
47
+        return Result.success();
48
+    }
49
+    @PutMapping
50
+    public Result updates(@RequestBody Tender tender){
51
+
52
+
53
+        Integer pid =  tender.getPid();
54
+        QueryWrapper<Bids> queryWrapper = new QueryWrapper<Bids>();
55
+        queryWrapper.eq("id",pid);
56
+        Bids getone =  bidsService.getOne(queryWrapper);
57
+        getone.setStates(tender.getStates());
58
+        bidsService.updateById(getone);
59
+        tenderService.updateById(tender);
60
+        return Result.success();
61
+    }
62
+    @PutMapping("/update")
63
+    public Result updates1(@RequestBody Tender tender){
64
+
65
+        tenderService.updateById(tender);
66
+        return Result.success();
67
+    }
68
+    @DeleteMapping("/{id}")
69
+    public Result delete(@PathVariable Integer id) {
70
+        tenderService.removeById(id);
71
+        return Result.success();
72
+    }
73
+
74
+    @PostMapping("/del/batch")
75
+    public Result deleteBatch(@RequestBody List<Integer> ids) {
76
+        tenderService.removeByIds(ids);
77
+        return Result.success();
78
+    }
79
+
80
+    @GetMapping
81
+    public Result findAll() {
82
+        return Result.success(tenderService.list());
83
+    }
84
+
85
+    @GetMapping("/{id}")
86
+    public Result findOne(@PathVariable Integer id) {
87
+        return Result.success(tenderService.getById(id));
88
+    }
89
+
90
+    @GetMapping("/page")
91
+    public Result findPage(@RequestParam String name,
92
+                           @RequestParam Integer pageNum,
93
+                           @RequestParam Integer pageSize) {
94
+        QueryWrapper<Tender> queryWrapper = new QueryWrapper<>();
95
+        QueryWrapper<Article>queryWrapper1=new QueryWrapper<>();
96
+        queryWrapper.orderByDesc("id");
97
+      //  Page<Tender> page = tenderService.findPage(new Page<>(pageNum, pageSize), name);
98
+        User currentUser = TokenUtils.getCurrentUser();
99
+        if (RoleEnum.bidder.toString().equals(currentUser.getRole())){  // 角色是投标人
100
+            queryWrapper.eq("uid", currentUser.getId());
101
+
102
+        }
103
+
104
+
105
+       if (RoleEnum.tenderee.toString().equals(currentUser.getRole())){  // 角色是招标人
106
+           queryWrapper.eq("tid", currentUser.getId());
107
+
108
+        }
109
+        return Result.success(tenderService.page(new Page<>(pageNum, pageSize), queryWrapper));
110
+    }
111
+    @GetMapping("/pages")
112
+    public Result findPages(@RequestParam(defaultValue = "") String name,
113
+                            @RequestParam Integer pageNum,
114
+                            @RequestParam Integer pageSize) {
115
+        QueryWrapper<Tender> queryWrapper = new QueryWrapper<>();
116
+        queryWrapper.orderByDesc("id");
117
+        if (!"".equals(name)) {
118
+            queryWrapper.like("name", name);
119
+        }
120
+        User currentUser = TokenUtils.getCurrentUser();
121
+
122
+        if (RoleEnum.bidder.toString().equals(currentUser.getRole())){
123
+
124
+            queryWrapper.eq("uid", currentUser.getId()).eq("states","已中标");
125
+
126
+        }
127
+        if (RoleEnum.tenderee.toString().equals(currentUser.getRole())){
128
+
129
+            queryWrapper.eq("tid", currentUser.getId()).eq("states","已中标");
130
+
131
+        }
132
+        return Result.success(tenderService.page(new Page<>(pageNum, pageSize), queryWrapper));
133
+    }
134
+
135
+}

+ 280
- 0
springboot_vue/src/main/java/com/ly/controller/UserController.java Parādīt failu

@@ -0,0 +1,280 @@
1
+package com.ly.controller;
2
+
3
+import cn.hutool.core.collection.CollUtil;
4
+import cn.hutool.core.util.StrUtil;
5
+import cn.hutool.crypto.SecureUtil;
6
+import cn.hutool.poi.excel.ExcelReader;
7
+import cn.hutool.poi.excel.ExcelUtil;
8
+import cn.hutool.poi.excel.ExcelWriter;
9
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
10
+import com.baomidou.mybatisplus.core.metadata.IPage;
11
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
12
+import com.ly.config.AuthAccess;
13
+import com.ly.controller.util.Constants;
14
+import com.ly.controller.util.R;
15
+
16
+import com.ly.controller.util.Result;
17
+import com.ly.controller.util.TokenUtils;
18
+import com.ly.domain.User;
19
+import com.ly.domain.Validation;
20
+import com.ly.exception.ServiceException;
21
+import com.ly.service.IValidationService;
22
+import com.ly.service.UserService;
23
+import org.springframework.beans.factory.annotation.Autowired;
24
+import org.springframework.beans.factory.annotation.Value;
25
+import org.springframework.web.bind.annotation.*;
26
+import org.springframework.web.multipart.MultipartFile;
27
+
28
+import javax.annotation.Resource;
29
+import javax.mail.MessagingException;
30
+import javax.servlet.ServletOutputStream;
31
+import javax.servlet.http.HttpServletResponse;
32
+import java.io.InputStream;
33
+import java.net.URLEncoder;
34
+import java.util.Date;
35
+import java.util.List;
36
+
37
+@RestController
38
+@RequestMapping("/user")
39
+public class UserController {
40
+    @Value("${files.upload.path}")
41
+    private String filesUploadPath;
42
+    @Resource
43
+    private IValidationService validationService;
44
+    @Resource
45
+    private UserService userService;
46
+
47
+    @PostMapping("/login")
48
+    public Result login(@RequestBody UserDTO userDTO) {
49
+        String username = userDTO.getUsername();
50
+        String password = userDTO.getPassword();
51
+
52
+        if (StrUtil.isBlank(username) || StrUtil.isBlank(password)) {
53
+            return Result.error(Constants.CODE_400, "参数错误");
54
+        }
55
+        UserDTO dto = userService.login(userDTO);
56
+        return Result.success(dto);
57
+    }
58
+
59
+    @PostMapping("/register")
60
+    public Result register(@RequestBody UserDTO userDTO) {
61
+        String username = userDTO.getUsername();
62
+        String password = userDTO.getPassword();
63
+       // String username = userDTO.getUsername();
64
+      //  String password = userDTO.getPassword();
65
+        if (StrUtil.isBlank(username) || StrUtil.isBlank(password)) {
66
+            return Result.error(Constants.CODE_400, "参数错误");
67
+        }
68
+        return Result.success(userService.register(userDTO));
69
+    }
70
+    @PostMapping("/register1")
71
+    public Result register1(@RequestBody UserDTO userDTO) {
72
+        String username = userDTO.getUsername();
73
+        String password = userDTO.getPassword();
74
+        if (StrUtil.isBlank(username) || StrUtil.isBlank(password)) {
75
+            return Result.error(Constants.CODE_400, "参数错误");
76
+        }
77
+        return Result.success(userService.register1(userDTO));
78
+    }
79
+    // 新增或者更新
80
+    @PostMapping
81
+    public Result save(@RequestBody User user) {
82
+        if (user.getId() == null && user.getPassword() == null) {  // 新增用户默认密码
83
+            user.setPassword("123");
84
+        }
85
+        return Result.success(userService.saveOrUpdate(user));
86
+    }
87
+
88
+    /**
89
+     * 修改密码
90
+     * @param userPasswordDTO
91
+     * @return
92
+     */
93
+    @PostMapping("/password")
94
+    public Result password(@RequestBody UserPasswordDTO userPasswordDTO) {
95
+        userService.updatePassword(userPasswordDTO);
96
+        return Result.success();
97
+    }
98
+
99
+    @DeleteMapping("/{id}")
100
+    public Result delete(@PathVariable Integer id) {
101
+        return Result.success(userService.removeById(id));
102
+    }
103
+
104
+    @PostMapping("/del/batch")
105
+    public Result deleteBatch(@RequestBody List<Integer> ids) {
106
+        return Result.success(userService.removeByIds(ids));
107
+    }
108
+
109
+    @GetMapping
110
+    public Result findAll() {
111
+        return Result.success(userService.list());
112
+    }
113
+
114
+    @GetMapping("/role/{role}")
115
+    public Result findUsersByRole(@PathVariable String role) {
116
+        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
117
+        queryWrapper.eq("role", role);
118
+        List<User> list = userService.list(queryWrapper);
119
+        return Result.success(list);
120
+    }
121
+
122
+    @GetMapping("/{id}")
123
+    public Result findOne(@PathVariable Integer id) {
124
+        return Result.success(userService.getById(id));
125
+    }
126
+
127
+    @GetMapping("/username/{username}")
128
+    public Result findByUsername(@PathVariable String username) {
129
+        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
130
+        queryWrapper.eq("username", username);
131
+        return Result.success(userService.getOne(queryWrapper));
132
+    }
133
+
134
+    @GetMapping("/page")
135
+    public Result findPage(@RequestParam Integer pageNum,
136
+                           @RequestParam Integer pageSize,
137
+                           @RequestParam(defaultValue = "") String username,
138
+                           @RequestParam(defaultValue = "") String email,
139
+                           @RequestParam(defaultValue = "") String address,
140
+                           @RequestParam(defaultValue = "") String role) {
141
+
142
+    QueryWrapper<User> queryWrapper = new QueryWrapper<>();
143
+      queryWrapper.orderByDesc("id");
144
+     if (!"".equals(username)) {
145
+          queryWrapper.like("username", username);
146
+      }
147
+      if (!"".equals(email)) {
148
+          queryWrapper.like("email", email);
149
+     }
150
+      if (!"".equals(address)) {
151
+          queryWrapper.like("address", address);
152
+    }
153
+        if (!"".equals(role)) {
154
+            queryWrapper.eq("role", role);
155
+        }
156
+        return Result.success(userService.page(new Page<>(pageNum, pageSize),queryWrapper));
157
+    }
158
+
159
+    /**
160
+     * 导出接口
161
+     */
162
+    @GetMapping("/export")
163
+    public void export(HttpServletResponse response) throws Exception {
164
+        // 从数据库查询出所有的数据
165
+        List<User> list = userService.list();
166
+        // 通过工具类创建writer 写出到磁盘路径
167
+//        ExcelWriter writer = ExcelUtil.getWriter(filesUploadPath + "/用户信息.xlsx");
168
+        // 在内存操作,写出到浏览器
169
+        ExcelWriter writer = ExcelUtil.getWriter(true);
170
+        //自定义标题别名
171
+        writer.addHeaderAlias("username", "用户名");
172
+        writer.addHeaderAlias("password", "密码");
173
+        writer.addHeaderAlias("nickname", "昵称");
174
+        writer.addHeaderAlias("email", "邮箱");
175
+        writer.addHeaderAlias("phone", "电话");
176
+        writer.addHeaderAlias("address", "地址");
177
+        writer.addHeaderAlias("createTime", "创建时间");
178
+        writer.addHeaderAlias("avatarUrl", "头像");
179
+
180
+        // 一次性写出list内的对象到excel,使用默认样式,强制输出标题
181
+        writer.write(list, true);
182
+
183
+        // 设置浏览器响应的格式
184
+        response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8");
185
+        String fileName = URLEncoder.encode("用户信息", "UTF-8");
186
+        response.setHeader("Content-Disposition", "attachment;filename=" + fileName + ".xlsx");
187
+
188
+        ServletOutputStream out = response.getOutputStream();
189
+        writer.flush(out, true);
190
+        out.close();
191
+        writer.close();
192
+
193
+    }
194
+
195
+    /**
196
+     * excel 导入
197
+     * @param file
198
+     * @throws Exception
199
+     */
200
+    @PostMapping("/import")
201
+    public Result imp(MultipartFile file) throws Exception {
202
+        InputStream inputStream = file.getInputStream();
203
+        ExcelReader reader = ExcelUtil.getReader(inputStream);
204
+        // 方式1:(推荐) 通过 javabean的方式读取Excel内的对象,但是要求表头必须是英文,跟javabean的属性要对应起来
205
+//        List<User> list = reader.readAll(User.class);
206
+
207
+        // 方式2:忽略表头的中文,直接读取表的内容
208
+        List<List<Object>> list = reader.read(1);
209
+        List<User> users = CollUtil.newArrayList();
210
+        for (List<Object> row : list) {
211
+            User user = new User();
212
+            user.setUsername(row.get(0).toString());
213
+            user.setPassword(row.get(1).toString());
214
+            user.setNickname(row.get(2).toString());
215
+            user.setEmail(row.get(3).toString());
216
+            user.setPhone(row.get(4).toString());
217
+            user.setAddress(row.get(5).toString());
218
+            user.setAvatarUrl(row.get(6).toString());
219
+            users.add(user);
220
+        }
221
+
222
+        userService.saveBatch(users);
223
+        return Result.success(true);
224
+    }
225
+
226
+    // 邮箱登录
227
+    @AuthAccess
228
+    @PostMapping("/loginEmail")
229
+    public Result loginEmail(@RequestBody UserDTO userDTO) {
230
+        String email = userDTO.getEmail();
231
+        String code = userDTO.getCode();
232
+        if (StrUtil.isBlank(email) || StrUtil.isBlank(code)) {
233
+            return Result.error(Constants.CODE_400, "参数错误");
234
+        }
235
+        UserDTO dto = userService.loginEmail(userDTO);
236
+        return Result.success(dto);
237
+    }
238
+
239
+    // 忘记密码 | 重置密码
240
+    @AuthAccess
241
+    @PutMapping("/reset")
242
+    public Result reset(@RequestBody UserPasswordDTO userPasswordDTO) {
243
+        if (StrUtil.isBlank(userPasswordDTO.getEmail()) || StrUtil.isBlank(userPasswordDTO.getCode())) {
244
+            throw new ServiceException("-1", "参数异常");
245
+        }
246
+        // 先查询 邮箱验证的表,看看之前有没有发送过  邮箱code,如果不存在,就重新获取
247
+        QueryWrapper<Validation> validationQueryWrapper = new QueryWrapper<>();
248
+        validationQueryWrapper.eq("email", userPasswordDTO.getEmail());
249
+        validationQueryWrapper.eq("code", userPasswordDTO.getCode());
250
+        validationQueryWrapper.ge("time", new Date());  // 查询数据库没过期的code, where time >= new Date()
251
+        Validation one = validationService.getOne(validationQueryWrapper);
252
+        if (one == null) {
253
+            throw new ServiceException("-1", "验证码过期,请重新获取");
254
+        }
255
+
256
+        // 如果验证通过了,就查询要不过户的信息
257
+        QueryWrapper<User> userQueryWrapper = new QueryWrapper<>();
258
+        userQueryWrapper.eq("email", userPasswordDTO.getEmail());  //存根据email查询用户信息
259
+        User user = userService.getOne(userQueryWrapper);
260
+
261
+        // 重置密码
262
+        user.setPassword("123");
263
+        userService.updateById(user);
264
+        return Result.success();
265
+    }
266
+
267
+    // 发送邮箱验证码
268
+    @AuthAccess
269
+    @GetMapping("/email/{email}/{type}")
270
+    public Result sendEmailCode(@PathVariable String email, @PathVariable Integer type) throws MessagingException {
271
+        if(StrUtil.isBlank(email)) {
272
+            throw new ServiceException(Constants.CODE_400, "参数错误");
273
+        }
274
+        if(type == null) {
275
+            throw new ServiceException(Constants.CODE_400, "参数错误");
276
+        }
277
+        userService.sendEmailCode(email, type);
278
+        return Result.success();
279
+    }
280
+}

+ 26
- 0
springboot_vue/src/main/java/com/ly/controller/UserDTO.java Parādīt failu

@@ -0,0 +1,26 @@
1
+package com.ly.controller;
2
+
3
+import com.ly.domain.Menu;
4
+import lombok.AllArgsConstructor;
5
+import lombok.Data;
6
+import lombok.NoArgsConstructor;
7
+
8
+import java.util.List;
9
+
10
+@Data
11
+public class UserDTO {
12
+    private Integer id;
13
+    private String username;
14
+    private String password;
15
+    private String nickname;
16
+    private String avatarUrl;
17
+    private String token;
18
+    private String role;
19
+    private String email;
20
+   private String phone;
21
+   private String address;
22
+    private List<Menu> menus;
23
+    private String code;
24
+
25
+
26
+}

+ 13
- 0
springboot_vue/src/main/java/com/ly/controller/UserPasswordDTO.java Parādīt failu

@@ -0,0 +1,13 @@
1
+package com.ly.controller;
2
+
3
+import lombok.Data;
4
+
5
+@Data
6
+public class UserPasswordDTO {
7
+    private String username;
8
+    private String password;
9
+    private String newPassword;
10
+    private String email;
11
+    private String code;
12
+    private String phone;
13
+}

+ 70
- 0
springboot_vue/src/main/java/com/ly/controller/ValidationController.java Parādīt failu

@@ -0,0 +1,70 @@
1
+package com.ly.controller;
2
+
3
+
4
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
5
+import com.ly.controller.util.Result;
6
+import org.springframework.web.bind.annotation.*;
7
+import javax.annotation.Resource;
8
+import java.util.List;
9
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
10
+
11
+
12
+import com.ly.service.IValidationService;
13
+import com.ly.domain.Validation;
14
+
15
+import org.springframework.web.bind.annotation.RestController;
16
+
17
+/**
18
+ * <p>
19
+ *  前端控制器
20
+ * </p>
21
+ *
22
+ * @author null
23
+ * @since 2022-11-29
24
+ */
25
+@RestController
26
+@RequestMapping("/validation")
27
+public class ValidationController {
28
+
29
+    @Resource
30
+    private IValidationService validationService;
31
+
32
+    // 新增或者更新
33
+    @PostMapping
34
+    public Result save(@RequestBody Validation validation) {
35
+        validationService.saveOrUpdate(validation);
36
+        return Result.success();
37
+    }
38
+
39
+    @DeleteMapping("/{id}")
40
+    public Result delete(@PathVariable Integer id) {
41
+        validationService.removeById(id);
42
+        return Result.success();
43
+    }
44
+
45
+    @PostMapping("/del/batch")
46
+    public Result deleteBatch(@RequestBody List<Integer> ids) {
47
+        validationService.removeByIds(ids);
48
+        return Result.success();
49
+    }
50
+
51
+    @GetMapping
52
+    public Result findAll() {
53
+        return Result.success(validationService.list());
54
+    }
55
+
56
+    @GetMapping("/{id}")
57
+    public Result findOne(@PathVariable Integer id) {
58
+        return Result.success(validationService.getById(id));
59
+    }
60
+
61
+    @GetMapping("/page")
62
+    public Result findPage(@RequestParam Integer pageNum,
63
+                                @RequestParam Integer pageSize) {
64
+        QueryWrapper<Validation> queryWrapper = new QueryWrapper<>();
65
+        queryWrapper.orderByDesc("id");
66
+        return Result.success(validationService.page(new Page<>(pageNum, pageSize), queryWrapper));
67
+    }
68
+
69
+}
70
+

+ 67
- 0
springboot_vue/src/main/java/com/ly/controller/interceptor/JwtInterceptor.java Parādīt failu

@@ -0,0 +1,67 @@
1
+package com.ly.controller.interceptor;
2
+import cn.hutool.core.util.StrUtil;
3
+import com.auth0.jwt.JWT;
4
+import com.auth0.jwt.JWTVerifier;
5
+import com.auth0.jwt.algorithms.Algorithm;
6
+import com.auth0.jwt.exceptions.JWTDecodeException;
7
+import com.auth0.jwt.exceptions.JWTVerificationException;
8
+
9
+import com.ly.config.AuthAccess;
10
+import com.ly.controller.util.Constants;
11
+import com.ly.domain.User;
12
+import com.ly.exception.ServiceException;
13
+import com.ly.service.UserService;
14
+import org.springframework.beans.factory.annotation.Autowired;
15
+import org.springframework.web.method.HandlerMethod;
16
+import org.springframework.web.servlet.HandlerInterceptor;
17
+
18
+import javax.servlet.http.HttpServletRequest;
19
+import javax.servlet.http.HttpServletResponse;
20
+
21
+public class JwtInterceptor implements HandlerInterceptor {
22
+
23
+    @Autowired
24
+    private UserService userService;
25
+
26
+    @Override
27
+    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {
28
+        String token = request.getHeader("token");
29
+        // 如果不是映射到方法直接通过
30
+
31
+        if(!(handler instanceof HandlerMethod)){
32
+            return true;
33
+        }else {
34
+            HandlerMethod h = (HandlerMethod) handler;
35
+            AuthAccess authAccess = h.getMethodAnnotation(AuthAccess.class);
36
+            if (authAccess != null) {
37
+                return true;
38
+            }
39
+        }
40
+        //执行认证
41
+       if (StrUtil.isBlank(token)){
42
+            throw new ServiceException(Constants.CODE_401,"无token,请登录");
43
+        }
44
+        String userId;
45
+        try {
46
+            userId = JWT.decode(token).getAudience().get(0);
47
+        } catch (JWTDecodeException j) {
48
+            throw new ServiceException(Constants.CODE_401,"token验证失败");
49
+
50
+        }
51
+
52
+        User user = userService.getById(userId);
53
+        if (user == null) {
54
+            throw new ServiceException(Constants.CODE_401,"用户不存在,请重新登录");
55
+        }
56
+
57
+        // 验证 token
58
+        JWTVerifier jwtVerifier = JWT.require(Algorithm.HMAC256(user.getPassword())).build();
59
+        try {
60
+            jwtVerifier.verify(token);
61
+        } catch (JWTVerificationException e) {
62
+            throw new ServiceException(Constants.CODE_401,"用户不存在,请重新登录");
63
+        }
64
+        return true;
65
+    }
66
+
67
+}

+ 41
- 0
springboot_vue/src/main/java/com/ly/controller/util/CodeGenerator.java Parādīt failu

@@ -0,0 +1,41 @@
1
+package com.ly.controller.util;
2
+
3
+import com.baomidou.mybatisplus.generator.FastAutoGenerator;
4
+import com.baomidou.mybatisplus.generator.config.OutputFile;
5
+
6
+import java.util.Collections;
7
+
8
+public class CodeGenerator {
9
+
10
+    public static void main(String[] args) {
11
+        generate();
12
+        //生成vue
13
+        // createVue();
14
+    }
15
+
16
+    private static void generate() {
17
+        FastAutoGenerator.create("jdbc:mysql://localhost:3306/sys?serverTimezone=GMT%2b8", "root", "123456")
18
+                .globalConfig(builder -> {
19
+                    builder.author("L_y") // 设置作者
20
+                            .enableSwagger() // 开启 swagger 模式
21
+                            .fileOverride() // 覆盖已生成文件
22
+                            .outputDir("C:\\Users\\OVER YOU\\Desktop\\idea项目\\springboot_vue\\src\\main\\java\\"); // 指定输出目录
23
+                })
24
+                .packageConfig(builder -> {
25
+                    builder.parent("com.ly") // 设置父包名
26
+                            .moduleName(null) // 设置父包模块名
27
+                            .pathInfo(Collections.singletonMap(OutputFile.mapperXml, "C:\\Users\\OVER YOU\\Desktop\\idea项目\\springboot_vue\\src\\main\\resources\\mapper\\")); // 设置mapperXml生成路径
28
+                })
29
+                .strategyConfig(builder -> {
30
+                    builder.entityBuilder().enableLombok();
31
+//                    builder.mapperBuilder().enableMapperAnnotation().build();
32
+                    builder.controllerBuilder().enableHyphenStyle()  // 开启驼峰转连字符
33
+                            .enableRestStyle();  // 开启生成@RestController 控制器
34
+                    builder.addInclude("validation") // 设置需要生成的表名
35
+                            .addTablePrefix("t_", "sys_"); // 设置过滤表前缀
36
+                })
37
+//                .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
38
+                .execute();
39
+
40
+    }
41
+}

+ 12
- 0
springboot_vue/src/main/java/com/ly/controller/util/Constants.java Parādīt failu

@@ -0,0 +1,12 @@
1
+package com.ly.controller.util;
2
+
3
+//常量类
4
+public interface Constants {
5
+    String CODE_200 = "200"; //成功
6
+    String CODE_401 = "401";  // 权限不足
7
+    String CODE_400 = "400";  // 参数错误
8
+    String CODE_500 = "500"; // 系统错误
9
+    String CODE_600 = "600"; // 其他业务异常
10
+    String DICT_TYPE_ICON="icon";
11
+    String FILES_KEY = "FILES_FRONT_ALL";
12
+}

+ 26
- 0
springboot_vue/src/main/java/com/ly/controller/util/R.java Parādīt failu

@@ -0,0 +1,26 @@
1
+package com.ly.controller.util;
2
+
3
+import lombok.Data;
4
+//封装数据统一数据格式
5
+@Data
6
+public class R {
7
+    private Boolean flag;
8
+    private  Object data;
9
+    private String msg;
10
+    public R(Boolean flag){
11
+        this.flag=flag;
12
+    }
13
+    public R(){
14
+
15
+    }
16
+    public R(Boolean flag, Object data){
17
+        this.flag=flag;
18
+        this.data=data;
19
+    }
20
+    public R(Boolean flag,Object data,String msg){
21
+        this.flag = flag;
22
+        this.data = data;
23
+        this.msg = msg;
24
+    }
25
+
26
+}

+ 30
- 0
springboot_vue/src/main/java/com/ly/controller/util/Result.java Parādīt failu

@@ -0,0 +1,30 @@
1
+package com.ly.controller.util;
2
+
3
+import lombok.AllArgsConstructor;
4
+import lombok.Data;
5
+import lombok.NoArgsConstructor;
6
+
7
+@Data
8
+@NoArgsConstructor
9
+@AllArgsConstructor
10
+public class Result {
11
+    private String code;
12
+    private String msg;
13
+    private Object data;
14
+
15
+    public static Result success() {
16
+        return new Result(Constants.CODE_200, "", null);
17
+    }
18
+
19
+    public static Result success(Object data) {
20
+        return new Result(Constants.CODE_200, "", data);
21
+    }
22
+
23
+    public static Result error(String code, String msg) {
24
+        return new Result(code, msg, null);
25
+    }
26
+
27
+    public static Result error() {
28
+        return new Result(Constants.CODE_500, "系统错误", null);
29
+    }
30
+}

+ 7
- 0
springboot_vue/src/main/java/com/ly/controller/util/RoleEnum.java Parādīt failu

@@ -0,0 +1,7 @@
1
+package com.ly.controller.util;
2
+
3
+public enum RoleEnum {
4
+    ROLE_ADMIN,user,ROLE_STUDENT, ROLE_TEACHER,
5
+    //投标人  招标人   评标人 管理员
6
+    bidder, tenderee,assessor ,admin
7
+}

+ 61
- 0
springboot_vue/src/main/java/com/ly/controller/util/TokenUtils.java Parādīt failu

@@ -0,0 +1,61 @@
1
+package com.ly.controller.util;
2
+
3
+import cn.hutool.core.date.DateUtil;
4
+import cn.hutool.core.util.StrUtil;
5
+import com.auth0.jwt.JWT;
6
+import com.auth0.jwt.algorithms.Algorithm;
7
+
8
+import com.ly.domain.User;
9
+import com.ly.service.UserService;
10
+import org.springframework.stereotype.Component;
11
+import org.springframework.web.context.request.RequestContextHolder;
12
+import org.springframework.web.context.request.ServletRequestAttributes;
13
+
14
+import javax.annotation.PostConstruct;
15
+import javax.annotation.Resource;
16
+import javax.servlet.http.HttpServletRequest;
17
+import java.util.Date;
18
+
19
+
20
+@Component
21
+public class TokenUtils {
22
+    private static UserService staticUserService;
23
+
24
+    @Resource
25
+    private UserService userService;
26
+
27
+    @PostConstruct
28
+    public void setUserService() {
29
+        staticUserService = userService;
30
+    }
31
+
32
+    /**
33
+     * 生成token
34
+     *
35
+     * @return
36
+     */
37
+    public static String genToken(String userId, String sign) {
38
+        return JWT.create().withAudience(userId) // 将 user id 保存到 token 里面,作为载荷
39
+                .withExpiresAt(DateUtil.offsetHour(new Date(), 2)) // 2小时后token过期
40
+                .sign(Algorithm.HMAC256(sign)); // 以 password 作为 token 的密钥
41
+    }
42
+
43
+    /**
44
+     * 获取当前登录的用户信息
45
+     *
46
+     * @return user对象
47
+     */
48
+    public static User getCurrentUser() {
49
+        try {
50
+            HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
51
+            String token = request.getHeader("token");
52
+            if (StrUtil.isNotBlank(token)) {
53
+                String userId = JWT.decode(token).getAudience().get(0);
54
+                return staticUserService.getById(Integer.valueOf(userId));
55
+            }
56
+        } catch (Exception e) {
57
+            return null;
58
+        }
59
+        return null;
60
+    }
61
+}

+ 14
- 0
springboot_vue/src/main/java/com/ly/controller/util/ValidationEnum.java Parādīt failu

@@ -0,0 +1,14 @@
1
+package com.ly.controller.util;
2
+
3
+public enum ValidationEnum {
4
+    LOGIN(1),FORGET_PASS(2);
5
+    private  Integer code;
6
+
7
+    public Integer getCode() {
8
+        return code;
9
+    }
10
+
11
+    ValidationEnum(Integer code ){
12
+        this.code =code;
13
+    }
14
+}

+ 9
- 0
springboot_vue/src/main/java/com/ly/dao/ApprovalDao.java Parādīt failu

@@ -0,0 +1,9 @@
1
+package com.ly.dao;
2
+
3
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
4
+import com.ly.domain.Approval;
5
+import org.apache.ibatis.annotations.Mapper;
6
+
7
+@Mapper
8
+public interface ApprovalDao extends BaseMapper<Approval> {
9
+}

+ 12
- 0
springboot_vue/src/main/java/com/ly/dao/ArticleDao.java Parādīt failu

@@ -0,0 +1,12 @@
1
+package com.ly.dao;
2
+
3
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
4
+import com.ly.domain.Article;
5
+import com.ly.domain.Course;
6
+import org.apache.ibatis.annotations.Mapper;
7
+
8
+@Mapper
9
+public interface ArticleDao extends BaseMapper<Article> {
10
+
11
+
12
+}

+ 12
- 0
springboot_vue/src/main/java/com/ly/dao/BidsDao.java Parādīt failu

@@ -0,0 +1,12 @@
1
+package com.ly.dao;
2
+
3
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
4
+import com.ly.domain.Article;
5
+import com.ly.domain.Bids;
6
+import org.apache.ibatis.annotations.Mapper;
7
+
8
+@Mapper
9
+public interface BidsDao extends BaseMapper<Bids> {
10
+
11
+
12
+}

+ 18
- 0
springboot_vue/src/main/java/com/ly/dao/BudgetDao.java Parādīt failu

@@ -0,0 +1,18 @@
1
+package com.ly.dao;
2
+
3
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
4
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
5
+import com.ly.domain.Budget;
6
+import com.ly.domain.Comment;
7
+import com.ly.domain.Course;
8
+import org.apache.ibatis.annotations.Mapper;
9
+import org.apache.ibatis.annotations.Param;
10
+
11
+@Mapper
12
+public interface BudgetDao extends BaseMapper<Budget> {
13
+    Page<Budget> findPage(Page<Budget> page, @Param("name") String name);
14
+
15
+    void deleteArticleBudget(@Param("budgetId")Integer articleId, @Param("articleId")Integer budgetId);
16
+
17
+    void setArticleBudget(@Param("budgetId")Integer articleId,  @Param("articleId")Integer budgetId);
18
+}

+ 12
- 0
springboot_vue/src/main/java/com/ly/dao/CalendarDao.java Parādīt failu

@@ -0,0 +1,12 @@
1
+package com.ly.dao;
2
+
3
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
4
+import com.ly.domain.Calendar;
5
+import org.apache.ibatis.annotations.Mapper;
6
+import org.apache.ibatis.annotations.Param;
7
+
8
+@Mapper
9
+public interface CalendarDao extends BaseMapper<Calendar> {
10
+
11
+    Calendar findAllByDate( String date);
12
+}

+ 19
- 0
springboot_vue/src/main/java/com/ly/dao/CommentDao.java Parādīt failu

@@ -0,0 +1,19 @@
1
+package com.ly.dao;
2
+
3
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
4
+import com.ly.domain.Comment;
5
+import com.ly.domain.Course;
6
+import org.apache.ibatis.annotations.Mapper;
7
+import org.apache.ibatis.annotations.Param;
8
+import org.apache.ibatis.annotations.Select;
9
+
10
+import java.util.List;
11
+
12
+@Mapper
13
+public interface CommentDao extends BaseMapper<Comment> {
14
+    @Select("select c.*,u.nickname,u.avatar_url from t_comment c left join user u on c.user_id = u.id " +
15
+            "where c.article_id = #{articleId} order by id desc")
16
+    List<Comment> findCommentDetail(@Param("articleId") Integer articleId);
17
+
18
+}
19
+

+ 17
- 0
springboot_vue/src/main/java/com/ly/dao/CourseDao.java Parādīt failu

@@ -0,0 +1,17 @@
1
+package com.ly.dao;
2
+
3
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
4
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
5
+import com.ly.domain.Course;
6
+import org.apache.ibatis.annotations.Mapper;
7
+import org.apache.ibatis.annotations.Param;
8
+
9
+@Mapper
10
+public interface CourseDao extends BaseMapper<Course> {
11
+    Page<Course> findPage(Page<Course> page, @Param("name") String name);
12
+
13
+    void deleteStudentCourse(@Param("courseId")Integer courseId, @Param("studentId") Integer studentId);
14
+
15
+    void setStudentCourse(@Param("courseId")Integer courseId, @Param("studentId") Integer studentId);
16
+
17
+}

+ 9
- 0
springboot_vue/src/main/java/com/ly/dao/DictDao.java Parādīt failu

@@ -0,0 +1,9 @@
1
+package com.ly.dao;
2
+
3
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
4
+import com.ly.domain.Dict;
5
+import org.apache.ibatis.annotations.Mapper;
6
+
7
+@Mapper
8
+public interface DictDao extends BaseMapper<Dict> {
9
+}

+ 9
- 0
springboot_vue/src/main/java/com/ly/dao/FileDao.java Parādīt failu

@@ -0,0 +1,9 @@
1
+package com.ly.dao;
2
+
3
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
4
+import com.ly.domain.Files;
5
+import org.apache.ibatis.annotations.Mapper;
6
+
7
+@Mapper
8
+public interface FileDao extends BaseMapper<Files> {
9
+}

+ 10
- 0
springboot_vue/src/main/java/com/ly/dao/GenresDao.java Parādīt failu

@@ -0,0 +1,10 @@
1
+package com.ly.dao;
2
+
3
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
4
+import com.ly.domain.Genres;
5
+import org.apache.ibatis.annotations.Mapper;
6
+
7
+@Mapper
8
+public interface GenresDao extends BaseMapper<Genres> {
9
+
10
+}

+ 14
- 0
springboot_vue/src/main/java/com/ly/dao/ManageDao.java Parādīt failu

@@ -0,0 +1,14 @@
1
+package com.ly.dao;
2
+
3
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
4
+import com.ly.domain.Manage;
5
+import org.apache.ibatis.annotations.Insert;
6
+import org.apache.ibatis.annotations.Mapper;
7
+import org.apache.ibatis.annotations.Param;
8
+import org.apache.ibatis.annotations.Select;
9
+
10
+@Mapper
11
+public interface ManageDao extends BaseMapper<Manage> {
12
+    @Insert("ins id from sys_role where flag = #{flag}")
13
+    Integer saveManage(@Param("flag") String flag);
14
+}

+ 9
- 0
springboot_vue/src/main/java/com/ly/dao/MenuDao.java Parādīt failu

@@ -0,0 +1,9 @@
1
+package com.ly.dao;
2
+
3
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
4
+import com.ly.domain.Menu;
5
+import org.apache.ibatis.annotations.Mapper;
6
+
7
+@Mapper
8
+public interface MenuDao extends BaseMapper<Menu> {
9
+}

+ 13
- 0
springboot_vue/src/main/java/com/ly/dao/RoleDao.java Parādīt failu

@@ -0,0 +1,13 @@
1
+package com.ly.dao;
2
+
3
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
4
+import com.ly.domain.Role;
5
+import org.apache.ibatis.annotations.Mapper;
6
+import org.apache.ibatis.annotations.Param;
7
+import org.apache.ibatis.annotations.Select;
8
+
9
+@Mapper
10
+public interface RoleDao extends BaseMapper<Role> {
11
+    @Select("select id from sys_role where flag = #{flag}")
12
+    Integer selectByFlag(@Param("flag") String flag);
13
+}

+ 20
- 0
springboot_vue/src/main/java/com/ly/dao/RoleMenuDao.java Parādīt failu

@@ -0,0 +1,20 @@
1
+package com.ly.dao;
2
+
3
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
4
+import com.ly.domain.RoleMenu;
5
+import org.apache.ibatis.annotations.Delete;
6
+import org.apache.ibatis.annotations.Mapper;
7
+import org.apache.ibatis.annotations.Param;
8
+import org.apache.ibatis.annotations.Select;
9
+
10
+import java.util.List;
11
+
12
+@Mapper
13
+public interface RoleMenuDao extends BaseMapper<RoleMenu> {
14
+
15
+    @Delete("delete from sys_role_menu where role_id = #{roleId}")
16
+    int deleteByRoleId(@Param("roleId") Integer roleId);
17
+
18
+    @Select("select menu_id from sys_role_menu where role_id = #{roleId}")
19
+    List<Integer> selectByRoleId(@Param("roleId")Integer roleId);
20
+}

+ 13
- 0
springboot_vue/src/main/java/com/ly/dao/TenderDao.java Parādīt failu

@@ -0,0 +1,13 @@
1
+package com.ly.dao;
2
+
3
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
4
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
5
+import com.ly.domain.Course;
6
+import com.ly.domain.Tender;
7
+import org.apache.ibatis.annotations.Mapper;
8
+import org.apache.ibatis.annotations.Param;
9
+
10
+@Mapper
11
+public interface TenderDao extends BaseMapper<Tender> {
12
+    Page<Tender> findPage(Page<Tender> page, @Param("name") String name);
13
+}

+ 18
- 0
springboot_vue/src/main/java/com/ly/dao/UserDao.java Parādīt failu

@@ -0,0 +1,18 @@
1
+package com.ly.dao;
2
+
3
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
4
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
5
+import com.ly.controller.UserPasswordDTO;
6
+import com.ly.domain.User;
7
+import org.apache.ibatis.annotations.Mapper;
8
+import org.apache.ibatis.annotations.Param;
9
+import org.apache.ibatis.annotations.Update;
10
+
11
+@Mapper
12
+public interface UserDao extends BaseMapper<User> {
13
+    Page<User> findPage(Page<User> page, @Param("username") String username, @Param("email") String email, @Param("address") String address);
14
+
15
+    @Update("update user set password = #{newPassword} where username = #{username} and password = #{password}")
16
+    int updatePassword(UserPasswordDTO userPasswordDTO);
17
+
18
+}

+ 18
- 0
springboot_vue/src/main/java/com/ly/dao/ValidationMapper.java Parādīt failu

@@ -0,0 +1,18 @@
1
+package com.ly.dao;
2
+
3
+import com.ly.domain.Validation;
4
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
5
+import org.apache.ibatis.annotations.Mapper;
6
+
7
+/**
8
+ * <p>
9
+ *  Mapper 接口
10
+ * </p>
11
+ *
12
+ * @author null
13
+ * @since 2022-11-29
14
+ */
15
+@Mapper
16
+public interface ValidationMapper extends BaseMapper<Validation> {
17
+
18
+}

+ 13
- 0
springboot_vue/src/main/java/com/ly/domain/Approval.java Parādīt failu

@@ -0,0 +1,13 @@
1
+package com.ly.domain;
2
+
3
+import lombok.Data;
4
+
5
+@Data
6
+public class Approval {
7
+        private Integer id;
8
+        private String name;
9
+        private String user;
10
+        private String time;
11
+        private String img;
12
+        private String state;
13
+}

+ 21
- 0
springboot_vue/src/main/java/com/ly/domain/Article.java Parādīt failu

@@ -0,0 +1,21 @@
1
+package com.ly.domain;
2
+
3
+import cn.hutool.core.date.DateTime;
4
+import lombok.Data;
5
+import net.sf.jsqlparser.expression.DateTimeLiteralExpression;
6
+
7
+import java.util.Date;
8
+
9
+@Data
10
+public class Article {
11
+    private Integer id;
12
+    private String name;
13
+    private String content;
14
+    private  String user;
15
+    private Date time;
16
+    private String state;
17
+    private Date overtime;
18
+    private String states;
19
+    private String feedback;
20
+    private Integer uid;
21
+}

+ 20
- 0
springboot_vue/src/main/java/com/ly/domain/Bids.java Parādīt failu

@@ -0,0 +1,20 @@
1
+package com.ly.domain;
2
+
3
+import lombok.Data;
4
+
5
+import java.util.Date;
6
+
7
+@Data
8
+public class Bids {
9
+    private Integer id;
10
+    private String name;
11
+    private String content;
12
+    private  String user;
13
+    private Date time;
14
+    private String state;
15
+    private Date overtime;
16
+    private String states;
17
+    private String feedback;
18
+    private Integer uid;
19
+    private Integer type;
20
+}

+ 25
- 0
springboot_vue/src/main/java/com/ly/domain/Budget.java Parādīt failu

@@ -0,0 +1,25 @@
1
+package com.ly.domain;
2
+
3
+import com.baomidou.mybatisplus.annotation.TableField;
4
+import lombok.Data;
5
+
6
+@Data
7
+public class Budget {
8
+    private Integer id;
9
+    private String user;
10
+    private Integer cid;
11
+    private String time;
12
+    private String name;
13
+    @TableField(exist = false)
14
+    private String cname;
15
+    @TableField(value = "budget_id")
16
+    private Integer budgetId;
17
+    @TableField(exist = false)
18
+    private String budget;
19
+    @TableField(value = "article_id")
20
+    private Integer articleId;
21
+    @TableField(exist = false)
22
+    private String article;
23
+
24
+
25
+}

+ 13
- 0
springboot_vue/src/main/java/com/ly/domain/Calendar.java Parādīt failu

@@ -0,0 +1,13 @@
1
+package com.ly.domain;
2
+
3
+import com.baomidou.mybatisplus.annotation.TableName;
4
+import lombok.Data;
5
+import org.springframework.data.annotation.Id;
6
+
7
+@Data
8
+@TableName("calendar")
9
+public class Calendar {
10
+    private Integer id;
11
+    private String date;
12
+    private String content;
13
+}

+ 32
- 0
springboot_vue/src/main/java/com/ly/domain/Comment.java Parādīt failu

@@ -0,0 +1,32 @@
1
+package com.ly.domain;
2
+
3
+import com.baomidou.mybatisplus.annotation.TableField;
4
+import com.baomidou.mybatisplus.annotation.TableName;
5
+import lombok.Data;
6
+
7
+import java.util.List;
8
+
9
+@TableName("t_comment")
10
+@Data
11
+public class Comment {
12
+   private Integer id;
13
+   private String content;
14
+   @TableField(value = "user_id")
15
+   private  Integer userId;
16
+   private String time;
17
+   private  Integer pid;
18
+   @TableField(value = "origin_id")
19
+   private Integer originId;
20
+    @TableField(value = "article_id")
21
+    private Integer articleId;
22
+    @TableField(exist = false)
23
+    private String nickname;
24
+    @TableField(exist = false)
25
+    private String avatarUrl;
26
+    @TableField(exist = false)
27
+    private List<Comment> children;
28
+    @TableField(exist = false)
29
+    private String pNickname;  // 父节点的用户昵称
30
+    @TableField(exist = false)
31
+    private Integer pUserId;  // 父节点的用户id
32
+}

+ 16
- 0
springboot_vue/src/main/java/com/ly/domain/Course.java Parādīt failu

@@ -0,0 +1,16 @@
1
+package com.ly.domain;
2
+
3
+import com.baomidou.mybatisplus.annotation.TableField;
4
+import lombok.Data;
5
+
6
+@Data
7
+public class Course {
8
+    private Integer id;
9
+    private String name;
10
+    private String score;
11
+    private String times;
12
+    @TableField(value = "teacher_id")
13
+    private Integer teacherId;
14
+    @TableField(exist = false)
15
+    private String teacher;
16
+}

+ 12
- 0
springboot_vue/src/main/java/com/ly/domain/Dict.java Parādīt failu

@@ -0,0 +1,12 @@
1
+package com.ly.domain;
2
+
3
+import com.baomidou.mybatisplus.annotation.TableName;
4
+import lombok.Data;
5
+
6
+@Data
7
+@TableName("sys_dict")
8
+public class Dict {
9
+    private String name;
10
+    private String value;
11
+    private String type;
12
+}

+ 24
- 0
springboot_vue/src/main/java/com/ly/domain/Files.java Parādīt failu

@@ -0,0 +1,24 @@
1
+package com.ly.domain;
2
+
3
+import com.baomidou.mybatisplus.annotation.IdType;
4
+import com.baomidou.mybatisplus.annotation.TableField;
5
+import com.baomidou.mybatisplus.annotation.TableId;
6
+import com.baomidou.mybatisplus.annotation.TableName;
7
+import lombok.Data;
8
+
9
+@Data
10
+@TableName("file")
11
+public class Files {
12
+    @TableId(type = IdType.AUTO)
13
+    private Integer id;
14
+    private String name;
15
+    private String type;
16
+    private Long size;
17
+    private String url;
18
+    private String md5;
19
+    private Boolean isDelete;
20
+    private Boolean enable;
21
+    private  String user;
22
+    private String time;
23
+    private  String role;
24
+}

+ 9
- 0
springboot_vue/src/main/java/com/ly/domain/Genres.java Parādīt failu

@@ -0,0 +1,9 @@
1
+package com.ly.domain;
2
+
3
+import lombok.Data;
4
+
5
+@Data
6
+public class Genres {
7
+    private Integer id;
8
+    private String name;
9
+}

+ 16
- 0
springboot_vue/src/main/java/com/ly/domain/Manage.java Parādīt failu

@@ -0,0 +1,16 @@
1
+package com.ly.domain;
2
+
3
+import lombok.Data;
4
+
5
+import java.util.Date;
6
+
7
+@Data
8
+public class Manage {
9
+    private Integer id;
10
+    private String name;
11
+    private String user;
12
+    private Date time;
13
+    private Date overtime;
14
+    private String nickname;
15
+    private String states;
16
+}

+ 28
- 0
springboot_vue/src/main/java/com/ly/domain/Menu.java Parādīt failu

@@ -0,0 +1,28 @@
1
+package com.ly.domain;
2
+
3
+import com.baomidou.mybatisplus.annotation.IdType;
4
+import com.baomidou.mybatisplus.annotation.TableField;
5
+import com.baomidou.mybatisplus.annotation.TableId;
6
+import com.baomidou.mybatisplus.annotation.TableName;
7
+import lombok.Data;
8
+
9
+import java.util.List;
10
+
11
+@Data
12
+@TableName("sys_menu")
13
+public class Menu {
14
+    @TableId(type = IdType.AUTO)
15
+    private Integer id;
16
+    private String name;
17
+    private String path;
18
+    private String icon;
19
+    private String description;
20
+    @TableField(exist = false)
21
+    private List<Menu> children;
22
+
23
+    private Integer pid;
24
+    @TableField(value = "page_path")
25
+    private String pagePath;
26
+
27
+
28
+}

+ 18
- 0
springboot_vue/src/main/java/com/ly/domain/Role.java Parādīt failu

@@ -0,0 +1,18 @@
1
+package com.ly.domain;
2
+
3
+import com.baomidou.mybatisplus.annotation.IdType;
4
+import com.baomidou.mybatisplus.annotation.TableId;
5
+import com.baomidou.mybatisplus.annotation.TableName;
6
+import lombok.Data;
7
+
8
+@Data
9
+@TableName("sys_role")
10
+public class Role {
11
+    @TableId(type = IdType.AUTO)
12
+    private Integer id;
13
+    private String name;
14
+    private String description;
15
+    //唯一标识
16
+    private String flag;
17
+
18
+}

+ 12
- 0
springboot_vue/src/main/java/com/ly/domain/RoleMenu.java Parādīt failu

@@ -0,0 +1,12 @@
1
+package com.ly.domain;
2
+
3
+import com.baomidou.mybatisplus.annotation.TableName;
4
+import lombok.Data;
5
+@Data
6
+@TableName("sys_role_menu")
7
+
8
+public class RoleMenu {
9
+    private Integer roleId;
10
+    private Integer menuId;
11
+
12
+}

+ 18
- 0
springboot_vue/src/main/java/com/ly/domain/Tender.java Parādīt failu

@@ -0,0 +1,18 @@
1
+package com.ly.domain;
2
+
3
+import lombok.Data;
4
+
5
+@Data
6
+public class Tender {
7
+    private Integer id;
8
+    private Integer uid;
9
+    private  Integer pid;
10
+    private  String user;
11
+    private  String time;
12
+    private String states;
13
+    private Integer tid;
14
+    private double funds;
15
+    private String feedback;
16
+    private String fileurl;
17
+    private  String tuser;
18
+}

+ 39
- 0
springboot_vue/src/main/java/com/ly/domain/User.java Parādīt failu

@@ -0,0 +1,39 @@
1
+package com.ly.domain;
2
+
3
+import com.baomidou.mybatisplus.annotation.IdType;
4
+import com.baomidou.mybatisplus.annotation.TableField;
5
+import com.baomidou.mybatisplus.annotation.TableId;
6
+import lombok.Data;
7
+import lombok.ToString;
8
+
9
+import java.util.Date;
10
+import java.util.List;
11
+
12
+@Data
13
+@ToString
14
+public class User {
15
+    private Integer id;
16
+    private String username;
17
+    private String password;
18
+    private String nickname;
19
+    private String email;
20
+    private String phone;
21
+    private String address;
22
+    @TableField(value = "avatar_url")  // 指定数据库的字段名称
23
+    private String avatarUrl;
24
+    private Date createTime;
25
+    private String role;
26
+    @TableField(exist = false)
27
+    private List<Course>courses;
28
+
29
+    @TableField(exist =false)
30
+    private List<Course>stuCourses;
31
+
32
+    @TableField(exist = false)
33
+    private List<Budget>budgets;
34
+
35
+    @TableField(exist =false)
36
+    private List<Budget>articleBudgets;
37
+
38
+
39
+}

+ 39
- 0
springboot_vue/src/main/java/com/ly/domain/Validation.java Parādīt failu

@@ -0,0 +1,39 @@
1
+package com.ly.domain;
2
+
3
+import com.baomidou.mybatisplus.annotation.IdType;
4
+import com.baomidou.mybatisplus.annotation.TableId;
5
+import java.io.Serializable;
6
+import java.time.LocalDateTime;
7
+import java.util.Date;
8
+
9
+import lombok.Getter;
10
+import lombok.Setter;
11
+
12
+/**
13
+ * <p>
14
+ * 
15
+ * </p>
16
+ *
17
+ * @author null
18
+ * @since 2022-11-29
19
+ */
20
+@Getter
21
+@Setter
22
+
23
+public class Validation implements Serializable {
24
+
25
+    private static final long serialVersionUID = 1L;
26
+
27
+      @TableId(value = "id", type = IdType.AUTO)
28
+      private Integer id;
29
+
30
+    private String email;
31
+
32
+    private String code;
33
+
34
+    private Integer type;
35
+
36
+    private Date time;
37
+
38
+
39
+}

+ 22
- 0
springboot_vue/src/main/java/com/ly/exception/GlobalExceptionHandler.java Parādīt failu

@@ -0,0 +1,22 @@
1
+package com.ly.exception;
2
+
3
+import com.ly.controller.util.Result;
4
+import org.springframework.web.bind.annotation.ControllerAdvice;
5
+import org.springframework.web.bind.annotation.ExceptionHandler;
6
+import org.springframework.web.bind.annotation.ResponseBody;
7
+
8
+@ControllerAdvice
9
+public class GlobalExceptionHandler {
10
+
11
+    /**
12
+     * 如果抛出的的是ServiceException,则调用该方法
13
+     * @param se 业务异常
14
+     * @return Result
15
+     */
16
+    @ExceptionHandler(ServiceException.class)
17
+    @ResponseBody
18
+    public Result handle(ServiceException se){
19
+        return Result.error(se.getCode(), se.getMessage());
20
+    }
21
+
22
+}

+ 13
- 0
springboot_vue/src/main/java/com/ly/exception/ServiceException.java Parādīt failu

@@ -0,0 +1,13 @@
1
+package com.ly.exception;
2
+
3
+import lombok.Getter;
4
+//自定义异常类
5
+@Getter
6
+public class ServiceException extends RuntimeException {
7
+    private String code;
8
+
9
+    public ServiceException(String code, String msg) {
10
+        super(msg);
11
+        this.code = code;
12
+    }
13
+}

+ 8
- 0
springboot_vue/src/main/java/com/ly/service/ApprovalService.java Parādīt failu

@@ -0,0 +1,8 @@
1
+package com.ly.service;
2
+
3
+import com.baomidou.mybatisplus.extension.service.IService;
4
+import com.ly.domain.Approval;
5
+
6
+
7
+public interface ApprovalService extends IService<Approval> {
8
+}

+ 9
- 0
springboot_vue/src/main/java/com/ly/service/ArticleService.java Parādīt failu

@@ -0,0 +1,9 @@
1
+package com.ly.service;
2
+
3
+import com.baomidou.mybatisplus.extension.service.IService;
4
+import com.ly.domain.Article;
5
+import com.ly.domain.Course;
6
+
7
+public interface ArticleService extends IService<Article> {
8
+
9
+}

+ 9
- 0
springboot_vue/src/main/java/com/ly/service/BidsService.java Parādīt failu

@@ -0,0 +1,9 @@
1
+package com.ly.service;
2
+
3
+import com.baomidou.mybatisplus.extension.service.IService;
4
+import com.ly.domain.Article;
5
+import com.ly.domain.Bids;
6
+
7
+public interface BidsService extends IService<Bids> {
8
+
9
+}

+ 12
- 0
springboot_vue/src/main/java/com/ly/service/BudgetService.java Parādīt failu

@@ -0,0 +1,12 @@
1
+package com.ly.service;
2
+
3
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
4
+import com.baomidou.mybatisplus.extension.service.IService;
5
+import com.ly.domain.Article;
6
+import com.ly.domain.Budget;
7
+import com.ly.domain.Course;
8
+
9
+public interface BudgetService  extends IService<Budget> {
10
+    Page<Budget> findPage(Page<Budget> page, String name);
11
+    void setArticleBudget(Integer budgetId, Integer articleId);
12
+}

+ 7
- 0
springboot_vue/src/main/java/com/ly/service/CalendarService.java Parādīt failu

@@ -0,0 +1,7 @@
1
+package com.ly.service;
2
+
3
+import com.baomidou.mybatisplus.extension.service.IService;
4
+import com.ly.domain.Calendar;
5
+
6
+public interface CalendarService extends IService<Calendar> {
7
+}

+ 14
- 0
springboot_vue/src/main/java/com/ly/service/CommentService.java Parādīt failu

@@ -0,0 +1,14 @@
1
+package com.ly.service;
2
+
3
+import com.baomidou.mybatisplus.extension.service.IService;
4
+import com.ly.domain.Article;
5
+import com.ly.domain.Comment;
6
+
7
+import java.util.List;
8
+
9
+public interface CommentService extends IService<Comment> {
10
+
11
+
12
+    List<Comment> findCommentDetail(Integer articleId);
13
+
14
+}

+ 11
- 0
springboot_vue/src/main/java/com/ly/service/CourseService.java Parādīt failu

@@ -0,0 +1,11 @@
1
+package com.ly.service;
2
+
3
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
4
+import com.baomidou.mybatisplus.extension.service.IService;
5
+import com.ly.domain.Course;
6
+
7
+public interface CourseService extends IService<Course> {
8
+    Page<Course> findPage(Page<Course> page, String name);
9
+
10
+    void setStudentCourse(Integer courseId, Integer studentId);
11
+}

+ 7
- 0
springboot_vue/src/main/java/com/ly/service/FilesService.java Parādīt failu

@@ -0,0 +1,7 @@
1
+package com.ly.service;
2
+
3
+import com.baomidou.mybatisplus.extension.service.IService;
4
+import com.ly.domain.Files;
5
+
6
+public interface FilesService extends IService<Files> {
7
+}

+ 7
- 0
springboot_vue/src/main/java/com/ly/service/GenresService.java Parādīt failu

@@ -0,0 +1,7 @@
1
+package com.ly.service;
2
+
3
+import com.baomidou.mybatisplus.extension.service.IService;
4
+import com.ly.domain.Genres;
5
+
6
+public interface GenresService extends IService<Genres> {
7
+}

+ 19
- 0
springboot_vue/src/main/java/com/ly/service/IValidationService.java Parādīt failu

@@ -0,0 +1,19 @@
1
+package com.ly.service;
2
+
3
+import cn.hutool.core.date.DateTime;
4
+import com.ly.domain.Validation;
5
+import com.baomidou.mybatisplus.extension.service.IService;
6
+
7
+/**
8
+ * <p>
9
+ *  服务类
10
+ * </p>
11
+ *
12
+ * @author null
13
+ * @since 2022-11-29
14
+ */
15
+public interface IValidationService extends IService<Validation> {
16
+
17
+    void saveCode(String email, String code, Integer type, DateTime offsetMinute);
18
+
19
+}

+ 8
- 0
springboot_vue/src/main/java/com/ly/service/ManageService.java Parādīt failu

@@ -0,0 +1,8 @@
1
+package com.ly.service;
2
+
3
+import com.baomidou.mybatisplus.extension.service.IService;
4
+
5
+import com.ly.domain.Manage;
6
+
7
+public interface ManageService extends IService<Manage> {
8
+}

+ 13
- 0
springboot_vue/src/main/java/com/ly/service/MenuService.java Parādīt failu

@@ -0,0 +1,13 @@
1
+package com.ly.service;
2
+
3
+
4
+import com.baomidou.mybatisplus.extension.service.IService;
5
+import com.ly.domain.Menu;
6
+
7
+import java.util.List;
8
+
9
+
10
+public interface MenuService extends IService<Menu> {
11
+    List<Menu> findMenus(String name);
12
+
13
+}

+ 15
- 0
springboot_vue/src/main/java/com/ly/service/RoleService.java Parādīt failu

@@ -0,0 +1,15 @@
1
+package com.ly.service;
2
+
3
+import com.baomidou.mybatisplus.extension.service.IService;
4
+import com.ly.domain.Role;
5
+
6
+import java.util.List;
7
+
8
+public interface RoleService extends IService<Role> {
9
+
10
+
11
+    void setRoleMenu(Integer roleId, List<Integer> menuIds);
12
+
13
+    List<Integer> getRoleMenu(Integer roleId);
14
+
15
+}

+ 0
- 0
springboot_vue/src/main/java/com/ly/service/TenderService.java Parādīt failu


Daži faili netika attēloti, jo izmaiņu fails ir pārāk liels

Notiek ielāde…
Atcelt
Saglabāt