ソースを参照

Merge branch 'master' of http://39.108.133.138:3000/2001010134/RaoYing

wei 3 年 前
コミット
8a50948925
82 ファイル変更1127 行追加208 行削除
  1. 0 18
      .idea/.gitignore
  2. 0 9
      .idea/Raoying.iml
  3. 1 1
      .idea/artifacts/raoyin_war.xml
  4. 34 2
      .idea/artifacts/raoyin_war_exploded.xml
  5. 1 1
      .idea/compiler.xml
  6. 7 0
      .idea/encodings.xml
  7. 13 0
      .idea/libraries/Maven__com_alibaba_druid_1_2_0.xml
  8. 13 0
      .idea/libraries/Maven__com_fasterxml_jackson_core_jackson_annotations_2_9_4.xml
  9. 13 0
      .idea/libraries/Maven__com_fasterxml_jackson_core_jackson_core_2_9_8.xml
  10. 13 0
      .idea/libraries/Maven__com_fasterxml_jackson_core_jackson_databind_2_9_8.xml
  11. 13 0
      .idea/libraries/Maven__com_google_protobuf_protobuf_java_3_11_4.xml
  12. 13 0
      .idea/libraries/Maven__commons_fileupload_commons_fileupload_1_4.xml
  13. 13 0
      .idea/libraries/Maven__commons_io_commons_io_2_11_0.xml
  14. 13 0
      .idea/libraries/Maven__javax_servlet_servlet_api_2_5.xml
  15. 0 13
      .idea/libraries/Maven__junit_junit_4_11.xml
  16. 13 0
      .idea/libraries/Maven__junit_junit_4_13.xml
  17. 13 0
      .idea/libraries/Maven__mysql_mysql_connector_java_8_0_27.xml
  18. 13 0
      .idea/libraries/Maven__org_apiguardian_apiguardian_api_1_1_2.xml
  19. 13 0
      .idea/libraries/Maven__org_aspectj_aspectjweaver_1_9_2.xml
  20. 13 0
      .idea/libraries/Maven__org_junit_jupiter_junit_jupiter_5_8_2.xml
  21. 13 0
      .idea/libraries/Maven__org_junit_jupiter_junit_jupiter_api_5_8_2.xml
  22. 13 0
      .idea/libraries/Maven__org_junit_jupiter_junit_jupiter_engine_5_8_2.xml
  23. 13 0
      .idea/libraries/Maven__org_junit_jupiter_junit_jupiter_params_5_8_2.xml
  24. 13 0
      .idea/libraries/Maven__org_junit_platform_junit_platform_commons_1_8_2.xml
  25. 13 0
      .idea/libraries/Maven__org_junit_platform_junit_platform_engine_1_8_2.xml
  26. 13 0
      .idea/libraries/Maven__org_mybatis_mybatis_3_5_7.xml
  27. 13 0
      .idea/libraries/Maven__org_mybatis_mybatis_spring_1_3_3.xml
  28. 13 0
      .idea/libraries/Maven__org_opentest4j_opentest4j_1_2_0.xml
  29. 13 0
      .idea/libraries/Maven__org_springframework_spring_aop_5_1_5_RELEASE.xml
  30. 13 0
      .idea/libraries/Maven__org_springframework_spring_beans_5_1_5_RELEASE.xml
  31. 13 0
      .idea/libraries/Maven__org_springframework_spring_context_5_1_5_RELEASE.xml
  32. 13 0
      .idea/libraries/Maven__org_springframework_spring_core_5_1_5_RELEASE.xml
  33. 13 0
      .idea/libraries/Maven__org_springframework_spring_expression_5_1_5_RELEASE.xml
  34. 13 0
      .idea/libraries/Maven__org_springframework_spring_jcl_5_1_5_RELEASE.xml
  35. 13 0
      .idea/libraries/Maven__org_springframework_spring_jdbc_5_1_16_RELEASE.xml
  36. 13 0
      .idea/libraries/Maven__org_springframework_spring_tx_5_1_16_RELEASE.xml
  37. 13 0
      .idea/libraries/Maven__org_springframework_spring_web_5_1_5_RELEASE.xml
  38. 13 0
      .idea/libraries/Maven__org_springframework_spring_webmvc_5_1_5_RELEASE.xml
  39. 0 6
      .idea/misc.xml
  40. 0 4
      .idea/modules.xml
  41. 10 0
      .idea/runConfigurations.xml
  42. 0 4
      .idea/vcs.xml
  43. 3 0
      .vscode/settings.json
  44. 37 2
      raoyin.iml
  45. 63 90
      src/main/java/group04/BasicNode.java
  46. 36 31
      src/main/java/group04/NodeDao.java
  47. 1 1
      src/main/java/group04/nodeOptConsol.java
  48. 8 7
      src/main/resources/DataBase.sql
  49. 1 1
      src/main/resources/db.properties
  50. 29 1
      src/main/webapp/ten/css/detail.css
  51. 0 4
      src/main/webapp/ten/detail.html
  52. 429 0
      src/main/webapp/ten/detail_1.html
  53. 49 0
      src/main/webapp/ten/js/detail.js
  54. 6 5
      src/main/webapp/ten/list.html
  55. BIN
      src/main/webapp/ten/upload/00.jpg
  56. BIN
      src/main/webapp/ten/upload/01.jpg
  57. BIN
      src/main/webapp/ten/upload/01~1.jpg
  58. BIN
      src/main/webapp/ten/upload/01~2.jpg
  59. BIN
      src/main/webapp/ten/upload/02.jpg
  60. BIN
      src/main/webapp/ten/upload/03.jpg
  61. BIN
      src/main/webapp/ten/upload/04.jpg
  62. BIN
      src/main/webapp/ten/upload/05.jpg
  63. BIN
      src/main/webapp/ten/upload/06.jpg
  64. BIN
      src/main/webapp/ten/upload/07.jpg
  65. BIN
      src/main/webapp/ten/upload/08.jpg
  66. BIN
      src/main/webapp/ten/upload/09.jpg
  67. BIN
      src/main/webapp/ten/upload/10.jpg
  68. BIN
      src/main/webapp/ten/upload/10_1.jpg
  69. BIN
      src/main/webapp/ten/upload/11.jpg
  70. BIN
      src/main/webapp/ten/upload/12.jpg
  71. BIN
      src/main/webapp/ten/upload/13.jpeg
  72. BIN
      src/main/webapp/ten/upload/14.jpeg
  73. BIN
      src/main/webapp/ten/upload/15.jpeg
  74. BIN
      src/main/webapp/ten/upload/16.jpeg
  75. BIN
      src/main/webapp/ten/upload/17.jpeg
  76. 8 7
      target/classes/DataBase.sql
  77. 1 1
      target/classes/db.properties
  78. BIN
      target/classes/group04/BasicNode$NodeIterator.class
  79. BIN
      target/classes/group04/BasicNode.class
  80. BIN
      target/classes/group04/NodeDao$DaoState.class
  81. BIN
      target/classes/group04/NodeDao.class
  82. BIN
      target/classes/group04/nodeOptConsol.class

+ 0 - 18
.idea/.gitignore

@@ -1,18 +0,0 @@
-<<<<<<< HEAD
-# Default ignored files
-/shelf/
-/workspace.xml
-# Datasource local storage ignored files
-/dataSources/
-/dataSources.local.xml
-# Editor-based HTTP Client requests
-=======
-# 默认忽略的文件
-/shelf/
-/workspace.xml
-# 数据源本地存储已忽略文件
-/dataSources/
-/dataSources.local.xml
-# 基于编辑器的 HTTP 客户端请求
->>>>>>> f2e35dc378c9ee33ead6e94a1c1e28cdc0274a5d
-/httpRequests/

+ 0 - 9
.idea/Raoying.iml

@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<module type="JAVA_MODULE" version="4">
-  <component name="NewModuleRootManager" inherit-compiler-output="true">
-    <exclude-output />
-    <content url="file://$MODULE_DIR$" />
-    <orderEntry type="inheritedJdk" />
-    <orderEntry type="sourceFolder" forTests="false" />
-  </component>
-</module>

+ 1 - 1
.idea/artifacts/raoyin_war.xml

@@ -7,7 +7,7 @@
         <packaging>war</packaging>
       </options>
     </properties>
-    <root id="archive" name="raoyin.war">
+    <root id="archive" name="raoyin-1.0-SNAPSHOT.war">
       <element id="artifact" artifact-name="raoyin:war exploded" />
     </root>
   </artifact>

+ 34 - 2
.idea/artifacts/raoyin_war_exploded.xml

@@ -1,6 +1,6 @@
 <component name="ArtifactManager">
   <artifact type="exploded-war" name="raoyin:war exploded">
-    <output-path>$PROJECT_DIR$/target/raoyin</output-path>
+    <output-path>$PROJECT_DIR$/target/raoyin-1.0-SNAPSHOT</output-path>
     <properties id="maven-jee-properties">
       <options>
         <exploded>true</exploded>
@@ -13,9 +13,41 @@
         <element id="directory" name="classes">
           <element id="module-output" name="raoyin" />
         </element>
