commit:同步2.0版本

This commit is contained in:
Jerry
2021-10-21 14:07:36 +08:00
parent e4a296695e
commit 8431b3bf62
179 changed files with 2677 additions and 8491 deletions

View File

@@ -2,6 +2,7 @@
<project version="4"> <project version="4">
<component name="CompilerConfiguration"> <component name="CompilerConfiguration">
<annotationProcessing> <annotationProcessing>
<profile default="true" name="Default" enabled="true" />
<profile name="Annotation profile for OrangeMultiDemo" enabled="true"> <profile name="Annotation profile for OrangeMultiDemo" enabled="true">
<sourceOutputDir name="target/generated-sources/annotations" /> <sourceOutputDir name="target/generated-sources/annotations" />
<sourceTestOutputDir name="target/generated-test-sources/test-annotations" /> <sourceTestOutputDir name="target/generated-test-sources/test-annotations" />
@@ -14,17 +15,22 @@
</processorPath> </processorPath>
<module name="common-sequence" /> <module name="common-sequence" />
<module name="stats-api" /> <module name="stats-api" />
<module name="common-datafilter" />
<module name="course-class-api" /> <module name="course-class-api" />
<module name="stats-service" /> <module name="stats-service" />
<module name="upms-api" /> <module name="course-class-service" />
<module name="upms-service" />
<module name="common-swagger" /> <module name="common-swagger" />
<module name="admin-monitor" /> <module name="admin-monitor" />
<module name="upms-service" /> <module name="common-xxljob" />
<module name="common-redis" /> <module name="common-redis" />
<module name="common-core" /> <module name="common-core" />
<module name="application-common" />
<module name="course-class-service" />
<module name="gateway" /> <module name="gateway" />
<module name="operation-log-consumer" />
<module name="application-common" />
<module name="apidoc-tools" />
<module name="upms-api" />
<module name="common-log" />
</profile> </profile>
</annotationProcessing> </annotationProcessing>
<bytecodeTargetLevel> <bytecodeTargetLevel>
@@ -32,6 +38,7 @@
<module name="apidoc-tools" target="1.8" /> <module name="apidoc-tools" target="1.8" />
<module name="application" target="1.8" /> <module name="application" target="1.8" />
<module name="application-common" target="1.8" /> <module name="application-common" target="1.8" />
<module name="application-consumer" target="1.8" />
<module name="common" target="1.8" /> <module name="common" target="1.8" />
<module name="common-core" target="1.8" /> <module name="common-core" target="1.8" />
<module name="common-datafilter" target="1.8" /> <module name="common-datafilter" target="1.8" />
@@ -39,11 +46,13 @@
<module name="common-redis" target="1.8" /> <module name="common-redis" target="1.8" />
<module name="common-sequence" target="1.8" /> <module name="common-sequence" target="1.8" />
<module name="common-swagger" target="1.8" /> <module name="common-swagger" target="1.8" />
<module name="common-xxljob" target="1.8" />
<module name="course-class" target="1.8" /> <module name="course-class" target="1.8" />
<module name="course-class-api" target="1.8" /> <module name="course-class-api" target="1.8" />
<module name="course-class-service" target="1.8" /> <module name="course-class-service" target="1.8" />
<module name="framework" target="1.8" /> <module name="framework" target="1.8" />
<module name="gateway" target="1.8" /> <module name="gateway" target="1.8" />
<module name="operation-log-consumer" target="1.8" />
<module name="OrangeMultiDemo" target="1.8" /> <module name="OrangeMultiDemo" target="1.8" />
<module name="stats" target="1.8" /> <module name="stats" target="1.8" />
<module name="stats-api" target="1.8" /> <module name="stats-api" target="1.8" />

View File

@@ -1,6 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<project version="4"> <project version="4">
<component name="Encoding"> <component name="Encoding">
<file url="file://$PROJECT_DIR$/application-consumer/operation-log-consumer/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/application-consumer/operation-log-consumer/src/main/resources" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/application/application-common/src/main/java" charset="UTF-8" /> <file url="file://$PROJECT_DIR$/application/application-common/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/application/course-class/course-class-api/src/main/java" charset="UTF-8" /> <file url="file://$PROJECT_DIR$/application/course-class/course-class-api/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/application/course-class/course-class-service/src/main/java" charset="UTF-8" /> <file url="file://$PROJECT_DIR$/application/course-class/course-class-service/src/main/java" charset="UTF-8" />
@@ -14,13 +16,20 @@
<file url="file://$PROJECT_DIR$/application/upms/upms-service/src/main/java" charset="UTF-8" /> <file url="file://$PROJECT_DIR$/application/upms/upms-service/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/application/upms/upms-service/src/main/resources" charset="UTF-8" /> <file url="file://$PROJECT_DIR$/application/upms/upms-service/src/main/resources" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/common/common-core/src/main/java" charset="UTF-8" /> <file url="file://$PROJECT_DIR$/common/common-core/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/common/common-datafilter/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/common/common-datafilter/src/main/resources" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/common/common-log/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/common/common-log/src/main/resources" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/common/common-redis/src/main/java" charset="UTF-8" /> <file url="file://$PROJECT_DIR$/common/common-redis/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/common/common-redis/src/main/resources" charset="UTF-8" /> <file url="file://$PROJECT_DIR$/common/common-redis/src/main/resources" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/common/common-sequence/src/main/java" charset="UTF-8" /> <file url="file://$PROJECT_DIR$/common/common-sequence/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/common/common-sequence/src/main/resources" charset="UTF-8" /> <file url="file://$PROJECT_DIR$/common/common-sequence/src/main/resources" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/common/common-swagger/src/main/java" charset="UTF-8" /> <file url="file://$PROJECT_DIR$/common/common-swagger/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/common/common-swagger/src/main/resources" charset="UTF-8" /> <file url="file://$PROJECT_DIR$/common/common-swagger/src/main/resources" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/common/common-xxljob/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/framework/admin-monitor/src/main/java" charset="UTF-8" /> <file url="file://$PROJECT_DIR$/framework/admin-monitor/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/framework/admin-monitor/src/main/resources" charset="UTF-8" /> <file url="file://$PROJECT_DIR$/framework/admin-monitor/src/main/resources" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/framework/apidoc-tools/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/framework/apidoc-tools/src/main/resources" charset="UTF-8" />
</component> </component>
</project> </project>

View File

@@ -1,13 +0,0 @@
<component name="libraryTable">
<library name="Maven: com.orange.demo:common-log:1.0.0">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/com/orange/demo/common-log/1.0.0/common-log-1.0.0.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/com/orange/demo/common-log/1.0.0/common-log-1.0.0-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/com/orange/demo/common-log/1.0.0/common-log-1.0.0-sources.jar!/" />
</SOURCES>
</library>
</component>

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -6,13 +6,6 @@
<option value="$PROJECT_DIR$/pom.xml" /> <option value="$PROJECT_DIR$/pom.xml" />
</list> </list>
</option> </option>
<option name="ignoredFiles">
<set>
<option value="$PROJECT_DIR$/common/common-datafilter/pom.xml" />
<option value="$PROJECT_DIR$/common/common-log/pom.xml" />
<option value="$PROJECT_DIR$/framework/apidoc-tools/pom.xml" />
</set>
</option>
</component> </component>
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" project-jdk-name="1.8.0_232" project-jdk-type="JavaSDK" /> <component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" project-jdk-name="1.8.0_232" project-jdk-type="JavaSDK" />
</project> </project>

View File

@@ -4,18 +4,24 @@
<modules> <modules>
<module fileurl="file://$PROJECT_DIR$/OrangeMultiDemo.iml" filepath="$PROJECT_DIR$/OrangeMultiDemo.iml" /> <module fileurl="file://$PROJECT_DIR$/OrangeMultiDemo.iml" filepath="$PROJECT_DIR$/OrangeMultiDemo.iml" />
<module fileurl="file://$PROJECT_DIR$/framework/admin-monitor/admin-monitor.iml" filepath="$PROJECT_DIR$/framework/admin-monitor/admin-monitor.iml" /> <module fileurl="file://$PROJECT_DIR$/framework/admin-monitor/admin-monitor.iml" filepath="$PROJECT_DIR$/framework/admin-monitor/admin-monitor.iml" />
<module fileurl="file://$PROJECT_DIR$/framework/apidoc-tools/apidoc-tools.iml" filepath="$PROJECT_DIR$/framework/apidoc-tools/apidoc-tools.iml" />
<module fileurl="file://$PROJECT_DIR$/application/application.iml" filepath="$PROJECT_DIR$/application/application.iml" /> <module fileurl="file://$PROJECT_DIR$/application/application.iml" filepath="$PROJECT_DIR$/application/application.iml" />
<module fileurl="file://$PROJECT_DIR$/application/application-common/application-common.iml" filepath="$PROJECT_DIR$/application/application-common/application-common.iml" /> <module fileurl="file://$PROJECT_DIR$/application/application-common/application-common.iml" filepath="$PROJECT_DIR$/application/application-common/application-common.iml" />
<module fileurl="file://$PROJECT_DIR$/application-consumer/application-consumer.iml" filepath="$PROJECT_DIR$/application-consumer/application-consumer.iml" />
<module fileurl="file://$PROJECT_DIR$/common/common.iml" filepath="$PROJECT_DIR$/common/common.iml" /> <module fileurl="file://$PROJECT_DIR$/common/common.iml" filepath="$PROJECT_DIR$/common/common.iml" />
<module fileurl="file://$PROJECT_DIR$/common/common-core/common-core.iml" filepath="$PROJECT_DIR$/common/common-core/common-core.iml" /> <module fileurl="file://$PROJECT_DIR$/common/common-core/common-core.iml" filepath="$PROJECT_DIR$/common/common-core/common-core.iml" />
<module fileurl="file://$PROJECT_DIR$/common/common-datafilter/common-datafilter.iml" filepath="$PROJECT_DIR$/common/common-datafilter/common-datafilter.iml" />
<module fileurl="file://$PROJECT_DIR$/common/common-log/common-log.iml" filepath="$PROJECT_DIR$/common/common-log/common-log.iml" />
<module fileurl="file://$PROJECT_DIR$/common/common-redis/common-redis.iml" filepath="$PROJECT_DIR$/common/common-redis/common-redis.iml" /> <module fileurl="file://$PROJECT_DIR$/common/common-redis/common-redis.iml" filepath="$PROJECT_DIR$/common/common-redis/common-redis.iml" />
<module fileurl="file://$PROJECT_DIR$/common/common-sequence/common-sequence.iml" filepath="$PROJECT_DIR$/common/common-sequence/common-sequence.iml" /> <module fileurl="file://$PROJECT_DIR$/common/common-sequence/common-sequence.iml" filepath="$PROJECT_DIR$/common/common-sequence/common-sequence.iml" />
<module fileurl="file://$PROJECT_DIR$/common/common-swagger/common-swagger.iml" filepath="$PROJECT_DIR$/common/common-swagger/common-swagger.iml" /> <module fileurl="file://$PROJECT_DIR$/common/common-swagger/common-swagger.iml" filepath="$PROJECT_DIR$/common/common-swagger/common-swagger.iml" />
<module fileurl="file://$PROJECT_DIR$/common/common-xxljob/common-xxljob.iml" filepath="$PROJECT_DIR$/common/common-xxljob/common-xxljob.iml" />
<module fileurl="file://$PROJECT_DIR$/application/course-class/course-class.iml" filepath="$PROJECT_DIR$/application/course-class/course-class.iml" /> <module fileurl="file://$PROJECT_DIR$/application/course-class/course-class.iml" filepath="$PROJECT_DIR$/application/course-class/course-class.iml" />
<module fileurl="file://$PROJECT_DIR$/application/course-class/course-class-api/course-class-api.iml" filepath="$PROJECT_DIR$/application/course-class/course-class-api/course-class-api.iml" /> <module fileurl="file://$PROJECT_DIR$/application/course-class/course-class-api/course-class-api.iml" filepath="$PROJECT_DIR$/application/course-class/course-class-api/course-class-api.iml" />
<module fileurl="file://$PROJECT_DIR$/application/course-class/course-class-service/course-class-service.iml" filepath="$PROJECT_DIR$/application/course-class/course-class-service/course-class-service.iml" /> <module fileurl="file://$PROJECT_DIR$/application/course-class/course-class-service/course-class-service.iml" filepath="$PROJECT_DIR$/application/course-class/course-class-service/course-class-service.iml" />
<module fileurl="file://$PROJECT_DIR$/framework/framework.iml" filepath="$PROJECT_DIR$/framework/framework.iml" /> <module fileurl="file://$PROJECT_DIR$/framework/framework.iml" filepath="$PROJECT_DIR$/framework/framework.iml" />
<module fileurl="file://$PROJECT_DIR$/application/gateway/gateway.iml" filepath="$PROJECT_DIR$/application/gateway/gateway.iml" /> <module fileurl="file://$PROJECT_DIR$/application/gateway/gateway.iml" filepath="$PROJECT_DIR$/application/gateway/gateway.iml" />
<module fileurl="file://$PROJECT_DIR$/application-consumer/operation-log-consumer/operation-log-consumer.iml" filepath="$PROJECT_DIR$/application-consumer/operation-log-consumer/operation-log-consumer.iml" />
<module fileurl="file://$PROJECT_DIR$/application/stats/stats.iml" filepath="$PROJECT_DIR$/application/stats/stats.iml" /> <module fileurl="file://$PROJECT_DIR$/application/stats/stats.iml" filepath="$PROJECT_DIR$/application/stats/stats.iml" />
<module fileurl="file://$PROJECT_DIR$/application/stats/stats-api/stats-api.iml" filepath="$PROJECT_DIR$/application/stats/stats-api/stats-api.iml" /> <module fileurl="file://$PROJECT_DIR$/application/stats/stats-api/stats-api.iml" filepath="$PROJECT_DIR$/application/stats/stats-api/stats-api.iml" />
<module fileurl="file://$PROJECT_DIR$/application/stats/stats-service/stats-service.iml" filepath="$PROJECT_DIR$/application/stats/stats-service/stats-service.iml" /> <module fileurl="file://$PROJECT_DIR$/application/stats/stats-service/stats-service.iml" filepath="$PROJECT_DIR$/application/stats/stats-service/stats-service.iml" />

View File

@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<project version="4"> <project version="4">
<component name="ChangeListManager"> <component name="ChangeListManager">
<list default="true" id="a0b6f27a-b36a-441c-af92-f7eb47b4b3ce" name="Default Changelist" comment="" /> <list default="true" id="b55f2c3b-1243-4fb7-8da5-aa75887aa3db" name="Default Changelist" comment="" />
<option name="SHOW_DIALOG" value="false" /> <option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" /> <option name="HIGHLIGHT_CONFLICTS" value="true" />
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" /> <option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
@@ -13,7 +13,7 @@
<component name="ProjectCodeStyleSettingsMigration"> <component name="ProjectCodeStyleSettingsMigration">
<option name="version" value="1" /> <option name="version" value="1" />
</component> </component>
<component name="ProjectId" id="1xX0EnUm7ILYI1um57oGVrdwMUq" /> <component name="ProjectId" id="1znZ7nuyFht14Yn8UxPLf4iox9J" />
<component name="ProjectViewState"> <component name="ProjectViewState">
<option name="abbreviatePackageNames" value="true" /> <option name="abbreviatePackageNames" value="true" />
<option name="autoscrollFromSource" value="true" /> <option name="autoscrollFromSource" value="true" />
@@ -24,14 +24,23 @@
<option name="showLibraryContents" value="true" /> <option name="showLibraryContents" value="true" />
</component> </component>
<component name="PropertiesComponent"> <component name="PropertiesComponent">
<property name="RequestMappingsPanelOrder0" value="0" />
<property name="RequestMappingsPanelOrder1" value="1" />
<property name="RequestMappingsPanelWidth0" value="75" />
<property name="RequestMappingsPanelWidth1" value="75" />
<property name="RunOnceActivity.ShowReadmeOnStart" value="true" /> <property name="RunOnceActivity.ShowReadmeOnStart" value="true" />
<property name="WebServerToolWindowFactoryState" value="false" /> <property name="WebServerToolWindowFactoryState" value="false" />
<property name="aspect.path.notification.shown" value="true" /> <property name="aspect.path.notification.shown" value="true" />
<property name="last_opened_file_path" value="$PROJECT_DIR$" /> <property name="last_opened_file_path" value="$PROJECT_DIR$/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/controller" />
<property name="nodejs_interpreter_path" value="/usr/local/bin/node" /> <property name="nodejs_interpreter_path" value="/usr/local/bin/node" />
<property name="settings.editor.selected.configurable" value="Errors" /> <property name="settings.editor.selected.configurable" value="Errors" />
</component> </component>
<component name="RunManager" selected="Spring Boot.StatsApplication"> <component name="RecentsManager">
<key name="CopyFile.RECENT_KEYS">
<recent name="$PROJECT_DIR$/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/controller" />
</key>
</component>
<component name="RunManager" selected="Spring Boot.GatewayApplication">
<configuration name="AdminMonitorApplication" type="SpringBootApplicationConfigurationType" factoryName="Spring Boot"> <configuration name="AdminMonitorApplication" type="SpringBootApplicationConfigurationType" factoryName="Spring Boot">
<module name="admin-monitor" /> <module name="admin-monitor" />
<option name="SPRING_BOOT_MAIN_CLASS" value="com.orange.demo.adminmonitor.AdminMonitorApplication" /> <option name="SPRING_BOOT_MAIN_CLASS" value="com.orange.demo.adminmonitor.AdminMonitorApplication" />
@@ -46,6 +55,20 @@
<option name="Make" enabled="true" /> <option name="Make" enabled="true" />
</method> </method>
</configuration> </configuration>
<configuration name="GatewayApplication" type="SpringBootApplicationConfigurationType" factoryName="Spring Boot" temporary="true" nameIsGenerated="true">
<module name="gateway" />
<option name="SPRING_BOOT_MAIN_CLASS" value="com.orange.demo.gateway.GatewayApplication" />
<method v="2">
<option name="Make" enabled="true" />
</method>
</configuration>
<configuration name="OperationLogConsumerApplication" type="SpringBootApplicationConfigurationType" factoryName="Spring Boot">
<module name="operation-log-consumer" />
<option name="SPRING_BOOT_MAIN_CLASS" value="com.orange.demo.operationlogconsumer.OperationLogConsumerApplication" />
<method v="2">
<option name="Make" enabled="true" />
</method>
</configuration>
<configuration name="StatsApplication" type="SpringBootApplicationConfigurationType" factoryName="Spring Boot"> <configuration name="StatsApplication" type="SpringBootApplicationConfigurationType" factoryName="Spring Boot">
<module name="stats-service" /> <module name="stats-service" />
<option name="SPRING_BOOT_MAIN_CLASS" value="com.orange.demo.statsservice.StatsApplication" /> <option name="SPRING_BOOT_MAIN_CLASS" value="com.orange.demo.statsservice.StatsApplication" />
@@ -53,13 +76,19 @@
<option name="Make" enabled="true" /> <option name="Make" enabled="true" />
</method> </method>
</configuration> </configuration>
<configuration name="UpmsApplication" type="SpringBootApplicationConfigurationType" factoryName="Spring Boot"> <configuration name="UpmsApplication" type="SpringBootApplicationConfigurationType" factoryName="Spring Boot" temporary="true" nameIsGenerated="true">
<module name="upms-service" /> <module name="upms-service" />
<option name="SPRING_BOOT_MAIN_CLASS" value="com.orange.demo.upmsservice.UpmsApplication" /> <option name="SPRING_BOOT_MAIN_CLASS" value="com.orange.demo.upmsservice.UpmsApplication" />
<method v="2"> <method v="2">
<option name="Make" enabled="true" /> <option name="Make" enabled="true" />
</method> </method>
</configuration> </configuration>
<recent_temporary>
<list>
<item itemvalue="Spring Boot.GatewayApplication" />
<item itemvalue="Spring Boot.UpmsApplication" />
</list>
</recent_temporary>
</component> </component>
<component name="ServiceViewManager"> <component name="ServiceViewManager">
<option name="viewStates"> <option name="viewStates">
@@ -78,16 +107,86 @@
</component> </component>
<component name="TaskManager"> <component name="TaskManager">
<task active="true" id="Default" summary="Default task"> <task active="true" id="Default" summary="Default task">
<changelist id="a0b6f27a-b36a-441c-af92-f7eb47b4b3ce" name="Default Changelist" comment="" /> <changelist id="b55f2c3b-1243-4fb7-8da5-aa75887aa3db" name="Default Changelist" comment="" />
<created>1630486016377</created> <created>1634785647917</created>
<option name="number" value="Default" /> <option name="number" value="Default" />
<option name="presentableId" value="Default" /> <option name="presentableId" value="Default" />
<updated>1630486016377</updated> <updated>1634785647917</updated>
<workItem from="1630486018005" duration="271000" /> <workItem from="1634785649770" duration="3049000" />
</task> </task>
<servers /> <servers />
</component> </component>
<component name="TypeScriptGeneratedFilesManager"> <component name="TypeScriptGeneratedFilesManager">
<option name="version" value="1" /> <option name="version" value="1" />
</component> </component>
<component name="WindowStateProjectService">
<state width="1398" height="237" key="GridCell.Tab.0.bottom" timestamp="1634790917939">
<screen x="0" y="0" width="1440" height="900" />
</state>
<state width="1398" height="237" key="GridCell.Tab.0.bottom/0.0.1440.900@0.0.1440.900" timestamp="1634790917939" />
<state width="1398" height="294" key="GridCell.Tab.0.bottom/0.25.1440.816@0.25.1440.816" timestamp="1634789238401" />
<state width="1398" height="237" key="GridCell.Tab.0.center" timestamp="1634790917938">
<screen x="0" y="0" width="1440" height="900" />
</state>
<state width="1398" height="237" key="GridCell.Tab.0.center/0.0.1440.900@0.0.1440.900" timestamp="1634790917938" />
<state width="1398" height="294" key="GridCell.Tab.0.center/0.25.1440.816@0.25.1440.816" timestamp="1634789238399" />
<state width="1398" height="237" key="GridCell.Tab.0.left" timestamp="1634790917936">
<screen x="0" y="0" width="1440" height="900" />
</state>
<state width="1398" height="237" key="GridCell.Tab.0.left/0.0.1440.900@0.0.1440.900" timestamp="1634790917936" />
<state width="1398" height="294" key="GridCell.Tab.0.left/0.25.1440.816@0.25.1440.816" timestamp="1634789238398" />
<state width="1398" height="237" key="GridCell.Tab.0.right" timestamp="1634790917938">
<screen x="0" y="0" width="1440" height="900" />
</state>
<state width="1398" height="237" key="GridCell.Tab.0.right/0.0.1440.900@0.0.1440.900" timestamp="1634790917938" />
<state width="1398" height="294" key="GridCell.Tab.0.right/0.25.1440.816@0.25.1440.816" timestamp="1634789238400" />
<state width="1398" height="294" key="GridCell.Tab.1.bottom" timestamp="1634790917931">
<screen x="0" y="0" width="1440" height="900" />
</state>
<state width="1398" height="294" key="GridCell.Tab.1.bottom/0.0.1440.900@0.0.1440.900" timestamp="1634790917931" />
<state width="1398" height="294" key="GridCell.Tab.1.bottom/0.25.1440.816@0.25.1440.816" timestamp="1634789238271" />
<state width="1398" height="294" key="GridCell.Tab.1.center" timestamp="1634790917930">
<screen x="0" y="0" width="1440" height="900" />
</state>
<state width="1398" height="294" key="GridCell.Tab.1.center/0.0.1440.900@0.0.1440.900" timestamp="1634790917930" />
<state width="1398" height="294" key="GridCell.Tab.1.center/0.25.1440.816@0.25.1440.816" timestamp="1634789238269" />
<state width="1398" height="294" key="GridCell.Tab.1.left" timestamp="1634790917929">
<screen x="0" y="0" width="1440" height="900" />
</state>
<state width="1398" height="294" key="GridCell.Tab.1.left/0.0.1440.900@0.0.1440.900" timestamp="1634790917929" />
<state width="1398" height="294" key="GridCell.Tab.1.left/0.25.1440.816@0.25.1440.816" timestamp="1634789238268" />
<state width="1398" height="294" key="GridCell.Tab.1.right" timestamp="1634790917930">
<screen x="0" y="0" width="1440" height="900" />
</state>
<state width="1398" height="294" key="GridCell.Tab.1.right/0.0.1440.900@0.0.1440.900" timestamp="1634790917930" />
<state width="1398" height="294" key="GridCell.Tab.1.right/0.25.1440.816@0.25.1440.816" timestamp="1634789238270" />
<state width="1398" height="294" key="GridCell.Tab.2.bottom" timestamp="1634790917933">
<screen x="0" y="0" width="1440" height="900" />
</state>
<state width="1398" height="294" key="GridCell.Tab.2.bottom/0.0.1440.900@0.0.1440.900" timestamp="1634790917933" />
<state width="1398" height="294" key="GridCell.Tab.2.bottom/0.25.1440.816@0.25.1440.816" timestamp="1634789238274" />
<state width="1398" height="294" key="GridCell.Tab.2.center" timestamp="1634790917932">
<screen x="0" y="0" width="1440" height="900" />
</state>
<state width="1398" height="294" key="GridCell.Tab.2.center/0.0.1440.900@0.0.1440.900" timestamp="1634790917932" />
<state width="1398" height="294" key="GridCell.Tab.2.center/0.25.1440.816@0.25.1440.816" timestamp="1634789238272" />
<state width="1398" height="294" key="GridCell.Tab.2.left" timestamp="1634790917931">
<screen x="0" y="0" width="1440" height="900" />
</state>
<state width="1398" height="294" key="GridCell.Tab.2.left/0.0.1440.900@0.0.1440.900" timestamp="1634790917931" />
<state width="1398" height="294" key="GridCell.Tab.2.left/0.25.1440.816@0.25.1440.816" timestamp="1634789238272" />
<state width="1398" height="294" key="GridCell.Tab.2.right" timestamp="1634790917932">
<screen x="0" y="0" width="1440" height="900" />
</state>
<state width="1398" height="294" key="GridCell.Tab.2.right/0.0.1440.900@0.0.1440.900" timestamp="1634790917932" />
<state width="1398" height="294" key="GridCell.Tab.2.right/0.25.1440.816@0.25.1440.816" timestamp="1634789238273" />
<state x="383" y="212" width="889" height="476" key="find.popup" timestamp="1634789215628">
<screen x="0" y="0" width="1440" height="900" />
</state>
<state x="383" y="212" width="889" height="476" key="find.popup/0.0.1440.900@0.0.1440.900" timestamp="1634789215628" />
<state x="385" y="196" width="670" height="676" key="search.everywhere.popup" timestamp="1634790636031">
<screen x="0" y="0" width="1440" height="900" />
</state>
<state x="385" y="196" width="670" height="676" key="search.everywhere.popup/0.0.1440.900@0.0.1440.900" timestamp="1634790636031" />
</component>
</project> </project>

View File

@@ -50,6 +50,11 @@
- 控制台URLlocalhost:8079 - 控制台URLlocalhost:8079
- admin-monitor服务模块 (可选) - admin-monitor服务模块 (可选)
- 控制台URLlocalhost:8769 - 控制台URLlocalhost:8769
- XXL-Job (可选仅当启动Job服务时使用)
- 版本2.2.0
- 控制台URLlocalhost:8081/xxl-job-admin/
- 注意该服务缺省端口为8080容易冲突所以改为了8081。我们在所有的配置中均使用了8081而非8080。
- 用户名密码admin/123456
- 启动upms服务 (保证登录和用户权限服务可用) - 启动upms服务 (保证登录和用户权限服务可用)
- 启动其他业务应用微服务<br> - 启动其他业务应用微服务<br>
推荐在gateway服务之前启动以便gateway服务启动后可以即刻发现服务。由于gateway是从注册中心定时拉取微服务信息所以在gateway之后启动的微服务通常会延迟一小段时间之后才会被发现。 推荐在gateway服务之前启动以便gateway服务启动后可以即刻发现服务。由于gateway是从注册中心定时拉取微服务信息所以在gateway之后启动的微服务通常会延迟一小段时间之后才会被发现。

View File

