@ -0,0 +1,68 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<classpath>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
|
||||
<classpathentry kind="src" path="src/main/java"/>
|
||||
<classpathentry kind="src" path="src/main/resources"/>
|
||||
<classpathentry kind="src" path="src/test/java"/>
|
||||
<classpathentry kind="src" path="src/test/resources"/>
|
||||
<classpathentry kind="src" path="target/generated-sources/annotations"/>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/Maven: org.springframework:spring-context-support:4.3.17.RELEASE"/>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/Maven: org.springframework:spring-beans:4.3.17.RELEASE"/>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/Maven: org.springframework:spring-context:4.3.17.RELEASE"/>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/Maven: org.springframework:spring-core:4.3.17.RELEASE"/>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/Maven: commons-logging:commons-logging:1.2"/>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/Maven: org.springframework:spring-webmvc:4.3.17.RELEASE"/>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/Maven: org.springframework:spring-aop:4.3.17.RELEASE"/>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/Maven: org.springframework:spring-expression:4.3.17.RELEASE"/>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/Maven: org.springframework:spring-web:4.3.17.RELEASE"/>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/Maven: org.springframework:spring-jdbc:4.3.17.RELEASE"/>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/Maven: org.springframework:spring-tx:4.3.17.RELEASE"/>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/Maven: org.springframework:spring-test:4.3.17.RELEASE"/>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/Maven: org.mybatis:mybatis:3.4.6"/>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/Maven: org.mybatis:mybatis-spring:1.3.2"/>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/Maven: mysql:mysql-connector-java:5.1.38"/>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/Maven: com.alibaba:druid:1.1.5"/>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/Maven: javax.servlet:javax.servlet-api:3.1.0"/>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/Maven: javax.servlet.jsp:javax.servlet.jsp-api:2.3.1"/>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/Maven: javax.servlet:jstl:1.2"/>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/Maven: com.sun.mail:javax.mail:1.6.1"/>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/Maven: javax.activation:activation:1.1"/>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/Maven: com.fasterxml.jackson.core:jackson-databind:2.9.5"/>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/Maven: com.fasterxml.jackson.core:jackson-annotations:2.9.0"/>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/Maven: com.fasterxml.jackson.core:jackson-core:2.9.5"/>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/Maven: org.thymeleaf:thymeleaf-spring5:3.0.9.RELEASE"/>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/Maven: org.slf4j:slf4j-api:1.7.25"/>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/Maven: org.thymeleaf:thymeleaf:3.0.11.RELEASE"/>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/Maven: ognl:ognl:3.1.12"/>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/Maven: org.javassist:javassist:3.20.0-GA"/>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/Maven: org.attoparser:attoparser:2.0.5.RELEASE"/>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/Maven: org.unbescape:unbescape:1.1.6.RELEASE"/>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/Maven: org.apache.commons:commons-lang3:3.5"/>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/Maven: commons-codec:commons-codec:1.10"/>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/Maven: commons-fileupload:commons-fileupload:1.3.3"/>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/Maven: commons-io:commons-io:2.2"/>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/Maven: org.apache.logging.log4j:log4j-api:2.9.1"/>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/Maven: org.apache.logging.log4j:log4j-core:2.9.1"/>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/Maven: junit:junit:4.12"/>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/Maven: org.hamcrest:hamcrest-core:1.3"/>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/Maven: com.github.pagehelper:pagehelper-spring-boot-starter:1.2.5"/>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/Maven: org.springframework.boot:spring-boot-starter:2.0.1.RELEASE"/>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/Maven: org.springframework.boot:spring-boot:2.0.1.RELEASE"/>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/Maven: org.springframework.boot:spring-boot-autoconfigure:2.0.1.RELEASE"/>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/Maven: org.springframework.boot:spring-boot-starter-logging:2.0.1.RELEASE"/>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/Maven: ch.qos.logback:logback-classic:1.2.3"/>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/Maven: ch.qos.logback:logback-core:1.2.3"/>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/Maven: org.apache.logging.log4j:log4j-to-slf4j:2.10.0"/>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/Maven: org.slf4j:jul-to-slf4j:1.7.25"/>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/Maven: javax.annotation:javax.annotation-api:1.3.2"/>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/Maven: org.yaml:snakeyaml:1.19"/>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/Maven: org.mybatis.spring.boot:mybatis-spring-boot-starter:1.3.2"/>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/Maven: org.springframework.boot:spring-boot-starter-jdbc:1.5.10.RELEASE"/>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/Maven: org.apache.tomcat:tomcat-jdbc:8.5.27"/>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/Maven: org.apache.tomcat:tomcat-juli:8.5.27"/>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/Maven: org.mybatis.spring.boot:mybatis-spring-boot-autoconfigure:1.3.2"/>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/Maven: com.github.pagehelper:pagehelper-spring-boot-autoconfigure:1.2.5"/>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/Maven: com.github.pagehelper:pagehelper:5.1.4"/>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/Maven: com.github.jsqlparser:jsqlparser:1.0"/>
|
||||
<classpathentry kind="output" path="target/classes"/>
|
||||
</classpath>
|
@ -0,0 +1,8 @@
|
||||
# Default ignored files
|
||||
/shelf/
|
||||
/workspace.xml
|
||||
# Datasource local storage ignored files
|
||||
/dataSources/
|
||||
/dataSources.local.xml
|
||||
# Editor-based HTTP Client requests
|
||||
/httpRequests/
|
@ -0,0 +1,6 @@
|
||||
<component name="ArtifactManager">
|
||||
<artifact type="war" name="educational">
|
||||
<output-path>$PROJECT_DIR$/target/classes/artifacts/educational</output-path>
|
||||
<root id="archive" name="educational.war" />
|
||||
</artifact>
|
||||
</component>
|
@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="CompilerConfiguration">
|
||||
<annotationProcessing>
|
||||
<profile name="Maven default annotation processors profile" enabled="true">
|
||||
<sourceOutputDir name="target/generated-sources/annotations" />
|
||||
<sourceTestOutputDir name="target/generated-test-sources/test-annotations" />
|
||||
<outputRelativeToContentRoot value="true" />
|
||||
<module name="educational" />
|
||||
</profile>
|
||||
</annotationProcessing>
|
||||
</component>
|
||||
</project>
|
@ -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>
|
@ -0,0 +1,40 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="RemoteRepositoriesConfiguration">
|
||||
<remote-repository>
|
||||
<option name="id" value="central" />
|
||||
<option name="name" value="Central Repository" />
|
||||
<option name="url" value="http://maven.aliyun.com/nexus/content/groups/public/" />
|
||||
</remote-repository>
|
||||
<remote-repository>
|
||||
<option name="id" value="central" />
|
||||
<option name="name" value="Central Repository" />
|
||||
<option name="url" value="https://repo.maven.apache.org/maven2" />
|
||||
</remote-repository>
|
||||
<remote-repository>
|
||||
<option name="id" value="caih-snapshots" />
|
||||
<option name="name" value="caih-snapshots" />
|
||||
<option name="url" value="http://maven.aliyun.com/nexus/content/groups/public/" />
|
||||
</remote-repository>
|
||||
<remote-repository>
|
||||
<option name="id" value="caih-central" />
|
||||
<option name="name" value="caih-central" />
|
||||
<option name="url" value="http://maven.aliyun.com/nexus/content/groups/public/" />
|
||||
</remote-repository>
|
||||
<remote-repository>
|
||||
<option name="id" value="central" />
|
||||
<option name="name" value="Maven Central repository" />
|
||||
<option name="url" value="https://repo1.maven.org/maven2" />
|
||||
</remote-repository>
|
||||
<remote-repository>
|
||||
<option name="id" value="caih-release" />
|
||||
<option name="name" value="caih-release" />
|
||||
<option name="url" value="http://maven.aliyun.com/nexus/content/groups/public/" />
|
||||
</remote-repository>
|
||||
<remote-repository>
|
||||
<option name="id" value="jboss.community" />
|
||||
<option name="name" value="JBoss Community repository" />
|
||||
<option name="url" value="https://repository.jboss.org/nexus/content/repositories/public/" />
|
||||
</remote-repository>
|
||||
</component>
|
||||
</project>
|
@ -0,0 +1,12 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="MaterialThemeProjectNewConfig">
|
||||
<option name="metadata">
|
||||
<MTProjectMetadataState>
|
||||
<option name="migrated" value="true" />
|
||||
<option name="pristineConfig" value="false" />
|
||||
<option name="userId" value="58c25dad:19116cf1688:-7ffe" />
|
||||
</MTProjectMetadataState>
|
||||
</option>
|
||||
</component>
|
||||
</project>
|
@ -0,0 +1,18 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ExternalStorageConfigurationManager" enabled="true" />
|
||||
<component name="FrameworkDetectionExcludesConfiguration">
|
||||
<file type="web" url="file://$PROJECT_DIR$" />
|
||||
</component>
|
||||
<component name="MavenProjectsManager">
|
||||
<option name="originalFiles">
|
||||
<list>
|
||||
<option value="$PROJECT_DIR$/pom.xml" />
|
||||
</list>
|
||||
</option>
|
||||
<option name="workspaceImportForciblyTurnedOn" value="true" />
|
||||
</component>
|
||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" default="true" project-jdk-name="1.8" project-jdk-type="JavaSDK">
|
||||
<output url="file://$PROJECT_DIR$/target/classes" />
|
||||
</component>
|
||||
</project>
|
@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ProjectModuleManager">
|
||||
<modules>
|
||||
<module fileurl="file://$PROJECT_DIR$/educational.iml" filepath="$PROJECT_DIR$/educational.iml" />
|
||||
</modules>
|
||||
</component>
|
||||
</project>
|
@ -0,0 +1,15 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<projectDescription>
|
||||
<name>educational</name>
|
||||
<comment/>
|
||||
<projects/>
|
||||
<buildSpec>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.jdt.core.javabuilder</name>
|
||||
<arguments/>
|
||||
</buildCommand>
|
||||
</buildSpec>
|
||||
<natures>
|
||||
<nature>org.eclipse.jdt.core.javanature</nature>
|
||||
</natures>
|
||||
</projectDescription>
|
@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<classpath>
|
||||
<classpathentry kind="src" path="src/main/webapp"/>
|
||||
<classpathentry excluding="**/bower_components/*|**/node_modules/*|**/*.min.js" kind="src" path="target/m2e-wtp/web-resources"/>
|
||||
<classpathentry kind="con" path="org.eclipse.wst.jsdt.launching.JRE_CONTAINER"/>
|
||||
<classpathentry kind="con" path="org.eclipse.wst.jsdt.launching.WebProject">
|
||||
<attributes>
|
||||
<attribute name="hide" value="true"/>
|
||||
</attributes>
|
||||
</classpathentry>
|
||||
<classpathentry kind="con" path="org.eclipse.wst.jsdt.launching.baseBrowserLibrary"/>
|
||||
<classpathentry kind="output" path=""/>
|
||||
</classpath>
|
@ -0,0 +1,6 @@
|
||||
eclipse.preferences.version=1
|
||||
encoding//src/main/java=UTF-8
|
||||
encoding//src/main/resources=UTF-8
|
||||
encoding//src/test/java=UTF-8
|
||||
encoding//src/test/resources=UTF-8
|
||||
encoding/<project>=UTF-8
|
@ -0,0 +1,11 @@
|
||||
eclipse.preferences.version=1
|
||||
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
|
||||
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
|
||||
org.eclipse.jdt.core.compiler.compliance=1.8
|
||||
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
|
||||
org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
|
||||
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
|
||||
org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
|
||||
org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=ignore
|
||||
org.eclipse.jdt.core.compiler.release=disabled
|
||||
org.eclipse.jdt.core.compiler.source=1.8
|
@ -0,0 +1,4 @@
|
||||
activeProfiles=
|
||||
eclipse.preferences.version=1
|
||||
resolveWorkspaceProjects=true
|
||||
version=1
|
@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?><project-modules id="moduleCoreId" project-version="1.5.0">
|
||||
<wb-module deploy-name="educational-1.0-SNAPSHOT">
|
||||
<wb-resource deploy-path="/" source-path="/target/m2e-wtp/web-resources"/>
|
||||
<wb-resource deploy-path="/" source-path="/src/main/webapp" tag="defaultRootSource"/>
|
||||
<wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/java"/>
|
||||
<wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/resources"/>
|
||||
<property name="context-root" value="educational"/>
|
||||
<property name="java-output-path" value="/educational/target/classes"/>
|
||||
</wb-module>
|
||||
</project-modules>
|
@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<faceted-project>
|
||||
<fixed facet="wst.jsdt.web"/>
|
||||
<installed facet="java" version="1.8"/>
|
||||
<installed facet="jst.web" version="2.5"/>
|
||||
<installed facet="wst.jsdt.web" version="1.0"/>
|
||||
</faceted-project>
|
@ -0,0 +1 @@
|
||||
org.eclipse.wst.jsdt.launching.baseBrowserLibrary
|
@ -0,0 +1 @@
|
||||
Window
|
@ -0,0 +1,2 @@
|
||||
disabled=06target
|
||||
eclipse.preferences.version=1
|
@ -0,0 +1,75 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<component LANGUAGE_LEVEL="JDK_1_8" inheritJdk="true">
|
||||
<output-test url="file://$MODULE_DIR$/target/test-classes"/>
|
||||
<contentEntry url="file://$MODULE_DIR$">
|
||||
<testFolder url="file://$MODULE_DIR$/src/test/java"/>
|
||||
<testFolder url="file://$MODULE_DIR$/src/test/resources"/>
|
||||
<excludeFolder url="file://$MODULE_DIR$/target"/>
|
||||
</contentEntry>
|
||||
<lib name="Maven: org.springframework:spring-test:4.3.17.RELEASE" scope="TEST"/>
|
||||
<lib name="Maven: javax.servlet:javax.servlet-api:3.1.0" scope="PROVIDED"/>
|
||||
<lib name="Maven: javax.servlet.jsp:javax.servlet.jsp-api:2.3.1" scope="PROVIDED"/>
|
||||
<lib name="Maven: junit:junit:4.12" scope="TEST"/>
|
||||
<lib name="Maven: org.hamcrest:hamcrest-core:1.3" scope="TEST"/>
|
||||
<lib name="Maven: org.yaml:snakeyaml:1.19" scope="RUNTIME"/>
|
||||
<levels>
|
||||
<level name="Maven: org.springframework:spring-context-support:4.3.17.RELEASE" value="project"/>
|
||||
<level name="Maven: org.springframework:spring-beans:4.3.17.RELEASE" value="project"/>
|
||||
<level name="Maven: org.springframework:spring-context:4.3.17.RELEASE" value="project"/>
|
||||
<level name="Maven: org.springframework:spring-core:4.3.17.RELEASE" value="project"/>
|
||||
<level name="Maven: commons-logging:commons-logging:1.2" value="project"/>
|
||||
<level name="Maven: org.springframework:spring-webmvc:4.3.17.RELEASE" value="project"/>
|
||||
<level name="Maven: org.springframework:spring-aop:4.3.17.RELEASE" value="project"/>
|
||||
<level name="Maven: org.springframework:spring-expression:4.3.17.RELEASE" value="project"/>
|
||||
<level name="Maven: org.springframework:spring-web:4.3.17.RELEASE" value="project"/>
|
||||
<level name="Maven: org.springframework:spring-jdbc:4.3.17.RELEASE" value="project"/>
|
||||
<level name="Maven: org.springframework:spring-tx:4.3.17.RELEASE" value="project"/>
|
||||
<level name="Maven: org.springframework:spring-test:4.3.17.RELEASE" value="project"/>
|
||||
<level name="Maven: org.mybatis:mybatis:3.4.6" value="project"/>
|
||||
<level name="Maven: org.mybatis:mybatis-spring:1.3.2" value="project"/>
|
||||
<level name="Maven: mysql:mysql-connector-java:5.1.38" value="project"/>
|
||||
<level name="Maven: com.alibaba:druid:1.1.5" value="project"/>
|
||||
<level name="Maven: javax.servlet:javax.servlet-api:3.1.0" value="project"/>
|
||||
<level name="Maven: javax.servlet.jsp:javax.servlet.jsp-api:2.3.1" value="project"/>
|
||||
<level name="Maven: javax.servlet:jstl:1.2" value="project"/>
|
||||
<level name="Maven: com.sun.mail:javax.mail:1.6.1" value="project"/>
|
||||
<level name="Maven: javax.activation:activation:1.1" value="project"/>
|
||||
<level name="Maven: com.fasterxml.jackson.core:jackson-databind:2.9.5" value="project"/>
|
||||
<level name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.9.0" value="project"/>
|
||||
<level name="Maven: com.fasterxml.jackson.core:jackson-core:2.9.5" value="project"/>
|
||||
<level name="Maven: org.thymeleaf:thymeleaf-spring5:3.0.9.RELEASE" value="project"/>
|
||||
<level name="Maven: org.slf4j:slf4j-api:1.7.25" value="project"/>
|
||||
<level name="Maven: org.thymeleaf:thymeleaf:3.0.11.RELEASE" value="project"/>
|
||||
<level name="Maven: ognl:ognl:3.1.12" value="project"/>
|
||||
<level name="Maven: org.javassist:javassist:3.20.0-GA" value="project"/>
|
||||
<level name="Maven: org.attoparser:attoparser:2.0.5.RELEASE" value="project"/>
|
||||
<level name="Maven: org.unbescape:unbescape:1.1.6.RELEASE" value="project"/>
|
||||
<level name="Maven: org.apache.commons:commons-lang3:3.5" value="project"/>
|
||||
<level name="Maven: commons-codec:commons-codec:1.10" value="project"/>
|
||||
<level name="Maven: commons-fileupload:commons-fileupload:1.3.3" value="project"/>
|
||||
<level name="Maven: commons-io:commons-io:2.2" value="project"/>
|
||||
<level name="Maven: org.apache.logging.log4j:log4j-api:2.9.1" value="project"/>
|
||||
<level name="Maven: org.apache.logging.log4j:log4j-core:2.9.1" value="project"/>
|
||||
<level name="Maven: junit:junit:4.12" value="project"/>
|
||||
<level name="Maven: org.hamcrest:hamcrest-core:1.3" value="project"/>
|
||||
<level name="Maven: com.github.pagehelper:pagehelper-spring-boot-starter:1.2.5" value="project"/>
|
||||
<level name="Maven: org.springframework.boot:spring-boot-starter:2.0.1.RELEASE" value="project"/>
|
||||
<level name="Maven: org.springframework.boot:spring-boot:2.0.1.RELEASE" value="project"/>
|
||||
<level name="Maven: org.springframework.boot:spring-boot-autoconfigure:2.0.1.RELEASE" value="project"/>
|
||||
<level name="Maven: org.springframework.boot:spring-boot-starter-logging:2.0.1.RELEASE" value="project"/>
|
||||
<level name="Maven: ch.qos.logback:logback-classic:1.2.3" value="project"/>
|
||||
<level name="Maven: ch.qos.logback:logback-core:1.2.3" value="project"/>
|
||||
<level name="Maven: org.apache.logging.log4j:log4j-to-slf4j:2.10.0" value="project"/>
|
||||
<level name="Maven: org.slf4j:jul-to-slf4j:1.7.25" value="project"/>
|
||||
<level name="Maven: javax.annotation:javax.annotation-api:1.3.2" value="project"/>
|
||||
<level name="Maven: org.yaml:snakeyaml:1.19" value="project"/>
|
||||
<level name="Maven: org.mybatis.spring.boot:mybatis-spring-boot-starter:1.3.2" value="project"/>
|
||||
<level name="Maven: org.springframework.boot:spring-boot-starter-jdbc:1.5.10.RELEASE" value="project"/>
|
||||
<level name="Maven: org.apache.tomcat:tomcat-jdbc:8.5.27" value="project"/>
|
||||
<level name="Maven: org.apache.tomcat:tomcat-juli:8.5.27" value="project"/>
|
||||
<level name="Maven: org.mybatis.spring.boot:mybatis-spring-boot-autoconfigure:1.3.2" value="project"/>
|
||||
<level name="Maven: com.github.pagehelper:pagehelper-spring-boot-autoconfigure:1.2.5" value="project"/>
|
||||
<level name="Maven: com.github.pagehelper:pagehelper:5.1.4" value="project"/>
|
||||
<level name="Maven: com.github.jsqlparser:jsqlparser:1.0" value="project"/>
|
||||
</levels>
|
||||
</component>
|
@ -0,0 +1,17 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module version="4">
|
||||
<component name="EclipseModuleManager">
|
||||
<conelement value="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER" />
|
||||
<src_description expected_position="0">
|
||||
<src_folder value="file://$MODULE_DIR$/src/main/java" expected_position="0" />
|
||||
<src_folder value="file://$MODULE_DIR$/src/main/resources" expected_position="1" />
|
||||
<src_folder value="file://$MODULE_DIR$/src/test/java" expected_position="2" />
|
||||
<src_folder value="file://$MODULE_DIR$/src/test/resources" expected_position="3" />
|
||||
</src_description>
|
||||
</component>
|
||||
<component name="FacetManager">
|
||||
<facet type="Spring" name="Spring">
|
||||
<configuration />
|
||||
</facet>
|
||||
</component>
|
||||
</module>
|
@ -0,0 +1,94 @@
|
||||
/*
|
||||
Navicat Premium Data Transfer
|
||||
|
||||
Source Server : localMySQL
|
||||
Source Server Type : MySQL
|
||||
Source Server Version : 50729
|
||||
Source Host : localhost:3306
|
||||
Source Schema : educational
|
||||
|
||||
Target Server Type : MySQL
|
||||
Target Server Version : 50729
|
||||
File Encoding : 65001
|
||||
|
||||
Date: 29/12/2024 21:45:32
|
||||
*/
|
||||
|
||||
SET NAMES utf8mb4;
|
||||
SET FOREIGN_KEY_CHECKS = 0;
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for course
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `course`;
|
||||
CREATE TABLE `course` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '课程名称',
|
||||
`course_no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '课程编号',
|
||||
`teacher_id` int(11) NULL DEFAULT NULL COMMENT '任课老师id',
|
||||
`remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '课程简介',
|
||||
PRIMARY KEY (`id`) USING BTREE
|
||||
) ENGINE = InnoDB AUTO_INCREMENT = 12 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '课程表' ROW_FORMAT = Dynamic;
|
||||
|
||||
-- ----------------------------
|
||||
-- Records of course
|
||||
-- ----------------------------
|
||||
INSERT INTO `course` VALUES (1, 'JavaWeb实战23', 'No00123', 100026, 'java实战课21');
|
||||
INSERT INTO `course` VALUES (6, 'servlet实战', 'No002', 100001, 'servlet实战演示');
|
||||
INSERT INTO `course` VALUES (7, '高音训练课', '0003', 100001, '111111');
|
||||
INSERT INTO `course` VALUES (8, 'java', '003', 100001, '2');
|
||||
INSERT INTO `course` VALUES (9, '周杰伦音乐课', 'N0999', 100026, '');
|
||||
INSERT INTO `course` VALUES (10, '跳舞课', '123', 100028, '1111');
|
||||
INSERT INTO `course` VALUES (11, '游泳课', 'YY-001', 100026, '1111');
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for course_selection
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `course_selection`;
|
||||
CREATE TABLE `course_selection` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`course_id` int(11) NULL DEFAULT NULL COMMENT '课程id',
|
||||
`student_id` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '学生id',
|
||||
`scores` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '分数',
|
||||
`create_time` datetime(0) NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP(0) COMMENT '选择时间',
|
||||
PRIMARY KEY (`id`) USING BTREE
|
||||
) ENGINE = InnoDB AUTO_INCREMENT = 34 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '课程选择表' ROW_FORMAT = Dynamic;
|
||||
|
||||
-- ----------------------------
|
||||
-- Records of course_selection
|
||||
-- ----------------------------
|
||||
INSERT INTO `course_selection` VALUES (30, 1, '100029', NULL, '2024-12-29 20:46:21');
|
||||
INSERT INTO `course_selection` VALUES (31, 6, '100029', '88', '2024-12-29 21:19:51');
|
||||
INSERT INTO `course_selection` VALUES (32, 11, '100030', '11', '2024-12-29 21:22:18');
|
||||
INSERT INTO `course_selection` VALUES (33, 6, '100030', NULL, '2024-12-29 20:58:44');
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for user
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `user`;
|
||||
CREATE TABLE `user` (
|
||||
`id` int(10) NOT NULL AUTO_INCREMENT,
|
||||
`username` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
|
||||
`password` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
|
||||
`sex` varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '性别 1男 2女',
|
||||
`real_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '真实姓名',
|
||||
`age` varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '年龄',
|
||||
`role_id` int(11) NOT NULL COMMENT '角色Id 3管理员 2老师 1学生',
|
||||
`phone` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
|
||||
`createdate` datetime(0) NULL DEFAULT NULL,
|
||||
`remark` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
|
||||
PRIMARY KEY (`id`, `username`) USING BTREE,
|
||||
UNIQUE INDEX `phone`(`phone`) USING BTREE,
|
||||
INDEX `id`(`id`) USING BTREE
|
||||
) ENGINE = InnoDB AUTO_INCREMENT = 100031 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;
|
||||
|
||||
-- ----------------------------
|
||||
-- Records of user
|
||||
-- ----------------------------
|
||||
INSERT INTO `user` VALUES (100001, 'admin', 'admin', '1', '詹姆斯', '402', 3, '18802290129', '2021-06-01 18:20:51', '系统管理员12');
|
||||
INSERT INTO `user` VALUES (100026, 'user11', '111111', '1', '甪里1', '201', 2, '15555555551', '2024-12-29 14:31:00', '1');
|
||||
INSERT INTO `user` VALUES (100028, 'user2', '123456', '1', '安东尼', '40', 2, '15788888888', '2024-12-29 18:08:43', '安东尼');
|
||||
INSERT INTO `user` VALUES (100029, 'student1', '123456', '1', '李元芳', '18', 1, '13244444444', '2024-12-29 19:37:46', '1');
|
||||
INSERT INTO `user` VALUES (100030, 'student2', '123456', '1', '狄仁杰', '22', 1, '12222222222', '2024-12-29 20:53:22', '1');
|
||||
|
||||
SET FOREIGN_KEY_CHECKS = 1;
|
@ -0,0 +1,178 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<eclipse-userlibraries>
|
||||
<library name="Maven: javax.servlet:jstl:1.2">
|
||||
<archive path="E:/apache-maven-3.5.0/repository/javax/servlet/jstl/1.2/jstl-1.2.jar" />
|
||||
</library>
|
||||
<library name="Maven: com.sun.mail:javax.mail:1.6.1">
|
||||
<archive path="E:/apache-maven-3.5.0/repository/com/sun/mail/javax.mail/1.6.1/javax.mail-1.6.1.jar" />
|
||||
</library>
|
||||
<library name="Maven: javax.servlet:javax.servlet-api:3.1.0">
|
||||
<archive path="E:/apache-maven-3.5.0/repository/javax/servlet/javax.servlet-api/3.1.0/javax.servlet-api-3.1.0.jar" />
|
||||
</library>
|
||||
<library name="Maven: javax.servlet.jsp:javax.servlet.jsp-api:2.3.1">
|
||||
<archive path="E:/apache-maven-3.5.0/repository/javax/servlet/jsp/javax.servlet.jsp-api/2.3.1/javax.servlet.jsp-api-2.3.1.jar" />
|
||||
</library>
|
||||
<library name="Maven: commons-codec:commons-codec:1.10">
|
||||
<archive path="E:/apache-maven-3.5.0/repository/commons-codec/commons-codec/1.10/commons-codec-1.10.jar" />
|
||||
</library>
|
||||
<library name="Maven: commons-fileupload:commons-fileupload:1.3.3">
|
||||
<archive path="E:/apache-maven-3.5.0/repository/commons-fileupload/commons-fileupload/1.3.3/commons-fileupload-1.3.3.jar" />
|
||||
</library>
|
||||
<library name="Maven: com.fasterxml.jackson.core:jackson-databind:2.9.5">
|
||||
<archive path="E:/apache-maven-3.5.0/repository/com/fasterxml/jackson/core/jackson-databind/2.9.5/jackson-databind-2.9.5.jar" />
|
||||
</library>
|
||||
<library name="Maven: org.apache.commons:commons-lang3:3.5">
|
||||
<archive path="E:/apache-maven-3.5.0/repository/org/apache/commons/commons-lang3/3.5/commons-lang3-3.5.jar" />
|
||||
</library>
|
||||
<library name="Maven: junit:junit:4.12">
|
||||
<archive path="E:/apache-maven-3.5.0/repository/junit/junit/4.12/junit-4.12.jar" />
|
||||
</library>
|
||||
<library name="Maven: com.github.pagehelper:pagehelper-spring-boot-starter:1.2.5">
|
||||
<archive path="E:/apache-maven-3.5.0/repository/com/github/pagehelper/pagehelper-spring-boot-starter/1.2.5/pagehelper-spring-boot-starter-1.2.5.jar" />
|
||||
</library>
|
||||
<library name="Maven: org.apache.logging.log4j:log4j-api:2.9.1">
|
||||
<archive path="E:/apache-maven-3.5.0/repository/org/apache/logging/log4j/log4j-api/2.9.1/log4j-api-2.9.1.jar" />
|
||||
</library>
|
||||
<library name="Maven: org.apache.logging.log4j:log4j-core:2.9.1">
|
||||
<archive path="E:/apache-maven-3.5.0/repository/org/apache/logging/log4j/log4j-core/2.9.1/log4j-core-2.9.1.jar" />
|
||||
</library>
|
||||
<library name="Maven: org.springframework:spring-webmvc:4.3.17.RELEASE">
|
||||
<archive path="E:/apache-maven-3.5.0/repository/org/springframework/spring-webmvc/4.3.17.RELEASE/spring-webmvc-4.3.17.RELEASE.jar" />
|
||||
</library>
|
||||
<library name="Maven: org.springframework:spring-context-support:4.3.17.RELEASE">
|
||||
<archive path="E:/apache-maven-3.5.0/repository/org/springframework/spring-context-support/4.3.17.RELEASE/spring-context-support-4.3.17.RELEASE.jar" />
|
||||
</library>
|
||||
<library name="Maven: org.springframework:spring-test:4.3.17.RELEASE">
|
||||
<archive path="E:/apache-maven-3.5.0/repository/org/springframework/spring-test/4.3.17.RELEASE/spring-test-4.3.17.RELEASE.jar" />
|
||||
</library>
|
||||
<library name="Maven: org.springframework:spring-jdbc:4.3.17.RELEASE">
|
||||
<archive path="E:/apache-maven-3.5.0/repository/org/springframework/spring-jdbc/4.3.17.RELEASE/spring-jdbc-4.3.17.RELEASE.jar" />
|
||||
</library>
|
||||
<library name="Maven: mysql:mysql-connector-java:5.1.38">
|
||||
<archive path="E:/apache-maven-3.5.0/repository/mysql/mysql-connector-java/5.1.38/mysql-connector-java-5.1.38.jar" />
|
||||
</library>
|
||||
<library name="Maven: com.alibaba:druid:1.1.5">
|
||||
<archive path="E:/apache-maven-3.5.0/repository/com/alibaba/druid/1.1.5/druid-1.1.5.jar" />
|
||||
</library>
|
||||
<library name="Maven: org.mybatis:mybatis:3.4.6">
|
||||
<archive path="E:/apache-maven-3.5.0/repository/org/mybatis/mybatis/3.4.6/mybatis-3.4.6.jar" />
|
||||
</library>
|
||||
<library name="Maven: org.mybatis:mybatis-spring:1.3.2">
|
||||
<archive path="E:/apache-maven-3.5.0/repository/org/mybatis/mybatis-spring/1.3.2/mybatis-spring-1.3.2.jar" />
|
||||
</library>
|
||||
<library name="Maven: org.springframework:spring-core:4.3.17.RELEASE">
|
||||
<archive path="E:/apache-maven-3.5.0/repository/org/springframework/spring-core/4.3.17.RELEASE/spring-core-4.3.17.RELEASE.jar" />
|
||||
</library>
|
||||
<library name="Maven: org.springframework:spring-beans:4.3.17.RELEASE">
|
||||
<archive path="E:/apache-maven-3.5.0/repository/org/springframework/spring-beans/4.3.17.RELEASE/spring-beans-4.3.17.RELEASE.jar" />
|
||||
</library>
|
||||
<library name="Maven: org.springframework:spring-web:4.3.17.RELEASE">
|
||||
<archive path="E:/apache-maven-3.5.0/repository/org/springframework/spring-web/4.3.17.RELEASE/spring-web-4.3.17.RELEASE.jar" />
|
||||
</library>
|
||||
<library name="Maven: org.springframework:spring-aop:4.3.17.RELEASE">
|
||||
<archive path="E:/apache-maven-3.5.0/repository/org/springframework/spring-aop/4.3.17.RELEASE/spring-aop-4.3.17.RELEASE.jar" />
|
||||
</library>
|
||||
<library name="Maven: com.fasterxml.jackson.core:jackson-core:2.9.5">
|
||||
<archive path="E:/apache-maven-3.5.0/repository/com/fasterxml/jackson/core/jackson-core/2.9.5/jackson-core-2.9.5.jar" />
|
||||
</library>
|
||||
<library name="Maven: javax.activation:activation:1.1">
|
||||
<archive path="E:/apache-maven-3.5.0/repository/javax/activation/activation/1.1/activation-1.1.jar" />
|
||||
</library>
|
||||
<library name="Maven: org.springframework.boot:spring-boot:2.0.1.RELEASE">
|
||||
<archive path="E:/apache-maven-3.5.0/repository/org/springframework/boot/spring-boot/2.0.1.RELEASE/spring-boot-2.0.1.RELEASE.jar" />
|
||||
</library>
|
||||
<library name="Maven: org.hamcrest:hamcrest-core:1.3">
|
||||
<archive path="E:/apache-maven-3.5.0/repository/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar" />
|
||||
</library>
|
||||
<library name="Maven: ch.qos.logback:logback-core:1.2.3">
|
||||
<archive path="E:/apache-maven-3.5.0/repository/ch/qos/logback/logback-core/1.2.3/logback-core-1.2.3.jar" />
|
||||
</library>
|
||||
<library name="Maven: org.springframework.boot:spring-boot-starter-logging:2.0.1.RELEASE">
|
||||
<archive path="E:/apache-maven-3.5.0/repository/org/springframework/boot/spring-boot-starter-logging/2.0.1.RELEASE/spring-boot-starter-logging-2.0.1.RELEASE.jar" />
|
||||
</library>
|
||||
<library name="Maven: javax.annotation:javax.annotation-api:1.3.2">
|
||||
<archive path="E:/apache-maven-3.5.0/repository/javax/annotation/javax.annotation-api/1.3.2/javax.annotation-api-1.3.2.jar" />
|
||||
</library>
|
||||
<library name="Maven: org.apache.logging.log4j:log4j-to-slf4j:2.10.0">
|
||||
<archive path="E:/apache-maven-3.5.0/repository/org/apache/logging/log4j/log4j-to-slf4j/2.10.0/log4j-to-slf4j-2.10.0.jar" />
|
||||
</library>
|
||||
<library name="Maven: org.apache.tomcat:tomcat-jdbc:8.5.27">
|
||||
<archive path="E:/apache-maven-3.5.0/repository/org/apache/tomcat/tomcat-jdbc/8.5.27/tomcat-jdbc-8.5.27.jar" />
|
||||
</library>
|
||||
<library name="Maven: org.mybatis.spring.boot:mybatis-spring-boot-starter:1.3.2">
|
||||
<archive path="E:/apache-maven-3.5.0/repository/org/mybatis/spring/boot/mybatis-spring-boot-starter/1.3.2/mybatis-spring-boot-starter-1.3.2.jar" />
|
||||
</library>
|
||||
<library name="Maven: com.github.pagehelper:pagehelper:5.1.4">
|
||||
<archive path="E:/apache-maven-3.5.0/repository/com/github/pagehelper/pagehelper/5.1.4/pagehelper-5.1.4.jar" />
|
||||
</library>
|
||||
<library name="Maven: org.mybatis.spring.boot:mybatis-spring-boot-autoconfigure:1.3.2">
|
||||
<archive path="E:/apache-maven-3.5.0/repository/org/mybatis/spring/boot/mybatis-spring-boot-autoconfigure/1.3.2/mybatis-spring-boot-autoconfigure-1.3.2.jar" />
|
||||
</library>
|
||||
<library name="Maven: commons-logging:commons-logging:1.2">
|
||||
<archive path="E:/apache-maven-3.5.0/repository/commons-logging/commons-logging/1.2/commons-logging-1.2.jar" />
|
||||
</library>
|
||||
<library name="Maven: org.springframework:spring-context:4.3.17.RELEASE">
|
||||
<archive path="E:/apache-maven-3.5.0/repository/org/springframework/spring-context/4.3.17.RELEASE/spring-context-4.3.17.RELEASE.jar" />
|
||||
</library>
|
||||
<library name="Maven: org.springframework:spring-tx:4.3.17.RELEASE">
|
||||
<archive path="E:/apache-maven-3.5.0/repository/org/springframework/spring-tx/4.3.17.RELEASE/spring-tx-4.3.17.RELEASE.jar" />
|
||||
</library>
|
||||
<library name="Maven: org.springframework:spring-expression:4.3.17.RELEASE">
|
||||
<archive path="E:/apache-maven-3.5.0/repository/org/springframework/spring-expression/4.3.17.RELEASE/spring-expression-4.3.17.RELEASE.jar" />
|
||||
</library>
|
||||
<library name="Maven: commons-io:commons-io:2.2">
|
||||
<archive path="E:/apache-maven-3.5.0/repository/commons-io/commons-io/2.2/commons-io-2.2.jar" />
|
||||
</library>
|
||||
<library name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.9.0">
|
||||
<archive path="E:/apache-maven-3.5.0/repository/com/fasterxml/jackson/core/jackson-annotations/2.9.0/jackson-annotations-2.9.0.jar" />
|
||||
</library>
|
||||
<library name="Maven: org.springframework.boot:spring-boot-autoconfigure:2.0.1.RELEASE">
|
||||
<archive path="E:/apache-maven-3.5.0/repository/org/springframework/boot/spring-boot-autoconfigure/2.0.1.RELEASE/spring-boot-autoconfigure-2.0.1.RELEASE.jar" />
|
||||
</library>
|
||||
<library name="Maven: org.springframework.boot:spring-boot-starter:2.0.1.RELEASE">
|
||||
<archive path="E:/apache-maven-3.5.0/repository/org/springframework/boot/spring-boot-starter/2.0.1.RELEASE/spring-boot-starter-2.0.1.RELEASE.jar" />
|
||||
</library>
|
||||
<library name="Maven: org.slf4j:slf4j-api:1.7.25">
|
||||
<archive path="E:/apache-maven-3.5.0/repository/org/slf4j/slf4j-api/1.7.25/slf4j-api-1.7.25.jar" />
|
||||
</library>
|
||||
<library name="Maven: ch.qos.logback:logback-classic:1.2.3">
|
||||
<archive path="E:/apache-maven-3.5.0/repository/ch/qos/logback/logback-classic/1.2.3/logback-classic-1.2.3.jar" />
|
||||
</library>
|
||||
<library name="Maven: org.yaml:snakeyaml:1.19">
|
||||
<archive path="E:/apache-maven-3.5.0/repository/org/yaml/snakeyaml/1.19/snakeyaml-1.19.jar" />
|
||||
</library>
|
||||
<library name="Maven: org.slf4j:jul-to-slf4j:1.7.25">
|
||||
<archive path="E:/apache-maven-3.5.0/repository/org/slf4j/jul-to-slf4j/1.7.25/jul-to-slf4j-1.7.25.jar" />
|
||||
</library>
|
||||
<library name="Maven: org.apache.tomcat:tomcat-juli:8.5.27">
|
||||
<archive path="E:/apache-maven-3.5.0/repository/org/apache/tomcat/tomcat-juli/8.5.27/tomcat-juli-8.5.27.jar" />
|
||||
</library>
|
||||
<library name="Maven: org.springframework.boot:spring-boot-starter-jdbc:1.5.10.RELEASE">
|
||||
<archive path="E:/apache-maven-3.5.0/repository/org/springframework/boot/spring-boot-starter-jdbc/1.5.10.RELEASE/spring-boot-starter-jdbc-1.5.10.RELEASE.jar" />
|
||||
</library>
|
||||
<library name="Maven: com.github.jsqlparser:jsqlparser:1.0">
|
||||
<archive path="E:/apache-maven-3.5.0/repository/com/github/jsqlparser/jsqlparser/1.0/jsqlparser-1.0.jar" />
|
||||
</library>
|
||||
<library name="Maven: com.github.pagehelper:pagehelper-spring-boot-autoconfigure:1.2.5">
|
||||
<archive path="E:/apache-maven-3.5.0/repository/com/github/pagehelper/pagehelper-spring-boot-autoconfigure/1.2.5/pagehelper-spring-boot-autoconfigure-1.2.5.jar" />
|
||||
</library>
|
||||
<library name="Maven: org.thymeleaf:thymeleaf-spring5:3.0.9.RELEASE">
|
||||
<archive path="E:/apache-maven-3.5.0/repository/org/thymeleaf/thymeleaf-spring5/3.0.9.RELEASE/thymeleaf-spring5-3.0.9.RELEASE.jar" />
|
||||
</library>
|
||||
<library name="Maven: ognl:ognl:3.1.12">
|
||||
<archive path="E:/apache-maven-3.5.0/repository/ognl/ognl/3.1.12/ognl-3.1.12.jar" />
|
||||
</library>
|
||||
<library name="Maven: org.attoparser:attoparser:2.0.5.RELEASE">
|
||||
<archive path="E:/apache-maven-3.5.0/repository/org/attoparser/attoparser/2.0.5.RELEASE/attoparser-2.0.5.RELEASE.jar" />
|
||||
</library>
|
||||
<library name="Maven: org.thymeleaf:thymeleaf:3.0.11.RELEASE">
|
||||
<archive path="E:/apache-maven-3.5.0/repository/org/thymeleaf/thymeleaf/3.0.11.RELEASE/thymeleaf-3.0.11.RELEASE.jar" />
|
||||
</library>
|
||||
<library name="Maven: org.javassist:javassist:3.20.0-GA">
|
||||
<archive path="E:/apache-maven-3.5.0/repository/org/javassist/javassist/3.20.0-GA/javassist-3.20.0-GA.jar" />
|
||||
</library>
|
||||
<library name="Maven: org.unbescape:unbescape:1.1.6.RELEASE">
|
||||
<archive path="E:/apache-maven-3.5.0/repository/org/unbescape/unbescape/1.1.6.RELEASE/unbescape-1.1.6.RELEASE.jar" />
|
||||
</library>
|
||||
</eclipse-userlibraries>
|
||||
|
@ -0,0 +1,190 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<groupId>org.example</groupId>
|
||||
<artifactId>educational</artifactId>
|
||||
<version>1.0-SNAPSHOT</version>
|
||||
<packaging>war</packaging>
|
||||
|
||||
<properties>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
<java.version>1.8</java.version>
|
||||
<!-- dependency version -->
|
||||
<spring.version>4.3.17.RELEASE</spring.version>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
|
||||
<!-- spring -->
|
||||
<dependency>
|
||||
<groupId>org.springframework</groupId>
|
||||
<artifactId>spring-context-support</artifactId>
|
||||
<version>${spring.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework</groupId>
|
||||
<artifactId>spring-webmvc</artifactId>
|
||||
<version>${spring.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework</groupId>
|
||||
<artifactId>spring-jdbc</artifactId>
|
||||
<version>${spring.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework</groupId>
|
||||
<artifactId>spring-test</artifactId>
|
||||
<version>${spring.version}</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
<!-- mybatis -->
|
||||
<dependency>
|
||||
<groupId>org.mybatis</groupId>
|
||||
<artifactId>mybatis</artifactId>
|
||||
<version>3.4.6</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.mybatis</groupId>
|
||||
<artifactId>mybatis-spring</artifactId>
|
||||
<version>1.3.2</version>
|
||||
</dependency>
|
||||
|
||||
<!-- jdbc -->
|
||||
<dependency>
|
||||
<groupId>mysql</groupId>
|
||||
<artifactId>mysql-connector-java</artifactId>
|
||||
<version>8.0.17</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.alibaba</groupId>
|
||||
<artifactId>druid</artifactId>
|
||||
<version>1.1.5</version>
|
||||
</dependency>
|
||||
|
||||
<!-- servlet&jsp -->
|
||||
<dependency>
|
||||
<groupId>javax.servlet</groupId>
|
||||
<artifactId>javax.servlet-api</artifactId>
|
||||
<version>3.1.0</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>javax.servlet.jsp</groupId>
|
||||
<artifactId>javax.servlet.jsp-api</artifactId>
|
||||
<version>2.3.1</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>javax.servlet</groupId>
|
||||
<artifactId>jstl</artifactId>
|
||||
<version>1.2</version>
|
||||
</dependency>
|
||||
|
||||
<!-- email -->
|
||||
<dependency>
|
||||
<groupId>com.sun.mail</groupId>
|
||||
<artifactId>javax.mail</artifactId>
|
||||
<version>1.6.1</version>
|
||||
</dependency>
|
||||
|
||||
<!-- json -->
|
||||
<dependency>
|
||||
<groupId>com.fasterxml.jackson.core</groupId>
|
||||
<artifactId>jackson-databind</artifactId>
|
||||
<version>2.9.5</version>
|
||||
</dependency>
|
||||
|
||||
<!--导入Thymeleaf模板引擎 -->
|
||||
<dependency>
|
||||
<groupId>org.thymeleaf</groupId>
|
||||
<artifactId>thymeleaf-spring5</artifactId>
|
||||
<version>3.0.9.RELEASE</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.thymeleaf</groupId>
|
||||
<artifactId>thymeleaf</artifactId>
|
||||
<version>3.0.11.RELEASE</version>
|
||||
</dependency>
|
||||
<!-- apache commons -->
|
||||
<dependency>
|
||||
<groupId>org.apache.commons</groupId>
|
||||
<artifactId>commons-lang3</artifactId>
|
||||
<version>3.5</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>commons-codec</groupId>
|
||||
<artifactId>commons-codec</artifactId>
|
||||
<version>1.10</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>commons-fileupload</groupId>
|
||||
<artifactId>commons-fileupload</artifactId>
|
||||
<version>1.3.3</version>
|
||||
</dependency>
|
||||
|
||||
<!-- logging -->
|
||||
<dependency>
|
||||
<groupId>org.apache.logging.log4j</groupId>
|
||||
<artifactId>log4j-api</artifactId>
|
||||
<version>2.9.1</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.logging.log4j</groupId>
|
||||
<artifactId>log4j-core</artifactId>
|
||||
<version>2.9.1</version>
|
||||
</dependency>
|
||||
|
||||
<!-- test -->
|
||||
<dependency>
|
||||
<groupId>junit</groupId>
|
||||
<artifactId>junit</artifactId>
|
||||
<version>4.12</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<!-- springboot分页插件 -->
|
||||
<dependency>
|
||||
<groupId>com.github.pagehelper</groupId>
|
||||
<artifactId>pagehelper-spring-boot-starter</artifactId>
|
||||
<version>1.2.5</version>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
<resources>
|
||||
<resource>
|
||||
<directory>${basedir}/src/main/resources</directory>
|
||||
<!--<filtering>true</filtering>-->
|
||||
</resource>
|
||||
</resources>
|
||||
<plugins>
|
||||
<!-- Maven compiler begin -->
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-compiler-plugin</artifactId>
|
||||
<configuration>
|
||||
<source>${java.version}</source>
|
||||
<target>${java.version}</target>
|
||||
<encoding>${project.build.sourceEncoding}</encoding>
|
||||
</configuration>
|
||||
</plugin>
|
||||
<!-- /Maven compiler end -->
|
||||
<!-- Tomcat web server begin -->
|
||||
<plugin>
|
||||
<groupId>org.apache.tomcat.maven</groupId>
|
||||
<artifactId>tomcat7-maven-plugin</artifactId>
|
||||
<version>2.2</version>
|
||||
<configuration>
|
||||
<path>/</path>
|
||||
<uriEncoding>${project.build.sourceEncoding}</uriEncoding>
|
||||
</configuration>
|
||||
</plugin>
|
||||
<!-- /Tomcat web server end -->
|
||||
</plugins>
|
||||
</build>
|
||||
|
||||
</project>
|
@ -0,0 +1,95 @@
|
||||
package org.example.common.page;
|
||||
import org.example.utils.StringUtils;
|
||||
//导入了 StringUtils 工具类,用于字符串处理
|
||||
|
||||
/**
|
||||
* 分页数据
|
||||
*
|
||||
* @author ruoyi
|
||||
*/
|
||||
//PageDomain 类用于存储分页数据
|
||||
public class PageDomain
|
||||
{
|
||||
/** 当前记录起始索引 */
|
||||
private Integer pageNum;
|
||||
|
||||
/** 每页显示记录数 */
|
||||
private Integer pageSize;
|
||||
|
||||
/** 排序列 */
|
||||
private String orderByColumn;
|
||||
|
||||
/** 排序的方向desc或者asc升序 */
|
||||
private String isAsc = "asc";
|
||||
|
||||
/** 排序的方向desc或者asc */
|
||||
private String isDesc = "desc";
|
||||
|
||||
private Integer page;
|
||||
private Integer limit;
|
||||
|
||||
public String getOrderBy()
|
||||
{
|
||||
if (StringUtils.isEmpty(orderByColumn))
|
||||
{
|
||||
return "";
|
||||
}
|
||||
return StringUtils.toUnderScoreCase(orderByColumn) + " " + isAsc;
|
||||
}
|
||||
|
||||
public Integer getPageNum()
|
||||
{
|
||||
return pageNum;
|
||||
}
|
||||
|
||||
public void setPageNum(Integer pageNum)
|
||||
{
|
||||
this.pageNum = pageNum;
|
||||
}
|
||||
|
||||
public Integer getPageSize()
|
||||
{
|
||||
return pageSize;
|
||||
}
|
||||
|
||||
public void setPageSize(Integer pageSize)
|
||||
{
|
||||
this.pageSize = pageSize;
|
||||
}
|
||||
|
||||
public String getOrderByColumn()
|
||||
{
|
||||
return orderByColumn;
|
||||
}
|
||||
|
||||
public void setOrderByColumn(String orderByColumn)
|
||||
{
|
||||
this.orderByColumn = orderByColumn;
|
||||
}
|
||||
|
||||
public String getIsAsc()
|
||||
{
|
||||
return isAsc;
|
||||
}
|
||||
|
||||
public void setIsAsc(String isAsc)
|
||||
{
|
||||
this.isAsc = isAsc;
|
||||
}
|
||||
|
||||
public Integer getPage() {
|
||||
return page;
|
||||
}
|
||||
|
||||
public void setPage(Integer page) {
|
||||
this.page = page;
|
||||
}
|
||||
|
||||
public Integer getLimit() {
|
||||
return limit;
|
||||
}
|
||||
|
||||
public void setLimit(Integer limit) {
|
||||
this.limit = limit;
|
||||
}
|
||||
}
|
@ -0,0 +1,65 @@
|
||||
package org.example.controller;
|
||||
|
||||
import com.github.pagehelper.PageInfo;
|
||||
import org.example.common.page.TableDataInfo;
|
||||
import org.example.utils.ServletUtils;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import javax.servlet.http.HttpSession;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* web层通用数据处理
|
||||
*
|
||||
* @author ruoyi
|
||||
*/
|
||||
public class BaseController
|
||||
{
|
||||
protected final Logger logger = LoggerFactory.getLogger(this.getClass());
|
||||
|
||||
/**
|
||||
* 获取request
|
||||
*/
|
||||
public HttpServletRequest getRequest()
|
||||
{
|
||||
return ServletUtils.getRequest();
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取response
|
||||
*/
|
||||
public HttpServletResponse getResponse()
|
||||
{
|
||||
return ServletUtils.getResponse();
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取session
|
||||
*/
|
||||
public HttpSession getSession()
|
||||
{
|
||||
return getRequest().getSession();
|
||||
}
|
||||
|
||||
/**
|
||||
* 响应请求分页数据
|
||||
*/
|
||||
protected TableDataInfo getDataTable(List<?> list)
|
||||
{
|
||||
/**
|
||||
* 同时满足bootstrap和layui的表格数据要求
|
||||
*/
|
||||
TableDataInfo rspData = new TableDataInfo();
|
||||
rspData.setCode(0);
|
||||
rspData.setRows(list);
|
||||
rspData.setData(list);//layui
|
||||
rspData.setCount(1);//layui
|
||||
rspData.setMsg("");//layui
|
||||
rspData.setTotal(new PageInfo(list).getTotal());
|
||||
return rspData;
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,124 @@
|
||||
package org.example.controller;
|
||||
|
||||
import com.github.pagehelper.PageInfo;
|
||||
import org.example.domain.CourseSelection;
|
||||
import org.example.domain.Result;
|
||||
import org.example.service.ISelectionService;
|
||||
import org.example.service.IUserService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.ResponseBody;
|
||||
|
||||
import javax.servlet.http.HttpSession;
|
||||
import java.util.Map;
|
||||
|
||||
import static org.example.domain.Result.toAjax;
|
||||
import static org.example.utils.LayuiTableDateFormat.LayuiTableDateFormat;
|
||||
|
||||
/**
|
||||
* 选课记录Controller
|
||||
*/
|
||||
@Controller
|
||||
@RequestMapping("/selection")
|
||||
public class CourseSelectionController extends BaseController
|
||||
{
|
||||
private String prefix = "selection";
|
||||
|
||||
@Autowired
|
||||
private ISelectionService selectionService;
|
||||
|
||||
@Autowired
|
||||
private IUserService userService;
|
||||
|
||||
|
||||
@GetMapping("/list")
|
||||
public String selection()
|
||||
{
|
||||
return prefix + "/list";
|
||||
}
|
||||
|
||||
@GetMapping("/myList")
|
||||
public String myList()
|
||||
{
|
||||
return prefix + "/myList";
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询选课记录列表
|
||||
*/
|
||||
|
||||
@RequestMapping("/getList")
|
||||
@ResponseBody
|
||||
public Map<String,Object> list(CourseSelection selection, HttpSession session) {
|
||||
PageInfo<CourseSelection> pageInfo = selectionService.selectCourseSelectionList(selection);
|
||||
return LayuiTableDateFormat(pageInfo.getList(),pageInfo.getTotal());
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增保存选课记录
|
||||
*/
|
||||
|
||||
@PostMapping("/add")
|
||||
@ResponseBody
|
||||
public Result addSave(CourseSelection selection, HttpSession session) {
|
||||
CourseSelection params = new CourseSelection();
|
||||
params.setStudentId(Long.valueOf(session.getAttribute("uid").toString()));
|
||||
PageInfo<CourseSelection> rolePageInfo = selectionService.selectCourseSelectionList(params);
|
||||
if(rolePageInfo.getTotal()>0){
|
||||
return Result.error("此课程你已选择!");
|
||||
}
|
||||
return toAjax(selectionService.insertCourseSelection(selection));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 选择/ 取消
|
||||
*/
|
||||
|
||||
@PostMapping("/handleSelect")
|
||||
@ResponseBody
|
||||
public Result handleSelect(String id,Boolean selected, HttpSession session) {
|
||||
CourseSelection selection = new CourseSelection();
|
||||
selection.setStudentId(Long.valueOf(session.getAttribute("uid").toString()));
|
||||
selection.setCourseId(Long.valueOf(id));
|
||||
PageInfo<CourseSelection> rolePageInfo = selectionService.selectCourseSelectionList(selection);
|
||||
if(selected){
|
||||
// 如果已选的 那就是删除
|
||||
rolePageInfo.getList().forEach(item ->{
|
||||
toAjax(selectionService.deleteCourseSelectionByIds(item.getId().toString()));
|
||||
});
|
||||
return toAjax(1);
|
||||
}else {
|
||||
// 未选 新增
|
||||
if(rolePageInfo.getTotal()>0){
|
||||
return Result.error("此课程你已选择!");
|
||||
}
|
||||
return toAjax(selectionService.insertCourseSelection(selection));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改保存课程信息
|
||||
*/
|
||||
|
||||
@PostMapping("/edit")
|
||||
@ResponseBody
|
||||
public Result editSave(CourseSelection selection)
|
||||
{
|
||||
return toAjax(selectionService.updateCourseSelection(selection));
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除选课记录
|
||||
*/
|
||||
|
||||
@PostMapping( "/remove")
|
||||
@ResponseBody
|
||||
public Result remove(String ids)
|
||||
{
|
||||
return toAjax(selectionService.deleteCourseSelectionByIds(ids));
|
||||
}
|
||||
}
|
@ -0,0 +1,37 @@
|
||||
package org.example.controller;
|
||||
|
||||
import com.github.pagehelper.PageInfo;
|
||||
import org.example.domain.User;
|
||||
import org.example.service.*;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.ui.ModelMap;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
|
||||
import javax.servlet.http.HttpSession;
|
||||
|
||||
|
||||
@Controller
|
||||
@RequestMapping("main")
|
||||
public class IndexController {
|
||||
|
||||
@Autowired
|
||||
private IUserService userService;
|
||||
|
||||
|
||||
@RequestMapping({"","index"})
|
||||
public String showIndex(ModelMap mmap, HttpSession session){
|
||||
Object user = session.getAttribute("user");
|
||||
mmap.put("user",(User) user);
|
||||
return "include/index";
|
||||
}
|
||||
|
||||
|
||||
@RequestMapping("/welcome")
|
||||
public String showWelcome(ModelMap mmap, HttpSession session){
|
||||
//用户数量
|
||||
PageInfo<User> pageInfo = userService.selectUserList(new User());
|
||||
mmap.put("userTotal",pageInfo.getTotal());
|
||||
return "include/welcome";
|
||||
}
|
||||
}
|
@ -0,0 +1,120 @@
|
||||
package org.example.domain;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
public class BaseEntity implements Serializable
|
||||
{
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/** 搜索值 */
|
||||
private String searchValue;
|
||||
|
||||
/** 创建者 */
|
||||
private String createBy;
|
||||
|
||||
/** 创建时间 */
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private Date createTime;
|
||||
|
||||
/** 更新者 */
|
||||
private String updateBy;
|
||||
|
||||
/** 更新时间 */
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private Date updateTime;
|
||||
|
||||
/** 备注 */
|
||||
private String remark;
|
||||
|
||||
private Long count;
|
||||
|
||||
/** 请求参数 */
|
||||
private Map<String, Object> params;
|
||||
|
||||
public String getSearchValue()
|
||||
{
|
||||
return searchValue;
|
||||
}
|
||||
|
||||
public void setSearchValue(String searchValue)
|
||||
{
|
||||
this.searchValue = searchValue;
|
||||
}
|
||||
|
||||
public String getCreateBy()
|
||||
{
|
||||
return createBy;
|
||||
}
|
||||
|
||||
public void setCreateBy(String createBy)
|
||||
{
|
||||
this.createBy = createBy;
|
||||
}
|
||||
|
||||
public Date getCreateTime()
|
||||
{
|
||||
return createTime;
|
||||
}
|
||||
|
||||
public void setCreateTime(Date createTime)
|
||||
{
|
||||
this.createTime = createTime;
|
||||
}
|
||||
|
||||
public String getUpdateBy()
|
||||
{
|
||||
return updateBy;
|
||||
}
|
||||
|
||||
public void setUpdateBy(String updateBy)
|
||||
{
|
||||
this.updateBy = updateBy;
|
||||
}
|
||||
|
||||
public Date getUpdateTime()
|
||||
{
|
||||
return updateTime;
|
||||
}
|
||||
|
||||
public Long getCount() {
|
||||
return count;
|
||||
}
|
||||
|
||||
public void setCount(Long count) {
|
||||
this.count = count;
|
||||
}
|
||||
|
||||
public void setUpdateTime(Date updateTime)
|
||||
{
|
||||
this.updateTime = updateTime;
|
||||
}
|
||||
|
||||
public String getRemark()
|
||||
{
|
||||
return remark;
|
||||
}
|
||||
|
||||
public void setRemark(String remark)
|
||||
{
|
||||
this.remark = remark;
|
||||
}
|
||||
|
||||
public Map<String, Object> getParams()
|
||||
{
|
||||
if (params == null)
|
||||
{
|
||||
params = new HashMap<>();
|
||||
}
|
||||
return params;
|
||||
}
|
||||
|
||||
public void setParams(Map<String, Object> params)
|
||||
{
|
||||
this.params = params;
|
||||
}
|
||||
}
|
@ -0,0 +1,89 @@
|
||||
package org.example.domain;
|
||||
|
||||
import org.apache.commons.lang3.builder.ToStringBuilder;
|
||||
import org.apache.commons.lang3.builder.ToStringStyle;
|
||||
|
||||
|
||||
/**
|
||||
* 课程信息对象
|
||||
*
|
||||
*/
|
||||
public class Course extends BaseEntity
|
||||
{
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/** id */
|
||||
private Long id;
|
||||
|
||||
/** 课程名称 */
|
||||
private String name;
|
||||
|
||||
/** 课程编号 */
|
||||
private String courseNo;
|
||||
|
||||
/** 任课老师ID */
|
||||
private Long teacherId;
|
||||
private User teacher;
|
||||
|
||||
private Boolean selected;
|
||||
|
||||
public Long getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(Long id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public String getCourseNo() {
|
||||
return courseNo;
|
||||
}
|
||||
|
||||
public void setCourseNo(String courseNo) {
|
||||
this.courseNo = courseNo;
|
||||
}
|
||||
|
||||
public Long getTeacherId() {
|
||||
return teacherId;
|
||||
}
|
||||
|
||||
public void setTeacherId(Long teacherId) {
|
||||
this.teacherId = teacherId;
|
||||
}
|
||||
|
||||
public User getTeacher() {
|
||||
return teacher;
|
||||
}
|
||||
|
||||
public void setTeacher(User teacher) {
|
||||
this.teacher = teacher;
|
||||
}
|
||||
|
||||
public Boolean getSelected() {
|
||||
return selected;
|
||||
}
|
||||
|
||||
public void setSelected(Boolean selected) {
|
||||
this.selected = selected;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "Course{" +
|
||||
"id=" + id +
|
||||
", name='" + name + '\'' +
|
||||
", courseNo='" + courseNo + '\'' +
|
||||
", teacherId=" + teacherId +
|
||||
", teacher=" + teacher +
|
||||
", selected=" + selected +
|
||||
'}';
|
||||
}
|
||||
}
|
@ -0,0 +1,98 @@
|
||||
package org.example.domain;
|
||||
|
||||
|
||||
/**
|
||||
* 课程信息选择对象
|
||||
*
|
||||
*/
|
||||
public class CourseSelection extends BaseEntity
|
||||
{
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/** id */
|
||||
private Long id;
|
||||
|
||||
/** 课程Id*/
|
||||
private Long courseId;
|
||||
private Course course;
|
||||
|
||||
private Long studentId;
|
||||
private User student;
|
||||
|
||||
/** 分数 */
|
||||
private String scores;
|
||||
|
||||
/**
|
||||
* 是否已选
|
||||
*/
|
||||
private Boolean selected;
|
||||
|
||||
public Long getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(Long id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public Long getCourseId() {
|
||||
return courseId;
|
||||
}
|
||||
|
||||
public void setCourseId(Long courseId) {
|
||||
this.courseId = courseId;
|
||||
}
|
||||
|
||||
public Course getCourse() {
|
||||
return course;
|
||||
}
|
||||
|
||||
public void setCourse(Course course) {
|
||||
this.course = course;
|
||||
}
|
||||
|
||||
public Long getStudentId() {
|
||||
return studentId;
|
||||
}
|
||||
|
||||
public void setStudentId(Long studentId) {
|
||||
this.studentId = studentId;
|
||||
}
|
||||
|
||||
public User getStudent() {
|
||||
return student;
|
||||
}
|
||||
|
||||
public void setStudent(User student) {
|
||||
this.student = student;
|
||||
}
|
||||
|
||||
public String getScores() {
|
||||
return scores;
|
||||
}
|
||||
|
||||
public void setScores(String scores) {
|
||||
this.scores = scores;
|
||||
}
|
||||
|
||||
public Boolean getSelected() {
|
||||
return selected;
|
||||
}
|
||||
|
||||
public void setSelected(Boolean selected) {
|
||||
this.selected = selected;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "CourseSelection{" +
|
||||
"id=" + id +
|
||||
", courseId='" + courseId + '\'' +
|
||||
", course=" + course +
|
||||
", studentId=" + studentId +
|
||||
", student=" + student +
|
||||
", scores='" + scores + '\'' +
|
||||
", selected=" + selected +
|
||||
'}';
|
||||
}
|
||||
}
|
@ -0,0 +1,49 @@
|
||||
package org.example.domain;
|
||||
|
||||
public class ResponseResult<T> {
|
||||
|
||||
private Integer state = 0;
|
||||
private String message;
|
||||
private T data;
|
||||
|
||||
public ResponseResult() {
|
||||
super();
|
||||
}
|
||||
|
||||
public ResponseResult(Integer state, String message) {
|
||||
super();
|
||||
this.state = state;
|
||||
this.message = message;
|
||||
}
|
||||
|
||||
public ResponseResult(Integer state, Exception e) {
|
||||
super();
|
||||
this.state = state;
|
||||
this.message = e.getMessage();
|
||||
}
|
||||
|
||||
public Integer getState() {
|
||||
return state;
|
||||
}
|
||||
|
||||
public void setState(Integer state) {
|
||||
this.state = state;
|
||||
}
|
||||
|
||||
public String getMessage() {
|
||||
return message;
|
||||
}
|
||||
|
||||
public void setMessage(String message) {
|
||||
this.message = message;
|
||||
}
|
||||
|
||||
public T getData() {
|
||||
return data;
|
||||
}
|
||||
|
||||
public void setData(T data) {
|
||||
this.data = data;
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,143 @@
|
||||
package org.example.domain;
|
||||
|
||||
import java.util.Date;
|
||||
/**
|
||||
* 用户信息对象 user
|
||||
*
|
||||
*/
|
||||
public class User extends BaseEntity
|
||||
{
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private Integer id;
|
||||
|
||||
/** 用户名 */
|
||||
private String username;
|
||||
|
||||
/** 密码 */
|
||||
private String password;
|
||||
|
||||
/** 角色id */
|
||||
private String roleId;
|
||||
|
||||
/** 真实姓名 */
|
||||
private String realName;
|
||||
|
||||
/** 电话 */
|
||||
private String phone;
|
||||
|
||||
/** 年龄 */
|
||||
private String age;
|
||||
|
||||
/** 性别 */
|
||||
private String sex;
|
||||
|
||||
/** 创建时间 */
|
||||
private Date createdate;
|
||||
|
||||
/** 密码 */
|
||||
private String oldPassword;
|
||||
|
||||
public void setId(Integer id)
|
||||
{
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public Integer getId()
|
||||
{
|
||||
return id;
|
||||
}
|
||||
public void setUsername(String username)
|
||||
{
|
||||
this.username = username;
|
||||
}
|
||||
|
||||
public String getUsername()
|
||||
{
|
||||
return username;
|
||||
}
|
||||
public void setPassword(String password)
|
||||
{
|
||||
this.password = password;
|
||||
}
|
||||
|
||||
public String getPassword()
|
||||
{
|
||||
return password;
|
||||
}
|
||||
public void setRoleId(String roleId)
|
||||
{
|
||||
this.roleId = roleId;
|
||||
}
|
||||
|
||||
public String getRoleId()
|
||||
{
|
||||
return roleId;
|
||||
}
|
||||
public void setPhone(String phone)
|
||||
{
|
||||
this.phone = phone;
|
||||
}
|
||||
|
||||
public String getPhone()
|
||||
{
|
||||
return phone;
|
||||
}
|
||||
public void setCreatedate(Date createdate)
|
||||
{
|
||||
this.createdate = createdate;
|
||||
}
|
||||
|
||||
public Date getCreatedate()
|
||||
{
|
||||
return createdate;
|
||||
}
|
||||
|
||||
public String getRealName() {
|
||||
return realName;
|
||||
}
|
||||
|
||||
public void setRealName(String realName) {
|
||||
this.realName = realName;
|
||||
}
|
||||
|
||||
public String getAge() {
|
||||
return age;
|
||||
}
|
||||
|
||||
public void setAge(String age) {
|
||||
this.age = age;
|
||||
}
|
||||
|
||||
public String getSex() {
|
||||
return sex;
|
||||
}
|
||||
|
||||
public void setSex(String sex) {
|
||||
this.sex = sex;
|
||||
}
|
||||
|
||||
public String getOldPassword() {
|
||||
return oldPassword;
|
||||
}
|
||||
|
||||
public void setOldPassword(String oldPassword) {
|
||||
this.oldPassword = oldPassword;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "User{" +
|
||||
"id=" + id +
|
||||
", username='" + username + '\'' +
|
||||
", password='" + password + '\'' +
|
||||
", roleId='" + roleId + '\'' +
|
||||
", realName='" + realName + '\'' +
|
||||
", phone='" + phone + '\'' +
|
||||
", age='" + age + '\'' +
|
||||
", sex='" + sex + '\'' +
|
||||
", createdate=" + createdate +
|
||||
", oldPassword='" + oldPassword + '\'' +
|
||||
'}';
|
||||
}
|
||||
}
|
@ -0,0 +1,54 @@
|
||||
package org.example.interceptor;
|
||||
|
||||
import javax.servlet.ServletRequest;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import javax.servlet.http.HttpSession;
|
||||
|
||||
import org.springframework.web.servlet.HandlerInterceptor;
|
||||
import org.springframework.web.servlet.ModelAndView;
|
||||
|
||||
public class LoginInterceptor
|
||||
implements HandlerInterceptor {
|
||||
|
||||
public boolean preHandle(
|
||||
HttpServletRequest request,
|
||||
HttpServletResponse response,
|
||||
Object handler)
|
||||
throws Exception {
|
||||
System.out.println("LoginInterceptor.preHandle()");
|
||||
//登录拦截器的目标:
|
||||
//如果登录了,正常访问
|
||||
//如果没登录,拦截,重定向到登录页
|
||||
HttpSession session
|
||||
= request.getSession();
|
||||
System.out.println("session.getAttribute(\"username\")=" + session.getAttribute("username"));
|
||||
if (session.getAttribute("username") == null) {
|
||||
//Session中没有登录的用户信息
|
||||
//即:用户没有登录
|
||||
//则:重定向到登录页
|
||||
|
||||
String loginURI = request.getContextPath() + "/login.html";
|
||||
response.sendRedirect(loginURI);
|
||||
//拦截
|
||||
return false;
|
||||
|
||||
} else {
|
||||
//放行
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
|
||||
ModelAndView modelAndView) throws Exception {
|
||||
System.out.println("LoginInterceptor.postHandle()");
|
||||
}
|
||||
|
||||
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
|
||||
throws Exception {
|
||||
System.out.println("LoginInterceptor.afterCompletion()");
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,59 @@
|
||||
package org.example.mapper;
|
||||
|
||||
import org.example.domain.Course;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 课程信息Mapper接口
|
||||
*/
|
||||
public interface CourseMapper
|
||||
{
|
||||
/**
|
||||
* 查询课程信息
|
||||
*
|
||||
* @param id 课程信息ID
|
||||
* @return 课程信息
|
||||
*/
|
||||
public Course selectCourseById(Long id);
|
||||
|
||||
/**
|
||||
* 查询课程信息列表
|
||||
*
|
||||
* @param course 课程信息
|
||||
* @return 课程信息集合
|
||||
*/
|
||||
public List<Course> selectCourseList(Course course);
|
||||
|
||||
/**
|
||||
* 新增课程信息
|
||||
*
|
||||
* @param course 课程信息
|
||||
* @return 结果
|
||||
*/
|
||||
public int insertCourse(Course course);
|
||||
|
||||
/**
|
||||
* 修改课程信息
|
||||
*
|
||||
* @param course 课程信息
|
||||
* @return 结果
|
||||
*/
|
||||
public int updateCourse(Course course);
|
||||
|
||||
/**
|
||||
* 删除课程信息
|
||||
*
|
||||
* @param id 课程信息ID
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteCourseById(Long id);
|
||||
|
||||
/**
|
||||
* 批量删除课程信息
|
||||
*
|
||||
* @param ids 需要删除的数据ID
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteCourseByIds(String[] ids);
|
||||
}
|
@ -0,0 +1,53 @@
|
||||
package org.example.mapper;
|
||||
|
||||
import org.example.domain.CourseSelection;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 选课记录Mapper接口
|
||||
*/
|
||||
public interface SelectionMapper
|
||||
{
|
||||
/**
|
||||
* 查询选课记录
|
||||
*
|
||||
* @param id 选课记录ID
|
||||
* @return 选课记录
|
||||
*/
|
||||
public CourseSelection selectCourseSelectionById(Long id);
|
||||
|
||||
/**
|
||||
* 查询选课记录列表
|
||||
*
|
||||
* @param selection 选课记录
|
||||
* @return 选课记录集合
|
||||
*/
|
||||
public List<CourseSelection> selectCourseSelectionList(CourseSelection selection);
|
||||
|
||||
/**
|
||||
* 新增选课记录
|
||||
*
|
||||
* @param selection 选课记录
|
||||
* @return 结果
|
||||
*/
|
||||
public int insertCourseSelection(CourseSelection selection);
|
||||
|
||||
/**
|
||||
* 删除选课记录
|
||||
*
|
||||
* @param id 选课记录ID
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteCourseSelectionById(Long id);
|
||||
|
||||
/**
|
||||
* 批量删除选课记录
|
||||
*
|
||||
* @param ids 需要删除的数据ID
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteCourseSelectionByIds(String[] ids);
|
||||
|
||||
int updateCourseSelection(CourseSelection selection);
|
||||
}
|
@ -0,0 +1,67 @@
|
||||
package org.example.mapper;
|
||||
|
||||
import java.util.List;
|
||||
import org.example.domain.User;
|
||||
|
||||
/**
|
||||
* 用户信息Mapper接口
|
||||
*
|
||||
*/
|
||||
public interface UserMapper
|
||||
{
|
||||
/**
|
||||
* 查询用户信息
|
||||
*
|
||||
* @param id 用户信息ID
|
||||
* @return 用户信息
|
||||
*/
|
||||
public User selectUserById(Integer id);
|
||||
|
||||
/**
|
||||
* 查询用户信息
|
||||
*
|
||||
* @param username 用户信息username
|
||||
* @return 用户信息
|
||||
*/
|
||||
public User selectUserByUsername(String username);
|
||||
|
||||
/**
|
||||
* 查询用户信息列表
|
||||
*
|
||||
* @param user 用户信息
|
||||
* @return 用户信息集合
|
||||
*/
|
||||
public List<User> selectUserList(User user);
|
||||
|
||||
/**
|
||||
* 新增用户信息
|
||||
*
|
||||
* @param user 用户信息
|
||||
* @return 结果
|
||||
*/
|
||||
public int insertUser(User user);
|
||||
|
||||
/**
|
||||
* 修改用户信息
|
||||
*
|
||||
* @param user 用户信息
|
||||
* @return 结果
|
||||
*/
|
||||
public int updateUser(User user);
|
||||
|
||||
/**
|
||||
* 删除用户信息
|
||||
*
|
||||
* @param id 用户信息ID
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteUserById(Integer id);
|
||||
|
||||
/**
|
||||
* 批量删除用户信息
|
||||
*
|
||||
* @param ids 需要删除的数据ID
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteUserByIds(String[] ids);
|
||||
}
|
@ -0,0 +1,61 @@
|
||||
package org.example.service;
|
||||
|
||||
import com.github.pagehelper.PageInfo;
|
||||
import org.example.domain.Course;
|
||||
|
||||
/**
|
||||
* 课程信息Service接口
|
||||
*
|
||||
* @author sumucheng
|
||||
* @date 2021-07-07
|
||||
*/
|
||||
public interface ICourseService
|
||||
{
|
||||
/**
|
||||
* 查询课程信息
|
||||
*
|
||||
* @param id 课程信息ID
|
||||
* @return 课程信息
|
||||
*/
|
||||
public Course selectCourseById(Long id);
|
||||
|
||||
/**
|
||||
* 查询课程信息列表
|
||||
*
|
||||
* @param course 课程信息
|
||||
* @return 课程信息集合
|
||||
*/
|
||||
public PageInfo<Course> selectCourseList(Course course);
|
||||
|
||||
/**
|
||||
* 新增课程信息
|
||||
*
|
||||
* @param course 课程信息
|
||||
* @return 结果
|
||||
*/
|
||||
public int insertCourse(Course course);
|
||||
|
||||
/**
|
||||
* 修改课程信息
|
||||
*
|
||||
* @param course 课程信息
|
||||
* @return 结果
|
||||
*/
|
||||
public int updateCourse(Course course);
|
||||
|
||||
/**
|
||||
* 批量删除课程信息
|
||||
*
|
||||
* @param ids 需要删除的数据ID
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteCourseByIds(String ids);
|
||||
|
||||
/**
|
||||
* 删除课程信息信息
|
||||
*
|
||||
* @param id 课程信息ID
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteCourseById(Long id);
|
||||
}
|
@ -0,0 +1,53 @@
|
||||
package org.example.service;
|
||||
|
||||
import com.github.pagehelper.PageInfo;
|
||||
import org.example.domain.CourseSelection;
|
||||
|
||||
/**
|
||||
* 选课记录Service接口
|
||||
*
|
||||
*/
|
||||
public interface ISelectionService
|
||||
{
|
||||
/**
|
||||
* 查询选课记录
|
||||
*
|
||||
* @param id 选课记录ID
|
||||
* @return 选课记录
|
||||
*/
|
||||
public CourseSelection selectCourseSelectionById(Long id);
|
||||
|
||||
/**
|
||||
* 查询选课记录列表
|
||||
*
|
||||
* @param selection 选课记录
|
||||
* @return 选课记录集合
|
||||
*/
|
||||
public PageInfo<CourseSelection> selectCourseSelectionList(CourseSelection selection);
|
||||
|
||||
/**
|
||||
* 新增选课记录
|
||||
*
|
||||
* @param selection 选课记录
|
||||
* @return 结果
|
||||
*/
|
||||
public int insertCourseSelection(CourseSelection selection);
|
||||
|
||||
/**
|
||||
* 批量删除选课记录
|
||||
*
|
||||
* @param ids 需要删除的数据ID
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteCourseSelectionByIds(String ids);
|
||||
|
||||
/**
|
||||
* 删除选课记录信息
|
||||
*
|
||||
* @param id 选课记录ID
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteCourseSelectionById(Long id);
|
||||
|
||||
int updateCourseSelection(CourseSelection selection);
|
||||
}
|
@ -0,0 +1,84 @@
|
||||
package org.example.service;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.github.pagehelper.PageInfo;
|
||||
import org.example.domain.Result;
|
||||
import org.example.domain.User;
|
||||
import org.example.service.xe.PasswordNotMatchException;
|
||||
import org.example.service.xe.UserNotFoundException;
|
||||
|
||||
/**
|
||||
* 用户信息Service接口
|
||||
*
|
||||
*/
|
||||
public interface IUserService
|
||||
{
|
||||
/**
|
||||
* 查询用户信息
|
||||
*
|
||||
* @param id 用户信息ID
|
||||
* @return 用户信息
|
||||
*/
|
||||
public User selectUserById(int id);
|
||||
|
||||
/**
|
||||
* 查询用户信息列表
|
||||
*
|
||||
* @param user 用户信息
|
||||
* @return 用户信息集合
|
||||
*/
|
||||
public PageInfo<User> selectUserList(User user);
|
||||
|
||||
/**
|
||||
* 新增用户信息
|
||||
*
|
||||
* @param user 用户信息
|
||||
* @return 结果
|
||||
*/
|
||||
public int insertUser(User user);
|
||||
|
||||
/**
|
||||
* 修改用户信息
|
||||
*
|
||||
* @param user 用户信息
|
||||
* @return 结果
|
||||
*/
|
||||
public int updateUser(User user);
|
||||
|
||||
/**
|
||||
* 批量删除用户信息
|
||||
*
|
||||
* @param ids 需要删除的数据ID
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteUserByIds(String ids);
|
||||
|
||||
/**
|
||||
* 删除用户信息信息
|
||||
*
|
||||
* @param id 用户信息ID
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteUserById(int id);
|
||||
|
||||
/**
|
||||
* 登录
|
||||
* @param username
|
||||
* @param password
|
||||
* @return
|
||||
*/
|
||||
User login(String username, String password);
|
||||
|
||||
/**
|
||||
* 注册
|
||||
* @param user
|
||||
* @return
|
||||
*/
|
||||
User reg(User user);
|
||||
|
||||
/**
|
||||
* 重置密码
|
||||
*/
|
||||
public int handleReset(User user);
|
||||
}
|
@ -0,0 +1,112 @@
|
||||
package org.example.service.impl;
|
||||
|
||||
import com.github.pagehelper.Page;
|
||||
import com.github.pagehelper.PageHelper;
|
||||
import com.github.pagehelper.PageInfo;
|
||||
import org.example.domain.Course;
|
||||
import org.example.mapper.CourseMapper;
|
||||
import org.example.service.ICourseService;
|
||||
import org.example.utils.Convert;
|
||||
import org.example.utils.ServletUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
|
||||
/**
|
||||
* 课程信息Service业务层处理
|
||||
*/
|
||||
@Service
|
||||
public class CourseServiceImpl implements ICourseService
|
||||
{
|
||||
@Autowired
|
||||
private CourseMapper courseMapper;
|
||||
|
||||
/**
|
||||
* 查询课程信息
|
||||
*
|
||||
* @param id 课程信息ID
|
||||
* @return 课程信息
|
||||
*/
|
||||
@Override
|
||||
public Course selectCourseById(Long id)
|
||||
{
|
||||
return courseMapper.selectCourseById(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询课程信息列表
|
||||
*
|
||||
* @param course 课程信息
|
||||
* @return 课程信息
|
||||
*/
|
||||
@Override
|
||||
public PageInfo<Course> selectCourseList(Course course) {
|
||||
Integer pageNum = ServletUtils.getParameterToInt("page");//从request获取page
|
||||
Integer pageSize = ServletUtils.getParameterToInt("limit");//从request获取limit
|
||||
List<Course> courses = new ArrayList<>();
|
||||
if (pageNum != null) {
|
||||
//分页查询
|
||||
if (pageNum <= 0) { pageNum = 1; }
|
||||
if (pageSize <= 0) { pageSize = 10; }
|
||||
Page page = PageHelper.startPage(pageNum, pageSize);
|
||||
courses = courseMapper.selectCourseList(course);
|
||||
} else {
|
||||
//普通查询
|
||||
courses = courseMapper.selectCourseList(course);
|
||||
}
|
||||
//封装
|
||||
PageInfo info = new PageInfo<>(courses);
|
||||
return info;
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增课程信息
|
||||
*
|
||||
* @param Course 课程信息
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public int insertCourse(Course course)
|
||||
{
|
||||
return courseMapper.insertCourse(course);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改课程信息
|
||||
*
|
||||
* @param course 课程信息
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public int updateCourse(Course course)
|
||||
{
|
||||
return courseMapper.updateCourse(course);
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除课程信息对象
|
||||
*
|
||||
* @param ids 需要删除的数据ID
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public int deleteCourseByIds(String ids)
|
||||
{
|
||||
return courseMapper.deleteCourseByIds(Convert.toStrArray(ids));
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除课程信息信息
|
||||
*
|
||||
* @param id 课程信息ID
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public int deleteCourseById(Long id)
|
||||
{
|
||||
return courseMapper.deleteCourseById(id);
|
||||
}
|
||||
}
|
@ -0,0 +1,105 @@
|
||||
package org.example.service.impl;
|
||||
|
||||
import com.github.pagehelper.Page;
|
||||
import com.github.pagehelper.PageHelper;
|
||||
import com.github.pagehelper.PageInfo;
|
||||
import org.example.domain.CourseSelection;
|
||||
import org.example.mapper.SelectionMapper;
|
||||
import org.example.service.ISelectionService;
|
||||
import org.example.utils.Convert;
|
||||
import org.example.utils.ServletUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
|
||||
/**
|
||||
* 课程信息Service业务层处理
|
||||
*/
|
||||
@Service
|
||||
public class SelectionServiceImpl implements ISelectionService
|
||||
{
|
||||
@Autowired
|
||||
private SelectionMapper selectionMapper;
|
||||
|
||||
/**
|
||||
* 查询课程信息
|
||||
*
|
||||
* @param id 课程信息ID
|
||||
* @return 课程信息
|
||||
*/
|
||||
@Override
|
||||
public CourseSelection selectCourseSelectionById(Long id)
|
||||
{
|
||||
return selectionMapper.selectCourseSelectionById(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询课程信息列表
|
||||
*
|
||||
* @param CourseSelection 课程信息
|
||||
* @return 课程信息
|
||||
*/
|
||||
@Override
|
||||
public PageInfo<CourseSelection> selectCourseSelectionList(CourseSelection CourseSelection) {
|
||||
Integer pageNum = ServletUtils.getParameterToInt("page");//从request获取page
|
||||
Integer pageSize = ServletUtils.getParameterToInt("limit");//从request获取limit
|
||||
List<CourseSelection> CourseSelections = new ArrayList<>();
|
||||
if (pageNum != null) {
|
||||
//分页查询
|
||||
if (pageNum <= 0) { pageNum = 1; }
|
||||
if (pageSize <= 0) { pageSize = 10; }
|
||||
Page page = PageHelper.startPage(pageNum, pageSize);
|
||||
CourseSelections = selectionMapper.selectCourseSelectionList(CourseSelection);
|
||||
} else {
|
||||
//普通查询
|
||||
CourseSelections = selectionMapper.selectCourseSelectionList(CourseSelection);
|
||||
}
|
||||
//封装
|
||||
PageInfo info = new PageInfo<>(CourseSelections);
|
||||
return info;
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增课程信息
|
||||
*
|
||||
* @param CourseSelection 课程信息
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public int insertCourseSelection(CourseSelection CourseSelection)
|
||||
{
|
||||
return selectionMapper.insertCourseSelection(CourseSelection);
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除课程信息对象
|
||||
*
|
||||
* @param ids 需要删除的数据ID
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public int deleteCourseSelectionByIds(String ids)
|
||||
{
|
||||
return selectionMapper.deleteCourseSelectionByIds(Convert.toStrArray(ids));
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除课程信息信息
|
||||
*
|
||||
* @param id 课程信息ID
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public int deleteCourseSelectionById(Long id)
|
||||
{
|
||||
return selectionMapper.deleteCourseSelectionById(id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int updateCourseSelection(CourseSelection selection) {
|
||||
return selectionMapper.updateCourseSelection(selection);
|
||||
}
|
||||
}
|
@ -0,0 +1,28 @@
|
||||
package org.example.service.xe;
|
||||
|
||||
public class InsertDataException
|
||||
extends ServiceException {
|
||||
|
||||
private static final long serialVersionUID = -7724774432291553025L;
|
||||
|
||||
public InsertDataException() {
|
||||
super();
|
||||
}
|
||||
|
||||
public InsertDataException(String arg0, Throwable arg1, boolean arg2, boolean arg3) {
|
||||
super(arg0, arg1, arg2, arg3);
|
||||
}
|
||||
|
||||
public InsertDataException(String arg0, Throwable arg1) {
|
||||
super(arg0, arg1);
|
||||
}
|
||||
|
||||
public InsertDataException(String arg0) {
|
||||
super(arg0);
|
||||
}
|
||||
|
||||
public InsertDataException(Throwable arg0) {
|
||||
super(arg0);
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,29 @@
|
||||
package org.example.service.xe;
|
||||
|
||||
public class PasswordNotMatchException
|
||||
extends ServiceException {
|
||||
|
||||
private static final long serialVersionUID = 1903639604855086304L;
|
||||
|
||||
public PasswordNotMatchException() {
|
||||
super();
|
||||
}
|
||||
|
||||
public PasswordNotMatchException(String message, Throwable cause, boolean enableSuppression,
|
||||
boolean writableStackTrace) {
|
||||
super(message, cause, enableSuppression, writableStackTrace);
|
||||
}
|
||||
|
||||
public PasswordNotMatchException(String message, Throwable cause) {
|
||||
super(message, cause);
|
||||
}
|
||||
|
||||
public PasswordNotMatchException(String message) {
|
||||
super(message);
|
||||
}
|
||||
|
||||
public PasswordNotMatchException(Throwable cause) {
|
||||
super(cause);
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,29 @@
|
||||
package org.example.service.xe;
|
||||
|
||||
public class ServiceException extends
|
||||
RuntimeException {
|
||||
|
||||
private static final long serialVersionUID
|
||||
= 980104530291206274L;
|
||||
|
||||
public ServiceException() {
|
||||
super();
|
||||
}
|
||||
|
||||
public ServiceException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
|
||||
super(message, cause, enableSuppression, writableStackTrace);
|
||||
}
|
||||
|
||||
public ServiceException(String message, Throwable cause) {
|
||||
super(message, cause);
|
||||
}
|
||||
|
||||
public ServiceException(String message) {
|
||||
super(message);
|
||||
}
|
||||
|
||||
public ServiceException(Throwable cause) {
|
||||
super(cause);
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,28 @@
|
||||
package org.example.service.xe;
|
||||
|
||||
public class UpdateDataException
|
||||
extends ServiceException {
|
||||
|
||||
private static final long serialVersionUID = -6297755064668856332L;
|
||||
|
||||
public UpdateDataException() {
|
||||
super();
|
||||
}
|
||||
|
||||
public UpdateDataException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
|
||||
super(message, cause, enableSuppression, writableStackTrace);
|
||||
}
|
||||
|
||||
public UpdateDataException(String message, Throwable cause) {
|
||||
super(message, cause);
|
||||
}
|
||||
|
||||
public UpdateDataException(String message) {
|
||||
super(message);
|
||||
}
|
||||
|
||||
public UpdateDataException(Throwable cause) {
|
||||
super(cause);
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,29 @@
|
||||
package org.example.service.xe;
|
||||
|
||||
public class UploadAvatarException
|
||||
extends ServiceException {
|
||||
|
||||
private static final long serialVersionUID = 3317600089395187358L;
|
||||
|
||||
public UploadAvatarException() {
|
||||
super();
|
||||
}
|
||||
|
||||
public UploadAvatarException(String message, Throwable cause, boolean enableSuppression,
|
||||
boolean writableStackTrace) {
|
||||
super(message, cause, enableSuppression, writableStackTrace);
|
||||
}
|
||||
|
||||
public UploadAvatarException(String message, Throwable cause) {
|
||||
super(message, cause);
|
||||
}
|
||||
|
||||
public UploadAvatarException(String message) {
|
||||
super(message);
|
||||
}
|
||||
|
||||
public UploadAvatarException(Throwable cause) {
|
||||
super(cause);
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,28 @@
|
||||
package org.example.service.xe;
|
||||
|
||||
public class UserNotFoundException
|
||||
extends ServiceException {
|
||||
|
||||
private static final long serialVersionUID = 5156778717593377564L;
|
||||
|
||||
public UserNotFoundException() {
|
||||
super();
|
||||
}
|
||||
|
||||
public UserNotFoundException(String arg0, Throwable arg1, boolean arg2, boolean arg3) {
|
||||
super(arg0, arg1, arg2, arg3);
|
||||
}
|
||||
|
||||
public UserNotFoundException(String arg0, Throwable arg1) {
|
||||
super(arg0, arg1);
|
||||
}
|
||||
|
||||
public UserNotFoundException(String arg0) {
|
||||
super(arg0);
|
||||
}
|
||||
|
||||
public UserNotFoundException(Throwable arg0) {
|
||||
super(arg0);
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,28 @@
|
||||
package org.example.service.xe;
|
||||
|
||||
public class UsernameConflictException
|
||||
extends ServiceException {
|
||||
|
||||
private static final long serialVersionUID = -4106401894279090959L;
|
||||
|
||||
public UsernameConflictException() {
|
||||
super();
|
||||
}
|
||||
|
||||
public UsernameConflictException(String arg0, Throwable arg1, boolean arg2, boolean arg3) {
|
||||
super(arg0, arg1, arg2, arg3);
|
||||
}
|
||||
|
||||
public UsernameConflictException(String arg0, Throwable arg1) {
|
||||
super(arg0, arg1);
|
||||
}
|
||||
|
||||
public UsernameConflictException(String arg0) {
|
||||
super(arg0);
|
||||
}
|
||||
|
||||
public UsernameConflictException(Throwable arg0) {
|
||||
super(arg0);
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,24 @@
|
||||
package org.example.utils;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* layui 表格数据格式化
|
||||
* @Version 1.0
|
||||
*/
|
||||
public class LayuiTableDateFormat {
|
||||
|
||||
public static Map<String,Object> LayuiTableDateFormat(List<?> list,Long count){
|
||||
Map<String, Object> map = new HashMap<String, Object>();
|
||||
map.put("code", 0);
|
||||
map.put("msg", "' '");
|
||||
map.put("data", list);
|
||||
map.put("count",count);
|
||||
return map;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -0,0 +1,165 @@
|
||||
package org.example.utils;
|
||||
|
||||
|
||||
import org.springframework.web.context.request.RequestAttributes;
|
||||
import org.springframework.web.context.request.RequestContextHolder;
|
||||
import org.springframework.web.context.request.ServletRequestAttributes;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import javax.servlet.http.HttpSession;
|
||||
import java.io.IOException;
|
||||
|
||||
/**
|
||||
* 客户端工具类
|
||||
*
|
||||
* @author ruoyi
|
||||
*/
|
||||
public class ServletUtils
|
||||
{
|
||||
/**
|
||||
* 定义移动端请求的所有可能类型
|
||||
*/
|
||||
private final static String[] agent = { "Android", "iPhone", "iPod", "iPad", "Windows Phone", "MQQBrowser" };
|
||||
|
||||
/**
|
||||
* 获取String参数
|
||||
*/
|
||||
public static String getParameter(String name)
|
||||
{
|
||||
return getRequest().getParameter(name);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取String参数
|
||||
*/
|
||||
public static String getParameter(String name, String defaultValue)
|
||||
{
|
||||
return Convert.toStr(getRequest().getParameter(name), defaultValue);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取Integer参数
|
||||
*/
|
||||
public static Integer getParameterToInt(String name)
|
||||
{
|
||||
return Convert.toInt(getRequest().getParameter(name));
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取Integer参数
|
||||
*/
|
||||
public static Integer getParameterToInt(String name, Integer defaultValue)
|
||||
{
|
||||
return Convert.toInt(getRequest().getParameter(name), defaultValue);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取request
|
||||
*/
|
||||
public static HttpServletRequest getRequest()
|
||||
{
|
||||
return getRequestAttributes().getRequest();
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取response
|
||||
*/
|
||||
public static HttpServletResponse getResponse()
|
||||
{
|
||||
return getRequestAttributes().getResponse();
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取session
|
||||
*/
|
||||
public static HttpSession getSession()
|
||||
{
|
||||
return getRequest().getSession();
|
||||
}
|
||||
|
||||
public static ServletRequestAttributes getRequestAttributes()
|
||||
{
|
||||
RequestAttributes attributes = RequestContextHolder.getRequestAttributes();
|
||||
return (ServletRequestAttributes) attributes;
|
||||
}
|
||||
|
||||
/**
|
||||
* 将字符串渲染到客户端
|
||||
*
|
||||
* @param response 渲染对象
|
||||
* @param string 待渲染的字符串
|
||||
* @return null
|
||||
*/
|
||||
public static String renderString(HttpServletResponse response, String string)
|
||||
{
|
||||
try
|
||||
{
|
||||
response.setContentType("application/json");
|
||||
response.setCharacterEncoding("utf-8");
|
||||
response.getWriter().print(string);
|
||||
}
|
||||
catch (IOException e)
|
||||
{
|
||||
e.printStackTrace();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否是Ajax异步请求
|
||||
*
|
||||
* @param request
|
||||
*/
|
||||
public static boolean isAjaxRequest(HttpServletRequest request)
|
||||
{
|
||||
String accept = request.getHeader("accept");
|
||||
if (accept != null && accept.indexOf("application/json") != -1)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
String xRequestedWith = request.getHeader("X-Requested-With");
|
||||
if (xRequestedWith != null && xRequestedWith.indexOf("XMLHttpRequest") != -1)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
String uri = request.getRequestURI();
|
||||
if (StringUtils.inStringIgnoreCase(uri, ".json", ".xml"))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
String ajax = request.getParameter("__ajax");
|
||||
if (StringUtils.inStringIgnoreCase(ajax, "json", "xml"))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* 判断User-Agent 是不是来自于手机
|
||||
*/
|
||||
public static boolean checkAgentIsMobile(String ua)
|
||||
{
|
||||
boolean flag = false;
|
||||
if (!ua.contains("Windows NT") || (ua.contains("Windows NT") && ua.contains("compatible; MSIE 9.0;")))
|
||||
{
|
||||
// 排除 苹果桌面系统
|
||||
if (!ua.contains("Windows NT") && !ua.contains("Macintosh"))
|
||||
{
|
||||
for (String item : agent)
|
||||
{
|
||||
if (ua.contains(item))
|
||||
{
|
||||
flag = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
}
|
@ -0,0 +1,8 @@
|
||||
### mysql database
|
||||
jdbc.driver=com.mysql.cj.jdbc.Driver
|
||||
jdbc.url=jdbc:mysql://localhost:3306/educational?useSSL=false&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&serverTimezone=GMT%2B8
|
||||
jdbc.username=root
|
||||
jdbc.password=123456
|
||||
### druid datasource
|
||||
jdbc.initialSize=2
|
||||
jdbc.maxActive=20
|
@ -0,0 +1,17 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Configuration status="OFF">
|
||||
<Appenders>
|
||||
<Console name="Console" target="SYSTEM_OUT">
|
||||
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
|
||||
</Console>
|
||||
</Appenders>
|
||||
<Loggers>
|
||||
<!-- mybatis show sql -->
|
||||
<Logger name="org.example.mapper" level="debug" additivity="false">
|
||||
<AppenderRef ref="Console"/>
|
||||
</Logger>
|
||||
<Root level="error">
|
||||
<AppenderRef ref="Console"/>
|
||||
</Root>
|
||||
</Loggers>
|
||||
</Configuration>
|
@ -0,0 +1,72 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<!DOCTYPE mapper
|
||||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="org.example.mapper.CourseMapper">
|
||||
|
||||
<resultMap type="Course" id="CourseResult">
|
||||
<result property="id" column="id" />
|
||||
<result property="name" column="name" />
|
||||
<result property="courseNo" column="course_no" />
|
||||
<result property="teacherId" column="teacher_id" />
|
||||
<result property="remark" column="remark" />
|
||||
<association property="teacher" column="teacher_id" select="org.example.mapper.UserMapper.selectUserById"/>
|
||||
</resultMap>
|
||||
|
||||
<sql id="selectCourseVo">
|
||||
select id, name, course_no, teacher_id, remark from course
|
||||
</sql>
|
||||
|
||||
<select id="selectCourseList" parameterType="Course" resultMap="CourseResult">
|
||||
<include refid="selectCourseVo"/>
|
||||
<where>
|
||||
<if test="name != null and name != ''"> and name like concat('%', #{name}, '%')</if>
|
||||
<if test="teacherId != null and teacherId != ''"> and teacher_id = #{teacherId}</if>
|
||||
</where>
|
||||
order by id desc
|
||||
</select>
|
||||
|
||||
<select id="selectCourseById" parameterType="Long" resultMap="CourseResult">
|
||||
<include refid="selectCourseVo"/>
|
||||
where id = #{id}
|
||||
</select>
|
||||
|
||||
<insert id="insertCourse" parameterType="Course" useGeneratedKeys="true" keyProperty="id">
|
||||
insert into course
|
||||
<trim prefix="(" suffix=")" suffixOverrides=",">
|
||||
<if test="name != null and name != ''">name,</if>
|
||||
<if test="courseNo != null and courseNo != ''">course_no,</if>
|
||||
<if test="teacherId != null and teacherId != ''">teacher_id,</if>
|
||||
<if test="remark != null">remark,</if>
|
||||
</trim>
|
||||
<trim prefix="values (" suffix=")" suffixOverrides=",">
|
||||
<if test="name != null and name != ''">#{name},</if>
|
||||
<if test="courseNo != null and courseNo != ''">#{courseNo},</if>
|
||||
<if test="teacherId != null and teacherId != ''">#{teacherId},</if>
|
||||
<if test="remark != null">#{remark},</if>
|
||||
</trim>
|
||||
</insert>
|
||||
|
||||
<update id="updateCourse" parameterType="Course">
|
||||
update course
|
||||
<trim prefix="SET" suffixOverrides=",">
|
||||
<if test="name != null and name != ''">name = #{name},</if>
|
||||
<if test="courseNo != null and courseNo != ''">course_no = #{courseNo},</if>
|
||||
<if test="teacherId != null and teacherId != ''">teacher_id = #{teacherId},</if>
|
||||
<if test="remark != null">remark = #{remark},</if>
|
||||
</trim>
|
||||
where id = #{id}
|
||||
</update>
|
||||
|
||||
<delete id="deleteCourseById" parameterType="Long">
|
||||
delete from Course where id = #{id}
|
||||
</delete>
|
||||
|
||||
<delete id="deleteCourseByIds" parameterType="String">
|
||||
delete from Course where id in
|
||||
<foreach item="id" collection="array" open="(" separator="," close=")">
|
||||
#{id}
|
||||
</foreach>
|
||||
</delete>
|
||||
|
||||
</mapper>
|
@ -0,0 +1,66 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<!DOCTYPE mapper
|
||||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="org.example.mapper.SelectionMapper">
|
||||
|
||||
<resultMap type="CourseSelection" id="SelectionResult">
|
||||
<result property="id" column="id" />
|
||||
<result property="courseId" column="course_id" />
|
||||
<result property="studentId" column="student_id" />
|
||||
<result property="scores" column="scores" />
|
||||
<result property="createTime" column="create_time" />
|
||||
<association property="course" column="course_id" select="org.example.mapper.CourseMapper.selectCourseById"/>
|
||||
<association property="student" column="student_id" select="org.example.mapper.UserMapper.selectUserById"/>
|
||||
</resultMap>
|
||||
|
||||
<sql id="selectSelectionVo">
|
||||
select id, course_id, student_id, scores, create_time from course_selection
|
||||
</sql>
|
||||
<update id="updateCourseSelection" parameterType="CourseSelection">
|
||||
update course_selection set scores = #{scores} where id = #{id}
|
||||
</update>
|
||||
|
||||
<select id="selectCourseSelectionList" parameterType="CourseSelection" resultMap="SelectionResult">
|
||||
<include refid="selectSelectionVo"/>
|
||||
<where>
|
||||
<if test="courseId != null "> and course_id = #{courseId}</if>
|
||||
<if test="studentId != null and studentId != ''"> and student_id = #{studentId}</if>
|
||||
</where>
|
||||
order by course_id desc, id
|
||||
</select>
|
||||
|
||||
<select id="selectCourseSelectionById" parameterType="Long" resultMap="SelectionResult">
|
||||
<include refid="selectSelectionVo"/>
|
||||
where id = #{id}
|
||||
</select>
|
||||
|
||||
<insert id="insertCourseSelection" parameterType="CourseSelection" useGeneratedKeys="true" keyProperty="id">
|
||||
insert into course_selection
|
||||
<trim prefix="(" suffix=")" suffixOverrides=",">
|
||||
<if test="courseId != null and courseId != ''">course_id,</if>
|
||||
<if test="studentId != null and studentId != ''">student_id,</if>
|
||||
<if test="scores != null and scores != ''">scores,</if>
|
||||
<if test="remark != null">remark,</if>
|
||||
</trim>
|
||||
<trim prefix="values (" suffix=")" suffixOverrides=",">
|
||||
<if test="courseId != null and courseId != ''">#{courseId},</if>
|
||||
<if test="studentId != null and studentId != ''">#{studentId},</if>
|
||||
<if test="scores != null and scores != ''">#{scores},</if>
|
||||
<if test="remark != null">#{remark},</if>
|
||||
</trim>
|
||||
</insert>
|
||||
|
||||
|
||||
<delete id="deleteCourseSelectionById" parameterType="Long">
|
||||
delete from course_selection where id = #{id}
|
||||
</delete>
|
||||
|
||||
<delete id="deleteCourseSelectionByIds" parameterType="String">
|
||||
delete from course_selection where id in
|
||||
<foreach item="id" collection="array" open="(" separator="," close=")">
|
||||
#{id}
|
||||
</foreach>
|
||||
</delete>
|
||||
|
||||
</mapper>
|
@ -0,0 +1,106 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<!DOCTYPE mapper
|
||||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="org.example.mapper.UserMapper">
|
||||
|
||||
<resultMap type="User" id="UserResult">
|
||||
<result property="id" column="id" />
|
||||
<result property="username" column="username" />
|
||||
<result property="password" column="password" />
|
||||
<result property="roleId" column="role_id" />
|
||||
<result property="phone" column="phone" />
|
||||
<result property="createdate" column="createdate" />
|
||||
<result property="remark" column="remark" />
|
||||
<result property="realName" column="real_name" />
|
||||
<result property="age" column="age" />
|
||||
<result property="sex" column="sex" />
|
||||
</resultMap>
|
||||
|
||||
|
||||
<sql id="selectUserVo">
|
||||
select id, username, password, role_id, phone, createdate, remark, real_name, age, sex from user
|
||||
</sql>
|
||||
|
||||
<select id="selectUserList" parameterType="User" resultMap="UserResult">
|
||||
<include refid="selectUserVo"/>
|
||||
<where>
|
||||
<if test="username != null and username != ''"> and username = #{username}</if>
|
||||
<if test="realName != null and realName != ''"> and real_name like concat('%',#{realName},'%')</if>
|
||||
<if test="sex != null and sex != ''"> and sex = #{sex}</if>
|
||||
<if test="password != null and password != ''"> and password = #{password}</if>
|
||||
<if test="roleId != null "> and role_id = #{roleId}</if>
|
||||
<if test="phone != null and phone != ''"> and phone like concat('%', #{phone}, '%')</if>
|
||||
<if test="createdate != null "> and createdate = #{createdate}</if>
|
||||
</where>
|
||||
order by id desc
|
||||
</select>
|
||||
|
||||
<select id="selectUserById" parameterType="Integer" resultMap="UserResult">
|
||||
<include refid="selectUserVo"/>
|
||||
where id = #{id}
|
||||
order by createdate desc
|
||||
</select>
|
||||
|
||||
<select id="selectUserByUsername" parameterType="String" resultMap="UserResult">
|
||||
<include refid="selectUserVo"/>
|
||||
where username = #{username}
|
||||
</select>
|
||||
|
||||
<insert id="insertUser" parameterType="User" useGeneratedKeys="true" keyProperty="id">
|
||||
insert into user
|
||||
<trim prefix="(" suffix=")" suffixOverrides=",">
|
||||
<if test="username != null">username,</if>
|
||||
<if test="password != null and password != ''">password,</if>
|
||||
<if test="roleId != null">role_id,</if>
|
||||
<if test="phone != null and phone != ''">phone,</if>
|
||||
<if test="createdate != null">createdate,</if>
|
||||
<if test="remark != null">remark,</if>
|
||||
|
||||
<if test="realName != null">real_name,</if>
|
||||
<if test="sex != null">sex,</if>
|
||||
<if test="age != null">age,</if>
|
||||
</trim>
|
||||
<trim prefix="values (" suffix=")" suffixOverrides=",">
|
||||
<if test="username != null">#{username},</if>
|
||||
<if test="password != null and password != ''">#{password},</if>
|
||||
<if test="roleId != null">#{roleId},</if>
|
||||
<if test="phone != null and phone != ''">#{phone},</if>
|
||||
<if test="createdate != null">#{createdate},</if>
|
||||
<if test="remark != null">#{remark},</if>
|
||||
|
||||
<if test="realName != null">#{realName},</if>
|
||||
<if test="sex != null">#{sex},</if>
|
||||
<if test="age != null">#{age},</if>
|
||||
</trim>
|
||||
</insert>
|
||||
|
||||
<update id="updateUser" parameterType="User">
|
||||
update user
|
||||
<trim prefix="SET" suffixOverrides=",">
|
||||
<if test="username != null">username = #{username},</if>
|
||||
<if test="password != null and password != ''">password = #{password},</if>
|
||||
<if test="roleId != null">role_id = #{roleId},</if>
|
||||
<if test="phone != null and phone != ''">phone = #{phone},</if>
|
||||
<if test="createdate != null">createdate = #{createdate},</if>
|
||||
<if test="remark != null">remark = #{remark},</if>
|
||||
|
||||
<if test="realName != null">real_name = #{realName},</if>
|
||||
<if test="sex != null">sex = #{sex},</if>
|
||||
<if test="age != null">age = #{age},</if>
|
||||
</trim>
|
||||
where id = #{id}
|
||||
</update>
|
||||
|
||||
<delete id="deleteUserById" parameterType="Integer">
|
||||
delete from user where id = #{id}
|
||||
</delete>
|
||||
|
||||
<delete id="deleteUserByIds" parameterType="String">
|
||||
delete from user where id in
|
||||
<foreach item="id" collection="array" open="(" separator="," close=")">
|
||||
#{id}
|
||||
</foreach>
|
||||
</delete>
|
||||
|
||||
</mapper>
|
@ -0,0 +1,82 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<beans xmlns="http://www.springframework.org/schema/beans"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xmlns:context="http://www.springframework.org/schema/context"
|
||||
xmlns:mvc="http://www.springframework.org/schema/mvc"
|
||||
xsi:schemaLocation="
|
||||
http://www.springframework.org/schema/beans
|
||||
http://www.springframework.org/schema/beans/spring-beans.xsd
|
||||
http://www.springframework.org/schema/context
|
||||
http://www.springframework.org/schema/context/spring-context.xsd
|
||||
http://www.springframework.org/schema/mvc
|
||||
http://www.springframework.org/schema/mvc/spring-mvc.xsd">
|
||||
|
||||
<!-- 启用组件扫描和自动装配 -->
|
||||
<context:component-scan base-package="org.example.controller"/>
|
||||
|
||||
<!-- 启用Spring MVC注解编程模式 -->
|
||||
<mvc:annotation-driven/>
|
||||
|
||||
<!-- 配置拦截器链 -->
|
||||
<!-- 配置拦截器链 -->
|
||||
<mvc:interceptors>
|
||||
<!-- 配置第1个拦截器 -->
|
||||
<mvc:interceptor>
|
||||
<!-- 1. 拦截的路径 -->
|
||||
<mvc:mapping path="/user/**" />
|
||||
<mvc:mapping path="/uploadfile/**" />
|
||||
<mvc:mapping path="/role/**" />
|
||||
<mvc:mapping path="/dept/**" />
|
||||
<mvc:mapping path="/notice/**" />
|
||||
<mvc:mapping path="/job/**" />
|
||||
<mvc:mapping path="/employee/**" />
|
||||
<mvc:mapping path="/main/**" />
|
||||
|
||||
<!-- 2. 例外的路径,不拦截的路径,即白名单 -->
|
||||
<mvc:exclude-mapping path="/user/handle_reg.do" />
|
||||
<mvc:exclude-mapping path="/user/login.do" />
|
||||
<mvc:exclude-mapping path="/user/handle_login.do" />
|
||||
<mvc:exclude-mapping path="/user/getCaptcha.do" />
|
||||
<mvc:exclude-mapping path="/user/verify.do" />
|
||||
<mvc:exclude-mapping path="/user/exit.do" />
|
||||
|
||||
|
||||
<!-- 3. 指定拦截器类 -->
|
||||
<bean class="org.example.interceptor.LoginInterceptor" />
|
||||
</mvc:interceptor>
|
||||
</mvc:interceptors>
|
||||
|
||||
<!--配置模板引擎-->
|
||||
<bean id="springResourceTemplateResolver" class="org.thymeleaf.spring5.templateresolver.SpringResourceTemplateResolver">
|
||||
<property name="prefix" value="/WEB-INF/templates/"/>
|
||||
<property name="suffix" value=".html"/>
|
||||
<!--解决页面的中文乱码-->
|
||||
<property name="characterEncoding" value="UTF-8"/>
|
||||
<property name="order" value="1"/>
|
||||
<property name="templateMode" value="HTML5"/>
|
||||
<property name="cacheable" value="false"/>
|
||||
</bean>
|
||||
<bean id="springTemplateEngine" class="org.thymeleaf.spring5.SpringTemplateEngine">
|
||||
<property name="templateResolver" ref="springResourceTemplateResolver"/>
|
||||
</bean>
|
||||
|
||||
<!-- 配置thymeleaf视图解析器 -->
|
||||
<bean id="thymeleafViewResolver" class="org.thymeleaf.spring5.view.ThymeleafViewResolver">
|
||||
<property name="templateEngine" ref="springTemplateEngine"/>
|
||||
<property name="characterEncoding" value="UTF-8"/>
|
||||
</bean>
|
||||
|
||||
<!-- 启用JSP视图解析器 -->
|
||||
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
|
||||
<property name="prefix" value="/WEB-INF/"/>
|
||||
<property name="suffix" value=".html"/>
|
||||
</bean>
|
||||
|
||||
<!-- 启用文件上传解析器 -->
|
||||
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
|
||||
<!-- the maximum file size in bytes : 10m -->
|
||||
<property name="maxUploadSize" value="10485760"/>
|
||||
<property name="defaultEncoding" value="UTF-8"/>
|
||||
</bean>
|
||||
|
||||
</beans>
|
@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<beans xmlns="http://www.springframework.org/schema/beans"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xmlns:context="http://www.springframework.org/schema/context"
|
||||
xsi:schemaLocation="http://www.springframework.org/schema/beans
|
||||
http://www.springframework.org/schema/beans/spring-beans.xsd
|
||||
http://www.springframework.org/schema/context
|
||||
http://www.springframework.org/schema/context/spring-context.xsd">
|
||||
|
||||
<!-- 启用组件扫描和自动装配 -->
|
||||
<context:component-scan base-package="org.example.service"/>
|
||||
|
||||
</beans>
|
@ -0,0 +1,177 @@
|
||||
<!DOCTYPE html>
|
||||
<html class="x-admin-sm" xmlns:th="http://www.thymeleaf.org">
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>教务管理系统</title>
|
||||
<meta name="renderer" content="webkit">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
||||
<meta name="viewport" content="width=device-width,user-scalable=yes, minimum-scale=0.4, initial-scale=0.8,target-densitydpi=low-dpi" />
|
||||
<link rel="stylesheet" th:href="@{/static/css/font.css}">
|
||||
<link rel="stylesheet" th:href="@{/static/css/xadmin.css}">
|
||||
<script type="text/javascript" th:src="@{/static/lib/layui/layui.js}" charset="utf-8"></script>
|
||||
<script type="text/javascript" th:src="@{/static/js/xadmin.js}"></script>
|
||||
<script th:inline="javascript" type="text/javascript">var ctx =[[${#httpServletRequest.getContextPath()}]];</script>
|
||||
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div class="x-nav">
|
||||
<span class="layui-breadcrumb">
|
||||
<a href="">首页</a>
|
||||
<a href="">课程信息管理</a>
|
||||
<a>
|
||||
<cite>课程信息列表</cite></a>
|
||||
</span>
|
||||
<a class="layui-btn layui-btn-small" style="line-height:1.6em;margin-top:3px;float:right" onclick="location.reload()" title="刷新">
|
||||
<i class="layui-icon layui-icon-refresh" style="line-height:30px"></i>
|
||||
</a>
|
||||
</div>
|
||||
<div class="layui-fluid">
|
||||
<div class="layui-row layui-col-space15">
|
||||
<div class="layui-col-md12">
|
||||
<div class="layui-card">
|
||||
<div class="layui-card-body ">
|
||||
<form class="layui-form layui-form-item">
|
||||
<label class="layui-form-label" style="font-size: 15px">课程名称:</label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="text" name="name" id="name" placeholder="请输入课程名称" autocomplete="off" class="layui-input">
|
||||
</div>
|
||||
<label class="layui-form-label" style="font-size: 15px">课程编码:</label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="text" name="courseNo" id="courseNo" placeholder="请输入课程编码" autocomplete="off" class="layui-input">
|
||||
</div>
|
||||
<div class="layui-inline demoTable">
|
||||
<input type="button" class="layui-btn layui-icon layui-icon-search layuiadmin-button-btn" data-type="select" value="查询" />
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div class="layui-card-header" th:if="${session.user.roleId == '3'}"><!--(管理员)-->
|
||||
<button class="layui-btn" onclick="xadmin.open('添加课程信息','./add.do',700,500)">
|
||||
<i class="layui-icon"></i>添加</button></div>
|
||||
<div class="layui-card-body ">
|
||||
<table id="demo" lay-filter="test"></table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
<script type="text/html" id="barDemo" hidden>
|
||||
<div >
|
||||
<div class="logo">
|
||||
{{# if(d.selected == false ){ }}
|
||||
<a th:if="${session.user.roleId == '1'}" class="layui-btn layui-btn-normal layui-btn-xs" lay-event="xz">选择课程</a>
|
||||
{{# } else { }}
|
||||
<a th:if="${session.user.roleId == '1'}" class="layui-btn layui-btn-danger layui-btn-xs" lay-event="xz">取消选择</a>
|
||||
{{# } }}
|
||||
<a th:if="${session.user.roleId == '3'}" class="layui-btn layui-btn-primary layui-btn-xs" id = "btn1" lay-event="edit">编辑</a>
|
||||
<a th:if="${session.user.roleId == '3'}" class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del" >删除</a>
|
||||
</div>
|
||||
</div>
|
||||
</script>
|
||||
<script>layui.use(['laydate', 'form','table'],
|
||||
function() {
|
||||
|
||||
var table = layui.table;
|
||||
var util = layui.util;
|
||||
var uid = [[${session.uid}]]
|
||||
|
||||
//第一个实例
|
||||
table.render({
|
||||
elem: '#demo'
|
||||
,height: 'full-280'
|
||||
,url: ctx+'/course/getList.do' //数据接口
|
||||
,where: { teacherId: uid}//加上参数*/
|
||||
,page: true //开启分页
|
||||
,even:false//若不开启隔行背景,不设置该参数即可
|
||||
,title:'课程列表'
|
||||
,cols: [
|
||||
[ //表头 // {field: 'id', title: 'ID', width:80, sort: true, fixed: 'left'}
|
||||
|
||||
{field: 'name', title: '课程名称', width:180,fixed: 'left'}
|
||||
,{field: 'courseNo', title: '课程编号', width:180,}
|
||||
,{field: 'teacher.username', title: '任课老师', width:180,templet: function (d){
|
||||
return d.teacher?.realName || ''
|
||||
}}
|
||||
,{field: 'remark', title: '描述'}
|
||||
]
|
||||
],id:"selectAll"
|
||||
});
|
||||
//监听事件
|
||||
table.on('tool(test)', function (obj){
|
||||
var data = obj.data;
|
||||
// 选择课程/取消选择
|
||||
if(obj.event === 'xz'){
|
||||
var message = data.selected ? "确定取消选择该课程吗?" : '确定选择该课程吗';
|
||||
layer.confirm(message,
|
||||
function(index) {
|
||||
$.ajax({
|
||||
"url":ctx+"/selection/handleSelect.do",
|
||||
"data":{
|
||||
id:data.id,
|
||||
selected: data.selected
|
||||
},
|
||||
"type":"post",
|
||||
"dataType":"json",
|
||||
"success":function(res){
|
||||
layer.close(index);
|
||||
table.reload('selectAll');//重载表格(等值刷新)
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
//跳转编辑页面
|
||||
if(obj.event === 'edit'){
|
||||
xadmin.open('编辑课程信息',ctx+'/course/edit/'+obj.data.id+'.do',800,500)
|
||||
}
|
||||
//删除
|
||||
if(obj.event === 'del'){
|
||||
var message = "确定要删除吗?";
|
||||
|
||||
layer.confirm(message,
|
||||
function(index) {
|
||||
//捉到所有被选中的,发异步进行删除
|
||||
$.ajax({
|
||||
"url":ctx+"/course/remove.do",
|
||||
"data":{
|
||||
ids:data.id
|
||||
},
|
||||
"type":"post",
|
||||
"dataType":"json",
|
||||
"success":function(res){
|
||||
layer.close(index);
|
||||
table.reload('selectAll');//重载表格(等值刷新)
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
}
|
||||
})
|
||||
|
||||
//查询
|
||||
var active = {
|
||||
select: function () {
|
||||
/*layer.load(1);*/
|
||||
table.reload('selectAll', {
|
||||
where: {
|
||||
name: $("#name").val(),
|
||||
courseNo: $("#courseNo").val(),
|
||||
}
|
||||
, page: {
|
||||
curr: 1//重新从第一页开始查询
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
$('.demoTable .layui-btn').on('click', function () {
|
||||
var type = $(this).data('type');
|
||||
active[type] ? active[type].call(this) : '';
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
</script>
|
||||
|
||||
</html>
|
@ -0,0 +1,173 @@
|
||||
<!DOCTYPE html>
|
||||
<html class="x-admin-sm" xmlns:th="http://www.thymeleaf.org">
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>教务管理系统</title>
|
||||
<meta name="renderer" content="webkit">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
||||
<meta name="viewport" content="width=device-width,user-scalable=yes, minimum-scale=0.4, initial-scale=0.8,target-densitydpi=low-dpi" />
|
||||
<link rel="stylesheet" th:href="@{/static/css/font.css}">
|
||||
<link rel="stylesheet" th:href="@{/static/css/xadmin.css}">
|
||||
<script type="text/javascript" th:src="@{/static/lib/layui/layui.js}" charset="utf-8"></script>
|
||||
<script type="text/javascript" th:src="@{/static/js/xadmin.js}"></script>
|
||||
<script th:inline="javascript" type="text/javascript">var ctx =[[${#httpServletRequest.getContextPath()}]];</script>
|
||||
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div class="x-nav">
|
||||
<span class="layui-breadcrumb">
|
||||
<a href="">首页</a>
|
||||
<a href="">课程信息管理</a>
|
||||
<a>
|
||||
<cite>课程信息列表</cite></a>
|
||||
</span>
|
||||
<a class="layui-btn layui-btn-small" style="line-height:1.6em;margin-top:3px;float:right" onclick="location.reload()" title="刷新">
|
||||
<i class="layui-icon layui-icon-refresh" style="line-height:30px"></i>
|
||||
</a>
|
||||
</div>
|
||||
<div class="layui-fluid">
|
||||
<div class="layui-row layui-col-space15">
|
||||
<div class="layui-col-md12">
|
||||
<div class="layui-card">
|
||||
<div class="layui-card-body ">
|
||||
<table id="demo" lay-filter="test"></table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
<script type="text/html" id="barDemo" hidden>
|
||||
<div >
|
||||
<div class="logo">
|
||||
<a th:if="${session.user.roleId == '2'}" class="layui-btn layui-btn-normal layui-btn-xs" lay-event="df" >打分</a>
|
||||
<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del" >退课</a>
|
||||
</div>
|
||||
</div>
|
||||
</script>
|
||||
<script>layui.use(['laydate', 'form','table'],
|
||||
function() {
|
||||
|
||||
var table = layui.table;
|
||||
var util = layui.util;
|
||||
|
||||
//第一个实例
|
||||
table.render({
|
||||
elem: '#demo'
|
||||
,height: 'full-180'
|
||||
,url: ctx+'/selection/getList.do' //数据接口
|
||||
,page: true //开启分页
|
||||
,even:false//若不开启隔行背景,不设置该参数即可
|
||||
,title:'课程列表'
|
||||
,cols: [
|
||||
[ //表头 // {field: 'id', title: 'ID', width:80, sort: true, fixed: 'left'}
|
||||
|
||||
{field: 'name', title: '课程名称', width:180,fixed: 'left',templet: function (d){
|
||||
return d.course?.name || ''
|
||||
}}
|
||||
,{field: 'courseNo', title: '课程编号', width:180,templet: function (d){
|
||||
return d.course?.courseNo || ''
|
||||
}}
|
||||
,{field: 'teacher.realName', title: '任课老师', width:180,templet: function (d){
|
||||
return d.course?.teacher?.realName || ''
|
||||
}}
|
||||
,{field: 'teacher.realName', title: '选课学生', width:180,templet: function (d){
|
||||
return d.student?.realName || ''
|
||||
}}
|
||||
,{field: 'createdate', title: '选择时间', width: 180,templet:function(d){return util.toDateString(d.createdate, "yyyy-MM-dd HH:mm:ss");}}
|
||||
,{field: 'remark', title: '描述',templet: function (d){
|
||||
return d.course?.remark
|
||||
}}
|
||||
,{field: 'teacher.realName', title: '分数', width:100,templet: function (d){
|
||||
return d.scores ? d.scores :''
|
||||
}}
|
||||
,{fixed: 'right', title: '操作', width:220, align:'center', toolbar: '#barDemo'}
|
||||
]
|
||||
],id:"selectAll"
|
||||
});
|
||||
//监听事件
|
||||
table.on('tool(test)', function (obj){
|
||||
var data = obj.data;
|
||||
//跳转编辑页面
|
||||
if(obj.event === 'df'){
|
||||
layer.prompt(function(value, index, elem){
|
||||
if(!Number.isFinite(+value)){
|
||||
layer.alert("请输入数字类型!", {icon: 5});
|
||||
return;
|
||||
}
|
||||
const url = ctx+"/selection/edit.do";
|
||||
$.ajax({
|
||||
"url":url,
|
||||
"data": {
|
||||
id: data.id,
|
||||
scores: value
|
||||
},
|
||||
"type":"post",
|
||||
"dataType":"json",
|
||||
"success":function(res){
|
||||
//后台操作成功
|
||||
if(res.code ==0){
|
||||
layer.close(index);
|
||||
table.reload('selectAll');//重载表格(等值刷新)
|
||||
}else{
|
||||
layer.alert(res.msg+",请联系系统管理人员!", {icon: 5});
|
||||
}
|
||||
}
|
||||
});
|
||||
layer.close(index);
|
||||
});
|
||||
|
||||
|
||||
}
|
||||
//删除
|
||||
if(obj.event === 'del'){
|
||||
var message = "确定要退课吗?";
|
||||
|
||||
layer.confirm(message,
|
||||
function(index) {
|
||||
//捉到所有被选中的,发异步进行删除
|
||||
$.ajax({
|
||||
"url":ctx+"/selection/remove.do",
|
||||
"data":{
|
||||
ids:data.id
|
||||
},
|
||||
"type":"post",
|
||||
"dataType":"json",
|
||||
"success":function(res){
|
||||
layer.close(index);
|
||||
table.reload('selectAll');//重载表格(等值刷新)
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
}
|
||||
})
|
||||
|
||||
//查询
|
||||
var active = {
|
||||
select: function () {
|
||||
/*layer.load(1);*/
|
||||
table.reload('selectAll', {
|
||||
where: {
|
||||
name: $("#name").val(),
|
||||
courseNo: $("#courseNo").val(),
|
||||
}
|
||||
, page: {
|
||||
curr: 1//重新从第一页开始查询
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
$('.demoTable .layui-btn').on('click', function () {
|
||||
var type = $(this).data('type');
|
||||
active[type] ? active[type].call(this) : '';
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
</script>
|
||||
|
||||
</html>
|
@ -0,0 +1,139 @@
|
||||
<!DOCTYPE html>
|
||||
<html class="x-admin-sm" xmlns:th="http://www.thymeleaf.org">
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>教务管理系统</title>
|
||||
<meta name="renderer" content="webkit">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
||||
<meta name="viewport" content="width=device-width,user-scalable=yes, minimum-scale=0.4, initial-scale=0.8,target-densitydpi=low-dpi" />
|
||||
<link rel="stylesheet" th:href="@{/static/css/font.css}">
|
||||
<link rel="stylesheet" th:href="@{/static/css/xadmin.css}">
|
||||
<script type="text/javascript" th:src="@{/static/lib/layui/layui.js}" charset="utf-8"></script>
|
||||
<script type="text/javascript" th:src="@{/static/js/xadmin.js}"></script>
|
||||
<script th:inline="javascript" type="text/javascript">var ctx =[[${#httpServletRequest.getContextPath()}]];</script>
|
||||
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div class="x-nav">
|
||||
<span class="layui-breadcrumb">
|
||||
<a href="">首页</a>
|
||||
<a href="">课程信息管理</a>
|
||||
<a>
|
||||
<cite>课程信息列表</cite></a>
|
||||
</span>
|
||||
<a class="layui-btn layui-btn-small" style="line-height:1.6em;margin-top:3px;float:right" onclick="location.reload()" title="刷新">
|
||||
<i class="layui-icon layui-icon-refresh" style="line-height:30px"></i>
|
||||
</a>
|
||||
</div>
|
||||
<div class="layui-fluid">
|
||||
<div class="layui-row layui-col-space15">
|
||||
<div class="layui-col-md12">
|
||||
<div class="layui-card">
|
||||
<div class="layui-card-body ">
|
||||
<table id="demo" lay-filter="test"></table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
<script type="text/html" id="barDemo" hidden>
|
||||
<div >
|
||||
<div class="logo">
|
||||
<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del" >退课</a>
|
||||
</div>
|
||||
</div>
|
||||
</script>
|
||||
<script>layui.use(['laydate', 'form','table'],
|
||||
function() {
|
||||
|
||||
var table = layui.table;
|
||||
var util = layui.util;
|
||||
var uid = [[${session.uid}]]
|
||||
//第一个实例
|
||||
table.render({
|
||||
elem: '#demo'
|
||||
,height: 'full-180'
|
||||
,url: ctx+'/selection/getList.do' //数据接口
|
||||
,where: { studentId: uid}//加上参数*/
|
||||
,page: true //开启分页
|
||||
,even:false//若不开启隔行背景,不设置该参数即可
|
||||
,title:'课程列表'
|
||||
,cols: [
|
||||
[ //表头 // {field: 'id', title: 'ID', width:80, sort: true, fixed: 'left'}
|
||||
|
||||
{field: 'name', title: '课程名称', width:180,fixed: 'left',templet: function (d){
|
||||
return d.course?.name || ''
|
||||
}}
|
||||
,{field: 'courseNo', title: '课程编号', width:180,templet: function (d){
|
||||
return d.course?.courseNo || ''
|
||||
}}
|
||||
,{field: 'teacher.realName', title: '任课老师', width:180,templet: function (d){
|
||||
return d.course?.teacher?.realName || ''
|
||||
}}
|
||||
,{field: 'remark', title: '描述',templet: function (d){
|
||||
return d.course?.remark || ''
|
||||
}}
|
||||
,{fixed: 'right', title: '操作', width:220, align:'center', toolbar: '#barDemo'}
|
||||
]
|
||||
],id:"selectAll"
|
||||
});
|
||||
//监听事件
|
||||
table.on('tool(test)', function (obj){
|
||||
var data = obj.data;
|
||||
//跳转编辑页面
|
||||
if(obj.event === 'edit'){
|
||||
xadmin.open('编辑课程信息',ctx+'/selection/edit/'+obj.data.id+'.do',800,500)
|
||||
}
|
||||
//删除
|
||||
if(obj.event === 'del'){
|
||||
var message = "确定要退课吗?";
|
||||
|
||||
layer.confirm(message,
|
||||
function(index) {
|
||||
//捉到所有被选中的,发异步进行删除
|
||||
$.ajax({
|
||||
"url":ctx+"/selection/remove.do",
|
||||
"data":{
|
||||
ids:data.id
|
||||
},
|
||||
"type":"post",
|
||||
"dataType":"json",
|
||||
"success":function(res){
|
||||
layer.close(index);
|
||||
table.reload('selectAll');//重载表格(等值刷新)
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
}
|
||||
})
|
||||
|
||||
//查询
|
||||
var active = {
|
||||
select: function () {
|
||||
/*layer.load(1);*/
|
||||
table.reload('selectAll', {
|
||||
where: {
|
||||
name: $("#name").val(),
|
||||
courseNo: $("#courseNo").val(),
|
||||
}
|
||||
, page: {
|
||||
curr: 1//重新从第一页开始查询
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
$('.demoTable .layui-btn').on('click', function () {
|
||||
var type = $(this).data('type');
|
||||
active[type] ? active[type].call(this) : '';
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
</script>
|
||||
|
||||
</html>
|
@ -0,0 +1,59 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
|
||||
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
|
||||
version="2.5">
|
||||
|
||||
<welcome-file-list>
|
||||
<welcome-file>index.html</welcome-file>
|
||||
<welcome-file>index.jsp</welcome-file>
|
||||
</welcome-file-list>
|
||||
|
||||
<!-- 声明 Spring Web 请求上下文监听器 -->
|
||||
<listener>
|
||||
<listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
|
||||
</listener>
|
||||
|
||||
<!-- 声明 Spring MVC 前端控制器 -->
|
||||
<servlet>
|
||||
<servlet-name>dispatcherServlet</servlet-name>
|
||||
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
|
||||
<init-param>
|
||||
<param-name>contextConfigLocation</param-name>
|
||||
<param-value>classpath:spring-*.xml</param-value>
|
||||
</init-param>
|
||||
<load-on-startup>1</load-on-startup>
|
||||
</servlet>
|
||||
<filter>
|
||||
<filter-name>HtmlAccessFilter</filter-name>
|
||||
<filter-class>org.example.filter.HtmlAccessFilter</filter-class>
|
||||
</filter>
|
||||
<filter-mapping>
|
||||
<filter-name>HtmlAccessFilter</filter-name>
|
||||
<url-pattern>*.html</url-pattern>
|
||||
</filter-mapping>
|
||||
<!-- 将所有以.do结尾的请求交给DispatcherServlet来处理 -->
|
||||
<servlet-mapping>
|
||||
<servlet-name>dispatcherServlet</servlet-name>
|
||||
<url-pattern>*.do</url-pattern>
|
||||
</servlet-mapping>
|
||||
|
||||
<!-- 声明字符集编码过滤器 -->
|
||||
<filter>
|
||||
<filter-name>characterEncodingFilter</filter-name>
|
||||
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
|
||||
<init-param>
|
||||
<param-name>encoding</param-name>
|
||||
<param-value>utf-8</param-value>
|
||||
</init-param>
|
||||
</filter>
|
||||
<filter-mapping>
|
||||
<filter-name>characterEncodingFilter</filter-name>
|
||||
<url-pattern>/*</url-pattern>
|
||||
</filter-mapping>
|
||||
<!-- 时间单位为分钟 -->
|
||||
<session-config>
|
||||
<session-timeout>300</session-timeout>
|
||||
</session-config>
|
||||
</web-app>
|
@ -0,0 +1,38 @@
|
||||
|
||||
.middle {margin-top: 20px;overflow:hidden;}
|
||||
|
||||
.middle .fl {width: 200px;background: #ebebeb;padding-top: 17px;margin-bottom: -9999px;padding-bottom: 10049px;}
|
||||
.middle .fl h1 {padding-bottom: 10px;border-bottom: 1px dashed #9e9e9e;font-size: 16px;margin-bottom: 10px;}
|
||||
.middle .fl ul li dl dt {font-size: 15px;color: #ff5500;height: 37px;line-height: 37px;padding-left: 24px;}
|
||||
.middle .fl ul li dl dd {height: 36px;line-height: 36px;padding-left: 24px;}
|
||||
.middle .fl ul li dl dd a {font-size: 15px;text-decoration: none;color: #555555;}
|
||||
.middle .fl ul li dl dd:hover {background: #f7f7f7;background-image: url(../img/hong.jpg);background-repeat: no-repeat;}
|
||||
.middle .fl ul li dl .current {background: #f7f7f7;background-image: url(../img/hong.jpg);background-repeat: no-repeat;}
|
||||
|
||||
|
||||
.middle .fr {width: 840px;}
|
||||
.middle .fr .m_f_t {height: 60px;border-bottom: 1px solid #dddddd;line-height: 60px;font-size: 16px;}
|
||||
.middle .fr .m_f_t .place {color: #888888;font-size: 16px;}
|
||||
.middle .fr .con {margin-top: 20px;}
|
||||
.middle .fr .con p {font-size: 14px;color:#555555;line-height: 30px;}
|
||||
|
||||
|
||||
.hot {margin-top: 90px;margin-bottom: 40px;}
|
||||
.hot .title {font-size: 16px;font-weight: bold;padding-bottom: 10px;border-bottom: 2px solid #000000}
|
||||
.hot .content {padding-top: 14px;}
|
||||
.hot .content ul li {padding: 0 20px 10px 20px;width: 175px;border-right: 1px dashed #aaaaaa;float: left;}
|
||||
.hot .content ul li:last-child {border-right: 0;}
|
||||
.hot .content ul li .pic {width: 166px;height: 128px;overflow: hidden;}
|
||||
.hot .content ul li .pic img {width: 166px;}
|
||||
.hot .content ul li .price {font-size: 15px;color: #ff5500;font-weight: bold;margin: 10px 0;}
|
||||
.hot .content ul li .goumai {width: 110px;height: 35px;border: 1px solid #ff5500;display: block;line-height: 35px;text-align: center;font-size: 16px;color: #ff5500;border-radius: 20px;margin-left: 30px;}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -0,0 +1,91 @@
|
||||
/*轮播图*/
|
||||
.index_banner{float:left;position:relative;width:100%;height:452px;overflow:hidden;margin-top: -7px;}
|
||||
.index_banner ul li{position:absolute;float:left;width:100%;min-width:1000px;height:485px;text-align:center;overflow:hidden;}
|
||||
.index_banner ul li a{display:block;height:100%;}
|
||||
.index_banner .btnBg{position:absolute;width:100%;height:17px;left:0;bottom:10px;}
|
||||
.index_banner .btn{margin:0 auto;width:1000px;height:17px;text-align:center;}
|
||||
|
||||
#focus ul{position:absolute;float:left;width:100%;}
|
||||
#focus .btn span{display:inline-block;width:10px;height:10px;font-size:0;margin-left:5px;cursor:pointer;background: #ffffff;border-radius: 10px;}
|
||||
#focus .btn span.on{background: #ff9900}
|
||||
#focus .preNext{width:45px;height:100px;margin-top:-50px;cursor:pointer;position:absolute;top:50%;}
|
||||
#focus .pre{left:20%;background:url(../img/prev.png) no-repeat 0 0;}
|
||||
#focus .next{right:20%;background:url(../img/next.png) no-repeat 0 0;}
|
||||
|
||||
/*中间部分*/
|
||||
.middle {padding: 20px 0;}
|
||||
.middle .fl ul li {float: left;width: 115px;text-align: center;margin-right: 30px;}
|
||||
.middle .fl ul li p {font-size: 16px;margin-top: 10px;}
|
||||
|
||||
.middle .fr {width: 440px;height: 75px;background: #f9e7d5;padding: 20px 0 20px 20px;}
|
||||
.middle .fr p {height: 40px;font-size: 16px;padding-left: 40px;line-height: 40px;}
|
||||
.middle .fr .one {background: url(../img/tubiao.png) no-repeat;background-position: 0 50%;}
|
||||
.middle .fr .one a {position: relative;width: 21px;height: 26px;margin-right: 20px;}
|
||||
.middle .fr .one a img {margin-top:5px;position: absolute;}
|
||||
.middle .fr .one span {color: #9e9892;font-size: 16px;}
|
||||
|
||||
.middle .fr .two {background: url(../img/tubiao1.png) no-repeat;background-position: 0 50%;}
|
||||
.middle .fr .two i {font-family: "04b_08";font-size: 22px;}
|
||||
|
||||
/*商品介绍一大块*/
|
||||
.product {width: 100%;background: #f5f5f5;padding-bottom: 65px;}
|
||||
|
||||
.product .up .crazy {width: 195px;height: 50px;background: #ff9a02;padding-left: 70px;line-height: 50px;font-size: 18px;color: #ffffff;background-img: url(../img/naozhong.png);background-repeat: no-repeat;background-position: 12% 50%;}
|
||||
|
||||
.product .down {margin-top: 20px;}
|
||||
.product .down .fl {border-radius:0;border:1px solid #fff;-webkit-box-shadow:0 0 10px rgba(63, 63, 63, .5);-moz-box-shadow:0 0 10px rgba(63, 63, 63, .5);box-shadow:0 0 10px rgba(63, 63, 63, .5);background: #ffffff}
|
||||
.product .down .fl ul li {float: left;padding: 20px 10px 10px 10px;width: 345.5px;line-height: 20px;border-right: 2px solid #d9d9d9}
|
||||
.product .down .fl ul li .pic {text-align: center;height: 195px;width: 222px;overflow: hidden;margin: 0 auto;}
|
||||
.product .down .fl ul li .pic img {width: 222px;}
|
||||
.product .down .fl ul li:last-child {border-right:none;}
|
||||
.product .down .fl ul li p {margin-top: 20px;height: 40px;overflow: hidden}
|
||||
.product .down .fl ul li p a {color: #555555}
|
||||
.product .down .fl ul li div {height: 20px;line-height: 20px;}
|
||||
.product .down .fl ul li div .one {color: #ff5e21;font-size: 16px;font-weight: bold;float: left;}
|
||||
.product .down .fl ul li div .two {font-size: 12px;float: right;text-decoration: line-through;color: #888888}
|
||||
|
||||
.product .down .fr {width: 315px;padding: 10px; border-radius:0;border:1px solid #fff;-webkit-box-shadow:0 0 10px rgba(63, 63, 63, .5);-moz-box-shadow:0 0 10px rgba(63, 63, 63, .5);box-shadow:0 0 10px rgba(63, 63, 63, .5);background: #ffffff}
|
||||
.product .down .fr .f_one {border-bottom: 1px solid #dddddd;padding-bottom: 7px;}
|
||||
.product .down .fr .f_one span {font-size: 18px;font-weight: bold}
|
||||
.product .down .fr .f_one a {float: right;margin-top: 10px;color: #999999}
|
||||
|
||||
.product .down .fr .f_two {margin-top: 12px;}
|
||||
.product .down .fr .f_two ul li {height: 30px;overflow: hidden;line-height: 30px;}
|
||||
.product .down .fr .f_two ul li a {font-size: 13px;}
|
||||
.product .down .fr .f_two ul li a span{font-size: 13px;}
|
||||
|
||||
|
||||
/*商品介绍-----正式*/
|
||||
.floor {height: 480px;margin-top: 50px;position: relative}
|
||||
.floor .left {width: 240px;float: left;}
|
||||
.floor .left .start {padding-top: 150px;height: 50px;line-height: 30px;color: #ffffff;font-size: 24px;text-align: center;}
|
||||
.floor .left .second {padding-left: 28px;height: 270px;overflow: hidden;padding-top: 10px;}
|
||||
.floor .left .second ul li {float: left;width: 100px;height: 40px;line-height: 40px;overflow: hidden;}
|
||||
.floor .left .second ul li a {font-size: 16px;color: #ffffff}
|
||||
|
||||
.floor .zhongbu {width: 579px;float: left;background: #ffffff;position: relative;border-right: 1px solid #eeeeee}
|
||||
.floor .zhongbu ul li {float: left;width: 289.5px;height: 215px;padding: 15px 0 10px 0;text-align: center;}
|
||||
.floor .zhongbu ul li h1 {font-size: 18px;}
|
||||
.floor .zhongbu ul li p {font-size: 14px;color: #999999}
|
||||
.floor .zhongbu ul li .pic {height: 165px;width: 180px;height: 144px;margin: 20px 0 0 60px;text-align: center;}
|
||||
.floor .zhongbu ul li .pic img {width: 180px;}
|
||||
.floor .zhongbu .heng {width: 100%;height: 1px;background: #eeeeee;position: absolute;top: 240px;left: 0;}
|
||||
.floor .zhongbu .shu {height: 100%;width: 1px;background: #eeeeee;position: absolute;top: 0;left: 290px;}
|
||||
|
||||
.floor .right {width: 220px;float: left;background: #ffffff;padding: 12px 20px 0 20px;}
|
||||
.floor .right h1 {font-size: 18px;text-align: center;}
|
||||
.floor .right ul li {padding: 17.5px 10px;border-bottom: 1px solid #eeeeee;}
|
||||
.floor .right ul li dl dt {float: left;width: 75px;height: 75px;}
|
||||
.floor .right ul li dl dt img {width: 75px;height: 75px;}
|
||||
.floor .right ul li dl dd {float: left;width: 125px;}
|
||||
.floor .right ul li dl .xiangxi {height: 40px;line-height: 20px;margin-top: 10px;}
|
||||
.floor .right ul li dl .xiangxi a {color: #555555}
|
||||
.floor .right ul li dl .fl {color: #ff9a02}
|
||||
.floor .right ul li dl .fr {text-decoration: line-through;color:#888888}
|
||||
|
||||
.floor .floor_one {width: 54px;height: 81px;background: url(../img/floor1.png) no-repeat;position: absolute;top: -25px;left:20px;}
|
||||
.floor .floor_two {width: 54px;height: 81px;background: url(../img/floor2.png) no-repeat;position: absolute;top: -25px;left:20px;}
|
||||
.floor .floor_three {width: 54px;height: 81px;background: url(../img/floor3.png) no-repeat;position: absolute;top: -25px;left:20px;}
|
||||
.floor .floor_four {width: 54px;height: 81px;background: url(../img/floor4.png) no-repeat;position: absolute;top: -25px;left:20px;}
|
||||
.floor .floor_five {width: 54px;height: 81px;background: url(../img/floor5.png) no-repeat;position: absolute;top: -25px;left:20px;}
|
||||
|
@ -0,0 +1,43 @@
|
||||
|
||||
.content {background: #f5f5f5;padding-top: 20px;padding-bottom: 20px;}
|
||||
.content .fenlei {background: #ffffff;border: 1px solid #eeeeee;}
|
||||
.content .fenlei .left {width: 50px;height: 44px;line-height: 44px;font-size: 14px;padding-left: 20px;float: left;color: #888888}
|
||||
.content .fenlei .right {float: left;width: 1000px;}
|
||||
.content .fenlei .right ul li {height: 44px;line-height: 44px;margin: 0 10px;float: left;}
|
||||
.content .fenlei .right ul li a {font-size: 14px;color: #888888}
|
||||
|
||||
|
||||
.place {height: 44px;border: 1px solid #eeeeee;background: #ffffff;padding-left: 20px;width: 1060px;margin:20px auto 0 auto;font-size: 14px;line-height: 44px;color: #656762;position: relative}
|
||||
.place .check {font-size: 13px;font-weight: bold;color: #6a6667;margin: 0 20px;}
|
||||
.place .number {color: #fd5401;font-size: 13px;font-weight: bold;margin: 0 5px;}
|
||||
.place .biaoqian {border: 1px solid #dddddd;cursor: pointer;text-decoration: none;width: 57px;height: 25px;line-height: 25px;text-align: center;}
|
||||
.place .biaoqian:hover {background: #ff5500;color: #ffffff;border: 1px solid #ff5500}
|
||||
.place .pa1 {position: absolute;right: 170px;top: 10px;}
|
||||
.place .pa2 {position: absolute;right: 100px;top: 10px;}
|
||||
.place .pa3 {position: absolute;right: 30px;top: 10px;}
|
||||
|
||||
|
||||
|
||||
.product {margin:20px auto 0 auto;width: 1100px;}
|
||||
.product ul li {float: left;width: 233px;height: 308px;background: #ffffff;margin: 0 10px;padding: 20px 10px 0 10px;border: 1px solid #eeeeee;margin-bottom: 20px;}
|
||||
.product ul li .pic {margin-bottom: 20px;width: 230px;height: 220px;text-align: center;}
|
||||
.product ul li img {width: 230px;}
|
||||
.product ul li .one {height: 18px;overflow: hidden;margin-bottom: 10px;}
|
||||
.product ul li .one a {color: #666666;}
|
||||
.product ul li .real {color: #fe5500;font-size: 20px;margin-right: 20px;}
|
||||
.product ul li .wrong {text-decoration: line-through;color: #888888;}
|
||||
|
||||
|
||||
|
||||
.page {text-align: center;height: 40px;line-height: 40px;}
|
||||
.page a {padding: 5px 10px;border: 1px solid #dddddd;background: #ffffff;text-decoration: none;margin-right: 5px;}
|
||||
.page a:hover {color: #ffffff;background: #fe5500;border: 1px solid #fe5500;}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -0,0 +1,78 @@
|
||||
* {margin: 0;padding: 0;outline: 0;font-size: 12px;font-family:"微软雅黑";}
|
||||
a {text-decoration: none;color: #000000;}
|
||||
a:hover {text-decoration: underline}
|
||||
ul {list-style-type: none;}
|
||||
img {border: none;}
|
||||
|
||||
.fl {float: left;}
|
||||
.fr {float: right;}
|
||||
.clear {clear: both}
|
||||
.wt1080 {width: 1080px;margin: 0 auto;}
|
||||
|
||||
/*顶部*/
|
||||
.top {width: 100%;background: url(../image/bg1.jpg) repeat-x;height: 36px;line-height: 36px;}
|
||||
.top ul li {float: left;height: 36px;background: url(../image/daohang.png) no-repeat;background-position: 100% 50%;padding-left: 10px;padding-right: 20px;}
|
||||
.top ul li span {display: block;height: 36px;}
|
||||
.top ul li .personal {border-radius:0;border:1px solid #fff;-webkit-box-shadow:0 0 10px rgba(63, 63, 63, .5);-moz-box-shadow:0 0 10px rgba(63, 63, 63, .5);box-shadow:0 0 10px rgba(63, 63, 63, .5);background: #ffffff;display: none;position: absolute;width: 70px;text-align: center;}
|
||||
.top ul li .personal dl dd {height: 30px;line-height: 30px;}
|
||||
.top ul li .shop {background: url(../image/shop.png) no-repeat;padding-left: 25px;background-position: 0 50%;}
|
||||
.top ul li .shop a {color: #ff9900;font-weight: bold}
|
||||
.top ul li .phone {padding-left: 25px;background: url(../image/phone.png) no-repeat;background-position: 0 50%;}
|
||||
.top ul li .phone2 {background: url(../image/phone2.png) no-repeat;height: 36px;background-position: 0 50%;padding-left: 20px;font-size: 18px;font-weight: bold}
|
||||
|
||||
/*搜索logo*/
|
||||
.header {padding: 25px 0;}
|
||||
.header .search {margin-left: 130px;margin-top: 10px;}
|
||||
.header .search .a_search {width: 300px;height: 31px; border: 2px solid #ff9900;font-size: 15px;padding-left: 10px;line-height: 31px;}
|
||||
.header .search .b_search {width: 45px;height: 35px;background: url(../image/sousuo.png) no-repeat;display: block;cursor: pointer}
|
||||
.header .search p {margin-top: 7px;}
|
||||
.header .search p .current {color: red;}
|
||||
|
||||
.header .my_shop {width: 82px;height: 38px;background: #ff9900;margin-top: 10px;border-radius: 5px;line-height: 38px;color: #ffffff;font-size: 14px; background-image:url(../image/shop1.png);background-position: 15% 50%;background-repeat: no-repeat;padding-left: 45px;position: relative}
|
||||
.header .my_shop span {background: red;color: #ffffff;position: absolute;font-size: 16px;border-radius: 25px;width: 25px;height: 25px;line-height: 25px;text-align: center;top: -12.5px;right: 20px;}
|
||||
|
||||
/*导航*/
|
||||
.nav {border-bottom: 4px solid #ff9900;width: 100%;height: 40px;}
|
||||
.nav ul li {float: left;height: 50px;line-height: 40px;padding: 0 45px;position: relative;}
|
||||
.nav ul li .current {color: #ff9900;}
|
||||
.nav ul li a span {font-size: 16px;}
|
||||
.nav ul li a:hover {color: #ff9900;text-decoration: none;}
|
||||
|
||||
|
||||
.nav ul li .details {width: 600px;padding: 0 10px;position: absolute;margin-left: -50px;background: #fff; box-shadow: 0 3px 10px rgba(0,0,0,.3);border: 1px solid #ccc;border-width: 0 1px 1px 1px;margin-top: 2px;z-index: 10000;display: none;}
|
||||
|
||||
.nav ul li .details .item{display: inline-block;padding: 0;margin: 0 25px 10px 0;vertical-align: top;width: 270px;height: auto;line-height: normal;overflow: hidden;}
|
||||
.nav ul li .details .item p {height: 34px;line-height: 34px;font-weight: bold;border-bottom: 1px solid #EAEAEA;padding-left: 8px;}
|
||||
.nav ul li .details .item p a {font-size: 15px;}
|
||||
.nav ul li .details .item .ctgnamebox {}
|
||||
.nav ul li .details .item .ctgnamebox a {display: inline-block;height: 14px;line-height: 14px;padding: 0 8px 0 10px;margin-top: 12px;border-right: 1px solid #CCC;font-size: 13px;color: #666;}
|
||||
.nav ul li .details .item .ctgnamebox .current {color: red}
|
||||
.nav ul li .details .item .ctgnamebox a:hover {text-decoration: underline}
|
||||
|
||||
|
||||
/*保障底部*/
|
||||
.baozhang {width: 100%;background: #ff9900;text-align:center;}
|
||||
.baozhang ul {padding-left: 0;}
|
||||
.baozhang ul li {text-align: center;width: 130px;padding: 15px 0;margin-right: 40px;display: inline-block;}
|
||||
.baozhang ul li p {font-size: 16px;color: #ffffff;margin-top: 20px;}
|
||||
|
||||
|
||||
/*底部*/
|
||||
.footer {width: 100%;background: #ffffff;}
|
||||
.footer .a_footer {padding: 25px 10px 15px 0;height: 138px;}
|
||||
.footer .a_footer .left {width: 355px;float: left;}
|
||||
.footer .a_footer .left .lianxi {margin-top: 25px;position: relative}
|
||||
.footer .a_footer .left .lianxi img {margin-right: 10px;}
|
||||
.footer .a_footer .left .lianxi span {position: absolute;top: 0;font-weight: bold;font-size: 18px;margin-left: 10px;}
|
||||
|
||||
.footer .a_footer .right {float: left;}
|
||||
.footer .a_footer .right ul li {border-left: 1px solid #eaeaea;padding-left: 12px;float: left;margin-right: 30px;}
|
||||
.footer .a_footer .right ul li dl dt {margin-bottom: 10px;}
|
||||
.footer .a_footer .right ul li dl dt a{font-size: 18px;}
|
||||
.footer .a_footer .right ul li dl dd {margin-bottom: 10px;}
|
||||
.footer .a_footer .right ul li dl dd a {color: #555555}
|
||||
|
||||
.footer .weixin {position:absolute;right: 0;top: 25px;}
|
||||
|
||||
|
||||
.footer .beian {text-align: center;height: 40px;line-height: 40px;border-top: 1px solid #eaeaea}
|
@ -0,0 +1,534 @@
|
||||
@charset "utf-8";
|
||||
@import url(../layui-v2.6.6/layui/css/layui.css);
|
||||
*{
|
||||
margin: 0px;
|
||||
padding: 0px;
|
||||
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
|
||||
}
|
||||
a{
|
||||
text-decoration: none;
|
||||
}
|
||||
html{
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
overflow-x:hidden;
|
||||
overflow-y:auto;
|
||||
}
|
||||
body{
|
||||
width: 100%;
|
||||
min-height: 100%;
|
||||
background: #f1f1f1;
|
||||
/*background: #fff;*/
|
||||
}
|
||||
.x-red{
|
||||
color: red;
|
||||
}
|
||||
|
||||
.layui-form-switch{
|
||||
margin-top: 0px;
|
||||
}
|
||||
.layui-input:focus, .layui-textarea:focus {
|
||||
border-color: #189f92!important;
|
||||
}
|
||||
|
||||
.layui-fluid{
|
||||
padding:15px;
|
||||
}
|
||||
.x-nav{
|
||||
padding: 0 20px;
|
||||
position: relative;
|
||||
z-index: 99;
|
||||
border-bottom: 1px solid #e5e5e5;
|
||||
line-height: 39px;
|
||||
height: 39px;
|
||||
overflow: hidden;
|
||||
background: #fff;
|
||||
}
|
||||
.page{
|
||||
text-align: center;
|
||||
|
||||
}
|
||||
.page a{
|
||||
display: inline-block;
|
||||
background: #fff;
|
||||
color: #888;
|
||||
padding: 5px;
|
||||
min-width: 15px;
|
||||
border: 1px solid #E2E2E2;
|
||||
|
||||
}
|
||||
.page span{
|
||||
display: inline-block;
|
||||
padding: 5px;
|
||||
min-width: 15px;
|
||||
border: 1px solid #E2E2E2;
|
||||
}
|
||||
.page span.current{
|
||||
display: inline-block;
|
||||
background: #009688;
|
||||
color: #fff;
|
||||
padding: 5px;
|
||||
min-width: 15px;
|
||||
border: 1px solid #009688;
|
||||
}
|
||||
.page .pagination li{
|
||||
display: inline-block;
|
||||
margin-right: 5px;
|
||||
text-align: center;
|
||||
}
|
||||
.page .pagination li.active span{
|
||||
background: #009688;
|
||||
color: #fff;
|
||||
border: 1px solid #009688;
|
||||
|
||||
}
|
||||
|
||||
/*登录样式*/
|
||||
/*头部*/
|
||||
.container{
|
||||
width: 100%;
|
||||
height: 45px;
|
||||
background-color: #222;
|
||||
}
|
||||
.container a,.layui-nav .layui-nav-item a{
|
||||
color: #fff;
|
||||
}
|
||||
.container .logo a{
|
||||
background-color: rgba(0,0,0,0);
|
||||
}
|
||||
.container .logo a{
|
||||
float: left;
|
||||
font-size: 18px;
|
||||
padding-left: 20px;
|
||||
line-height: 45px;
|
||||
width: 200px;
|
||||
}
|
||||
.container .right{
|
||||
background-color:rgba(0,0,0,0);
|
||||
float: right;
|
||||
|
||||
}
|
||||
.container .left_open{
|
||||
height: 45px;
|
||||
float: left;
|
||||
margin-left: 10px;
|
||||
}
|
||||
.container .left_open i{
|
||||
display: block;
|
||||
background: rgba(255,255,255,0.1);
|
||||
width: 32px;
|
||||
height: 32px;
|
||||
line-height: 32px;
|
||||
border-radius: 3px;
|
||||
text-align: center;
|
||||
margin-top: 7px;
|
||||
cursor: pointer;
|
||||
}
|
||||
.container .left_open i:hover{
|
||||
background: rgba(255,255,255,0.3);
|
||||
}
|
||||
|
||||
.container .left{
|
||||
background-color:rgba(0,0,0,0);
|
||||
float: left;
|
||||
|
||||
}
|
||||
.container .layui-nav-item{
|
||||
line-height: 45px;
|
||||
}
|
||||
.container .layui-nav-more{
|
||||
top: 20px;
|
||||
}
|
||||
.container .layui-nav-child{
|
||||
top: 50px;
|
||||
}
|
||||
.container .layui-nav-child i{
|
||||
margin-right: 10px;
|
||||
}
|
||||
.layui-nav .layui-nav-item a{
|
||||
cursor: pointer;
|
||||
}
|
||||
.layui-nav .layui-nav-child a{
|
||||
color: #333;
|
||||
cursor: pointer;
|
||||
}
|
||||
.left-nav{
|
||||
position: absolute;
|
||||
top: 45px;
|
||||
bottom: 0px;
|
||||
/*bottom: 42px;*/
|
||||
left: 0;
|
||||
z-index: 2;
|
||||
padding-top: 10px;
|
||||
background-color: #EEEEEE;
|
||||
width: 220px;
|
||||
max-width: 220px;
|
||||
overflow: auto;
|
||||
overflow-x:hidden;
|
||||
overflow: hidden;
|
||||
|
||||
/*width: 0px;*/
|
||||
}
|
||||
#side-nav{
|
||||
width: 220px;
|
||||
}
|
||||
|
||||
.left-nav #nav li:hover > a{
|
||||
/*color: blue;*/
|
||||
}
|
||||
.left-nav #nav .current{
|
||||
background-color: rgba(0, 0, 0, 0.3);
|
||||
}
|
||||
.left-nav #nav li a{
|
||||
font-size: 14px;
|
||||
padding: 10px 15px 10px 15px;
|
||||
display: block;
|
||||
cursor: pointer;
|
||||
border-left: 4px solid transparent;
|
||||
transition: all 0.3s;
|
||||
}
|
||||
.left-nav a:hover{
|
||||
background: #009688 !important;
|
||||
color: #fff;
|
||||
border-color: #04564e !important;
|
||||
}
|
||||
.left-nav a.active{
|
||||
background: #009688 !important;
|
||||
color: #fff;
|
||||
border-color: #04564e !important;
|
||||
}
|
||||
.left-nav #nav li a cite{
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
.left-nav #nav li .sub-menu{
|
||||
display: none;
|
||||
}
|
||||
.left-nav #nav li .opened{
|
||||
display: block;
|
||||
}
|
||||
.left-nav #nav li .opened:hover{
|
||||
/*background: #fff ;*/
|
||||
}
|
||||
.left-nav #nav li .opened .current{
|
||||
|
||||
}
|
||||
.left-nav #nav li .sub-menu li:hover{
|
||||
/*color: blue;*/
|
||||
/*background: #fff ;*/
|
||||
}
|
||||
.left-nav #nav li .sub-menu li a{
|
||||
padding: 12px 15px 12px 30px;
|
||||
font-size: 14px;
|
||||
cursor: pointer;
|
||||
}
|
||||
.left-nav #nav li .sub-menu li .sub-menu li a{
|
||||
padding-left: 45px;
|
||||
}
|
||||
/*.left-nav #nav li .sub-menu li a:hover{
|
||||
color: #148cf1;
|
||||
}*/
|
||||
.left-nav #nav li .sub-menu li a i{
|
||||
font-size: 12px;
|
||||
}
|
||||
.left-nav #nav li a i{
|
||||
padding-right: 10px;
|
||||
line-height: 14px;
|
||||
}
|
||||
.left-nav #nav li .nav_right{
|
||||
float: right;
|
||||
font-size: 16px;
|
||||
}
|
||||
.x-slide_left {
|
||||
width: 17px;
|
||||
height: 61px;
|
||||
background: url(../images/icon.png) 0 0 no-repeat;
|
||||
position: absolute;
|
||||
top: 200px;
|
||||
left: 220px;
|
||||
cursor: pointer;
|
||||
z-index: 3;
|
||||
}
|
||||
.page-content{
|
||||
position: absolute;
|
||||
top: 45px;
|
||||
right: 0;
|
||||
/*bottom: 42px;*/
|
||||
bottom: 0px;
|
||||
left: 220px;
|
||||
overflow: hidden;
|
||||
z-index: 1;
|
||||
}
|
||||
.page-content-bg{
|
||||
position: absolute;
|
||||
top: 45px;
|
||||
right: 0;
|
||||
/*bottom: 42px;*/
|
||||
bottom: 0px;
|
||||
left: 220px;
|
||||
background: rgba(0,0,0,0.5);
|
||||
overflow: hidden;
|
||||
z-index: 100;
|
||||
display: none;
|
||||
}
|
||||
|
||||
.page-content .tab{
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
/*background: #EFEEF0;*/
|
||||
margin: 0px;
|
||||
}
|
||||
.page-content .layui-tab-title{
|
||||
/*padding-top: 5px;*/
|
||||
height: 35px;
|
||||
background: #EFEEF0 ;
|
||||
position: relative;
|
||||
z-index: 100;
|
||||
}
|
||||
.page-content .layui-tab-title li.home i{
|
||||
padding-right: 5px;
|
||||
}
|
||||
.page-content .layui-tab-title li.home .layui-tab-close{
|
||||
display: none;
|
||||
}
|
||||
.page-content .layui-tab-title li{
|
||||
line-height: 35px;
|
||||
}
|
||||
.page-content .layui-tab-title .layui-this:after{
|
||||
height: 36px;
|
||||
}
|
||||
.page-content .layui-tab-title li .layui-tab-close{
|
||||
border-radius: 50%;
|
||||
}
|
||||
.page-content .layui-tab-title .layui-this{
|
||||
background: #fff ;
|
||||
}
|
||||
.page-content .layui-tab-bar{
|
||||
height:34px;
|
||||
line-height: 35px;
|
||||
}
|
||||
.page-content .layui-tab-content{
|
||||
position: absolute;
|
||||
top: 36px;
|
||||
bottom: 0px;
|
||||
width: 100%;
|
||||
padding: 0px;
|
||||
overflow: hidden;
|
||||
}
|
||||
.page-content .layui-tab-content .layui-tab-item{
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
|
||||
}
|
||||
.page-content .layui-tab-content .layui-tab-item iframe{
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
|
||||
}
|
||||
.x-admin-carousel,.layui-carousel,.x-admin-carousel>[carousel-item]>* {
|
||||
background-color:#fff
|
||||
}
|
||||
|
||||
.x-admin-backlog .x-admin-backlog-body {
|
||||
display:block;
|
||||
padding:10px 15px;
|
||||
background-color:#f8f8f8;
|
||||
color:#999;
|
||||
border-radius:2px;
|
||||
transition:all .3s;
|
||||
-webkit-transition:all .3s
|
||||
}
|
||||
.x-admin-backlog-body h3 {
|
||||
padding-bottom:10px;
|
||||
font-size:12px
|
||||
}
|
||||
.x-admin-backlog-body p cite {
|
||||
font-style:normal;
|
||||
font-size:30px;
|
||||
font-weight:300;
|
||||
color:#009688
|
||||
}
|
||||
.x-admin-backlog-body:hover {
|
||||
background-color:#CFCFCF;
|
||||
color:#888
|
||||
}
|
||||
|
||||
.layui-table td, .layui-table th{
|
||||
min-width: 80px;
|
||||
}
|
||||
|
||||
table th, table td {
|
||||
word-break: break-all;
|
||||
}
|
||||
|
||||
/*404页面样式*/
|
||||
.fly-panel {
|
||||
margin-bottom: 15px;
|
||||
border-radius: 2px;
|
||||
/*background-color: #fff;*/
|
||||
box-shadow: 0 1px 2px 0 rgba(0,0,0,.05);
|
||||
}
|
||||
.fly-none {
|
||||
min-height: 600px;
|
||||
text-align: center;
|
||||
padding-top: 50px;
|
||||
color: #999;
|
||||
}
|
||||
.fly-none .layui-icon {
|
||||
line-height: 300px;
|
||||
font-size: 300px;
|
||||
color: #393D49;
|
||||
}
|
||||
.fly-none p {
|
||||
margin-top: 50px;
|
||||
padding: 0 15px;
|
||||
font-size: 20px;
|
||||
color: #999;
|
||||
font-weight: 300;
|
||||
}
|
||||
#tab_right{
|
||||
display: none;
|
||||
width: 80px;
|
||||
position: absolute;
|
||||
top: 35px;
|
||||
left: 0px;
|
||||
}
|
||||
#tab_right dl{
|
||||
top: 0px;
|
||||
}
|
||||
#tab_show{
|
||||
position: absolute;
|
||||
top: 36px;
|
||||
bottom: 0px;
|
||||
width: 100%;
|
||||
background:rgb(255, 255, 255,0);
|
||||
padding: 0px;
|
||||
overflow: hidden;
|
||||
display: none;
|
||||
}
|
||||
|
||||
|
||||
@media screen and (max-width: 768px){
|
||||
.fast-add{
|
||||
display: none;
|
||||
}
|
||||
.layui-nav .to-index{
|
||||
display: none;
|
||||
}
|
||||
.container .logo a{
|
||||
width: 140px;
|
||||
}
|
||||
.container .left_open {
|
||||
/*float: right;*/
|
||||
}
|
||||
.left-nav{
|
||||
width: 60px;
|
||||
}
|
||||
.left-nav #nav li a i{
|
||||
font-size: 18px;
|
||||
}
|
||||
.left-nav cite,.left-nav .nav_right{
|
||||
display: none;
|
||||
}
|
||||
.page-content{
|
||||
left: 60px;
|
||||
}
|
||||
.page-content .layui-tab-content .layui-tab-item{
|
||||
-webkit-overflow-scrolling: touch;
|
||||
overflow-y: scroll;
|
||||
}
|
||||
.x-so input.layui-input{
|
||||
width: 100%;
|
||||
margin: 10px;
|
||||
}
|
||||
}
|
||||
|
||||
/*精细版样式*/
|
||||
|
||||
.x-admin-sm{
|
||||
font-size: 12px;
|
||||
}
|
||||
.x-admin-sm body{
|
||||
font-size: 12px;
|
||||
}
|
||||
/*登录页面样式*/
|
||||
.x-admin-sm .login input[type=submit],.x-admin-sm .login input[type=button]{
|
||||
font-size: 14px;
|
||||
}
|
||||
.x-admin-sm .login input[type=text],
|
||||
.x-admin-sm .login input[type=file],
|
||||
.x-admin-sm .login input[type=password],
|
||||
.x-admin-sm .login input[type=email], .x-admin-sm select {
|
||||
font-size: 12px;
|
||||
}
|
||||
.x-admin-sm .login .message{
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
.x-admin-sm .layui-table td, .x-admin-sm .layui-table th{
|
||||
font-size: 12px;
|
||||
}
|
||||
.x-admin-sm .layui-elem-field legend{
|
||||
font-size: 18px;
|
||||
}
|
||||
|
||||
.x-admin-sm .x-admin-backlog-body p cite{
|
||||
font-size: 24px;
|
||||
}
|
||||
.x-admin-sm .left-nav #nav li a cite{
|
||||
font-size: 12px;
|
||||
}
|
||||
.x-admin-sm .iconfont{
|
||||
font-size: 14px;
|
||||
}
|
||||
.x-admin-sm .layui-tab-title li{
|
||||
font-size: 12px;
|
||||
}
|
||||
.x-admin-sm .layui-icon{
|
||||
font-size: 14px;
|
||||
}
|
||||
.x-admin-sm .layui-nav *{
|
||||
font-size: 12px;
|
||||
}
|
||||
.x-admin-sm .layui-breadcrumb>*{
|
||||
font-size: 12px;
|
||||
}
|
||||
.x-admin-sm .layui-btn,.x-admin-sm .layui-btn-xs,.x-admin-sm .layui-btn-sm{
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
.x-admin-sm .layui-laydate{
|
||||
font-size: 12px;
|
||||
}
|
||||
.x-admin-sm .layui-btn{
|
||||
height: 30px;
|
||||
line-height: 30px;
|
||||
padding: 0 10px;
|
||||
}
|
||||
|
||||
.x-admin-sm .layui-btn-lg{
|
||||
height: 38px;
|
||||
line-height: 38px;
|
||||
padding: 0 18px;
|
||||
font-size: 14px;
|
||||
}
|
||||
.x-admin-sm .layui-layer-title,.x-admin-sm .layui-layer-dialog .layui-layer-content{
|
||||
font-size: 12px;
|
||||
}
|
||||
.x-admin-sm .layui-input,.x-admin-sm .layui-select,.x-admin-sm .layui-textarea{
|
||||
height: 30px;
|
||||
}
|
||||
|
||||
.x-admin-sm .layui-form-pane .layui-form-label{
|
||||
height: 30px;
|
||||
line-height: 14px;
|
||||
}
|
||||
.x-admin-sm .layui-form-checkbox span{
|
||||
font-size: 12px;
|
||||
}
|
||||
.x-admin-sm .fly-none .layui-icon {
|
||||
line-height: 300px;
|
||||
font-size: 300px;
|
||||
color: #393D49;
|
||||
}
|
||||
|
After Width: | Height: | Size: 22 KiB |
After Width: | Height: | Size: 53 KiB |
After Width: | Height: | Size: 213 KiB |
After Width: | Height: | Size: 93 KiB |
After Width: | Height: | Size: 126 KiB |
After Width: | Height: | Size: 186 KiB |
After Width: | Height: | Size: 63 KiB |