+        <element id="directory" name="lib">
+          <element id="library" level="project" name="Maven: org.springframework:spring-context:5.1.5.RELEASE" />
+          <element id="library" level="project" name="Maven: org.springframework:spring-aop:5.1.5.RELEASE" />
+          <element id="library" level="project" name="Maven: org.springframework:spring-beans:5.1.5.RELEASE" />
+          <element id="library" level="project" name="Maven: org.springframework:spring-core:5.1.5.RELEASE" />
+          <element id="library" level="project" name="Maven: org.springframework:spring-jcl:5.1.5.RELEASE" />
+          <element id="library" level="project" name="Maven: org.springframework:spring-expression:5.1.5.RELEASE" />
+          <element id="library" level="project" name="Maven: org.springframework:spring-jdbc:5.1.16.RELEASE" />
+          <element id="library" level="project" name="Maven: org.springframework:spring-tx:5.1.16.RELEASE" />
+          <element id="library" level="project" name="Maven: org.aspectj:aspectjweaver:1.9.2" />
+          <element id="library" level="project" name="Maven: mysql:mysql-connector-java:8.0.27" />
+          <element id="library" level="project" name="Maven: com.google.protobuf:protobuf-java:3.11.4" />
+          <element id="library" level="project" name="Maven: com.alibaba:druid:1.2.0" />
+          <element id="library" level="project" name="Maven: org.mybatis:mybatis:3.5.7" />
+          <element id="library" level="project" name="Maven: org.mybatis:mybatis-spring:1.3.3" />
+          <element id="library" level="project" name="Maven: org.junit.jupiter:junit-jupiter:5.8.2" />
+          <element id="library" level="project" name="Maven: org.junit.jupiter:junit-jupiter-api:5.8.2" />
+          <element id="library" level="project" name="Maven: org.opentest4j:opentest4j:1.2.0" />
+          <element id="library" level="project" name="Maven: org.junit.platform:junit-platform-commons:1.8.2" />
+          <element id="library" level="project" name="Maven: org.apiguardian:apiguardian-api:1.1.2" />
+          <element id="library" level="project" name="Maven: org.junit.jupiter:junit-jupiter-params:5.8.2" />
+          <element id="library" level="project" name="Maven: org.junit.jupiter:junit-jupiter-engine:5.8.2" />
+          <element id="library" level="project" name="Maven: org.junit.platform:junit-platform-engine:1.8.2" />
+          <element id="library" level="project" name="Maven: org.springframework:spring-web:5.1.5.RELEASE" />
+          <element id="library" level="project" name="Maven: org.springframework:spring-webmvc:5.1.5.RELEASE" />
+          <element id="library" level="project" name="Maven: javax.servlet:servlet-api:2.5" />
+          <element id="library" level="project" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.9.4" />
+          <element id="library" level="project" name="Maven: com.fasterxml.jackson.core:jackson-core:2.9.8" />
+          <element id="library" level="project" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.9.8" />
+          <element id="library" level="project" name="Maven: commons-fileupload:commons-fileupload:1.4" />
+          <element id="library" level="project" name="Maven: commons-io:commons-io:2.11.0" />
+        </element>
       </element>
       <element id="directory" name="META-INF">
-        <element id="file-copy" path="$PROJECT_DIR$/target/raoyin/META-INF/MANIFEST.MF" />
+        <element id="file-copy" path="$PROJECT_DIR$/target/raoyin-1.0-SNAPSHOT/META-INF/MANIFEST.MF" />
       </element>
       <element id="javaee-facet-resources" facet="raoyin/web/Web" />
     </root>

+ 1 - 1
.idea/compiler.xml

@@ -10,7 +10,7 @@
       </profile>
     </annotationProcessing>
     <bytecodeTargetLevel>
-      <module name="raoyin" target="1.7" />
+      <module name="raoyin" target="1.8" />
     </bytecodeTargetLevel>
   </component>
 </project>

+ 7 - 0
.idea/encodings.xml

@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="Encoding">
+    <file url="file://$PROJECT_DIR$/src/main/java" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/src/main/resources" charset="UTF-8" />
+  </component>
+</project>

+ 13 - 0
.idea/libraries/Maven__com_alibaba_druid_1_2_0.xml

@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: com.alibaba:druid:1.2.0">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/com/alibaba/druid/1.2.0/druid-1.2.0.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/com/alibaba/druid/1.2.0/druid-1.2.0-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/com/alibaba/druid/1.2.0/druid-1.2.0-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 13 - 0
.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_annotations_2_9_4.xml

@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.9.4">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/core/jackson-annotations/2.9.4/jackson-annotations-2.9.4.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/core/jackson-annotations/2.9.4/jackson-annotations-2.9.4-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/core/jackson-annotations/2.9.4/jackson-annotations-2.9.4-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 13 - 0
.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_core_2_9_8.xml

@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: com.fasterxml.jackson.core:jackson-core:2.9.8">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/core/jackson-core/2.9.8/jackson-core-2.9.8.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/core/jackson-core/2.9.8/jackson-core-2.9.8-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/core/jackson-core/2.9.8/jackson-core-2.9.8-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 13 - 0
.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_databind_2_9_8.xml

@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: com.fasterxml.jackson.core:jackson-databind:2.9.8">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/core/jackson-databind/2.9.8/jackson-databind-2.9.8.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/core/jackson-databind/2.9.8/jackson-databind-2.9.8-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/core/jackson-databind/2.9.8/jackson-databind-2.9.8-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 13 - 0
.idea/libraries/Maven__com_google_protobuf_protobuf_java_3_11_4.xml

@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: com.google.protobuf:protobuf-java:3.11.4">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/com/google/protobuf/protobuf-java/3.11.4/protobuf-java-3.11.4.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/com/google/protobuf/protobuf-java/3.11.4/protobuf-java-3.11.4-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/com/google/protobuf/protobuf-java/3.11.4/protobuf-java-3.11.4-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 13 - 0
.idea/libraries/Maven__commons_fileupload_commons_fileupload_1_4.xml

@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: commons-fileupload:commons-fileupload:1.4">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/commons-fileupload/commons-fileupload/1.4/commons-fileupload-1.4.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/commons-fileupload/commons-fileupload/1.4/commons-fileupload-1.4-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/commons-fileupload/commons-fileupload/1.4/commons-fileupload-1.4-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 13 - 0
.idea/libraries/Maven__commons_io_commons_io_2_11_0.xml

@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: commons-io:commons-io:2.11.0">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/commons-io/commons-io/2.11.0/commons-io-2.11.0.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/commons-io/commons-io/2.11.0/commons-io-2.11.0-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/commons-io/commons-io/2.11.0/commons-io-2.11.0-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 13 - 0
.idea/libraries/Maven__javax_servlet_servlet_api_2_5.xml

@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: javax.servlet:servlet-api:2.5">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/javax/servlet/servlet-api/2.5/servlet-api-2.5.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/javax/servlet/servlet-api/2.5/servlet-api-2.5-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/javax/servlet/servlet-api/2.5/servlet-api-2.5-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 0 - 13
.idea/libraries/Maven__junit_junit_4_11.xml

@@ -1,13 +0,0 @@
-<component name="libraryTable">
-  <library name="Maven: junit:junit:4.11">
-    <CLASSES>
-      <root url="jar://$MAVEN_REPOSITORY$/junit/junit/4.11/junit-4.11.jar!/" />
-    </CLASSES>
-    <JAVADOC>
-      <root url="jar://$MAVEN_REPOSITORY$/junit/junit/4.11/junit-4.11-javadoc.jar!/" />
-    </JAVADOC>
-    <SOURCES>
-      <root url="jar://$MAVEN_REPOSITORY$/junit/junit/4.11/junit-4.11-sources.jar!/" />
-    </SOURCES>
-  </library>
-</component>

+ 13 - 0
.idea/libraries/Maven__junit_junit_4_13.xml

@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: junit:junit:4.13">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/junit/junit/4.13/junit-4.13.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/junit/junit/4.13/junit-4.13-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/junit/junit/4.13/junit-4.13-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 13 - 0
.idea/libraries/Maven__mysql_mysql_connector_java_8_0_27.xml

@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: mysql:mysql-connector-java:8.0.27">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/mysql/mysql-connector-java/8.0.27/mysql-connector-java-8.0.27.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/mysql/mysql-connector-java/8.0.27/mysql-connector-java-8.0.27-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/mysql/mysql-connector-java/8.0.27/mysql-connector-java-8.0.27-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 13 - 0
.idea/libraries/Maven__org_apiguardian_apiguardian_api_1_1_2.xml

@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.apiguardian:apiguardian-api:1.1.2">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apiguardian/apiguardian-api/1.1.2/apiguardian-api-1.1.2.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apiguardian/apiguardian-api/1.1.2/apiguardian-api-1.1.2-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apiguardian/apiguardian-api/1.1.2/apiguardian-api-1.1.2-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 13 - 0
.idea/libraries/Maven__org_aspectj_aspectjweaver_1_9_2.xml