@@ -65,26 +65,40 @@
<orderEntry type="library" name="Maven: com.alibaba:druid-spring-boot-starter:1.2.6" level="project" /> <orderEntry type="library" name="Maven: com.alibaba:druid-spring-boot-starter:1.2.6" level="project" />
<orderEntry type="library" name="Maven: com.alibaba:druid:1.2.6" level="project" /> <orderEntry type="library" name="Maven: com.alibaba:druid:1.2.6" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-autoconfigure:2.3.10.RELEASE" level="project" /> <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-autoconfigure:2.3.10.RELEASE" level="project" />
<orderEntry type="library" name="Maven: tk.mybatis:mapper-spring-boot-starter:2.1.5" level="project" /> <orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-boot-starter:3.4.2" level="project" />
<orderEntry type="library" name="Maven: com.baomidou:mybatis-plus:3.4.2" level="project" />
<orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-extension:3.4.2" level="project" />
<orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-core:3.4.2" level="project" />
<orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-annotation:3.4.2" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-jdbc:2.3.10.RELEASE" level="project" /> <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-jdbc:2.3.10.RELEASE" level="project" />
<orderEntry type="library" name="Maven: com.zaxxer:HikariCP:3.4.5" level="project" /> <orderEntry type="library" name="Maven: com.zaxxer:HikariCP:3.4.5" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-jdbc:5.2.14.RELEASE" level="project" /> <orderEntry type="library" name="Maven: org.springframework:spring-jdbc:5.2.14.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-tx:5.2.14.RELEASE" level="project" /> <orderEntry type="library" name="Maven: org.springframework:spring-tx:5.2.14.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.3.0" level="project" /> <orderEntry type="library" name="Maven: com.github.pagehelper:pagehelper-spring-boot-starter:1.3.0" level="project" />
<orderEntry type="library" name="Maven: org.mybatis.spring.boot:mybatis-spring-boot-starter:2.1.3" level="project" /> <orderEntry type="library" name="Maven: org.mybatis.spring.boot:mybatis-spring-boot-starter:2.1.3" level="project" />
<orderEntry type="library" name="Maven: org.mybatis.spring.boot:mybatis-spring-boot-autoconfigure:2.1.3" level="project" /> <orderEntry type="library" name="Maven: org.mybatis.spring.boot:mybatis-spring-boot-autoconfigure:2.1.3" level="project" />
<orderEntry type="library" name="Maven: org.mybatis:mybatis:3.5.5" level="project" />
<orderEntry type="library" name="Maven: org.mybatis:mybatis-spring:2.0.5" level="project" />
<orderEntry type="library" name="Maven: com.github.pagehelper:pagehelper-spring-boot-autoconfigure:1.3.0" level="project" /> <orderEntry type="library" name="Maven: com.github.pagehelper:pagehelper-spring-boot-autoconfigure:1.3.0" level="project" />
<orderEntry type="library" name="Maven: com.github.pagehelper:pagehelper:5.2.0" level="project" /> <orderEntry type="library" name="Maven: com.github.pagehelper:pagehelper:5.2.0" level="project" />
<orderEntry type="library" name="Maven: com.github.jsqlparser:jsqlparser:3.2" level="project" /> <orderEntry type="library" name="Maven: com.github.jsqlparser:jsqlparser:3.2" level="project" />
<orderEntry type="module" module-name="common-datafilter" />
<orderEntry type="module" module-name="common-redis" />
<orderEntry type="library" name="Maven: org.redisson:redisson:3.15.4" level="project" />
<orderEntry type="library" name="Maven: io.netty:netty-common:4.1.63.Final" level="project" />
<orderEntry type="library" name="Maven: io.netty:netty-codec:4.1.63.Final" level="project" />
<orderEntry type="library" name="Maven: io.netty:netty-buffer:4.1.63.Final" level="project" />
<orderEntry type="library" name="Maven: io.netty:netty-transport:4.1.63.Final" level="project" />
<orderEntry type="library" name="Maven: io.netty:netty-resolver-dns:4.1.63.Final" level="project" />
<orderEntry type="library" name="Maven: io.netty:netty-codec-dns:4.1.63.Final" level="project" />
<orderEntry type="library" name="Maven: javax.cache:cache-api:1.1.1" level="project" />
<orderEntry type="library" name="Maven: io.projectreactor:reactor-core:3.3.16.RELEASE" level="project" />
<orderEntry type="library" name="Maven: io.reactivex.rxjava3:rxjava:3.0.12" level="project" />
<orderEntry type="library" name="Maven: org.jboss.marshalling:jboss-marshalling-river:2.0.11.Final" level="project" />
<orderEntry type="library" name="Maven: org.jboss.marshalling:jboss-marshalling:2.0.11.Final" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.11.4" level="project" />
<orderEntry type="library" name="Maven: org.jodd:jodd-bean:5.1.6" level="project" />
<orderEntry type="library" name="Maven: org.jodd:jodd-core:5.1.6" level="project" />
<orderEntry type="module" module-name="common-swagger" /> <orderEntry type="module" module-name="common-swagger" />
<orderEntry type="library" name="Maven: com.github.xiaoymin:knife4j-micro-spring-boot-starter:2.0.8" level="project" /> <orderEntry type="library" name="Maven: com.github.xiaoymin:knife4j-micro-spring-boot-starter:2.0.8" level="project" />
<orderEntry type="library" name="Maven: com.github.xiaoymin:knife4j-spring-boot-autoconfigure:2.0.8" level="project" /> <orderEntry type="library" name="Maven: com.github.xiaoymin:knife4j-spring-boot-autoconfigure:2.0.8" level="project" />
@@ -151,11 +165,7 @@
<orderEntry type="library" name="Maven: com.alibaba.csp:sentinel-cluster-server-default:1.8.0" level="project" /> <orderEntry type="library" name="Maven: com.alibaba.csp:sentinel-cluster-server-default:1.8.0" level="project" />
<orderEntry type="library" name="Maven: com.alibaba.csp:sentinel-cluster-common-default:1.8.0" level="project" /> <orderEntry type="library" name="Maven: com.alibaba.csp:sentinel-cluster-common-default:1.8.0" level="project" />
<orderEntry type="library" name="Maven: io.netty:netty-handler:4.1.63.Final" level="project" /> <orderEntry type="library" name="Maven: io.netty:netty-handler:4.1.63.Final" level="project" />
<orderEntry type="library" name="Maven: io.netty:netty-common:4.1.63.Final" level="project" />
<orderEntry type="library" name="Maven: io.netty:netty-resolver:4.1.63.Final" level="project" /> <orderEntry type="library" name="Maven: io.netty:netty-resolver:4.1.63.Final" level="project" />
<orderEntry type="library" name="Maven: io.netty:netty-buffer:4.1.63.Final" level="project" />
<orderEntry type="library" name="Maven: io.netty:netty-transport:4.1.63.Final" level="project" />
<orderEntry type="library" name="Maven: io.netty:netty-codec:4.1.63.Final" level="project" />
<orderEntry type="library" name="Maven: com.alibaba.csp:sentinel-cluster-client-default:1.8.0" level="project" /> <orderEntry type="library" name="Maven: com.alibaba.csp:sentinel-cluster-client-default:1.8.0" level="project" />
<orderEntry type="library" name="Maven: com.alibaba.cloud:spring-cloud-alibaba-sentinel-datasource:2.2.5.RELEASE" level="project" /> <orderEntry type="library" name="Maven: com.alibaba.cloud:spring-cloud-alibaba-sentinel-datasource:2.2.5.RELEASE" level="project" />
<orderEntry type="library" name="Maven: com.alibaba.csp:sentinel-datasource-nacos:1.8.0" level="project" /> <orderEntry type="library" name="Maven: com.alibaba.csp:sentinel-datasource-nacos:1.8.0" level="project" />
@@ -218,7 +228,7 @@
<orderEntry type="library" name="Maven: com.netflix.hystrix:hystrix-javanica: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" 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" 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.reactivestreams:reactive-streams:1.0.3" level="project" />
<orderEntry type="library" name="Maven: org.hibernate.validator:hibernate-validator:6.2.0.Final" level="project" /> <orderEntry type="library" name="Maven: org.hibernate.validator:hibernate-validator:6.2.0.Final" level="project" />
<orderEntry type="library" name="Maven: jakarta.validation:jakarta.validation-api:2.0.2" level="project" /> <orderEntry type="library" name="Maven: jakarta.validation:jakarta.validation-api:2.0.2" level="project" />
<orderEntry type="library" name="Maven: org.jboss.logging:jboss-logging:3.4.1.Final" level="project" /> <orderEntry type="library" name="Maven: org.jboss.logging:jboss-logging:3.4.1.Final" level="project" />

View File

@@ -26,6 +26,11 @@
<artifactId>common-core</artifactId> <artifactId>common-core</artifactId>
<version>1.0.0</version> <version>1.0.0</version>
</dependency> </dependency>
<dependency>
<groupId>com.orange.demo</groupId>
<artifactId>common-datafilter</artifactId>
<version>1.0.0</version>
</dependency>
<!-- knife4j 接口文档框架 --> <!-- knife4j 接口文档框架 -->
<dependency> <dependency>
<groupId>com.orange.demo</groupId> <groupId>com.orange.demo</groupId>

View File

@@ -1,156 +0,0 @@
package com.orange.demo.courseclassapi.client;
import com.orange.demo.common.core.base.client.BaseFallbackFactory;
import com.orange.demo.common.core.config.FeignConfig;
import com.orange.demo.common.core.base.client.BaseClient;
import com.orange.demo.common.core.object.*;
import com.orange.demo.courseclassapi.dto.SchoolInfoDto;
import com.orange.demo.courseclassapi.vo.SchoolInfoVo;
import lombok.extern.slf4j.Slf4j;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.*;
import java.util.*;
/**
* 校区数据服务远程数据操作访问接口。
*
* @author Jerry
* @date 2020-08-08
*/
@FeignClient(
name = "course-class",
configuration = FeignConfig.class,
fallbackFactory = SchoolInfoClient.SchoolInfoClientFallbackFactory.class)
public interface SchoolInfoClient extends BaseClient<SchoolInfoDto, SchoolInfoVo, Long> {
/**
* 基于主键的(In-list)条件获取远程数据接口。
*
* @param schoolIds 主键Id集合。
* @param withDict 是否包含字典关联。
* @return 应答结果对象,包含主对象的数据集合。
*/
@Override
@PostMapping("/schoolInfo/listByIds")
ResponseResult<List<SchoolInfoVo>> listByIds(
@RequestParam("schoolIds") Set<Long> schoolIds,
@RequestParam("withDict") Boolean withDict);
/**
* 基于主键Id获取远程对象。
*
* @param schoolId 主键Id。
* @param withDict 是否包含字典关联。
* @return 应答结果对象,包含主对象数据。
*/
@Override
@PostMapping("/schoolInfo/getById")
ResponseResult<SchoolInfoVo> getById(
@RequestParam("schoolId") Long schoolId,
@RequestParam("withDict") Boolean withDict);
/**
* 判断参数列表中指定的主键Id是否都存在。
*
* @param schoolIds 主键Id集合。
* @return 应答结果对象包含true全部存在否则false。
*/
@Override
@PostMapping("/schoolInfo/existIds")
ResponseResult<Boolean> existIds(@RequestParam("schoolIds") Set<Long> schoolIds);
/**
* 判断主键Id是否存在。
*
* @param schoolId 参数主键Id。
* @return 应答结果对象包含true表示存在否则false。
*/
@Override
@PostMapping("/schoolInfo/existId")
ResponseResult<Boolean> existId(@RequestParam("schoolId") Long schoolId);
/**
* 删除主键Id关联的对象。
*
* @param schoolId 主键Id。
* @return 应答结果对象。
*/
@Override
@PostMapping("/schoolInfo/deleteById")
ResponseResult<Integer> deleteById(@RequestParam("schoolId") Long schoolId);
/**
* 删除符合过滤条件的数据。
*
* @param filter 过滤对象。
* @return 应答结果对象,包含删除数量。
*/
@Override
@PostMapping("/schoolInfo/deleteBy")
ResponseResult<Integer> deleteBy(@RequestBody SchoolInfoDto filter);
/**
* 获取远程主对象中符合查询条件的数据列表。
*
* @param queryParam 查询参数。
* @return 应答结果对象,包含实体对象集合。
*/
@Override
@PostMapping("/schoolInfo/listBy")
ResponseResult<MyPageData<SchoolInfoVo>> listBy(@RequestBody MyQueryParam queryParam);
/**
* 获取远程主对象中符合查询条件的单条数据对象。
*
* @param queryParam 查询参数。
* @return 应答结果对象,包含实体对象。
*/
@Override
@PostMapping("/schoolInfo/getBy")
ResponseResult<SchoolInfoVo> getBy(@RequestBody MyQueryParam queryParam);
/**
* 获取远程主对象中符合查询条件的数据列表。
* 和listBy接口相比以Map列表的方式返回的主要目的是降低服务之间的耦合度。
*
* @param queryParam 查询参数。
* @return 应答结果对象,包含主对象集合。
*/
@Override
@PostMapping("/schoolInfo/listMapBy")
ResponseResult<MyPageData<Map<String, Object>>> listMapBy(@RequestBody MyQueryParam queryParam);
/**
* 获取远程主对象中符合查询条件的数据数量。
*
* @param queryParam 查询参数。
* @return 应答结果对象,包含结果数量。
*/
@Override
@PostMapping("/schoolInfo/countBy")
ResponseResult<Integer> countBy(@RequestBody MyQueryParam queryParam);
/**
* 获取远程对象中符合查询条件的分组聚合计算Map列表。
*
* @param aggregationParam 聚合参数。
* @return 应该结果对象包含聚合计算后的分组Map列表。
*/
@Override
@PostMapping("/schoolInfo/aggregateBy")
ResponseResult<List<Map<String, Object>>> aggregateBy(@RequestBody MyAggregationParam aggregationParam);
@Component("CourseClassSchoolInfoClientFallbackFactory")
@Slf4j
class SchoolInfoClientFallbackFactory
extends BaseFallbackFactory<SchoolInfoDto, SchoolInfoVo, Long, SchoolInfoClient> implements SchoolInfoClient {
@Override
public SchoolInfoClient create(Throwable throwable) {
log.error("Exception For Feign Remote Call.", throwable);
return new SchoolInfoClientFallbackFactory();
}
}
}

View File

@@ -1,48 +0,0 @@
package com.orange.demo.courseclassapi.dto;
import com.orange.demo.common.core.validator.UpdateGroup;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.*;
/**
* SchoolInfoDto对象。
*
* @author Jerry
* @date 2020-08-08
*/
@ApiModel("SchoolInfoDto对象")
@Data
public class SchoolInfoDto {
/**
* 学校Id。
*/
@ApiModelProperty(value = "学校Id", required = true)
@NotNull(message = "数据验证失败学校Id不能为空", groups = {UpdateGroup.class})
private Long schoolId;
/**
* 学校名称。
*/
@ApiModelProperty(value = "学校名称", required = true)
@NotBlank(message = "数据验证失败,学校名称不能为空!")
private String schoolName;
/**
* 所在省Id。
*/
@ApiModelProperty(value = "所在省Id", required = true)
@NotNull(message = "数据验证失败,所在省份不能为空!")
private Long provinceId;
/**
* 所在城市Id。
*/
@ApiModelProperty(value = "所在城市Id", required = true)
@NotNull(message = "数据验证失败,所在城市不能为空!")
private Long cityId;
}

View File

