mirror of
https://gitee.com/orangeform/orange-admin.git
synced 2026-01-17 18:46:36 +08:00
commit:添加多对多关联中间表更新支持,功能位于 班级管理 -> 课程 -> 编辑课程顺序
This commit is contained in:
216
orange-demo-multi-service/common/common-core/common-core.iml
Normal file
216
orange-demo-multi-service/common/common-core/common-core.iml
Normal file
@@ -0,0 +1,216 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
|
||||
<component name="FacetManager">
|
||||
<facet type="Spring" name="Spring">
|
||||
<configuration />
|
||||
</facet>
|
||||
<facet type="web" name="Web">
|
||||
<configuration>
|
||||
<webroots />
|
||||
</configuration>
|
||||
</facet>
|
||||
</component>
|
||||
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8">
|
||||
<output url="file://$MODULE_DIR$/target/classes" />
|
||||
<output-test url="file://$MODULE_DIR$/target/test-classes" />
|
||||
<content url="file://$MODULE_DIR$">
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/target" />
|
||||
</content>
|
||||
<orderEntry type="inheritedJdk" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-web:2.2.5.RELEASE" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter:2.2.5.RELEASE" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot:2.2.5.RELEASE" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-logging:2.2.5.RELEASE" level="project" />
|
||||
<orderEntry type="library" name="Maven: ch.qos.logback:logback-classic:1.2.3" level="project" />
|
||||
<orderEntry type="library" name="Maven: ch.qos.logback:logback-core:1.2.3" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-to-slf4j:2.12.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: jakarta.annotation:jakarta.annotation-api:1.3.5" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.yaml:snakeyaml:1.25" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-json:2.2.5.RELEASE" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.fasterxml.jackson.datatype:jackson-datatype-jdk8:2.10.2" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.10.2" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.fasterxml.jackson.module:jackson-module-parameter-names:2.10.2" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-tomcat:2.2.5.RELEASE" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-core:9.0.31" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-el:9.0.31" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-websocket:9.0.31" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-validation:2.2.5.RELEASE" level="project" />
|
||||
<orderEntry type="library" name="Maven: jakarta.validation:jakarta.validation-api:2.0.2" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.hibernate.validator:hibernate-validator:6.0.18.Final" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.jboss.logging:jboss-logging:3.4.1.Final" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.fasterxml:classmate:1.5.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.springframework:spring-web:5.2.4.RELEASE" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.springframework:spring-beans:5.2.4.RELEASE" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.springframework:spring-webmvc:5.2.4.RELEASE" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.springframework:spring-context:5.2.4.RELEASE" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.springframework:spring-expression:5.2.4.RELEASE" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.google.guava:guava:28.2-android" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.google.guava:failureaccess:1.0.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.google.code.findbugs:jsr305:3.0.2" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.checkerframework:checker-compat-qual:2.5.5" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.google.errorprone:error_prone_annotations:2.3.4" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.google.j2objc:j2objc-annotations:1.3" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.commons:commons-lang3:3.9" level="project" />
|
||||
<orderEntry type="library" name="Maven: commons-codec:commons-codec:1.13" level="project" />
|
||||
<orderEntry type="library" name="Maven: commons-io:commons-io:2.6" level="project" />
|
||||
<orderEntry type="library" name="Maven: commons-fileupload:commons-fileupload:1.3.3" level="project" />
|
||||
<orderEntry type="library" name="Maven: joda-time:joda-time:2.10.5" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.commons:commons-collections4:4.4" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.commons:commons-csv:1.8" level="project" />
|
||||
<orderEntry type="library" name="Maven: cn.hutool:hutool-all:5.1.5" level="project" />
|
||||
<orderEntry type="library" name="Maven: io.jsonwebtoken:jjwt:0.9.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.10.2" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.10.2" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-core:2.10.2" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.alibaba:fastjson:1.2.70" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.github.ben-manes.caffeine:caffeine:2.8.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.checkerframework:checker-qual:3.1.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: cn.jimmyshi:bean-query:1.1.5" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.hamcrest:hamcrest-all:1.3" level="project" />
|
||||
<orderEntry type="library" name="Maven: commons-beanutils:commons-beanutils:1.9.3" level="project" />
|
||||
<orderEntry type="library" name="Maven: commons-collections:commons-collections:3.2.2" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.slf4j:jcl-over-slf4j:1.7.30" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.30" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.poi:poi-ooxml:4.1.2" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.poi:poi:3.17" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.poi:poi-ooxml-schemas:4.1.2" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.xmlbeans:xmlbeans:3.1.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.commons:commons-compress:1.19" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.github.virtuald:curvesapi:1.06" level="project" />
|
||||
<orderEntry type="library" scope="RUNTIME" name="Maven: mysql:mysql-connector-java:8.0.19" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.alibaba:druid-spring-boot-starter:1.1.22" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.alibaba:druid:1.1.22" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-autoconfigure:2.2.5.RELEASE" level="project" />
|
||||
<orderEntry type="library" name="Maven: tk.mybatis:mapper-spring-boot-starter:2.1.5" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-jdbc:2.2.5.RELEASE" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.zaxxer:HikariCP:3.4.2" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.springframework:spring-jdbc:5.2.4.RELEASE" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.springframework:spring-tx:5.2.4.RELEASE" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.mybatis:mybatis:3.4.6" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.mybatis:mybatis-spring:1.3.2" level="project" />
|
||||
<orderEntry type="library" name="Maven: tk.mybatis:mapper-core:1.1.5" level="project" />
|
||||
<orderEntry type="library" name="Maven: javax.persistence:persistence-api:1.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: tk.mybatis:mapper-base:1.1.5" level="project" />
|
||||
<orderEntry type="library" name="Maven: tk.mybatis:mapper-weekend:1.1.5" level="project" />
|
||||
<orderEntry type="library" name="Maven: tk.mybatis:mapper-spring:1.1.5" level="project" />
|
||||
<orderEntry type="library" name="Maven: tk.mybatis:mapper-extra:1.1.5" level="project" />
|
||||
<orderEntry type="library" name="Maven: tk.mybatis:mapper-spring-boot-autoconfigure:2.1.5" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.github.pagehelper:pagehelper-spring-boot-starter:1.2.13" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.mybatis.spring.boot:mybatis-spring-boot-starter:2.1.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.mybatis.spring.boot:mybatis-spring-boot-autoconfigure:2.1.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.github.pagehelper:pagehelper-spring-boot-autoconfigure:1.2.13" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.github.pagehelper:pagehelper:5.1.11" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.github.jsqlparser:jsqlparser:2.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-freemarker:2.2.5.RELEASE" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.freemarker:freemarker:2.3.29" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.springframework:spring-context-support:5.2.4.RELEASE" level="project" />
|
||||
<orderEntry type="library" name="Maven: javax.servlet:javax.servlet-api:4.0.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-log4j2:2.2.5.RELEASE" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-slf4j-impl:2.12.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-api:2.12.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-core:2.12.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-jul:2.12.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.slf4j:jul-to-slf4j:1.7.30" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-aop:2.2.5.RELEASE" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.springframework:spring-aop:5.2.4.RELEASE" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.aspectj:aspectjweaver:1.9.5" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-cache:2.2.5.RELEASE" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-configuration-processor:2.2.5.RELEASE" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-actuator:2.2.5.RELEASE" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-actuator-autoconfigure:2.2.5.RELEASE" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-actuator:2.2.5.RELEASE" level="project" />
|
||||
<orderEntry type="library" name="Maven: io.micrometer:micrometer-core:1.3.5" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.hdrhistogram:HdrHistogram:2.1.11" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.latencyutils:LatencyUtils:2.0.3" level="project" />
|
||||
<orderEntry type="library" name="Maven: de.codecentric:spring-boot-admin-starter-client:2.2.3" level="project" />
|
||||
<orderEntry type="library" name="Maven: de.codecentric:spring-boot-admin-client:2.2.3" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.alibaba.cloud:spring-cloud-starter-alibaba-nacos-config:2.2.1.RELEASE" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.alibaba.spring:spring-context-support:1.0.6" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.alibaba.nacos:nacos-client:1.2.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.alibaba.nacos:nacos-common:1.2.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.alibaba.nacos:nacos-api:1.2.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: io.prometheus:simpleclient:0.5.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.springframework.cloud:spring-cloud-commons:2.2.2.RELEASE" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.springframework.security:spring-security-crypto:5.2.2.RELEASE" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.springframework.cloud:spring-cloud-context:2.2.2.RELEASE" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.springframework.cloud:spring-cloud-starter-openfeign:2.2.2.RELEASE" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.springframework.cloud:spring-cloud-starter:2.2.2.RELEASE" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.springframework.security:spring-security-rsa:1.0.9.RELEASE" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.bouncycastle:bcpkix-jdk15on:1.59" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.bouncycastle:bcprov-jdk15on:1.59" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.springframework.cloud:spring-cloud-openfeign-core:2.2.2.RELEASE" level="project" />
|
||||
<orderEntry type="library" name="Maven: io.github.openfeign.form:feign-form-spring:3.8.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: io.github.openfeign.form:feign-form:3.8.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: io.github.openfeign:feign-core:10.7.4" level="project" />
|
||||
<orderEntry type="library" name="Maven: io.github.openfeign:feign-slf4j:10.7.4" level="project" />
|
||||
<orderEntry type="library" name="Maven: io.github.openfeign:feign-hystrix:10.7.4" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.netflix.archaius:archaius-core:0.7.6" level="project" />
|
||||
<orderEntry type="library" name="Maven: io.github.openfeign:feign-httpclient:10.7.4" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.httpcomponents:httpclient:4.5.11" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.httpcomponents:httpcore:4.4.13" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.springframework.cloud:spring-cloud-starter-netflix-hystrix:2.2.2.RELEASE" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.springframework.cloud:spring-cloud-netflix-hystrix:2.2.2.RELEASE" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.springframework.cloud:spring-cloud-netflix-ribbon:2.2.2.RELEASE" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.springframework.cloud:spring-cloud-netflix-archaius:2.2.2.RELEASE" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.springframework.cloud:spring-cloud-starter-netflix-archaius:2.2.2.RELEASE" level="project" />
|
||||
<orderEntry type="library" name="Maven: commons-configuration:commons-configuration:1.8" level="project" />
|
||||
<orderEntry type="library" name="Maven: commons-lang:commons-lang:2.6" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.netflix.hystrix:hystrix-core:1.5.18" level="project" />
|
||||
<orderEntry type="library" name="Maven: io.reactivex:rxjava:1.3.8" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.netflix.hystrix:hystrix-serialization:1.5.18" level="project" />
|
||||
<orderEntry type="library" scope="RUNTIME" name="Maven: com.fasterxml.jackson.module:jackson-module-afterburner:2.10.2" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.netflix.hystrix:hystrix-metrics-event-stream:1.5.18" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.netflix.hystrix:hystrix-javanica:1.5.18" level="project" />
|
||||
<orderEntry type="library" scope="RUNTIME" name="Maven: org.ow2.asm:asm:5.0.4" level="project" />
|
||||
<orderEntry type="library" name="Maven: io.reactivex:rxjava-reactive-streams:1.2.1" level="project" />
|
||||
<orderEntry type="library" scope="RUNTIME" name="Maven: org.reactivestreams:reactive-streams:1.0.3" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.mapstruct:mapstruct:1.3.1.Final" level="project" />
|
||||
<orderEntry type="library" scope="PROVIDED" name="Maven: org.mapstruct:mapstruct-processor:1.3.1.Final" level="project" />
|
||||
<orderEntry type="library" scope="PROVIDED" name="Maven: org.projectlombok:lombok:1.18.12" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.curator:curator-recipes:4.3.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.curator:curator-framework:4.0.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.curator:curator-client:4.0.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.zookeeper:zookeeper:3.5.3-beta" level="project" />
|
||||
<orderEntry type="library" name="Maven: commons-cli:commons-cli:1.4" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.kafka:kafka-clients:2.4.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.github.luben:zstd-jni:1.4.3-1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.lz4:lz4-java:1.6.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.xerial.snappy:snappy-java:1.1.7.3" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.scala-lang:scala-library:2.12.10" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.lmax:disruptor:3.4.2" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Maven: org.springframework.boot:spring-boot-starter-test:2.2.5.RELEASE" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Maven: org.springframework.boot:spring-boot-test:2.2.5.RELEASE" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Maven: org.springframework.boot:spring-boot-test-autoconfigure:2.2.5.RELEASE" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Maven: com.jayway.jsonpath:json-path:2.4.0" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Maven: net.minidev:json-smart:2.3" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Maven: net.minidev:accessors-smart:1.2" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Maven: jakarta.xml.bind:jakarta.xml.bind-api:2.3.2" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Maven: jakarta.activation:jakarta.activation-api:1.2.2" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Maven: org.junit.jupiter:junit-jupiter:5.5.2" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Maven: org.junit.jupiter:junit-jupiter-api:5.5.2" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Maven: org.opentest4j:opentest4j:1.2.0" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Maven: org.junit.platform:junit-platform-commons:1.5.2" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Maven: org.junit.jupiter:junit-jupiter-params:5.5.2" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Maven: org.junit.jupiter:junit-jupiter-engine:5.5.2" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Maven: org.junit.vintage:junit-vintage-engine:5.5.2" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Maven: org.apiguardian:apiguardian-api:1.1.0" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Maven: org.junit.platform:junit-platform-engine:1.5.2" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Maven: junit:junit:4.12" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Maven: org.mockito:mockito-junit-jupiter:3.1.0" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Maven: org.assertj:assertj-core:3.13.2" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Maven: org.hamcrest:hamcrest:2.1" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Maven: org.mockito:mockito-core:3.1.0" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Maven: net.bytebuddy:byte-buddy:1.10.8" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Maven: net.bytebuddy:byte-buddy-agent:1.10.8" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Maven: org.objenesis:objenesis:2.6" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Maven: org.skyscreamer:jsonassert:1.5.0" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Maven: com.vaadin.external.google:android-json:0.0.20131108.vaadin1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.springframework:spring-core:5.2.4.RELEASE" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.springframework:spring-jcl:5.2.4.RELEASE" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Maven: org.springframework:spring-test:5.2.4.RELEASE" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Maven: org.xmlunit:xmlunit-core:2.6.3" level="project" />
|
||||
</component>
|
||||
</module>
|
||||
@@ -106,15 +106,5 @@
|
||||
<artifactId>pagehelper-spring-boot-starter</artifactId>
|
||||
<version>${pagehelper.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>redis.clients</groupId>
|
||||
<artifactId>jedis</artifactId>
|
||||
<version>${jedis.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.redisson</groupId>
|
||||
<artifactId>redisson</artifactId>
|
||||
<version>${redisson.version}</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</project>
|
||||
|
||||
@@ -11,8 +11,8 @@ import java.util.Date;
|
||||
/**
|
||||
* Controller的环绕拦截类。
|
||||
*
|
||||
* @author Orange Team
|
||||
* @date 2020-08-08
|
||||
* @author Jerry
|
||||
* @date 2020-09-27
|
||||
*/
|
||||
@ControllerAdvice
|
||||
public class MyControllerAdvice {
|
||||
|
||||
@@ -21,8 +21,8 @@ import java.util.concurrent.TimeoutException;
|
||||
* 业务层的异常处理类,这里只是给出最通用的Exception的捕捉,今后可以根据业务需要,
|
||||
* 用不同的函数,处理不同类型的异常。
|
||||
*
|
||||
* @author Orange Team
|
||||
* @date 2020-08-08
|
||||
* @author Jerry
|
||||
* @date 2020-09-27
|
||||
*/
|
||||
@Slf4j
|
||||
@RestControllerAdvice("com.orange.demo")
|
||||
|
||||
@@ -5,8 +5,8 @@ import java.lang.annotation.*;
|
||||
/**
|
||||
* 主要用于标记逻辑删除字段。
|
||||
*
|
||||
* @author Orange Team
|
||||
* @date 2020-08-08
|
||||
* @author Jerry
|
||||
* @date 2020-09-27
|
||||
*/
|
||||
@Target({ElementType.FIELD})
|
||||
@Retention(RetentionPolicy.RUNTIME)
|
||||
|
||||
@@ -5,8 +5,8 @@ import java.lang.annotation.*;
|
||||
/**
|
||||
* 主要用于标记更新字段。
|
||||
*
|
||||
* @author Orange Team
|
||||
* @date 2020-08-08
|
||||
* @author Jerry
|
||||
* @date 2020-09-27
|
||||
*/
|
||||
@Target({ElementType.FIELD})
|
||||
@Retention(RetentionPolicy.RUNTIME)
|
||||
|
||||
@@ -5,8 +5,8 @@ import java.lang.annotation.*;
|
||||
/**
|
||||
* 主要用于标记Service所依赖的数据源类型。
|
||||
*
|
||||
* @author Orange Team
|
||||
* @date 2020-08-08
|
||||
* @author Jerry
|
||||
* @date 2020-09-27
|
||||
*/
|
||||
@Target(ElementType.TYPE)
|
||||
@Retention(RetentionPolicy.RUNTIME)
|
||||
|
||||
@@ -8,8 +8,8 @@ import java.lang.annotation.Target;
|
||||
/**
|
||||
* 标记Controller中的方法参数,参数解析器会根据该注解将请求中的JSON数据,映射到参数中的绑定字段。
|
||||
*
|
||||
* @author Orange Team
|
||||
* @date 2020-08-08
|
||||
* @author Jerry
|
||||
* @date 2020-09-27
|
||||
*/
|
||||
@Target(ElementType.PARAMETER)
|
||||
@Retention(RetentionPolicy.RUNTIME)
|
||||
|
||||
@@ -5,8 +5,8 @@ import java.lang.annotation.*;
|
||||
/**
|
||||
* 主要用于标记无需Token验证的接口
|
||||
*
|
||||
* @author Orange Team
|
||||
* @date 2020-08-08
|
||||
* @author Jerry
|
||||
* @date 2020-09-27
|
||||
*/
|
||||
@Target({ElementType.METHOD, ElementType.TYPE})
|
||||
@Retention(RetentionPolicy.RUNTIME)
|
||||
|
||||
@@ -5,8 +5,8 @@ import java.lang.annotation.*;
|
||||
/**
|
||||
* 标识Model和常量字典之间的关联关系。
|
||||
*
|
||||
* @author Orange Team
|
||||
* @date 2020-08-08
|
||||
* @author Jerry
|
||||
* @date 2020-09-27
|
||||
*/
|
||||
@Target({ElementType.FIELD, ElementType.METHOD})
|
||||
@Retention(RetentionPolicy.RUNTIME)
|
||||
|
||||
@@ -7,8 +7,8 @@ import java.lang.annotation.*;
|
||||
/**
|
||||
* 标识Model之间的字典关联关系。
|
||||
*
|
||||
* @author Orange Team
|
||||
* @date 2020-08-08
|
||||
* @author Jerry
|
||||
* @date 2020-09-27
|
||||
*/
|
||||
@Target({ElementType.FIELD, ElementType.METHOD})
|
||||
@Retention(RetentionPolicy.RUNTIME)
|
||||
|
||||
@@ -5,8 +5,8 @@ import java.lang.annotation.*;
|
||||
/**
|
||||
* 标注多对多的Model关系。
|
||||
*
|
||||
* @author Orange Team
|
||||
* @date 2020-08-08
|
||||
* @author Jerry
|
||||
* @date 2020-09-27
|
||||
*/
|
||||
@Target({ElementType.FIELD, ElementType.METHOD})
|
||||
@Retention(RetentionPolicy.RUNTIME)
|
||||
|
||||
@@ -7,8 +7,8 @@ import java.lang.annotation.*;
|
||||
/**
|
||||
* 主要用于多对多的Model关系。标注通过从表关联字段或者关联表关联字段计算主表聚合计算字段的规则。
|
||||
*
|
||||
* @author Orange Team
|
||||
* @date 2020-08-08
|
||||
* @author Jerry
|
||||
* @date 2020-09-27
|
||||
*/
|
||||
@Target({ElementType.FIELD, ElementType.METHOD})
|
||||
@Retention(RetentionPolicy.RUNTIME)
|
||||
|
||||
@@ -7,8 +7,8 @@ import java.lang.annotation.*;
|
||||
/**
|
||||
* 主要用于一对多的Model关系。标注通过从表关联字段计算主表聚合计算字段的规则。
|
||||
*
|
||||
* @author Orange Team
|
||||
* @date 2020-08-08
|
||||
* @author Jerry
|
||||
* @date 2020-09-27
|
||||
*/
|
||||
@Target({ElementType.FIELD, ElementType.METHOD})
|
||||
@Retention(RetentionPolicy.RUNTIME)
|
||||
|
||||
@@ -7,8 +7,8 @@ import java.lang.annotation.*;
|
||||
/**
|
||||
* 标识Model之间的一对一关联关系。
|
||||
*
|
||||
* @author Orange Team
|
||||
* @date 2020-08-08
|
||||
* @author Jerry
|
||||
* @date 2020-09-27
|
||||
*/
|
||||
@Target({ElementType.FIELD, ElementType.METHOD})
|
||||
@Retention(RetentionPolicy.RUNTIME)
|
||||
|
||||
@@ -26,8 +26,8 @@ import java.util.List;
|
||||
/**
|
||||
* 记录接口的链路traceId、请求参数、应答数据、错误信息和调用时长。
|
||||
*
|
||||
* @author Orange Team
|
||||
* @date 2020-08-08
|
||||
* @author Jerry
|
||||
* @date 2020-09-27
|
||||
*/
|
||||
@Aspect
|
||||
@Component
|
||||
|
||||
@@ -13,8 +13,8 @@ import java.util.Set;
|
||||
*
|
||||
* @param <D> 主DomainDto域数据对象类型。
|
||||
* @param <K> 主键类型。
|
||||
* @author Orange Team
|
||||
* @date 2020-08-08
|
||||
* @author Jerry
|
||||
* @date 2020-09-27
|
||||
*/
|
||||
public interface BaseClient<D, K> {
|
||||
|
||||
|
||||
@@ -32,8 +32,8 @@ import java.util.stream.Collectors;
|
||||
* @param <M> 主Model实体对象类型。
|
||||
* @param <D> 主DomainDto域对象类型。
|
||||
* @param <K> 主键类型。
|
||||
* @author Orange Team
|
||||
* @date 2020-08-08
|
||||
* @author Jerry
|
||||
* @date 2020-09-27
|
||||
*/
|
||||
@Slf4j
|
||||
public abstract class BaseController<M, D, K> {
|
||||
|
||||
@@ -13,8 +13,8 @@ import java.util.Map;
|
||||
* 数据访问对象的基类。
|
||||
*
|
||||
* @param <M> 主Model实体对象。
|
||||
* @author Orange Team
|
||||
* @date 2020-08-08
|
||||
* @author Jerry
|
||||
* @date 2020-09-27
|
||||
*/
|
||||
@RegisterMapper
|
||||
public interface BaseDaoMapper<M> extends Mapper<M>, InsertListMapper<M> {
|
||||
|
||||
@@ -11,8 +11,8 @@ import java.util.stream.Collectors;
|
||||
*
|
||||
* @param <D> Domain域对象类型。
|
||||
* @param <M> Model实体对象类型。
|
||||
* @author Orange Team
|
||||
* @date 2020-08-08
|
||||
* @author Jerry
|
||||
* @date 2020-09-27
|
||||
*/
|
||||
public interface BaseModelMapper<D, M> {
|
||||
|
||||
|
||||
@@ -7,8 +7,8 @@ import java.util.List;
|
||||
* 由于没有实际的数据转换,因此同时保证了代码统一和执行效率。
|
||||
*
|
||||
* @param <M> 数据类型。
|
||||
* @author Orange Team
|
||||
* @date 2020-08-08
|
||||
* @author Jerry
|
||||
* @date 2020-09-27
|
||||
*/
|
||||
public class DummyModelMapper<M> implements BaseModelMapper<M, M> {
|
||||
|
||||
|
||||
@@ -16,8 +16,8 @@ import java.util.List;
|
||||
* @param <M> Model实体对象的类型。
|
||||
* @param <D> Model对应的DomainDto域对象类型。
|
||||
* @param <K> Model对象主键的类型。
|
||||
* @author Orange Team
|
||||
* @date 2020-08-08
|
||||
* @author Jerry
|
||||
* @date 2020-09-27
|
||||
*/
|
||||
@Slf4j
|
||||
public abstract class BaseDictService<M, D, K> extends BaseService<M, D, K> {
|
||||
|
||||
@@ -39,8 +39,8 @@ import static java.util.stream.Collectors.*;
|
||||
* @param <M> Model对象的类型。
|
||||
* @param <D> Model对应的Dto对象类型。
|
||||
* @param <K> Model对象主键的类型。
|
||||
* @author Orange Team
|
||||
* @date 2020-08-08
|
||||
* @author Jerry
|
||||
* @date 2020-09-27
|
||||
*/
|
||||
@Slf4j
|
||||
public abstract class BaseService<M, D, K> {
|
||||
|
||||
@@ -1,83 +0,0 @@
|
||||
package com.orange.demo.common.core.cache;
|
||||
|
||||
import com.github.benmanes.caffeine.cache.Caffeine;
|
||||
import org.springframework.cache.CacheManager;
|
||||
import org.springframework.cache.annotation.EnableCaching;
|
||||
import org.springframework.cache.caffeine.CaffeineCache;
|
||||
import org.springframework.cache.support.SimpleCacheManager;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
/**
|
||||
* 使用Caffeine作为本地缓存库。
|
||||
*
|
||||
* @author Orange Team
|
||||
* @date 2020-08-08
|
||||
*/
|
||||
@Configuration
|
||||
@EnableCaching
|
||||
public class CacheConfig {
|
||||
|
||||
private static final int DEFAULT_MAXSIZE = 10000;
|
||||
private static final int DEFAULT_TTL = 3600;
|
||||
|
||||
/**
|
||||
* 定义cache名称、超时时长秒、最大个数。
|
||||
* 每个cache缺省3600秒过期,最大个数1000。
|
||||
*/
|
||||
public enum CacheEnum {
|
||||
|
||||
/**
|
||||
* 缺省全局缓存(时间是24小时)。
|
||||
*/
|
||||
GLOBAL_CACHE(86400, 20000);
|
||||
|
||||
CacheEnum() {
|
||||
}
|
||||
|
||||
CacheEnum(int ttl, int maxSize) {
|
||||
this.ttl = ttl;
|
||||
this.maxSize = maxSize;
|
||||
}
|
||||
|
||||
/**
|
||||
* 缓存的最大数量。
|
||||
*/
|
||||
private int maxSize = DEFAULT_MAXSIZE;
|
||||
/**
|
||||
* 缓存的时长(单位:秒)
|
||||
*/
|
||||
private int ttl = DEFAULT_TTL;
|
||||
|
||||
public int getMaxSize() {
|
||||
return maxSize;
|
||||
}
|
||||
|
||||
public int getTtl() {
|
||||
return ttl;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 个性化配置缓存。
|
||||
*/
|
||||
@Bean
|
||||
public CacheManager cacheManager() {
|
||||
SimpleCacheManager manager = new SimpleCacheManager();
|
||||
//把各个cache注册到cacheManager中,CaffeineCache实现了org.springframework.cache.Cache接口
|
||||
ArrayList<CaffeineCache> caches = new ArrayList<>();
|
||||
for (CacheEnum c : CacheEnum.values()) {
|
||||
caches.add(new CaffeineCache(c.name(),
|
||||
Caffeine.newBuilder().recordStats()
|
||||
.expireAfterAccess(c.getTtl(), TimeUnit.SECONDS)
|
||||
.maximumSize(c.getMaxSize())
|
||||
.build())
|
||||
);
|
||||
}
|
||||
manager.setCaches(caches);
|
||||
return manager;
|
||||
}
|
||||
}
|
||||
@@ -8,8 +8,8 @@ import java.util.Set;
|
||||
*
|
||||
* @param <K> 字典表主键类型。
|
||||
* @param <V> 字典表对象类型。
|
||||
* @author Orange Team
|
||||
* @date 2020-08-08
|
||||
* @author Jerry
|
||||
* @date 2020-09-27
|
||||
*/
|
||||
public interface DictionaryCache<K, V> {
|
||||
|
||||
|
||||
@@ -8,8 +8,8 @@ import java.util.function.Function;
|
||||
*
|
||||
* @param <K> 字典表主键类型。
|
||||
* @param <V> 字典表对象类型。
|
||||
* @author Orange Team
|
||||
* @date 2020-08-08
|
||||
* @author Jerry
|
||||
* @date 2020-09-27
|
||||
*/
|
||||
public class MapDictionaryCache<K, V> implements DictionaryCache<K, V> {
|
||||
|
||||
|
||||
@@ -11,8 +11,8 @@ import java.util.function.Function;
|
||||
*
|
||||
* @param <K> 字典表主键类型。
|
||||
* @param <V> 字典表对象类型。
|
||||
* @author Orange Team
|
||||
* @date 2020-08-08
|
||||
* @author Jerry
|
||||
* @date 2020-09-27
|
||||
*/
|
||||
public class MapTreeDictionaryCache<K, V> extends MapDictionaryCache<K, V> {
|
||||
|
||||
|
||||
@@ -20,8 +20,8 @@ import java.util.List;
|
||||
/**
|
||||
* 所有的项目拦截器、参数解析器、消息对象转换器都在这里集中配置。
|
||||
*
|
||||
* @author Orange Team
|
||||
* @date 2020-08-08
|
||||
* @author Jerry
|
||||
* @date 2020-09-27
|
||||
*/
|
||||
@Configuration
|
||||
public class CommonWebMvcConfig implements WebMvcConfigurer {
|
||||
|
||||
@@ -7,8 +7,8 @@ import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
|
||||
/**
|
||||
* 目前用于用户密码加密,UAA接入应用客户端的client_secret加密。
|
||||
*
|
||||
* @author Orange Team
|
||||
* @date 2020-08-08
|
||||
* @author Jerry
|
||||
* @date 2020-09-27
|
||||
*/
|
||||
@Configuration
|
||||
public class EncryptConfig {
|
||||
|
||||
@@ -10,8 +10,8 @@ import org.springframework.context.annotation.Configuration;
|
||||
/**
|
||||
* FeignClient的配置对象。
|
||||
*
|
||||
* @author Orange Team
|
||||
* @date 2020-08-08
|
||||
* @author Jerry
|
||||
* @date 2020-09-27
|
||||
*/
|
||||
@Configuration
|
||||
public class FeignConfig implements RequestInterceptor {
|
||||
|
||||
@@ -23,8 +23,8 @@ import java.util.List;
|
||||
/**
|
||||
* RestTemplate连接池配置对象。
|
||||
*
|
||||
* @author Orange Team
|
||||
* @date 2020-08-08
|
||||
* @author Jerry
|
||||
* @date 2020-09-27
|
||||
*/
|
||||
@Configuration
|
||||
public class RestTemplateConfig {
|
||||
|
||||
@@ -9,8 +9,8 @@ import org.springframework.context.annotation.Configuration;
|
||||
/**
|
||||
* tomcat配置对象。当前配置禁用了PUT和DELETE方法,防止渗透攻击。
|
||||
*
|
||||
* @author Orange Team
|
||||
* @date 2020-08-08
|
||||
* @author Jerry
|
||||
* @date 2020-09-27
|
||||
*/
|
||||
@Configuration
|
||||
public class TomcatConfig {
|
||||
|
||||
@@ -3,8 +3,8 @@ package com.orange.demo.common.core.constant;
|
||||
/**
|
||||
* 在跨服务调用时,需要传递的聚合分类常量对象。
|
||||
*
|
||||
* @author Orange Team
|
||||
* @date 2020-08-08
|
||||
* @author Jerry
|
||||
* @date 2020-09-27
|
||||
*/
|
||||
public final class AggregationKind {
|
||||
|
||||
|
||||
@@ -6,8 +6,8 @@ import java.util.Map;
|
||||
/**
|
||||
* 聚合计算的常量类型对象。
|
||||
*
|
||||
* @author Orange Team
|
||||
* @date 2020-08-08
|
||||
* @author Jerry
|
||||
* @date 2020-09-27
|
||||
*/
|
||||
public final class AggregationType {
|
||||
|
||||
|
||||
@@ -3,8 +3,8 @@ package com.orange.demo.common.core.constant;
|
||||
/**
|
||||
* 应用程序的常量声明对象。
|
||||
*
|
||||
* @author Orange Team
|
||||
* @date 2020-08-08
|
||||
* @author Jerry
|
||||
* @date 2020-09-27
|
||||
*/
|
||||
public final class ApplicationConstant {
|
||||
|
||||
|
||||
@@ -3,8 +3,8 @@ package com.orange.demo.common.core.constant;
|
||||
/**
|
||||
* 返回应答中的错误代码和错误信息。
|
||||
*
|
||||
* @author Orange Team
|
||||
* @date 2020-08-08
|
||||
* @author Jerry
|
||||
* @date 2020-09-27
|
||||
*/
|
||||
public enum ErrorCodeEnum {
|
||||
|
||||
|
||||
@@ -3,8 +3,8 @@ package com.orange.demo.common.core.constant;
|
||||
/**
|
||||
* 数据记录逻辑删除标记常量。
|
||||
*
|
||||
* @author Orange Team
|
||||
* @date 2020-08-08
|
||||
* @author Jerry
|
||||
* @date 2020-09-27
|
||||
*/
|
||||
public final class GlobalDeletedFlag {
|
||||
|
||||
|
||||
@@ -3,8 +3,8 @@ package com.orange.demo.common.core.exception;
|
||||
/**
|
||||
* 数据验证失败的自定义异常。
|
||||
*
|
||||
* @author Orange Team
|
||||
* @date 2020-08-08
|
||||
* @author Jerry
|
||||
* @date 2020-09-27
|
||||
*/
|
||||
public class DataValidationException extends RuntimeException {
|
||||
|
||||
|
||||
@@ -6,8 +6,8 @@ import lombok.EqualsAndHashCode;
|
||||
/**
|
||||
* 无效的类对象字段的自定义异常。
|
||||
*
|
||||
* @author Orange Team
|
||||
* @date 2020-08-08
|
||||
* @author Jerry
|
||||
* @date 2020-09-27
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
|
||||
@@ -6,8 +6,8 @@ import lombok.EqualsAndHashCode;
|
||||
/**
|
||||
* 无效的实体对象字段的自定义异常。
|
||||
*
|
||||
* @author Orange Team
|
||||
* @date 2020-08-08
|
||||
* @author Jerry
|
||||
* @date 2020-09-27
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
|
||||
@@ -6,8 +6,8 @@ import lombok.EqualsAndHashCode;
|
||||
/**
|
||||
* 无效的实体对象的自定义异常。
|
||||
*
|
||||
* @author Orange Team
|
||||
* @date 2020-08-08
|
||||
* @author Jerry
|
||||
* @date 2020-09-27
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
|
||||
@@ -4,8 +4,8 @@ package com.orange.demo.common.core.exception;
|
||||
* 自定义的运行时异常,在需要抛出运行时异常时,可使用该异常。
|
||||
* NOTE:主要是为了避免SonarQube进行代码质量扫描时,给出警告。
|
||||
*
|
||||
* @author Orange Team
|
||||
* @date 2020-08-08
|
||||
* @author Jerry
|
||||
* @date 2020-09-27
|
||||
*/
|
||||
public class MyRuntimeException extends RuntimeException {
|
||||
|
||||
|
||||
@@ -3,8 +3,8 @@ package com.orange.demo.common.core.exception;
|
||||
/**
|
||||
* 没有数据被修改的自定义异常。
|
||||
*
|
||||
* @author Orange Team
|
||||
* @date 2020-08-08
|
||||
* @author Jerry
|
||||
* @date 2020-09-27
|
||||
*/
|
||||
public class NoDataAffectException extends RuntimeException {
|
||||
|
||||
|
||||
@@ -3,8 +3,8 @@ package com.orange.demo.common.core.exception;
|
||||
/**
|
||||
* 没有数据访问权限的自定义异常。
|
||||
*
|
||||
* @author Orange Team
|
||||
* @date 2020-08-08
|
||||
* @author Jerry
|
||||
* @date 2020-09-27
|
||||
*/
|
||||
public class NoDataPermException extends RuntimeException {
|
||||
|
||||
|
||||
@@ -3,8 +3,8 @@ package com.orange.demo.common.core.exception;
|
||||
/**
|
||||
* Redis缓存访问失败。比如:获取分布式数据锁超时、等待线程中断等。
|
||||
*
|
||||
* @author Orange Team
|
||||
* @date 2020-08-08
|
||||
* @author Jerry
|
||||
* @date 2020-09-27
|
||||
*/
|
||||
public class RedisCacheAccessException extends RuntimeException {
|
||||
|
||||
|
||||
@@ -3,8 +3,8 @@ package com.orange.demo.common.core.exception;
|
||||
/**
|
||||
* 关联远程服务数据失败的自定义异常。
|
||||
*
|
||||
* @author Orange Team
|
||||
* @date 2020-08-08
|
||||
* @author Jerry
|
||||
* @date 2020-09-27
|
||||
*/
|
||||
public class RemoteDataBuildException extends RuntimeException {
|
||||
|
||||
|
||||
@@ -28,8 +28,8 @@ import java.util.*;
|
||||
* 1、单个字符串等包装类型都要写一个对象才可以用@RequestBody接收;
|
||||
* 2、多个对象需要封装到一个对象里才可以用@RequestBody接收。
|
||||
*
|
||||
* @author Orange Team
|
||||
* @date 2020-08-08
|
||||
* @author Jerry
|
||||
* @date 2020-09-27
|
||||
*/
|
||||
public class MyRequestArgumentResolver implements HandlerMethodArgumentResolver {
|
||||
|
||||
|
||||
@@ -10,8 +10,8 @@ import java.util.Map;
|
||||
/**
|
||||
* 应用程序启动后的事件监听对象。主要负责加载Model之间的字典关联和一对一关联所对应的Service结构关系。
|
||||
*
|
||||
* @author Orange Team
|
||||
* @date 2020-08-08
|
||||
* @author Jerry
|
||||
* @date 2020-09-27
|
||||
*/
|
||||
@Component
|
||||
public class LoadCachedDataListener implements ApplicationListener<ApplicationReadyEvent> {
|
||||
|
||||
@@ -10,8 +10,8 @@ import java.util.Map;
|
||||
/**
|
||||
* 应用程序启动后的事件监听对象。主要负责加载Model之间的字典关联和一对一关联所对应的Service结构关系。
|
||||
*
|
||||
* @author Orange Team
|
||||
* @date 2020-08-08
|
||||
* @author Jerry
|
||||
* @date 2020-09-27
|
||||
*/
|
||||
@Component
|
||||
public class LoadServiceRelationListener implements ApplicationListener<ApplicationReadyEvent> {
|
||||
|
||||
@@ -7,8 +7,8 @@ import lombok.Data;
|
||||
* 接口数据验证结果对象。主要是Service类使用。
|
||||
* 同时为了提升效率,减少查询次数,可以根据具体的需求,将部分验证关联对象存入data字段,以供Controller使用。
|
||||
*
|
||||
* @author Orange Team
|
||||
* @date 2020-08-08
|
||||
* @author Jerry
|
||||
* @date 2020-09-27
|
||||
*/
|
||||
@Data
|
||||
public class CallResult {
|
||||
|
||||
@@ -3,8 +3,8 @@ package com.orange.demo.common.core.object;
|
||||
/**
|
||||
* 哑元对象,主要用于注解中的缺省对象占位符。
|
||||
*
|
||||
* @author Orange Team
|
||||
* @date 2020-08-08
|
||||
* @author Jerry
|
||||
* @date 2020-09-27
|
||||
*/
|
||||
public final class DummyClass {
|
||||
|
||||
|
||||
@@ -9,8 +9,8 @@ import java.util.Set;
|
||||
/**
|
||||
* 分组聚合查询参数。
|
||||
*
|
||||
* @author Orange Team
|
||||
* @date 2020-08-08
|
||||
* @author Jerry
|
||||
* @date 2020-09-27
|
||||
*/
|
||||
@Data
|
||||
public class MyAggregationParam {
|
||||
|
||||
@@ -6,8 +6,8 @@ import lombok.Data;
|
||||
/**
|
||||
* Mybatis Mapper.xml中所需的分组条件对象。
|
||||
*
|
||||
* @author Orange Team
|
||||
* @date 2020-08-08
|
||||
* @author Jerry
|
||||
* @date 2020-09-27
|
||||
*/
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
|
||||
@@ -19,8 +19,8 @@ import java.util.List;
|
||||
/**
|
||||
* 查询分组参数请求对象。
|
||||
*
|
||||
* @author Orange Team
|
||||
* @date 2020-08-08
|
||||
* @author Jerry
|
||||
* @date 2020-09-27
|
||||
*/
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Slf4j
|
||||
|
||||
@@ -17,8 +17,8 @@ import java.util.*;
|
||||
/**
|
||||
* Controller参数中的排序请求对象。
|
||||
*
|
||||
* @author Orange Team
|
||||
* @date 2020-08-08
|
||||
* @author Jerry
|
||||
* @date 2020-09-27
|
||||
*/
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Slf4j
|
||||
|
||||
@@ -5,8 +5,8 @@ import lombok.Getter;
|
||||
/**
|
||||
* Controller参数中的分页请求对象
|
||||
*
|
||||
* @author Orange Team
|
||||
* @date 2020-08-08
|
||||
* @author Jerry
|
||||
* @date 2020-09-27
|
||||
*/
|
||||
@Getter
|
||||
public class MyPageParam {
|
||||
|
||||
@@ -8,8 +8,8 @@ import java.util.*;
|
||||
/**
|
||||
* 查询参数。
|
||||
*
|
||||
* @author Orange Team
|
||||
* @date 2020-08-08
|
||||
* @author Jerry
|
||||
* @date 2020-09-27
|
||||
*/
|
||||
@Data
|
||||
public class MyQueryParam {
|
||||
|
||||
@@ -7,8 +7,8 @@ import lombok.Data;
|
||||
* 实体对象数据组装参数构建器。
|
||||
* BaseService中的实体对象数据组装函数,会根据该参数对象进行数据组装。
|
||||
*
|
||||
* @author Orange Team
|
||||
* @date 2020-08-08
|
||||
* @author Jerry
|
||||
* @date 2020-09-27
|
||||
*/
|
||||
@Data
|
||||
@Builder
|
||||
|
||||
@@ -15,8 +15,8 @@ import java.util.List;
|
||||
/**
|
||||
* Where中的条件语句。
|
||||
*
|
||||
* @author Orange Team
|
||||
* @date 2020-08-08
|
||||
* @author Jerry
|
||||
* @date 2020-09-27
|
||||
*/
|
||||
@Slf4j
|
||||
@Data
|
||||
|
||||
@@ -6,8 +6,8 @@ import lombok.Data;
|
||||
/**
|
||||
* 接口返回对象
|
||||
*
|
||||
* @author Orange Team
|
||||
* @date 2020-08-08
|
||||
* @author Jerry
|
||||
* @date 2020-09-27
|
||||
*/
|
||||
@Data
|
||||
public class ResponseResult<T> {
|
||||
|
||||
@@ -15,8 +15,8 @@ import java.nio.charset.StandardCharsets;
|
||||
/**
|
||||
* 基于Jwt,用于前后端传递的令牌对象。
|
||||
*
|
||||
* @author Orange Team
|
||||
* @date 2020-08-08
|
||||
* @author Jerry
|
||||
* @date 2020-09-27
|
||||
*/
|
||||
@Data
|
||||
@ToString
|
||||
|
||||
@@ -3,8 +3,8 @@ package com.orange.demo.common.core.object;
|
||||
/**
|
||||
* 二元组对象。主要用于可以一次返回多个结果的场景,同时还能避免强制转换。
|
||||
*
|
||||
* @author Orange Team
|
||||
* @date 2020-08-08
|
||||
* @author Jerry
|
||||
* @date 2020-09-27
|
||||
*/
|
||||
public class Tuple2<T1, T2> {
|
||||
|
||||
|
||||
@@ -10,8 +10,8 @@ import java.lang.reflect.Field;
|
||||
/**
|
||||
* 获取JDK动态代理/CGLIB代理对象代理的目标对象的工具类。
|
||||
*
|
||||
* @author Orange Team
|
||||
* @date 2020-08-08
|
||||
* @author Jerry
|
||||
* @date 2020-09-27
|
||||
*/
|
||||
@Slf4j
|
||||
public class AopTargetUtil {
|
||||
|
||||
@@ -9,8 +9,8 @@ import org.springframework.stereotype.Component;
|
||||
/**
|
||||
* Spring 系统启动应用感知对象,主要用于获取Spring Bean的上下文对象,后续的代码中可以直接查找系统中加载的Bean对象。
|
||||
*
|
||||
* @author Orange Team
|
||||
* @date 2020-08-08
|
||||
* @author Jerry
|
||||
* @date 2020-09-27
|
||||
*/
|
||||
@Component
|
||||
public class ApplicationContextHolder implements ApplicationContextAware {
|
||||
|
||||
@@ -9,8 +9,8 @@ import javax.servlet.http.HttpServletResponse;
|
||||
/**
|
||||
* 获取Servlet HttpRequest和HttpResponse的工具类。
|
||||
*
|
||||
* @author Orange Team
|
||||
* @date 2020-08-08
|
||||
* @author Jerry
|
||||
* @date 2020-09-27
|
||||
*/
|
||||
public class ContextUtil {
|
||||
|
||||
|
||||
@@ -22,8 +22,8 @@ import java.util.*;
|
||||
/**
|
||||
* 导出工具类,目前支持xlsx和csv两种类型。
|
||||
*
|
||||
* @author Orange Team
|
||||
* @date 2020-08-08
|
||||
* @author Jerry
|
||||
* @date 2020-09-27
|
||||
*/
|
||||
@Slf4j
|
||||
public class ExportUtil {
|
||||
|
||||
@@ -21,8 +21,8 @@ import java.util.stream.Collectors;
|
||||
/**
|
||||
* 导入工具类,目前支持xlsx和csv两种类型。
|
||||
*
|
||||
* @author Orange Team
|
||||
* @date 2020-08-08
|
||||
* @author Jerry
|
||||
* @date 2020-09-27
|
||||
*/
|
||||
@Slf4j
|
||||
public class ImportUtil {
|
||||
|
||||
@@ -16,8 +16,8 @@ import java.util.List;
|
||||
/**
|
||||
* Ip工具类。
|
||||
*
|
||||
* @author Orange Team
|
||||
* @date 2020-08-08
|
||||
* @author Jerry
|
||||
* @date 2020-09-27
|
||||
*/
|
||||
@Slf4j
|
||||
public class IpUtil {
|
||||
|
||||
@@ -11,8 +11,8 @@ import java.util.Map;
|
||||
/**
|
||||
* 基于JWT的Token生成工具类
|
||||
*
|
||||
* @author Orange Team
|
||||
* @date 2020-08-08
|
||||
* @author Jerry
|
||||
* @date 2020-09-27
|
||||
*/
|
||||
@Slf4j
|
||||
public class JwtUtil {
|
||||
|
||||
@@ -5,8 +5,8 @@ package com.orange.demo.common.core.util;
|
||||
* 主要目标是,尽量保证日志输出的统一性,同时也可以有效减少与日志信息相关的常量字符串,
|
||||
* 提高代码的规范度和可维护性。
|
||||
*
|
||||
* @author Orange Team
|
||||
* @date 2020-08-08
|
||||
* @author Jerry
|
||||
* @date 2020-09-27
|
||||
*/
|
||||
public class LogMessageUtil {
|
||||
|
||||
|
||||
@@ -15,8 +15,8 @@ import java.util.UUID;
|
||||
/**
|
||||
* 脚手架中常用的基本工具方法集合,一般而言工程内部使用的方法。
|
||||
*
|
||||
* @author Orange Team
|
||||
* @date 2020-08-08
|
||||
* @author Jerry
|
||||
* @date 2020-09-27
|
||||
*/
|
||||
public class MyCommonUtil {
|
||||
|
||||
|
||||
@@ -15,8 +15,8 @@ import static org.joda.time.PeriodType.days;
|
||||
/**
|
||||
* 日期工具类,主要封装了部分joda-time中的方法,让很多代码一行完成,同时统一了日期到字符串的pattern格式。
|
||||
*
|
||||
* @author Orange Team
|
||||
* @date 2020-08-08
|
||||
* @author Jerry
|
||||
* @date 2020-09-27
|
||||
*/
|
||||
public class MyDateUtil {
|
||||
|
||||
|
||||
@@ -2,6 +2,7 @@ package com.orange.demo.common.core.util;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.util.ReflectUtil;
|
||||
import com.orange.demo.common.core.annotation.RelationConstDict;
|
||||
import com.orange.demo.common.core.annotation.RelationDict;
|
||||
import com.orange.demo.common.core.annotation.RelationOneToOne;
|
||||
import com.orange.demo.common.core.exception.MyRuntimeException;
|
||||
@@ -24,8 +25,8 @@ import java.util.stream.Collectors;
|
||||
/**
|
||||
* 负责Model数据操作、类型转换和关系关联等行为的工具类。
|
||||
*
|
||||
* @author Orange Team
|
||||
* @date 2020-08-08
|
||||
* @author Jerry
|
||||
* @date 2020-09-27
|
||||
*/
|
||||
@Slf4j
|
||||
public class MyModelUtil {
|
||||
@@ -184,13 +185,49 @@ public class MyModelUtil {
|
||||
}
|
||||
|
||||
/**
|
||||
* 在当前Service的主Model类型中,根据thisRelationField字段的RelationDict注解参数,将被关联对象thatModel中的数据,
|
||||
* 主Model类型中,遍历所有包含RelationConstDict注解的字段,并将关联的静态字典中的数据,
|
||||
* 填充到thisModel对象的被注解字段中。
|
||||
*
|
||||
* @param thisClazz 主对象的Class对象。
|
||||
* @param thisModel 主对象。
|
||||
* @param <T> 主表对象类型。
|
||||
*/
|
||||
@SuppressWarnings("unchecked")
|
||||
public static <T> void makeConstDictRelation(Class<T> thisClazz, T thisModel) {
|
||||
if (thisModel == null) {
|
||||
return;
|
||||
}
|
||||
Field[] fields = ReflectUtil.getFields(thisClazz);
|
||||
for (Field field : fields) {
|
||||
// 这里不做任何空值判断,从而让配置错误在调试期间即可抛出
|
||||
Field thisTargetField = ReflectUtil.getField(thisClazz, field.getName());
|
||||
RelationConstDict r = thisTargetField.getAnnotation(RelationConstDict.class);
|
||||
if (r == null) {
|
||||
continue;
|
||||
}
|
||||
Field dictMapField = ReflectUtil.getField(r.constantDictClass(), "DICT_MAP");
|
||||
Map<Object, String> dictMap = (Map<Object, String>) ReflectUtil.getFieldValue(thisClazz, dictMapField);
|
||||
Object id = ReflectUtil.getFieldValue(thisModel, r.masterIdField());
|
||||
if (id != null) {
|
||||
String name = dictMap.get(id);
|
||||
if (name != null) {
|
||||
Map<String, Object> m = new HashMap<>(2);
|
||||
m.put("id", id);
|
||||
m.put("name", name);
|
||||
ReflectUtil.setFieldValue(thisModel, thisTargetField, m);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 在主Model类型中,根据thisRelationField字段的RelationDict注解参数,将被关联对象thatModel中的数据,
|
||||
* 关联到thisModel对象的thisRelationField字段中。
|
||||
*
|
||||
* @param thisClazz 主对象的Class对象。
|
||||
* @param thisModel 主对象。
|
||||
* @param thatModel 字典关联对象。
|
||||
* @param thisRelationField 关联对象中保存被关联对象的字段名称。
|
||||
* @param thisRelationField 主表对象中保存被关联对象的字段名称。
|
||||
* @param <T> 主表对象类型。
|
||||
* @param <R> 从表对象类型。
|
||||
*/
|
||||
@@ -212,13 +249,13 @@ public class MyModelUtil {
|
||||
}
|
||||
|
||||
/**
|
||||
* 在当前Service的主Model类型中,根据thisRelationField字段的RelationDict注解参数,将被关联对象集合thatModelList中的数据,
|
||||
* 在主Model类型中,根据thisRelationField字段的RelationDict注解参数,将被关联对象集合thatModelList中的数据,
|
||||
* 逐个关联到thisModelList每一个元素的thisRelationField字段中。
|
||||
*
|
||||
* @param thisClazz 主对象的Class对象。
|
||||
* @param thisModelList 主对象列表。
|
||||
* @param thatModelList 字典关联对象列表集合。
|
||||
* @param thisRelationField 关联对象中保存被关联对象的字段名称。
|
||||
* @param thisRelationField 主表对象中保存被关联对象的字段名称。
|
||||
* @param <T> 主表对象类型。
|
||||
* @param <R> 从表对象类型。
|
||||
*/
|
||||
@@ -255,14 +292,14 @@ public class MyModelUtil {
|
||||
}
|
||||
|
||||
/**
|
||||
* 在当前Service的主Model类型中,根据thisRelationField字段的RelationDict注解参数,将被关联对象集合thatModelMap中的数据,
|
||||
* 在主Model类型中,根据thisRelationField字段的RelationDict注解参数,将被关联对象集合thatModelMap中的数据,
|
||||
* 逐个关联到thisModelList每一个元素的thisRelationField字段中。
|
||||
* 该函数之所以使用Map,主要出于性能优化考虑,在连续使用thatModelMap进行关联时,有效的避免了从多次从List转换到Map的过程。
|
||||
*
|
||||
* @param thisClazz 主对象的Class对象。
|
||||
* @param thisModelList 主对象列表。
|
||||
* @param thatMadelMap 字典关联对象映射集合。
|
||||
* @param thisRelationField 关联对象中保存被关联对象的字段名称。
|
||||
* @param thisRelationField 主表对象中保存被关联对象的字段名称。
|
||||
* @param <T> 主表对象类型。
|
||||
* @param <R> 从表对象类型。
|
||||
*/
|
||||
@@ -293,13 +330,13 @@ public class MyModelUtil {
|
||||
}
|
||||
|
||||
/**
|
||||
* 在当前Service的主Model类型中,根据thisRelationField字段的RelationOneToOne注解参数,将被关联对象列表thatModelList中的数据,
|
||||
* 在主Model类型中,根据thisRelationField字段的RelationOneToOne注解参数,将被关联对象列表thatModelList中的数据,
|
||||
* 逐个关联到thisModelList每一个元素的thisRelationField字段中。
|
||||
*
|
||||
* @param thisClazz 主对象的Class对象。
|
||||
* @param thisModelList 主对象列表。
|
||||
* @param thatModelList 一对一关联对象列表。
|
||||
* @param thisRelationField 关联对象中保存被关联对象的字段名称。
|
||||
* @param thisRelationField 主表对象中保存被关联对象的字段名称。
|
||||
* @param <T> 主表对象类型。
|
||||
* @param <R> 从表对象类型。
|
||||
*/
|
||||
|
||||
@@ -12,8 +12,8 @@ import java.util.List;
|
||||
/**
|
||||
* 生成带有分页信息的数据列表
|
||||
*
|
||||
* @author Orange Team
|
||||
* @date 2020-08-08
|
||||
* @author Jerry
|
||||
* @date 2020-09-27
|
||||
*/
|
||||
public class MyPageUtil {
|
||||
|
||||
|
||||
@@ -3,8 +3,8 @@ package com.orange.demo.common.core.util;
|
||||
/**
|
||||
* Redis 键生成工具类。
|
||||
*
|
||||
* @author Orange Team
|
||||
* @date 2020-08-08
|
||||
* @author Jerry
|
||||
* @date 2020-09-27
|
||||
*/
|
||||
public class RedisKeyUtil {
|
||||
|
||||
|
||||
@@ -14,8 +14,8 @@ import java.util.Map;
|
||||
/**
|
||||
* Java RSA 加密工具类。
|
||||
*
|
||||
* @author Orange Team
|
||||
* @date 2020-08-08
|
||||
* @author Jerry
|
||||
* @date 2020-09-27
|
||||
*/
|
||||
public class RsaUtil {
|
||||
|
||||
|
||||
@@ -14,8 +14,8 @@ import java.util.function.Function;
|
||||
* @param <T> 对象类型。
|
||||
* @param <K> 节点之间关联键的类型。
|
||||
*
|
||||
* @author Orange Team
|
||||
* @date 2020-08-08
|
||||
* @author Jerry
|
||||
* @date 2020-09-27
|
||||
*/
|
||||
@Data
|
||||
public class TreeNode<T, K> {
|
||||
|
||||
@@ -23,8 +23,8 @@ import java.util.Objects;
|
||||
/**
|
||||
* 上传或下载附件文件的工具类。
|
||||
*
|
||||
* @author Orange Team
|
||||
* @date 2020-08-08
|
||||
* @author Jerry
|
||||
* @date 2020-09-27
|
||||
*/
|
||||
@Slf4j
|
||||
public class UpDownloadUtil {
|
||||
@@ -87,9 +87,10 @@ public class UpDownloadUtil {
|
||||
* @param uploadFile Http请求中上传的文件对象。
|
||||
* @param asImage 是否为图片对象。图片是无需权限验证的,因此和附件存放在不同的子目录。
|
||||
* @param response Http 应答对象。
|
||||
* @return 存储在本地上传文件名。
|
||||
* @throws IOException 文件操作错误。
|
||||
*/
|
||||
public static void doUpload(
|
||||
public static String doUpload(
|
||||
String rootBaseDir,
|
||||
String serviceContextPath,
|
||||
String modelName,
|
||||
@@ -102,7 +103,7 @@ public class UpDownloadUtil {
|
||||
if (Objects.isNull(uploadFile) || uploadFile.isEmpty() || MyCommonUtil.isBlankOrNull(fieldName)) {
|
||||
response.setStatus(HttpServletResponse.SC_FORBIDDEN);
|
||||
out.print(JSON.toJSONString(ResponseResult.error(ErrorCodeEnum.INVALID_UPLOAD_FILE_ARGUMENT)));
|
||||
return;
|
||||
return null;
|
||||
}
|
||||
StringBuilder uploadPathBuilder = new StringBuilder(128);
|
||||
uploadPathBuilder.append(rootBaseDir).append("/");
|
||||
@@ -137,11 +138,12 @@ public class UpDownloadUtil {
|
||||
log.error("Failed to write uploaded file [" + uploadFile.getOriginalFilename() + " ].", e);
|
||||
response.setStatus(HttpServletResponse.SC_FORBIDDEN);
|
||||
out.print(JSON.toJSONString(ResponseResult.error(ErrorCodeEnum.INVALID_UPLOAD_FILE_IOERROR)));
|
||||
return;
|
||||
return null;
|
||||
}
|
||||
out.print(JSON.toJSONString(ResponseResult.success(fileInfo)));
|
||||
out.flush();
|
||||
out.close();
|
||||
return fileInfo.filename;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -3,8 +3,8 @@ package com.orange.demo.common.core.validator;
|
||||
/**
|
||||
* 数据增加的验证分组。通常用于数据新增场景。
|
||||
*
|
||||
* @author Orange Team
|
||||
* @date 2020-08-08
|
||||
* @author Jerry
|
||||
* @date 2020-09-27
|
||||
*/
|
||||
public interface AddGroup {
|
||||
}
|
||||
|
||||
@@ -10,8 +10,8 @@ import java.lang.annotation.Target;
|
||||
/**
|
||||
* 定义在Model对象中,标注字段值引用自指定的常量字典,和ConstDictRefValidator对象配合完成数据验证。
|
||||
*
|
||||
* @author Orange Team
|
||||
* @date 2020-08-08
|
||||
* @author Jerry
|
||||
* @date 2020-09-27
|
||||
*/
|
||||
@Target({ElementType.FIELD})
|
||||
@Retention(RetentionPolicy.RUNTIME)
|
||||
|
||||
@@ -9,8 +9,8 @@ import java.lang.reflect.Method;
|
||||
/**
|
||||
* 数据字段自定义验证,用于验证Model中字符串字段的最大长度和最小长度。
|
||||
*
|
||||
* @author Orange Team
|
||||
* @date 2020-08-08
|
||||
* @author Jerry
|
||||
* @date 2020-09-27
|
||||
*/
|
||||
public class ConstDictValidator implements ConstraintValidator<ConstDictRef, Object> {
|
||||
|
||||
|
||||
@@ -10,8 +10,8 @@ import java.lang.annotation.Target;
|
||||
/**
|
||||
* 定义在Model或Dto对象中,UTF-8编码的字符串字段长度的上限和下限,和TextLengthValidator对象配合完成数据验证。
|
||||
*
|
||||
* @author Orange Team
|
||||
* @date 2020-08-08
|
||||
* @author Jerry
|
||||
* @date 2020-09-27
|
||||
*/
|
||||
@Target({ElementType.FIELD})
|
||||
@Retention(RetentionPolicy.RUNTIME)
|
||||
|
||||
@@ -8,8 +8,8 @@ import javax.validation.ConstraintValidatorContext;
|
||||
/**
|
||||
* 数据字段自定义验证,用于验证Model中UTF-8编码的字符串字段的最大长度和最小长度。
|
||||
*
|
||||
* @author Orange Team
|
||||
* @date 2020-08-08
|
||||
* @author Jerry
|
||||
* @date 2020-09-27
|
||||
*/
|
||||
public class TextLengthValidator implements ConstraintValidator<TextLength, String> {
|
||||
|
||||
|
||||
@@ -3,8 +3,8 @@ package com.orange.demo.common.core.validator;
|
||||
/**
|
||||
* 数据修改的验证分组。通常用于数据更新的场景。
|
||||
*
|
||||
* @author Orange Team
|
||||
* @date 2020-08-08
|
||||
* @author Jerry
|
||||
* @date 2020-09-27
|
||||
*/
|
||||
public interface UpdateGroup {
|
||||
|
||||
|
||||
Reference in New Issue
Block a user