@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.aspectj:aspectjweaver:1.9.2">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/aspectj/aspectjweaver/1.9.2/aspectjweaver-1.9.2.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/aspectj/aspectjweaver/1.9.2/aspectjweaver-1.9.2-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/aspectj/aspectjweaver/1.9.2/aspectjweaver-1.9.2-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 13 - 0
.idea/libraries/Maven__org_junit_jupiter_junit_jupiter_5_8_2.xml

@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.junit.jupiter:junit-jupiter:5.8.2">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/junit/jupiter/junit-jupiter/5.8.2/junit-jupiter-5.8.2.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/junit/jupiter/junit-jupiter/5.8.2/junit-jupiter-5.8.2-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/junit/jupiter/junit-jupiter/5.8.2/junit-jupiter-5.8.2-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 13 - 0
.idea/libraries/Maven__org_junit_jupiter_junit_jupiter_api_5_8_2.xml

@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.junit.jupiter:junit-jupiter-api:5.8.2">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/junit/jupiter/junit-jupiter-api/5.8.2/junit-jupiter-api-5.8.2.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/junit/jupiter/junit-jupiter-api/5.8.2/junit-jupiter-api-5.8.2-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/junit/jupiter/junit-jupiter-api/5.8.2/junit-jupiter-api-5.8.2-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 13 - 0
.idea/libraries/Maven__org_junit_jupiter_junit_jupiter_engine_5_8_2.xml

@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.junit.jupiter:junit-jupiter-engine:5.8.2">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/junit/jupiter/junit-jupiter-engine/5.8.2/junit-jupiter-engine-5.8.2.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/junit/jupiter/junit-jupiter-engine/5.8.2/junit-jupiter-engine-5.8.2-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/junit/jupiter/junit-jupiter-engine/5.8.2/junit-jupiter-engine-5.8.2-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 13 - 0
.idea/libraries/Maven__org_junit_jupiter_junit_jupiter_params_5_8_2.xml

@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.junit.jupiter:junit-jupiter-params:5.8.2">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/junit/jupiter/junit-jupiter-params/5.8.2/junit-jupiter-params-5.8.2.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/junit/jupiter/junit-jupiter-params/5.8.2/junit-jupiter-params-5.8.2-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/junit/jupiter/junit-jupiter-params/5.8.2/junit-jupiter-params-5.8.2-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 13 - 0
.idea/libraries/Maven__org_junit_platform_junit_platform_commons_1_8_2.xml

@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.junit.platform:junit-platform-commons:1.8.2">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/junit/platform/junit-platform-commons/1.8.2/junit-platform-commons-1.8.2.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/junit/platform/junit-platform-commons/1.8.2/junit-platform-commons-1.8.2-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/junit/platform/junit-platform-commons/1.8.2/junit-platform-commons-1.8.2-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 13 - 0
.idea/libraries/Maven__org_junit_platform_junit_platform_engine_1_8_2.xml

@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.junit.platform:junit-platform-engine:1.8.2">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/junit/platform/junit-platform-engine/1.8.2/junit-platform-engine-1.8.2.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/junit/platform/junit-platform-engine/1.8.2/junit-platform-engine-1.8.2-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/junit/platform/junit-platform-engine/1.8.2/junit-platform-engine-1.8.2-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 13 - 0
.idea/libraries/Maven__org_mybatis_mybatis_3_5_7.xml

@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.mybatis:mybatis:3.5.7">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/mybatis/mybatis/3.5.7/mybatis-3.5.7.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/mybatis/mybatis/3.5.7/mybatis-3.5.7-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/mybatis/mybatis/3.5.7/mybatis-3.5.7-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 13 - 0
.idea/libraries/Maven__org_mybatis_mybatis_spring_1_3_3.xml

@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.mybatis:mybatis-spring:1.3.3">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/mybatis/mybatis-spring/1.3.3/mybatis-spring-1.3.3.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/mybatis/mybatis-spring/1.3.3/mybatis-spring-1.3.3-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/mybatis/mybatis-spring/1.3.3/mybatis-spring-1.3.3-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 13 - 0
.idea/libraries/Maven__org_opentest4j_opentest4j_1_2_0.xml

@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.opentest4j:opentest4j:1.2.0">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/opentest4j/opentest4j/1.2.0/opentest4j-1.2.0.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/opentest4j/opentest4j/1.2.0/opentest4j-1.2.0-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/opentest4j/opentest4j/1.2.0/opentest4j-1.2.0-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 13 - 0
.idea/libraries/Maven__org_springframework_spring_aop_5_1_5_RELEASE.xml

@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.springframework:spring-aop:5.1.5.RELEASE">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-aop/5.1.5.RELEASE/spring-aop-5.1.5.RELEASE.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-aop/5.1.5.RELEASE/spring-aop-5.1.5.RELEASE-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-aop/5.1.5.RELEASE/spring-aop-5.1.5.RELEASE-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 13 - 0
.idea/libraries/Maven__org_springframework_spring_beans_5_1_5_RELEASE.xml

@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.springframework:spring-beans:5.1.5.RELEASE">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-beans/5.1.5.RELEASE/spring-beans-5.1.5.RELEASE.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-beans/5.1.5.RELEASE/spring-beans-5.1.5.RELEASE-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-beans/5.1.5.RELEASE/spring-beans-5.1.5.RELEASE-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 13 - 0
.idea/libraries/Maven__org_springframework_spring_context_5_1_5_RELEASE.xml

@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.springframework:spring-context:5.1.5.RELEASE">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-context/5.1.5.RELEASE/spring-context-5.1.5.RELEASE.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-context/5.1.5.RELEASE/spring-context-5.1.5.RELEASE-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-context/5.1.5.RELEASE/spring-context-5.1.5.RELEASE-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 13 - 0
.idea/libraries/Maven__org_springframework_spring_core_5_1_5_RELEASE.xml

@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.springframework:spring-core:5.1.5.RELEASE">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-core/5.1.5.RELEASE/spring-core-5.1.5.RELEASE.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-core/5.1.5.RELEASE/spring-core-5.1.5.RELEASE-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-core/5.1.5.RELEASE/spring-core-5.1.5.RELEASE-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 13 - 0
.idea/libraries/Maven__org_springframework_spring_expression_5_1_5_RELEASE.xml

@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.springframework:spring-expression:5.1.5.RELEASE">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-expression/5.1.5.RELEASE/spring-expression-5.1.5.RELEASE.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-expression/5.1.5.RELEASE/spring-expression-5.1.5.RELEASE-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-expression/5.1.5.RELEASE/spring-expression-5.1.5.RELEASE-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 13 - 0
.idea/libraries/Maven__org_springframework_spring_jcl_5_1_5_RELEASE.xml

@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.springframework:spring-jcl:5.1.5.RELEASE">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-jcl/5.1.5.RELEASE/spring-jcl-5.1.5.RELEASE.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-jcl/5.1.5.RELEASE/spring-jcl-5.1.5.RELEASE-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-jcl/5.1.5.RELEASE/spring-jcl-5.1.5.RELEASE-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 13 - 0
.idea/libraries/Maven__org_springframework_spring_jdbc_5_1_16_RELEASE.xml

@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.springframework:spring-jdbc:5.1.16.RELEASE">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-jdbc/5.1.16.RELEASE/spring-jdbc-5.1.16.RELEASE.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-jdbc/5.1.16.RELEASE/spring-jdbc-5.1.16.RELEASE-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-jdbc/5.1.16.RELEASE/spring-jdbc-5.1.16.RELEASE-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 13 - 0
.idea/libraries/Maven__org_springframework_spring_tx_5_1_16_RELEASE.xml

@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.springframework:spring-tx:5.1.16.RELEASE">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-tx/5.1.16.RELEASE/spring-tx-5.1.16.RELEASE.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-tx/5.1.16.RELEASE/spring-tx-5.1.16.RELEASE-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-tx/5.1.16.RELEASE/spring-tx-5.1.16.RELEASE-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 13 - 0
.idea/libraries/Maven__org_springframework_spring_web_5_1_5_RELEASE.xml

@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.springframework:spring-web:5.1.5.RELEASE">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-web/5.1.5.RELEASE/spring-web-5.1.5.RELEASE.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-web/5.1.5.RELEASE/spring-web-5.1.5.RELEASE-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-web/5.1.5.RELEASE/spring-web-5.1.5.RELEASE-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 13 - 0
.idea/libraries/Maven__org_springframework_spring_webmvc_5_1_5_RELEASE.xml

@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.springframework:spring-webmvc:5.1.5.RELEASE">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-webmvc/5.1.5.RELEASE/spring-webmvc-5.1.5.RELEASE.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-webmvc/5.1.5.RELEASE/spring-webmvc-5.1.5.RELEASE-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/springframework/spring-webmvc/5.1.5.RELEASE/spring-webmvc-5.1.5.RELEASE-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 0 - 6
.idea/misc.xml

@@ -1,10 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <project version="4">
-<<<<<<< HEAD
-  <component name="ProjectRootManager">
-    <output url="file://$PROJECT_DIR$/out" />
-  </component>
-=======
   <component name="FrameworkDetectionExcludesConfiguration">
     <file type="web" url="file://$PROJECT_DIR$" />
   </component>