@@ -5,12 +5,12 @@ import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
/** /**
* ClassCourseVO对象。 * ClassCourseVO视图对象。
* *
* @author Jerry * @author Jerry
* @date 2020-08-08 * @date 2020-08-08
*/ */
@ApiModel("ClassCourseVO实体对象") @ApiModel("ClassCourseVO视图对象")
@Data @Data
public class ClassCourseVo { public class ClassCourseVo {

View File

@@ -5,12 +5,12 @@ import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
/** /**
* ClassStudentVO对象。 * ClassStudentVO视图对象。
* *
* @author Jerry * @author Jerry
* @date 2020-08-08 * @date 2020-08-08
*/ */
@ApiModel("ClassStudentVO实体对象") @ApiModel("ClassStudentVO视图对象")
@Data @Data
public class ClassStudentVo { public class ClassStudentVo {

View File

@@ -9,12 +9,12 @@ import java.util.Date;
import java.util.Map; import java.util.Map;
/** /**
* CourseVO对象。 * CourseVO视图对象。
* *
* @author Jerry * @author Jerry
* @date 2020-08-08 * @date 2020-08-08
*/ */
@ApiModel("CourseVO实体对象") @ApiModel("CourseVO视图对象")
@Data @Data
public class CourseVo { public class CourseVo {

View File

@@ -5,12 +5,12 @@ import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
/** /**
* GradeVO对象。 * GradeVO视图对象。
* *
* @author Jerry * @author Jerry
* @date 2020-08-08 * @date 2020-08-08
*/ */
@ApiModel("GradeVO实体对象") @ApiModel("GradeVO视图对象")
@Data @Data
public class GradeVo { public class GradeVo {

View File

@@ -1,54 +0,0 @@
package com.orange.demo.courseclassapi.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Map;
/**
* SchoolInfoVO对象。
*
* @author Jerry
* @date 2020-08-08
*/
@ApiModel("SchoolInfoVO实体对象")
@Data
public class SchoolInfoVo {
/**
* 学校Id。
*/
@ApiModelProperty(value = "学校Id")
private Long schoolId;
/**
* 学校名称。
*/
@ApiModelProperty(value = "学校名称")
private String schoolName;
/**
* 所在省Id。
*/
@ApiModelProperty(value = "所在省Id")
private Long provinceId;
/**
* 所在城市Id。
*/
@ApiModelProperty(value = "所在城市Id")
private Long cityId;
/**
* provinceId 字典关联数据。
*/
@ApiModelProperty(value = "provinceId 字典关联数据")
private Map<String, Object> provinceIdDictMap;
/**
* cityId 字典关联数据。
*/
@ApiModelProperty(value = "cityId 字典关联数据")
private Map<String, Object> cityIdDictMap;
}

View File

@@ -8,12 +8,12 @@ import java.util.Date;
import java.util.Map; import java.util.Map;
/** /**
* StudentClassVO对象。 * StudentClassVO视图对象。
* *
* @author Jerry * @author Jerry
* @date 2020-08-08 * @date 2020-08-08
*/ */
@ApiModel("StudentClassVO实体对象") @ApiModel("StudentClassVO视图对象")
@Data @Data
public class StudentClassVo { public class StudentClassVo {

View File

@@ -8,12 +8,12 @@ import java.util.Date;
import java.util.Map; import java.util.Map;
/** /**
* StudentVO对象。 * StudentVO视图对象。
* *
* @author Jerry * @author Jerry
* @date 2020-08-08 * @date 2020-08-08
*/ */
@ApiModel("StudentVO实体对象") @ApiModel("StudentVO视图对象")
@Data @Data
public class StudentVo { public class StudentVo {
@@ -107,6 +107,12 @@ public class StudentVo {
@ApiModelProperty(value = "学生状态 (0: 正常 1: 锁定 2: 注销)") @ApiModelProperty(value = "学生状态 (0: 正常 1: 锁定 2: 注销)")
private Integer status; private Integer status;
/**
* schoolId 字典关联数据。
*/
@ApiModelProperty(value = "schoolId 字典关联数据")
private Map<String, Object> schoolIdDictMap;
/** /**
* provinceId 字典关联数据。 * provinceId 字典关联数据。
*/ */
@@ -131,12 +137,6 @@ public class StudentVo {
@ApiModelProperty(value = "gradeId 字典关联数据") @ApiModelProperty(value = "gradeId 字典关联数据")
private Map<String, Object> gradeIdDictMap; private Map<String, Object> gradeIdDictMap;
/**
* schoolId 字典关联数据。
*/
@ApiModelProperty(value = "schoolId 字典关联数据")
private Map<String, Object> schoolIdDictMap;
/** /**
* gender 常量字典关联数据。 * gender 常量字典关联数据。
*/ */

View File

@@ -64,26 +64,23 @@
<orderEntry type="library" scope="RUNTIME" name="Maven: mysql:mysql-connector-java:8.0.23" level="project" /> <orderEntry type="library" scope="RUNTIME" name="Maven: mysql:mysql-connector-java:8.0.23" level="project" />
<orderEntry type="library" name="Maven: com.alibaba:druid-spring-boot-starter:1.2.6" level="project" /> <orderEntry type="library" name="Maven: com.alibaba:druid-spring-boot-starter:1.2.6" level="project" />
<orderEntry type="library" name="Maven: com.alibaba:druid:1.2.6" level="project" /> <orderEntry type="library" name="Maven: com.alibaba:druid:1.2.6" level="project" />
<orderEntry type="library" name="Maven: tk.mybatis:mapper-spring-boot-starter:2.1.5" level="project" /> <orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-boot-starter:3.4.2" level="project" />
<orderEntry type="library" name="Maven: com.baomidou:mybatis-plus:3.4.2" level="project" />
<orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-extension:3.4.2" level="project" />
<orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-core:3.4.2" level="project" />
<orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-annotation:3.4.2" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-jdbc:2.3.10.RELEASE" level="project" /> <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-jdbc:2.3.10.RELEASE" level="project" />
<orderEntry type="library" name="Maven: com.zaxxer:HikariCP:3.4.5" level="project" /> <orderEntry type="library" name="Maven: com.zaxxer:HikariCP:3.4.5" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-jdbc:5.2.14.RELEASE" level="project" /> <orderEntry type="library" name="Maven: org.springframework:spring-jdbc:5.2.14.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-tx:5.2.14.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.3.0" level="project" /> <orderEntry type="library" name="Maven: com.github.pagehelper:pagehelper-spring-boot-starter:1.3.0" level="project" />
<orderEntry type="library" name="Maven: org.mybatis.spring.boot:mybatis-spring-boot-starter:2.1.3" level="project" /> <orderEntry type="library" name="Maven: org.mybatis.spring.boot:mybatis-spring-boot-starter:2.1.3" level="project" />
<orderEntry type="library" name="Maven: org.mybatis.spring.boot:mybatis-spring-boot-autoconfigure:2.1.3" level="project" /> <orderEntry type="library" name="Maven: org.mybatis.spring.boot:mybatis-spring-boot-autoconfigure:2.1.3" level="project" />
<orderEntry type="library" name="Maven: org.mybatis:mybatis:3.5.5" level="project" />
<orderEntry type="library" name="Maven: org.mybatis:mybatis-spring:2.0.5" level="project" />
<orderEntry type="library" name="Maven: com.github.pagehelper:pagehelper-spring-boot-autoconfigure:1.3.0" level="project" /> <orderEntry type="library" name="Maven: com.github.pagehelper:pagehelper-spring-boot-autoconfigure:1.3.0" level="project" />
<orderEntry type="library" name="Maven: com.github.pagehelper:pagehelper:5.2.0" level="project" /> <orderEntry type="library" name="Maven: com.github.pagehelper:pagehelper:5.2.0" level="project" />
<orderEntry type="library" name="Maven: com.github.jsqlparser:jsqlparser:3.2" level="project" /> <orderEntry type="library" name="Maven: com.github.jsqlparser:jsqlparser:3.2" level="project" />
<orderEntry type="module" module-name="common-datafilter" />
<orderEntry type="module" module-name="common-swagger" /> <orderEntry type="module" module-name="common-swagger" />
<orderEntry type="library" name="Maven: com.github.xiaoymin:knife4j-micro-spring-boot-starter:2.0.8" level="project" /> <orderEntry type="library" name="Maven: com.github.xiaoymin:knife4j-micro-spring-boot-starter:2.0.8" level="project" />
<orderEntry type="library" name="Maven: com.github.xiaoymin:knife4j-spring-boot-autoconfigure:2.0.8" level="project" /> <orderEntry type="library" name="Maven: com.github.xiaoymin:knife4j-spring-boot-autoconfigure:2.0.8" level="project" />
@@ -102,7 +99,12 @@
<orderEntry type="library" name="Maven: io.github.classgraph:classgraph:4.1.7" level="project" /> <orderEntry type="library" name="Maven: io.github.classgraph:classgraph:4.1.7" level="project" />
<orderEntry type="library" name="Maven: io.springfox:springfox-bean-validators:2.10.5" level="project" /> <orderEntry type="library" name="Maven: io.springfox:springfox-bean-validators:2.10.5" level="project" />
<orderEntry type="library" name="Maven: io.springfox:springfox-spring-webmvc:2.10.5" level="project" /> <orderEntry type="library" name="Maven: io.springfox:springfox-spring-webmvc:2.10.5" level="project" />
<orderEntry type="library" name="Maven: com.orange.demo:common-log:1.0.0" level="project" /> <orderEntry type="module" module-name="upms-api" />
<orderEntry type="module" module-name="common-log" />
<orderEntry type="library" name="Maven: org.springframework.kafka:spring-kafka:2.5.12.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-messaging:5.2.14.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-tx:5.2.14.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.retry:spring-retry:1.2.5.RELEASE" level="project" />
<orderEntry type="module" module-name="common-redis" /> <orderEntry type="module" module-name="common-redis" />
<orderEntry type="library" name="Maven: org.redisson:redisson:3.15.4" level="project" /> <orderEntry type="library" name="Maven: org.redisson:redisson:3.15.4" level="project" />
<orderEntry type="library" name="Maven: io.netty:netty-common:4.1.63.Final" level="project" /> <orderEntry type="library" name="Maven: io.netty:netty-common:4.1.63.Final" level="project" />

View File

@@ -20,6 +20,11 @@
<artifactId>course-class-api</artifactId> <artifactId>course-class-api</artifactId>
<version>1.0.0</version> <version>1.0.0</version>
</dependency> </dependency>
<dependency>
<groupId>com.orange.demo</groupId>
<artifactId>upms-api</artifactId>
<version>1.0.0</version>
</dependency>
<dependency> <dependency>
<groupId>com.orange.demo</groupId> <groupId>com.orange.demo</groupId>
<artifactId>common-log</artifactId> <artifactId>common-log</artifactId>

View File

@@ -6,7 +6,7 @@ import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary; import org.springframework.context.annotation.Primary;
import org.springframework.transaction.annotation.EnableTransactionManagement; import org.springframework.transaction.annotation.EnableTransactionManagement;
import tk.mybatis.spring.annotation.MapperScan; import org.mybatis.spring.annotation.MapperScan;
import javax.sql.DataSource; import javax.sql.DataSource;

View File

@@ -6,6 +6,8 @@ import com.orange.demo.common.core.upload.BaseUpDownloader;
import com.orange.demo.common.core.upload.UpDownloaderFactory; import com.orange.demo.common.core.upload.UpDownloaderFactory;
import com.orange.demo.common.core.upload.UploadResponseInfo; import com.orange.demo.common.core.upload.UploadResponseInfo;
import com.orange.demo.common.core.upload.UploadStoreInfo; import com.orange.demo.common.core.upload.UploadStoreInfo;
import com.orange.demo.common.log.annotation.OperationLog;
import com.orange.demo.common.log.model.constant.SysOperationLogType;
import com.github.pagehelper.page.PageMethod; import com.github.pagehelper.page.PageMethod;
import com.orange.demo.courseclassservice.model.*; import com.orange.demo.courseclassservice.model.*;
import com.orange.demo.courseclassservice.service.*; import com.orange.demo.courseclassservice.service.*;
@@ -17,7 +19,6 @@ import com.orange.demo.common.core.constant.*;
import com.orange.demo.common.core.base.controller.BaseController; import com.orange.demo.common.core.base.controller.BaseController;
import com.orange.demo.common.core.base.service.IBaseService; import com.orange.demo.common.core.base.service.IBaseService;
import com.orange.demo.common.core.annotation.MyRequestBody; import com.orange.demo.common.core.annotation.MyRequestBody;
import com.orange.demo.common.core.validator.UpdateGroup;
import com.orange.demo.common.redis.cache.SessionCacheHelper; import com.orange.demo.common.redis.cache.SessionCacheHelper;
import com.orange.demo.courseclassservice.config.ApplicationConfig; import com.orange.demo.courseclassservice.config.ApplicationConfig;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
@@ -28,7 +29,6 @@ import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import javax.validation.groups.Default;
import java.util.*; import java.util.*;
/** /**
@@ -71,9 +71,10 @@ public class CourseController extends BaseController<Course, CourseVo, Long> {
"courseDto.classHourEnd", "courseDto.classHourEnd",
"courseDto.updateTimeStart", "courseDto.updateTimeStart",
"courseDto.updateTimeEnd"}) "courseDto.updateTimeEnd"})
@OperationLog(type = SysOperationLogType.ADD)
@PostMapping("/add") @PostMapping("/add")
public ResponseResult<Long> add(@MyRequestBody CourseDto courseDto) { public ResponseResult<Long> add(@MyRequestBody CourseDto courseDto) {
String errorMessage = MyCommonUtil.getModelValidationError(courseDto); String errorMessage = MyCommonUtil.getModelValidationError(courseDto, false);
if (errorMessage != null) { if (errorMessage != null) {
return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage); return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage);
} }
@@ -101,9 +102,10 @@ public class CourseController extends BaseController<Course, CourseVo, Long> {
"CourseDto.classHourEnd", "CourseDto.classHourEnd",
"CourseDto.updateTimeStart", "CourseDto.updateTimeStart",
"CourseDto.updateTimeEnd"}) "CourseDto.updateTimeEnd"})
@OperationLog(type = SysOperationLogType.UPDATE)
@PostMapping("/update") @PostMapping("/update")
public ResponseResult<Void> update(@MyRequestBody CourseDto courseDto) { public ResponseResult<Void> update(@MyRequestBody CourseDto courseDto) {
String errorMessage = MyCommonUtil.getModelValidationError(courseDto, Default.class, UpdateGroup.class); String errorMessage = MyCommonUtil.getModelValidationError(courseDto, true);
if (errorMessage != null) { if (errorMessage != null) {
return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage); return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage);
} }
@@ -132,6 +134,7 @@ public class CourseController extends BaseController<Course, CourseVo, Long> {
* @param courseId 删除对象主键Id。 * @param courseId 删除对象主键Id。
* @return 应答结果对象。 * @return 应答结果对象。
*/ */
@OperationLog(type = SysOperationLogType.DELETE)
@PostMapping("/delete") @PostMapping("/delete")
public ResponseResult<Void> delete(@MyRequestBody Long courseId) { public ResponseResult<Void> delete(@MyRequestBody Long courseId) {
String errorMessage; String errorMessage;
@@ -170,8 +173,7 @@ public class CourseController extends BaseController<Course, CourseVo, Long> {
} }
Course courseFilter = MyModelUtil.copyTo(courseDtoFilter, Course.class); Course courseFilter = MyModelUtil.copyTo(courseDtoFilter, Course.class);
String orderBy = MyOrderParam.buildOrderBy(orderParam, Course.class); String orderBy = MyOrderParam.buildOrderBy(orderParam, Course.class);
List<Course> courseList = List<Course> courseList = courseService.getCourseListWithRelation(courseFilter, orderBy);
courseService.getCourseListWithRelation(courseFilter, orderBy);
return ResponseResult.success(MyPageUtil.makeResponseData(courseList, Course.INSTANCE)); return ResponseResult.success(MyPageUtil.makeResponseData(courseList, Course.INSTANCE));
} }
@@ -186,8 +188,7 @@ public class CourseController extends BaseController<Course, CourseVo, Long> {
if (MyCommonUtil.existBlankArgument(courseId)) { if (MyCommonUtil.existBlankArgument(courseId)) {
return ResponseResult.error(ErrorCodeEnum.ARGUMENT_NULL_EXIST); return ResponseResult.error(ErrorCodeEnum.ARGUMENT_NULL_EXIST);
} }
Course course = Course course = courseService.getByIdWithRelation(courseId, MyRelationParam.full());
courseService.getByIdWithRelation(courseId, MyRelationParam.full());
if (course == null) { if (course == null) {
return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST); return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST);
} }
@@ -205,6 +206,7 @@ public class CourseController extends BaseController<Course, CourseVo, Long> {
* @param asImage 下载文件是否为图片。 * @param asImage 下载文件是否为图片。
* @param response Http 应答对象。 * @param response Http 应答对象。
*/ */
@OperationLog(type = SysOperationLogType.DOWNLOAD, saveResponse = false)
@GetMapping("/download") @GetMapping("/download")
public void download( public void download(
@RequestParam(required = false) Long courseId, @RequestParam(required = false) Long courseId,
@@ -263,6 +265,7 @@ public class CourseController extends BaseController<Course, CourseVo, Long> {
* @param asImage 是否作为图片上传。如果是图片,今后下载的时候无需权限验证。否则就是附件上传,下载时需要权限验证。 * @param asImage 是否作为图片上传。如果是图片,今后下载的时候无需权限验证。否则就是附件上传,下载时需要权限验证。
* @param uploadFile 上传文件对象。 * @param uploadFile 上传文件对象。
*/ */
@OperationLog(type = SysOperationLogType.UPLOAD, saveResponse = false)
@PostMapping("/upload") @PostMapping("/upload")
public void upload( public void upload(
@RequestParam String fieldName, @RequestParam String fieldName,

View File

@@ -14,6 +14,8 @@ import com.orange.demo.common.core.constant.ErrorCodeEnum;
import com.orange.demo.common.core.util.MyModelUtil; import com.orange.demo.common.core.util.MyModelUtil;
import com.orange.demo.common.core.util.MyCommonUtil; import com.orange.demo.common.core.util.MyCommonUtil;
import com.orange.demo.common.core.validator.UpdateGroup; import com.orange.demo.common.core.validator.UpdateGroup;
import com.orange.demo.common.log.annotation.OperationLog;
import com.orange.demo.common.log.model.constant.SysOperationLogType;
import com.orange.demo.courseclassapi.dto.GradeDto; import com.orange.demo.courseclassapi.dto.GradeDto;
import com.orange.demo.courseclassapi.vo.GradeVo; import com.orange.demo.courseclassapi.vo.GradeVo;
import com.orange.demo.courseclassservice.model.Grade; import com.orange.demo.courseclassservice.model.Grade;
@@ -52,6 +54,7 @@ public class GradeController extends BaseController<Grade, GradeVo, Integer> {
* @return 应答结果对象包含新增对象主键Id。 * @return 应答结果对象包含新增对象主键Id。
*/ */
@ApiOperationSupport(ignoreParameters = {"gradeDto.gradeId"}) @ApiOperationSupport(ignoreParameters = {"gradeDto.gradeId"})
@OperationLog(type = SysOperationLogType.ADD)
@PostMapping("/add") @PostMapping("/add")
public ResponseResult<Integer> add(@MyRequestBody GradeDto gradeDto) { public ResponseResult<Integer> add(@MyRequestBody GradeDto gradeDto) {
String errorMessage = MyCommonUtil.getModelValidationError(gradeDto); String errorMessage = MyCommonUtil.getModelValidationError(gradeDto);
@@ -69,6 +72,7 @@ public class GradeController extends BaseController<Grade, GradeVo, Integer> {
* @param gradeDto 更新对象。 * @param gradeDto 更新对象。
* @return 应答结果对象。 * @return 应答结果对象。
*/ */
@OperationLog(type = SysOperationLogType.UPDATE)
@PostMapping("/update") @PostMapping("/update")
public ResponseResult<Void> update(@MyRequestBody GradeDto gradeDto) { public ResponseResult<Void> update(@MyRequestBody GradeDto gradeDto) {
String errorMessage = MyCommonUtil.getModelValidationError(gradeDto, Default.class, UpdateGroup.class); String errorMessage = MyCommonUtil.getModelValidationError(gradeDto, Default.class, UpdateGroup.class);
@@ -92,6 +96,7 @@ public class GradeController extends BaseController<Grade, GradeVo, Integer> {
* @param gradeId 删除对象主键Id。 * @param gradeId 删除对象主键Id。
* @return 应答结果对象。 * @return 应答结果对象。
*/ */
@OperationLog(type = SysOperationLogType.DELETE)
@PostMapping("/delete") @PostMapping("/delete")
public ResponseResult<Void> delete(@MyRequestBody Integer gradeId) { public ResponseResult<Void> delete(@MyRequestBody Integer gradeId) {
if (MyCommonUtil.existBlankArgument(gradeId)) { if (MyCommonUtil.existBlankArgument(gradeId)) {
@@ -276,6 +281,7 @@ public class GradeController extends BaseController<Grade, GradeVo, Integer> {
* 由于缓存的数据更新在add/update/delete等接口均有同步处理。因此该接口仅当同步过程中出现问题时 * 由于缓存的数据更新在add/update/delete等接口均有同步处理。因此该接口仅当同步过程中出现问题时
* 可手工调用,或者每天晚上定时同步一次。 * 可手工调用,或者每天晚上定时同步一次。
*/ */
@OperationLog(type = SysOperationLogType.RELOAD_CACHE)
@GetMapping("/reloadCachedData") @GetMapping("/reloadCachedData")
public ResponseResult<Boolean> reloadCachedData() { public ResponseResult<Boolean> reloadCachedData() {
gradeService.reloadCachedData(true); gradeService.reloadCachedData(true);

View File

@@ -1,334 +0,0 @@
package com.orange.demo.courseclassservice.controller;
import cn.jimmyshi.beanquery.BeanQuery;
import com.github.pagehelper.page.PageMethod;
import com.orange.demo.courseclassservice.model.*;
import com.orange.demo.courseclassservice.service.*;
import com.orange.demo.courseclassapi.dto.*;
import com.orange.demo.courseclassapi.vo.*;
import com.orange.demo.common.core.object.*;
import com.orange.demo.common.core.util.*;
import com.orange.demo.common.core.constant.*;
import com.orange.demo.common.core.base.controller.BaseController;
import com.orange.demo.common.core.base.service.IBaseService;
import com.orange.demo.common.core.annotation.MyRequestBody;
import com.orange.demo.common.core.validator.UpdateGroup;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import io.swagger.annotations.*;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.validation.groups.Default;
import java.util.*;
/**
* 校区数据操作控制器类。
*
* @author Jerry
* @date 2020-08-08
*/
@Api(tags = "校区数据管理接口")
@Slf4j
@RestController
@RequestMapping("/schoolInfo")
public class SchoolInfoController extends BaseController<SchoolInfo, SchoolInfoVo, Long> {
@Autowired
private SchoolInfoService schoolInfoService;
@Override
protected IBaseService<SchoolInfo, Long> service() {
return schoolInfoService;
}
/**
* 新增校区数据数据。
*
* @param schoolInfoDto 新增对象。
* @return 应答结果对象包含新增对象主键Id。
*/
@ApiOperationSupport(ignoreParameters = {"schoolInfoDto.schoolId"})
@PostMapping("/add")
public ResponseResult<Long> add(@MyRequestBody SchoolInfoDto schoolInfoDto) {
String errorMessage = MyCommonUtil.getModelValidationError(schoolInfoDto);
if (errorMessage != null) {
return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage);
}
SchoolInfo schoolInfo = MyModelUtil.copyTo(schoolInfoDto, SchoolInfo.class);
// 验证关联Id的数据合法性
CallResult callResult = schoolInfoService.verifyRelatedData(schoolInfo, null);
if (!callResult.isSuccess()) {
errorMessage = callResult.getErrorMessage();
return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage);
}
schoolInfo = schoolInfoService.saveNew(schoolInfo);
return ResponseResult.success(schoolInfo.getSchoolId());
}
/**
* 更新校区数据数据。
*
* @param schoolInfoDto 更新对象。
* @return 应答结果对象。
*/
@PostMapping("/update")
public ResponseResult<Void> update(@MyRequestBody SchoolInfoDto schoolInfoDto) {
String errorMessage = MyCommonUtil.getModelValidationError(schoolInfoDto, Default.class, UpdateGroup.class);
if (errorMessage != null) {
return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage);
}
SchoolInfo schoolInfo = MyModelUtil.copyTo(schoolInfoDto, SchoolInfo.class);
SchoolInfo originalSchoolInfo = schoolInfoService.getById(schoolInfo.getSchoolId());
if (originalSchoolInfo == null) {
// NOTE: 修改下面方括号中的话述
errorMessage = "数据验证失败,当前 [数据] 并不存在,请刷新后重试!";
return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST, errorMessage);
}
// 验证关联Id的数据合法性
CallResult callResult = schoolInfoService.verifyRelatedData(schoolInfo, originalSchoolInfo);
if (!callResult.isSuccess()) {
errorMessage = callResult.getErrorMessage();
return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage);
}
if (!schoolInfoService.update(schoolInfo, originalSchoolInfo)) {
return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST);
}
return ResponseResult.success();
}
/**
* 删除校区数据数据。
*
* @param schoolId 删除对象主键Id。
* @return 应答结果对象。
*/
@PostMapping("/delete")
public ResponseResult<Void> delete(@MyRequestBody Long schoolId) {
String errorMessage;
if (MyCommonUtil.existBlankArgument(schoolId)) {
return ResponseResult.error(ErrorCodeEnum.ARGUMENT_NULL_EXIST);
}
// 验证关联Id的数据合法性
SchoolInfo originalSchoolInfo = schoolInfoService.getById(schoolId);
if (originalSchoolInfo == null) {
// NOTE: 修改下面方括号中的话述
errorMessage = "数据验证失败,当前 [对象] 并不存在,请刷新后重试!";
return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST, errorMessage);
}
if (!schoolInfoService.remove(schoolId)) {
errorMessage = "数据操作失败,删除的对象不存在,请刷新后重试!";
return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST, errorMessage);
}
return ResponseResult.success();
}
/**
* 列出符合过滤条件的校区数据列表。
*
* @param schoolInfoDtoFilter 过滤对象。
* @param orderParam 排序参数。
* @param pageParam 分页参数。
* @return 应答结果对象,包含查询结果集。
*/
@PostMapping("/list")
public ResponseResult<MyPageData<SchoolInfoVo>> list(
@MyRequestBody SchoolInfoDto schoolInfoDtoFilter,
@MyRequestBody MyOrderParam orderParam,
@MyRequestBody MyPageParam pageParam) {
if (pageParam != null) {
PageMethod.startPage(pageParam.getPageNum(), pageParam.getPageSize());
}
SchoolInfo schoolInfoFilter = MyModelUtil.copyTo(schoolInfoDtoFilter, SchoolInfo.class);
String orderBy = MyOrderParam.buildOrderBy(orderParam, SchoolInfo.class);
List<SchoolInfo> schoolInfoList =
schoolInfoService.getSchoolInfoListWithRelation(schoolInfoFilter, orderBy);
return ResponseResult.success(MyPageUtil.makeResponseData(schoolInfoList, SchoolInfo.INSTANCE));
}
/**
* 查看指定校区数据对象详情。
*
* @param schoolId 指定对象主键Id。
* @return 应答结果对象,包含对象详情。
*/
@GetMapping("/view")
public ResponseResult<SchoolInfoVo> view(@RequestParam Long schoolId) {
if (MyCommonUtil.existBlankArgument(schoolId)) {
return ResponseResult.error(ErrorCodeEnum.ARGUMENT_NULL_EXIST);
}
SchoolInfo schoolInfo =
schoolInfoService.getByIdWithRelation(schoolId, MyRelationParam.full());
if (schoolInfo == null) {
return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST);
}
SchoolInfoVo schoolInfoVo = SchoolInfo.INSTANCE.fromModel(schoolInfo);
return ResponseResult.success(schoolInfoVo);
}
/**
* 以字典形式返回全部校区数据数据集合。字典的键值为[schoolId, schoolName]。
* 白名单接口,登录用户均可访问。
*
* @param filter 过滤对象。
* @return 应答结果对象,包含字典形式的数据集合。
*/
@GetMapping("/listDict")
public ResponseResult<List<Map<String, Object>>> listDict(SchoolInfo filter) {
List<SchoolInfo> resultList = schoolInfoService.getListByFilter(filter);
return ResponseResult.success(
BeanQuery.select("schoolId as id", "schoolName as name").executeFrom(resultList));
}
/**
* 根据字典Id集合获取查询后的字典数据。
*
* @param dictIds 字典Id集合。
* @return 应答结果对象,包含字典形式的数据集合。
*/
@PostMapping("/listDictByIds")
public ResponseResult<List<Map<String, Object>>> listDictByIds(
@MyRequestBody(elementType = Long.class) List<Long> dictIds) {
List<SchoolInfo> resultList = schoolInfoService.getInList(new HashSet<>(dictIds));
return ResponseResult.success(
BeanQuery.select("schoolId as id", "schoolName as name").executeFrom(resultList));
}
/**
* 根据主键Id集合获取数据对象集合。仅限于微服务间远程接口调用。
*
* @param schoolIds 主键Id集合。
* @param withDict 是否包含字典关联。
* @return 应答结果对象,包含主对象集合。
*/
@ApiOperation(hidden = true, value = "listByIds")
@PostMapping("/listByIds")
public ResponseResult<List<SchoolInfoVo>> listByIds(
@RequestParam Set<Long> schoolIds, @RequestParam Boolean withDict) {
return super.baseListByIds(schoolIds, withDict, SchoolInfo.INSTANCE);
}
/**
* 根据主键Id获取数据对象。仅限于微服务间远程接口调用。
*
* @param schoolId 主键Id。
* @param withDict 是否包含字典关联。
* @return 应答结果对象,包含主对象数据。
*/
@ApiOperation(hidden = true, value = "getById")
@PostMapping("/getById")
public ResponseResult<SchoolInfoVo> getById(
@RequestParam Long schoolId, @RequestParam Boolean withDict) {
return super.baseGetById(schoolId, withDict, SchoolInfo.INSTANCE);
}
/**
* 判断参数列表中指定的主键Id集合是否全部存在。仅限于微服务间远程接口调用。
*
* @param schoolIds 主键Id集合。
* @return 应答结果对象包含true全部存在否则false。
*/
@ApiOperation(hidden = true, value = "existIds")
@PostMapping("/existIds")
public ResponseResult<Boolean> existIds(@RequestParam Set<Long> schoolIds) {
return super.baseExistIds(schoolIds);
}
/**
* 判断参数列表中指定的主键Id是否存在。仅限于微服务间远程接口调用。
*
* @param schoolId 主键Id。
* @return 应答结果对象包含true表示存在否则false。
*/
@ApiOperation(hidden = true, value = "existId")
@PostMapping("/existId")
public ResponseResult<Boolean> existId(@RequestParam Long schoolId) {
return super.baseExistId(schoolId);
}
/**
* 根据主键Id删除数据。
*
* @param schoolId 主键Id。
* @return 删除数量。
*/
@ApiOperation(hidden = true, value = "deleteById")
@PostMapping("/deleteById")
public ResponseResult<Integer> deleteById(@RequestParam Long schoolId) throws Exception {
SchoolInfo filter = new SchoolInfo();
filter.setSchoolId(schoolId);
return super.baseDeleteBy(filter);
}
/**
* 删除符合过滤条件的数据。
*
* @param filter 过滤对象。
* @return 删除数量。
*/
@ApiOperation(hidden = true, value = "deleteBy")
@PostMapping("/deleteBy")
public ResponseResult<Integer> deleteBy(@RequestBody SchoolInfoDto filter) throws Exception {
return super.baseDeleteBy(MyModelUtil.copyTo(filter, SchoolInfo.class));
}
/**
* 复杂的查询调用,包括(in list)过滤,对象条件过滤,分页和排序等。主要用于微服务间远程过程调用。
*
* @param queryParam 查询参数。
* @return 分页数据集合对象。如MyQueryParam参数的分页属性为空则不会执行分页操作只是基于MyPageData对象返回数据结果。
*/
@ApiOperation(hidden = true, value = "listBy")
@PostMapping("/listBy")
public ResponseResult<MyPageData<SchoolInfoVo>> listBy(@RequestBody MyQueryParam queryParam) {
return super.baseListBy(queryParam, SchoolInfo.INSTANCE);
}
/**
* 复杂的查询调用,包括(in list)过滤,对象条件过滤,分页和排序等。主要用于微服务间远程过程调用。
*
* @param queryParam 查询参数。
* @return 分页数据集合对象。如MyQueryParam参数的分页属性为空则不会执行分页操作只是基于MyPageData对象返回数据结果。
*/
@ApiOperation(hidden = true, value = "listMapBy")
@PostMapping("/listMapBy")
public ResponseResult<MyPageData<Map<String, Object>>> listMapBy(@RequestBody MyQueryParam queryParam) {
return super.baseListMapBy(queryParam, SchoolInfo.INSTANCE);
}
/**
* 复杂的查询调用,仅返回单体记录。主要用于微服务间远程过程调用。
*
* @param queryParam 查询参数。
* @return 应答结果对象,包含符合查询过滤条件的对象结果集。
*/
@ApiOperation(hidden = true, value = "getBy")
@PostMapping("/getBy")
public ResponseResult<SchoolInfoVo> getBy(@RequestBody MyQueryParam queryParam) {
return super.baseGetBy(queryParam, SchoolInfo.INSTANCE);
}
/**
* 获取远程主对象中符合查询条件的数据数量。主要用于微服务间远程过程调用。
*
* @param queryParam 查询参数。
* @return 应答结果对象,包含结果数量。
*/
@ApiOperation(hidden = true, value = "countBy")
@PostMapping("/countBy")
public ResponseResult<Integer> countBy(@RequestBody MyQueryParam queryParam) {
return super.baseCountBy(queryParam);
}
/**
* 获取远程对象中符合查询条件的分组聚合计算Map列表。
*
* @param aggregationParam 聚合参数。
* @return 应该结果对象包含聚合计算后的分组Map列表。
*/
@ApiOperation(hidden = true, value = "aggregateBy")
@PostMapping("/aggregateBy")
public ResponseResult<List<Map<String, Object>>> aggregateBy(@RequestBody MyAggregationParam aggregationParam) {
return super.baseAggregateBy(aggregationParam);
}
}

View File

@@ -1,5 +1,7 @@
package com.orange.demo.courseclassservice.controller; package com.orange.demo.courseclassservice.controller;
import com.orange.demo.common.log.annotation.OperationLog;
import com.orange.demo.common.log.model.constant.SysOperationLogType;
import com.github.pagehelper.page.PageMethod; import com.github.pagehelper.page.PageMethod;
import com.orange.demo.courseclassservice.model.*; import com.orange.demo.courseclassservice.model.*;
import com.orange.demo.courseclassservice.service.*; import com.orange.demo.courseclassservice.service.*;
@@ -11,14 +13,12 @@ import com.orange.demo.common.core.constant.*;
import com.orange.demo.common.core.base.controller.BaseController; import com.orange.demo.common.core.base.controller.BaseController;
import com.orange.demo.common.core.base.service.IBaseService; import com.orange.demo.common.core.base.service.IBaseService;
import com.orange.demo.common.core.annotation.MyRequestBody; import com.orange.demo.common.core.annotation.MyRequestBody;
import com.orange.demo.common.core.validator.UpdateGroup;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import io.swagger.annotations.*; import io.swagger.annotations.*;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.validation.groups.Default;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@@ -53,9 +53,10 @@ public class StudentClassController extends BaseController<StudentClass, Student
* @return 应答结果对象包含新增对象主键Id。 * @return 应答结果对象包含新增对象主键Id。
*/ */
@ApiOperationSupport(ignoreParameters = {"studentClassDto.classId"}) @ApiOperationSupport(ignoreParameters = {"studentClassDto.classId"})
@OperationLog(type = SysOperationLogType.ADD)
@PostMapping("/add") @PostMapping("/add")
public ResponseResult<Long> add(@MyRequestBody StudentClassDto studentClassDto) { public ResponseResult<Long> add(@MyRequestBody StudentClassDto studentClassDto) {
String errorMessage = MyCommonUtil.getModelValidationError(studentClassDto); String errorMessage = MyCommonUtil.getModelValidationError(studentClassDto, false);
if (errorMessage != null) { if (errorMessage != null) {
return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage); return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage);
} }
@@ -66,6 +67,12 @@ public class StudentClassController extends BaseController<StudentClass, Student
errorMessage = callResult.getErrorMessage(); errorMessage = callResult.getErrorMessage();
return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage); return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage);
} }
// 验证远程服务关联Id的数据合法性
CallResult remoteCallResult = studentClassService.verifyRemoteRelatedData(studentClass, null);
if (!remoteCallResult.isSuccess()) {
errorMessage = remoteCallResult.getErrorMessage();
return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage);
}
studentClass = studentClassService.saveNew(studentClass); studentClass = studentClassService.saveNew(studentClass);
return ResponseResult.success(studentClass.getClassId()); return ResponseResult.success(studentClass.getClassId());
} }
@@ -76,9 +83,10 @@ public class StudentClassController extends BaseController<StudentClass, Student
* @param studentClassDto 更新对象。 * @param studentClassDto 更新对象。
* @return 应答结果对象。 * @return 应答结果对象。
*/ */
@OperationLog(type = SysOperationLogType.UPDATE)
@PostMapping("/update") @PostMapping("/update")
public ResponseResult<Void> update(@MyRequestBody StudentClassDto studentClassDto) { public ResponseResult<Void> update(@MyRequestBody StudentClassDto studentClassDto) {
String errorMessage = MyCommonUtil.getModelValidationError(studentClassDto, Default.class, UpdateGroup.class); String errorMessage = MyCommonUtil.getModelValidationError(studentClassDto, true);
if (errorMessage != null) { if (errorMessage != null) {
return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage); return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage);
} }
@@ -95,6 +103,12 @@ public class StudentClassController extends BaseController<StudentClass, Student
errorMessage = callResult.getErrorMessage(); errorMessage = callResult.getErrorMessage();
return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage); return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage);
} }
// 验证远程服务关联Id的数据合法性
CallResult remoteCallResult = studentClassService.verifyRemoteRelatedData(studentClass, originalStudentClass);
if (!remoteCallResult.isSuccess()) {
errorMessage = remoteCallResult.getErrorMessage();
return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage);
}
if (!studentClassService.update(studentClass, originalStudentClass)) { if (!studentClassService.update(studentClass, originalStudentClass)) {
return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST); return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST);
} }
@@ -107,6 +121,7 @@ public class StudentClassController extends BaseController<StudentClass, Student
* @param classId 删除对象主键Id。 * @param classId 删除对象主键Id。
* @return 应答结果对象。 * @return 应答结果对象。
*/ */
@OperationLog(type = SysOperationLogType.DELETE)
@PostMapping("/delete") @PostMapping("/delete")
public ResponseResult<Void> delete(@MyRequestBody Long classId) { public ResponseResult<Void> delete(@MyRequestBody Long classId) {
String errorMessage; String errorMessage;
@@ -161,8 +176,7 @@ public class StudentClassController extends BaseController<StudentClass, Student
if (MyCommonUtil.existBlankArgument(classId)) { if (MyCommonUtil.existBlankArgument(classId)) {
return ResponseResult.error(ErrorCodeEnum.ARGUMENT_NULL_EXIST); return ResponseResult.error(ErrorCodeEnum.ARGUMENT_NULL_EXIST);
} }
StudentClass studentClass = StudentClass studentClass = studentClassService.getByIdWithRelation(classId, MyRelationParam.full());
studentClassService.getByIdWithRelation(classId, MyRelationParam.full());
if (studentClass == null) { if (studentClass == null) {
return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST); return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST);
} }
@@ -186,17 +200,20 @@ public class StudentClassController extends BaseController<StudentClass, Student
@MyRequestBody CourseDto courseDtoFilter, @MyRequestBody CourseDto courseDtoFilter,
@MyRequestBody MyOrderParam orderParam, @MyRequestBody MyOrderParam orderParam,
@MyRequestBody MyPageParam pageParam) { @MyRequestBody MyPageParam pageParam) {
ResponseResult<Void> verifyResult = this.doClassCourseVerify(classId); if (MyCommonUtil.isNotBlankOrNull(classId) && !studentClassService.existId(classId)) {
if (!verifyResult.isSuccess()) { return ResponseResult.error(ErrorCodeEnum.INVALID_RELATED_RECORD_ID);
return ResponseResult.errorFrom(verifyResult);
} }
if (pageParam != null) { if (pageParam != null) {
PageMethod.startPage(pageParam.getPageNum(), pageParam.getPageSize()); PageMethod.startPage(pageParam.getPageNum(), pageParam.getPageSize());
} }
Course filter = MyModelUtil.copyTo(courseDtoFilter, Course.class); Course filter = MyModelUtil.copyTo(courseDtoFilter, Course.class);
String orderBy = MyOrderParam.buildOrderBy(orderParam, Course.class); String orderBy = MyOrderParam.buildOrderBy(orderParam, Course.class);
List<Course> courseList = List<Course> courseList;
courseService.getNotInCourseListByClassId(classId, filter, orderBy); if (MyCommonUtil.isNotBlankOrNull(classId)) {
courseList = courseService.getNotInCourseListByClassId(classId, filter, orderBy);
} else {
courseList = courseService.getCourseList(filter, orderBy);
}
return ResponseResult.success(MyPageUtil.makeResponseData(courseList, Course.INSTANCE)); return ResponseResult.success(MyPageUtil.makeResponseData(courseList, Course.INSTANCE));
} }
@@ -211,13 +228,12 @@ public class StudentClassController extends BaseController<StudentClass, Student
*/ */
@PostMapping("/listClassCourse") @PostMapping("/listClassCourse")
public ResponseResult<MyPageData<CourseVo>> listClassCourse( public ResponseResult<MyPageData<CourseVo>> listClassCourse(
@MyRequestBody Long classId, @MyRequestBody(required = true) Long classId,
@MyRequestBody CourseDto courseDtoFilter, @MyRequestBody CourseDto courseDtoFilter,
@MyRequestBody MyOrderParam orderParam, @MyRequestBody MyOrderParam orderParam,
@MyRequestBody MyPageParam pageParam) { @MyRequestBody MyPageParam pageParam) {
ResponseResult<Void> verifyResult = this.doClassCourseVerify(classId); if (!studentClassService.existId(classId)) {
if (!verifyResult.isSuccess()) { return ResponseResult.error(ErrorCodeEnum.INVALID_RELATED_RECORD_ID);
return ResponseResult.errorFrom(verifyResult);
} }
if (pageParam != null) { if (pageParam != null) {
PageMethod.startPage(pageParam.getPageNum(), pageParam.getPageSize()); PageMethod.startPage(pageParam.getPageNum(), pageParam.getPageSize());
@@ -229,16 +245,6 @@ public class StudentClassController extends BaseController<StudentClass, Student
return ResponseResult.success(MyPageUtil.makeResponseData(courseList, Course.INSTANCE)); return ResponseResult.success(MyPageUtil.makeResponseData(courseList, Course.INSTANCE));
} }
private ResponseResult<Void> doClassCourseVerify(Long classId) {
if (MyCommonUtil.existBlankArgument(classId)) {
return ResponseResult.error(ErrorCodeEnum.ARGUMENT_NULL_EXIST);
}
if (!studentClassService.existId(classId)) {
return ResponseResult.error(ErrorCodeEnum.INVALID_RELATED_RECORD_ID);
}
return ResponseResult.success();
}
/** /**
* 批量添加班级数据和 [课程数据] 对象的多对多关联关系数据。 * 批量添加班级数据和 [课程数据] 对象的多对多关联关系数据。
* *
@@ -246,6 +252,7 @@ public class StudentClassController extends BaseController<StudentClass, Student
* @param classCourseDtoList 关联对象列表。 * @param classCourseDtoList 关联对象列表。
* @return 应答结果对象。 * @return 应答结果对象。
*/ */
@OperationLog(type = SysOperationLogType.ADD_M2M)
@PostMapping("/addClassCourse") @PostMapping("/addClassCourse")
public ResponseResult<Void> addClassCourse( public ResponseResult<Void> addClassCourse(
@MyRequestBody Long classId, @MyRequestBody Long classId,
@@ -253,12 +260,10 @@ public class StudentClassController extends BaseController<StudentClass, Student
if (MyCommonUtil.existBlankArgument(classId, classCourseDtoList)) { if (MyCommonUtil.existBlankArgument(classId, classCourseDtoList)) {
return ResponseResult.error(ErrorCodeEnum.ARGUMENT_NULL_EXIST); return ResponseResult.error(ErrorCodeEnum.ARGUMENT_NULL_EXIST);
} }
for (ClassCourseDto classCourse : classCourseDtoList) { String errorMessage = MyCommonUtil.getModelValidationError(classCourseDtoList);
String errorMessage = MyCommonUtil.getModelValidationError(classCourse);
if (errorMessage != null) { if (errorMessage != null) {
return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage); return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage);
} }
}
Set<Long> courseIdSet = Set<Long> courseIdSet =
classCourseDtoList.stream().map(ClassCourseDto::getCourseId).collect(Collectors.toSet()); classCourseDtoList.stream().map(ClassCourseDto::getCourseId).collect(Collectors.toSet());
if (!studentClassService.existId(classId) if (!studentClassService.existId(classId)
@@ -277,6 +282,7 @@ public class StudentClassController extends BaseController<StudentClass, Student
* @param classCourseDto 对多对中间表对象。 * @param classCourseDto 对多对中间表对象。
* @return 应答结果对象。 * @return 应答结果对象。
*/ */
@OperationLog(type = SysOperationLogType.UPDATE)
@PostMapping("/updateClassCourse") @PostMapping("/updateClassCourse")
public ResponseResult<Void> updateClassCourse( public ResponseResult<Void> updateClassCourse(
@MyRequestBody ClassCourseDto classCourseDto) { @MyRequestBody ClassCourseDto classCourseDto) {
@@ -319,6 +325,7 @@ public class StudentClassController extends BaseController<StudentClass, Student
* @param courseId 关联表主键Id。 * @param courseId 关联表主键Id。
* @return 应答结果对象。 * @return 应答结果对象。
*/ */
@OperationLog(type = SysOperationLogType.DELETE_M2M)
@PostMapping("/deleteClassCourse") @PostMapping("/deleteClassCourse")
public ResponseResult<Void> deleteClassCourse( public ResponseResult<Void> deleteClassCourse(
@MyRequestBody Long classId, @MyRequestBody Long courseId) { @MyRequestBody Long classId, @MyRequestBody Long courseId) {
@@ -347,17 +354,20 @@ public class StudentClassController extends BaseController<StudentClass, Student
@MyRequestBody StudentDto studentDtoFilter, @MyRequestBody StudentDto studentDtoFilter,
@MyRequestBody MyOrderParam orderParam, @MyRequestBody MyOrderParam orderParam,
@MyRequestBody MyPageParam pageParam) { @MyRequestBody MyPageParam pageParam) {
ResponseResult<Void> verifyResult = this.doClassStudentVerify(classId); if (MyCommonUtil.isNotBlankOrNull(classId) && !studentClassService.existId(classId)) {
if (!verifyResult.isSuccess()) { return ResponseResult.error(ErrorCodeEnum.INVALID_RELATED_RECORD_ID);
return ResponseResult.errorFrom(verifyResult);
} }
if (pageParam != null) { if (pageParam != null) {
PageMethod.startPage(pageParam.getPageNum(), pageParam.getPageSize()); PageMethod.startPage(pageParam.getPageNum(), pageParam.getPageSize());
} }
Student filter = MyModelUtil.copyTo(studentDtoFilter, Student.class); Student filter = MyModelUtil.copyTo(studentDtoFilter, Student.class);
String orderBy = MyOrderParam.buildOrderBy(orderParam, Student.class); String orderBy = MyOrderParam.buildOrderBy(orderParam, Student.class);
List<Student> studentList = List<Student> studentList;
studentService.getNotInStudentListByClassId(classId, filter, orderBy); if (MyCommonUtil.isNotBlankOrNull(classId)) {
studentList = studentService.getNotInStudentListByClassId(classId, filter, orderBy);
} else {
studentList = studentService.getStudentList(filter, orderBy);
}
return ResponseResult.success(MyPageUtil.makeResponseData(studentList, Student.INSTANCE)); return ResponseResult.success(MyPageUtil.makeResponseData(studentList, Student.INSTANCE));
} }
@@ -372,13 +382,12 @@ public class StudentClassController extends BaseController<StudentClass, Student
*/ */
@PostMapping("/listClassStudent") @PostMapping("/listClassStudent")
public ResponseResult<MyPageData<StudentVo>> listClassStudent( public ResponseResult<MyPageData<StudentVo>> listClassStudent(
@MyRequestBody Long classId, @MyRequestBody(required = true) Long classId,
@MyRequestBody StudentDto studentDtoFilter, @MyRequestBody StudentDto studentDtoFilter,
@MyRequestBody MyOrderParam orderParam, @MyRequestBody MyOrderParam orderParam,
@MyRequestBody MyPageParam pageParam) { @MyRequestBody MyPageParam pageParam) {
ResponseResult<Void> verifyResult = this.doClassStudentVerify(classId); if (!studentClassService.existId(classId)) {
if (!verifyResult.isSuccess()) { return ResponseResult.error(ErrorCodeEnum.INVALID_RELATED_RECORD_ID);
return ResponseResult.errorFrom(verifyResult);
} }
if (pageParam != null) { if (pageParam != null) {
PageMethod.startPage(pageParam.getPageNum(), pageParam.getPageSize()); PageMethod.startPage(pageParam.getPageNum(), pageParam.getPageSize());
@@ -390,16 +399,6 @@ public class StudentClassController extends BaseController<StudentClass, Student
return ResponseResult.success(MyPageUtil.makeResponseData(studentList, Student.INSTANCE)); return ResponseResult.success(MyPageUtil.makeResponseData(studentList, Student.INSTANCE));
} }
private ResponseResult<Void> doClassStudentVerify(Long classId) {
if (MyCommonUtil.existBlankArgument(classId)) {
return ResponseResult.error(ErrorCodeEnum.ARGUMENT_NULL_EXIST);
}
if (!studentClassService.existId(classId)) {
return ResponseResult.error(ErrorCodeEnum.INVALID_RELATED_RECORD_ID);
}
return ResponseResult.success();
}
/** /**
* 批量添加班级数据和 [学生数据] 对象的多对多关联关系数据。 * 批量添加班级数据和 [学生数据] 对象的多对多关联关系数据。
* *
@@ -407,6 +406,7 @@ public class StudentClassController extends BaseController<StudentClass, Student
* @param classStudentDtoList 关联对象列表。 * @param classStudentDtoList 关联对象列表。
* @return 应答结果对象。 * @return 应答结果对象。
*/ */
@OperationLog(type = SysOperationLogType.ADD_M2M)
@PostMapping("/addClassStudent") @PostMapping("/addClassStudent")
public ResponseResult<Void> addClassStudent( public ResponseResult<Void> addClassStudent(
@MyRequestBody Long classId, @MyRequestBody Long classId,
@@ -414,12 +414,10 @@ public class StudentClassController extends BaseController<StudentClass, Student
if (MyCommonUtil.existBlankArgument(classId, classStudentDtoList)) { if (MyCommonUtil.existBlankArgument(classId, classStudentDtoList)) {
return ResponseResult.error(ErrorCodeEnum.ARGUMENT_NULL_EXIST); return ResponseResult.error(ErrorCodeEnum.ARGUMENT_NULL_EXIST);
} }
for (ClassStudentDto classStudent : classStudentDtoList) { String errorMessage = MyCommonUtil.getModelValidationError(classStudentDtoList);
String errorMessage = MyCommonUtil.getModelValidationError(classStudent);
if (errorMessage != null) { if (errorMessage != null) {
return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage); return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage);
} }
}
Set<Long> studentIdSet = Set<Long> studentIdSet =
classStudentDtoList.stream().map(ClassStudentDto::getStudentId).collect(Collectors.toSet()); classStudentDtoList.stream().map(ClassStudentDto::getStudentId).collect(Collectors.toSet());
if (!studentClassService.existId(classId) if (!studentClassService.existId(classId)
@@ -439,6 +437,7 @@ public class StudentClassController extends BaseController<StudentClass, Student
* @param studentId 关联表主键Id。 * @param studentId 关联表主键Id。
* @return 应答结果对象。 * @return 应答结果对象。
*/ */
@OperationLog(type = SysOperationLogType.DELETE_M2M)
@PostMapping("/deleteClassStudent") @PostMapping("/deleteClassStudent")
public ResponseResult<Void> deleteClassStudent( public ResponseResult<Void> deleteClassStudent(
@MyRequestBody Long classId, @MyRequestBody Long studentId) { @MyRequestBody Long classId, @MyRequestBody Long studentId) {
@@ -588,4 +587,24 @@ public class StudentClassController extends BaseController<StudentClass, Student
public ResponseResult<List<Map<String, Object>>> aggregateBy(@RequestBody MyAggregationParam aggregationParam) { public ResponseResult<List<Map<String, Object>>> aggregateBy(@RequestBody MyAggregationParam aggregationParam) {
return super.baseAggregateBy(aggregationParam); return super.baseAggregateBy(aggregationParam);
} }
private String doBusinessDataVerify(
StudentClassDto studentClassDto,
boolean forUpdate,
List<ClassCourseDto> classCourseDtoList,
List<ClassStudentDto> classStudentDtoList) {
String errorMessage = MyCommonUtil.getModelValidationError(studentClassDto, forUpdate);
if (errorMessage != null) {
return errorMessage;
}
errorMessage = MyCommonUtil.getModelValidationError(classCourseDtoList);
if (errorMessage != null) {
return "参数 [classCourseDtoList] 数据验证失败" + errorMessage;
}
errorMessage = MyCommonUtil.getModelValidationError(classStudentDtoList);
if (errorMessage != null) {
return "参数 [classStudentDtoList] 数据验证失败" + errorMessage;
}
return null;
}
} }

View File

@@ -1,6 +1,8 @@
package com.orange.demo.courseclassservice.controller; package com.orange.demo.courseclassservice.controller;
import cn.jimmyshi.beanquery.BeanQuery; import cn.jimmyshi.beanquery.BeanQuery;
import com.orange.demo.common.log.annotation.OperationLog;
import com.orange.demo.common.log.model.constant.SysOperationLogType;
import com.github.pagehelper.page.PageMethod; import com.github.pagehelper.page.PageMethod;
import com.orange.demo.courseclassservice.model.*; import com.orange.demo.courseclassservice.model.*;
import com.orange.demo.courseclassservice.service.*; import com.orange.demo.courseclassservice.service.*;
@@ -12,14 +14,12 @@ import com.orange.demo.common.core.constant.*;
import com.orange.demo.common.core.base.controller.BaseController; import com.orange.demo.common.core.base.controller.BaseController;
import com.orange.demo.common.core.base.service.IBaseService; import com.orange.demo.common.core.base.service.IBaseService;
import com.orange.demo.common.core.annotation.MyRequestBody; import com.orange.demo.common.core.annotation.MyRequestBody;
import com.orange.demo.common.core.validator.UpdateGroup;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import io.swagger.annotations.*; import io.swagger.annotations.*;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.validation.groups.Default;
import java.util.*; import java.util.*;
/** /**
@@ -55,9 +55,10 @@ public class StudentController extends BaseController<Student, StudentVo, Long>
"studentDto.birthdayEnd", "studentDto.birthdayEnd",
"studentDto.registerTimeStart", "studentDto.registerTimeStart",
"studentDto.registerTimeEnd"}) "studentDto.registerTimeEnd"})
@OperationLog(type = SysOperationLogType.ADD)
@PostMapping("/add") @PostMapping("/add")
public ResponseResult<Long> add(@MyRequestBody StudentDto studentDto) { public ResponseResult<Long> add(@MyRequestBody StudentDto studentDto) {
String errorMessage = MyCommonUtil.getModelValidationError(studentDto); String errorMessage = MyCommonUtil.getModelValidationError(studentDto, false);
if (errorMessage != null) { if (errorMessage != null) {
return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage); return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage);
} }
@@ -68,6 +69,12 @@ public class StudentController extends BaseController<Student, StudentVo, Long>
errorMessage = callResult.getErrorMessage(); errorMessage = callResult.getErrorMessage();
return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage); return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage);
} }
// 验证远程服务关联Id的数据合法性
CallResult remoteCallResult = studentService.verifyRemoteRelatedData(student, null);
if (!remoteCallResult.isSuccess()) {
errorMessage = remoteCallResult.getErrorMessage();
return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage);
}
student = studentService.saveNew(student); student = studentService.saveNew(student);
return ResponseResult.success(student.getStudentId()); return ResponseResult.success(student.getStudentId());
} }
@@ -84,9 +91,10 @@ public class StudentController extends BaseController<Student, StudentVo, Long>
"StudentDto.birthdayEnd", "StudentDto.birthdayEnd",
"StudentDto.registerTimeStart", "StudentDto.registerTimeStart",
"StudentDto.registerTimeEnd"}) "StudentDto.registerTimeEnd"})
@OperationLog(type = SysOperationLogType.UPDATE)
@PostMapping("/update") @PostMapping("/update")
public ResponseResult<Void> update(@MyRequestBody StudentDto studentDto) { public ResponseResult<Void> update(@MyRequestBody StudentDto studentDto) {
String errorMessage = MyCommonUtil.getModelValidationError(studentDto, Default.class, UpdateGroup.class); String errorMessage = MyCommonUtil.getModelValidationError(studentDto, true);
if (errorMessage != null) { if (errorMessage != null) {
return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage); return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage);
} }
@@ -103,6 +111,12 @@ public class StudentController extends BaseController<Student, StudentVo, Long>
errorMessage = callResult.getErrorMessage(); errorMessage = callResult.getErrorMessage();
return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage); return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage);
} }
// 验证远程服务关联Id的数据合法性
CallResult remoteCallResult = studentService.verifyRemoteRelatedData(student, originalStudent);
if (!remoteCallResult.isSuccess()) {
errorMessage = remoteCallResult.getErrorMessage();
return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage);
}
if (!studentService.update(student, originalStudent)) { if (!studentService.update(student, originalStudent)) {
return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST); return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST);
} }
@@ -115,6 +129,7 @@ public class StudentController extends BaseController<Student, StudentVo, Long>
* @param studentId 删除对象主键Id。 * @param studentId 删除对象主键Id。
* @return 应答结果对象。 * @return 应答结果对象。
*/ */
@OperationLog(type = SysOperationLogType.DELETE)
@PostMapping("/delete") @PostMapping("/delete")
public ResponseResult<Void> delete(@MyRequestBody Long studentId) { public ResponseResult<Void> delete(@MyRequestBody Long studentId) {
String errorMessage; String errorMessage;
@@ -153,8 +168,7 @@ public class StudentController extends BaseController<Student, StudentVo, Long>
} }
Student studentFilter = MyModelUtil.copyTo(studentDtoFilter, Student.class); Student studentFilter = MyModelUtil.copyTo(studentDtoFilter, Student.class);
String orderBy = MyOrderParam.buildOrderBy(orderParam, Student.class); String orderBy = MyOrderParam.buildOrderBy(orderParam, Student.class);
List<Student> studentList = List<Student> studentList = studentService.getStudentListWithRelation(studentFilter, orderBy);
studentService.getStudentListWithRelation(studentFilter, orderBy);
return ResponseResult.success(MyPageUtil.makeResponseData(studentList, Student.INSTANCE)); return ResponseResult.success(MyPageUtil.makeResponseData(studentList, Student.INSTANCE));
} }
@@ -169,8 +183,7 @@ public class StudentController extends BaseController<Student, StudentVo, Long>
if (MyCommonUtil.existBlankArgument(studentId)) { if (MyCommonUtil.existBlankArgument(studentId)) {
return ResponseResult.error(ErrorCodeEnum.ARGUMENT_NULL_EXIST); return ResponseResult.error(ErrorCodeEnum.ARGUMENT_NULL_EXIST);
} }
Student student = Student student = studentService.getByIdWithRelation(studentId, MyRelationParam.full());
studentService.getByIdWithRelation(studentId, MyRelationParam.full());
if (student == null) { if (student == null) {
return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST); return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST);
} }

View File

@@ -3,6 +3,8 @@ package com.orange.demo.courseclassservice.dao;
import com.orange.demo.common.core.base.dao.BaseDaoMapper; import com.orange.demo.common.core.base.dao.BaseDaoMapper;
import com.orange.demo.courseclassservice.model.ClassCourse; import com.orange.demo.courseclassservice.model.ClassCourse;
import java.util.*;
/** /**
* 数据操作访问接口。 * 数据操作访问接口。
* *
@@ -10,4 +12,11 @@ import com.orange.demo.courseclassservice.model.ClassCourse;
* @date 2020-08-08 * @date 2020-08-08
*/ */
public interface ClassCourseMapper extends BaseDaoMapper<ClassCourse> { public interface ClassCourseMapper extends BaseDaoMapper<ClassCourse> {
/**
* 批量插入对象列表。
*
* @param classCourseList 新增对象列表。
*/
void insertList(List<ClassCourse> classCourseList);
} }

View File

@@ -3,6 +3,8 @@ package com.orange.demo.courseclassservice.dao;
import com.orange.demo.common.core.base.dao.BaseDaoMapper; import com.orange.demo.common.core.base.dao.BaseDaoMapper;
import com.orange.demo.courseclassservice.model.ClassStudent; import com.orange.demo.courseclassservice.model.ClassStudent;
import java.util.*;
/** /**
* 数据操作访问接口。 * 数据操作访问接口。
* *
@@ -10,4 +12,11 @@ import com.orange.demo.courseclassservice.model.ClassStudent;
* @date 2020-08-08 * @date 2020-08-08
*/ */
public interface ClassStudentMapper extends BaseDaoMapper<ClassStudent> { public interface ClassStudentMapper extends BaseDaoMapper<ClassStudent> {
/**
* 批量插入对象列表。
*
* @param classStudentList 新增对象列表。
*/
void insertList(List<ClassStudent> classStudentList);
} }

View File

@@ -14,6 +14,13 @@ import java.util.*;
*/ */
public interface CourseMapper extends BaseDaoMapper<Course> { public interface CourseMapper extends BaseDaoMapper<Course> {
/**
* 批量插入对象列表。
*
* @param courseList 新增对象列表。
*/
void insertList(List<Course> courseList);
/** /**
* 获取过滤后的对象列表。 * 获取过滤后的对象列表。
* *

View File

@@ -3,6 +3,8 @@ package com.orange.demo.courseclassservice.dao;
import com.orange.demo.common.core.base.dao.BaseDaoMapper; import com.orange.demo.common.core.base.dao.BaseDaoMapper;
import com.orange.demo.courseclassservice.model.Grade; import com.orange.demo.courseclassservice.model.Grade;
import java.util.*;
/** /**
* 年级数据操作访问接口。 * 年级数据操作访问接口。
* *
@@ -10,4 +12,11 @@ import com.orange.demo.courseclassservice.model.Grade;
* @date 2020-08-08 * @date 2020-08-08
*/ */
public interface GradeMapper extends BaseDaoMapper<Grade> { public interface GradeMapper extends BaseDaoMapper<Grade> {
/**
* 批量插入对象列表。
*
* @param gradeList 新增对象列表。
*/
void insertList(List<Grade> gradeList);
} }

View File

@@ -3,6 +3,8 @@ package com.orange.demo.courseclassservice.dao;
import com.orange.demo.common.core.base.dao.BaseDaoMapper; import com.orange.demo.common.core.base.dao.BaseDaoMapper;
import com.orange.demo.courseclassservice.model.MaterialEdition; import com.orange.demo.courseclassservice.model.MaterialEdition;
import java.util.*;
/** /**
* 数据操作访问接口。 * 数据操作访问接口。
* *
@@ -10,4 +12,11 @@ import com.orange.demo.courseclassservice.model.MaterialEdition;
* @date 2020-08-08 * @date 2020-08-08
*/ */
public interface MaterialEditionMapper extends BaseDaoMapper<MaterialEdition> { public interface MaterialEditionMapper extends BaseDaoMapper<MaterialEdition> {
/**
* 批量插入对象列表。
*
* @param materialEditionList 新增对象列表。
*/
void insertList(List<MaterialEdition> materialEditionList);
} }

View File

@@ -1,44 +0,0 @@
package com.orange.demo.courseclassservice.dao;
import com.orange.demo.common.core.base.dao.BaseDaoMapper;
import com.orange.demo.courseclassservice.model.SchoolInfo;
import org.apache.ibatis.annotations.Param;
import java.util.*;
/**
* 校区数据数据操作访问接口。
*
* @author Jerry
* @date 2020-08-08
*/
public interface SchoolInfoMapper extends BaseDaoMapper<SchoolInfo> {
/**
* 获取过滤后的对象列表。
*
* @param inFilterColumn 参与(In-list)过滤的数据表列。
* @param inFilterValues 参与(In-list)过滤的数据表列值集合。
* @param schoolInfoFilter 过滤对象。
* @param orderBy 排序字符串order by从句的参数。
* @return 对象列表。
*/
<M> List<SchoolInfo> getSchoolInfoList(
@Param("inFilterColumn") String inFilterColumn,
@Param("inFilterValues") Set<M> inFilterValues,
@Param("schoolInfoFilter") SchoolInfo schoolInfoFilter,
@Param("orderBy") String orderBy);
/**
* 获取对象列表过滤条件中包含like和between条件以及指定属性的(in list)过滤条件。
*
* @param inFilterColumn 参与(In-list)过滤的数据表列。
* @param inFilterValues 参与(In-list)过滤的数据表列值集合。
* @param schoolInfoFilter 过滤对象。
* @return 对象列表。
*/
<M> Integer getSchoolInfoCount(
@Param("inFilterColumn") String inFilterColumn,
@Param("inFilterValues") Set<M> inFilterValues,
@Param("schoolInfoFilter") SchoolInfo schoolInfoFilter);
}

View File

@@ -1,5 +1,6 @@
package com.orange.demo.courseclassservice.dao; package com.orange.demo.courseclassservice.dao;
import com.orange.demo.common.core.annotation.EnableDataPerm;
import com.orange.demo.common.core.base.dao.BaseDaoMapper; import com.orange.demo.common.core.base.dao.BaseDaoMapper;
import com.orange.demo.courseclassservice.model.StudentClass; import com.orange.demo.courseclassservice.model.StudentClass;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
@@ -12,8 +13,16 @@ import java.util.*;
* @author Jerry * @author Jerry
* @date 2020-08-08 * @date 2020-08-08
*/ */
@EnableDataPerm
public interface StudentClassMapper extends BaseDaoMapper<StudentClass> { public interface StudentClassMapper extends BaseDaoMapper<StudentClass> {
/**
* 批量插入对象列表。
*
* @param studentClassList 新增对象列表。
*/
void insertList(List<StudentClass> studentClassList);
/** /**
* 获取过滤后的对象列表。 * 获取过滤后的对象列表。
* *

View File

@@ -1,5 +1,6 @@
package com.orange.demo.courseclassservice.dao; package com.orange.demo.courseclassservice.dao;
import com.orange.demo.common.core.annotation.EnableDataPerm;
import com.orange.demo.common.core.base.dao.BaseDaoMapper; import com.orange.demo.common.core.base.dao.BaseDaoMapper;
import com.orange.demo.courseclassservice.model.Student; import com.orange.demo.courseclassservice.model.Student;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
@@ -12,8 +13,16 @@ import java.util.*;
* @author Jerry * @author Jerry
* @date 2020-08-08 * @date 2020-08-08
*/ */
@EnableDataPerm
public interface StudentMapper extends BaseDaoMapper<Student> { public interface StudentMapper extends BaseDaoMapper<Student> {
/**
* 批量插入对象列表。
*
* @param studentList 新增对象列表。
*/
void insertList(List<Student> studentList);
/** /**
* 获取过滤后的对象列表。 * 获取过滤后的对象列表。
* *

View File

@@ -6,4 +6,17 @@
<id column="course_id" jdbcType="BIGINT" property="courseId"/> <id column="course_id" jdbcType="BIGINT" property="courseId"/>
<result column="course_order" jdbcType="TINYINT" property="courseOrder"/> <result column="course_order" jdbcType="TINYINT" property="courseOrder"/>
</resultMap> </resultMap>
<insert id="insertList">
INSERT INTO zz_class_course
(class_id,
course_id,
course_order)
VALUES
<foreach collection="list" index="index" item="item" separator="," >
(#{item.classId},
#{item.courseId},
#{item.courseOrder})
</foreach>
</insert>
</mapper> </mapper>

View File

@@ -5,4 +5,15 @@
<id column="class_id" jdbcType="BIGINT" property="classId"/> <id column="class_id" jdbcType="BIGINT" property="classId"/>
<id column="student_id" jdbcType="BIGINT" property="studentId"/> <id column="student_id" jdbcType="BIGINT" property="studentId"/>
</resultMap> </resultMap>
<insert id="insertList">
INSERT INTO zz_class_student
(class_id,
student_id)
VALUES
<foreach collection="list" index="index" item="item" separator="," >
(#{item.classId},
#{item.studentId})
</foreach>
</insert>
</mapper> </mapper>

View File

@@ -21,6 +21,37 @@
notNullColumn="course_id" resultMap="com.orange.demo.courseclassservice.dao.ClassCourseMapper.BaseResultMap" /> notNullColumn="course_id" resultMap="com.orange.demo.courseclassservice.dao.ClassCourseMapper.BaseResultMap" />
</resultMap> </resultMap>
<insert id="insertList">
INSERT INTO zz_course
(course_id,
course_name,
price,
description,
difficulty,
grade_id,
subject_id,
class_hour,
picture_url,
create_user_id,
create_time,
update_time)
VALUES
<foreach collection="list" index="index" item="item" separator="," >
(#{item.courseId},
#{item.courseName},
#{item.price},
#{item.description},
#{item.difficulty},
#{item.gradeId},
#{item.subjectId},
#{item.classHour},
#{item.pictureUrl},
#{item.createUserId},
#{item.createTime},
#{item.updateTime})
</foreach>
</insert>
<!-- 如果有逻辑删除字段过滤,请写到这里 --> <!-- 如果有逻辑删除字段过滤,请写到这里 -->
<sql id="filterRef"> <sql id="filterRef">
<!-- 这里必须加上全包名否则当filterRef被其他Mapper.xml包含引用的时候就会调用Mapper.xml中的该SQL片段 --> <!-- 这里必须加上全包名否则当filterRef被其他Mapper.xml包含引用的时候就会调用Mapper.xml中的该SQL片段 -->

View File

@@ -6,4 +6,17 @@
<result column="grade_name" jdbcType="VARCHAR" property="gradeName"/> <result column="grade_name" jdbcType="VARCHAR" property="gradeName"/>
<result column="status" jdbcType="INTEGER" property="status"/> <result column="status" jdbcType="INTEGER" property="status"/>
</resultMap> </resultMap>
<insert id="insertList">
INSERT INTO zz_grade
(grade_id,
grade_name,
status)
VALUES
<foreach collection="list" index="index" item="item" separator="," >
(#{item.gradeId},
#{item.gradeName},
#{item.status})
</foreach>
</insert>
</mapper> </mapper>

View File

@@ -6,4 +6,17 @@
<result column="edition_name" jdbcType="VARCHAR" property="editionName"/> <result column="edition_name" jdbcType="VARCHAR" property="editionName"/>
<result column="status" jdbcType="INTEGER" property="status"/> <result column="status" jdbcType="INTEGER" property="status"/>
</resultMap> </resultMap>
<insert id="insertList">
INSERT INTO zz_material_edition
(edition_id,
edition_name,
status)
VALUES
<foreach collection="list" index="index" item="item" separator="," >
(#{item.editionId},
#{item.editionName},
#{item.status})
</foreach>
</insert>
</mapper> </mapper>

View File

@@ -1,61 +0,0 @@
<?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="com.orange.demo.courseclassservice.dao.SchoolInfoMapper">
<resultMap id="BaseResultMap" type="com.orange.demo.courseclassservice.model.SchoolInfo">
<id column="school_id" jdbcType="BIGINT" property="schoolId"/>
<result column="school_name" jdbcType="VARCHAR" property="schoolName"/>
<result column="province_id" jdbcType="BIGINT" property="provinceId"/>
<result column="city_id" jdbcType="BIGINT" property="cityId"/>
</resultMap>
<!-- 如果有逻辑删除字段过滤,请写到这里 -->
<sql id="filterRef">
<!-- 这里必须加上全包名否则当filterRef被其他Mapper.xml包含引用的时候就会调用Mapper.xml中的该SQL片段 -->
<include refid="com.orange.demo.courseclassservice.dao.SchoolInfoMapper.inputFilterRef"/>
</sql>
<!-- 这里仅包含调用接口输入的主表过滤条件 -->
<sql id="inputFilterRef">
<if test="schoolInfoFilter != null">
<if test="schoolInfoFilter.schoolName != null and schoolInfoFilter.schoolName != ''">
<bind name = "safeSchoolInfoSchoolName" value = "'%' + schoolInfoFilter.schoolName + '%'" />
AND zz_school_info.school_name LIKE #{safeSchoolInfoSchoolName}
</if>
<if test="schoolInfoFilter.provinceId != null">
AND zz_school_info.province_id = #{schoolInfoFilter.provinceId}
</if>
<if test="schoolInfoFilter.cityId != null">
AND zz_school_info.city_id = #{schoolInfoFilter.cityId}
</if>
</if>
</sql>
<select id="getSchoolInfoList" resultMap="BaseResultMap" parameterType="com.orange.demo.courseclassservice.model.SchoolInfo">
SELECT * FROM zz_school_info
<where>
<if test="inFilterColumn != null and inFilterColumn != '' and inFilterValues != null and inFilterValues.size &gt; 0">
AND ${inFilterColumn} IN
<foreach collection="inFilterValues" item="item" open="(" separator="," close=")">
'${item}'
</foreach>
</if>
<include refid="filterRef"/>
</where>
<if test="orderBy != null and orderBy != ''">
ORDER BY ${orderBy}
</if>
</select>
<select id="getSchoolInfoCount" resultType="java.lang.Integer" parameterType="com.orange.demo.courseclassservice.model.SchoolInfo">
SELECT COUNT(1) FROM zz_school_info
<where>
<if test="inFilterColumn != null and inFilterColumn != '' and inFilterValues != null and inFilterValues.size &gt; 0">
AND ${inFilterColumn} IN
<foreach collection="inFilterValues" item="item" open="(" separator="," close=")">
'${item}'
</foreach>
</if>
<include refid="filterRef"/>
</where>
</select>
</mapper>

View File

@@ -13,6 +13,31 @@
<result column="status" jdbcType="TINYINT" property="status"/> <result column="status" jdbcType="TINYINT" property="status"/>
</resultMap> </resultMap>
<insert id="insertList">
INSERT INTO zz_class
(class_id,
class_name,
school_id,
leader_id,
finish_class_hour,
class_level,
create_user_id,
create_time,
status)
VALUES
<foreach collection="list" index="index" item="item" separator="," >
(#{item.classId},
#{item.className},
#{item.schoolId},
#{item.leaderId},
#{item.finishClassHour},
#{item.classLevel},
#{item.createUserId},
#{item.createTime},
#{item.status})
</foreach>
</insert>
<!-- 如果有逻辑删除字段过滤,请写到这里 --> <!-- 如果有逻辑删除字段过滤,请写到这里 -->
<sql id="filterRef"> <sql id="filterRef">
<!-- 这里必须加上全包名否则当filterRef被其他Mapper.xml包含引用的时候就会调用Mapper.xml中的该SQL片段 --> <!-- 这里必须加上全包名否则当filterRef被其他Mapper.xml包含引用的时候就会调用Mapper.xml中的该SQL片段 -->

View File

@@ -19,6 +19,43 @@
<result column="status" jdbcType="TINYINT" property="status"/> <result column="status" jdbcType="TINYINT" property="status"/>
</resultMap> </resultMap>
<insert id="insertList">
INSERT INTO zz_student
(student_id,
login_mobile,
student_name,
province_id,
city_id,
district_id,
gender,
birthday,
experience_level,
total_coin,
left_coin,
grade_id,
school_id,
register_time,
status)
VALUES
<foreach collection="list" index="index" item="item" separator="," >
(#{item.studentId},
#{item.loginMobile},
#{item.studentName},
#{item.provinceId},
#{item.cityId},
#{item.districtId},
#{item.gender},
#{item.birthday},
#{item.experienceLevel},
#{item.totalCoin},
#{item.leftCoin},
#{item.gradeId},
#{item.schoolId},
#{item.registerTime},
#{item.status})
</foreach>
</insert>
<!-- 如果有逻辑删除字段过滤,请写到这里 --> <!-- 如果有逻辑删除字段过滤,请写到这里 -->
<sql id="filterRef"> <sql id="filterRef">
<!-- 这里必须加上全包名否则当filterRef被其他Mapper.xml包含引用的时候就会调用Mapper.xml中的该SQL片段 --> <!-- 这里必须加上全包名否则当filterRef被其他Mapper.xml包含引用的时候就会调用Mapper.xml中的该SQL片段 -->

View File

@@ -1,9 +1,8 @@
package com.orange.demo.courseclassservice.model; package com.orange.demo.courseclassservice.model;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data; import lombok.Data;
import javax.persistence.*;
/** /**
* 行政区划实体对象。 * 行政区划实体对象。
* *
@@ -11,31 +10,30 @@ import javax.persistence.*;
* @date 2020-08-08 * @date 2020-08-08
*/ */
@Data @Data
@Table(name = "zz_area_code") @TableName(value = "zz_area_code")
public class AreaCode { public class AreaCode {
/** /**
* 行政区划主键Id * 行政区划主键Id
*/ */
@Id @TableId(value = "area_id")
@Column(name = "area_id")
private Long areaId; private Long areaId;
/** /**
* 行政区划名称 * 行政区划名称
*/ */
@Column(name = "area_name") @TableField(value = "area_name")
private String areaName; private String areaName;
/** /**
* 行政区划级别 (1: 省级别 2: 市级别 3: 区级别) * 行政区划级别 (1: 省级别 2: 市级别 3: 区级别)
*/ */
@Column(name = "area_level") @TableField(value = "area_level")
private Integer areaLevel; private Integer areaLevel;
/** /**
* 父级行政区划Id * 父级行政区划Id
*/ */
@Column(name = "parent_id") @TableField(value = "parent_id")
private Long parentId; private Long parentId;
} }

View File

@@ -1,7 +1,7 @@
package com.orange.demo.courseclassservice.model; package com.orange.demo.courseclassservice.model;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data; import lombok.Data;
import javax.persistence.*;
/** /**
* ClassCourse实体对象。 * ClassCourse实体对象。
@@ -10,26 +10,24 @@ import javax.persistence.*;
* @date 2020-08-08 * @date 2020-08-08
*/ */
@Data @Data
@Table(name = "zz_class_course") @TableName(value = "zz_class_course")
public class ClassCourse { public class ClassCourse {
/** /**
* 班级Id。 * 班级Id。
*/ */
@Id @TableField(value = "class_id")
@Column(name = "class_id")
private Long classId; private Long classId;
/** /**
* 课程Id。 * 课程Id。
*/ */
@Id @TableField(value = "course_id")
@Column(name = "course_id")
private Long courseId; private Long courseId;
/** /**
* 课程顺序(数值越小越靠前)。 * 课程顺序(数值越小越靠前)。
*/ */
@Column(name = "course_order") @TableField(value = "course_order")
private Integer courseOrder; private Integer courseOrder;
} }

View File

@@ -1,7 +1,7 @@
package com.orange.demo.courseclassservice.model; package com.orange.demo.courseclassservice.model;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data; import lombok.Data;
import javax.persistence.*;
/** /**
* ClassStudent实体对象。 * ClassStudent实体对象。
@@ -10,20 +10,18 @@ import javax.persistence.*;
* @date 2020-08-08 * @date 2020-08-08
*/ */
@Data @Data
@Table(name = "zz_class_student") @TableName(value = "zz_class_student")
public class ClassStudent { public class ClassStudent {
/** /**
* 班级Id。 * 班级Id。
*/ */
@Id @TableField(value = "class_id")
@Column(name = "class_id")
private Long classId; private Long classId;
/** /**
* 学生Id。 * 学生Id。
*/ */
@Id @TableField(value = "student_id")
@Column(name = "student_id")
private Long studentId; private Long studentId;
} }

View File

@@ -1,5 +1,6 @@
package com.orange.demo.courseclassservice.model; package com.orange.demo.courseclassservice.model;
import com.baomidou.mybatisplus.annotation.*;
import com.orange.demo.courseclassapi.vo.CourseVo; import com.orange.demo.courseclassapi.vo.CourseVo;
import com.orange.demo.courseclassapi.constant.CourseDifficult; import com.orange.demo.courseclassapi.constant.CourseDifficult;
import com.orange.demo.application.common.constant.Subject; import com.orange.demo.application.common.constant.Subject;
@@ -11,7 +12,6 @@ import com.orange.demo.common.core.base.mapper.BaseModelMapper;
import lombok.Data; import lombok.Data;
import org.mapstruct.*; import org.mapstruct.*;
import org.mapstruct.factory.Mappers; import org.mapstruct.factory.Mappers;
import javax.persistence.*;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.Date; import java.util.Date;
@@ -24,20 +24,19 @@ import java.util.Map;
* @date 2020-08-08 * @date 2020-08-08
*/ */
@Data @Data
@Table(name = "zz_course") @TableName(value = "zz_course")
public class Course { public class Course {
/** /**
* 主键Id。 * 主键Id。
*/ */
@Id @TableId(value = "course_id")
@Column(name = "course_id")
private Long courseId; private Long courseId;
/** /**
* 课程名称。 * 课程名称。
*/ */
@Column(name = "course_name") @TableField(value = "course_name")
private String courseName; private String courseName;
/** /**
@@ -58,86 +57,86 @@ public class Course {
/** /**
* 年级Id。 * 年级Id。
*/ */
@Column(name = "grade_id") @TableField(value = "grade_id")
private Integer gradeId; private Integer gradeId;
/** /**
* 学科Id。 * 学科Id。
*/ */
@Column(name = "subject_id") @TableField(value = "subject_id")
private Integer subjectId; private Integer subjectId;
/** /**
* 课时数量。 * 课时数量。
*/ */
@Column(name = "class_hour") @TableField(value = "class_hour")
private Integer classHour; private Integer classHour;
/** /**
* 多张课程图片地址。 * 多张课程图片地址。
*/ */
@UploadFlagColumn(storeType = UploadStoreTypeEnum.LOCAL_SYSTEM) @UploadFlagColumn(storeType = UploadStoreTypeEnum.LOCAL_SYSTEM)
@Column(name = "picture_url") @TableField(value = "picture_url")
private String pictureUrl; private String pictureUrl;
/** /**
* 创建用户Id。 * 创建用户Id。
*/ */
@Column(name = "create_user_id") @TableField(value = "create_user_id")
private Long createUserId; private Long createUserId;
/** /**
* 创建时间。 * 创建时间。
*/ */
@Column(name = "create_time") @TableField(value = "create_time")
private Date createTime; private Date createTime;
/** /**
* 最后修改时间。 * 最后修改时间。
*/ */
@Column(name = "update_time") @TableField(value = "update_time")
private Date updateTime; private Date updateTime;
/** /**
* price 范围过滤起始值(>=)。 * price 范围过滤起始值(>=)。
*/ */
@Transient @TableField(exist = false)
private BigDecimal priceStart; private BigDecimal priceStart;
/** /**
* price 范围过滤结束值(<=)。 * price 范围过滤结束值(<=)。
*/ */
@Transient @TableField(exist = false)
private BigDecimal priceEnd; private BigDecimal priceEnd;
/** /**
* classHour 范围过滤起始值(>=)。 * classHour 范围过滤起始值(>=)。
*/ */
@Transient @TableField(exist = false)
private Integer classHourStart; private Integer classHourStart;
/** /**
* classHour 范围过滤结束值(<=)。 * classHour 范围过滤结束值(<=)。
*/ */
@Transient @TableField(exist = false)
private Integer classHourEnd; private Integer classHourEnd;
/** /**
* updateTime 范围过滤起始值(>=)。 * updateTime 范围过滤起始值(>=)。
*/ */
@Transient @TableField(exist = false)
private String updateTimeStart; private String updateTimeStart;
/** /**
* updateTime 范围过滤结束值(<=)。 * updateTime 范围过滤结束值(<=)。
*/ */
@Transient @TableField(exist = false)
private String updateTimeEnd; private String updateTimeEnd;
/** /**
* courseId 的多对多关联表数据对象。 * courseId 的多对多关联表数据对象。
*/ */
@Transient @TableField(exist = false)
private ClassCourse classCourse; private ClassCourse classCourse;
@RelationDict( @RelationDict(
@@ -146,19 +145,19 @@ public class Course {
slaveModelClass = Grade.class, slaveModelClass = Grade.class,
slaveIdField = "gradeId", slaveIdField = "gradeId",
slaveNameField = "gradeName") slaveNameField = "gradeName")
@Transient @TableField(exist = false)
private Map<String, Object> gradeIdDictMap; private Map<String, Object> gradeIdDictMap;
@RelationConstDict( @RelationConstDict(
masterIdField = "difficulty", masterIdField = "difficulty",
constantDictClass = CourseDifficult.class) constantDictClass = CourseDifficult.class)
@Transient @TableField(exist = false)
private Map<String, Object> difficultyDictMap; private Map<String, Object> difficultyDictMap;
@RelationConstDict( @RelationConstDict(
masterIdField = "subjectId", masterIdField = "subjectId",
constantDictClass = Subject.class) constantDictClass = Subject.class)
@Transient @TableField(exist = false)
private Map<String, Object> subjectIdDictMap; private Map<String, Object> subjectIdDictMap;
@Mapper @Mapper

View File

@@ -1,8 +1,7 @@
package com.orange.demo.courseclassservice.model; package com.orange.demo.courseclassservice.model;
import com.orange.demo.common.core.annotation.DeletedFlagColumn; import com.baomidou.mybatisplus.annotation.*;
import lombok.Data; import lombok.Data;
import javax.persistence.*;
/** /**
* Grade实体对象。 * Grade实体对象。
@@ -11,26 +10,24 @@ import javax.persistence.*;
* @date 2020-08-08 * @date 2020-08-08
*/ */
@Data @Data
@Table(name = "zz_grade") @TableName(value = "zz_grade")
public class Grade { public class Grade {
/** /**
* 主键Id。 * 主键Id。
*/ */
@Id @TableId(value = "grade_id", type = IdType.AUTO)
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "grade_id")
private Integer gradeId; private Integer gradeId;
/** /**
* 年级名称。 * 年级名称。
*/ */
@Column(name = "grade_name") @TableField(value = "grade_name")
private String gradeName; private String gradeName;
/** /**
* 逻辑删除标记字段(1: 正常 -1: 已删除)。 * 逻辑删除标记字段(1: 正常 -1: 已删除)。
*/ */
@DeletedFlagColumn @TableLogic
private Integer status; private Integer status;
} }

View File

@@ -1,7 +1,7 @@
package com.orange.demo.courseclassservice.model; package com.orange.demo.courseclassservice.model;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data; import lombok.Data;
import javax.persistence.*;
/** /**
* MaterialEdition实体对象。 * MaterialEdition实体对象。
@@ -10,21 +10,19 @@ import javax.persistence.*;
* @date 2020-08-08 * @date 2020-08-08
*/ */
@Data @Data
@Table(name = "zz_material_edition") @TableName(value = "zz_material_edition")
public class MaterialEdition { public class MaterialEdition {
/** /**
* 主键Id。 * 主键Id。
*/ */
@Id @TableId(value = "edition_id", type = IdType.AUTO)
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "edition_id")
private Integer editionId; private Integer editionId;
/** /**
* 教材版本名称。 * 教材版本名称。
*/ */
@Column(name = "edition_name") @TableField(value = "edition_name")
private String editionName; private String editionName;
/** /**

View File

@@ -1,86 +0,0 @@
package com.orange.demo.courseclassservice.model;
import com.orange.demo.courseclassapi.vo.SchoolInfoVo;
import com.orange.demo.common.core.annotation.RelationDict;
import com.orange.demo.common.core.base.mapper.BaseModelMapper;
import lombok.Data;
import org.mapstruct.*;
import org.mapstruct.factory.Mappers;
import javax.persistence.*;
import java.util.Map;
/**
* SchoolInfo实体对象。
*
* @author Jerry
* @date 2020-08-08
*/
@Data
@Table(name = "zz_school_info")
public class SchoolInfo {
/**
* 学校Id。
*/
@Id
@Column(name = "school_id")
private Long schoolId;
/**
* 学校名称。
*/
@Column(name = "school_name")
private String schoolName;
/**
* 所在省Id。
*/
@Column(name = "province_id")
private Long provinceId;
/**
* 所在城市Id。
*/
@Column(name = "city_id")
private Long cityId;
@RelationDict(
masterIdField = "provinceId",
slaveServiceName = "areaCodeService",
slaveModelClass = AreaCode.class,
slaveIdField = "areaId",
slaveNameField = "areaName")
@Transient
private Map<String, Object> provinceIdDictMap;
@RelationDict(
masterIdField = "cityId",
slaveServiceName = "areaCodeService",
slaveModelClass = AreaCode.class,
slaveIdField = "areaId",
slaveNameField = "areaName")
@Transient
private Map<String, Object> cityIdDictMap;
@Mapper
public interface SchoolInfoModelMapper extends BaseModelMapper<SchoolInfoVo, SchoolInfo> {
/**
* 转换Vo对象到实体对象。
*
* @param schoolInfoVo 域对象。
* @return 实体对象。
*/
@Override
SchoolInfo toModel(SchoolInfoVo schoolInfoVo);
/**
* 转换实体对象到VO对象。
*
* @param schoolInfo 实体对象。
* @return 域对象。
*/
@Override
SchoolInfoVo fromModel(SchoolInfo schoolInfo);
}
public static final SchoolInfoModelMapper INSTANCE = Mappers.getMapper(SchoolInfoModelMapper.class);
}

View File

@@ -1,6 +1,9 @@
package com.orange.demo.courseclassservice.model; package com.orange.demo.courseclassservice.model;
import com.baomidou.mybatisplus.annotation.*;
import com.orange.demo.courseclassapi.vo.StudentVo; import com.orange.demo.courseclassapi.vo.StudentVo;
import com.orange.demo.upmsapi.client.SysDeptClient;
import com.orange.demo.upmsapi.vo.SysDeptVo;
import com.orange.demo.application.common.constant.Gender; import com.orange.demo.application.common.constant.Gender;
import com.orange.demo.application.common.constant.ExpLevel; import com.orange.demo.application.common.constant.ExpLevel;
import com.orange.demo.application.common.constant.StudentStatus; import com.orange.demo.application.common.constant.StudentStatus;
@@ -8,10 +11,10 @@ import com.orange.demo.common.core.annotation.RelationDict;
import com.orange.demo.common.core.annotation.RelationConstDict; import com.orange.demo.common.core.annotation.RelationConstDict;
import com.orange.demo.common.core.base.mapper.BaseModelMapper; import com.orange.demo.common.core.base.mapper.BaseModelMapper;
import com.orange.demo.common.core.util.MyCommonUtil; import com.orange.demo.common.core.util.MyCommonUtil;
import com.orange.demo.common.core.annotation.DeptFilterColumn;
import lombok.Data; import lombok.Data;
import org.mapstruct.*; import org.mapstruct.*;
import org.mapstruct.factory.Mappers; import org.mapstruct.factory.Mappers;
import javax.persistence.*;
import java.util.Date; import java.util.Date;
import java.util.Map; import java.util.Map;
@@ -23,44 +26,43 @@ import java.util.Map;
* @date 2020-08-08 * @date 2020-08-08
*/ */
@Data @Data
@Table(name = "zz_student") @TableName(value = "zz_student")
public class Student { public class Student {
/** /**
* 学生Id。 * 学生Id。
*/ */
@Id @TableId(value = "student_id")
@Column(name = "student_id")
private Long studentId; private Long studentId;
/** /**
* 登录手机。 * 登录手机。
*/ */
@Column(name = "login_mobile") @TableField(value = "login_mobile")
private String loginMobile; private String loginMobile;
/** /**
* 学生姓名。 * 学生姓名。
*/ */
@Column(name = "student_name") @TableField(value = "student_name")
private String studentName; private String studentName;
/** /**
* 所在省份Id。 * 所在省份Id。
*/ */
@Column(name = "province_id") @TableField(value = "province_id")
private Long provinceId; private Long provinceId;
/** /**
* 所在城市Id。 * 所在城市Id。
*/ */
@Column(name = "city_id") @TableField(value = "city_id")
private Long cityId; private Long cityId;
/** /**
* 区县Id。 * 区县Id。
*/ */
@Column(name = "district_id") @TableField(value = "district_id")
private Long districtId; private Long districtId;
/** /**
@@ -76,37 +78,38 @@ public class Student {
/** /**
* 经验等级 (0: 初级 1: 中级 2: 高级 3: 资深)。 * 经验等级 (0: 初级 1: 中级 2: 高级 3: 资深)。
*/ */
@Column(name = "experience_level") @TableField(value = "experience_level")
private Integer experienceLevel; private Integer experienceLevel;
/** /**
* 总共充值学币数量。 * 总共充值学币数量。
*/ */
@Column(name = "total_coin") @TableField(value = "total_coin")
private Integer totalCoin; private Integer totalCoin;
/** /**
* 可用学币数量。 * 可用学币数量。
*/ */
@Column(name = "left_coin") @TableField(value = "left_coin")
private Integer leftCoin; private Integer leftCoin;
/** /**
* 年级Id。 * 年级Id。
*/ */
@Column(name = "grade_id") @TableField(value = "grade_id")
private Integer gradeId; private Integer gradeId;
/** /**
* 校区Id。 * 校区Id。
*/ */
@Column(name = "school_id") @DeptFilterColumn
@TableField(value = "school_id")
private Long schoolId; private Long schoolId;
/** /**
* 注册时间。 * 注册时间。
*/ */
@Column(name = "register_time") @TableField(value = "register_time")
private Date registerTime; private Date registerTime;
/** /**
@@ -117,44 +120,53 @@ public class Student {
/** /**
* birthday 范围过滤起始值(>=)。 * birthday 范围过滤起始值(>=)。
*/ */
@Transient @TableField(exist = false)
private String birthdayStart; private String birthdayStart;
/** /**
* birthday 范围过滤结束值(<=)。 * birthday 范围过滤结束值(<=)。
*/ */
@Transient @TableField(exist = false)
private String birthdayEnd; private String birthdayEnd;
/** /**
* registerTime 范围过滤起始值(>=)。 * registerTime 范围过滤起始值(>=)。
*/ */
@Transient @TableField(exist = false)
private String registerTimeStart; private String registerTimeStart;
/** /**
* registerTime 范围过滤结束值(<=)。 * registerTime 范围过滤结束值(<=)。
*/ */
@Transient @TableField(exist = false)
private String registerTimeEnd; private String registerTimeEnd;
/** /**
* true LIKE搜索字符串。 * true LIKE搜索字符串。
*/ */
@Transient @TableField(exist = false)
private String searchString; private String searchString;
public void setSearchString(String searchString) { public void setSearchString(String searchString) {
this.searchString = MyCommonUtil.replaceSqlWildcard(searchString); this.searchString = MyCommonUtil.replaceSqlWildcard(searchString);
} }
@RelationDict(
masterIdField = "schoolId",
slaveClientClass = SysDeptClient.class,
slaveModelClass = SysDeptVo.class,
slaveIdField = "deptId",
slaveNameField = "deptName")
@TableField(exist = false)
private Map<String, Object> schoolIdDictMap;
@RelationDict( @RelationDict(
masterIdField = "provinceId", masterIdField = "provinceId",
slaveServiceName = "areaCodeService", slaveServiceName = "areaCodeService",
slaveModelClass = AreaCode.class, slaveModelClass = AreaCode.class,
slaveIdField = "areaId", slaveIdField = "areaId",
slaveNameField = "areaName") slaveNameField = "areaName")
@Transient @TableField(exist = false)
private Map<String, Object> provinceIdDictMap; private Map<String, Object> provinceIdDictMap;
@RelationDict( @RelationDict(
@@ -163,7 +175,7 @@ public class Student {
slaveModelClass = AreaCode.class, slaveModelClass = AreaCode.class,
slaveIdField = "areaId", slaveIdField = "areaId",
slaveNameField = "areaName") slaveNameField = "areaName")
@Transient @TableField(exist = false)
private Map<String, Object> cityIdDictMap; private Map<String, Object> cityIdDictMap;
@RelationDict( @RelationDict(
@@ -172,7 +184,7 @@ public class Student {
slaveModelClass = AreaCode.class, slaveModelClass = AreaCode.class,
slaveIdField = "areaId", slaveIdField = "areaId",
slaveNameField = "areaName") slaveNameField = "areaName")
@Transient @TableField(exist = false)
private Map<String, Object> districtIdDictMap; private Map<String, Object> districtIdDictMap;
@RelationDict( @RelationDict(
@@ -181,34 +193,25 @@ public class Student {
slaveModelClass = Grade.class, slaveModelClass = Grade.class,
slaveIdField = "gradeId", slaveIdField = "gradeId",
slaveNameField = "gradeName") slaveNameField = "gradeName")
@Transient @TableField(exist = false)
private Map<String, Object> gradeIdDictMap; private Map<String, Object> gradeIdDictMap;
@RelationDict(
masterIdField = "schoolId",
slaveServiceName = "schoolInfoService",
slaveModelClass = SchoolInfo.class,
slaveIdField = "schoolId",
slaveNameField = "schoolName")
@Transient
private Map<String, Object> schoolIdDictMap;
@RelationConstDict( @RelationConstDict(
masterIdField = "gender", masterIdField = "gender",
constantDictClass = Gender.class) constantDictClass = Gender.class)
@Transient @TableField(exist = false)
private Map<String, Object> genderDictMap; private Map<String, Object> genderDictMap;
@RelationConstDict( @RelationConstDict(
masterIdField = "experienceLevel", masterIdField = "experienceLevel",
constantDictClass = ExpLevel.class) constantDictClass = ExpLevel.class)
@Transient @TableField(exist = false)
private Map<String, Object> experienceLevelDictMap; private Map<String, Object> experienceLevelDictMap;
@RelationConstDict( @RelationConstDict(
masterIdField = "status", masterIdField = "status",
constantDictClass = StudentStatus.class) constantDictClass = StudentStatus.class)
@Transient @TableField(exist = false)
private Map<String, Object> statusDictMap; private Map<String, Object> statusDictMap;
@Mapper @Mapper

View File

@@ -1,15 +1,18 @@
package com.orange.demo.courseclassservice.model; package com.orange.demo.courseclassservice.model;
import com.baomidou.mybatisplus.annotation.*;
import com.orange.demo.courseclassapi.vo.StudentClassVo; import com.orange.demo.courseclassapi.vo.StudentClassVo;
import com.orange.demo.upmsapi.client.SysDeptClient;
import com.orange.demo.upmsapi.vo.SysDeptVo;
import com.orange.demo.courseclassapi.constant.ClassLevel; import com.orange.demo.courseclassapi.constant.ClassLevel;
import com.orange.demo.common.core.annotation.RelationDict; import com.orange.demo.common.core.annotation.RelationDict;
import com.orange.demo.common.core.annotation.RelationConstDict; import com.orange.demo.common.core.annotation.RelationConstDict;
import com.orange.demo.common.core.base.mapper.BaseModelMapper; import com.orange.demo.common.core.base.mapper.BaseModelMapper;
import com.orange.demo.common.core.annotation.DeletedFlagColumn; import com.orange.demo.common.core.annotation.DeptFilterColumn;
import com.orange.demo.common.core.annotation.UserFilterColumn;
import lombok.Data; import lombok.Data;
import org.mapstruct.*; import org.mapstruct.*;
import org.mapstruct.factory.Mappers; import org.mapstruct.factory.Mappers;
import javax.persistence.*;
import java.util.Date; import java.util.Date;
import java.util.Map; import java.util.Map;
@@ -21,71 +24,72 @@ import java.util.Map;
* @date 2020-08-08 * @date 2020-08-08
*/ */
@Data @Data
@Table(name = "zz_class") @TableName(value = "zz_class")
public class StudentClass { public class StudentClass {
/** /**
* 班级Id。 * 班级Id。
*/ */
@Id @TableId(value = "class_id")
@Column(name = "class_id")
private Long classId; private Long classId;
/** /**
* 班级名称。 * 班级名称。
*/ */
@Column(name = "class_name") @TableField(value = "class_name")
private String className; private String className;
/** /**
* 学校Id。 * 学校Id。
*/ */
@Column(name = "school_id") @DeptFilterColumn
@TableField(value = "school_id")
private Long schoolId; private Long schoolId;
/** /**
* 学生班长Id。 * 学生班长Id。
*/ */
@Column(name = "leader_id") @TableField(value = "leader_id")
private Long leaderId; private Long leaderId;
/** /**
* 已完成课时数量。 * 已完成课时数量。
*/ */
@Column(name = "finish_class_hour") @TableField(value = "finish_class_hour")
private Integer finishClassHour; private Integer finishClassHour;
/** /**
* 班级级别(0: 初级班 1: 培优班 2: 冲刺提分班 3: 竞赛班)。 * 班级级别(0: 初级班 1: 培优班 2: 冲刺提分班 3: 竞赛班)。
*/ */
@Column(name = "class_level") @TableField(value = "class_level")
private Integer classLevel; private Integer classLevel;
/** /**
* 创建用户。 * 创建用户。
*/ */
@Column(name = "create_user_id") @UserFilterColumn
@TableField(value = "create_user_id")
private Long createUserId; private Long createUserId;
/** /**
* 班级创建时间。 * 班级创建时间。
*/ */
@Column(name = "create_time") @TableField(value = "create_time")
private Date createTime; private Date createTime;
/** /**
* 逻辑删除标记字段(1: 正常 -1: 已删除)。 * 逻辑删除标记字段(1: 正常 -1: 已删除)。
*/ */
@DeletedFlagColumn @TableLogic
private Integer status; private Integer status;
@RelationDict( @RelationDict(
masterIdField = "schoolId", masterIdField = "schoolId",
slaveServiceName = "schoolInfoService", slaveClientClass = SysDeptClient.class,
slaveModelClass = SchoolInfo.class, slaveModelClass = SysDeptVo.class,
slaveIdField = "schoolId", slaveIdField = "deptId",
slaveNameField = "schoolName") slaveNameField = "deptName")
@Transient @TableField(exist = false)
private Map<String, Object> schoolIdDictMap; private Map<String, Object> schoolIdDictMap;
@RelationDict( @RelationDict(
@@ -94,13 +98,13 @@ public class StudentClass {
slaveModelClass = Student.class, slaveModelClass = Student.class,
slaveIdField = "studentId", slaveIdField = "studentId",
slaveNameField = "studentName") slaveNameField = "studentName")
@Transient @TableField(exist = false)
private Map<String, Object> leaderIdDictMap; private Map<String, Object> leaderIdDictMap;
@RelationConstDict( @RelationConstDict(
masterIdField = "classLevel", masterIdField = "classLevel",
constantDictClass = ClassLevel.class) constantDictClass = ClassLevel.class)
@Transient @TableField(exist = false)
private Map<String, Object> classLevelDictMap; private Map<String, Object> classLevelDictMap;
@Mapper @Mapper

View File

@@ -22,6 +22,13 @@ public interface CourseService extends IBaseService<Course, Long> {
*/ */
Course saveNew(Course course); Course saveNew(Course course);
/**
* 利用数据库的insertList语法批量插入对象列表。
*
* @param courseList 新增对象列表。
*/
void saveNewBatch(List<Course> courseList);
/** /**
* 更新数据对象。 * 更新数据对象。
* *

View File

@@ -1,97 +0,0 @@
package com.orange.demo.courseclassservice.service;
import com.orange.demo.courseclassservice.model.*;
import com.orange.demo.common.core.object.CallResult;
import com.orange.demo.common.core.base.service.IBaseService;
import java.util.*;
/**
* 校区数据数据操作服务接口。
*
* @author Jerry
* @date 2020-08-08
*/
public interface SchoolInfoService extends IBaseService<SchoolInfo, Long> {
/**
* 保存新增对象。
*
* @param schoolInfo 新增对象。
* @return 返回新增对象。
*/
SchoolInfo saveNew(SchoolInfo schoolInfo);
/**
* 更新数据对象。
*
* @param schoolInfo 更新的对象。
* @param originalSchoolInfo 原有数据对象。
* @return 成功返回true否则false。
*/
boolean update(SchoolInfo schoolInfo, SchoolInfo originalSchoolInfo);
/**
* 删除指定数据。
*
* @param schoolId 主键Id。
* @return 成功返回true否则false。
*/
boolean remove(Long schoolId);
/**
* 获取单表查询结果。由于没有关联数据查询,因此在仅仅获取单表数据的场景下,效率更高。
* 如果需要同时获取关联数据,请移步(getSchoolInfoListWithRelation)方法。
*
* @param filter 过滤对象。
* @param orderBy 排序参数。
* @return 查询结果集。
*/
List<SchoolInfo> getSchoolInfoList(SchoolInfo filter, String orderBy);
/**
* 获取主表的查询结果,查询条件中包括主表过滤对象和指定字段的(in list)过滤。
* 由于没有关联数据查询,因此在仅仅获取单表数据的场景下,效率更高。
* 如果需要同时获取关联数据,请移步(getSchoolInfoListWithRelation)方法。
*
* @param inFilterField (In-list)指定的字段(Java成员字段而非数据列名)。
* @param inFilterValues inFilterField指定字段的(In-list)数据列表。
* @param filter 过滤对象。
* @param orderBy 排序参数。
* @return 查询结果集。
*/
<M> List<SchoolInfo> getSchoolInfoList(String inFilterField, Set<M> inFilterValues, SchoolInfo filter, String orderBy);
/**
* 获取主表的查询结果,以及主表关联的字典数据和一对一从表数据,以及一对一从表的字典数据。
* 如果仅仅需要获取主表数据,请移步(getSchoolInfoList),以便获取更好的查询性能。
*
* @param filter 主表过滤对象。
* @param orderBy 排序对象。
* @return 查询结果集。
*/
List<SchoolInfo> getSchoolInfoListWithRelation(SchoolInfo filter, String orderBy);
/**
* 获取主表的查询结果,查询条件中包括主表过滤对象和指定字段的(in list)过滤。
* 同时还包含主表关联的字典数据和一对一从表数据,以及一对一从表的字典数据。
* 如果仅仅需要获取主表数据,请移步(getSchoolInfoList),以便获取更好的查询性能。
*
* @param inFilterField (In-list)指定的字段(Java成员字段而非数据列名)。
* @param inFilterValues inFilterField指定字段的(In-list)数据列表。
* @param filter 主表过滤对象。
* @param orderBy 排序对象。
* @return 查询结果集。
*/
<M> List<SchoolInfo> getSchoolInfoListWithRelation(
String inFilterField, Set<M> inFilterValues, SchoolInfo filter, String orderBy);
/**
* 根据最新对象和原有对象的数据对比,判断关联的字典数据和多对一主表数据是否都是合法数据。
*
* @param schoolInfo 最新数据对象。
* @param originalSchoolInfo 原有数据对象。
* @return 数据全部正确返回true否则false同时返回具体的错误信息。
*/
CallResult verifyRelatedData(SchoolInfo schoolInfo, SchoolInfo originalSchoolInfo);
}

View File

@@ -22,6 +22,13 @@ public interface StudentClassService extends IBaseService<StudentClass, Long> {
*/ */
StudentClass saveNew(StudentClass studentClass); StudentClass saveNew(StudentClass studentClass);
/**
* 利用数据库的insertList语法批量插入对象列表。
*
* @param studentClassList 新增对象列表。
*/
void saveNewBatch(List<StudentClass> studentClassList);
/** /**
* 更新数据对象。 * 更新数据对象。
* *
@@ -145,4 +152,13 @@ public interface StudentClassService extends IBaseService<StudentClass, Long> {
* @return 数据全部正确返回true否则false同时返回具体的错误信息。 * @return 数据全部正确返回true否则false同时返回具体的错误信息。
*/ */
CallResult verifyRelatedData(StudentClass studentClass, StudentClass originalStudentClass); CallResult verifyRelatedData(StudentClass studentClass, StudentClass originalStudentClass);
/**
* 根据最新对象和原有对象的数据对比,判断关联的远程字典数据和多对一主表数据是否都是合法数据。
*
* @param studentClass 最新数据对象。
* @param originalStudentClass 原有数据对象。
* @return 数据全部正确返回true否则false同时返回具体的错误信息。
*/
CallResult verifyRemoteRelatedData(StudentClass studentClass, StudentClass originalStudentClass);
} }

View File

@@ -22,6 +22,13 @@ public interface StudentService extends IBaseService<Student, Long> {
*/ */
Student saveNew(Student student); Student saveNew(Student student);
/**
* 利用数据库的insertList语法批量插入对象列表。
*
* @param studentList 新增对象列表。
*/
void saveNewBatch(List<Student> studentList);
/** /**
* 更新数据对象。 * 更新数据对象。
* *
@@ -114,4 +121,13 @@ public interface StudentService extends IBaseService<Student, Long> {
* @return 数据全部正确返回true否则false同时返回具体的错误信息。 * @return 数据全部正确返回true否则false同时返回具体的错误信息。
*/ */
CallResult verifyRelatedData(Student student, Student originalStudent); CallResult verifyRelatedData(Student student, Student originalStudent);
/**
* 根据最新对象和原有对象的数据对比,判断关联的远程字典数据和多对一主表数据是否都是合法数据。
*
* @param student 最新数据对象。
* @param originalStudent 原有数据对象。
* @return 数据全部正确返回true否则false同时返回具体的错误信息。
*/
CallResult verifyRemoteRelatedData(Student student, Student originalStudent);
} }

View File

@@ -1,5 +1,8 @@
package com.orange.demo.courseclassservice.service.impl; package com.orange.demo.courseclassservice.service.impl;
import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.orange.demo.courseclassservice.service.*; import com.orange.demo.courseclassservice.service.*;
import com.orange.demo.courseclassservice.dao.*; import com.orange.demo.courseclassservice.dao.*;
import com.orange.demo.courseclassservice.model.*; import com.orange.demo.courseclassservice.model.*;
@@ -56,16 +59,24 @@ public class CourseServiceImpl extends BaseService<Course, Long> implements Cour
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
@Override @Override
public Course saveNew(Course course) { public Course saveNew(Course course) {
course.setCourseId(idGenerator.nextLongId()); courseMapper.insert(this.buildDefaultValue(course));
TokenData tokenData = TokenData.takeFromRequest();
course.setCreateUserId(tokenData.getUserId());
Date now = new Date();
course.setCreateTime(now);
course.setUpdateTime(now);
courseMapper.insert(course);
return course; return course;
} }
/**
* 利用数据库的insertList语法批量插入对象列表。
*
* @param courseList 新增对象列表。
*/
@Transactional(rollbackFor = Exception.class)
@Override
public void saveNewBatch(List<Course> courseList) {
if (CollUtil.isNotEmpty(courseList)) {
courseList.forEach(this::buildDefaultValue);
courseMapper.insertList(courseList);
}
}
/** /**
* 更新数据对象。 * 更新数据对象。
* *
@@ -80,7 +91,8 @@ public class CourseServiceImpl extends BaseService<Course, Long> implements Cour
course.setCreateTime(originalCourse.getCreateTime()); course.setCreateTime(originalCourse.getCreateTime());
course.setUpdateTime(new Date()); course.setUpdateTime(new Date());
// 这里重点提示,在执行主表数据更新之前,如果有哪些字段不支持修改操作,请用原有数据对象字段替换当前数据字段。 // 这里重点提示,在执行主表数据更新之前,如果有哪些字段不支持修改操作,请用原有数据对象字段替换当前数据字段。
return courseMapper.updateByPrimaryKey(course) == 1; UpdateWrapper<Course> uw = this.createUpdateQueryForNullValue(course, course.getCourseId());
return courseMapper.update(course, uw) == 1;
} }
/** /**
@@ -92,14 +104,13 @@ public class CourseServiceImpl extends BaseService<Course, Long> implements Cour
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
@Override @Override
public boolean remove(Long courseId) { public boolean remove(Long courseId) {
// 这里先删除主数据 if (courseMapper.deleteById(courseId) == 0) {
if (!this.removeById(courseId)) {
return false; return false;
} }
// 开始删除与本地多对多父表的关联 // 开始删除与本地多对多父表的关联
ClassCourse classCourse = new ClassCourse(); ClassCourse classCourse = new ClassCourse();
classCourse.setCourseId(courseId); classCourse.setCourseId(courseId);
classCourseMapper.delete(classCourse); classCourseMapper.delete(new QueryWrapper<>(classCourse));
return true; return true;
} }
@@ -225,4 +236,14 @@ public class CourseServiceImpl extends BaseService<Course, Long> implements Cour
} }
return CallResult.ok(); return CallResult.ok();
} }
private Course buildDefaultValue(Course course) {
course.setCourseId(idGenerator.nextLongId());
TokenData tokenData = TokenData.takeFromRequest();
course.setCreateUserId(tokenData.getUserId());
Date now = new Date();
course.setCreateTime(now);
course.setUpdateTime(now);
return course;
}
} }

View File

@@ -1,182 +0,0 @@
package com.orange.demo.courseclassservice.service.impl;
import com.orange.demo.courseclassservice.service.*;
import com.orange.demo.courseclassservice.dao.*;
import com.orange.demo.courseclassservice.model.*;
import com.orange.demo.common.core.util.*;
import com.orange.demo.common.core.object.MyRelationParam;
import com.orange.demo.common.core.object.CallResult;
import com.orange.demo.common.core.base.dao.BaseDaoMapper;
import com.orange.demo.common.core.base.service.BaseService;
import com.orange.demo.common.sequence.wrapper.IdGeneratorWrapper;
import lombok.extern.slf4j.Slf4j;
import com.github.pagehelper.Page;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.*;
/**
* 校区数据数据操作服务类。
*
* @author Jerry
* @date 2020-08-08
*/
@Slf4j
@Service("schoolInfoService")
public class SchoolInfoServiceImpl extends BaseService<SchoolInfo, Long> implements SchoolInfoService {
@Autowired
private SchoolInfoMapper schoolInfoMapper;
@Autowired
private AreaCodeService areaCodeService;
@Autowired
private IdGeneratorWrapper idGenerator;
/**
* 返回当前Service的主表Mapper对象。
*
* @return 主表Mapper对象。
*/
@Override
protected BaseDaoMapper<SchoolInfo> mapper() {
return schoolInfoMapper;
}
/**
* 保存新增对象。
*
* @param schoolInfo 新增对象。
* @return 返回新增对象。
*/
@Transactional(rollbackFor = Exception.class)
@Override
public SchoolInfo saveNew(SchoolInfo schoolInfo) {
schoolInfo.setSchoolId(idGenerator.nextLongId());
schoolInfoMapper.insert(schoolInfo);
return schoolInfo;
}
/**
* 更新数据对象。
*
* @param schoolInfo 更新的对象。
* @param originalSchoolInfo 原有数据对象。
* @return 成功返回true否则false。
*/
@Transactional(rollbackFor = Exception.class)
@Override
public boolean update(SchoolInfo schoolInfo, SchoolInfo originalSchoolInfo) {
// 这里重点提示,在执行主表数据更新之前,如果有哪些字段不支持修改操作,请用原有数据对象字段替换当前数据字段。
return schoolInfoMapper.updateByPrimaryKey(schoolInfo) == 1;
}
/**
* 删除指定数据。
*
* @param schoolId 主键Id。
* @return 成功返回true否则false。
*/
@Transactional(rollbackFor = Exception.class)
@Override
public boolean remove(Long schoolId) {
// 这里先删除主数据
return this.removeById(schoolId);
}
/**
* 获取单表查询结果。由于没有关联数据查询,因此在仅仅获取单表数据的场景下,效率更高。
* 如果需要同时获取关联数据,请移步(getSchoolInfoListWithRelation)方法。
*
* @param filter 过滤对象。
* @param orderBy 排序参数。
* @return 查询结果集。
*/
@Override
public List<SchoolInfo> getSchoolInfoList(SchoolInfo filter, String orderBy) {
return schoolInfoMapper.getSchoolInfoList(null, null, filter, orderBy);
}
/**
* 获取主表的查询结果,查询条件中包括主表过滤对象和指定字段的(in list)过滤。
* 由于没有关联数据查询,因此在仅仅获取单表数据的场景下,效率更高。
* 如果需要同时获取关联数据,请移步(getSchoolInfoListWithRelation)方法。
*
* @param inFilterField (In-list)指定的字段(Java成员字段而非数据列名)。
* @param inFilterValues inFilterField指定字段的(In-list)数据列表。
* @param filter 过滤对象。
* @param orderBy 排序参数。
* @return 查询结果集。
*/
@Override
public <M> List<SchoolInfo> getSchoolInfoList(
String inFilterField, Set<M> inFilterValues, SchoolInfo filter, String orderBy) {
String inFilterColumn = MyModelUtil.mapToColumnName(inFilterField, SchoolInfo.class);
return schoolInfoMapper.getSchoolInfoList(inFilterColumn, inFilterValues, filter, orderBy);
}
/**
* 获取主表的查询结果,以及主表关联的字典数据和一对一从表数据,以及一对一从表的字典数据。
* 该查询会涉及到一对一从表的关联过滤,或一对多从表的嵌套关联过滤,因此性能不如单表过滤。
* 如果仅仅需要获取主表数据,请移步(getSchoolInfoList),以便获取更好的查询性能。
*
* @param filter 主表过滤对象。
* @param orderBy 排序对象。
* @return 查询结果集。
*/
@Override
public List<SchoolInfo> getSchoolInfoListWithRelation(SchoolInfo filter, String orderBy) {
List<SchoolInfo> resultList = schoolInfoMapper.getSchoolInfoList(null, null, filter, orderBy);
// 在缺省生成的代码中如果查询结果resultList不是Page对象说明没有分页那么就很可能是数据导出接口调用了当前方法。
// 为了避免一次性的大量数据关联,规避因此而造成的系统运行性能冲击,这里手动进行了分批次读取,开发者可按需修改该值。
int batchSize = resultList instanceof Page ? 0 : 1000;
this.buildRelationForDataList(resultList, MyRelationParam.normal(), batchSize);
return resultList;
}
/**
* 获取主表的查询结果,查询条件中包括主表过滤对象和指定字段的(in list)过滤。
* 同时还包含主表关联的字典数据和一对一从表数据,以及一对一从表的字典数据。
* 如果仅仅需要获取主表数据,请移步(getSchoolInfoList),以便获取更好的查询性能。
*
* @param inFilterField (In-list)指定的字段(Java成员字段而非数据列名)。
* @param inFilterValues inFilterField指定字段的(In-list)数据列表。
* @param filter 主表过滤对象。
* @param orderBy 排序对象。
* @return 查询结果集。
*/
@Override
public <M> List<SchoolInfo> getSchoolInfoListWithRelation(
String inFilterField, Set<M> inFilterValues, SchoolInfo filter, String orderBy) {
String inFilterColumn = MyModelUtil.mapToColumnName(inFilterField, SchoolInfo.class);
List<SchoolInfo> resultList =
schoolInfoMapper.getSchoolInfoList(inFilterColumn, inFilterValues, filter, orderBy);
// 在缺省生成的代码中如果查询结果resultList不是Page对象说明没有分页那么就很可能是数据导出接口调用了当前方法。
// 为了避免一次性的大量数据关联,规避因此而造成的系统运行性能冲击,这里手动进行了分批次读取,开发者可按需修改该值。
int batchSize = resultList instanceof Page ? 0 : 1000;
this.buildRelationForDataList(resultList, MyRelationParam.dictOnly(), batchSize);
return resultList;
}
/**
* 根据最新对象和原有对象的数据对比,判断关联的字典数据和多对一主表数据是否都是合法数据。
*
* @param schoolInfo 最新数据对象。
* @param originalSchoolInfo 原有数据对象。
* @return 数据全部正确返回true否则false同时返回具体的错误信息。
*/
@Override
public CallResult verifyRelatedData(SchoolInfo schoolInfo, SchoolInfo originalSchoolInfo) {
String errorMessageFormat = "数据验证失败,关联的%s并不存在请刷新后重试";
if (this.needToVerify(schoolInfo, originalSchoolInfo, SchoolInfo::getProvinceId)
&& !areaCodeService.existId(schoolInfo.getProvinceId())) {
return CallResult.error(String.format(errorMessageFormat, "所在省份"));
}
if (this.needToVerify(schoolInfo, originalSchoolInfo, SchoolInfo::getCityId)
&& !areaCodeService.existId(schoolInfo.getCityId())) {
return CallResult.error(String.format(errorMessageFormat, "所在城市"));
}
return CallResult.ok();
}
}

View File

@@ -1,10 +1,15 @@
package com.orange.demo.courseclassservice.service.impl; package com.orange.demo.courseclassservice.service.impl;
import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.orange.demo.courseclassservice.service.*; import com.orange.demo.courseclassservice.service.*;
import com.orange.demo.courseclassservice.dao.*; import com.orange.demo.courseclassservice.dao.*;
import com.orange.demo.courseclassservice.model.*; import com.orange.demo.courseclassservice.model.*;
import com.orange.demo.upmsapi.client.*;
import com.orange.demo.common.core.util.*; import com.orange.demo.common.core.util.*;
import com.orange.demo.common.core.object.MyRelationParam; import com.orange.demo.common.core.object.MyRelationParam;
import com.orange.demo.common.core.object.ResponseResult;
import com.orange.demo.common.core.object.CallResult; import com.orange.demo.common.core.object.CallResult;
import com.orange.demo.common.core.object.TokenData; import com.orange.demo.common.core.object.TokenData;
import com.orange.demo.common.core.constant.GlobalDeletedFlag; import com.orange.demo.common.core.constant.GlobalDeletedFlag;
@@ -16,7 +21,6 @@ import com.github.pagehelper.Page;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import tk.mybatis.mapper.entity.Example;
import java.util.*; import java.util.*;
@@ -37,10 +41,10 @@ public class StudentClassServiceImpl extends BaseService<StudentClass, Long> imp
@Autowired @Autowired
private ClassStudentMapper classStudentMapper; private ClassStudentMapper classStudentMapper;
@Autowired @Autowired
private SchoolInfoService schoolInfoService;
@Autowired
private StudentService studentService; private StudentService studentService;
@Autowired @Autowired
private SysDeptClient sysDeptClient;
@Autowired
private IdGeneratorWrapper idGenerator; private IdGeneratorWrapper idGenerator;
/** /**
@@ -62,15 +66,24 @@ public class StudentClassServiceImpl extends BaseService<StudentClass, Long> imp
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
@Override @Override
public StudentClass saveNew(StudentClass studentClass) { public StudentClass saveNew(StudentClass studentClass) {
studentClass.setClassId(idGenerator.nextLongId()); studentClassMapper.insert(this.buildDefaultValue(studentClass));
TokenData tokenData = TokenData.takeFromRequest();
studentClass.setCreateUserId(tokenData.getUserId());
studentClass.setCreateTime(new Date());
studentClass.setStatus(GlobalDeletedFlag.NORMAL);
studentClassMapper.insert(studentClass);
return studentClass; return studentClass;
} }
/**
* 利用数据库的insertList语法批量插入对象列表。
*
* @param studentClassList 新增对象列表。
*/
@Transactional(rollbackFor = Exception.class)
@Override
public void saveNewBatch(List<StudentClass> studentClassList) {
if (CollUtil.isNotEmpty(studentClassList)) {
studentClassList.forEach(this::buildDefaultValue);
studentClassMapper.insertList(studentClassList);
}
}
/** /**
* 更新数据对象。 * 更新数据对象。
* *
@@ -83,9 +96,9 @@ public class StudentClassServiceImpl extends BaseService<StudentClass, Long> imp
public boolean update(StudentClass studentClass, StudentClass originalStudentClass) { public boolean update(StudentClass studentClass, StudentClass originalStudentClass) {
studentClass.setCreateUserId(originalStudentClass.getCreateUserId()); studentClass.setCreateUserId(originalStudentClass.getCreateUserId());
studentClass.setCreateTime(originalStudentClass.getCreateTime()); studentClass.setCreateTime(originalStudentClass.getCreateTime());
studentClass.setStatus(GlobalDeletedFlag.NORMAL);
// 这里重点提示,在执行主表数据更新之前,如果有哪些字段不支持修改操作,请用原有数据对象字段替换当前数据字段。 // 这里重点提示,在执行主表数据更新之前,如果有哪些字段不支持修改操作,请用原有数据对象字段替换当前数据字段。
return studentClassMapper.updateByPrimaryKey(studentClass) == 1; UpdateWrapper<StudentClass> uw = this.createUpdateQueryForNullValue(studentClass, studentClass.getClassId());
return studentClassMapper.update(studentClass, uw) == 1;
} }
/** /**
@@ -97,17 +110,16 @@ public class StudentClassServiceImpl extends BaseService<StudentClass, Long> imp
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
@Override @Override
public boolean remove(Long classId) { public boolean remove(Long classId) {
// 这里先删除主数据 if (studentClassMapper.deleteById(classId) == 0) {
if (!this.removeById(classId)) {
return false; return false;
} }
// 开始删除多对多中间表的关联 // 开始删除多对多中间表的关联
ClassCourse classCourse = new ClassCourse(); ClassCourse classCourse = new ClassCourse();
classCourse.setClassId(classId); classCourse.setClassId(classId);
classCourseMapper.delete(classCourse); classCourseMapper.delete(new QueryWrapper<>(classCourse));
ClassStudent classStudent = new ClassStudent(); ClassStudent classStudent = new ClassStudent();
classStudent.setClassId(classId); classStudent.setClassId(classId);
classStudentMapper.delete(classStudent); classStudentMapper.delete(new QueryWrapper<>(classStudent));
return true; return true;
} }
@@ -197,8 +209,8 @@ public class StudentClassServiceImpl extends BaseService<StudentClass, Long> imp
for (ClassCourse classCourse : classCourseList) { for (ClassCourse classCourse : classCourseList) {
classCourse.setClassId(classId); classCourse.setClassId(classId);
MyModelUtil.setDefaultValue(classCourse, "courseOrder", 0); MyModelUtil.setDefaultValue(classCourse, "courseOrder", 0);
classCourseMapper.insert(classCourse);
} }
classCourseMapper.insertList(classCourseList);
} }
/** /**
@@ -210,11 +222,13 @@ public class StudentClassServiceImpl extends BaseService<StudentClass, Long> imp
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
@Override @Override
public boolean updateClassCourse(ClassCourse classCourse) { public boolean updateClassCourse(ClassCourse classCourse) {
Example e = new Example(ClassCourse.class); ClassCourse filter = new ClassCourse();
e.createCriteria() filter.setClassId(classCourse.getClassId());
.andEqualTo("classId", classCourse.getClassId()) filter.setCourseId(classCourse.getCourseId());
.andEqualTo("courseId", classCourse.getCourseId()); UpdateWrapper<ClassCourse> uw =
return classCourseMapper.updateByExample(classCourse, e) > 0; BaseService.createUpdateQueryForNullValue(classCourse, ClassCourse.class);
uw.setEntity(filter);
return classCourseMapper.update(classCourse, uw) > 0;
} }
/** /**
@@ -226,11 +240,10 @@ public class StudentClassServiceImpl extends BaseService<StudentClass, Long> imp
*/ */
@Override @Override
public ClassCourse getClassCourse(Long classId, Long courseId) { public ClassCourse getClassCourse(Long classId, Long courseId) {
Example e = new Example(ClassCourse.class); ClassCourse filter = new ClassCourse();
e.createCriteria() filter.setClassId(classId);
.andEqualTo("classId", classId) filter.setCourseId(courseId);
.andEqualTo("courseId", courseId); return classCourseMapper.selectOne(new QueryWrapper<>(filter));
return classCourseMapper.selectOneByExample(e);
} }
/** /**
@@ -246,7 +259,7 @@ public class StudentClassServiceImpl extends BaseService<StudentClass, Long> imp
ClassCourse filter = new ClassCourse(); ClassCourse filter = new ClassCourse();
filter.setClassId(classId); filter.setClassId(classId);
filter.setCourseId(courseId); filter.setCourseId(courseId);
return classCourseMapper.delete(filter) > 0; return classCourseMapper.delete(new QueryWrapper<>(filter)) > 0;
} }
/** /**
@@ -260,8 +273,8 @@ public class StudentClassServiceImpl extends BaseService<StudentClass, Long> imp
public void addClassStudentList(List<ClassStudent> classStudentList, Long classId) { public void addClassStudentList(List<ClassStudent> classStudentList, Long classId) {
for (ClassStudent classStudent : classStudentList) { for (ClassStudent classStudent : classStudentList) {
classStudent.setClassId(classId); classStudent.setClassId(classId);
classStudentMapper.insert(classStudent);
} }
classStudentMapper.insertList(classStudentList);
} }
/** /**
@@ -277,7 +290,7 @@ public class StudentClassServiceImpl extends BaseService<StudentClass, Long> imp
ClassStudent filter = new ClassStudent(); ClassStudent filter = new ClassStudent();
filter.setClassId(classId); filter.setClassId(classId);
filter.setStudentId(studentId); filter.setStudentId(studentId);
return classStudentMapper.delete(filter) > 0; return classStudentMapper.delete(new QueryWrapper<>(filter)) > 0;
} }
/** /**
@@ -290,14 +303,39 @@ public class StudentClassServiceImpl extends BaseService<StudentClass, Long> imp
@Override @Override
public CallResult verifyRelatedData(StudentClass studentClass, StudentClass originalStudentClass) { public CallResult verifyRelatedData(StudentClass studentClass, StudentClass originalStudentClass) {
String errorMessageFormat = "数据验证失败,关联的%s并不存在请刷新后重试"; String errorMessageFormat = "数据验证失败,关联的%s并不存在请刷新后重试";
if (this.needToVerify(studentClass, originalStudentClass, StudentClass::getSchoolId)
&& !schoolInfoService.existId(studentClass.getSchoolId())) {
return CallResult.error(String.format(errorMessageFormat, "所属校区"));
}
if (this.needToVerify(studentClass, originalStudentClass, StudentClass::getLeaderId) if (this.needToVerify(studentClass, originalStudentClass, StudentClass::getLeaderId)
&& !studentService.existId(studentClass.getLeaderId())) { && !studentService.existId(studentClass.getLeaderId())) {
return CallResult.error(String.format(errorMessageFormat, "班长")); return CallResult.error(String.format(errorMessageFormat, "班长"));
} }
return CallResult.ok(); return CallResult.ok();
} }
/**
* 根据最新对象和原有对象的数据对比,判断关联的远程字典数据和多对一主表数据是否都是合法数据。
*
* @param studentClass 最新数据对象。
* @param originalStudentClass 原有数据对象。
* @return 数据全部正确返回true否则false同时返回具体的错误信息。
*/
@Override
public CallResult verifyRemoteRelatedData(StudentClass studentClass, StudentClass originalStudentClass) {
String errorMessageFormat = "数据验证失败,关联的%s并不存在请刷新后重试";
if (this.needToVerify(studentClass, originalStudentClass, StudentClass::getSchoolId)) {
ResponseResult<Boolean> responseResult =
sysDeptClient.existId(studentClass.getSchoolId());
if (this.hasErrorOfVerifyRemoteRelatedData(responseResult)) {
return CallResult.error(String.format(errorMessageFormat, "所属校区"));
}
}
return CallResult.ok();
}
private StudentClass buildDefaultValue(StudentClass studentClass) {
studentClass.setClassId(idGenerator.nextLongId());
TokenData tokenData = TokenData.takeFromRequest();
studentClass.setCreateUserId(tokenData.getUserId());
studentClass.setCreateTime(new Date());
studentClass.setStatus(GlobalDeletedFlag.NORMAL);
return studentClass;
}
} }

View File

@@ -1,11 +1,16 @@
package com.orange.demo.courseclassservice.service.impl; package com.orange.demo.courseclassservice.service.impl;
import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.orange.demo.application.common.constant.StudentStatus; import com.orange.demo.application.common.constant.StudentStatus;
import com.orange.demo.courseclassservice.service.*; import com.orange.demo.courseclassservice.service.*;
import com.orange.demo.courseclassservice.dao.*; import com.orange.demo.courseclassservice.dao.*;
import com.orange.demo.courseclassservice.model.*; import com.orange.demo.courseclassservice.model.*;
import com.orange.demo.upmsapi.client.*;
import com.orange.demo.common.core.util.*; import com.orange.demo.common.core.util.*;
import com.orange.demo.common.core.object.MyRelationParam; import com.orange.demo.common.core.object.MyRelationParam;
import com.orange.demo.common.core.object.ResponseResult;
import com.orange.demo.common.core.object.CallResult; import com.orange.demo.common.core.object.CallResult;
import com.orange.demo.common.core.base.dao.BaseDaoMapper; import com.orange.demo.common.core.base.dao.BaseDaoMapper;
import com.orange.demo.common.core.base.service.BaseService; import com.orange.demo.common.core.base.service.BaseService;
@@ -33,12 +38,12 @@ public class StudentServiceImpl extends BaseService<Student, Long> implements St
@Autowired @Autowired
private ClassStudentMapper classStudentMapper; private ClassStudentMapper classStudentMapper;
@Autowired @Autowired
private SchoolInfoService schoolInfoService;
@Autowired
private AreaCodeService areaCodeService; private AreaCodeService areaCodeService;
@Autowired @Autowired
private GradeService gradeService; private GradeService gradeService;
@Autowired @Autowired
private SysDeptClient sysDeptClient;
@Autowired
private IdGeneratorWrapper idGenerator; private IdGeneratorWrapper idGenerator;
/** /**
@@ -60,14 +65,24 @@ public class StudentServiceImpl extends BaseService<Student, Long> implements St
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
@Override @Override
public Student saveNew(Student student) { public Student saveNew(Student student) {
student.setStudentId(idGenerator.nextLongId()); studentMapper.insert(this.buildDefaultValue(student));
MyModelUtil.setDefaultValue(student, "totalCoin", 0);
MyModelUtil.setDefaultValue(student, "leftCoin", 0);
MyModelUtil.setDefaultValue(student, "status", StudentStatus.NORMAL);
studentMapper.insert(student);
return student; return student;
} }
/**
* 利用数据库的insertList语法批量插入对象列表。
*
* @param studentList 新增对象列表。
*/
@Transactional(rollbackFor = Exception.class)
@Override
public void saveNewBatch(List<Student> studentList) {
if (CollUtil.isNotEmpty(studentList)) {
studentList.forEach(this::buildDefaultValue);
studentMapper.insertList(studentList);
}
}
/** /**
* 更新数据对象。 * 更新数据对象。
* *
@@ -79,7 +94,8 @@ public class StudentServiceImpl extends BaseService<Student, Long> implements St
@Override @Override
public boolean update(Student student, Student originalStudent) { public boolean update(Student student, Student originalStudent) {
// 这里重点提示,在执行主表数据更新之前,如果有哪些字段不支持修改操作,请用原有数据对象字段替换当前数据字段。 // 这里重点提示,在执行主表数据更新之前,如果有哪些字段不支持修改操作,请用原有数据对象字段替换当前数据字段。
return studentMapper.updateByPrimaryKey(student) == 1; UpdateWrapper<Student> uw = this.createUpdateQueryForNullValue(student, student.getStudentId());
return studentMapper.update(student, uw) == 1;
} }
/** /**
@@ -91,14 +107,13 @@ public class StudentServiceImpl extends BaseService<Student, Long> implements St
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
@Override @Override
public boolean remove(Long studentId) { public boolean remove(Long studentId) {
// 这里先删除主数据 if (studentMapper.deleteById(studentId) == 0) {
if (!this.removeById(studentId)) {
return false; return false;
} }
// 开始删除与本地多对多父表的关联 // 开始删除与本地多对多父表的关联
ClassStudent classStudent = new ClassStudent(); ClassStudent classStudent = new ClassStudent();
classStudent.setStudentId(studentId); classStudent.setStudentId(studentId);
classStudentMapper.delete(classStudent); classStudentMapper.delete(new QueryWrapper<>(classStudent));
return true; return true;
} }
@@ -234,10 +249,34 @@ public class StudentServiceImpl extends BaseService<Student, Long> implements St
&& !gradeService.existId(student.getGradeId())) { && !gradeService.existId(student.getGradeId())) {
return CallResult.error(String.format(errorMessageFormat, "年级")); return CallResult.error(String.format(errorMessageFormat, "年级"));
} }
if (this.needToVerify(student, originalStudent, Student::getSchoolId) return CallResult.ok();
&& !schoolInfoService.existId(student.getSchoolId())) { }
/**
* 根据最新对象和原有对象的数据对比,判断关联的远程字典数据和多对一主表数据是否都是合法数据。
*
* @param student 最新数据对象。
* @param originalStudent 原有数据对象。
* @return 数据全部正确返回true否则false同时返回具体的错误信息。
*/
@Override
public CallResult verifyRemoteRelatedData(Student student, Student originalStudent) {
String errorMessageFormat = "数据验证失败,关联的%s并不存在请刷新后重试";
if (this.needToVerify(student, originalStudent, Student::getSchoolId)) {
ResponseResult<Boolean> responseResult =
sysDeptClient.existId(student.getSchoolId());
if (this.hasErrorOfVerifyRemoteRelatedData(responseResult)) {
return CallResult.error(String.format(errorMessageFormat, "所属校区")); return CallResult.error(String.format(errorMessageFormat, "所属校区"));
} }
}
return CallResult.ok(); return CallResult.ok();
} }
private Student buildDefaultValue(Student student) {
student.setStudentId(idGenerator.nextLongId());
MyModelUtil.setDefaultValue(student, "totalCoin", 0);
MyModelUtil.setDefaultValue(student, "leftCoin", 0);
MyModelUtil.setDefaultValue(student, "status", StudentStatus.NORMAL);
return student;
}
} }

View File

@@ -110,23 +110,21 @@
<orderEntry type="library" name="Maven: org.apache.xmlbeans:xmlbeans:2.6.0" level="project" /> <orderEntry type="library" name="Maven: org.apache.xmlbeans:xmlbeans:2.6.0" level="project" />
<orderEntry type="library" name="Maven: stax:stax-api:1.0.1" level="project" /> <orderEntry type="library" name="Maven: stax:stax-api:1.0.1" level="project" />
<orderEntry type="library" name="Maven: com.github.virtuald:curvesapi:1.04" level="project" /> <orderEntry type="library" name="Maven: com.github.virtuald:curvesapi:1.04" level="project" />
<orderEntry type="library" name="Maven: tk.mybatis:mapper-spring-boot-starter:2.1.5" level="project" /> <orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-boot-starter:3.4.2" level="project" />
<orderEntry type="library" name="Maven: com.baomidou:mybatis-plus:3.4.2" level="project" />
<orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-extension:3.4.2" level="project" />
<orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-core:3.4.2" level="project" />
<orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-annotation:3.4.2" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-autoconfigure:2.3.10.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-jdbc:2.3.10.RELEASE" level="project" /> <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-jdbc:2.3.10.RELEASE" level="project" />
<orderEntry type="library" name="Maven: com.zaxxer:HikariCP:3.4.5" level="project" /> <orderEntry type="library" name="Maven: com.zaxxer:HikariCP:3.4.5" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-jdbc:5.2.14.RELEASE" level="project" /> <orderEntry type="library" name="Maven: org.springframework:spring-jdbc:5.2.14.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-tx:5.2.14.RELEASE" level="project" /> <orderEntry type="library" name="Maven: org.springframework:spring-tx:5.2.14.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.3.0" level="project" /> <orderEntry type="library" name="Maven: com.github.pagehelper:pagehelper-spring-boot-starter:1.3.0" level="project" />
<orderEntry type="library" name="Maven: org.mybatis.spring.boot:mybatis-spring-boot-starter:2.1.3" level="project" /> <orderEntry type="library" name="Maven: org.mybatis.spring.boot:mybatis-spring-boot-starter:2.1.3" level="project" />
<orderEntry type="library" name="Maven: org.mybatis.spring.boot:mybatis-spring-boot-autoconfigure:2.1.3" level="project" /> <orderEntry type="library" name="Maven: org.mybatis.spring.boot:mybatis-spring-boot-autoconfigure:2.1.3" level="project" />
<orderEntry type="library" name="Maven: org.mybatis:mybatis:3.5.5" level="project" />
<orderEntry type="library" name="Maven: org.mybatis:mybatis-spring:2.0.5" level="project" />
<orderEntry type="library" name="Maven: com.github.pagehelper:pagehelper-spring-boot-autoconfigure:1.3.0" level="project" /> <orderEntry type="library" name="Maven: com.github.pagehelper:pagehelper-spring-boot-autoconfigure:1.3.0" level="project" />
<orderEntry type="library" name="Maven: com.github.pagehelper:pagehelper:5.2.0" level="project" /> <orderEntry type="library" name="Maven: com.github.pagehelper:pagehelper:5.2.0" level="project" />
<orderEntry type="library" name="Maven: com.github.jsqlparser:jsqlparser:3.2" level="project" /> <orderEntry type="library" name="Maven: com.github.jsqlparser:jsqlparser:3.2" level="project" />
@@ -180,7 +178,6 @@
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-freemarker:2.3.10.RELEASE" level="project" /> <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-freemarker:2.3.10.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter:2.3.10.RELEASE" level="project" /> <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter:2.3.10.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot:2.3.10.RELEASE" level="project" /> <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot:2.3.10.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-autoconfigure:2.3.10.RELEASE" level="project" />
<orderEntry type="library" name="Maven: jakarta.annotation:jakarta.annotation-api:1.3.5" level="project" /> <orderEntry type="library" name="Maven: jakarta.annotation:jakarta.annotation-api:1.3.5" level="project" />
<orderEntry type="library" name="Maven: org.freemarker:freemarker:2.3.31" level="project" /> <orderEntry type="library" name="Maven: org.freemarker:freemarker:2.3.31" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-context-support:5.2.14.RELEASE" level="project" /> <orderEntry type="library" name="Maven: org.springframework:spring-context-support:5.2.14.RELEASE" level="project" />

View File

@@ -26,6 +26,11 @@
<artifactId>common-core</artifactId> <artifactId>common-core</artifactId>
<version>1.0.0</version> <version>1.0.0</version>
</dependency> </dependency>
<dependency>
<groupId>com.orange.demo</groupId>
<artifactId>common-datafilter</artifactId>
<version>1.0.0</version>
</dependency>
<!-- knife4j 接口文档框架 --> <!-- knife4j 接口文档框架 -->
<dependency> <dependency>
<groupId>com.orange.demo</groupId> <groupId>com.orange.demo</groupId>

View File

@@ -8,12 +8,12 @@ import java.util.Date;
import java.util.Map; import java.util.Map;
/** /**
* CourseTransStatsVO对象。 * CourseTransStatsVO视图对象。
* *
* @author Jerry * @author Jerry
* @date 2020-08-08 * @date 2020-08-08
*/ */
@ApiModel("CourseTransStatsVO实体对象") @ApiModel("CourseTransStatsVO视图对象")
@Data @Data
public class CourseTransStatsVo { public class CourseTransStatsVo {

View File

@@ -8,12 +8,12 @@ import java.util.Date;
import java.util.Map; import java.util.Map;
/** /**
* StudentActionStatsVO对象。 * StudentActionStatsVO视图对象。
* *
* @author Jerry * @author Jerry
* @date 2020-08-08 * @date 2020-08-08
*/ */
@ApiModel("StudentActionStatsVO实体对象") @ApiModel("StudentActionStatsVO视图对象")
@Data @Data
public class StudentActionStatsVo { public class StudentActionStatsVo {

View File

@@ -8,12 +8,12 @@ import java.util.Date;
import java.util.Map; import java.util.Map;
/** /**
* StudentActionTransVO对象。 * StudentActionTransVO视图对象。
* *
* @author Jerry * @author Jerry
* @date 2020-08-08 * @date 2020-08-08
*/ */
@ApiModel("StudentActionTransVO实体对象") @ApiModel("StudentActionTransVO视图对象")
@Data @Data
public class StudentActionTransVo { public class StudentActionTransVo {

View File

@@ -65,26 +65,40 @@
<orderEntry type="library" name="Maven: com.alibaba:druid-spring-boot-starter:1.2.6" level="project" /> <orderEntry type="library" name="Maven: com.alibaba:druid-spring-boot-starter:1.2.6" level="project" />
<orderEntry type="library" name="Maven: com.alibaba:druid:1.2.6" level="project" /> <orderEntry type="library" name="Maven: com.alibaba:druid:1.2.6" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-autoconfigure:2.3.10.RELEASE" level="project" /> <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-autoconfigure:2.3.10.RELEASE" level="project" />
<orderEntry type="library" name="Maven: tk.mybatis:mapper-spring-boot-starter:2.1.5" level="project" /> <orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-boot-starter:3.4.2" level="project" />
<orderEntry type="library" name="Maven: com.baomidou:mybatis-plus:3.4.2" level="project" />
<orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-extension:3.4.2" level="project" />
<orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-core:3.4.2" level="project" />
<orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-annotation:3.4.2" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-jdbc:2.3.10.RELEASE" level="project" /> <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-jdbc:2.3.10.RELEASE" level="project" />
<orderEntry type="library" name="Maven: com.zaxxer:HikariCP:3.4.5" level="project" /> <orderEntry type="library" name="Maven: com.zaxxer:HikariCP:3.4.5" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-jdbc:5.2.14.RELEASE" level="project" /> <orderEntry type="library" name="Maven: org.springframework:spring-jdbc:5.2.14.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-tx:5.2.14.RELEASE" level="project" /> <orderEntry type="library" name="Maven: org.springframework:spring-tx:5.2.14.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.3.0" level="project" /> <orderEntry type="library" name="Maven: com.github.pagehelper:pagehelper-spring-boot-starter:1.3.0" level="project" />
<orderEntry type="library" name="Maven: org.mybatis.spring.boot:mybatis-spring-boot-starter:2.1.3" level="project" /> <orderEntry type="library" name="Maven: org.mybatis.spring.boot:mybatis-spring-boot-starter:2.1.3" level="project" />
<orderEntry type="library" name="Maven: org.mybatis.spring.boot:mybatis-spring-boot-autoconfigure:2.1.3" level="project" /> <orderEntry type="library" name="Maven: org.mybatis.spring.boot:mybatis-spring-boot-autoconfigure:2.1.3" level="project" />
<orderEntry type="library" name="Maven: org.mybatis:mybatis:3.5.5" level="project" />
<orderEntry type="library" name="Maven: org.mybatis:mybatis-spring:2.0.5" level="project" />
<orderEntry type="library" name="Maven: com.github.pagehelper:pagehelper-spring-boot-autoconfigure:1.3.0" level="project" /> <orderEntry type="library" name="Maven: com.github.pagehelper:pagehelper-spring-boot-autoconfigure:1.3.0" level="project" />
<orderEntry type="library" name="Maven: com.github.pagehelper:pagehelper:5.2.0" level="project" /> <orderEntry type="library" name="Maven: com.github.pagehelper:pagehelper:5.2.0" level="project" />
<orderEntry type="library" name="Maven: com.github.jsqlparser:jsqlparser:3.2" level="project" /> <orderEntry type="library" name="Maven: com.github.jsqlparser:jsqlparser:3.2" level="project" />
<orderEntry type="module" module-name="common-datafilter" />
<orderEntry type="module" module-name="common-redis" />
<orderEntry type="library" name="Maven: org.redisson:redisson:3.15.4" level="project" />
<orderEntry type="library" name="Maven: io.netty:netty-common:4.1.63.Final" level="project" />
<orderEntry type="library" name="Maven: io.netty:netty-codec:4.1.63.Final" level="project" />
<orderEntry type="library" name="Maven: io.netty:netty-buffer:4.1.63.Final" level="project" />
<orderEntry type="library" name="Maven: io.netty:netty-transport:4.1.63.Final" level="project" />
<orderEntry type="library" name="Maven: io.netty:netty-resolver-dns:4.1.63.Final" level="project" />
<orderEntry type="library" name="Maven: io.netty:netty-codec-dns:4.1.63.Final" level="project" />
<orderEntry type="library" name="Maven: javax.cache:cache-api:1.1.1" level="project" />
<orderEntry type="library" name="Maven: io.projectreactor:reactor-core:3.3.16.RELEASE" level="project" />
<orderEntry type="library" name="Maven: io.reactivex.rxjava3:rxjava:3.0.12" level="project" />
<orderEntry type="library" name="Maven: org.jboss.marshalling:jboss-marshalling-river:2.0.11.Final" level="project" />
<orderEntry type="library" name="Maven: org.jboss.marshalling:jboss-marshalling:2.0.11.Final" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.11.4" level="project" />
<orderEntry type="library" name="Maven: org.jodd:jodd-bean:5.1.6" level="project" />
<orderEntry type="library" name="Maven: org.jodd:jodd-core:5.1.6" level="project" />
<orderEntry type="module" module-name="common-swagger" /> <orderEntry type="module" module-name="common-swagger" />
<orderEntry type="library" name="Maven: com.github.xiaoymin:knife4j-micro-spring-boot-starter:2.0.8" level="project" /> <orderEntry type="library" name="Maven: com.github.xiaoymin:knife4j-micro-spring-boot-starter:2.0.8" level="project" />
<orderEntry type="library" name="Maven: com.github.xiaoymin:knife4j-spring-boot-autoconfigure:2.0.8" level="project" /> <orderEntry type="library" name="Maven: com.github.xiaoymin:knife4j-spring-boot-autoconfigure:2.0.8" level="project" />
@@ -151,11 +165,7 @@
<orderEntry type="library" name="Maven: com.alibaba.csp:sentinel-cluster-server-default:1.8.0" level="project" /> <orderEntry type="library" name="Maven: com.alibaba.csp:sentinel-cluster-server-default:1.8.0" level="project" />
<orderEntry type="library" name="Maven: com.alibaba.csp:sentinel-cluster-common-default:1.8.0" level="project" /> <orderEntry type="library" name="Maven: com.alibaba.csp:sentinel-cluster-common-default:1.8.0" level="project" />
<orderEntry type="library" name="Maven: io.netty:netty-handler:4.1.63.Final" level="project" /> <orderEntry type="library" name="Maven: io.netty:netty-handler:4.1.63.Final" level="project" />
<orderEntry type="library" name="Maven: io.netty:netty-common:4.1.63.Final" level="project" />
<orderEntry type="library" name="Maven: io.netty:netty-resolver:4.1.63.Final" level="project" /> <orderEntry type="library" name="Maven: io.netty:netty-resolver:4.1.63.Final" level="project" />
<orderEntry type="library" name="Maven: io.netty:netty-buffer:4.1.63.Final" level="project" />
<orderEntry type="library" name="Maven: io.netty:netty-transport:4.1.63.Final" level="project" />
<orderEntry type="library" name="Maven: io.netty:netty-codec:4.1.63.Final" level="project" />
<orderEntry type="library" name="Maven: com.alibaba.csp:sentinel-cluster-client-default:1.8.0" level="project" /> <orderEntry type="library" name="Maven: com.alibaba.csp:sentinel-cluster-client-default:1.8.0" level="project" />
<orderEntry type="library" name="Maven: com.alibaba.cloud:spring-cloud-alibaba-sentinel-datasource:2.2.5.RELEASE" level="project" /> <orderEntry type="library" name="Maven: com.alibaba.cloud:spring-cloud-alibaba-sentinel-datasource:2.2.5.RELEASE" level="project" />
<orderEntry type="library" name="Maven: com.alibaba.csp:sentinel-datasource-nacos:1.8.0" level="project" /> <orderEntry type="library" name="Maven: com.alibaba.csp:sentinel-datasource-nacos:1.8.0" level="project" />
@@ -218,7 +228,7 @@
<orderEntry type="library" name="Maven: com.netflix.hystrix:hystrix-javanica: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" 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" 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.reactivestreams:reactive-streams:1.0.3" level="project" />
<orderEntry type="library" name="Maven: org.hibernate.validator:hibernate-validator:6.2.0.Final" level="project" /> <orderEntry type="library" name="Maven: org.hibernate.validator:hibernate-validator:6.2.0.Final" level="project" />
<orderEntry type="library" name="Maven: jakarta.validation:jakarta.validation-api:2.0.2" level="project" /> <orderEntry type="library" name="Maven: jakarta.validation:jakarta.validation-api:2.0.2" level="project" />
<orderEntry type="library" name="Maven: org.jboss.logging:jboss-logging:3.4.1.Final" level="project" /> <orderEntry type="library" name="Maven: org.jboss.logging:jboss-logging:3.4.1.Final" level="project" />

View File

@@ -25,6 +25,11 @@
<artifactId>course-class-api</artifactId> <artifactId>course-class-api</artifactId>
<version>1.0.0</version> <version>1.0.0</version>
</dependency> </dependency>
<dependency>
<groupId>com.orange.demo</groupId>
<artifactId>upms-api</artifactId>
<version>1.0.0</version>
</dependency>
<dependency> <dependency>
<groupId>com.orange.demo</groupId> <groupId>com.orange.demo</groupId>
<artifactId>common-log</artifactId> <artifactId>common-log</artifactId>

View File

@@ -6,7 +6,7 @@ import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary; import org.springframework.context.annotation.Primary;
import org.springframework.transaction.annotation.EnableTransactionManagement; import org.springframework.transaction.annotation.EnableTransactionManagement;
import tk.mybatis.spring.annotation.MapperScan; import org.mybatis.spring.annotation.MapperScan;
import javax.sql.DataSource; import javax.sql.DataSource;

View File

@@ -104,8 +104,7 @@ public class CourseTransStatsController extends BaseController<CourseTransStats,
if (MyCommonUtil.existBlankArgument(statsId)) { if (MyCommonUtil.existBlankArgument(statsId)) {
return ResponseResult.error(ErrorCodeEnum.ARGUMENT_NULL_EXIST); return ResponseResult.error(ErrorCodeEnum.ARGUMENT_NULL_EXIST);
} }
CourseTransStats courseTransStats = CourseTransStats courseTransStats = courseTransStatsService.getByIdWithRelation(statsId, MyRelationParam.full());
courseTransStatsService.getByIdWithRelation(statsId, MyRelationParam.full());
if (courseTransStats == null) { if (courseTransStats == null) {
return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST); return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST);
} }

View File

@@ -104,8 +104,7 @@ public class StudentActionStatsController extends BaseController<StudentActionSt
if (MyCommonUtil.existBlankArgument(statsId)) { if (MyCommonUtil.existBlankArgument(statsId)) {
return ResponseResult.error(ErrorCodeEnum.ARGUMENT_NULL_EXIST); return ResponseResult.error(ErrorCodeEnum.ARGUMENT_NULL_EXIST);
} }
StudentActionStats studentActionStats = StudentActionStats studentActionStats = studentActionStatsService.getByIdWithRelation(statsId, MyRelationParam.full());
studentActionStatsService.getByIdWithRelation(statsId, MyRelationParam.full());
if (studentActionStats == null) { if (studentActionStats == null) {
return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST); return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST);
} }

View File

@@ -1,5 +1,7 @@
package com.orange.demo.statsservice.controller; package com.orange.demo.statsservice.controller;
import com.orange.demo.common.log.annotation.OperationLog;
import com.orange.demo.common.log.model.constant.SysOperationLogType;
import com.github.pagehelper.page.PageMethod; import com.github.pagehelper.page.PageMethod;
import com.orange.demo.statsservice.model.*; import com.orange.demo.statsservice.model.*;
import com.orange.demo.statsservice.service.*; import com.orange.demo.statsservice.service.*;
@@ -11,14 +13,12 @@ import com.orange.demo.common.core.constant.*;
import com.orange.demo.common.core.base.controller.BaseController; import com.orange.demo.common.core.base.controller.BaseController;
import com.orange.demo.common.core.base.service.IBaseService; import com.orange.demo.common.core.base.service.IBaseService;
import com.orange.demo.common.core.annotation.MyRequestBody; import com.orange.demo.common.core.annotation.MyRequestBody;
import com.orange.demo.common.core.validator.UpdateGroup;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import io.swagger.annotations.*; import io.swagger.annotations.*;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.validation.groups.Default;
import java.util.*; import java.util.*;
/** /**
@@ -51,9 +51,10 @@ public class StudentActionTransController extends BaseController<StudentActionTr
"studentActionTransDto.transId", "studentActionTransDto.transId",
"studentActionTransDto.createTimeStart", "studentActionTransDto.createTimeStart",
"studentActionTransDto.createTimeEnd"}) "studentActionTransDto.createTimeEnd"})
@OperationLog(type = SysOperationLogType.ADD)
@PostMapping("/add") @PostMapping("/add")
public ResponseResult<Long> add(@MyRequestBody StudentActionTransDto studentActionTransDto) { public ResponseResult<Long> add(@MyRequestBody StudentActionTransDto studentActionTransDto) {
String errorMessage = MyCommonUtil.getModelValidationError(studentActionTransDto); String errorMessage = MyCommonUtil.getModelValidationError(studentActionTransDto, false);
if (errorMessage != null) { if (errorMessage != null) {
return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage); return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage);
} }
@@ -77,9 +78,10 @@ public class StudentActionTransController extends BaseController<StudentActionTr
@ApiOperationSupport(ignoreParameters = { @ApiOperationSupport(ignoreParameters = {
"StudentActionTransDto.createTimeStart", "StudentActionTransDto.createTimeStart",
"StudentActionTransDto.createTimeEnd"}) "StudentActionTransDto.createTimeEnd"})
@OperationLog(type = SysOperationLogType.UPDATE)
@PostMapping("/update") @PostMapping("/update")
public ResponseResult<Void> update(@MyRequestBody StudentActionTransDto studentActionTransDto) { public ResponseResult<Void> update(@MyRequestBody StudentActionTransDto studentActionTransDto) {
String errorMessage = MyCommonUtil.getModelValidationError(studentActionTransDto, Default.class, UpdateGroup.class); String errorMessage = MyCommonUtil.getModelValidationError(studentActionTransDto, true);
if (errorMessage != null) { if (errorMessage != null) {
return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage); return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage);
} }
@@ -108,6 +110,7 @@ public class StudentActionTransController extends BaseController<StudentActionTr
* @param transId 删除对象主键Id。 * @param transId 删除对象主键Id。
* @return 应答结果对象。 * @return 应答结果对象。
*/ */
@OperationLog(type = SysOperationLogType.DELETE)
@PostMapping("/delete") @PostMapping("/delete")
public ResponseResult<Void> delete(@MyRequestBody Long transId) { public ResponseResult<Void> delete(@MyRequestBody Long transId) {
String errorMessage; String errorMessage;
@@ -162,8 +165,7 @@ public class StudentActionTransController extends BaseController<StudentActionTr
if (MyCommonUtil.existBlankArgument(transId)) { if (MyCommonUtil.existBlankArgument(transId)) {
return ResponseResult.error(ErrorCodeEnum.ARGUMENT_NULL_EXIST); return ResponseResult.error(ErrorCodeEnum.ARGUMENT_NULL_EXIST);
} }
StudentActionTrans studentActionTrans = StudentActionTrans studentActionTrans = studentActionTransService.getByIdWithRelation(transId, MyRelationParam.full());
studentActionTransService.getByIdWithRelation(transId, MyRelationParam.full());
if (studentActionTrans == null) { if (studentActionTrans == null) {
return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST); return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST);
} }

View File

@@ -14,6 +14,13 @@ import java.util.*;
*/ */
public interface CourseTransStatsMapper extends BaseDaoMapper<CourseTransStats> { public interface CourseTransStatsMapper extends BaseDaoMapper<CourseTransStats> {
/**
* 批量插入对象列表。
*
* @param courseTransStatsList 新增对象列表。
*/
void insertList(List<CourseTransStats> courseTransStatsList);
/** /**
* 获取分组计算后的数据对象列表。 * 获取分组计算后的数据对象列表。
* *

View File

@@ -3,6 +3,8 @@ package com.orange.demo.statsservice.dao;
import com.orange.demo.common.core.base.dao.BaseDaoMapper; import com.orange.demo.common.core.base.dao.BaseDaoMapper;
import com.orange.demo.statsservice.model.Grade; import com.orange.demo.statsservice.model.Grade;
import java.util.*;
/** /**
* 数据操作访问接口。 * 数据操作访问接口。
* *
@@ -10,4 +12,11 @@ import com.orange.demo.statsservice.model.Grade;
* @date 2020-08-08 * @date 2020-08-08
*/ */
public interface GradeMapper extends BaseDaoMapper<Grade> { public interface GradeMapper extends BaseDaoMapper<Grade> {
/**
* 批量插入对象列表。
*
* @param gradeList 新增对象列表。
*/
void insertList(List<Grade> gradeList);
} }

View File

@@ -1,13 +0,0 @@
package com.orange.demo.statsservice.dao;
import com.orange.demo.common.core.base.dao.BaseDaoMapper;
import com.orange.demo.statsservice.model.SchoolInfo;
/**
* 数据操作访问接口。
*
* @author Jerry
* @date 2020-08-08
*/
public interface SchoolInfoMapper extends BaseDaoMapper<SchoolInfo> {
}

View File

@@ -14,6 +14,13 @@ import java.util.*;
*/ */
public interface StudentActionStatsMapper extends BaseDaoMapper<StudentActionStats> { public interface StudentActionStatsMapper extends BaseDaoMapper<StudentActionStats> {
/**
* 批量插入对象列表。
*
* @param studentActionStatsList 新增对象列表。
*/
void insertList(List<StudentActionStats> studentActionStatsList);
/** /**
* 获取分组计算后的数据对象列表。 * 获取分组计算后的数据对象列表。
* *

View File

@@ -14,6 +14,13 @@ import java.util.*;
*/ */
public interface StudentActionTransMapper extends BaseDaoMapper<StudentActionTrans> { public interface StudentActionTransMapper extends BaseDaoMapper<StudentActionTrans> {
/**
* 批量插入对象列表。
*
* @param studentActionTransList 新增对象列表。
*/
void insertList(List<StudentActionTrans> studentActionTransList);
/** /**
* 获取过滤后的对象列表。 * 获取过滤后的对象列表。
* *

View File

@@ -14,6 +14,33 @@
<result column="student_flower_count" jdbcType="INTEGER" property="studentFlowerCount"/> <result column="student_flower_count" jdbcType="INTEGER" property="studentFlowerCount"/>
</resultMap> </resultMap>
<insert id="insertList">
INSERT INTO zz_course_trans_stats
(stats_id,
stats_date,
subject_id,
grade_id,
grade_name,
course_id,
course_name,
student_attend_count,
student_flower_amount,
student_flower_count)
VALUES
<foreach collection="list" index="index" item="item" separator="," >
(#{item.statsId},
#{item.statsDate},
#{item.subjectId},
#{item.gradeId},
#{item.gradeName},
#{item.courseId},
#{item.courseName},
#{item.studentAttendCount},
#{item.studentFlowerAmount},
#{item.studentFlowerCount})
</foreach>
</insert>
<!-- 如果有逻辑删除字段过滤,请写到这里 --> <!-- 如果有逻辑删除字段过滤,请写到这里 -->
<sql id="filterRef"> <sql id="filterRef">
<!-- 这里必须加上全包名否则当filterRef被其他Mapper.xml包含引用的时候就会调用Mapper.xml中的该SQL片段 --> <!-- 这里必须加上全包名否则当filterRef被其他Mapper.xml包含引用的时候就会调用Mapper.xml中的该SQL片段 -->

View File

@@ -6,4 +6,17 @@
<result column="grade_name" jdbcType="VARCHAR" property="gradeName"/> <result column="grade_name" jdbcType="VARCHAR" property="gradeName"/>
<result column="status" jdbcType="INTEGER" property="status"/> <result column="status" jdbcType="INTEGER" property="status"/>
</resultMap> </resultMap>
<insert id="insertList">
INSERT INTO zz_grade
(grade_id,
grade_name,
status)
VALUES
<foreach collection="list" index="index" item="item" separator="," >
(#{item.gradeId},
#{item.gradeName},
#{item.status})
</foreach>
</insert>
</mapper> </mapper>

View File

@@ -1,10 +0,0 @@
<?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="com.orange.demo.statsservice.dao.SchoolInfoMapper">
<resultMap id="BaseResultMap" type="com.orange.demo.statsservice.model.SchoolInfo">
<id column="school_id" jdbcType="BIGINT" property="schoolId"/>
<result column="school_name" jdbcType="VARCHAR" property="schoolName"/>
<result column="province_id" jdbcType="BIGINT" property="provinceId"/>
<result column="city_id" jdbcType="BIGINT" property="cityId"/>
</resultMap>
</mapper>

View File

@@ -25,6 +25,55 @@
<result column="do_exercise_correct_count" jdbcType="INTEGER" property="doExerciseCorrectCount"/> <result column="do_exercise_correct_count" jdbcType="INTEGER" property="doExerciseCorrectCount"/>
</resultMap> </resultMap>
<insert id="insertList">
INSERT INTO zz_student_action_stats
(stats_id,
stats_date,
stats_month,
grade_id,
province_id,
city_id,
buy_course_amount,
buy_course_count,
buy_video_amount,
buy_video_count,
buy_paper_amount,
buy_paper_count,
buy_flower_amount,
buy_flower_count,
recharge_coin_amount,
recharge_coin_count,
do_course_count,
watch_video_count,
watch_video_total_second,
do_exercise_count,
do_exercise_correct_count)
VALUES
<foreach collection="list" index="index" item="item" separator="," >
(#{item.statsId},
#{item.statsDate},
#{item.statsMonth},
#{item.gradeId},
#{item.provinceId},
#{item.cityId},
#{item.buyCourseAmount},
#{item.buyCourseCount},
#{item.buyVideoAmount},
#{item.buyVideoCount},
#{item.buyPaperAmount},
#{item.buyPaperCount},
#{item.buyFlowerAmount},
#{item.buyFlowerCount},
#{item.rechargeCoinAmount},
#{item.rechargeCoinCount},
#{item.doCourseCount},
#{item.watchVideoCount},
#{item.watchVideoTotalSecond},
#{item.doExerciseCount},
#{item.doExerciseCorrectCount})
</foreach>
</insert>
<!-- 如果有逻辑删除字段过滤,请写到这里 --> <!-- 如果有逻辑删除字段过滤,请写到这里 -->
<sql id="filterRef"> <sql id="filterRef">
<!-- 这里必须加上全包名否则当filterRef被其他Mapper.xml包含引用的时候就会调用Mapper.xml中的该SQL片段 --> <!-- 这里必须加上全包名否则当filterRef被其他Mapper.xml包含引用的时候就会调用Mapper.xml中的该SQL片段 -->

View File

@@ -19,6 +19,43 @@
<result column="create_time" jdbcType="TIMESTAMP" property="createTime"/> <result column="create_time" jdbcType="TIMESTAMP" property="createTime"/>
</resultMap> </resultMap>
<insert id="insertList">
INSERT INTO zz_student_action_trans
(trans_id,
student_id,
student_name,
school_id,
grade_id,
action_type,
device_type,
watch_video_seconds,
flower_count,
paper_count,
video_count,
course_count,
coin_count,
exercise_correct_flag,
create_time)
VALUES
<foreach collection="list" index="index" item="item" separator="," >
(#{item.transId},
#{item.studentId},
#{item.studentName},
#{item.schoolId},
#{item.gradeId},
#{item.actionType},
#{item.deviceType},
#{item.watchVideoSeconds},
#{item.flowerCount},
#{item.paperCount},
#{item.videoCount},
#{item.courseCount},
#{item.coinCount},
#{item.exerciseCorrectFlag},
#{item.createTime})
</foreach>
</insert>
<!-- 如果有逻辑删除字段过滤,请写到这里 --> <!-- 如果有逻辑删除字段过滤,请写到这里 -->
<sql id="filterRef"> <sql id="filterRef">
<!-- 这里必须加上全包名否则当filterRef被其他Mapper.xml包含引用的时候就会调用Mapper.xml中的该SQL片段 --> <!-- 这里必须加上全包名否则当filterRef被其他Mapper.xml包含引用的时候就会调用Mapper.xml中的该SQL片段 -->

View File

@@ -1,5 +1,6 @@
package com.orange.demo.statsservice.model; package com.orange.demo.statsservice.model;
import com.baomidou.mybatisplus.annotation.*;
import com.orange.demo.statsapi.vo.CourseTransStatsVo; import com.orange.demo.statsapi.vo.CourseTransStatsVo;
import com.orange.demo.courseclassapi.vo.CourseVo; import com.orange.demo.courseclassapi.vo.CourseVo;
import com.orange.demo.courseclassapi.client.CourseClient; import com.orange.demo.courseclassapi.client.CourseClient;
@@ -12,7 +13,6 @@ import com.orange.demo.common.core.base.mapper.BaseModelMapper;
import lombok.Data; import lombok.Data;
import org.mapstruct.*; import org.mapstruct.*;
import org.mapstruct.factory.Mappers; import org.mapstruct.factory.Mappers;
import javax.persistence.*;
import java.util.Date; import java.util.Date;
import java.util.Map; import java.util.Map;
@@ -24,81 +24,79 @@ import java.util.Map;
* @date 2020-08-08 * @date 2020-08-08
*/ */
@Data @Data
@Table(name = "zz_course_trans_stats") @TableName(value = "zz_course_trans_stats")
public class CourseTransStats { public class CourseTransStats {
/** /**
* 主键Id。 * 主键Id。
*/ */
@Id @TableId(value = "stats_id", type = IdType.AUTO)
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "stats_id")
private Long statsId; private Long statsId;
/** /**
* 统计日期。 * 统计日期。
*/ */
@Column(name = "stats_date") @TableField(value = "stats_date")
private Date statsDate; private Date statsDate;
/** /**
* 科目Id。 * 科目Id。
*/ */
@Column(name = "subject_id") @TableField(value = "subject_id")
private Integer subjectId; private Integer subjectId;
/** /**
* 年级Id。 * 年级Id。
*/ */
@Column(name = "grade_id") @TableField(value = "grade_id")
private Integer gradeId; private Integer gradeId;
/** /**
* 年级名称。 * 年级名称。
*/ */
@Column(name = "grade_name") @TableField(value = "grade_name")
private String gradeName; private String gradeName;
/** /**
* 课程Id。 * 课程Id。
*/ */
@Column(name = "course_id") @TableField(value = "course_id")
private Long courseId; private Long courseId;
/** /**
* 课程名称。 * 课程名称。
*/ */
@Column(name = "course_name") @TableField(value = "course_name")
private String courseName; private String courseName;
/** /**
* 学生上课次数。 * 学生上课次数。
*/ */
@Column(name = "student_attend_count") @TableField(value = "student_attend_count")
private Integer studentAttendCount; private Integer studentAttendCount;
/** /**
* 学生献花数量。 * 学生献花数量。
*/ */
@Column(name = "student_flower_amount") @TableField(value = "student_flower_amount")
private Integer studentFlowerAmount; private Integer studentFlowerAmount;
/** /**
* 学生献花次数。 * 学生献花次数。
*/ */
@Column(name = "student_flower_count") @TableField(value = "student_flower_count")
private Integer studentFlowerCount; private Integer studentFlowerCount;
/** /**
* statsDate 范围过滤起始值(>=)。 * statsDate 范围过滤起始值(>=)。
*/ */
@Transient @TableField(exist = false)
private String statsDateStart; private String statsDateStart;
/** /**
* statsDate 范围过滤结束值(<=)。 * statsDate 范围过滤结束值(<=)。
*/ */
@Transient @TableField(exist = false)
private String statsDateEnd; private String statsDateEnd;
@RelationDict( @RelationDict(
@@ -107,7 +105,7 @@ public class CourseTransStats {
slaveModelClass = GradeVo.class, slaveModelClass = GradeVo.class,
slaveIdField = "gradeId", slaveIdField = "gradeId",
slaveNameField = "gradeName") slaveNameField = "gradeName")
@Transient @TableField(exist = false)
private Map<String, Object> gradeIdDictMap; private Map<String, Object> gradeIdDictMap;
@RelationDict( @RelationDict(
@@ -116,13 +114,13 @@ public class CourseTransStats {
slaveModelClass = CourseVo.class, slaveModelClass = CourseVo.class,
slaveIdField = "courseId", slaveIdField = "courseId",
slaveNameField = "courseName") slaveNameField = "courseName")
@Transient @TableField(exist = false)
private Map<String, Object> courseIdDictMap; private Map<String, Object> courseIdDictMap;
@RelationConstDict( @RelationConstDict(
masterIdField = "subjectId", masterIdField = "subjectId",
constantDictClass = Subject.class) constantDictClass = Subject.class)
@Transient @TableField(exist = false)
private Map<String, Object> subjectIdDictMap; private Map<String, Object> subjectIdDictMap;
@Mapper @Mapper

View File

@@ -1,8 +1,7 @@
package com.orange.demo.statsservice.model; package com.orange.demo.statsservice.model;
import com.orange.demo.common.core.annotation.DeletedFlagColumn; import com.baomidou.mybatisplus.annotation.*;
import lombok.Data; import lombok.Data;
import javax.persistence.*;
/** /**
* Grade实体对象。 * Grade实体对象。
@@ -11,26 +10,24 @@ import javax.persistence.*;
* @date 2020-08-08 * @date 2020-08-08
*/ */
@Data @Data
@Table(name = "zz_grade") @TableName(value = "zz_grade")
public class Grade { public class Grade {
/** /**
* 主键Id。 * 主键Id。
*/ */
@Id @TableId(value = "grade_id", type = IdType.AUTO)
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "grade_id")
private Integer gradeId; private Integer gradeId;
/** /**
* 年级名称。 * 年级名称。
*/ */
@Column(name = "grade_name") @TableField(value = "grade_name")
private String gradeName; private String gradeName;
/** /**
* 逻辑删除标记字段(1: 正常 -1: 已删除)。 * 逻辑删除标记字段(1: 正常 -1: 已删除)。
*/ */
@DeletedFlagColumn @TableLogic
private Integer status; private Integer status;
} }

View File

@@ -1,40 +0,0 @@
package com.orange.demo.statsservice.model;
import lombok.Data;
import javax.persistence.*;
/**
* SchoolInfo实体对象。
*
* @author Jerry
* @date 2020-08-08
*/
@Data
@Table(name = "zz_school_info")
public class SchoolInfo {
/**
* 学校Id。
*/
@Id
@Column(name = "school_id")
private Long schoolId;
/**
* 学校名称。
*/
@Column(name = "school_name")
private String schoolName;
/**
* 所在省Id。
*/
@Column(name = "province_id")
private Long provinceId;
/**
* 所在城市Id。
*/
@Column(name = "city_id")
private Long cityId;
}

View File

@@ -1,5 +1,6 @@
package com.orange.demo.statsservice.model; package com.orange.demo.statsservice.model;
import com.baomidou.mybatisplus.annotation.*;
import com.orange.demo.statsapi.vo.StudentActionStatsVo; import com.orange.demo.statsapi.vo.StudentActionStatsVo;
import com.orange.demo.courseclassapi.vo.AreaCodeVo; import com.orange.demo.courseclassapi.vo.AreaCodeVo;
import com.orange.demo.courseclassapi.vo.GradeVo; import com.orange.demo.courseclassapi.vo.GradeVo;
@@ -10,7 +11,6 @@ import com.orange.demo.common.core.base.mapper.BaseModelMapper;
import lombok.Data; import lombok.Data;
import org.mapstruct.*; import org.mapstruct.*;
import org.mapstruct.factory.Mappers; import org.mapstruct.factory.Mappers;
import javax.persistence.*;
import java.util.Date; import java.util.Date;
import java.util.Map; import java.util.Map;
@@ -22,146 +22,145 @@ import java.util.Map;
* @date 2020-08-08 * @date 2020-08-08
*/ */
@Data @Data
@Table(name = "zz_student_action_stats") @TableName(value = "zz_student_action_stats")
public class StudentActionStats { public class StudentActionStats {
/** /**
* 主键Id。 * 主键Id。
*/ */
@Id @TableId(value = "stats_id")
@Column(name = "stats_id")
private Long statsId; private Long statsId;
/** /**
* 统计日期。 * 统计日期。
*/ */
@Column(name = "stats_date") @TableField(value = "stats_date")
private Date statsDate; private Date statsDate;
/** /**
* 统计小时。 * 统计小时。
*/ */
@Column(name = "stats_month") @TableField(value = "stats_month")
private Date statsMonth; private Date statsMonth;
/** /**
* 年级Id。 * 年级Id。
*/ */
@Column(name = "grade_id") @TableField(value = "grade_id")
private Integer gradeId; private Integer gradeId;
/** /**
* 学生所在省Id。 * 学生所在省Id。
*/ */
@Column(name = "province_id") @TableField(value = "province_id")
private Long provinceId; private Long provinceId;
/** /**
* 学生所在城市Id。 * 学生所在城市Id。
*/ */
@Column(name = "city_id") @TableField(value = "city_id")
private Long cityId; private Long cityId;
/** /**
* 购课学币数量。 * 购课学币数量。
*/ */
@Column(name = "buy_course_amount") @TableField(value = "buy_course_amount")
private Integer buyCourseAmount; private Integer buyCourseAmount;
/** /**
* 购买课程次数。 * 购买课程次数。
*/ */
@Column(name = "buy_course_count") @TableField(value = "buy_course_count")
private Integer buyCourseCount; private Integer buyCourseCount;
/** /**
* 购买视频学币数量。 * 购买视频学币数量。
*/ */
@Column(name = "buy_video_amount") @TableField(value = "buy_video_amount")
private Integer buyVideoAmount; private Integer buyVideoAmount;
/** /**
* 购买视频次数。 * 购买视频次数。
*/ */
@Column(name = "buy_video_count") @TableField(value = "buy_video_count")
private Integer buyVideoCount; private Integer buyVideoCount;
/** /**
* 购买作业学币数量。 * 购买作业学币数量。
*/ */
@Column(name = "buy_paper_amount") @TableField(value = "buy_paper_amount")
private Integer buyPaperAmount; private Integer buyPaperAmount;
/** /**
* 购买作业次数。 * 购买作业次数。
*/ */
@Column(name = "buy_paper_count") @TableField(value = "buy_paper_count")
private Integer buyPaperCount; private Integer buyPaperCount;
/** /**
* 购买献花数量。 * 购买献花数量。
*/ */
@Column(name = "buy_flower_amount") @TableField(value = "buy_flower_amount")
private Integer buyFlowerAmount; private Integer buyFlowerAmount;
/** /**
* 购买献花次数。 * 购买献花次数。
*/ */
@Column(name = "buy_flower_count") @TableField(value = "buy_flower_count")
private Integer buyFlowerCount; private Integer buyFlowerCount;
/** /**
* 充值学币数量。 * 充值学币数量。
*/ */
@Column(name = "recharge_coin_amount") @TableField(value = "recharge_coin_amount")
private Integer rechargeCoinAmount; private Integer rechargeCoinAmount;
/** /**
* 充值学币次数。 * 充值学币次数。
*/ */
@Column(name = "recharge_coin_count") @TableField(value = "recharge_coin_count")
private Integer rechargeCoinCount; private Integer rechargeCoinCount;
/** /**
* 线下课程上课次数。 * 线下课程上课次数。
*/ */
@Column(name = "do_course_count") @TableField(value = "do_course_count")
private Integer doCourseCount; private Integer doCourseCount;
/** /**
* 观看视频次数。 * 观看视频次数。
*/ */
@Column(name = "watch_video_count") @TableField(value = "watch_video_count")
private Integer watchVideoCount; private Integer watchVideoCount;
/** /**
* 购买献花消费学币数量。 * 购买献花消费学币数量。
*/ */
@Column(name = "watch_video_total_second") @TableField(value = "watch_video_total_second")
private Integer watchVideoTotalSecond; private Integer watchVideoTotalSecond;
/** /**
* 做题数量。 * 做题数量。
*/ */
@Column(name = "do_exercise_count") @TableField(value = "do_exercise_count")
private Integer doExerciseCount; private Integer doExerciseCount;
/** /**
* 做题正确的数量。 * 做题正确的数量。
*/ */
@Column(name = "do_exercise_correct_count") @TableField(value = "do_exercise_correct_count")
private Integer doExerciseCorrectCount; private Integer doExerciseCorrectCount;
/** /**
* statsDate 范围过滤起始值(>=)。 * statsDate 范围过滤起始值(>=)。
*/ */
@Transient @TableField(exist = false)
private String statsDateStart; private String statsDateStart;
/** /**
* statsDate 范围过滤结束值(<=)。 * statsDate 范围过滤结束值(<=)。
*/ */
@Transient @TableField(exist = false)
private String statsDateEnd; private String statsDateEnd;
@RelationDict( @RelationDict(
@@ -170,7 +169,7 @@ public class StudentActionStats {
slaveModelClass = GradeVo.class, slaveModelClass = GradeVo.class,
slaveIdField = "gradeId", slaveIdField = "gradeId",
slaveNameField = "gradeName") slaveNameField = "gradeName")
@Transient @TableField(exist = false)
private Map<String, Object> gradeIdDictMap; private Map<String, Object> gradeIdDictMap;
@RelationDict( @RelationDict(
@@ -179,7 +178,7 @@ public class StudentActionStats {
slaveModelClass = AreaCodeVo.class, slaveModelClass = AreaCodeVo.class,
slaveIdField = "areaId", slaveIdField = "areaId",
slaveNameField = "areaName") slaveNameField = "areaName")
@Transient @TableField(exist = false)
private Map<String, Object> provinceIdDictMap; private Map<String, Object> provinceIdDictMap;
@RelationDict( @RelationDict(
@@ -188,7 +187,7 @@ public class StudentActionStats {
slaveModelClass = AreaCodeVo.class, slaveModelClass = AreaCodeVo.class,
slaveIdField = "areaId", slaveIdField = "areaId",
slaveNameField = "areaName") slaveNameField = "areaName")
@Transient @TableField(exist = false)
private Map<String, Object> cityIdDictMap; private Map<String, Object> cityIdDictMap;
@Mapper @Mapper

View File

@@ -1,8 +1,9 @@
package com.orange.demo.statsservice.model; package com.orange.demo.statsservice.model;
import com.baomidou.mybatisplus.annotation.*;
import com.orange.demo.statsapi.vo.StudentActionTransVo; import com.orange.demo.statsapi.vo.StudentActionTransVo;
import com.orange.demo.courseclassapi.client.SchoolInfoClient; import com.orange.demo.upmsapi.client.SysDeptClient;
import com.orange.demo.courseclassapi.vo.SchoolInfoVo; import com.orange.demo.upmsapi.vo.SysDeptVo;
import com.orange.demo.courseclassapi.vo.GradeVo; import com.orange.demo.courseclassapi.vo.GradeVo;
import com.orange.demo.courseclassapi.client.GradeClient; import com.orange.demo.courseclassapi.client.GradeClient;
import com.orange.demo.application.common.constant.StudentActionType; import com.orange.demo.application.common.constant.StudentActionType;
@@ -13,7 +14,6 @@ import com.orange.demo.common.core.base.mapper.BaseModelMapper;
import lombok.Data; import lombok.Data;
import org.mapstruct.*; import org.mapstruct.*;
import org.mapstruct.factory.Mappers; import org.mapstruct.factory.Mappers;
import javax.persistence.*;
import java.util.Date; import java.util.Date;
import java.util.Map; import java.util.Map;
@@ -25,119 +25,118 @@ import java.util.Map;
* @date 2020-08-08 * @date 2020-08-08
*/ */
@Data @Data
@Table(name = "zz_student_action_trans") @TableName(value = "zz_student_action_trans")
public class StudentActionTrans { public class StudentActionTrans {
/** /**
* 主键Id。 * 主键Id。
*/ */
@Id @TableId(value = "trans_id")
@Column(name = "trans_id")
private Long transId; private Long transId;
/** /**
* 学生Id。 * 学生Id。
*/ */
@Column(name = "student_id") @TableField(value = "student_id")
private Long studentId; private Long studentId;
/** /**
* 学生名称。 * 学生名称。
*/ */
@Column(name = "student_name") @TableField(value = "student_name")
private String studentName; private String studentName;
/** /**
* 学生校区。 * 学生校区。
*/ */
@Column(name = "school_id") @TableField(value = "school_id")
private Long schoolId; private Long schoolId;
/** /**
* 年级Id。 * 年级Id。
*/ */
@Column(name = "grade_id") @TableField(value = "grade_id")
private Integer gradeId; private Integer gradeId;
/** /**
* 行为类型(0: 充值 1: 购课 2: 上课签到 3: 上课签退 4: 看视频课 5: 做作业 6: 刷题 7: 献花)。 * 行为类型(0: 充值 1: 购课 2: 上课签到 3: 上课签退 4: 看视频课 5: 做作业 6: 刷题 7: 献花)。
*/ */
@Column(name = "action_type") @TableField(value = "action_type")
private Integer actionType; private Integer actionType;
/** /**
* 设备类型(0: iOS 1: Android 2: PC)。 * 设备类型(0: iOS 1: Android 2: PC)。
*/ */
@Column(name = "device_type") @TableField(value = "device_type")
private Integer deviceType; private Integer deviceType;
/** /**
* 看视频秒数。 * 看视频秒数。
*/ */
@Column(name = "watch_video_seconds") @TableField(value = "watch_video_seconds")
private Integer watchVideoSeconds; private Integer watchVideoSeconds;
/** /**
* 购买献花数量。 * 购买献花数量。
*/ */
@Column(name = "flower_count") @TableField(value = "flower_count")
private Integer flowerCount; private Integer flowerCount;
/** /**
* 购买作业数量。 * 购买作业数量。
*/ */
@Column(name = "paper_count") @TableField(value = "paper_count")
private Integer paperCount; private Integer paperCount;
/** /**
* 购买视频数量。 * 购买视频数量。
*/ */
@Column(name = "video_count") @TableField(value = "video_count")
private Integer videoCount; private Integer videoCount;
/** /**
* 购买课程数量。 * 购买课程数量。
*/ */
@Column(name = "course_count") @TableField(value = "course_count")
private Integer courseCount; private Integer courseCount;
/** /**
* 充值学币数量。 * 充值学币数量。
*/ */
@Column(name = "coin_count") @TableField(value = "coin_count")
private Integer coinCount; private Integer coinCount;
/** /**
* 做题是否正确标记。 * 做题是否正确标记。
*/ */
@Column(name = "exercise_correct_flag") @TableField(value = "exercise_correct_flag")
private Integer exerciseCorrectFlag; private Integer exerciseCorrectFlag;
/** /**
* 发生时间。 * 发生时间。
*/ */
@Column(name = "create_time") @TableField(value = "create_time")
private Date createTime; private Date createTime;
/** /**
* createTime 范围过滤起始值(>=)。 * createTime 范围过滤起始值(>=)。
*/ */
@Transient @TableField(exist = false)
private String createTimeStart; private String createTimeStart;
/** /**
* createTime 范围过滤结束值(<=)。 * createTime 范围过滤结束值(<=)。
*/ */
@Transient @TableField(exist = false)
private String createTimeEnd; private String createTimeEnd;
@RelationDict( @RelationDict(
masterIdField = "schoolId", masterIdField = "schoolId",
slaveClientClass = SchoolInfoClient.class, slaveClientClass = SysDeptClient.class,
slaveModelClass = SchoolInfoVo.class, slaveModelClass = SysDeptVo.class,
slaveIdField = "schoolId", slaveIdField = "deptId",
slaveNameField = "schoolName") slaveNameField = "deptName")
@Transient @TableField(exist = false)
private Map<String, Object> schoolIdDictMap; private Map<String, Object> schoolIdDictMap;
@RelationDict( @RelationDict(
@@ -146,19 +145,19 @@ public class StudentActionTrans {
slaveModelClass = GradeVo.class, slaveModelClass = GradeVo.class,
slaveIdField = "gradeId", slaveIdField = "gradeId",
slaveNameField = "gradeName") slaveNameField = "gradeName")
@Transient @TableField(exist = false)
private Map<String, Object> gradeIdDictMap; private Map<String, Object> gradeIdDictMap;
@RelationConstDict( @RelationConstDict(
masterIdField = "actionType", masterIdField = "actionType",
constantDictClass = StudentActionType.class) constantDictClass = StudentActionType.class)
@Transient @TableField(exist = false)
private Map<String, Object> actionTypeDictMap; private Map<String, Object> actionTypeDictMap;
@RelationConstDict( @RelationConstDict(
masterIdField = "deviceType", masterIdField = "deviceType",
constantDictClass = DeviceType.class) constantDictClass = DeviceType.class)
@Transient @TableField(exist = false)
private Map<String, Object> deviceTypeDictMap; private Map<String, Object> deviceTypeDictMap;
@Mapper @Mapper

View File

@@ -22,6 +22,13 @@ public interface StudentActionTransService extends IBaseService<StudentActionTra
*/ */
StudentActionTrans saveNew(StudentActionTrans studentActionTrans); StudentActionTrans saveNew(StudentActionTrans studentActionTrans);
/**
* 利用数据库的insertList语法批量插入对象列表。
*
* @param studentActionTransList 新增对象列表。
*/
void saveNewBatch(List<StudentActionTrans> studentActionTransList);
/** /**
* 更新数据对象。 * 更新数据对象。
* *

View File

@@ -1,8 +1,11 @@
package com.orange.demo.statsservice.service.impl; package com.orange.demo.statsservice.service.impl;
import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.orange.demo.statsservice.service.*; import com.orange.demo.statsservice.service.*;
import com.orange.demo.statsservice.dao.*; import com.orange.demo.statsservice.dao.*;
import com.orange.demo.statsservice.model.*; import com.orange.demo.statsservice.model.*;
import com.orange.demo.upmsapi.client.*;
import com.orange.demo.courseclassapi.client.*; import com.orange.demo.courseclassapi.client.*;
import com.orange.demo.common.core.util.*; import com.orange.demo.common.core.util.*;
import com.orange.demo.common.core.object.MyRelationParam; import com.orange.demo.common.core.object.MyRelationParam;
@@ -32,7 +35,7 @@ public class StudentActionTransServiceImpl extends BaseService<StudentActionTran
@Autowired @Autowired
private StudentActionTransMapper studentActionTransMapper; private StudentActionTransMapper studentActionTransMapper;
@Autowired @Autowired
private SchoolInfoClient schoolInfoClient; private SysDeptClient sysDeptClient;
@Autowired @Autowired
private GradeClient gradeClient; private GradeClient gradeClient;
@Autowired @Autowired
@@ -57,12 +60,24 @@ public class StudentActionTransServiceImpl extends BaseService<StudentActionTran
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
@Override @Override
public StudentActionTrans saveNew(StudentActionTrans studentActionTrans) { public StudentActionTrans saveNew(StudentActionTrans studentActionTrans) {
studentActionTrans.setTransId(idGenerator.nextLongId()); studentActionTransMapper.insert(this.buildDefaultValue(studentActionTrans));
studentActionTrans.setCreateTime(new Date());
studentActionTransMapper.insert(studentActionTrans);
return studentActionTrans; return studentActionTrans;
} }
/**
* 利用数据库的insertList语法批量插入对象列表。
*
* @param studentActionTransList 新增对象列表。
*/
@Transactional(rollbackFor = Exception.class)
@Override
public void saveNewBatch(List<StudentActionTrans> studentActionTransList) {
if (CollUtil.isNotEmpty(studentActionTransList)) {
studentActionTransList.forEach(this::buildDefaultValue);
studentActionTransMapper.insertList(studentActionTransList);
}
}
/** /**
* 更新数据对象。 * 更新数据对象。
* *
@@ -75,7 +90,8 @@ public class StudentActionTransServiceImpl extends BaseService<StudentActionTran
public boolean update(StudentActionTrans studentActionTrans, StudentActionTrans originalStudentActionTrans) { public boolean update(StudentActionTrans studentActionTrans, StudentActionTrans originalStudentActionTrans) {
studentActionTrans.setCreateTime(originalStudentActionTrans.getCreateTime()); studentActionTrans.setCreateTime(originalStudentActionTrans.getCreateTime());
// 这里重点提示,在执行主表数据更新之前,如果有哪些字段不支持修改操作,请用原有数据对象字段替换当前数据字段。 // 这里重点提示,在执行主表数据更新之前,如果有哪些字段不支持修改操作,请用原有数据对象字段替换当前数据字段。
return studentActionTransMapper.updateByPrimaryKey(studentActionTrans) == 1; UpdateWrapper<StudentActionTrans> uw = this.createUpdateQueryForNullValue(studentActionTrans, studentActionTrans.getTransId());
return studentActionTransMapper.update(studentActionTrans, uw) == 1;
} }
/** /**
@@ -87,8 +103,7 @@ public class StudentActionTransServiceImpl extends BaseService<StudentActionTran
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
@Override @Override
public boolean remove(Long transId) { public boolean remove(Long transId) {
// 这里先删除主数据 return studentActionTransMapper.deleteById(transId) == 1;
return this.removeById(transId);
} }
/** /**
@@ -177,7 +192,7 @@ public class StudentActionTransServiceImpl extends BaseService<StudentActionTran
String errorMessageFormat = "数据验证失败,关联的%s并不存在请刷新后重试"; String errorMessageFormat = "数据验证失败,关联的%s并不存在请刷新后重试";
if (this.needToVerify(studentActionTrans, originalStudentActionTrans, StudentActionTrans::getSchoolId)) { if (this.needToVerify(studentActionTrans, originalStudentActionTrans, StudentActionTrans::getSchoolId)) {
ResponseResult<Boolean> responseResult = ResponseResult<Boolean> responseResult =
schoolInfoClient.existId(studentActionTrans.getSchoolId()); sysDeptClient.existId(studentActionTrans.getSchoolId());
if (this.hasErrorOfVerifyRemoteRelatedData(responseResult)) { if (this.hasErrorOfVerifyRemoteRelatedData(responseResult)) {
return CallResult.error(String.format(errorMessageFormat, "学生校区")); return CallResult.error(String.format(errorMessageFormat, "学生校区"));
} }
@@ -191,4 +206,10 @@ public class StudentActionTransServiceImpl extends BaseService<StudentActionTran
} }
return CallResult.ok(); return CallResult.ok();
} }
private StudentActionTrans buildDefaultValue(StudentActionTrans studentActionTrans) {
studentActionTrans.setTransId(idGenerator.nextLongId());
studentActionTrans.setCreateTime(new Date());
return studentActionTrans;
}
} }

View File

@@ -64,26 +64,23 @@
<orderEntry type="library" scope="RUNTIME" name="Maven: mysql:mysql-connector-java:8.0.23" level="project" /> <orderEntry type="library" scope="RUNTIME" name="Maven: mysql:mysql-connector-java:8.0.23" level="project" />
<orderEntry type="library" name="Maven: com.alibaba:druid-spring-boot-starter:1.2.6" level="project" /> <orderEntry type="library" name="Maven: com.alibaba:druid-spring-boot-starter:1.2.6" level="project" />
<orderEntry type="library" name="Maven: com.alibaba:druid:1.2.6" level="project" /> <orderEntry type="library" name="Maven: com.alibaba:druid:1.2.6" level="project" />
<orderEntry type="library" name="Maven: tk.mybatis:mapper-spring-boot-starter:2.1.5" level="project" /> <orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-boot-starter:3.4.2" level="project" />
<orderEntry type="library" name="Maven: com.baomidou:mybatis-plus:3.4.2" level="project" />
<orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-extension:3.4.2" level="project" />
<orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-core:3.4.2" level="project" />
<orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-annotation:3.4.2" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-jdbc:2.3.10.RELEASE" level="project" /> <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-jdbc:2.3.10.RELEASE" level="project" />
<orderEntry type="library" name="Maven: com.zaxxer:HikariCP:3.4.5" level="project" /> <orderEntry type="library" name="Maven: com.zaxxer:HikariCP:3.4.5" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-jdbc:5.2.14.RELEASE" level="project" /> <orderEntry type="library" name="Maven: org.springframework:spring-jdbc:5.2.14.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-tx:5.2.14.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.3.0" level="project" /> <orderEntry type="library" name="Maven: com.github.pagehelper:pagehelper-spring-boot-starter:1.3.0" level="project" />
<orderEntry type="library" name="Maven: org.mybatis.spring.boot:mybatis-spring-boot-starter:2.1.3" level="project" /> <orderEntry type="library" name="Maven: org.mybatis.spring.boot:mybatis-spring-boot-starter:2.1.3" level="project" />
<orderEntry type="library" name="Maven: org.mybatis.spring.boot:mybatis-spring-boot-autoconfigure:2.1.3" level="project" /> <orderEntry type="library" name="Maven: org.mybatis.spring.boot:mybatis-spring-boot-autoconfigure:2.1.3" level="project" />
<orderEntry type="library" name="Maven: org.mybatis:mybatis:3.5.5" level="project" />
<orderEntry type="library" name="Maven: org.mybatis:mybatis-spring:2.0.5" level="project" />
<orderEntry type="library" name="Maven: com.github.pagehelper:pagehelper-spring-boot-autoconfigure:1.3.0" level="project" /> <orderEntry type="library" name="Maven: com.github.pagehelper:pagehelper-spring-boot-autoconfigure:1.3.0" level="project" />
<orderEntry type="library" name="Maven: com.github.pagehelper:pagehelper:5.2.0" level="project" /> <orderEntry type="library" name="Maven: com.github.pagehelper:pagehelper:5.2.0" level="project" />
<orderEntry type="library" name="Maven: com.github.jsqlparser:jsqlparser:3.2" level="project" /> <orderEntry type="library" name="Maven: com.github.jsqlparser:jsqlparser:3.2" level="project" />
<orderEntry type="module" module-name="common-datafilter" />
<orderEntry type="module" module-name="common-swagger" /> <orderEntry type="module" module-name="common-swagger" />
<orderEntry type="library" name="Maven: com.github.xiaoymin:knife4j-micro-spring-boot-starter:2.0.8" level="project" /> <orderEntry type="library" name="Maven: com.github.xiaoymin:knife4j-micro-spring-boot-starter:2.0.8" level="project" />
<orderEntry type="library" name="Maven: com.github.xiaoymin:knife4j-spring-boot-autoconfigure:2.0.8" level="project" /> <orderEntry type="library" name="Maven: com.github.xiaoymin:knife4j-spring-boot-autoconfigure:2.0.8" level="project" />
@@ -103,7 +100,12 @@
<orderEntry type="library" name="Maven: io.springfox:springfox-bean-validators:2.10.5" level="project" /> <orderEntry type="library" name="Maven: io.springfox:springfox-bean-validators:2.10.5" level="project" />
<orderEntry type="library" name="Maven: io.springfox:springfox-spring-webmvc:2.10.5" level="project" /> <orderEntry type="library" name="Maven: io.springfox:springfox-spring-webmvc:2.10.5" level="project" />
<orderEntry type="module" module-name="course-class-api" /> <orderEntry type="module" module-name="course-class-api" />
<orderEntry type="library" name="Maven: com.orange.demo:common-log:1.0.0" level="project" /> <orderEntry type="module" module-name="upms-api" />
<orderEntry type="module" module-name="common-log" />
<orderEntry type="library" name="Maven: org.springframework.kafka:spring-kafka:2.5.12.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-messaging:5.2.14.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-tx:5.2.14.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.retry:spring-retry:1.2.5.RELEASE" level="project" />
<orderEntry type="module" module-name="common-redis" /> <orderEntry type="module" module-name="common-redis" />
<orderEntry type="library" name="Maven: org.redisson:redisson:3.15.4" level="project" /> <orderEntry type="library" name="Maven: org.redisson:redisson:3.15.4" level="project" />
<orderEntry type="library" name="Maven: io.netty:netty-common:4.1.63.Final" level="project" /> <orderEntry type="library" name="Maven: io.netty:netty-common:4.1.63.Final" level="project" />

View File

@@ -19,6 +19,11 @@
<artifactId>common-core</artifactId> <artifactId>common-core</artifactId>
<version>1.0.0</version> <version>1.0.0</version>
</dependency> </dependency>
<dependency>
<groupId>com.orange.demo</groupId>
<artifactId>common-datafilter</artifactId>
<version>1.0.0</version>
</dependency>
<!-- 通用业务依赖 --> <!-- 通用业务依赖 -->
<dependency> <dependency>
<groupId>com.orange.demo</groupId> <groupId>com.orange.demo</groupId>

View File

@@ -50,6 +50,13 @@ public class SysUserDto {
@NotBlank(message = "数据验证失败,用户显示名称不能为空!") @NotBlank(message = "数据验证失败,用户显示名称不能为空!")
private String showName; private String showName;
/**
* 用户部门Id。
*/
@ApiModelProperty(value = "用户部门Id", required = true)
@NotNull(message = "数据验证失败用户部门Id不能为空")
private Long deptId;
/** /**
* 用户类型(0: 管理员 1: 系统管理用户 2: 系统业务用户)。 * 用户类型(0: 管理员 1: 系统管理用户 2: 系统业务用户)。
*/ */

Some files were not shown because too many files have changed in this diff Show More