From dc3a8ecfac65d939b35864761212d758fbca9d96 Mon Sep 17 00:00:00 2001 From: Jerry <707344974@qq.com> Date: Mon, 19 Oct 2020 22:53:01 +0800 Subject: [PATCH] =?UTF-8?q?commit=EF=BC=9A=E9=9B=86=E6=88=90Minio?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- orange-demo-multi-service/README.md | 5 +- .../adminmonitor/AdminMonitorApplication.java | 2 +- .../common/constant/DeviceType.java | 2 +- .../application/common/constant/ExpLevel.java | 2 +- .../application/common/constant/Gender.java | 2 +- .../common/constant/StudentActionType.java | 2 +- .../common/constant/StudentStatus.java | 2 +- .../application/common/constant/Subject.java | 2 +- .../client/AreaCodeClient.java | 2 +- .../client/CourseClient.java | 2 +- .../client/GradeClient.java | 2 +- .../client/SchoolInfoClient.java | 2 +- .../client/StudentClassClient.java | 2 +- .../client/StudentClient.java | 2 +- .../constant/ClassLevel.java | 2 +- .../constant/ClassStatus.java | 2 +- .../constant/CourseDifficult.java | 2 +- .../courseclassinterface/dto/AreaCodeDto.java | 2 +- .../dto/ClassCourseDto.java | 3 +- .../dto/ClassStudentDto.java | 2 +- .../courseclassinterface/dto/CourseDto.java | 7 +- .../courseclassinterface/dto/GradeDto.java | 2 +- .../dto/SchoolInfoDto.java | 2 +- .../dto/StudentClassDto.java | 2 +- .../courseclassinterface/dto/StudentDto.java | 2 +- .../course-class-service.iml | 15 +- .../course-class/course-class-service/pom.xml | 5 + .../CourseClassApplication.java | 2 +- .../config/ApplicationConfig.java | 2 +- .../config/DataSourceConfig.java | 2 +- .../controller/AreaCodeController.java | 2 +- .../controller/CourseController.java | 58 +- .../controller/GradeController.java | 2 +- .../controller/SchoolInfoController.java | 4 +- .../controller/StudentClassController.java | 4 +- .../controller/StudentController.java | 4 +- .../dao/AreaCodeMapper.java | 2 +- .../dao/ClassCourseMapper.java | 2 +- .../dao/ClassStudentMapper.java | 2 +- .../courseclassservice/dao/CourseMapper.java | 2 +- .../courseclassservice/dao/GradeMapper.java | 2 +- .../dao/MaterialEditionMapper.java | 2 +- .../dao/SchoolInfoMapper.java | 2 +- .../dao/StudentClassMapper.java | 2 +- .../courseclassservice/dao/StudentMapper.java | 2 +- .../dao/mapper/CourseMapper.xml | 10 +- .../courseclassservice/model/AreaCode.java | 2 +- .../courseclassservice/model/ClassCourse.java | 3 +- .../model/ClassStudent.java | 2 +- .../demo/courseclassservice/model/Course.java | 13 +- .../demo/courseclassservice/model/Grade.java | 2 +- .../model/MaterialEdition.java | 2 +- .../courseclassservice/model/SchoolInfo.java | 2 +- .../courseclassservice/model/Student.java | 2 +- .../model/StudentClass.java | 2 +- .../service/AreaCodeService.java | 2 +- .../service/CourseService.java | 2 +- .../service/GradeService.java | 2 +- .../service/SchoolInfoService.java | 2 +- .../service/StudentClassService.java | 2 +- .../service/StudentService.java | 2 +- .../demo/gateway/GatewayApplication.java | 2 +- .../gateway/config/ApplicationConfig.java | 2 +- .../demo/gateway/config/CorsConfig.java | 2 +- .../demo/gateway/config/FilterConfig.java | 2 +- .../demo/gateway/config/SentinelConfig.java | 2 +- .../gateway/constant/GatewayConstant.java | 6 +- .../filter/AuthenticationPostFilter.java | 2 +- .../filter/AuthenticationPreFilter.java | 4 +- .../demo/gateway/filter/RequestLogFilter.java | 2 +- .../gateway/filter/ResponseLogFilter.java | 2 +- .../client/CourseTransStatsClient.java | 2 +- .../client/StudentActionStatsClient.java | 2 +- .../client/StudentActionTransClient.java | 2 +- .../dto/CourseTransStatsDto.java | 2 +- .../dto/StudentActionStatsDto.java | 2 +- .../dto/StudentActionTransDto.java | 2 +- .../demo/statsservice/StatsApplication.java | 2 +- .../config/ApplicationConfig.java | 2 +- .../statsservice/config/DataSourceConfig.java | 2 +- .../CourseTransStatsController.java | 4 +- .../StudentActionStatsController.java | 4 +- .../StudentActionTransController.java | 4 +- .../dao/CourseTransStatsMapper.java | 2 +- .../demo/statsservice/dao/GradeMapper.java | 2 +- .../statsservice/dao/SchoolInfoMapper.java | 2 +- .../dao/StudentActionStatsMapper.java | 2 +- .../dao/StudentActionTransMapper.java | 2 +- .../statsservice/model/CourseTransStats.java | 2 +- .../orange/demo/statsservice/model/Grade.java | 2 +- .../demo/statsservice/model/SchoolInfo.java | 2 +- .../model/StudentActionStats.java | 2 +- .../model/StudentActionTrans.java | 2 +- .../service/CourseTransStatsService.java | 2 +- .../service/StudentActionStatsService.java | 2 +- .../service/StudentActionTransService.java | 2 +- .../upmsinterface/client/SysUserClient.java | 2 +- .../upmsinterface/constant/SysMenuType.java | 2 +- .../constant/SysPermCodeType.java | 2 +- .../constant/SysPermModuleType.java | 2 +- .../upmsinterface/constant/SysUserStatus.java | 2 +- .../upmsinterface/constant/SysUserType.java | 2 +- .../demo/upmsinterface/dto/SysMenuDto.java | 2 +- .../upmsinterface/dto/SysPermCodeDto.java | 2 +- .../demo/upmsinterface/dto/SysPermDto.java | 2 +- .../upmsinterface/dto/SysPermModuleDto.java | 2 +- .../demo/upmsinterface/dto/SysRoleDto.java | 2 +- .../demo/upmsinterface/dto/SysUserDto.java | 2 +- .../demo/upmsservice/UpmsApplication.java | 2 +- .../upmsservice/config/ApplicationConfig.java | 2 +- .../upmsservice/config/DataSourceConfig.java | 2 +- .../controller/LoginController.java | 4 +- .../controller/SysMenuController.java | 2 +- .../controller/SysPermCodeController.java | 2 +- .../controller/SysPermController.java | 2 +- .../controller/SysPermModuleController.java | 2 +- .../controller/SysRoleController.java | 2 +- .../controller/SysUserController.java | 4 +- .../demo/upmsservice/dao/SysMenuMapper.java | 2 +- .../dao/SysMenuPermCodeMapper.java | 2 +- .../upmsservice/dao/SysPermCodeMapper.java | 2 +- .../dao/SysPermCodePermMapper.java | 2 +- .../demo/upmsservice/dao/SysPermMapper.java | 2 +- .../upmsservice/dao/SysPermModuleMapper.java | 2 +- .../dao/SysPermWhitelistMapper.java | 2 +- .../demo/upmsservice/dao/SysRoleMapper.java | 2 +- .../upmsservice/dao/SysRoleMenuMapper.java | 2 +- .../demo/upmsservice/dao/SysUserMapper.java | 2 +- .../upmsservice/dao/SysUserRoleMapper.java | 2 +- .../demo/upmsservice/model/SysMenu.java | 2 +- .../upmsservice/model/SysMenuPermCode.java | 2 +- .../demo/upmsservice/model/SysPerm.java | 2 +- .../demo/upmsservice/model/SysPermCode.java | 2 +- .../upmsservice/model/SysPermCodePerm.java | 2 +- .../demo/upmsservice/model/SysPermModule.java | 2 +- .../upmsservice/model/SysPermWhitelist.java | 2 +- .../demo/upmsservice/model/SysRole.java | 2 +- .../demo/upmsservice/model/SysRoleMenu.java | 2 +- .../demo/upmsservice/model/SysUser.java | 2 +- .../demo/upmsservice/model/SysUserRole.java | 2 +- .../upmsservice/service/SysMenuService.java | 2 +- .../service/SysPermCodeService.java | 2 +- .../service/SysPermModuleService.java | 2 +- .../upmsservice/service/SysPermService.java | 2 +- .../service/SysPermWhitelistService.java | 2 +- .../upmsservice/service/SysRoleService.java | 2 +- .../upmsservice/service/SysUserService.java | 2 +- .../core/advice/MyControllerAdvice.java | 2 +- .../core/advice/MyExceptionHandler.java | 7 +- .../core/annotation/DeletedFlagColumn.java | 2 +- .../core/annotation/JobUpdateTimeColumn.java | 2 +- .../common/core/annotation/MyDataSource.java | 2 +- .../common/core/annotation/MyRequestBody.java | 2 +- .../core/annotation/NoAuthInterface.java | 2 +- .../core/annotation/RelationConstDict.java | 2 +- .../common/core/annotation/RelationDict.java | 2 +- .../core/annotation/RelationManyToMany.java | 2 +- .../RelationManyToManyAggregation.java | 2 +- .../RelationOneToManyAggregation.java | 2 +- .../core/annotation/RelationOneToOne.java | 2 +- .../core/annotation/UploadFlagColumn.java | 24 + .../demo/common/core/aop/AccessLogAspect.java | 4 +- .../common/core/base/client/BaseClient.java | 2 +- .../core/base/controller/BaseController.java | 2 +- .../common/core/base/dao/BaseDaoMapper.java | 2 +- .../core/base/mapper/BaseModelMapper.java | 2 +- .../core/base/mapper/DummyModelMapper.java | 2 +- .../core/base/service/BaseDictService.java | 2 +- .../common/core/base/service/BaseService.java | 2 +- .../common/core/cache/DictionaryCache.java | 2 +- .../common/core/cache/MapDictionaryCache.java | 2 +- .../core/cache/MapTreeDictionaryCache.java | 2 +- .../core/config/CommonWebMvcConfig.java | 2 +- .../common/core/config/EncryptConfig.java | 2 +- .../demo/common/core/config/FeignConfig.java | 2 +- .../core/config/RestTemplateConfig.java | 2 +- .../demo/common/core/config/TomcatConfig.java | 2 +- .../common/core/constant/AggregationKind.java | 2 +- .../common/core/constant/AggregationType.java | 2 +- .../core/constant/ApplicationConstant.java | 2 +- .../common/core/constant/ErrorCodeEnum.java | 5 +- .../core/constant/GlobalDeletedFlag.java | 2 +- .../exception/DataValidationException.java | 2 +- .../exception/InvalidClassFieldException.java | 2 +- .../exception/InvalidDataFieldException.java | 2 +- .../exception/InvalidDataModelException.java | 2 +- .../core/exception/MyRuntimeException.java | 2 +- .../core/exception/NoDataAffectException.java | 2 +- .../core/exception/NoDataPermException.java | 2 +- .../exception/RedisCacheAccessException.java | 2 +- .../exception/RemoteDataBuildException.java | 2 +- .../MyRequestArgumentResolver.java | 2 +- .../core/listener/LoadCachedDataListener.java | 2 +- .../listener/LoadServiceRelationListener.java | 2 +- .../demo/common/core/object/CallResult.java | 2 +- .../demo/common/core/object/DummyClass.java | 2 +- .../core/object/MyAggregationParam.java | 2 +- .../common/core/object/MyGroupCriteria.java | 2 +- .../demo/common/core/object/MyGroupParam.java | 3 +- .../demo/common/core/object/MyOrderParam.java | 5 +- .../demo/common/core/object/MyPageParam.java | 2 +- .../demo/common/core/object/MyQueryParam.java | 2 +- .../common/core/object/MyRelationParam.java | 2 +- .../common/core/object/MyWhereCriteria.java | 2 +- .../common/core/object/ResponseResult.java | 49 +- .../demo/common/core/object/TokenData.java | 2 +- .../demo/common/core/object/Tuple2.java | 2 +- .../common/core/upload/BaseUpDownloader.java | 137 + .../common/core/upload/LocalUpDownloader.java | 149 + .../core/upload/UpDownloaderFactory.java | 49 + .../core/upload/UploadResponseInfo.java | 29 + .../common/core/upload/UploadStoreInfo.java | 22 + .../core/upload/UploadStoreTypeEnum.java | 19 + .../demo/common/core/util/AopTargetUtil.java | 8 +- .../core/util/ApplicationContextHolder.java | 2 +- .../demo/common/core/util/ContextUtil.java | 2 +- .../demo/common/core/util/ExportUtil.java | 2 +- .../demo/common/core/util/ImportUtil.java | 2 +- .../orange/demo/common/core/util/IpUtil.java | 2 +- .../orange/demo/common/core/util/JwtUtil.java | 2 +- .../demo/common/core/util/LogMessageUtil.java | 2 +- .../demo/common/core/util/MyCommonUtil.java | 2 +- .../demo/common/core/util/MyDateUtil.java | 2 +- .../demo/common/core/util/MyModelUtil.java | 28 +- .../demo/common/core/util/MyPageUtil.java | 2 +- .../demo/common/core/util/RedisKeyUtil.java | 2 +- .../orange/demo/common/core/util/RsaUtil.java | 5 +- .../demo/common/core/util/TreeNode.java | 2 +- .../demo/common/core/util/UpDownloadUtil.java | 182 -- .../demo/common/core/validator/AddGroup.java | 2 +- .../common/core/validator/ConstDictRef.java | 2 +- .../core/validator/ConstDictValidator.java | 2 +- .../common/core/validator/TextLength.java | 2 +- .../core/validator/TextLengthValidator.java | 2 +- .../common/core/validator/UpdateGroup.java | 2 +- .../common/common-minio/common-minio.iml | 222 ++ .../common/common-minio/pom.xml | 29 + .../minio/config/MinioAutoConfiguration.java | 48 + .../common/minio/config/MinioProperties.java | 32 + .../common/minio/util/MinioUpDownloader.java | 100 + .../common/minio/wrapper/MinioTemplate.java | 209 ++ .../main/resources/META-INF/spring.factories | 2 + .../redis/cache/RedisDictionaryCache.java | 2 +- .../redis/cache/RedisTreeDictionaryCache.java | 2 +- .../redis/cache/RedissonCacheConfig.java | 2 +- .../redis/cache/SessionCacheHelper.java | 2 +- .../demo/common/redis/config/JedisConfig.java | 2 +- .../common/redis/config/RedissonConfig.java | 2 +- .../config/IdGeneratorAutoConfigure.java | 2 +- .../config/IdGeneratorProperties.java | 2 +- .../sequence/generator/BasicIdGenerator.java | 2 +- .../sequence/generator/MyIdGenerator.java | 2 +- .../generator/SnowflakeIdGenerator.java | 2 +- .../generator/SnowflakeZookeeperHolder.java | 2 +- .../sequence/wrapper/IdGeneratorWrapper.java | 2 +- orange-demo-multi-service/common/pom.xml | 1 + orange-demo-multi-service/pom.xml | 2 + .../zz-resource/.DS_Store | Bin 0 -> 6148 bytes .../config-data/course-class-dev.yaml | 9 +- .../zz-resource/config-data/gateway-dev.yaml | 10 - .../zz-resource/config-data/stats-dev.yaml | 2 +- .../zz-resource/config-data/upms-dev.yaml | 2 +- .../db-scripts}/zz-orange-demo.sql | 2805 +++++++++-------- .../docker-files/docker-compose.yml | 15 + .../zzlogs/course-class/course-class.log | 449 --- .../zzlogs/gateway/gateway.log | 108 - .../zzlogs/upms/upms.log | 19 - .../src/api/Controller/SystemController.js | 6 +- .../src/assets/style/base.scss | 16 + .../src/router/systemRouters.js | 6 +- orange-demo-multi-web/src/utils/widget.js | 22 +- .../src/views/generated/formClass/index.vue | 521 ++- .../views/generated/formClassCourse/index.vue | 207 -- .../generated/formClassStudent/index.vue | 181 -- .../src/views/generated/formCourse/index.vue | 12 +- .../views/generated/formCourseStats/index.vue | 12 +- .../views/generated/formCreateClass/index.vue | 2 + .../generated/formCreateCourse/index.vue | 2 + .../generated/formCreateSchool/index.vue | 2 + .../generated/formCreateStudent/index.vue | 2 + .../views/generated/formEditClass/index.vue | 2 + .../formEditClassCourseOrder/index.vue | 2 + .../views/generated/formEditCourse/index.vue | 2 + .../views/generated/formEditSchool/index.vue | 2 + .../views/generated/formEditStudent/index.vue | 2 + .../src/views/generated/formSchool/index.vue | 12 +- .../generated/formSetClassCourse/index.vue | 6 +- .../generated/formSetClassStudent/index.vue | 6 +- .../src/views/generated/formStudent/index.vue | 12 +- .../formStudentActionDetail/index.vue | 8 +- .../formStudentActionStats/index.vue | 8 +- .../views/upms/formDictManagement/index.vue | 112 +- .../src/views/upms/formPermQuery/index.vue | 2 +- .../src/views/upms/formSetRoleUsers/index.vue | 2 +- .../src/views/upms/formSysPermCode/index.vue | 2 +- .../src/views/upms/formSysRole/index.vue | 4 +- .../src/views/upms/formSysRoleUser/index.vue | 2 +- .../src/views/upms/formSysUser/index.vue | 2 +- .../common/constant/DeviceType.java | 2 +- .../application/common/constant/ExpLevel.java | 2 +- .../application/common/constant/Gender.java | 2 +- .../common/constant/StudentActionType.java | 2 +- .../common/constant/StudentStatus.java | 2 +- .../application/common/constant/Subject.java | 2 +- .../application/pom.xml | 4 +- .../java/com/orange/demo/MyApplication.java | 2 +- .../app/controller/AreaCodeController.java | 2 +- .../demo/app/controller/CourseController.java | 60 +- .../CourseTransStatsController.java | 4 +- .../demo/app/controller/GradeController.java | 2 +- .../app/controller/SchoolInfoController.java | 4 +- .../StudentActionStatsController.java | 4 +- .../StudentActionTransController.java | 4 +- .../controller/StudentClassController.java | 4 +- .../app/controller/StudentController.java | 4 +- .../orange/demo/app/dao/AreaCodeMapper.java | 2 +- .../demo/app/dao/ClassCourseMapper.java | 2 +- .../demo/app/dao/ClassStudentMapper.java | 2 +- .../com/orange/demo/app/dao/CourseMapper.java | 2 +- .../demo/app/dao/CourseTransStatsMapper.java | 2 +- .../com/orange/demo/app/dao/GradeMapper.java | 2 +- .../demo/app/dao/MaterialEditionMapper.java | 2 +- .../orange/demo/app/dao/SchoolInfoMapper.java | 2 +- .../app/dao/StudentActionStatsMapper.java | 2 +- .../app/dao/StudentActionTransMapper.java | 2 +- .../demo/app/dao/StudentClassMapper.java | 2 +- .../orange/demo/app/dao/StudentMapper.java | 2 +- .../demo/app/dao/mapper/CourseMapper.xml | 10 +- .../com/orange/demo/app/model/AreaCode.java | 2 +- .../orange/demo/app/model/ClassCourse.java | 2 +- .../orange/demo/app/model/ClassStudent.java | 2 +- .../com/orange/demo/app/model/Course.java | 11 +- .../demo/app/model/CourseTransStats.java | 2 +- .../java/com/orange/demo/app/model/Grade.java | 2 +- .../demo/app/model/MaterialEdition.java | 2 +- .../com/orange/demo/app/model/SchoolInfo.java | 2 +- .../com/orange/demo/app/model/Student.java | 2 +- .../demo/app/model/StudentActionStats.java | 2 +- .../demo/app/model/StudentActionTrans.java | 2 +- .../orange/demo/app/model/StudentClass.java | 2 +- .../demo/app/model/constant/ClassLevel.java | 2 +- .../demo/app/model/constant/ClassStatus.java | 2 +- .../app/model/constant/CourseDifficult.java | 2 +- .../demo/app/service/AreaCodeService.java | 2 +- .../demo/app/service/CourseService.java | 2 +- .../app/service/CourseTransStatsService.java | 2 +- .../orange/demo/app/service/GradeService.java | 2 +- .../demo/app/service/SchoolInfoService.java | 2 +- .../service/StudentActionStatsService.java | 2 +- .../service/StudentActionTransService.java | 2 +- .../demo/app/service/StudentClassService.java | 2 +- .../demo/app/service/StudentService.java | 2 +- .../orange/demo/config/ApplicationConfig.java | 2 +- .../orange/demo/config/DataSourceConfig.java | 2 +- .../com/orange/demo/config/FilterConfig.java | 2 +- .../orange/demo/config/InterceptorConfig.java | 4 +- .../AuthenticationInterceptor.java | 10 +- .../demo/upms/controller/LoginController.java | 4 +- .../upms/controller/SysMenuController.java | 2 +- .../controller/SysPermCodeController.java | 2 +- .../upms/controller/SysPermController.java | 2 +- .../controller/SysPermModuleController.java | 2 +- .../upms/controller/SysRoleController.java | 2 +- .../upms/controller/SysUserController.java | 4 +- .../orange/demo/upms/dao/SysMenuMapper.java | 2 +- .../demo/upms/dao/SysMenuPermCodeMapper.java | 2 +- .../demo/upms/dao/SysPermCodeMapper.java | 2 +- .../demo/upms/dao/SysPermCodePermMapper.java | 2 +- .../orange/demo/upms/dao/SysPermMapper.java | 2 +- .../demo/upms/dao/SysPermModuleMapper.java | 2 +- .../demo/upms/dao/SysPermWhitelistMapper.java | 2 +- .../orange/demo/upms/dao/SysRoleMapper.java | 2 +- .../demo/upms/dao/SysRoleMenuMapper.java | 2 +- .../orange/demo/upms/dao/SysUserMapper.java | 2 +- .../demo/upms/dao/SysUserRoleMapper.java | 2 +- .../com/orange/demo/upms/model/SysMenu.java | 2 +- .../demo/upms/model/SysMenuPermCode.java | 2 +- .../com/orange/demo/upms/model/SysPerm.java | 2 +- .../orange/demo/upms/model/SysPermCode.java | 2 +- .../demo/upms/model/SysPermCodePerm.java | 2 +- .../orange/demo/upms/model/SysPermModule.java | 2 +- .../demo/upms/model/SysPermWhitelist.java | 2 +- .../com/orange/demo/upms/model/SysRole.java | 2 +- .../orange/demo/upms/model/SysRoleMenu.java | 2 +- .../com/orange/demo/upms/model/SysUser.java | 2 +- .../orange/demo/upms/model/SysUserRole.java | 2 +- .../demo/upms/model/constant/SysMenuType.java | 2 +- .../upms/model/constant/SysPermCodeType.java | 2 +- .../model/constant/SysPermModuleType.java | 2 +- .../upms/model/constant/SysUserStatus.java | 2 +- .../demo/upms/model/constant/SysUserType.java | 2 +- .../demo/upms/service/SysMenuService.java | 2 +- .../demo/upms/service/SysPermCodeService.java | 2 +- .../upms/service/SysPermModuleService.java | 2 +- .../demo/upms/service/SysPermService.java | 2 +- .../upms/service/SysPermWhitelistService.java | 2 +- .../demo/upms/service/SysRoleService.java | 2 +- .../demo/upms/service/SysUserService.java | 2 +- .../common/common-core/pom.xml | 1 - .../core/advice/MyControllerAdvice.java | 2 +- .../core/advice/MyExceptionHandler.java | 7 +- .../core/annotation/DeletedFlagColumn.java | 2 +- .../core/annotation/JobUpdateTimeColumn.java | 2 +- .../common/core/annotation/MyDataSource.java | 2 +- .../common/core/annotation/MyRequestBody.java | 2 +- .../core/annotation/NoAuthInterface.java | 2 +- .../core/annotation/RelationConstDict.java | 2 +- .../common/core/annotation/RelationDict.java | 2 +- .../core/annotation/RelationManyToMany.java | 2 +- .../RelationManyToManyAggregation.java | 2 +- .../RelationOneToManyAggregation.java | 2 +- .../core/annotation/RelationOneToOne.java | 2 +- .../core/annotation/UploadFlagColumn.java | 24 + .../demo/common/core/aop/AccessLogAspect.java | 4 +- .../common/core/base/dao/BaseDaoMapper.java | 2 +- .../core/base/mapper/BaseModelMapper.java | 2 +- .../core/base/mapper/DummyModelMapper.java | 2 +- .../core/base/service/BaseDictService.java | 2 +- .../common/core/base/service/BaseService.java | 2 +- .../demo/common/core/cache/CacheConfig.java | 2 +- .../common/core/cache/DictionaryCache.java | 2 +- .../common/core/cache/MapDictionaryCache.java | 2 +- .../core/cache/MapTreeDictionaryCache.java | 2 +- .../common/core/cache/SessionCacheHelper.java | 2 +- .../core/config/CommonWebMvcConfig.java | 2 +- .../common/core/config/EncryptConfig.java | 2 +- .../core/config/RestTemplateConfig.java | 2 +- .../demo/common/core/config/TomcatConfig.java | 2 +- .../common/core/constant/AggregationType.java | 2 +- .../core/constant/ApplicationConstant.java | 2 +- .../common/core/constant/ErrorCodeEnum.java | 5 +- .../core/constant/GlobalDeletedFlag.java | 2 +- .../exception/DataValidationException.java | 2 +- .../exception/InvalidClassFieldException.java | 2 +- .../exception/InvalidDataFieldException.java | 2 +- .../exception/InvalidDataModelException.java | 2 +- .../core/exception/MyRuntimeException.java | 2 +- .../core/exception/NoDataAffectException.java | 2 +- .../core/exception/NoDataPermException.java | 2 +- .../exception/RedisCacheAccessException.java | 2 +- .../MyRequestArgumentResolver.java | 2 +- .../core/listener/LoadCachedDataListener.java | 2 +- .../listener/LoadServiceRelationListener.java | 2 +- .../demo/common/core/object/CallResult.java | 2 +- .../common/core/object/MyGroupCriteria.java | 2 +- .../demo/common/core/object/MyGroupParam.java | 3 +- .../demo/common/core/object/MyOrderParam.java | 5 +- .../demo/common/core/object/MyPageParam.java | 2 +- .../common/core/object/MyRelationParam.java | 2 +- .../common/core/object/MyWhereCriteria.java | 2 +- .../common/core/object/ResponseResult.java | 49 +- .../demo/common/core/object/TokenData.java | 2 +- .../demo/common/core/object/Tuple2.java | 2 +- .../common/core/upload/BaseUpDownloader.java | 137 + .../common/core/upload/LocalUpDownloader.java | 149 + .../core/upload/UpDownloaderFactory.java | 49 + .../core/upload/UploadResponseInfo.java | 29 + .../common/core/upload/UploadStoreInfo.java | 22 + .../core/upload/UploadStoreTypeEnum.java | 19 + .../demo/common/core/util/AopTargetUtil.java | 8 +- .../core/util/ApplicationContextHolder.java | 2 +- .../demo/common/core/util/ContextUtil.java | 2 +- .../demo/common/core/util/ExportUtil.java | 2 +- .../demo/common/core/util/ImportUtil.java | 2 +- .../orange/demo/common/core/util/IpUtil.java | 2 +- .../orange/demo/common/core/util/JwtUtil.java | 2 +- .../demo/common/core/util/LogMessageUtil.java | 2 +- .../demo/common/core/util/MyCommonUtil.java | 2 +- .../demo/common/core/util/MyDateUtil.java | 2 +- .../demo/common/core/util/MyModelUtil.java | 28 +- .../demo/common/core/util/MyPageUtil.java | 2 +- .../orange/demo/common/core/util/RsaUtil.java | 5 +- .../demo/common/core/util/TreeNode.java | 2 +- .../demo/common/core/util/UpDownloadUtil.java | 180 -- .../demo/common/core/validator/AddGroup.java | 2 +- .../common/core/validator/ConstDictRef.java | 2 +- .../core/validator/ConstDictValidator.java | 2 +- .../common/core/validator/TextLength.java | 2 +- .../core/validator/TextLengthValidator.java | 2 +- .../common/core/validator/UpdateGroup.java | 2 +- .../config/IdGeneratorAutoConfigure.java | 2 +- .../config/IdGeneratorProperties.java | 2 +- .../sequence/generator/BasicIdGenerator.java | 2 +- .../sequence/generator/MyIdGenerator.java | 2 +- .../sequence/wrapper/IdGeneratorWrapper.java | 2 +- orange-demo-single-service/pom.xml | 3 +- .../zz-resource/db-scripts}/.DS_Store | Bin 6148 -> 6148 bytes .../db-scripts}/zz-orange-demo.sql | 2805 +++++++++-------- .../f405e57c332649bc8f2319d9c6703343.png | Bin 4152 -> 0 bytes orange-demo-single-web/public/index.html | 4 +- .../src/api/Controller/SystemController.js | 6 +- .../src/assets/style/base.scss | 16 + .../src/router/systemRouters.js | 4 +- orange-demo-single-web/src/utils/widget.js | 22 +- .../src/views/generated/formClass/index.vue | 526 +++- .../views/generated/formClassCourse/index.vue | 207 -- .../generated/formClassStudent/index.vue | 181 -- .../src/views/generated/formCourse/index.vue | 12 +- .../views/generated/formCourseStats/index.vue | 12 +- .../views/generated/formCreateClass/index.vue | 2 + .../generated/formCreateCourse/index.vue | 2 + .../generated/formCreateSchool/index.vue | 2 + .../generated/formCreateStudent/index.vue | 2 + .../views/generated/formEditClass/index.vue | 2 + .../formEditClassCourseOrder/index.vue | 2 + .../views/generated/formEditCourse/index.vue | 2 + .../views/generated/formEditSchool/index.vue | 2 + .../views/generated/formEditStudent/index.vue | 2 + .../src/views/generated/formSchool/index.vue | 12 +- .../generated/formSetClassCourse/index.vue | 6 +- .../generated/formSetClassStudent/index.vue | 6 +- .../src/views/generated/formStudent/index.vue | 12 +- .../formStudentActionDetail/index.vue | 8 +- .../formStudentActionStats/index.vue | 8 +- .../views/upms/formDictManagement/index.vue | 112 +- .../src/views/upms/formPermQuery/index.vue | 2 +- .../src/views/upms/formSetRoleUsers/index.vue | 2 +- .../src/views/upms/formSysPermCode/index.vue | 2 +- .../src/views/upms/formSysRole/index.vue | 4 +- .../src/views/upms/formSysRoleUser/index.vue | 2 +- .../src/views/upms/formSysUser/index.vue | 2 +- 521 files changed, 6373 insertions(+), 5339 deletions(-) create mode 100644 orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/annotation/UploadFlagColumn.java create mode 100644 orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/upload/BaseUpDownloader.java create mode 100644 orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/upload/LocalUpDownloader.java create mode 100644 orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/upload/UpDownloaderFactory.java create mode 100644 orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/upload/UploadResponseInfo.java create mode 100644 orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/upload/UploadStoreInfo.java create mode 100644 orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/upload/UploadStoreTypeEnum.java delete mode 100644 orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/util/UpDownloadUtil.java create mode 100644 orange-demo-multi-service/common/common-minio/common-minio.iml create mode 100644 orange-demo-multi-service/common/common-minio/pom.xml create mode 100644 orange-demo-multi-service/common/common-minio/src/main/java/com/orange/demo/common/minio/config/MinioAutoConfiguration.java create mode 100644 orange-demo-multi-service/common/common-minio/src/main/java/com/orange/demo/common/minio/config/MinioProperties.java create mode 100644 orange-demo-multi-service/common/common-minio/src/main/java/com/orange/demo/common/minio/util/MinioUpDownloader.java create mode 100644 orange-demo-multi-service/common/common-minio/src/main/java/com/orange/demo/common/minio/wrapper/MinioTemplate.java create mode 100644 orange-demo-multi-service/common/common-minio/src/main/resources/META-INF/spring.factories create mode 100644 orange-demo-multi-service/zz-resource/.DS_Store rename orange-demo-multi-service/{ => zz-resource/db-scripts}/zz-orange-demo.sql (83%) delete mode 100644 orange-demo-multi-service/zzlogs/course-class/course-class.log delete mode 100644 orange-demo-multi-service/zzlogs/gateway/gateway.log delete mode 100644 orange-demo-multi-service/zzlogs/upms/upms.log delete mode 100644 orange-demo-multi-web/src/views/generated/formClassCourse/index.vue delete mode 100644 orange-demo-multi-web/src/views/generated/formClassStudent/index.vue create mode 100644 orange-demo-single-service/common/common-core/src/main/java/com/orange/demo/common/core/annotation/UploadFlagColumn.java create mode 100644 orange-demo-single-service/common/common-core/src/main/java/com/orange/demo/common/core/upload/BaseUpDownloader.java create mode 100644 orange-demo-single-service/common/common-core/src/main/java/com/orange/demo/common/core/upload/LocalUpDownloader.java create mode 100644 orange-demo-single-service/common/common-core/src/main/java/com/orange/demo/common/core/upload/UpDownloaderFactory.java create mode 100644 orange-demo-single-service/common/common-core/src/main/java/com/orange/demo/common/core/upload/UploadResponseInfo.java create mode 100644 orange-demo-single-service/common/common-core/src/main/java/com/orange/demo/common/core/upload/UploadStoreInfo.java create mode 100644 orange-demo-single-service/common/common-core/src/main/java/com/orange/demo/common/core/upload/UploadStoreTypeEnum.java delete mode 100644 orange-demo-single-service/common/common-core/src/main/java/com/orange/demo/common/core/util/UpDownloadUtil.java rename {orange-demo-multi-service/zz-resource/docker-files => orange-demo-single-service/zz-resource/db-scripts}/.DS_Store (89%) rename orange-demo-single-service/{ => zz-resource/db-scripts}/zz-orange-demo.sql (83%) delete mode 100644 orange-demo-single-service/zz-resource/upload-files/app/image/Course/pictureUrl/f405e57c332649bc8f2319d9c6703343.png delete mode 100644 orange-demo-single-web/src/views/generated/formClassCourse/index.vue delete mode 100644 orange-demo-single-web/src/views/generated/formClassStudent/index.vue diff --git a/orange-demo-multi-service/README.md b/orange-demo-multi-service/README.md index c06da543..2214073c 100644 --- a/orange-demo-multi-service/README.md +++ b/orange-demo-multi-service/README.md @@ -36,6 +36,10 @@ - 控制台URL: localhost:8858 - 用户名密码:sentinel/sentinel - 注意:该服务缺省端口为8080,容易冲突,所以改为8858。我们在所有的配置中均使用了8858,而非8080。 +- Minio + - 版本:7.0.2 + - 控制台URL:需要配置Nginx,将请求导入到我们缺省设置的19000端口,之后可通过浏览器操作minio。 + - 缺省用户名密码:admin/admin123456 - ELK (可选,docker-compose-elk) - 版本:7.5.x - Kibana控制台URL:localhost:5601 @@ -44,7 +48,6 @@ - 控制台URL:localhost:8079 - admin-monitor服务模块 (可选) - 控制台URL:localhost:8769 - - 启动upms服务 (保证登录和用户权限服务可用) - 启动其他业务应用微服务
推荐在gateway服务之前启动,以便gateway服务启动后可以即刻发现服务。由于gateway是从注册中心定时拉取微服务信息,所以在gateway之后启动的微服务,通常会延迟一小段时间之后才会被发现。 diff --git a/orange-demo-multi-service/admin-monitor/src/main/java/com/orange/demo/adminmonitor/AdminMonitorApplication.java b/orange-demo-multi-service/admin-monitor/src/main/java/com/orange/demo/adminmonitor/AdminMonitorApplication.java index 099c81e9..99045002 100644 --- a/orange-demo-multi-service/admin-monitor/src/main/java/com/orange/demo/adminmonitor/AdminMonitorApplication.java +++ b/orange-demo-multi-service/admin-monitor/src/main/java/com/orange/demo/adminmonitor/AdminMonitorApplication.java @@ -9,7 +9,7 @@ import org.springframework.cloud.client.discovery.EnableDiscoveryClient; * 服务指标监控启动类。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @SpringBootApplication @EnableAdminServer diff --git a/orange-demo-multi-service/application/application-common/src/main/java/com/orange/demo/application/common/constant/DeviceType.java b/orange-demo-multi-service/application/application-common/src/main/java/com/orange/demo/application/common/constant/DeviceType.java index 0e8b47f2..1dee697b 100644 --- a/orange-demo-multi-service/application/application-common/src/main/java/com/orange/demo/application/common/constant/DeviceType.java +++ b/orange-demo-multi-service/application/application-common/src/main/java/com/orange/demo/application/common/constant/DeviceType.java @@ -7,7 +7,7 @@ import java.util.Map; * 设备类型常量字典对象。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ public final class DeviceType { diff --git a/orange-demo-multi-service/application/application-common/src/main/java/com/orange/demo/application/common/constant/ExpLevel.java b/orange-demo-multi-service/application/application-common/src/main/java/com/orange/demo/application/common/constant/ExpLevel.java index ef5a760c..14fd122c 100644 --- a/orange-demo-multi-service/application/application-common/src/main/java/com/orange/demo/application/common/constant/ExpLevel.java +++ b/orange-demo-multi-service/application/application-common/src/main/java/com/orange/demo/application/common/constant/ExpLevel.java @@ -7,7 +7,7 @@ import java.util.Map; * 经验等级常量字典对象。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ public final class ExpLevel { diff --git a/orange-demo-multi-service/application/application-common/src/main/java/com/orange/demo/application/common/constant/Gender.java b/orange-demo-multi-service/application/application-common/src/main/java/com/orange/demo/application/common/constant/Gender.java index e7569526..8cb45321 100644 --- a/orange-demo-multi-service/application/application-common/src/main/java/com/orange/demo/application/common/constant/Gender.java +++ b/orange-demo-multi-service/application/application-common/src/main/java/com/orange/demo/application/common/constant/Gender.java @@ -7,7 +7,7 @@ import java.util.Map; * 性别常量字典对象。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ public final class Gender { diff --git a/orange-demo-multi-service/application/application-common/src/main/java/com/orange/demo/application/common/constant/StudentActionType.java b/orange-demo-multi-service/application/application-common/src/main/java/com/orange/demo/application/common/constant/StudentActionType.java index c53a1d2e..37d30d3e 100644 --- a/orange-demo-multi-service/application/application-common/src/main/java/com/orange/demo/application/common/constant/StudentActionType.java +++ b/orange-demo-multi-service/application/application-common/src/main/java/com/orange/demo/application/common/constant/StudentActionType.java @@ -7,7 +7,7 @@ import java.util.Map; * 学生行为常量字典对象。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ public final class StudentActionType { diff --git a/orange-demo-multi-service/application/application-common/src/main/java/com/orange/demo/application/common/constant/StudentStatus.java b/orange-demo-multi-service/application/application-common/src/main/java/com/orange/demo/application/common/constant/StudentStatus.java index 23c7bece..c28a3d95 100644 --- a/orange-demo-multi-service/application/application-common/src/main/java/com/orange/demo/application/common/constant/StudentStatus.java +++ b/orange-demo-multi-service/application/application-common/src/main/java/com/orange/demo/application/common/constant/StudentStatus.java @@ -7,7 +7,7 @@ import java.util.Map; * 学生状态常量字典对象。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ public final class StudentStatus { diff --git a/orange-demo-multi-service/application/application-common/src/main/java/com/orange/demo/application/common/constant/Subject.java b/orange-demo-multi-service/application/application-common/src/main/java/com/orange/demo/application/common/constant/Subject.java index 9fe2ed98..faf7e73f 100644 --- a/orange-demo-multi-service/application/application-common/src/main/java/com/orange/demo/application/common/constant/Subject.java +++ b/orange-demo-multi-service/application/application-common/src/main/java/com/orange/demo/application/common/constant/Subject.java @@ -7,7 +7,7 @@ import java.util.Map; * 学科常量字典对象。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ public final class Subject { diff --git a/orange-demo-multi-service/application/course-class/course-class-interface/src/main/java/com/orange/demo/courseclassinterface/client/AreaCodeClient.java b/orange-demo-multi-service/application/course-class/course-class-interface/src/main/java/com/orange/demo/courseclassinterface/client/AreaCodeClient.java index eeb7ac45..97a40877 100644 --- a/orange-demo-multi-service/application/course-class/course-class-interface/src/main/java/com/orange/demo/courseclassinterface/client/AreaCodeClient.java +++ b/orange-demo-multi-service/application/course-class/course-class-interface/src/main/java/com/orange/demo/courseclassinterface/client/AreaCodeClient.java @@ -17,7 +17,7 @@ import java.util.*; * 行政区划远程访问接口类。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @FeignClient(name = "system-service", fallbackFactory = AreaCodeClient.AreaCodeClientFallbackFactory.class) public interface AreaCodeClient extends BaseClient { diff --git a/orange-demo-multi-service/application/course-class/course-class-interface/src/main/java/com/orange/demo/courseclassinterface/client/CourseClient.java b/orange-demo-multi-service/application/course-class/course-class-interface/src/main/java/com/orange/demo/courseclassinterface/client/CourseClient.java index c94cfd23..e800659b 100644 --- a/orange-demo-multi-service/application/course-class/course-class-interface/src/main/java/com/orange/demo/courseclassinterface/client/CourseClient.java +++ b/orange-demo-multi-service/application/course-class/course-class-interface/src/main/java/com/orange/demo/courseclassinterface/client/CourseClient.java @@ -17,7 +17,7 @@ import java.util.*; * 课程数据服务远程数据操作访问接口。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @FeignClient( name = "course-class", diff --git a/orange-demo-multi-service/application/course-class/course-class-interface/src/main/java/com/orange/demo/courseclassinterface/client/GradeClient.java b/orange-demo-multi-service/application/course-class/course-class-interface/src/main/java/com/orange/demo/courseclassinterface/client/GradeClient.java index 7ecf9ae2..cd2959d2 100644 --- a/orange-demo-multi-service/application/course-class/course-class-interface/src/main/java/com/orange/demo/courseclassinterface/client/GradeClient.java +++ b/orange-demo-multi-service/application/course-class/course-class-interface/src/main/java/com/orange/demo/courseclassinterface/client/GradeClient.java @@ -17,7 +17,7 @@ import java.util.*; * 服务远程数据操作访问接口。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @FeignClient( name = "course-class", diff --git a/orange-demo-multi-service/application/course-class/course-class-interface/src/main/java/com/orange/demo/courseclassinterface/client/SchoolInfoClient.java b/orange-demo-multi-service/application/course-class/course-class-interface/src/main/java/com/orange/demo/courseclassinterface/client/SchoolInfoClient.java index dae8f5f4..a39cfed2 100644 --- a/orange-demo-multi-service/application/course-class/course-class-interface/src/main/java/com/orange/demo/courseclassinterface/client/SchoolInfoClient.java +++ b/orange-demo-multi-service/application/course-class/course-class-interface/src/main/java/com/orange/demo/courseclassinterface/client/SchoolInfoClient.java @@ -17,7 +17,7 @@ import java.util.*; * 校区数据服务远程数据操作访问接口。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @FeignClient( name = "course-class", diff --git a/orange-demo-multi-service/application/course-class/course-class-interface/src/main/java/com/orange/demo/courseclassinterface/client/StudentClassClient.java b/orange-demo-multi-service/application/course-class/course-class-interface/src/main/java/com/orange/demo/courseclassinterface/client/StudentClassClient.java index c32152ff..f35a64db 100644 --- a/orange-demo-multi-service/application/course-class/course-class-interface/src/main/java/com/orange/demo/courseclassinterface/client/StudentClassClient.java +++ b/orange-demo-multi-service/application/course-class/course-class-interface/src/main/java/com/orange/demo/courseclassinterface/client/StudentClassClient.java @@ -17,7 +17,7 @@ import java.util.*; * 班级数据服务远程数据操作访问接口。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @FeignClient( name = "course-class", diff --git a/orange-demo-multi-service/application/course-class/course-class-interface/src/main/java/com/orange/demo/courseclassinterface/client/StudentClient.java b/orange-demo-multi-service/application/course-class/course-class-interface/src/main/java/com/orange/demo/courseclassinterface/client/StudentClient.java index a4aeac2d..e7cfc01d 100644 --- a/orange-demo-multi-service/application/course-class/course-class-interface/src/main/java/com/orange/demo/courseclassinterface/client/StudentClient.java +++ b/orange-demo-multi-service/application/course-class/course-class-interface/src/main/java/com/orange/demo/courseclassinterface/client/StudentClient.java @@ -17,7 +17,7 @@ import java.util.*; * 学生数据服务远程数据操作访问接口。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @FeignClient( name = "course-class", diff --git a/orange-demo-multi-service/application/course-class/course-class-interface/src/main/java/com/orange/demo/courseclassinterface/constant/ClassLevel.java b/orange-demo-multi-service/application/course-class/course-class-interface/src/main/java/com/orange/demo/courseclassinterface/constant/ClassLevel.java index 7ac9f7ee..dbc452c5 100644 --- a/orange-demo-multi-service/application/course-class/course-class-interface/src/main/java/com/orange/demo/courseclassinterface/constant/ClassLevel.java +++ b/orange-demo-multi-service/application/course-class/course-class-interface/src/main/java/com/orange/demo/courseclassinterface/constant/ClassLevel.java @@ -7,7 +7,7 @@ import java.util.Map; * 班级级别常量字典对象。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ public final class ClassLevel { diff --git a/orange-demo-multi-service/application/course-class/course-class-interface/src/main/java/com/orange/demo/courseclassinterface/constant/ClassStatus.java b/orange-demo-multi-service/application/course-class/course-class-interface/src/main/java/com/orange/demo/courseclassinterface/constant/ClassStatus.java index deee73c0..c35d5e1a 100644 --- a/orange-demo-multi-service/application/course-class/course-class-interface/src/main/java/com/orange/demo/courseclassinterface/constant/ClassStatus.java +++ b/orange-demo-multi-service/application/course-class/course-class-interface/src/main/java/com/orange/demo/courseclassinterface/constant/ClassStatus.java @@ -7,7 +7,7 @@ import java.util.Map; * 班级状态常量字典对象。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ public final class ClassStatus { diff --git a/orange-demo-multi-service/application/course-class/course-class-interface/src/main/java/com/orange/demo/courseclassinterface/constant/CourseDifficult.java b/orange-demo-multi-service/application/course-class/course-class-interface/src/main/java/com/orange/demo/courseclassinterface/constant/CourseDifficult.java index 8e3cee38..28866406 100644 --- a/orange-demo-multi-service/application/course-class/course-class-interface/src/main/java/com/orange/demo/courseclassinterface/constant/CourseDifficult.java +++ b/orange-demo-multi-service/application/course-class/course-class-interface/src/main/java/com/orange/demo/courseclassinterface/constant/CourseDifficult.java @@ -7,7 +7,7 @@ import java.util.Map; * 课程难度常量字典对象。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ public final class CourseDifficult { diff --git a/orange-demo-multi-service/application/course-class/course-class-interface/src/main/java/com/orange/demo/courseclassinterface/dto/AreaCodeDto.java b/orange-demo-multi-service/application/course-class/course-class-interface/src/main/java/com/orange/demo/courseclassinterface/dto/AreaCodeDto.java index 2a5fdacd..79521061 100644 --- a/orange-demo-multi-service/application/course-class/course-class-interface/src/main/java/com/orange/demo/courseclassinterface/dto/AreaCodeDto.java +++ b/orange-demo-multi-service/application/course-class/course-class-interface/src/main/java/com/orange/demo/courseclassinterface/dto/AreaCodeDto.java @@ -6,7 +6,7 @@ import lombok.Data; * 行政区划Dto。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Data public class AreaCodeDto { diff --git a/orange-demo-multi-service/application/course-class/course-class-interface/src/main/java/com/orange/demo/courseclassinterface/dto/ClassCourseDto.java b/orange-demo-multi-service/application/course-class/course-class-interface/src/main/java/com/orange/demo/courseclassinterface/dto/ClassCourseDto.java index 0fc0aa51..a08491a9 100644 --- a/orange-demo-multi-service/application/course-class/course-class-interface/src/main/java/com/orange/demo/courseclassinterface/dto/ClassCourseDto.java +++ b/orange-demo-multi-service/application/course-class/course-class-interface/src/main/java/com/orange/demo/courseclassinterface/dto/ClassCourseDto.java @@ -10,7 +10,7 @@ import javax.validation.constraints.*; * ClassCourseDto对象。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Data public class ClassCourseDto { @@ -30,5 +30,6 @@ public class ClassCourseDto { /** * 课程顺序(数值越小越靠前)。 */ + @NotNull(message = "数据验证失败,课程顺序(数值越小越靠前)不能为空!", groups = {UpdateGroup.class}) private Integer courseOrder; } diff --git a/orange-demo-multi-service/application/course-class/course-class-interface/src/main/java/com/orange/demo/courseclassinterface/dto/ClassStudentDto.java b/orange-demo-multi-service/application/course-class/course-class-interface/src/main/java/com/orange/demo/courseclassinterface/dto/ClassStudentDto.java index 1c1bafb8..328a5947 100644 --- a/orange-demo-multi-service/application/course-class/course-class-interface/src/main/java/com/orange/demo/courseclassinterface/dto/ClassStudentDto.java +++ b/orange-demo-multi-service/application/course-class/course-class-interface/src/main/java/com/orange/demo/courseclassinterface/dto/ClassStudentDto.java @@ -10,7 +10,7 @@ import javax.validation.constraints.*; * ClassStudentDto对象。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Data public class ClassStudentDto { diff --git a/orange-demo-multi-service/application/course-class/course-class-interface/src/main/java/com/orange/demo/courseclassinterface/dto/CourseDto.java b/orange-demo-multi-service/application/course-class/course-class-interface/src/main/java/com/orange/demo/courseclassinterface/dto/CourseDto.java index d75219e3..f91e8895 100644 --- a/orange-demo-multi-service/application/course-class/course-class-interface/src/main/java/com/orange/demo/courseclassinterface/dto/CourseDto.java +++ b/orange-demo-multi-service/application/course-class/course-class-interface/src/main/java/com/orange/demo/courseclassinterface/dto/CourseDto.java @@ -17,7 +17,7 @@ import java.util.Map; * CourseDto对象。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Data public class CourseDto { @@ -122,6 +122,11 @@ public class CourseDto { */ private String updateTimeEnd; + /** + * courseId 的多对多关联表数据对象,数据对应类型为ClassCourseDto。 + */ + private Map classCourse; + /** * gradeId 字典关联数据。 */ diff --git a/orange-demo-multi-service/application/course-class/course-class-interface/src/main/java/com/orange/demo/courseclassinterface/dto/GradeDto.java b/orange-demo-multi-service/application/course-class/course-class-interface/src/main/java/com/orange/demo/courseclassinterface/dto/GradeDto.java index e4b76e7d..4eac8b30 100644 --- a/orange-demo-multi-service/application/course-class/course-class-interface/src/main/java/com/orange/demo/courseclassinterface/dto/GradeDto.java +++ b/orange-demo-multi-service/application/course-class/course-class-interface/src/main/java/com/orange/demo/courseclassinterface/dto/GradeDto.java @@ -10,7 +10,7 @@ import javax.validation.constraints.*; * GradeDto对象。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Data public class GradeDto { diff --git a/orange-demo-multi-service/application/course-class/course-class-interface/src/main/java/com/orange/demo/courseclassinterface/dto/SchoolInfoDto.java b/orange-demo-multi-service/application/course-class/course-class-interface/src/main/java/com/orange/demo/courseclassinterface/dto/SchoolInfoDto.java index ed7faabe..6e0a60b5 100644 --- a/orange-demo-multi-service/application/course-class/course-class-interface/src/main/java/com/orange/demo/courseclassinterface/dto/SchoolInfoDto.java +++ b/orange-demo-multi-service/application/course-class/course-class-interface/src/main/java/com/orange/demo/courseclassinterface/dto/SchoolInfoDto.java @@ -12,7 +12,7 @@ import java.util.Map; * SchoolInfoDto对象。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Data public class SchoolInfoDto { diff --git a/orange-demo-multi-service/application/course-class/course-class-interface/src/main/java/com/orange/demo/courseclassinterface/dto/StudentClassDto.java b/orange-demo-multi-service/application/course-class/course-class-interface/src/main/java/com/orange/demo/courseclassinterface/dto/StudentClassDto.java index 2f9185e8..648aeeff 100644 --- a/orange-demo-multi-service/application/course-class/course-class-interface/src/main/java/com/orange/demo/courseclassinterface/dto/StudentClassDto.java +++ b/orange-demo-multi-service/application/course-class/course-class-interface/src/main/java/com/orange/demo/courseclassinterface/dto/StudentClassDto.java @@ -15,7 +15,7 @@ import java.util.Map; * StudentClassDto对象。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Data public class StudentClassDto { diff --git a/orange-demo-multi-service/application/course-class/course-class-interface/src/main/java/com/orange/demo/courseclassinterface/dto/StudentDto.java b/orange-demo-multi-service/application/course-class/course-class-interface/src/main/java/com/orange/demo/courseclassinterface/dto/StudentDto.java index f9593c72..d42ab6d6 100644 --- a/orange-demo-multi-service/application/course-class/course-class-interface/src/main/java/com/orange/demo/courseclassinterface/dto/StudentDto.java +++ b/orange-demo-multi-service/application/course-class/course-class-interface/src/main/java/com/orange/demo/courseclassinterface/dto/StudentDto.java @@ -17,7 +17,7 @@ import java.util.Map; * StudentDto对象。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Data public class StudentDto { diff --git a/orange-demo-multi-service/application/course-class/course-class-service/course-class-service.iml b/orange-demo-multi-service/application/course-class/course-class-service/course-class-service.iml index 0eafbe81..bc4e5735 100644 --- a/orange-demo-multi-service/application/course-class/course-class-service/course-class-service.iml +++ b/orange-demo-multi-service/application/course-class/course-class-service/course-class-service.iml @@ -40,7 +40,6 @@ - @@ -64,7 +63,6 @@ - @@ -113,6 +111,18 @@ + + + + + + + + + + + + @@ -160,7 +170,6 @@ - diff --git a/orange-demo-multi-service/application/course-class/course-class-service/pom.xml b/orange-demo-multi-service/application/course-class/course-class-service/pom.xml index 8bfa6d8b..c1cd06ba 100644 --- a/orange-demo-multi-service/application/course-class/course-class-service/pom.xml +++ b/orange-demo-multi-service/application/course-class/course-class-service/pom.xml @@ -25,6 +25,11 @@ common-redis 1.0.0 + + com.orange.demo + common-minio + 1.0.0 + com.orange.demo common-sequence diff --git a/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/CourseClassApplication.java b/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/CourseClassApplication.java index 320a1c8a..3c01eef6 100644 --- a/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/CourseClassApplication.java +++ b/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/CourseClassApplication.java @@ -9,7 +9,7 @@ import org.springframework.context.annotation.ComponentScan; * course-class服务启动类。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @SpringCloudApplication @EnableFeignClients(basePackages = "com.orange.demo") diff --git a/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/config/ApplicationConfig.java b/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/config/ApplicationConfig.java index 60b845cc..7dd2faad 100644 --- a/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/config/ApplicationConfig.java +++ b/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/config/ApplicationConfig.java @@ -14,7 +14,7 @@ import org.springframework.context.annotation.Configuration; * defaultSomething: defaultValue * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Data @RefreshScope diff --git a/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/config/DataSourceConfig.java b/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/config/DataSourceConfig.java index dc974116..97feb4aa 100644 --- a/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/config/DataSourceConfig.java +++ b/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/config/DataSourceConfig.java @@ -14,7 +14,7 @@ import javax.sql.DataSource; * 数据源配置Bean对象。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Configuration @EnableTransactionManagement diff --git a/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/controller/AreaCodeController.java b/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/controller/AreaCodeController.java index 48e15feb..a4311490 100644 --- a/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/controller/AreaCodeController.java +++ b/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/controller/AreaCodeController.java @@ -19,7 +19,7 @@ import java.util.*; * 行政区划数据访问接口类。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @RestController @RequestMapping("/areaCode") diff --git a/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/controller/CourseController.java b/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/controller/CourseController.java index 3c45475a..7e1a6ef6 100644 --- a/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/controller/CourseController.java +++ b/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/controller/CourseController.java @@ -1,7 +1,11 @@ package com.orange.demo.courseclassservice.controller; -import cn.hutool.core.util.ReflectUtil; import cn.jimmyshi.beanquery.BeanQuery; +import cn.hutool.core.util.ReflectUtil; +import com.orange.demo.common.core.upload.BaseUpDownloader; +import com.orange.demo.common.core.upload.UpDownloaderFactory; +import com.orange.demo.common.core.upload.UploadResponseInfo; +import com.orange.demo.common.core.upload.UploadStoreInfo; import com.alibaba.fastjson.JSONObject; import com.github.pagehelper.Page; import com.github.pagehelper.page.PageMethod; @@ -10,7 +14,7 @@ import com.orange.demo.courseclassservice.service.*; import com.orange.demo.courseclassinterface.dto.*; import com.orange.demo.common.core.object.*; import com.orange.demo.common.core.util.*; -import com.orange.demo.common.core.constant.ErrorCodeEnum; +import com.orange.demo.common.core.constant.*; import com.orange.demo.common.core.base.controller.BaseController; import com.orange.demo.common.core.base.service.BaseService; import com.orange.demo.common.core.annotation.MyRequestBody; @@ -23,7 +27,6 @@ import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; -import java.io.IOException; import javax.validation.groups.Default; import java.util.*; @@ -31,7 +34,7 @@ import java.util.*; * 课程数据操作控制器类。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Slf4j @RestController @@ -44,6 +47,8 @@ public class CourseController extends BaseController { private ApplicationConfig appConfig; @Autowired private SessionCacheHelper cacheHelper; + @Autowired + private UpDownloaderFactory upDownloaderFactory; @Override protected BaseService service() { @@ -209,26 +214,33 @@ public class CourseController extends BaseController { // 如果请求参数中没有包含主键Id,就判断该文件是否为当前session上传的。 if (courseId == null) { if (!cacheHelper.existSessionUploadFile(filename)) { - response.setStatus(HttpServletResponse.SC_FORBIDDEN); + ResponseResult.output(HttpServletResponse.SC_FORBIDDEN); return; } } else { Course course = courseService.getById(courseId); if (course == null) { - response.setStatus(HttpServletResponse.SC_NOT_FOUND); + ResponseResult.output(HttpServletResponse.SC_NOT_FOUND); return; } String fieldJsonData = (String) ReflectUtil.getFieldValue(course, fieldName); if (fieldJsonData == null) { - response.setStatus(HttpServletResponse.SC_BAD_REQUEST); + ResponseResult.output(HttpServletResponse.SC_BAD_REQUEST); return; } - if (!UpDownloadUtil.containFile(fieldJsonData, filename)) { - response.setStatus(HttpServletResponse.SC_FORBIDDEN); + if (!BaseUpDownloader.containFile(fieldJsonData, filename)) { + ResponseResult.output(HttpServletResponse.SC_FORBIDDEN); return; } } - UpDownloadUtil.doDownload(appConfig.getUploadFileBaseDir(), + UploadStoreInfo storeInfo = MyModelUtil.getUploadStoreInfo(Course.class, fieldName); + if (!storeInfo.isSupportUpload()) { + ResponseResult.output(HttpServletResponse.SC_NOT_IMPLEMENTED, + ResponseResult.error(ErrorCodeEnum.INVALID_UPLOAD_FIELD)); + return; + } + BaseUpDownloader upDownloader = upDownloaderFactory.get(storeInfo.getStoreType()); + upDownloader.doDownload(appConfig.getUploadFileBaseDir(), Course.class.getSimpleName(), fieldName, filename, asImage, response); } catch (Exception e) { response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); @@ -242,20 +254,30 @@ public class CourseController extends BaseController { * @param fieldName 上传文件名。 * @param asImage 是否作为图片上传。如果是图片,今后下载的时候无需权限验证。否则就是附件上传,下载时需要权限验证。 * @param uploadFile 上传文件对象。 - * @param response Http 应答对象。 - * @throws IOException 文件读写错误。 */ @PostMapping("/upload") public void upload( @RequestParam String fieldName, @RequestParam Boolean asImage, - @RequestParam("uploadFile") MultipartFile uploadFile, - HttpServletResponse response) throws IOException { - String filename = UpDownloadUtil.doUpload(appConfig.getUploadFileBaseDir(), appConfig.getServiceContextPath(), - Course.class.getSimpleName(), fieldName, asImage, uploadFile, response); - if (filename != null) { - cacheHelper.putSessionUploadFile(filename); + @RequestParam("uploadFile") MultipartFile uploadFile) throws Exception { + UploadStoreInfo storeInfo = MyModelUtil.getUploadStoreInfo(Course.class, fieldName); + // 这里就会判断参数中指定的字段,是否支持上传操作。 + if (!storeInfo.isSupportUpload()) { + ResponseResult.output(HttpServletResponse.SC_FORBIDDEN, + ResponseResult.error(ErrorCodeEnum.INVALID_UPLOAD_FIELD)); + return; } + // 根据字段注解中的存储类型,通过工厂方法获取匹配的上传下载实现类,从而解耦。 + BaseUpDownloader upDownloader = upDownloaderFactory.get(storeInfo.getStoreType()); + UploadResponseInfo responseInfo = upDownloader.doUpload(appConfig.getServiceContextPath(), + appConfig.getUploadFileBaseDir(), Course.class.getSimpleName(), fieldName, asImage, uploadFile); + if (responseInfo.getUploadFailed()) { + ResponseResult.output(HttpServletResponse.SC_FORBIDDEN, + ResponseResult.error(ErrorCodeEnum.UPLOAD_FAILED, responseInfo.getErrorMessage())); + return; + } + cacheHelper.putSessionUploadFile(responseInfo.getFilename()); + ResponseResult.output(ResponseResult.success(responseInfo)); } /** diff --git a/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/controller/GradeController.java b/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/controller/GradeController.java index 675c9490..44149b6a 100644 --- a/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/controller/GradeController.java +++ b/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/controller/GradeController.java @@ -25,7 +25,7 @@ import java.util.*; * 年级操作控制器类。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Slf4j @RestController diff --git a/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/controller/SchoolInfoController.java b/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/controller/SchoolInfoController.java index 9035fc41..5fcf6f98 100644 --- a/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/controller/SchoolInfoController.java +++ b/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/controller/SchoolInfoController.java @@ -9,7 +9,7 @@ import com.orange.demo.courseclassservice.service.*; import com.orange.demo.courseclassinterface.dto.*; import com.orange.demo.common.core.object.*; import com.orange.demo.common.core.util.*; -import com.orange.demo.common.core.constant.ErrorCodeEnum; +import com.orange.demo.common.core.constant.*; import com.orange.demo.common.core.base.controller.BaseController; import com.orange.demo.common.core.base.service.BaseService; import com.orange.demo.common.core.annotation.MyRequestBody; @@ -25,7 +25,7 @@ import java.util.*; * 校区数据操作控制器类。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Slf4j @RestController diff --git a/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/controller/StudentClassController.java b/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/controller/StudentClassController.java index f19a0908..0ab270bb 100644 --- a/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/controller/StudentClassController.java +++ b/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/controller/StudentClassController.java @@ -8,7 +8,7 @@ import com.orange.demo.courseclassservice.service.*; import com.orange.demo.courseclassinterface.dto.*; import com.orange.demo.common.core.object.*; import com.orange.demo.common.core.util.*; -import com.orange.demo.common.core.constant.ErrorCodeEnum; +import com.orange.demo.common.core.constant.*; import com.orange.demo.common.core.base.controller.BaseController; import com.orange.demo.common.core.base.service.BaseService; import com.orange.demo.common.core.annotation.MyRequestBody; @@ -25,7 +25,7 @@ import java.util.stream.Collectors; * 班级数据操作控制器类。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Slf4j @RestController diff --git a/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/controller/StudentController.java b/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/controller/StudentController.java index 3c17025a..84ca02fe 100644 --- a/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/controller/StudentController.java +++ b/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/controller/StudentController.java @@ -9,7 +9,7 @@ import com.orange.demo.courseclassservice.service.*; import com.orange.demo.courseclassinterface.dto.*; import com.orange.demo.common.core.object.*; import com.orange.demo.common.core.util.*; -import com.orange.demo.common.core.constant.ErrorCodeEnum; +import com.orange.demo.common.core.constant.*; import com.orange.demo.common.core.base.controller.BaseController; import com.orange.demo.common.core.base.service.BaseService; import com.orange.demo.common.core.annotation.MyRequestBody; @@ -25,7 +25,7 @@ import java.util.*; * 学生数据操作控制器类。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Slf4j @RestController diff --git a/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/dao/AreaCodeMapper.java b/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/dao/AreaCodeMapper.java index c0c05280..e33e25d0 100644 --- a/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/dao/AreaCodeMapper.java +++ b/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/dao/AreaCodeMapper.java @@ -7,7 +7,7 @@ import com.orange.demo.courseclassservice.model.AreaCode; * 行政区划数据操作访问接口。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ public interface AreaCodeMapper extends BaseDaoMapper { } \ No newline at end of file diff --git a/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/dao/ClassCourseMapper.java b/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/dao/ClassCourseMapper.java index eb3f25b9..69ec8cf1 100644 --- a/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/dao/ClassCourseMapper.java +++ b/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/dao/ClassCourseMapper.java @@ -7,7 +7,7 @@ import com.orange.demo.courseclassservice.model.ClassCourse; * 数据操作访问接口。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ public interface ClassCourseMapper extends BaseDaoMapper { } diff --git a/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/dao/ClassStudentMapper.java b/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/dao/ClassStudentMapper.java index b9b946ee..566cb9c9 100644 --- a/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/dao/ClassStudentMapper.java +++ b/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/dao/ClassStudentMapper.java @@ -7,7 +7,7 @@ import com.orange.demo.courseclassservice.model.ClassStudent; * 数据操作访问接口。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ public interface ClassStudentMapper extends BaseDaoMapper { } diff --git a/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/dao/CourseMapper.java b/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/dao/CourseMapper.java index 29822dd9..847784d6 100644 --- a/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/dao/CourseMapper.java +++ b/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/dao/CourseMapper.java @@ -10,7 +10,7 @@ import java.util.*; * 课程数据数据操作访问接口。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ public interface CourseMapper extends BaseDaoMapper { diff --git a/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/dao/GradeMapper.java b/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/dao/GradeMapper.java index a46bffd1..98906eac 100644 --- a/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/dao/GradeMapper.java +++ b/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/dao/GradeMapper.java @@ -7,7 +7,7 @@ import com.orange.demo.courseclassservice.model.Grade; * 年级数据操作访问接口。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ public interface GradeMapper extends BaseDaoMapper { } diff --git a/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/dao/MaterialEditionMapper.java b/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/dao/MaterialEditionMapper.java index 4d211e80..fc59a488 100644 --- a/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/dao/MaterialEditionMapper.java +++ b/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/dao/MaterialEditionMapper.java @@ -7,7 +7,7 @@ import com.orange.demo.courseclassservice.model.MaterialEdition; * 数据操作访问接口。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ public interface MaterialEditionMapper extends BaseDaoMapper { } diff --git a/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/dao/SchoolInfoMapper.java b/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/dao/SchoolInfoMapper.java index 7a32ab34..652d67d0 100644 --- a/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/dao/SchoolInfoMapper.java +++ b/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/dao/SchoolInfoMapper.java @@ -10,7 +10,7 @@ import java.util.*; * 校区数据数据操作访问接口。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ public interface SchoolInfoMapper extends BaseDaoMapper { diff --git a/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/dao/StudentClassMapper.java b/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/dao/StudentClassMapper.java index 1f7d95f5..7e5fd3c2 100644 --- a/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/dao/StudentClassMapper.java +++ b/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/dao/StudentClassMapper.java @@ -10,7 +10,7 @@ import java.util.*; * 班级数据数据操作访问接口。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ public interface StudentClassMapper extends BaseDaoMapper { diff --git a/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/dao/StudentMapper.java b/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/dao/StudentMapper.java index 4d64e013..f79092d8 100644 --- a/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/dao/StudentMapper.java +++ b/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/dao/StudentMapper.java @@ -10,7 +10,7 @@ import java.util.*; * 学生数据数据操作访问接口。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ public interface StudentMapper extends BaseDaoMapper { diff --git a/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/dao/mapper/CourseMapper.xml b/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/dao/mapper/CourseMapper.xml index 9fcece8d..4e12a76f 100644 --- a/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/dao/mapper/CourseMapper.xml +++ b/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/dao/mapper/CourseMapper.xml @@ -16,6 +16,11 @@ + + + + @@ -81,9 +86,10 @@ - SELECT - zz_course.* + zz_course.*, + zz_class_course.* FROM zz_course, zz_class_course diff --git a/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/model/AreaCode.java b/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/model/AreaCode.java index abef3c6d..1af61600 100644 --- a/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/model/AreaCode.java +++ b/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/model/AreaCode.java @@ -8,7 +8,7 @@ import javax.persistence.*; * 行政区划实体对象。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Data @Table(name = "zz_area_code") diff --git a/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/model/ClassCourse.java b/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/model/ClassCourse.java index 078088c8..2029bc78 100644 --- a/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/model/ClassCourse.java +++ b/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/model/ClassCourse.java @@ -8,7 +8,7 @@ import javax.validation.constraints.*; * ClassCourse实体对象。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Data @Table(name = "zz_class_course") @@ -33,6 +33,7 @@ public class ClassCourse { /** * 课程顺序(数值越小越靠前)。 */ + @NotNull(message = "数据验证失败,课程顺序(数值越小越靠前)不能为空!") @Column(name = "course_order") private Integer courseOrder; } diff --git a/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/model/ClassStudent.java b/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/model/ClassStudent.java index a635e953..d80246bd 100644 --- a/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/model/ClassStudent.java +++ b/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/model/ClassStudent.java @@ -8,7 +8,7 @@ import javax.validation.constraints.*; * ClassStudent实体对象。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Data @Table(name = "zz_class_student") diff --git a/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/model/Course.java b/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/model/Course.java index cecc500c..72d728e1 100644 --- a/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/model/Course.java +++ b/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/model/Course.java @@ -2,6 +2,8 @@ package com.orange.demo.courseclassservice.model; import com.orange.demo.courseclassinterface.constant.CourseDifficult; import com.orange.demo.application.common.constant.Subject; +import com.orange.demo.common.core.upload.UploadStoreTypeEnum; +import com.orange.demo.common.core.annotation.UploadFlagColumn; import com.orange.demo.common.core.annotation.RelationDict; import com.orange.demo.common.core.annotation.RelationConstDict; import com.orange.demo.common.core.base.mapper.BaseModelMapper; @@ -21,7 +23,7 @@ import java.util.Map; * Course实体对象。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Data @Table(name = "zz_course") @@ -85,6 +87,7 @@ public class Course { /** * 多张课程图片地址。 */ + @UploadFlagColumn(storeType = UploadStoreTypeEnum.MINIO_SYSTEM) @NotBlank(message = "数据验证失败,课程图片不能为空!") @Column(name = "picture_url") private String pictureUrl; @@ -143,6 +146,12 @@ public class Course { @Transient private String updateTimeEnd; + /** + * courseId 的多对多关联表数据对象。 + */ + @Transient + private ClassCourse classCourse; + @RelationDict( masterIdField = "gradeId", slaveServiceName = "gradeService", @@ -172,6 +181,7 @@ public class Course { * @param courseDto 域对象。 * @return 实体对象。 */ + @Mapping(target = "classCourse", expression = "java(mapToBean(courseDto.getClassCourse(), com.orange.demo.courseclassservice.model.ClassCourse.class))") @Override Course toModel(CourseDto courseDto); /** @@ -180,6 +190,7 @@ public class Course { * @param course 实体对象。 * @return 域对象。 */ + @Mapping(target = "classCourse", expression = "java(beanToMap(course.getClassCourse(), false))") @Override CourseDto fromModel(Course course); } diff --git a/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/model/Grade.java b/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/model/Grade.java index 4828f6a3..6a98afb1 100644 --- a/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/model/Grade.java +++ b/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/model/Grade.java @@ -10,7 +10,7 @@ import javax.validation.constraints.*; * Grade实体对象。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Data @Table(name = "zz_grade") diff --git a/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/model/MaterialEdition.java b/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/model/MaterialEdition.java index e27f2fd8..b8c09a0a 100644 --- a/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/model/MaterialEdition.java +++ b/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/model/MaterialEdition.java @@ -8,7 +8,7 @@ import javax.validation.constraints.*; * MaterialEdition实体对象。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Data @Table(name = "zz_material_edition") diff --git a/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/model/SchoolInfo.java b/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/model/SchoolInfo.java index 361d4817..8abfc159 100644 --- a/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/model/SchoolInfo.java +++ b/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/model/SchoolInfo.java @@ -15,7 +15,7 @@ import java.util.Map; * SchoolInfo实体对象。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Data @Table(name = "zz_school_info") diff --git a/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/model/Student.java b/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/model/Student.java index 49b482d1..f0021c48 100644 --- a/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/model/Student.java +++ b/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/model/Student.java @@ -21,7 +21,7 @@ import java.util.Map; * Student实体对象。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Data @Table(name = "zz_student") diff --git a/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/model/StudentClass.java b/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/model/StudentClass.java index 5eab25ac..59c9cce2 100644 --- a/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/model/StudentClass.java +++ b/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/model/StudentClass.java @@ -21,7 +21,7 @@ import java.util.Map; * StudentClass实体对象。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Data @Table(name = "zz_class") diff --git a/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/service/AreaCodeService.java b/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/service/AreaCodeService.java index fbdf6e92..e5c74948 100644 --- a/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/service/AreaCodeService.java +++ b/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/service/AreaCodeService.java @@ -17,7 +17,7 @@ import java.util.List; * 行政区划的Service类。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Service public class AreaCodeService extends BaseDictService { diff --git a/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/service/CourseService.java b/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/service/CourseService.java index 6171dfc3..0b4c09a7 100644 --- a/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/service/CourseService.java +++ b/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/service/CourseService.java @@ -21,7 +21,7 @@ import java.util.*; * 课程数据数据操作服务类。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Service public class CourseService extends BaseService { diff --git a/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/service/GradeService.java b/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/service/GradeService.java index beb5431d..dedaecf2 100644 --- a/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/service/GradeService.java +++ b/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/service/GradeService.java @@ -18,7 +18,7 @@ import javax.annotation.PostConstruct; * 年级数据操作服务类。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Service public class GradeService extends BaseDictService { diff --git a/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/service/SchoolInfoService.java b/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/service/SchoolInfoService.java index 009f96b7..619042c8 100644 --- a/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/service/SchoolInfoService.java +++ b/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/service/SchoolInfoService.java @@ -20,7 +20,7 @@ import java.util.*; * 校区数据数据操作服务类。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Service public class SchoolInfoService extends BaseService { diff --git a/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/service/StudentClassService.java b/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/service/StudentClassService.java index 59f5d94c..2c84bfdc 100644 --- a/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/service/StudentClassService.java +++ b/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/service/StudentClassService.java @@ -23,7 +23,7 @@ import java.util.*; * 班级数据数据操作服务类。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Service public class StudentClassService extends BaseService { diff --git a/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/service/StudentService.java b/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/service/StudentService.java index 237b96cf..27e4f812 100644 --- a/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/service/StudentService.java +++ b/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/service/StudentService.java @@ -21,7 +21,7 @@ import java.util.*; * 学生数据数据操作服务类。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Service public class StudentService extends BaseService { diff --git a/orange-demo-multi-service/application/gateway/src/main/java/com/orange/demo/gateway/GatewayApplication.java b/orange-demo-multi-service/application/gateway/src/main/java/com/orange/demo/gateway/GatewayApplication.java index bb5e15a7..c6c8b1fb 100644 --- a/orange-demo-multi-service/application/gateway/src/main/java/com/orange/demo/gateway/GatewayApplication.java +++ b/orange-demo-multi-service/application/gateway/src/main/java/com/orange/demo/gateway/GatewayApplication.java @@ -18,7 +18,7 @@ import org.springframework.web.bind.annotation.RestController; * 网关服务启动类。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @EnableAutoConfiguration(exclude = {DataSourceAutoConfiguration.class}) @SpringCloudApplication diff --git a/orange-demo-multi-service/application/gateway/src/main/java/com/orange/demo/gateway/config/ApplicationConfig.java b/orange-demo-multi-service/application/gateway/src/main/java/com/orange/demo/gateway/config/ApplicationConfig.java index 8fe610e9..7c4ad21b 100644 --- a/orange-demo-multi-service/application/gateway/src/main/java/com/orange/demo/gateway/config/ApplicationConfig.java +++ b/orange-demo-multi-service/application/gateway/src/main/java/com/orange/demo/gateway/config/ApplicationConfig.java @@ -9,7 +9,7 @@ import org.springframework.context.annotation.Configuration; * 网关业务配置类。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Data @RefreshScope diff --git a/orange-demo-multi-service/application/gateway/src/main/java/com/orange/demo/gateway/config/CorsConfig.java b/orange-demo-multi-service/application/gateway/src/main/java/com/orange/demo/gateway/config/CorsConfig.java index 7752867c..ca538d9c 100644 --- a/orange-demo-multi-service/application/gateway/src/main/java/com/orange/demo/gateway/config/CorsConfig.java +++ b/orange-demo-multi-service/application/gateway/src/main/java/com/orange/demo/gateway/config/CorsConfig.java @@ -12,7 +12,7 @@ import org.springframework.web.util.pattern.PathPatternParser; * 跨域信任配置类。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Configuration public class CorsConfig { diff --git a/orange-demo-multi-service/application/gateway/src/main/java/com/orange/demo/gateway/config/FilterConfig.java b/orange-demo-multi-service/application/gateway/src/main/java/com/orange/demo/gateway/config/FilterConfig.java index 74f0abe6..dc7eb837 100644 --- a/orange-demo-multi-service/application/gateway/src/main/java/com/orange/demo/gateway/config/FilterConfig.java +++ b/orange-demo-multi-service/application/gateway/src/main/java/com/orange/demo/gateway/config/FilterConfig.java @@ -11,7 +11,7 @@ import java.nio.charset.StandardCharsets; * Web通用过滤器配置类。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Configuration public class FilterConfig { diff --git a/orange-demo-multi-service/application/gateway/src/main/java/com/orange/demo/gateway/config/SentinelConfig.java b/orange-demo-multi-service/application/gateway/src/main/java/com/orange/demo/gateway/config/SentinelConfig.java index 62a1cbf8..08a2db82 100644 --- a/orange-demo-multi-service/application/gateway/src/main/java/com/orange/demo/gateway/config/SentinelConfig.java +++ b/orange-demo-multi-service/application/gateway/src/main/java/com/orange/demo/gateway/config/SentinelConfig.java @@ -17,7 +17,7 @@ import java.util.*; * Spring Cloud Gateway的Sentinel流控配置类。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Configuration public class SentinelConfig { diff --git a/orange-demo-multi-service/application/gateway/src/main/java/com/orange/demo/gateway/constant/GatewayConstant.java b/orange-demo-multi-service/application/gateway/src/main/java/com/orange/demo/gateway/constant/GatewayConstant.java index b58f4d1b..e03cb94b 100644 --- a/orange-demo-multi-service/application/gateway/src/main/java/com/orange/demo/gateway/constant/GatewayConstant.java +++ b/orange-demo-multi-service/application/gateway/src/main/java/com/orange/demo/gateway/constant/GatewayConstant.java @@ -4,7 +4,7 @@ package com.orange.demo.gateway.constant; * 网关业务相关的常量对象。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ public final class GatewayConstant { @@ -16,12 +16,12 @@ public final class GatewayConstant { /** * 登录URL。 */ - public static final String ADMIN_LOGIN_URL = "/admin/login/doLogin"; + public static final String ADMIN_LOGIN_URL = "/admin/upms/login/doLogin"; /** * 登出URL。 */ - public static final String ADMIN_LOGOUT_URL = "/admin/login/doLogout"; + public static final String ADMIN_LOGOUT_URL = "/admin/upms/login/doLogout"; /** * sessionId的键名称。 diff --git a/orange-demo-multi-service/application/gateway/src/main/java/com/orange/demo/gateway/filter/AuthenticationPostFilter.java b/orange-demo-multi-service/application/gateway/src/main/java/com/orange/demo/gateway/filter/AuthenticationPostFilter.java index 9a2d8a4d..ed7f6954 100644 --- a/orange-demo-multi-service/application/gateway/src/main/java/com/orange/demo/gateway/filter/AuthenticationPostFilter.java +++ b/orange-demo-multi-service/application/gateway/src/main/java/com/orange/demo/gateway/filter/AuthenticationPostFilter.java @@ -46,7 +46,7 @@ import java.util.Map; * 全局后处理过滤器。主要用于将用户的会话信息存到缓存服务器,以及在登出时清除缓存中的会话数据。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Slf4j public class AuthenticationPostFilter implements GlobalFilter, Ordered { diff --git a/orange-demo-multi-service/application/gateway/src/main/java/com/orange/demo/gateway/filter/AuthenticationPreFilter.java b/orange-demo-multi-service/application/gateway/src/main/java/com/orange/demo/gateway/filter/AuthenticationPreFilter.java index 4eafcc60..268d9396 100644 --- a/orange-demo-multi-service/application/gateway/src/main/java/com/orange/demo/gateway/filter/AuthenticationPreFilter.java +++ b/orange-demo-multi-service/application/gateway/src/main/java/com/orange/demo/gateway/filter/AuthenticationPreFilter.java @@ -38,7 +38,7 @@ import java.util.Map; * 全局前处理过滤器。主要用于用户操作权限验证。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Slf4j public class AuthenticationPreFilter implements GlobalFilter, Ordered { @@ -70,7 +70,7 @@ public class AuthenticationPreFilter implements GlobalFilter, Ordered { response.setStatusCode(HttpStatus.UNAUTHORIZED); response.getHeaders().setContentType(MediaType.APPLICATION_JSON); byte[] responseBody = JSON.toJSONString(ResponseResult.error(ErrorCodeEnum.UNAUTHORIZED_LOGIN, - "用户登录已过期,请重新登录!")).getBytes(StandardCharsets.UTF_8); + "用户登录已过期或尚未登录,请重新登录!")).getBytes(StandardCharsets.UTF_8); return response.writeWith(Flux.just(response.bufferFactory().wrap(responseBody))); } // 这里判断是否需要定时刷新token diff --git a/orange-demo-multi-service/application/gateway/src/main/java/com/orange/demo/gateway/filter/RequestLogFilter.java b/orange-demo-multi-service/application/gateway/src/main/java/com/orange/demo/gateway/filter/RequestLogFilter.java index 8149f41a..6bc9200c 100644 --- a/orange-demo-multi-service/application/gateway/src/main/java/com/orange/demo/gateway/filter/RequestLogFilter.java +++ b/orange-demo-multi-service/application/gateway/src/main/java/com/orange/demo/gateway/filter/RequestLogFilter.java @@ -17,7 +17,7 @@ import reactor.core.publisher.Mono; * 为整个链路生成唯一的traceId,并存储在Request Head中。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Slf4j public class RequestLogFilter implements GlobalFilter, Ordered { diff --git a/orange-demo-multi-service/application/gateway/src/main/java/com/orange/demo/gateway/filter/ResponseLogFilter.java b/orange-demo-multi-service/application/gateway/src/main/java/com/orange/demo/gateway/filter/ResponseLogFilter.java index accf0145..d0a9428d 100644 --- a/orange-demo-multi-service/application/gateway/src/main/java/com/orange/demo/gateway/filter/ResponseLogFilter.java +++ b/orange-demo-multi-service/application/gateway/src/main/java/com/orange/demo/gateway/filter/ResponseLogFilter.java @@ -16,7 +16,7 @@ import reactor.core.publisher.Mono; * 将整个链路的traceId存储在Response Head中,并返回给前端,便于问题定位。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Slf4j public class ResponseLogFilter implements GlobalFilter, Ordered { diff --git a/orange-demo-multi-service/application/stats/stats-interface/src/main/java/com/orange/demo/statsinterface/client/CourseTransStatsClient.java b/orange-demo-multi-service/application/stats/stats-interface/src/main/java/com/orange/demo/statsinterface/client/CourseTransStatsClient.java index 021f3fc0..598f15cc 100644 --- a/orange-demo-multi-service/application/stats/stats-interface/src/main/java/com/orange/demo/statsinterface/client/CourseTransStatsClient.java +++ b/orange-demo-multi-service/application/stats/stats-interface/src/main/java/com/orange/demo/statsinterface/client/CourseTransStatsClient.java @@ -17,7 +17,7 @@ import java.util.*; * 课程统计服务远程数据操作访问接口。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @FeignClient( name = "stats", diff --git a/orange-demo-multi-service/application/stats/stats-interface/src/main/java/com/orange/demo/statsinterface/client/StudentActionStatsClient.java b/orange-demo-multi-service/application/stats/stats-interface/src/main/java/com/orange/demo/statsinterface/client/StudentActionStatsClient.java index 071bfa62..b9bbb0e4 100644 --- a/orange-demo-multi-service/application/stats/stats-interface/src/main/java/com/orange/demo/statsinterface/client/StudentActionStatsClient.java +++ b/orange-demo-multi-service/application/stats/stats-interface/src/main/java/com/orange/demo/statsinterface/client/StudentActionStatsClient.java @@ -17,7 +17,7 @@ import java.util.*; * 学生行为统计服务远程数据操作访问接口。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @FeignClient( name = "stats", diff --git a/orange-demo-multi-service/application/stats/stats-interface/src/main/java/com/orange/demo/statsinterface/client/StudentActionTransClient.java b/orange-demo-multi-service/application/stats/stats-interface/src/main/java/com/orange/demo/statsinterface/client/StudentActionTransClient.java index 8e29ff99..c747af1d 100644 --- a/orange-demo-multi-service/application/stats/stats-interface/src/main/java/com/orange/demo/statsinterface/client/StudentActionTransClient.java +++ b/orange-demo-multi-service/application/stats/stats-interface/src/main/java/com/orange/demo/statsinterface/client/StudentActionTransClient.java @@ -17,7 +17,7 @@ import java.util.*; * 学生行为流水服务远程数据操作访问接口。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @FeignClient( name = "stats", diff --git a/orange-demo-multi-service/application/stats/stats-interface/src/main/java/com/orange/demo/statsinterface/dto/CourseTransStatsDto.java b/orange-demo-multi-service/application/stats/stats-interface/src/main/java/com/orange/demo/statsinterface/dto/CourseTransStatsDto.java index 1d39cf27..d0bf146c 100644 --- a/orange-demo-multi-service/application/stats/stats-interface/src/main/java/com/orange/demo/statsinterface/dto/CourseTransStatsDto.java +++ b/orange-demo-multi-service/application/stats/stats-interface/src/main/java/com/orange/demo/statsinterface/dto/CourseTransStatsDto.java @@ -15,7 +15,7 @@ import java.util.Map; * CourseTransStatsDto对象。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Data public class CourseTransStatsDto { diff --git a/orange-demo-multi-service/application/stats/stats-interface/src/main/java/com/orange/demo/statsinterface/dto/StudentActionStatsDto.java b/orange-demo-multi-service/application/stats/stats-interface/src/main/java/com/orange/demo/statsinterface/dto/StudentActionStatsDto.java index b752fd3b..668d92c0 100644 --- a/orange-demo-multi-service/application/stats/stats-interface/src/main/java/com/orange/demo/statsinterface/dto/StudentActionStatsDto.java +++ b/orange-demo-multi-service/application/stats/stats-interface/src/main/java/com/orange/demo/statsinterface/dto/StudentActionStatsDto.java @@ -13,7 +13,7 @@ import java.util.Map; * StudentActionStatsDto对象。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Data public class StudentActionStatsDto { diff --git a/orange-demo-multi-service/application/stats/stats-interface/src/main/java/com/orange/demo/statsinterface/dto/StudentActionTransDto.java b/orange-demo-multi-service/application/stats/stats-interface/src/main/java/com/orange/demo/statsinterface/dto/StudentActionTransDto.java index 43e510c9..d9dff617 100644 --- a/orange-demo-multi-service/application/stats/stats-interface/src/main/java/com/orange/demo/statsinterface/dto/StudentActionTransDto.java +++ b/orange-demo-multi-service/application/stats/stats-interface/src/main/java/com/orange/demo/statsinterface/dto/StudentActionTransDto.java @@ -16,7 +16,7 @@ import java.util.Map; * StudentActionTransDto对象。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Data public class StudentActionTransDto { diff --git a/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/StatsApplication.java b/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/StatsApplication.java index ba4d7307..cfeedf58 100644 --- a/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/StatsApplication.java +++ b/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/StatsApplication.java @@ -9,7 +9,7 @@ import org.springframework.context.annotation.ComponentScan; * stats服务启动类。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @SpringCloudApplication @EnableFeignClients(basePackages = "com.orange.demo") diff --git a/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/config/ApplicationConfig.java b/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/config/ApplicationConfig.java index 9743fc8a..ca592e94 100644 --- a/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/config/ApplicationConfig.java +++ b/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/config/ApplicationConfig.java @@ -14,7 +14,7 @@ import org.springframework.context.annotation.Configuration; * defaultSomething: defaultValue * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Data @RefreshScope diff --git a/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/config/DataSourceConfig.java b/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/config/DataSourceConfig.java index 5e7213ee..a7f4bbba 100644 --- a/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/config/DataSourceConfig.java +++ b/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/config/DataSourceConfig.java @@ -14,7 +14,7 @@ import javax.sql.DataSource; * 数据源配置Bean对象。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Configuration @EnableTransactionManagement diff --git a/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/controller/CourseTransStatsController.java b/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/controller/CourseTransStatsController.java index 784eda7c..4ef20569 100644 --- a/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/controller/CourseTransStatsController.java +++ b/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/controller/CourseTransStatsController.java @@ -8,7 +8,7 @@ import com.orange.demo.statsservice.service.*; import com.orange.demo.statsinterface.dto.*; import com.orange.demo.common.core.object.*; import com.orange.demo.common.core.util.*; -import com.orange.demo.common.core.constant.ErrorCodeEnum; +import com.orange.demo.common.core.constant.*; import com.orange.demo.common.core.base.controller.BaseController; import com.orange.demo.common.core.base.service.BaseService; import com.orange.demo.common.core.annotation.MyRequestBody; @@ -22,7 +22,7 @@ import java.util.*; * 课程统计操作控制器类。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Slf4j @RestController diff --git a/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/controller/StudentActionStatsController.java b/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/controller/StudentActionStatsController.java index 470a582f..09726c6e 100644 --- a/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/controller/StudentActionStatsController.java +++ b/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/controller/StudentActionStatsController.java @@ -8,7 +8,7 @@ import com.orange.demo.statsservice.service.*; import com.orange.demo.statsinterface.dto.*; import com.orange.demo.common.core.object.*; import com.orange.demo.common.core.util.*; -import com.orange.demo.common.core.constant.ErrorCodeEnum; +import com.orange.demo.common.core.constant.*; import com.orange.demo.common.core.base.controller.BaseController; import com.orange.demo.common.core.base.service.BaseService; import com.orange.demo.common.core.annotation.MyRequestBody; @@ -22,7 +22,7 @@ import java.util.*; * 学生行为统计操作控制器类。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Slf4j @RestController diff --git a/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/controller/StudentActionTransController.java b/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/controller/StudentActionTransController.java index 4a6bd5e4..2be0d21a 100644 --- a/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/controller/StudentActionTransController.java +++ b/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/controller/StudentActionTransController.java @@ -8,7 +8,7 @@ import com.orange.demo.statsservice.service.*; import com.orange.demo.statsinterface.dto.*; import com.orange.demo.common.core.object.*; import com.orange.demo.common.core.util.*; -import com.orange.demo.common.core.constant.ErrorCodeEnum; +import com.orange.demo.common.core.constant.*; import com.orange.demo.common.core.base.controller.BaseController; import com.orange.demo.common.core.base.service.BaseService; import com.orange.demo.common.core.annotation.MyRequestBody; @@ -24,7 +24,7 @@ import java.util.*; * 学生行为流水操作控制器类。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Slf4j @RestController diff --git a/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/dao/CourseTransStatsMapper.java b/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/dao/CourseTransStatsMapper.java index 7d853aa2..13cac852 100644 --- a/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/dao/CourseTransStatsMapper.java +++ b/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/dao/CourseTransStatsMapper.java @@ -10,7 +10,7 @@ import java.util.*; * 课程统计数据操作访问接口。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ public interface CourseTransStatsMapper extends BaseDaoMapper { diff --git a/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/dao/GradeMapper.java b/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/dao/GradeMapper.java index 8cd0bbba..a9e075af 100644 --- a/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/dao/GradeMapper.java +++ b/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/dao/GradeMapper.java @@ -7,7 +7,7 @@ import com.orange.demo.statsservice.model.Grade; * 数据操作访问接口。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ public interface GradeMapper extends BaseDaoMapper { } diff --git a/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/dao/SchoolInfoMapper.java b/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/dao/SchoolInfoMapper.java index 24710013..e1ff64e7 100644 --- a/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/dao/SchoolInfoMapper.java +++ b/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/dao/SchoolInfoMapper.java @@ -7,7 +7,7 @@ import com.orange.demo.statsservice.model.SchoolInfo; * 数据操作访问接口。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ public interface SchoolInfoMapper extends BaseDaoMapper { } diff --git a/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/dao/StudentActionStatsMapper.java b/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/dao/StudentActionStatsMapper.java index 0d27a8fd..2e7b8260 100644 --- a/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/dao/StudentActionStatsMapper.java +++ b/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/dao/StudentActionStatsMapper.java @@ -10,7 +10,7 @@ import java.util.*; * 学生行为统计数据操作访问接口。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ public interface StudentActionStatsMapper extends BaseDaoMapper { diff --git a/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/dao/StudentActionTransMapper.java b/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/dao/StudentActionTransMapper.java index 7273127b..103e8a42 100644 --- a/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/dao/StudentActionTransMapper.java +++ b/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/dao/StudentActionTransMapper.java @@ -10,7 +10,7 @@ import java.util.*; * 学生行为流水数据操作访问接口。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ public interface StudentActionTransMapper extends BaseDaoMapper { diff --git a/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/model/CourseTransStats.java b/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/model/CourseTransStats.java index cfd62cb2..87cbe77a 100644 --- a/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/model/CourseTransStats.java +++ b/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/model/CourseTransStats.java @@ -23,7 +23,7 @@ import java.util.Map; * CourseTransStats实体对象。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Data @Table(name = "zz_course_trans_stats") diff --git a/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/model/Grade.java b/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/model/Grade.java index e8df4178..83526921 100644 --- a/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/model/Grade.java +++ b/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/model/Grade.java @@ -10,7 +10,7 @@ import javax.validation.constraints.*; * Grade实体对象。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Data @Table(name = "zz_grade") diff --git a/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/model/SchoolInfo.java b/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/model/SchoolInfo.java index 26c455ce..cfde3db6 100644 --- a/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/model/SchoolInfo.java +++ b/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/model/SchoolInfo.java @@ -8,7 +8,7 @@ import javax.validation.constraints.*; * SchoolInfo实体对象。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Data @Table(name = "zz_school_info") diff --git a/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/model/StudentActionStats.java b/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/model/StudentActionStats.java index 21b63d61..15ec863d 100644 --- a/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/model/StudentActionStats.java +++ b/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/model/StudentActionStats.java @@ -20,7 +20,7 @@ import java.util.Map; * StudentActionStats实体对象。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Data @Table(name = "zz_student_action_stats") diff --git a/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/model/StudentActionTrans.java b/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/model/StudentActionTrans.java index 11fd603f..0f9725f3 100644 --- a/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/model/StudentActionTrans.java +++ b/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/model/StudentActionTrans.java @@ -24,7 +24,7 @@ import java.util.Map; * StudentActionTrans实体对象。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Data @Table(name = "zz_student_action_trans") diff --git a/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/service/CourseTransStatsService.java b/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/service/CourseTransStatsService.java index 858bc9da..fbfb2512 100644 --- a/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/service/CourseTransStatsService.java +++ b/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/service/CourseTransStatsService.java @@ -17,7 +17,7 @@ import java.util.*; * 课程统计数据操作服务类。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Service public class CourseTransStatsService extends BaseService { diff --git a/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/service/StudentActionStatsService.java b/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/service/StudentActionStatsService.java index f5a1c19e..2507d935 100644 --- a/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/service/StudentActionStatsService.java +++ b/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/service/StudentActionStatsService.java @@ -17,7 +17,7 @@ import java.util.*; * 学生行为统计数据操作服务类。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Service public class StudentActionStatsService extends BaseService { diff --git a/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/service/StudentActionTransService.java b/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/service/StudentActionTransService.java index 03b407ef..a9a5c062 100644 --- a/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/service/StudentActionTransService.java +++ b/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/service/StudentActionTransService.java @@ -22,7 +22,7 @@ import java.util.*; * 学生行为流水数据操作服务类。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Service public class StudentActionTransService extends BaseService { diff --git a/orange-demo-multi-service/application/upms/upms-interface/src/main/java/com/orange/demo/upmsinterface/client/SysUserClient.java b/orange-demo-multi-service/application/upms/upms-interface/src/main/java/com/orange/demo/upmsinterface/client/SysUserClient.java index 8dfbb095..f8410dcb 100644 --- a/orange-demo-multi-service/application/upms/upms-interface/src/main/java/com/orange/demo/upmsinterface/client/SysUserClient.java +++ b/orange-demo-multi-service/application/upms/upms-interface/src/main/java/com/orange/demo/upmsinterface/client/SysUserClient.java @@ -17,7 +17,7 @@ import java.util.*; * 用户管理服务远程数据操作访问接口。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @FeignClient( name = "upms", diff --git a/orange-demo-multi-service/application/upms/upms-interface/src/main/java/com/orange/demo/upmsinterface/constant/SysMenuType.java b/orange-demo-multi-service/application/upms/upms-interface/src/main/java/com/orange/demo/upmsinterface/constant/SysMenuType.java index c326aab1..86c80f20 100644 --- a/orange-demo-multi-service/application/upms/upms-interface/src/main/java/com/orange/demo/upmsinterface/constant/SysMenuType.java +++ b/orange-demo-multi-service/application/upms/upms-interface/src/main/java/com/orange/demo/upmsinterface/constant/SysMenuType.java @@ -7,7 +7,7 @@ import java.util.Map; * 菜单类型常量对象。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ public final class SysMenuType { diff --git a/orange-demo-multi-service/application/upms/upms-interface/src/main/java/com/orange/demo/upmsinterface/constant/SysPermCodeType.java b/orange-demo-multi-service/application/upms/upms-interface/src/main/java/com/orange/demo/upmsinterface/constant/SysPermCodeType.java index 748b0cfb..5d7d6097 100644 --- a/orange-demo-multi-service/application/upms/upms-interface/src/main/java/com/orange/demo/upmsinterface/constant/SysPermCodeType.java +++ b/orange-demo-multi-service/application/upms/upms-interface/src/main/java/com/orange/demo/upmsinterface/constant/SysPermCodeType.java @@ -7,7 +7,7 @@ import java.util.Map; * 权限字类型常量对象。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ public final class SysPermCodeType { diff --git a/orange-demo-multi-service/application/upms/upms-interface/src/main/java/com/orange/demo/upmsinterface/constant/SysPermModuleType.java b/orange-demo-multi-service/application/upms/upms-interface/src/main/java/com/orange/demo/upmsinterface/constant/SysPermModuleType.java index 4a5425c8..e6f5139b 100644 --- a/orange-demo-multi-service/application/upms/upms-interface/src/main/java/com/orange/demo/upmsinterface/constant/SysPermModuleType.java +++ b/orange-demo-multi-service/application/upms/upms-interface/src/main/java/com/orange/demo/upmsinterface/constant/SysPermModuleType.java @@ -7,7 +7,7 @@ import java.util.Map; * 权限资源模块类型常量对象。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ public final class SysPermModuleType { diff --git a/orange-demo-multi-service/application/upms/upms-interface/src/main/java/com/orange/demo/upmsinterface/constant/SysUserStatus.java b/orange-demo-multi-service/application/upms/upms-interface/src/main/java/com/orange/demo/upmsinterface/constant/SysUserStatus.java index c8da08e3..19535d57 100644 --- a/orange-demo-multi-service/application/upms/upms-interface/src/main/java/com/orange/demo/upmsinterface/constant/SysUserStatus.java +++ b/orange-demo-multi-service/application/upms/upms-interface/src/main/java/com/orange/demo/upmsinterface/constant/SysUserStatus.java @@ -7,7 +7,7 @@ import java.util.Map; * 用户状态常量字典对象。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ public final class SysUserStatus { diff --git a/orange-demo-multi-service/application/upms/upms-interface/src/main/java/com/orange/demo/upmsinterface/constant/SysUserType.java b/orange-demo-multi-service/application/upms/upms-interface/src/main/java/com/orange/demo/upmsinterface/constant/SysUserType.java index 28cc651a..93f0d4fa 100644 --- a/orange-demo-multi-service/application/upms/upms-interface/src/main/java/com/orange/demo/upmsinterface/constant/SysUserType.java +++ b/orange-demo-multi-service/application/upms/upms-interface/src/main/java/com/orange/demo/upmsinterface/constant/SysUserType.java @@ -7,7 +7,7 @@ import java.util.Map; * 用户类型常量字典对象。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ public final class SysUserType { diff --git a/orange-demo-multi-service/application/upms/upms-interface/src/main/java/com/orange/demo/upmsinterface/dto/SysMenuDto.java b/orange-demo-multi-service/application/upms/upms-interface/src/main/java/com/orange/demo/upmsinterface/dto/SysMenuDto.java index ccb026bb..02478abb 100644 --- a/orange-demo-multi-service/application/upms/upms-interface/src/main/java/com/orange/demo/upmsinterface/dto/SysMenuDto.java +++ b/orange-demo-multi-service/application/upms/upms-interface/src/main/java/com/orange/demo/upmsinterface/dto/SysMenuDto.java @@ -15,7 +15,7 @@ import java.util.Map; * 菜单Dto。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Data public class SysMenuDto { diff --git a/orange-demo-multi-service/application/upms/upms-interface/src/main/java/com/orange/demo/upmsinterface/dto/SysPermCodeDto.java b/orange-demo-multi-service/application/upms/upms-interface/src/main/java/com/orange/demo/upmsinterface/dto/SysPermCodeDto.java index 04cb35f3..335c8bd2 100644 --- a/orange-demo-multi-service/application/upms/upms-interface/src/main/java/com/orange/demo/upmsinterface/dto/SysPermCodeDto.java +++ b/orange-demo-multi-service/application/upms/upms-interface/src/main/java/com/orange/demo/upmsinterface/dto/SysPermCodeDto.java @@ -15,7 +15,7 @@ import java.util.Map; * 权限字Dto。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Data public class SysPermCodeDto { diff --git a/orange-demo-multi-service/application/upms/upms-interface/src/main/java/com/orange/demo/upmsinterface/dto/SysPermDto.java b/orange-demo-multi-service/application/upms/upms-interface/src/main/java/com/orange/demo/upmsinterface/dto/SysPermDto.java index 728b139b..0ac12859 100644 --- a/orange-demo-multi-service/application/upms/upms-interface/src/main/java/com/orange/demo/upmsinterface/dto/SysPermDto.java +++ b/orange-demo-multi-service/application/upms/upms-interface/src/main/java/com/orange/demo/upmsinterface/dto/SysPermDto.java @@ -12,7 +12,7 @@ import java.util.Map; * 权限资源Dto。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Data public class SysPermDto { diff --git a/orange-demo-multi-service/application/upms/upms-interface/src/main/java/com/orange/demo/upmsinterface/dto/SysPermModuleDto.java b/orange-demo-multi-service/application/upms/upms-interface/src/main/java/com/orange/demo/upmsinterface/dto/SysPermModuleDto.java index 136907ff..94a97aa0 100644 --- a/orange-demo-multi-service/application/upms/upms-interface/src/main/java/com/orange/demo/upmsinterface/dto/SysPermModuleDto.java +++ b/orange-demo-multi-service/application/upms/upms-interface/src/main/java/com/orange/demo/upmsinterface/dto/SysPermModuleDto.java @@ -14,7 +14,7 @@ import java.util.List; * 权限资源模块Dto。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Data public class SysPermModuleDto { diff --git a/orange-demo-multi-service/application/upms/upms-interface/src/main/java/com/orange/demo/upmsinterface/dto/SysRoleDto.java b/orange-demo-multi-service/application/upms/upms-interface/src/main/java/com/orange/demo/upmsinterface/dto/SysRoleDto.java index 373e4abc..40f8587b 100644 --- a/orange-demo-multi-service/application/upms/upms-interface/src/main/java/com/orange/demo/upmsinterface/dto/SysRoleDto.java +++ b/orange-demo-multi-service/application/upms/upms-interface/src/main/java/com/orange/demo/upmsinterface/dto/SysRoleDto.java @@ -12,7 +12,7 @@ import java.util.Map; * 角色Dto。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Data public class SysRoleDto { diff --git a/orange-demo-multi-service/application/upms/upms-interface/src/main/java/com/orange/demo/upmsinterface/dto/SysUserDto.java b/orange-demo-multi-service/application/upms/upms-interface/src/main/java/com/orange/demo/upmsinterface/dto/SysUserDto.java index fcddab36..f9a3eaaf 100644 --- a/orange-demo-multi-service/application/upms/upms-interface/src/main/java/com/orange/demo/upmsinterface/dto/SysUserDto.java +++ b/orange-demo-multi-service/application/upms/upms-interface/src/main/java/com/orange/demo/upmsinterface/dto/SysUserDto.java @@ -18,7 +18,7 @@ import java.util.List; * SysUserDto对象。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Data public class SysUserDto { diff --git a/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/UpmsApplication.java b/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/UpmsApplication.java index b9c41e83..e17e70bf 100644 --- a/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/UpmsApplication.java +++ b/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/UpmsApplication.java @@ -9,7 +9,7 @@ import org.springframework.context.annotation.ComponentScan; * upms服务启动类。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @SpringCloudApplication @EnableFeignClients(basePackages = "com.orange.demo") diff --git a/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/config/ApplicationConfig.java b/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/config/ApplicationConfig.java index 7bdf1397..bcecb1b3 100644 --- a/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/config/ApplicationConfig.java +++ b/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/config/ApplicationConfig.java @@ -10,7 +10,7 @@ import org.springframework.context.annotation.Configuration; * NOTE: 和multiDataSource相关的配置没有包含进来,因为涉及到条件属性,所以由其相关的配置对象自己处理。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Data @RefreshScope diff --git a/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/config/DataSourceConfig.java b/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/config/DataSourceConfig.java index 246427b2..909de299 100644 --- a/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/config/DataSourceConfig.java +++ b/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/config/DataSourceConfig.java @@ -14,7 +14,7 @@ import javax.sql.DataSource; * 数据源配置Bean对象。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Configuration @EnableTransactionManagement diff --git a/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/controller/LoginController.java b/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/controller/LoginController.java index bed5f57d..fae6e528 100644 --- a/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/controller/LoginController.java +++ b/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/controller/LoginController.java @@ -29,11 +29,11 @@ import java.util.*; * 登录接口控制器类。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Slf4j @RestController -@RequestMapping("/admin/login") +@RequestMapping("/login") public class LoginController { @Autowired diff --git a/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/controller/SysMenuController.java b/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/controller/SysMenuController.java index 0d8e21c9..5289063d 100644 --- a/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/controller/SysMenuController.java +++ b/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/controller/SysMenuController.java @@ -24,7 +24,7 @@ import java.util.*; * 菜单管理接口控制器类。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Slf4j @RestController diff --git a/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/controller/SysPermCodeController.java b/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/controller/SysPermCodeController.java index a2245d54..522f1603 100644 --- a/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/controller/SysPermCodeController.java +++ b/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/controller/SysPermCodeController.java @@ -27,7 +27,7 @@ import java.util.*; * 权限字管理接口控制器类。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Slf4j @RestController diff --git a/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/controller/SysPermController.java b/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/controller/SysPermController.java index 808a6ae9..79da36a8 100644 --- a/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/controller/SysPermController.java +++ b/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/controller/SysPermController.java @@ -28,7 +28,7 @@ import java.util.Map; * 权限资源管理接口控制器类。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Slf4j @RestController diff --git a/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/controller/SysPermModuleController.java b/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/controller/SysPermModuleController.java index cb4da4de..cee1fb8c 100644 --- a/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/controller/SysPermModuleController.java +++ b/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/controller/SysPermModuleController.java @@ -26,7 +26,7 @@ import java.util.Map; * 权限资源模块管理接口控制器类。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Slf4j @RestController diff --git a/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/controller/SysRoleController.java b/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/controller/SysRoleController.java index 6e453cd5..0a9fa28b 100644 --- a/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/controller/SysRoleController.java +++ b/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/controller/SysRoleController.java @@ -33,7 +33,7 @@ import java.util.stream.Collectors; * 角色管理接口控制器类。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Slf4j @RestController diff --git a/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/controller/SysUserController.java b/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/controller/SysUserController.java index 46164c7d..ea00b3f2 100644 --- a/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/controller/SysUserController.java +++ b/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/controller/SysUserController.java @@ -8,7 +8,7 @@ import com.orange.demo.upmsservice.service.*; import com.orange.demo.upmsinterface.dto.*; import com.orange.demo.common.core.object.*; import com.orange.demo.common.core.util.*; -import com.orange.demo.common.core.constant.ErrorCodeEnum; +import com.orange.demo.common.core.constant.*; import com.orange.demo.common.core.base.controller.BaseController; import com.orange.demo.common.core.base.service.BaseService; import com.orange.demo.common.core.annotation.MyRequestBody; @@ -26,7 +26,7 @@ import java.util.*; * 用户管理操作控制器类。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Slf4j @RestController diff --git a/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/dao/SysMenuMapper.java b/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/dao/SysMenuMapper.java index dace4da3..21b19b0d 100644 --- a/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/dao/SysMenuMapper.java +++ b/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/dao/SysMenuMapper.java @@ -9,7 +9,7 @@ import java.util.List; * 菜单数据访问操作接口。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ public interface SysMenuMapper extends BaseDaoMapper { diff --git a/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/dao/SysMenuPermCodeMapper.java b/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/dao/SysMenuPermCodeMapper.java index 8561f7dc..a7231119 100644 --- a/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/dao/SysMenuPermCodeMapper.java +++ b/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/dao/SysMenuPermCodeMapper.java @@ -7,7 +7,7 @@ import com.orange.demo.upmsservice.model.SysMenuPermCode; * 菜单与权限字关系数据访问操作接口。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ public interface SysMenuPermCodeMapper extends BaseDaoMapper { } diff --git a/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/dao/SysPermCodeMapper.java b/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/dao/SysPermCodeMapper.java index ea986749..893391be 100644 --- a/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/dao/SysPermCodeMapper.java +++ b/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/dao/SysPermCodeMapper.java @@ -11,7 +11,7 @@ import java.util.Map; * 权限字数据访问操作接口。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ public interface SysPermCodeMapper extends BaseDaoMapper { diff --git a/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/dao/SysPermCodePermMapper.java b/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/dao/SysPermCodePermMapper.java index d986b8ce..afb7bcc3 100644 --- a/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/dao/SysPermCodePermMapper.java +++ b/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/dao/SysPermCodePermMapper.java @@ -7,7 +7,7 @@ import com.orange.demo.upmsservice.model.SysPermCodePerm; * 权限字与权限资源关系数据访问操作接口。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ public interface SysPermCodePermMapper extends BaseDaoMapper { } diff --git a/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/dao/SysPermMapper.java b/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/dao/SysPermMapper.java index eef975d2..4f3f1bd6 100644 --- a/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/dao/SysPermMapper.java +++ b/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/dao/SysPermMapper.java @@ -11,7 +11,7 @@ import java.util.Map; * 权限资源数据访问操作接口。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ public interface SysPermMapper extends BaseDaoMapper { diff --git a/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/dao/SysPermModuleMapper.java b/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/dao/SysPermModuleMapper.java index 8f7624d5..91be43f3 100644 --- a/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/dao/SysPermModuleMapper.java +++ b/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/dao/SysPermModuleMapper.java @@ -9,7 +9,7 @@ import java.util.List; * 权限资源模块数据访问操作接口。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ public interface SysPermModuleMapper extends BaseDaoMapper { diff --git a/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/dao/SysPermWhitelistMapper.java b/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/dao/SysPermWhitelistMapper.java index fa6131c7..4ca0a75f 100644 --- a/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/dao/SysPermWhitelistMapper.java +++ b/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/dao/SysPermWhitelistMapper.java @@ -7,7 +7,7 @@ import com.orange.demo.upmsservice.model.SysPermWhitelist; * 权限资源白名单数据访问操作接口。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ public interface SysPermWhitelistMapper extends BaseDaoMapper { } diff --git a/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/dao/SysRoleMapper.java b/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/dao/SysRoleMapper.java index f5f5cf02..8143295d 100644 --- a/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/dao/SysRoleMapper.java +++ b/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/dao/SysRoleMapper.java @@ -10,7 +10,7 @@ import java.util.List; * 角色数据访问操作接口。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ public interface SysRoleMapper extends BaseDaoMapper { diff --git a/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/dao/SysRoleMenuMapper.java b/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/dao/SysRoleMenuMapper.java index cdecf6b5..379ae6d5 100644 --- a/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/dao/SysRoleMenuMapper.java +++ b/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/dao/SysRoleMenuMapper.java @@ -7,7 +7,7 @@ import com.orange.demo.upmsservice.model.SysRoleMenu; * 角色与菜单操作关联关系数据访问操作接口。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ public interface SysRoleMenuMapper extends BaseDaoMapper { } diff --git a/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/dao/SysUserMapper.java b/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/dao/SysUserMapper.java index c4a55436..2ed4e04d 100644 --- a/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/dao/SysUserMapper.java +++ b/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/dao/SysUserMapper.java @@ -10,7 +10,7 @@ import java.util.*; * 用户管理数据操作访问接口。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ public interface SysUserMapper extends BaseDaoMapper { diff --git a/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/dao/SysUserRoleMapper.java b/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/dao/SysUserRoleMapper.java index a17a5e31..29e182c6 100644 --- a/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/dao/SysUserRoleMapper.java +++ b/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/dao/SysUserRoleMapper.java @@ -9,7 +9,7 @@ import java.util.List; * 用户与角色关联关系数据访问操作接口。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ public interface SysUserRoleMapper extends BaseDaoMapper { diff --git a/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/model/SysMenu.java b/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/model/SysMenu.java index 5f9ec8c7..1a21dade 100644 --- a/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/model/SysMenu.java +++ b/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/model/SysMenu.java @@ -21,7 +21,7 @@ import java.util.List; * 菜单实体对象。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Data @Table(name = "zz_sys_menu") diff --git a/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/model/SysMenuPermCode.java b/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/model/SysMenuPermCode.java index 926e5ce0..c15e30b3 100644 --- a/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/model/SysMenuPermCode.java +++ b/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/model/SysMenuPermCode.java @@ -8,7 +8,7 @@ import javax.persistence.*; * 菜单与权限字关联实体对象。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Data @Table(name = "zz_sys_menu_perm_code") diff --git a/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/model/SysPerm.java b/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/model/SysPerm.java index 92515760..c016fed3 100644 --- a/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/model/SysPerm.java +++ b/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/model/SysPerm.java @@ -14,7 +14,7 @@ import java.util.Map; * 权限资源实体对象。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Data @Table(name = "zz_sys_perm") diff --git a/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/model/SysPermCode.java b/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/model/SysPermCode.java index d5165b6c..1e6328fc 100644 --- a/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/model/SysPermCode.java +++ b/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/model/SysPermCode.java @@ -21,7 +21,7 @@ import java.util.List; * 权限字实体对象。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Data @Table(name = "zz_sys_perm_code") diff --git a/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/model/SysPermCodePerm.java b/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/model/SysPermCodePerm.java index c1d3f360..3f2a9d79 100644 --- a/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/model/SysPermCodePerm.java +++ b/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/model/SysPermCodePerm.java @@ -8,7 +8,7 @@ import javax.persistence.*; * 权限字与权限资源关联实体对象。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Data @Table(name = "zz_sys_perm_code_perm") diff --git a/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/model/SysPermModule.java b/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/model/SysPermModule.java index 5c4ccd36..bd95c830 100644 --- a/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/model/SysPermModule.java +++ b/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/model/SysPermModule.java @@ -15,7 +15,7 @@ import java.util.List; * 权限模块实体对象。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Data @Table(name = "zz_sys_perm_module") diff --git a/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/model/SysPermWhitelist.java b/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/model/SysPermWhitelist.java index 3a0cdf19..6fc75ec2 100644 --- a/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/model/SysPermWhitelist.java +++ b/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/model/SysPermWhitelist.java @@ -8,7 +8,7 @@ import javax.persistence.*; * 白名单实体对象。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Data @Table(name = "zz_sys_perm_whitelist") diff --git a/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/model/SysRole.java b/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/model/SysRole.java index 65c4e439..796f301b 100644 --- a/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/model/SysRole.java +++ b/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/model/SysRole.java @@ -19,7 +19,7 @@ import java.util.List; * 角色实体对象。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Data @Table(name = "zz_sys_role") diff --git a/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/model/SysRoleMenu.java b/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/model/SysRoleMenu.java index b4e813d0..16bc7e17 100644 --- a/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/model/SysRoleMenu.java +++ b/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/model/SysRoleMenu.java @@ -8,7 +8,7 @@ import javax.persistence.*; * 角色菜单实体对象。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Data @Table(name = "zz_sys_role_menu") diff --git a/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/model/SysUser.java b/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/model/SysUser.java index d23ac169..98e12292 100644 --- a/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/model/SysUser.java +++ b/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/model/SysUser.java @@ -23,7 +23,7 @@ import java.util.List; * SysUser实体对象。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Data @Table(name = "zz_sys_user") diff --git a/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/model/SysUserRole.java b/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/model/SysUserRole.java index 96cca92b..9dc5d91c 100644 --- a/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/model/SysUserRole.java +++ b/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/model/SysUserRole.java @@ -8,7 +8,7 @@ import javax.persistence.*; * 用户角色实体对象。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Data @Table(name = "zz_sys_user_role") diff --git a/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/service/SysMenuService.java b/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/service/SysMenuService.java index 33857360..525250fb 100644 --- a/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/service/SysMenuService.java +++ b/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/service/SysMenuService.java @@ -27,7 +27,7 @@ import java.util.stream.Collectors; * 菜单数据服务类。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Service public class SysMenuService extends BaseService { diff --git a/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/service/SysPermCodeService.java b/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/service/SysPermCodeService.java index a09d9871..23404b41 100644 --- a/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/service/SysPermCodeService.java +++ b/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/service/SysPermCodeService.java @@ -25,7 +25,7 @@ import java.util.stream.Collectors; * 权限字数据服务类。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Service public class SysPermCodeService extends BaseService { diff --git a/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/service/SysPermModuleService.java b/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/service/SysPermModuleService.java index a8e0089d..c9b293b6 100644 --- a/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/service/SysPermModuleService.java +++ b/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/service/SysPermModuleService.java @@ -19,7 +19,7 @@ import java.util.List; * 权限资源模块数据服务类。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Service public class SysPermModuleService extends BaseService { diff --git a/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/service/SysPermService.java b/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/service/SysPermService.java index 3ef2abd1..f18e58a6 100644 --- a/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/service/SysPermService.java +++ b/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/service/SysPermService.java @@ -27,7 +27,7 @@ import java.util.Map; * 权限资源数据服务类。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Service public class SysPermService extends BaseService { diff --git a/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/service/SysPermWhitelistService.java b/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/service/SysPermWhitelistService.java index 58817dec..401b5886 100644 --- a/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/service/SysPermWhitelistService.java +++ b/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/service/SysPermWhitelistService.java @@ -11,7 +11,7 @@ import org.springframework.stereotype.Service; * 白名单数据服务类。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Service public class SysPermWhitelistService extends BaseService { diff --git a/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/service/SysRoleService.java b/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/service/SysRoleService.java index 0383e20e..539f1fd6 100644 --- a/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/service/SysRoleService.java +++ b/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/service/SysRoleService.java @@ -27,7 +27,7 @@ import java.util.stream.Collectors; * 角色数据服务类。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Service public class SysRoleService extends BaseService { diff --git a/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/service/SysUserService.java b/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/service/SysUserService.java index 909ee61e..ea329f4b 100644 --- a/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/service/SysUserService.java +++ b/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/service/SysUserService.java @@ -26,7 +26,7 @@ import java.util.stream.Collectors; * 用户管理数据操作服务类。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Service public class SysUserService extends BaseService { diff --git a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/advice/MyControllerAdvice.java b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/advice/MyControllerAdvice.java index f8f40279..12f12863 100644 --- a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/advice/MyControllerAdvice.java +++ b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/advice/MyControllerAdvice.java @@ -12,7 +12,7 @@ import java.util.Date; * Controller的环绕拦截类。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @ControllerAdvice public class MyControllerAdvice { diff --git a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/advice/MyExceptionHandler.java b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/advice/MyExceptionHandler.java index 24e1f9f7..38c8f21d 100644 --- a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/advice/MyExceptionHandler.java +++ b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/advice/MyExceptionHandler.java @@ -6,6 +6,7 @@ import com.orange.demo.common.core.exception.InvalidDataModelException; import com.orange.demo.common.core.constant.ErrorCodeEnum; import com.orange.demo.common.core.exception.RedisCacheAccessException; import com.orange.demo.common.core.object.ResponseResult; +import com.orange.demo.common.core.util.ContextUtil; import lombok.extern.slf4j.Slf4j; import org.apache.ibatis.exceptions.PersistenceException; import org.springframework.dao.DataAccessException; @@ -15,6 +16,7 @@ import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.RestControllerAdvice; import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; import java.util.concurrent.TimeoutException; /** @@ -22,7 +24,7 @@ import java.util.concurrent.TimeoutException; * 用不同的函数,处理不同类型的异常。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Slf4j @RestControllerAdvice("com.orange.demo") @@ -38,7 +40,8 @@ public class MyExceptionHandler { @ExceptionHandler(value = Exception.class) public ResponseResult exceptionHandle(Exception ex, HttpServletRequest request) { log.error("Unhandled exception from URL [" + request.getRequestURI() + "]", ex); - return ResponseResult.error(ErrorCodeEnum.UNHANDLED_EXCEPTION); + ContextUtil.getHttpResponse().setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); + return ResponseResult.error(ErrorCodeEnum.UNHANDLED_EXCEPTION, ex.getMessage()); } /** diff --git a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/annotation/DeletedFlagColumn.java b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/annotation/DeletedFlagColumn.java index d9e9f414..da684873 100644 --- a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/annotation/DeletedFlagColumn.java +++ b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/annotation/DeletedFlagColumn.java @@ -6,7 +6,7 @@ import java.lang.annotation.*; * 主要用于标记逻辑删除字段。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Target({ElementType.FIELD}) @Retention(RetentionPolicy.RUNTIME) diff --git a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/annotation/JobUpdateTimeColumn.java b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/annotation/JobUpdateTimeColumn.java index 06d172db..428c306f 100644 --- a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/annotation/JobUpdateTimeColumn.java +++ b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/annotation/JobUpdateTimeColumn.java @@ -6,7 +6,7 @@ import java.lang.annotation.*; * 主要用于标记更新字段。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Target({ElementType.FIELD}) @Retention(RetentionPolicy.RUNTIME) diff --git a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/annotation/MyDataSource.java b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/annotation/MyDataSource.java index 78201f29..3c4ab9af 100644 --- a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/annotation/MyDataSource.java +++ b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/annotation/MyDataSource.java @@ -6,7 +6,7 @@ import java.lang.annotation.*; * 主要用于标记Service所依赖的数据源类型。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) diff --git a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/annotation/MyRequestBody.java b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/annotation/MyRequestBody.java index 6b309fb9..d86bf2be 100644 --- a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/annotation/MyRequestBody.java +++ b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/annotation/MyRequestBody.java @@ -9,7 +9,7 @@ import java.lang.annotation.Target; * 标记Controller中的方法参数,参数解析器会根据该注解将请求中的JSON数据,映射到参数中的绑定字段。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Target(ElementType.PARAMETER) @Retention(RetentionPolicy.RUNTIME) diff --git a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/annotation/NoAuthInterface.java b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/annotation/NoAuthInterface.java index f876b79f..3f9832e4 100644 --- a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/annotation/NoAuthInterface.java +++ b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/annotation/NoAuthInterface.java @@ -6,7 +6,7 @@ import java.lang.annotation.*; * 主要用于标记无需Token验证的接口 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Target({ElementType.METHOD, ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) diff --git a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/annotation/RelationConstDict.java b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/annotation/RelationConstDict.java index e2cf79a6..ff2ee6ec 100644 --- a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/annotation/RelationConstDict.java +++ b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/annotation/RelationConstDict.java @@ -6,7 +6,7 @@ import java.lang.annotation.*; * 标识Model和常量字典之间的关联关系。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Target({ElementType.FIELD, ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) diff --git a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/annotation/RelationDict.java b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/annotation/RelationDict.java index fc479aca..fff5fee0 100644 --- a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/annotation/RelationDict.java +++ b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/annotation/RelationDict.java @@ -8,7 +8,7 @@ import java.lang.annotation.*; * 标识Model之间的字典关联关系。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Target({ElementType.FIELD, ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) diff --git a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/annotation/RelationManyToMany.java b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/annotation/RelationManyToMany.java index 0f76030b..079593ae 100644 --- a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/annotation/RelationManyToMany.java +++ b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/annotation/RelationManyToMany.java @@ -6,7 +6,7 @@ import java.lang.annotation.*; * 标注多对多的Model关系。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Target({ElementType.FIELD, ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) diff --git a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/annotation/RelationManyToManyAggregation.java b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/annotation/RelationManyToManyAggregation.java index ff45a96e..72cdd415 100644 --- a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/annotation/RelationManyToManyAggregation.java +++ b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/annotation/RelationManyToManyAggregation.java @@ -8,7 +8,7 @@ import java.lang.annotation.*; * 主要用于多对多的Model关系。标注通过从表关联字段或者关联表关联字段计算主表聚合计算字段的规则。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Target({ElementType.FIELD, ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) diff --git a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/annotation/RelationOneToManyAggregation.java b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/annotation/RelationOneToManyAggregation.java index 13cac580..18060354 100644 --- a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/annotation/RelationOneToManyAggregation.java +++ b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/annotation/RelationOneToManyAggregation.java @@ -8,7 +8,7 @@ import java.lang.annotation.*; * 主要用于一对多的Model关系。标注通过从表关联字段计算主表聚合计算字段的规则。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Target({ElementType.FIELD, ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) diff --git a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/annotation/RelationOneToOne.java b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/annotation/RelationOneToOne.java index 41c89815..95c95127 100644 --- a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/annotation/RelationOneToOne.java +++ b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/annotation/RelationOneToOne.java @@ -8,7 +8,7 @@ import java.lang.annotation.*; * 标识Model之间的一对一关联关系。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Target({ElementType.FIELD, ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) diff --git a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/annotation/UploadFlagColumn.java b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/annotation/UploadFlagColumn.java new file mode 100644 index 00000000..945b2c24 --- /dev/null +++ b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/annotation/UploadFlagColumn.java @@ -0,0 +1,24 @@ +package com.orange.demo.common.core.annotation; + +import com.orange.demo.common.core.upload.UploadStoreTypeEnum; + +import java.lang.annotation.*; + +/** + * 用于标记支持数据上传和下载的字段。 + * + * @author Jerry + * @date 2020-10-19 + */ +@Target({ElementType.FIELD}) +@Retention(RetentionPolicy.RUNTIME) +@Documented +public @interface UploadFlagColumn { + + /** + * 上传数据存储类型。 + * + * @return 上传数据存储类型。 + */ + UploadStoreTypeEnum storeType(); +} diff --git a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/aop/AccessLogAspect.java b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/aop/AccessLogAspect.java index a3b8d0c8..aa00b327 100644 --- a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/aop/AccessLogAspect.java +++ b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/aop/AccessLogAspect.java @@ -9,7 +9,6 @@ import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Pointcut; -import org.aspectj.lang.reflect.MethodSignature; import org.slf4j.MDC; import org.springframework.beans.factory.annotation.Value; import org.springframework.core.annotation.Order; @@ -27,7 +26,7 @@ import java.util.List; * 记录接口的链路traceId、请求参数、应答数据、错误信息和调用时长。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Aspect @Component @@ -59,7 +58,6 @@ public class AccessLogAspect { long start = System.currentTimeMillis(); // 获取方法参数 List httpReqArgs = new ArrayList<>(); - MethodSignature methodSignature = (MethodSignature) joinPoint.getSignature(); Object[] args = joinPoint.getArgs(); for (Object object : args) { if (!(object instanceof HttpServletRequest) diff --git a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/base/client/BaseClient.java b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/base/client/BaseClient.java index 47543b2f..9d35a95a 100644 --- a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/base/client/BaseClient.java +++ b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/base/client/BaseClient.java @@ -14,7 +14,7 @@ import java.util.Set; * @param 主DomainDto域数据对象类型。 * @param 主键类型。 * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ public interface BaseClient { diff --git a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/base/controller/BaseController.java b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/base/controller/BaseController.java index 64023a17..5daf3823 100644 --- a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/base/controller/BaseController.java +++ b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/base/controller/BaseController.java @@ -33,7 +33,7 @@ import java.util.stream.Collectors; * @param 主DomainDto域对象类型。 * @param 主键类型。 * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Slf4j public abstract class BaseController { diff --git a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/base/dao/BaseDaoMapper.java b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/base/dao/BaseDaoMapper.java index 3a8dbac7..bf4b0fc3 100644 --- a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/base/dao/BaseDaoMapper.java +++ b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/base/dao/BaseDaoMapper.java @@ -14,7 +14,7 @@ import java.util.Map; * * @param 主Model实体对象。 * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @RegisterMapper public interface BaseDaoMapper extends Mapper, InsertListMapper { diff --git a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/base/mapper/BaseModelMapper.java b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/base/mapper/BaseModelMapper.java index be5913ab..cfb55b83 100644 --- a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/base/mapper/BaseModelMapper.java +++ b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/base/mapper/BaseModelMapper.java @@ -12,7 +12,7 @@ import java.util.stream.Collectors; * @param Domain域对象类型。 * @param Model实体对象类型。 * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ public interface BaseModelMapper { diff --git a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/base/mapper/DummyModelMapper.java b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/base/mapper/DummyModelMapper.java index 9bbbee42..fad3296e 100644 --- a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/base/mapper/DummyModelMapper.java +++ b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/base/mapper/DummyModelMapper.java @@ -8,7 +8,7 @@ import java.util.List; * * @param 数据类型。 * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ public class DummyModelMapper implements BaseModelMapper { diff --git a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/base/service/BaseDictService.java b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/base/service/BaseDictService.java index 678a7a00..7fe69094 100644 --- a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/base/service/BaseDictService.java +++ b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/base/service/BaseDictService.java @@ -17,7 +17,7 @@ import java.util.List; * @param Model对应的DomainDto域对象类型。 * @param Model对象主键的类型。 * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Slf4j public abstract class BaseDictService extends BaseService { diff --git a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/base/service/BaseService.java b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/base/service/BaseService.java index 6c464965..b3ba85b4 100644 --- a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/base/service/BaseService.java +++ b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/base/service/BaseService.java @@ -40,7 +40,7 @@ import static java.util.stream.Collectors.*; * @param Model对应的Dto对象类型。 * @param Model对象主键的类型。 * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Slf4j public abstract class BaseService { diff --git a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/cache/DictionaryCache.java b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/cache/DictionaryCache.java index 04bc5158..7dd16eae 100644 --- a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/cache/DictionaryCache.java +++ b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/cache/DictionaryCache.java @@ -9,7 +9,7 @@ import java.util.Set; * @param 字典表主键类型。 * @param 字典表对象类型。 * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ public interface DictionaryCache { diff --git a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/cache/MapDictionaryCache.java b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/cache/MapDictionaryCache.java index 95d3481b..a62b2313 100644 --- a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/cache/MapDictionaryCache.java +++ b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/cache/MapDictionaryCache.java @@ -9,7 +9,7 @@ import java.util.function.Function; * @param 字典表主键类型。 * @param 字典表对象类型。 * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ public class MapDictionaryCache implements DictionaryCache { diff --git a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/cache/MapTreeDictionaryCache.java b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/cache/MapTreeDictionaryCache.java index b31637cd..e2168c55 100644 --- a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/cache/MapTreeDictionaryCache.java +++ b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/cache/MapTreeDictionaryCache.java @@ -12,7 +12,7 @@ import java.util.function.Function; * @param 字典表主键类型。 * @param 字典表对象类型。 * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ public class MapTreeDictionaryCache extends MapDictionaryCache { diff --git a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/config/CommonWebMvcConfig.java b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/config/CommonWebMvcConfig.java index 2555c389..df148b4e 100644 --- a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/config/CommonWebMvcConfig.java +++ b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/config/CommonWebMvcConfig.java @@ -21,7 +21,7 @@ import java.util.List; * 所有的项目拦截器、参数解析器、消息对象转换器都在这里集中配置。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Configuration public class CommonWebMvcConfig implements WebMvcConfigurer { diff --git a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/config/EncryptConfig.java b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/config/EncryptConfig.java index 536ac615..5f660da4 100644 --- a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/config/EncryptConfig.java +++ b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/config/EncryptConfig.java @@ -8,7 +8,7 @@ import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; * 目前用于用户密码加密,UAA接入应用客户端的client_secret加密。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Configuration public class EncryptConfig { diff --git a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/config/FeignConfig.java b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/config/FeignConfig.java index 898b8d95..1043a270 100644 --- a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/config/FeignConfig.java +++ b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/config/FeignConfig.java @@ -11,7 +11,7 @@ import org.springframework.context.annotation.Configuration; * FeignClient的配置对象。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Configuration public class FeignConfig implements RequestInterceptor { diff --git a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/config/RestTemplateConfig.java b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/config/RestTemplateConfig.java index 816fa754..46f586b0 100644 --- a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/config/RestTemplateConfig.java +++ b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/config/RestTemplateConfig.java @@ -24,7 +24,7 @@ import java.util.List; * RestTemplate连接池配置对象。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Configuration public class RestTemplateConfig { diff --git a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/config/TomcatConfig.java b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/config/TomcatConfig.java index 16c67e58..7fd72f64 100644 --- a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/config/TomcatConfig.java +++ b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/config/TomcatConfig.java @@ -10,7 +10,7 @@ import org.springframework.context.annotation.Configuration; * tomcat配置对象。当前配置禁用了PUT和DELETE方法,防止渗透攻击。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Configuration public class TomcatConfig { diff --git a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/constant/AggregationKind.java b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/constant/AggregationKind.java index d1bf8ea1..c528a524 100644 --- a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/constant/AggregationKind.java +++ b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/constant/AggregationKind.java @@ -4,7 +4,7 @@ package com.orange.demo.common.core.constant; * 在跨服务调用时,需要传递的聚合分类常量对象。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ public final class AggregationKind { diff --git a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/constant/AggregationType.java b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/constant/AggregationType.java index ba971fb7..c01eda95 100644 --- a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/constant/AggregationType.java +++ b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/constant/AggregationType.java @@ -7,7 +7,7 @@ import java.util.Map; * 聚合计算的常量类型对象。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ public final class AggregationType { diff --git a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/constant/ApplicationConstant.java b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/constant/ApplicationConstant.java index 7cd01fbb..c873483e 100644 --- a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/constant/ApplicationConstant.java +++ b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/constant/ApplicationConstant.java @@ -4,7 +4,7 @@ package com.orange.demo.common.core.constant; * 应用程序的常量声明对象。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ public final class ApplicationConstant { diff --git a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/constant/ErrorCodeEnum.java b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/constant/ErrorCodeEnum.java index c5386cdd..4d7559ea 100644 --- a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/constant/ErrorCodeEnum.java +++ b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/constant/ErrorCodeEnum.java @@ -4,7 +4,7 @@ package com.orange.demo.common.core.constant; * 返回应答中的错误代码和错误信息。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ public enum ErrorCodeEnum { @@ -21,6 +21,9 @@ public enum ErrorCodeEnum { ARGUMENT_PK_ID_NULL("数据验证失败,接口调用主键Id参数为空,请核对!"), INVALID_ARGUMENT_FORMAT("数据验证失败,不合法的参数格式,请核对!"), INVALID_STATUS_ARGUMENT("数据验证失败,无效的状态参数值,请核对!"), + UPLOAD_FAILED("数据验证失败,数据上传失败!"), + INVALID_UPLOAD_FIELD("数据验证失败,该字段不支持数据上传!"), + INVALID_UPLOAD_STORE_TYPE("数据验证失败,并不支持上传存储类型!"), INVALID_UPLOAD_FILE_ARGUMENT("数据验证失败,上传文件参数错误,请核对!"), INVALID_UPLOAD_FILE_IOERROR("上传文件写入失败,请联系管理员!"), UNAUTHORIZED_LOGIN("当前用户尚未登录或登录已超时,请重新登录!"), diff --git a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/constant/GlobalDeletedFlag.java b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/constant/GlobalDeletedFlag.java index 7980dfad..94c266ab 100644 --- a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/constant/GlobalDeletedFlag.java +++ b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/constant/GlobalDeletedFlag.java @@ -4,7 +4,7 @@ package com.orange.demo.common.core.constant; * 数据记录逻辑删除标记常量。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ public final class GlobalDeletedFlag { diff --git a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/exception/DataValidationException.java b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/exception/DataValidationException.java index be9cd66b..eb7bf755 100644 --- a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/exception/DataValidationException.java +++ b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/exception/DataValidationException.java @@ -4,7 +4,7 @@ package com.orange.demo.common.core.exception; * 数据验证失败的自定义异常。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ public class DataValidationException extends RuntimeException { diff --git a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/exception/InvalidClassFieldException.java b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/exception/InvalidClassFieldException.java index d26ab804..c8e452ff 100644 --- a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/exception/InvalidClassFieldException.java +++ b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/exception/InvalidClassFieldException.java @@ -7,7 +7,7 @@ import lombok.EqualsAndHashCode; * 无效的类对象字段的自定义异常。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Data @EqualsAndHashCode(callSuper = true) diff --git a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/exception/InvalidDataFieldException.java b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/exception/InvalidDataFieldException.java index 6cebffe6..a74ed300 100644 --- a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/exception/InvalidDataFieldException.java +++ b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/exception/InvalidDataFieldException.java @@ -7,7 +7,7 @@ import lombok.EqualsAndHashCode; * 无效的实体对象字段的自定义异常。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Data @EqualsAndHashCode(callSuper = true) diff --git a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/exception/InvalidDataModelException.java b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/exception/InvalidDataModelException.java index 8f6ac6e9..f26e1ae0 100644 --- a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/exception/InvalidDataModelException.java +++ b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/exception/InvalidDataModelException.java @@ -7,7 +7,7 @@ import lombok.EqualsAndHashCode; * 无效的实体对象的自定义异常。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Data @EqualsAndHashCode(callSuper = true) diff --git a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/exception/MyRuntimeException.java b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/exception/MyRuntimeException.java index 6344c365..6a003632 100644 --- a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/exception/MyRuntimeException.java +++ b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/exception/MyRuntimeException.java @@ -5,7 +5,7 @@ package com.orange.demo.common.core.exception; * NOTE:主要是为了避免SonarQube进行代码质量扫描时,给出警告。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ public class MyRuntimeException extends RuntimeException { diff --git a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/exception/NoDataAffectException.java b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/exception/NoDataAffectException.java index 30ef2672..14dbb448 100644 --- a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/exception/NoDataAffectException.java +++ b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/exception/NoDataAffectException.java @@ -4,7 +4,7 @@ package com.orange.demo.common.core.exception; * 没有数据被修改的自定义异常。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ public class NoDataAffectException extends RuntimeException { diff --git a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/exception/NoDataPermException.java b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/exception/NoDataPermException.java index 7f5d13fd..33dba030 100644 --- a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/exception/NoDataPermException.java +++ b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/exception/NoDataPermException.java @@ -4,7 +4,7 @@ package com.orange.demo.common.core.exception; * 没有数据访问权限的自定义异常。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ public class NoDataPermException extends RuntimeException { diff --git a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/exception/RedisCacheAccessException.java b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/exception/RedisCacheAccessException.java index 974d0759..e093bc90 100644 --- a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/exception/RedisCacheAccessException.java +++ b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/exception/RedisCacheAccessException.java @@ -4,7 +4,7 @@ package com.orange.demo.common.core.exception; * Redis缓存访问失败。比如:获取分布式数据锁超时、等待线程中断等。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ public class RedisCacheAccessException extends RuntimeException { diff --git a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/exception/RemoteDataBuildException.java b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/exception/RemoteDataBuildException.java index f05d11b3..1f7e1a97 100644 --- a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/exception/RemoteDataBuildException.java +++ b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/exception/RemoteDataBuildException.java @@ -4,7 +4,7 @@ package com.orange.demo.common.core.exception; * 关联远程服务数据失败的自定义异常。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ public class RemoteDataBuildException extends RuntimeException { diff --git a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/interceptor/MyRequestArgumentResolver.java b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/interceptor/MyRequestArgumentResolver.java index e782decb..0b017549 100644 --- a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/interceptor/MyRequestArgumentResolver.java +++ b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/interceptor/MyRequestArgumentResolver.java @@ -29,7 +29,7 @@ import java.util.*; * 2、多个对象需要封装到一个对象里才可以用@RequestBody接收。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ public class MyRequestArgumentResolver implements HandlerMethodArgumentResolver { diff --git a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/listener/LoadCachedDataListener.java b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/listener/LoadCachedDataListener.java index 8a50eb07..d6b22c5b 100644 --- a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/listener/LoadCachedDataListener.java +++ b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/listener/LoadCachedDataListener.java @@ -11,7 +11,7 @@ import java.util.Map; * 应用程序启动后的事件监听对象。主要负责加载Model之间的字典关联和一对一关联所对应的Service结构关系。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Component public class LoadCachedDataListener implements ApplicationListener { diff --git a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/listener/LoadServiceRelationListener.java b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/listener/LoadServiceRelationListener.java index ed75353b..f8bb187b 100644 --- a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/listener/LoadServiceRelationListener.java +++ b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/listener/LoadServiceRelationListener.java @@ -11,7 +11,7 @@ import java.util.Map; * 应用程序启动后的事件监听对象。主要负责加载Model之间的字典关联和一对一关联所对应的Service结构关系。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Component public class LoadServiceRelationListener implements ApplicationListener { diff --git a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/object/CallResult.java b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/object/CallResult.java index 38d353fe..a9197c5a 100644 --- a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/object/CallResult.java +++ b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/object/CallResult.java @@ -8,7 +8,7 @@ import lombok.Data; * 同时为了提升效率,减少查询次数,可以根据具体的需求,将部分验证关联对象存入data字段,以供Controller使用。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Data public class CallResult { diff --git a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/object/DummyClass.java b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/object/DummyClass.java index c88d5e36..45a7f086 100644 --- a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/object/DummyClass.java +++ b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/object/DummyClass.java @@ -4,7 +4,7 @@ package com.orange.demo.common.core.object; * 哑元对象,主要用于注解中的缺省对象占位符。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ public final class DummyClass { diff --git a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/object/MyAggregationParam.java b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/object/MyAggregationParam.java index f26b130a..232d9eb7 100644 --- a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/object/MyAggregationParam.java +++ b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/object/MyAggregationParam.java @@ -10,7 +10,7 @@ import java.util.Set; * 分组聚合查询参数。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Data public class MyAggregationParam { diff --git a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/object/MyGroupCriteria.java b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/object/MyGroupCriteria.java index dda2b6d3..9c610493 100644 --- a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/object/MyGroupCriteria.java +++ b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/object/MyGroupCriteria.java @@ -7,7 +7,7 @@ import lombok.Data; * Mybatis Mapper.xml中所需的分组条件对象。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Data @AllArgsConstructor diff --git a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/object/MyGroupParam.java b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/object/MyGroupParam.java index d856f435..d01fc12e 100644 --- a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/object/MyGroupParam.java +++ b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/object/MyGroupParam.java @@ -20,7 +20,7 @@ import java.util.List; * 查询分组参数请求对象。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @EqualsAndHashCode(callSuper = true) @Slf4j @@ -31,7 +31,6 @@ public class MyGroupParam extends ArrayList { * SQL语句的SELECT LIST中,分组字段的返回字段名称列表。 */ private List selectGroupFieldList; - /** * 分组参数解析后构建的SQL语句中所需的分组数据,如GROUP BY的字段列表和SELECT LIST中的分组字段显示列表。 */ diff --git a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/object/MyOrderParam.java b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/object/MyOrderParam.java index 024c6f1a..d8c858da 100644 --- a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/object/MyOrderParam.java +++ b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/object/MyOrderParam.java @@ -18,7 +18,7 @@ import java.util.*; * Controller参数中的排序请求对象。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @EqualsAndHashCode(callSuper = true) @Slf4j @@ -83,6 +83,9 @@ public class MyOrderParam extends ArrayList { private static OrderBaseData parseOrderBaseData(OrderInfo orderInfo, Class modelClazz) { OrderBaseData orderBaseData = new OrderBaseData(); + if (StringUtils.isBlank(orderInfo.getFieldName())) { + return orderBaseData; + } orderBaseData.fieldName = StringUtils.substringBefore(orderInfo.fieldName, DICT_MAP); String[] stringArray = StringUtils.split(orderBaseData.fieldName, '.'); if (stringArray.length == 1) { diff --git a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/object/MyPageParam.java b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/object/MyPageParam.java index 93b1c0c8..17c575c6 100644 --- a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/object/MyPageParam.java +++ b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/object/MyPageParam.java @@ -6,7 +6,7 @@ import lombok.Getter; * Controller参数中的分页请求对象 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Getter public class MyPageParam { diff --git a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/object/MyQueryParam.java b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/object/MyQueryParam.java index f951757b..b89db73f 100644 --- a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/object/MyQueryParam.java +++ b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/object/MyQueryParam.java @@ -9,7 +9,7 @@ import java.util.*; * 查询参数。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Data public class MyQueryParam { diff --git a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/object/MyRelationParam.java b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/object/MyRelationParam.java index 7849919c..0546f2fe 100644 --- a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/object/MyRelationParam.java +++ b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/object/MyRelationParam.java @@ -8,7 +8,7 @@ import lombok.Data; * BaseService中的实体对象数据组装函数,会根据该参数对象进行数据组装。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Data @Builder diff --git a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/object/MyWhereCriteria.java b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/object/MyWhereCriteria.java index df024a7e..9ae3eb49 100644 --- a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/object/MyWhereCriteria.java +++ b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/object/MyWhereCriteria.java @@ -16,7 +16,7 @@ import java.util.List; * Where中的条件语句。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Slf4j @Data diff --git a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/object/ResponseResult.java b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/object/ResponseResult.java index edee99a9..09142be6 100644 --- a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/object/ResponseResult.java +++ b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/object/ResponseResult.java @@ -1,13 +1,19 @@ package com.orange.demo.common.core.object; +import com.alibaba.fastjson.JSON; import com.orange.demo.common.core.constant.ErrorCodeEnum; +import com.orange.demo.common.core.util.ContextUtil; import lombok.Data; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.io.PrintWriter; + /** * 接口返回对象 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Data public class ResponseResult { @@ -145,6 +151,47 @@ public class ResponseResult { return success; } + /** + * 通过HttpServletResponse直接输出应该信息的工具方法。 + * + * @param httpStatus http状态码。 + * @param responseResult 应答内容。 + * @param 数据对象类型。 + * @throws IOException 异常错误。 + */ + public static void output(int httpStatus, ResponseResult responseResult) throws IOException { + HttpServletResponse response = ContextUtil.getHttpResponse(); + PrintWriter out = response.getWriter(); + response.setContentType("application/json; charset=utf-8"); + response.setStatus(httpStatus); + if (responseResult != null) { + out.print(JSON.toJSONString(responseResult)); + } + out.flush(); + } + + /** + * 通过HttpServletResponse直接输出应该信息的工具方法。 + * + * @param httpStatus http状态码。 + * @param 数据对象类型。 + * @throws IOException 异常错误。 + */ + public static void output(int httpStatus) throws IOException { + output(httpStatus, null); + } + + /** + * 通过HttpServletResponse直接输出应该信息的工具方法。Http状态码为200。 + * + * @param responseResult 应答内容。 + * @param 数据对象类型。 + * @throws IOException 异常错误。 + */ + public static void output(ResponseResult responseResult) throws IOException { + output(HttpServletResponse.SC_OK, responseResult); + } + private ResponseResult() { } diff --git a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/object/TokenData.java b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/object/TokenData.java index 50e32100..d71c925f 100644 --- a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/object/TokenData.java +++ b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/object/TokenData.java @@ -16,7 +16,7 @@ import java.nio.charset.StandardCharsets; * 基于Jwt,用于前后端传递的令牌对象。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Data @ToString diff --git a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/object/Tuple2.java b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/object/Tuple2.java index eeb6a53c..c8852f27 100644 --- a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/object/Tuple2.java +++ b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/object/Tuple2.java @@ -4,7 +4,7 @@ package com.orange.demo.common.core.object; * 二元组对象。主要用于可以一次返回多个结果的场景,同时还能避免强制转换。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ public class Tuple2 { diff --git a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/upload/BaseUpDownloader.java b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/upload/BaseUpDownloader.java new file mode 100644 index 00000000..09696d12 --- /dev/null +++ b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/upload/BaseUpDownloader.java @@ -0,0 +1,137 @@ +package com.orange.demo.common.core.upload; + +import com.alibaba.fastjson.JSON; +import com.orange.demo.common.core.constant.ApplicationConstant; +import com.orange.demo.common.core.util.ContextUtil; +import com.orange.demo.common.core.util.MyCommonUtil; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.io.FilenameUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.web.multipart.MultipartFile; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.util.List; + +/** + * 上传或下载文件抽象父类。 + * 包含存储本地文件的功能,以及上传和下载所需的通用方法。 + * + * @author Jerry + * @date 2020-10-19 + */ +@Slf4j +public abstract class BaseUpDownloader { + + /** + * 构建上传文件的完整目录。 + * + * @param rootBaseDir 文件下载的根目录。 + * @param modelName 所在数据表的实体对象名。 + * @param fieldName 关联字段的实体对象属性名。 + * @param asImage 是否为图片对象。图片是无需权限验证的,因此和附件存放在不同的子目录。 + * @return 上传文件的完整路径名。 + */ + public String makeFullPath( + String rootBaseDir, String modelName, String fieldName, Boolean asImage) { + StringBuilder uploadPathBuilder = new StringBuilder(128); + if (StringUtils.isNotBlank(rootBaseDir)) { + uploadPathBuilder.append(rootBaseDir).append("/"); + } + if (Boolean.TRUE.equals(asImage)) { + uploadPathBuilder.append(ApplicationConstant.UPLOAD_IMAGE_PARENT_PATH); + } else { + uploadPathBuilder.append(ApplicationConstant.UPLOAD_ATTACHMENT_PARENT_PATH); + } + uploadPathBuilder.append("/").append(modelName).append("/").append(fieldName).append("/"); + return uploadPathBuilder.toString(); + } + + /** + * 构建上传操作的返回对象。 + * + * @param serviceContextPath 微服务的上下文路径,如: /admin/upms。 + * @param originalFilename 上传文件的原始文件名(包含扩展名)。 + */ + public void fillUploadResponseInfo( + UploadResponseInfo responseInfo, String serviceContextPath, String originalFilename) { + // 根据请求上传的uri构建下载uri,只是将末尾的/upload改为/download即可。 + HttpServletRequest request = ContextUtil.getHttpRequest(); + String uri = request.getRequestURI(); + uri = StringUtils.removeEnd(uri, "/"); + uri = StringUtils.removeEnd(uri, "/upload"); + String downloadUri; + if (StringUtils.isBlank(serviceContextPath)) { + downloadUri = uri + "/download"; + } else { + downloadUri = serviceContextPath + uri + "/download"; + } + StringBuilder filenameBuilder = new StringBuilder(64); + filenameBuilder.append(MyCommonUtil.generateUuid()) + .append(".").append(FilenameUtils.getExtension(originalFilename)); + responseInfo.setDownloadUri(downloadUri); + responseInfo.setFilename(filenameBuilder.toString()); + } + + /** + * 执行下载操作,从本地文件系统读取数据,并将读取的数据直接写入到HttpServletResponse应答对象。 + * + * @param rootBaseDir 文件下载的根目录。 + * @param modelName 所在数据表的实体对象名。 + * @param fieldName 关联字段的实体对象属性名。 + * @param fileName 文件名。 + * @param asImage 是否为图片对象。图片是无需权限验证的,因此和附件存放在不同的子目录。 + * @param response Http 应答对象。 + * @throws Exception 操作错误。 + */ + public abstract void doDownload( + String rootBaseDir, + String modelName, + String fieldName, + String fileName, + Boolean asImage, + HttpServletResponse response) throws Exception; + + /** + * 执行文件上传操作,并存入本地文件系统,再将与该文件下载对应的Url直接写入到HttpServletResponse应答对象,返回给前端。 + * + * @param serviceContextPath 微服务的上下文路径,如: /admin/upms。 + * @param rootBaseDir 存放上传文件的根目录。 + * @param modelName 所在数据表的实体对象名。 + * @param fieldName 关联字段的实体对象属性名。 + * @param uploadFile Http请求中上传的文件对象。 + * @param asImage 是否为图片对象。图片是无需权限验证的,因此和附件存放在不同的子目录。 + * @return 存储在本地上传文件名。 + * @throws Exception 操作错误。 + */ + public abstract UploadResponseInfo doUpload( + String serviceContextPath, + String rootBaseDir, + String modelName, + String fieldName, + Boolean asImage, + MultipartFile uploadFile) throws Exception; + + /** + * 判断filename参数指定的文件名,是否被包含在fileInfoJson参数中。 + * + * @param fileInfoJson 内部类UploadFileInfo的JSONArray数组。 + * @param filename 被包含的文件名。 + * @return 存在返回true,否则false。 + */ + public static boolean containFile(String fileInfoJson, String filename) { + if (StringUtils.isAnyBlank(fileInfoJson, filename)) { + return false; + } + List fileInfoList = JSON.parseArray(fileInfoJson, UploadResponseInfo.class); + if (CollectionUtils.isNotEmpty(fileInfoList)) { + for (UploadResponseInfo fileInfo : fileInfoList) { + if (StringUtils.equals(filename, fileInfo.getFilename())) { + return true; + } + } + } + return false; + } +} diff --git a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/upload/LocalUpDownloader.java b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/upload/LocalUpDownloader.java new file mode 100644 index 00000000..7251ce18 --- /dev/null +++ b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/upload/LocalUpDownloader.java @@ -0,0 +1,149 @@ +package com.orange.demo.common.core.upload; + +import com.alibaba.fastjson.JSON; +import com.orange.demo.common.core.constant.ErrorCodeEnum; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +import org.springframework.web.multipart.MultipartFile; + +import javax.annotation.PostConstruct; +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.List; +import java.util.Objects; + +/** + * 存储本地文件的上传下载实现类。 + * + * @author Jerry + * @date 2020-10-19 + */ +@Slf4j +@Component +public class LocalUpDownloader extends BaseUpDownloader { + + @Autowired + private UpDownloaderFactory factory; + + @PostConstruct + public void doRegister() { + factory.registerUpDownloader(UploadStoreTypeEnum.LOCAL_SYSTEM, this); + } + + /** + * 执行下载操作,从本地文件系统读取数据,并将读取的数据直接写入到HttpServletResponse应答对象。 + * + * @param rootBaseDir 文件下载的根目录。 + * @param modelName 所在数据表的实体对象名。 + * @param fieldName 关联字段的实体对象属性名。 + * @param fileName 文件名。 + * @param asImage 是否为图片对象。图片是无需权限验证的,因此和附件存放在不同的子目录。 + * @param response Http 应答对象。 + */ + @Override + public void doDownload( + String rootBaseDir, + String modelName, + String fieldName, + String fileName, + Boolean asImage, + HttpServletResponse response) { + String uploadPath = makeFullPath(rootBaseDir, modelName, fieldName, asImage); + String fullFileanme = uploadPath + "/" + fileName; + File file = new File(fullFileanme); + if (!file.exists()) { + log.warn("Download file [" + fullFileanme + "] failed, no file found!"); + response.setStatus(HttpServletResponse.SC_NOT_FOUND); + return; + } + response.setHeader("content-type", "application/octet-stream"); + response.setContentType("application/octet-stream"); + response.setHeader("Content-Disposition", "attachment;filename=" + fileName); + byte[] buff = new byte[2048]; + try (OutputStream os = response.getOutputStream(); + BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file))) { + int i = bis.read(buff); + while (i != -1) { + os.write(buff, 0, buff.length); + os.flush(); + i = bis.read(buff); + } + } catch (IOException e) { + log.error("Failed to call UpDownloadUtil.doDownload", e); + } + } + + /** + * 执行文件上传操作,并存入本地文件系统,再将与该文件下载对应的Url直接写入到HttpServletResponse应答对象,返回给前端。 + * + * @param serviceContextPath 微服务的上下文路径,如: /admin/upms。 + * @param rootBaseDir 存放上传文件的根目录。 + * @param modelName 所在数据表的实体对象名。 + * @param fieldName 关联字段的实体对象属性名。 + * @param uploadFile Http请求中上传的文件对象。 + * @param asImage 是否为图片对象。图片是无需权限验证的,因此和附件存放在不同的子目录。 + * @return 存储在本地上传文件名。 + * @throws IOException 文件操作错误。 + */ + @Override + public UploadResponseInfo doUpload( + String serviceContextPath, + String rootBaseDir, + String modelName, + String fieldName, + Boolean asImage, + MultipartFile uploadFile) throws IOException { + UploadResponseInfo responseInfo = new UploadResponseInfo(); + if (Objects.isNull(uploadFile) || uploadFile.isEmpty()) { + responseInfo.setUploadFailed(true); + responseInfo.setErrorMessage(ErrorCodeEnum.INVALID_UPLOAD_FILE_ARGUMENT.getErrorMessage()); + return responseInfo; + } + String uploadPath = makeFullPath(rootBaseDir, modelName, fieldName, asImage); + fillUploadResponseInfo(responseInfo, serviceContextPath, uploadFile.getOriginalFilename()); + try { + byte[] bytes = uploadFile.getBytes(); + Path path = Paths.get(uploadPath + responseInfo.getFilename()); + //如果没有files文件夹,则创建 + if (!Files.isWritable(path)) { + Files.createDirectories(Paths.get(uploadPath)); + } + //文件写入指定路径 + Files.write(path, bytes); + } catch (IOException e) { + log.error("Failed to write uploaded file [" + uploadFile.getOriginalFilename() + " ].", e); + responseInfo.setUploadFailed(true); + responseInfo.setErrorMessage(ErrorCodeEnum.INVALID_UPLOAD_FILE_IOERROR.getErrorMessage()); + return responseInfo; + } + return responseInfo; + } + + /** + * 判断filename参数指定的文件名,是否被包含在fileInfoJson参数中。 + * + * @param fileInfoJson 内部类UploadFileInfo的JSONArray数组。 + * @param filename 被包含的文件名。 + * @return 存在返回true,否则false。 + */ + public static boolean containFile(String fileInfoJson, String filename) { + if (StringUtils.isAnyBlank(fileInfoJson, filename)) { + return false; + } + List fileInfoList = JSON.parseArray(fileInfoJson, UploadResponseInfo.class); + if (CollectionUtils.isNotEmpty(fileInfoList)) { + for (UploadResponseInfo fileInfo : fileInfoList) { + if (StringUtils.equals(filename, fileInfo.getFilename())) { + return true; + } + } + } + return false; + } +} diff --git a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/upload/UpDownloaderFactory.java b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/upload/UpDownloaderFactory.java new file mode 100644 index 00000000..83693b53 --- /dev/null +++ b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/upload/UpDownloaderFactory.java @@ -0,0 +1,49 @@ +package com.orange.demo.common.core.upload; + +import org.springframework.stereotype.Component; + +import java.util.HashMap; +import java.util.Map; + +/** + * 业务对象根据上传下载存储类型,获取上传下载对象的工厂类。 + * + * @author Jerry + * @date 2020-10-19 + */ +@Component +public class UpDownloaderFactory { + + private Map upDownloaderMap = new HashMap<>(); + + /** + * 根据存储类型获取上传下载对象。 + * @param storeType 存储类型。 + * @return 匹配的上传下载对象。 + */ + public BaseUpDownloader get(UploadStoreTypeEnum storeType) { + BaseUpDownloader upDownloader = upDownloaderMap.get(storeType); + if (upDownloader == null) { + throw new UnsupportedOperationException( + "The storeType [" + storeType.name() + "] isn't supported, please add dependency jar first."); + } + return upDownloader; + } + + /** + * 注册上传下载对象到工厂。 + * + * @param storeType 存储类型。 + * @param upDownloader 上传下载对象。 + */ + public void registerUpDownloader(UploadStoreTypeEnum storeType, BaseUpDownloader upDownloader) { + if (storeType == null || upDownloader == null) { + throw new IllegalArgumentException("The Argument can't be NULL."); + } + if (upDownloaderMap.containsKey(storeType)) { + throw new UnsupportedOperationException( + "The storeType [" + storeType.name() + "] has been registered already."); + } + upDownloaderMap.put(storeType, upDownloader); + } +} diff --git a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/upload/UploadResponseInfo.java b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/upload/UploadResponseInfo.java new file mode 100644 index 00000000..14af24e6 --- /dev/null +++ b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/upload/UploadResponseInfo.java @@ -0,0 +1,29 @@ +package com.orange.demo.common.core.upload; + +import lombok.Data; + +/** + * 数据上传操作的应答信息对象。 + * + * @author Jerry + * @date 2020-10-19 + */ +@Data +public class UploadResponseInfo { + /** + * 上传是否出现错误。 + */ + private Boolean uploadFailed = false; + /** + * 具体错误信息。 + */ + private String errorMessage; + /** + * 返回前端的下载url。 + */ + private String downloadUri; + /** + * 返回给前端的文件名。 + */ + private String filename; +} diff --git a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/upload/UploadStoreInfo.java b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/upload/UploadStoreInfo.java new file mode 100644 index 00000000..59fedcd0 --- /dev/null +++ b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/upload/UploadStoreInfo.java @@ -0,0 +1,22 @@ +package com.orange.demo.common.core.upload; + +import lombok.Data; + +/** + * 上传数据存储信息对象。这里之所以使用对象,主要是便于今后扩展。 + * + * @author Jerry + * @date 2020-10-19 + */ +@Data +public class UploadStoreInfo { + + /** + * 是否支持上传。 + */ + private boolean supportUpload; + /** + * 上传数据存储类型。 + */ + private UploadStoreTypeEnum storeType; +} diff --git a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/upload/UploadStoreTypeEnum.java b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/upload/UploadStoreTypeEnum.java new file mode 100644 index 00000000..da382cd4 --- /dev/null +++ b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/upload/UploadStoreTypeEnum.java @@ -0,0 +1,19 @@ +package com.orange.demo.common.core.upload; + +/** + * 上传数据存储介质类型枚举。 + * + * @author Jerry + * @date 2020-10-19 + */ +public enum UploadStoreTypeEnum { + + /** + * 本地系统。 + */ + LOCAL_SYSTEM, + /** + * minio分布式存储。 + */ + MINIO_SYSTEM +} diff --git a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/util/AopTargetUtil.java b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/util/AopTargetUtil.java index 299dc535..1360ca0e 100644 --- a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/util/AopTargetUtil.java +++ b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/util/AopTargetUtil.java @@ -11,7 +11,7 @@ import java.lang.reflect.Field; * 获取JDK动态代理/CGLIB代理对象代理的目标对象的工具类。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Slf4j public class AopTargetUtil { @@ -38,6 +38,12 @@ public class AopTargetUtil { } } + /** + * 私有构造函数,明确标识该常量类的作用。 + */ + private AopTargetUtil() { + } + private static Object getCglibProxyTargetObject(Object proxy) throws Exception { Field h = proxy.getClass().getDeclaredField("CGLIB$CALLBACK_0"); h.setAccessible(true); diff --git a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/util/ApplicationContextHolder.java b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/util/ApplicationContextHolder.java index e6d3bb26..aa8e5d5d 100644 --- a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/util/ApplicationContextHolder.java +++ b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/util/ApplicationContextHolder.java @@ -10,7 +10,7 @@ import org.springframework.stereotype.Component; * Spring 系统启动应用感知对象,主要用于获取Spring Bean的上下文对象,后续的代码中可以直接查找系统中加载的Bean对象。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Component public class ApplicationContextHolder implements ApplicationContextAware { diff --git a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/util/ContextUtil.java b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/util/ContextUtil.java index dda2829f..7fbe68cc 100644 --- a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/util/ContextUtil.java +++ b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/util/ContextUtil.java @@ -10,7 +10,7 @@ import javax.servlet.http.HttpServletResponse; * 获取Servlet HttpRequest和HttpResponse的工具类。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ public class ContextUtil { diff --git a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/util/ExportUtil.java b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/util/ExportUtil.java index 73a251c0..36a048b7 100644 --- a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/util/ExportUtil.java +++ b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/util/ExportUtil.java @@ -23,7 +23,7 @@ import java.util.*; * 导出工具类,目前支持xlsx和csv两种类型。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Slf4j public class ExportUtil { diff --git a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/util/ImportUtil.java b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/util/ImportUtil.java index 4362c940..431dea23 100644 --- a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/util/ImportUtil.java +++ b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/util/ImportUtil.java @@ -22,7 +22,7 @@ import java.util.stream.Collectors; * 导入工具类,目前支持xlsx和csv两种类型。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Slf4j public class ImportUtil { diff --git a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/util/IpUtil.java b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/util/IpUtil.java index 64281c93..5f4e96b5 100644 --- a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/util/IpUtil.java +++ b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/util/IpUtil.java @@ -17,7 +17,7 @@ import java.util.List; * Ip工具类。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Slf4j public class IpUtil { diff --git a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/util/JwtUtil.java b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/util/JwtUtil.java index f673c483..c38c00c9 100644 --- a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/util/JwtUtil.java +++ b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/util/JwtUtil.java @@ -12,7 +12,7 @@ import java.util.Map; * 基于JWT的Token生成工具类 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Slf4j public class JwtUtil { diff --git a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/util/LogMessageUtil.java b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/util/LogMessageUtil.java index 02e5084a..6584df45 100644 --- a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/util/LogMessageUtil.java +++ b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/util/LogMessageUtil.java @@ -6,7 +6,7 @@ package com.orange.demo.common.core.util; * 提高代码的规范度和可维护性。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ public class LogMessageUtil { diff --git a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/util/MyCommonUtil.java b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/util/MyCommonUtil.java index 4f300a19..56ec8b6a 100644 --- a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/util/MyCommonUtil.java +++ b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/util/MyCommonUtil.java @@ -16,7 +16,7 @@ import java.util.UUID; * 脚手架中常用的基本工具方法集合,一般而言工程内部使用的方法。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ public class MyCommonUtil { diff --git a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/util/MyDateUtil.java b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/util/MyDateUtil.java index 3f2d45fd..e10f4168 100644 --- a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/util/MyDateUtil.java +++ b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/util/MyDateUtil.java @@ -16,7 +16,7 @@ import static org.joda.time.PeriodType.days; * 日期工具类,主要封装了部分joda-time中的方法,让很多代码一行完成,同时统一了日期到字符串的pattern格式。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ public class MyDateUtil { diff --git a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/util/MyModelUtil.java b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/util/MyModelUtil.java index 44a4a112..5d145ef8 100644 --- a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/util/MyModelUtil.java +++ b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/util/MyModelUtil.java @@ -5,8 +5,10 @@ import cn.hutool.core.util.ReflectUtil; import com.orange.demo.common.core.annotation.RelationConstDict; import com.orange.demo.common.core.annotation.RelationDict; import com.orange.demo.common.core.annotation.RelationOneToOne; +import com.orange.demo.common.core.annotation.UploadFlagColumn; import com.orange.demo.common.core.exception.MyRuntimeException; import com.orange.demo.common.core.object.Tuple2; +import com.orange.demo.common.core.upload.UploadStoreInfo; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.MapUtils; @@ -26,7 +28,7 @@ import java.util.stream.Collectors; * 负责Model数据操作、类型转换和关系关联等行为的工具类。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Slf4j public class MyModelUtil { @@ -495,6 +497,30 @@ public class MyModelUtil { return e; } + /** + * 获取上传字段的存储信息。 + * + * @param modelClass model的class对象。 + * @param uploadFieldName 上传字段名。 + * @param model的类型。 + * @return 字段的上传存储信息对象。该值始终不会返回null。 + */ + public static UploadStoreInfo getUploadStoreInfo(Class modelClass, String uploadFieldName) { + UploadStoreInfo uploadStoreInfo = new UploadStoreInfo(); + Field uploadField = ReflectUtil.getField(modelClass, uploadFieldName); + if (uploadField == null) { + throw new UnsupportedOperationException("The Field [" + + uploadFieldName + "] doesn't exist in Model [" + modelClass.getSimpleName() + "]."); + } + uploadStoreInfo.setSupportUpload(false); + UploadFlagColumn anno = uploadField.getAnnotation(UploadFlagColumn.class); + if (anno != null) { + uploadStoreInfo.setSupportUpload(true); + uploadStoreInfo.setStoreType(anno.storeType()); + } + return uploadStoreInfo; + } + /** * 私有构造函数,明确标识该常量类的作用。 */ diff --git a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/util/MyPageUtil.java b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/util/MyPageUtil.java index 57a1a052..7a21754d 100644 --- a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/util/MyPageUtil.java +++ b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/util/MyPageUtil.java @@ -13,7 +13,7 @@ import java.util.List; * 生成带有分页信息的数据列表 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ public class MyPageUtil { diff --git a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/util/RedisKeyUtil.java b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/util/RedisKeyUtil.java index 93979fdf..e456b6ee 100644 --- a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/util/RedisKeyUtil.java +++ b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/util/RedisKeyUtil.java @@ -4,7 +4,7 @@ package com.orange.demo.common.core.util; * Redis 键生成工具类。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ public class RedisKeyUtil { diff --git a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/util/RsaUtil.java b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/util/RsaUtil.java index e0ff6cc3..eb51cf6a 100644 --- a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/util/RsaUtil.java +++ b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/util/RsaUtil.java @@ -15,7 +15,7 @@ import java.util.Map; * Java RSA 加密工具类。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ public class RsaUtil { @@ -64,7 +64,8 @@ public class RsaUtil { //base64编码的公钥 byte[] decoded = Base64.getDecoder().decode(publicKey); RSAPublicKey pubKey = (RSAPublicKey) KeyFactory.getInstance("RSA").generatePublic(new X509EncodedKeySpec(decoded)); - //RSA加密 + //RSA加密。后面这个更安全,但是SonarQube始终report安全漏洞。"RSA/ECB/PKCS1Padding" + //而浏览器自带的Javascript加密功能,目前safari不支持,而且用的人也不太多。所以暂时都不考虑了。 Cipher cipher = Cipher.getInstance("RSA"); cipher.init(Cipher.ENCRYPT_MODE, pubKey); return Base64.getEncoder().encodeToString(cipher.doFinal(str.getBytes(StandardCharsets.UTF_8))); diff --git a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/util/TreeNode.java b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/util/TreeNode.java index 91da4a7c..0daddb2b 100644 --- a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/util/TreeNode.java +++ b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/util/TreeNode.java @@ -15,7 +15,7 @@ import java.util.function.Function; * @param 节点之间关联键的类型。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Data public class TreeNode { diff --git a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/util/UpDownloadUtil.java b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/util/UpDownloadUtil.java deleted file mode 100644 index ce2259ed..00000000 --- a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/util/UpDownloadUtil.java +++ /dev/null @@ -1,182 +0,0 @@ -package com.orange.demo.common.core.util; - -import com.alibaba.fastjson.JSON; -import com.orange.demo.common.core.constant.ApplicationConstant; -import com.orange.demo.common.core.constant.ErrorCodeEnum; -import com.orange.demo.common.core.object.ResponseResult; -import lombok.Data; -import lombok.extern.slf4j.Slf4j; -import org.apache.commons.collections4.CollectionUtils; -import org.apache.commons.io.FilenameUtils; -import org.apache.commons.lang3.StringUtils; -import org.springframework.web.multipart.MultipartFile; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import java.io.*; -import java.nio.file.Files; -import java.nio.file.Path; -import java.nio.file.Paths; -import java.util.List; -import java.util.Objects; - -/** - * 上传或下载附件文件的工具类。 - * - * @author Jerry - * @date 2020-09-27 - */ -@Slf4j -public class UpDownloadUtil { - - /** - * 执行下载操作,并将读取的文件数据直接写入到HttpServletResponse应答对象。 - * - * @param rootBaseDir 文件下载的根目录。 - * @param modelName 所在数据表的实体对象名。 - * @param fieldName 关联字段的实体对象属性名。 - * @param fileName 文件名。 - * @param asImage 是否为图片对象。图片是无需权限验证的,因此和附件存放在不同的子目录。 - * @param response Http 应答对象。 - */ - public static void doDownload( - String rootBaseDir, - String modelName, - String fieldName, - String fileName, - Boolean asImage, - HttpServletResponse response) { - StringBuilder uploadPathBuilder = new StringBuilder(128); - uploadPathBuilder.append(rootBaseDir).append("/"); - if (Boolean.TRUE.equals(asImage)) { - uploadPathBuilder.append(ApplicationConstant.UPLOAD_IMAGE_PARENT_PATH); - } else { - uploadPathBuilder.append(ApplicationConstant.UPLOAD_ATTACHMENT_PARENT_PATH); - } - uploadPathBuilder.append("/").append(modelName).append("/").append(fieldName).append("/").append(fileName); - File file = new File(uploadPathBuilder.toString()); - if (!file.exists()) { - log.warn("Download file [" + uploadPathBuilder.toString() + "] failed, no file found!"); - response.setStatus(HttpServletResponse.SC_NOT_FOUND); - return; - } - response.setHeader("content-type", "application/octet-stream"); - response.setContentType("application/octet-stream"); - response.setHeader("Content-Disposition", "attachment;filename=" + fileName); - byte[] buff = new byte[2048]; - try (OutputStream os = response.getOutputStream(); - BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file))) { - int i = bis.read(buff); - while (i != -1) { - os.write(buff, 0, buff.length); - os.flush(); - i = bis.read(buff); - } - } catch (IOException e) { - log.error("Failed to call UpDownloadUtil.doDownload", e); - } - } - - /** - * 执行文件上传操作,并将与该文件下载对应的Url直接写入到HttpServletResponse应答对象,返回给前端。 - * - * @param rootBaseDir 存放上传文件的根目录。 - * @param serviceContextPath 微服务的上下文路径,如: /admin/upms。 - * @param modelName 所在数据表的实体对象名。 - * @param fieldName 关联字段的实体对象属性名。 - * @param uploadFile Http请求中上传的文件对象。 - * @param asImage 是否为图片对象。图片是无需权限验证的,因此和附件存放在不同的子目录。 - * @param response Http 应答对象。 - * @return 存储在本地上传文件名。 - * @throws IOException 文件操作错误。 - */ - public static String doUpload( - String rootBaseDir, - String serviceContextPath, - String modelName, - String fieldName, - Boolean asImage, - MultipartFile uploadFile, - HttpServletResponse response) throws IOException { - PrintWriter out = response.getWriter(); - response.setContentType("application/json; charset=utf-8"); - if (Objects.isNull(uploadFile) || uploadFile.isEmpty() || MyCommonUtil.isBlankOrNull(fieldName)) { - response.setStatus(HttpServletResponse.SC_FORBIDDEN); - out.print(JSON.toJSONString(ResponseResult.error(ErrorCodeEnum.INVALID_UPLOAD_FILE_ARGUMENT))); - return null; - } - StringBuilder uploadPathBuilder = new StringBuilder(128); - uploadPathBuilder.append(rootBaseDir).append("/"); - if (Boolean.TRUE.equals(asImage)) { - uploadPathBuilder.append(ApplicationConstant.UPLOAD_IMAGE_PARENT_PATH); - } else { - uploadPathBuilder.append(ApplicationConstant.UPLOAD_ATTACHMENT_PARENT_PATH); - } - uploadPathBuilder.append("/").append(modelName).append("/").append(fieldName).append("/"); - // 根据请求上传的uri构建下载uri,只是将末尾的/upload改为/download即可。 - HttpServletRequest request = ContextUtil.getHttpRequest(); - String uri = request.getRequestURI(); - uri = StringUtils.removeEnd(uri, "/"); - uri = StringUtils.removeEnd(uri, "/upload"); - String downloadUri = serviceContextPath + uri + "/download"; - StringBuilder filenameBuilder = new StringBuilder(64); - filenameBuilder.append(MyCommonUtil.generateUuid()) - .append(".").append(FilenameUtils.getExtension(uploadFile.getOriginalFilename())); - UploadFileInfo fileInfo = new UploadFileInfo(); - fileInfo.downloadUri = downloadUri; - fileInfo.filename = filenameBuilder.toString(); - try { - byte[] bytes = uploadFile.getBytes(); - Path path = Paths.get(uploadPathBuilder.toString() + filenameBuilder.toString()); - //如果没有files文件夹,则创建 - if (!Files.isWritable(path)) { - Files.createDirectories(Paths.get(uploadPathBuilder.toString())); - } - //文件写入指定路径 - Files.write(path, bytes); - } catch (IOException e) { - log.error("Failed to write uploaded file [" + uploadFile.getOriginalFilename() + " ].", e); - response.setStatus(HttpServletResponse.SC_FORBIDDEN); - out.print(JSON.toJSONString(ResponseResult.error(ErrorCodeEnum.INVALID_UPLOAD_FILE_IOERROR))); - return null; - } - out.print(JSON.toJSONString(ResponseResult.success(fileInfo))); - out.flush(); - out.close(); - return fileInfo.filename; - } - - /** - * 判断filename参数指定的文件名,是否被包含在fileInfoJson参数中。 - * - * @param fileInfoJson 内部类UploadFileInfo的JSONArray数组。 - * @param filename 被包含的文件名。 - * @return 存在返回true,否则false。 - */ - public static boolean containFile(String fileInfoJson, String filename) { - if (StringUtils.isAnyBlank(fileInfoJson, filename)) { - return false; - } - List fileInfoList = JSON.parseArray(fileInfoJson, UploadFileInfo.class); - if (CollectionUtils.isNotEmpty(fileInfoList)) { - for (UploadFileInfo fileInfo : fileInfoList) { - if (StringUtils.equals(filename, fileInfo.filename)) { - return true; - } - } - } - return false; - } - - /** - * 私有构造函数,明确标识该常量类的作用。 - */ - private UpDownloadUtil() { - } - - @Data - static class UploadFileInfo { - private String downloadUri; - private String filename; - } -} diff --git a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/validator/AddGroup.java b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/validator/AddGroup.java index 483779dc..c7876b43 100644 --- a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/validator/AddGroup.java +++ b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/validator/AddGroup.java @@ -4,7 +4,7 @@ package com.orange.demo.common.core.validator; * 数据增加的验证分组。通常用于数据新增场景。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ public interface AddGroup { } diff --git a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/validator/ConstDictRef.java b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/validator/ConstDictRef.java index 947fe375..26a9f332 100644 --- a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/validator/ConstDictRef.java +++ b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/validator/ConstDictRef.java @@ -11,7 +11,7 @@ import java.lang.annotation.Target; * 定义在Model对象中,标注字段值引用自指定的常量字典,和ConstDictRefValidator对象配合完成数据验证。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Target({ElementType.FIELD}) @Retention(RetentionPolicy.RUNTIME) diff --git a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/validator/ConstDictValidator.java b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/validator/ConstDictValidator.java index 3e71c39e..571a3d9e 100644 --- a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/validator/ConstDictValidator.java +++ b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/validator/ConstDictValidator.java @@ -10,7 +10,7 @@ import java.lang.reflect.Method; * 数据字段自定义验证,用于验证Model中字符串字段的最大长度和最小长度。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ public class ConstDictValidator implements ConstraintValidator { diff --git a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/validator/TextLength.java b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/validator/TextLength.java index adf4fb75..02fcb138 100644 --- a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/validator/TextLength.java +++ b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/validator/TextLength.java @@ -11,7 +11,7 @@ import java.lang.annotation.Target; * 定义在Model或Dto对象中,UTF-8编码的字符串字段长度的上限和下限,和TextLengthValidator对象配合完成数据验证。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Target({ElementType.FIELD}) @Retention(RetentionPolicy.RUNTIME) diff --git a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/validator/TextLengthValidator.java b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/validator/TextLengthValidator.java index 8f58cadf..1c3b9830 100644 --- a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/validator/TextLengthValidator.java +++ b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/validator/TextLengthValidator.java @@ -9,7 +9,7 @@ import javax.validation.ConstraintValidatorContext; * 数据字段自定义验证,用于验证Model中UTF-8编码的字符串字段的最大长度和最小长度。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ public class TextLengthValidator implements ConstraintValidator { diff --git a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/validator/UpdateGroup.java b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/validator/UpdateGroup.java index fec23a93..07cfecf1 100644 --- a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/validator/UpdateGroup.java +++ b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/validator/UpdateGroup.java @@ -4,7 +4,7 @@ package com.orange.demo.common.core.validator; * 数据修改的验证分组。通常用于数据更新的场景。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ public interface UpdateGroup { diff --git a/orange-demo-multi-service/common/common-minio/common-minio.iml b/orange-demo-multi-service/common/common-minio/common-minio.iml new file mode 100644 index 00000000..2d33fb27 --- /dev/null +++ b/orange-demo-multi-service/common/common-minio/common-minio.iml @@ -0,0 +1,222 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/orange-demo-multi-service/common/common-minio/pom.xml b/orange-demo-multi-service/common/common-minio/pom.xml new file mode 100644 index 00000000..027e23f1 --- /dev/null +++ b/orange-demo-multi-service/common/common-minio/pom.xml @@ -0,0 +1,29 @@ + + + + common + com.orange.demo + 1.0.0 + + 4.0.0 + + common-minio + 1.0.0 + common-minio + jar + + + + io.minio + minio + ${minio.version} + + + com.orange.demo + common-core + 1.0.0 + + + \ No newline at end of file diff --git a/orange-demo-multi-service/common/common-minio/src/main/java/com/orange/demo/common/minio/config/MinioAutoConfiguration.java b/orange-demo-multi-service/common/common-minio/src/main/java/com/orange/demo/common/minio/config/MinioAutoConfiguration.java new file mode 100644 index 00000000..9dd17da6 --- /dev/null +++ b/orange-demo-multi-service/common/common-minio/src/main/java/com/orange/demo/common/minio/config/MinioAutoConfiguration.java @@ -0,0 +1,48 @@ +package com.orange.demo.common.minio.config; + +import com.orange.demo.common.minio.wrapper.MinioTemplate; +import io.minio.MinioClient; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.boot.context.properties.EnableConfigurationProperties; +import org.springframework.context.annotation.Bean; + +/** + * common-minio模块的自动配置引导类。仅当配置项minio.enabled为true的时候加载。 + * + * @author Jerry + * @date 2020-10-19 + */ +@EnableConfigurationProperties(MinioProperties.class) +@ConditionalOnProperty(prefix = "minio", name = "enabled") +public class MinioAutoConfiguration { + + /** + * 将minio原生的客户端类封装成bean对象,便于集成,同时也可以灵活使用客户端的所有功能。 + * + * @param p 属性配置对象。 + * @return minio的原生客户端对象。 + */ + @Bean + @ConditionalOnMissingBean + public MinioClient minioClient(MinioProperties p) throws Exception { + MinioClient client = new MinioClient(p.getEndpoint(), p.getAccessKey(), p.getSecretKey()); + if (!client.bucketExists(p.getBucketName())) { + client.makeBucket(p.getBucketName()); + } + return client; + } + + /** + * 封装的minio模板类。 + * + * @param p 属性配置对象。 + * @param c minio的原生客户端bean对象。 + * @return minio模板的bean对象。 + */ + @Bean + @ConditionalOnMissingBean + public MinioTemplate minioTemplate(MinioProperties p, MinioClient c) { + return new MinioTemplate(p, c); + } +} \ No newline at end of file diff --git a/orange-demo-multi-service/common/common-minio/src/main/java/com/orange/demo/common/minio/config/MinioProperties.java b/orange-demo-multi-service/common/common-minio/src/main/java/com/orange/demo/common/minio/config/MinioProperties.java new file mode 100644 index 00000000..31e8960c --- /dev/null +++ b/orange-demo-multi-service/common/common-minio/src/main/java/com/orange/demo/common/minio/config/MinioProperties.java @@ -0,0 +1,32 @@ +package com.orange.demo.common.minio.config; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; + +/** + * common-minio模块的配置类。 + * + * @author Jerry + * @date 2020-10-19 + */ +@Data +@ConfigurationProperties(prefix = "minio") +public class MinioProperties { + + /** + * 访问入口地址。 + */ + private String endpoint; + /** + * 访问安全的key。 + */ + private String accessKey; + /** + * 访问安全的密钥。 + */ + private String secretKey; + /** + * 缺省桶名称。 + */ + private String bucketName; +} diff --git a/orange-demo-multi-service/common/common-minio/src/main/java/com/orange/demo/common/minio/util/MinioUpDownloader.java b/orange-demo-multi-service/common/common-minio/src/main/java/com/orange/demo/common/minio/util/MinioUpDownloader.java new file mode 100644 index 00000000..99d94c4d --- /dev/null +++ b/orange-demo-multi-service/common/common-minio/src/main/java/com/orange/demo/common/minio/util/MinioUpDownloader.java @@ -0,0 +1,100 @@ +package com.orange.demo.common.minio.util; + +import cn.hutool.core.io.IoUtil; +import com.orange.demo.common.core.constant.ErrorCodeEnum; +import com.orange.demo.common.core.upload.UpDownloaderFactory; +import com.orange.demo.common.core.upload.UploadResponseInfo; +import com.orange.demo.common.core.upload.BaseUpDownloader; +import com.orange.demo.common.core.upload.UploadStoreTypeEnum; +import com.orange.demo.common.minio.wrapper.MinioTemplate; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.stereotype.Component; +import org.springframework.web.multipart.MultipartFile; + +import javax.annotation.PostConstruct; +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.Objects; + +/** + * 基于Minio上传和下载文件操作的工具类。 + * + * @author Jerry + * @date 2020-10-19 + */ +@Slf4j +@Component +@ConditionalOnProperty(prefix = "minio", name = "enabled") +public class MinioUpDownloader extends BaseUpDownloader { + + @Autowired + private MinioTemplate minioTemplate; + @Autowired + private UpDownloaderFactory factory; + + @PostConstruct + public void doRegister() { + factory.registerUpDownloader(UploadStoreTypeEnum.MINIO_SYSTEM, this); + } + + /** + * 执行文件上传操作,将文件数据存入Minio。 + * + * @param serviceContextPath 微服务的上下文路径,如: /admin/upms。 + * @param rootBaseDir 存放上传文件的根目录。(minio中忽略该值,因为使用了bucket) + * @param modelName 所在数据表的实体对象名。 + * @param fieldName 关联字段的实体对象属性名。 + * @param uploadFile Http请求中上传的文件对象。 + * @param asImage 是否为图片对象。图片是无需权限验证的,因此和附件存放在不同的子目录。 + * @return 上传应答信息对象。该对象始终不为null。 + * @throws Exception minio抛出的异常。 + */ + @Override + public UploadResponseInfo doUpload( + String serviceContextPath, + String rootBaseDir, + String modelName, + String fieldName, + Boolean asImage, + MultipartFile uploadFile) throws Exception { + UploadResponseInfo responseInfo = new UploadResponseInfo(); + if (Objects.isNull(uploadFile) || uploadFile.isEmpty()) { + responseInfo.setUploadFailed(true); + responseInfo.setErrorMessage(ErrorCodeEnum.INVALID_UPLOAD_FILE_ARGUMENT.getErrorMessage()); + return responseInfo; + } + String uploadPath = super.makeFullPath(null, modelName, fieldName, asImage); + super.fillUploadResponseInfo(responseInfo, serviceContextPath, uploadFile.getOriginalFilename()); + minioTemplate.putObject(uploadPath + "/" + responseInfo.getFilename(), uploadFile.getInputStream()); + return responseInfo; + } + + /** + * 执行下载操作,从Minio读取数据。并将读取的文件数据直接写入到HttpServletResponse应答对象。 + * + * @param rootBaseDir 文件下载的根目录。(minio中忽略该值,因为使用了bucket) + * @param modelName 所在数据表的实体对象名。 + * @param fieldName 关联字段的实体对象属性名。 + * @param fileName 文件名。 + * @param asImage 是否为图片对象。图片是无需权限验证的,因此和附件存放在不同的子目录。 + * @param response Http 应答对象。 + */ + @Override + public void doDownload( + String rootBaseDir, + String modelName, + String fieldName, + String fileName, + Boolean asImage, + HttpServletResponse response) throws Exception { + String uploadPath = this.makeFullPath(null, modelName, fieldName, asImage); + String fullFileanme = uploadPath + "/" + fileName; + response.setHeader("content-type", "application/octet-stream"); + response.setContentType("application/octet-stream"); + response.setHeader("Content-Disposition", "attachment;filename=" + fileName); + InputStream in = minioTemplate.getStream(fullFileanme); + IoUtil.copy(in, response.getOutputStream()); + } +} diff --git a/orange-demo-multi-service/common/common-minio/src/main/java/com/orange/demo/common/minio/wrapper/MinioTemplate.java b/orange-demo-multi-service/common/common-minio/src/main/java/com/orange/demo/common/minio/wrapper/MinioTemplate.java new file mode 100644 index 00000000..f7947ccd --- /dev/null +++ b/orange-demo-multi-service/common/common-minio/src/main/java/com/orange/demo/common/minio/wrapper/MinioTemplate.java @@ -0,0 +1,209 @@ +package com.orange.demo.common.minio.wrapper; + +import com.orange.demo.common.minio.config.MinioProperties; +import io.minio.MinioClient; +import io.minio.ObjectStat; +import io.minio.PutObjectOptions; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.io.FileUtils; + +import java.io.File; +import java.io.InputStream; + +/** + * 封装的minio客户端模板类。 + * + * @author Jerry + * @date 2020-10-19 + */ +@Slf4j +public class MinioTemplate { + + private static final String TMP_DIR = System.getProperty("java.io.tmpdir") + File.separator; + private final MinioProperties properties; + private final MinioClient client; + + public MinioTemplate(MinioProperties properties, MinioClient client) { + super(); + this.properties = properties; + this.client = client; + } + + /** + * 判断bucket是否存在。 + * + * @param bucketName 桶名称。 + * @return 存在返回true,否则false。 + */ + public boolean bucketExists(String bucketName) { + try { + return client.bucketExists(bucketName); + } catch (Exception e) { + log.error("", e); + } + return false; + } + + /** + * 创建桶。 + * + * @param bucketName 桶名称。 + */ + public void makeBucket(String bucketName) throws Exception { + if (!client.bucketExists(bucketName)) { + client.makeBucket(bucketName); + } + } + + /** + * 存放对象。 + * + * @param bucketName 桶名称。 + * @param objectName 对象名称。 + * @param filename 本地上传的文件名称。 + */ + public void putObject(String bucketName, String objectName, String filename) throws Exception { + client.putObject(bucketName, objectName, filename, new PutObjectOptions(-1, -1)); + } + + /** + * 存放对象。桶名称为配置中的桶名称。 + * + * @param objectName 对象名称。 + * @param filename 本地上传的文件名称。 + */ + public void putObject(String objectName, String filename) throws Exception { + this.putObject(properties.getBucketName(), objectName, filename); + } + + /** + * 读取输入流并存放。 + * + * @param bucketName 桶名称。 + * @param objectName 对象名称。 + * @param stream 读取后上传的文件流。 + */ + public void putObject(String bucketName, String objectName, InputStream stream) throws Exception { + client.putObject(bucketName, objectName, stream, new PutObjectOptions(stream.available(), -1)); + } + + /** + * 读取输入流并存放。 + * + * @param objectName 对象名称。 + * @param stream 读取后上传的文件流。 + */ + public void putObject(String objectName, InputStream stream) throws Exception { + this.putObject(properties.getBucketName(), objectName, stream); + } + + /** + * 移除对象。 + * + * @param bucketName 桶名称。 + * @param objectName 对象名称。 + */ + public void removeObject(String bucketName, String objectName) throws Exception { + client.removeObject(bucketName, objectName); + } + + /** + * 移除对象。桶名称为配置中的桶名称。 + * + * @param objectName 对象名称。 + */ + public void removeObject(String objectName) throws Exception { + this.removeObject(properties.getBucketName(), objectName); + } + + /** + * 获取文件输入流。 + * + * @param bucket 桶名称。 + * @param objectName 对象名称。 + * @return 文件的输入流。 + */ + public InputStream getStream(String bucket, String objectName) throws Exception { + return client.getObject(bucket, objectName); + } + + /** + * 获取文件输入流。 + * + * @param objectName 对象名称。 + * @return 文件的输入流。 + */ + public InputStream getStream(String objectName) throws Exception { + return this.getStream(properties.getBucketName(), objectName); + } + + /** + * 获取存储的文件对象。 + * + * @param bucket 桶名称。 + * @param objectName 对象名称。 + * @return 读取后存储到文件的文件对象。 + */ + public File getFile(String bucket, String objectName) throws Exception { + InputStream in = getStream(bucket, objectName); + File dir = new File(TMP_DIR); + if (!dir.exists() || dir.isFile()) { + dir.mkdirs(); + } + File file = new File(TMP_DIR + objectName); + FileUtils.copyInputStreamToFile(in, file); + return file; + } + + /** + * 获取存储的文件对象。桶名称为配置中的桶名称。 + * + * @param objectName 对象名称。 + * @return 读取后存储到文件的文件对象。 + */ + public File getFile(String objectName) throws Exception { + return this.getFile(properties.getBucketName(), objectName); + } + + /** + * 获取指定文件的URL。 + * + * @param bucketName 桶名称。 + * @param objectName 对象名称。 + * @return 指定文件的URL。 + */ + public String getObjectUrl(String bucketName, String objectName) throws Exception { + return client.getObjectUrl(bucketName, objectName); + } + + /** + * 获取指定文件的URL。桶名称为配置中的桶名称。 + * + * @param objectName 对象名称。 + * @return 指定文件的URL。 + */ + public String getObjectUrl(String objectName) throws Exception { + return this.getObjectUrl(properties.getBucketName(), objectName); + } + + /** + * 获取对象状态信息。 + * + * @param bucketName 桶名称。 + * @param objectName 对象名称。 + * @return 对象状态和meta信息。 + */ + public ObjectStat statObject(String bucketName, String objectName) throws Exception { + return client.statObject(bucketName, objectName, null); + } + + /** + * 获取对象状态信息。桶名称为配置中的桶名称。 + * + * @param objectName 对象名称。 + * @return 对象状态和meta信息。 + */ + public ObjectStat statObject(String objectName) throws Exception { + return client.statObject(properties.getBucketName(), objectName, null); + } +} diff --git a/orange-demo-multi-service/common/common-minio/src/main/resources/META-INF/spring.factories b/orange-demo-multi-service/common/common-minio/src/main/resources/META-INF/spring.factories new file mode 100644 index 00000000..dab07fc9 --- /dev/null +++ b/orange-demo-multi-service/common/common-minio/src/main/resources/META-INF/spring.factories @@ -0,0 +1,2 @@ +org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ +com.orange.demo.common.minio.config.MinioAutoConfiguration \ No newline at end of file diff --git a/orange-demo-multi-service/common/common-redis/src/main/java/com/orange/demo/common/redis/cache/RedisDictionaryCache.java b/orange-demo-multi-service/common/common-redis/src/main/java/com/orange/demo/common/redis/cache/RedisDictionaryCache.java index 6be4de0d..8eb53ab5 100644 --- a/orange-demo-multi-service/common/common-redis/src/main/java/com/orange/demo/common/redis/cache/RedisDictionaryCache.java +++ b/orange-demo-multi-service/common/common-redis/src/main/java/com/orange/demo/common/redis/cache/RedisDictionaryCache.java @@ -21,7 +21,7 @@ import java.util.stream.Collectors; * @param 字典表主键类型。 * @param 字典表对象类型。 * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Slf4j public class RedisDictionaryCache implements DictionaryCache { diff --git a/orange-demo-multi-service/common/common-redis/src/main/java/com/orange/demo/common/redis/cache/RedisTreeDictionaryCache.java b/orange-demo-multi-service/common/common-redis/src/main/java/com/orange/demo/common/redis/cache/RedisTreeDictionaryCache.java index e953eaa3..3f8739f8 100644 --- a/orange-demo-multi-service/common/common-redis/src/main/java/com/orange/demo/common/redis/cache/RedisTreeDictionaryCache.java +++ b/orange-demo-multi-service/common/common-redis/src/main/java/com/orange/demo/common/redis/cache/RedisTreeDictionaryCache.java @@ -21,7 +21,7 @@ import java.util.stream.Collectors; * @param 字典表主键类型。 * @param 字典表对象类型。 * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Slf4j public class RedisTreeDictionaryCache extends RedisDictionaryCache { diff --git a/orange-demo-multi-service/common/common-redis/src/main/java/com/orange/demo/common/redis/cache/RedissonCacheConfig.java b/orange-demo-multi-service/common/common-redis/src/main/java/com/orange/demo/common/redis/cache/RedissonCacheConfig.java index 1a0c200f..40037b01 100644 --- a/orange-demo-multi-service/common/common-redis/src/main/java/com/orange/demo/common/redis/cache/RedissonCacheConfig.java +++ b/orange-demo-multi-service/common/common-redis/src/main/java/com/orange/demo/common/redis/cache/RedissonCacheConfig.java @@ -15,7 +15,7 @@ import java.util.Map; * 使用Redisson作为Redis的分布式缓存库。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Configuration @EnableCaching diff --git a/orange-demo-multi-service/common/common-redis/src/main/java/com/orange/demo/common/redis/cache/SessionCacheHelper.java b/orange-demo-multi-service/common/common-redis/src/main/java/com/orange/demo/common/redis/cache/SessionCacheHelper.java index 063c87fb..37f1a174 100644 --- a/orange-demo-multi-service/common/common-redis/src/main/java/com/orange/demo/common/redis/cache/SessionCacheHelper.java +++ b/orange-demo-multi-service/common/common-redis/src/main/java/com/orange/demo/common/redis/cache/SessionCacheHelper.java @@ -13,7 +13,7 @@ import java.util.Set; * Session数据缓存辅助类。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @SuppressWarnings("unchecked") @Component diff --git a/orange-demo-multi-service/common/common-redis/src/main/java/com/orange/demo/common/redis/config/JedisConfig.java b/orange-demo-multi-service/common/common-redis/src/main/java/com/orange/demo/common/redis/config/JedisConfig.java index 46ec7778..1cedfb26 100644 --- a/orange-demo-multi-service/common/common-redis/src/main/java/com/orange/demo/common/redis/config/JedisConfig.java +++ b/orange-demo-multi-service/common/common-redis/src/main/java/com/orange/demo/common/redis/config/JedisConfig.java @@ -11,7 +11,7 @@ import redis.clients.jedis.JedisPoolConfig; * Redis配置类。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Configuration @ConditionalOnProperty(name = "redis.jedis.enabled", havingValue = "true") diff --git a/orange-demo-multi-service/common/common-redis/src/main/java/com/orange/demo/common/redis/config/RedissonConfig.java b/orange-demo-multi-service/common/common-redis/src/main/java/com/orange/demo/common/redis/config/RedissonConfig.java index a34971a5..ff9f4f11 100644 --- a/orange-demo-multi-service/common/common-redis/src/main/java/com/orange/demo/common/redis/config/RedissonConfig.java +++ b/orange-demo-multi-service/common/common-redis/src/main/java/com/orange/demo/common/redis/config/RedissonConfig.java @@ -13,7 +13,7 @@ import org.springframework.context.annotation.Configuration; * 这里我们只是使用了Redisson的分布式锁,以及map等数据结构作为字典缓存使用。更多用法请参考其文档。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Configuration @ConditionalOnProperty(name = "redis.redisson.enabled", havingValue = "true") diff --git a/orange-demo-multi-service/common/common-sequence/src/main/java/com/orange/demo/common/sequence/config/IdGeneratorAutoConfigure.java b/orange-demo-multi-service/common/common-sequence/src/main/java/com/orange/demo/common/sequence/config/IdGeneratorAutoConfigure.java index 55c573f5..edb6f1c7 100644 --- a/orange-demo-multi-service/common/common-sequence/src/main/java/com/orange/demo/common/sequence/config/IdGeneratorAutoConfigure.java +++ b/orange-demo-multi-service/common/common-sequence/src/main/java/com/orange/demo/common/sequence/config/IdGeneratorAutoConfigure.java @@ -6,7 +6,7 @@ import org.springframework.boot.context.properties.EnableConfigurationProperties * common-sequence模块的自动配置引导类。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @EnableConfigurationProperties({IdGeneratorProperties.class}) public class IdGeneratorAutoConfigure { diff --git a/orange-demo-multi-service/common/common-sequence/src/main/java/com/orange/demo/common/sequence/config/IdGeneratorProperties.java b/orange-demo-multi-service/common/common-sequence/src/main/java/com/orange/demo/common/sequence/config/IdGeneratorProperties.java index 8327d13f..ff7db8af 100644 --- a/orange-demo-multi-service/common/common-sequence/src/main/java/com/orange/demo/common/sequence/config/IdGeneratorProperties.java +++ b/orange-demo-multi-service/common/common-sequence/src/main/java/com/orange/demo/common/sequence/config/IdGeneratorProperties.java @@ -7,7 +7,7 @@ import org.springframework.boot.context.properties.ConfigurationProperties; * common-sequence模块的配置类。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Data @ConfigurationProperties(prefix = "sequence") diff --git a/orange-demo-multi-service/common/common-sequence/src/main/java/com/orange/demo/common/sequence/generator/BasicIdGenerator.java b/orange-demo-multi-service/common/common-sequence/src/main/java/com/orange/demo/common/sequence/generator/BasicIdGenerator.java index 75830184..7b811569 100644 --- a/orange-demo-multi-service/common/common-sequence/src/main/java/com/orange/demo/common/sequence/generator/BasicIdGenerator.java +++ b/orange-demo-multi-service/common/common-sequence/src/main/java/com/orange/demo/common/sequence/generator/BasicIdGenerator.java @@ -9,7 +9,7 @@ import cn.hutool.core.util.IdUtil; * WorkNodeId是通过配置文件静态指定的。而SnowflakeIdGenerator的WorkNodeId是由zk生成的。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ public class BasicIdGenerator implements MyIdGenerator { diff --git a/orange-demo-multi-service/common/common-sequence/src/main/java/com/orange/demo/common/sequence/generator/MyIdGenerator.java b/orange-demo-multi-service/common/common-sequence/src/main/java/com/orange/demo/common/sequence/generator/MyIdGenerator.java index 8edc7b5c..72184f41 100644 --- a/orange-demo-multi-service/common/common-sequence/src/main/java/com/orange/demo/common/sequence/generator/MyIdGenerator.java +++ b/orange-demo-multi-service/common/common-sequence/src/main/java/com/orange/demo/common/sequence/generator/MyIdGenerator.java @@ -4,7 +4,7 @@ package com.orange.demo.common.sequence.generator; * 分布式Id生成器的统一接口。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ public interface MyIdGenerator { diff --git a/orange-demo-multi-service/common/common-sequence/src/main/java/com/orange/demo/common/sequence/generator/SnowflakeIdGenerator.java b/orange-demo-multi-service/common/common-sequence/src/main/java/com/orange/demo/common/sequence/generator/SnowflakeIdGenerator.java index 53e544a4..6e434525 100644 --- a/orange-demo-multi-service/common/common-sequence/src/main/java/com/orange/demo/common/sequence/generator/SnowflakeIdGenerator.java +++ b/orange-demo-multi-service/common/common-sequence/src/main/java/com/orange/demo/common/sequence/generator/SnowflakeIdGenerator.java @@ -12,7 +12,7 @@ import java.util.Random; * Snowflake Id生成器。该实现完全copy美团的leaf。 * * @author MeiTuan.Team - * @date 2020-09-27 + * @date 2020-10-19 */ @Slf4j public class SnowflakeIdGenerator implements MyIdGenerator { diff --git a/orange-demo-multi-service/common/common-sequence/src/main/java/com/orange/demo/common/sequence/generator/SnowflakeZookeeperHolder.java b/orange-demo-multi-service/common/common-sequence/src/main/java/com/orange/demo/common/sequence/generator/SnowflakeZookeeperHolder.java index 996fc173..be2c099f 100644 --- a/orange-demo-multi-service/common/common-sequence/src/main/java/com/orange/demo/common/sequence/generator/SnowflakeZookeeperHolder.java +++ b/orange-demo-multi-service/common/common-sequence/src/main/java/com/orange/demo/common/sequence/generator/SnowflakeZookeeperHolder.java @@ -29,7 +29,7 @@ import java.util.concurrent.TimeUnit; * Snowflake Id生成器所依赖的zk工具类。该实现完全copy美团的leaf。 * * @author MeiTuan.Team - * @date 2020-09-27 + * @date 2020-10-19 */ @Slf4j @Data diff --git a/orange-demo-multi-service/common/common-sequence/src/main/java/com/orange/demo/common/sequence/wrapper/IdGeneratorWrapper.java b/orange-demo-multi-service/common/common-sequence/src/main/java/com/orange/demo/common/sequence/wrapper/IdGeneratorWrapper.java index 724d93f6..694dee26 100644 --- a/orange-demo-multi-service/common/common-sequence/src/main/java/com/orange/demo/common/sequence/wrapper/IdGeneratorWrapper.java +++ b/orange-demo-multi-service/common/common-sequence/src/main/java/com/orange/demo/common/sequence/wrapper/IdGeneratorWrapper.java @@ -13,7 +13,7 @@ import javax.annotation.PostConstruct; * 分布式Id生成器的封装类。该对象可根据配置选择不同的生成器实现类。 * * @author Jerry - * @date 2020-09-27 + * @date 2020-10-19 */ @Component public class IdGeneratorWrapper { diff --git a/orange-demo-multi-service/common/pom.xml b/orange-demo-multi-service/common/pom.xml index 61a75e25..290c86d1 100644 --- a/orange-demo-multi-service/common/pom.xml +++ b/orange-demo-multi-service/common/pom.xml @@ -14,6 +14,7 @@ common-core common-redis + common-minio common-sequence diff --git a/orange-demo-multi-service/pom.xml b/orange-demo-multi-service/pom.xml index 632c80f0..08c12f9c 100644 --- a/orange-demo-multi-service/pom.xml +++ b/orange-demo-multi-service/pom.xml @@ -44,6 +44,8 @@ 1.2.13 3.2.0 3.12.3 + 7.0.2 + 2.0.0 diff --git a/orange-demo-multi-service/zz-resource/.DS_Store b/orange-demo-multi-service/zz-resource/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..5c42d8e025cd21fc0e8d9554fd0bd22142df7da6 GIT binary patch literal 6148 zcmeHKJ5EDE3>-s>2%3~B_W~5$U=@WELj3PX|Mc z0K^H?VO+;7L2RBN_QD~N8JZ=Pm{h9~!;;Q?tGZq|BqkkJ!-v(AttJ$Ur}O?6<*=Tp zC [TxId: , SpanId: ] The following profiles are active: dev -[INFO ] [2020-09-27 20:45:51] 请求Id[] [main] ==> [TxId: , SpanId: ] twepoch:1288834974657 ,ip:10.24.82.239 ,zkAddress:localhost:2181 port:19001 -[INFO ] [2020-09-27 20:45:51] 请求Id[] [main] ==> [TxId: , SpanId: ] file exists status is true -[INFO ] [2020-09-27 20:45:51] 请求Id[] [main] ==> [TxId: , SpanId: ] update file cache workId is 0 -[INFO ] [2020-09-27 20:45:51] 请求Id[] [main] ==> [TxId: , SpanId: ] START SUCCESS USE ZK WORKERID-0 -[INFO ] [2020-09-27 20:45:54] 请求Id[] [main] ==> [TxId: , SpanId: ] Started CourseClassApplication in 12.578 seconds (JVM running for 14.644) -[DEBUG] [2020-09-27 20:45:54] 请求Id[] [main] ==> [TxId: , SpanId: ] ==> Preparing: SELECT area_id,area_name,area_level,parent_id FROM zz_area_code order by area_level -[DEBUG] [2020-09-27 20:45:54] 请求Id[] [main] ==> [TxId: , SpanId: ] ==> Parameters: -[DEBUG] [2020-09-27 20:45:54] 请求Id[] [main] ==> [TxId: , SpanId: ] <== Total: 3656 -[DEBUG] [2020-09-27 20:45:54] 请求Id[] [main] ==> [TxId: , SpanId: ] ==> Preparing: SELECT grade_id,grade_name,status FROM zz_grade WHERE ( ( status = ? ) ) -[DEBUG] [2020-09-27 20:45:54] 请求Id[] [main] ==> [TxId: , SpanId: ] ==> Parameters: 1(Integer) -[DEBUG] [2020-09-27 20:45:54] 请求Id[] [main] ==> [TxId: , SpanId: ] <== Total: 12 -[INFO ] [2020-09-27 20:46:57] 请求Id[dc955359b2b4444098fb7433f6e151e8] [http-nio-9001-exec-1] ==> [TxId: , SpanId: ] 开始请求,app=, url=/student/list, reqData=[{},[{"asc":true,"fieldName":"registerTime"}],{"pageNum":1,"pageSize":10}] -[DEBUG] [2020-09-27 20:46:57] 请求Id[dc955359b2b4444098fb7433f6e151e8] [http-nio-9001-exec-1] ==> [TxId: , SpanId: ] ==> Preparing: SELECT count(0) FROM zz_student -[DEBUG] [2020-09-27 20:46:57] 请求Id[dc955359b2b4444098fb7433f6e151e8] [http-nio-9001-exec-1] ==> [TxId: , SpanId: ] ==> Parameters: -[DEBUG] [2020-09-27 20:46:57] 请求Id[dc955359b2b4444098fb7433f6e151e8] [http-nio-9001-exec-1] ==> [TxId: , SpanId: ] <== Total: 1 -[DEBUG] [2020-09-27 20:46:57] 请求Id[dc955359b2b4444098fb7433f6e151e8] [http-nio-9001-exec-1] ==> [TxId: , SpanId: ] ==> Preparing: SELECT * FROM zz_student ORDER BY zz_student.register_time LIMIT ? -[DEBUG] [2020-09-27 20:46:57] 请求Id[dc955359b2b4444098fb7433f6e151e8] [http-nio-9001-exec-1] ==> [TxId: , SpanId: ] ==> Parameters: 10(Integer) -[DEBUG] [2020-09-27 20:46:57] 请求Id[dc955359b2b4444098fb7433f6e151e8] [http-nio-9001-exec-1] ==> [TxId: , SpanId: ] <== Total: 5 -[DEBUG] [2020-09-27 20:46:57] 请求Id[dc955359b2b4444098fb7433f6e151e8] [http-nio-9001-exec-1] ==> [TxId: , SpanId: ] ==> Preparing: SELECT school_id,school_name,province_id,city_id FROM zz_school_info WHERE ( ( school_id in ( ? , ? ) ) ) -[DEBUG] [2020-09-27 20:46:57] 请求Id[dc955359b2b4444098fb7433f6e151e8] [http-nio-9001-exec-1] ==> [TxId: , SpanId: ] ==> Parameters: 1015818056597508096(Long), 1015817732197453824(Long) -[DEBUG] [2020-09-27 20:46:57] 请求Id[dc955359b2b4444098fb7433f6e151e8] [http-nio-9001-exec-1] ==> [TxId: , SpanId: ] <== Total: 2 -[INFO ] [2020-09-27 20:46:57] 请求Id[dc955359b2b4444098fb7433f6e151e8] [http-nio-9001-exec-1] ==> [TxId: , SpanId: ] 请求完成, app=, url=/student/list,elapse=143ms, respData={"data":{"dataList":[{"birthday":1282147200000,"cityId":110100000000,"cityIdDictMap":{"name":"市辖区","id":110100000000},"districtId":110105000000,"districtIdDictMap":{"name":"朝阳区","id":110105000000},"experienceLevel":1,"experienceLevelDictMap":{"name":"中级学员","id":1},"gender":1,"genderDictMap":{"name":"男","id":1},"gradeId":4,"gradeIdDictMap":{"name":"四年级","id":4},"leftCoin":1077,"loginMobile":"13834561230","provinceId":110000000000,"provinceIdDictMap":{"name":"北京市","id":110000000000},"registerTime":1601136000000,"schoolId":1015817732197453824,"schoolIdDictMap":{"name":"北京校区","id":1015817732197453824},"status":0,"statusDictMap":{"name":"正常","id":0},"studentId":1015842628948463616,"studentName":"张三","totalCoin":3412},{"birthday":1321545600000,"cityId":110100000000,"cityIdDictMap":{"name":"市辖区","id":110100000000},"districtId":110107000000,"districtIdDictMap":{"name":"石景山区","id":110107000000},"experienceLevel":1,"experienceLevelDictMap":{"name":"中级学员","id":1},"gender":1,"genderDictMap":{"name":"男","id":1},"gradeId":3,"gradeIdDictMap":{"name":"三年级","id":3},"leftCoin":3024,"loginMobile":"13945651267","provinceId":110000000000,"provinceIdDictMap":{"name":"北京市","id":110000000000},"registerTime":1601136000000,"schoolId":1015817732197453824,"schoolIdDictMap":{"name":"北京校区","id":1015817732197453824},"status":0,"statusDictMap":{"name":"正常","id":0},"studentId":1015852480873631744,"studentName":"李军","totalCoin":3178},{"birthday":1421251200000,"cityId":110100000000,"cityIdDictMap":{"name":"市辖区","id":110100000000},"districtId":110108000000,"districtIdDictMap":{"name":"海淀区","id":110108000000},"experienceLevel":0,"experienceLevelDictMap":{"name":"初级学员","id":0},"gender":1,"genderDictMap":{"name":"男","id":1},"gradeId":1,"gradeIdDictMap":{"name":"一年级","id":1},"leftCoin":2199,"loginMobile":"13709481736","provinceId":110000000000,"provinceIdDictMap":{"name":"北京市","id":110000000000},"registerTime":1601136000000,"schoolId":1015817732197453824,"schoolIdDictMap":{"name":"北京校区","id":1015817732197453824},"status":0,"statusDictMap":{"name":"正常","id":0},"studentId":1015852853839532032,"studentName":"王石","totalCoin":3187},{"birthday":1276099200000,"cityId":120100000000,"cityIdDictMap":{"name":"市辖区","id":120100000000},"districtId":120103000000,"districtIdDictMap":{"name":"河西区","id":120103000000},"experienceLevel":0,"experienceLevelDictMap":{"name":"初级学员","id":0},"gender":1,"genderDictMap":{"name":"男","id":1},"gradeId":3,"gradeIdDictMap":{"name":"三年级","id":3},"leftCoin":634,"loginMobile":"13700023451","provinceId":120000000000,"provinceIdDictMap":{"name":"天津市","id":120000000000},"registerTime":1601136000000,"schoolId":1015818056597508096,"schoolIdDictMap":{"name":"天津校区","id":1015818056597508096},"status":0,"statusDictMap":{"name":"正常","id":0},"studentId":1018000939508568064,"studentName":"天津二哥","totalCoin":1287},{"birthday":1247760000000,"cityId":120100000000,"cityIdDictMap":{"name":"市辖区","id":120100000000},"districtId":120104000000,"districtIdDictMap":{"name":"南开区","id":120104000000},"experienceLevel":2,"experienceLevelDictMap":{"name":"高级学员","id":2},"gender":0,"genderDictMap":{"name":"女","id":0},"gradeId":4,"gradeIdDictMap":{"name":"四年级","id":4},"leftCoin":7023,"loginMobile":"13903122987","provinceId":120000000000,"provinceIdDictMap":{"name":"天津市","id":120000000000},"registerTime":1601136000000,"schoolId":1015818056597508096,"schoolIdDictMap":{"name":"天津校区","id":1015818056597508096},"status":0,"statusDictMap":{"name":"正常","id":0},"studentId":1018001219050541056,"studentName":"南开学霸","totalCoin":8721}],"totalCount":5},"errorCode":"NO-ERROR","errorMessage":"NO-MESSAGE","success":true} -[INFO ] [2020-09-27 20:47:08] 请求Id[f8317800db124dc0999946feee3eba02] [http-nio-9001-exec-2] ==> [TxId: , SpanId: ] 开始请求,app=, url=/grade/listDictGrade, reqData=[] -[INFO ] [2020-09-27 20:47:08] 请求Id[f8317800db124dc0999946feee3eba02] [http-nio-9001-exec-2] ==> [TxId: , SpanId: ] 请求完成, app=, url=/grade/listDictGrade,elapse=81ms, respData={"data":[{"id":1,"name":"一年级"},{"id":2,"name":"二年级"},{"id":3,"name":"三年级"},{"id":4,"name":"四年级"},{"id":5,"name":"五年级"},{"id":6,"name":"六年级"},{"id":7,"name":"初一"},{"id":8,"name":"初二"},{"id":9,"name":"初三"},{"id":10,"name":"高一"},{"id":11,"name":"高二"},{"id":12,"name":"高三"}],"errorCode":"NO-ERROR","errorMessage":"NO-MESSAGE","success":true} -[INFO ] [2020-09-27 20:47:11] 请求Id[9bf9018da2944cf48388241b14836db9] [http-nio-9001-exec-3] ==> [TxId: , SpanId: ] 开始请求,app=, url=/areaCode/listDictAreaCodeByParentId, reqData=[null] -[INFO ] [2020-09-27 20:47:11] 请求Id[9bf9018da2944cf48388241b14836db9] [http-nio-9001-exec-3] ==> [TxId: , SpanId: ] 请求完成, app=, url=/areaCode/listDictAreaCodeByParentId,elapse=11ms, respData={"data":[{"id":110000000000,"name":"北京市"},{"id":120000000000,"name":"天津市"},{"id":130000000000,"name":"河北省"},{"id":140000000000,"name":"山西省"},{"id":150000000000,"name":"内蒙古自治区"},{"id":210000000000,"name":"辽宁省"},{"id":220000000000,"name":"吉林省"},{"id":230000000000,"name":"黑龙江省"},{"id":310000000000,"name":"上海市"},{"id":320000000000,"name":"江苏省"},{"id":330000000000,"name":"浙江省"},{"id":340000000000,"name":"安徽省"},{"id":350000000000,"name":"福建省"},{"id":360000000000,"name":"江西省"},{"id":370000000000,"name":"山东省"},{"id":410000000000,"name":"河南省"},{"id":420000000000,"name":"湖北省"},{"id":430000000000,"name":"湖南省"},{"id":440000000000,"name":"广东省"},{"id":450000000000,"name":"广西壮族自治区"},{"id":460000000000,"name":"海南省"},{"id":500000000000,"name":"重庆市"},{"id":510000000000,"name":"四川省"},{"id":520000000000,"name":"贵州省"},{"id":530000000000,"name":"云南省"},{"id":540000000000,"name":"西藏自治区"},{"id":610000000000,"name":"陕西省"},{"id":620000000000,"name":"甘肃省"},{"id":630000000000,"name":"青海省"},{"id":640000000000,"name":"宁夏回族自治区"},{"id":650000000000,"name":"新疆维吾尔自治区"}],"errorCode":"NO-ERROR","errorMessage":"NO-MESSAGE","success":true} -[INFO ] [2020-09-27 20:47:13] 请求Id[70022f272a284d7c85fee4ee18ba9fd4] [http-nio-9001-exec-4] ==> [TxId: , SpanId: ] 开始请求,app=, url=/areaCode/listDictAreaCodeByParentId, reqData=[120000000000] -[INFO ] [2020-09-27 20:47:13] 请求Id[70022f272a284d7c85fee4ee18ba9fd4] [http-nio-9001-exec-4] ==> [TxId: , SpanId: ] 请求完成, app=, url=/areaCode/listDictAreaCodeByParentId,elapse=3ms, respData={"data":[{"parentId":120000000000,"id":120100000000,"name":"市辖区"}],"errorCode":"NO-ERROR","errorMessage":"NO-MESSAGE","success":true} -[INFO ] [2020-09-27 20:47:14] 请求Id[f638e48c59a445ae85c7bb9d4cbe03ac] [http-nio-9001-exec-5] ==> [TxId: , SpanId: ] 开始请求,app=, url=/areaCode/listDictAreaCodeByParentId, reqData=[120100000000] -[INFO ] [2020-09-27 20:47:14] 请求Id[f638e48c59a445ae85c7bb9d4cbe03ac] [http-nio-9001-exec-5] ==> [TxId: , SpanId: ] 请求完成, app=, url=/areaCode/listDictAreaCodeByParentId,elapse=4ms, respData={"data":[{"parentId":120100000000,"id":120101000000,"name":"和平区"},{"parentId":120100000000,"id":120102000000,"name":"河东区"},{"parentId":120100000000,"id":120103000000,"name":"河西区"},{"parentId":120100000000,"id":120104000000,"name":"南开区"},{"parentId":120100000000,"id":120105000000,"name":"河北区"},{"parentId":120100000000,"id":120106000000,"name":"红桥区"},{"parentId":120100000000,"id":120110000000,"name":"东丽区"},{"parentId":120100000000,"id":120111000000,"name":"西青区"},{"parentId":120100000000,"id":120112000000,"name":"津南区"},{"parentId":120100000000,"id":120113000000,"name":"北辰区"},{"parentId":120100000000,"id":120114000000,"name":"武清区"},{"parentId":120100000000,"id":120115000000,"name":"宝坻区"},{"parentId":120100000000,"id":120116000000,"name":"滨海新区"},{"parentId":120100000000,"id":120117000000,"name":"宁河区"},{"parentId":120100000000,"id":120118000000,"name":"静海区"},{"parentId":120100000000,"id":120119000000,"name":"蓟州区"}],"errorCode":"NO-ERROR","errorMessage":"NO-MESSAGE","success":true} -[INFO ] [2020-09-27 20:47:16] 请求Id[28ff388ffe974dc6980d969c9ccb5d44] [http-nio-9001-exec-6] ==> [TxId: , SpanId: ] 开始请求,app=, url=/schoolInfo/listDictSchoolInfo, reqData=[{"cityId":120100000000,"provinceId":120000000000}] -[DEBUG] [2020-09-27 20:47:16] 请求Id[28ff388ffe974dc6980d969c9ccb5d44] [http-nio-9001-exec-6] ==> [TxId: , SpanId: ] ==> Preparing: SELECT school_id,school_name,province_id,city_id FROM zz_school_info WHERE province_id = ? AND city_id = ? -[DEBUG] [2020-09-27 20:47:16] 请求Id[28ff388ffe974dc6980d969c9ccb5d44] [http-nio-9001-exec-6] ==> [TxId: , SpanId: ] ==> Parameters: 120000000000(Long), 120100000000(Long) -[DEBUG] [2020-09-27 20:47:16] 请求Id[28ff388ffe974dc6980d969c9ccb5d44] [http-nio-9001-exec-6] ==> [TxId: , SpanId: ] <== Total: 1 -[INFO ] [2020-09-27 20:47:16] 请求Id[28ff388ffe974dc6980d969c9ccb5d44] [http-nio-9001-exec-6] ==> [TxId: , SpanId: ] 请求完成, app=, url=/schoolInfo/listDictSchoolInfo,elapse=16ms, respData={"data":[{"id":1015818056597508096,"name":"天津校区"}],"errorCode":"NO-ERROR","errorMessage":"NO-MESSAGE","success":true} -[INFO ] [2020-09-27 20:47:18] 请求Id[aff4f25bf183454abf87f99175a47992] [http-nio-9001-exec-7] ==> [TxId: , SpanId: ] 开始请求,app=, url=/student/add, reqData=[{"birthday":1504497600000,"cityId":120100000000,"districtId":120102000000,"experienceLevel":0,"gender":0,"gradeId":1,"loginMobile":"13812345678","provinceId":120000000000,"schoolId":1015818056597508096,"studentName":"111"}] -[DEBUG] [2020-09-27 20:47:18] 请求Id[aff4f25bf183454abf87f99175a47992] [http-nio-9001-exec-7] ==> [TxId: , SpanId: ] ==> Preparing: SELECT school_id,school_name,province_id,city_id FROM zz_school_info WHERE school_id = ? -[DEBUG] [2020-09-27 20:47:18] 请求Id[aff4f25bf183454abf87f99175a47992] [http-nio-9001-exec-7] ==> [TxId: , SpanId: ] ==> Parameters: 1015818056597508096(Long) -[DEBUG] [2020-09-27 20:47:18] 请求Id[aff4f25bf183454abf87f99175a47992] [http-nio-9001-exec-7] ==> [TxId: , SpanId: ] <== Total: 1 -[DEBUG] [2020-09-27 20:47:18] 请求Id[aff4f25bf183454abf87f99175a47992] [http-nio-9001-exec-7] ==> [TxId: , SpanId: ] ==> Preparing: 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( ?,?,?,?,?,?,?,?,?,?,?,?,?,?,? ) -[DEBUG] [2020-09-27 20:47:18] 请求Id[aff4f25bf183454abf87f99175a47992] [http-nio-9001-exec-7] ==> [TxId: , SpanId: ] ==> Parameters: 1310199334167380052(Long), 13812345678(String), 111(String), 120000000000(Long), 120100000000(Long), 120102000000(Long), 0(Integer), 2017-09-04 12:00:00.0(Timestamp), 0(Integer), 0(Integer), 0(Integer), 1(Integer), 1015818056597508096(Long), 2020-09-27 20:47:18.249(Timestamp), 0(Integer) -[DEBUG] [2020-09-27 20:47:18] 请求Id[aff4f25bf183454abf87f99175a47992] [http-nio-9001-exec-7] ==> [TxId: , SpanId: ] <== Updates: 1 -[INFO ] [2020-09-27 20:47:18] 请求Id[aff4f25bf183454abf87f99175a47992] [http-nio-9001-exec-7] ==> [TxId: , SpanId: ] 请求完成, app=, url=/student/add,elapse=73ms, respData={"data":{"studentId":1310199334167380052},"errorCode":"NO-ERROR","errorMessage":"NO-MESSAGE","success":true} -[INFO ] [2020-09-27 20:47:18] 请求Id[f8cdde56ee9d468dbb64b6fc0eb5e588] [http-nio-9001-exec-8] ==> [TxId: , SpanId: ] 开始请求,app=, url=/student/list, reqData=[{},[{"asc":true,"fieldName":"registerTime"}],{"pageNum":1,"pageSize":10}] -[DEBUG] [2020-09-27 20:47:18] 请求Id[f8cdde56ee9d468dbb64b6fc0eb5e588] [http-nio-9001-exec-8] ==> [TxId: , SpanId: ] ==> Preparing: SELECT count(0) FROM zz_student -[DEBUG] [2020-09-27 20:47:18] 请求Id[f8cdde56ee9d468dbb64b6fc0eb5e588] [http-nio-9001-exec-8] ==> [TxId: , SpanId: ] ==> Parameters: -[DEBUG] [2020-09-27 20:47:18] 请求Id[f8cdde56ee9d468dbb64b6fc0eb5e588] [http-nio-9001-exec-8] ==> [TxId: , SpanId: ] <== Total: 1 -[DEBUG] [2020-09-27 20:47:18] 请求Id[f8cdde56ee9d468dbb64b6fc0eb5e588] [http-nio-9001-exec-8] ==> [TxId: , SpanId: ] ==> Preparing: SELECT * FROM zz_student ORDER BY zz_student.register_time LIMIT ? -[DEBUG] [2020-09-27 20:47:18] 请求Id[f8cdde56ee9d468dbb64b6fc0eb5e588] [http-nio-9001-exec-8] ==> [TxId: , SpanId: ] ==> Parameters: 10(Integer) -[DEBUG] [2020-09-27 20:47:18] 请求Id[f8cdde56ee9d468dbb64b6fc0eb5e588] [http-nio-9001-exec-8] ==> [TxId: , SpanId: ] <== Total: 6 -[DEBUG] [2020-09-27 20:47:18] 请求Id[f8cdde56ee9d468dbb64b6fc0eb5e588] [http-nio-9001-exec-8] ==> [TxId: , SpanId: ] ==> Preparing: SELECT school_id,school_name,province_id,city_id FROM zz_school_info WHERE ( ( school_id in ( ? , ? ) ) ) -[DEBUG] [2020-09-27 20:47:18] 请求Id[f8cdde56ee9d468dbb64b6fc0eb5e588] [http-nio-9001-exec-8] ==> [TxId: , SpanId: ] ==> Parameters: 1015818056597508096(Long), 1015817732197453824(Long) -[DEBUG] [2020-09-27 20:47:18] 请求Id[f8cdde56ee9d468dbb64b6fc0eb5e588] [http-nio-9001-exec-8] ==> [TxId: , SpanId: ] <== Total: 2 -[INFO ] [2020-09-27 20:47:18] 请求Id[f8cdde56ee9d468dbb64b6fc0eb5e588] [http-nio-9001-exec-8] ==> [TxId: , SpanId: ] 请求完成, app=, url=/student/list,elapse=22ms, respData={"data":{"dataList":[{"birthday":1282147200000,"cityId":110100000000,"cityIdDictMap":{"name":"市辖区","id":110100000000},"districtId":110105000000,"districtIdDictMap":{"name":"朝阳区","id":110105000000},"experienceLevel":1,"experienceLevelDictMap":{"name":"中级学员","id":1},"gender":1,"genderDictMap":{"name":"男","id":1},"gradeId":4,"gradeIdDictMap":{"name":"四年级","id":4},"leftCoin":1077,"loginMobile":"13834561230","provinceId":110000000000,"provinceIdDictMap":{"name":"北京市","id":110000000000},"registerTime":1601136000000,"schoolId":1015817732197453824,"schoolIdDictMap":{"name":"北京校区","id":1015817732197453824},"status":0,"statusDictMap":{"name":"正常","id":0},"studentId":1015842628948463616,"studentName":"张三","totalCoin":3412},{"birthday":1321545600000,"cityId":110100000000,"cityIdDictMap":{"name":"市辖区","id":110100000000},"districtId":110107000000,"districtIdDictMap":{"name":"石景山区","id":110107000000},"experienceLevel":1,"experienceLevelDictMap":{"name":"中级学员","id":1},"gender":1,"genderDictMap":{"name":"男","id":1},"gradeId":3,"gradeIdDictMap":{"name":"三年级","id":3},"leftCoin":3024,"loginMobile":"13945651267","provinceId":110000000000,"provinceIdDictMap":{"name":"北京市","id":110000000000},"registerTime":1601136000000,"schoolId":1015817732197453824,"schoolIdDictMap":{"name":"北京校区","id":1015817732197453824},"status":0,"statusDictMap":{"name":"正常","id":0},"studentId":1015852480873631744,"studentName":"李军","totalCoin":3178},{"birthday":1421251200000,"cityId":110100000000,"cityIdDictMap":{"name":"市辖区","id":110100000000},"districtId":110108000000,"districtIdDictMap":{"name":"海淀区","id":110108000000},"experienceLevel":0,"experienceLevelDictMap":{"name":"初级学员","id":0},"gender":1,"genderDictMap":{"name":"男","id":1},"gradeId":1,"gradeIdDictMap":{"name":"一年级","id":1},"leftCoin":2199,"loginMobile":"13709481736","provinceId":110000000000,"provinceIdDictMap":{"name":"北京市","id":110000000000},"registerTime":1601136000000,"schoolId":1015817732197453824,"schoolIdDictMap":{"name":"北京校区","id":1015817732197453824},"status":0,"statusDictMap":{"name":"正常","id":0},"studentId":1015852853839532032,"studentName":"王石","totalCoin":3187},{"birthday":1276099200000,"cityId":120100000000,"cityIdDictMap":{"name":"市辖区","id":120100000000},"districtId":120103000000,"districtIdDictMap":{"name":"河西区","id":120103000000},"experienceLevel":0,"experienceLevelDictMap":{"name":"初级学员","id":0},"gender":1,"genderDictMap":{"name":"男","id":1},"gradeId":3,"gradeIdDictMap":{"name":"三年级","id":3},"leftCoin":634,"loginMobile":"13700023451","provinceId":120000000000,"provinceIdDictMap":{"name":"天津市","id":120000000000},"registerTime":1601136000000,"schoolId":1015818056597508096,"schoolIdDictMap":{"name":"天津校区","id":1015818056597508096},"status":0,"statusDictMap":{"name":"正常","id":0},"studentId":1018000939508568064,"studentName":"天津二哥","totalCoin":1287},{"birthday":1247760000000,"cityId":120100000000,"cityIdDictMap":{"name":"市辖区","id":120100000000},"districtId":120104000000,"districtIdDictMap":{"name":"南开区","id":120104000000},"experienceLevel":2,"experienceLevelDictMap":{"name":"高级学员","id":2},"gender":0,"genderDictMap":{"name":"女","id":0},"gradeId":4,"gradeIdDictMap":{"name":"四年级","id":4},"leftCoin":7023,"loginMobile":"13903122987","provinceId":120000000000,"provinceIdDictMap":{"name":"天津市","id":120000000000},"registerTime":1601136000000,"schoolId":1015818056597508096,"schoolIdDictMap":{"name":"天津校区","id":1015818056597508096},"status":0,"statusDictMap":{"name":"正常","id":0},"studentId":1018001219050541056,"studentName":"南开学霸","totalCoin":8721},{"birthday":1504454400000,"cityId":120100000000,"cityIdDictMap":{"name":"市辖区","id":120100000000},"districtId":120102000000,"districtIdDictMap":{"name":"河东区","id":120102000000},"experienceLevel":0,"experienceLevelDictMap":{"name":"初级学员","id":0},"gender":0,"genderDictMap":{"name":"女","id":0},"gradeId":1,"gradeIdDictMap":{"name":"一年级","id":1},"leftCoin":0,"loginMobile":"13812345678","provinceId":120000000000,"provinceIdDictMap":{"name":"天津市","id":120000000000},"registerTime":1601210838000,"schoolId":1015818056597508096,"schoolIdDictMap":{"name":"天津校区","id":1015818056597508096},"status":0,"statusDictMap":{"name":"正常","id":0},"studentId":1310199334167380052,"studentName":"111","totalCoin":0}],"totalCount":6},"errorCode":"NO-ERROR","errorMessage":"NO-MESSAGE","success":true} -[INFO ] [2020-09-27 20:47:20] 请求Id[152fa5471a0a41e28b5544c18075b796] [http-nio-9001-exec-9] ==> [TxId: , SpanId: ] 开始请求,app=, url=/student/view, reqData=[1310199334167380052] -[DEBUG] [2020-09-27 20:47:20] 请求Id[152fa5471a0a41e28b5544c18075b796] [http-nio-9001-exec-9] ==> [TxId: , SpanId: ] ==> Preparing: SELECT 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 FROM zz_student WHERE student_id = ? -[DEBUG] [2020-09-27 20:47:20] 请求Id[152fa5471a0a41e28b5544c18075b796] [http-nio-9001-exec-9] ==> [TxId: , SpanId: ] ==> Parameters: 1310199334167380052(Long) -[DEBUG] [2020-09-27 20:47:20] 请求Id[152fa5471a0a41e28b5544c18075b796] [http-nio-9001-exec-9] ==> [TxId: , SpanId: ] <== Total: 1 -[DEBUG] [2020-09-27 20:47:20] 请求Id[152fa5471a0a41e28b5544c18075b796] [http-nio-9001-exec-9] ==> [TxId: , SpanId: ] ==> Preparing: SELECT school_id,school_name,province_id,city_id FROM zz_school_info WHERE school_id = ? -[DEBUG] [2020-09-27 20:47:20] 请求Id[152fa5471a0a41e28b5544c18075b796] [http-nio-9001-exec-9] ==> [TxId: , SpanId: ] ==> Parameters: 1015818056597508096(Long) -[DEBUG] [2020-09-27 20:47:20] 请求Id[152fa5471a0a41e28b5544c18075b796] [http-nio-9001-exec-9] ==> [TxId: , SpanId: ] <== Total: 1 -[INFO ] [2020-09-27 20:47:20] 请求Id[152fa5471a0a41e28b5544c18075b796] [http-nio-9001-exec-9] ==> [TxId: , SpanId: ] 请求完成, app=, url=/student/view,elapse=17ms, respData={"data":{"birthday":1504454400000,"cityId":120100000000,"cityIdDictMap":{"name":"市辖区","id":120100000000},"districtId":120102000000,"districtIdDictMap":{"name":"河东区","id":120102000000},"experienceLevel":0,"experienceLevelDictMap":{"name":"初级学员","id":0},"gender":0,"genderDictMap":{"name":"女","id":0},"gradeId":1,"gradeIdDictMap":{"name":"一年级","id":1},"leftCoin":0,"loginMobile":"13812345678","provinceId":120000000000,"provinceIdDictMap":{"name":"天津市","id":120000000000},"registerTime":1601210838000,"schoolId":1015818056597508096,"schoolIdDictMap":{"name":"天津校区","id":1015818056597508096},"status":0,"statusDictMap":{"name":"正常","id":0},"studentId":1310199334167380052,"studentName":"111","totalCoin":0},"errorCode":"NO-ERROR","errorMessage":"NO-MESSAGE","success":true} -[INFO ] [2020-09-27 20:47:22] 请求Id[754db36c01f24f89a966dbbbede28fcd] [http-nio-9001-exec-10] ==> [TxId: , SpanId: ] 开始请求,app=, url=/student/update, reqData=[{"birthday":1504454400000,"cityId":120100000000,"districtId":120102000000,"experienceLevel":0,"gender":0,"gradeId":1,"leftCoin":0,"loginMobile":"13812345678","provinceId":120000000000,"schoolId":1015818056597508096,"status":0,"studentId":1310199334167380052,"studentName":"1112222","totalCoin":0}] -[DEBUG] [2020-09-27 20:47:22] 请求Id[754db36c01f24f89a966dbbbede28fcd] [http-nio-9001-exec-10] ==> [TxId: , SpanId: ] ==> Preparing: SELECT 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 FROM zz_student WHERE student_id = ? -[DEBUG] [2020-09-27 20:47:22] 请求Id[754db36c01f24f89a966dbbbede28fcd] [http-nio-9001-exec-10] ==> [TxId: , SpanId: ] ==> Parameters: 1310199334167380052(Long) -[DEBUG] [2020-09-27 20:47:22] 请求Id[754db36c01f24f89a966dbbbede28fcd] [http-nio-9001-exec-10] ==> [TxId: , SpanId: ] <== Total: 1 -[DEBUG] [2020-09-27 20:47:22] 请求Id[754db36c01f24f89a966dbbbede28fcd] [http-nio-9001-exec-10] ==> [TxId: , SpanId: ] ==> Preparing: UPDATE zz_student SET 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 = ? WHERE student_id = ? -[DEBUG] [2020-09-27 20:47:22] 请求Id[754db36c01f24f89a966dbbbede28fcd] [http-nio-9001-exec-10] ==> [TxId: , SpanId: ] ==> Parameters: 13812345678(String), 1112222(String), 120000000000(Long), 120100000000(Long), 120102000000(Long), 0(Integer), 2017-09-04 00:00:00.0(Timestamp), 0(Integer), 0(Integer), 0(Integer), 1(Integer), 1015818056597508096(Long), 2020-09-27 20:47:18.0(Timestamp), 0(Integer), 1310199334167380052(Long) -[DEBUG] [2020-09-27 20:47:22] 请求Id[754db36c01f24f89a966dbbbede28fcd] [http-nio-9001-exec-10] ==> [TxId: , SpanId: ] <== Updates: 1 -[INFO ] [2020-09-27 20:47:22] 请求Id[754db36c01f24f89a966dbbbede28fcd] [http-nio-9001-exec-10] ==> [TxId: , SpanId: ] 请求完成, app=, url=/student/update,elapse=21ms, respData={"errorCode":"NO-ERROR","errorMessage":"NO-MESSAGE","success":true} -[INFO ] [2020-09-27 20:47:22] 请求Id[595b9a3f6e754ed58b2d7b50bdef3a04] [http-nio-9001-exec-1] ==> [TxId: , SpanId: ] 开始请求,app=, url=/student/list, reqData=[{},[{"asc":true,"fieldName":"registerTime"}],{"pageNum":1,"pageSize":10}] -[DEBUG] [2020-09-27 20:47:22] 请求Id[595b9a3f6e754ed58b2d7b50bdef3a04] [http-nio-9001-exec-1] ==> [TxId: , SpanId: ] ==> Preparing: SELECT count(0) FROM zz_student -[DEBUG] [2020-09-27 20:47:22] 请求Id[595b9a3f6e754ed58b2d7b50bdef3a04] [http-nio-9001-exec-1] ==> [TxId: , SpanId: ] ==> Parameters: -[DEBUG] [2020-09-27 20:47:22] 请求Id[595b9a3f6e754ed58b2d7b50bdef3a04] [http-nio-9001-exec-1] ==> [TxId: , SpanId: ] <== Total: 1 -[DEBUG] [2020-09-27 20:47:22] 请求Id[595b9a3f6e754ed58b2d7b50bdef3a04] [http-nio-9001-exec-1] ==> [TxId: , SpanId: ] ==> Preparing: SELECT * FROM zz_student ORDER BY zz_student.register_time LIMIT ? -[DEBUG] [2020-09-27 20:47:22] 请求Id[595b9a3f6e754ed58b2d7b50bdef3a04] [http-nio-9001-exec-1] ==> [TxId: , SpanId: ] ==> Parameters: 10(Integer) -[DEBUG] [2020-09-27 20:47:22] 请求Id[595b9a3f6e754ed58b2d7b50bdef3a04] [http-nio-9001-exec-1] ==> [TxId: , SpanId: ] <== Total: 6 -[DEBUG] [2020-09-27 20:47:22] 请求Id[595b9a3f6e754ed58b2d7b50bdef3a04] [http-nio-9001-exec-1] ==> [TxId: , SpanId: ] ==> Preparing: SELECT school_id,school_name,province_id,city_id FROM zz_school_info WHERE ( ( school_id in ( ? , ? ) ) ) -[DEBUG] [2020-09-27 20:47:22] 请求Id[595b9a3f6e754ed58b2d7b50bdef3a04] [http-nio-9001-exec-1] ==> [TxId: , SpanId: ] ==> Parameters: 1015818056597508096(Long), 1015817732197453824(Long) -[DEBUG] [2020-09-27 20:47:22] 请求Id[595b9a3f6e754ed58b2d7b50bdef3a04] [http-nio-9001-exec-1] ==> [TxId: , SpanId: ] <== Total: 2 -[INFO ] [2020-09-27 20:47:22] 请求Id[595b9a3f6e754ed58b2d7b50bdef3a04] [http-nio-9001-exec-1] ==> [TxId: , SpanId: ] 请求完成, app=, url=/student/list,elapse=24ms, respData={"data":{"dataList":[{"birthday":1282147200000,"cityId":110100000000,"cityIdDictMap":{"name":"市辖区","id":110100000000},"districtId":110105000000,"districtIdDictMap":{"name":"朝阳区","id":110105000000},"experienceLevel":1,"experienceLevelDictMap":{"name":"中级学员","id":1},"gender":1,"genderDictMap":{"name":"男","id":1},"gradeId":4,"gradeIdDictMap":{"name":"四年级","id":4},"leftCoin":1077,"loginMobile":"13834561230","provinceId":110000000000,"provinceIdDictMap":{"name":"北京市","id":110000000000},"registerTime":1601136000000,"schoolId":1015817732197453824,"schoolIdDictMap":{"name":"北京校区","id":1015817732197453824},"status":0,"statusDictMap":{"name":"正常","id":0},"studentId":1015842628948463616,"studentName":"张三","totalCoin":3412},{"birthday":1321545600000,"cityId":110100000000,"cityIdDictMap":{"name":"市辖区","id":110100000000},"districtId":110107000000,"districtIdDictMap":{"name":"石景山区","id":110107000000},"experienceLevel":1,"experienceLevelDictMap":{"name":"中级学员","id":1},"gender":1,"genderDictMap":{"name":"男","id":1},"gradeId":3,"gradeIdDictMap":{"name":"三年级","id":3},"leftCoin":3024,"loginMobile":"13945651267","provinceId":110000000000,"provinceIdDictMap":{"name":"北京市","id":110000000000},"registerTime":1601136000000,"schoolId":1015817732197453824,"schoolIdDictMap":{"name":"北京校区","id":1015817732197453824},"status":0,"statusDictMap":{"name":"正常","id":0},"studentId":1015852480873631744,"studentName":"李军","totalCoin":3178},{"birthday":1421251200000,"cityId":110100000000,"cityIdDictMap":{"name":"市辖区","id":110100000000},"districtId":110108000000,"districtIdDictMap":{"name":"海淀区","id":110108000000},"experienceLevel":0,"experienceLevelDictMap":{"name":"初级学员","id":0},"gender":1,"genderDictMap":{"name":"男","id":1},"gradeId":1,"gradeIdDictMap":{"name":"一年级","id":1},"leftCoin":2199,"loginMobile":"13709481736","provinceId":110000000000,"provinceIdDictMap":{"name":"北京市","id":110000000000},"registerTime":1601136000000,"schoolId":1015817732197453824,"schoolIdDictMap":{"name":"北京校区","id":1015817732197453824},"status":0,"statusDictMap":{"name":"正常","id":0},"studentId":1015852853839532032,"studentName":"王石","totalCoin":3187},{"birthday":1276099200000,"cityId":120100000000,"cityIdDictMap":{"name":"市辖区","id":120100000000},"districtId":120103000000,"districtIdDictMap":{"name":"河西区","id":120103000000},"experienceLevel":0,"experienceLevelDictMap":{"name":"初级学员","id":0},"gender":1,"genderDictMap":{"name":"男","id":1},"gradeId":3,"gradeIdDictMap":{"name":"三年级","id":3},"leftCoin":634,"loginMobile":"13700023451","provinceId":120000000000,"provinceIdDictMap":{"name":"天津市","id":120000000000},"registerTime":1601136000000,"schoolId":1015818056597508096,"schoolIdDictMap":{"name":"天津校区","id":1015818056597508096},"status":0,"statusDictMap":{"name":"正常","id":0},"studentId":1018000939508568064,"studentName":"天津二哥","totalCoin":1287},{"birthday":1247760000000,"cityId":120100000000,"cityIdDictMap":{"name":"市辖区","id":120100000000},"districtId":120104000000,"districtIdDictMap":{"name":"南开区","id":120104000000},"experienceLevel":2,"experienceLevelDictMap":{"name":"高级学员","id":2},"gender":0,"genderDictMap":{"name":"女","id":0},"gradeId":4,"gradeIdDictMap":{"name":"四年级","id":4},"leftCoin":7023,"loginMobile":"13903122987","provinceId":120000000000,"provinceIdDictMap":{"name":"天津市","id":120000000000},"registerTime":1601136000000,"schoolId":1015818056597508096,"schoolIdDictMap":{"name":"天津校区","id":1015818056597508096},"status":0,"statusDictMap":{"name":"正常","id":0},"studentId":1018001219050541056,"studentName":"南开学霸","totalCoin":8721},{"birthday":1504454400000,"cityId":120100000000,"cityIdDictMap":{"name":"市辖区","id":120100000000},"districtId":120102000000,"districtIdDictMap":{"name":"河东区","id":120102000000},"experienceLevel":0,"experienceLevelDictMap":{"name":"初级学员","id":0},"gender":0,"genderDictMap":{"name":"女","id":0},"gradeId":1,"gradeIdDictMap":{"name":"一年级","id":1},"leftCoin":0,"loginMobile":"13812345678","provinceId":120000000000,"provinceIdDictMap":{"name":"天津市","id":120000000000},"registerTime":1601210838000,"schoolId":1015818056597508096,"schoolIdDictMap":{"name":"天津校区","id":1015818056597508096},"status":0,"statusDictMap":{"name":"正常","id":0},"studentId":1310199334167380052,"studentName":"1112222","totalCoin":0}],"totalCount":6},"errorCode":"NO-ERROR","errorMessage":"NO-MESSAGE","success":true} -[INFO ] [2020-09-27 20:47:25] 请求Id[8937c7de3535464994ee5e6e39ac7598] [http-nio-9001-exec-2] ==> [TxId: , SpanId: ] 开始请求,app=, url=/student/delete, reqData=[1310199334167380052] -[DEBUG] [2020-09-27 20:47:25] 请求Id[8937c7de3535464994ee5e6e39ac7598] [http-nio-9001-exec-2] ==> [TxId: , SpanId: ] ==> Preparing: SELECT 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 FROM zz_student WHERE student_id = ? -[DEBUG] [2020-09-27 20:47:25] 请求Id[8937c7de3535464994ee5e6e39ac7598] [http-nio-9001-exec-2] ==> [TxId: , SpanId: ] ==> Parameters: 1310199334167380052(Long) -[DEBUG] [2020-09-27 20:47:25] 请求Id[8937c7de3535464994ee5e6e39ac7598] [http-nio-9001-exec-2] ==> [TxId: , SpanId: ] <== Total: 1 -[DEBUG] [2020-09-27 20:47:25] 请求Id[8937c7de3535464994ee5e6e39ac7598] [http-nio-9001-exec-2] ==> [TxId: , SpanId: ] ==> Preparing: DELETE FROM zz_student WHERE student_id = ? -[DEBUG] [2020-09-27 20:47:25] 请求Id[8937c7de3535464994ee5e6e39ac7598] [http-nio-9001-exec-2] ==> [TxId: , SpanId: ] ==> Parameters: 1310199334167380052(Long) -[DEBUG] [2020-09-27 20:47:25] 请求Id[8937c7de3535464994ee5e6e39ac7598] [http-nio-9001-exec-2] ==> [TxId: , SpanId: ] <== Updates: 1 -[DEBUG] [2020-09-27 20:47:25] 请求Id[8937c7de3535464994ee5e6e39ac7598] [http-nio-9001-exec-2] ==> [TxId: , SpanId: ] ==> Preparing: DELETE FROM zz_class_student WHERE student_id = ? -[DEBUG] [2020-09-27 20:47:25] 请求Id[8937c7de3535464994ee5e6e39ac7598] [http-nio-9001-exec-2] ==> [TxId: , SpanId: ] ==> Parameters: 1310199334167380052(Long) -[DEBUG] [2020-09-27 20:47:25] 请求Id[8937c7de3535464994ee5e6e39ac7598] [http-nio-9001-exec-2] ==> [TxId: , SpanId: ] <== Updates: 0 -[INFO ] [2020-09-27 20:47:25] 请求Id[8937c7de3535464994ee5e6e39ac7598] [http-nio-9001-exec-2] ==> [TxId: , SpanId: ] 请求完成, app=, url=/student/delete,elapse=14ms, respData={"errorCode":"NO-ERROR","errorMessage":"NO-MESSAGE","success":true} -[INFO ] [2020-09-27 20:47:25] 请求Id[322815eb8ed641c09c8ec1b8a66e4636] [http-nio-9001-exec-3] ==> [TxId: , SpanId: ] 开始请求,app=, url=/student/list, reqData=[{},[{"asc":true,"fieldName":"registerTime"}],{"pageNum":1,"pageSize":10}] -[DEBUG] [2020-09-27 20:47:25] 请求Id[322815eb8ed641c09c8ec1b8a66e4636] [http-nio-9001-exec-3] ==> [TxId: , SpanId: ] ==> Preparing: SELECT count(0) FROM zz_student -[DEBUG] [2020-09-27 20:47:25] 请求Id[322815eb8ed641c09c8ec1b8a66e4636] [http-nio-9001-exec-3] ==> [TxId: , SpanId: ] ==> Parameters: -[DEBUG] [2020-09-27 20:47:25] 请求Id[322815eb8ed641c09c8ec1b8a66e4636] [http-nio-9001-exec-3] ==> [TxId: , SpanId: ] <== Total: 1 -[DEBUG] [2020-09-27 20:47:25] 请求Id[322815eb8ed641c09c8ec1b8a66e4636] [http-nio-9001-exec-3] ==> [TxId: , SpanId: ] ==> Preparing: SELECT * FROM zz_student ORDER BY zz_student.register_time LIMIT ? -[DEBUG] [2020-09-27 20:47:25] 请求Id[322815eb8ed641c09c8ec1b8a66e4636] [http-nio-9001-exec-3] ==> [TxId: , SpanId: ] ==> Parameters: 10(Integer) -[DEBUG] [2020-09-27 20:47:25] 请求Id[322815eb8ed641c09c8ec1b8a66e4636] [http-nio-9001-exec-3] ==> [TxId: , SpanId: ] <== Total: 5 -[DEBUG] [2020-09-27 20:47:25] 请求Id[322815eb8ed641c09c8ec1b8a66e4636] [http-nio-9001-exec-3] ==> [TxId: , SpanId: ] ==> Preparing: SELECT school_id,school_name,province_id,city_id FROM zz_school_info WHERE ( ( school_id in ( ? , ? ) ) ) -[DEBUG] [2020-09-27 20:47:25] 请求Id[322815eb8ed641c09c8ec1b8a66e4636] [http-nio-9001-exec-3] ==> [TxId: , SpanId: ] ==> Parameters: 1015818056597508096(Long), 1015817732197453824(Long) -[DEBUG] [2020-09-27 20:47:25] 请求Id[322815eb8ed641c09c8ec1b8a66e4636] [http-nio-9001-exec-3] ==> [TxId: , SpanId: ] <== Total: 2 -[INFO ] [2020-09-27 20:47:25] 请求Id[322815eb8ed641c09c8ec1b8a66e4636] [http-nio-9001-exec-3] ==> [TxId: , SpanId: ] 请求完成, app=, url=/student/list,elapse=18ms, respData={"data":{"dataList":[{"birthday":1282147200000,"cityId":110100000000,"cityIdDictMap":{"name":"市辖区","id":110100000000},"districtId":110105000000,"districtIdDictMap":{"name":"朝阳区","id":110105000000},"experienceLevel":1,"experienceLevelDictMap":{"name":"中级学员","id":1},"gender":1,"genderDictMap":{"name":"男","id":1},"gradeId":4,"gradeIdDictMap":{"name":"四年级","id":4},"leftCoin":1077,"loginMobile":"13834561230","provinceId":110000000000,"provinceIdDictMap":{"name":"北京市","id":110000000000},"registerTime":1601136000000,"schoolId":1015817732197453824,"schoolIdDictMap":{"name":"北京校区","id":1015817732197453824},"status":0,"statusDictMap":{"name":"正常","id":0},"studentId":1015842628948463616,"studentName":"张三","totalCoin":3412},{"birthday":1321545600000,"cityId":110100000000,"cityIdDictMap":{"name":"市辖区","id":110100000000},"districtId":110107000000,"districtIdDictMap":{"name":"石景山区","id":110107000000},"experienceLevel":1,"experienceLevelDictMap":{"name":"中级学员","id":1},"gender":1,"genderDictMap":{"name":"男","id":1},"gradeId":3,"gradeIdDictMap":{"name":"三年级","id":3},"leftCoin":3024,"loginMobile":"13945651267","provinceId":110000000000,"provinceIdDictMap":{"name":"北京市","id":110000000000},"registerTime":1601136000000,"schoolId":1015817732197453824,"schoolIdDictMap":{"name":"北京校区","id":1015817732197453824},"status":0,"statusDictMap":{"name":"正常","id":0},"studentId":1015852480873631744,"studentName":"李军","totalCoin":3178},{"birthday":1421251200000,"cityId":110100000000,"cityIdDictMap":{"name":"市辖区","id":110100000000},"districtId":110108000000,"districtIdDictMap":{"name":"海淀区","id":110108000000},"experienceLevel":0,"experienceLevelDictMap":{"name":"初级学员","id":0},"gender":1,"genderDictMap":{"name":"男","id":1},"gradeId":1,"gradeIdDictMap":{"name":"一年级","id":1},"leftCoin":2199,"loginMobile":"13709481736","provinceId":110000000000,"provinceIdDictMap":{"name":"北京市","id":110000000000},"registerTime":1601136000000,"schoolId":1015817732197453824,"schoolIdDictMap":{"name":"北京校区","id":1015817732197453824},"status":0,"statusDictMap":{"name":"正常","id":0},"studentId":1015852853839532032,"studentName":"王石","totalCoin":3187},{"birthday":1276099200000,"cityId":120100000000,"cityIdDictMap":{"name":"市辖区","id":120100000000},"districtId":120103000000,"districtIdDictMap":{"name":"河西区","id":120103000000},"experienceLevel":0,"experienceLevelDictMap":{"name":"初级学员","id":0},"gender":1,"genderDictMap":{"name":"男","id":1},"gradeId":3,"gradeIdDictMap":{"name":"三年级","id":3},"leftCoin":634,"loginMobile":"13700023451","provinceId":120000000000,"provinceIdDictMap":{"name":"天津市","id":120000000000},"registerTime":1601136000000,"schoolId":1015818056597508096,"schoolIdDictMap":{"name":"天津校区","id":1015818056597508096},"status":0,"statusDictMap":{"name":"正常","id":0},"studentId":1018000939508568064,"studentName":"天津二哥","totalCoin":1287},{"birthday":1247760000000,"cityId":120100000000,"cityIdDictMap":{"name":"市辖区","id":120100000000},"districtId":120104000000,"districtIdDictMap":{"name":"南开区","id":120104000000},"experienceLevel":2,"experienceLevelDictMap":{"name":"高级学员","id":2},"gender":0,"genderDictMap":{"name":"女","id":0},"gradeId":4,"gradeIdDictMap":{"name":"四年级","id":4},"leftCoin":7023,"loginMobile":"13903122987","provinceId":120000000000,"provinceIdDictMap":{"name":"天津市","id":120000000000},"registerTime":1601136000000,"schoolId":1015818056597508096,"schoolIdDictMap":{"name":"天津校区","id":1015818056597508096},"status":0,"statusDictMap":{"name":"正常","id":0},"studentId":1018001219050541056,"studentName":"南开学霸","totalCoin":8721}],"totalCount":5},"errorCode":"NO-ERROR","errorMessage":"NO-MESSAGE","success":true} -[INFO ] [2020-09-27 20:47:27] 请求Id[b5500f945d034a4580a8e7818d0d5f16] [http-nio-9001-exec-4] ==> [TxId: , SpanId: ] 开始请求,app=, url=/studentClass/list, reqData=[{},[{"asc":true,"fieldName":"createTime"}],{"pageNum":1,"pageSize":10}] -[DEBUG] [2020-09-27 20:47:27] 请求Id[b5500f945d034a4580a8e7818d0d5f16] [http-nio-9001-exec-4] ==> [TxId: , SpanId: ] ==> Preparing: SELECT count(0) FROM zz_class WHERE zz_class.status = 1 -[DEBUG] [2020-09-27 20:47:27] 请求Id[b5500f945d034a4580a8e7818d0d5f16] [http-nio-9001-exec-4] ==> [TxId: , SpanId: ] ==> Parameters: -[DEBUG] [2020-09-27 20:47:27] 请求Id[b5500f945d034a4580a8e7818d0d5f16] [http-nio-9001-exec-4] ==> [TxId: , SpanId: ] <== Total: 1 -[DEBUG] [2020-09-27 20:47:27] 请求Id[b5500f945d034a4580a8e7818d0d5f16] [http-nio-9001-exec-4] ==> [TxId: , SpanId: ] ==> Preparing: SELECT * FROM zz_class WHERE zz_class.status = 1 ORDER BY zz_class.create_time LIMIT ? -[DEBUG] [2020-09-27 20:47:27] 请求Id[b5500f945d034a4580a8e7818d0d5f16] [http-nio-9001-exec-4] ==> [TxId: , SpanId: ] ==> Parameters: 10(Integer) -[DEBUG] [2020-09-27 20:47:27] 请求Id[b5500f945d034a4580a8e7818d0d5f16] [http-nio-9001-exec-4] ==> [TxId: , SpanId: ] <== Total: 10 -[DEBUG] [2020-09-27 20:47:27] 请求Id[b5500f945d034a4580a8e7818d0d5f16] [http-nio-9001-exec-4] ==> [TxId: , SpanId: ] ==> Preparing: SELECT school_id,school_name,province_id,city_id FROM zz_school_info WHERE ( ( school_id in ( ? , ? ) ) ) -[DEBUG] [2020-09-27 20:47:27] 请求Id[b5500f945d034a4580a8e7818d0d5f16] [http-nio-9001-exec-4] ==> [TxId: , SpanId: ] ==> Parameters: 1015818056597508096(Long), 1015817732197453824(Long) -[DEBUG] [2020-09-27 20:47:27] 请求Id[b5500f945d034a4580a8e7818d0d5f16] [http-nio-9001-exec-4] ==> [TxId: , SpanId: ] <== Total: 2 -[DEBUG] [2020-09-27 20:47:27] 请求Id[b5500f945d034a4580a8e7818d0d5f16] [http-nio-9001-exec-4] ==> [TxId: , SpanId: ] ==> Preparing: SELECT 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 FROM zz_student WHERE ( ( student_id in ( ? , ? , ? , ? , ? ) ) ) -[DEBUG] [2020-09-27 20:47:27] 请求Id[b5500f945d034a4580a8e7818d0d5f16] [http-nio-9001-exec-4] ==> [TxId: , SpanId: ] ==> Parameters: 1015852480873631744(Long), 1015842628948463616(Long), 1018000939508568064(Long), 1018001219050541056(Long), 1015852853839532032(Long) -[DEBUG] [2020-09-27 20:47:27] 请求Id[b5500f945d034a4580a8e7818d0d5f16] [http-nio-9001-exec-4] ==> [TxId: , SpanId: ] <== Total: 5 -[INFO ] [2020-09-27 20:47:27] 请求Id[b5500f945d034a4580a8e7818d0d5f16] [http-nio-9001-exec-4] ==> [TxId: , SpanId: ] 请求完成, app=, url=/studentClass/list,elapse=102ms, respData={"data":{"dataList":[{"classId":1016971499387228160,"classLevel":0,"classLevelDictMap":{"name":"初级班","id":0},"className":"小学一年级随堂班","createTime":1601136000000,"createUserId":1093809448606765057,"finishClassHour":15,"leaderId":1015842628948463616,"leaderIdDictMap":{"name":"张三","id":1015842628948463616},"schoolId":1015817732197453824,"schoolIdDictMap":{"name":"北京校区","id":1015817732197453824}},{"classId":1016971692685922304,"classLevel":0,"classLevelDictMap":{"name":"初级班","id":0},"className":"小学二年级随堂班","createTime":1601136000000,"createUserId":1093809448606765057,"finishClassHour":20,"leaderId":1018000939508568064,"leaderIdDictMap":{"name":"天津二哥","id":1018000939508568064},"schoolId":1015818056597508096,"schoolIdDictMap":{"name":"天津校区","id":1015818056597508096}},{"classId":1016971755373989888,"classLevel":0,"classLevelDictMap":{"name":"初级班","id":0},"className":"小学三年级随堂班","createTime":1601136000000,"createUserId":1093809448606765057,"finishClassHour":100,"leaderId":1015842628948463616,"leaderIdDictMap":{"name":"张三","id":1015842628948463616},"schoolId":1015817732197453824,"schoolIdDictMap":{"name":"北京校区","id":1015817732197453824}},{"classId":1016971816040402944,"classLevel":0,"classLevelDictMap":{"name":"初级班","id":0},"className":"小学四年级随堂班","createTime":1601136000000,"createUserId":1093809448606765057,"finishClassHour":0,"leaderId":1015852853839532032,"leaderIdDictMap":{"name":"王石","id":1015852853839532032},"schoolId":1015817732197453824,"schoolIdDictMap":{"name":"北京校区","id":1015817732197453824}},{"classId":1016971872105664512,"classLevel":0,"classLevelDictMap":{"name":"初级班","id":0},"className":"小学五年级随堂班","createTime":1601136000000,"createUserId":1093809448606765057,"finishClassHour":0,"leaderId":1018001219050541056,"leaderIdDictMap":{"name":"南开学霸","id":1018001219050541056},"schoolId":1015818056597508096,"schoolIdDictMap":{"name":"天津校区","id":1015818056597508096}},{"classId":1016971931153076224,"classLevel":0,"classLevelDictMap":{"name":"初级班","id":0},"className":"小学六年级随堂班","createTime":1601136000000,"createUserId":1093809448606765057,"finishClassHour":0,"leaderId":1015852480873631744,"leaderIdDictMap":{"name":"李军","id":1015852480873631744},"schoolId":1015817732197453824,"schoolIdDictMap":{"name":"北京校区","id":1015817732197453824}},{"classId":1016972016347779072,"classLevel":1,"classLevelDictMap":{"name":"中级班","id":1},"className":"小学一年级提高班","createTime":1601136000000,"createUserId":1093809448606765057,"finishClassHour":0,"leaderId":1015842628948463616,"leaderIdDictMap":{"name":"张三","id":1015842628948463616},"schoolId":1015817732197453824,"schoolIdDictMap":{"name":"北京校区","id":1015817732197453824}},{"classId":1016972071955861504,"classLevel":1,"classLevelDictMap":{"name":"中级班","id":1},"className":"小学二年级提高班","createTime":1601136000000,"createUserId":1093809448606765057,"finishClassHour":0,"leaderId":1015852480873631744,"leaderIdDictMap":{"name":"李军","id":1015852480873631744},"schoolId":1015817732197453824,"schoolIdDictMap":{"name":"北京校区","id":1015817732197453824}},{"classId":1016972128667045888,"classLevel":1,"classLevelDictMap":{"name":"中级班","id":1},"className":"小学三年级提高班","createTime":1601136000000,"createUserId":1093809448606765057,"finishClassHour":0,"leaderId":1018001219050541056,"leaderIdDictMap":{"name":"南开学霸","id":1018001219050541056},"schoolId":1015818056597508096,"schoolIdDictMap":{"name":"天津校区","id":1015818056597508096}},{"classId":1016972187949338624,"classLevel":1,"classLevelDictMap":{"name":"中级班","id":1},"className":"小学四年级提高班","createTime":1601136000000,"createUserId":1093809448606765057,"finishClassHour":0,"leaderId":1015852480873631744,"leaderIdDictMap":{"name":"李军","id":1015852480873631744},"schoolId":1015817732197453824,"schoolIdDictMap":{"name":"北京校区","id":1015817732197453824}}],"totalCount":15},"errorCode":"NO-ERROR","errorMessage":"NO-MESSAGE","success":true} -[INFO ] [2020-09-27 20:47:29] 请求Id[94a21e6da790470b8d94751df09d019d] [http-nio-9001-exec-5] ==> [TxId: , SpanId: ] 开始请求,app=, url=/studentClass/listClassStudent, reqData=[1016971499387228160,null,null,{"pageNum":1,"pageSize":10}] -[DEBUG] [2020-09-27 20:47:29] 请求Id[94a21e6da790470b8d94751df09d019d] [http-nio-9001-exec-5] ==> [TxId: , SpanId: ] ==> Preparing: SELECT class_id,class_name,school_id,leader_id,finish_class_hour,class_level,create_user_id,create_time,status FROM zz_class WHERE ( ( class_id = ? and status = ? ) ) -[DEBUG] [2020-09-27 20:47:29] 请求Id[94a21e6da790470b8d94751df09d019d] [http-nio-9001-exec-5] ==> [TxId: , SpanId: ] ==> Parameters: 1016971499387228160(Long), 1(Integer) -[DEBUG] [2020-09-27 20:47:29] 请求Id[94a21e6da790470b8d94751df09d019d] [http-nio-9001-exec-5] ==> [TxId: , SpanId: ] <== Total: 1 -[DEBUG] [2020-09-27 20:47:29] 请求Id[94a21e6da790470b8d94751df09d019d] [http-nio-9001-exec-5] ==> [TxId: , SpanId: ] ==> Preparing: SELECT count(0) FROM zz_student, zz_class_student WHERE zz_class_student.class_id = ? AND zz_class_student.student_id = zz_student.student_id -[DEBUG] [2020-09-27 20:47:29] 请求Id[94a21e6da790470b8d94751df09d019d] [http-nio-9001-exec-5] ==> [TxId: , SpanId: ] ==> Parameters: 1016971499387228160(Long) -[DEBUG] [2020-09-27 20:47:29] 请求Id[94a21e6da790470b8d94751df09d019d] [http-nio-9001-exec-5] ==> [TxId: , SpanId: ] <== Total: 1 -[DEBUG] [2020-09-27 20:47:29] 请求Id[94a21e6da790470b8d94751df09d019d] [http-nio-9001-exec-5] ==> [TxId: , SpanId: ] ==> Preparing: SELECT zz_student.* FROM zz_student, zz_class_student WHERE zz_class_student.class_id = ? AND zz_class_student.student_id = zz_student.student_id LIMIT ? -[DEBUG] [2020-09-27 20:47:29] 请求Id[94a21e6da790470b8d94751df09d019d] [http-nio-9001-exec-5] ==> [TxId: , SpanId: ] ==> Parameters: 1016971499387228160(Long), 10(Integer) -[DEBUG] [2020-09-27 20:47:29] 请求Id[94a21e6da790470b8d94751df09d019d] [http-nio-9001-exec-5] ==> [TxId: , SpanId: ] <== Total: 2 -[DEBUG] [2020-09-27 20:47:29] 请求Id[94a21e6da790470b8d94751df09d019d] [http-nio-9001-exec-5] ==> [TxId: , SpanId: ] ==> Preparing: SELECT school_id,school_name,province_id,city_id FROM zz_school_info WHERE ( ( school_id in ( ? ) ) ) -[DEBUG] [2020-09-27 20:47:29] 请求Id[94a21e6da790470b8d94751df09d019d] [http-nio-9001-exec-5] ==> [TxId: , SpanId: ] ==> Parameters: 1015817732197453824(Long) -[DEBUG] [2020-09-27 20:47:29] 请求Id[94a21e6da790470b8d94751df09d019d] [http-nio-9001-exec-5] ==> [TxId: , SpanId: ] <== Total: 1 -[INFO ] [2020-09-27 20:47:29] 请求Id[94a21e6da790470b8d94751df09d019d] [http-nio-9001-exec-5] ==> [TxId: , SpanId: ] 请求完成, app=, url=/studentClass/listClassStudent,elapse=31ms, respData={"data":{"dataList":[{"birthday":1282147200000,"cityId":110100000000,"cityIdDictMap":{"name":"市辖区","id":110100000000},"districtId":110105000000,"districtIdDictMap":{"name":"朝阳区","id":110105000000},"experienceLevel":1,"experienceLevelDictMap":{"name":"中级学员","id":1},"gender":1,"genderDictMap":{"name":"男","id":1},"gradeId":4,"gradeIdDictMap":{"name":"四年级","id":4},"leftCoin":1077,"loginMobile":"13834561230","provinceId":110000000000,"provinceIdDictMap":{"name":"北京市","id":110000000000},"registerTime":1601136000000,"schoolId":1015817732197453824,"schoolIdDictMap":{"name":"北京校区","id":1015817732197453824},"status":0,"statusDictMap":{"name":"正常","id":0},"studentId":1015842628948463616,"studentName":"张三","totalCoin":3412},{"birthday":1321545600000,"cityId":110100000000,"cityIdDictMap":{"name":"市辖区","id":110100000000},"districtId":110107000000,"districtIdDictMap":{"name":"石景山区","id":110107000000},"experienceLevel":1,"experienceLevelDictMap":{"name":"中级学员","id":1},"gender":1,"genderDictMap":{"name":"男","id":1},"gradeId":3,"gradeIdDictMap":{"name":"三年级","id":3},"leftCoin":3024,"loginMobile":"13945651267","provinceId":110000000000,"provinceIdDictMap":{"name":"北京市","id":110000000000},"registerTime":1601136000000,"schoolId":1015817732197453824,"schoolIdDictMap":{"name":"北京校区","id":1015817732197453824},"status":0,"statusDictMap":{"name":"正常","id":0},"studentId":1015852480873631744,"studentName":"李军","totalCoin":3178}],"totalCount":2},"errorCode":"NO-ERROR","errorMessage":"NO-MESSAGE","success":true} -[INFO ] [2020-09-27 20:47:31] 请求Id[f10c3e6765a24ab799944e8053d1e763] [http-nio-9001-exec-6] ==> [TxId: , SpanId: ] 开始请求,app=, url=/studentClass/listNotInClassStudent, reqData=[1016971499387228160,{},null,{"pageNum":1,"pageSize":10}] -[DEBUG] [2020-09-27 20:47:31] 请求Id[f10c3e6765a24ab799944e8053d1e763] [http-nio-9001-exec-6] ==> [TxId: , SpanId: ] ==> Preparing: SELECT class_id,class_name,school_id,leader_id,finish_class_hour,class_level,create_user_id,create_time,status FROM zz_class WHERE ( ( class_id = ? and status = ? ) ) -[DEBUG] [2020-09-27 20:47:31] 请求Id[f10c3e6765a24ab799944e8053d1e763] [http-nio-9001-exec-6] ==> [TxId: , SpanId: ] ==> Parameters: 1016971499387228160(Long), 1(Integer) -[DEBUG] [2020-09-27 20:47:31] 请求Id[f10c3e6765a24ab799944e8053d1e763] [http-nio-9001-exec-6] ==> [TxId: , SpanId: ] <== Total: 1 -[DEBUG] [2020-09-27 20:47:31] 请求Id[f10c3e6765a24ab799944e8053d1e763] [http-nio-9001-exec-6] ==> [TxId: , SpanId: ] ==> Preparing: SELECT count(0) FROM zz_student WHERE NOT EXISTS (SELECT * FROM zz_class_student WHERE zz_class_student.class_id = ? AND zz_class_student.student_id = zz_student.student_id) -[DEBUG] [2020-09-27 20:47:31] 请求Id[f10c3e6765a24ab799944e8053d1e763] [http-nio-9001-exec-6] ==> [TxId: , SpanId: ] ==> Parameters: 1016971499387228160(Long) -[DEBUG] [2020-09-27 20:47:31] 请求Id[f10c3e6765a24ab799944e8053d1e763] [http-nio-9001-exec-6] ==> [TxId: , SpanId: ] <== Total: 1 -[DEBUG] [2020-09-27 20:47:31] 请求Id[f10c3e6765a24ab799944e8053d1e763] [http-nio-9001-exec-6] ==> [TxId: , SpanId: ] ==> Preparing: SELECT zz_student.* FROM zz_student WHERE NOT EXISTS (SELECT * FROM zz_class_student WHERE zz_class_student.class_id = ? AND zz_class_student.student_id = zz_student.student_id) LIMIT ? -[DEBUG] [2020-09-27 20:47:31] 请求Id[f10c3e6765a24ab799944e8053d1e763] [http-nio-9001-exec-6] ==> [TxId: , SpanId: ] ==> Parameters: 1016971499387228160(Long), 10(Integer) -[DEBUG] [2020-09-27 20:47:31] 请求Id[f10c3e6765a24ab799944e8053d1e763] [http-nio-9001-exec-6] ==> [TxId: , SpanId: ] <== Total: 3 -[DEBUG] [2020-09-27 20:47:31] 请求Id[f10c3e6765a24ab799944e8053d1e763] [http-nio-9001-exec-6] ==> [TxId: , SpanId: ] ==> Preparing: SELECT school_id,school_name,province_id,city_id FROM zz_school_info WHERE ( ( school_id in ( ? , ? ) ) ) -[DEBUG] [2020-09-27 20:47:31] 请求Id[f10c3e6765a24ab799944e8053d1e763] [http-nio-9001-exec-6] ==> [TxId: , SpanId: ] ==> Parameters: 1015818056597508096(Long), 1015817732197453824(Long) -[DEBUG] [2020-09-27 20:47:31] 请求Id[f10c3e6765a24ab799944e8053d1e763] [http-nio-9001-exec-6] ==> [TxId: , SpanId: ] <== Total: 2 -[INFO ] [2020-09-27 20:47:31] 请求Id[f10c3e6765a24ab799944e8053d1e763] [http-nio-9001-exec-6] ==> [TxId: , SpanId: ] 请求完成, app=, url=/studentClass/listNotInClassStudent,elapse=33ms, respData={"data":{"dataList":[{"birthday":1421251200000,"cityId":110100000000,"cityIdDictMap":{"name":"市辖区","id":110100000000},"districtId":110108000000,"districtIdDictMap":{"name":"海淀区","id":110108000000},"experienceLevel":0,"experienceLevelDictMap":{"name":"初级学员","id":0},"gender":1,"genderDictMap":{"name":"男","id":1},"gradeId":1,"gradeIdDictMap":{"name":"一年级","id":1},"leftCoin":2199,"loginMobile":"13709481736","provinceId":110000000000,"provinceIdDictMap":{"name":"北京市","id":110000000000},"registerTime":1601136000000,"schoolId":1015817732197453824,"schoolIdDictMap":{"name":"北京校区","id":1015817732197453824},"status":0,"statusDictMap":{"name":"正常","id":0},"studentId":1015852853839532032,"studentName":"王石","totalCoin":3187},{"birthday":1276099200000,"cityId":120100000000,"cityIdDictMap":{"name":"市辖区","id":120100000000},"districtId":120103000000,"districtIdDictMap":{"name":"河西区","id":120103000000},"experienceLevel":0,"experienceLevelDictMap":{"name":"初级学员","id":0},"gender":1,"genderDictMap":{"name":"男","id":1},"gradeId":3,"gradeIdDictMap":{"name":"三年级","id":3},"leftCoin":634,"loginMobile":"13700023451","provinceId":120000000000,"provinceIdDictMap":{"name":"天津市","id":120000000000},"registerTime":1601136000000,"schoolId":1015818056597508096,"schoolIdDictMap":{"name":"天津校区","id":1015818056597508096},"status":0,"statusDictMap":{"name":"正常","id":0},"studentId":1018000939508568064,"studentName":"天津二哥","totalCoin":1287},{"birthday":1247760000000,"cityId":120100000000,"cityIdDictMap":{"name":"市辖区","id":120100000000},"districtId":120104000000,"districtIdDictMap":{"name":"南开区","id":120104000000},"experienceLevel":2,"experienceLevelDictMap":{"name":"高级学员","id":2},"gender":0,"genderDictMap":{"name":"女","id":0},"gradeId":4,"gradeIdDictMap":{"name":"四年级","id":4},"leftCoin":7023,"loginMobile":"13903122987","provinceId":120000000000,"provinceIdDictMap":{"name":"天津市","id":120000000000},"registerTime":1601136000000,"schoolId":1015818056597508096,"schoolIdDictMap":{"name":"天津校区","id":1015818056597508096},"status":0,"statusDictMap":{"name":"正常","id":0},"studentId":1018001219050541056,"studentName":"南开学霸","totalCoin":8721}],"totalCount":3},"errorCode":"NO-ERROR","errorMessage":"NO-MESSAGE","success":true} -[INFO ] [2020-09-27 20:47:33] 请求Id[9eb86ede264c480aaa003bf8838e3e8a] [http-nio-9001-exec-7] ==> [TxId: , SpanId: ] 开始请求,app=, url=/studentClass/addClassStudent, reqData=[1016971499387228160,[{"studentId":1015852853839532032}]] -[DEBUG] [2020-09-27 20:47:33] 请求Id[9eb86ede264c480aaa003bf8838e3e8a] [http-nio-9001-exec-7] ==> [TxId: , SpanId: ] ==> Preparing: SELECT class_id,class_name,school_id,leader_id,finish_class_hour,class_level,create_user_id,create_time,status FROM zz_class WHERE ( ( class_id = ? and status = ? ) ) -[DEBUG] [2020-09-27 20:47:33] 请求Id[9eb86ede264c480aaa003bf8838e3e8a] [http-nio-9001-exec-7] ==> [TxId: , SpanId: ] ==> Parameters: 1016971499387228160(Long), 1(Integer) -[DEBUG] [2020-09-27 20:47:33] 请求Id[9eb86ede264c480aaa003bf8838e3e8a] [http-nio-9001-exec-7] ==> [TxId: , SpanId: ] <== Total: 1 -[DEBUG] [2020-09-27 20:47:33] 请求Id[9eb86ede264c480aaa003bf8838e3e8a] [http-nio-9001-exec-7] ==> [TxId: , SpanId: ] ==> Preparing: SELECT COUNT(*) FROM zz_student WHERE ( ( student_id in ( ? ) ) ) -[DEBUG] [2020-09-27 20:47:33] 请求Id[9eb86ede264c480aaa003bf8838e3e8a] [http-nio-9001-exec-7] ==> [TxId: , SpanId: ] ==> Parameters: 1015852853839532032(Long) -[DEBUG] [2020-09-27 20:47:33] 请求Id[9eb86ede264c480aaa003bf8838e3e8a] [http-nio-9001-exec-7] ==> [TxId: , SpanId: ] <== Total: 1 -[DEBUG] [2020-09-27 20:47:33] 请求Id[9eb86ede264c480aaa003bf8838e3e8a] [http-nio-9001-exec-7] ==> [TxId: , SpanId: ] ==> Preparing: INSERT INTO zz_class_student ( class_id,student_id ) VALUES ( ?,? ) -[DEBUG] [2020-09-27 20:47:33] 请求Id[9eb86ede264c480aaa003bf8838e3e8a] [http-nio-9001-exec-7] ==> [TxId: , SpanId: ] ==> Parameters: 1016971499387228160(Long), 1015852853839532032(Long) -[DEBUG] [2020-09-27 20:47:33] 请求Id[9eb86ede264c480aaa003bf8838e3e8a] [http-nio-9001-exec-7] ==> [TxId: , SpanId: ] <== Updates: 1 -[INFO ] [2020-09-27 20:47:33] 请求Id[9eb86ede264c480aaa003bf8838e3e8a] [http-nio-9001-exec-7] ==> [TxId: , SpanId: ] 请求完成, app=, url=/studentClass/addClassStudent,elapse=29ms, respData={"errorCode":"NO-ERROR","errorMessage":"NO-MESSAGE","success":true} -[INFO ] [2020-09-27 20:47:33] 请求Id[cbd2268781b245399b7b7371af6f893c] [http-nio-9001-exec-8] ==> [TxId: , SpanId: ] 开始请求,app=, url=/studentClass/listNotInClassStudent, reqData=[1016971499387228160,{},null,{"pageNum":1,"pageSize":10}] -[DEBUG] [2020-09-27 20:47:33] 请求Id[cbd2268781b245399b7b7371af6f893c] [http-nio-9001-exec-8] ==> [TxId: , SpanId: ] ==> Preparing: SELECT class_id,class_name,school_id,leader_id,finish_class_hour,class_level,create_user_id,create_time,status FROM zz_class WHERE ( ( class_id = ? and status = ? ) ) -[DEBUG] [2020-09-27 20:47:33] 请求Id[cbd2268781b245399b7b7371af6f893c] [http-nio-9001-exec-8] ==> [TxId: , SpanId: ] ==> Parameters: 1016971499387228160(Long), 1(Integer) -[DEBUG] [2020-09-27 20:47:33] 请求Id[cbd2268781b245399b7b7371af6f893c] [http-nio-9001-exec-8] ==> [TxId: , SpanId: ] <== Total: 1 -[DEBUG] [2020-09-27 20:47:33] 请求Id[cbd2268781b245399b7b7371af6f893c] [http-nio-9001-exec-8] ==> [TxId: , SpanId: ] ==> Preparing: SELECT count(0) FROM zz_student WHERE NOT EXISTS (SELECT * FROM zz_class_student WHERE zz_class_student.class_id = ? AND zz_class_student.student_id = zz_student.student_id) -[DEBUG] [2020-09-27 20:47:33] 请求Id[cbd2268781b245399b7b7371af6f893c] [http-nio-9001-exec-8] ==> [TxId: , SpanId: ] ==> Parameters: 1016971499387228160(Long) -[DEBUG] [2020-09-27 20:47:33] 请求Id[cbd2268781b245399b7b7371af6f893c] [http-nio-9001-exec-8] ==> [TxId: , SpanId: ] <== Total: 1 -[DEBUG] [2020-09-27 20:47:33] 请求Id[cbd2268781b245399b7b7371af6f893c] [http-nio-9001-exec-8] ==> [TxId: , SpanId: ] ==> Preparing: SELECT zz_student.* FROM zz_student WHERE NOT EXISTS (SELECT * FROM zz_class_student WHERE zz_class_student.class_id = ? AND zz_class_student.student_id = zz_student.student_id) LIMIT ? -[DEBUG] [2020-09-27 20:47:33] 请求Id[cbd2268781b245399b7b7371af6f893c] [http-nio-9001-exec-8] ==> [TxId: , SpanId: ] ==> Parameters: 1016971499387228160(Long), 10(Integer) -[DEBUG] [2020-09-27 20:47:33] 请求Id[cbd2268781b245399b7b7371af6f893c] [http-nio-9001-exec-8] ==> [TxId: , SpanId: ] <== Total: 2 -[DEBUG] [2020-09-27 20:47:33] 请求Id[cbd2268781b245399b7b7371af6f893c] [http-nio-9001-exec-8] ==> [TxId: , SpanId: ] ==> Preparing: SELECT school_id,school_name,province_id,city_id FROM zz_school_info WHERE ( ( school_id in ( ? ) ) ) -[DEBUG] [2020-09-27 20:47:33] 请求Id[cbd2268781b245399b7b7371af6f893c] [http-nio-9001-exec-8] ==> [TxId: , SpanId: ] ==> Parameters: 1015818056597508096(Long) -[DEBUG] [2020-09-27 20:47:33] 请求Id[cbd2268781b245399b7b7371af6f893c] [http-nio-9001-exec-8] ==> [TxId: , SpanId: ] <== Total: 1 -[INFO ] [2020-09-27 20:47:33] 请求Id[cbd2268781b245399b7b7371af6f893c] [http-nio-9001-exec-8] ==> [TxId: , SpanId: ] 请求完成, app=, url=/studentClass/listNotInClassStudent,elapse=26ms, respData={"data":{"dataList":[{"birthday":1276099200000,"cityId":120100000000,"cityIdDictMap":{"name":"市辖区","id":120100000000},"districtId":120103000000,"districtIdDictMap":{"name":"河西区","id":120103000000},"experienceLevel":0,"experienceLevelDictMap":{"name":"初级学员","id":0},"gender":1,"genderDictMap":{"name":"男","id":1},"gradeId":3,"gradeIdDictMap":{"name":"三年级","id":3},"leftCoin":634,"loginMobile":"13700023451","provinceId":120000000000,"provinceIdDictMap":{"name":"天津市","id":120000000000},"registerTime":1601136000000,"schoolId":1015818056597508096,"schoolIdDictMap":{"name":"天津校区","id":1015818056597508096},"status":0,"statusDictMap":{"name":"正常","id":0},"studentId":1018000939508568064,"studentName":"天津二哥","totalCoin":1287},{"birthday":1247760000000,"cityId":120100000000,"cityIdDictMap":{"name":"市辖区","id":120100000000},"districtId":120104000000,"districtIdDictMap":{"name":"南开区","id":120104000000},"experienceLevel":2,"experienceLevelDictMap":{"name":"高级学员","id":2},"gender":0,"genderDictMap":{"name":"女","id":0},"gradeId":4,"gradeIdDictMap":{"name":"四年级","id":4},"leftCoin":7023,"loginMobile":"13903122987","provinceId":120000000000,"provinceIdDictMap":{"name":"天津市","id":120000000000},"registerTime":1601136000000,"schoolId":1015818056597508096,"schoolIdDictMap":{"name":"天津校区","id":1015818056597508096},"status":0,"statusDictMap":{"name":"正常","id":0},"studentId":1018001219050541056,"studentName":"南开学霸","totalCoin":8721}],"totalCount":2},"errorCode":"NO-ERROR","errorMessage":"NO-MESSAGE","success":true} -[INFO ] [2020-09-27 20:47:35] 请求Id[f56e8dd535d943d8842e9094c0d33f49] [http-nio-9001-exec-9] ==> [TxId: , SpanId: ] 开始请求,app=, url=/studentClass/listClassStudent, reqData=[1016971499387228160,null,null,{"pageNum":1,"pageSize":10}] -[DEBUG] [2020-09-27 20:47:35] 请求Id[f56e8dd535d943d8842e9094c0d33f49] [http-nio-9001-exec-9] ==> [TxId: , SpanId: ] ==> Preparing: SELECT class_id,class_name,school_id,leader_id,finish_class_hour,class_level,create_user_id,create_time,status FROM zz_class WHERE ( ( class_id = ? and status = ? ) ) -[DEBUG] [2020-09-27 20:47:35] 请求Id[f56e8dd535d943d8842e9094c0d33f49] [http-nio-9001-exec-9] ==> [TxId: , SpanId: ] ==> Parameters: 1016971499387228160(Long), 1(Integer) -[DEBUG] [2020-09-27 20:47:35] 请求Id[f56e8dd535d943d8842e9094c0d33f49] [http-nio-9001-exec-9] ==> [TxId: , SpanId: ] <== Total: 1 -[DEBUG] [2020-09-27 20:47:35] 请求Id[f56e8dd535d943d8842e9094c0d33f49] [http-nio-9001-exec-9] ==> [TxId: , SpanId: ] ==> Preparing: SELECT count(0) FROM zz_student, zz_class_student WHERE zz_class_student.class_id = ? AND zz_class_student.student_id = zz_student.student_id -[DEBUG] [2020-09-27 20:47:35] 请求Id[f56e8dd535d943d8842e9094c0d33f49] [http-nio-9001-exec-9] ==> [TxId: , SpanId: ] ==> Parameters: 1016971499387228160(Long) -[DEBUG] [2020-09-27 20:47:35] 请求Id[f56e8dd535d943d8842e9094c0d33f49] [http-nio-9001-exec-9] ==> [TxId: , SpanId: ] <== Total: 1 -[DEBUG] [2020-09-27 20:47:35] 请求Id[f56e8dd535d943d8842e9094c0d33f49] [http-nio-9001-exec-9] ==> [TxId: , SpanId: ] ==> Preparing: SELECT zz_student.* FROM zz_student, zz_class_student WHERE zz_class_student.class_id = ? AND zz_class_student.student_id = zz_student.student_id LIMIT ? -[DEBUG] [2020-09-27 20:47:35] 请求Id[f56e8dd535d943d8842e9094c0d33f49] [http-nio-9001-exec-9] ==> [TxId: , SpanId: ] ==> Parameters: 1016971499387228160(Long), 10(Integer) -[DEBUG] [2020-09-27 20:47:35] 请求Id[f56e8dd535d943d8842e9094c0d33f49] [http-nio-9001-exec-9] ==> [TxId: , SpanId: ] <== Total: 3 -[DEBUG] [2020-09-27 20:47:35] 请求Id[f56e8dd535d943d8842e9094c0d33f49] [http-nio-9001-exec-9] ==> [TxId: , SpanId: ] ==> Preparing: SELECT school_id,school_name,province_id,city_id FROM zz_school_info WHERE ( ( school_id in ( ? ) ) ) -[DEBUG] [2020-09-27 20:47:35] 请求Id[f56e8dd535d943d8842e9094c0d33f49] [http-nio-9001-exec-9] ==> [TxId: , SpanId: ] ==> Parameters: 1015817732197453824(Long) -[DEBUG] [2020-09-27 20:47:35] 请求Id[f56e8dd535d943d8842e9094c0d33f49] [http-nio-9001-exec-9] ==> [TxId: , SpanId: ] <== Total: 1 -[INFO ] [2020-09-27 20:47:35] 请求Id[f56e8dd535d943d8842e9094c0d33f49] [http-nio-9001-exec-9] ==> [TxId: , SpanId: ] 请求完成, app=, url=/studentClass/listClassStudent,elapse=22ms, respData={"data":{"dataList":[{"birthday":1282147200000,"cityId":110100000000,"cityIdDictMap":{"name":"市辖区","id":110100000000},"districtId":110105000000,"districtIdDictMap":{"name":"朝阳区","id":110105000000},"experienceLevel":1,"experienceLevelDictMap":{"name":"中级学员","id":1},"gender":1,"genderDictMap":{"name":"男","id":1},"gradeId":4,"gradeIdDictMap":{"name":"四年级","id":4},"leftCoin":1077,"loginMobile":"13834561230","provinceId":110000000000,"provinceIdDictMap":{"name":"北京市","id":110000000000},"registerTime":1601136000000,"schoolId":1015817732197453824,"schoolIdDictMap":{"name":"北京校区","id":1015817732197453824},"status":0,"statusDictMap":{"name":"正常","id":0},"studentId":1015842628948463616,"studentName":"张三","totalCoin":3412},{"birthday":1321545600000,"cityId":110100000000,"cityIdDictMap":{"name":"市辖区","id":110100000000},"districtId":110107000000,"districtIdDictMap":{"name":"石景山区","id":110107000000},"experienceLevel":1,"experienceLevelDictMap":{"name":"中级学员","id":1},"gender":1,"genderDictMap":{"name":"男","id":1},"gradeId":3,"gradeIdDictMap":{"name":"三年级","id":3},"leftCoin":3024,"loginMobile":"13945651267","provinceId":110000000000,"provinceIdDictMap":{"name":"北京市","id":110000000000},"registerTime":1601136000000,"schoolId":1015817732197453824,"schoolIdDictMap":{"name":"北京校区","id":1015817732197453824},"status":0,"statusDictMap":{"name":"正常","id":0},"studentId":1015852480873631744,"studentName":"李军","totalCoin":3178},{"birthday":1421251200000,"cityId":110100000000,"cityIdDictMap":{"name":"市辖区","id":110100000000},"districtId":110108000000,"districtIdDictMap":{"name":"海淀区","id":110108000000},"experienceLevel":0,"experienceLevelDictMap":{"name":"初级学员","id":0},"gender":1,"genderDictMap":{"name":"男","id":1},"gradeId":1,"gradeIdDictMap":{"name":"一年级","id":1},"leftCoin":2199,"loginMobile":"13709481736","provinceId":110000000000,"provinceIdDictMap":{"name":"北京市","id":110000000000},"registerTime":1601136000000,"schoolId":1015817732197453824,"schoolIdDictMap":{"name":"北京校区","id":1015817732197453824},"status":0,"statusDictMap":{"name":"正常","id":0},"studentId":1015852853839532032,"studentName":"王石","totalCoin":3187}],"totalCount":3},"errorCode":"NO-ERROR","errorMessage":"NO-MESSAGE","success":true} -[INFO ] [2020-09-27 20:47:37] 请求Id[a901f51c155e4230954b91382ca0fab8] [http-nio-9001-exec-10] ==> [TxId: , SpanId: ] 开始请求,app=, url=/studentClass/deleteClassStudent, reqData=[1016971499387228160,1015852853839532032] -[DEBUG] [2020-09-27 20:47:37] 请求Id[a901f51c155e4230954b91382ca0fab8] [http-nio-9001-exec-10] ==> [TxId: , SpanId: ] ==> Preparing: DELETE FROM zz_class_student WHERE class_id = ? AND student_id = ? -[DEBUG] [2020-09-27 20:47:37] 请求Id[a901f51c155e4230954b91382ca0fab8] [http-nio-9001-exec-10] ==> [TxId: , SpanId: ] ==> Parameters: 1016971499387228160(Long), 1015852853839532032(Long) -[DEBUG] [2020-09-27 20:47:37] 请求Id[a901f51c155e4230954b91382ca0fab8] [http-nio-9001-exec-10] ==> [TxId: , SpanId: ] <== Updates: 1 -[INFO ] [2020-09-27 20:47:37] 请求Id[a901f51c155e4230954b91382ca0fab8] [http-nio-9001-exec-10] ==> [TxId: , SpanId: ] 请求完成, app=, url=/studentClass/deleteClassStudent,elapse=5ms, respData={"errorCode":"NO-ERROR","errorMessage":"NO-MESSAGE","success":true} -[INFO ] [2020-09-27 20:47:37] 请求Id[4f9e887130c143b881552c90c2cf933a] [http-nio-9001-exec-1] ==> [TxId: , SpanId: ] 开始请求,app=, url=/studentClass/listClassStudent, reqData=[1016971499387228160,null,null,{"pageNum":1,"pageSize":10}] -[DEBUG] [2020-09-27 20:47:37] 请求Id[4f9e887130c143b881552c90c2cf933a] [http-nio-9001-exec-1] ==> [TxId: , SpanId: ] ==> Preparing: SELECT class_id,class_name,school_id,leader_id,finish_class_hour,class_level,create_user_id,create_time,status FROM zz_class WHERE ( ( class_id = ? and status = ? ) ) -[DEBUG] [2020-09-27 20:47:37] 请求Id[4f9e887130c143b881552c90c2cf933a] [http-nio-9001-exec-1] ==> [TxId: , SpanId: ] ==> Parameters: 1016971499387228160(Long), 1(Integer) -[DEBUG] [2020-09-27 20:47:37] 请求Id[4f9e887130c143b881552c90c2cf933a] [http-nio-9001-exec-1] ==> [TxId: , SpanId: ] <== Total: 1 -[DEBUG] [2020-09-27 20:47:37] 请求Id[4f9e887130c143b881552c90c2cf933a] [http-nio-9001-exec-1] ==> [TxId: , SpanId: ] ==> Preparing: SELECT count(0) FROM zz_student, zz_class_student WHERE zz_class_student.class_id = ? AND zz_class_student.student_id = zz_student.student_id -[DEBUG] [2020-09-27 20:47:37] 请求Id[4f9e887130c143b881552c90c2cf933a] [http-nio-9001-exec-1] ==> [TxId: , SpanId: ] ==> Parameters: 1016971499387228160(Long) -[DEBUG] [2020-09-27 20:47:37] 请求Id[4f9e887130c143b881552c90c2cf933a] [http-nio-9001-exec-1] ==> [TxId: , SpanId: ] <== Total: 1 -[DEBUG] [2020-09-27 20:47:37] 请求Id[4f9e887130c143b881552c90c2cf933a] [http-nio-9001-exec-1] ==> [TxId: , SpanId: ] ==> Preparing: SELECT zz_student.* FROM zz_student, zz_class_student WHERE zz_class_student.class_id = ? AND zz_class_student.student_id = zz_student.student_id LIMIT ? -[DEBUG] [2020-09-27 20:47:37] 请求Id[4f9e887130c143b881552c90c2cf933a] [http-nio-9001-exec-1] ==> [TxId: , SpanId: ] ==> Parameters: 1016971499387228160(Long), 10(Integer) -[DEBUG] [2020-09-27 20:47:37] 请求Id[4f9e887130c143b881552c90c2cf933a] [http-nio-9001-exec-1] ==> [TxId: , SpanId: ] <== Total: 2 -[DEBUG] [2020-09-27 20:47:37] 请求Id[4f9e887130c143b881552c90c2cf933a] [http-nio-9001-exec-1] ==> [TxId: , SpanId: ] ==> Preparing: SELECT school_id,school_name,province_id,city_id FROM zz_school_info WHERE ( ( school_id in ( ? ) ) ) -[DEBUG] [2020-09-27 20:47:37] 请求Id[4f9e887130c143b881552c90c2cf933a] [http-nio-9001-exec-1] ==> [TxId: , SpanId: ] ==> Parameters: 1015817732197453824(Long) -[DEBUG] [2020-09-27 20:47:37] 请求Id[4f9e887130c143b881552c90c2cf933a] [http-nio-9001-exec-1] ==> [TxId: , SpanId: ] <== Total: 1 -[INFO ] [2020-09-27 20:47:37] 请求Id[4f9e887130c143b881552c90c2cf933a] [http-nio-9001-exec-1] ==> [TxId: , SpanId: ] 请求完成, app=, url=/studentClass/listClassStudent,elapse=20ms, respData={"data":{"dataList":[{"birthday":1282147200000,"cityId":110100000000,"cityIdDictMap":{"name":"市辖区","id":110100000000},"districtId":110105000000,"districtIdDictMap":{"name":"朝阳区","id":110105000000},"experienceLevel":1,"experienceLevelDictMap":{"name":"中级学员","id":1},"gender":1,"genderDictMap":{"name":"男","id":1},"gradeId":4,"gradeIdDictMap":{"name":"四年级","id":4},"leftCoin":1077,"loginMobile":"13834561230","provinceId":110000000000,"provinceIdDictMap":{"name":"北京市","id":110000000000},"registerTime":1601136000000,"schoolId":1015817732197453824,"schoolIdDictMap":{"name":"北京校区","id":1015817732197453824},"status":0,"statusDictMap":{"name":"正常","id":0},"studentId":1015842628948463616,"studentName":"张三","totalCoin":3412},{"birthday":1321545600000,"cityId":110100000000,"cityIdDictMap":{"name":"市辖区","id":110100000000},"districtId":110107000000,"districtIdDictMap":{"name":"石景山区","id":110107000000},"experienceLevel":1,"experienceLevelDictMap":{"name":"中级学员","id":1},"gender":1,"genderDictMap":{"name":"男","id":1},"gradeId":3,"gradeIdDictMap":{"name":"三年级","id":3},"leftCoin":3024,"loginMobile":"13945651267","provinceId":110000000000,"provinceIdDictMap":{"name":"北京市","id":110000000000},"registerTime":1601136000000,"schoolId":1015817732197453824,"schoolIdDictMap":{"name":"北京校区","id":1015817732197453824},"status":0,"statusDictMap":{"name":"正常","id":0},"studentId":1015852480873631744,"studentName":"李军","totalCoin":3178}],"totalCount":2},"errorCode":"NO-ERROR","errorMessage":"NO-MESSAGE","success":true} -[INFO ] [2020-09-27 20:47:39] 请求Id[4f1d9908c5f04e94bd4c1376c9b5ca2b] [http-nio-9001-exec-2] ==> [TxId: , SpanId: ] 开始请求,app=, url=/studentClass/list, reqData=[{},[{"asc":true,"fieldName":"createTime"}],{"pageNum":1,"pageSize":10}] -[DEBUG] [2020-09-27 20:47:39] 请求Id[4f1d9908c5f04e94bd4c1376c9b5ca2b] [http-nio-9001-exec-2] ==> [TxId: , SpanId: ] ==> Preparing: SELECT count(0) FROM zz_class WHERE zz_class.status = 1 -[DEBUG] [2020-09-27 20:47:39] 请求Id[4f1d9908c5f04e94bd4c1376c9b5ca2b] [http-nio-9001-exec-2] ==> [TxId: , SpanId: ] ==> Parameters: -[DEBUG] [2020-09-27 20:47:39] 请求Id[4f1d9908c5f04e94bd4c1376c9b5ca2b] [http-nio-9001-exec-2] ==> [TxId: , SpanId: ] <== Total: 1 -[DEBUG] [2020-09-27 20:47:39] 请求Id[4f1d9908c5f04e94bd4c1376c9b5ca2b] [http-nio-9001-exec-2] ==> [TxId: , SpanId: ] ==> Preparing: SELECT * FROM zz_class WHERE zz_class.status = 1 ORDER BY zz_class.create_time LIMIT ? -[DEBUG] [2020-09-27 20:47:39] 请求Id[4f1d9908c5f04e94bd4c1376c9b5ca2b] [http-nio-9001-exec-2] ==> [TxId: , SpanId: ] ==> Parameters: 10(Integer) -[DEBUG] [2020-09-27 20:47:39] 请求Id[4f1d9908c5f04e94bd4c1376c9b5ca2b] [http-nio-9001-exec-2] ==> [TxId: , SpanId: ] <== Total: 10 -[DEBUG] [2020-09-27 20:47:39] 请求Id[4f1d9908c5f04e94bd4c1376c9b5ca2b] [http-nio-9001-exec-2] ==> [TxId: , SpanId: ] ==> Preparing: SELECT school_id,school_name,province_id,city_id FROM zz_school_info WHERE ( ( school_id in ( ? , ? ) ) ) -[DEBUG] [2020-09-27 20:47:39] 请求Id[4f1d9908c5f04e94bd4c1376c9b5ca2b] [http-nio-9001-exec-2] ==> [TxId: , SpanId: ] ==> Parameters: 1015818056597508096(Long), 1015817732197453824(Long) -[DEBUG] [2020-09-27 20:47:39] 请求Id[4f1d9908c5f04e94bd4c1376c9b5ca2b] [http-nio-9001-exec-2] ==> [TxId: , SpanId: ] <== Total: 2 -[DEBUG] [2020-09-27 20:47:39] 请求Id[4f1d9908c5f04e94bd4c1376c9b5ca2b] [http-nio-9001-exec-2] ==> [TxId: , SpanId: ] ==> Preparing: SELECT 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 FROM zz_student WHERE ( ( student_id in ( ? , ? , ? , ? , ? ) ) ) -[DEBUG] [2020-09-27 20:47:39] 请求Id[4f1d9908c5f04e94bd4c1376c9b5ca2b] [http-nio-9001-exec-2] ==> [TxId: , SpanId: ] ==> Parameters: 1015852480873631744(Long), 1015842628948463616(Long), 1018000939508568064(Long), 1018001219050541056(Long), 1015852853839532032(Long) -[DEBUG] [2020-09-27 20:47:39] 请求Id[4f1d9908c5f04e94bd4c1376c9b5ca2b] [http-nio-9001-exec-2] ==> [TxId: , SpanId: ] <== Total: 5 -[INFO ] [2020-09-27 20:47:39] 请求Id[4f1d9908c5f04e94bd4c1376c9b5ca2b] [http-nio-9001-exec-2] ==> [TxId: , SpanId: ] 请求完成, app=, url=/studentClass/list,elapse=12ms, respData={"data":{"dataList":[{"classId":1016971499387228160,"classLevel":0,"classLevelDictMap":{"name":"初级班","id":0},"className":"小学一年级随堂班","createTime":1601136000000,"createUserId":1093809448606765057,"finishClassHour":15,"leaderId":1015842628948463616,"leaderIdDictMap":{"name":"张三","id":1015842628948463616},"schoolId":1015817732197453824,"schoolIdDictMap":{"name":"北京校区","id":1015817732197453824}},{"classId":1016971692685922304,"classLevel":0,"classLevelDictMap":{"name":"初级班","id":0},"className":"小学二年级随堂班","createTime":1601136000000,"createUserId":1093809448606765057,"finishClassHour":20,"leaderId":1018000939508568064,"leaderIdDictMap":{"name":"天津二哥","id":1018000939508568064},"schoolId":1015818056597508096,"schoolIdDictMap":{"name":"天津校区","id":1015818056597508096}},{"classId":1016971755373989888,"classLevel":0,"classLevelDictMap":{"name":"初级班","id":0},"className":"小学三年级随堂班","createTime":1601136000000,"createUserId":1093809448606765057,"finishClassHour":100,"leaderId":1015842628948463616,"leaderIdDictMap":{"name":"张三","id":1015842628948463616},"schoolId":1015817732197453824,"schoolIdDictMap":{"name":"北京校区","id":1015817732197453824}},{"classId":1016971816040402944,"classLevel":0,"classLevelDictMap":{"name":"初级班","id":0},"className":"小学四年级随堂班","createTime":1601136000000,"createUserId":1093809448606765057,"finishClassHour":0,"leaderId":1015852853839532032,"leaderIdDictMap":{"name":"王石","id":1015852853839532032},"schoolId":1015817732197453824,"schoolIdDictMap":{"name":"北京校区","id":1015817732197453824}},{"classId":1016971872105664512,"classLevel":0,"classLevelDictMap":{"name":"初级班","id":0},"className":"小学五年级随堂班","createTime":1601136000000,"createUserId":1093809448606765057,"finishClassHour":0,"leaderId":1018001219050541056,"leaderIdDictMap":{"name":"南开学霸","id":1018001219050541056},"schoolId":1015818056597508096,"schoolIdDictMap":{"name":"天津校区","id":1015818056597508096}},{"classId":1016971931153076224,"classLevel":0,"classLevelDictMap":{"name":"初级班","id":0},"className":"小学六年级随堂班","createTime":1601136000000,"createUserId":1093809448606765057,"finishClassHour":0,"leaderId":1015852480873631744,"leaderIdDictMap":{"name":"李军","id":1015852480873631744},"schoolId":1015817732197453824,"schoolIdDictMap":{"name":"北京校区","id":1015817732197453824}},{"classId":1016972016347779072,"classLevel":1,"classLevelDictMap":{"name":"中级班","id":1},"className":"小学一年级提高班","createTime":1601136000000,"createUserId":1093809448606765057,"finishClassHour":0,"leaderId":1015842628948463616,"leaderIdDictMap":{"name":"张三","id":1015842628948463616},"schoolId":1015817732197453824,"schoolIdDictMap":{"name":"北京校区","id":1015817732197453824}},{"classId":1016972071955861504,"classLevel":1,"classLevelDictMap":{"name":"中级班","id":1},"className":"小学二年级提高班","createTime":1601136000000,"createUserId":1093809448606765057,"finishClassHour":0,"leaderId":1015852480873631744,"leaderIdDictMap":{"name":"李军","id":1015852480873631744},"schoolId":1015817732197453824,"schoolIdDictMap":{"name":"北京校区","id":1015817732197453824}},{"classId":1016972128667045888,"classLevel":1,"classLevelDictMap":{"name":"中级班","id":1},"className":"小学三年级提高班","createTime":1601136000000,"createUserId":1093809448606765057,"finishClassHour":0,"leaderId":1018001219050541056,"leaderIdDictMap":{"name":"南开学霸","id":1018001219050541056},"schoolId":1015818056597508096,"schoolIdDictMap":{"name":"天津校区","id":1015818056597508096}},{"classId":1016972187949338624,"classLevel":1,"classLevelDictMap":{"name":"中级班","id":1},"className":"小学四年级提高班","createTime":1601136000000,"createUserId":1093809448606765057,"finishClassHour":0,"leaderId":1015852480873631744,"leaderIdDictMap":{"name":"李军","id":1015852480873631744},"schoolId":1015817732197453824,"schoolIdDictMap":{"name":"北京校区","id":1015817732197453824}}],"totalCount":15},"errorCode":"NO-ERROR","errorMessage":"NO-MESSAGE","success":true} -[INFO ] [2020-09-27 20:47:42] 请求Id[d2e7a85fe6814b8eb125ac729c4d1ae8] [http-nio-9001-exec-3] ==> [TxId: , SpanId: ] 开始请求,app=, url=/studentClass/listClassCourse, reqData=[1016971499387228160,null,null,{"pageNum":1,"pageSize":10}] -[DEBUG] [2020-09-27 20:47:42] 请求Id[d2e7a85fe6814b8eb125ac729c4d1ae8] [http-nio-9001-exec-3] ==> [TxId: , SpanId: ] ==> Preparing: SELECT class_id,class_name,school_id,leader_id,finish_class_hour,class_level,create_user_id,create_time,status FROM zz_class WHERE ( ( class_id = ? and status = ? ) ) -[DEBUG] [2020-09-27 20:47:42] 请求Id[d2e7a85fe6814b8eb125ac729c4d1ae8] [http-nio-9001-exec-3] ==> [TxId: , SpanId: ] ==> Parameters: 1016971499387228160(Long), 1(Integer) -[DEBUG] [2020-09-27 20:47:42] 请求Id[d2e7a85fe6814b8eb125ac729c4d1ae8] [http-nio-9001-exec-3] ==> [TxId: , SpanId: ] <== Total: 1 -[DEBUG] [2020-09-27 20:47:42] 请求Id[d2e7a85fe6814b8eb125ac729c4d1ae8] [http-nio-9001-exec-3] ==> [TxId: , SpanId: ] ==> Preparing: SELECT count(0) FROM zz_course, zz_class_course WHERE zz_class_course.class_id = ? AND zz_class_course.course_id = zz_course.course_id -[DEBUG] [2020-09-27 20:47:42] 请求Id[d2e7a85fe6814b8eb125ac729c4d1ae8] [http-nio-9001-exec-3] ==> [TxId: , SpanId: ] ==> Parameters: 1016971499387228160(Long) -[DEBUG] [2020-09-27 20:47:42] 请求Id[d2e7a85fe6814b8eb125ac729c4d1ae8] [http-nio-9001-exec-3] ==> [TxId: , SpanId: ] <== Total: 1 -[DEBUG] [2020-09-27 20:47:42] 请求Id[d2e7a85fe6814b8eb125ac729c4d1ae8] [http-nio-9001-exec-3] ==> [TxId: , SpanId: ] ==> Preparing: SELECT zz_course.* FROM zz_course, zz_class_course WHERE zz_class_course.class_id = ? AND zz_class_course.course_id = zz_course.course_id LIMIT ? -[DEBUG] [2020-09-27 20:47:42] 请求Id[d2e7a85fe6814b8eb125ac729c4d1ae8] [http-nio-9001-exec-3] ==> [TxId: , SpanId: ] ==> Parameters: 1016971499387228160(Long), 10(Integer) -[DEBUG] [2020-09-27 20:47:42] 请求Id[d2e7a85fe6814b8eb125ac729c4d1ae8] [http-nio-9001-exec-3] ==> [TxId: , SpanId: ] <== Total: 4 -[INFO ] [2020-09-27 20:47:42] 请求Id[d2e7a85fe6814b8eb125ac729c4d1ae8] [http-nio-9001-exec-3] ==> [TxId: , SpanId: ] 请求完成, app=, url=/studentClass/listClassCourse,elapse=29ms, respData={"data":{"dataList":[{"classHour":10,"courseId":1016699195411402752,"courseName":"小学一年级拼音基础练习","createTime":1601136000000,"createUserId":1093809448606765057,"description":"小学一年级拼音基础练习","difficulty":0,"difficultyDictMap":{"name":"容易","id":0},"gradeId":1,"gradeIdDictMap":{"name":"一年级","id":1},"pictureUrl":"[{\"name\":\"IMG_0003.JPG\",\"downloadUri\":\"/admin/coursepaper/course/download\",\"filename\":\"b09ef09478d8452d908600ff98b6f1ce.JPG\"}]","price":299.00,"subjectId":0,"subjectIdDictMap":{"name":"语文","id":0},"updateTime":1601136000000},{"classHour":25,"courseId":1016917385529790464,"courseName":"小学二年级语文课程","createTime":1601136000000,"createUserId":1093809448606765057,"description":"小学二年级课程","difficulty":1,"difficultyDictMap":{"name":"普通","id":1},"gradeId":2,"gradeIdDictMap":{"name":"二年级","id":2},"pictureUrl":"[{\"name\":\"IMG_0455.JPG\",\"downloadUri\":\"/admin/coursepaper/course/download\",\"filename\":\"79651a658e88408888f847366fbf98d0.JPG\"}]","price":980.00,"subjectId":0,"subjectIdDictMap":{"name":"语文","id":0},"updateTime":1601136000000},{"classHour":15,"courseId":1016920878164480000,"courseName":"小学数学一年级课程","createTime":1601136000000,"createUserId":1093809448606765057,"description":"小学数学一年级课程","difficulty":0,"difficultyDictMap":{"name":"容易","id":0},"gradeId":1,"gradeIdDictMap":{"name":"一年级","id":1},"pictureUrl":"[{\"name\":\"IMG_0010.JPG\",\"downloadUri\":\"/admin/coursepaper/course/download\",\"filename\":\"7e9583aba9594a98b1e0268837d2a5d0.JPG\"}]","price":388.00,"subjectId":1,"subjectIdDictMap":{"name":"数学","id":1},"updateTime":1601136000000},{"classHour":15,"courseId":1016923276064854016,"courseName":"小学英语一年级课程","createTime":1601136000000,"createUserId":1093809448606765057,"description":"小学英语一年级课程","difficulty":0,"difficultyDictMap":{"name":"容易","id":0},"gradeId":1,"gradeIdDictMap":{"name":"一年级","id":1},"pictureUrl":"[{\"name\":\"english.jpg\",\"downloadUri\":\"/admin/app/course/download\",\"filename\":\"44177c3674f543fda24222b8297ef203.jpg\"}]","price":399.00,"subjectId":2,"subjectIdDictMap":{"name":"英语","id":2},"updateTime":1601136000000}],"totalCount":4},"errorCode":"NO-ERROR","errorMessage":"NO-MESSAGE","success":true} -[INFO ] [2020-09-27 20:47:43] 请求Id[42d7098510944c1f84aa5739c2596947] [http-nio-9001-exec-4] ==> [TxId: , SpanId: ] 开始请求,app=, url=/studentClass/viewClassCourse, reqData=[1016971499387228160,1016699195411402752] -[DEBUG] [2020-09-27 20:47:43] 请求Id[42d7098510944c1f84aa5739c2596947] [http-nio-9001-exec-4] ==> [TxId: , SpanId: ] ==> Preparing: SELECT class_id,course_id,course_order FROM zz_class_course WHERE ( ( class_id = ? and course_id = ? ) ) -[DEBUG] [2020-09-27 20:47:43] 请求Id[42d7098510944c1f84aa5739c2596947] [http-nio-9001-exec-4] ==> [TxId: , SpanId: ] ==> Parameters: 1016971499387228160(Long), 1016699195411402752(Long) -[DEBUG] [2020-09-27 20:47:43] 请求Id[42d7098510944c1f84aa5739c2596947] [http-nio-9001-exec-4] ==> [TxId: , SpanId: ] <== Total: 1 -[INFO ] [2020-09-27 20:47:43] 请求Id[42d7098510944c1f84aa5739c2596947] [http-nio-9001-exec-4] ==> [TxId: , SpanId: ] 请求完成, app=, url=/studentClass/viewClassCourse,elapse=6ms, respData={"data":{"classId":1016971499387228160,"courseId":1016699195411402752,"courseOrder":1},"errorCode":"NO-ERROR","errorMessage":"NO-MESSAGE","success":true} -[INFO ] [2020-09-27 20:47:45] 请求Id[2b7c9e6779354513b58d3f6598441236] [http-nio-9001-exec-5] ==> [TxId: , SpanId: ] 开始请求,app=, url=/studentClass/updateClassCourse, reqData=[{"classId":1016971499387228160,"courseId":1016699195411402752,"courseOrder":12}] -[DEBUG] [2020-09-27 20:47:45] 请求Id[2b7c9e6779354513b58d3f6598441236] [http-nio-9001-exec-5] ==> [TxId: , SpanId: ] ==> Preparing: UPDATE zz_class_course SET course_order = ? WHERE ( ( class_id = ? and course_id = ? ) ) -[DEBUG] [2020-09-27 20:47:45] 请求Id[2b7c9e6779354513b58d3f6598441236] [http-nio-9001-exec-5] ==> [TxId: , SpanId: ] ==> Parameters: 12(Integer), 1016971499387228160(Long), 1016699195411402752(Long) -[DEBUG] [2020-09-27 20:47:45] 请求Id[2b7c9e6779354513b58d3f6598441236] [http-nio-9001-exec-5] ==> [TxId: , SpanId: ] <== Updates: 1 -[INFO ] [2020-09-27 20:47:45] 请求Id[2b7c9e6779354513b58d3f6598441236] [http-nio-9001-exec-5] ==> [TxId: , SpanId: ] 请求完成, app=, url=/studentClass/updateClassCourse,elapse=8ms, respData={"errorCode":"NO-ERROR","errorMessage":"NO-MESSAGE","success":true} -[INFO ] [2020-09-27 20:47:45] 请求Id[dd1924123271496c811557963f46d4a6] [http-nio-9001-exec-6] ==> [TxId: , SpanId: ] 开始请求,app=, url=/studentClass/listClassCourse, reqData=[1016971499387228160,null,null,{"pageNum":1,"pageSize":10}] -[DEBUG] [2020-09-27 20:47:45] 请求Id[dd1924123271496c811557963f46d4a6] [http-nio-9001-exec-6] ==> [TxId: , SpanId: ] ==> Preparing: SELECT class_id,class_name,school_id,leader_id,finish_class_hour,class_level,create_user_id,create_time,status FROM zz_class WHERE ( ( class_id = ? and status = ? ) ) -[DEBUG] [2020-09-27 20:47:45] 请求Id[dd1924123271496c811557963f46d4a6] [http-nio-9001-exec-6] ==> [TxId: , SpanId: ] ==> Parameters: 1016971499387228160(Long), 1(Integer) -[DEBUG] [2020-09-27 20:47:45] 请求Id[dd1924123271496c811557963f46d4a6] [http-nio-9001-exec-6] ==> [TxId: , SpanId: ] <== Total: 1 -[DEBUG] [2020-09-27 20:47:45] 请求Id[dd1924123271496c811557963f46d4a6] [http-nio-9001-exec-6] ==> [TxId: , SpanId: ] ==> Preparing: SELECT count(0) FROM zz_course, zz_class_course WHERE zz_class_course.class_id = ? AND zz_class_course.course_id = zz_course.course_id -[DEBUG] [2020-09-27 20:47:45] 请求Id[dd1924123271496c811557963f46d4a6] [http-nio-9001-exec-6] ==> [TxId: , SpanId: ] ==> Parameters: 1016971499387228160(Long) -[DEBUG] [2020-09-27 20:47:45] 请求Id[dd1924123271496c811557963f46d4a6] [http-nio-9001-exec-6] ==> [TxId: , SpanId: ] <== Total: 1 -[DEBUG] [2020-09-27 20:47:45] 请求Id[dd1924123271496c811557963f46d4a6] [http-nio-9001-exec-6] ==> [TxId: , SpanId: ] ==> Preparing: SELECT zz_course.* FROM zz_course, zz_class_course WHERE zz_class_course.class_id = ? AND zz_class_course.course_id = zz_course.course_id LIMIT ? -[DEBUG] [2020-09-27 20:47:45] 请求Id[dd1924123271496c811557963f46d4a6] [http-nio-9001-exec-6] ==> [TxId: , SpanId: ] ==> Parameters: 1016971499387228160(Long), 10(Integer) -[DEBUG] [2020-09-27 20:47:45] 请求Id[dd1924123271496c811557963f46d4a6] [http-nio-9001-exec-6] ==> [TxId: , SpanId: ] <== Total: 4 -[INFO ] [2020-09-27 20:47:45] 请求Id[dd1924123271496c811557963f46d4a6] [http-nio-9001-exec-6] ==> [TxId: , SpanId: ] 请求完成, app=, url=/studentClass/listClassCourse,elapse=16ms, respData={"data":{"dataList":[{"classHour":10,"courseId":1016699195411402752,"courseName":"小学一年级拼音基础练习","createTime":1601136000000,"createUserId":1093809448606765057,"description":"小学一年级拼音基础练习","difficulty":0,"difficultyDictMap":{"name":"容易","id":0},"gradeId":1,"gradeIdDictMap":{"name":"一年级","id":1},"pictureUrl":"[{\"name\":\"IMG_0003.JPG\",\"downloadUri\":\"/admin/coursepaper/course/download\",\"filename\":\"b09ef09478d8452d908600ff98b6f1ce.JPG\"}]","price":299.00,"subjectId":0,"subjectIdDictMap":{"name":"语文","id":0},"updateTime":1601136000000},{"classHour":25,"courseId":1016917385529790464,"courseName":"小学二年级语文课程","createTime":1601136000000,"createUserId":1093809448606765057,"description":"小学二年级课程","difficulty":1,"difficultyDictMap":{"name":"普通","id":1},"gradeId":2,"gradeIdDictMap":{"name":"二年级","id":2},"pictureUrl":"[{\"name\":\"IMG_0455.JPG\",\"downloadUri\":\"/admin/coursepaper/course/download\",\"filename\":\"79651a658e88408888f847366fbf98d0.JPG\"}]","price":980.00,"subjectId":0,"subjectIdDictMap":{"name":"语文","id":0},"updateTime":1601136000000},{"classHour":15,"courseId":1016920878164480000,"courseName":"小学数学一年级课程","createTime":1601136000000,"createUserId":1093809448606765057,"description":"小学数学一年级课程","difficulty":0,"difficultyDictMap":{"name":"容易","id":0},"gradeId":1,"gradeIdDictMap":{"name":"一年级","id":1},"pictureUrl":"[{\"name\":\"IMG_0010.JPG\",\"downloadUri\":\"/admin/coursepaper/course/download\",\"filename\":\"7e9583aba9594a98b1e0268837d2a5d0.JPG\"}]","price":388.00,"subjectId":1,"subjectIdDictMap":{"name":"数学","id":1},"updateTime":1601136000000},{"classHour":15,"courseId":1016923276064854016,"courseName":"小学英语一年级课程","createTime":1601136000000,"createUserId":1093809448606765057,"description":"小学英语一年级课程","difficulty":0,"difficultyDictMap":{"name":"容易","id":0},"gradeId":1,"gradeIdDictMap":{"name":"一年级","id":1},"pictureUrl":"[{\"name\":\"english.jpg\",\"downloadUri\":\"/admin/app/course/download\",\"filename\":\"44177c3674f543fda24222b8297ef203.jpg\"}]","price":399.00,"subjectId":2,"subjectIdDictMap":{"name":"英语","id":2},"updateTime":1601136000000}],"totalCount":4},"errorCode":"NO-ERROR","errorMessage":"NO-MESSAGE","success":true} -[INFO ] [2020-09-27 20:47:46] 请求Id[3522fe56037e4f92adadfe5f9c01c6bb] [http-nio-9001-exec-7] ==> [TxId: , SpanId: ] 开始请求,app=, url=/studentClass/viewClassCourse, reqData=[1016971499387228160,1016699195411402752] -[DEBUG] [2020-09-27 20:47:46] 请求Id[3522fe56037e4f92adadfe5f9c01c6bb] [http-nio-9001-exec-7] ==> [TxId: , SpanId: ] ==> Preparing: SELECT class_id,course_id,course_order FROM zz_class_course WHERE ( ( class_id = ? and course_id = ? ) ) -[DEBUG] [2020-09-27 20:47:46] 请求Id[3522fe56037e4f92adadfe5f9c01c6bb] [http-nio-9001-exec-7] ==> [TxId: , SpanId: ] ==> Parameters: 1016971499387228160(Long), 1016699195411402752(Long) -[DEBUG] [2020-09-27 20:47:46] 请求Id[3522fe56037e4f92adadfe5f9c01c6bb] [http-nio-9001-exec-7] ==> [TxId: , SpanId: ] <== Total: 1 -[INFO ] [2020-09-27 20:47:46] 请求Id[3522fe56037e4f92adadfe5f9c01c6bb] [http-nio-9001-exec-7] ==> [TxId: , SpanId: ] 请求完成, app=, url=/studentClass/viewClassCourse,elapse=3ms, respData={"data":{"classId":1016971499387228160,"courseId":1016699195411402752,"courseOrder":12},"errorCode":"NO-ERROR","errorMessage":"NO-MESSAGE","success":true} -[INFO ] [2020-09-27 20:47:48] 请求Id[4618b7ca593b4bdca14e9c2c17544b8c] [http-nio-9001-exec-8] ==> [TxId: , SpanId: ] 开始请求,app=, url=/studentClass/updateClassCourse, reqData=[{"classId":1016971499387228160,"courseId":1016699195411402752,"courseOrder":1}] -[DEBUG] [2020-09-27 20:47:48] 请求Id[4618b7ca593b4bdca14e9c2c17544b8c] [http-nio-9001-exec-8] ==> [TxId: , SpanId: ] ==> Preparing: UPDATE zz_class_course SET course_order = ? WHERE ( ( class_id = ? and course_id = ? ) ) -[DEBUG] [2020-09-27 20:47:48] 请求Id[4618b7ca593b4bdca14e9c2c17544b8c] [http-nio-9001-exec-8] ==> [TxId: , SpanId: ] ==> Parameters: 1(Integer), 1016971499387228160(Long), 1016699195411402752(Long) -[DEBUG] [2020-09-27 20:47:48] 请求Id[4618b7ca593b4bdca14e9c2c17544b8c] [http-nio-9001-exec-8] ==> [TxId: , SpanId: ] <== Updates: 1 -[INFO ] [2020-09-27 20:47:48] 请求Id[4618b7ca593b4bdca14e9c2c17544b8c] [http-nio-9001-exec-8] ==> [TxId: , SpanId: ] 请求完成, app=, url=/studentClass/updateClassCourse,elapse=5ms, respData={"errorCode":"NO-ERROR","errorMessage":"NO-MESSAGE","success":true} -[INFO ] [2020-09-27 20:47:48] 请求Id[249592723e3e4e90a75621d67793692f] [http-nio-9001-exec-9] ==> [TxId: , SpanId: ] 开始请求,app=, url=/studentClass/listClassCourse, reqData=[1016971499387228160,null,null,{"pageNum":1,"pageSize":10}] -[DEBUG] [2020-09-27 20:47:48] 请求Id[249592723e3e4e90a75621d67793692f] [http-nio-9001-exec-9] ==> [TxId: , SpanId: ] ==> Preparing: SELECT class_id,class_name,school_id,leader_id,finish_class_hour,class_level,create_user_id,create_time,status FROM zz_class WHERE ( ( class_id = ? and status = ? ) ) -[DEBUG] [2020-09-27 20:47:48] 请求Id[249592723e3e4e90a75621d67793692f] [http-nio-9001-exec-9] ==> [TxId: , SpanId: ] ==> Parameters: 1016971499387228160(Long), 1(Integer) -[DEBUG] [2020-09-27 20:47:48] 请求Id[249592723e3e4e90a75621d67793692f] [http-nio-9001-exec-9] ==> [TxId: , SpanId: ] <== Total: 1 -[DEBUG] [2020-09-27 20:47:48] 请求Id[249592723e3e4e90a75621d67793692f] [http-nio-9001-exec-9] ==> [TxId: , SpanId: ] ==> Preparing: SELECT count(0) FROM zz_course, zz_class_course WHERE zz_class_course.class_id = ? AND zz_class_course.course_id = zz_course.course_id -[DEBUG] [2020-09-27 20:47:48] 请求Id[249592723e3e4e90a75621d67793692f] [http-nio-9001-exec-9] ==> [TxId: , SpanId: ] ==> Parameters: 1016971499387228160(Long) -[DEBUG] [2020-09-27 20:47:48] 请求Id[249592723e3e4e90a75621d67793692f] [http-nio-9001-exec-9] ==> [TxId: , SpanId: ] <== Total: 1 -[DEBUG] [2020-09-27 20:47:48] 请求Id[249592723e3e4e90a75621d67793692f] [http-nio-9001-exec-9] ==> [TxId: , SpanId: ] ==> Preparing: SELECT zz_course.* FROM zz_course, zz_class_course WHERE zz_class_course.class_id = ? AND zz_class_course.course_id = zz_course.course_id LIMIT ? -[DEBUG] [2020-09-27 20:47:48] 请求Id[249592723e3e4e90a75621d67793692f] [http-nio-9001-exec-9] ==> [TxId: , SpanId: ] ==> Parameters: 1016971499387228160(Long), 10(Integer) -[DEBUG] [2020-09-27 20:47:48] 请求Id[249592723e3e4e90a75621d67793692f] [http-nio-9001-exec-9] ==> [TxId: , SpanId: ] <== Total: 4 -[INFO ] [2020-09-27 20:47:48] 请求Id[249592723e3e4e90a75621d67793692f] [http-nio-9001-exec-9] ==> [TxId: , SpanId: ] 请求完成, app=, url=/studentClass/listClassCourse,elapse=15ms, respData={"data":{"dataList":[{"classHour":10,"courseId":1016699195411402752,"courseName":"小学一年级拼音基础练习","createTime":1601136000000,"createUserId":1093809448606765057,"description":"小学一年级拼音基础练习","difficulty":0,"difficultyDictMap":{"name":"容易","id":0},"gradeId":1,"gradeIdDictMap":{"name":"一年级","id":1},"pictureUrl":"[{\"name\":\"IMG_0003.JPG\",\"downloadUri\":\"/admin/coursepaper/course/download\",\"filename\":\"b09ef09478d8452d908600ff98b6f1ce.JPG\"}]","price":299.00,"subjectId":0,"subjectIdDictMap":{"name":"语文","id":0},"updateTime":1601136000000},{"classHour":25,"courseId":1016917385529790464,"courseName":"小学二年级语文课程","createTime":1601136000000,"createUserId":1093809448606765057,"description":"小学二年级课程","difficulty":1,"difficultyDictMap":{"name":"普通","id":1},"gradeId":2,"gradeIdDictMap":{"name":"二年级","id":2},"pictureUrl":"[{\"name\":\"IMG_0455.JPG\",\"downloadUri\":\"/admin/coursepaper/course/download\",\"filename\":\"79651a658e88408888f847366fbf98d0.JPG\"}]","price":980.00,"subjectId":0,"subjectIdDictMap":{"name":"语文","id":0},"updateTime":1601136000000},{"classHour":15,"courseId":1016920878164480000,"courseName":"小学数学一年级课程","createTime":1601136000000,"createUserId":1093809448606765057,"description":"小学数学一年级课程","difficulty":0,"difficultyDictMap":{"name":"容易","id":0},"gradeId":1,"gradeIdDictMap":{"name":"一年级","id":1},"pictureUrl":"[{\"name\":\"IMG_0010.JPG\",\"downloadUri\":\"/admin/coursepaper/course/download\",\"filename\":\"7e9583aba9594a98b1e0268837d2a5d0.JPG\"}]","price":388.00,"subjectId":1,"subjectIdDictMap":{"name":"数学","id":1},"updateTime":1601136000000},{"classHour":15,"courseId":1016923276064854016,"courseName":"小学英语一年级课程","createTime":1601136000000,"createUserId":1093809448606765057,"description":"小学英语一年级课程","difficulty":0,"difficultyDictMap":{"name":"容易","id":0},"gradeId":1,"gradeIdDictMap":{"name":"一年级","id":1},"pictureUrl":"[{\"name\":\"english.jpg\",\"downloadUri\":\"/admin/app/course/download\",\"filename\":\"44177c3674f543fda24222b8297ef203.jpg\"}]","price":399.00,"subjectId":2,"subjectIdDictMap":{"name":"英语","id":2},"updateTime":1601136000000}],"totalCount":4},"errorCode":"NO-ERROR","errorMessage":"NO-MESSAGE","success":true} -[INFO ] [2020-09-27 20:47:50] 请求Id[b3d24908483b40f2966d1fe517b124b2] [http-nio-9001-exec-10] ==> [TxId: , SpanId: ] 开始请求,app=, url=/studentClass/listNotInClassCourse, reqData=[1016971499387228160,{},null,{"pageNum":1,"pageSize":10}] -[DEBUG] [2020-09-27 20:47:50] 请求Id[b3d24908483b40f2966d1fe517b124b2] [http-nio-9001-exec-10] ==> [TxId: , SpanId: ] ==> Preparing: SELECT class_id,class_name,school_id,leader_id,finish_class_hour,class_level,create_user_id,create_time,status FROM zz_class WHERE ( ( class_id = ? and status = ? ) ) -[DEBUG] [2020-09-27 20:47:50] 请求Id[b3d24908483b40f2966d1fe517b124b2] [http-nio-9001-exec-10] ==> [TxId: , SpanId: ] ==> Parameters: 1016971499387228160(Long), 1(Integer) -[DEBUG] [2020-09-27 20:47:50] 请求Id[b3d24908483b40f2966d1fe517b124b2] [http-nio-9001-exec-10] ==> [TxId: , SpanId: ] <== Total: 1 -[DEBUG] [2020-09-27 20:47:50] 请求Id[b3d24908483b40f2966d1fe517b124b2] [http-nio-9001-exec-10] ==> [TxId: , SpanId: ] ==> Preparing: SELECT count(0) FROM zz_course WHERE NOT EXISTS (SELECT * FROM zz_class_course WHERE zz_class_course.class_id = ? AND zz_class_course.course_id = zz_course.course_id) -[DEBUG] [2020-09-27 20:47:50] 请求Id[b3d24908483b40f2966d1fe517b124b2] [http-nio-9001-exec-10] ==> [TxId: , SpanId: ] ==> Parameters: 1016971499387228160(Long) -[DEBUG] [2020-09-27 20:47:50] 请求Id[b3d24908483b40f2966d1fe517b124b2] [http-nio-9001-exec-10] ==> [TxId: , SpanId: ] <== Total: 1 -[DEBUG] [2020-09-27 20:47:50] 请求Id[b3d24908483b40f2966d1fe517b124b2] [http-nio-9001-exec-10] ==> [TxId: , SpanId: ] ==> Preparing: SELECT zz_course.* FROM zz_course WHERE NOT EXISTS (SELECT * FROM zz_class_course WHERE zz_class_course.class_id = ? AND zz_class_course.course_id = zz_course.course_id) LIMIT ? -[DEBUG] [2020-09-27 20:47:50] 请求Id[b3d24908483b40f2966d1fe517b124b2] [http-nio-9001-exec-10] ==> [TxId: , SpanId: ] ==> Parameters: 1016971499387228160(Long), 10(Integer) -[DEBUG] [2020-09-27 20:47:50] 请求Id[b3d24908483b40f2966d1fe517b124b2] [http-nio-9001-exec-10] ==> [TxId: , SpanId: ] <== Total: 10 -[INFO ] [2020-09-27 20:47:50] 请求Id[b3d24908483b40f2966d1fe517b124b2] [http-nio-9001-exec-10] ==> [TxId: , SpanId: ] 请求完成, app=, url=/studentClass/listNotInClassCourse,elapse=25ms, respData={"data":{"dataList":[{"classHour":30,"courseId":1016917732260319232,"courseName":"小学三年级语文课程","createTime":1601136000000,"createUserId":1093809448606765057,"description":"小学三年级语文课程","difficulty":1,"difficultyDictMap":{"name":"普通","id":1},"gradeId":3,"gradeIdDictMap":{"name":"三年级","id":3},"pictureUrl":"[{\"name\":\"IMG_0001.JPG\",\"downloadUri\":\"/admin/coursepaper/course/download\",\"filename\":\"0d11548eb91142d49a9253c0060d3f94.JPG\"}]","price":1080.00,"subjectId":0,"subjectIdDictMap":{"name":"语文","id":0},"updateTime":1601208479000},{"classHour":27,"courseId":1016917900699373568,"courseName":"小学四年级语文课程","createTime":1601136000000,"createUserId":1093809448606765057,"description":"小学四年级语文课程","difficulty":1,"difficultyDictMap":{"name":"普通","id":1},"gradeId":4,"gradeIdDictMap":{"name":"四年级","id":4},"pictureUrl":"[{\"name\":\"IMG_0002.JPG\",\"downloadUri\":\"/admin/coursepaper/course/download\",\"filename\":\"7358b520e31e4ee0b2b8c4f9c31614d9.JPG\"}]","price":888.00,"subjectId":0,"subjectIdDictMap":{"name":"语文","id":0},"updateTime":1601136000000},{"classHour":30,"courseId":1016918360520921088,"courseName":"小学五年级语文课程","createTime":1601136000000,"createUserId":1093809448606765057,"description":"小学五年级语文课程","difficulty":2,"difficultyDictMap":{"name":"困难","id":2},"gradeId":5,"gradeIdDictMap":{"name":"五年级","id":5},"pictureUrl":"[{\"name\":\"IMG_0004.JPG\",\"downloadUri\":\"/admin/coursepaper/course/download\",\"filename\":\"cf804a5e14fb498fa8bf3745cad39bca.JPG\"}]","price":1199.00,"subjectId":0,"subjectIdDictMap":{"name":"语文","id":0},"updateTime":1601136000000},{"classHour":32,"courseId":1016918605715738624,"courseName":"小学六年级语文课程","createTime":1601136000000,"createUserId":1093809448606765057,"description":"小学六年级语文课程","difficulty":2,"difficultyDictMap":{"name":"困难","id":2},"gradeId":6,"gradeIdDictMap":{"name":"六年级","id":6},"pictureUrl":"[{\"name\":\"IMG_0006.JPG\",\"downloadUri\":\"/admin/coursepaper/course/download\",\"filename\":\"a0d0476fac9c46f08b7ebef597b8765a.JPG\"}]","price":1288.00,"subjectId":0,"subjectIdDictMap":{"name":"语文","id":0},"updateTime":1601136000000},{"classHour":20,"courseId":1016918836729614336,"courseName":"天津小学一年级语文课程","createTime":1601136000000,"createUserId":1093809448606765057,"description":"天津小学一年级语文课程","difficulty":0,"difficultyDictMap":{"name":"容易","id":0},"gradeId":1,"gradeIdDictMap":{"name":"一年级","id":1},"pictureUrl":"[{\"name\":\"IMG_0003.JPG\",\"downloadUri\":\"/admin/coursepaper/course/download\",\"filename\":\"7f64971a69944b0082f21a6036c31efd.JPG\"}]","price":300.00,"subjectId":0,"subjectIdDictMap":{"name":"语文","id":0},"updateTime":1601136000000},{"classHour":20,"courseId":1016920152549888000,"courseName":"天津小学二年级语文课程","createTime":1601136000000,"createUserId":1093809448606765057,"description":"天津小学二年级语文课程","difficulty":1,"difficultyDictMap":{"name":"普通","id":1},"gradeId":2,"gradeIdDictMap":{"name":"二年级","id":2},"pictureUrl":"[{\"name\":\"IMG_0007.JPG\",\"downloadUri\":\"/admin/coursepaper/course/download\",\"filename\":\"4baf08c1da8741bb808caf09475e49a9.JPG\"}]","price":699.00,"subjectId":0,"subjectIdDictMap":{"name":"语文","id":0},"updateTime":1601136000000},{"classHour":25,"courseId":1016920339255136256,"courseName":"天津小学三年级语文课程","createTime":1601136000000,"createUserId":1093809448606765057,"description":"天津小学三年级语文课程","difficulty":1,"difficultyDictMap":{"name":"普通","id":1},"gradeId":3,"gradeIdDictMap":{"name":"三年级","id":3},"pictureUrl":"[{\"name\":\"IMG_0009.JPG\",\"downloadUri\":\"/admin/coursepaper/course/download\",\"filename\":\"6bc1eaab831d49708e4b1e0a5d657d61.JPG\"}]","price":998.00,"subjectId":0,"subjectIdDictMap":{"name":"语文","id":0},"updateTime":1601208474000},{"classHour":20,"courseId":1016921053566078976,"courseName":"小学数学二年级课程","createTime":1601136000000,"createUserId":1093809448606765057,"description":"小学数学二年级课程","difficulty":0,"difficultyDictMap":{"name":"容易","id":0},"gradeId":2,"gradeIdDictMap":{"name":"二年级","id":2},"pictureUrl":"[{\"name\":\"shuxue2.jpg\",\"downloadUri\":\"/admin/app/course/download\",\"filename\":\"7a1fdc70976f4820aa019f91514de272.jpg\"}]","price":700.00,"subjectId":1,"subjectIdDictMap":{"name":"数学","id":1},"updateTime":1601136000000},{"classHour":20,"courseId":1016921250996162560,"courseName":"小学数学三年级课程","createTime":1601136000000,"createUserId":1093809448606765057,"description":"小学数学三年级课程","difficulty":1,"difficultyDictMap":{"name":"普通","id":1},"gradeId":3,"gradeIdDictMap":{"name":"三年级","id":3},"pictureUrl":"[{\"name\":\"shuxue.jpg\",\"downloadUri\":\"/admin/app/course/download\",\"filename\":\"f14c0f101146453c80607230e842f1c9.jpg\"},{\"name\":\"shuxue2.jpg\",\"downloadUri\":\"/admin/app/course/download\",\"filename\":\"b8451e95fa314facaa8a3cd720888574.jpg\"}]","price":700.00,"subjectId":1,"subjectIdDictMap":{"name":"数学","id":1},"updateTime":1601136000000},{"classHour":21,"courseId":1016921446102601728,"courseName":"小学数学四年级课程","createTime":1601136000000,"createUserId":1093809448606765057,"description":"小学数学四年级课程","difficulty":1,"difficultyDictMap":{"name":"普通","id":1},"gradeId":4,"gradeIdDictMap":{"name":"四年级","id":4},"pictureUrl":"[{\"name\":\"shuxue2.jpg\",\"downloadUri\":\"/admin/app/course/download\",\"filename\":\"78e1cac8c4284c8a82c7ea4bef5162a4.jpg\"}]","price":800.00,"subjectId":1,"subjectIdDictMap":{"name":"数学","id":1},"updateTime":1601136000000}],"totalCount":23},"errorCode":"NO-ERROR","errorMessage":"NO-MESSAGE","success":true} -[INFO ] [2020-09-27 20:47:53] 请求Id[6d86d7694b784e3794a2a8902ec35407] [http-nio-9001-exec-1] ==> [TxId: , SpanId: ] 开始请求,app=, url=/studentClass/addClassCourse, reqData=[1016971499387228160,[{"courseId":1016917732260319232}]] -[INFO ] [2020-09-27 20:47:53] 请求Id[6d86d7694b784e3794a2a8902ec35407] [http-nio-9001-exec-1] ==> [TxId: , SpanId: ] 请求完成, app=, url=/studentClass/addClassCourse,elapse=5ms, respData={"errorCode":"DATA_VALIDATAED_FAILED","errorMessage":"数据验证失败,课程顺序(数值越小越靠前)不能为空!","success":false} -[INFO ] [2020-09-27 20:48:05] 请求Id[c80e35356a974829ae9b72079a3802ff] [http-nio-9001-exec-2] ==> [TxId: , SpanId: ] 开始请求,app=, url=/studentClass/addClassCourse, reqData=[1016971499387228160,[{"courseId":1016917732260319232}]] -[INFO ] [2020-09-27 20:48:05] 请求Id[c80e35356a974829ae9b72079a3802ff] [http-nio-9001-exec-2] ==> [TxId: , SpanId: ] 请求完成, app=, url=/studentClass/addClassCourse,elapse=0ms, respData={"errorCode":"DATA_VALIDATAED_FAILED","errorMessage":"数据验证失败,课程顺序(数值越小越靠前)不能为空!","success":false} -[INFO ] [2020-09-27 20:48:27] 请求Id[97258d1c293f4227883c2f5bc14b952c] [http-nio-9001-exec-3] ==> [TxId: , SpanId: ] 开始请求,app=, url=/studentClass/list, reqData=[{},[{"asc":true,"fieldName":"createTime"}],{"pageNum":1,"pageSize":10}] -[DEBUG] [2020-09-27 20:48:27] 请求Id[97258d1c293f4227883c2f5bc14b952c] [http-nio-9001-exec-3] ==> [TxId: , SpanId: ] ==> Preparing: SELECT count(0) FROM zz_class WHERE zz_class.status = 1 -[DEBUG] [2020-09-27 20:48:27] 请求Id[97258d1c293f4227883c2f5bc14b952c] [http-nio-9001-exec-3] ==> [TxId: , SpanId: ] ==> Parameters: -[DEBUG] [2020-09-27 20:48:27] 请求Id[97258d1c293f4227883c2f5bc14b952c] [http-nio-9001-exec-3] ==> [TxId: , SpanId: ] <== Total: 1 -[DEBUG] [2020-09-27 20:48:27] 请求Id[97258d1c293f4227883c2f5bc14b952c] [http-nio-9001-exec-3] ==> [TxId: , SpanId: ] ==> Preparing: SELECT * FROM zz_class WHERE zz_class.status = 1 ORDER BY zz_class.create_time LIMIT ? -[DEBUG] [2020-09-27 20:48:27] 请求Id[97258d1c293f4227883c2f5bc14b952c] [http-nio-9001-exec-3] ==> [TxId: , SpanId: ] ==> Parameters: 10(Integer) -[DEBUG] [2020-09-27 20:48:27] 请求Id[97258d1c293f4227883c2f5bc14b952c] [http-nio-9001-exec-3] ==> [TxId: , SpanId: ] <== Total: 10 -[DEBUG] [2020-09-27 20:48:27] 请求Id[97258d1c293f4227883c2f5bc14b952c] [http-nio-9001-exec-3] ==> [TxId: , SpanId: ] ==> Preparing: SELECT school_id,school_name,province_id,city_id FROM zz_school_info WHERE ( ( school_id in ( ? , ? ) ) ) -[DEBUG] [2020-09-27 20:48:27] 请求Id[97258d1c293f4227883c2f5bc14b952c] [http-nio-9001-exec-3] ==> [TxId: , SpanId: ] ==> Parameters: 1015818056597508096(Long), 1015817732197453824(Long) -[DEBUG] [2020-09-27 20:48:27] 请求Id[97258d1c293f4227883c2f5bc14b952c] [http-nio-9001-exec-3] ==> [TxId: , SpanId: ] <== Total: 2 -[DEBUG] [2020-09-27 20:48:27] 请求Id[97258d1c293f4227883c2f5bc14b952c] [http-nio-9001-exec-3] ==> [TxId: , SpanId: ] ==> Preparing: SELECT 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 FROM zz_student WHERE ( ( student_id in ( ? , ? , ? , ? , ? ) ) ) -[DEBUG] [2020-09-27 20:48:27] 请求Id[97258d1c293f4227883c2f5bc14b952c] [http-nio-9001-exec-3] ==> [TxId: , SpanId: ] ==> Parameters: 1015852480873631744(Long), 1015842628948463616(Long), 1018000939508568064(Long), 1018001219050541056(Long), 1015852853839532032(Long) -[DEBUG] [2020-09-27 20:48:27] 请求Id[97258d1c293f4227883c2f5bc14b952c] [http-nio-9001-exec-3] ==> [TxId: , SpanId: ] <== Total: 5 -[INFO ] [2020-09-27 20:48:27] 请求Id[97258d1c293f4227883c2f5bc14b952c] [http-nio-9001-exec-3] ==> [TxId: , SpanId: ] 请求完成, app=, url=/studentClass/list,elapse=9ms, respData={"data":{"dataList":[{"classId":1016971499387228160,"classLevel":0,"classLevelDictMap":{"name":"初级班","id":0},"className":"小学一年级随堂班","createTime":1601136000000,"createUserId":1093809448606765057,"finishClassHour":15,"leaderId":1015842628948463616,"leaderIdDictMap":{"name":"张三","id":1015842628948463616},"schoolId":1015817732197453824,"schoolIdDictMap":{"name":"北京校区","id":1015817732197453824}},{"classId":1016971692685922304,"classLevel":0,"classLevelDictMap":{"name":"初级班","id":0},"className":"小学二年级随堂班","createTime":1601136000000,"createUserId":1093809448606765057,"finishClassHour":20,"leaderId":1018000939508568064,"leaderIdDictMap":{"name":"天津二哥","id":1018000939508568064},"schoolId":1015818056597508096,"schoolIdDictMap":{"name":"天津校区","id":1015818056597508096}},{"classId":1016971755373989888,"classLevel":0,"classLevelDictMap":{"name":"初级班","id":0},"className":"小学三年级随堂班","createTime":1601136000000,"createUserId":1093809448606765057,"finishClassHour":100,"leaderId":1015842628948463616,"leaderIdDictMap":{"name":"张三","id":1015842628948463616},"schoolId":1015817732197453824,"schoolIdDictMap":{"name":"北京校区","id":1015817732197453824}},{"classId":1016971816040402944,"classLevel":0,"classLevelDictMap":{"name":"初级班","id":0},"className":"小学四年级随堂班","createTime":1601136000000,"createUserId":1093809448606765057,"finishClassHour":0,"leaderId":1015852853839532032,"leaderIdDictMap":{"name":"王石","id":1015852853839532032},"schoolId":1015817732197453824,"schoolIdDictMap":{"name":"北京校区","id":1015817732197453824}},{"classId":1016971872105664512,"classLevel":0,"classLevelDictMap":{"name":"初级班","id":0},"className":"小学五年级随堂班","createTime":1601136000000,"createUserId":1093809448606765057,"finishClassHour":0,"leaderId":1018001219050541056,"leaderIdDictMap":{"name":"南开学霸","id":1018001219050541056},"schoolId":1015818056597508096,"schoolIdDictMap":{"name":"天津校区","id":1015818056597508096}},{"classId":1016971931153076224,"classLevel":0,"classLevelDictMap":{"name":"初级班","id":0},"className":"小学六年级随堂班","createTime":1601136000000,"createUserId":1093809448606765057,"finishClassHour":0,"leaderId":1015852480873631744,"leaderIdDictMap":{"name":"李军","id":1015852480873631744},"schoolId":1015817732197453824,"schoolIdDictMap":{"name":"北京校区","id":1015817732197453824}},{"classId":1016972016347779072,"classLevel":1,"classLevelDictMap":{"name":"中级班","id":1},"className":"小学一年级提高班","createTime":1601136000000,"createUserId":1093809448606765057,"finishClassHour":0,"leaderId":1015842628948463616,"leaderIdDictMap":{"name":"张三","id":1015842628948463616},"schoolId":1015817732197453824,"schoolIdDictMap":{"name":"北京校区","id":1015817732197453824}},{"classId":1016972071955861504,"classLevel":1,"classLevelDictMap":{"name":"中级班","id":1},"className":"小学二年级提高班","createTime":1601136000000,"createUserId":1093809448606765057,"finishClassHour":0,"leaderId":1015852480873631744,"leaderIdDictMap":{"name":"李军","id":1015852480873631744},"schoolId":1015817732197453824,"schoolIdDictMap":{"name":"北京校区","id":1015817732197453824}},{"classId":1016972128667045888,"classLevel":1,"classLevelDictMap":{"name":"中级班","id":1},"className":"小学三年级提高班","createTime":1601136000000,"createUserId":1093809448606765057,"finishClassHour":0,"leaderId":1018001219050541056,"leaderIdDictMap":{"name":"南开学霸","id":1018001219050541056},"schoolId":1015818056597508096,"schoolIdDictMap":{"name":"天津校区","id":1015818056597508096}},{"classId":1016972187949338624,"classLevel":1,"classLevelDictMap":{"name":"中级班","id":1},"className":"小学四年级提高班","createTime":1601136000000,"createUserId":1093809448606765057,"finishClassHour":0,"leaderId":1015852480873631744,"leaderIdDictMap":{"name":"李军","id":1015852480873631744},"schoolId":1015817732197453824,"schoolIdDictMap":{"name":"北京校区","id":1015817732197453824}}],"totalCount":15},"errorCode":"NO-ERROR","errorMessage":"NO-MESSAGE","success":true} -[INFO ] [2020-09-27 20:48:28] 请求Id[a67b41601c574d378f8f321e46414077] [http-nio-9001-exec-4] ==> [TxId: , SpanId: ] 开始请求,app=, url=/studentClass/listClassCourse, reqData=[1016971499387228160,null,null,{"pageNum":1,"pageSize":10}] -[DEBUG] [2020-09-27 20:48:28] 请求Id[a67b41601c574d378f8f321e46414077] [http-nio-9001-exec-4] ==> [TxId: , SpanId: ] ==> Preparing: SELECT class_id,class_name,school_id,leader_id,finish_class_hour,class_level,create_user_id,create_time,status FROM zz_class WHERE ( ( class_id = ? and status = ? ) ) -[DEBUG] [2020-09-27 20:48:28] 请求Id[a67b41601c574d378f8f321e46414077] [http-nio-9001-exec-4] ==> [TxId: , SpanId: ] ==> Parameters: 1016971499387228160(Long), 1(Integer) -[DEBUG] [2020-09-27 20:48:28] 请求Id[a67b41601c574d378f8f321e46414077] [http-nio-9001-exec-4] ==> [TxId: , SpanId: ] <== Total: 1 -[DEBUG] [2020-09-27 20:48:28] 请求Id[a67b41601c574d378f8f321e46414077] [http-nio-9001-exec-4] ==> [TxId: , SpanId: ] ==> Preparing: SELECT count(0) FROM zz_course, zz_class_course WHERE zz_class_course.class_id = ? AND zz_class_course.course_id = zz_course.course_id -[DEBUG] [2020-09-27 20:48:28] 请求Id[a67b41601c574d378f8f321e46414077] [http-nio-9001-exec-4] ==> [TxId: , SpanId: ] ==> Parameters: 1016971499387228160(Long) -[DEBUG] [2020-09-27 20:48:28] 请求Id[a67b41601c574d378f8f321e46414077] [http-nio-9001-exec-4] ==> [TxId: , SpanId: ] <== Total: 1 -[DEBUG] [2020-09-27 20:48:28] 请求Id[a67b41601c574d378f8f321e46414077] [http-nio-9001-exec-4] ==> [TxId: , SpanId: ] ==> Preparing: SELECT zz_course.* FROM zz_course, zz_class_course WHERE zz_class_course.class_id = ? AND zz_class_course.course_id = zz_course.course_id LIMIT ? -[DEBUG] [2020-09-27 20:48:28] 请求Id[a67b41601c574d378f8f321e46414077] [http-nio-9001-exec-4] ==> [TxId: , SpanId: ] ==> Parameters: 1016971499387228160(Long), 10(Integer) -[DEBUG] [2020-09-27 20:48:28] 请求Id[a67b41601c574d378f8f321e46414077] [http-nio-9001-exec-4] ==> [TxId: , SpanId: ] <== Total: 4 -[INFO ] [2020-09-27 20:48:28] 请求Id[a67b41601c574d378f8f321e46414077] [http-nio-9001-exec-4] ==> [TxId: , SpanId: ] 请求完成, app=, url=/studentClass/listClassCourse,elapse=15ms, respData={"data":{"dataList":[{"classHour":10,"courseId":1016699195411402752,"courseName":"小学一年级拼音基础练习","createTime":1601136000000,"createUserId":1093809448606765057,"description":"小学一年级拼音基础练习","difficulty":0,"difficultyDictMap":{"name":"容易","id":0},"gradeId":1,"gradeIdDictMap":{"name":"一年级","id":1},"pictureUrl":"[{\"name\":\"IMG_0003.JPG\",\"downloadUri\":\"/admin/coursepaper/course/download\",\"filename\":\"b09ef09478d8452d908600ff98b6f1ce.JPG\"}]","price":299.00,"subjectId":0,"subjectIdDictMap":{"name":"语文","id":0},"updateTime":1601136000000},{"classHour":25,"courseId":1016917385529790464,"courseName":"小学二年级语文课程","createTime":1601136000000,"createUserId":1093809448606765057,"description":"小学二年级课程","difficulty":1,"difficultyDictMap":{"name":"普通","id":1},"gradeId":2,"gradeIdDictMap":{"name":"二年级","id":2},"pictureUrl":"[{\"name\":\"IMG_0455.JPG\",\"downloadUri\":\"/admin/coursepaper/course/download\",\"filename\":\"79651a658e88408888f847366fbf98d0.JPG\"}]","price":980.00,"subjectId":0,"subjectIdDictMap":{"name":"语文","id":0},"updateTime":1601136000000},{"classHour":15,"courseId":1016920878164480000,"courseName":"小学数学一年级课程","createTime":1601136000000,"createUserId":1093809448606765057,"description":"小学数学一年级课程","difficulty":0,"difficultyDictMap":{"name":"容易","id":0},"gradeId":1,"gradeIdDictMap":{"name":"一年级","id":1},"pictureUrl":"[{\"name\":\"IMG_0010.JPG\",\"downloadUri\":\"/admin/coursepaper/course/download\",\"filename\":\"7e9583aba9594a98b1e0268837d2a5d0.JPG\"}]","price":388.00,"subjectId":1,"subjectIdDictMap":{"name":"数学","id":1},"updateTime":1601136000000},{"classHour":15,"courseId":1016923276064854016,"courseName":"小学英语一年级课程","createTime":1601136000000,"createUserId":1093809448606765057,"description":"小学英语一年级课程","difficulty":0,"difficultyDictMap":{"name":"容易","id":0},"gradeId":1,"gradeIdDictMap":{"name":"一年级","id":1},"pictureUrl":"[{\"name\":\"english.jpg\",\"downloadUri\":\"/admin/app/course/download\",\"filename\":\"44177c3674f543fda24222b8297ef203.jpg\"}]","price":399.00,"subjectId":2,"subjectIdDictMap":{"name":"英语","id":2},"updateTime":1601136000000}],"totalCount":4},"errorCode":"NO-ERROR","errorMessage":"NO-MESSAGE","success":true} -[INFO ] [2020-09-27 20:48:30] 请求Id[2865ff823d8e4cf1be948509cbf86bee] [http-nio-9001-exec-5] ==> [TxId: , SpanId: ] 开始请求,app=, url=/studentClass/listNotInClassCourse, reqData=[1016971499387228160,{},null,{"pageNum":1,"pageSize":10}] -[DEBUG] [2020-09-27 20:48:30] 请求Id[2865ff823d8e4cf1be948509cbf86bee] [http-nio-9001-exec-5] ==> [TxId: , SpanId: ] ==> Preparing: SELECT class_id,class_name,school_id,leader_id,finish_class_hour,class_level,create_user_id,create_time,status FROM zz_class WHERE ( ( class_id = ? and status = ? ) ) -[DEBUG] [2020-09-27 20:48:30] 请求Id[2865ff823d8e4cf1be948509cbf86bee] [http-nio-9001-exec-5] ==> [TxId: , SpanId: ] ==> Parameters: 1016971499387228160(Long), 1(Integer) -[DEBUG] [2020-09-27 20:48:30] 请求Id[2865ff823d8e4cf1be948509cbf86bee] [http-nio-9001-exec-5] ==> [TxId: , SpanId: ] <== Total: 1 -[DEBUG] [2020-09-27 20:48:30] 请求Id[2865ff823d8e4cf1be948509cbf86bee] [http-nio-9001-exec-5] ==> [TxId: , SpanId: ] ==> Preparing: SELECT count(0) FROM zz_course WHERE NOT EXISTS (SELECT * FROM zz_class_course WHERE zz_class_course.class_id = ? AND zz_class_course.course_id = zz_course.course_id) -[DEBUG] [2020-09-27 20:48:30] 请求Id[2865ff823d8e4cf1be948509cbf86bee] [http-nio-9001-exec-5] ==> [TxId: , SpanId: ] ==> Parameters: 1016971499387228160(Long) -[DEBUG] [2020-09-27 20:48:30] 请求Id[2865ff823d8e4cf1be948509cbf86bee] [http-nio-9001-exec-5] ==> [TxId: , SpanId: ] <== Total: 1 -[DEBUG] [2020-09-27 20:48:30] 请求Id[2865ff823d8e4cf1be948509cbf86bee] [http-nio-9001-exec-5] ==> [TxId: , SpanId: ] ==> Preparing: SELECT zz_course.* FROM zz_course WHERE NOT EXISTS (SELECT * FROM zz_class_course WHERE zz_class_course.class_id = ? AND zz_class_course.course_id = zz_course.course_id) LIMIT ? -[DEBUG] [2020-09-27 20:48:30] 请求Id[2865ff823d8e4cf1be948509cbf86bee] [http-nio-9001-exec-5] ==> [TxId: , SpanId: ] ==> Parameters: 1016971499387228160(Long), 10(Integer) -[DEBUG] [2020-09-27 20:48:30] 请求Id[2865ff823d8e4cf1be948509cbf86bee] [http-nio-9001-exec-5] ==> [TxId: , SpanId: ] <== Total: 10 -[INFO ] [2020-09-27 20:48:30] 请求Id[2865ff823d8e4cf1be948509cbf86bee] [http-nio-9001-exec-5] ==> [TxId: , SpanId: ] 请求完成, app=, url=/studentClass/listNotInClassCourse,elapse=18ms, respData={"data":{"dataList":[{"classHour":30,"courseId":1016917732260319232,"courseName":"小学三年级语文课程","createTime":1601136000000,"createUserId":1093809448606765057,"description":"小学三年级语文课程","difficulty":1,"difficultyDictMap":{"name":"普通","id":1},"gradeId":3,"gradeIdDictMap":{"name":"三年级","id":3},"pictureUrl":"[{\"name\":\"IMG_0001.JPG\",\"downloadUri\":\"/admin/coursepaper/course/download\",\"filename\":\"0d11548eb91142d49a9253c0060d3f94.JPG\"}]","price":1080.00,"subjectId":0,"subjectIdDictMap":{"name":"语文","id":0},"updateTime":1601208479000},{"classHour":27,"courseId":1016917900699373568,"courseName":"小学四年级语文课程","createTime":1601136000000,"createUserId":1093809448606765057,"description":"小学四年级语文课程","difficulty":1,"difficultyDictMap":{"name":"普通","id":1},"gradeId":4,"gradeIdDictMap":{"name":"四年级","id":4},"pictureUrl":"[{\"name\":\"IMG_0002.JPG\",\"downloadUri\":\"/admin/coursepaper/course/download\",\"filename\":\"7358b520e31e4ee0b2b8c4f9c31614d9.JPG\"}]","price":888.00,"subjectId":0,"subjectIdDictMap":{"name":"语文","id":0},"updateTime":1601136000000},{"classHour":30,"courseId":1016918360520921088,"courseName":"小学五年级语文课程","createTime":1601136000000,"createUserId":1093809448606765057,"description":"小学五年级语文课程","difficulty":2,"difficultyDictMap":{"name":"困难","id":2},"gradeId":5,"gradeIdDictMap":{"name":"五年级","id":5},"pictureUrl":"[{\"name\":\"IMG_0004.JPG\",\"downloadUri\":\"/admin/coursepaper/course/download\",\"filename\":\"cf804a5e14fb498fa8bf3745cad39bca.JPG\"}]","price":1199.00,"subjectId":0,"subjectIdDictMap":{"name":"语文","id":0},"updateTime":1601136000000},{"classHour":32,"courseId":1016918605715738624,"courseName":"小学六年级语文课程","createTime":1601136000000,"createUserId":1093809448606765057,"description":"小学六年级语文课程","difficulty":2,"difficultyDictMap":{"name":"困难","id":2},"gradeId":6,"gradeIdDictMap":{"name":"六年级","id":6},"pictureUrl":"[{\"name\":\"IMG_0006.JPG\",\"downloadUri\":\"/admin/coursepaper/course/download\",\"filename\":\"a0d0476fac9c46f08b7ebef597b8765a.JPG\"}]","price":1288.00,"subjectId":0,"subjectIdDictMap":{"name":"语文","id":0},"updateTime":1601136000000},{"classHour":20,"courseId":1016918836729614336,"courseName":"天津小学一年级语文课程","createTime":1601136000000,"createUserId":1093809448606765057,"description":"天津小学一年级语文课程","difficulty":0,"difficultyDictMap":{"name":"容易","id":0},"gradeId":1,"gradeIdDictMap":{"name":"一年级","id":1},"pictureUrl":"[{\"name\":\"IMG_0003.JPG\",\"downloadUri\":\"/admin/coursepaper/course/download\",\"filename\":\"7f64971a69944b0082f21a6036c31efd.JPG\"}]","price":300.00,"subjectId":0,"subjectIdDictMap":{"name":"语文","id":0},"updateTime":1601136000000},{"classHour":20,"courseId":1016920152549888000,"courseName":"天津小学二年级语文课程","createTime":1601136000000,"createUserId":1093809448606765057,"description":"天津小学二年级语文课程","difficulty":1,"difficultyDictMap":{"name":"普通","id":1},"gradeId":2,"gradeIdDictMap":{"name":"二年级","id":2},"pictureUrl":"[{\"name\":\"IMG_0007.JPG\",\"downloadUri\":\"/admin/coursepaper/course/download\",\"filename\":\"4baf08c1da8741bb808caf09475e49a9.JPG\"}]","price":699.00,"subjectId":0,"subjectIdDictMap":{"name":"语文","id":0},"updateTime":1601136000000},{"classHour":25,"courseId":1016920339255136256,"courseName":"天津小学三年级语文课程","createTime":1601136000000,"createUserId":1093809448606765057,"description":"天津小学三年级语文课程","difficulty":1,"difficultyDictMap":{"name":"普通","id":1},"gradeId":3,"gradeIdDictMap":{"name":"三年级","id":3},"pictureUrl":"[{\"name\":\"IMG_0009.JPG\",\"downloadUri\":\"/admin/coursepaper/course/download\",\"filename\":\"6bc1eaab831d49708e4b1e0a5d657d61.JPG\"}]","price":998.00,"subjectId":0,"subjectIdDictMap":{"name":"语文","id":0},"updateTime":1601208474000},{"classHour":20,"courseId":1016921053566078976,"courseName":"小学数学二年级课程","createTime":1601136000000,"createUserId":1093809448606765057,"description":"小学数学二年级课程","difficulty":0,"difficultyDictMap":{"name":"容易","id":0},"gradeId":2,"gradeIdDictMap":{"name":"二年级","id":2},"pictureUrl":"[{\"name\":\"shuxue2.jpg\",\"downloadUri\":\"/admin/app/course/download\",\"filename\":\"7a1fdc70976f4820aa019f91514de272.jpg\"}]","price":700.00,"subjectId":1,"subjectIdDictMap":{"name":"数学","id":1},"updateTime":1601136000000},{"classHour":20,"courseId":1016921250996162560,"courseName":"小学数学三年级课程","createTime":1601136000000,"createUserId":1093809448606765057,"description":"小学数学三年级课程","difficulty":1,"difficultyDictMap":{"name":"普通","id":1},"gradeId":3,"gradeIdDictMap":{"name":"三年级","id":3},"pictureUrl":"[{\"name\":\"shuxue.jpg\",\"downloadUri\":\"/admin/app/course/download\",\"filename\":\"f14c0f101146453c80607230e842f1c9.jpg\"},{\"name\":\"shuxue2.jpg\",\"downloadUri\":\"/admin/app/course/download\",\"filename\":\"b8451e95fa314facaa8a3cd720888574.jpg\"}]","price":700.00,"subjectId":1,"subjectIdDictMap":{"name":"数学","id":1},"updateTime":1601136000000},{"classHour":21,"courseId":1016921446102601728,"courseName":"小学数学四年级课程","createTime":1601136000000,"createUserId":1093809448606765057,"description":"小学数学四年级课程","difficulty":1,"difficultyDictMap":{"name":"普通","id":1},"gradeId":4,"gradeIdDictMap":{"name":"四年级","id":4},"pictureUrl":"[{\"name\":\"shuxue2.jpg\",\"downloadUri\":\"/admin/app/course/download\",\"filename\":\"78e1cac8c4284c8a82c7ea4bef5162a4.jpg\"}]","price":800.00,"subjectId":1,"subjectIdDictMap":{"name":"数学","id":1},"updateTime":1601136000000}],"totalCount":23},"errorCode":"NO-ERROR","errorMessage":"NO-MESSAGE","success":true} -[INFO ] [2020-09-27 20:48:33] 请求Id[22c9a1a7158a48dfab518c7ea06109e6] [http-nio-9001-exec-6] ==> [TxId: , SpanId: ] 开始请求,app=, url=/studentClass/addClassCourse, reqData=[1016971499387228160,[{"courseId":1016917732260319232}]] -[INFO ] [2020-09-27 20:48:33] 请求Id[22c9a1a7158a48dfab518c7ea06109e6] [http-nio-9001-exec-6] ==> [TxId: , SpanId: ] 请求完成, app=, url=/studentClass/addClassCourse,elapse=1ms, respData={"errorCode":"DATA_VALIDATAED_FAILED","errorMessage":"数据验证失败,课程顺序(数值越小越靠前)不能为空!","success":false} -[INFO ] [2020-09-27 20:49:09] 请求Id[862b918112294fbbb9cd702fc52474fe] [http-nio-9001-exec-7] ==> [TxId: , SpanId: ] 开始请求,app=, url=/studentClass/addClassCourse, reqData=[1016971499387228160,[{"courseId":1016917732260319232}]] -[INFO ] [2020-09-27 20:49:09] 请求Id[862b918112294fbbb9cd702fc52474fe] [http-nio-9001-exec-7] ==> [TxId: , SpanId: ] 请求完成, app=, url=/studentClass/addClassCourse,elapse=0ms, respData={"errorCode":"DATA_VALIDATAED_FAILED","errorMessage":"数据验证失败,课程顺序(数值越小越靠前)不能为空!","success":false} -[INFO ] [2020-09-27 20:56:45] 请求Id[] [main] ==> [TxId: , SpanId: ] The following profiles are active: dev -[INFO ] [2020-09-27 20:56:51] 请求Id[] [main] ==> [TxId: , SpanId: ] twepoch:1288834974657 ,ip:10.24.82.239 ,zkAddress:localhost:2181 port:19001 -[INFO ] [2020-09-27 20:56:51] 请求Id[] [main] ==> [TxId: , SpanId: ] file exists status is true -[INFO ] [2020-09-27 20:56:51] 请求Id[] [main] ==> [TxId: , SpanId: ] update file cache workId is 0 -[INFO ] [2020-09-27 20:56:51] 请求Id[] [main] ==> [TxId: , SpanId: ] START SUCCESS USE ZK WORKERID-0 -[INFO ] [2020-09-27 20:56:53] 请求Id[] [main] ==> [TxId: , SpanId: ] Started CourseClassApplication in 10.448 seconds (JVM running for 13.634) -[DEBUG] [2020-09-27 20:56:53] 请求Id[] [main] ==> [TxId: , SpanId: ] ==> Preparing: SELECT area_id,area_name,area_level,parent_id FROM zz_area_code order by area_level -[DEBUG] [2020-09-27 20:56:54] 请求Id[] [main] ==> [TxId: , SpanId: ] ==> Parameters: -[DEBUG] [2020-09-27 20:56:54] 请求Id[] [main] ==> [TxId: , SpanId: ] <== Total: 3656 -[INFO ] [2020-09-27 20:57:29] 请求Id[3bf8f684f01146f782f8e83beeb4569b] [http-nio-9001-exec-1] ==> [TxId: , SpanId: ] 开始请求,app=, url=/studentClass/addClassCourse, reqData=[1016971499387228160,[{"courseId":1016917732260319232}]] -[DEBUG] [2020-09-27 20:57:29] 请求Id[3bf8f684f01146f782f8e83beeb4569b] [http-nio-9001-exec-1] ==> [TxId: , SpanId: ] ==> Preparing: SELECT class_id,class_name,school_id,leader_id,finish_class_hour,class_level,create_user_id,create_time,status FROM zz_class WHERE ( ( class_id = ? and status = ? ) ) -[DEBUG] [2020-09-27 20:57:29] 请求Id[3bf8f684f01146f782f8e83beeb4569b] [http-nio-9001-exec-1] ==> [TxId: , SpanId: ] ==> Parameters: 1016971499387228160(Long), 1(Integer) -[DEBUG] [2020-09-27 20:57:29] 请求Id[3bf8f684f01146f782f8e83beeb4569b] [http-nio-9001-exec-1] ==> [TxId: , SpanId: ] <== Total: 1 -[DEBUG] [2020-09-27 20:57:29] 请求Id[3bf8f684f01146f782f8e83beeb4569b] [http-nio-9001-exec-1] ==> [TxId: , SpanId: ] ==> Preparing: SELECT COUNT(*) FROM zz_course WHERE ( ( course_id in ( ? ) ) ) -[DEBUG] [2020-09-27 20:57:29] 请求Id[3bf8f684f01146f782f8e83beeb4569b] [http-nio-9001-exec-1] ==> [TxId: , SpanId: ] ==> Parameters: 1016917732260319232(Long) -[DEBUG] [2020-09-27 20:57:29] 请求Id[3bf8f684f01146f782f8e83beeb4569b] [http-nio-9001-exec-1] ==> [TxId: , SpanId: ] <== Total: 1 -[DEBUG] [2020-09-27 20:57:29] 请求Id[3bf8f684f01146f782f8e83beeb4569b] [http-nio-9001-exec-1] ==> [TxId: , SpanId: ] ==> Preparing: INSERT INTO zz_class_course ( class_id,course_id,course_order ) VALUES ( ?,?,? ) -[DEBUG] [2020-09-27 20:57:29] 请求Id[3bf8f684f01146f782f8e83beeb4569b] [http-nio-9001-exec-1] ==> [TxId: , SpanId: ] ==> Parameters: 1016971499387228160(Long), 1016917732260319232(Long), 0(Integer) -[DEBUG] [2020-09-27 20:57:29] 请求Id[3bf8f684f01146f782f8e83beeb4569b] [http-nio-9001-exec-1] ==> [TxId: , SpanId: ] <== Updates: 1 -[INFO ] [2020-09-27 20:57:29] 请求Id[3bf8f684f01146f782f8e83beeb4569b] [http-nio-9001-exec-1] ==> [TxId: , SpanId: ] 请求完成, app=, url=/studentClass/addClassCourse,elapse=124ms, respData={"errorCode":"NO-ERROR","errorMessage":"NO-MESSAGE","success":true} -[INFO ] [2020-09-27 20:57:30] 请求Id[79a68fb7084b4b4b9243d898e613d6a3] [http-nio-9001-exec-2] ==> [TxId: , SpanId: ] 开始请求,app=, url=/studentClass/listNotInClassCourse, reqData=[1016971499387228160,{},null,{"pageNum":1,"pageSize":10}] -[DEBUG] [2020-09-27 20:57:30] 请求Id[79a68fb7084b4b4b9243d898e613d6a3] [http-nio-9001-exec-2] ==> [TxId: , SpanId: ] ==> Preparing: SELECT class_id,class_name,school_id,leader_id,finish_class_hour,class_level,create_user_id,create_time,status FROM zz_class WHERE ( ( class_id = ? and status = ? ) ) -[DEBUG] [2020-09-27 20:57:30] 请求Id[79a68fb7084b4b4b9243d898e613d6a3] [http-nio-9001-exec-2] ==> [TxId: , SpanId: ] ==> Parameters: 1016971499387228160(Long), 1(Integer) -[DEBUG] [2020-09-27 20:57:30] 请求Id[79a68fb7084b4b4b9243d898e613d6a3] [http-nio-9001-exec-2] ==> [TxId: , SpanId: ] <== Total: 1 -[DEBUG] [2020-09-27 20:57:30] 请求Id[79a68fb7084b4b4b9243d898e613d6a3] [http-nio-9001-exec-2] ==> [TxId: , SpanId: ] ==> Preparing: SELECT count(0) FROM zz_course WHERE NOT EXISTS (SELECT * FROM zz_class_course WHERE zz_class_course.class_id = ? AND zz_class_course.course_id = zz_course.course_id) -[DEBUG] [2020-09-27 20:57:30] 请求Id[79a68fb7084b4b4b9243d898e613d6a3] [http-nio-9001-exec-2] ==> [TxId: , SpanId: ] ==> Parameters: 1016971499387228160(Long) -[DEBUG] [2020-09-27 20:57:30] 请求Id[79a68fb7084b4b4b9243d898e613d6a3] [http-nio-9001-exec-2] ==> [TxId: , SpanId: ] <== Total: 1 -[DEBUG] [2020-09-27 20:57:30] 请求Id[79a68fb7084b4b4b9243d898e613d6a3] [http-nio-9001-exec-2] ==> [TxId: , SpanId: ] ==> Preparing: SELECT zz_course.* FROM zz_course WHERE NOT EXISTS (SELECT * FROM zz_class_course WHERE zz_class_course.class_id = ? AND zz_class_course.course_id = zz_course.course_id) LIMIT ? -[DEBUG] [2020-09-27 20:57:30] 请求Id[79a68fb7084b4b4b9243d898e613d6a3] [http-nio-9001-exec-2] ==> [TxId: , SpanId: ] ==> Parameters: 1016971499387228160(Long), 10(Integer) -[DEBUG] [2020-09-27 20:57:30] 请求Id[79a68fb7084b4b4b9243d898e613d6a3] [http-nio-9001-exec-2] ==> [TxId: , SpanId: ] <== Total: 10 -[INFO ] [2020-09-27 20:57:30] 请求Id[79a68fb7084b4b4b9243d898e613d6a3] [http-nio-9001-exec-2] ==> [TxId: , SpanId: ] 请求完成, app=, url=/studentClass/listNotInClassCourse,elapse=147ms, respData={"data":{"dataList":[{"classHour":27,"courseId":1016917900699373568,"courseName":"小学四年级语文课程","createTime":1601136000000,"createUserId":1093809448606765057,"description":"小学四年级语文课程","difficulty":1,"difficultyDictMap":{"name":"普通","id":1},"gradeId":4,"gradeIdDictMap":{"name":"四年级","id":4},"pictureUrl":"[{\"name\":\"IMG_0002.JPG\",\"downloadUri\":\"/admin/coursepaper/course/download\",\"filename\":\"7358b520e31e4ee0b2b8c4f9c31614d9.JPG\"}]","price":888.00,"subjectId":0,"subjectIdDictMap":{"name":"语文","id":0},"updateTime":1601136000000},{"classHour":30,"courseId":1016918360520921088,"courseName":"小学五年级语文课程","createTime":1601136000000,"createUserId":1093809448606765057,"description":"小学五年级语文课程","difficulty":2,"difficultyDictMap":{"name":"困难","id":2},"gradeId":5,"gradeIdDictMap":{"name":"五年级","id":5},"pictureUrl":"[{\"name\":\"IMG_0004.JPG\",\"downloadUri\":\"/admin/coursepaper/course/download\",\"filename\":\"cf804a5e14fb498fa8bf3745cad39bca.JPG\"}]","price":1199.00,"subjectId":0,"subjectIdDictMap":{"name":"语文","id":0},"updateTime":1601136000000},{"classHour":32,"courseId":1016918605715738624,"courseName":"小学六年级语文课程","createTime":1601136000000,"createUserId":1093809448606765057,"description":"小学六年级语文课程","difficulty":2,"difficultyDictMap":{"name":"困难","id":2},"gradeId":6,"gradeIdDictMap":{"name":"六年级","id":6},"pictureUrl":"[{\"name\":\"IMG_0006.JPG\",\"downloadUri\":\"/admin/coursepaper/course/download\",\"filename\":\"a0d0476fac9c46f08b7ebef597b8765a.JPG\"}]","price":1288.00,"subjectId":0,"subjectIdDictMap":{"name":"语文","id":0},"updateTime":1601136000000},{"classHour":20,"courseId":1016918836729614336,"courseName":"天津小学一年级语文课程","createTime":1601136000000,"createUserId":1093809448606765057,"description":"天津小学一年级语文课程","difficulty":0,"difficultyDictMap":{"name":"容易","id":0},"gradeId":1,"gradeIdDictMap":{"name":"一年级","id":1},"pictureUrl":"[{\"name\":\"IMG_0003.JPG\",\"downloadUri\":\"/admin/coursepaper/course/download\",\"filename\":\"7f64971a69944b0082f21a6036c31efd.JPG\"}]","price":300.00,"subjectId":0,"subjectIdDictMap":{"name":"语文","id":0},"updateTime":1601136000000},{"classHour":20,"courseId":1016920152549888000,"courseName":"天津小学二年级语文课程","createTime":1601136000000,"createUserId":1093809448606765057,"description":"天津小学二年级语文课程","difficulty":1,"difficultyDictMap":{"name":"普通","id":1},"gradeId":2,"gradeIdDictMap":{"name":"二年级","id":2},"pictureUrl":"[{\"name\":\"IMG_0007.JPG\",\"downloadUri\":\"/admin/coursepaper/course/download\",\"filename\":\"4baf08c1da8741bb808caf09475e49a9.JPG\"}]","price":699.00,"subjectId":0,"subjectIdDictMap":{"name":"语文","id":0},"updateTime":1601136000000},{"classHour":25,"courseId":1016920339255136256,"courseName":"天津小学三年级语文课程","createTime":1601136000000,"createUserId":1093809448606765057,"description":"天津小学三年级语文课程","difficulty":1,"difficultyDictMap":{"name":"普通","id":1},"gradeId":3,"gradeIdDictMap":{"name":"三年级","id":3},"pictureUrl":"[{\"name\":\"IMG_0009.JPG\",\"downloadUri\":\"/admin/coursepaper/course/download\",\"filename\":\"6bc1eaab831d49708e4b1e0a5d657d61.JPG\"}]","price":998.00,"subjectId":0,"subjectIdDictMap":{"name":"语文","id":0},"updateTime":1601208474000},{"classHour":20,"courseId":1016921053566078976,"courseName":"小学数学二年级课程","createTime":1601136000000,"createUserId":1093809448606765057,"description":"小学数学二年级课程","difficulty":0,"difficultyDictMap":{"name":"容易","id":0},"gradeId":2,"gradeIdDictMap":{"name":"二年级","id":2},"pictureUrl":"[{\"name\":\"shuxue2.jpg\",\"downloadUri\":\"/admin/app/course/download\",\"filename\":\"7a1fdc70976f4820aa019f91514de272.jpg\"}]","price":700.00,"subjectId":1,"subjectIdDictMap":{"name":"数学","id":1},"updateTime":1601136000000},{"classHour":20,"courseId":1016921250996162560,"courseName":"小学数学三年级课程","createTime":1601136000000,"createUserId":1093809448606765057,"description":"小学数学三年级课程","difficulty":1,"difficultyDictMap":{"name":"普通","id":1},"gradeId":3,"gradeIdDictMap":{"name":"三年级","id":3},"pictureUrl":"[{\"name\":\"shuxue.jpg\",\"downloadUri\":\"/admin/app/course/download\",\"filename\":\"f14c0f101146453c80607230e842f1c9.jpg\"},{\"name\":\"shuxue2.jpg\",\"downloadUri\":\"/admin/app/course/download\",\"filename\":\"b8451e95fa314facaa8a3cd720888574.jpg\"}]","price":700.00,"subjectId":1,"subjectIdDictMap":{"name":"数学","id":1},"updateTime":1601136000000},{"classHour":21,"courseId":1016921446102601728,"courseName":"小学数学四年级课程","createTime":1601136000000,"createUserId":1093809448606765057,"description":"小学数学四年级课程","difficulty":1,"difficultyDictMap":{"name":"普通","id":1},"gradeId":4,"gradeIdDictMap":{"name":"四年级","id":4},"pictureUrl":"[{\"name\":\"shuxue2.jpg\",\"downloadUri\":\"/admin/app/course/download\",\"filename\":\"78e1cac8c4284c8a82c7ea4bef5162a4.jpg\"}]","price":800.00,"subjectId":1,"subjectIdDictMap":{"name":"数学","id":1},"updateTime":1601136000000},{"classHour":25,"courseId":1016921667582824448,"courseName":"小学数学五年级课程","createTime":1601136000000,"createUserId":1093809448606765057,"description":"小学数学五年级课程","difficulty":2,"difficultyDictMap":{"name":"困难","id":2},"gradeId":5,"gradeIdDictMap":{"name":"五年级","id":5},"pictureUrl":"[{\"name\":\"shuxue.jpg\",\"downloadUri\":\"/admin/app/course/download\",\"filename\":\"167967c0c025406483861eed038111a0.jpg\"}]","price":900.00,"subjectId":1,"subjectIdDictMap":{"name":"数学","id":1},"updateTime":1601136000000}],"totalCount":22},"errorCode":"NO-ERROR","errorMessage":"NO-MESSAGE","success":true} -[INFO ] [2020-09-27 20:57:32] 请求Id[9bb6a2ffd6eb4cb8af0b699b7618e9c1] [http-nio-9001-exec-3] ==> [TxId: , SpanId: ] 开始请求,app=, url=/studentClass/listClassCourse, reqData=[1016971499387228160,null,null,{"pageNum":1,"pageSize":10}] -[DEBUG] [2020-09-27 20:57:32] 请求Id[9bb6a2ffd6eb4cb8af0b699b7618e9c1] [http-nio-9001-exec-3] ==> [TxId: , SpanId: ] ==> Preparing: SELECT class_id,class_name,school_id,leader_id,finish_class_hour,class_level,create_user_id,create_time,status FROM zz_class WHERE ( ( class_id = ? and status = ? ) ) -[DEBUG] [2020-09-27 20:57:32] 请求Id[9bb6a2ffd6eb4cb8af0b699b7618e9c1] [http-nio-9001-exec-3] ==> [TxId: , SpanId: ] ==> Parameters: 1016971499387228160(Long), 1(Integer) -[DEBUG] [2020-09-27 20:57:32] 请求Id[9bb6a2ffd6eb4cb8af0b699b7618e9c1] [http-nio-9001-exec-3] ==> [TxId: , SpanId: ] <== Total: 1 -[DEBUG] [2020-09-27 20:57:32] 请求Id[9bb6a2ffd6eb4cb8af0b699b7618e9c1] [http-nio-9001-exec-3] ==> [TxId: , SpanId: ] ==> Preparing: SELECT count(0) FROM zz_course, zz_class_course WHERE zz_class_course.class_id = ? AND zz_class_course.course_id = zz_course.course_id -[DEBUG] [2020-09-27 20:57:32] 请求Id[9bb6a2ffd6eb4cb8af0b699b7618e9c1] [http-nio-9001-exec-3] ==> [TxId: , SpanId: ] ==> Parameters: 1016971499387228160(Long) -[DEBUG] [2020-09-27 20:57:32] 请求Id[9bb6a2ffd6eb4cb8af0b699b7618e9c1] [http-nio-9001-exec-3] ==> [TxId: , SpanId: ] <== Total: 1 -[DEBUG] [2020-09-27 20:57:32] 请求Id[9bb6a2ffd6eb4cb8af0b699b7618e9c1] [http-nio-9001-exec-3] ==> [TxId: , SpanId: ] ==> Preparing: SELECT zz_course.* FROM zz_course, zz_class_course WHERE zz_class_course.class_id = ? AND zz_class_course.course_id = zz_course.course_id LIMIT ? -[DEBUG] [2020-09-27 20:57:32] 请求Id[9bb6a2ffd6eb4cb8af0b699b7618e9c1] [http-nio-9001-exec-3] ==> [TxId: , SpanId: ] ==> Parameters: 1016971499387228160(Long), 10(Integer) -[DEBUG] [2020-09-27 20:57:32] 请求Id[9bb6a2ffd6eb4cb8af0b699b7618e9c1] [http-nio-9001-exec-3] ==> [TxId: , SpanId: ] <== Total: 5 -[INFO ] [2020-09-27 20:57:32] 请求Id[9bb6a2ffd6eb4cb8af0b699b7618e9c1] [http-nio-9001-exec-3] ==> [TxId: , SpanId: ] 请求完成, app=, url=/studentClass/listClassCourse,elapse=28ms, respData={"data":{"dataList":[{"classHour":10,"courseId":1016699195411402752,"courseName":"小学一年级拼音基础练习","createTime":1601136000000,"createUserId":1093809448606765057,"description":"小学一年级拼音基础练习","difficulty":0,"difficultyDictMap":{"name":"容易","id":0},"gradeId":1,"gradeIdDictMap":{"name":"一年级","id":1},"pictureUrl":"[{\"name\":\"IMG_0003.JPG\",\"downloadUri\":\"/admin/coursepaper/course/download\",\"filename\":\"b09ef09478d8452d908600ff98b6f1ce.JPG\"}]","price":299.00,"subjectId":0,"subjectIdDictMap":{"name":"语文","id":0},"updateTime":1601136000000},{"classHour":25,"courseId":1016917385529790464,"courseName":"小学二年级语文课程","createTime":1601136000000,"createUserId":1093809448606765057,"description":"小学二年级课程","difficulty":1,"difficultyDictMap":{"name":"普通","id":1},"gradeId":2,"gradeIdDictMap":{"name":"二年级","id":2},"pictureUrl":"[{\"name\":\"IMG_0455.JPG\",\"downloadUri\":\"/admin/coursepaper/course/download\",\"filename\":\"79651a658e88408888f847366fbf98d0.JPG\"}]","price":980.00,"subjectId":0,"subjectIdDictMap":{"name":"语文","id":0},"updateTime":1601136000000},{"classHour":30,"courseId":1016917732260319232,"courseName":"小学三年级语文课程","createTime":1601136000000,"createUserId":1093809448606765057,"description":"小学三年级语文课程","difficulty":1,"difficultyDictMap":{"name":"普通","id":1},"gradeId":3,"gradeIdDictMap":{"name":"三年级","id":3},"pictureUrl":"[{\"name\":\"IMG_0001.JPG\",\"downloadUri\":\"/admin/coursepaper/course/download\",\"filename\":\"0d11548eb91142d49a9253c0060d3f94.JPG\"}]","price":1080.00,"subjectId":0,"subjectIdDictMap":{"name":"语文","id":0},"updateTime":1601208479000},{"classHour":15,"courseId":1016920878164480000,"courseName":"小学数学一年级课程","createTime":1601136000000,"createUserId":1093809448606765057,"description":"小学数学一年级课程","difficulty":0,"difficultyDictMap":{"name":"容易","id":0},"gradeId":1,"gradeIdDictMap":{"name":"一年级","id":1},"pictureUrl":"[{\"name\":\"IMG_0010.JPG\",\"downloadUri\":\"/admin/coursepaper/course/download\",\"filename\":\"7e9583aba9594a98b1e0268837d2a5d0.JPG\"}]","price":388.00,"subjectId":1,"subjectIdDictMap":{"name":"数学","id":1},"updateTime":1601136000000},{"classHour":15,"courseId":1016923276064854016,"courseName":"小学英语一年级课程","createTime":1601136000000,"createUserId":1093809448606765057,"description":"小学英语一年级课程","difficulty":0,"difficultyDictMap":{"name":"容易","id":0},"gradeId":1,"gradeIdDictMap":{"name":"一年级","id":1},"pictureUrl":"[{\"name\":\"english.jpg\",\"downloadUri\":\"/admin/app/course/download\",\"filename\":\"44177c3674f543fda24222b8297ef203.jpg\"}]","price":399.00,"subjectId":2,"subjectIdDictMap":{"name":"英语","id":2},"updateTime":1601136000000}],"totalCount":5},"errorCode":"NO-ERROR","errorMessage":"NO-MESSAGE","success":true} -[INFO ] [2020-09-27 20:57:39] 请求Id[2afbd5f076e3405980f8ccfe2b8565ad] [http-nio-9001-exec-4] ==> [TxId: , SpanId: ] 开始请求,app=, url=/studentClass/deleteClassCourse, reqData=[1016971499387228160,1016917732260319232] -[DEBUG] [2020-09-27 20:57:39] 请求Id[2afbd5f076e3405980f8ccfe2b8565ad] [http-nio-9001-exec-4] ==> [TxId: , SpanId: ] ==> Preparing: DELETE FROM zz_class_course WHERE class_id = ? AND course_id = ? -[DEBUG] [2020-09-27 20:57:39] 请求Id[2afbd5f076e3405980f8ccfe2b8565ad] [http-nio-9001-exec-4] ==> [TxId: , SpanId: ] ==> Parameters: 1016971499387228160(Long), 1016917732260319232(Long) -[DEBUG] [2020-09-27 20:57:39] 请求Id[2afbd5f076e3405980f8ccfe2b8565ad] [http-nio-9001-exec-4] ==> [TxId: , SpanId: ] <== Updates: 1 -[INFO ] [2020-09-27 20:57:39] 请求Id[2afbd5f076e3405980f8ccfe2b8565ad] [http-nio-9001-exec-4] ==> [TxId: , SpanId: ] 请求完成, app=, url=/studentClass/deleteClassCourse,elapse=8ms, respData={"errorCode":"NO-ERROR","errorMessage":"NO-MESSAGE","success":true} -[INFO ] [2020-09-27 20:57:39] 请求Id[9dbdfe4aa6cf4f99a88c17909627a834] [http-nio-9001-exec-5] ==> [TxId: , SpanId: ] 开始请求,app=, url=/studentClass/listClassCourse, reqData=[1016971499387228160,null,null,{"pageNum":1,"pageSize":10}] -[DEBUG] [2020-09-27 20:57:39] 请求Id[9dbdfe4aa6cf4f99a88c17909627a834] [http-nio-9001-exec-5] ==> [TxId: , SpanId: ] ==> Preparing: SELECT class_id,class_name,school_id,leader_id,finish_class_hour,class_level,create_user_id,create_time,status FROM zz_class WHERE ( ( class_id = ? and status = ? ) ) -[DEBUG] [2020-09-27 20:57:39] 请求Id[9dbdfe4aa6cf4f99a88c17909627a834] [http-nio-9001-exec-5] ==> [TxId: , SpanId: ] ==> Parameters: 1016971499387228160(Long), 1(Integer) -[DEBUG] [2020-09-27 20:57:39] 请求Id[9dbdfe4aa6cf4f99a88c17909627a834] [http-nio-9001-exec-5] ==> [TxId: , SpanId: ] <== Total: 1 -[DEBUG] [2020-09-27 20:57:39] 请求Id[9dbdfe4aa6cf4f99a88c17909627a834] [http-nio-9001-exec-5] ==> [TxId: , SpanId: ] ==> Preparing: SELECT count(0) FROM zz_course, zz_class_course WHERE zz_class_course.class_id = ? AND zz_class_course.course_id = zz_course.course_id -[DEBUG] [2020-09-27 20:57:39] 请求Id[9dbdfe4aa6cf4f99a88c17909627a834] [http-nio-9001-exec-5] ==> [TxId: , SpanId: ] ==> Parameters: 1016971499387228160(Long) -[DEBUG] [2020-09-27 20:57:39] 请求Id[9dbdfe4aa6cf4f99a88c17909627a834] [http-nio-9001-exec-5] ==> [TxId: , SpanId: ] <== Total: 1 -[DEBUG] [2020-09-27 20:57:39] 请求Id[9dbdfe4aa6cf4f99a88c17909627a834] [http-nio-9001-exec-5] ==> [TxId: , SpanId: ] ==> Preparing: SELECT zz_course.* FROM zz_course, zz_class_course WHERE zz_class_course.class_id = ? AND zz_class_course.course_id = zz_course.course_id LIMIT ? -[DEBUG] [2020-09-27 20:57:39] 请求Id[9dbdfe4aa6cf4f99a88c17909627a834] [http-nio-9001-exec-5] ==> [TxId: , SpanId: ] ==> Parameters: 1016971499387228160(Long), 10(Integer) -[DEBUG] [2020-09-27 20:57:39] 请求Id[9dbdfe4aa6cf4f99a88c17909627a834] [http-nio-9001-exec-5] ==> [TxId: , SpanId: ] <== Total: 4 -[INFO ] [2020-09-27 20:57:39] 请求Id[9dbdfe4aa6cf4f99a88c17909627a834] [http-nio-9001-exec-5] ==> [TxId: , SpanId: ] 请求完成, app=, url=/studentClass/listClassCourse,elapse=25ms, respData={"data":{"dataList":[{"classHour":10,"courseId":1016699195411402752,"courseName":"小学一年级拼音基础练习","createTime":1601136000000,"createUserId":1093809448606765057,"description":"小学一年级拼音基础练习","difficulty":0,"difficultyDictMap":{"name":"容易","id":0},"gradeId":1,"gradeIdDictMap":{"name":"一年级","id":1},"pictureUrl":"[{\"name\":\"IMG_0003.JPG\",\"downloadUri\":\"/admin/coursepaper/course/download\",\"filename\":\"b09ef09478d8452d908600ff98b6f1ce.JPG\"}]","price":299.00,"subjectId":0,"subjectIdDictMap":{"name":"语文","id":0},"updateTime":1601136000000},{"classHour":25,"courseId":1016917385529790464,"courseName":"小学二年级语文课程","createTime":1601136000000,"createUserId":1093809448606765057,"description":"小学二年级课程","difficulty":1,"difficultyDictMap":{"name":"普通","id":1},"gradeId":2,"gradeIdDictMap":{"name":"二年级","id":2},"pictureUrl":"[{\"name\":\"IMG_0455.JPG\",\"downloadUri\":\"/admin/coursepaper/course/download\",\"filename\":\"79651a658e88408888f847366fbf98d0.JPG\"}]","price":980.00,"subjectId":0,"subjectIdDictMap":{"name":"语文","id":0},"updateTime":1601136000000},{"classHour":15,"courseId":1016920878164480000,"courseName":"小学数学一年级课程","createTime":1601136000000,"createUserId":1093809448606765057,"description":"小学数学一年级课程","difficulty":0,"difficultyDictMap":{"name":"容易","id":0},"gradeId":1,"gradeIdDictMap":{"name":"一年级","id":1},"pictureUrl":"[{\"name\":\"IMG_0010.JPG\",\"downloadUri\":\"/admin/coursepaper/course/download\",\"filename\":\"7e9583aba9594a98b1e0268837d2a5d0.JPG\"}]","price":388.00,"subjectId":1,"subjectIdDictMap":{"name":"数学","id":1},"updateTime":1601136000000},{"classHour":15,"courseId":1016923276064854016,"courseName":"小学英语一年级课程","createTime":1601136000000,"createUserId":1093809448606765057,"description":"小学英语一年级课程","difficulty":0,"difficultyDictMap":{"name":"容易","id":0},"gradeId":1,"gradeIdDictMap":{"name":"一年级","id":1},"pictureUrl":"[{\"name\":\"english.jpg\",\"downloadUri\":\"/admin/app/course/download\",\"filename\":\"44177c3674f543fda24222b8297ef203.jpg\"}]","price":399.00,"subjectId":2,"subjectIdDictMap":{"name":"英语","id":2},"updateTime":1601136000000}],"totalCount":4},"errorCode":"NO-ERROR","errorMessage":"NO-MESSAGE","success":true} -[INFO ] [2020-09-27 20:57:41] 请求Id[c6aa5b57a77c4f329fd5fee2310b0ef9] [http-nio-9001-exec-6] ==> [TxId: , SpanId: ] 开始请求,app=, url=/studentClass/listNotInClassCourse, reqData=[1016971499387228160,{},null,{"pageNum":1,"pageSize":10}] -[DEBUG] [2020-09-27 20:57:41] 请求Id[c6aa5b57a77c4f329fd5fee2310b0ef9] [http-nio-9001-exec-6] ==> [TxId: , SpanId: ] ==> Preparing: SELECT class_id,class_name,school_id,leader_id,finish_class_hour,class_level,create_user_id,create_time,status FROM zz_class WHERE ( ( class_id = ? and status = ? ) ) -[DEBUG] [2020-09-27 20:57:41] 请求Id[c6aa5b57a77c4f329fd5fee2310b0ef9] [http-nio-9001-exec-6] ==> [TxId: , SpanId: ] ==> Parameters: 1016971499387228160(Long), 1(Integer) -[DEBUG] [2020-09-27 20:57:41] 请求Id[c6aa5b57a77c4f329fd5fee2310b0ef9] [http-nio-9001-exec-6] ==> [TxId: , SpanId: ] <== Total: 1 -[DEBUG] [2020-09-27 20:57:41] 请求Id[c6aa5b57a77c4f329fd5fee2310b0ef9] [http-nio-9001-exec-6] ==> [TxId: , SpanId: ] ==> Preparing: SELECT count(0) FROM zz_course WHERE NOT EXISTS (SELECT * FROM zz_class_course WHERE zz_class_course.class_id = ? AND zz_class_course.course_id = zz_course.course_id) -[DEBUG] [2020-09-27 20:57:41] 请求Id[c6aa5b57a77c4f329fd5fee2310b0ef9] [http-nio-9001-exec-6] ==> [TxId: , SpanId: ] ==> Parameters: 1016971499387228160(Long) -[DEBUG] [2020-09-27 20:57:41] 请求Id[c6aa5b57a77c4f329fd5fee2310b0ef9] [http-nio-9001-exec-6] ==> [TxId: , SpanId: ] <== Total: 1 -[DEBUG] [2020-09-27 20:57:41] 请求Id[c6aa5b57a77c4f329fd5fee2310b0ef9] [http-nio-9001-exec-6] ==> [TxId: , SpanId: ] ==> Preparing: SELECT zz_course.* FROM zz_course WHERE NOT EXISTS (SELECT * FROM zz_class_course WHERE zz_class_course.class_id = ? AND zz_class_course.course_id = zz_course.course_id) LIMIT ? -[DEBUG] [2020-09-27 20:57:41] 请求Id[c6aa5b57a77c4f329fd5fee2310b0ef9] [http-nio-9001-exec-6] ==> [TxId: , SpanId: ] ==> Parameters: 1016971499387228160(Long), 10(Integer) -[DEBUG] [2020-09-27 20:57:41] 请求Id[c6aa5b57a77c4f329fd5fee2310b0ef9] [http-nio-9001-exec-6] ==> [TxId: , SpanId: ] <== Total: 10 -[INFO ] [2020-09-27 20:57:41] 请求Id[c6aa5b57a77c4f329fd5fee2310b0ef9] [http-nio-9001-exec-6] ==> [TxId: , SpanId: ] 请求完成, app=, url=/studentClass/listNotInClassCourse,elapse=56ms, respData={"data":{"dataList":[{"classHour":30,"courseId":1016917732260319232,"courseName":"小学三年级语文课程","createTime":1601136000000,"createUserId":1093809448606765057,"description":"小学三年级语文课程","difficulty":1,"difficultyDictMap":{"name":"普通","id":1},"gradeId":3,"gradeIdDictMap":{"name":"三年级","id":3},"pictureUrl":"[{\"name\":\"IMG_0001.JPG\",\"downloadUri\":\"/admin/coursepaper/course/download\",\"filename\":\"0d11548eb91142d49a9253c0060d3f94.JPG\"}]","price":1080.00,"subjectId":0,"subjectIdDictMap":{"name":"语文","id":0},"updateTime":1601208479000},{"classHour":27,"courseId":1016917900699373568,"courseName":"小学四年级语文课程","createTime":1601136000000,"createUserId":1093809448606765057,"description":"小学四年级语文课程","difficulty":1,"difficultyDictMap":{"name":"普通","id":1},"gradeId":4,"gradeIdDictMap":{"name":"四年级","id":4},"pictureUrl":"[{\"name\":\"IMG_0002.JPG\",\"downloadUri\":\"/admin/coursepaper/course/download\",\"filename\":\"7358b520e31e4ee0b2b8c4f9c31614d9.JPG\"}]","price":888.00,"subjectId":0,"subjectIdDictMap":{"name":"语文","id":0},"updateTime":1601136000000},{"classHour":30,"courseId":1016918360520921088,"courseName":"小学五年级语文课程","createTime":1601136000000,"createUserId":1093809448606765057,"description":"小学五年级语文课程","difficulty":2,"difficultyDictMap":{"name":"困难","id":2},"gradeId":5,"gradeIdDictMap":{"name":"五年级","id":5},"pictureUrl":"[{\"name\":\"IMG_0004.JPG\",\"downloadUri\":\"/admin/coursepaper/course/download\",\"filename\":\"cf804a5e14fb498fa8bf3745cad39bca.JPG\"}]","price":1199.00,"subjectId":0,"subjectIdDictMap":{"name":"语文","id":0},"updateTime":1601136000000},{"classHour":32,"courseId":1016918605715738624,"courseName":"小学六年级语文课程","createTime":1601136000000,"createUserId":1093809448606765057,"description":"小学六年级语文课程","difficulty":2,"difficultyDictMap":{"name":"困难","id":2},"gradeId":6,"gradeIdDictMap":{"name":"六年级","id":6},"pictureUrl":"[{\"name\":\"IMG_0006.JPG\",\"downloadUri\":\"/admin/coursepaper/course/download\",\"filename\":\"a0d0476fac9c46f08b7ebef597b8765a.JPG\"}]","price":1288.00,"subjectId":0,"subjectIdDictMap":{"name":"语文","id":0},"updateTime":1601136000000},{"classHour":20,"courseId":1016918836729614336,"courseName":"天津小学一年级语文课程","createTime":1601136000000,"createUserId":1093809448606765057,"description":"天津小学一年级语文课程","difficulty":0,"difficultyDictMap":{"name":"容易","id":0},"gradeId":1,"gradeIdDictMap":{"name":"一年级","id":1},"pictureUrl":"[{\"name\":\"IMG_0003.JPG\",\"downloadUri\":\"/admin/coursepaper/course/download\",\"filename\":\"7f64971a69944b0082f21a6036c31efd.JPG\"}]","price":300.00,"subjectId":0,"subjectIdDictMap":{"name":"语文","id":0},"updateTime":1601136000000},{"classHour":20,"courseId":1016920152549888000,"courseName":"天津小学二年级语文课程","createTime":1601136000000,"createUserId":1093809448606765057,"description":"天津小学二年级语文课程","difficulty":1,"difficultyDictMap":{"name":"普通","id":1},"gradeId":2,"gradeIdDictMap":{"name":"二年级","id":2},"pictureUrl":"[{\"name\":\"IMG_0007.JPG\",\"downloadUri\":\"/admin/coursepaper/course/download\",\"filename\":\"4baf08c1da8741bb808caf09475e49a9.JPG\"}]","price":699.00,"subjectId":0,"subjectIdDictMap":{"name":"语文","id":0},"updateTime":1601136000000},{"classHour":25,"courseId":1016920339255136256,"courseName":"天津小学三年级语文课程","createTime":1601136000000,"createUserId":1093809448606765057,"description":"天津小学三年级语文课程","difficulty":1,"difficultyDictMap":{"name":"普通","id":1},"gradeId":3,"gradeIdDictMap":{"name":"三年级","id":3},"pictureUrl":"[{\"name\":\"IMG_0009.JPG\",\"downloadUri\":\"/admin/coursepaper/course/download\",\"filename\":\"6bc1eaab831d49708e4b1e0a5d657d61.JPG\"}]","price":998.00,"subjectId":0,"subjectIdDictMap":{"name":"语文","id":0},"updateTime":1601208474000},{"classHour":20,"courseId":1016921053566078976,"courseName":"小学数学二年级课程","createTime":1601136000000,"createUserId":1093809448606765057,"description":"小学数学二年级课程","difficulty":0,"difficultyDictMap":{"name":"容易","id":0},"gradeId":2,"gradeIdDictMap":{"name":"二年级","id":2},"pictureUrl":"[{\"name\":\"shuxue2.jpg\",\"downloadUri\":\"/admin/app/course/download\",\"filename\":\"7a1fdc70976f4820aa019f91514de272.jpg\"}]","price":700.00,"subjectId":1,"subjectIdDictMap":{"name":"数学","id":1},"updateTime":1601136000000},{"classHour":20,"courseId":1016921250996162560,"courseName":"小学数学三年级课程","createTime":1601136000000,"createUserId":1093809448606765057,"description":"小学数学三年级课程","difficulty":1,"difficultyDictMap":{"name":"普通","id":1},"gradeId":3,"gradeIdDictMap":{"name":"三年级","id":3},"pictureUrl":"[{\"name\":\"shuxue.jpg\",\"downloadUri\":\"/admin/app/course/download\",\"filename\":\"f14c0f101146453c80607230e842f1c9.jpg\"},{\"name\":\"shuxue2.jpg\",\"downloadUri\":\"/admin/app/course/download\",\"filename\":\"b8451e95fa314facaa8a3cd720888574.jpg\"}]","price":700.00,"subjectId":1,"subjectIdDictMap":{"name":"数学","id":1},"updateTime":1601136000000},{"classHour":21,"courseId":1016921446102601728,"courseName":"小学数学四年级课程","createTime":1601136000000,"createUserId":1093809448606765057,"description":"小学数学四年级课程","difficulty":1,"difficultyDictMap":{"name":"普通","id":1},"gradeId":4,"gradeIdDictMap":{"name":"四年级","id":4},"pictureUrl":"[{\"name\":\"shuxue2.jpg\",\"downloadUri\":\"/admin/app/course/download\",\"filename\":\"78e1cac8c4284c8a82c7ea4bef5162a4.jpg\"}]","price":800.00,"subjectId":1,"subjectIdDictMap":{"name":"数学","id":1},"updateTime":1601136000000}],"totalCount":23},"errorCode":"NO-ERROR","errorMessage":"NO-MESSAGE","success":true} -[INFO ] [2020-09-27 20:57:44] 请求Id[c99dad15534c4b56b4b0fc5d2c8a72e8] [http-nio-9001-exec-7] ==> [TxId: , SpanId: ] 开始请求,app=, url=/studentClass/addClassCourse, reqData=[1016971499387228160,[{"courseId":1016917732260319232}]] -[DEBUG] [2020-09-27 20:57:44] 请求Id[c99dad15534c4b56b4b0fc5d2c8a72e8] [http-nio-9001-exec-7] ==> [TxId: , SpanId: ] ==> Preparing: SELECT class_id,class_name,school_id,leader_id,finish_class_hour,class_level,create_user_id,create_time,status FROM zz_class WHERE ( ( class_id = ? and status = ? ) ) -[DEBUG] [2020-09-27 20:57:44] 请求Id[c99dad15534c4b56b4b0fc5d2c8a72e8] [http-nio-9001-exec-7] ==> [TxId: , SpanId: ] ==> Parameters: 1016971499387228160(Long), 1(Integer) -[DEBUG] [2020-09-27 20:57:44] 请求Id[c99dad15534c4b56b4b0fc5d2c8a72e8] [http-nio-9001-exec-7] ==> [TxId: , SpanId: ] <== Total: 1 -[DEBUG] [2020-09-27 20:57:44] 请求Id[c99dad15534c4b56b4b0fc5d2c8a72e8] [http-nio-9001-exec-7] ==> [TxId: , SpanId: ] ==> Preparing: SELECT COUNT(*) FROM zz_course WHERE ( ( course_id in ( ? ) ) ) -[DEBUG] [2020-09-27 20:57:44] 请求Id[c99dad15534c4b56b4b0fc5d2c8a72e8] [http-nio-9001-exec-7] ==> [TxId: , SpanId: ] ==> Parameters: 1016917732260319232(Long) -[DEBUG] [2020-09-27 20:57:44] 请求Id[c99dad15534c4b56b4b0fc5d2c8a72e8] [http-nio-9001-exec-7] ==> [TxId: , SpanId: ] <== Total: 1 -[DEBUG] [2020-09-27 20:57:44] 请求Id[c99dad15534c4b56b4b0fc5d2c8a72e8] [http-nio-9001-exec-7] ==> [TxId: , SpanId: ] ==> Preparing: INSERT INTO zz_class_course ( class_id,course_id,course_order ) VALUES ( ?,?,? ) -[DEBUG] [2020-09-27 20:57:44] 请求Id[c99dad15534c4b56b4b0fc5d2c8a72e8] [http-nio-9001-exec-7] ==> [TxId: , SpanId: ] ==> Parameters: 1016971499387228160(Long), 1016917732260319232(Long), 0(Integer) -[DEBUG] [2020-09-27 20:57:44] 请求Id[c99dad15534c4b56b4b0fc5d2c8a72e8] [http-nio-9001-exec-7] ==> [TxId: , SpanId: ] <== Updates: 1 -[INFO ] [2020-09-27 20:57:44] 请求Id[c99dad15534c4b56b4b0fc5d2c8a72e8] [http-nio-9001-exec-7] ==> [TxId: , SpanId: ] 请求完成, app=, url=/studentClass/addClassCourse,elapse=34ms, respData={"errorCode":"NO-ERROR","errorMessage":"NO-MESSAGE","success":true} -[INFO ] [2020-09-27 20:57:44] 请求Id[1f61624648624deaa081fbc11077803b] [http-nio-9001-exec-8] ==> [TxId: , SpanId: ] 开始请求,app=, url=/studentClass/listNotInClassCourse, reqData=[1016971499387228160,{},null,{"pageNum":1,"pageSize":10}] -[DEBUG] [2020-09-27 20:57:44] 请求Id[1f61624648624deaa081fbc11077803b] [http-nio-9001-exec-8] ==> [TxId: , SpanId: ] ==> Preparing: SELECT class_id,class_name,school_id,leader_id,finish_class_hour,class_level,create_user_id,create_time,status FROM zz_class WHERE ( ( class_id = ? and status = ? ) ) -[DEBUG] [2020-09-27 20:57:44] 请求Id[1f61624648624deaa081fbc11077803b] [http-nio-9001-exec-8] ==> [TxId: , SpanId: ] ==> Parameters: 1016971499387228160(Long), 1(Integer) -[DEBUG] [2020-09-27 20:57:44] 请求Id[1f61624648624deaa081fbc11077803b] [http-nio-9001-exec-8] ==> [TxId: , SpanId: ] <== Total: 1 -[DEBUG] [2020-09-27 20:57:44] 请求Id[1f61624648624deaa081fbc11077803b] [http-nio-9001-exec-8] ==> [TxId: , SpanId: ] ==> Preparing: SELECT count(0) FROM zz_course WHERE NOT EXISTS (SELECT * FROM zz_class_course WHERE zz_class_course.class_id = ? AND zz_class_course.course_id = zz_course.course_id) -[DEBUG] [2020-09-27 20:57:44] 请求Id[1f61624648624deaa081fbc11077803b] [http-nio-9001-exec-8] ==> [TxId: , SpanId: ] ==> Parameters: 1016971499387228160(Long) -[DEBUG] [2020-09-27 20:57:44] 请求Id[1f61624648624deaa081fbc11077803b] [http-nio-9001-exec-8] ==> [TxId: , SpanId: ] <== Total: 1 -[DEBUG] [2020-09-27 20:57:44] 请求Id[1f61624648624deaa081fbc11077803b] [http-nio-9001-exec-8] ==> [TxId: , SpanId: ] ==> Preparing: SELECT zz_course.* FROM zz_course WHERE NOT EXISTS (SELECT * FROM zz_class_course WHERE zz_class_course.class_id = ? AND zz_class_course.course_id = zz_course.course_id) LIMIT ? -[DEBUG] [2020-09-27 20:57:44] 请求Id[1f61624648624deaa081fbc11077803b] [http-nio-9001-exec-8] ==> [TxId: , SpanId: ] ==> Parameters: 1016971499387228160(Long), 10(Integer) -[DEBUG] [2020-09-27 20:57:44] 请求Id[1f61624648624deaa081fbc11077803b] [http-nio-9001-exec-8] ==> [TxId: , SpanId: ] <== Total: 10 -[INFO ] [2020-09-27 20:57:44] 请求Id[1f61624648624deaa081fbc11077803b] [http-nio-9001-exec-8] ==> [TxId: , SpanId: ] 请求完成, app=, url=/studentClass/listNotInClassCourse,elapse=25ms, respData={"data":{"dataList":[{"classHour":27,"courseId":1016917900699373568,"courseName":"小学四年级语文课程","createTime":1601136000000,"createUserId":1093809448606765057,"description":"小学四年级语文课程","difficulty":1,"difficultyDictMap":{"name":"普通","id":1},"gradeId":4,"gradeIdDictMap":{"name":"四年级","id":4},"pictureUrl":"[{\"name\":\"IMG_0002.JPG\",\"downloadUri\":\"/admin/coursepaper/course/download\",\"filename\":\"7358b520e31e4ee0b2b8c4f9c31614d9.JPG\"}]","price":888.00,"subjectId":0,"subjectIdDictMap":{"name":"语文","id":0},"updateTime":1601136000000},{"classHour":30,"courseId":1016918360520921088,"courseName":"小学五年级语文课程","createTime":1601136000000,"createUserId":1093809448606765057,"description":"小学五年级语文课程","difficulty":2,"difficultyDictMap":{"name":"困难","id":2},"gradeId":5,"gradeIdDictMap":{"name":"五年级","id":5},"pictureUrl":"[{\"name\":\"IMG_0004.JPG\",\"downloadUri\":\"/admin/coursepaper/course/download\",\"filename\":\"cf804a5e14fb498fa8bf3745cad39bca.JPG\"}]","price":1199.00,"subjectId":0,"subjectIdDictMap":{"name":"语文","id":0},"updateTime":1601136000000},{"classHour":32,"courseId":1016918605715738624,"courseName":"小学六年级语文课程","createTime":1601136000000,"createUserId":1093809448606765057,"description":"小学六年级语文课程","difficulty":2,"difficultyDictMap":{"name":"困难","id":2},"gradeId":6,"gradeIdDictMap":{"name":"六年级","id":6},"pictureUrl":"[{\"name\":\"IMG_0006.JPG\",\"downloadUri\":\"/admin/coursepaper/course/download\",\"filename\":\"a0d0476fac9c46f08b7ebef597b8765a.JPG\"}]","price":1288.00,"subjectId":0,"subjectIdDictMap":{"name":"语文","id":0},"updateTime":1601136000000},{"classHour":20,"courseId":1016918836729614336,"courseName":"天津小学一年级语文课程","createTime":1601136000000,"createUserId":1093809448606765057,"description":"天津小学一年级语文课程","difficulty":0,"difficultyDictMap":{"name":"容易","id":0},"gradeId":1,"gradeIdDictMap":{"name":"一年级","id":1},"pictureUrl":"[{\"name\":\"IMG_0003.JPG\",\"downloadUri\":\"/admin/coursepaper/course/download\",\"filename\":\"7f64971a69944b0082f21a6036c31efd.JPG\"}]","price":300.00,"subjectId":0,"subjectIdDictMap":{"name":"语文","id":0},"updateTime":1601136000000},{"classHour":20,"courseId":1016920152549888000,"courseName":"天津小学二年级语文课程","createTime":1601136000000,"createUserId":1093809448606765057,"description":"天津小学二年级语文课程","difficulty":1,"difficultyDictMap":{"name":"普通","id":1},"gradeId":2,"gradeIdDictMap":{"name":"二年级","id":2},"pictureUrl":"[{\"name\":\"IMG_0007.JPG\",\"downloadUri\":\"/admin/coursepaper/course/download\",\"filename\":\"4baf08c1da8741bb808caf09475e49a9.JPG\"}]","price":699.00,"subjectId":0,"subjectIdDictMap":{"name":"语文","id":0},"updateTime":1601136000000},{"classHour":25,"courseId":1016920339255136256,"courseName":"天津小学三年级语文课程","createTime":1601136000000,"createUserId":1093809448606765057,"description":"天津小学三年级语文课程","difficulty":1,"difficultyDictMap":{"name":"普通","id":1},"gradeId":3,"gradeIdDictMap":{"name":"三年级","id":3},"pictureUrl":"[{\"name\":\"IMG_0009.JPG\",\"downloadUri\":\"/admin/coursepaper/course/download\",\"filename\":\"6bc1eaab831d49708e4b1e0a5d657d61.JPG\"}]","price":998.00,"subjectId":0,"subjectIdDictMap":{"name":"语文","id":0},"updateTime":1601208474000},{"classHour":20,"courseId":1016921053566078976,"courseName":"小学数学二年级课程","createTime":1601136000000,"createUserId":1093809448606765057,"description":"小学数学二年级课程","difficulty":0,"difficultyDictMap":{"name":"容易","id":0},"gradeId":2,"gradeIdDictMap":{"name":"二年级","id":2},"pictureUrl":"[{\"name\":\"shuxue2.jpg\",\"downloadUri\":\"/admin/app/course/download\",\"filename\":\"7a1fdc70976f4820aa019f91514de272.jpg\"}]","price":700.00,"subjectId":1,"subjectIdDictMap":{"name":"数学","id":1},"updateTime":1601136000000},{"classHour":20,"courseId":1016921250996162560,"courseName":"小学数学三年级课程","createTime":1601136000000,"createUserId":1093809448606765057,"description":"小学数学三年级课程","difficulty":1,"difficultyDictMap":{"name":"普通","id":1},"gradeId":3,"gradeIdDictMap":{"name":"三年级","id":3},"pictureUrl":"[{\"name\":\"shuxue.jpg\",\"downloadUri\":\"/admin/app/course/download\",\"filename\":\"f14c0f101146453c80607230e842f1c9.jpg\"},{\"name\":\"shuxue2.jpg\",\"downloadUri\":\"/admin/app/course/download\",\"filename\":\"b8451e95fa314facaa8a3cd720888574.jpg\"}]","price":700.00,"subjectId":1,"subjectIdDictMap":{"name":"数学","id":1},"updateTime":1601136000000},{"classHour":21,"courseId":1016921446102601728,"courseName":"小学数学四年级课程","createTime":1601136000000,"createUserId":1093809448606765057,"description":"小学数学四年级课程","difficulty":1,"difficultyDictMap":{"name":"普通","id":1},"gradeId":4,"gradeIdDictMap":{"name":"四年级","id":4},"pictureUrl":"[{\"name\":\"shuxue2.jpg\",\"downloadUri\":\"/admin/app/course/download\",\"filename\":\"78e1cac8c4284c8a82c7ea4bef5162a4.jpg\"}]","price":800.00,"subjectId":1,"subjectIdDictMap":{"name":"数学","id":1},"updateTime":1601136000000},{"classHour":25,"courseId":1016921667582824448,"courseName":"小学数学五年级课程","createTime":1601136000000,"createUserId":1093809448606765057,"description":"小学数学五年级课程","difficulty":2,"difficultyDictMap":{"name":"困难","id":2},"gradeId":5,"gradeIdDictMap":{"name":"五年级","id":5},"pictureUrl":"[{\"name\":\"shuxue.jpg\",\"downloadUri\":\"/admin/app/course/download\",\"filename\":\"167967c0c025406483861eed038111a0.jpg\"}]","price":900.00,"subjectId":1,"subjectIdDictMap":{"name":"数学","id":1},"updateTime":1601136000000}],"totalCount":22},"errorCode":"NO-ERROR","errorMessage":"NO-MESSAGE","success":true} -[INFO ] [2020-09-27 20:57:46] 请求Id[f310a125ca994acb92e89dbedbf757c3] [http-nio-9001-exec-9] ==> [TxId: , SpanId: ] 开始请求,app=, url=/studentClass/listClassCourse, reqData=[1016971499387228160,null,null,{"pageNum":1,"pageSize":10}] -[DEBUG] [2020-09-27 20:57:46] 请求Id[f310a125ca994acb92e89dbedbf757c3] [http-nio-9001-exec-9] ==> [TxId: , SpanId: ] ==> Preparing: SELECT class_id,class_name,school_id,leader_id,finish_class_hour,class_level,create_user_id,create_time,status FROM zz_class WHERE ( ( class_id = ? and status = ? ) ) -[DEBUG] [2020-09-27 20:57:46] 请求Id[f310a125ca994acb92e89dbedbf757c3] [http-nio-9001-exec-9] ==> [TxId: , SpanId: ] ==> Parameters: 1016971499387228160(Long), 1(Integer) -[DEBUG] [2020-09-27 20:57:46] 请求Id[f310a125ca994acb92e89dbedbf757c3] [http-nio-9001-exec-9] ==> [TxId: , SpanId: ] <== Total: 1 -[DEBUG] [2020-09-27 20:57:46] 请求Id[f310a125ca994acb92e89dbedbf757c3] [http-nio-9001-exec-9] ==> [TxId: , SpanId: ] ==> Preparing: SELECT count(0) FROM zz_course, zz_class_course WHERE zz_class_course.class_id = ? AND zz_class_course.course_id = zz_course.course_id -[DEBUG] [2020-09-27 20:57:46] 请求Id[f310a125ca994acb92e89dbedbf757c3] [http-nio-9001-exec-9] ==> [TxId: , SpanId: ] ==> Parameters: 1016971499387228160(Long) -[DEBUG] [2020-09-27 20:57:46] 请求Id[f310a125ca994acb92e89dbedbf757c3] [http-nio-9001-exec-9] ==> [TxId: , SpanId: ] <== Total: 1 -[DEBUG] [2020-09-27 20:57:46] 请求Id[f310a125ca994acb92e89dbedbf757c3] [http-nio-9001-exec-9] ==> [TxId: , SpanId: ] ==> Preparing: SELECT zz_course.* FROM zz_course, zz_class_course WHERE zz_class_course.class_id = ? AND zz_class_course.course_id = zz_course.course_id LIMIT ? -[DEBUG] [2020-09-27 20:57:46] 请求Id[f310a125ca994acb92e89dbedbf757c3] [http-nio-9001-exec-9] ==> [TxId: , SpanId: ] ==> Parameters: 1016971499387228160(Long), 10(Integer) -[DEBUG] [2020-09-27 20:57:46] 请求Id[f310a125ca994acb92e89dbedbf757c3] [http-nio-9001-exec-9] ==> [TxId: , SpanId: ] <== Total: 5 -[INFO ] [2020-09-27 20:57:46] 请求Id[f310a125ca994acb92e89dbedbf757c3] [http-nio-9001-exec-9] ==> [TxId: , SpanId: ] 请求完成, app=, url=/studentClass/listClassCourse,elapse=20ms, respData={"data":{"dataList":[{"classHour":10,"courseId":1016699195411402752,"courseName":"小学一年级拼音基础练习","createTime":1601136000000,"createUserId":1093809448606765057,"description":"小学一年级拼音基础练习","difficulty":0,"difficultyDictMap":{"name":"容易","id":0},"gradeId":1,"gradeIdDictMap":{"name":"一年级","id":1},"pictureUrl":"[{\"name\":\"IMG_0003.JPG\",\"downloadUri\":\"/admin/coursepaper/course/download\",\"filename\":\"b09ef09478d8452d908600ff98b6f1ce.JPG\"}]","price":299.00,"subjectId":0,"subjectIdDictMap":{"name":"语文","id":0},"updateTime":1601136000000},{"classHour":25,"courseId":1016917385529790464,"courseName":"小学二年级语文课程","createTime":1601136000000,"createUserId":1093809448606765057,"description":"小学二年级课程","difficulty":1,"difficultyDictMap":{"name":"普通","id":1},"gradeId":2,"gradeIdDictMap":{"name":"二年级","id":2},"pictureUrl":"[{\"name\":\"IMG_0455.JPG\",\"downloadUri\":\"/admin/coursepaper/course/download\",\"filename\":\"79651a658e88408888f847366fbf98d0.JPG\"}]","price":980.00,"subjectId":0,"subjectIdDictMap":{"name":"语文","id":0},"updateTime":1601136000000},{"classHour":30,"courseId":1016917732260319232,"courseName":"小学三年级语文课程","createTime":1601136000000,"createUserId":1093809448606765057,"description":"小学三年级语文课程","difficulty":1,"difficultyDictMap":{"name":"普通","id":1},"gradeId":3,"gradeIdDictMap":{"name":"三年级","id":3},"pictureUrl":"[{\"name\":\"IMG_0001.JPG\",\"downloadUri\":\"/admin/coursepaper/course/download\",\"filename\":\"0d11548eb91142d49a9253c0060d3f94.JPG\"}]","price":1080.00,"subjectId":0,"subjectIdDictMap":{"name":"语文","id":0},"updateTime":1601208479000},{"classHour":15,"courseId":1016920878164480000,"courseName":"小学数学一年级课程","createTime":1601136000000,"createUserId":1093809448606765057,"description":"小学数学一年级课程","difficulty":0,"difficultyDictMap":{"name":"容易","id":0},"gradeId":1,"gradeIdDictMap":{"name":"一年级","id":1},"pictureUrl":"[{\"name\":\"IMG_0010.JPG\",\"downloadUri\":\"/admin/coursepaper/course/download\",\"filename\":\"7e9583aba9594a98b1e0268837d2a5d0.JPG\"}]","price":388.00,"subjectId":1,"subjectIdDictMap":{"name":"数学","id":1},"updateTime":1601136000000},{"classHour":15,"courseId":1016923276064854016,"courseName":"小学英语一年级课程","createTime":1601136000000,"createUserId":1093809448606765057,"description":"小学英语一年级课程","difficulty":0,"difficultyDictMap":{"name":"容易","id":0},"gradeId":1,"gradeIdDictMap":{"name":"一年级","id":1},"pictureUrl":"[{\"name\":\"english.jpg\",\"downloadUri\":\"/admin/app/course/download\",\"filename\":\"44177c3674f543fda24222b8297ef203.jpg\"}]","price":399.00,"subjectId":2,"subjectIdDictMap":{"name":"英语","id":2},"updateTime":1601136000000}],"totalCount":5},"errorCode":"NO-ERROR","errorMessage":"NO-MESSAGE","success":true} -[INFO ] [2020-09-27 20:57:51] 请求Id[e88660764f8049988dceaecf5744413e] [http-nio-9001-exec-10] ==> [TxId: , SpanId: ] 开始请求,app=, url=/studentClass/viewClassCourse, reqData=[1016971499387228160,1016917732260319232] -[DEBUG] [2020-09-27 20:57:51] 请求Id[e88660764f8049988dceaecf5744413e] [http-nio-9001-exec-10] ==> [TxId: , SpanId: ] ==> Preparing: SELECT class_id,course_id,course_order FROM zz_class_course WHERE ( ( class_id = ? and course_id = ? ) ) -[DEBUG] [2020-09-27 20:57:51] 请求Id[e88660764f8049988dceaecf5744413e] [http-nio-9001-exec-10] ==> [TxId: , SpanId: ] ==> Parameters: 1016971499387228160(Long), 1016917732260319232(Long) -[DEBUG] [2020-09-27 20:57:51] 请求Id[e88660764f8049988dceaecf5744413e] [http-nio-9001-exec-10] ==> [TxId: , SpanId: ] <== Total: 1 -[INFO ] [2020-09-27 20:57:51] 请求Id[e88660764f8049988dceaecf5744413e] [http-nio-9001-exec-10] ==> [TxId: , SpanId: ] 请求完成, app=, url=/studentClass/viewClassCourse,elapse=4ms, respData={"data":{"classId":1016971499387228160,"courseId":1016917732260319232,"courseOrder":0},"errorCode":"NO-ERROR","errorMessage":"NO-MESSAGE","success":true} -[INFO ] [2020-09-27 20:57:54] 请求Id[d6fcd775ed074cbd8ddf5b1c4a80b897] [http-nio-9001-exec-1] ==> [TxId: , SpanId: ] 开始请求,app=, url=/studentClass/updateClassCourse, reqData=[{"classId":1016971499387228160,"courseId":1016917732260319232,"courseOrder":11}] -[DEBUG] [2020-09-27 20:57:54] 请求Id[d6fcd775ed074cbd8ddf5b1c4a80b897] [http-nio-9001-exec-1] ==> [TxId: , SpanId: ] ==> Preparing: UPDATE zz_class_course SET course_order = ? WHERE ( ( class_id = ? and course_id = ? ) ) -[DEBUG] [2020-09-27 20:57:54] 请求Id[d6fcd775ed074cbd8ddf5b1c4a80b897] [http-nio-9001-exec-1] ==> [TxId: , SpanId: ] ==> Parameters: 11(Integer), 1016971499387228160(Long), 1016917732260319232(Long) -[DEBUG] [2020-09-27 20:57:54] 请求Id[d6fcd775ed074cbd8ddf5b1c4a80b897] [http-nio-9001-exec-1] ==> [TxId: , SpanId: ] <== Updates: 1 -[INFO ] [2020-09-27 20:57:54] 请求Id[d6fcd775ed074cbd8ddf5b1c4a80b897] [http-nio-9001-exec-1] ==> [TxId: , SpanId: ] 请求完成, app=, url=/studentClass/updateClassCourse,elapse=10ms, respData={"errorCode":"NO-ERROR","errorMessage":"NO-MESSAGE","success":true} -[INFO ] [2020-09-27 20:57:54] 请求Id[f234a2cb62ab433b83d3901b55f1af6f] [http-nio-9001-exec-2] ==> [TxId: , SpanId: ] 开始请求,app=, url=/studentClass/listClassCourse, reqData=[1016971499387228160,null,null,{"pageNum":1,"pageSize":10}] -[DEBUG] [2020-09-27 20:57:54] 请求Id[f234a2cb62ab433b83d3901b55f1af6f] [http-nio-9001-exec-2] ==> [TxId: , SpanId: ] ==> Preparing: SELECT class_id,class_name,school_id,leader_id,finish_class_hour,class_level,create_user_id,create_time,status FROM zz_class WHERE ( ( class_id = ? and status = ? ) ) -[DEBUG] [2020-09-27 20:57:54] 请求Id[f234a2cb62ab433b83d3901b55f1af6f] [http-nio-9001-exec-2] ==> [TxId: , SpanId: ] ==> Parameters: 1016971499387228160(Long), 1(Integer) -[DEBUG] [2020-09-27 20:57:54] 请求Id[f234a2cb62ab433b83d3901b55f1af6f] [http-nio-9001-exec-2] ==> [TxId: , SpanId: ] <== Total: 1 -[DEBUG] [2020-09-27 20:57:54] 请求Id[f234a2cb62ab433b83d3901b55f1af6f] [http-nio-9001-exec-2] ==> [TxId: , SpanId: ] ==> Preparing: SELECT count(0) FROM zz_course, zz_class_course WHERE zz_class_course.class_id = ? AND zz_class_course.course_id = zz_course.course_id -[DEBUG] [2020-09-27 20:57:54] 请求Id[f234a2cb62ab433b83d3901b55f1af6f] [http-nio-9001-exec-2] ==> [TxId: , SpanId: ] ==> Parameters: 1016971499387228160(Long) -[DEBUG] [2020-09-27 20:57:54] 请求Id[f234a2cb62ab433b83d3901b55f1af6f] [http-nio-9001-exec-2] ==> [TxId: , SpanId: ] <== Total: 1 -[DEBUG] [2020-09-27 20:57:54] 请求Id[f234a2cb62ab433b83d3901b55f1af6f] [http-nio-9001-exec-2] ==> [TxId: , SpanId: ] ==> Preparing: SELECT zz_course.* FROM zz_course, zz_class_course WHERE zz_class_course.class_id = ? AND zz_class_course.course_id = zz_course.course_id LIMIT ? -[DEBUG] [2020-09-27 20:57:54] 请求Id[f234a2cb62ab433b83d3901b55f1af6f] [http-nio-9001-exec-2] ==> [TxId: , SpanId: ] ==> Parameters: 1016971499387228160(Long), 10(Integer) -[DEBUG] [2020-09-27 20:57:54] 请求Id[f234a2cb62ab433b83d3901b55f1af6f] [http-nio-9001-exec-2] ==> [TxId: , SpanId: ] <== Total: 5 -[INFO ] [2020-09-27 20:57:54] 请求Id[f234a2cb62ab433b83d3901b55f1af6f] [http-nio-9001-exec-2] ==> [TxId: , SpanId: ] 请求完成, app=, url=/studentClass/listClassCourse,elapse=20ms, respData={"data":{"dataList":[{"classHour":10,"courseId":1016699195411402752,"courseName":"小学一年级拼音基础练习","createTime":1601136000000,"createUserId":1093809448606765057,"description":"小学一年级拼音基础练习","difficulty":0,"difficultyDictMap":{"name":"容易","id":0},"gradeId":1,"gradeIdDictMap":{"name":"一年级","id":1},"pictureUrl":"[{\"name\":\"IMG_0003.JPG\",\"downloadUri\":\"/admin/coursepaper/course/download\",\"filename\":\"b09ef09478d8452d908600ff98b6f1ce.JPG\"}]","price":299.00,"subjectId":0,"subjectIdDictMap":{"name":"语文","id":0},"updateTime":1601136000000},{"classHour":25,"courseId":1016917385529790464,"courseName":"小学二年级语文课程","createTime":1601136000000,"createUserId":1093809448606765057,"description":"小学二年级课程","difficulty":1,"difficultyDictMap":{"name":"普通","id":1},"gradeId":2,"gradeIdDictMap":{"name":"二年级","id":2},"pictureUrl":"[{\"name\":\"IMG_0455.JPG\",\"downloadUri\":\"/admin/coursepaper/course/download\",\"filename\":\"79651a658e88408888f847366fbf98d0.JPG\"}]","price":980.00,"subjectId":0,"subjectIdDictMap":{"name":"语文","id":0},"updateTime":1601136000000},{"classHour":30,"courseId":1016917732260319232,"courseName":"小学三年级语文课程","createTime":1601136000000,"createUserId":1093809448606765057,"description":"小学三年级语文课程","difficulty":1,"difficultyDictMap":{"name":"普通","id":1},"gradeId":3,"gradeIdDictMap":{"name":"三年级","id":3},"pictureUrl":"[{\"name\":\"IMG_0001.JPG\",\"downloadUri\":\"/admin/coursepaper/course/download\",\"filename\":\"0d11548eb91142d49a9253c0060d3f94.JPG\"}]","price":1080.00,"subjectId":0,"subjectIdDictMap":{"name":"语文","id":0},"updateTime":1601208479000},{"classHour":15,"courseId":1016920878164480000,"courseName":"小学数学一年级课程","createTime":1601136000000,"createUserId":1093809448606765057,"description":"小学数学一年级课程","difficulty":0,"difficultyDictMap":{"name":"容易","id":0},"gradeId":1,"gradeIdDictMap":{"name":"一年级","id":1},"pictureUrl":"[{\"name\":\"IMG_0010.JPG\",\"downloadUri\":\"/admin/coursepaper/course/download\",\"filename\":\"7e9583aba9594a98b1e0268837d2a5d0.JPG\"}]","price":388.00,"subjectId":1,"subjectIdDictMap":{"name":"数学","id":1},"updateTime":1601136000000},{"classHour":15,"courseId":1016923276064854016,"courseName":"小学英语一年级课程","createTime":1601136000000,"createUserId":1093809448606765057,"description":"小学英语一年级课程","difficulty":0,"difficultyDictMap":{"name":"容易","id":0},"gradeId":1,"gradeIdDictMap":{"name":"一年级","id":1},"pictureUrl":"[{\"name\":\"english.jpg\",\"downloadUri\":\"/admin/app/course/download\",\"filename\":\"44177c3674f543fda24222b8297ef203.jpg\"}]","price":399.00,"subjectId":2,"subjectIdDictMap":{"name":"英语","id":2},"updateTime":1601136000000}],"totalCount":5},"errorCode":"NO-ERROR","errorMessage":"NO-MESSAGE","success":true} diff --git a/orange-demo-multi-service/zzlogs/gateway/gateway.log b/orange-demo-multi-service/zzlogs/gateway/gateway.log deleted file mode 100644 index e3f5715a..00000000 --- a/orange-demo-multi-service/zzlogs/gateway/gateway.log +++ /dev/null @@ -1,108 +0,0 @@ -[INFO ] [2020-09-27 20:46:34] 请求Id[] [main] ==> [TxId: , SpanId: ] The following profiles are active: dev -[INFO ] [2020-09-27 20:46:39] 请求Id[] [main] ==> [TxId: , SpanId: ] Started GatewayApplication in 6.543 seconds (JVM running for 8.309) -[INFO ] [2020-09-27 20:46:51] 请求Id[b5c6133a9297495d84b972e9c683b7db] [reactor-http-nio-3] ==> [TxId: , SpanId: ] 开始请求,app={gateway}, url=/admin/CourseClass/studentClass/list -[WARN ] [2020-09-27 20:46:51] 请求Id[b5c6133a9297495d84b972e9c683b7db] [reactor-http-nio-3] ==> [TxId: , SpanId: ] UNAUTHORIZED request [/admin/CourseClass/studentClass/list] from REMOTE-IP [10.24.85.32] because userId is empty in redis. -[INFO ] [2020-09-27 20:46:52] 请求Id[db2a7ba29cc94061be68a9a3921ec872] [reactor-http-nio-3] ==> [TxId: , SpanId: ] 开始请求,app={gateway}, url=/admin/login/doLogin -[INFO ] [2020-09-27 20:46:52] 请求Id[db2a7ba29cc94061be68a9a3921ec872] [reactor-http-nio-3] ==> [TxId: , SpanId: ] 请求完成, app={gateway}, url=/admin/login/doLogin,elapse=1 -[INFO ] [2020-09-27 20:46:56] 请求Id[dc955359b2b4444098fb7433f6e151e8] [reactor-http-nio-3] ==> [TxId: , SpanId: ] 开始请求,app={gateway}, url=/admin/CourseClass/student/list -[INFO ] [2020-09-27 20:46:56] 请求Id[dc955359b2b4444098fb7433f6e151e8] [reactor-http-nio-3] ==> [TxId: , SpanId: ] 请求完成, app={gateway}, url=/admin/CourseClass/student/list,elapse=52 -[INFO ] [2020-09-27 20:47:08] 请求Id[f8317800db124dc0999946feee3eba02] [reactor-http-nio-3] ==> [TxId: , SpanId: ] 开始请求,app={gateway}, url=/admin/CourseClass/grade/listDictGrade -[INFO ] [2020-09-27 20:47:08] 请求Id[f8317800db124dc0999946feee3eba02] [reactor-http-nio-3] ==> [TxId: , SpanId: ] 请求完成, app={gateway}, url=/admin/CourseClass/grade/listDictGrade,elapse=4 -[INFO ] [2020-09-27 20:47:11] 请求Id[9bf9018da2944cf48388241b14836db9] [reactor-http-nio-3] ==> [TxId: , SpanId: ] 开始请求,app={gateway}, url=/admin/CourseClass/areaCode/listDictAreaCodeByParentId -[INFO ] [2020-09-27 20:47:11] 请求Id[9bf9018da2944cf48388241b14836db9] [reactor-http-nio-3] ==> [TxId: , SpanId: ] 请求完成, app={gateway}, url=/admin/CourseClass/areaCode/listDictAreaCodeByParentId,elapse=4 -[INFO ] [2020-09-27 20:47:13] 请求Id[70022f272a284d7c85fee4ee18ba9fd4] [reactor-http-nio-3] ==> [TxId: , SpanId: ] 开始请求,app={gateway}, url=/admin/CourseClass/areaCode/listDictAreaCodeByParentId -[INFO ] [2020-09-27 20:47:13] 请求Id[70022f272a284d7c85fee4ee18ba9fd4] [reactor-http-nio-3] ==> [TxId: , SpanId: ] 请求完成, app={gateway}, url=/admin/CourseClass/areaCode/listDictAreaCodeByParentId,elapse=3 -[INFO ] [2020-09-27 20:47:14] 请求Id[f638e48c59a445ae85c7bb9d4cbe03ac] [reactor-http-nio-3] ==> [TxId: , SpanId: ] 开始请求,app={gateway}, url=/admin/CourseClass/areaCode/listDictAreaCodeByParentId -[INFO ] [2020-09-27 20:47:14] 请求Id[f638e48c59a445ae85c7bb9d4cbe03ac] [reactor-http-nio-3] ==> [TxId: , SpanId: ] 请求完成, app={gateway}, url=/admin/CourseClass/areaCode/listDictAreaCodeByParentId,elapse=5 -[INFO ] [2020-09-27 20:47:16] 请求Id[28ff388ffe974dc6980d969c9ccb5d44] [reactor-http-nio-3] ==> [TxId: , SpanId: ] 开始请求,app={gateway}, url=/admin/CourseClass/schoolInfo/listDictSchoolInfo -[INFO ] [2020-09-27 20:47:16] 请求Id[28ff388ffe974dc6980d969c9ccb5d44] [reactor-http-nio-3] ==> [TxId: , SpanId: ] 请求完成, app={gateway}, url=/admin/CourseClass/schoolInfo/listDictSchoolInfo,elapse=3 -[INFO ] [2020-09-27 20:47:18] 请求Id[aff4f25bf183454abf87f99175a47992] [reactor-http-nio-3] ==> [TxId: , SpanId: ] 开始请求,app={gateway}, url=/admin/CourseClass/student/add -[INFO ] [2020-09-27 20:47:18] 请求Id[aff4f25bf183454abf87f99175a47992] [reactor-http-nio-3] ==> [TxId: , SpanId: ] 请求完成, app={gateway}, url=/admin/CourseClass/student/add,elapse=4 -[INFO ] [2020-09-27 20:47:18] 请求Id[f8cdde56ee9d468dbb64b6fc0eb5e588] [reactor-http-nio-3] ==> [TxId: , SpanId: ] 开始请求,app={gateway}, url=/admin/CourseClass/student/list -[INFO ] [2020-09-27 20:47:18] 请求Id[f8cdde56ee9d468dbb64b6fc0eb5e588] [reactor-http-nio-3] ==> [TxId: , SpanId: ] 请求完成, app={gateway}, url=/admin/CourseClass/student/list,elapse=3 -[INFO ] [2020-09-27 20:47:20] 请求Id[152fa5471a0a41e28b5544c18075b796] [reactor-http-nio-3] ==> [TxId: , SpanId: ] 开始请求,app={gateway}, url=/admin/CourseClass/student/view -[INFO ] [2020-09-27 20:47:20] 请求Id[152fa5471a0a41e28b5544c18075b796] [reactor-http-nio-3] ==> [TxId: , SpanId: ] 请求完成, app={gateway}, url=/admin/CourseClass/student/view,elapse=4 -[INFO ] [2020-09-27 20:47:22] 请求Id[754db36c01f24f89a966dbbbede28fcd] [reactor-http-nio-3] ==> [TxId: , SpanId: ] 开始请求,app={gateway}, url=/admin/CourseClass/student/update -[INFO ] [2020-09-27 20:47:22] 请求Id[754db36c01f24f89a966dbbbede28fcd] [reactor-http-nio-3] ==> [TxId: , SpanId: ] 请求完成, app={gateway}, url=/admin/CourseClass/student/update,elapse=4 -[INFO ] [2020-09-27 20:47:22] 请求Id[595b9a3f6e754ed58b2d7b50bdef3a04] [reactor-http-nio-3] ==> [TxId: , SpanId: ] 开始请求,app={gateway}, url=/admin/CourseClass/student/list -[INFO ] [2020-09-27 20:47:22] 请求Id[595b9a3f6e754ed58b2d7b50bdef3a04] [reactor-http-nio-3] ==> [TxId: , SpanId: ] 请求完成, app={gateway}, url=/admin/CourseClass/student/list,elapse=3 -[INFO ] [2020-09-27 20:47:25] 请求Id[8937c7de3535464994ee5e6e39ac7598] [reactor-http-nio-3] ==> [TxId: , SpanId: ] 开始请求,app={gateway}, url=/admin/CourseClass/student/delete -[INFO ] [2020-09-27 20:47:25] 请求Id[8937c7de3535464994ee5e6e39ac7598] [reactor-http-nio-3] ==> [TxId: , SpanId: ] 请求完成, app={gateway}, url=/admin/CourseClass/student/delete,elapse=5 -[INFO ] [2020-09-27 20:47:25] 请求Id[322815eb8ed641c09c8ec1b8a66e4636] [reactor-http-nio-3] ==> [TxId: , SpanId: ] 开始请求,app={gateway}, url=/admin/CourseClass/student/list -[INFO ] [2020-09-27 20:47:25] 请求Id[322815eb8ed641c09c8ec1b8a66e4636] [reactor-http-nio-3] ==> [TxId: , SpanId: ] 请求完成, app={gateway}, url=/admin/CourseClass/student/list,elapse=4 -[INFO ] [2020-09-27 20:47:27] 请求Id[b5500f945d034a4580a8e7818d0d5f16] [reactor-http-nio-3] ==> [TxId: , SpanId: ] 开始请求,app={gateway}, url=/admin/CourseClass/studentClass/list -[INFO ] [2020-09-27 20:47:27] 请求Id[b5500f945d034a4580a8e7818d0d5f16] [reactor-http-nio-3] ==> [TxId: , SpanId: ] 请求完成, app={gateway}, url=/admin/CourseClass/studentClass/list,elapse=3 -[INFO ] [2020-09-27 20:47:29] 请求Id[94a21e6da790470b8d94751df09d019d] [reactor-http-nio-3] ==> [TxId: , SpanId: ] 开始请求,app={gateway}, url=/admin/CourseClass/studentClass/listClassStudent -[INFO ] [2020-09-27 20:47:29] 请求Id[94a21e6da790470b8d94751df09d019d] [reactor-http-nio-3] ==> [TxId: , SpanId: ] 请求完成, app={gateway}, url=/admin/CourseClass/studentClass/listClassStudent,elapse=4 -[INFO ] [2020-09-27 20:47:31] 请求Id[f10c3e6765a24ab799944e8053d1e763] [reactor-http-nio-3] ==> [TxId: , SpanId: ] 开始请求,app={gateway}, url=/admin/CourseClass/studentClass/listNotInClassStudent -[INFO ] [2020-09-27 20:47:31] 请求Id[f10c3e6765a24ab799944e8053d1e763] [reactor-http-nio-3] ==> [TxId: , SpanId: ] 请求完成, app={gateway}, url=/admin/CourseClass/studentClass/listNotInClassStudent,elapse=4 -[INFO ] [2020-09-27 20:47:33] 请求Id[9eb86ede264c480aaa003bf8838e3e8a] [reactor-http-nio-3] ==> [TxId: , SpanId: ] 开始请求,app={gateway}, url=/admin/CourseClass/studentClass/addClassStudent -[INFO ] [2020-09-27 20:47:33] 请求Id[9eb86ede264c480aaa003bf8838e3e8a] [reactor-http-nio-3] ==> [TxId: , SpanId: ] 请求完成, app={gateway}, url=/admin/CourseClass/studentClass/addClassStudent,elapse=4 -[INFO ] [2020-09-27 20:47:33] 请求Id[cbd2268781b245399b7b7371af6f893c] [reactor-http-nio-3] ==> [TxId: , SpanId: ] 开始请求,app={gateway}, url=/admin/CourseClass/studentClass/listNotInClassStudent -[INFO ] [2020-09-27 20:47:33] 请求Id[cbd2268781b245399b7b7371af6f893c] [reactor-http-nio-3] ==> [TxId: , SpanId: ] 请求完成, app={gateway}, url=/admin/CourseClass/studentClass/listNotInClassStudent,elapse=2 -[INFO ] [2020-09-27 20:47:35] 请求Id[f56e8dd535d943d8842e9094c0d33f49] [reactor-http-nio-3] ==> [TxId: , SpanId: ] 开始请求,app={gateway}, url=/admin/CourseClass/studentClass/listClassStudent -[INFO ] [2020-09-27 20:47:35] 请求Id[f56e8dd535d943d8842e9094c0d33f49] [reactor-http-nio-3] ==> [TxId: , SpanId: ] 请求完成, app={gateway}, url=/admin/CourseClass/studentClass/listClassStudent,elapse=4 -[INFO ] [2020-09-27 20:47:37] 请求Id[a901f51c155e4230954b91382ca0fab8] [reactor-http-nio-3] ==> [TxId: , SpanId: ] 开始请求,app={gateway}, url=/admin/CourseClass/studentClass/deleteClassStudent -[INFO ] [2020-09-27 20:47:37] 请求Id[a901f51c155e4230954b91382ca0fab8] [reactor-http-nio-3] ==> [TxId: , SpanId: ] 请求完成, app={gateway}, url=/admin/CourseClass/studentClass/deleteClassStudent,elapse=4 -[INFO ] [2020-09-27 20:47:37] 请求Id[4f9e887130c143b881552c90c2cf933a] [reactor-http-nio-3] ==> [TxId: , SpanId: ] 开始请求,app={gateway}, url=/admin/CourseClass/studentClass/listClassStudent -[INFO ] [2020-09-27 20:47:37] 请求Id[4f9e887130c143b881552c90c2cf933a] [reactor-http-nio-3] ==> [TxId: , SpanId: ] 请求完成, app={gateway}, url=/admin/CourseClass/studentClass/listClassStudent,elapse=3 -[INFO ] [2020-09-27 20:47:39] 请求Id[4f1d9908c5f04e94bd4c1376c9b5ca2b] [reactor-http-nio-3] ==> [TxId: , SpanId: ] 开始请求,app={gateway}, url=/admin/CourseClass/studentClass/list -[INFO ] [2020-09-27 20:47:39] 请求Id[4f1d9908c5f04e94bd4c1376c9b5ca2b] [reactor-http-nio-3] ==> [TxId: , SpanId: ] 请求完成, app={gateway}, url=/admin/CourseClass/studentClass/list,elapse=4 -[INFO ] [2020-09-27 20:47:42] 请求Id[d2e7a85fe6814b8eb125ac729c4d1ae8] [reactor-http-nio-3] ==> [TxId: , SpanId: ] 开始请求,app={gateway}, url=/admin/CourseClass/studentClass/listClassCourse -[INFO ] [2020-09-27 20:47:42] 请求Id[d2e7a85fe6814b8eb125ac729c4d1ae8] [reactor-http-nio-3] ==> [TxId: , SpanId: ] 请求完成, app={gateway}, url=/admin/CourseClass/studentClass/listClassCourse,elapse=4 -[INFO ] [2020-09-27 20:47:43] 请求Id[42d7098510944c1f84aa5739c2596947] [reactor-http-nio-3] ==> [TxId: , SpanId: ] 开始请求,app={gateway}, url=/admin/CourseClass/studentClass/viewClassCourse -[INFO ] [2020-09-27 20:47:43] 请求Id[42d7098510944c1f84aa5739c2596947] [reactor-http-nio-3] ==> [TxId: , SpanId: ] 请求完成, app={gateway}, url=/admin/CourseClass/studentClass/viewClassCourse,elapse=3 -[INFO ] [2020-09-27 20:47:45] 请求Id[2b7c9e6779354513b58d3f6598441236] [reactor-http-nio-3] ==> [TxId: , SpanId: ] 开始请求,app={gateway}, url=/admin/CourseClass/studentClass/updateClassCourse -[INFO ] [2020-09-27 20:47:45] 请求Id[2b7c9e6779354513b58d3f6598441236] [reactor-http-nio-3] ==> [TxId: , SpanId: ] 请求完成, app={gateway}, url=/admin/CourseClass/studentClass/updateClassCourse,elapse=3 -[INFO ] [2020-09-27 20:47:45] 请求Id[dd1924123271496c811557963f46d4a6] [reactor-http-nio-3] ==> [TxId: , SpanId: ] 开始请求,app={gateway}, url=/admin/CourseClass/studentClass/listClassCourse -[INFO ] [2020-09-27 20:47:45] 请求Id[dd1924123271496c811557963f46d4a6] [reactor-http-nio-3] ==> [TxId: , SpanId: ] 请求完成, app={gateway}, url=/admin/CourseClass/studentClass/listClassCourse,elapse=4 -[INFO ] [2020-09-27 20:47:46] 请求Id[3522fe56037e4f92adadfe5f9c01c6bb] [reactor-http-nio-3] ==> [TxId: , SpanId: ] 开始请求,app={gateway}, url=/admin/CourseClass/studentClass/viewClassCourse -[INFO ] [2020-09-27 20:47:46] 请求Id[3522fe56037e4f92adadfe5f9c01c6bb] [reactor-http-nio-3] ==> [TxId: , SpanId: ] 请求完成, app={gateway}, url=/admin/CourseClass/studentClass/viewClassCourse,elapse=4 -[INFO ] [2020-09-27 20:47:48] 请求Id[4618b7ca593b4bdca14e9c2c17544b8c] [reactor-http-nio-3] ==> [TxId: , SpanId: ] 开始请求,app={gateway}, url=/admin/CourseClass/studentClass/updateClassCourse -[INFO ] [2020-09-27 20:47:48] 请求Id[4618b7ca593b4bdca14e9c2c17544b8c] [reactor-http-nio-3] ==> [TxId: , SpanId: ] 请求完成, app={gateway}, url=/admin/CourseClass/studentClass/updateClassCourse,elapse=3 -[INFO ] [2020-09-27 20:47:48] 请求Id[249592723e3e4e90a75621d67793692f] [reactor-http-nio-3] ==> [TxId: , SpanId: ] 开始请求,app={gateway}, url=/admin/CourseClass/studentClass/listClassCourse -[INFO ] [2020-09-27 20:47:48] 请求Id[249592723e3e4e90a75621d67793692f] [reactor-http-nio-3] ==> [TxId: , SpanId: ] 请求完成, app={gateway}, url=/admin/CourseClass/studentClass/listClassCourse,elapse=3 -[INFO ] [2020-09-27 20:47:50] 请求Id[b3d24908483b40f2966d1fe517b124b2] [reactor-http-nio-3] ==> [TxId: , SpanId: ] 开始请求,app={gateway}, url=/admin/CourseClass/studentClass/listNotInClassCourse -[INFO ] [2020-09-27 20:47:50] 请求Id[b3d24908483b40f2966d1fe517b124b2] [reactor-http-nio-3] ==> [TxId: , SpanId: ] 请求完成, app={gateway}, url=/admin/CourseClass/studentClass/listNotInClassCourse,elapse=7 -[INFO ] [2020-09-27 20:47:53] 请求Id[6d86d7694b784e3794a2a8902ec35407] [reactor-http-nio-3] ==> [TxId: , SpanId: ] 开始请求,app={gateway}, url=/admin/CourseClass/studentClass/addClassCourse -[INFO ] [2020-09-27 20:47:53] 请求Id[6d86d7694b784e3794a2a8902ec35407] [reactor-http-nio-3] ==> [TxId: , SpanId: ] 请求完成, app={gateway}, url=/admin/CourseClass/studentClass/addClassCourse,elapse=3 -[INFO ] [2020-09-27 20:48:05] 请求Id[c80e35356a974829ae9b72079a3802ff] [reactor-http-nio-3] ==> [TxId: , SpanId: ] 开始请求,app={gateway}, url=/admin/CourseClass/studentClass/addClassCourse -[INFO ] [2020-09-27 20:48:05] 请求Id[c80e35356a974829ae9b72079a3802ff] [reactor-http-nio-3] ==> [TxId: , SpanId: ] 请求完成, app={gateway}, url=/admin/CourseClass/studentClass/addClassCourse,elapse=3 -[INFO ] [2020-09-27 20:48:16] 请求Id[cae64ee9db034f0fa9c4128d8585f047] [reactor-http-nio-3] ==> [TxId: , SpanId: ] 开始请求,app={gateway}, url=/admin/upms/sysMenu/list -[INFO ] [2020-09-27 20:48:16] 请求Id[cae64ee9db034f0fa9c4128d8585f047] [reactor-http-nio-3] ==> [TxId: , SpanId: ] 请求完成, app={gateway}, url=/admin/upms/sysMenu/list,elapse=3 -[INFO ] [2020-09-27 20:48:27] 请求Id[97258d1c293f4227883c2f5bc14b952c] [reactor-http-nio-3] ==> [TxId: , SpanId: ] 开始请求,app={gateway}, url=/admin/CourseClass/studentClass/list -[INFO ] [2020-09-27 20:48:27] 请求Id[97258d1c293f4227883c2f5bc14b952c] [reactor-http-nio-3] ==> [TxId: , SpanId: ] 请求完成, app={gateway}, url=/admin/CourseClass/studentClass/list,elapse=3 -[INFO ] [2020-09-27 20:48:28] 请求Id[a67b41601c574d378f8f321e46414077] [reactor-http-nio-3] ==> [TxId: , SpanId: ] 开始请求,app={gateway}, url=/admin/CourseClass/studentClass/listClassCourse -[INFO ] [2020-09-27 20:48:28] 请求Id[a67b41601c574d378f8f321e46414077] [reactor-http-nio-3] ==> [TxId: , SpanId: ] 请求完成, app={gateway}, url=/admin/CourseClass/studentClass/listClassCourse,elapse=4 -[INFO ] [2020-09-27 20:48:30] 请求Id[2865ff823d8e4cf1be948509cbf86bee] [reactor-http-nio-6] ==> [TxId: , SpanId: ] 开始请求,app={gateway}, url=/admin/CourseClass/studentClass/listNotInClassCourse -[INFO ] [2020-09-27 20:48:30] 请求Id[2865ff823d8e4cf1be948509cbf86bee] [reactor-http-nio-6] ==> [TxId: , SpanId: ] 请求完成, app={gateway}, url=/admin/CourseClass/studentClass/listNotInClassCourse,elapse=4 -[INFO ] [2020-09-27 20:48:33] 请求Id[22c9a1a7158a48dfab518c7ea06109e6] [reactor-http-nio-6] ==> [TxId: , SpanId: ] 开始请求,app={gateway}, url=/admin/CourseClass/studentClass/addClassCourse -[INFO ] [2020-09-27 20:48:33] 请求Id[22c9a1a7158a48dfab518c7ea06109e6] [reactor-http-nio-6] ==> [TxId: , SpanId: ] 请求完成, app={gateway}, url=/admin/CourseClass/studentClass/addClassCourse,elapse=3 -[INFO ] [2020-09-27 20:49:09] 请求Id[862b918112294fbbb9cd702fc52474fe] [reactor-http-nio-2] ==> [TxId: , SpanId: ] 开始请求,app={gateway}, url=/admin/CourseClass/studentClass/addClassCourse -[INFO ] [2020-09-27 20:49:09] 请求Id[862b918112294fbbb9cd702fc52474fe] [reactor-http-nio-2] ==> [TxId: , SpanId: ] 请求完成, app={gateway}, url=/admin/CourseClass/studentClass/addClassCourse,elapse=4 -[INFO ] [2020-09-27 20:57:24] 请求Id[ba25de33bf84438e9e019870061ee2ac] [reactor-http-nio-4] ==> [TxId: , SpanId: ] 开始请求,app={gateway}, url=/admin/CourseClass/studentClass/addClassCourse -[INFO ] [2020-09-27 20:57:24] 请求Id[ba25de33bf84438e9e019870061ee2ac] [reactor-http-nio-4] ==> [TxId: , SpanId: ] 请求完成, app={gateway}, url=/admin/CourseClass/studentClass/addClassCourse,elapse=10 -[INFO ] [2020-09-27 20:57:29] 请求Id[3bf8f684f01146f782f8e83beeb4569b] [reactor-http-nio-6] ==> [TxId: , SpanId: ] 开始请求,app={gateway}, url=/admin/CourseClass/studentClass/addClassCourse -[INFO ] [2020-09-27 20:57:29] 请求Id[3bf8f684f01146f782f8e83beeb4569b] [reactor-http-nio-6] ==> [TxId: , SpanId: ] 请求完成, app={gateway}, url=/admin/CourseClass/studentClass/addClassCourse,elapse=5 -[INFO ] [2020-09-27 20:57:30] 请求Id[79a68fb7084b4b4b9243d898e613d6a3] [reactor-http-nio-6] ==> [TxId: , SpanId: ] 开始请求,app={gateway}, url=/admin/CourseClass/studentClass/listNotInClassCourse -[INFO ] [2020-09-27 20:57:30] 请求Id[79a68fb7084b4b4b9243d898e613d6a3] [reactor-http-nio-6] ==> [TxId: , SpanId: ] 请求完成, app={gateway}, url=/admin/CourseClass/studentClass/listNotInClassCourse,elapse=4 -[INFO ] [2020-09-27 20:57:32] 请求Id[9bb6a2ffd6eb4cb8af0b699b7618e9c1] [reactor-http-nio-2] ==> [TxId: , SpanId: ] 开始请求,app={gateway}, url=/admin/CourseClass/studentClass/listClassCourse -[INFO ] [2020-09-27 20:57:32] 请求Id[9bb6a2ffd6eb4cb8af0b699b7618e9c1] [reactor-http-nio-2] ==> [TxId: , SpanId: ] 请求完成, app={gateway}, url=/admin/CourseClass/studentClass/listClassCourse,elapse=3 -[INFO ] [2020-09-27 20:57:39] 请求Id[2afbd5f076e3405980f8ccfe2b8565ad] [reactor-http-nio-4] ==> [TxId: , SpanId: ] 开始请求,app={gateway}, url=/admin/CourseClass/studentClass/deleteClassCourse -[INFO ] [2020-09-27 20:57:39] 请求Id[2afbd5f076e3405980f8ccfe2b8565ad] [reactor-http-nio-4] ==> [TxId: , SpanId: ] 请求完成, app={gateway}, url=/admin/CourseClass/studentClass/deleteClassCourse,elapse=3 -[INFO ] [2020-09-27 20:57:39] 请求Id[9dbdfe4aa6cf4f99a88c17909627a834] [reactor-http-nio-4] ==> [TxId: , SpanId: ] 开始请求,app={gateway}, url=/admin/CourseClass/studentClass/listClassCourse -[INFO ] [2020-09-27 20:57:39] 请求Id[9dbdfe4aa6cf4f99a88c17909627a834] [reactor-http-nio-4] ==> [TxId: , SpanId: ] 请求完成, app={gateway}, url=/admin/CourseClass/studentClass/listClassCourse,elapse=3 -[INFO ] [2020-09-27 20:57:41] 请求Id[c6aa5b57a77c4f329fd5fee2310b0ef9] [reactor-http-nio-5] ==> [TxId: , SpanId: ] 开始请求,app={gateway}, url=/admin/CourseClass/studentClass/listNotInClassCourse -[INFO ] [2020-09-27 20:57:41] 请求Id[c6aa5b57a77c4f329fd5fee2310b0ef9] [reactor-http-nio-5] ==> [TxId: , SpanId: ] 请求完成, app={gateway}, url=/admin/CourseClass/studentClass/listNotInClassCourse,elapse=3 -[INFO ] [2020-09-27 20:57:44] 请求Id[c99dad15534c4b56b4b0fc5d2c8a72e8] [reactor-http-nio-5] ==> [TxId: , SpanId: ] 开始请求,app={gateway}, url=/admin/CourseClass/studentClass/addClassCourse -[INFO ] [2020-09-27 20:57:44] 请求Id[c99dad15534c4b56b4b0fc5d2c8a72e8] [reactor-http-nio-5] ==> [TxId: , SpanId: ] 请求完成, app={gateway}, url=/admin/CourseClass/studentClass/addClassCourse,elapse=4 -[INFO ] [2020-09-27 20:57:44] 请求Id[1f61624648624deaa081fbc11077803b] [reactor-http-nio-5] ==> [TxId: , SpanId: ] 开始请求,app={gateway}, url=/admin/CourseClass/studentClass/listNotInClassCourse -[INFO ] [2020-09-27 20:57:44] 请求Id[1f61624648624deaa081fbc11077803b] [reactor-http-nio-5] ==> [TxId: , SpanId: ] 请求完成, app={gateway}, url=/admin/CourseClass/studentClass/listNotInClassCourse,elapse=3 -[INFO ] [2020-09-27 20:57:46] 请求Id[f310a125ca994acb92e89dbedbf757c3] [reactor-http-nio-5] ==> [TxId: , SpanId: ] 开始请求,app={gateway}, url=/admin/CourseClass/studentClass/listClassCourse -[INFO ] [2020-09-27 20:57:46] 请求Id[f310a125ca994acb92e89dbedbf757c3] [reactor-http-nio-5] ==> [TxId: , SpanId: ] 请求完成, app={gateway}, url=/admin/CourseClass/studentClass/listClassCourse,elapse=4 -[INFO ] [2020-09-27 20:57:51] 请求Id[e88660764f8049988dceaecf5744413e] [reactor-http-nio-8] ==> [TxId: , SpanId: ] 开始请求,app={gateway}, url=/admin/CourseClass/studentClass/viewClassCourse -[INFO ] [2020-09-27 20:57:51] 请求Id[e88660764f8049988dceaecf5744413e] [reactor-http-nio-8] ==> [TxId: , SpanId: ] 请求完成, app={gateway}, url=/admin/CourseClass/studentClass/viewClassCourse,elapse=3 -[INFO ] [2020-09-27 20:57:54] 请求Id[d6fcd775ed074cbd8ddf5b1c4a80b897] [reactor-http-nio-8] ==> [TxId: , SpanId: ] 开始请求,app={gateway}, url=/admin/CourseClass/studentClass/updateClassCourse -[INFO ] [2020-09-27 20:57:54] 请求Id[d6fcd775ed074cbd8ddf5b1c4a80b897] [reactor-http-nio-8] ==> [TxId: , SpanId: ] 请求完成, app={gateway}, url=/admin/CourseClass/studentClass/updateClassCourse,elapse=3 -[INFO ] [2020-09-27 20:57:54] 请求Id[f234a2cb62ab433b83d3901b55f1af6f] [reactor-http-nio-8] ==> [TxId: , SpanId: ] 开始请求,app={gateway}, url=/admin/CourseClass/studentClass/listClassCourse -[INFO ] [2020-09-27 20:57:54] 请求Id[f234a2cb62ab433b83d3901b55f1af6f] [reactor-http-nio-8] ==> [TxId: , SpanId: ] 请求完成, app={gateway}, url=/admin/CourseClass/studentClass/listClassCourse,elapse=4 diff --git a/orange-demo-multi-service/zzlogs/upms/upms.log b/orange-demo-multi-service/zzlogs/upms/upms.log deleted file mode 100644 index f4d89d6c..00000000 --- a/orange-demo-multi-service/zzlogs/upms/upms.log +++ /dev/null @@ -1,19 +0,0 @@ -[INFO ] [2020-09-27 20:46:19] 请求Id[] [main] ==> [TxId: , SpanId: ] The following profiles are active: dev -[INFO ] [2020-09-27 20:46:26] 请求Id[] [main] ==> [TxId: , SpanId: ] twepoch:1288834974657 ,ip:10.24.82.239 ,zkAddress:localhost:2181 port:19000 -[INFO ] [2020-09-27 20:46:26] 请求Id[] [main] ==> [TxId: , SpanId: ] file exists status is true -[INFO ] [2020-09-27 20:46:26] 请求Id[] [main] ==> [TxId: , SpanId: ] update file cache workId is 1 -[INFO ] [2020-09-27 20:46:26] 请求Id[] [main] ==> [TxId: , SpanId: ] START SUCCESS USE ZK WORKERID-1 -[INFO ] [2020-09-27 20:46:29] 请求Id[] [main] ==> [TxId: , SpanId: ] Started UpmsApplication in 11.222 seconds (JVM running for 13.27) -[INFO ] [2020-09-27 20:46:53] 请求Id[db2a7ba29cc94061be68a9a3921ec872] [http-nio-9000-exec-1] ==> [TxId: , SpanId: ] 开始请求,app=, url=/admin/login/doLogin, reqData=["admin","RONvlUdTPX4yAuYq%2BWUkfh7j7uF%2FK2TULt6h5HJv4uFQSrmNYsuloX2Z3r2zNcL2P6Bzs8lzHG%2B1Oaj8ICM0Hs0PKq0N2ZET40xkY9IKmTQqWZ5gZY1WkYKOO7yxHpDKhX9dz%2BbJvlLXF676wwttpTL7Ct8K%2Bwm5bfDiADndmLA%3D"] -[DEBUG] [2020-09-27 20:46:53] 请求Id[db2a7ba29cc94061be68a9a3921ec872] [http-nio-9000-exec-1] ==> [TxId: , SpanId: ] ==> Preparing: SELECT user_id,login_name,password,show_name,user_type,head_image_url,user_status,deleted_flag,create_user_id,create_username,create_time,update_time FROM zz_sys_user WHERE ( ( login_name = ? and deleted_flag = ? ) ) -[DEBUG] [2020-09-27 20:46:53] 请求Id[db2a7ba29cc94061be68a9a3921ec872] [http-nio-9000-exec-1] ==> [TxId: , SpanId: ] ==> Parameters: admin(String), 1(Integer) -[DEBUG] [2020-09-27 20:46:53] 请求Id[db2a7ba29cc94061be68a9a3921ec872] [http-nio-9000-exec-1] ==> [TxId: , SpanId: ] <== Total: 1 -[DEBUG] [2020-09-27 20:46:53] 请求Id[db2a7ba29cc94061be68a9a3921ec872] [http-nio-9000-exec-1] ==> [TxId: , SpanId: ] ==> Preparing: SELECT menu_id,parent_id,menu_name,menu_type,form_router_name,show_order,icon,create_time,deleted_flag FROM zz_sys_menu WHERE ( ( menu_type in ( ? , ? ) and deleted_flag = ? ) ) order by menu_type,show_order -[DEBUG] [2020-09-27 20:46:53] 请求Id[db2a7ba29cc94061be68a9a3921ec872] [http-nio-9000-exec-1] ==> [TxId: , SpanId: ] ==> Parameters: 1(Integer), 0(Integer), 1(Integer) -[DEBUG] [2020-09-27 20:46:53] 请求Id[db2a7ba29cc94061be68a9a3921ec872] [http-nio-9000-exec-1] ==> [TxId: , SpanId: ] <== Total: 15 -[INFO ] [2020-09-27 20:46:54] 请求Id[db2a7ba29cc94061be68a9a3921ec872] [http-nio-9000-exec-1] ==> [TxId: , SpanId: ] 请求完成, app=, url=/admin/login/doLogin,elapse=334ms, respData={"data":{"menuList":[{"createTime":1601136000000,"icon":"el-icon-setting","menuId":1093376634899927040,"menuName":"系统管理","menuType":0,"showOrder":1},{"createTime":1601136000000,"icon":"el-icon-s-goods","menuId":1093478813098840064,"menuName":"业务管理","menuType":0,"showOrder":10},{"createTime":1601136000000,"icon":"el-icon-s-data","menuId":1093478847987060736,"menuName":"统计管理","menuType":0,"showOrder":20},{"createTime":1601136000000,"formRouterName":"formSchool","menuId":1093478946238631936,"menuName":"校区管理","menuType":1,"parentId":1093478813098840064,"showOrder":1},{"createTime":1601136000000,"formRouterName":"formCourseStats","menuId":1093479249499394048,"menuName":"课程统计","menuType":1,"parentId":1093478847987060736,"showOrder":1},{"createTime":1601136000000,"formRouterName":"formStudent","menuId":1093479020943380480,"menuName":"学生管理","menuType":1,"parentId":1093478813098840064,"showOrder":5},{"createTime":1601136000000,"formRouterName":"formStudentActionStats","menuId":1093479313416392704,"menuName":"学生行为统计","menuType":1,"parentId":1093478847987060736,"showOrder":5},{"createTime":1601136000000,"formRouterName":"formCourse","menuId":1093479114610577408,"menuName":"课程管理","menuType":1,"parentId":1093478813098840064,"showOrder":10},{"createTime":1601136000000,"formRouterName":"formClass","menuId":1093479177793572864,"menuName":"班级管理","menuType":1,"parentId":1093478813098840064,"showOrder":15},{"createTime":1601136000000,"formRouterName":"formSysUser","menuId":1093376634916704256,"menuName":"用户管理","menuType":1,"parentId":1093376634899927040,"showOrder":100},{"createTime":1601136000000,"formRouterName":"formSysRole","menuId":1093376634916704258,"menuName":"角色管理","menuType":1,"parentId":1093376634899927040,"showOrder":110},{"createTime":1601136000000,"formRouterName":"formSysMenu","menuId":1093376634916704259,"menuName":"菜单管理","menuType":1,"parentId":1093376634899927040,"showOrder":120},{"createTime":1601136000000,"formRouterName":"formSysPermCode","menuId":1093376634916704260,"menuName":"权限字管理","menuType":1,"parentId":1093376634899927040,"showOrder":125},{"createTime":1601136000000,"formRouterName":"formSysPerm","menuId":1093376634916704261,"menuName":"权限管理","menuType":1,"parentId":1093376634899927040,"showOrder":130},{"createTime":1601136000000,"formRouterName":"formSysDict","menuId":1093376634916704262,"menuName":"字典管理","menuType":1,"parentId":1093376634899927040,"showOrder":135}],"showName":"管理员","tokenData":{"isAdmin":true,"sessionId":"25d44a92316e4a75a63585e5e1ddbdca","showName":"管理员","userId":1093809448606765057},"isAdmin":true},"errorCode":"NO-ERROR","errorMessage":"NO-MESSAGE","success":true} -[INFO ] [2020-09-27 20:48:16] 请求Id[cae64ee9db034f0fa9c4128d8585f047] [http-nio-9000-exec-3] ==> [TxId: , SpanId: ] 开始请求,app=, url=/sysMenu/list, reqData=[] -[DEBUG] [2020-09-27 20:48:16] 请求Id[cae64ee9db034f0fa9c4128d8585f047] [http-nio-9000-exec-3] ==> [TxId: , SpanId: ] ==> Preparing: SELECT menu_id,parent_id,menu_name,menu_type,form_router_name,show_order,icon,create_time,deleted_flag FROM zz_sys_menu WHERE ( ( deleted_flag = ? ) ) order by menu_type,show_order -[DEBUG] [2020-09-27 20:48:16] 请求Id[cae64ee9db034f0fa9c4128d8585f047] [http-nio-9000-exec-3] ==> [TxId: , SpanId: ] ==> Parameters: 1(Integer) -[DEBUG] [2020-09-27 20:48:16] 请求Id[cae64ee9db034f0fa9c4128d8585f047] [http-nio-9000-exec-3] ==> [TxId: , SpanId: ] <== Total: 78 -[INFO ] [2020-09-27 20:48:16] 请求Id[cae64ee9db034f0fa9c4128d8585f047] [http-nio-9000-exec-3] ==> [TxId: , SpanId: ] 请求完成, app=, url=/sysMenu/list,elapse=65ms, respData={"data":[{"createTime":1601136000000,"icon":"el-icon-setting","menuId":1093376634899927040,"menuName":"系统管理","menuType":0,"showOrder":1},{"createTime":1601136000000,"icon":"el-icon-s-goods","menuId":1093478813098840064,"menuName":"业务管理","menuType":0,"showOrder":10},{"createTime":1601136000000,"icon":"el-icon-s-data","menuId":1093478847987060736,"menuName":"统计管理","menuType":0,"showOrder":20},{"createTime":1601136000000,"formRouterName":"formSchool","menuId":1093478946238631936,"menuName":"校区管理","menuType":1,"parentId":1093478813098840064,"showOrder":1},{"createTime":1601136000000,"formRouterName":"formCourseStats","menuId":1093479249499394048,"menuName":"课程统计","menuType":1,"parentId":1093478847987060736,"showOrder":1},{"createTime":1601136000000,"formRouterName":"formStudent","menuId":1093479020943380480,"menuName":"学生管理","menuType":1,"parentId":1093478813098840064,"showOrder":5},{"createTime":1601136000000,"formRouterName":"formStudentActionStats","menuId":1093479313416392704,"menuName":"学生行为统计","menuType":1,"parentId":1093478847987060736,"showOrder":5},{"createTime":1601136000000,"formRouterName":"formCourse","menuId":1093479114610577408,"menuName":"课程管理","menuType":1,"parentId":1093478813098840064,"showOrder":10},{"createTime":1601136000000,"formRouterName":"formClass","menuId":1093479177793572864,"menuName":"班级管理","menuType":1,"parentId":1093478813098840064,"showOrder":15},{"createTime":1601136000000,"formRouterName":"formSysUser","menuId":1093376634916704256,"menuName":"用户管理","menuType":1,"parentId":1093376634899927040,"showOrder":100},{"createTime":1601136000000,"formRouterName":"formSysRole","menuId":1093376634916704258,"menuName":"角色管理","menuType":1,"parentId":1093376634899927040,"showOrder":110},{"createTime":1601136000000,"formRouterName":"formSysMenu","menuId":1093376634916704259,"menuName":"菜单管理","menuType":1,"parentId":1093376634899927040,"showOrder":120},{"createTime":1601136000000,"formRouterName":"formSysPermCode","menuId":1093376634916704260,"menuName":"权限字管理","menuType":1,"parentId":1093376634899927040,"showOrder":125},{"createTime":1601136000000,"formRouterName":"formSysPerm","menuId":1093376634916704261,"menuName":"权限管理","menuType":1,"parentId":1093376634899927040,"showOrder":130},{"createTime":1601136000000,"formRouterName":"formSysDict","menuId":1093376634916704262,"menuName":"字典管理","menuType":1,"parentId":1093376634899927040,"showOrder":135},{"createTime":1601136000000,"menuId":1093809448598376554,"menuName":"角色管理","menuType":2,"parentId":1093376634916704258,"showOrder":1},{"createTime":1601136000000,"menuId":1093809448598376555,"menuName":"用户授权","menuType":2,"parentId":1093376634916704258,"showOrder":2},{"createTime":1601136000000,"menuId":1093809448598376532,"menuName":"显示","menuType":3,"parentId":1093376634916704256,"showOrder":1},{"createTime":1601136000000,"menuId":1093809448598376648,"menuName":"显示","menuType":3,"parentId":1093479313416392704,"showOrder":1},{"createTime":1601136000000,"menuId":1093809448598376646,"menuName":"显示","menuType":3,"parentId":1093479249499394048,"showOrder":1},{"createTime":1601136000000,"menuId":1093809448598376639,"menuName":"显示","menuType":3,"parentId":1093479177793572864,"showOrder":1},{"createTime":1601136000000,"menuId":1093809448598376634,"menuName":"显示","menuType":3,"parentId":1093479114610577408,"showOrder":1},{"createTime":1601136000000,"menuId":1093809448598376556,"menuName":"显示","menuType":3,"parentId":1093809448598376554,"showOrder":1},{"createTime":1601136000000,"menuId":1093809448598376629,"menuName":"显示","menuType":3,"parentId":1093479020943380480,"showOrder":1},{"createTime":1601136000000,"menuId":1093809448598376624,"menuName":"显示","menuType":3,"parentId":1093478946238631936,"showOrder":1},{"createTime":1601136000000,"menuId":1093809448598376610,"menuName":"显示","menuType":3,"parentId":1093376634916704262,"showOrder":1},{"createTime":1601136000000,"menuId":1093809448598376560,"menuName":"显示","menuType":3,"parentId":1093809448598376555,"showOrder":1},{"createTime":1601136000000,"menuId":1093809448598376594,"menuName":"显示","menuType":3,"parentId":1093376634916704261,"showOrder":1},{"createTime":1601136000000,"menuId":1093809448598376584,"menuName":"显示","menuType":3,"parentId":1093376634916704260,"showOrder":1},{"createTime":1601136000000,"menuId":1093809448598376572,"menuName":"显示","menuType":3,"parentId":1093376634916704259,"showOrder":1},{"createTime":1601136000000,"menuId":1093809448598376573,"menuName":"新增","menuType":3,"parentId":1093376634916704259,"showOrder":2},{"createTime":1601136000000,"menuId":1093809448598376557,"menuName":"新增","menuType":3,"parentId":1093809448598376554,"showOrder":2},{"createTime":1601136000000,"menuId":1093809448598376649,"menuName":"学生行为详情","menuType":3,"parentId":1093479313416392704,"showOrder":2},{"createTime":1601136000000,"menuId":1093809448598376533,"menuName":"新增","menuType":3,"parentId":1093376634916704256,"showOrder":2},{"createTime":1601136000000,"menuId":1093809448598376640,"menuName":"新建","menuType":3,"parentId":1093479177793572864,"showOrder":2},{"createTime":1601136000000,"menuId":1093809448598376585,"menuName":"新增","menuType":3,"parentId":1093376634916704260,"showOrder":2},{"createTime":1601136000000,"menuId":1093809448598376635,"menuName":"新建","menuType":3,"parentId":1093479114610577408,"showOrder":2},{"createTime":1601136000000,"menuId":1093809448598376630,"menuName":"新建","menuType":3,"parentId":1093479020943380480,"showOrder":2},{"createTime":1601136000000,"menuId":1093809448598376561,"menuName":"授权用户","menuType":3,"parentId":1093809448598376555,"showOrder":2},{"createTime":1601136000000,"menuId":1093809448598376595,"menuName":"新增模块","menuType":3,"parentId":1093376634916704261,"showOrder":2},{"createTime":1601136000000,"menuId":1093809448598376625,"menuName":"新建","menuType":3,"parentId":1093478946238631936,"showOrder":2},{"createTime":1601136000000,"menuId":1093809448598376611,"menuName":"新增","menuType":3,"parentId":1093376634916704262,"showOrder":2},{"createTime":1601136000000,"menuId":1093809448598376574,"menuName":"编辑","menuType":3,"parentId":1093376634916704259,"showOrder":3},{"createTime":1601136000000,"menuId":1093809448598376636,"menuName":"编辑","menuType":3,"parentId":1093479114610577408,"showOrder":3},{"createTime":1601136000000,"menuId":1093809448598376612,"menuName":"编辑","menuType":3,"parentId":1093376634916704262,"showOrder":3},{"createTime":1601136000000,"menuId":1093809448598376558,"menuName":"编辑","menuType":3,"parentId":1093809448598376554,"showOrder":3},{"createTime":1601136000000,"menuId":1093809448598376596,"menuName":"编辑模块","menuType":3,"parentId":1093376634916704261,"showOrder":3},{"createTime":1601136000000,"menuId":1093809448598376626,"menuName":"编辑","menuType":3,"parentId":1093478946238631936,"showOrder":3},{"createTime":1601136000000,"menuId":1093809448598376631,"menuName":"编辑","menuType":3,"parentId":1093479020943380480,"showOrder":3},{"createTime":1601136000000,"menuId":1093809448598376586,"menuName":"编辑","menuType":3,"parentId":1093376634916704260,"showOrder":3},{"createTime":1601136000000,"menuId":1093809448598376562,"menuName":"移除用户","menuType":3,"parentId":1093809448598376555,"showOrder":3},{"createTime":1601136000000,"menuId":1093809448598376641,"menuName":"编辑","menuType":3,"parentId":1093479177793572864,"showOrder":3},{"createTime":1601136000000,"menuId":1093809448598376650,"menuName":"学生行为详情","menuType":3,"parentId":1093479313416392704,"showOrder":3},{"createTime":1601136000000,"menuId":1093809448598376534,"menuName":"编辑","menuType":3,"parentId":1093376634916704256,"showOrder":3},{"createTime":1601136000000,"menuId":1093809448598376559,"menuName":"删除","menuType":3,"parentId":1093809448598376554,"showOrder":4},{"createTime":1601136000000,"menuId":1093809448598376597,"menuName":"删除模块","menuType":3,"parentId":1093376634916704261,"showOrder":4},{"createTime":1601136000000,"menuId":1093809448598376613,"menuName":"删除","menuType":3,"parentId":1093376634916704262,"showOrder":4},{"createTime":1601136000000,"menuId":1093809448598376627,"menuName":"删除","menuType":3,"parentId":1093478946238631936,"showOrder":4},{"createTime":1601136000000,"menuId":1093809448598376587,"menuName":"删除","menuType":3,"parentId":1093376634916704260,"showOrder":4},{"createTime":1601136000000,"menuId":1093809448598376632,"menuName":"删除","menuType":3,"parentId":1093479020943380480,"showOrder":4},{"createTime":1601136000000,"menuId":1093809448598376651,"menuName":"学生行为详情","menuType":3,"parentId":1093479313416392704,"showOrder":4},{"createTime":1601136000000,"menuId":1093809448598376637,"menuName":"删除","menuType":3,"parentId":1093479114610577408,"showOrder":4},{"createTime":1601136000000,"menuId":1093809448598376535,"menuName":"删除","menuType":3,"parentId":1093376634916704256,"showOrder":4},{"createTime":1601136000000,"menuId":1093809448598376642,"menuName":"学生","menuType":3,"parentId":1093479177793572864,"showOrder":4},{"createTime":1601136000000,"menuId":1093809448598376575,"menuName":"删除","menuType":3,"parentId":1093376634916704259,"showOrder":4},{"createTime":1601136000000,"menuId":1093809448598376652,"menuName":"学生行为详情","menuType":3,"parentId":1093479313416392704,"showOrder":5},{"createTime":1601136000000,"menuId":1093809448598376614,"menuName":"同步缓存","menuType":3,"parentId":1093376634916704262,"showOrder":5},{"createTime":1601136000000,"menuId":1093809448598376598,"menuName":"新增权限","menuType":3,"parentId":1093376634916704261,"showOrder":5},{"createTime":1601136000000,"menuId":1093809448598376536,"menuName":"重置密码","menuType":3,"parentId":1093376634916704256,"showOrder":5},{"createTime":1601136000000,"menuId":1093809448598376643,"menuName":"课程","menuType":3,"parentId":1093479177793572864,"showOrder":5},{"createTime":1601136000000,"menuId":1093809448598376576,"menuName":"权限列表","menuType":3,"parentId":1093376634916704259,"showOrder":5},{"createTime":1601136000000,"menuId":1093809448598376644,"menuName":"删除","menuType":3,"parentId":1093479177793572864,"showOrder":6},{"createTime":1601136000000,"menuId":1093809448598376599,"menuName":"编辑权限","menuType":3,"parentId":1093376634916704261,"showOrder":6},{"createTime":1601136000000,"menuId":1093809448598376653,"menuName":"学生行为详情","menuType":3,"parentId":1093479313416392704,"showOrder":6},{"createTime":1601136000000,"menuId":1093809448598376600,"menuName":"删除权限","menuType":3,"parentId":1093376634916704261,"showOrder":7},{"createTime":1601136000000,"menuId":1093809448598376654,"menuName":"学生行为详情","menuType":3,"parentId":1093479313416392704,"showOrder":7},{"createTime":1601136000000,"menuId":1093809448598376655,"menuName":"学生行为详情","menuType":3,"parentId":1093479313416392704,"showOrder":8},{"createTime":1601136000000,"menuId":1093809448598376656,"menuName":"学生行为详情","menuType":3,"parentId":1093479313416392704,"showOrder":9}],"errorCode":"NO-ERROR","errorMessage":"NO-MESSAGE","success":true} diff --git a/orange-demo-multi-web/src/api/Controller/SystemController.js b/orange-demo-multi-web/src/api/Controller/SystemController.js index ea22c72e..81e9d741 100644 --- a/orange-demo-multi-web/src/api/Controller/SystemController.js +++ b/orange-demo-multi-web/src/api/Controller/SystemController.js @@ -1,14 +1,14 @@ export default class SystemController { static login (sender, params, axiosOption, httpOption) { - return sender.doUrl('admin/login/doLogin', 'get', params, axiosOption, httpOption); + return sender.doUrl('admin/upms/login/doLogin', 'get', params, axiosOption, httpOption); } static logout (sender, params, axiosOption, httpOption) { - return sender.doUrl('admin/login/doLogout', 'post', params, axiosOption, httpOption); + return sender.doUrl('admin/upms/login/doLogout', 'post', params, axiosOption, httpOption); } static changePassword (sender, params, axiosOption, httpOption) { - return sender.doUrl('admin/login/changePassword', 'post', params, axiosOption, httpOption); + return sender.doUrl('admin/upms/login/changePassword', 'post', params, axiosOption, httpOption); } static getDictList (sender, params, axiosOption, httpOption) { diff --git a/orange-demo-multi-web/src/assets/style/base.scss b/orange-demo-multi-web/src/assets/style/base.scss index 2ceda7be..1530f699 100644 --- a/orange-demo-multi-web/src/assets/style/base.scss +++ b/orange-demo-multi-web/src/assets/style/base.scss @@ -591,3 +591,19 @@ body .layer-dialog .layui-layer-content { .pb20 { padding-bottom: 20px; } + +.gutter-left { + padding-left: 20px; +} + +.gutter-right { + padding-right: 20px; +} + +.gutter-top { + padding-top: 20px; +} + +.gutter-bottom { + padding-bottom: 20px; +} \ No newline at end of file diff --git a/orange-demo-multi-web/src/router/systemRouters.js b/orange-demo-multi-web/src/router/systemRouters.js index dac9c6b0..e35e4945 100644 --- a/orange-demo-multi-web/src/router/systemRouters.js +++ b/orange-demo-multi-web/src/router/systemRouters.js @@ -40,11 +40,9 @@ const routers = [ {path: 'formCourseStats', component: _import('generated/formCourseStats/index'), name: 'formCourseStats', props: getProps, meta: {title: '课程统计'}}, {path: 'formStudentActionStats', component: _import('generated/formStudentActionStats/index'), name: 'formStudentActionStats', props: getProps, meta: {title: '学生行为统计'}}, {path: 'formStudentActionDetail', component: _import('generated/formStudentActionDetail/index'), name: 'formStudentActionDetail', props: getProps, meta: {title: '学生行为详情'}}, - {path: 'formClass', component: _import('generated/formClass/index'), name: 'formClass', props: getProps, meta: {title: '班级管理'}}, - {path: 'formClassStudent', component: _import('generated/formClassStudent/index'), name: 'formClassStudent', props: getProps, meta: {title: '班级学生'}}, - {path: 'formClassCourse', component: _import('generated/formClassCourse/index'), name: 'formClassCourse', props: getProps, meta: {title: '班级课程'}}, {path: 'formSetClassStudent', component: _import('generated/formSetClassStudent/index'), name: 'formSetClassStudent', props: getProps, meta: {title: '设置班级学生'}}, - {path: 'formSetClassCourse', component: _import('generated/formSetClassCourse/index'), name: 'formSetClassCourse', props: getProps, meta: {title: '设置班级课程'}} + {path: 'formSetClassCourse', component: _import('generated/formSetClassCourse/index'), name: 'formSetClassCourse', props: getProps, meta: {title: '设置班级课程'}}, + {path: 'formClass', component: _import('generated/formClass/index'), name: 'formClass', props: getProps, meta: {title: '班级管理'}} ] } ]; diff --git a/orange-demo-multi-web/src/utils/widget.js b/orange-demo-multi-web/src/utils/widget.js index db2cfa81..e0fb0959 100644 --- a/orange-demo-multi-web/src/utils/widget.js +++ b/orange-demo-multi-web/src/utils/widget.js @@ -82,11 +82,13 @@ export class TableWidget { * @param {function (params: Object) : Promise} loadTableData 表数据获取函数 * @param {function () : Boolean} verifyTableParameter 表数据获取检验函数 * @param {Boolean} paged 是否支持分页 + * @param {Boolean} rowSelection 是否支持行选择 * @param {String} orderFieldName 默认排序字段 * @param {Boolean} ascending 默认排序方式(true为正序,false为倒序) * @param {String} dateAggregateBy 默认排序字段的日期统计类型 */ - constructor (loadTableData, verifyTableParameter, paged, orderFieldName, ascending, dateAggregateBy) { + constructor (loadTableData, verifyTableParameter, paged, rowSelection, orderFieldName, ascending, dateAggregateBy) { + this.currentRow = null; this.oldPage = 0; this.currentPage = 1; this.oldPageSize = DEFAULT_PAGE_SIZE; @@ -99,12 +101,14 @@ export class TableWidget { dateAggregateBy: dateAggregateBy }; this.paged = paged; + this.rowSelection = rowSelection; this.searchVerify = verifyTableParameter || function () { return true; }; this.loadTableData = loadTableData || function () { return Promise.resolve(); }; this.onCurrentPageChange = this.onCurrentPageChange.bind(this); this.onPageSizeChange = this.onPageSizeChange.bind(this); this.onSortChange = this.onSortChange.bind(this); this.getTableIndex = this.getTableIndex.bind(this); + this.currentRowChange = this.currentRowChange.bind(this); } /** * 表格分页变化 @@ -147,6 +151,22 @@ export class TableWidget { getTableIndex (index) { return this.paged ? ((this.currentPage - 1) * this.pageSize + (index + 1)) : (index + 1); } + /** + * 当前选中行改变 + * @param {Object} currentRow 当前选中行 + * @param {Object} oldRow 老的选中行 + */ + currentRowChange (currentRow, oldRow) { + console.log(currentRow, oldRow); + this.currentRow = currentRow; + } + clearTable () { + this.currentRow = null; + this.oldPage = 0; + this.currentPage = 1; + this.totalCount = 0; + this.dataList = []; + } /** * 获取表格数据 * @param {Integer} pageNum 当前分页 diff --git a/orange-demo-multi-web/src/views/generated/formClass/index.vue b/orange-demo-multi-web/src/views/generated/formClass/index.vue index 1bc89adb..b23e737a 100644 --- a/orange-demo-multi-web/src/views/generated/formClass/index.vue +++ b/orange-demo-multi-web/src/views/generated/formClass/index.vue @@ -1,5 +1,5 @@ diff --git a/orange-demo-multi-web/src/views/generated/formClassCourse/index.vue b/orange-demo-multi-web/src/views/generated/formClassCourse/index.vue deleted file mode 100644 index e68ee052..00000000 --- a/orange-demo-multi-web/src/views/generated/formClassCourse/index.vue +++ /dev/null @@ -1,207 +0,0 @@ - - - diff --git a/orange-demo-multi-web/src/views/generated/formClassStudent/index.vue b/orange-demo-multi-web/src/views/generated/formClassStudent/index.vue deleted file mode 100644 index 97b2c146..00000000 --- a/orange-demo-multi-web/src/views/generated/formClassStudent/index.vue +++ /dev/null @@ -1,181 +0,0 @@ - - - diff --git a/orange-demo-multi-web/src/views/generated/formCourse/index.vue b/orange-demo-multi-web/src/views/generated/formCourse/index.vue index 1dcfdb7e..e83cf536 100644 --- a/orange-demo-multi-web/src/views/generated/formCourse/index.vue +++ b/orange-demo-multi-web/src/views/generated/formCourse/index.vue @@ -39,7 +39,7 @@ - @@ -72,11 +72,11 @@