@@ -16,5 +11,4 @@
     </option>
   </component>
   <component name="ProjectRootManager" version="2" languageLevel="JDK_15" default="true" project-jdk-name="15" project-jdk-type="JavaSDK" />
->>>>>>> f2e35dc378c9ee33ead6e94a1c1e28cdc0274a5d
 </project>

+ 0 - 4
.idea/modules.xml

@@ -2,11 +2,7 @@
 <project version="4">
   <component name="ProjectModuleManager">
     <modules>
-<<<<<<< HEAD
-      <module fileurl="file://$PROJECT_DIR$/.idea/Raoying.iml" filepath="$PROJECT_DIR$/.idea/Raoying.iml" />
-=======
       <module fileurl="file://$PROJECT_DIR$/raoyin.iml" filepath="$PROJECT_DIR$/raoyin.iml" />
->>>>>>> f2e35dc378c9ee33ead6e94a1c1e28cdc0274a5d
     </modules>
   </component>
 </project>

+ 10 - 0
.idea/runConfigurations.xml

@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="RunConfigurationProducerService">
+    <option name="ignoredProducers">
+      <set>
+        <option value="com.android.tools.idea.compose.preview.runconfiguration.ComposePreviewRunConfigurationProducer" />
+      </set>
+    </option>
+  </component>
+</project>

+ 0 - 4
.idea/vcs.xml

@@ -1,10 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <project version="4">
   <component name="VcsDirectoryMappings">
-<<<<<<< HEAD
     <mapping directory="" vcs="Git" />
-=======
-    <mapping directory="$PROJECT_DIR$" vcs="Git" />
->>>>>>> f2e35dc378c9ee33ead6e94a1c1e28cdc0274a5d
   </component>
 </project>

+ 3 - 0
.vscode/settings.json

@@ -0,0 +1,3 @@
+{
+    "java.configuration.updateBuildConfiguration": "interactive"
+}

+ 37 - 2
raoyin.iml

@@ -11,16 +11,51 @@
         </webroots>
       </configuration>
     </facet>
+    <facet type="Spring" name="Spring">
+      <configuration />
+    </facet>
   </component>
-  <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_7">
+  <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8">
     <output url="file://$MODULE_DIR$/target/classes" />
     <output-test url="file://$MODULE_DIR$/target/test-classes" />
     <content url="file://$MODULE_DIR$">
+      <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
       <excludeFolder url="file://$MODULE_DIR$/target" />
     </content>
     <orderEntry type="inheritedJdk" />
     <orderEntry type="sourceFolder" forTests="false" />
-    <orderEntry type="library" scope="TEST" name="Maven: junit:junit:4.11" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-context:5.1.5.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-aop:5.1.5.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-beans:5.1.5.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-core:5.1.5.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-jcl:5.1.5.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-expression:5.1.5.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-jdbc:5.1.16.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-tx:5.1.16.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.aspectj:aspectjweaver:1.9.2" level="project" />
+    <orderEntry type="library" name="Maven: mysql:mysql-connector-java:8.0.27" level="project" />
+    <orderEntry type="library" name="Maven: com.google.protobuf:protobuf-java:3.11.4" level="project" />
+    <orderEntry type="library" name="Maven: com.alibaba:druid:1.2.0" level="project" />
+    <orderEntry type="library" name="Maven: org.mybatis:mybatis:3.5.7" level="project" />
+    <orderEntry type="library" name="Maven: org.mybatis:mybatis-spring:1.3.3" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: junit:junit:4.13" level="project" />
     <orderEntry type="library" scope="TEST" name="Maven: org.hamcrest:hamcrest-core:1.3" level="project" />
+    <orderEntry type="library" name="Maven: org.junit.jupiter:junit-jupiter:5.8.2" level="project" />
+    <orderEntry type="library" name="Maven: org.junit.jupiter:junit-jupiter-api:5.8.2" level="project" />
+    <orderEntry type="library" name="Maven: org.opentest4j:opentest4j:1.2.0" level="project" />
+    <orderEntry type="library" name="Maven: org.junit.platform:junit-platform-commons:1.8.2" level="project" />
+    <orderEntry type="library" name="Maven: org.apiguardian:apiguardian-api:1.1.2" level="project" />
+    <orderEntry type="library" name="Maven: org.junit.jupiter:junit-jupiter-params:5.8.2" level="project" />
+    <orderEntry type="library" scope="RUNTIME" name="Maven: org.junit.jupiter:junit-jupiter-engine:5.8.2" level="project" />
+    <orderEntry type="library" scope="RUNTIME" name="Maven: org.junit.platform:junit-platform-engine:1.8.2" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-web:5.1.5.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-webmvc:5.1.5.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: javax.servlet:servlet-api:2.5" level="project" />
+    <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.9.4" level="project" />
+    <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-core:2.9.8" level="project" />
+    <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.9.8" level="project" />
+    <orderEntry type="library" name="Maven: commons-fileupload:commons-fileupload:1.4" level="project" />
+    <orderEntry type="library" name="Maven: commons-io:commons-io:2.11.0" level="project" />
   </component>
 </module>

+ 63 - 90
src/main/java/group04/BasicNode.java

@@ -11,8 +11,6 @@ import group04.myBatis.Nodeinfo;
  */
 public class BasicNode implements Iterable<BasicNode>
 {
-
-    public boolean needUpload = true;
     /**
      * <0 : invalidity node
      * =0 : undifineded node
@@ -26,9 +24,8 @@ public class BasicNode implements Iterable<BasicNode>
     
     private BasicNode childLevel = null;
     private BasicNode parentNode = null;
-    
 
-    private static ArrayList<ArrayList<BasicNode>> loadedNodes = new ArrayList<>();
+    private static ArrayList<BasicNode> NeedUpload = new ArrayList<>();
 
     /**
      * create new node
@@ -104,6 +101,17 @@ public class BasicNode implements Iterable<BasicNode>
         return childLevel;
     }
 
+    public void setNeedUpload()
+    {
+        synchronized(NeedUpload)
+        {
+            if(!NeedUpload.contains(this))
+            {
+                NeedUpload.add(this);
+            }
+        }
+    }
+
     /**
      * set Node id,also it can destroy this node by seting id to minus value
      * @param id new id
@@ -122,7 +130,6 @@ public class BasicNode implements Iterable<BasicNode>
                 NodeDao.getCurrentMapper().deleteByPrimaryKey(this.id);
                 //if database vaildity, it will going on.
                 dropFromLevel();
-                removeLoadedNode(this);
                 //delete all child nodes
                 BasicNode node = this.getChildLevel();
                 while(node != null)
@@ -160,7 +167,6 @@ public class BasicNode implements Iterable<BasicNode>
             {
                 InitAfterLoad(id);
             }
-            if(!defineded()) addLoadedNode(this);
             this.id = id;
         }
     }
@@ -218,12 +224,8 @@ public class BasicNode implements Iterable<BasicNode>
     {
         synchronized(this)
         {
-            if(needUpload)
-            {
-                Nodeinfo data = getNodeInfo();
-                NodeDao.getCurrentMapper().updateByPrimaryKey(data);
-                needUpload = false;
-            }
+            Nodeinfo data = getNodeInfo();
+            NodeDao.getCurrentMapper().updateByPrimaryKey(data);
         }
     }
 
@@ -264,23 +266,24 @@ public class BasicNode implements Iterable<BasicNode>
             if(this.nextNode != null)
             {
                 this.nextNode.pervNode = this.pervNode;
-                this.nextNode.needUpload = true;
+                this.nextNode.setNeedUpload();
+                
             }
             if(this.pervNode != null)
             {
                 this.pervNode.nextNode = this.nextNode;
-                this.pervNode.needUpload = true;
+                this.pervNode.setNeedUpload();
             }
             else
             if(this.parentNode != null)
             {
                 this.parentNode.childLevel = this.nextNode;
-                this.parentNode.needUpload = true;
+                this.parentNode.setNeedUpload();
             }
             this.parentNode = null;
             this.nextNode = null;
             this.pervNode = null;
-            this.needUpload = true;
+            this.setNeedUpload();
         }
     }
     
@@ -311,10 +314,10 @@ public class BasicNode implements Iterable<BasicNode>
                     if(nextNode != null)
                     {
                         nextNode.pervNode = node;
-                        nextNode.needUpload = true;
+                        nextNode.setNeedUpload();
                     }
     
-                    this.needUpload = true;
+                    this.setNeedUpload();
                     return true;
                 }
             }
@@ -349,16 +352,16 @@ public class BasicNode implements Iterable<BasicNode>
                     if(pervNode != null)
                     {
                         pervNode.nextNode = node;
-                        pervNode.needUpload = true;
+                        pervNode.setNeedUpload();
                     }
                     else //remove if parrentNode exiet
                     if(this.parentNode != null)
                     {
                         this.parentNode.childLevel = node;
-                        this.parentNode.needUpload = true;
+                        this.parentNode.setNeedUpload();
                     }
     
-                    this.needUpload = true;
+                    this.setNeedUpload();
                     return true;
                 }
             }
@@ -396,7 +399,7 @@ public class BasicNode implements Iterable<BasicNode>
                     if(node.parentNode != null)
                     {
                         node.parentNode.childLevel = node;
-                        node.parentNode.needUpload = true;
+                        node.parentNode.setNeedUpload();
                     }
                     return true;
                 }
@@ -439,46 +442,46 @@ public class BasicNode implements Iterable<BasicNode>
                     node.nextNode = this.nextNode;
                     node.pervNode = this.pervNode;
                     node.parentNode = this.parentNode;
-                    node.needUpload = true;
+                    node.setNeedUpload();
                     //check near by node update
                     if(node.nextNode != null)
                     {
                         node.nextNode.pervNode = node;
-                        node.nextNode.needUpload = true;
+                        node.nextNode.setNeedUpload();
                     }
                     if(node.pervNode != null)
                     {
                         node.pervNode.nextNode = node;
-                        node.pervNode.needUpload = true;
+                        node.pervNode.setNeedUpload();
                     }
                     else
                     if(node.parentNode != null)
                     {
                         node.parentNode.childLevel = node;
-                        node.parentNode.needUpload = true;
+                        node.parentNode.setNeedUpload();
                     }
     
                     //set this to next
                     this.nextNode = next;
                     this.pervNode = perv;
                     this.parentNode = parent;
-                    this.needUpload = true;
+                    this.setNeedUpload();
                     //check near by node update
                     if(this.nextNode != null)
                     {
                         this.nextNode.pervNode = this;
-                        this.nextNode.needUpload = true;
+                        this.nextNode.setNeedUpload();
                     }
                     if(this.pervNode != null)
                     {
                         this.pervNode.nextNode = this;
-                        this.pervNode.needUpload = true;
+                        this.pervNode.setNeedUpload();
                     }
                     else
                     if(this.parentNode != null)
                     {
                         this.parentNode.childLevel = this;
-                        this.parentNode.needUpload = true;
+                        this.parentNode.setNeedUpload();
                     }
                     return true;
                 }
@@ -586,7 +589,7 @@ public class BasicNode implements Iterable<BasicNode>
                 do
                 {
                     //check 2 node's perv node at same time
-                    if(cache1 == this || cache2 == node)
+                    if(cache1.equals(this) || cache2.equals(node))
                         return true;
                     if(cache1.pervNode != null)
                         cache1 = cache1.pervNode;
@@ -625,7 +628,7 @@ public class BasicNode implements Iterable<BasicNode>
         {
             do
             {
-                if(node == this)
+                if(node.equals(this))
                 {
                     return true;
                 }
@@ -663,91 +666,61 @@ public class BasicNode implements Iterable<BasicNode>
         return result + " }";
     }
 
-
     public void deleteNode() throws IOException
     {
         this.setId(-1l);
     }
 
-
-    private static void addLoadedNode(BasicNode node)
+    /**
+     * check level
+     * @param levelA value a
+     * @param levelB value b
+     * @return if is same level,it will return true
+     */
+    public static boolean levelEqul(BasicNode levelA,BasicNode levelB)
     {
-        for (ArrayList<BasicNode> list : loadedNodes)
-        {
-            if(list.size() < Integer.MAX_VALUE)
-            {
-                list.add(node);
-                return;
-            }
-        }
-        ArrayList<BasicNode> nodes = new ArrayList<BasicNode>();
-        nodes.add(node);
-        loadedNodes.add(nodes);
+        return levelA.startOfNodeLevel().id == levelB.startOfNodeLevel().id;
     }
 
-
-    private static void removeLoadedNode(BasicNode node)
-    {
-        for (int i = 0; i < loadedNodes.size(); ++i)
-        {
-            ArrayList<BasicNode> list = loadedNodes.get(i);
-            list.remove(node);
-            if(list.size() <= 0)
-            {
-                loadedNodes.remove(i);
-                --i;
-            }
-        }
+    @Override
+    public boolean equals(Object o) {
+        // TODO Auto-generated method stub
+        BasicNode other = (BasicNode)o;
+        if(other != null) return other.id == this.id;
+        else return super.equals(o);
     }
 
     /**
-     * find node from node pool, if target is not exiets, it will return null
-     * @param id target id
-     * @return target
+     * check all loaded node and upload data
+     * @throws IOException no sql mapper
      */
-    public static BasicNode getLoadedNodeById(long id)
+    public static void Commit() throws IOException
     {
-        for (ArrayList<BasicNode> list : loadedNodes)
+        synchronized(NeedUpload)
         {
-            for (BasicNode basicNode : list)
+            for (BasicNode basicNode : NeedUpload)
             {
-                if(basicNode.getId() == id)
-                {
-                    return basicNode;
-                }
+                basicNode.uploadNode();
             }
+            NodeDao.getCurrentMapper().commit();
+            NeedUpload.clear();
         }
-        return null;
     }
 
-    /**
-     * check level
-     * @param levelA value a
-     * @param levelB value b
-     * @return if is same level,it will return true
-     */
-    public static boolean levelEqul(BasicNode levelA,BasicNode levelB)
-    {
-        return levelA.startOfNodeLevel() == levelB.startOfNodeLevel();
-    }
 
-    /**
-     * check all loaded node and upload data
-     * @throws IOException no sql mapper
-     */
-    public static void checkAndUploadAll() throws IOException
+    public static BasicNode TryGetNotCommitNodeById(long id)
     {
-        for (ArrayList<BasicNode> list : loadedNodes)
+        synchronized(NeedUpload)
         {
-            for (BasicNode basicNode : list)
+            for (BasicNode basicNode : NeedUpload)
             {
-                if(basicNode.needUpload)
+                if(basicNode.getId() == id)
                 {
-                    basicNode.uploadNode();
+                    return basicNode;
                 }
             }
+            return null;
         }
-        NodeDao.getCurrentMapper().commit();
     }
 
     /**

+ 36 - 31
src/main/java/group04/NodeDao.java

@@ -45,51 +45,55 @@ public class NodeDao
         BasicNode result = null;
         if(id > 0)
         {
-            result = BasicNode.getLoadedNodeById(id);
+            daoState = DaoState.Reading;
+            result = BasicNode.TryGetNotCommitNodeById(id);
             if(result == null)
+            try
             {
-                daoState = DaoState.Reading;
-                try
+                ArrayList<BasicNode> tree = new ArrayList<>();
+                Nodeinfo data = getCurrentMapper().selectByPrimaryKey(id);
+                if(data != null)
                 {
-                    Nodeinfo data = getCurrentMapper().selectByPrimaryKey(id);
-                    if(data != null)
+                    while(data.getParentId() != null)
                     {
-                        while(data.getParentId() != null)
+                        Nodeinfo cache = data;
+                        data = getCurrentMapper().selectByPrimaryKey(data.getParentId());
+                        if(data == null)
                         {
-                            Nodeinfo cache = data;
-                            data = getCurrentMapper().selectByPrimaryKey(data.getParentId());
-                            if(data == null)
-                            {
-                                data = cache;
-                                break;
-                            }
+                            data = cache;
+                            break;
                         }
-                        while(data.getPrevId() != null)
+                    }
+                    while(data.getPrevId() != null)
+                    {
+                        Nodeinfo cache = data;
+                        data = getCurrentMapper().selectByPrimaryKey(data.getPrevId());
+                        if(data == null)
                         {
-                            Nodeinfo cache = data;
-                            data = getCurrentMapper().selectByPrimaryKey(data.getPrevId());
-                            if(data == null)
-                            {
-                                data = cache;
-                                break;
-                            }
+                            data = cache;
+                            break;
+                        }
+                    }
+                    loadAllInLevel(data,tree);
+                    for (BasicNode basicNode : tree)
+                    {
+                        if(basicNode != null && basicNode.getId() == id)
+                        {
+                            return basicNode;
                         }
-                        loadAllInLevel(data);
                     }
                 }
-                catch(Exception ex)
-                {
-                    System.out.println(ex.toString());
-                    return null;
-                }
-                result = BasicNode.getLoadedNodeById(id);
-                daoState = DaoState.None;
+            }
+            catch(Exception ex)
+            {
+                System.out.println(ex.toString());
+                return null;
             }
         }
         return result;
     }
 
-    private static BasicNode loadAllInLevel(Nodeinfo nodeinfo) throws IOException
+    private static BasicNode loadAllInLevel(Nodeinfo nodeinfo, ArrayList<BasicNode> tree) throws IOException
     {
         if(nodeinfo != null)
         {
@@ -113,8 +117,9 @@ public class NodeDao
                     {
                         nodes.get(i).insertNext(nodes.get(i + 1));
                     }
-                    nodes.get(i).setChildLevel(loadAllInLevel(infos.get(i)));
+                    nodes.get(i).setChildLevel(loadAllInLevel(infos.get(i),tree));
                 }
+                tree.addAll(nodes);
                 return nodes.get(0);
             } catch (InstantiationException | IllegalAccessException | IllegalArgumentException | InvocationTargetException
                     | NoSuchMethodException | SecurityException | ClassNotFoundException e) {

+ 1 - 1
src/main/java/group04/nodeOptConsol.java

@@ -218,7 +218,7 @@ public class nodeOptConsol {
                 }
                 break;
                 case "ex":
-                BasicNode.checkAndUploadAll();
+                BasicNode.Commit();
                 return;
             }
         }

+ 8 - 7
src/main/resources/DataBase.sql

@@ -21,14 +21,14 @@ create table if not exists user_cart
 (
     user_Cart_Id bigint not null primary key,
     password varchar(16) not null,
-    permission int not null default 0,
+    permission int not null default 0
 );
 
 create table if not exists user_collect
 (
     user_collect_Id bigint not null primary key,
     password varchar(16) not null,
-    permission int not null default 0,
+    permission int not null default 0
 );
 
 
@@ -37,6 +37,7 @@ create table if not exists user_collect
     +   goods
         +   selectionGroup
             +   selection
+        +   comment
 */
 create table if not exists store
 (
@@ -44,7 +45,7 @@ create table if not exists store
     postion varchar(100) not null,
     name varchar(50) not null,
     star int
-)
+);
 
 create table if not exists goods
 (
@@ -52,20 +53,20 @@ create table if not exists goods
     postion varchar(100) not null,
     name varchar(50) not null,
     star int
-)
+);
 
 create table if not exists selectionGroup
 (
     selection_group_id bigint not null primary key,
-    name varchar(50) not null,
-)
+    name varchar(50) not null
+);
 
 create table if not exists selection
 (
     selection_id bigint not null primary key,
     name varchar(50) not null,
     price float(13,2)
-)
+);
 
 
 /*  node*/

+ 1 - 1
src/main/resources/db.properties

@@ -1,4 +1,4 @@
 jdbc.driver=com.mysql.jdbc.Driver
-jdbc.url=jdbc:mysql://localhost:3306/dsnodetree
+jdbc.url=jdbc:mysql://localhost:3306/ShoppingWebsite
 jdbc.username=root
 jdbc.password=123456

+ 29 - 1
src/main/webapp/ten/css/detail.css

@@ -1,3 +1,31 @@
+/*关注按钮*/
+.follow {
+    display: block;
+    width: 15%;
+    height: 30px;
+    margin: 0 auto;
+    margin-top: 20px;
+    /*background: rgba(233, 7, 7, 0);*/
+    border: 1px solid red;
+    border-radius: 5px;
+    color: white;
+    background-color: red;
+    outline: none;
+}
+
+.follow:hover {
+    background: rgba(233, 7, 7, 0.2);
+}
+
+.true {
+    display: inline;
+}
+
+.false {
+    display: none;
+}
+
+
 /*详情页的样式文件*/
 
 .de_container {
@@ -175,7 +203,7 @@
 
 .choose_color a {
     display: inline-block;
-    width: 80px;
+    width: 220px;
     height: 41px;
     background-color: #f7f7f7;
     border: 1px solid #ededed;

+ 0 - 4
src/main/webapp/ten/detail.html

@@ -401,10 +401,6 @@
             </div>
         </div>
     </div>
-  
-
-
-        
 
 </body>
 

+ 429 - 0
src/main/webapp/ten/detail_1.html

@@ -0,0 +1,429 @@
+<!DOCTYPE html>
+<html lang="en">
+
+<head>
+    <meta charset="UTF-8">
+    <title>手机详情页!</title>
+    <meta name="description" content="品优购JD.COM-专业的综合网上购物商城,销售家电、数码通讯、电脑、家居百货、服装服饰、母婴、图书、食品等数万个品牌优质商品.便捷、诚信的服务,为您提供愉悦的网上购物体验!" />
+    <meta name="Keywords" content="网上购物,网上商城,手机,笔记本,电脑,MP3,CD,VCD,DV,相机,数码,配件,手表,存储卡,品优购" />
+    <link rel="shortcut icon" href="favicon.ico" type="image/x-icon" />
+    <link rel="stylesheet" href="css/base.css">
+    <link rel="stylesheet" href="css/common.css">
+    <link rel="stylesheet" href="css/detail.css">
+    <script src="js/detail.js"></script>
+
+</head>
+
+<body>
+    <div class="shortcut">
+        <div class="w">
+            <div class="fl">
+                <ul>
+                    <li>品优购欢迎您! </li>
+                    <li>
+                        <a href="#">请登录</a>
+                        <a href="#" class="style-red">免费注册</a>
+                    </li>
+                </ul>
+            </div>
+            <div class="fr">
+                <ul>
+                    <li><a href="#">我的订单</a></li>
+                    <li class="spacer"></li>
+                    <li>
+                        <a href="#">我的品优购</a>
+                        <i class="icomoon"></i>
+                    </li>
+                    <li class="spacer"></li>
+                    <li><a href="#">品优购会员</a></li>
+                    <li class="spacer"></li>
+                    <li><a href="#">企业采购</a></li>
+                    <li class="spacer"></li>
+                    <li><a href="#">关注品优购</a> <i class="icomoon"></i></li>
+                    <li class="spacer"></li>
+                    <li><a href="#">客户服务</a> <i class="icomoon"></i></li>
+                    <li class="spacer"></li>
+                    <li><a href="#">网站导航</a> <i class="icomoon"></i></li>
+                </ul>
+            </div>
+        </div>
+    </div>
+
+    <div class="header w">
+        <div class="logo">
+            <h1>
+                <a href="login/index.html" title="品优购">品优购</a>
+            </h1>
+        </div>
+        <div class="search">
+            <input type="search" name="" id="" placeholder="语言开发">
+            <button>搜索</button>
+        </div>
+        <div class="hotwords">
+            <a href="#" class="style_red">优惠购首发</a>
+            <a href="#">亿元优惠</a>
+            <a href="#">9.9元团购</a>
+            <a href="#">美满99减30</a>
+            <a href="#">办公用品</a>
+            <a href="#">电脑</a>
+            <a href="#">通信</a>
+        </div>
+
+        <div class="shopcar" type="button">
+            <i class="car"> </i>购物车<i class="arrow"></i>
+        </div>
+    </div>
+
+    <div class="nav">
+        <div class="w">
+            <div class="dropdown fl">
+                <div class="dt"> 全部商品分类 </div>
+                <div class="dd" style="display: none;">
+                    <ul>
+                        <li class="menu_item"><a href="#">家用电器</a> <i>  </i> </li>
+                        <li class="menu_item">
+                            <a href="list.html">手机</a> 、
+                            <a href="#">数码</a> 、
+                            <a href="#">通信</a>
+                            <i>  </i>
+                        </li>
+                        <li class="menu_item"><a href="#">电脑、办公</a> <i>  </i> </li>
+                        <li class="menu_item"><a href="#">家居、家具、家装、厨具</a> <i>  </i> </li>
+                        <li class="menu_item"><a href="#">男装、女装、童装、内衣</a> <i>  </i> </li>
+                        <li class="menu_item"><a href="#">个户化妆、清洁用品、宠物</a> <i>  </i> </li>
+                        <li class="menu_item"><a href="#">鞋靴、箱包、珠宝、奢侈品</a> <i>  </i> </li>
+                        <li class="menu_item"><a href="#">运动户外、钟表</a> <i>  </i> </li>
+                        <li class="menu_item"><a href="#">汽车、汽车用品</a> <i>  </i> </li>
+                        <li class="menu_item"><a href="#">母婴、玩具乐器</a> <i>  </i> </li>
+                        <li class="menu_item"><a href="#">食品、酒类、生鲜、特产</a> <i>  </i> </li>
+                        <li class="menu_item"><a href="#">医药保健</a> <i>  </i> </li>
+                        <li class="menu_item"><a href="#">图书、音像、电子书</a> <i> </i> </li>
+                        <li class="menu_item"><a href="#">彩票、旅行、充值、票务</a> <i> </i> </li>
+                        <li class="menu_item"><a href="#">理财、众筹、白条、保险</a> <i>  </i> </li>
+                    </ul>
+                </div>
+            </div>
+            <div class="navitems fl">
+                <ul>
+                    <li><a href="#">服装城</a></li>
+                    <li><a href="#">美妆馆</a></li>
+                    <li><a href="#">传智超市</a></li>
+                    <li><a href="#">全球购</a></li>
+                    <li><a href="#">闪购</a></li>
+                    <li><a href="#">团购</a></li>
+                    <li><a href="#">拍卖</a></li>
+                    <li><a href="#">有趣</a></li>
+                </ul>
+            </div>
+        </div>
+    </div>
+
+    <div class="de_container w">
+        <div class="crumb_wrap">
+            <a href="#">电脑、办公</a> 〉 <a href="#">电脑整机   </a> 〉 <a href="#">游戏本   </a> 〉 <a href="#">联想   </a> 〉<a>联想拯救者R9000P</a>
+        </div>
+        <div class="product_intro clearfix">
+            <div class="preview_wrap fl">
+                <div class="preview_img">
+                    <img src="upload/01~1.jpg" alt="">
+                    <div class="mask"></div>
+                    <div class="big">
+                        <img src="upload/01.jpg" alt="" class="bigImg">
+                    </div>
+                </div>
+
+                <div class="preview_list">
+                    <a href="#" class="arrow_prev"></a>
+                    <a href="#" class="arrow_next"></a>
+                    <ul class="list_item">
+                        <li>
+                            <img src="upload/02.jpg" alt="">
+                        </li>
+                        <li class="current">
+                            <img src="upload/03.jpg" alt="">
+                        </li>
+                        <li>
+                            <img src="upload/04.jpg" alt="">
+                        </li>
+                        <li>
+                            <img src="upload/05.jpg" alt="">
+                        </li>
+                        <li>
+                            <img src="upload/06.jpg" alt="">
+                        </li>
+                    </ul>
+                    <button class="follow" onclick="show1()">
+                        <span class="true">关注</span>
+                        <span class="false">已关注</span>
+                    </button>
+                </div>
+            </div>
+            <div class="itemInfo_wrap fr">
+                <div class="sku_name">
+                    联想笔记本电脑 拯救者R9000P 16英寸高性能电竞游戏本(标压 8核 R7-5800H 16G 512G RTX3060 2.5k屏 165Hz)
+                </div>
+                <div class="news">
+
+                </div>
+                <div class="summary">
+                    <dl class="summary_price">
+                        <dt>定价</dt>
+                        <dd>
+                            <i class="price">¥200.00 </i>
+                            <a href="#">预售说明</a>
+                        </dd>
+                        <Br/>
+                        <Br/>
+
+                        <dt>价格</dt>
+                        <dd>
+                            <i class="price">¥7999.00 </i>
+                            <div class="remark">累计评价582188</div>
+
+                        </dd>
+                    </dl>
+                    <dl class="summary_promotion">
+                        <dt>促销</dt>
+                        <dd>
+                            <em>换购</em> 购买1件可优惠换购热销商品 立即换购>>
+                            <br/>
+                            <em>换购</em> 购买1件可优惠换购热销商品 立即换购>>
+                            <br/>
+                            <em>换购</em> 购买1件可优惠换购热销商品 立即换购>>
+                        </dd>
+                    </dl>
+                    <dl class="summary_support">
+                        <dt>增值业务</dt>
+                        <dd>高价回收,急速到账</dd>
+                    </dl>
+                    <dl class="choose_color">
+                        <dt>选择处理器或显卡</dt>
+                        <dd>
+                            <a href="javascript:;" class="current">R9000X/RTX3060/R7/165Hz 2.5K屏</a><br/>
+                            <a href="javascript:;">R9000P/RTX3060/R7/165Hz 2.5K新</a><br/>
+                            <a href="javascript:;">R9000P/RTX3060/R7/限量版冰魄白</a><br/>
+                            <a href="javascript:;">R9000K/RTX3060/R7/165Hz 2.5K屏</a><br/>
+                        </dd>
+                    </dl>
+
+                    <div class="choose_btns">
+                        <div class="choose_amount">
+                            <input type="text" value="1">
+                            <a href="javascript:;" class="add">+</a>
+                            <a href="javascript:;" class="reduce">-</a>
+                        </div>
+                        <a href="#" class="addcar">加入购物车</a>
+                    </div>
+                </div>
+            </div>
+        </div>
+
+        <div class="product_detail clearfix">
+            <div class="aside fl">
+                <div class="tab_list">
+                    <ul>
+                        <li class="first_tab">相关分类</li>
+                        <li class="second_tab current">推荐商品</li>
+                    </ul>
+                </div>
+                <div class="tab_con">
+
+                    <ul>
+                        <li>
+                            <img src="upload/07.jpg" alt="">
+                            <h5>联想 鼠标有线 鼠标 办公鼠标</h5>
+                            <div class="aside_price">¥22.90</div>
+                            <a href="#" class="as_addcar">加入购物车</a>
+                        </li>
+                        <li>
+                            <img src="upload/08.jpg" alt="">
+                            <h5>联想 平板小新Pad 11英寸 学习娱乐平板电脑</h5>
+                            <div class="aside_price">¥1099.00</div>
+                            <a href="#" class="as_addcar">加入购物车</a>
+                        </li>
+                        <li>
+                            <img src="upload/09.jpg" alt="">
+                            <h5>联想 小新无线蓝牙鼠标</h5>
+                            <div class="aside_price">¥59.00</div>
+                            <a href="#" class="as_addcar">加入购物车</a>
+                        </li>
+                        <li>
+                            <img src="upload/10.jpg" alt="">
+                            <h5>联想 无线键盘鼠标套装</h5>
+                            <div class="aside_price">¥69.90</div>
+                            <a href="#" class="as_addcar">加入购物车</a>
+                        </li>
+                        <li>
+                            <img src="upload/11.jpg" alt="">
+                            <h5>联想 A601 USB分线器 3.0接口转换器</h5>
+                            <div class="aside_price">¥49.90</div>
+                            <a href="#" class="as_addcar">加入购物车</a>
+                        </li>
+                        <li>
+                            <img src="upload/12.jpg" alt="">
+                            <h5>联想笔记本电脑小新Air14 锐龙版</h5>
+                            <div class="aside_price">¥4299.00</div>
+                            <a href="#" class="as_addcar">加入购物车</a>
+                        </li>
+
+
+                    </ul>
+                </div>
+            </div>
+
+            <div class="detail fr">
+                <div class="detail_tab_list">
+                    <ul>
+                        <li class="current">商品介绍</li>
+                        <li>规格与包装</li>
+                        <li>售后保障</li>
+                        <li><a href="comment.html">商品评价(5万+)</a></li>
+                    </ul>
+                </div>
+                <div class="detail_tab_con">
+                    <div class="item">
+                        <ul class="item_info">
+                            <li title="联想拯救者R9000K">商品名称:联想拯救者R9000P</li>
+                            <li title="100019736886">商品编号:100019736886</li>
+                            <li title="5.0kg">商品毛重:5.0kg</li>
+                            <li title="中国大陆">商品产地:中国大陆</li>
+                            <li title="100%sRGB">屏幕色域:100%sRGB</li>
+                            <li title="游戏笔记本">类型:游戏笔记本</li>
+                            <li title="Windows 11">系统:Windows 11</li>
+                            <li title="20.0mm以上">厚度:20.0mm以上</li>
+                            <li title="金属+复合材质">机身材质:金属+复合材质</li>
+                            <li title="PCI-E高速固态硬盘,大内存(16GB及以上),Wi-Fi 6">特性:PCI-E高速固态硬盘,大内存(16GB及以上),Wi-Fi 6</li>
+                            <li title="16.0-16.9英寸">屏幕尺寸:16.0-16.9英寸</li>
+                            <li title="联想 - 拯救者">系列:联想 - 拯救者</li>
+                            <li title="灰色">颜色:灰色</li>
+                            <li title="NVIDIA">显卡芯片供应商:NVIDIA</li>
+                            <li title="AMD R7">处理器:AMD R7</li>
+                            <li title="165Hz">屏幕刷新率:165Hz</li>
+                            <li title="高性能游戏独立显卡">显卡类型:高性能游戏独立显卡</li>
+                            <li title="16GB">内存容量:16GB</li>
+                            <li title="RTX 3060">显卡型号:RTX 3060</li>
+                            <li title="支持IPv6">是否支持IPv6:支持IPv6</li>
+                            <li title="1TB">固态硬盘(SSD):1TB</li>
+                            <li title="无机械硬盘">机械硬盘:无机械硬盘</li>
+                        </ul>
+                        <img src="upload/13.jpeg" width="90%" alt="">
+                        <img src="upload/14.jpeg" width="90%" alt="">
+                        <img src="upload/15.jpeg" width="90%" alt="">
+                        <img src="upload/16.jpeg" width="90%" alt="">
+                        <img src="upload/17.jpeg" width="90%" alt="">
+                    </div>
+                </div>
+            </div>
+        </div>
+
+    </div>
+
+    <div class="footer">
+        <div class="w">
+            <div class="mod_service">
+                <ul>
+                    <li>
+                        <i class="mod-service-icon mod_service_zheng"></i>
+                        <div class="mod_service_tit">
+                            <h5></h5>
+                            <p>正品保障,提供发票</p>
+                        </div>
+                    </li>
+                    <li>
+                        <i class="mod-service-icon mod_service_kuai"></i>
+                        <div class="mod_service_tit">
+                            <h5></h5>
+                            <p>正品保障,提供发票</p>
+                        </div>
+                    </li>
+                    <li>
+                        <i class="mod-service-icon mod_service_bao"></i>
+                        <div class="mod_service_tit">
+                            <h5></h5>
+                            <p>正品保障,提供发票</p>
+                        </div>
+                    </li>
+                    <li>
+                        <i class="mod-service-icon mod_service_bao"></i>
+                        <div class="mod_service_tit">
+                            <h5></h5>
+                            <p>正品保障,提供发票</p>
+                        </div>
+                    </li>
+                </ul>
+            </div>
+
+            <div class="mod_help">
+                <dl class="mod_help_item">
+                    <dt>购物指南</dt>
+                    <dd> <a href="#">购物流程 </a></dd>
+                    <dd> <a href="#">会员介绍 </a></dd>
+                    <dd> <a href="#">生活旅行/团购 </a></dd>
+                    <dd> <a href="#">常见问题 </a></dd>
+                    <dd> <a href="#">大家电 </a></dd>
+                    <dd> <a href="#">联系客服 </a></dd>
+                </dl>
+                <dl class="mod_help_item">
+                    <dt>购物指南</dt>
+                    <dd> <a href="#">购物流程 </a></dd>
+                    <dd> <a href="#">会员介绍 </a></dd>
+                    <dd> <a href="#">生活旅行/团购 </a></dd>
+                    <dd> <a href="#">常见问题 </a></dd>
+                    <dd> <a href="#">大家电 </a></dd>
+                    <dd> <a href="#">联系客服 </a></dd>
+                </dl>
+                <dl class="mod_help_item">
+                    <dt>购物指南</dt>
+                    <dd> <a href="#">购物流程 </a></dd>
+                    <dd> <a href="#">会员介绍 </a></dd>
+                    <dd> <a href="#">生活旅行/团购 </a></dd>
+                    <dd> <a href="#">常见问题 </a></dd>
+                    <dd> <a href="#">大家电 </a></dd>
+                    <dd> <a href="#">联系客服 </a></dd>
+                </dl>
+                <dl class="mod_help_item">
+                    <dt>购物指南</dt>
+                    <dd> <a href="#">购物流程 </a></dd>
+                    <dd> <a href="#">会员介绍 </a></dd>
+                    <dd> <a href="#">生活旅行/团购 </a></dd>
+                    <dd> <a href="#">常见问题 </a></dd>
+                    <dd> <a href="#">大家电 </a></dd>
+                    <dd> <a href="#">联系客服 </a></dd>
+                </dl>
+                <dl class="mod_help_item">
+                    <dt>购物指南</dt>
+                    <dd> <a href="#">购物流程 </a></dd>
+                    <dd> <a href="#">会员介绍 </a></dd>
+                    <dd> <a href="#">生活旅行/团购 </a></dd>
+                    <dd> <a href="#">常见问题 </a></dd>
+                    <dd> <a href="#">大家电 </a></dd>
+                    <dd> <a href="#">联系客服 </a></dd>
+                </dl>
+                <dl class="mod_help_item mod_help_app">
+                    <dt>帮助中心</dt>
+                    <dd>
+                        <img src="upload/erweima.png" alt="">
+                        <p>品优购客户端</p>
+                    </dd>
+                </dl>
+            </div>
+
+
+            <div class="mod_copyright">
+                <p class="mod_copyright_links">
+                    关于我们 | 联系我们 | 联系客服 | 商家入驻 | 营销中心 | 手机品优购 | 友情链接 | 销售联盟 | 品优购社区 | 品优购公益 | English Site | Contact U
+                </p>
+                <p class="mod_copyright_info">
+                    地址:北京市昌平区建材城西路金燕龙办公楼一层 邮编:100096 电话:400-618-4000 传真:010-82935100 邮箱: zhanghj+itcast.cn <br> 京ICP备08001421号京公网安备110108007702
+                </p>
+            </div>
+        </div>
+    </div>
+
+
+
+
+
+</body>
+
+</html>

+ 49 - 0
src/main/webapp/ten/js/detail.js

@@ -1,3 +1,17 @@
+function show1() {
+    var aTrue = document.getElementsByClassName(true);
+    var aFalse = document.getElementsByClassName(false);
+    var x = 1;
+    if (aTrue[0].style.display != "none") {
+        aTrue[0].style.display = "none";
+        aFalse[0].style.display = "inline";
+    } else {
+        aTrue[0].style.display = "inline";
+        aFalse[0].style.display = "none";
+    }
+}
+
+
 window.addEventListener('load', function() {
     var preview_img = document.querySelector('.preview_img');
     var mask = document.querySelector('.mask');
@@ -47,6 +61,41 @@ window.addEventListener('load', function() {
         bigIMg.style.left = -bigX + 'px';
         bigIMg.style.top = -bigY + 'px';
 
+
+        window.onload = function() {
+            var oSc = document.getElementById('shoucang');
+            var onOff = true;
+
+            oSc.onclick = function() {
+                if (onOff) {
+                    oSc.innerHTML = '<i class="yishoucang"></i>' + '已收藏';
+                    oSc.style.backgroundColor = '#87aab5';
+                    onOff = false;
+                } else {
+                    oSc.innerHTML = '收藏文章';
+                    oSc.style.backgroundColor = '#87aab5';
+                    onOff = true;
+                }
+            };
+
+            oSc.onmouseover = function() {
+                if (onOff) {
+                    oSc.style.backgroundColor = '#03a6d7';
+                } else {
+                    oSc.innerHTML = '取消收藏';
+                    oSc.style.backgroundColor = '#527884';
+                }
+            };
+
+            oSc.onmouseout = function() {
+                if (onOff) {
+                    oSc.style.backgroundColor = '#00b7ee';
+                } else {
+                    oSc.innerHTML = '<i class="yishoucang"></i>' + '已收藏';
+                    oSc.style.backgroundColor = '#87aab5';
+                }
+            };
+        }
     })
 
 })

+ 6 - 5
src/main/webapp/ten/list.html

@@ -109,11 +109,12 @@
             
              <ul class="clearfix">
                 <li>
-                        <a href="detail.html">1
-                    <img src="upload/1.jpg" alt=""></a>
+                    <a href="detail_1.html">1
+                    <img src="upload/01~2.jpg" alt=""></a>
                 </li>
-                <li>2
-                    <img src="upload/2.jpg" alt="">
+                <li>
+                    <a href="detail.html">2
+                        <img src="upload/2.jpg" alt=""></a>
                 </li>
                 <li>3
                     <img src="upload/3.jpg" alt="">
@@ -137,7 +138,7 @@
                     <img src="upload/9.jpg" alt="">
                 </li>
                 <li>10
-                    <img src="upload/10.jpg" alt="">
+                    <img src="upload/10_1.jpg" alt="">
                 </li>
             </ul>
         </div>

BIN
src/main/webapp/ten/upload/00.jpg


BIN
src/main/webapp/ten/upload/01.jpg


BIN
src/main/webapp/ten/upload/01~1.jpg


BIN
src/main/webapp/ten/upload/01~2.jpg


BIN
src/main/webapp/ten/upload/02.jpg


BIN
src/main/webapp/ten/upload/03.jpg


BIN
src/main/webapp/ten/upload/04.jpg


BIN
src/main/webapp/ten/upload/05.jpg


BIN
src/main/webapp/ten/upload/06.jpg


BIN
src/main/webapp/ten/upload/07.jpg


BIN
src/main/webapp/ten/upload/08.jpg


BIN
src/main/webapp/ten/upload/09.jpg


BIN
src/main/webapp/ten/upload/10.jpg


BIN
src/main/webapp/ten/upload/10_1.jpg


BIN
src/main/webapp/ten/upload/11.jpg


BIN
src/main/webapp/ten/upload/12.jpg


BIN
src/main/webapp/ten/upload/13.jpeg


BIN
src/main/webapp/ten/upload/14.jpeg


BIN
src/main/webapp/ten/upload/15.jpeg


BIN
src/main/webapp/ten/upload/16.jpeg


BIN
src/main/webapp/ten/upload/17.jpeg


+ 8 - 7
target/classes/DataBase.sql

@@ -21,14 +21,14 @@ create table if not exists user_cart
 (
     user_Cart_Id bigint not null primary key,
     password varchar(16) not null,
-    permission int not null default 0,
+    permission int not null default 0
 );
 
 create table if not exists user_collect
 (
     user_collect_Id bigint not null primary key,
     password varchar(16) not null,
-    permission int not null default 0,
+    permission int not null default 0
 );
 
 
@@ -37,6 +37,7 @@ create table if not exists user_collect
     +   goods
         +   selectionGroup
             +   selection
+        +   comment
 */
 create table if not exists store
 (
@@ -44,7 +45,7 @@ create table if not exists store
     postion varchar(100) not null,
     name varchar(50) not null,
     star int
-)
+);
 
 create table if not exists goods
 (
@@ -52,20 +53,20 @@ create table if not exists goods
     postion varchar(100) not null,
     name varchar(50) not null,
     star int
-)
+);
 
 create table if not exists selectionGroup
 (
     selection_group_id bigint not null primary key,
-    name varchar(50) not null,
-)
+    name varchar(50) not null
+);
 
 create table if not exists selection
 (
     selection_id bigint not null primary key,
     name varchar(50) not null,
     price float(13,2)
-)
+);
 
 
 /*  node*/

+ 1 - 1
target/classes/db.properties

@@ -1,4 +1,4 @@
 jdbc.driver=com.mysql.jdbc.Driver
-jdbc.url=jdbc:mysql://localhost:3306/dsnodetree
+jdbc.url=jdbc:mysql://localhost:3306/ShoppingWebsite
 jdbc.username=root
 jdbc.password=123456

BIN
target/classes/group04/BasicNode$NodeIterator.class


BIN
target/classes/group04/BasicNode.class


BIN
target/classes/group04/NodeDao$DaoState.class


BIN
target/classes/group04/NodeDao.class


BIN
target/classes/group04/nodeOptConsol.class