From 8658e0ea5a8307d00e12376df879c517e8ed80cf Mon Sep 17 00:00:00 2001 From: Jerry <707344974@qq.com> Date: Sat, 14 Aug 2021 08:47:19 +0800 Subject: [PATCH] =?UTF-8?q?=E5=90=8C=E6=AD=A5=E5=88=B01.8.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- orange-demo-multi-service/.idea/compiler.xml | 4 +- ...Maven__com_baomidou_mybatis_plus_3_4_2.xml | 13 + ...baomidou_mybatis_plus_annotation_3_4_2.xml | 13 + ...omidou_mybatis_plus_boot_starter_3_4_2.xml | 13 + ...__com_baomidou_mybatis_plus_core_3_4_2.xml | 13 + ..._baomidou_mybatis_plus_extension_3_4_2.xml | 13 + ...ub_xiaoymin_knife4j_annotations_2_0_8.xml} | 8 +- ...om_github_xiaoymin_knife4j_core_2_0_8.xml} | 8 +- ...ife4j_micro_spring_boot_starter_2_0_8.xml} | 8 +- ..._github_xiaoymin_knife4j_spring_2_0_8.xml} | 8 +- ...ife4j_spring_boot_autoconfigure_2_0_8.xml} | 8 +- ...thub_xiaoymin_knife4j_spring_ui_2_0_8.xml} | 8 +- ..._io_github_classgraph_classgraph_4_1_7.xml | 13 + ...gfox_springfox_bean_validators_2_10_5.xml} | 8 +- ...n__io_springfox_springfox_core_2_10_5.xml} | 8 +- ..._io_springfox_springfox_schema_2_10_5.xml} | 8 +- ...en__io_springfox_springfox_spi_2_10_5.xml} | 8 +- ...springfox_springfox_spring_web_2_10_5.xml} | 8 +- ...ringfox_springfox_spring_webmvc_2_10_5.xml | 13 + ...o_springfox_springfox_swagger2_2_10_5.xml} | 8 +- ...ngfox_springfox_swagger_common_2_10_5.xml} | 8 +- ...aven__io_swagger_swagger_models_1_5_21.xml | 13 - ..._javax_persistence_persistence_api_1_0.xml | 13 - ...l => Maven__org_mybatis_mybatis_3_5_5.xml} | 8 +- ...ven__org_mybatis_mybatis_spring_2_0_5.xml} | 8 +- ...ugin_spring_plugin_core_2_0_0_RELEASE.xml} | 8 +- ..._spring_plugin_metadata_2_0_0_RELEASE.xml} | 8 +- .../Maven__tk_mybatis_mapper_base_1_1_5.xml | 13 - .../Maven__tk_mybatis_mapper_core_1_1_5.xml | 13 - .../Maven__tk_mybatis_mapper_extra_1_1_5.xml | 13 - .../Maven__tk_mybatis_mapper_spring_1_1_5.xml | 13 - ...mapper_spring_boot_autoconfigure_2_1_5.xml | 13 - ...batis_mapper_spring_boot_starter_2_1_5.xml | 13 - ...Maven__tk_mybatis_mapper_weekend_1_1_5.xml | 13 - orange-demo-multi-service/.idea/workspace.xml | 25 +- orange-demo-multi-service/OrangeMultiDemo.iml | 8 +- .../application-common/application-common.iml | 8 +- .../application/application.iml | 8 +- .../course-class-api/course-class-api.iml | 53 ++- .../course-class-service.iml | 53 ++- .../config/DataSourceConfig.java | 2 +- .../courseclassservice/model/AreaCode.java | 14 +- .../courseclassservice/model/ClassCourse.java | 12 +- .../model/ClassStudent.java | 10 +- .../demo/courseclassservice/model/Course.java | 43 +- .../demo/courseclassservice/model/Grade.java | 13 +- .../model/MaterialEdition.java | 10 +- .../courseclassservice/model/SchoolInfo.java | 17 +- .../courseclassservice/model/Student.java | 55 ++- .../model/StudentClass.java | 30 +- .../service/impl/CourseServiceImpl.java | 13 +- .../service/impl/SchoolInfoServiceImpl.java | 10 +- .../service/impl/StudentClassServiceImpl.java | 46 ++- .../service/impl/StudentServiceImpl.java | 13 +- .../application/course-class/course-class.iml | 8 +- .../application/gateway/gateway.iml | 62 ++- .../application/stats/stats-api/stats-api.iml | 53 ++- .../statsservice/config/DataSourceConfig.java | 2 +- .../statsservice/model/CourseTransStats.java | 36 +- .../orange/demo/statsservice/model/Grade.java | 13 +- .../demo/statsservice/model/SchoolInfo.java | 13 +- .../model/StudentActionStats.java | 57 ++- .../model/StudentActionTrans.java | 47 ++- .../impl/CourseTransStatsServiceImpl.java | 3 +- .../impl/StudentActionStatsServiceImpl.java | 3 +- .../impl/StudentActionTransServiceImpl.java | 10 +- .../stats/stats-service/stats-service.iml | 53 ++- .../application/stats/stats.iml | 8 +- .../application/upms/upms-api/upms-api.iml | 53 ++- .../upmsservice/config/DataSourceConfig.java | 2 +- .../controller/LoginUserController.java | 13 +- .../demo/upmsservice/model/SysMenu.java | 28 +- .../upmsservice/model/SysMenuPermCode.java | 11 +- .../demo/upmsservice/model/SysPerm.java | 20 +- .../demo/upmsservice/model/SysPermCode.java | 24 +- .../upmsservice/model/SysPermCodePerm.java | 11 +- .../demo/upmsservice/model/SysPermModule.java | 22 +- .../upmsservice/model/SysPermWhitelist.java | 12 +- .../demo/upmsservice/model/SysRole.java | 16 +- .../demo/upmsservice/model/SysRoleMenu.java | 11 +- .../demo/upmsservice/model/SysUser.java | 32 +- .../demo/upmsservice/model/SysUserRole.java | 11 +- .../service/impl/SysMenuServiceImpl.java | 54 ++- .../service/impl/SysPermCodeServiceImpl.java | 23 +- .../impl/SysPermModuleServiceImpl.java | 5 +- .../service/impl/SysPermServiceImpl.java | 27 +- .../service/impl/SysRoleServiceImpl.java | 26 +- .../service/impl/SysUserServiceImpl.java | 35 +- .../upms/upms-service/upms-service.iml | 53 ++- .../application/upms/upms.iml | 8 +- .../common/common-core/common-core.iml | 23 +- .../common/common-core/pom.xml | 6 +- .../core/annotation/DeletedFlagColumn.java | 16 - .../common/core/aop/DataSourceAspect.java | 6 +- .../core/aop/DataSourceResolveAspect.java | 6 +- .../common/core/aop/DictCacheSyncAspect.java | 16 +- .../core/base/controller/BaseController.java | 7 +- .../common/core/base/dao/BaseDaoMapper.java | 7 +- .../common/core/base/model/BaseModel.java | 10 +- .../core/base/service/BaseDictService.java | 34 +- .../common/core/base/service/BaseService.java | 379 ++++++++---------- .../core/base/service/IBaseDictService.java | 3 +- .../core/base/service/IBaseService.java | 20 +- .../core/config/DataSourceContextHolder.java | 21 +- .../common/core/constant/AggregationType.java | 10 +- .../demo/common/core/object/MyOrderParam.java | 4 + .../common/core/object/MyWhereCriteria.java | 85 +++- .../common/core/object/ResponseResult.java | 12 +- .../demo/common/core/object/TokenData.java | 4 + .../demo/common/core/util/MyModelUtil.java | 82 ++-- .../common/common-redis/common-redis.iml | 25 +- .../common/redis/config/RedissonConfig.java | 10 + .../common-sequence/common-sequence.iml | 25 +- .../common/common-swagger/common-swagger.iml | 53 ++- .../common/common-swagger/pom.xml | 10 + .../config/SwaggerAutoConfiguration.java | 4 +- ...{ByteBodyUtils.java => ByteBuddyUtil.java} | 4 +- .../plugin/DynamicBodyModelPlugin.java | 2 +- orange-demo-multi-service/common/common.iml | 8 +- .../framework/admin-monitor/admin-monitor.iml | 6 +- .../framework/framework.iml | 8 +- orange-demo-multi-service/pom.xml | 20 +- .../config-data/application-dev.yaml | 2 + .../config-data/course-class-dev.yaml | 16 +- .../zz-resource/config-data/stats-dev.yaml | 16 +- .../zz-resource/config-data/upms-dev.yaml | 15 +- orange-demo-single-service/README.md | 2 + .../application-common/pom.xml | 8 - .../application-webadmin/pom.xml | 5 + .../app/controller/AreaCodeController.java | 2 + .../app/controller/CourseController.java | 18 + .../CourseTransStatsController.java | 2 + .../app/controller/GradeController.java | 4 + .../app/controller/SchoolInfoController.java | 4 + .../StudentActionStatsController.java | 2 + .../StudentActionTransController.java | 10 + .../controller/StudentClassController.java | 4 + .../app/controller/StudentController.java | 16 + .../demo/webadmin/app/dto/ClassCourseDto.java | 6 + .../webadmin/app/dto/ClassStudentDto.java | 5 + .../demo/webadmin/app/dto/CourseDto.java | 18 + .../webadmin/app/dto/CourseTransStatsDto.java | 15 + .../demo/webadmin/app/dto/GradeDto.java | 5 + .../demo/webadmin/app/dto/SchoolInfoDto.java | 7 + .../app/dto/StudentActionStatsDto.java | 26 ++ .../app/dto/StudentActionTransDto.java | 20 + .../webadmin/app/dto/StudentClassDto.java | 9 + .../demo/webadmin/app/dto/StudentDto.java | 22 + .../demo/webadmin/app/model/AreaCode.java | 14 +- .../demo/webadmin/app/model/ClassCourse.java | 12 +- .../demo/webadmin/app/model/ClassStudent.java | 10 +- .../demo/webadmin/app/model/Course.java | 43 +- .../webadmin/app/model/CourseTransStats.java | 34 +- .../orange/demo/webadmin/app/model/Grade.java | 13 +- .../webadmin/app/model/MaterialEdition.java | 10 +- .../demo/webadmin/app/model/SchoolInfo.java | 17 +- .../demo/webadmin/app/model/Student.java | 55 ++- .../app/model/StudentActionStats.java | 57 ++- .../app/model/StudentActionTrans.java | 47 ++- .../demo/webadmin/app/model/StudentClass.java | 30 +- .../app/service/impl/CourseServiceImpl.java | 10 +- .../service/impl/SchoolInfoServiceImpl.java | 7 +- .../impl/StudentActionTransServiceImpl.java | 7 +- .../service/impl/StudentClassServiceImpl.java | 43 +- .../app/service/impl/StudentServiceImpl.java | 10 +- .../demo/webadmin/app/vo/AreaCodeVo.java | 7 + .../demo/webadmin/app/vo/ClassCourseVo.java | 6 + .../demo/webadmin/app/vo/ClassStudentVo.java | 5 + .../webadmin/app/vo/CourseTransStatsVo.java | 15 + .../orange/demo/webadmin/app/vo/CourseVo.java | 19 + .../orange/demo/webadmin/app/vo/GradeVo.java | 5 + .../demo/webadmin/app/vo/SchoolInfoVo.java | 9 + .../webadmin/app/vo/StudentActionStatsVo.java | 27 ++ .../webadmin/app/vo/StudentActionTransVo.java | 22 + .../demo/webadmin/app/vo/StudentClassVo.java | 14 + .../demo/webadmin/app/vo/StudentVo.java | 26 ++ .../webadmin/config/DataSourceConfig.java | 2 +- .../upms/controller/LoginController.java | 12 + .../upms/controller/LoginUserController.java | 15 +- .../upms/controller/SysMenuController.java | 4 + .../controller/SysPermCodeController.java | 4 + .../upms/controller/SysPermController.java | 4 + .../controller/SysPermModuleController.java | 4 + .../upms/controller/SysRoleController.java | 5 + .../upms/controller/SysUserController.java | 10 + .../demo/webadmin/upms/dto/SysMenuDto.java | 11 + .../webadmin/upms/dto/SysPermCodeDto.java | 9 + .../demo/webadmin/upms/dto/SysPermDto.java | 9 + .../webadmin/upms/dto/SysPermModuleDto.java | 8 + .../demo/webadmin/upms/dto/SysRoleDto.java | 5 + .../demo/webadmin/upms/dto/SysUserDto.java | 12 + .../demo/webadmin/upms/model/SysMenu.java | 36 +- .../webadmin/upms/model/SysMenuPermCode.java | 11 +- .../demo/webadmin/upms/model/SysPerm.java | 28 +- .../demo/webadmin/upms/model/SysPermCode.java | 32 +- .../webadmin/upms/model/SysPermCodePerm.java | 11 +- .../webadmin/upms/model/SysPermModule.java | 30 +- .../webadmin/upms/model/SysPermWhitelist.java | 12 +- .../demo/webadmin/upms/model/SysRole.java | 24 +- .../demo/webadmin/upms/model/SysRoleMenu.java | 11 +- .../demo/webadmin/upms/model/SysUser.java | 40 +- .../demo/webadmin/upms/model/SysUserRole.java | 11 +- .../upms/service/impl/SysMenuServiceImpl.java | 54 ++- .../service/impl/SysPermCodeServiceImpl.java | 25 +- .../impl/SysPermModuleServiceImpl.java | 5 +- .../upms/service/impl/SysPermServiceImpl.java | 27 +- .../upms/service/impl/SysRoleServiceImpl.java | 26 +- .../upms/service/impl/SysUserServiceImpl.java | 32 +- .../demo/webadmin/upms/vo/SysMenuVo.java | 17 + .../demo/webadmin/upms/vo/SysPermCodeVo.java | 14 + .../webadmin/upms/vo/SysPermModuleVo.java | 13 + .../demo/webadmin/upms/vo/SysPermVo.java | 14 + .../demo/webadmin/upms/vo/SysRoleVo.java | 10 + .../demo/webadmin/upms/vo/SysUserVo.java | 16 + .../src/main/resources/application.yml | 28 +- .../src/main/resources/log4j2.xml | 3 + .../common/common-core/pom.xml | 6 +- .../core/annotation/DeletedFlagColumn.java | 16 - .../common/core/aop/DataSourceAspect.java | 6 +- .../core/aop/DataSourceResolveAspect.java | 6 +- .../common/core/aop/DictCacheSyncAspect.java | 16 +- .../common/core/base/dao/BaseDaoMapper.java | 7 +- .../core/base/service/BaseDictService.java | 34 +- .../common/core/base/service/BaseService.java | 357 ++++++++--------- .../core/base/service/IBaseDictService.java | 3 +- .../core/base/service/IBaseService.java | 20 +- .../core/config/DataSourceContextHolder.java | 21 +- .../common/core/constant/AggregationType.java | 10 +- .../demo/common/core/object/MyOrderParam.java | 4 + .../common/core/object/MyWhereCriteria.java | 85 +++- .../common/core/object/ResponseResult.java | 12 +- .../demo/common/core/object/TokenData.java | 4 + .../demo/common/core/util/MyModelUtil.java | 82 ++-- .../common/redis/config/RedissonConfig.java | 10 + .../common/common-swagger/pom.xml | 39 ++ .../config/SwaggerAutoConfiguration.java | 56 +++ .../swagger/config/SwaggerProperties.java | 40 ++ .../common/swagger/plugin/ByteBuddyUtil.java | 85 ++++ .../plugin/DynamicBodyModelPlugin.java | 61 +++ .../plugin/DynamicBodyParameterBuilder.java | 64 +++ .../main/resources/META-INF/spring.factories | 2 + orange-demo-single-service/common/pom.xml | 1 + orange-demo-single-service/pom.xml | 15 +- 243 files changed, 2962 insertions(+), 2159 deletions(-) create mode 100644 orange-demo-multi-service/.idea/libraries/Maven__com_baomidou_mybatis_plus_3_4_2.xml create mode 100644 orange-demo-multi-service/.idea/libraries/Maven__com_baomidou_mybatis_plus_annotation_3_4_2.xml create mode 100644 orange-demo-multi-service/.idea/libraries/Maven__com_baomidou_mybatis_plus_boot_starter_3_4_2.xml create mode 100644 orange-demo-multi-service/.idea/libraries/Maven__com_baomidou_mybatis_plus_core_3_4_2.xml create mode 100644 orange-demo-multi-service/.idea/libraries/Maven__com_baomidou_mybatis_plus_extension_3_4_2.xml rename orange-demo-multi-service/.idea/libraries/{Maven__com_github_xiaoymin_knife4j_annotations_2_0_5.xml => Maven__com_github_xiaoymin_knife4j_annotations_2_0_8.xml} (67%) rename orange-demo-multi-service/.idea/libraries/{Maven__com_github_xiaoymin_knife4j_core_2_0_5.xml => Maven__com_github_xiaoymin_knife4j_core_2_0_8.xml} (60%) rename orange-demo-multi-service/.idea/libraries/{Maven__com_github_xiaoymin_knife4j_micro_spring_boot_starter_2_0_5.xml => Maven__com_github_xiaoymin_knife4j_micro_spring_boot_starter_2_0_8.xml} (56%) rename orange-demo-multi-service/.idea/libraries/{Maven__com_github_xiaoymin_knife4j_spring_2_0_5.xml => Maven__com_github_xiaoymin_knife4j_spring_2_0_8.xml} (59%) rename orange-demo-multi-service/.idea/libraries/{Maven__com_github_xiaoymin_knife4j_spring_boot_autoconfigure_2_0_5.xml => Maven__com_github_xiaoymin_knife4j_spring_boot_autoconfigure_2_0_8.xml} (56%) rename orange-demo-multi-service/.idea/libraries/{Maven__com_github_xiaoymin_knife4j_spring_ui_2_0_5.xml => Maven__com_github_xiaoymin_knife4j_spring_ui_2_0_8.xml} (67%) create mode 100644 orange-demo-multi-service/.idea/libraries/Maven__io_github_classgraph_classgraph_4_1_7.xml rename orange-demo-multi-service/.idea/libraries/{Maven__io_springfox_springfox_bean_validators_2_9_2.xml => Maven__io_springfox_springfox_bean_validators_2_10_5.xml} (64%) rename orange-demo-multi-service/.idea/libraries/{Maven__io_springfox_springfox_core_2_9_2.xml => Maven__io_springfox_springfox_core_2_10_5.xml} (61%) rename orange-demo-multi-service/.idea/libraries/{Maven__io_springfox_springfox_schema_2_9_2.xml => Maven__io_springfox_springfox_schema_2_10_5.xml} (59%) rename orange-demo-multi-service/.idea/libraries/{Maven__io_springfox_springfox_spi_2_9_2.xml => Maven__io_springfox_springfox_spi_2_10_5.xml} (62%) rename orange-demo-multi-service/.idea/libraries/{Maven__io_springfox_springfox_spring_web_2_9_2.xml => Maven__io_springfox_springfox_spring_web_2_10_5.xml} (56%) create mode 100644 orange-demo-multi-service/.idea/libraries/Maven__io_springfox_springfox_spring_webmvc_2_10_5.xml rename orange-demo-multi-service/.idea/libraries/{Maven__io_springfox_springfox_swagger2_2_9_2.xml => Maven__io_springfox_springfox_swagger2_2_10_5.xml} (58%) rename orange-demo-multi-service/.idea/libraries/{Maven__io_springfox_springfox_swagger_common_2_9_2.xml => Maven__io_springfox_springfox_swagger_common_2_10_5.xml} (64%) delete mode 100644 orange-demo-multi-service/.idea/libraries/Maven__io_swagger_swagger_models_1_5_21.xml delete mode 100644 orange-demo-multi-service/.idea/libraries/Maven__javax_persistence_persistence_api_1_0.xml rename orange-demo-multi-service/.idea/libraries/{Maven__org_mybatis_mybatis_3_4_6.xml => Maven__org_mybatis_mybatis_3_5_5.xml} (68%) rename orange-demo-multi-service/.idea/libraries/{Maven__org_mybatis_mybatis_spring_1_3_2.xml => Maven__org_mybatis_mybatis_spring_2_0_5.xml} (62%) rename orange-demo-multi-service/.idea/libraries/{Maven__org_springframework_plugin_spring_plugin_core_1_2_0_RELEASE.xml => Maven__org_springframework_plugin_spring_plugin_core_2_0_0_RELEASE.xml} (68%) rename orange-demo-multi-service/.idea/libraries/{Maven__org_springframework_plugin_spring_plugin_metadata_1_2_0_RELEASE.xml => Maven__org_springframework_plugin_spring_plugin_metadata_2_0_0_RELEASE.xml} (56%) delete mode 100644 orange-demo-multi-service/.idea/libraries/Maven__tk_mybatis_mapper_base_1_1_5.xml delete mode 100644 orange-demo-multi-service/.idea/libraries/Maven__tk_mybatis_mapper_core_1_1_5.xml delete mode 100644 orange-demo-multi-service/.idea/libraries/Maven__tk_mybatis_mapper_extra_1_1_5.xml delete mode 100644 orange-demo-multi-service/.idea/libraries/Maven__tk_mybatis_mapper_spring_1_1_5.xml delete mode 100644 orange-demo-multi-service/.idea/libraries/Maven__tk_mybatis_mapper_spring_boot_autoconfigure_2_1_5.xml delete mode 100644 orange-demo-multi-service/.idea/libraries/Maven__tk_mybatis_mapper_spring_boot_starter_2_1_5.xml delete mode 100644 orange-demo-multi-service/.idea/libraries/Maven__tk_mybatis_mapper_weekend_1_1_5.xml delete mode 100644 orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/annotation/DeletedFlagColumn.java rename orange-demo-multi-service/common/common-swagger/src/main/java/com/orange/demo/common/swagger/plugin/{ByteBodyUtils.java => ByteBuddyUtil.java} (98%) delete mode 100644 orange-demo-single-service/common/common-core/src/main/java/com/orange/demo/common/core/annotation/DeletedFlagColumn.java create mode 100644 orange-demo-single-service/common/common-swagger/pom.xml create mode 100644 orange-demo-single-service/common/common-swagger/src/main/java/com/orange/demo/common/swagger/config/SwaggerAutoConfiguration.java create mode 100644 orange-demo-single-service/common/common-swagger/src/main/java/com/orange/demo/common/swagger/config/SwaggerProperties.java create mode 100644 orange-demo-single-service/common/common-swagger/src/main/java/com/orange/demo/common/swagger/plugin/ByteBuddyUtil.java create mode 100644 orange-demo-single-service/common/common-swagger/src/main/java/com/orange/demo/common/swagger/plugin/DynamicBodyModelPlugin.java create mode 100644 orange-demo-single-service/common/common-swagger/src/main/java/com/orange/demo/common/swagger/plugin/DynamicBodyParameterBuilder.java create mode 100644 orange-demo-single-service/common/common-swagger/src/main/resources/META-INF/spring.factories diff --git a/orange-demo-multi-service/.idea/compiler.xml b/orange-demo-multi-service/.idea/compiler.xml index c3bb3d4d..eb44a982 100644 --- a/orange-demo-multi-service/.idea/compiler.xml +++ b/orange-demo-multi-service/.idea/compiler.xml @@ -14,12 +14,12 @@ - + - + diff --git a/orange-demo-multi-service/.idea/libraries/Maven__com_baomidou_mybatis_plus_3_4_2.xml b/orange-demo-multi-service/.idea/libraries/Maven__com_baomidou_mybatis_plus_3_4_2.xml new file mode 100644 index 00000000..2303492c --- /dev/null +++ b/orange-demo-multi-service/.idea/libraries/Maven__com_baomidou_mybatis_plus_3_4_2.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/orange-demo-multi-service/.idea/libraries/Maven__com_baomidou_mybatis_plus_annotation_3_4_2.xml b/orange-demo-multi-service/.idea/libraries/Maven__com_baomidou_mybatis_plus_annotation_3_4_2.xml new file mode 100644 index 00000000..6aa04155 --- /dev/null +++ b/orange-demo-multi-service/.idea/libraries/Maven__com_baomidou_mybatis_plus_annotation_3_4_2.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/orange-demo-multi-service/.idea/libraries/Maven__com_baomidou_mybatis_plus_boot_starter_3_4_2.xml b/orange-demo-multi-service/.idea/libraries/Maven__com_baomidou_mybatis_plus_boot_starter_3_4_2.xml new file mode 100644 index 00000000..7038c58d --- /dev/null +++ b/orange-demo-multi-service/.idea/libraries/Maven__com_baomidou_mybatis_plus_boot_starter_3_4_2.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/orange-demo-multi-service/.idea/libraries/Maven__com_baomidou_mybatis_plus_core_3_4_2.xml b/orange-demo-multi-service/.idea/libraries/Maven__com_baomidou_mybatis_plus_core_3_4_2.xml new file mode 100644 index 00000000..ce4ef9dc --- /dev/null +++ b/orange-demo-multi-service/.idea/libraries/Maven__com_baomidou_mybatis_plus_core_3_4_2.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/orange-demo-multi-service/.idea/libraries/Maven__com_baomidou_mybatis_plus_extension_3_4_2.xml b/orange-demo-multi-service/.idea/libraries/Maven__com_baomidou_mybatis_plus_extension_3_4_2.xml new file mode 100644 index 00000000..3a86667f --- /dev/null +++ b/orange-demo-multi-service/.idea/libraries/Maven__com_baomidou_mybatis_plus_extension_3_4_2.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/orange-demo-multi-service/.idea/libraries/Maven__com_github_xiaoymin_knife4j_annotations_2_0_5.xml b/orange-demo-multi-service/.idea/libraries/Maven__com_github_xiaoymin_knife4j_annotations_2_0_8.xml similarity index 67% rename from orange-demo-multi-service/.idea/libraries/Maven__com_github_xiaoymin_knife4j_annotations_2_0_5.xml rename to orange-demo-multi-service/.idea/libraries/Maven__com_github_xiaoymin_knife4j_annotations_2_0_8.xml index 1f9c628c..2f8ee3d6 100644 --- a/orange-demo-multi-service/.idea/libraries/Maven__com_github_xiaoymin_knife4j_annotations_2_0_5.xml +++ b/orange-demo-multi-service/.idea/libraries/Maven__com_github_xiaoymin_knife4j_annotations_2_0_8.xml @@ -1,13 +1,13 @@ - + - + - + - + \ No newline at end of file diff --git a/orange-demo-multi-service/.idea/libraries/Maven__com_github_xiaoymin_knife4j_core_2_0_5.xml b/orange-demo-multi-service/.idea/libraries/Maven__com_github_xiaoymin_knife4j_core_2_0_8.xml similarity index 60% rename from orange-demo-multi-service/.idea/libraries/Maven__com_github_xiaoymin_knife4j_core_2_0_5.xml rename to orange-demo-multi-service/.idea/libraries/Maven__com_github_xiaoymin_knife4j_core_2_0_8.xml index 177365d1..fe437afe 100644 --- a/orange-demo-multi-service/.idea/libraries/Maven__com_github_xiaoymin_knife4j_core_2_0_5.xml +++ b/orange-demo-multi-service/.idea/libraries/Maven__com_github_xiaoymin_knife4j_core_2_0_8.xml @@ -1,13 +1,13 @@ - + - + - + - + \ No newline at end of file diff --git a/orange-demo-multi-service/.idea/libraries/Maven__com_github_xiaoymin_knife4j_micro_spring_boot_starter_2_0_5.xml b/orange-demo-multi-service/.idea/libraries/Maven__com_github_xiaoymin_knife4j_micro_spring_boot_starter_2_0_8.xml similarity index 56% rename from orange-demo-multi-service/.idea/libraries/Maven__com_github_xiaoymin_knife4j_micro_spring_boot_starter_2_0_5.xml rename to orange-demo-multi-service/.idea/libraries/Maven__com_github_xiaoymin_knife4j_micro_spring_boot_starter_2_0_8.xml index 2e57265a..2729ebc1 100644 --- a/orange-demo-multi-service/.idea/libraries/Maven__com_github_xiaoymin_knife4j_micro_spring_boot_starter_2_0_5.xml +++ b/orange-demo-multi-service/.idea/libraries/Maven__com_github_xiaoymin_knife4j_micro_spring_boot_starter_2_0_8.xml @@ -1,13 +1,13 @@ - + - + - + - + \ No newline at end of file diff --git a/orange-demo-multi-service/.idea/libraries/Maven__com_github_xiaoymin_knife4j_spring_2_0_5.xml b/orange-demo-multi-service/.idea/libraries/Maven__com_github_xiaoymin_knife4j_spring_2_0_8.xml similarity index 59% rename from orange-demo-multi-service/.idea/libraries/Maven__com_github_xiaoymin_knife4j_spring_2_0_5.xml rename to orange-demo-multi-service/.idea/libraries/Maven__com_github_xiaoymin_knife4j_spring_2_0_8.xml index 664ba028..7beab6c6 100644 --- a/orange-demo-multi-service/.idea/libraries/Maven__com_github_xiaoymin_knife4j_spring_2_0_5.xml +++ b/orange-demo-multi-service/.idea/libraries/Maven__com_github_xiaoymin_knife4j_spring_2_0_8.xml @@ -1,13 +1,13 @@ - + - + - + - + \ No newline at end of file diff --git a/orange-demo-multi-service/.idea/libraries/Maven__com_github_xiaoymin_knife4j_spring_boot_autoconfigure_2_0_5.xml b/orange-demo-multi-service/.idea/libraries/Maven__com_github_xiaoymin_knife4j_spring_boot_autoconfigure_2_0_8.xml similarity index 56% rename from orange-demo-multi-service/.idea/libraries/Maven__com_github_xiaoymin_knife4j_spring_boot_autoconfigure_2_0_5.xml rename to orange-demo-multi-service/.idea/libraries/Maven__com_github_xiaoymin_knife4j_spring_boot_autoconfigure_2_0_8.xml index 1fee9449..ee24c313 100644 --- a/orange-demo-multi-service/.idea/libraries/Maven__com_github_xiaoymin_knife4j_spring_boot_autoconfigure_2_0_5.xml +++ b/orange-demo-multi-service/.idea/libraries/Maven__com_github_xiaoymin_knife4j_spring_boot_autoconfigure_2_0_8.xml @@ -1,13 +1,13 @@ - + - + - + - + \ No newline at end of file diff --git a/orange-demo-multi-service/.idea/libraries/Maven__com_github_xiaoymin_knife4j_spring_ui_2_0_5.xml b/orange-demo-multi-service/.idea/libraries/Maven__com_github_xiaoymin_knife4j_spring_ui_2_0_8.xml similarity index 67% rename from orange-demo-multi-service/.idea/libraries/Maven__com_github_xiaoymin_knife4j_spring_ui_2_0_5.xml rename to orange-demo-multi-service/.idea/libraries/Maven__com_github_xiaoymin_knife4j_spring_ui_2_0_8.xml index da9242d4..6143d620 100644 --- a/orange-demo-multi-service/.idea/libraries/Maven__com_github_xiaoymin_knife4j_spring_ui_2_0_5.xml +++ b/orange-demo-multi-service/.idea/libraries/Maven__com_github_xiaoymin_knife4j_spring_ui_2_0_8.xml @@ -1,13 +1,13 @@ - + - + - + - + \ No newline at end of file diff --git a/orange-demo-multi-service/.idea/libraries/Maven__io_github_classgraph_classgraph_4_1_7.xml b/orange-demo-multi-service/.idea/libraries/Maven__io_github_classgraph_classgraph_4_1_7.xml new file mode 100644 index 00000000..5f22bda8 --- /dev/null +++ b/orange-demo-multi-service/.idea/libraries/Maven__io_github_classgraph_classgraph_4_1_7.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/orange-demo-multi-service/.idea/libraries/Maven__io_springfox_springfox_bean_validators_2_9_2.xml b/orange-demo-multi-service/.idea/libraries/Maven__io_springfox_springfox_bean_validators_2_10_5.xml similarity index 64% rename from orange-demo-multi-service/.idea/libraries/Maven__io_springfox_springfox_bean_validators_2_9_2.xml rename to orange-demo-multi-service/.idea/libraries/Maven__io_springfox_springfox_bean_validators_2_10_5.xml index fd547760..2c1e8b60 100644 --- a/orange-demo-multi-service/.idea/libraries/Maven__io_springfox_springfox_bean_validators_2_9_2.xml +++ b/orange-demo-multi-service/.idea/libraries/Maven__io_springfox_springfox_bean_validators_2_10_5.xml @@ -1,13 +1,13 @@ - + - + - + - + \ No newline at end of file diff --git a/orange-demo-multi-service/.idea/libraries/Maven__io_springfox_springfox_core_2_9_2.xml b/orange-demo-multi-service/.idea/libraries/Maven__io_springfox_springfox_core_2_10_5.xml similarity index 61% rename from orange-demo-multi-service/.idea/libraries/Maven__io_springfox_springfox_core_2_9_2.xml rename to orange-demo-multi-service/.idea/libraries/Maven__io_springfox_springfox_core_2_10_5.xml index 03588dc9..bc7cff97 100644 --- a/orange-demo-multi-service/.idea/libraries/Maven__io_springfox_springfox_core_2_9_2.xml +++ b/orange-demo-multi-service/.idea/libraries/Maven__io_springfox_springfox_core_2_10_5.xml @@ -1,13 +1,13 @@ - + - + - + - + \ No newline at end of file diff --git a/orange-demo-multi-service/.idea/libraries/Maven__io_springfox_springfox_schema_2_9_2.xml b/orange-demo-multi-service/.idea/libraries/Maven__io_springfox_springfox_schema_2_10_5.xml similarity index 59% rename from orange-demo-multi-service/.idea/libraries/Maven__io_springfox_springfox_schema_2_9_2.xml rename to orange-demo-multi-service/.idea/libraries/Maven__io_springfox_springfox_schema_2_10_5.xml index 4a47148b..eb978450 100644 --- a/orange-demo-multi-service/.idea/libraries/Maven__io_springfox_springfox_schema_2_9_2.xml +++ b/orange-demo-multi-service/.idea/libraries/Maven__io_springfox_springfox_schema_2_10_5.xml @@ -1,13 +1,13 @@ - + - + - + - + \ No newline at end of file diff --git a/orange-demo-multi-service/.idea/libraries/Maven__io_springfox_springfox_spi_2_9_2.xml b/orange-demo-multi-service/.idea/libraries/Maven__io_springfox_springfox_spi_2_10_5.xml similarity index 62% rename from orange-demo-multi-service/.idea/libraries/Maven__io_springfox_springfox_spi_2_9_2.xml rename to orange-demo-multi-service/.idea/libraries/Maven__io_springfox_springfox_spi_2_10_5.xml index f934649a..43344699 100644 --- a/orange-demo-multi-service/.idea/libraries/Maven__io_springfox_springfox_spi_2_9_2.xml +++ b/orange-demo-multi-service/.idea/libraries/Maven__io_springfox_springfox_spi_2_10_5.xml @@ -1,13 +1,13 @@ - + - + - + - + \ No newline at end of file diff --git a/orange-demo-multi-service/.idea/libraries/Maven__io_springfox_springfox_spring_web_2_9_2.xml b/orange-demo-multi-service/.idea/libraries/Maven__io_springfox_springfox_spring_web_2_10_5.xml similarity index 56% rename from orange-demo-multi-service/.idea/libraries/Maven__io_springfox_springfox_spring_web_2_9_2.xml rename to orange-demo-multi-service/.idea/libraries/Maven__io_springfox_springfox_spring_web_2_10_5.xml index 7898a19c..b2e26d1c 100644 --- a/orange-demo-multi-service/.idea/libraries/Maven__io_springfox_springfox_spring_web_2_9_2.xml +++ b/orange-demo-multi-service/.idea/libraries/Maven__io_springfox_springfox_spring_web_2_10_5.xml @@ -1,13 +1,13 @@ - + - + - + - + \ No newline at end of file diff --git a/orange-demo-multi-service/.idea/libraries/Maven__io_springfox_springfox_spring_webmvc_2_10_5.xml b/orange-demo-multi-service/.idea/libraries/Maven__io_springfox_springfox_spring_webmvc_2_10_5.xml new file mode 100644 index 00000000..998b395c --- /dev/null +++ b/orange-demo-multi-service/.idea/libraries/Maven__io_springfox_springfox_spring_webmvc_2_10_5.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/orange-demo-multi-service/.idea/libraries/Maven__io_springfox_springfox_swagger2_2_9_2.xml b/orange-demo-multi-service/.idea/libraries/Maven__io_springfox_springfox_swagger2_2_10_5.xml similarity index 58% rename from orange-demo-multi-service/.idea/libraries/Maven__io_springfox_springfox_swagger2_2_9_2.xml rename to orange-demo-multi-service/.idea/libraries/Maven__io_springfox_springfox_swagger2_2_10_5.xml index 4ed7d0d2..8b4b3276 100644 --- a/orange-demo-multi-service/.idea/libraries/Maven__io_springfox_springfox_swagger2_2_9_2.xml +++ b/orange-demo-multi-service/.idea/libraries/Maven__io_springfox_springfox_swagger2_2_10_5.xml @@ -1,13 +1,13 @@ - + - + - + - + \ No newline at end of file diff --git a/orange-demo-multi-service/.idea/libraries/Maven__io_springfox_springfox_swagger_common_2_9_2.xml b/orange-demo-multi-service/.idea/libraries/Maven__io_springfox_springfox_swagger_common_2_10_5.xml similarity index 64% rename from orange-demo-multi-service/.idea/libraries/Maven__io_springfox_springfox_swagger_common_2_9_2.xml rename to orange-demo-multi-service/.idea/libraries/Maven__io_springfox_springfox_swagger_common_2_10_5.xml index c40ef9ff..675e8168 100644 --- a/orange-demo-multi-service/.idea/libraries/Maven__io_springfox_springfox_swagger_common_2_9_2.xml +++ b/orange-demo-multi-service/.idea/libraries/Maven__io_springfox_springfox_swagger_common_2_10_5.xml @@ -1,13 +1,13 @@ - + - + - + - + \ No newline at end of file diff --git a/orange-demo-multi-service/.idea/libraries/Maven__io_swagger_swagger_models_1_5_21.xml b/orange-demo-multi-service/.idea/libraries/Maven__io_swagger_swagger_models_1_5_21.xml deleted file mode 100644 index 9b3959ab..00000000 --- a/orange-demo-multi-service/.idea/libraries/Maven__io_swagger_swagger_models_1_5_21.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/orange-demo-multi-service/.idea/libraries/Maven__javax_persistence_persistence_api_1_0.xml b/orange-demo-multi-service/.idea/libraries/Maven__javax_persistence_persistence_api_1_0.xml deleted file mode 100644 index e60370e5..00000000 --- a/orange-demo-multi-service/.idea/libraries/Maven__javax_persistence_persistence_api_1_0.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/orange-demo-multi-service/.idea/libraries/Maven__org_mybatis_mybatis_3_4_6.xml b/orange-demo-multi-service/.idea/libraries/Maven__org_mybatis_mybatis_3_5_5.xml similarity index 68% rename from orange-demo-multi-service/.idea/libraries/Maven__org_mybatis_mybatis_3_4_6.xml rename to orange-demo-multi-service/.idea/libraries/Maven__org_mybatis_mybatis_3_5_5.xml index 377b7a72..c6b73345 100644 --- a/orange-demo-multi-service/.idea/libraries/Maven__org_mybatis_mybatis_3_4_6.xml +++ b/orange-demo-multi-service/.idea/libraries/Maven__org_mybatis_mybatis_3_5_5.xml @@ -1,13 +1,13 @@ - + - + - + - + \ No newline at end of file diff --git a/orange-demo-multi-service/.idea/libraries/Maven__org_mybatis_mybatis_spring_1_3_2.xml b/orange-demo-multi-service/.idea/libraries/Maven__org_mybatis_mybatis_spring_2_0_5.xml similarity index 62% rename from orange-demo-multi-service/.idea/libraries/Maven__org_mybatis_mybatis_spring_1_3_2.xml rename to orange-demo-multi-service/.idea/libraries/Maven__org_mybatis_mybatis_spring_2_0_5.xml index 713f6040..eb39604a 100644 --- a/orange-demo-multi-service/.idea/libraries/Maven__org_mybatis_mybatis_spring_1_3_2.xml +++ b/orange-demo-multi-service/.idea/libraries/Maven__org_mybatis_mybatis_spring_2_0_5.xml @@ -1,13 +1,13 @@ - + - + - + - + \ No newline at end of file diff --git a/orange-demo-multi-service/.idea/libraries/Maven__org_springframework_plugin_spring_plugin_core_1_2_0_RELEASE.xml b/orange-demo-multi-service/.idea/libraries/Maven__org_springframework_plugin_spring_plugin_core_2_0_0_RELEASE.xml similarity index 68% rename from orange-demo-multi-service/.idea/libraries/Maven__org_springframework_plugin_spring_plugin_core_1_2_0_RELEASE.xml rename to orange-demo-multi-service/.idea/libraries/Maven__org_springframework_plugin_spring_plugin_core_2_0_0_RELEASE.xml index fbc04529..28f52d37 100644 --- a/orange-demo-multi-service/.idea/libraries/Maven__org_springframework_plugin_spring_plugin_core_1_2_0_RELEASE.xml +++ b/orange-demo-multi-service/.idea/libraries/Maven__org_springframework_plugin_spring_plugin_core_2_0_0_RELEASE.xml @@ -1,13 +1,13 @@ - + - + - + - + \ No newline at end of file diff --git a/orange-demo-multi-service/.idea/libraries/Maven__org_springframework_plugin_spring_plugin_metadata_1_2_0_RELEASE.xml b/orange-demo-multi-service/.idea/libraries/Maven__org_springframework_plugin_spring_plugin_metadata_2_0_0_RELEASE.xml similarity index 56% rename from orange-demo-multi-service/.idea/libraries/Maven__org_springframework_plugin_spring_plugin_metadata_1_2_0_RELEASE.xml rename to orange-demo-multi-service/.idea/libraries/Maven__org_springframework_plugin_spring_plugin_metadata_2_0_0_RELEASE.xml index 7e6f096b..fa302bfc 100644 --- a/orange-demo-multi-service/.idea/libraries/Maven__org_springframework_plugin_spring_plugin_metadata_1_2_0_RELEASE.xml +++ b/orange-demo-multi-service/.idea/libraries/Maven__org_springframework_plugin_spring_plugin_metadata_2_0_0_RELEASE.xml @@ -1,13 +1,13 @@ - + - + - + - + \ No newline at end of file diff --git a/orange-demo-multi-service/.idea/libraries/Maven__tk_mybatis_mapper_base_1_1_5.xml b/orange-demo-multi-service/.idea/libraries/Maven__tk_mybatis_mapper_base_1_1_5.xml deleted file mode 100644 index 14970473..00000000 --- a/orange-demo-multi-service/.idea/libraries/Maven__tk_mybatis_mapper_base_1_1_5.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/orange-demo-multi-service/.idea/libraries/Maven__tk_mybatis_mapper_core_1_1_5.xml b/orange-demo-multi-service/.idea/libraries/Maven__tk_mybatis_mapper_core_1_1_5.xml deleted file mode 100644 index 00217b67..00000000 --- a/orange-demo-multi-service/.idea/libraries/Maven__tk_mybatis_mapper_core_1_1_5.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/orange-demo-multi-service/.idea/libraries/Maven__tk_mybatis_mapper_extra_1_1_5.xml b/orange-demo-multi-service/.idea/libraries/Maven__tk_mybatis_mapper_extra_1_1_5.xml deleted file mode 100644 index 9fa6cf7e..00000000 --- a/orange-demo-multi-service/.idea/libraries/Maven__tk_mybatis_mapper_extra_1_1_5.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/orange-demo-multi-service/.idea/libraries/Maven__tk_mybatis_mapper_spring_1_1_5.xml b/orange-demo-multi-service/.idea/libraries/Maven__tk_mybatis_mapper_spring_1_1_5.xml deleted file mode 100644 index 488a0827..00000000 --- a/orange-demo-multi-service/.idea/libraries/Maven__tk_mybatis_mapper_spring_1_1_5.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/orange-demo-multi-service/.idea/libraries/Maven__tk_mybatis_mapper_spring_boot_autoconfigure_2_1_5.xml b/orange-demo-multi-service/.idea/libraries/Maven__tk_mybatis_mapper_spring_boot_autoconfigure_2_1_5.xml deleted file mode 100644 index 5a76248b..00000000 --- a/orange-demo-multi-service/.idea/libraries/Maven__tk_mybatis_mapper_spring_boot_autoconfigure_2_1_5.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/orange-demo-multi-service/.idea/libraries/Maven__tk_mybatis_mapper_spring_boot_starter_2_1_5.xml b/orange-demo-multi-service/.idea/libraries/Maven__tk_mybatis_mapper_spring_boot_starter_2_1_5.xml deleted file mode 100644 index 69ca4ac2..00000000 --- a/orange-demo-multi-service/.idea/libraries/Maven__tk_mybatis_mapper_spring_boot_starter_2_1_5.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/orange-demo-multi-service/.idea/libraries/Maven__tk_mybatis_mapper_weekend_1_1_5.xml b/orange-demo-multi-service/.idea/libraries/Maven__tk_mybatis_mapper_weekend_1_1_5.xml deleted file mode 100644 index 2cc0e828..00000000 --- a/orange-demo-multi-service/.idea/libraries/Maven__tk_mybatis_mapper_weekend_1_1_5.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/orange-demo-multi-service/.idea/workspace.xml b/orange-demo-multi-service/.idea/workspace.xml index 7a2d0f45..63e6cc1f 100644 --- a/orange-demo-multi-service/.idea/workspace.xml +++ b/orange-demo-multi-service/.idea/workspace.xml @@ -1,7 +1,7 @@ - + \ No newline at end of file diff --git a/orange-demo-multi-service/OrangeMultiDemo.iml b/orange-demo-multi-service/OrangeMultiDemo.iml index ef8413bc..b9bca3d8 100644 --- a/orange-demo-multi-service/OrangeMultiDemo.iml +++ b/orange-demo-multi-service/OrangeMultiDemo.iml @@ -17,9 +17,6 @@ - - - @@ -117,6 +114,11 @@ + + + + + diff --git a/orange-demo-multi-service/application/application-common/application-common.iml b/orange-demo-multi-service/application/application-common/application-common.iml index 82b881c9..7994700e 100644 --- a/orange-demo-multi-service/application/application-common/application-common.iml +++ b/orange-demo-multi-service/application/application-common/application-common.iml @@ -91,9 +91,6 @@ - - - @@ -168,6 +165,11 @@ + + + + + diff --git a/orange-demo-multi-service/application/application.iml b/orange-demo-multi-service/application/application.iml index c8c12938..f4ed0119 100644 --- a/orange-demo-multi-service/application/application.iml +++ b/orange-demo-multi-service/application/application.iml @@ -85,9 +85,6 @@ - - - @@ -162,6 +159,11 @@ + + + + + diff --git a/orange-demo-multi-service/application/course-class/course-class-api/course-class-api.iml b/orange-demo-multi-service/application/course-class/course-class-api/course-class-api.iml index 2f00bb2a..088b0d54 100644 --- a/orange-demo-multi-service/application/course-class/course-class-api/course-class-api.iml +++ b/orange-demo-multi-service/application/course-class/course-class-api/course-class-api.iml @@ -31,7 +31,6 @@ - @@ -66,44 +65,41 @@ - + + + + + - - - - - - - - - + + - - - - - + + + + + - - - - - - - - - + + + + + + + + + @@ -167,8 +163,6 @@ - - @@ -241,6 +235,11 @@ + + + + + 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 4fd6aeac..12e8cf7d 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 @@ -64,44 +64,41 @@ - + + + + + - - - - - - - - - + + - - - - - + + + + + - - - - - - - - - + + + + + + + + + @@ -182,9 +179,6 @@ - - - @@ -257,6 +251,11 @@ + + + + + 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 32050215..102ed2f5 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 @@ -6,7 +6,7 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Primary; import org.springframework.transaction.annotation.EnableTransactionManagement; -import tk.mybatis.spring.annotation.MapperScan; +import org.mybatis.spring.annotation.MapperScan; import javax.sql.DataSource; 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 561468e8..518e5f03 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 @@ -1,9 +1,8 @@ package com.orange.demo.courseclassservice.model; +import com.baomidou.mybatisplus.annotation.*; import lombok.Data; -import javax.persistence.*; - /** * 行政区划实体对象。 * @@ -11,31 +10,30 @@ import javax.persistence.*; * @date 2020-08-08 */ @Data -@Table(name = "zz_area_code") +@TableName(value = "zz_area_code") public class AreaCode { /** * 行政区划主键Id */ - @Id - @Column(name = "area_id") + @TableId(value = "area_id") private Long areaId; /** * 行政区划名称 */ - @Column(name = "area_name") + @TableField(value = "area_name") private String areaName; /** * 行政区划级别 (1: 省级别 2: 市级别 3: 区级别) */ - @Column(name = "area_level") + @TableField(value = "area_level") private Integer areaLevel; /** * 父级行政区划Id */ - @Column(name = "parent_id") + @TableField(value = "parent_id") private Long parentId; } 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 b34238d6..77f05154 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 @@ -1,7 +1,7 @@ package com.orange.demo.courseclassservice.model; +import com.baomidou.mybatisplus.annotation.*; import lombok.Data; -import javax.persistence.*; /** * ClassCourse实体对象。 @@ -10,26 +10,24 @@ import javax.persistence.*; * @date 2020-08-08 */ @Data -@Table(name = "zz_class_course") +@TableName(value = "zz_class_course") public class ClassCourse { /** * 班级Id。 */ - @Id - @Column(name = "class_id") + @TableField(value = "class_id") private Long classId; /** * 课程Id。 */ - @Id - @Column(name = "course_id") + @TableField(value = "course_id") private Long courseId; /** * 课程顺序(数值越小越靠前)。 */ - @Column(name = "course_order") + @TableField(value = "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 e3af4e09..989250af 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 @@ -1,7 +1,7 @@ package com.orange.demo.courseclassservice.model; +import com.baomidou.mybatisplus.annotation.*; import lombok.Data; -import javax.persistence.*; /** * ClassStudent实体对象。 @@ -10,20 +10,18 @@ import javax.persistence.*; * @date 2020-08-08 */ @Data -@Table(name = "zz_class_student") +@TableName(value = "zz_class_student") public class ClassStudent { /** * 班级Id。 */ - @Id - @Column(name = "class_id") + @TableField(value = "class_id") private Long classId; /** * 学生Id。 */ - @Id - @Column(name = "student_id") + @TableField(value = "student_id") private Long studentId; } 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 b2f0b4fe..6b3c779c 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 @@ -1,5 +1,6 @@ package com.orange.demo.courseclassservice.model; +import com.baomidou.mybatisplus.annotation.*; import com.orange.demo.courseclassapi.vo.CourseVo; import com.orange.demo.courseclassapi.constant.CourseDifficult; import com.orange.demo.application.common.constant.Subject; @@ -11,7 +12,6 @@ import com.orange.demo.common.core.base.mapper.BaseModelMapper; import lombok.Data; import org.mapstruct.*; import org.mapstruct.factory.Mappers; -import javax.persistence.*; import java.math.BigDecimal; import java.util.Date; @@ -24,20 +24,19 @@ import java.util.Map; * @date 2020-08-08 */ @Data -@Table(name = "zz_course") +@TableName(value = "zz_course") public class Course { /** * 主键Id。 */ - @Id - @Column(name = "course_id") + @TableId(value = "course_id") private Long courseId; /** * 课程名称。 */ - @Column(name = "course_name") + @TableField(value = "course_name") private String courseName; /** @@ -58,86 +57,86 @@ public class Course { /** * 年级Id。 */ - @Column(name = "grade_id") + @TableField(value = "grade_id") private Integer gradeId; /** * 学科Id。 */ - @Column(name = "subject_id") + @TableField(value = "subject_id") private Integer subjectId; /** * 课时数量。 */ - @Column(name = "class_hour") + @TableField(value = "class_hour") private Integer classHour; /** * 多张课程图片地址。 */ @UploadFlagColumn(storeType = UploadStoreTypeEnum.LOCAL_SYSTEM) - @Column(name = "picture_url") + @TableField(value = "picture_url") private String pictureUrl; /** * 创建用户Id。 */ - @Column(name = "create_user_id") + @TableField(value = "create_user_id") private Long createUserId; /** * 创建时间。 */ - @Column(name = "create_time") + @TableField(value = "create_time") private Date createTime; /** * 最后修改时间。 */ - @Column(name = "update_time") + @TableField(value = "update_time") private Date updateTime; /** * price 范围过滤起始值(>=)。 */ - @Transient + @TableField(exist = false) private BigDecimal priceStart; /** * price 范围过滤结束值(<=)。 */ - @Transient + @TableField(exist = false) private BigDecimal priceEnd; /** * classHour 范围过滤起始值(>=)。 */ - @Transient + @TableField(exist = false) private Integer classHourStart; /** * classHour 范围过滤结束值(<=)。 */ - @Transient + @TableField(exist = false) private Integer classHourEnd; /** * updateTime 范围过滤起始值(>=)。 */ - @Transient + @TableField(exist = false) private String updateTimeStart; /** * updateTime 范围过滤结束值(<=)。 */ - @Transient + @TableField(exist = false) private String updateTimeEnd; /** * courseId 的多对多关联表数据对象。 */ - @Transient + @TableField(exist = false) private ClassCourse classCourse; @RelationDict( @@ -146,19 +145,19 @@ public class Course { slaveModelClass = Grade.class, slaveIdField = "gradeId", slaveNameField = "gradeName") - @Transient + @TableField(exist = false) private Map gradeIdDictMap; @RelationConstDict( masterIdField = "difficulty", constantDictClass = CourseDifficult.class) - @Transient + @TableField(exist = false) private Map difficultyDictMap; @RelationConstDict( masterIdField = "subjectId", constantDictClass = Subject.class) - @Transient + @TableField(exist = false) private Map subjectIdDictMap; @Mapper 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 2c884001..0164e2dc 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 @@ -1,8 +1,7 @@ package com.orange.demo.courseclassservice.model; -import com.orange.demo.common.core.annotation.DeletedFlagColumn; +import com.baomidou.mybatisplus.annotation.*; import lombok.Data; -import javax.persistence.*; /** * Grade实体对象。 @@ -11,26 +10,24 @@ import javax.persistence.*; * @date 2020-08-08 */ @Data -@Table(name = "zz_grade") +@TableName(value = "zz_grade") public class Grade { /** * 主键Id。 */ - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - @Column(name = "grade_id") + @TableId(value = "grade_id", type = IdType.AUTO) private Integer gradeId; /** * 年级名称。 */ - @Column(name = "grade_name") + @TableField(value = "grade_name") private String gradeName; /** * 逻辑删除标记字段(1: 正常 -1: 已删除)。 */ - @DeletedFlagColumn + @TableLogic private Integer status; } 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 1a23af88..60eb31b0 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 @@ -1,7 +1,7 @@ package com.orange.demo.courseclassservice.model; +import com.baomidou.mybatisplus.annotation.*; import lombok.Data; -import javax.persistence.*; /** * MaterialEdition实体对象。 @@ -10,21 +10,19 @@ import javax.persistence.*; * @date 2020-08-08 */ @Data -@Table(name = "zz_material_edition") +@TableName(value = "zz_material_edition") public class MaterialEdition { /** * 主键Id。 */ - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - @Column(name = "edition_id") + @TableId(value = "edition_id", type = IdType.AUTO) private Integer editionId; /** * 教材版本名称。 */ - @Column(name = "edition_name") + @TableField(value = "edition_name") private String editionName; /** 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 f9a792dd..c85b2fa8 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 @@ -1,12 +1,12 @@ package com.orange.demo.courseclassservice.model; +import com.baomidou.mybatisplus.annotation.*; import com.orange.demo.courseclassapi.vo.SchoolInfoVo; import com.orange.demo.common.core.annotation.RelationDict; import com.orange.demo.common.core.base.mapper.BaseModelMapper; import lombok.Data; import org.mapstruct.*; import org.mapstruct.factory.Mappers; -import javax.persistence.*; import java.util.Map; @@ -17,32 +17,31 @@ import java.util.Map; * @date 2020-08-08 */ @Data -@Table(name = "zz_school_info") +@TableName(value = "zz_school_info") public class SchoolInfo { /** * 学校Id。 */ - @Id - @Column(name = "school_id") + @TableId(value = "school_id") private Long schoolId; /** * 学校名称。 */ - @Column(name = "school_name") + @TableField(value = "school_name") private String schoolName; /** * 所在省Id。 */ - @Column(name = "province_id") + @TableField(value = "province_id") private Long provinceId; /** * 所在城市Id。 */ - @Column(name = "city_id") + @TableField(value = "city_id") private Long cityId; @RelationDict( @@ -51,7 +50,7 @@ public class SchoolInfo { slaveModelClass = AreaCode.class, slaveIdField = "areaId", slaveNameField = "areaName") - @Transient + @TableField(exist = false) private Map provinceIdDictMap; @RelationDict( @@ -60,7 +59,7 @@ public class SchoolInfo { slaveModelClass = AreaCode.class, slaveIdField = "areaId", slaveNameField = "areaName") - @Transient + @TableField(exist = false) private Map cityIdDictMap; @Mapper 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 c0d8900e..b2158cf3 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 @@ -1,5 +1,6 @@ package com.orange.demo.courseclassservice.model; +import com.baomidou.mybatisplus.annotation.*; import com.orange.demo.courseclassapi.vo.StudentVo; import com.orange.demo.application.common.constant.Gender; import com.orange.demo.application.common.constant.ExpLevel; @@ -11,7 +12,6 @@ import com.orange.demo.common.core.util.MyCommonUtil; import lombok.Data; import org.mapstruct.*; import org.mapstruct.factory.Mappers; -import javax.persistence.*; import java.util.Date; import java.util.Map; @@ -23,44 +23,43 @@ import java.util.Map; * @date 2020-08-08 */ @Data -@Table(name = "zz_student") +@TableName(value = "zz_student") public class Student { /** * 学生Id。 */ - @Id - @Column(name = "student_id") + @TableId(value = "student_id") private Long studentId; /** * 登录手机。 */ - @Column(name = "login_mobile") + @TableField(value = "login_mobile") private String loginMobile; /** * 学生姓名。 */ - @Column(name = "student_name") + @TableField(value = "student_name") private String studentName; /** * 所在省份Id。 */ - @Column(name = "province_id") + @TableField(value = "province_id") private Long provinceId; /** * 所在城市Id。 */ - @Column(name = "city_id") + @TableField(value = "city_id") private Long cityId; /** * 区县Id。 */ - @Column(name = "district_id") + @TableField(value = "district_id") private Long districtId; /** @@ -76,37 +75,37 @@ public class Student { /** * 经验等级 (0: 初级 1: 中级 2: 高级 3: 资深)。 */ - @Column(name = "experience_level") + @TableField(value = "experience_level") private Integer experienceLevel; /** * 总共充值学币数量。 */ - @Column(name = "total_coin") + @TableField(value = "total_coin") private Integer totalCoin; /** * 可用学币数量。 */ - @Column(name = "left_coin") + @TableField(value = "left_coin") private Integer leftCoin; /** * 年级Id。 */ - @Column(name = "grade_id") + @TableField(value = "grade_id") private Integer gradeId; /** * 校区Id。 */ - @Column(name = "school_id") + @TableField(value = "school_id") private Long schoolId; /** * 注册时间。 */ - @Column(name = "register_time") + @TableField(value = "register_time") private Date registerTime; /** @@ -117,31 +116,31 @@ public class Student { /** * birthday 范围过滤起始值(>=)。 */ - @Transient + @TableField(exist = false) private String birthdayStart; /** * birthday 范围过滤结束值(<=)。 */ - @Transient + @TableField(exist = false) private String birthdayEnd; /** * registerTime 范围过滤起始值(>=)。 */ - @Transient + @TableField(exist = false) private String registerTimeStart; /** * registerTime 范围过滤结束值(<=)。 */ - @Transient + @TableField(exist = false) private String registerTimeEnd; /** * true LIKE搜索字符串。 */ - @Transient + @TableField(exist = false) private String searchString; public void setSearchString(String searchString) { @@ -154,7 +153,7 @@ public class Student { slaveModelClass = AreaCode.class, slaveIdField = "areaId", slaveNameField = "areaName") - @Transient + @TableField(exist = false) private Map provinceIdDictMap; @RelationDict( @@ -163,7 +162,7 @@ public class Student { slaveModelClass = AreaCode.class, slaveIdField = "areaId", slaveNameField = "areaName") - @Transient + @TableField(exist = false) private Map cityIdDictMap; @RelationDict( @@ -172,7 +171,7 @@ public class Student { slaveModelClass = AreaCode.class, slaveIdField = "areaId", slaveNameField = "areaName") - @Transient + @TableField(exist = false) private Map districtIdDictMap; @RelationDict( @@ -181,7 +180,7 @@ public class Student { slaveModelClass = Grade.class, slaveIdField = "gradeId", slaveNameField = "gradeName") - @Transient + @TableField(exist = false) private Map gradeIdDictMap; @RelationDict( @@ -190,25 +189,25 @@ public class Student { slaveModelClass = SchoolInfo.class, slaveIdField = "schoolId", slaveNameField = "schoolName") - @Transient + @TableField(exist = false) private Map schoolIdDictMap; @RelationConstDict( masterIdField = "gender", constantDictClass = Gender.class) - @Transient + @TableField(exist = false) private Map genderDictMap; @RelationConstDict( masterIdField = "experienceLevel", constantDictClass = ExpLevel.class) - @Transient + @TableField(exist = false) private Map experienceLevelDictMap; @RelationConstDict( masterIdField = "status", constantDictClass = StudentStatus.class) - @Transient + @TableField(exist = false) private Map statusDictMap; @Mapper 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 f78a3129..7efbb4f3 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 @@ -1,15 +1,14 @@ package com.orange.demo.courseclassservice.model; +import com.baomidou.mybatisplus.annotation.*; import com.orange.demo.courseclassapi.vo.StudentClassVo; import com.orange.demo.courseclassapi.constant.ClassLevel; 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; -import com.orange.demo.common.core.annotation.DeletedFlagColumn; import lombok.Data; import org.mapstruct.*; import org.mapstruct.factory.Mappers; -import javax.persistence.*; import java.util.Date; import java.util.Map; @@ -21,62 +20,61 @@ import java.util.Map; * @date 2020-08-08 */ @Data -@Table(name = "zz_class") +@TableName(value = "zz_class") public class StudentClass { /** * 班级Id。 */ - @Id - @Column(name = "class_id") + @TableId(value = "class_id") private Long classId; /** * 班级名称。 */ - @Column(name = "class_name") + @TableField(value = "class_name") private String className; /** * 学校Id。 */ - @Column(name = "school_id") + @TableField(value = "school_id") private Long schoolId; /** * 学生班长Id。 */ - @Column(name = "leader_id") + @TableField(value = "leader_id") private Long leaderId; /** * 已完成课时数量。 */ - @Column(name = "finish_class_hour") + @TableField(value = "finish_class_hour") private Integer finishClassHour; /** * 班级级别(0: 初级班 1: 培优班 2: 冲刺提分班 3: 竞赛班)。 */ - @Column(name = "class_level") + @TableField(value = "class_level") private Integer classLevel; /** * 创建用户。 */ - @Column(name = "create_user_id") + @TableField(value = "create_user_id") private Long createUserId; /** * 班级创建时间。 */ - @Column(name = "create_time") + @TableField(value = "create_time") private Date createTime; /** * 逻辑删除标记字段(1: 正常 -1: 已删除)。 */ - @DeletedFlagColumn + @TableLogic private Integer status; @RelationDict( @@ -85,7 +83,7 @@ public class StudentClass { slaveModelClass = SchoolInfo.class, slaveIdField = "schoolId", slaveNameField = "schoolName") - @Transient + @TableField(exist = false) private Map schoolIdDictMap; @RelationDict( @@ -94,13 +92,13 @@ public class StudentClass { slaveModelClass = Student.class, slaveIdField = "studentId", slaveNameField = "studentName") - @Transient + @TableField(exist = false) private Map leaderIdDictMap; @RelationConstDict( masterIdField = "classLevel", constantDictClass = ClassLevel.class) - @Transient + @TableField(exist = false) private Map classLevelDictMap; @Mapper diff --git a/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/service/impl/CourseServiceImpl.java b/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/service/impl/CourseServiceImpl.java index b4bc8167..89fac674 100644 --- a/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/service/impl/CourseServiceImpl.java +++ b/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/service/impl/CourseServiceImpl.java @@ -1,5 +1,7 @@ package com.orange.demo.courseclassservice.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.orange.demo.courseclassservice.service.*; import com.orange.demo.courseclassservice.dao.*; import com.orange.demo.courseclassservice.model.*; @@ -80,7 +82,8 @@ public class CourseServiceImpl extends BaseService implements Cour course.setCreateTime(originalCourse.getCreateTime()); course.setUpdateTime(new Date()); // 这里重点提示,在执行主表数据更新之前,如果有哪些字段不支持修改操作,请用原有数据对象字段替换当前数据字段。 - return courseMapper.updateByPrimaryKey(course) == 1; + UpdateWrapper uw = this.createUpdateQueryForNullValue(course, course.getCourseId()); + return courseMapper.update(course, uw) == 1; } /** @@ -92,14 +95,13 @@ public class CourseServiceImpl extends BaseService implements Cour @Transactional(rollbackFor = Exception.class) @Override public boolean remove(Long courseId) { - // 这里先删除主数据 - if (!this.removeById(courseId)) { + if (courseMapper.deleteById(courseId) == 0) { return false; } // 开始删除与本地多对多父表的关联 ClassCourse classCourse = new ClassCourse(); classCourse.setCourseId(courseId); - classCourseMapper.delete(classCourse); + classCourseMapper.delete(new QueryWrapper<>(classCourse)); return true; } @@ -167,8 +169,9 @@ public class CourseServiceImpl extends BaseService implements Cour @Override public List getCourseListWithRelation( String inFilterField, Set inFilterValues, Course filter, String orderBy) { + String inFilterColumn = MyModelUtil.mapToColumnName(inFilterField, Course.class); List resultList = - courseMapper.getCourseList(inFilterField, inFilterValues, filter, orderBy); + courseMapper.getCourseList(inFilterColumn, inFilterValues, filter, orderBy); // 在缺省生成的代码中,如果查询结果resultList不是Page对象,说明没有分页,那么就很可能是数据导出接口调用了当前方法。 // 为了避免一次性的大量数据关联,规避因此而造成的系统运行性能冲击,这里手动进行了分批次读取,开发者可按需修改该值。 int batchSize = resultList instanceof Page ? 0 : 1000; diff --git a/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/service/impl/SchoolInfoServiceImpl.java b/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/service/impl/SchoolInfoServiceImpl.java index 4cda5794..d7dfa442 100644 --- a/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/service/impl/SchoolInfoServiceImpl.java +++ b/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/service/impl/SchoolInfoServiceImpl.java @@ -1,5 +1,6 @@ package com.orange.demo.courseclassservice.service.impl; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.orange.demo.courseclassservice.service.*; import com.orange.demo.courseclassservice.dao.*; import com.orange.demo.courseclassservice.model.*; @@ -69,7 +70,8 @@ public class SchoolInfoServiceImpl extends BaseService impleme @Override public boolean update(SchoolInfo schoolInfo, SchoolInfo originalSchoolInfo) { // 这里重点提示,在执行主表数据更新之前,如果有哪些字段不支持修改操作,请用原有数据对象字段替换当前数据字段。 - return schoolInfoMapper.updateByPrimaryKey(schoolInfo) == 1; + UpdateWrapper uw = this.createUpdateQueryForNullValue(schoolInfo, schoolInfo.getSchoolId()); + return schoolInfoMapper.update(schoolInfo, uw) == 1; } /** @@ -81,8 +83,7 @@ public class SchoolInfoServiceImpl extends BaseService impleme @Transactional(rollbackFor = Exception.class) @Override public boolean remove(Long schoolId) { - // 这里先删除主数据 - return this.removeById(schoolId); + return schoolInfoMapper.deleteById(schoolId) == 1; } /** @@ -149,8 +150,9 @@ public class SchoolInfoServiceImpl extends BaseService impleme @Override public List getSchoolInfoListWithRelation( String inFilterField, Set inFilterValues, SchoolInfo filter, String orderBy) { + String inFilterColumn = MyModelUtil.mapToColumnName(inFilterField, SchoolInfo.class); List resultList = - schoolInfoMapper.getSchoolInfoList(inFilterField, inFilterValues, filter, orderBy); + schoolInfoMapper.getSchoolInfoList(inFilterColumn, inFilterValues, filter, orderBy); // 在缺省生成的代码中,如果查询结果resultList不是Page对象,说明没有分页,那么就很可能是数据导出接口调用了当前方法。 // 为了避免一次性的大量数据关联,规避因此而造成的系统运行性能冲击,这里手动进行了分批次读取,开发者可按需修改该值。 int batchSize = resultList instanceof Page ? 0 : 1000; diff --git a/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/service/impl/StudentClassServiceImpl.java b/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/service/impl/StudentClassServiceImpl.java index d17ef7c4..b61dd5b3 100644 --- a/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/service/impl/StudentClassServiceImpl.java +++ b/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/service/impl/StudentClassServiceImpl.java @@ -1,5 +1,7 @@ package com.orange.demo.courseclassservice.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.orange.demo.courseclassservice.service.*; import com.orange.demo.courseclassservice.dao.*; import com.orange.demo.courseclassservice.model.*; @@ -16,7 +18,6 @@ import com.github.pagehelper.Page; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import tk.mybatis.mapper.entity.Example; import java.util.*; @@ -83,9 +84,9 @@ public class StudentClassServiceImpl extends BaseService imp public boolean update(StudentClass studentClass, StudentClass originalStudentClass) { studentClass.setCreateUserId(originalStudentClass.getCreateUserId()); studentClass.setCreateTime(originalStudentClass.getCreateTime()); - studentClass.setStatus(GlobalDeletedFlag.NORMAL); // 这里重点提示,在执行主表数据更新之前,如果有哪些字段不支持修改操作,请用原有数据对象字段替换当前数据字段。 - return studentClassMapper.updateByPrimaryKey(studentClass) == 1; + UpdateWrapper uw = this.createUpdateQueryForNullValue(studentClass, studentClass.getClassId()); + return studentClassMapper.update(studentClass, uw) == 1; } /** @@ -97,17 +98,16 @@ public class StudentClassServiceImpl extends BaseService imp @Transactional(rollbackFor = Exception.class) @Override public boolean remove(Long classId) { - // 这里先删除主数据 - if (!this.removeById(classId)) { + if (studentClassMapper.deleteById(classId) == 0) { return false; } // 开始删除多对多中间表的关联 ClassCourse classCourse = new ClassCourse(); classCourse.setClassId(classId); - classCourseMapper.delete(classCourse); + classCourseMapper.delete(new QueryWrapper<>(classCourse)); ClassStudent classStudent = new ClassStudent(); classStudent.setClassId(classId); - classStudentMapper.delete(classStudent); + classStudentMapper.delete(new QueryWrapper<>(classStudent)); return true; } @@ -175,8 +175,9 @@ public class StudentClassServiceImpl extends BaseService imp @Override public List getStudentClassListWithRelation( String inFilterField, Set inFilterValues, StudentClass filter, String orderBy) { + String inFilterColumn = MyModelUtil.mapToColumnName(inFilterField, StudentClass.class); List resultList = - studentClassMapper.getStudentClassList(inFilterField, inFilterValues, filter, orderBy); + studentClassMapper.getStudentClassList(inFilterColumn, inFilterValues, filter, orderBy); // 在缺省生成的代码中,如果查询结果resultList不是Page对象,说明没有分页,那么就很可能是数据导出接口调用了当前方法。 // 为了避免一次性的大量数据关联,规避因此而造成的系统运行性能冲击,这里手动进行了分批次读取,开发者可按需修改该值。 int batchSize = resultList instanceof Page ? 0 : 1000; @@ -196,8 +197,8 @@ public class StudentClassServiceImpl extends BaseService imp for (ClassCourse classCourse : classCourseList) { classCourse.setClassId(classId); MyModelUtil.setDefaultValue(classCourse, "courseOrder", 0); + classCourseMapper.insert(classCourse); } - classCourseMapper.insertList(classCourseList); } /** @@ -209,11 +210,13 @@ public class StudentClassServiceImpl extends BaseService imp @Transactional(rollbackFor = Exception.class) @Override public boolean updateClassCourse(ClassCourse classCourse) { - Example e = new Example(ClassCourse.class); - e.createCriteria() - .andEqualTo("classId", classCourse.getClassId()) - .andEqualTo("courseId", classCourse.getCourseId()); - return classCourseMapper.updateByExample(classCourse, e) > 0; + ClassCourse filter = new ClassCourse(); + filter.setClassId(classCourse.getClassId()); + filter.setCourseId(classCourse.getCourseId()); + UpdateWrapper uw = + BaseService.createUpdateQueryForNullValue(classCourse, ClassCourse.class); + uw.setEntity(filter); + return classCourseMapper.update(classCourse, uw) > 0; } /** @@ -225,11 +228,10 @@ public class StudentClassServiceImpl extends BaseService imp */ @Override public ClassCourse getClassCourse(Long classId, Long courseId) { - Example e = new Example(ClassCourse.class); - e.createCriteria() - .andEqualTo("classId", classId) - .andEqualTo("courseId", courseId); - return classCourseMapper.selectOneByExample(e); + ClassCourse filter = new ClassCourse(); + filter.setClassId(classId); + filter.setCourseId(courseId); + return classCourseMapper.selectOne(new QueryWrapper<>(filter)); } /** @@ -245,7 +247,7 @@ public class StudentClassServiceImpl extends BaseService imp ClassCourse filter = new ClassCourse(); filter.setClassId(classId); filter.setCourseId(courseId); - return classCourseMapper.delete(filter) > 0; + return classCourseMapper.delete(new QueryWrapper<>(filter)) > 0; } /** @@ -259,8 +261,8 @@ public class StudentClassServiceImpl extends BaseService imp public void addClassStudentList(List classStudentList, Long classId) { for (ClassStudent classStudent : classStudentList) { classStudent.setClassId(classId); + classStudentMapper.insert(classStudent); } - classStudentMapper.insertList(classStudentList); } /** @@ -276,7 +278,7 @@ public class StudentClassServiceImpl extends BaseService imp ClassStudent filter = new ClassStudent(); filter.setClassId(classId); filter.setStudentId(studentId); - return classStudentMapper.delete(filter) > 0; + return classStudentMapper.delete(new QueryWrapper<>(filter)) > 0; } /** diff --git a/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/service/impl/StudentServiceImpl.java b/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/service/impl/StudentServiceImpl.java index 8976af2c..79bd483e 100644 --- a/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/service/impl/StudentServiceImpl.java +++ b/orange-demo-multi-service/application/course-class/course-class-service/src/main/java/com/orange/demo/courseclassservice/service/impl/StudentServiceImpl.java @@ -1,5 +1,7 @@ package com.orange.demo.courseclassservice.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.orange.demo.application.common.constant.StudentStatus; import com.orange.demo.courseclassservice.service.*; import com.orange.demo.courseclassservice.dao.*; @@ -79,7 +81,8 @@ public class StudentServiceImpl extends BaseService implements St @Override public boolean update(Student student, Student originalStudent) { // 这里重点提示,在执行主表数据更新之前,如果有哪些字段不支持修改操作,请用原有数据对象字段替换当前数据字段。 - return studentMapper.updateByPrimaryKey(student) == 1; + UpdateWrapper uw = this.createUpdateQueryForNullValue(student, student.getStudentId()); + return studentMapper.update(student, uw) == 1; } /** @@ -91,14 +94,13 @@ public class StudentServiceImpl extends BaseService implements St @Transactional(rollbackFor = Exception.class) @Override public boolean remove(Long studentId) { - // 这里先删除主数据 - if (!this.removeById(studentId)) { + if (studentMapper.deleteById(studentId) == 0) { return false; } // 开始删除与本地多对多父表的关联 ClassStudent classStudent = new ClassStudent(); classStudent.setStudentId(studentId); - classStudentMapper.delete(classStudent); + classStudentMapper.delete(new QueryWrapper<>(classStudent)); return true; } @@ -166,8 +168,9 @@ public class StudentServiceImpl extends BaseService implements St @Override public List getStudentListWithRelation( String inFilterField, Set inFilterValues, Student filter, String orderBy) { + String inFilterColumn = MyModelUtil.mapToColumnName(inFilterField, Student.class); List resultList = - studentMapper.getStudentList(inFilterField, inFilterValues, filter, orderBy); + studentMapper.getStudentList(inFilterColumn, inFilterValues, filter, orderBy); // 在缺省生成的代码中,如果查询结果resultList不是Page对象,说明没有分页,那么就很可能是数据导出接口调用了当前方法。 // 为了避免一次性的大量数据关联,规避因此而造成的系统运行性能冲击,这里手动进行了分批次读取,开发者可按需修改该值。 int batchSize = resultList instanceof Page ? 0 : 1000; diff --git a/orange-demo-multi-service/application/course-class/course-class.iml b/orange-demo-multi-service/application/course-class/course-class.iml index c8c12938..f4ed0119 100644 --- a/orange-demo-multi-service/application/course-class/course-class.iml +++ b/orange-demo-multi-service/application/course-class/course-class.iml @@ -85,9 +85,6 @@ - - - @@ -162,6 +159,11 @@ + + + + + diff --git a/orange-demo-multi-service/application/gateway/gateway.iml b/orange-demo-multi-service/application/gateway/gateway.iml index f0edaa8a..c9a58174 100644 --- a/orange-demo-multi-service/application/gateway/gateway.iml +++ b/orange-demo-multi-service/application/gateway/gateway.iml @@ -16,31 +16,20 @@ - - + + - - - - - - - - - - - - + + + + + + - - - - - - + - + @@ -92,6 +81,13 @@ + + + + + + + @@ -114,23 +110,21 @@ - + + + + + + - - - - - - - - - + + @@ -184,7 +178,6 @@ - @@ -253,6 +246,11 @@ + + + + + diff --git a/orange-demo-multi-service/application/stats/stats-api/stats-api.iml b/orange-demo-multi-service/application/stats/stats-api/stats-api.iml index 2f00bb2a..088b0d54 100644 --- a/orange-demo-multi-service/application/stats/stats-api/stats-api.iml +++ b/orange-demo-multi-service/application/stats/stats-api/stats-api.iml @@ -31,7 +31,6 @@ - @@ -66,44 +65,41 @@ - + + + + + - - - - - - - - - + + - - - - - + + + + + - - - - - - - - - + + + + + + + + + @@ -167,8 +163,6 @@ - - @@ -241,6 +235,11 @@ + + + + + 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 732c3025..a4853d5d 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 @@ -6,7 +6,7 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Primary; import org.springframework.transaction.annotation.EnableTransactionManagement; -import tk.mybatis.spring.annotation.MapperScan; +import org.mybatis.spring.annotation.MapperScan; import javax.sql.DataSource; 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 295f2fb3..d2a2e0e9 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 @@ -1,5 +1,6 @@ package com.orange.demo.statsservice.model; +import com.baomidou.mybatisplus.annotation.*; import com.orange.demo.statsapi.vo.CourseTransStatsVo; import com.orange.demo.courseclassapi.vo.CourseVo; import com.orange.demo.courseclassapi.client.CourseClient; @@ -12,7 +13,6 @@ import com.orange.demo.common.core.base.mapper.BaseModelMapper; import lombok.Data; import org.mapstruct.*; import org.mapstruct.factory.Mappers; -import javax.persistence.*; import java.util.Date; import java.util.Map; @@ -24,81 +24,79 @@ import java.util.Map; * @date 2020-08-08 */ @Data -@Table(name = "zz_course_trans_stats") +@TableName(value = "zz_course_trans_stats") public class CourseTransStats { /** * 主键Id。 */ - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - @Column(name = "stats_id") + @TableId(value = "stats_id", type = IdType.AUTO) private Long statsId; /** * 统计日期。 */ - @Column(name = "stats_date") + @TableField(value = "stats_date") private Date statsDate; /** * 科目Id。 */ - @Column(name = "subject_id") + @TableField(value = "subject_id") private Integer subjectId; /** * 年级Id。 */ - @Column(name = "grade_id") + @TableField(value = "grade_id") private Integer gradeId; /** * 年级名称。 */ - @Column(name = "grade_name") + @TableField(value = "grade_name") private String gradeName; /** * 课程Id。 */ - @Column(name = "course_id") + @TableField(value = "course_id") private Long courseId; /** * 课程名称。 */ - @Column(name = "course_name") + @TableField(value = "course_name") private String courseName; /** * 学生上课次数。 */ - @Column(name = "student_attend_count") + @TableField(value = "student_attend_count") private Integer studentAttendCount; /** * 学生献花数量。 */ - @Column(name = "student_flower_amount") + @TableField(value = "student_flower_amount") private Integer studentFlowerAmount; /** * 学生献花次数。 */ - @Column(name = "student_flower_count") + @TableField(value = "student_flower_count") private Integer studentFlowerCount; /** * statsDate 范围过滤起始值(>=)。 */ - @Transient + @TableField(exist = false) private String statsDateStart; /** * statsDate 范围过滤结束值(<=)。 */ - @Transient + @TableField(exist = false) private String statsDateEnd; @RelationDict( @@ -107,7 +105,7 @@ public class CourseTransStats { slaveModelClass = GradeVo.class, slaveIdField = "gradeId", slaveNameField = "gradeName") - @Transient + @TableField(exist = false) private Map gradeIdDictMap; @RelationDict( @@ -116,13 +114,13 @@ public class CourseTransStats { slaveModelClass = CourseVo.class, slaveIdField = "courseId", slaveNameField = "courseName") - @Transient + @TableField(exist = false) private Map courseIdDictMap; @RelationConstDict( masterIdField = "subjectId", constantDictClass = Subject.class) - @Transient + @TableField(exist = false) private Map subjectIdDictMap; @Mapper 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 8b0083b0..08568fb9 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 @@ -1,8 +1,7 @@ package com.orange.demo.statsservice.model; -import com.orange.demo.common.core.annotation.DeletedFlagColumn; +import com.baomidou.mybatisplus.annotation.*; import lombok.Data; -import javax.persistence.*; /** * Grade实体对象。 @@ -11,26 +10,24 @@ import javax.persistence.*; * @date 2020-08-08 */ @Data -@Table(name = "zz_grade") +@TableName(value = "zz_grade") public class Grade { /** * 主键Id。 */ - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - @Column(name = "grade_id") + @TableId(value = "grade_id", type = IdType.AUTO) private Integer gradeId; /** * 年级名称。 */ - @Column(name = "grade_name") + @TableField(value = "grade_name") private String gradeName; /** * 逻辑删除标记字段(1: 正常 -1: 已删除)。 */ - @DeletedFlagColumn + @TableLogic private Integer status; } 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 b9121404..e6a9d2e6 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 @@ -1,7 +1,7 @@ package com.orange.demo.statsservice.model; +import com.baomidou.mybatisplus.annotation.*; import lombok.Data; -import javax.persistence.*; /** * SchoolInfo实体对象。 @@ -10,31 +10,30 @@ import javax.persistence.*; * @date 2020-08-08 */ @Data -@Table(name = "zz_school_info") +@TableName(value = "zz_school_info") public class SchoolInfo { /** * 学校Id。 */ - @Id - @Column(name = "school_id") + @TableId(value = "school_id") private Long schoolId; /** * 学校名称。 */ - @Column(name = "school_name") + @TableField(value = "school_name") private String schoolName; /** * 所在省Id。 */ - @Column(name = "province_id") + @TableField(value = "province_id") private Long provinceId; /** * 所在城市Id。 */ - @Column(name = "city_id") + @TableField(value = "city_id") private Long cityId; } 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 495f630a..a9b71999 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 @@ -1,5 +1,6 @@ package com.orange.demo.statsservice.model; +import com.baomidou.mybatisplus.annotation.*; import com.orange.demo.statsapi.vo.StudentActionStatsVo; import com.orange.demo.courseclassapi.vo.AreaCodeVo; import com.orange.demo.courseclassapi.vo.GradeVo; @@ -10,7 +11,6 @@ import com.orange.demo.common.core.base.mapper.BaseModelMapper; import lombok.Data; import org.mapstruct.*; import org.mapstruct.factory.Mappers; -import javax.persistence.*; import java.util.Date; import java.util.Map; @@ -22,146 +22,145 @@ import java.util.Map; * @date 2020-08-08 */ @Data -@Table(name = "zz_student_action_stats") +@TableName(value = "zz_student_action_stats") public class StudentActionStats { /** * 主键Id。 */ - @Id - @Column(name = "stats_id") + @TableId(value = "stats_id") private Long statsId; /** * 统计日期。 */ - @Column(name = "stats_date") + @TableField(value = "stats_date") private Date statsDate; /** * 统计小时。 */ - @Column(name = "stats_month") + @TableField(value = "stats_month") private Date statsMonth; /** * 年级Id。 */ - @Column(name = "grade_id") + @TableField(value = "grade_id") private Integer gradeId; /** * 学生所在省Id。 */ - @Column(name = "province_id") + @TableField(value = "province_id") private Long provinceId; /** * 学生所在城市Id。 */ - @Column(name = "city_id") + @TableField(value = "city_id") private Long cityId; /** * 购课学币数量。 */ - @Column(name = "buy_course_amount") + @TableField(value = "buy_course_amount") private Integer buyCourseAmount; /** * 购买课程次数。 */ - @Column(name = "buy_course_count") + @TableField(value = "buy_course_count") private Integer buyCourseCount; /** * 购买视频学币数量。 */ - @Column(name = "buy_video_amount") + @TableField(value = "buy_video_amount") private Integer buyVideoAmount; /** * 购买视频次数。 */ - @Column(name = "buy_video_count") + @TableField(value = "buy_video_count") private Integer buyVideoCount; /** * 购买作业学币数量。 */ - @Column(name = "buy_paper_amount") + @TableField(value = "buy_paper_amount") private Integer buyPaperAmount; /** * 购买作业次数。 */ - @Column(name = "buy_paper_count") + @TableField(value = "buy_paper_count") private Integer buyPaperCount; /** * 购买献花数量。 */ - @Column(name = "buy_flower_amount") + @TableField(value = "buy_flower_amount") private Integer buyFlowerAmount; /** * 购买献花次数。 */ - @Column(name = "buy_flower_count") + @TableField(value = "buy_flower_count") private Integer buyFlowerCount; /** * 充值学币数量。 */ - @Column(name = "recharge_coin_amount") + @TableField(value = "recharge_coin_amount") private Integer rechargeCoinAmount; /** * 充值学币次数。 */ - @Column(name = "recharge_coin_count") + @TableField(value = "recharge_coin_count") private Integer rechargeCoinCount; /** * 线下课程上课次数。 */ - @Column(name = "do_course_count") + @TableField(value = "do_course_count") private Integer doCourseCount; /** * 观看视频次数。 */ - @Column(name = "watch_video_count") + @TableField(value = "watch_video_count") private Integer watchVideoCount; /** * 购买献花消费学币数量。 */ - @Column(name = "watch_video_total_second") + @TableField(value = "watch_video_total_second") private Integer watchVideoTotalSecond; /** * 做题数量。 */ - @Column(name = "do_exercise_count") + @TableField(value = "do_exercise_count") private Integer doExerciseCount; /** * 做题正确的数量。 */ - @Column(name = "do_exercise_correct_count") + @TableField(value = "do_exercise_correct_count") private Integer doExerciseCorrectCount; /** * statsDate 范围过滤起始值(>=)。 */ - @Transient + @TableField(exist = false) private String statsDateStart; /** * statsDate 范围过滤结束值(<=)。 */ - @Transient + @TableField(exist = false) private String statsDateEnd; @RelationDict( @@ -170,7 +169,7 @@ public class StudentActionStats { slaveModelClass = GradeVo.class, slaveIdField = "gradeId", slaveNameField = "gradeName") - @Transient + @TableField(exist = false) private Map gradeIdDictMap; @RelationDict( @@ -179,7 +178,7 @@ public class StudentActionStats { slaveModelClass = AreaCodeVo.class, slaveIdField = "areaId", slaveNameField = "areaName") - @Transient + @TableField(exist = false) private Map provinceIdDictMap; @RelationDict( @@ -188,7 +187,7 @@ public class StudentActionStats { slaveModelClass = AreaCodeVo.class, slaveIdField = "areaId", slaveNameField = "areaName") - @Transient + @TableField(exist = false) private Map cityIdDictMap; @Mapper 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 b7e24f52..c0c3bc48 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 @@ -1,5 +1,6 @@ package com.orange.demo.statsservice.model; +import com.baomidou.mybatisplus.annotation.*; import com.orange.demo.statsapi.vo.StudentActionTransVo; import com.orange.demo.courseclassapi.client.SchoolInfoClient; import com.orange.demo.courseclassapi.vo.SchoolInfoVo; @@ -13,7 +14,6 @@ import com.orange.demo.common.core.base.mapper.BaseModelMapper; import lombok.Data; import org.mapstruct.*; import org.mapstruct.factory.Mappers; -import javax.persistence.*; import java.util.Date; import java.util.Map; @@ -25,110 +25,109 @@ import java.util.Map; * @date 2020-08-08 */ @Data -@Table(name = "zz_student_action_trans") +@TableName(value = "zz_student_action_trans") public class StudentActionTrans { /** * 主键Id。 */ - @Id - @Column(name = "trans_id") + @TableId(value = "trans_id") private Long transId; /** * 学生Id。 */ - @Column(name = "student_id") + @TableField(value = "student_id") private Long studentId; /** * 学生名称。 */ - @Column(name = "student_name") + @TableField(value = "student_name") private String studentName; /** * 学生校区。 */ - @Column(name = "school_id") + @TableField(value = "school_id") private Long schoolId; /** * 年级Id。 */ - @Column(name = "grade_id") + @TableField(value = "grade_id") private Integer gradeId; /** * 行为类型(0: 充值 1: 购课 2: 上课签到 3: 上课签退 4: 看视频课 5: 做作业 6: 刷题 7: 献花)。 */ - @Column(name = "action_type") + @TableField(value = "action_type") private Integer actionType; /** * 设备类型(0: iOS 1: Android 2: PC)。 */ - @Column(name = "device_type") + @TableField(value = "device_type") private Integer deviceType; /** * 看视频秒数。 */ - @Column(name = "watch_video_seconds") + @TableField(value = "watch_video_seconds") private Integer watchVideoSeconds; /** * 购买献花数量。 */ - @Column(name = "flower_count") + @TableField(value = "flower_count") private Integer flowerCount; /** * 购买作业数量。 */ - @Column(name = "paper_count") + @TableField(value = "paper_count") private Integer paperCount; /** * 购买视频数量。 */ - @Column(name = "video_count") + @TableField(value = "video_count") private Integer videoCount; /** * 购买课程数量。 */ - @Column(name = "course_count") + @TableField(value = "course_count") private Integer courseCount; /** * 充值学币数量。 */ - @Column(name = "coin_count") + @TableField(value = "coin_count") private Integer coinCount; /** * 做题是否正确标记。 */ - @Column(name = "exercise_correct_flag") + @TableField(value = "exercise_correct_flag") private Integer exerciseCorrectFlag; /** * 发生时间。 */ - @Column(name = "create_time") + @TableField(value = "create_time") private Date createTime; /** * createTime 范围过滤起始值(>=)。 */ - @Transient + @TableField(exist = false) private String createTimeStart; /** * createTime 范围过滤结束值(<=)。 */ - @Transient + @TableField(exist = false) private String createTimeEnd; @RelationDict( @@ -137,7 +136,7 @@ public class StudentActionTrans { slaveModelClass = SchoolInfoVo.class, slaveIdField = "schoolId", slaveNameField = "schoolName") - @Transient + @TableField(exist = false) private Map schoolIdDictMap; @RelationDict( @@ -146,19 +145,19 @@ public class StudentActionTrans { slaveModelClass = GradeVo.class, slaveIdField = "gradeId", slaveNameField = "gradeName") - @Transient + @TableField(exist = false) private Map gradeIdDictMap; @RelationConstDict( masterIdField = "actionType", constantDictClass = StudentActionType.class) - @Transient + @TableField(exist = false) private Map actionTypeDictMap; @RelationConstDict( masterIdField = "deviceType", constantDictClass = DeviceType.class) - @Transient + @TableField(exist = false) private Map deviceTypeDictMap; @Mapper diff --git a/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/service/impl/CourseTransStatsServiceImpl.java b/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/service/impl/CourseTransStatsServiceImpl.java index 7d2ae4f9..ceaab8c7 100644 --- a/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/service/impl/CourseTransStatsServiceImpl.java +++ b/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/service/impl/CourseTransStatsServiceImpl.java @@ -101,8 +101,9 @@ public class CourseTransStatsServiceImpl extends BaseService List getCourseTransStatsListWithRelation( String inFilterField, Set inFilterValues, CourseTransStats filter, String orderBy) { + String inFilterColumn = MyModelUtil.mapToColumnName(inFilterField, CourseTransStats.class); List resultList = - courseTransStatsMapper.getCourseTransStatsList(inFilterField, inFilterValues, filter, orderBy); + courseTransStatsMapper.getCourseTransStatsList(inFilterColumn, inFilterValues, filter, orderBy); // 在缺省生成的代码中,如果查询结果resultList不是Page对象,说明没有分页,那么就很可能是数据导出接口调用了当前方法。 // 为了避免一次性的大量数据关联,规避因此而造成的系统运行性能冲击,这里手动进行了分批次读取,开发者可按需修改该值。 int batchSize = resultList instanceof Page ? 0 : 1000; diff --git a/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/service/impl/StudentActionStatsServiceImpl.java b/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/service/impl/StudentActionStatsServiceImpl.java index 7e3278c4..ea9d4679 100644 --- a/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/service/impl/StudentActionStatsServiceImpl.java +++ b/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/service/impl/StudentActionStatsServiceImpl.java @@ -101,8 +101,9 @@ public class StudentActionStatsServiceImpl extends BaseService List getStudentActionStatsListWithRelation( String inFilterField, Set inFilterValues, StudentActionStats filter, String orderBy) { + String inFilterColumn = MyModelUtil.mapToColumnName(inFilterField, StudentActionStats.class); List resultList = - studentActionStatsMapper.getStudentActionStatsList(inFilterField, inFilterValues, filter, orderBy); + studentActionStatsMapper.getStudentActionStatsList(inFilterColumn, inFilterValues, filter, orderBy); // 在缺省生成的代码中,如果查询结果resultList不是Page对象,说明没有分页,那么就很可能是数据导出接口调用了当前方法。 // 为了避免一次性的大量数据关联,规避因此而造成的系统运行性能冲击,这里手动进行了分批次读取,开发者可按需修改该值。 int batchSize = resultList instanceof Page ? 0 : 1000; diff --git a/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/service/impl/StudentActionTransServiceImpl.java b/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/service/impl/StudentActionTransServiceImpl.java index e5d65e89..3970b620 100644 --- a/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/service/impl/StudentActionTransServiceImpl.java +++ b/orange-demo-multi-service/application/stats/stats-service/src/main/java/com/orange/demo/statsservice/service/impl/StudentActionTransServiceImpl.java @@ -1,5 +1,6 @@ package com.orange.demo.statsservice.service.impl; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.orange.demo.statsservice.service.*; import com.orange.demo.statsservice.dao.*; import com.orange.demo.statsservice.model.*; @@ -75,7 +76,8 @@ public class StudentActionTransServiceImpl extends BaseService uw = this.createUpdateQueryForNullValue(studentActionTrans, studentActionTrans.getTransId()); + return studentActionTransMapper.update(studentActionTrans, uw) == 1; } /** @@ -87,8 +89,7 @@ public class StudentActionTransServiceImpl extends BaseService List getStudentActionTransListWithRelation( String inFilterField, Set inFilterValues, StudentActionTrans filter, String orderBy) { + String inFilterColumn = MyModelUtil.mapToColumnName(inFilterField, StudentActionTrans.class); List resultList = - studentActionTransMapper.getStudentActionTransList(inFilterField, inFilterValues, filter, orderBy); + studentActionTransMapper.getStudentActionTransList(inFilterColumn, inFilterValues, filter, orderBy); // 在缺省生成的代码中,如果查询结果resultList不是Page对象,说明没有分页,那么就很可能是数据导出接口调用了当前方法。 // 为了避免一次性的大量数据关联,规避因此而造成的系统运行性能冲击,这里手动进行了分批次读取,开发者可按需修改该值。 int batchSize = resultList instanceof Page ? 0 : 1000; diff --git a/orange-demo-multi-service/application/stats/stats-service/stats-service.iml b/orange-demo-multi-service/application/stats/stats-service/stats-service.iml index 9745feef..5a46633b 100644 --- a/orange-demo-multi-service/application/stats/stats-service/stats-service.iml +++ b/orange-demo-multi-service/application/stats/stats-service/stats-service.iml @@ -64,44 +64,41 @@ - + + + + + - - - - - - - - - + + - - - - - + + + + + - - - - - - - - - + + + + + + + + + @@ -183,9 +180,6 @@ - - - @@ -258,6 +252,11 @@ + + + + + diff --git a/orange-demo-multi-service/application/stats/stats.iml b/orange-demo-multi-service/application/stats/stats.iml index c8c12938..f4ed0119 100644 --- a/orange-demo-multi-service/application/stats/stats.iml +++ b/orange-demo-multi-service/application/stats/stats.iml @@ -85,9 +85,6 @@ - - - @@ -162,6 +159,11 @@ + + + + + diff --git a/orange-demo-multi-service/application/upms/upms-api/upms-api.iml b/orange-demo-multi-service/application/upms/upms-api/upms-api.iml index 22e3921c..b8fdc3c9 100644 --- a/orange-demo-multi-service/application/upms/upms-api/upms-api.iml +++ b/orange-demo-multi-service/application/upms/upms-api/upms-api.iml @@ -30,7 +30,6 @@ - @@ -65,45 +64,42 @@ - + + + + + - - - - - - - - - + + - - - - - + + + + + - - - - - - - - - + + + + + + + + + @@ -167,8 +163,6 @@ - - @@ -241,6 +235,11 @@ + + + + + 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 a9fa481c..fe6f4bc1 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 @@ -6,7 +6,7 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Primary; import org.springframework.transaction.annotation.EnableTransactionManagement; -import tk.mybatis.spring.annotation.MapperScan; +import org.mybatis.spring.annotation.MapperScan; import javax.sql.DataSource; diff --git a/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/controller/LoginUserController.java b/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/controller/LoginUserController.java index 87b0dfec..c7d05586 100644 --- a/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/controller/LoginUserController.java +++ b/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/controller/LoginUserController.java @@ -42,7 +42,6 @@ public class LoginUserController { @PostMapping("/list") public ResponseResult> list( @MyRequestBody String loginName, @MyRequestBody MyPageParam pageParam) { - List loginUserInfoList = new LinkedList<>(); int queryCount = pageParam.getPageNum() * pageParam.getPageSize(); int skipCount = (pageParam.getPageNum() - 1) * pageParam.getPageSize(); String patternKey; @@ -51,17 +50,15 @@ public class LoginUserController { } else { patternKey = RedisKeyUtil.getSessionIdPrefix(loginName) + "*"; } - long totalCount = 0L; - int pos = 0; + List loginUserInfoList = new LinkedList<>(); Iterable keys = redissonClient.getKeys().getKeysByPattern(patternKey); for (String key : keys) { - totalCount++; - if (pos++ < skipCount) { - continue; - } loginUserInfoList.add(this.buildTokenDataByRedisKey(key)); } - return ResponseResult.success(new MyPageData<>(loginUserInfoList, totalCount)); + loginUserInfoList.sort((o1, o2) -> (int) (o2.getLoginTime().getTime() - o1.getLoginTime().getTime())); + int toIndex = Math.min(skipCount + pageParam.getPageSize(), loginUserInfoList.size()); + List resultList = loginUserInfoList.subList(skipCount, toIndex); + return ResponseResult.success(new MyPageData<>(resultList, (long) loginUserInfoList.size())); } /** 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 47f8606b..38e45079 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 @@ -1,6 +1,6 @@ package com.orange.demo.upmsservice.model; -import com.orange.demo.common.core.annotation.DeletedFlagColumn; +import com.baomidou.mybatisplus.annotation.*; import com.orange.demo.common.core.annotation.RelationManyToMany; import com.orange.demo.common.core.base.model.BaseModel; import com.orange.demo.common.core.base.mapper.BaseModelMapper; @@ -11,7 +11,6 @@ import org.mapstruct.Mapper; import org.mapstruct.Mapping; import org.mapstruct.factory.Mappers; -import javax.persistence.*; import java.util.*; /** @@ -22,56 +21,55 @@ import java.util.*; */ @Data @EqualsAndHashCode(callSuper = true) -@Table(name = "zz_sys_menu") +@TableName(value = "zz_sys_menu") public class SysMenu extends BaseModel { /** * 主键Id。 */ - @Id - @Column(name = "menu_id") + @TableId(value = "menu_id") private Long menuId; /** * 父菜单Id,目录菜单的父菜单为null。 */ - @Column(name = "parent_id") + @TableField(value = "parent_id") private Long parentId; /** * 菜单显示名称。 */ - @Column(name = "menu_name") + @TableField(value = "menu_name") private String menuName; /** * 菜单类型(0: 目录 1: 菜单 2: 按钮 3: UI片段)。 */ - @Column(name = "menu_type") + @TableField(value = "menu_type") private Integer menuType; /** * 前端表单路由名称,仅用于menu_type为1的菜单类型。 */ - @Column(name = "form_router_name") + @TableField(value = "form_router_name") private String formRouterName; /** * 在线表单主键Id,仅用于在线表单绑定的菜单。 */ - @Column(name = "online_form_id") + @TableField(value = "online_form_id") private Long onlineFormId; /** * 在线表单菜单的权限控制类型,具体值可参考SysOnlineMenuPermType常量对象。 */ - @Column(name = "online_menu_perm_type") + @TableField(value = "online_menu_perm_type") private Integer onlineMenuPermType; /** * 菜单显示顺序 (值越小,排序越靠前)。 */ - @Column(name = "show_order") + @TableField(value = "show_order") private Integer showOrder; /** @@ -82,15 +80,15 @@ public class SysMenu extends BaseModel { /** * 逻辑删除标记字段(1: 正常 -1: 已删除)。 */ - @DeletedFlagColumn - @Column(name = "deleted_flag") + @TableLogic + @TableField(value = "deleted_flag") private Integer deletedFlag; @RelationManyToMany( relationMapperName = "sysMenuPermCodeMapper", relationMasterIdField = "menuId", relationModelClass = SysMenuPermCode.class) - @Transient + @TableField(exist = false) private List sysMenuPermCodeList; @Mapper 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 d8a1c65b..816f5ab8 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 @@ -1,9 +1,8 @@ package com.orange.demo.upmsservice.model; +import com.baomidou.mybatisplus.annotation.*; import lombok.Data; -import javax.persistence.*; - /** * 菜单与权限字关联实体对象。 * @@ -11,20 +10,18 @@ import javax.persistence.*; * @date 2020-08-08 */ @Data -@Table(name = "zz_sys_menu_perm_code") +@TableName(value = "zz_sys_menu_perm_code") public class SysMenuPermCode { /** * 关联菜单Id。 */ - @Id - @Column(name = "menu_id") + @TableField(value = "menu_id") private Long menuId; /** * 关联权限字Id。 */ - @Id - @Column(name = "perm_code_id") + @TableField(value = "perm_code_id") private Long permCodeId; } 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 be4d9ff9..d6cfa362 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 @@ -1,12 +1,11 @@ package com.orange.demo.upmsservice.model; -import com.orange.demo.common.core.annotation.DeletedFlagColumn; +import com.baomidou.mybatisplus.annotation.*; import com.orange.demo.common.core.base.model.BaseModel; import com.orange.demo.common.core.annotation.RelationDict; import lombok.Data; import lombok.EqualsAndHashCode; -import javax.persistence.*; import java.util.*; /** @@ -17,26 +16,25 @@ import java.util.*; */ @Data @EqualsAndHashCode(callSuper = true) -@Table(name = "zz_sys_perm") +@TableName(value = "zz_sys_perm") public class SysPerm extends BaseModel { /** * 权限Id。 */ - @Id - @Column(name = "perm_id") + @TableId(value = "perm_id") private Long permId; /** * 权限所在的权限模块Id。 */ - @Column(name = "module_id") + @TableField(value = "module_id") private Long moduleId; /** * 权限名称。 */ - @Column(name = "perm_name") + @TableField(value = "perm_name") private String permName; /** @@ -47,14 +45,14 @@ public class SysPerm extends BaseModel { /** * 权限在当前模块下的顺序,由小到大。 */ - @Column(name = "show_order") + @TableField(value = "show_order") private Integer showOrder; /** * 逻辑删除标记字段(1: 正常 -1: 已删除)。 */ - @DeletedFlagColumn - @Column(name = "deleted_flag") + @TableLogic + @TableField(value = "deleted_flag") private Integer deletedFlag; @RelationDict( @@ -63,6 +61,6 @@ public class SysPerm extends BaseModel { slaveModelClass = SysPermModule.class, slaveIdField = "moduleId", slaveNameField = "moduleName") - @Transient + @TableField(exist = false) private Map moduleIdDictMap; } 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 a3cebb9f..63095b68 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 @@ -1,6 +1,6 @@ package com.orange.demo.upmsservice.model; -import com.orange.demo.common.core.annotation.DeletedFlagColumn; +import com.baomidou.mybatisplus.annotation.*; import com.orange.demo.common.core.annotation.RelationManyToMany; import com.orange.demo.common.core.base.model.BaseModel; import com.orange.demo.common.core.base.mapper.BaseModelMapper; @@ -11,7 +11,6 @@ import org.mapstruct.Mapper; import org.mapstruct.Mapping; import org.mapstruct.factory.Mappers; -import javax.persistence.*; import java.util.*; /** @@ -22,58 +21,57 @@ import java.util.*; */ @Data @EqualsAndHashCode(callSuper = true) -@Table(name = "zz_sys_perm_code") +@TableName(value = "zz_sys_perm_code") public class SysPermCode extends BaseModel { /** * 主键Id。 */ - @Id - @Column(name = "perm_code_id") + @TableId(value = "perm_code_id") private Long permCodeId; /** * 上级权限字Id。 */ - @Column(name = "parent_id") + @TableField(value = "parent_id") private Long parentId; /** * 权限字标识(一般为有含义的英文字符串)。 */ - @Column(name = "perm_code") + @TableField(value = "perm_code") private String permCode; /** * 权限类型(0: 表单 1: UI片段 2: 操作)。 */ - @Column(name = "perm_code_type") + @TableField(value = "perm_code_type") private Integer permCodeType; /** * 显示名称。 */ - @Column(name = "show_name") + @TableField(value = "show_name") private String showName; /** * 显示顺序(数值越小,越靠前)。 */ - @Column(name = "show_order") + @TableField(value = "show_order") private Integer showOrder; /** * 逻辑删除标记字段(1: 正常 -1: 已删除)。 */ - @DeletedFlagColumn - @Column(name = "deleted_flag") + @TableLogic + @TableField(value = "deleted_flag") private Integer deletedFlag; @RelationManyToMany( relationMapperName = "sysPermCodePermMapper", relationMasterIdField = "permCodeId", relationModelClass = SysPermCodePerm.class) - @Transient + @TableField(exist = false) private List sysPermCodePermList; @Mapper 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 3af23547..7416c102 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 @@ -1,9 +1,8 @@ package com.orange.demo.upmsservice.model; +import com.baomidou.mybatisplus.annotation.*; import lombok.Data; -import javax.persistence.*; - /** * 权限字与权限资源关联实体对象。 * @@ -11,20 +10,18 @@ import javax.persistence.*; * @date 2020-08-08 */ @Data -@Table(name = "zz_sys_perm_code_perm") +@TableName(value = "zz_sys_perm_code_perm") public class SysPermCodePerm { /** * 权限字Id。 */ - @Id - @Column(name = "perm_code_id") + @TableField(value = "perm_code_id") private Long permCodeId; /** * 权限Id。 */ - @Id - @Column(name = "perm_id") + @TableField(value = "perm_id") private Long permId; } 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 7a4fd99d..f36184cb 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 @@ -1,11 +1,10 @@ package com.orange.demo.upmsservice.model; -import com.orange.demo.common.core.annotation.DeletedFlagColumn; +import com.baomidou.mybatisplus.annotation.*; import com.orange.demo.common.core.base.model.BaseModel; import lombok.Data; import lombok.EqualsAndHashCode; -import javax.persistence.*; import java.util.*; /** @@ -16,47 +15,46 @@ import java.util.*; */ @Data @EqualsAndHashCode(callSuper = true) -@Table(name = "zz_sys_perm_module") +@TableName(value = "zz_sys_perm_module") public class SysPermModule extends BaseModel { /** * 权限模块Id。 */ - @Id - @Column(name = "module_id") + @TableId(value = "module_id") private Long moduleId; /** * 上级权限模块Id。 */ - @Column(name = "parent_id") + @TableField(value = "parent_id") private Long parentId; /** * 权限模块名称。 */ - @Column(name = "module_name") + @TableField(value = "module_name") private String moduleName; /** * 权限模块类型(0: 普通模块 1: Controller模块)。 */ - @Column(name = "module_type") + @TableField(value = "module_type") private Integer moduleType; /** * 权限模块在当前层级下的顺序,由小到大。 */ - @Column(name = "show_order") + @TableField(value = "show_order") private Integer showOrder; /** * 逻辑删除标记字段(1: 正常 -1: 已删除)。 */ - @DeletedFlagColumn - @Column(name = "deleted_flag") + @TableLogic + @TableField(value = "deleted_flag") private Integer deletedFlag; - @Transient + @TableField(exist = false) private List sysPermList; } 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 0b961e39..a599e996 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 @@ -1,9 +1,8 @@ package com.orange.demo.upmsservice.model; +import com.baomidou.mybatisplus.annotation.*; import lombok.Data; -import javax.persistence.*; - /** * 白名单实体对象。 * @@ -11,25 +10,24 @@ import javax.persistence.*; * @date 2020-08-08 */ @Data -@Table(name = "zz_sys_perm_whitelist") +@TableName(value = "zz_sys_perm_whitelist") public class SysPermWhitelist { /** * 权限资源的URL。 */ - @Id - @Column(name = "perm_url") + @TableId(value = "perm_url") private String permUrl; /** * 权限资源所属模块名字(通常是Controller的名字)。 */ - @Column(name = "module_name") + @TableField(value = "module_name") private String moduleName; /** * 权限的名称。 */ - @Column(name = "perm_name") + @TableField(value = "perm_name") private String permName; } 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 7ea2d4b6..e608c662 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 @@ -1,6 +1,6 @@ package com.orange.demo.upmsservice.model; -import com.orange.demo.common.core.annotation.DeletedFlagColumn; +import com.baomidou.mybatisplus.annotation.*; import com.orange.demo.common.core.annotation.RelationManyToMany; import com.orange.demo.common.core.base.model.BaseModel; import com.orange.demo.common.core.base.mapper.BaseModelMapper; @@ -11,7 +11,6 @@ import org.mapstruct.Mapper; import org.mapstruct.Mapping; import org.mapstruct.factory.Mappers; -import javax.persistence.*; import java.util.*; /** @@ -22,34 +21,33 @@ import java.util.*; */ @Data @EqualsAndHashCode(callSuper = true) -@Table(name = "zz_sys_role") +@TableName(value = "zz_sys_role") public class SysRole extends BaseModel { /** * 主键Id。 */ - @Id - @Column(name = "role_id") + @TableId(value = "role_id") private Long roleId; /** * 角色名称。 */ - @Column(name = "role_name") + @TableField(value = "role_name") private String roleName; /** * 逻辑删除标记字段(1: 正常 -1: 已删除)。 */ - @DeletedFlagColumn - @Column(name = "deleted_flag") + @TableLogic + @TableField(value = "deleted_flag") private Integer deletedFlag; @RelationManyToMany( relationMapperName = "sysRoleMenuMapper", relationMasterIdField = "roleId", relationModelClass = SysRoleMenu.class) - @Transient + @TableField(exist = false) private List sysRoleMenuList; @Mapper 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 c8574214..0363a047 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 @@ -1,9 +1,8 @@ package com.orange.demo.upmsservice.model; +import com.baomidou.mybatisplus.annotation.*; import lombok.Data; -import javax.persistence.*; - /** * 角色菜单实体对象。 * @@ -11,20 +10,18 @@ import javax.persistence.*; * @date 2020-08-08 */ @Data -@Table(name = "zz_sys_role_menu") +@TableName(value = "zz_sys_role_menu") public class SysRoleMenu { /** * 角色Id。 */ - @Id - @Column(name = "role_id") + @TableField(value = "role_id") private Long roleId; /** * 菜单Id。 */ - @Id - @Column(name = "menu_id") + @TableField(value = "menu_id") private Long menuId; } 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 ea3b81a6..901f181c 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 @@ -1,5 +1,6 @@ package com.orange.demo.upmsservice.model; +import com.baomidou.mybatisplus.annotation.*; import com.orange.demo.upmsapi.vo.SysUserVo; import com.orange.demo.upmsapi.constant.SysUserType; import com.orange.demo.upmsapi.constant.SysUserStatus; @@ -7,12 +8,10 @@ import com.orange.demo.common.core.annotation.RelationConstDict; import com.orange.demo.common.core.annotation.RelationManyToMany; import com.orange.demo.common.core.base.model.BaseModel; import com.orange.demo.common.core.base.mapper.BaseModelMapper; -import com.orange.demo.common.core.annotation.DeletedFlagColumn; import lombok.Data; import lombok.EqualsAndHashCode; import org.mapstruct.*; import org.mapstruct.factory.Mappers; -import javax.persistence.*; import java.util.Map; import java.util.List; @@ -25,20 +24,19 @@ import java.util.List; */ @Data @EqualsAndHashCode(callSuper = true) -@Table(name = "zz_sys_user") +@TableName(value = "zz_sys_user") public class SysUser extends BaseModel { /** * 用户Id。 */ - @Id - @Column(name = "user_id") + @TableId(value = "user_id") private Long userId; /** * 登录用户名。 */ - @Column(name = "login_name") + @TableField(value = "login_name") private String loginName; /** @@ -49,44 +47,44 @@ public class SysUser extends BaseModel { /** * 用户显示名称。 */ - @Column(name = "show_name") + @TableField(value = "show_name") private String showName; /** * 用户类型(0: 管理员 1: 系统管理用户 2: 系统业务用户)。 */ - @Column(name = "user_type") + @TableField(value = "user_type") private Integer userType; /** * 用户头像的Url。 */ - @Column(name = "head_image_url") + @TableField(value = "head_image_url") private String headImageUrl; /** * 用户状态(0: 正常 1: 锁定)。 */ - @Column(name = "user_status") + @TableField(value = "user_status") private Integer userStatus; /** * 逻辑删除标记字段(1: 正常 -1: 已删除)。 */ - @DeletedFlagColumn - @Column(name = "deleted_flag") + @TableLogic + @TableField(value = "deleted_flag") private Integer deletedFlag; /** * createTime 范围过滤起始值(>=)。 */ - @Transient + @TableField(exist = false) private String createTimeStart; /** * createTime 范围过滤结束值(<=)。 */ - @Transient + @TableField(exist = false) private String createTimeEnd; /** @@ -96,19 +94,19 @@ public class SysUser extends BaseModel { relationMapperName = "sysUserRoleMapper", relationMasterIdField = "userId", relationModelClass = SysUserRole.class) - @Transient + @TableField(exist = false) private List sysUserRoleList; @RelationConstDict( masterIdField = "userType", constantDictClass = SysUserType.class) - @Transient + @TableField(exist = false) private Map userTypeDictMap; @RelationConstDict( masterIdField = "userStatus", constantDictClass = SysUserStatus.class) - @Transient + @TableField(exist = false) private Map userStatusDictMap; @Mapper 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 a521ea7e..e2b552c4 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 @@ -1,9 +1,8 @@ package com.orange.demo.upmsservice.model; +import com.baomidou.mybatisplus.annotation.*; import lombok.Data; -import javax.persistence.*; - /** * 用户角色实体对象。 * @@ -11,20 +10,18 @@ import javax.persistence.*; * @date 2020-08-08 */ @Data -@Table(name = "zz_sys_user_role") +@TableName(value = "zz_sys_user_role") public class SysUserRole { /** * 用户Id。 */ - @Id - @Column(name = "user_id") + @TableField(value = "user_id") private Long userId; /** * 角色Id。 */ - @Id - @Column(name = "role_id") + @TableField(value = "role_id") private Long roleId; } diff --git a/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/service/impl/SysMenuServiceImpl.java b/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/service/impl/SysMenuServiceImpl.java index 6f44147d..bd9cfe6e 100644 --- a/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/service/impl/SysMenuServiceImpl.java +++ b/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/service/impl/SysMenuServiceImpl.java @@ -2,6 +2,9 @@ package com.orange.demo.upmsservice.service.impl; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.orange.demo.common.core.base.service.BaseService; import com.orange.demo.common.sequence.wrapper.IdGeneratorWrapper; import com.orange.demo.common.core.base.dao.BaseDaoMapper; @@ -23,7 +26,6 @@ import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import tk.mybatis.mapper.entity.Example; import java.util.*; import java.util.stream.Collectors; @@ -74,14 +76,12 @@ public class SysMenuServiceImpl extends BaseService implements Sy MyModelUtil.fillCommonsForInsert(sysMenu); sysMenuMapper.insert(sysMenu); if (permCodeIdSet != null) { - List sysMenuPermCodeList = new LinkedList<>(); for (Long permCodeId : permCodeIdSet) { SysMenuPermCode menuPermCode = new SysMenuPermCode(); menuPermCode.setMenuId(sysMenu.getMenuId()); menuPermCode.setPermCodeId(permCodeId); - sysMenuPermCodeList.add(menuPermCode); + sysMenuPermCodeMapper.insert(menuPermCode); } - sysMenuPermCodeMapper.insertList(sysMenuPermCodeList); } // 判断当前菜单是否为指向在线表单的菜单,并将根据约定,动态插入两个子菜单。 if (sysMenu.getOnlineFormId() != null) { @@ -93,6 +93,7 @@ public class SysMenuServiceImpl extends BaseService implements Sy viewSubMenu.setShowOrder(0); viewSubMenu.setOnlineFormId(sysMenu.getOnlineFormId()); viewSubMenu.setOnlineMenuPermType(SysOnlineMenuPermType.TYPE_VIEW); + viewSubMenu.setDeletedFlag(GlobalDeletedFlag.NORMAL); MyModelUtil.fillCommonsForInsert(viewSubMenu); sysMenuMapper.insert(viewSubMenu); SysMenu editSubMenu = new SysMenu(); @@ -103,6 +104,7 @@ public class SysMenuServiceImpl extends BaseService implements Sy editSubMenu.setShowOrder(1); editSubMenu.setOnlineFormId(sysMenu.getOnlineFormId()); editSubMenu.setOnlineMenuPermType(SysOnlineMenuPermType.TYPE_EDIT); + editSubMenu.setDeletedFlag(GlobalDeletedFlag.NORMAL); MyModelUtil.fillCommonsForInsert(editSubMenu); sysMenuMapper.insert(editSubMenu); } @@ -122,30 +124,27 @@ public class SysMenuServiceImpl extends BaseService implements Sy public boolean update(SysMenu sysMenu, SysMenu originalSysMenu, Set permCodeIdSet) { MyModelUtil.fillCommonsForUpdate(sysMenu, originalSysMenu); sysMenu.setMenuType(originalSysMenu.getMenuType()); - sysMenu.setDeletedFlag(GlobalDeletedFlag.NORMAL); - if (sysMenuMapper.updateByPrimaryKey(sysMenu) != 1) { + UpdateWrapper uw = this.createUpdateQueryForNullValue(sysMenu, sysMenu.getMenuId()); + if (sysMenuMapper.update(sysMenu, uw) != 1) { return false; } SysMenuPermCode deletedMenuPermCode = new SysMenuPermCode(); deletedMenuPermCode.setMenuId(sysMenu.getMenuId()); - sysMenuPermCodeMapper.delete(deletedMenuPermCode); + sysMenuPermCodeMapper.delete(new QueryWrapper<>(deletedMenuPermCode)); if (permCodeIdSet != null) { - List sysMenuPermCodeList = new LinkedList<>(); for (Long permCodeId : permCodeIdSet) { SysMenuPermCode menuPermCode = new SysMenuPermCode(); menuPermCode.setMenuId(sysMenu.getMenuId()); menuPermCode.setPermCodeId(permCodeId); - sysMenuPermCodeList.add(menuPermCode); + sysMenuPermCodeMapper.insert(menuPermCode); } - sysMenuPermCodeMapper.insertList(sysMenuPermCodeList); } // 如果当前菜单的在线表单Id变化了,就需要同步更新他的内置子菜单也同步更新。 if (ObjectUtil.notEqual(originalSysMenu.getOnlineFormId(), sysMenu.getOnlineFormId())) { SysMenu onlineSubMenu = new SysMenu(); onlineSubMenu.setOnlineFormId(sysMenu.getOnlineFormId()); - Example e = new Example(SysMenu.class); - e.createCriteria().andEqualTo("parentId", sysMenu.getMenuId()); - sysMenuMapper.updateByExampleSelective(onlineSubMenu, e); + sysMenuMapper.update(onlineSubMenu, + new QueryWrapper().lambda().eq(SysMenu::getParentId, sysMenu.getMenuId())); } return true; } @@ -160,20 +159,18 @@ public class SysMenuServiceImpl extends BaseService implements Sy @Override public boolean remove(SysMenu menu) { Long menuId = menu.getMenuId(); - if (!this.removeById(menuId)) { + if (sysMenuMapper.deleteById(menuId) != 1) { return false; } SysRoleMenu roleMenu = new SysRoleMenu(); roleMenu.setMenuId(menuId); - sysRoleMenuMapper.delete(roleMenu); + sysRoleMenuMapper.delete(new QueryWrapper<>(roleMenu)); SysMenuPermCode menuPermCode = new SysMenuPermCode(); menuPermCode.setMenuId(menuId); - sysMenuPermCodeMapper.delete(menuPermCode); + sysMenuPermCodeMapper.delete(new QueryWrapper<>(menuPermCode)); // 如果为指向在线表单的菜单,则连同删除子菜单 if (menu.getOnlineFormId() != null) { - Example e = new Example(SysMenu.class); - e.createCriteria().andEqualTo("parentId", menuId); - sysMenuMapper.deleteByExample(e); + sysMenuMapper.delete(new QueryWrapper().lambda().eq(SysMenu::getParentId, menuId)); } return true; } @@ -185,12 +182,11 @@ public class SysMenuServiceImpl extends BaseService implements Sy */ @Override public Collection getAllMenuList() { - Example e = new Example(SysMenu.class); - e.orderBy("showOrder"); - Example.Criteria c = e.createCriteria(); - c.andIn("menuType", Arrays.asList(SysMenuType.TYPE_MENU, SysMenuType.TYPE_DIRECTORY)); - c.andEqualTo("deletedFlag", GlobalDeletedFlag.NORMAL); - return sysMenuMapper.selectByExample(e); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.orderByAsc(this.safeMapToColumnName("showOrder")); + queryWrapper.in(this.safeMapToColumnName("menuType"), + Arrays.asList(SysMenuType.TYPE_MENU, SysMenuType.TYPE_DIRECTORY)); + return sysMenuMapper.selectList(queryWrapper); } /** @@ -289,12 +285,12 @@ public class SysMenuServiceImpl extends BaseService implements Sy */ @Override public List getAllOnlineMenuList(Integer menuType) { - Example e = new Example(SysMenu.class); - Example.Criteria c = e.createCriteria().andIsNotNull("onlineFormId"); + LambdaQueryWrapper queryWrapper = + new QueryWrapper().lambda().isNotNull(SysMenu::getOnlineFormId); if (menuType != null) { - c.andEqualTo("menuType", menuType); + queryWrapper.eq(SysMenu::getMenuType, menuType); } - return sysMenuMapper.selectByExample(e); + return sysMenuMapper.selectList(queryWrapper); } /** diff --git a/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/service/impl/SysPermCodeServiceImpl.java b/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/service/impl/SysPermCodeServiceImpl.java index db1a668b..5aacae1e 100644 --- a/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/service/impl/SysPermCodeServiceImpl.java +++ b/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/service/impl/SysPermCodeServiceImpl.java @@ -1,6 +1,8 @@ package com.orange.demo.upmsservice.service.impl; import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.orange.demo.common.core.base.service.BaseService; import com.orange.demo.common.sequence.wrapper.IdGeneratorWrapper; import com.orange.demo.common.core.base.dao.BaseDaoMapper; @@ -93,14 +95,12 @@ public class SysPermCodeServiceImpl extends BaseService imple MyModelUtil.fillCommonsForInsert(sysPermCode); sysPermCodeMapper.insert(sysPermCode); if (permIdSet != null) { - List sysPermCodePermList = new LinkedList<>(); for (Long permId : permIdSet) { SysPermCodePerm permCodePerm = new SysPermCodePerm(); permCodePerm.setPermCodeId(sysPermCode.getPermCodeId()); permCodePerm.setPermId(permId); - sysPermCodePermList.add(permCodePerm); + sysPermCodePermMapper.insert(permCodePerm); } - sysPermCodePermMapper.insertList(sysPermCodePermList); } return sysPermCode; } @@ -117,23 +117,22 @@ public class SysPermCodeServiceImpl extends BaseService imple @Override public boolean update(SysPermCode sysPermCode, SysPermCode originalSysPermCode, Set permIdSet) { sysPermCode.setParentId(originalSysPermCode.getParentId()); - sysPermCode.setDeletedFlag(GlobalDeletedFlag.NORMAL); MyModelUtil.fillCommonsForUpdate(sysPermCode, originalSysPermCode); - if (sysPermCodeMapper.updateByPrimaryKey(sysPermCode) != 1) { + UpdateWrapper uw = + this.createUpdateQueryForNullValue(sysPermCode, sysPermCode.getPermCodeId()); + if (sysPermCodeMapper.update(sysPermCode, uw) != 1) { return false; } SysPermCodePerm deletedPermCodePerm = new SysPermCodePerm(); deletedPermCodePerm.setPermCodeId(sysPermCode.getPermCodeId()); - sysPermCodePermMapper.delete(deletedPermCodePerm); + sysPermCodePermMapper.delete(new QueryWrapper<>(deletedPermCodePerm)); if (permIdSet != null) { - List sysPermCodePermList = new LinkedList<>(); for (Long permId : permIdSet) { SysPermCodePerm permCodePerm = new SysPermCodePerm(); permCodePerm.setPermCodeId(sysPermCode.getPermCodeId()); permCodePerm.setPermId(permId); - sysPermCodePermList.add(permCodePerm); + sysPermCodePermMapper.insert(permCodePerm); } - sysPermCodePermMapper.insertList(sysPermCodePermList); } return true; } @@ -147,15 +146,15 @@ public class SysPermCodeServiceImpl extends BaseService imple @Transactional(rollbackFor = Exception.class) @Override public boolean remove(Long permCodeId) { - if (!this.removeById(permCodeId)) { + if (sysPermCodeMapper.deleteById(permCodeId) != 1) { return false; } SysMenuPermCode menuPermCode = new SysMenuPermCode(); menuPermCode.setPermCodeId(permCodeId); - sysMenuPermCodeMapper.delete(menuPermCode); + sysMenuPermCodeMapper.delete(new QueryWrapper<>(menuPermCode)); SysPermCodePerm permCodePerm = new SysPermCodePerm(); permCodePerm.setPermCodeId(permCodeId); - sysPermCodePermMapper.delete(permCodePerm); + sysPermCodePermMapper.delete(new QueryWrapper<>(permCodePerm)); return true; } diff --git a/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/service/impl/SysPermModuleServiceImpl.java b/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/service/impl/SysPermModuleServiceImpl.java index 9d11f3ff..40983cb7 100644 --- a/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/service/impl/SysPermModuleServiceImpl.java +++ b/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/service/impl/SysPermModuleServiceImpl.java @@ -71,8 +71,7 @@ public class SysPermModuleServiceImpl extends BaseService i @Override public boolean update(SysPermModule sysPermModule, SysPermModule originalSysPermModule) { MyModelUtil.fillCommonsForUpdate(sysPermModule, originalSysPermModule); - sysPermModule.setDeletedFlag(GlobalDeletedFlag.NORMAL); - return sysPermModuleMapper.updateByPrimaryKey(sysPermModule) != 0; + return sysPermModuleMapper.updateById(sysPermModule) != 0; } /** @@ -84,7 +83,7 @@ public class SysPermModuleServiceImpl extends BaseService i @Transactional(rollbackFor = Exception.class) @Override public boolean remove(Long moduleId) { - return this.removeById(moduleId); + return sysPermModuleMapper.deleteById(moduleId) == 1; } /** diff --git a/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/service/impl/SysPermServiceImpl.java b/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/service/impl/SysPermServiceImpl.java index 2144cc6b..591d7edf 100644 --- a/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/service/impl/SysPermServiceImpl.java +++ b/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/service/impl/SysPermServiceImpl.java @@ -1,5 +1,6 @@ package com.orange.demo.upmsservice.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import cn.hutool.core.util.ObjectUtil; import com.orange.demo.common.core.base.service.BaseService; import com.orange.demo.common.sequence.wrapper.IdGeneratorWrapper; @@ -18,7 +19,6 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import tk.mybatis.mapper.entity.Example; import java.util.*; @@ -78,8 +78,7 @@ public class SysPermServiceImpl extends BaseService implements Sy @Override public boolean update(SysPerm perm, SysPerm originalPerm) { MyModelUtil.fillCommonsForUpdate(perm, originalPerm); - perm.setDeletedFlag(GlobalDeletedFlag.NORMAL); - return sysPermMapper.updateByPrimaryKeySelective(perm) != 0; + return sysPermMapper.updateById(perm) != 0; } /** @@ -91,12 +90,12 @@ public class SysPermServiceImpl extends BaseService implements Sy @Transactional(rollbackFor = Exception.class) @Override public boolean remove(Long permId) { - if (!this.removeById(permId)) { + if (sysPermMapper.deleteById(permId) != 1) { return false; } SysPermCodePerm permCodePerm = new SysPermCodePerm(); permCodePerm.setPermId(permId); - sysPermCodePermMapper.delete(permCodePerm); + sysPermCodePermMapper.delete(new QueryWrapper<>(permCodePerm)); return true; } @@ -108,17 +107,13 @@ public class SysPermServiceImpl extends BaseService implements Sy */ @Override public List getPermListWithRelation(SysPerm sysPermFilter) { - Example e = new Example(SysPerm.class); - e.orderBy("showOrder"); - Example.Criteria c = e.createCriteria(); - if (ObjectUtil.isNotNull(sysPermFilter.getModuleId())) { - c.andEqualTo("moduleId", sysPermFilter.getModuleId()); - } - if (ObjectUtil.isNotNull(sysPermFilter.getUrl())) { - c.andLike("url", "%" + sysPermFilter.getUrl() + "%"); - } - c.andEqualTo("deletedFlag", GlobalDeletedFlag.NORMAL); - List permList = sysPermMapper.selectByExample(e); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.orderByAsc(this.safeMapToColumnName("showOrder")); + queryWrapper.eq(ObjectUtil.isNotNull(sysPermFilter.getModuleId()), + this.safeMapToColumnName("moduleId"), sysPermFilter.getModuleId()); + queryWrapper.like(ObjectUtil.isNotNull(sysPermFilter.getUrl()), + this.safeMapToColumnName("url"), "%" + sysPermFilter.getUrl() + "%"); + List permList = sysPermMapper.selectList(queryWrapper); // 这里因为权限只有字典数据,所以仅仅做字典关联。 this.buildRelationForDataList(permList, MyRelationParam.dictOnly()); return permList; diff --git a/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/service/impl/SysRoleServiceImpl.java b/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/service/impl/SysRoleServiceImpl.java index d4beabcb..f9863996 100644 --- a/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/service/impl/SysRoleServiceImpl.java +++ b/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/service/impl/SysRoleServiceImpl.java @@ -1,5 +1,6 @@ package com.orange.demo.upmsservice.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.alibaba.fastjson.JSONObject; import com.orange.demo.common.core.base.service.BaseService; import com.orange.demo.common.core.base.dao.BaseDaoMapper; @@ -70,14 +71,12 @@ public class SysRoleServiceImpl extends BaseService implements Sy MyModelUtil.fillCommonsForInsert(role); sysRoleMapper.insert(role); if (menuIdSet != null) { - List roleMenuList = new LinkedList<>(); for (Long menuId : menuIdSet) { SysRoleMenu roleMenu = new SysRoleMenu(); roleMenu.setRoleId(role.getRoleId()); roleMenu.setMenuId(menuId); - roleMenuList.add(roleMenu); + sysRoleMenuMapper.insert(roleMenu); } - sysRoleMenuMapper.insertList(roleMenuList); } return role; } @@ -93,23 +92,20 @@ public class SysRoleServiceImpl extends BaseService implements Sy @Transactional(rollbackFor = Exception.class) @Override public boolean update(SysRole role, SysRole originalRole, Set menuIdSet) { - role.setDeletedFlag(GlobalDeletedFlag.NORMAL); MyModelUtil.fillCommonsForUpdate(role, originalRole); - if (sysRoleMapper.updateByPrimaryKey(role) != 1) { + if (sysRoleMapper.updateById(role) != 1) { return false; } SysRoleMenu deletedRoleMenu = new SysRoleMenu(); deletedRoleMenu.setRoleId(role.getRoleId()); - sysRoleMenuMapper.delete(deletedRoleMenu); + sysRoleMenuMapper.delete(new QueryWrapper<>(deletedRoleMenu)); if (menuIdSet != null) { - List roleMenuList = new LinkedList<>(); for (Long menuId : menuIdSet) { SysRoleMenu roleMenu = new SysRoleMenu(); roleMenu.setRoleId(role.getRoleId()); roleMenu.setMenuId(menuId); - roleMenuList.add(roleMenu); + sysRoleMenuMapper.insert(roleMenu); } - sysRoleMenuMapper.insertList(roleMenuList); } return true; } @@ -123,15 +119,15 @@ public class SysRoleServiceImpl extends BaseService implements Sy @Transactional(rollbackFor = Exception.class) @Override public boolean remove(Long roleId) { - if (!this.removeById(roleId)) { + if (sysRoleMapper.deleteById(roleId) != 1) { return false; } SysRoleMenu roleMenu = new SysRoleMenu(); roleMenu.setRoleId(roleId); - sysRoleMenuMapper.delete(roleMenu); + sysRoleMenuMapper.delete(new QueryWrapper<>(roleMenu)); SysUserRole userRole = new SysUserRole(); userRole.setRoleId(roleId); - sysUserRoleMapper.delete(userRole); + sysUserRoleMapper.delete(new QueryWrapper<>(userRole)); return true; } @@ -155,7 +151,9 @@ public class SysRoleServiceImpl extends BaseService implements Sy @Transactional(rollbackFor = Exception.class) @Override public void addUserRoleList(List userRoleList) { - sysUserRoleMapper.insertList(userRoleList); + for (SysUserRole userRole : userRoleList) { + sysUserRoleMapper.insert(userRole); + } } /** @@ -171,7 +169,7 @@ public class SysRoleServiceImpl extends BaseService implements Sy SysUserRole userRole = new SysUserRole(); userRole.setRoleId(roleId); userRole.setUserId(userId); - return sysUserRoleMapper.delete(userRole) == 1; + return sysUserRoleMapper.delete(new QueryWrapper<>(userRole)) == 1; } /** diff --git a/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/service/impl/SysUserServiceImpl.java b/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/service/impl/SysUserServiceImpl.java index 1ac5a1a7..f5a41499 100644 --- a/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/service/impl/SysUserServiceImpl.java +++ b/orange-demo-multi-service/application/upms/upms-service/src/main/java/com/orange/demo/upmsservice/service/impl/SysUserServiceImpl.java @@ -1,5 +1,7 @@ package com.orange.demo.upmsservice.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.alibaba.fastjson.JSONObject; import com.orange.demo.upmsservice.service.*; import com.orange.demo.upmsservice.dao.*; @@ -19,7 +21,6 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import tk.mybatis.mapper.entity.Example; import java.util.*; import java.util.stream.Collectors; @@ -65,8 +66,7 @@ public class SysUserServiceImpl extends BaseService implements Sy public SysUser getSysUserByLoginName(String loginName) { SysUser filter = new SysUser(); filter.setLoginName(loginName); - filter.setDeletedFlag(GlobalDeletedFlag.NORMAL); - return sysUserMapper.selectOne(filter); + return sysUserMapper.selectOne(new QueryWrapper<>(filter)); } /** @@ -86,14 +86,12 @@ public class SysUserServiceImpl extends BaseService implements Sy MyModelUtil.fillCommonsForInsert(user); sysUserMapper.insert(user); if (CollectionUtils.isNotEmpty(roleIdSet)) { - List userRoleList = new LinkedList<>(); for (Long roleId : roleIdSet) { SysUserRole userRole = new SysUserRole(); userRole.setUserId(user.getUserId()); userRole.setRoleId(roleId); - userRoleList.add(userRole); + sysUserRoleMapper.insert(userRole); } - sysUserRoleMapper.insertList(userRoleList); } return user; } @@ -112,23 +110,21 @@ public class SysUserServiceImpl extends BaseService implements Sy user.setLoginName(originalUser.getLoginName()); user.setPassword(originalUser.getPassword()); MyModelUtil.fillCommonsForUpdate(user, originalUser); - user.setDeletedFlag(GlobalDeletedFlag.NORMAL); - if (sysUserMapper.updateByPrimaryKey(user) != 1) { + UpdateWrapper uw = this.createUpdateQueryForNullValue(user, user.getUserId()); + if (sysUserMapper.update(user, uw) != 1) { return false; } // 先删除原有的User-Role关联关系,再重新插入新的关联关系 SysUserRole deletedUserRole = new SysUserRole(); deletedUserRole.setUserId(user.getUserId()); - sysUserRoleMapper.delete(deletedUserRole); + sysUserRoleMapper.delete(new QueryWrapper<>(deletedUserRole)); if (CollectionUtils.isNotEmpty(roleIdSet)) { - List userRoleList = new LinkedList<>(); for (Long roleId : roleIdSet) { SysUserRole userRole = new SysUserRole(); userRole.setUserId(user.getUserId()); userRole.setRoleId(roleId); - userRoleList.add(userRole); + sysUserRoleMapper.insert(userRole); } - sysUserRoleMapper.insertList(userRoleList); } return true; } @@ -142,13 +138,10 @@ public class SysUserServiceImpl extends BaseService implements Sy @Transactional(rollbackFor = Exception.class) @Override public boolean changePassword(Long userId, String newPass) { - Example e = new Example(SysUser.class); - e.createCriteria() - .andEqualTo(super.idFieldName, userId) - .andEqualTo(super.deletedFlagFieldName, GlobalDeletedFlag.NORMAL); SysUser updatedUser = new SysUser(); + updatedUser.setUserId(userId); updatedUser.setPassword(passwordEncoder.encode(newPass)); - return sysUserMapper.updateByExampleSelective(updatedUser, e) == 1; + return sysUserMapper.updateById(updatedUser) == 1; } /** @@ -160,13 +153,12 @@ public class SysUserServiceImpl extends BaseService implements Sy @Transactional(rollbackFor = Exception.class) @Override public boolean remove(Long userId) { - // 这里先删除主数据 - if (!this.removeById(userId)) { + if (sysUserMapper.deleteById(userId) == 0) { return false; } SysUserRole userRole = new SysUserRole(); userRole.setUserId(userId); - sysUserRoleMapper.delete(userRole); + sysUserRoleMapper.delete(new QueryWrapper<>(userRole)); return true; } @@ -234,8 +226,9 @@ public class SysUserServiceImpl extends BaseService implements Sy @Override public List getSysUserListWithRelation( String inFilterField, Set inFilterValues, SysUser filter, String orderBy) { + String inFilterColumn = MyModelUtil.mapToColumnName(inFilterField, SysUser.class); List resultList = - sysUserMapper.getSysUserList(inFilterField, inFilterValues, filter, orderBy); + sysUserMapper.getSysUserList(inFilterColumn, inFilterValues, filter, orderBy); // 在缺省生成的代码中,如果查询结果resultList不是Page对象,说明没有分页,那么就很可能是数据导出接口调用了当前方法。 // 为了避免一次性的大量数据关联,规避因此而造成的系统运行性能冲击,这里手动进行了分批次读取,开发者可按需修改该值。 int batchSize = resultList instanceof Page ? 0 : 1000; diff --git a/orange-demo-multi-service/application/upms/upms-service/upms-service.iml b/orange-demo-multi-service/application/upms/upms-service/upms-service.iml index 8ae13508..42b534e3 100644 --- a/orange-demo-multi-service/application/upms/upms-service/upms-service.iml +++ b/orange-demo-multi-service/application/upms/upms-service/upms-service.iml @@ -63,45 +63,42 @@ - + + + + + - - - - - - - - - + + - - - - - + + + + + - - - - - - - - - + + + + + + + + + @@ -182,9 +179,6 @@ - - - @@ -257,6 +251,11 @@ + + + + + diff --git a/orange-demo-multi-service/application/upms/upms.iml b/orange-demo-multi-service/application/upms/upms.iml index c8c12938..f4ed0119 100644 --- a/orange-demo-multi-service/application/upms/upms.iml +++ b/orange-demo-multi-service/application/upms/upms.iml @@ -85,9 +85,6 @@ - - - @@ -162,6 +159,11 @@ + + + + + diff --git a/orange-demo-multi-service/common/common-core/common-core.iml b/orange-demo-multi-service/common/common-core/common-core.iml index e1711a87..9e79ae23 100644 --- a/orange-demo-multi-service/common/common-core/common-core.iml +++ b/orange-demo-multi-service/common/common-core/common-core.iml @@ -38,9 +38,7 @@ - - @@ -79,23 +77,20 @@ - + + + + + - - - - - - - - - + + @@ -182,6 +177,10 @@ + + + + diff --git a/orange-demo-multi-service/common/common-core/pom.xml b/orange-demo-multi-service/common/common-core/pom.xml index 09e0231f..640d41ac 100644 --- a/orange-demo-multi-service/common/common-core/pom.xml +++ b/orange-demo-multi-service/common/common-core/pom.xml @@ -97,9 +97,9 @@ ${druid.version} - tk.mybatis - mapper-spring-boot-starter - ${mybatis-mapper.version} + com.baomidou + mybatis-plus-boot-starter + ${mybatisplus.version} com.github.pagehelper 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 deleted file mode 100644 index 19e0a067..00000000 --- a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/annotation/DeletedFlagColumn.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.orange.demo.common.core.annotation; - -import java.lang.annotation.*; - -/** - * 主要用于标记逻辑删除字段。 - * - * @author Jerry - * @date 2020-08-08 - */ -@Target({ElementType.FIELD}) -@Retention(RetentionPolicy.RUNTIME) -@Documented -public @interface DeletedFlagColumn { - -} diff --git a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/aop/DataSourceAspect.java b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/aop/DataSourceAspect.java index 687f8f18..a3892582 100644 --- a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/aop/DataSourceAspect.java +++ b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/aop/DataSourceAspect.java @@ -36,13 +36,13 @@ public class DataSourceAspect { Class clazz = point.getTarget().getClass(); MyDataSource ds = clazz.getAnnotation(MyDataSource.class); // 通过判断 DataSource 中的值来判断当前方法应用哪个数据源 - DataSourceContextHolder.setDataSourceType(ds.value()); + Integer originalType = DataSourceContextHolder.setDataSourceType(ds.value()); log.debug("set datasource is " + ds.value()); try { return point.proceed(); } finally { - DataSourceContextHolder.clear(); - log.debug("clean datasource"); + DataSourceContextHolder.unset(originalType); + log.debug("unset datasource is " + originalType); } } } diff --git a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/aop/DataSourceResolveAspect.java b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/aop/DataSourceResolveAspect.java index 96ae6fd2..68c57626 100644 --- a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/aop/DataSourceResolveAspect.java +++ b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/aop/DataSourceResolveAspect.java @@ -50,13 +50,13 @@ public class DataSourceResolveAspect { } int type = resolver.resolve(dsr.arg(), point.getArgs()); // 通过判断 DataSource 中的值来判断当前方法应用哪个数据源 - DataSourceContextHolder.setDataSourceType(type); + Integer originalType = DataSourceContextHolder.setDataSourceType(type); log.debug("set datasource is " + type); try { return point.proceed(); } finally { - DataSourceContextHolder.clear(); - log.debug("clean datasource"); + DataSourceContextHolder.unset(originalType); + log.debug("unset datasource is " + originalType); } } } diff --git a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/aop/DictCacheSyncAspect.java b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/aop/DictCacheSyncAspect.java index b508ea22..b6bf2dc7 100644 --- a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/aop/DictCacheSyncAspect.java +++ b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/aop/DictCacheSyncAspect.java @@ -10,6 +10,8 @@ import org.springframework.core.Ordered; import org.springframework.core.annotation.Order; import org.springframework.stereotype.Component; +import java.io.Serializable; + /** * 字典缓存同步的AOP。该AOP的优先级必须比事务切面的优先级高,因此会在事务外执行该切面的代码。 * @@ -39,23 +41,23 @@ public class DictCacheSyncAspect { Object arg = joinPoint.getArgs()[0]; if ("saveNew".equals(methodName)) { Object data = joinPoint.proceed(); - BaseDictService service = - (BaseDictService) joinPoint.getTarget(); + BaseDictService service = + (BaseDictService) joinPoint.getTarget(); // 这里参数必须使用saveNew方法的返回对象,因为里面包含实际主键值。 service.putDictionaryCache(data); return data; } else if ("update".equals(methodName)) { Object data = joinPoint.proceed(); - BaseDictService service = - (BaseDictService) joinPoint.getTarget(); + BaseDictService service = + (BaseDictService) joinPoint.getTarget(); // update的方法返回的是boolean,因此这里的参数需要使用第一个参数即可。 service.putDictionaryCache(arg); return data; } else { // remove - BaseDictService service = - (BaseDictService) joinPoint.getTarget(); - service.removeDictionaryCache(arg); + BaseDictService service = + (BaseDictService) joinPoint.getTarget(); + service.removeDictionaryCache((Serializable) arg); return joinPoint.proceed(); } } 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 51100df0..0dea07c9 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 @@ -2,6 +2,7 @@ package com.orange.demo.common.core.base.controller; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.util.ReflectUtil; +import com.baomidou.mybatisplus.annotation.*; import com.orange.demo.common.core.base.mapper.BaseModelMapper; import com.orange.demo.common.core.base.service.IBaseService; import com.orange.demo.common.core.constant.AggregationKind; @@ -18,7 +19,7 @@ import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.MapUtils; import org.apache.commons.lang3.StringUtils; -import javax.persistence.Id; +import java.io.Serializable; import java.lang.reflect.Field; import java.lang.reflect.ParameterizedType; import java.util.LinkedList; @@ -37,7 +38,7 @@ import java.util.stream.Collectors; * @date 2020-08-08 */ @Slf4j -public abstract class BaseController { +public abstract class BaseController { /** * 当前Service关联的主Model实体对象的Class。 @@ -68,7 +69,7 @@ public abstract class BaseController { domainVoClass = (Class) ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[1]; Field[] fields = ReflectUtil.getFields(modelClass); for (Field field : fields) { - if (null != field.getAnnotation(Id.class)) { + if (null != field.getAnnotation(TableId.class)) { idFieldName = field.getName(); break; } 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 aee78855..bfa9476b 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 @@ -1,10 +1,8 @@ package com.orange.demo.common.core.base.dao; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; -import tk.mybatis.mapper.additional.insert.InsertListMapper; -import tk.mybatis.mapper.annotation.RegisterMapper; -import tk.mybatis.mapper.common.Mapper; import java.util.List; import java.util.Map; @@ -16,8 +14,7 @@ import java.util.Map; * @author Jerry * @date 2020-08-08 */ -@RegisterMapper -public interface BaseDaoMapper extends Mapper, InsertListMapper { +public interface BaseDaoMapper extends BaseMapper { /** * 根据指定的表名、显示字段列表、过滤条件字符串和分组字段,返回聚合计算后的查询结果。 diff --git a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/base/model/BaseModel.java b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/base/model/BaseModel.java index d30656c3..14818cf4 100644 --- a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/base/model/BaseModel.java +++ b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/base/model/BaseModel.java @@ -1,8 +1,8 @@ package com.orange.demo.common.core.base.model; +import com.baomidou.mybatisplus.annotation.TableField; import lombok.Data; -import javax.persistence.Column; import java.util.Date; /** @@ -17,24 +17,24 @@ public class BaseModel { /** * 创建者Id。 */ - @Column(name = "create_user_id") + @TableField(value = "create_user_id") private Long createUserId; /** * 创建时间。 */ - @Column(name = "create_time") + @TableField(value = "create_time") private Date createTime; /** * 更新者Id。 */ - @Column(name = "update_user_id") + @TableField(value = "update_user_id") private Long updateUserId; /** * 更新时间。 */ - @Column(name = "update_time") + @TableField(value = "update_time") private Date updateTime; } 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 04e0c772..c37539e0 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 @@ -1,6 +1,7 @@ package com.orange.demo.common.core.base.service; import cn.hutool.core.util.ReflectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.orange.demo.common.core.constant.GlobalDeletedFlag; import com.orange.demo.common.core.exception.MyRuntimeException; import com.orange.demo.common.core.cache.DictionaryCache; @@ -8,8 +9,8 @@ import com.orange.demo.common.core.object.TokenData; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.springframework.transaction.annotation.Transactional; -import tk.mybatis.mapper.entity.Example; +import java.io.Serializable; import java.util.*; /** @@ -22,7 +23,7 @@ import java.util.*; * @date 2020-08-08 */ @Slf4j -public abstract class BaseDictService extends BaseService implements IBaseDictService { +public abstract class BaseDictService extends BaseService implements IBaseDictService { /** * 缓存池对象。 @@ -89,15 +90,7 @@ public abstract class BaseDictService extends BaseService implements if (tenantIdField != null) { ReflectUtil.setFieldValue(data, tenantIdField, TokenData.takeFromRequest().getTenantId()); } - if (deletedFlagFieldName != null) { - try { - setDeletedFlagMethod.invoke(data, GlobalDeletedFlag.NORMAL); - } catch (Exception e) { - log.error("Failed to call reflection [setDeletedFlagMethod] in BaseDictService.update.", e); - throw new MyRuntimeException(e); - } - } - return mapper().updateByPrimaryKey(data) == 1; + return mapper().updateById(data) == 1; } /** @@ -109,7 +102,7 @@ public abstract class BaseDictService extends BaseService implements @Transactional(rollbackFor = Exception.class) @Override public boolean remove(K id) { - return this.removeById(id); + return mapper().deleteById(id) == 1; } /** @@ -118,15 +111,16 @@ public abstract class BaseDictService extends BaseService implements * @param id 主键Id。 * @return 主键关联的数据,不存在返回null。 */ + @SuppressWarnings("unchecked") @Override - public M getById(K id) { - M data = dictionaryCache.get(id); + public M getById(Serializable id) { + M data = dictionaryCache.get((K) id); if (data != null) { return data; } data = super.getById(id); if (data != null) { - this.dictionaryCache.put(id, data); + this.dictionaryCache.put((K) id, data); } return data; } @@ -188,7 +182,7 @@ public abstract class BaseDictService extends BaseService implements } /** - * 返回符合 inFilterField in (inFilterValues) 条件的所有数据。蜀国property是主键,则从缓存中读取。 + * 返回符合 inFilterField in (inFilterValues) 条件的所有数据。属性property是主键,则从缓存中读取。 * * @param inFilterField 参与(In-list)过滤的Java对象字段。 * @param inFilterValues 参与(In-list)过滤的Java字段值集合。 @@ -200,7 +194,7 @@ public abstract class BaseDictService extends BaseService implements if (inFilterField.equals(this.idFieldName)) { return this.getInList((Set) inFilterValues); } - return this.getInList(inFilterField, inFilterValues); + return super.getInList(inFilterField, inFilterValues); } /** @@ -220,8 +214,10 @@ public abstract class BaseDictService extends BaseService implements List dataList = this.getInList((Set) inFilterValues); return dataList.size() == inFilterValues.size(); } - Example e = this.makeDefaultInListExample(inFilterField, inFilterValues, null); - return mapper().selectCountByExample(e) == inFilterValues.size(); + String columnName = this.safeMapToColumnName(inFilterField); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in(columnName, inFilterValues); + return mapper().selectCount(queryWrapper) == inFilterValues.size(); } /** 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 e2136e52..5a85ae70 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 @@ -1,5 +1,10 @@ package com.orange.demo.common.core.base.service; +import com.baomidou.mybatisplus.annotation.*; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import cn.hutool.core.util.ReflectUtil; import com.alibaba.fastjson.JSONObject; import com.orange.demo.common.core.annotation.*; @@ -8,6 +13,7 @@ import com.orange.demo.common.core.base.client.BaseClient; import com.orange.demo.common.core.constant.AggregationKind; import com.orange.demo.common.core.constant.AggregationType; import com.orange.demo.common.core.constant.GlobalDeletedFlag; +import com.orange.demo.common.core.exception.InvalidDataFieldException; import com.orange.demo.common.core.exception.MyRuntimeException; import com.orange.demo.common.core.exception.RemoteDataBuildException; import com.orange.demo.common.core.object.*; @@ -21,12 +27,8 @@ import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.MapUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.transaction.annotation.Transactional; -import tk.mybatis.mapper.entity.Example; -import javax.persistence.Column; -import javax.persistence.Id; -import javax.persistence.Table; -import javax.persistence.Transient; +import java.io.Serializable; import java.lang.reflect.Modifier; import java.lang.reflect.Field; import java.lang.reflect.Method; @@ -45,7 +47,7 @@ import static java.util.stream.Collectors.*; * @date 2020-08-08 */ @Slf4j -public abstract class BaseService implements IBaseService { +public abstract class BaseService extends ServiceImpl, M> implements IBaseService { /** * 当前Service关联的主Model实体对象的Class。 */ @@ -154,6 +156,11 @@ public abstract class BaseService implements IBaseService { private static final String AND_OP = " AND "; + @Override + public BaseDaoMapper getBaseMapper() { + return mapper(); + } + /** * 构造函数,在实例化的时候,一次性完成所有有关主Model对象信息的加载。 */ @@ -161,7 +168,7 @@ public abstract class BaseService implements IBaseService { public BaseService() { modelClass = (Class) ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0]; idFieldClass = (Class) ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[1]; - this.tableName = modelClass.getAnnotation(Table.class).name(); + this.tableName = modelClass.getAnnotation(TableName.class).value(); Field[] fields = ReflectUtil.getFields(modelClass); for (Field field : fields) { initializeField(field); @@ -169,10 +176,10 @@ public abstract class BaseService implements IBaseService { } private void initializeField(Field field) { - if (idFieldName == null && null != field.getAnnotation(Id.class)) { + if (idFieldName == null && null != field.getAnnotation(TableId.class)) { idFieldName = field.getName(); - Column c = field.getAnnotation(Column.class); - idColumnName = c == null ? idFieldName : c.name(); + TableId c = field.getAnnotation(TableId.class); + idColumnName = c == null ? idFieldName : c.value(); setIdFieldMethod = ReflectUtil.getMethod( modelClass, "set" + StringUtils.capitalize(idFieldName), idFieldClass); getIdFieldMethod = ReflectUtil.getMethod( @@ -180,21 +187,18 @@ public abstract class BaseService implements IBaseService { } if (updateTimeFieldName == null && null != field.getAnnotation(JobUpdateTimeColumn.class)) { updateTimeFieldName = field.getName(); - Column c = field.getAnnotation(Column.class); - updateTimeColumnName = c == null ? updateTimeFieldName : c.name(); + updateTimeColumnName = this.safeMapToColumnName(updateTimeFieldName); } - if (deletedFlagFieldName == null && null != field.getAnnotation(DeletedFlagColumn.class)) { + if (deletedFlagFieldName == null && null != field.getAnnotation(TableLogic.class)) { deletedFlagFieldName = field.getName(); - Column c = field.getAnnotation(Column.class); - deletedFlagColumnName = c == null ? deletedFlagFieldName : c.name(); + deletedFlagColumnName = this.safeMapToColumnName(deletedFlagFieldName); setDeletedFlagMethod = ReflectUtil.getMethod( modelClass, "set" + StringUtils.capitalize(deletedFlagFieldName), Integer.class); } if (tenantIdFieldName == null && null != field.getAnnotation(TenantFilterColumn.class)) { tenantIdField = field; tenantIdFieldName = field.getName(); - Column c = field.getAnnotation(Column.class); - tenantIdColumnName = c == null ? tenantIdFieldName : c.name(); + tenantIdColumnName = this.safeMapToColumnName(tenantIdFieldName); } } @@ -217,31 +221,6 @@ public abstract class BaseService implements IBaseService { return false; } - /** - * 基于主键Id删除数据。如果包含逻辑删除字段,则进行逻辑删除。 - * - * @param id 主键Id值。 - * @return true删除成功,false数据不存在。 - */ - @Transactional(rollbackFor = Exception.class) - @Override - public boolean removeById(K id) { - if (this.deletedFlagFieldName == null) { - return mapper().deleteByPrimaryKey(id) == 1; - } - try { - Example e = new Example(modelClass); - Example.Criteria c = e.createCriteria().andEqualTo(idFieldName, id); - c.andEqualTo(deletedFlagFieldName, GlobalDeletedFlag.NORMAL); - M data = modelClass.newInstance(); - setDeletedFlagMethod.invoke(data, GlobalDeletedFlag.DELETED); - return mapper().updateByExampleSelective(data, e) == 1; - } catch (Exception ex) { - log.error("Failed to call reflection method in BaseService.removeById.", ex); - throw new MyRuntimeException(ex); - } - } - /** * 根据过滤条件删除数据。 * @@ -251,25 +230,7 @@ public abstract class BaseService implements IBaseService { @Transactional(rollbackFor = Exception.class) @Override public Integer removeBy(M filter) { - if (deletedFlagFieldName == null) { - return mapper().delete(filter); - } - Example e = new Example(modelClass); - Example.Criteria c = e.createCriteria(); - Field[] fields = ReflectUtil.getFields(modelClass); - for (Field field : fields) { - if (field.getAnnotation(Transient.class) == null) { - this.assembleCriteriaByFilter(filter, field, c); - } - } - try { - M deletedObject = modelClass.newInstance(); - this.setDeletedFlagMethod.invoke(deletedObject, GlobalDeletedFlag.DELETED); - return mapper().updateByExampleSelective(deletedObject, e); - } catch (Exception ex) { - log.error("Failed to call reflection method in BaseService.removeBy.", ex); - throw new MyRuntimeException(ex); - } + return mapper().delete(new QueryWrapper<>(filter)); } /** @@ -297,27 +258,8 @@ public abstract class BaseService implements IBaseService { if (fieldName.equals(this.idFieldName)) { return this.existId((K) fieldValue); } - Example e = new Example(modelClass); - e.createCriteria().andEqualTo(fieldName, fieldValue); - return mapper().selectCountByExample(e) == 1; - } - - /** - * 获取主键Id关联的数据。 - * - * @param id 主键Id - * @return 主键关联的数据,不存在返回null。 - */ - @Override - public M getById(K id) { - if (deletedFlagFieldName == null) { - return mapper().selectByPrimaryKey(id); - } - Example e = new Example(modelClass); - e.createCriteria() - .andEqualTo(idFieldName, id) - .andEqualTo(deletedFlagFieldName, GlobalDeletedFlag.NORMAL); - return mapper().selectOneByExample(e); + String columnName = MyModelUtil.mapToColumnName(fieldName, modelClass); + return mapper().selectCount(new QueryWrapper().eq(columnName, fieldValue)) == 1; } /** @@ -333,12 +275,9 @@ public abstract class BaseService implements IBaseService { if (filterField.equals(idFieldName)) { return this.getById((K) filterValue); } - Example e = new Example(modelClass); - Example.Criteria c = e.createCriteria().andEqualTo(filterField, filterValue); - if (deletedFlagFieldName != null) { - c.andEqualTo(deletedFlagFieldName, GlobalDeletedFlag.NORMAL); - } - return mapper().selectOneByExample(e); + String columnName = this.safeMapToColumnName(filterField); + QueryWrapper queryWrapper = new QueryWrapper().eq(columnName, filterValue); + return mapper().selectOne(queryWrapper); } /** @@ -363,12 +302,7 @@ public abstract class BaseService implements IBaseService { */ @Override public List getAllList() { - if (deletedFlagFieldName == null) { - return mapper().selectAll(); - } - Example e = new Example(modelClass); - e.createCriteria().andEqualTo(deletedFlagFieldName, GlobalDeletedFlag.NORMAL); - return mapper().selectByExample(e); + return mapper().selectList(Wrappers.emptyWrapper()); } /** @@ -379,14 +313,11 @@ public abstract class BaseService implements IBaseService { */ @Override public List getAllListByOrder(String... orderByProperties) { - Example e = new Example(modelClass); - for (String orderByProperty : orderByProperties) { - e.orderBy(orderByProperty); + String[] columns = new String[orderByProperties.length]; + for (int i = 0; i < orderByProperties.length; i++) { + columns[i] = this.safeMapToColumnName(orderByProperties[i]); } - if (deletedFlagFieldName != null) { - e.and().andEqualTo(deletedFlagFieldName, GlobalDeletedFlag.NORMAL); - } - return mapper().selectByExample(e); + return mapper().selectList(new QueryWrapper().orderByAsc(columns)); } /** @@ -415,8 +346,8 @@ public abstract class BaseService implements IBaseService { if (CollectionUtils.isEmpty(inFilterValues)) { return true; } - Example e = this.makeDefaultInListExample(inFilterField, inFilterValues, null); - return mapper().selectCountByExample(e) == inFilterValues.size(); + String column = this.safeMapToColumnName(inFilterField); + return mapper().selectCount(new QueryWrapper().in(column, inFilterValues)) == inFilterValues.size(); } /** @@ -455,8 +386,12 @@ public abstract class BaseService implements IBaseService { if (CollectionUtils.isEmpty(inFilterValues)) { return new LinkedList<>(); } - Example e = this.makeDefaultInListExample(inFilterField, inFilterValues, orderBy); - return mapper().selectByExample(e); + String column = this.safeMapToColumnName(inFilterField); + QueryWrapper queryWrapper = new QueryWrapper().in(column, inFilterValues); + if (StringUtils.isNotBlank(orderBy)) { + queryWrapper.last(orderBy); + } + return mapper().selectList(queryWrapper); } /** @@ -467,16 +402,7 @@ public abstract class BaseService implements IBaseService { */ @Override public int getCountByFilter(M filter) { - if (deletedFlagFieldName == null) { - return mapper().selectCount(filter); - } - try { - setDeletedFlagMethod.invoke(filter, GlobalDeletedFlag.NORMAL); - return mapper().selectCount(filter); - } catch (Exception e) { - log.error("Failed to call reflection [setDeletedFlagMethod] in BaseService.getCountByFilter.", e); - throw new MyRuntimeException(e); - } + return mapper().selectCount(new QueryWrapper<>(filter)); } /** @@ -498,42 +424,7 @@ public abstract class BaseService implements IBaseService { */ @Override public List getListByFilter(M filter) { - if (filter == null) { - return this.getAllList(); - } - if (deletedFlagFieldName == null) { - return mapper().select(filter); - } - try { - setDeletedFlagMethod.invoke(filter, GlobalDeletedFlag.NORMAL); - return mapper().select(filter); - } catch (Exception ex) { - log.error("Failed to call reflection code of BaseService.getListByFilter.", ex); - throw new MyRuntimeException(ex); - } - } - - private void assembleCriteriaByFilter(M filter, Field field, Example.Criteria c) { - int modifiers = field.getModifiers(); - // transient类型的字段不能作为查询条件 - int transientMask = 128; - if ((modifiers & transientMask) != 0 || Modifier.isStatic(modifiers)) { - return; - } - if (field.getName().equals(deletedFlagFieldName)) { - c.andEqualTo(deletedFlagFieldName, GlobalDeletedFlag.NORMAL); - } else { - ReflectUtil.setAccessible(field); - try { - Object o = field.get(filter); - if (o != null) { - c.andEqualTo(field.getName(), field.get(filter)); - } - } catch (IllegalAccessException ex) { - log.error("Failed to call reflection code of BaseService.getListByFilter.", ex); - throw new MyRuntimeException(ex); - } - } + return mapper().selectList(new QueryWrapper<>(filter)); } /** @@ -545,17 +436,14 @@ public abstract class BaseService implements IBaseService { */ @Override public List getListByParentId(String parentIdFieldName, K parentId) { - Example e = new Example(modelClass); - Example.Criteria c = e.createCriteria(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + String parentIdColumn = this.safeMapToColumnName(parentIdFieldName); if (parentId != null) { - c.andEqualTo(parentIdFieldName, parentId); + queryWrapper.eq(parentIdColumn, parentId); } else { - c.andIsNull(parentIdFieldName); + queryWrapper.isNull(parentIdColumn); } - if (deletedFlagFieldName != null) { - c.andEqualTo(deletedFlagFieldName, GlobalDeletedFlag.NORMAL); - } - return mapper().selectByExample(e); + return mapper().selectList(queryWrapper); } /** @@ -585,32 +473,21 @@ public abstract class BaseService implements IBaseService { */ @Override public List getListByCondition(List selectList, M filter, String whereClause, String orderBy) { - Example e = new Example(modelClass); - Example.Criteria c = null; + QueryWrapper queryWrapper = new QueryWrapper<>(filter); if (CollectionUtils.isNotEmpty(selectList)) { - String[] selectFields = new String[selectList.size()]; - selectList.toArray(selectFields); - e.selectProperties(selectFields); - } - if (StringUtils.isNotBlank(orderBy)) { - e.setOrderByClause(orderBy); - } - if (filter != null) { - c = e.createCriteria(); - Field[] fields = ReflectUtil.getFields(modelClass); - for (Field field : fields) { - if (field.getAnnotation(Transient.class) == null) { - this.assembleCriteriaByFilter(filter, field, c); - } + String[] columns = new String[selectList.size()]; + for (int i = 0; i < selectList.size(); i++) { + columns[i] = this.safeMapToColumnName(selectList.get(i)); } + queryWrapper.select(columns); } if (StringUtils.isNotBlank(whereClause)) { - if (c == null) { - c = e.createCriteria(); - } - c.andCondition(whereClause); + queryWrapper.apply(whereClause); } - return mapper().selectByExample(e); + if (StringUtils.isNotBlank(orderBy)) { + queryWrapper.last(" ORDER BY " + orderBy); + } + return mapper().selectList(queryWrapper); } /** @@ -909,9 +786,10 @@ public abstract class BaseService implements IBaseService { continue; } Object masterIdValue = ReflectUtil.getFieldValue(dataObject, relationStruct.masterIdField); - Example e = new Example(relationStruct.relationManyToMany.relationModelClass()); - e.createCriteria().andEqualTo(relationStruct.masterIdField.getName(), masterIdValue); - List manyToManyList = relationStruct.manyToManyMapper.selectByExample(e); + String masterIdColumn = this.safeMapToColumnName(relationStruct.masterIdField.getName()); + Map filterMap = new HashMap<>(1); + filterMap.put(masterIdColumn, masterIdValue); + List manyToManyList = relationStruct.manyToManyMapper.selectByMap(filterMap); ReflectUtil.setFieldValue(dataObject, relationStruct.relationField, manyToManyList); } } @@ -1302,7 +1180,7 @@ public abstract class BaseService implements IBaseService { if (CollectionUtils.isEmpty(masterIdSet)) { continue; } - BaseService relationService = relationStruct.localService; + BaseService relationService = relationStruct.localService; List relationList = relationService.getInList(relationStruct.relationOneToOne.slaveIdField(), masterIdSet); MyModelUtil.makeOneToOneRelation( @@ -1311,8 +1189,8 @@ public abstract class BaseService implements IBaseService { if (withDict && relationStruct.relationOneToOne.loadSlaveDict() && CollectionUtils.isNotEmpty(relationList)) { @SuppressWarnings("unchecked") - BaseService proxyTarget = - (BaseService) AopTargetUtil.getTarget(relationService); + BaseService proxyTarget = + (BaseService) AopTargetUtil.getTarget(relationService); // 关联常量字典 proxyTarget.buildConstDictForDataList(relationList, ignoreFields); // 关联本地字典。 @@ -1341,14 +1219,14 @@ public abstract class BaseService implements IBaseService { } Object id = ReflectUtil.getFieldValue(dataObject, relationStruct.masterIdField); if (id != null) { - BaseService relationService = relationStruct.localService; + BaseService relationService = relationStruct.localService; Object relationObject = relationService.getOne(relationStruct.relationOneToOne.slaveIdField(), id); ReflectUtil.setFieldValue(dataObject, relationStruct.relationField, relationObject); // 仅仅当需要加载从表字典关联时,才去加载。 if (withDict && relationStruct.relationOneToOne.loadSlaveDict() && relationObject != null) { @SuppressWarnings("unchecked") - BaseService proxyTarget = - (BaseService) AopTargetUtil.getTarget(relationService); + BaseService proxyTarget = + (BaseService) AopTargetUtil.getTarget(relationService); // 关联常量字典 proxyTarget.buildConstDictForData(relationObject, ignoreFields); // 关联本地字典。 @@ -1380,7 +1258,7 @@ public abstract class BaseService implements IBaseService { .collect(toSet()); // 从主表集合中,抽取主表关联字段的集合,再以in list形式去从表中查询。 if (CollectionUtils.isNotEmpty(masterIdSet)) { - BaseService relationService = relationStruct.localService; + BaseService relationService = relationStruct.localService; List relationList = relationService.getInList(relationStruct.relationOneToMany.slaveIdField(), masterIdSet); MyModelUtil.makeOneToManyRelation( @@ -1405,7 +1283,7 @@ public abstract class BaseService implements IBaseService { } Object id = ReflectUtil.getFieldValue(dataObject, relationStruct.masterIdField); if (id != null) { - BaseService relationService = relationStruct.localService; + BaseService relationService = relationStruct.localService; Set masterIdSet = new HashSet<>(1); masterIdSet.add(id); List relationObject = relationService.getInList( @@ -1780,32 +1658,97 @@ public abstract class BaseService implements IBaseService { } /** - * 通过(In-list)条件和orderBy条件,构建Example对象,以供后续的查询操作使用。 + * 因为Mybatis Plus中QueryWrapper的条件方法都要求传入数据表字段名,因此提供该函数将 + * Java实体对象的字段名转换为数据表字段名,如果不存在会抛出异常。 + * 另外在MyModelUtil.mapToColumnName有一级缓存,对于查询过的对象字段都会放到缓存中, + * 下次映射转换的时候,会直接从缓存获取。 * - * @param inFilterField 参与(In-list)过滤的Java字段。 - * @param inFilterValues 参与(In-list)过滤的字段值集合。 - * @param orderBy 排序字段。 - * @param in 属性字段的类型。 - * @return 构建后的Example对象。 + * @param fieldName Java实体对象的字段名。 + * @return 对应的数据表字段名。 */ - protected Example makeDefaultInListExample(String inFilterField, Collection inFilterValues, String orderBy) { - Set inFilterValueSet; - Example e = new Example(modelClass); - if (StringUtils.isNotBlank(orderBy)) { - e.setOrderByClause(orderBy); + protected String safeMapToColumnName(String fieldName) { + String columnName = MyModelUtil.mapToColumnName(fieldName, modelClass); + if (columnName == null) { + throw new InvalidDataFieldException(modelClass.getSimpleName(), fieldName); } - if (inFilterValues instanceof Set) { - inFilterValueSet = (Set) inFilterValues; - } else { - inFilterValueSet = new HashSet<>(inFilterValues.size()); - inFilterValueSet.addAll(inFilterValues); + return columnName; + } + + /** + * 因为Mybatis Plus在update的时候,不能将实体对象中值为null的字段,更新为null, + * 而且忽略更新,在全部更新场景下,这个是非常重要的,所以我们写了这个函数绕开这一问题。 + * 该函数会遍历实体对象中,所有不包含@Transient注解,没有transient修饰符的字段,如果 + * 当前对象的该字段值为null,则会调用UpdateWrapper的set方法,将该字段赋值为null。 + * 相比于其他重载方法,该方法会将参数中的主键id,设置到UpdateWrapper的过滤条件中。 + * + * @param o 实体对象。 + * @param id 实体对象的主键值。 + * @return 创建后的UpdateWrapper。 + */ + protected UpdateWrapper createUpdateQueryForNullValue(M o, K id) { + UpdateWrapper uw = createUpdateQueryForNullValue(o, modelClass); + try { + M filter = modelClass.newInstance(); + this.setIdFieldMethod.invoke(filter, id); + uw.setEntity(filter); + } catch (Exception e) { + log.error("Failed to call reflection code of BaseService.createUpdateQueryForNullValue.", e); + throw new MyRuntimeException(e); } - Example.Criteria c = e.createCriteria(); - c.andIn(inFilterField, inFilterValueSet); - if (deletedFlagFieldName != null) { - c.andEqualTo(deletedFlagFieldName, GlobalDeletedFlag.NORMAL); + return uw; + } + + /** + * 因为Mybatis Plus在update的时候,不能将实体对象中值为null的字段,更新为null, + * 而且忽略更新,在全部更新场景下,这个是非常重要的,所以我们写了这个函数绕开这一问题。 + * 该函数会遍历实体对象中,所有不包含@Transient注解,没有transient修饰符的字段,如果 + * 当前对象的该字段值为null,则会调用UpdateWrapper的set方法,将该字段赋值为null。 + * + * @param o 实体对象。 + * @return 创建后的UpdateWrapper。 + */ + protected UpdateWrapper createUpdateQueryForNullValue(M o) { + return createUpdateQueryForNullValue(o, modelClass); + } + + /** + * 因为Mybatis Plus在update的时候,不能将实体对象中值为null的字段,更新为null, + * 而且忽略更新,在全部更新场景下,这个是非常重要的,所以我们写了这个函数绕开这一问题。 + * 该函数会遍历实体对象中,所有不包含@Transient注解,没有transient修饰符的字段,如果 + * 当前对象的该字段值为null,则会调用UpdateWrapper的set方法,将该字段赋值为null。 + * + * @param o 实体对象。 + * @param clazz 实体对象的class。 + * @return 创建后的UpdateWrapper。 + */ + public static UpdateWrapper createUpdateQueryForNullValue(T o, Class clazz) { + UpdateWrapper uw = new UpdateWrapper<>(); + Field[] fields = ReflectUtil.getFields(clazz); + List nullColumnList = new LinkedList<>(); + for (Field field : fields) { + TableField tableField = field.getAnnotation(TableField.class); + if (tableField == null || tableField.exist()) { + int modifiers = field.getModifiers(); + // transient类型的字段不能作为查询条件,静态字段和逻辑删除都不考虑。 + int transientMask = 128; + if ((modifiers & transientMask) == 1 + || Modifier.isStatic(modifiers) + || field.getAnnotation(TableLogic.class) != null) { + continue; + } + // 仅当实体对象参数中,当前字段值为null的时候,才会赋值给UpdateWrapper。 + // 以便在后续的更新中,可以将这些null字段的值设置到数据库表对应的字段中。 + if (ReflectUtil.getFieldValue(o, field) == null) { + nullColumnList.add(MyModelUtil.safeMapToColumnName(field.getName(), clazz)); + } + } } - return e; + if (CollectionUtils.isNotEmpty(nullColumnList)) { + for (String nullColumn : nullColumnList) { + uw.set(nullColumn, null); + } + } + return uw; } @SuppressWarnings("unchecked") @@ -1895,7 +1838,7 @@ public abstract class BaseService implements IBaseService { relationStruct.localService = ApplicationContextHolder.getBean( StringUtils.uncapitalize(relationOneToOne.slaveServiceName())); } else { - relationStruct.localService = (BaseService) + relationStruct.localService = (BaseService) ApplicationContextHolder.getBean(relationOneToOne.slaveServiceClass()); } localRelationOneToOneStructList.add(relationStruct); @@ -1911,7 +1854,7 @@ public abstract class BaseService implements IBaseService { relationStruct.localService = ApplicationContextHolder.getBean( StringUtils.uncapitalize(relationOneToMany.slaveServiceName())); } else { - relationStruct.localService = (BaseService) + relationStruct.localService = (BaseService) ApplicationContextHolder.getBean(relationOneToMany.slaveServiceClass()); } localRelationOneToManyStructList.add(relationStruct); @@ -1958,7 +1901,7 @@ public abstract class BaseService implements IBaseService { relationStruct.localService = ApplicationContextHolder.getBean(StringUtils.uncapitalize(relationDict.slaveServiceName())); } else { - relationStruct.localService = (BaseService) + relationStruct.localService = (BaseService) ApplicationContextHolder.getBean(relationDict.slaveServiceClass()); } localRelationDictStructList.add(relationStruct); @@ -1980,7 +1923,7 @@ public abstract class BaseService implements IBaseService { relationStruct.localService = ApplicationContextHolder.getBean( StringUtils.uncapitalize(relationOneToManyAggregation.slaveServiceName())); } else { - relationStruct.localService = (BaseService) + relationStruct.localService = (BaseService) ApplicationContextHolder.getBean(relationOneToManyAggregation.slaveServiceClass()); } localRelationOneToManyAggrStructList.add(relationStruct); @@ -1999,7 +1942,7 @@ public abstract class BaseService implements IBaseService { relationStruct.localService = ApplicationContextHolder.getBean( StringUtils.uncapitalize(relationManyToManyAggregation.slaveServiceName())); } else { - relationStruct.localService = (BaseService) + relationStruct.localService = (BaseService) ApplicationContextHolder.getBean(relationManyToManyAggregation.slaveServiceClass()); } localRelationManyToManyAggrStructList.add(relationStruct); @@ -2392,7 +2335,7 @@ public abstract class BaseService implements IBaseService { static class LocalRelationStruct extends RelationStruct { private Field equalOneToOneRelationField; - private BaseService localService; + private BaseService localService; private BaseDaoMapper manyToManyMapper; private Map dictMap; private RelationDict relationDict; diff --git a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/base/service/IBaseDictService.java b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/base/service/IBaseDictService.java index 86347ea8..40d241dd 100644 --- a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/base/service/IBaseDictService.java +++ b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/base/service/IBaseDictService.java @@ -1,5 +1,6 @@ package com.orange.demo.common.core.base.service; +import java.io.Serializable; import java.util.List; /** @@ -10,7 +11,7 @@ import java.util.List; * @author Jerry * @date 2020-08-08 */ -public interface IBaseDictService extends IBaseService { +public interface IBaseDictService extends IBaseService { /** * 重新加载数据库中所有当前表数据到系统内存。 diff --git a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/base/service/IBaseService.java b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/base/service/IBaseService.java index e0096019..a013a193 100644 --- a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/base/service/IBaseService.java +++ b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/base/service/IBaseService.java @@ -1,7 +1,9 @@ package com.orange.demo.common.core.base.service; +import com.baomidou.mybatisplus.extension.service.IService; import com.orange.demo.common.core.object.MyRelationParam; +import java.io.Serializable; import java.util.*; /** @@ -12,15 +14,7 @@ import java.util.*; * @author Jerry * @date 2020-08-08 */ -public interface IBaseService { - - /** - * 基于主键Id删除数据。如果包含逻辑删除字段,则进行逻辑删除。 - * - * @param id 主键Id值。 - * @return true删除成功,false数据不存在。 - */ - boolean removeById(K id); +public interface IBaseService extends IService{ /** * 根据过滤条件删除数据。 @@ -48,14 +42,6 @@ public interface IBaseService { */ boolean existId(K id); - /** - * 获取主键Id关联的数据。 - * - * @param id 主键Id。 - * @return 主键关联的数据,不存在返回null。 - */ - M getById(K id); - /** * 返回符合 filterField = filterValue 条件的一条数据。 * diff --git a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/config/DataSourceContextHolder.java b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/config/DataSourceContextHolder.java index d4b41558..3e0d13d0 100644 --- a/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/config/DataSourceContextHolder.java +++ b/orange-demo-multi-service/common/common-core/src/main/java/com/orange/demo/common/core/config/DataSourceContextHolder.java @@ -11,15 +11,20 @@ public class DataSourceContextHolder { private static final ThreadLocal CONTEXT_HOLDER = new ThreadLocal<>(); /** - * 设置数据源类型 + * 设置数据源类型。 + * * @param type 数据源类型 + * @return 原有数据源类型,如果第一次设置则返回null。 */ - public static void setDataSourceType(Integer type) { + public static Integer setDataSourceType(Integer type) { + Integer datasourceType = CONTEXT_HOLDER.get(); CONTEXT_HOLDER.set(type); + return datasourceType; } /** * 获取当前数据库操作执行线程的数据源类型,同时由动态数据源的路由函数调用。 + * * @return 数据源类型。 */ public static Integer getDataSourceType() { @@ -27,10 +32,16 @@ public class DataSourceContextHolder { } /** - * 清除线程本地变量,以免内存泄漏 + * 清除线程本地变量,以免内存泄漏。 + + * @param originalType 原有的数据源类型,如果该值为null,则情况本地化变量。 */ - public static void clear() { - CONTEXT_HOLDER.remove(); + public static void unset(Integer originalType) { + if (originalType == null) { + CONTEXT_HOLDER.remove(); + } else { + CONTEXT_HOLDER.set(originalType); + } } /** 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 47a61b66..db4b4aa8 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 @@ -34,11 +34,11 @@ public final class AggregationType { private static final Map DICT_MAP = new HashMap<>(5); static { - DICT_MAP.put(0, "累计总和"); - DICT_MAP.put(1, "数量总和"); - DICT_MAP.put(2, "平均值"); - DICT_MAP.put(3, "最小值"); - DICT_MAP.put(4, "最大值"); + DICT_MAP.put(SUM, "累计总和"); + DICT_MAP.put(COUNT, "数量总和"); + DICT_MAP.put(AVG, "平均值"); + DICT_MAP.put(MIN, "最小值"); + DICT_MAP.put(MAX, "最大值"); } /** 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 6240c075..2c303df7 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 @@ -6,8 +6,10 @@ import com.orange.demo.common.core.exception.InvalidClassFieldException; import com.orange.demo.common.core.exception.InvalidDataFieldException; import com.orange.demo.common.core.exception.InvalidDataModelException; import com.orange.demo.common.core.util.MyModelUtil; +import lombok.AllArgsConstructor; import lombok.Data; import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; @@ -227,6 +229,8 @@ public class MyOrderParam extends ArrayList { /** * 排序信息对象。 */ + @AllArgsConstructor + @NoArgsConstructor @Data public static class OrderInfo { /** 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 dd7497e3..834a74c8 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 @@ -10,6 +10,7 @@ import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import java.util.Collection; +import java.util.Date; import java.util.List; /** @@ -21,7 +22,6 @@ import java.util.List; @Slf4j @Data @NoArgsConstructor -@AllArgsConstructor public class MyWhereCriteria { /** @@ -80,11 +80,26 @@ public class MyWhereCriteria { @JSONField(serialize = false) private Class modelClazz; + /** + * 数据库表名。 + */ + private String tableName; + /** * Java属性名称。 */ private String fieldName; + /** + * 数据表字段名。 + */ + private String columnName; + + /** + * 数据表字段类型。 + */ + private Integer columnType; + /** * 操作符类型,取值范围见上面的常量值。 */ @@ -95,6 +110,13 @@ public class MyWhereCriteria { */ private Object value; + public MyWhereCriteria(Class modelClazz, String fieldName, Integer operatorType, Object value) { + this.modelClazz = modelClazz; + this.fieldName = fieldName; + this.operatorType = operatorType; + this.value = value; + } + /** * 设置条件值。 * @@ -127,6 +149,29 @@ public class MyWhereCriteria { return doVerify(); } + /** + * 设置条件值,通过该构造方法设置时,通常是直接将表名、字段名、字段类型等赋值,无需在通过modelClazz进行推演。 + * + * @param tableName 数据表名。 + * @param columnName 数据字段名。 + * @param columnType 数据字段类型。 + * @param operatorType 操作类型。具体值可参考当前对象的静态变量。 + * @param value 条件过滤值。 + */ + public void setCriteria( + String tableName, String columnName, String columnType, Integer operatorType, Object value) { + this.tableName = tableName; + this.columnName = columnName; + this.columnType = MyModelUtil.NUMERIC_FIELD_TYPE; + if (String.class.getSimpleName().equals(columnType)) { + this.columnType = MyModelUtil.STRING_FIELD_TYPE; + } else if (Date.class.getSimpleName().equals(columnType)) { + this.columnType = MyModelUtil.DATE_FIELD_TYPE; + } + this.operatorType = operatorType; + this.value = value; + } + /** * 在执行该函数之前,该对象的所有数据均已经赋值完毕。 * 该函数主要验证操作符字段和条件值字段对应关系的合法性。 @@ -182,13 +227,13 @@ public class MyWhereCriteria { case OPERATOR_NOT_EQUAL: return " != "; case OPERATOR_GE: - return " >= "; + return " >= "; case OPERATOR_GT: - return " > "; + return " > "; case OPERATOR_LE: - return " <= "; + return " <= "; case OPERATOR_LT: - return " < "; + return " < "; case OPERATOR_LIKE: return " LIKE "; case OPERATOR_NOT_NULL: @@ -222,18 +267,26 @@ public class MyWhereCriteria { * @return 组装后的SQL条件从句。 */ public String makeCriteriaString(Class modelClazz) { - if (modelClazz == null) { - throw new IllegalArgumentException("ModelClazz argument can't be NULL."); + String tableName; + String columnName; + Integer columnType; + if (modelClazz != null) { + Tuple2 fieldInfo = MyModelUtil.mapToColumnInfo(fieldName, modelClazz); + if (fieldInfo == null) { + throw new InvalidDataFieldException(modelClazz.getSimpleName(), fieldName); + } + columnName = fieldInfo.getFirst(); + columnType = fieldInfo.getSecond(); + tableName = MyModelUtil.mapToTableName(modelClazz); + if (tableName == null) { + throw new InvalidDataModelException(modelClazz.getSimpleName()); + } + } else { + tableName = this.tableName; + columnName = this.columnName; + columnType = this.columnType; } - Tuple2 fieldInfo = MyModelUtil.mapToColumnInfo(fieldName, modelClazz); - if (fieldInfo == null) { - throw new InvalidDataFieldException(modelClazz.getSimpleName(), fieldName); - } - String tableName = MyModelUtil.mapToTableName(modelClazz); - if (tableName == null) { - throw new InvalidDataModelException(modelClazz.getSimpleName()); - } - return this.buildClauseString(tableName, fieldInfo.getFirst(), fieldInfo.getSecond()); + return this.buildClauseString(tableName, columnName, columnType); } /** 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 8aafa5d0..7b1aa53b 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 @@ -135,7 +135,7 @@ public class ResponseResult { } /** - * 根据参数的errorCode和errorMessage创建新的错误应答对象。 + * 根据参数中出错的ResponseResult,创建新的错误应答对象。 * * @param errorCause 导致错误原因的应答对象。 * @return 返回创建的ResponseResult实例对象。 @@ -144,6 +144,16 @@ public class ResponseResult { return error(errorCause.errorCode, errorCause.getErrorMessage()); } + /** + * 根据参数中出错的CallResult,创建新的错误应答对象。 + * + * @param errorCause 导致错误原因的应答对象。 + * @return 返回创建的ResponseResult实例对象。 + */ + public static ResponseResult errorFrom(CallResult errorCause) { + return error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorCause.getErrorMessage()); + } + /** * 是否成功。 * 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 afe98da8..f89b3208 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 @@ -63,6 +63,10 @@ public class TokenData { * 仅当系统支持uaa时可用,否则可以直接忽略该字段。保留该字段是为了保持单体和微服务通用代码部分的兼容性。 */ private String uaaAccessToken; + /** + * 数据库路由键(仅当水平分库时使用)。 + */ + private Integer datasourceRouteKey; /** * 登录IP。 */ 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 5f5cd053..8133a454 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 @@ -2,22 +2,19 @@ package com.orange.demo.common.core.util; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.util.ReflectUtil; +import com.baomidou.mybatisplus.annotation.*; import com.orange.demo.common.core.exception.InvalidDataFieldException; import com.orange.demo.common.core.annotation.*; import com.orange.demo.common.core.exception.MyRuntimeException; import com.orange.demo.common.core.object.TokenData; import com.orange.demo.common.core.object.Tuple2; import com.orange.demo.common.core.upload.UploadStoreInfo; +import com.google.common.base.CaseFormat; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.MapUtils; import org.apache.commons.lang3.StringUtils; -import tk.mybatis.mapper.entity.Example; -import javax.persistence.Column; -import javax.persistence.Table; -import javax.persistence.Transient; -import java.lang.reflect.Modifier; import java.lang.reflect.Field; import java.util.*; import java.util.concurrent.ConcurrentHashMap; @@ -66,6 +63,24 @@ public class MyModelUtil { */ private static final Map> CACHED_COLUMNINFO_MAP = new ConcurrentHashMap<>(); + /** + * 将bean的数据列表转换为Map列表。 + * + * @param dataList bean数据列表。 + * @param bean对象类型。 + * @return 转换后的Map列表。 + */ + public static List> beanToMapList(List dataList) { + if (CollectionUtils.isEmpty(dataList)) { + return null; + } + List> resultList = new LinkedList<>(); + for (T data : dataList) { + resultList.add(BeanUtil.beanToMap(data)); + } + return resultList; + } + /** * 拷贝源类型的集合数据到目标类型的集合中,其中源类型和目标类型中的对象字段类型完全相同。 * NOTE: 该函数主要应用于框架中,Dto和Model之间的copy,特别针对一对一关联的深度copy。 @@ -189,8 +204,20 @@ public class MyModelUtil { if (field == null) { return null; } - Column c = field.getAnnotation(Column.class); - String columnName = c == null ? fieldName : c.name(); + TableField c = field.getAnnotation(TableField.class); + String columnName = null; + if (c == null) { + TableId id = field.getAnnotation(TableId.class); + if (id != null) { + columnName = id.value(); + } + } + if (columnName == null) { + columnName = c == null ? CaseFormat.LOWER_CAMEL.to(CaseFormat.LOWER_UNDERSCORE, fieldName) : c.value(); + if (StringUtils.isBlank(columnName)) { + columnName = CaseFormat.LOWER_CAMEL.to(CaseFormat.LOWER_UNDERSCORE, fieldName); + } + } // 这里缺省情况下都是按照整型去处理,因为他覆盖太多的类型了。 // 如Integer/Long/Double/BigDecimal,可根据实际情况完善和扩充。 String typeName = field.getType().getSimpleName(); @@ -213,8 +240,8 @@ public class MyModelUtil { * @return Model对象对应的数据表名称。 */ public static String mapToTableName(Class modelClazz) { - Table t = modelClazz.getAnnotation(Table.class); - return t == null ? null : t.name(); + TableName t = modelClazz.getAnnotation(TableName.class); + return t == null ? null : t.value(); } /** @@ -587,43 +614,6 @@ public class MyModelUtil { return isMap ? BeanUtil.beanToMap(model) : model; } - /** - * 转换过滤对象到与其等效的Example对象。 - * - * @param filterModel 过滤对象。 - * @param modelClass 过滤对象的Class对象。 - * @param 过滤对象类型。 - * @return 转换后的Example对象。 - */ - public static Example convertFilterModelToExample(T filterModel, Class modelClass) { - if (filterModel == null) { - return null; - } - Example e = new Example(modelClass); - Example.Criteria c = e.createCriteria(); - Field[] fields = ReflectUtil.getFields(modelClass); - for (Field field : fields) { - if (field.getAnnotation(Transient.class) == null) { - int modifiers = field.getModifiers(); - // transient类型的字段不能作为查询条件 - if ((modifiers & 128) != 0 || Modifier.isStatic(modifiers)) { - continue; - } - ReflectUtil.setAccessible(field); - try { - Object o = field.get(filterModel); - if (o != null) { - c.andEqualTo(field.getName(), field.get(filterModel)); - } - } catch (IllegalAccessException ex) { - log.error("Failed to call reflection code.", ex); - throw new MyRuntimeException(ex); - } - } - } - return e; - } - /** * 获取上传字段的存储信息。 * diff --git a/orange-demo-multi-service/common/common-redis/common-redis.iml b/orange-demo-multi-service/common/common-redis/common-redis.iml index bdf111e4..b4460236 100644 --- a/orange-demo-multi-service/common/common-redis/common-redis.iml +++ b/orange-demo-multi-service/common/common-redis/common-redis.iml @@ -31,7 +31,6 @@ - @@ -65,23 +64,20 @@ - + + + + + - - - - - - - - - + + @@ -115,8 +111,6 @@ - - @@ -198,6 +192,11 @@ + + + + + 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 e8f80736..0a72e114 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 @@ -39,6 +39,9 @@ public class RedissonConfig { @Value("${redis.redisson.timeout}") private Integer timeout; + @Value("${redis.redisson.password:}") + private String password; + @Value("${redis.redisson.pool.poolSize}") private Integer poolSize; @@ -47,10 +50,14 @@ public class RedissonConfig { @Bean public RedissonClient redissonClient() { + if (StrUtil.isBlank(password)) { + password = null; + } Config config = new Config(); if ("single".equals(mode)) { config.setLockWatchdogTimeout(lockWatchdogTimeout) .useSingleServer() + .setPassword(password) .setAddress(address) .setConnectionPoolSize(poolSize) .setConnectionMinimumIdleSize(minIdle) @@ -59,6 +66,7 @@ public class RedissonConfig { String[] clusterAddresses = StrUtil.splitToArray(address, ','); config.setLockWatchdogTimeout(lockWatchdogTimeout) .useClusterServers() + .setPassword(password) .addNodeAddress(clusterAddresses) .setConnectTimeout(timeout) .setMasterConnectionPoolSize(poolSize); @@ -66,6 +74,7 @@ public class RedissonConfig { String[] sentinelAddresses = StrUtil.splitToArray(address, ','); config.setLockWatchdogTimeout(lockWatchdogTimeout) .useSentinelServers() + .setPassword(password) .setMasterName(masterName) .addSentinelAddress(sentinelAddresses) .setConnectTimeout(timeout) @@ -80,6 +89,7 @@ public class RedissonConfig { ArrayUtil.copy(masterSlaveAddresses, 1, slaveAddresses, 0, slaveAddresses.length); config.setLockWatchdogTimeout(lockWatchdogTimeout) .useMasterSlaveServers() + .setPassword(password) .setMasterAddress(masterSlaveAddresses[0]) .addSlaveAddress(slaveAddresses) .setConnectTimeout(timeout) diff --git a/orange-demo-multi-service/common/common-sequence/common-sequence.iml b/orange-demo-multi-service/common/common-sequence/common-sequence.iml index 6ceeace4..29cdee23 100644 --- a/orange-demo-multi-service/common/common-sequence/common-sequence.iml +++ b/orange-demo-multi-service/common/common-sequence/common-sequence.iml @@ -31,7 +31,6 @@ - @@ -66,23 +65,20 @@ - + + + + + - - - - - - - - - + + @@ -93,8 +89,6 @@ - - @@ -180,6 +174,11 @@ + + + + + diff --git a/orange-demo-multi-service/common/common-swagger/common-swagger.iml b/orange-demo-multi-service/common/common-swagger/common-swagger.iml index db622364..cb11e0ea 100644 --- a/orange-demo-multi-service/common/common-swagger/common-swagger.iml +++ b/orange-demo-multi-service/common/common-swagger/common-swagger.iml @@ -21,23 +21,23 @@ - - - - - + + + + + - - - - - - - - - + + + + + + + + + @@ -48,7 +48,6 @@ - @@ -83,23 +82,20 @@ - + + + + + - - - - - - - - - + + @@ -110,8 +106,6 @@ - - @@ -197,6 +191,11 @@ + + + + + diff --git a/orange-demo-multi-service/common/common-swagger/pom.xml b/orange-demo-multi-service/common/common-swagger/pom.xml index 31da1511..18783ca9 100644 --- a/orange-demo-multi-service/common/common-swagger/pom.xml +++ b/orange-demo-multi-service/common/common-swagger/pom.xml @@ -19,6 +19,16 @@ com.github.xiaoymin knife4j-micro-spring-boot-starter ${knife4j.version} + + + org.springframework.plugin + spring-plugin-core + + + org.springframework.plugin + spring-plugin-metadata + + com.orange.demo diff --git a/orange-demo-multi-service/common/common-swagger/src/main/java/com/orange/demo/common/swagger/config/SwaggerAutoConfiguration.java b/orange-demo-multi-service/common/common-swagger/src/main/java/com/orange/demo/common/swagger/config/SwaggerAutoConfiguration.java index a8771d78..c35b410b 100644 --- a/orange-demo-multi-service/common/common-swagger/src/main/java/com/orange/demo/common/swagger/config/SwaggerAutoConfiguration.java +++ b/orange-demo-multi-service/common/common-swagger/src/main/java/com/orange/demo/common/swagger/config/SwaggerAutoConfiguration.java @@ -11,7 +11,7 @@ import springfox.documentation.builders.RequestHandlerSelectors; import springfox.documentation.service.ApiInfo; import springfox.documentation.spi.DocumentationType; import springfox.documentation.spring.web.plugins.Docket; -import springfox.documentation.swagger2.annotations.EnableSwagger2; +import springfox.documentation.swagger2.annotations.EnableSwagger2WebMvc; /** * 自动加载bean的配置对象。 @@ -19,7 +19,7 @@ import springfox.documentation.swagger2.annotations.EnableSwagger2; * @author Jerry * @date 2020-08-08 */ -@EnableSwagger2 +@EnableSwagger2WebMvc @EnableKnife4j @EnableConfigurationProperties(SwaggerProperties.class) @ConditionalOnProperty(prefix = "swagger", name = "enabled") diff --git a/orange-demo-multi-service/common/common-swagger/src/main/java/com/orange/demo/common/swagger/plugin/ByteBodyUtils.java b/orange-demo-multi-service/common/common-swagger/src/main/java/com/orange/demo/common/swagger/plugin/ByteBuddyUtil.java similarity index 98% rename from orange-demo-multi-service/common/common-swagger/src/main/java/com/orange/demo/common/swagger/plugin/ByteBodyUtils.java rename to orange-demo-multi-service/common/common-swagger/src/main/java/com/orange/demo/common/swagger/plugin/ByteBuddyUtil.java index ddcd8c4d..51f09c0b 100644 --- a/orange-demo-multi-service/common/common-swagger/src/main/java/com/orange/demo/common/swagger/plugin/ByteBodyUtils.java +++ b/orange-demo-multi-service/common/common-swagger/src/main/java/com/orange/demo/common/swagger/plugin/ByteBuddyUtil.java @@ -17,7 +17,7 @@ import java.util.List; * @date 2020-08-08 */ @Slf4j -public class ByteBodyUtils { +public class ByteBuddyUtil { private static final ClassPool CLASS_POOL = ClassPool.getDefault(); public static Class createDynamicModelClass(String name, List parameters) { @@ -36,7 +36,7 @@ public class ByteBodyUtils { for (ResolvedMethodParameter dynamicParameter : parameters) { // 因为在调用这个方法之前,这些参数都包含MyRequestBody注解。 MyRequestBody myRequestBody = - dynamicParameter.findAnnotation(MyRequestBody.class).orNull(); + dynamicParameter.findAnnotation(MyRequestBody.class).orElse(null); Assert.notNull(myRequestBody); String fieldName = dynamicParameter.defaultName().isPresent() ? dynamicParameter.defaultName().get() : "parameter"; diff --git a/orange-demo-multi-service/common/common-swagger/src/main/java/com/orange/demo/common/swagger/plugin/DynamicBodyModelPlugin.java b/orange-demo-multi-service/common/common-swagger/src/main/java/com/orange/demo/common/swagger/plugin/DynamicBodyModelPlugin.java index 2c799684..4349ebcf 100644 --- a/orange-demo-multi-service/common/common-swagger/src/main/java/com/orange/demo/common/swagger/plugin/DynamicBodyModelPlugin.java +++ b/orange-demo-multi-service/common/common-swagger/src/main/java/com/orange/demo/common/swagger/plugin/DynamicBodyModelPlugin.java @@ -47,7 +47,7 @@ public class DynamicBodyModelPlugin implements OperationModelsProviderPlugin { } String groupName = CaseFormat.LOWER_HYPHEN.to(CaseFormat.UPPER_CAMEL, context.getGroupName()); String clazzName = groupName + StringUtils.capitalize(context.getName()); - Class clazz = ByteBodyUtils.createDynamicModelClass(clazzName, bodyParameter); + Class clazz = ByteBuddyUtil.createDynamicModelClass(clazzName, bodyParameter); if (clazz != null) { context.operationModelsBuilder().addInputParam(typeResolver.resolve(clazz)); } diff --git a/orange-demo-multi-service/common/common.iml b/orange-demo-multi-service/common/common.iml index ef8413bc..b9bca3d8 100644 --- a/orange-demo-multi-service/common/common.iml +++ b/orange-demo-multi-service/common/common.iml @@ -17,9 +17,6 @@ - - - @@ -117,6 +114,11 @@ + + + + + diff --git a/orange-demo-multi-service/framework/admin-monitor/admin-monitor.iml b/orange-demo-multi-service/framework/admin-monitor/admin-monitor.iml index 1aeffc20..970cbcc1 100644 --- a/orange-demo-multi-service/framework/admin-monitor/admin-monitor.iml +++ b/orange-demo-multi-service/framework/admin-monitor/admin-monitor.iml @@ -83,9 +83,7 @@ - - @@ -192,6 +190,10 @@ + + + + diff --git a/orange-demo-multi-service/framework/framework.iml b/orange-demo-multi-service/framework/framework.iml index ef8413bc..b9bca3d8 100644 --- a/orange-demo-multi-service/framework/framework.iml +++ b/orange-demo-multi-service/framework/framework.iml @@ -17,9 +17,6 @@ - - - @@ -117,6 +114,11 @@ + + + + + diff --git a/orange-demo-multi-service/pom.xml b/orange-demo-multi-service/pom.xml index 4a242b3e..6dd3d099 100644 --- a/orange-demo-multi-service/pom.xml +++ b/orange-demo-multi-service/pom.xml @@ -40,14 +40,13 @@ 1.2.6 - 2.1.5 - 1.3.7 + 3.4.2 1.3.0 3.15.4 2.0.0 - 2.0.5 - 2.9.2 - 1.5.21 + 2.0.8 + 2.10.5 + 1.5.22 @@ -177,6 +176,17 @@ disruptor ${disruptor.version} + + + org.springframework.plugin + spring-plugin-core + 2.0.0.RELEASE + + + org.springframework.plugin + spring-plugin-metadata + 2.0.0.RELEASE + org.springframework.boot diff --git a/orange-demo-multi-service/zz-resource/config-data/application-dev.yaml b/orange-demo-multi-service/zz-resource/config-data/application-dev.yaml index 1aa74003..7cdc37f4 100644 --- a/orange-demo-multi-service/zz-resource/config-data/application-dev.yaml +++ b/orange-demo-multi-service/zz-resource/config-data/application-dev.yaml @@ -143,6 +143,8 @@ redis: # 单位毫秒。分布式锁的超时检测时长。 # 如果一次锁内操作超该毫秒数,或在释放锁之前异常退出,Redis会在该时长之后主动删除该锁使用的key。 lockWatchdogTimeout: 60000 + # redis 密码,空可以不填。 + password: pool: # 连接池数量。 poolSize: 20 diff --git a/orange-demo-multi-service/zz-resource/config-data/course-class-dev.yaml b/orange-demo-multi-service/zz-resource/config-data/course-class-dev.yaml index 3865f4a3..7d89f7e0 100644 --- a/orange-demo-multi-service/zz-resource/config-data/course-class-dev.yaml +++ b/orange-demo-multi-service/zz-resource/config-data/course-class-dev.yaml @@ -25,15 +25,13 @@ sequence: # zk中生成WorkNode的路径。不同的业务可以使用不同的路径,以免冲突。 zkPath: com/orange/demo -# mybatis的基本配置 -mybatis: - mapperLocations: classpath:com/orange/demo/*/dao/mapper/*Mapper.xml - typeAliasesPackage: com.orange.demo.*.model - -mapper: - mappers: tk.mybatis.mapper.common.Mapper,tk.mybatis.mapper.additional.insert.InsertListMapper - not-empty: false - identity: MYSQL +mybatis-plus: + mapper-locations: classpath:com/orange/demo/*/dao/mapper/*Mapper.xml + type-aliases-package: com.orange.demo.*.model + global-config: + db-config: + logic-delete-value: -1 + logic-not-delete-value: 1 pagehelper: helperDialect: mysql diff --git a/orange-demo-multi-service/zz-resource/config-data/stats-dev.yaml b/orange-demo-multi-service/zz-resource/config-data/stats-dev.yaml index 54eb3f09..3ca5fc93 100644 --- a/orange-demo-multi-service/zz-resource/config-data/stats-dev.yaml +++ b/orange-demo-multi-service/zz-resource/config-data/stats-dev.yaml @@ -25,15 +25,13 @@ sequence: # zk中生成WorkNode的路径。不同的业务可以使用不同的路径,以免冲突。 zkPath: com/orange/demo -# mybatis的基本配置 -mybatis: - mapperLocations: classpath:com/orange/demo/*/dao/mapper/*Mapper.xml - typeAliasesPackage: com.orange.demo.*.model - -mapper: - mappers: tk.mybatis.mapper.common.Mapper,tk.mybatis.mapper.additional.insert.InsertListMapper - not-empty: false - identity: MYSQL +mybatis-plus: + mapper-locations: classpath:com/orange/demo/*/dao/mapper/*Mapper.xml + type-aliases-package: com.orange.demo.*.model + global-config: + db-config: + logic-delete-value: -1 + logic-not-delete-value: 1 pagehelper: helperDialect: mysql diff --git a/orange-demo-multi-service/zz-resource/config-data/upms-dev.yaml b/orange-demo-multi-service/zz-resource/config-data/upms-dev.yaml index 82c5badd..381aa99b 100644 --- a/orange-demo-multi-service/zz-resource/config-data/upms-dev.yaml +++ b/orange-demo-multi-service/zz-resource/config-data/upms-dev.yaml @@ -27,14 +27,13 @@ sequence: # zk中生成WorkNode的路径。不同的业务可以使用不同的路径,以免冲突。 zkPath: com/orange/demo -mybatis: - mapperLocations: classpath:com/orange/demo/*/dao/mapper/*Mapper.xml,com/orange/demo/common/datasync/dao/mapper/*Mapper.xml,com/orange/demo/common/log/dao/mapper/*Mapper.xml - typeAliasesPackage: com.orange.demo.*.model,com.orange.demo.common.datasync.model,com.orange.demo.common.log.model - -mapper: - mappers: tk.mybatis.mapper.common.Mapper,tk.mybatis.mapper.additional.insert.InsertListMapper - not-empty: false - identity: MYSQL +mybatis-plus: + mapper-locations: classpath:com/orange/demo/*/dao/mapper/*Mapper.xml,com/orange/demo/common/datasync/dao/mapper/*Mapper.xml,com/orange/demo/common/log/dao/mapper/*Mapper.xml + type-aliases-package: com.orange.demo.*.model,com.orange.demo.common.datasync.model,com.orange.demo.common.log.model + global-config: + db-config: + logic-delete-value: -1 + logic-not-delete-value: 1 pagehelper: helperDialect: mysql diff --git a/orange-demo-single-service/README.md b/orange-demo-single-service/README.md index 0939c817..20274fd0 100644 --- a/orange-demo-single-service/README.md +++ b/orange-demo-single-service/README.md @@ -1,5 +1,7 @@ ### 服务接口文档 --- +- Knife4j + - 服务启动后,Knife4j的文档入口地址 [http://localhost:8082/doc.html#/plus](http://localhost:8082/doc.html#/plus) - Postman - 无需启动服务,即可将当前工程的接口导出成Postman格式。在工程的common/common-tools/模块下,找到ExportApiApp文件,并执行main函数。 diff --git a/orange-demo-single-service/application-common/pom.xml b/orange-demo-single-service/application-common/pom.xml index 0af5d4c2..a1eb142a 100644 --- a/orange-demo-single-service/application-common/pom.xml +++ b/orange-demo-single-service/application-common/pom.xml @@ -13,12 +13,4 @@ 1.0.0 application-common jar - - - - com.orange.demo - common-core - 1.0.0 - - \ No newline at end of file diff --git a/orange-demo-single-service/application-webadmin/pom.xml b/orange-demo-single-service/application-webadmin/pom.xml index ea160a7f..655599de 100644 --- a/orange-demo-single-service/application-webadmin/pom.xml +++ b/orange-demo-single-service/application-webadmin/pom.xml @@ -30,6 +30,11 @@ application-common 1.0.0 + + com.orange.demo + common-swagger + 1.0.0 + diff --git a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/controller/AreaCodeController.java b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/controller/AreaCodeController.java index 1d33bde5..d693e670 100644 --- a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/controller/AreaCodeController.java +++ b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/controller/AreaCodeController.java @@ -1,5 +1,6 @@ package com.orange.demo.webadmin.app.controller; +import io.swagger.annotations.Api; import cn.jimmyshi.beanquery.BeanQuery; import com.orange.demo.webadmin.app.model.AreaCode; import com.orange.demo.webadmin.app.service.AreaCodeService; @@ -21,6 +22,7 @@ import java.util.*; * @author Jerry * @date 2020-09-24 */ +@Api(tags = "行政区划数据访问接口") @RestController @RequestMapping("/admin/app/areaCode") public class AreaCodeController { diff --git a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/controller/CourseController.java b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/controller/CourseController.java index 9ad19951..139260d1 100644 --- a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/controller/CourseController.java +++ b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/controller/CourseController.java @@ -18,6 +18,8 @@ import com.orange.demo.common.core.annotation.MyRequestBody; import com.orange.demo.common.core.validator.UpdateGroup; import com.orange.demo.common.redis.cache.SessionCacheHelper; import com.orange.demo.webadmin.config.ApplicationConfig; +import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; +import io.swagger.annotations.Api; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @@ -33,6 +35,7 @@ import javax.validation.groups.Default; * @author Jerry * @date 2020-09-24 */ +@Api(tags = "课程数据管理接口") @Slf4j @RestController @RequestMapping("/admin/app/course") @@ -53,6 +56,14 @@ public class CourseController { * @param courseDto 新增对象。 * @return 应答结果对象,包含新增对象主键Id。 */ + @ApiOperationSupport(ignoreParameters = { + "courseDto.courseId", + "courseDto.priceStart", + "courseDto.priceEnd", + "courseDto.classHourStart", + "courseDto.classHourEnd", + "courseDto.createTimeStart", + "courseDto.createTimeEnd"}) @PostMapping("/add") public ResponseResult add(@MyRequestBody CourseDto courseDto) { String errorMessage = MyCommonUtil.getModelValidationError(courseDto); @@ -76,6 +87,13 @@ public class CourseController { * @param courseDto 更新对象。 * @return 应答结果对象。 */ + @ApiOperationSupport(ignoreParameters = { + "courseDto.priceStart", + "courseDto.priceEnd", + "courseDto.classHourStart", + "courseDto.classHourEnd", + "courseDto.createTimeStart", + "courseDto.createTimeEnd"}) @PostMapping("/update") public ResponseResult update(@MyRequestBody CourseDto courseDto) { String errorMessage = MyCommonUtil.getModelValidationError(courseDto, Default.class, UpdateGroup.class); diff --git a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/controller/CourseTransStatsController.java b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/controller/CourseTransStatsController.java index 769acba9..352f61c8 100644 --- a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/controller/CourseTransStatsController.java +++ b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/controller/CourseTransStatsController.java @@ -9,6 +9,7 @@ import com.orange.demo.common.core.object.*; import com.orange.demo.common.core.util.*; import com.orange.demo.common.core.constant.*; import com.orange.demo.common.core.annotation.MyRequestBody; +import io.swagger.annotations.Api; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @@ -21,6 +22,7 @@ import java.util.*; * @author Jerry * @date 2020-09-24 */ +@Api(tags = "课程统计管理接口") @Slf4j @RestController @RequestMapping("/admin/app/courseTransStats") diff --git a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/controller/GradeController.java b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/controller/GradeController.java index 7974b023..4bfa7569 100644 --- a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/controller/GradeController.java +++ b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/controller/GradeController.java @@ -11,6 +11,8 @@ import com.orange.demo.common.core.util.MyCommonUtil; import com.orange.demo.common.core.object.ResponseResult; import com.orange.demo.common.core.annotation.MyRequestBody; import com.orange.demo.common.core.validator.UpdateGroup; +import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; +import io.swagger.annotations.Api; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -25,6 +27,7 @@ import java.util.*; * @author Jerry * @date 2020-09-24 */ +@Api(tags = "年级管理接口") @Slf4j @RestController @RequestMapping("/admin/app/grade") @@ -39,6 +42,7 @@ public class GradeController { * @param gradeDto 新增对象。 * @return 应答结果对象,包含新增对象主键Id。 */ + @ApiOperationSupport(ignoreParameters = {"gradeDto.gradeId"}) @PostMapping("/add") public ResponseResult add(@MyRequestBody GradeDto gradeDto) { String errorMessage = MyCommonUtil.getModelValidationError(gradeDto); diff --git a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/controller/SchoolInfoController.java b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/controller/SchoolInfoController.java index 9237d56b..eb57eb27 100644 --- a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/controller/SchoolInfoController.java +++ b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/controller/SchoolInfoController.java @@ -11,6 +11,8 @@ import com.orange.demo.common.core.util.*; import com.orange.demo.common.core.constant.*; import com.orange.demo.common.core.annotation.MyRequestBody; import com.orange.demo.common.core.validator.UpdateGroup; +import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; +import io.swagger.annotations.Api; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @@ -24,6 +26,7 @@ import javax.validation.groups.Default; * @author Jerry * @date 2020-09-24 */ +@Api(tags = "校区数据管理接口") @Slf4j @RestController @RequestMapping("/admin/app/schoolInfo") @@ -38,6 +41,7 @@ public class SchoolInfoController { * @param schoolInfoDto 新增对象。 * @return 应答结果对象,包含新增对象主键Id。 */ + @ApiOperationSupport(ignoreParameters = {"schoolInfoDto.schoolId"}) @PostMapping("/add") public ResponseResult add(@MyRequestBody SchoolInfoDto schoolInfoDto) { String errorMessage = MyCommonUtil.getModelValidationError(schoolInfoDto); diff --git a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/controller/StudentActionStatsController.java b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/controller/StudentActionStatsController.java index 8237602f..5e7bd797 100644 --- a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/controller/StudentActionStatsController.java +++ b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/controller/StudentActionStatsController.java @@ -9,6 +9,7 @@ import com.orange.demo.common.core.object.*; import com.orange.demo.common.core.util.*; import com.orange.demo.common.core.constant.*; import com.orange.demo.common.core.annotation.MyRequestBody; +import io.swagger.annotations.Api; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @@ -21,6 +22,7 @@ import java.util.*; * @author Jerry * @date 2020-09-24 */ +@Api(tags = "学生行为统计管理接口") @Slf4j @RestController @RequestMapping("/admin/app/studentActionStats") diff --git a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/controller/StudentActionTransController.java b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/controller/StudentActionTransController.java index d77d949a..9461b2bf 100644 --- a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/controller/StudentActionTransController.java +++ b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/controller/StudentActionTransController.java @@ -10,6 +10,8 @@ import com.orange.demo.common.core.util.*; import com.orange.demo.common.core.constant.*; import com.orange.demo.common.core.annotation.MyRequestBody; import com.orange.demo.common.core.validator.UpdateGroup; +import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; +import io.swagger.annotations.Api; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @@ -23,6 +25,7 @@ import javax.validation.groups.Default; * @author Jerry * @date 2020-09-24 */ +@Api(tags = "学生行为流水管理接口") @Slf4j @RestController @RequestMapping("/admin/app/studentActionTrans") @@ -37,6 +40,10 @@ public class StudentActionTransController { * @param studentActionTransDto 新增对象。 * @return 应答结果对象,包含新增对象主键Id。 */ + @ApiOperationSupport(ignoreParameters = { + "studentActionTransDto.transId", + "studentActionTransDto.createTimeStart", + "studentActionTransDto.createTimeEnd"}) @PostMapping("/add") public ResponseResult add(@MyRequestBody StudentActionTransDto studentActionTransDto) { String errorMessage = MyCommonUtil.getModelValidationError(studentActionTransDto); @@ -60,6 +67,9 @@ public class StudentActionTransController { * @param studentActionTransDto 更新对象。 * @return 应答结果对象。 */ + @ApiOperationSupport(ignoreParameters = { + "studentActionTransDto.createTimeStart", + "studentActionTransDto.createTimeEnd"}) @PostMapping("/update") public ResponseResult update(@MyRequestBody StudentActionTransDto studentActionTransDto) { String errorMessage = MyCommonUtil.getModelValidationError(studentActionTransDto, Default.class, UpdateGroup.class); diff --git a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/controller/StudentClassController.java b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/controller/StudentClassController.java index 61edd048..6c3f8c2b 100644 --- a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/controller/StudentClassController.java +++ b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/controller/StudentClassController.java @@ -10,6 +10,8 @@ import com.orange.demo.common.core.util.*; import com.orange.demo.common.core.constant.*; import com.orange.demo.common.core.annotation.MyRequestBody; import com.orange.demo.common.core.validator.UpdateGroup; +import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; +import io.swagger.annotations.Api; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @@ -24,6 +26,7 @@ import java.util.stream.Collectors; * @author Jerry * @date 2020-09-24 */ +@Api(tags = "班级数据管理接口") @Slf4j @RestController @RequestMapping("/admin/app/studentClass") @@ -42,6 +45,7 @@ public class StudentClassController { * @param studentClassDto 新增对象。 * @return 应答结果对象,包含新增对象主键Id。 */ + @ApiOperationSupport(ignoreParameters = {"studentClassDto.classId"}) @PostMapping("/add") public ResponseResult add(@MyRequestBody StudentClassDto studentClassDto) { String errorMessage = MyCommonUtil.getModelValidationError(studentClassDto); diff --git a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/controller/StudentController.java b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/controller/StudentController.java index 03b0616c..59379de9 100644 --- a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/controller/StudentController.java +++ b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/controller/StudentController.java @@ -11,6 +11,8 @@ import com.orange.demo.common.core.util.*; import com.orange.demo.common.core.constant.*; import com.orange.demo.common.core.annotation.MyRequestBody; import com.orange.demo.common.core.validator.UpdateGroup; +import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; +import io.swagger.annotations.Api; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @@ -24,6 +26,7 @@ import javax.validation.groups.Default; * @author Jerry * @date 2020-09-24 */ +@Api(tags = "学生数据管理接口") @Slf4j @RestController @RequestMapping("/admin/app/student") @@ -38,6 +41,13 @@ public class StudentController { * @param studentDto 新增对象。 * @return 应答结果对象,包含新增对象主键Id。 */ + @ApiOperationSupport(ignoreParameters = { + "studentDto.studentId", + "studentDto.searchString", + "studentDto.birthdayStart", + "studentDto.birthdayEnd", + "studentDto.registerTimeStart", + "studentDto.registerTimeEnd"}) @PostMapping("/add") public ResponseResult add(@MyRequestBody StudentDto studentDto) { String errorMessage = MyCommonUtil.getModelValidationError(studentDto); @@ -61,6 +71,12 @@ public class StudentController { * @param studentDto 更新对象。 * @return 应答结果对象。 */ + @ApiOperationSupport(ignoreParameters = { + "studentDto.searchString", + "studentDto.birthdayStart", + "studentDto.birthdayEnd", + "studentDto.registerTimeStart", + "studentDto.registerTimeEnd"}) @PostMapping("/update") public ResponseResult update(@MyRequestBody StudentDto studentDto) { String errorMessage = MyCommonUtil.getModelValidationError(studentDto, Default.class, UpdateGroup.class); diff --git a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/dto/ClassCourseDto.java b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/dto/ClassCourseDto.java index 97d253c3..c237a83b 100644 --- a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/dto/ClassCourseDto.java +++ b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/dto/ClassCourseDto.java @@ -2,6 +2,8 @@ package com.orange.demo.webadmin.app.dto; import com.orange.demo.common.core.validator.UpdateGroup; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import javax.validation.constraints.*; @@ -12,24 +14,28 @@ import javax.validation.constraints.*; * @author Jerry * @date 2020-09-24 */ +@ApiModel("ClassCourseDto对象") @Data public class ClassCourseDto { /** * 班级Id。 */ + @ApiModelProperty(value = "班级Id", required = true) @NotNull(message = "数据验证失败,班级Id不能为空!", groups = {UpdateGroup.class}) private Long classId; /** * 课程Id。 */ + @ApiModelProperty(value = "课程Id", required = true) @NotNull(message = "数据验证失败,课程Id不能为空!", groups = {UpdateGroup.class}) private Long courseId; /** * 课程顺序(数值越小越靠前)。 */ + @ApiModelProperty(value = "课程顺序(数值越小越靠前)", required = true) @NotNull(message = "数据验证失败,课程顺序(数值越小越靠前)不能为空!", groups = {UpdateGroup.class}) private Integer courseOrder; } diff --git a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/dto/ClassStudentDto.java b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/dto/ClassStudentDto.java index dd1c21ce..e9fe4261 100644 --- a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/dto/ClassStudentDto.java +++ b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/dto/ClassStudentDto.java @@ -2,6 +2,8 @@ package com.orange.demo.webadmin.app.dto; import com.orange.demo.common.core.validator.UpdateGroup; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import javax.validation.constraints.*; @@ -12,18 +14,21 @@ import javax.validation.constraints.*; * @author Jerry * @date 2020-09-24 */ +@ApiModel("ClassStudentDto对象") @Data public class ClassStudentDto { /** * 班级Id。 */ + @ApiModelProperty(value = "班级Id", required = true) @NotNull(message = "数据验证失败,班级Id不能为空!", groups = {UpdateGroup.class}) private Long classId; /** * 学生Id。 */ + @ApiModelProperty(value = "学生Id", required = true) @NotNull(message = "数据验证失败,学生Id不能为空!", groups = {UpdateGroup.class}) private Long studentId; } diff --git a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/dto/CourseDto.java b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/dto/CourseDto.java index 1e46a88f..0aec1c40 100644 --- a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/dto/CourseDto.java +++ b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/dto/CourseDto.java @@ -5,6 +5,8 @@ import com.orange.demo.common.core.validator.ConstDictRef; import com.orange.demo.webadmin.app.model.constant.CourseDifficult; import com.orange.demo.application.common.constant.Subject; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import javax.validation.constraints.*; @@ -17,35 +19,41 @@ import java.math.BigDecimal; * @author Jerry * @date 2020-09-24 */ +@ApiModel("CourseDto对象") @Data public class CourseDto { /** * 主键Id。 */ + @ApiModelProperty(value = "主键Id", required = true) @NotNull(message = "数据验证失败,主键Id不能为空!", groups = {UpdateGroup.class}) private Long courseId; /** * 课程名称。 */ + @ApiModelProperty(value = "课程名称", required = true) @NotBlank(message = "数据验证失败,课程名称不能为空!") private String courseName; /** * 课程价格。 */ + @ApiModelProperty(value = "课程价格", required = true) @NotNull(message = "数据验证失败,课程价格不能为空!") private BigDecimal price; /** * 课程描述。 */ + @ApiModelProperty(value = "课程描述") private String description; /** * 课程难度(0: 容易 1: 普通 2: 很难)。 */ + @ApiModelProperty(value = "课程难度(0: 容易 1: 普通 2: 很难)", required = true) @NotNull(message = "数据验证失败,课程难度不能为空!") @ConstDictRef(constDictClass = CourseDifficult.class, message = "数据验证失败,课程难度为无效值!") private Integer difficulty; @@ -53,12 +61,14 @@ public class CourseDto { /** * 年级Id。 */ + @ApiModelProperty(value = "年级Id", required = true) @NotNull(message = "数据验证失败,所属年级不能为空!") private Integer gradeId; /** * 学科Id。 */ + @ApiModelProperty(value = "学科Id", required = true) @NotNull(message = "数据验证失败,所属学科不能为空!") @ConstDictRef(constDictClass = Subject.class, message = "数据验证失败,所属学科为无效值!") private Integer subjectId; @@ -66,42 +76,50 @@ public class CourseDto { /** * 课时数量。 */ + @ApiModelProperty(value = "课时数量", required = true) @NotNull(message = "数据验证失败,课时数量不能为空!") private Integer classHour; /** * 多张课程图片地址。 */ + @ApiModelProperty(value = "多张课程图片地址", required = true) @NotBlank(message = "数据验证失败,课程图片不能为空!") private String pictureUrl; /** * price 范围过滤起始值(>=)。 */ + @ApiModelProperty(value = "price 范围过滤起始值(>=)") private BigDecimal priceStart; /** * price 范围过滤结束值(<=)。 */ + @ApiModelProperty(value = "price 范围过滤结束值(<=)") private BigDecimal priceEnd; /** * classHour 范围过滤起始值(>=)。 */ + @ApiModelProperty(value = "classHour 范围过滤起始值(>=)") private Integer classHourStart; /** * classHour 范围过滤结束值(<=)。 */ + @ApiModelProperty(value = "classHour 范围过滤结束值(<=)") private Integer classHourEnd; /** * createTime 范围过滤起始值(>=)。 */ + @ApiModelProperty(value = "createTime 范围过滤起始值(>=)") private String createTimeStart; /** * createTime 范围过滤结束值(<=)。 */ + @ApiModelProperty(value = "createTime 范围过滤结束值(<=)") private String createTimeEnd; } diff --git a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/dto/CourseTransStatsDto.java b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/dto/CourseTransStatsDto.java index 1c7fa993..c0108013 100644 --- a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/dto/CourseTransStatsDto.java +++ b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/dto/CourseTransStatsDto.java @@ -4,6 +4,8 @@ import com.orange.demo.common.core.validator.UpdateGroup; import com.orange.demo.common.core.validator.ConstDictRef; import com.orange.demo.application.common.constant.Subject; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import javax.validation.constraints.*; @@ -16,24 +18,28 @@ import java.util.Date; * @author Jerry * @date 2020-09-24 */ +@ApiModel("CourseTransStatsDto对象") @Data public class CourseTransStatsDto { /** * 主键Id。 */ + @ApiModelProperty(value = "主键Id", required = true) @NotNull(message = "数据验证失败,主键Id不能为空!", groups = {UpdateGroup.class}) private Long statsId; /** * 统计日期。 */ + @ApiModelProperty(value = "统计日期", required = true) @NotNull(message = "数据验证失败,统计日期不能为空!") private Date statsDate; /** * 科目Id。 */ + @ApiModelProperty(value = "科目Id", required = true) @NotNull(message = "数据验证失败,所属科目不能为空!") @ConstDictRef(constDictClass = Subject.class, message = "数据验证失败,所属科目为无效值!") private Integer subjectId; @@ -41,50 +47,59 @@ public class CourseTransStatsDto { /** * 年级Id。 */ + @ApiModelProperty(value = "年级Id", required = true) @NotNull(message = "数据验证失败,所属年级不能为空!") private Integer gradeId; /** * 年级名称。 */ + @ApiModelProperty(value = "年级名称") private String gradeName; /** * 课程Id。 */ + @ApiModelProperty(value = "课程Id", required = true) @NotNull(message = "数据验证失败,课程Id不能为空!") private Long courseId; /** * 课程名称。 */ + @ApiModelProperty(value = "课程名称") private String courseName; /** * 学生上课次数。 */ + @ApiModelProperty(value = "学生上课次数", required = true) @NotNull(message = "数据验证失败,上课次数不能为空!") private Integer studentAttendCount; /** * 学生献花数量。 */ + @ApiModelProperty(value = "学生献花数量", required = true) @NotNull(message = "数据验证失败,献花数量不能为空!") private Integer studentFlowerAmount; /** * 学生献花次数。 */ + @ApiModelProperty(value = "学生献花次数", required = true) @NotNull(message = "数据验证失败,献花次数不能为空!") private Integer studentFlowerCount; /** * statsDate 范围过滤起始值(>=)。 */ + @ApiModelProperty(value = "statsDate 范围过滤起始值(>=)") private String statsDateStart; /** * statsDate 范围过滤结束值(<=)。 */ + @ApiModelProperty(value = "statsDate 范围过滤结束值(<=)") private String statsDateEnd; } diff --git a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/dto/GradeDto.java b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/dto/GradeDto.java index c0e8f32c..4c632b55 100644 --- a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/dto/GradeDto.java +++ b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/dto/GradeDto.java @@ -2,6 +2,8 @@ package com.orange.demo.webadmin.app.dto; import com.orange.demo.common.core.validator.UpdateGroup; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import javax.validation.constraints.*; @@ -12,18 +14,21 @@ import javax.validation.constraints.*; * @author Jerry * @date 2020-09-24 */ +@ApiModel("GradeDto对象") @Data public class GradeDto { /** * 主键Id。 */ + @ApiModelProperty(value = "主键Id", required = true) @NotNull(message = "数据验证失败,主键Id不能为空!", groups = {UpdateGroup.class}) private Integer gradeId; /** * 年级名称。 */ + @ApiModelProperty(value = "年级名称", required = true) @NotBlank(message = "数据验证失败,年级名称不能为空!") private String gradeName; } diff --git a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/dto/SchoolInfoDto.java b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/dto/SchoolInfoDto.java index 36878446..98a684c4 100644 --- a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/dto/SchoolInfoDto.java +++ b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/dto/SchoolInfoDto.java @@ -2,6 +2,8 @@ package com.orange.demo.webadmin.app.dto; import com.orange.demo.common.core.validator.UpdateGroup; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import javax.validation.constraints.*; @@ -12,30 +14,35 @@ import javax.validation.constraints.*; * @author Jerry * @date 2020-09-24 */ +@ApiModel("SchoolInfoDto对象") @Data public class SchoolInfoDto { /** * 学校Id。 */ + @ApiModelProperty(value = "学校Id", required = true) @NotNull(message = "数据验证失败,学校Id不能为空!", groups = {UpdateGroup.class}) private Long schoolId; /** * 学校名称。 */ + @ApiModelProperty(value = "学校名称", required = true) @NotBlank(message = "数据验证失败,学校名称不能为空!") private String schoolName; /** * 所在省Id。 */ + @ApiModelProperty(value = "所在省Id", required = true) @NotNull(message = "数据验证失败,所在省份不能为空!") private Long provinceId; /** * 所在城市Id。 */ + @ApiModelProperty(value = "所在城市Id", required = true) @NotNull(message = "数据验证失败,所在城市不能为空!") private Long cityId; } diff --git a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/dto/StudentActionStatsDto.java b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/dto/StudentActionStatsDto.java index 6e312993..90f376e4 100644 --- a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/dto/StudentActionStatsDto.java +++ b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/dto/StudentActionStatsDto.java @@ -2,6 +2,8 @@ package com.orange.demo.webadmin.app.dto; import com.orange.demo.common.core.validator.UpdateGroup; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import javax.validation.constraints.*; @@ -14,141 +16,165 @@ import java.util.Date; * @author Jerry * @date 2020-09-24 */ +@ApiModel("StudentActionStatsDto对象") @Data public class StudentActionStatsDto { /** * 主键Id。 */ + @ApiModelProperty(value = "主键Id", required = true) @NotNull(message = "数据验证失败,主键Id不能为空!", groups = {UpdateGroup.class}) private Long statsId; /** * 统计日期。 */ + @ApiModelProperty(value = "统计日期", required = true) @NotNull(message = "数据验证失败,统计日期不能为空!") private Date statsDate; /** * 统计小时。 */ + @ApiModelProperty(value = "统计小时") private Date statsMonth; /** * 年级Id。 */ + @ApiModelProperty(value = "年级Id", required = true) @NotNull(message = "数据验证失败,所属年级不能为空!") private Integer gradeId; /** * 学生所在省Id。 */ + @ApiModelProperty(value = "学生所在省Id", required = true) @NotNull(message = "数据验证失败,所在省份不能为空!") private Long provinceId; /** * 学生所在城市Id。 */ + @ApiModelProperty(value = "学生所在城市Id", required = true) @NotNull(message = "数据验证失败,所在城市不能为空!", groups = {UpdateGroup.class}) private Long cityId; /** * 购课学币数量。 */ + @ApiModelProperty(value = "购课学币数量", required = true) @NotNull(message = "数据验证失败,购课学币数量不能为空!", groups = {UpdateGroup.class}) private Integer buyCourseAmount; /** * 购买课程次数。 */ + @ApiModelProperty(value = "购买课程次数", required = true) @NotNull(message = "数据验证失败,购买课程次数不能为空!", groups = {UpdateGroup.class}) private Integer buyCourseCount; /** * 购买视频学币数量。 */ + @ApiModelProperty(value = "购买视频学币数量", required = true) @NotNull(message = "数据验证失败,购买视频学币数量不能为空!", groups = {UpdateGroup.class}) private Integer buyVideoAmount; /** * 购买视频次数。 */ + @ApiModelProperty(value = "购买视频次数", required = true) @NotNull(message = "数据验证失败,购买视频次数不能为空!", groups = {UpdateGroup.class}) private Integer buyVideoCount; /** * 购买作业学币数量。 */ + @ApiModelProperty(value = "购买作业学币数量", required = true) @NotNull(message = "数据验证失败,购买作业学币数量不能为空!", groups = {UpdateGroup.class}) private Integer buyPaperAmount; /** * 购买作业次数。 */ + @ApiModelProperty(value = "购买作业次数", required = true) @NotNull(message = "数据验证失败,购买作业次数不能为空!", groups = {UpdateGroup.class}) private Integer buyPaperCount; /** * 购买献花数量。 */ + @ApiModelProperty(value = "购买献花数量", required = true) @NotNull(message = "数据验证失败,购买献花数量不能为空!", groups = {UpdateGroup.class}) private Integer buyFlowerAmount; /** * 购买献花次数。 */ + @ApiModelProperty(value = "购买献花次数", required = true) @NotNull(message = "数据验证失败,购买献花次数不能为空!", groups = {UpdateGroup.class}) private Integer buyFlowerCount; /** * 充值学币数量。 */ + @ApiModelProperty(value = "充值学币数量", required = true) @NotNull(message = "数据验证失败,充值学币数量不能为空!", groups = {UpdateGroup.class}) private Integer rechargeCoinAmount; /** * 充值学币次数。 */ + @ApiModelProperty(value = "充值学币次数", required = true) @NotNull(message = "数据验证失败,充值学币次数不能为空!", groups = {UpdateGroup.class}) private Integer rechargeCoinCount; /** * 线下课程上课次数。 */ + @ApiModelProperty(value = "线下课程上课次数", required = true) @NotNull(message = "数据验证失败,线下课程上课次数不能为空!") private Integer doCourseCount; /** * 观看视频次数。 */ + @ApiModelProperty(value = "观看视频次数", required = true) @NotNull(message = "数据验证失败,观看视频次数不能为空!", groups = {UpdateGroup.class}) private Integer watchVideoCount; /** * 购买献花消费学币数量。 */ + @ApiModelProperty(value = "购买献花消费学币数量", required = true) @NotNull(message = "数据验证失败,购买献花消费学币数量不能为空!") private Integer watchVideoTotalSecond; /** * 做题数量。 */ + @ApiModelProperty(value = "做题数量", required = true) @NotNull(message = "数据验证失败,做题数量不能为空!", groups = {UpdateGroup.class}) private Integer doExerciseCount; /** * 做题正确的数量。 */ + @ApiModelProperty(value = "做题正确的数量", required = true) @NotNull(message = "数据验证失败,做题正确的数量不能为空!", groups = {UpdateGroup.class}) private Integer doExerciseCorrectCount; /** * statsDate 范围过滤起始值(>=)。 */ + @ApiModelProperty(value = "statsDate 范围过滤起始值(>=)") private String statsDateStart; /** * statsDate 范围过滤结束值(<=)。 */ + @ApiModelProperty(value = "statsDate 范围过滤结束值(<=)") private String statsDateEnd; } diff --git a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/dto/StudentActionTransDto.java b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/dto/StudentActionTransDto.java index 55cf8dec..049c7066 100644 --- a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/dto/StudentActionTransDto.java +++ b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/dto/StudentActionTransDto.java @@ -5,6 +5,8 @@ import com.orange.demo.common.core.validator.ConstDictRef; import com.orange.demo.application.common.constant.StudentActionType; import com.orange.demo.application.common.constant.DeviceType; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import javax.validation.constraints.*; @@ -17,42 +19,49 @@ import java.util.Date; * @author Jerry * @date 2020-09-24 */ +@ApiModel("StudentActionTransDto对象") @Data public class StudentActionTransDto { /** * 主键Id。 */ + @ApiModelProperty(value = "主键Id", required = true) @NotNull(message = "数据验证失败,主键Id不能为空!", groups = {UpdateGroup.class}) private Long transId; /** * 学生Id。 */ + @ApiModelProperty(value = "学生Id", required = true) @NotNull(message = "数据验证失败,学生Id不能为空!") private Long studentId; /** * 学生名称。 */ + @ApiModelProperty(value = "学生名称", required = true) @NotBlank(message = "数据验证失败,学生名称不能为空!") private String studentName; /** * 学生校区。 */ + @ApiModelProperty(value = "学生校区", required = true) @NotNull(message = "数据验证失败,学生校区不能为空!") private Long schoolId; /** * 年级Id。 */ + @ApiModelProperty(value = "年级Id", required = true) @NotNull(message = "数据验证失败,学生年级不能为空!") private Integer gradeId; /** * 行为类型(0: 充值 1: 购课 2: 上课签到 3: 上课签退 4: 看视频课 5: 做作业 6: 刷题 7: 献花)。 */ + @ApiModelProperty(value = "行为类型(0: 充值 1: 购课 2: 上课签到 3: 上课签退 4: 看视频课 5: 做作业 6: 刷题 7: 献花)", required = true) @NotNull(message = "数据验证失败,行为类型不能为空!") @ConstDictRef(constDictClass = StudentActionType.class, message = "数据验证失败,行为类型为无效值!") private Integer actionType; @@ -60,6 +69,7 @@ public class StudentActionTransDto { /** * 设备类型(0: iOS 1: Android 2: PC)。 */ + @ApiModelProperty(value = "设备类型(0: iOS 1: Android 2: PC)", required = true) @NotNull(message = "数据验证失败,设备类型不能为空!") @ConstDictRef(constDictClass = DeviceType.class, message = "数据验证失败,设备类型为无效值!") private Integer deviceType; @@ -67,51 +77,61 @@ public class StudentActionTransDto { /** * 看视频秒数。 */ + @ApiModelProperty(value = "看视频秒数") private Integer watchVideoSeconds; /** * 购买献花数量。 */ + @ApiModelProperty(value = "购买献花数量") private Integer flowerCount; /** * 购买作业数量。 */ + @ApiModelProperty(value = "购买作业数量") private Integer paperCount; /** * 购买视频数量。 */ + @ApiModelProperty(value = "购买视频数量") private Integer videoCount; /** * 购买课程数量。 */ + @ApiModelProperty(value = "购买课程数量") private Integer courseCount; /** * 充值学币数量。 */ + @ApiModelProperty(value = "充值学币数量") private Integer coinCount; /** * 做题是否正确标记。 */ + @ApiModelProperty(value = "做题是否正确标记") private Integer exerciseCorrectFlag; /** * 发生时间。 */ + @ApiModelProperty(value = "发生时间", required = true) @NotNull(message = "数据验证失败,发生时间不能为空!") private Date createTime; /** * createTime 范围过滤起始值(>=)。 */ + @ApiModelProperty(value = "createTime 范围过滤起始值(>=)") private String createTimeStart; /** * createTime 范围过滤结束值(<=)。 */ + @ApiModelProperty(value = "createTime 范围过滤结束值(<=)") private String createTimeEnd; } diff --git a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/dto/StudentClassDto.java b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/dto/StudentClassDto.java index 291e4c56..d75f9ce4 100644 --- a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/dto/StudentClassDto.java +++ b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/dto/StudentClassDto.java @@ -4,6 +4,8 @@ import com.orange.demo.common.core.validator.UpdateGroup; import com.orange.demo.common.core.validator.ConstDictRef; import com.orange.demo.webadmin.app.model.constant.ClassLevel; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import javax.validation.constraints.*; @@ -14,42 +16,49 @@ import javax.validation.constraints.*; * @author Jerry * @date 2020-09-24 */ +@ApiModel("StudentClassDto对象") @Data public class StudentClassDto { /** * 班级Id。 */ + @ApiModelProperty(value = "班级Id", required = true) @NotNull(message = "数据验证失败,班级Id不能为空!", groups = {UpdateGroup.class}) private Long classId; /** * 班级名称。 */ + @ApiModelProperty(value = "班级名称", required = true) @NotBlank(message = "数据验证失败,班级名称不能为空!") private String className; /** * 学校Id。 */ + @ApiModelProperty(value = "学校Id", required = true) @NotNull(message = "数据验证失败,所属校区不能为空!") private Long schoolId; /** * 学生班长Id。 */ + @ApiModelProperty(value = "学生班长Id", required = true) @NotNull(message = "数据验证失败,学生班长不能为空!") private Long leaderId; /** * 已完成课时数量。 */ + @ApiModelProperty(value = "已完成课时数量", required = true) @NotNull(message = "数据验证失败,已完成课时不能为空!", groups = {UpdateGroup.class}) private Integer finishClassHour; /** * 班级级别(0: 初级班 1: 培优班 2: 冲刺提分班 3: 竞赛班)。 */ + @ApiModelProperty(value = "班级级别(0: 初级班 1: 培优班 2: 冲刺提分班 3: 竞赛班)", required = true) @NotNull(message = "数据验证失败,班级级别不能为空!") @ConstDictRef(constDictClass = ClassLevel.class, message = "数据验证失败,班级级别为无效值!") private Integer classLevel; diff --git a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/dto/StudentDto.java b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/dto/StudentDto.java index de956c59..a3aa4547 100644 --- a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/dto/StudentDto.java +++ b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/dto/StudentDto.java @@ -6,6 +6,8 @@ import com.orange.demo.application.common.constant.Gender; import com.orange.demo.application.common.constant.ExpLevel; import com.orange.demo.application.common.constant.StudentStatus; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import javax.validation.constraints.*; @@ -18,48 +20,56 @@ import java.util.Date; * @author Jerry * @date 2020-09-24 */ +@ApiModel("StudentDto对象") @Data public class StudentDto { /** * 学生Id。 */ + @ApiModelProperty(value = "学生Id", required = true) @NotNull(message = "数据验证失败,学生Id不能为空!", groups = {UpdateGroup.class}) private Long studentId; /** * 登录手机。 */ + @ApiModelProperty(value = "登录手机", required = true) @NotBlank(message = "数据验证失败,手机号码不能为空!") private String loginMobile; /** * 学生姓名。 */ + @ApiModelProperty(value = "学生姓名", required = true) @NotBlank(message = "数据验证失败,学生姓名不能为空!") private String studentName; /** * 所在省份Id。 */ + @ApiModelProperty(value = "所在省份Id", required = true) @NotNull(message = "数据验证失败,所在省份不能为空!") private Long provinceId; /** * 所在城市Id。 */ + @ApiModelProperty(value = "所在城市Id", required = true) @NotNull(message = "数据验证失败,所在城市不能为空!") private Long cityId; /** * 区县Id。 */ + @ApiModelProperty(value = "区县Id", required = true) @NotNull(message = "数据验证失败,所在区县不能为空!") private Long districtId; /** * 学生性别 (0: 女生 1: 男生)。 */ + @ApiModelProperty(value = "学生性别 (0: 女生 1: 男生)", required = true) @NotNull(message = "数据验证失败,学生性别不能为空!") @ConstDictRef(constDictClass = Gender.class, message = "数据验证失败,学生性别为无效值!") private Integer gender; @@ -67,12 +77,14 @@ public class StudentDto { /** * 生日。 */ + @ApiModelProperty(value = "生日", required = true) @NotNull(message = "数据验证失败,出生日期不能为空!") private Date birthday; /** * 经验等级 (0: 初级 1: 中级 2: 高级 3: 资深)。 */ + @ApiModelProperty(value = "经验等级 (0: 初级 1: 中级 2: 高级 3: 资深)", required = true) @NotNull(message = "数据验证失败,经验等级不能为空!") @ConstDictRef(constDictClass = ExpLevel.class, message = "数据验证失败,经验等级为无效值!") private Integer experienceLevel; @@ -80,29 +92,34 @@ public class StudentDto { /** * 总共充值学币数量。 */ + @ApiModelProperty(value = "总共充值学币数量", required = true) @NotNull(message = "数据验证失败,充值学币不能为空!", groups = {UpdateGroup.class}) private Integer totalCoin; /** * 可用学币数量。 */ + @ApiModelProperty(value = "可用学币数量") private Integer leftCoin; /** * 年级Id。 */ + @ApiModelProperty(value = "年级Id", required = true) @NotNull(message = "数据验证失败,年级不能为空!") private Integer gradeId; /** * 校区Id。 */ + @ApiModelProperty(value = "校区Id", required = true) @NotNull(message = "数据验证失败,所属校区不能为空!") private Long schoolId; /** * 学生状态 (0: 正常 1: 锁定 2: 注销)。 */ + @ApiModelProperty(value = "学生状态 (0: 正常 1: 锁定 2: 注销)", required = true) @NotNull(message = "数据验证失败,学生状态不能为空!", groups = {UpdateGroup.class}) @ConstDictRef(constDictClass = StudentStatus.class, message = "数据验证失败,学生状态为无效值!") private Integer status; @@ -110,25 +127,30 @@ public class StudentDto { /** * birthday 范围过滤起始值(>=)。 */ + @ApiModelProperty(value = "birthday 范围过滤起始值(>=)") private String birthdayStart; /** * birthday 范围过滤结束值(<=)。 */ + @ApiModelProperty(value = "birthday 范围过滤结束值(<=)") private String birthdayEnd; /** * registerTime 范围过滤起始值(>=)。 */ + @ApiModelProperty(value = "registerTime 范围过滤起始值(>=)") private String registerTimeStart; /** * registerTime 范围过滤结束值(<=)。 */ + @ApiModelProperty(value = "registerTime 范围过滤结束值(<=)") private String registerTimeEnd; /** * login_mobile / student_name LIKE搜索字符串。 */ + @ApiModelProperty(value = "LIKE模糊搜索字符串") private String searchString; } diff --git a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/model/AreaCode.java b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/model/AreaCode.java index 0e1a6449..106c4b18 100644 --- a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/model/AreaCode.java +++ b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/model/AreaCode.java @@ -1,9 +1,8 @@ package com.orange.demo.webadmin.app.model; +import com.baomidou.mybatisplus.annotation.*; import lombok.Data; -import javax.persistence.*; - /** * 行政区划实体对象。 * @@ -11,31 +10,30 @@ import javax.persistence.*; * @date 2020-09-24 */ @Data -@Table(name = "zz_area_code") +@TableName(value = "zz_area_code") public class AreaCode { /** * 行政区划主键Id */ - @Id - @Column(name = "area_id") + @TableId(value = "area_id") private Long areaId; /** * 行政区划名称 */ - @Column(name = "area_name") + @TableField(value = "area_name") private String areaName; /** * 行政区划级别 (1: 省级别 2: 市级别 3: 区级别) */ - @Column(name = "area_level") + @TableField(value = "area_level") private Integer areaLevel; /** * 父级行政区划Id */ - @Column(name = "parent_id") + @TableField(value = "parent_id") private Long parentId; } \ No newline at end of file diff --git a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/model/ClassCourse.java b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/model/ClassCourse.java index 58aa2f80..7b4b7ea6 100644 --- a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/model/ClassCourse.java +++ b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/model/ClassCourse.java @@ -1,7 +1,7 @@ package com.orange.demo.webadmin.app.model; +import com.baomidou.mybatisplus.annotation.*; import lombok.Data; -import javax.persistence.*; /** * ClassCourse实体对象。 @@ -10,26 +10,24 @@ import javax.persistence.*; * @date 2020-09-24 */ @Data -@Table(name = "zz_class_course") +@TableName(value = "zz_class_course") public class ClassCourse { /** * 班级Id。 */ - @Id - @Column(name = "class_id") + @TableField(value = "class_id") private Long classId; /** * 课程Id。 */ - @Id - @Column(name = "course_id") + @TableField(value = "course_id") private Long courseId; /** * 课程顺序(数值越小越靠前)。 */ - @Column(name = "course_order") + @TableField(value = "course_order") private Integer courseOrder; } diff --git a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/model/ClassStudent.java b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/model/ClassStudent.java index 94cedea5..4f982b78 100644 --- a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/model/ClassStudent.java +++ b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/model/ClassStudent.java @@ -1,7 +1,7 @@ package com.orange.demo.webadmin.app.model; +import com.baomidou.mybatisplus.annotation.*; import lombok.Data; -import javax.persistence.*; /** * ClassStudent实体对象。 @@ -10,20 +10,18 @@ import javax.persistence.*; * @date 2020-09-24 */ @Data -@Table(name = "zz_class_student") +@TableName(value = "zz_class_student") public class ClassStudent { /** * 班级Id。 */ - @Id - @Column(name = "class_id") + @TableField(value = "class_id") private Long classId; /** * 学生Id。 */ - @Id - @Column(name = "student_id") + @TableField(value = "student_id") private Long studentId; } diff --git a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/model/Course.java b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/model/Course.java index 2ffef183..d75ac2c7 100644 --- a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/model/Course.java +++ b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/model/Course.java @@ -1,5 +1,6 @@ package com.orange.demo.webadmin.app.model; +import com.baomidou.mybatisplus.annotation.*; import com.orange.demo.webadmin.app.model.constant.CourseDifficult; import com.orange.demo.application.common.constant.Subject; import com.orange.demo.common.core.upload.UploadStoreTypeEnum; @@ -11,7 +12,6 @@ import com.orange.demo.webadmin.app.vo.CourseVo; import lombok.Data; import org.mapstruct.*; import org.mapstruct.factory.Mappers; -import javax.persistence.*; import java.math.BigDecimal; import java.util.Date; @@ -24,20 +24,19 @@ import java.util.Map; * @date 2020-09-24 */ @Data -@Table(name = "zz_course") +@TableName(value = "zz_course") public class Course { /** * 主键Id。 */ - @Id - @Column(name = "course_id") + @TableId(value = "course_id") private Long courseId; /** * 课程名称。 */ - @Column(name = "course_name") + @TableField(value = "course_name") private String courseName; /** @@ -58,86 +57,86 @@ public class Course { /** * 年级Id。 */ - @Column(name = "grade_id") + @TableField(value = "grade_id") private Integer gradeId; /** * 学科Id。 */ - @Column(name = "subject_id") + @TableField(value = "subject_id") private Integer subjectId; /** * 课时数量。 */ - @Column(name = "class_hour") + @TableField(value = "class_hour") private Integer classHour; /** * 多张课程图片地址。 */ @UploadFlagColumn(storeType = UploadStoreTypeEnum.LOCAL_SYSTEM) - @Column(name = "picture_url") + @TableField(value = "picture_url") private String pictureUrl; /** * 创建用户Id。 */ - @Column(name = "create_user_id") + @TableField(value = "create_user_id") private Long createUserId; /** * 创建时间。 */ - @Column(name = "create_time") + @TableField(value = "create_time") private Date createTime; /** * 最后修改时间。 */ - @Column(name = "update_time") + @TableField(value = "update_time") private Date updateTime; /** * price 范围过滤起始值(>=)。 */ - @Transient + @TableField(exist = false) private BigDecimal priceStart; /** * price 范围过滤结束值(<=)。 */ - @Transient + @TableField(exist = false) private BigDecimal priceEnd; /** * classHour 范围过滤起始值(>=)。 */ - @Transient + @TableField(exist = false) private Integer classHourStart; /** * classHour 范围过滤结束值(<=)。 */ - @Transient + @TableField(exist = false) private Integer classHourEnd; /** * createTime 范围过滤起始值(>=)。 */ - @Transient + @TableField(exist = false) private String createTimeStart; /** * createTime 范围过滤结束值(<=)。 */ - @Transient + @TableField(exist = false) private String createTimeEnd; /** * courseId 的多对多关联表数据对象。 */ - @Transient + @TableField(exist = false) private ClassCourse classCourse; @RelationDict( @@ -146,19 +145,19 @@ public class Course { slaveModelClass = Grade.class, slaveIdField = "gradeId", slaveNameField = "gradeName") - @Transient + @TableField(exist = false) private Map gradeIdDictMap; @RelationConstDict( masterIdField = "difficulty", constantDictClass = CourseDifficult.class) - @Transient + @TableField(exist = false) private Map difficultyDictMap; @RelationConstDict( masterIdField = "subjectId", constantDictClass = Subject.class) - @Transient + @TableField(exist = false) private Map subjectIdDictMap; @Mapper diff --git a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/model/CourseTransStats.java b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/model/CourseTransStats.java index ed9d6e2d..f6777c01 100644 --- a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/model/CourseTransStats.java +++ b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/model/CourseTransStats.java @@ -1,5 +1,6 @@ package com.orange.demo.webadmin.app.model; +import com.baomidou.mybatisplus.annotation.*; import com.orange.demo.application.common.constant.Subject; import com.orange.demo.common.core.annotation.RelationDict; import com.orange.demo.common.core.annotation.RelationConstDict; @@ -8,7 +9,6 @@ import com.orange.demo.webadmin.app.vo.CourseTransStatsVo; import lombok.Data; import org.mapstruct.*; import org.mapstruct.factory.Mappers; -import javax.persistence.*; import java.util.Date; import java.util.Map; @@ -20,81 +20,79 @@ import java.util.Map; * @date 2020-09-24 */ @Data -@Table(name = "zz_course_trans_stats") +@TableName(value = "zz_course_trans_stats") public class CourseTransStats { /** * 主键Id。 */ - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - @Column(name = "stats_id") + @TableId(value = "stats_id", type = IdType.AUTO) private Long statsId; /** * 统计日期。 */ - @Column(name = "stats_date") + @TableField(value = "stats_date") private Date statsDate; /** * 科目Id。 */ - @Column(name = "subject_id") + @TableField(value = "subject_id") private Integer subjectId; /** * 年级Id。 */ - @Column(name = "grade_id") + @TableField(value = "grade_id") private Integer gradeId; /** * 年级名称。 */ - @Column(name = "grade_name") + @TableField(value = "grade_name") private String gradeName; /** * 课程Id。 */ - @Column(name = "course_id") + @TableField(value = "course_id") private Long courseId; /** * 课程名称。 */ - @Column(name = "course_name") + @TableField(value = "course_name") private String courseName; /** * 学生上课次数。 */ - @Column(name = "student_attend_count") + @TableField(value = "student_attend_count") private Integer studentAttendCount; /** * 学生献花数量。 */ - @Column(name = "student_flower_amount") + @TableField(value = "student_flower_amount") private Integer studentFlowerAmount; /** * 学生献花次数。 */ - @Column(name = "student_flower_count") + @TableField(value = "student_flower_count") private Integer studentFlowerCount; /** * statsDate 范围过滤起始值(>=)。 */ - @Transient + @TableField(exist = false) private String statsDateStart; /** * statsDate 范围过滤结束值(<=)。 */ - @Transient + @TableField(exist = false) private String statsDateEnd; @RelationDict( @@ -103,13 +101,13 @@ public class CourseTransStats { slaveModelClass = Grade.class, slaveIdField = "gradeId", slaveNameField = "gradeName") - @Transient + @TableField(exist = false) private Map gradeIdDictMap; @RelationConstDict( masterIdField = "subjectId", constantDictClass = Subject.class) - @Transient + @TableField(exist = false) private Map subjectIdDictMap; @Mapper diff --git a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/model/Grade.java b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/model/Grade.java index 07298c39..3c6335e0 100644 --- a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/model/Grade.java +++ b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/model/Grade.java @@ -1,8 +1,7 @@ package com.orange.demo.webadmin.app.model; -import com.orange.demo.common.core.annotation.DeletedFlagColumn; +import com.baomidou.mybatisplus.annotation.*; import lombok.Data; -import javax.persistence.*; /** * Grade实体对象。 @@ -11,26 +10,24 @@ import javax.persistence.*; * @date 2020-09-24 */ @Data -@Table(name = "zz_grade") +@TableName(value = "zz_grade") public class Grade { /** * 主键Id。 */ - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - @Column(name = "grade_id") + @TableId(value = "grade_id", type = IdType.AUTO) private Integer gradeId; /** * 年级名称。 */ - @Column(name = "grade_name") + @TableField(value = "grade_name") private String gradeName; /** * 逻辑删除标记字段(1: 正常 -1: 已删除)。 */ - @DeletedFlagColumn + @TableLogic private Integer status; } diff --git a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/model/MaterialEdition.java b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/model/MaterialEdition.java index ed9b413e..35fe7bd8 100644 --- a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/model/MaterialEdition.java +++ b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/model/MaterialEdition.java @@ -1,7 +1,7 @@ package com.orange.demo.webadmin.app.model; +import com.baomidou.mybatisplus.annotation.*; import lombok.Data; -import javax.persistence.*; /** * MaterialEdition实体对象。 @@ -10,21 +10,19 @@ import javax.persistence.*; * @date 2020-09-24 */ @Data -@Table(name = "zz_material_edition") +@TableName(value = "zz_material_edition") public class MaterialEdition { /** * 主键Id。 */ - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - @Column(name = "edition_id") + @TableId(value = "edition_id", type = IdType.AUTO) private Integer editionId; /** * 教材版本名称。 */ - @Column(name = "edition_name") + @TableField(value = "edition_name") private String editionName; /** diff --git a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/model/SchoolInfo.java b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/model/SchoolInfo.java index a9086bde..c2c36d23 100644 --- a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/model/SchoolInfo.java +++ b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/model/SchoolInfo.java @@ -1,12 +1,12 @@ package com.orange.demo.webadmin.app.model; +import com.baomidou.mybatisplus.annotation.*; import com.orange.demo.common.core.annotation.RelationDict; import com.orange.demo.common.core.base.mapper.BaseModelMapper; import com.orange.demo.webadmin.app.vo.SchoolInfoVo; import lombok.Data; import org.mapstruct.*; import org.mapstruct.factory.Mappers; -import javax.persistence.*; import java.util.Map; @@ -17,32 +17,31 @@ import java.util.Map; * @date 2020-09-24 */ @Data -@Table(name = "zz_school_info") +@TableName(value = "zz_school_info") public class SchoolInfo { /** * 学校Id。 */ - @Id - @Column(name = "school_id") + @TableId(value = "school_id") private Long schoolId; /** * 学校名称。 */ - @Column(name = "school_name") + @TableField(value = "school_name") private String schoolName; /** * 所在省Id。 */ - @Column(name = "province_id") + @TableField(value = "province_id") private Long provinceId; /** * 所在城市Id。 */ - @Column(name = "city_id") + @TableField(value = "city_id") private Long cityId; @RelationDict( @@ -51,7 +50,7 @@ public class SchoolInfo { slaveModelClass = AreaCode.class, slaveIdField = "areaId", slaveNameField = "areaName") - @Transient + @TableField(exist = false) private Map provinceIdDictMap; @RelationDict( @@ -60,7 +59,7 @@ public class SchoolInfo { slaveModelClass = AreaCode.class, slaveIdField = "areaId", slaveNameField = "areaName") - @Transient + @TableField(exist = false) private Map cityIdDictMap; @Mapper diff --git a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/model/Student.java b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/model/Student.java index ab8d2f0f..9255aa36 100644 --- a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/model/Student.java +++ b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/model/Student.java @@ -1,5 +1,6 @@ package com.orange.demo.webadmin.app.model; +import com.baomidou.mybatisplus.annotation.*; import com.orange.demo.application.common.constant.Gender; import com.orange.demo.application.common.constant.ExpLevel; import com.orange.demo.application.common.constant.StudentStatus; @@ -11,7 +12,6 @@ import com.orange.demo.webadmin.app.vo.StudentVo; import lombok.Data; import org.mapstruct.*; import org.mapstruct.factory.Mappers; -import javax.persistence.*; import java.util.Date; import java.util.Map; @@ -23,44 +23,43 @@ import java.util.Map; * @date 2020-09-24 */ @Data -@Table(name = "zz_student") +@TableName(value = "zz_student") public class Student { /** * 学生Id。 */ - @Id - @Column(name = "student_id") + @TableId(value = "student_id") private Long studentId; /** * 登录手机。 */ - @Column(name = "login_mobile") + @TableField(value = "login_mobile") private String loginMobile; /** * 学生姓名。 */ - @Column(name = "student_name") + @TableField(value = "student_name") private String studentName; /** * 所在省份Id。 */ - @Column(name = "province_id") + @TableField(value = "province_id") private Long provinceId; /** * 所在城市Id。 */ - @Column(name = "city_id") + @TableField(value = "city_id") private Long cityId; /** * 区县Id。 */ - @Column(name = "district_id") + @TableField(value = "district_id") private Long districtId; /** @@ -76,37 +75,37 @@ public class Student { /** * 经验等级 (0: 初级 1: 中级 2: 高级 3: 资深)。 */ - @Column(name = "experience_level") + @TableField(value = "experience_level") private Integer experienceLevel; /** * 总共充值学币数量。 */ - @Column(name = "total_coin") + @TableField(value = "total_coin") private Integer totalCoin; /** * 可用学币数量。 */ - @Column(name = "left_coin") + @TableField(value = "left_coin") private Integer leftCoin; /** * 年级Id。 */ - @Column(name = "grade_id") + @TableField(value = "grade_id") private Integer gradeId; /** * 校区Id。 */ - @Column(name = "school_id") + @TableField(value = "school_id") private Long schoolId; /** * 注册时间。 */ - @Column(name = "register_time") + @TableField(value = "register_time") private Date registerTime; /** @@ -117,31 +116,31 @@ public class Student { /** * birthday 范围过滤起始值(>=)。 */ - @Transient + @TableField(exist = false) private String birthdayStart; /** * birthday 范围过滤结束值(<=)。 */ - @Transient + @TableField(exist = false) private String birthdayEnd; /** * registerTime 范围过滤起始值(>=)。 */ - @Transient + @TableField(exist = false) private String registerTimeStart; /** * registerTime 范围过滤结束值(<=)。 */ - @Transient + @TableField(exist = false) private String registerTimeEnd; /** * login_mobile / student_name LIKE搜索字符串。 */ - @Transient + @TableField(exist = false) private String searchString; public void setSearchString(String searchString) { @@ -154,7 +153,7 @@ public class Student { slaveModelClass = AreaCode.class, slaveIdField = "areaId", slaveNameField = "areaName") - @Transient + @TableField(exist = false) private Map provinceIdDictMap; @RelationDict( @@ -163,7 +162,7 @@ public class Student { slaveModelClass = AreaCode.class, slaveIdField = "areaId", slaveNameField = "areaName") - @Transient + @TableField(exist = false) private Map cityIdDictMap; @RelationDict( @@ -172,7 +171,7 @@ public class Student { slaveModelClass = AreaCode.class, slaveIdField = "areaId", slaveNameField = "areaName") - @Transient + @TableField(exist = false) private Map districtIdDictMap; @RelationDict( @@ -181,7 +180,7 @@ public class Student { slaveModelClass = Grade.class, slaveIdField = "gradeId", slaveNameField = "gradeName") - @Transient + @TableField(exist = false) private Map gradeIdDictMap; @RelationDict( @@ -190,25 +189,25 @@ public class Student { slaveModelClass = SchoolInfo.class, slaveIdField = "schoolId", slaveNameField = "schoolName") - @Transient + @TableField(exist = false) private Map schoolIdDictMap; @RelationConstDict( masterIdField = "gender", constantDictClass = Gender.class) - @Transient + @TableField(exist = false) private Map genderDictMap; @RelationConstDict( masterIdField = "experienceLevel", constantDictClass = ExpLevel.class) - @Transient + @TableField(exist = false) private Map experienceLevelDictMap; @RelationConstDict( masterIdField = "status", constantDictClass = StudentStatus.class) - @Transient + @TableField(exist = false) private Map statusDictMap; @Mapper diff --git a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/model/StudentActionStats.java b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/model/StudentActionStats.java index da8b532b..3c7811d4 100644 --- a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/model/StudentActionStats.java +++ b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/model/StudentActionStats.java @@ -1,12 +1,12 @@ package com.orange.demo.webadmin.app.model; +import com.baomidou.mybatisplus.annotation.*; import com.orange.demo.common.core.annotation.RelationDict; import com.orange.demo.common.core.base.mapper.BaseModelMapper; import com.orange.demo.webadmin.app.vo.StudentActionStatsVo; import lombok.Data; import org.mapstruct.*; import org.mapstruct.factory.Mappers; -import javax.persistence.*; import java.util.Date; import java.util.Map; @@ -18,146 +18,145 @@ import java.util.Map; * @date 2020-09-24 */ @Data -@Table(name = "zz_student_action_stats") +@TableName(value = "zz_student_action_stats") public class StudentActionStats { /** * 主键Id。 */ - @Id - @Column(name = "stats_id") + @TableId(value = "stats_id") private Long statsId; /** * 统计日期。 */ - @Column(name = "stats_date") + @TableField(value = "stats_date") private Date statsDate; /** * 统计小时。 */ - @Column(name = "stats_month") + @TableField(value = "stats_month") private Date statsMonth; /** * 年级Id。 */ - @Column(name = "grade_id") + @TableField(value = "grade_id") private Integer gradeId; /** * 学生所在省Id。 */ - @Column(name = "province_id") + @TableField(value = "province_id") private Long provinceId; /** * 学生所在城市Id。 */ - @Column(name = "city_id") + @TableField(value = "city_id") private Long cityId; /** * 购课学币数量。 */ - @Column(name = "buy_course_amount") + @TableField(value = "buy_course_amount") private Integer buyCourseAmount; /** * 购买课程次数。 */ - @Column(name = "buy_course_count") + @TableField(value = "buy_course_count") private Integer buyCourseCount; /** * 购买视频学币数量。 */ - @Column(name = "buy_video_amount") + @TableField(value = "buy_video_amount") private Integer buyVideoAmount; /** * 购买视频次数。 */ - @Column(name = "buy_video_count") + @TableField(value = "buy_video_count") private Integer buyVideoCount; /** * 购买作业学币数量。 */ - @Column(name = "buy_paper_amount") + @TableField(value = "buy_paper_amount") private Integer buyPaperAmount; /** * 购买作业次数。 */ - @Column(name = "buy_paper_count") + @TableField(value = "buy_paper_count") private Integer buyPaperCount; /** * 购买献花数量。 */ - @Column(name = "buy_flower_amount") + @TableField(value = "buy_flower_amount") private Integer buyFlowerAmount; /** * 购买献花次数。 */ - @Column(name = "buy_flower_count") + @TableField(value = "buy_flower_count") private Integer buyFlowerCount; /** * 充值学币数量。 */ - @Column(name = "recharge_coin_amount") + @TableField(value = "recharge_coin_amount") private Integer rechargeCoinAmount; /** * 充值学币次数。 */ - @Column(name = "recharge_coin_count") + @TableField(value = "recharge_coin_count") private Integer rechargeCoinCount; /** * 线下课程上课次数。 */ - @Column(name = "do_course_count") + @TableField(value = "do_course_count") private Integer doCourseCount; /** * 观看视频次数。 */ - @Column(name = "watch_video_count") + @TableField(value = "watch_video_count") private Integer watchVideoCount; /** * 购买献花消费学币数量。 */ - @Column(name = "watch_video_total_second") + @TableField(value = "watch_video_total_second") private Integer watchVideoTotalSecond; /** * 做题数量。 */ - @Column(name = "do_exercise_count") + @TableField(value = "do_exercise_count") private Integer doExerciseCount; /** * 做题正确的数量。 */ - @Column(name = "do_exercise_correct_count") + @TableField(value = "do_exercise_correct_count") private Integer doExerciseCorrectCount; /** * statsDate 范围过滤起始值(>=)。 */ - @Transient + @TableField(exist = false) private String statsDateStart; /** * statsDate 范围过滤结束值(<=)。 */ - @Transient + @TableField(exist = false) private String statsDateEnd; @RelationDict( @@ -166,7 +165,7 @@ public class StudentActionStats { slaveModelClass = Grade.class, slaveIdField = "gradeId", slaveNameField = "gradeName") - @Transient + @TableField(exist = false) private Map gradeIdDictMap; @RelationDict( @@ -175,7 +174,7 @@ public class StudentActionStats { slaveModelClass = AreaCode.class, slaveIdField = "areaId", slaveNameField = "areaName") - @Transient + @TableField(exist = false) private Map provinceIdDictMap; @RelationDict( @@ -184,7 +183,7 @@ public class StudentActionStats { slaveModelClass = AreaCode.class, slaveIdField = "areaId", slaveNameField = "areaName") - @Transient + @TableField(exist = false) private Map cityIdDictMap; @Mapper diff --git a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/model/StudentActionTrans.java b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/model/StudentActionTrans.java index 06434a85..f1446daa 100644 --- a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/model/StudentActionTrans.java +++ b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/model/StudentActionTrans.java @@ -1,5 +1,6 @@ package com.orange.demo.webadmin.app.model; +import com.baomidou.mybatisplus.annotation.*; import com.orange.demo.application.common.constant.StudentActionType; import com.orange.demo.application.common.constant.DeviceType; import com.orange.demo.common.core.annotation.RelationDict; @@ -9,7 +10,6 @@ import com.orange.demo.webadmin.app.vo.StudentActionTransVo; import lombok.Data; import org.mapstruct.*; import org.mapstruct.factory.Mappers; -import javax.persistence.*; import java.util.Date; import java.util.Map; @@ -21,110 +21,109 @@ import java.util.Map; * @date 2020-09-24 */ @Data -@Table(name = "zz_student_action_trans") +@TableName(value = "zz_student_action_trans") public class StudentActionTrans { /** * 主键Id。 */ - @Id - @Column(name = "trans_id") + @TableId(value = "trans_id") private Long transId; /** * 学生Id。 */ - @Column(name = "student_id") + @TableField(value = "student_id") private Long studentId; /** * 学生名称。 */ - @Column(name = "student_name") + @TableField(value = "student_name") private String studentName; /** * 学生校区。 */ - @Column(name = "school_id") + @TableField(value = "school_id") private Long schoolId; /** * 年级Id。 */ - @Column(name = "grade_id") + @TableField(value = "grade_id") private Integer gradeId; /** * 行为类型(0: 充值 1: 购课 2: 上课签到 3: 上课签退 4: 看视频课 5: 做作业 6: 刷题 7: 献花)。 */ - @Column(name = "action_type") + @TableField(value = "action_type") private Integer actionType; /** * 设备类型(0: iOS 1: Android 2: PC)。 */ - @Column(name = "device_type") + @TableField(value = "device_type") private Integer deviceType; /** * 看视频秒数。 */ - @Column(name = "watch_video_seconds") + @TableField(value = "watch_video_seconds") private Integer watchVideoSeconds; /** * 购买献花数量。 */ - @Column(name = "flower_count") + @TableField(value = "flower_count") private Integer flowerCount; /** * 购买作业数量。 */ - @Column(name = "paper_count") + @TableField(value = "paper_count") private Integer paperCount; /** * 购买视频数量。 */ - @Column(name = "video_count") + @TableField(value = "video_count") private Integer videoCount; /** * 购买课程数量。 */ - @Column(name = "course_count") + @TableField(value = "course_count") private Integer courseCount; /** * 充值学币数量。 */ - @Column(name = "coin_count") + @TableField(value = "coin_count") private Integer coinCount; /** * 做题是否正确标记。 */ - @Column(name = "exercise_correct_flag") + @TableField(value = "exercise_correct_flag") private Integer exerciseCorrectFlag; /** * 发生时间。 */ - @Column(name = "create_time") + @TableField(value = "create_time") private Date createTime; /** * createTime 范围过滤起始值(>=)。 */ - @Transient + @TableField(exist = false) private String createTimeStart; /** * createTime 范围过滤结束值(<=)。 */ - @Transient + @TableField(exist = false) private String createTimeEnd; @RelationDict( @@ -133,7 +132,7 @@ public class StudentActionTrans { slaveModelClass = SchoolInfo.class, slaveIdField = "schoolId", slaveNameField = "schoolName") - @Transient + @TableField(exist = false) private Map schoolIdDictMap; @RelationDict( @@ -142,19 +141,19 @@ public class StudentActionTrans { slaveModelClass = Grade.class, slaveIdField = "gradeId", slaveNameField = "gradeName") - @Transient + @TableField(exist = false) private Map gradeIdDictMap; @RelationConstDict( masterIdField = "actionType", constantDictClass = StudentActionType.class) - @Transient + @TableField(exist = false) private Map actionTypeDictMap; @RelationConstDict( masterIdField = "deviceType", constantDictClass = DeviceType.class) - @Transient + @TableField(exist = false) private Map deviceTypeDictMap; @Mapper diff --git a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/model/StudentClass.java b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/model/StudentClass.java index fad6c3a5..71d3fddc 100644 --- a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/model/StudentClass.java +++ b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/model/StudentClass.java @@ -1,15 +1,14 @@ package com.orange.demo.webadmin.app.model; +import com.baomidou.mybatisplus.annotation.*; import com.orange.demo.webadmin.app.model.constant.ClassLevel; 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; -import com.orange.demo.common.core.annotation.DeletedFlagColumn; import com.orange.demo.webadmin.app.vo.StudentClassVo; import lombok.Data; import org.mapstruct.*; import org.mapstruct.factory.Mappers; -import javax.persistence.*; import java.util.Date; import java.util.Map; @@ -21,62 +20,61 @@ import java.util.Map; * @date 2020-09-24 */ @Data -@Table(name = "zz_class") +@TableName(value = "zz_class") public class StudentClass { /** * 班级Id。 */ - @Id - @Column(name = "class_id") + @TableId(value = "class_id") private Long classId; /** * 班级名称。 */ - @Column(name = "class_name") + @TableField(value = "class_name") private String className; /** * 学校Id。 */ - @Column(name = "school_id") + @TableField(value = "school_id") private Long schoolId; /** * 学生班长Id。 */ - @Column(name = "leader_id") + @TableField(value = "leader_id") private Long leaderId; /** * 已完成课时数量。 */ - @Column(name = "finish_class_hour") + @TableField(value = "finish_class_hour") private Integer finishClassHour; /** * 班级级别(0: 初级班 1: 培优班 2: 冲刺提分班 3: 竞赛班)。 */ - @Column(name = "class_level") + @TableField(value = "class_level") private Integer classLevel; /** * 创建用户。 */ - @Column(name = "create_user_id") + @TableField(value = "create_user_id") private Long createUserId; /** * 班级创建时间。 */ - @Column(name = "create_time") + @TableField(value = "create_time") private Date createTime; /** * 逻辑删除标记字段(1: 正常 -1: 已删除)。 */ - @DeletedFlagColumn + @TableLogic private Integer status; @RelationDict( @@ -85,7 +83,7 @@ public class StudentClass { slaveModelClass = SchoolInfo.class, slaveIdField = "schoolId", slaveNameField = "schoolName") - @Transient + @TableField(exist = false) private Map schoolIdDictMap; @RelationDict( @@ -94,13 +92,13 @@ public class StudentClass { slaveModelClass = Student.class, slaveIdField = "studentId", slaveNameField = "studentName") - @Transient + @TableField(exist = false) private Map leaderIdDictMap; @RelationConstDict( masterIdField = "classLevel", constantDictClass = ClassLevel.class) - @Transient + @TableField(exist = false) private Map classLevelDictMap; @Mapper diff --git a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/service/impl/CourseServiceImpl.java b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/service/impl/CourseServiceImpl.java index bfaf2185..90c9e2cb 100644 --- a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/service/impl/CourseServiceImpl.java +++ b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/service/impl/CourseServiceImpl.java @@ -1,5 +1,7 @@ package com.orange.demo.webadmin.app.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.orange.demo.webadmin.app.service.*; import com.orange.demo.webadmin.app.dao.*; import com.orange.demo.webadmin.app.model.*; @@ -79,7 +81,8 @@ public class CourseServiceImpl extends BaseService implements Cour course.setCreateTime(originalCourse.getCreateTime()); course.setUpdateTime(new Date()); // 这里重点提示,在执行主表数据更新之前,如果有哪些字段不支持修改操作,请用原有数据对象字段替换当前数据字段。 - return courseMapper.updateByPrimaryKey(course) == 1; + UpdateWrapper uw = this.createUpdateQueryForNullValue(course, course.getCourseId()); + return courseMapper.update(course, uw) == 1; } /** @@ -91,14 +94,13 @@ public class CourseServiceImpl extends BaseService implements Cour @Transactional(rollbackFor = Exception.class) @Override public boolean remove(Long courseId) { - // 这里先删除主数据 - if (!this.removeById(courseId)) { + if (courseMapper.deleteById(courseId) == 0) { return false; } // 开始删除多对多父表的关联 ClassCourse classCourse = new ClassCourse(); classCourse.setCourseId(courseId); - classCourseMapper.delete(classCourse); + classCourseMapper.delete(new QueryWrapper<>(classCourse)); return true; } diff --git a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/service/impl/SchoolInfoServiceImpl.java b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/service/impl/SchoolInfoServiceImpl.java index d3a76bf7..67afce07 100644 --- a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/service/impl/SchoolInfoServiceImpl.java +++ b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/service/impl/SchoolInfoServiceImpl.java @@ -1,5 +1,6 @@ package com.orange.demo.webadmin.app.service.impl; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.orange.demo.webadmin.app.service.*; import com.orange.demo.webadmin.app.dao.*; import com.orange.demo.webadmin.app.model.*; @@ -68,7 +69,8 @@ public class SchoolInfoServiceImpl extends BaseService impleme @Override public boolean update(SchoolInfo schoolInfo, SchoolInfo originalSchoolInfo) { // 这里重点提示,在执行主表数据更新之前,如果有哪些字段不支持修改操作,请用原有数据对象字段替换当前数据字段。 - return schoolInfoMapper.updateByPrimaryKey(schoolInfo) == 1; + UpdateWrapper uw = this.createUpdateQueryForNullValue(schoolInfo, schoolInfo.getSchoolId()); + return schoolInfoMapper.update(schoolInfo, uw) == 1; } /** @@ -80,8 +82,7 @@ public class SchoolInfoServiceImpl extends BaseService impleme @Transactional(rollbackFor = Exception.class) @Override public boolean remove(Long schoolId) { - // 这里先删除主数据 - return this.removeById(schoolId); + return schoolInfoMapper.deleteById(schoolId) == 1; } /** diff --git a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/service/impl/StudentActionTransServiceImpl.java b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/service/impl/StudentActionTransServiceImpl.java index f13a8022..a6639f67 100644 --- a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/service/impl/StudentActionTransServiceImpl.java +++ b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/service/impl/StudentActionTransServiceImpl.java @@ -1,5 +1,6 @@ package com.orange.demo.webadmin.app.service.impl; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.orange.demo.webadmin.app.service.*; import com.orange.demo.webadmin.app.dao.*; import com.orange.demo.webadmin.app.model.*; @@ -70,7 +71,8 @@ public class StudentActionTransServiceImpl extends BaseService uw = this.createUpdateQueryForNullValue(studentActionTrans, studentActionTrans.getTransId()); + return studentActionTransMapper.update(studentActionTrans, uw) == 1; } /** @@ -82,8 +84,7 @@ public class StudentActionTransServiceImpl extends BaseService imp public boolean update(StudentClass studentClass, StudentClass originalStudentClass) { studentClass.setCreateUserId(originalStudentClass.getCreateUserId()); studentClass.setCreateTime(originalStudentClass.getCreateTime()); - studentClass.setStatus(GlobalDeletedFlag.NORMAL); // 这里重点提示,在执行主表数据更新之前,如果有哪些字段不支持修改操作,请用原有数据对象字段替换当前数据字段。 - return studentClassMapper.updateByPrimaryKey(studentClass) == 1; + UpdateWrapper uw = this.createUpdateQueryForNullValue(studentClass, studentClass.getClassId()); + return studentClassMapper.update(studentClass, uw) == 1; } /** @@ -98,17 +99,16 @@ public class StudentClassServiceImpl extends BaseService imp @Transactional(rollbackFor = Exception.class) @Override public boolean remove(Long classId) { - // 这里先删除主数据 - if (!this.removeById(classId)) { + if (studentClassMapper.deleteById(classId) == 0) { return false; } // 开始删除多对多子表的关联 ClassCourse classCourse = new ClassCourse(); classCourse.setClassId(classId); - classCourseMapper.delete(classCourse); + classCourseMapper.delete(new QueryWrapper<>(classCourse)); ClassStudent classStudent = new ClassStudent(); classStudent.setClassId(classId); - classStudentMapper.delete(classStudent); + classStudentMapper.delete(new QueryWrapper<>(classStudent)); return true; } @@ -156,8 +156,8 @@ public class StudentClassServiceImpl extends BaseService imp for (ClassCourse classCourse : classCourseList) { classCourse.setClassId(classId); MyModelUtil.setDefaultValue(classCourse, "courseOrder", 0); + classCourseMapper.insert(classCourse); } - classCourseMapper.insertList(classCourseList); } /** @@ -169,11 +169,13 @@ public class StudentClassServiceImpl extends BaseService imp @Transactional(rollbackFor = Exception.class) @Override public boolean updateClassCourse(ClassCourse classCourse) { - Example e = new Example(ClassCourse.class); - e.createCriteria() - .andEqualTo("classId", classCourse.getClassId()) - .andEqualTo("courseId", classCourse.getCourseId()); - return classCourseMapper.updateByExample(classCourse, e) > 0; + ClassCourse filter = new ClassCourse(); + filter.setClassId(classCourse.getClassId()); + filter.setCourseId(classCourse.getCourseId()); + UpdateWrapper uw = + BaseService.createUpdateQueryForNullValue(classCourse, ClassCourse.class); + uw.setEntity(filter); + return classCourseMapper.update(classCourse, uw) > 0; } /** @@ -185,11 +187,10 @@ public class StudentClassServiceImpl extends BaseService imp */ @Override public ClassCourse getClassCourse(Long classId, Long courseId) { - Example e = new Example(ClassCourse.class); - e.createCriteria() - .andEqualTo("classId", classId) - .andEqualTo("courseId", courseId); - return classCourseMapper.selectOneByExample(e); + ClassCourse filter = new ClassCourse(); + filter.setClassId(classId); + filter.setCourseId(courseId); + return classCourseMapper.selectOne(new QueryWrapper<>(filter)); } /** @@ -205,7 +206,7 @@ public class StudentClassServiceImpl extends BaseService imp ClassCourse filter = new ClassCourse(); filter.setClassId(classId); filter.setCourseId(courseId); - return classCourseMapper.delete(filter) > 0; + return classCourseMapper.delete(new QueryWrapper<>(filter)) > 0; } /** @@ -219,8 +220,8 @@ public class StudentClassServiceImpl extends BaseService imp public void addClassStudentList(List classStudentList, Long classId) { for (ClassStudent classStudent : classStudentList) { classStudent.setClassId(classId); + classStudentMapper.insert(classStudent); } - classStudentMapper.insertList(classStudentList); } /** @@ -236,7 +237,7 @@ public class StudentClassServiceImpl extends BaseService imp ClassStudent filter = new ClassStudent(); filter.setClassId(classId); filter.setStudentId(studentId); - return classStudentMapper.delete(filter) > 0; + return classStudentMapper.delete(new QueryWrapper<>(filter)) > 0; } /** diff --git a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/service/impl/StudentServiceImpl.java b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/service/impl/StudentServiceImpl.java index 13f6be78..a06b6671 100644 --- a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/service/impl/StudentServiceImpl.java +++ b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/service/impl/StudentServiceImpl.java @@ -1,5 +1,7 @@ package com.orange.demo.webadmin.app.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.orange.demo.application.common.constant.StudentStatus; import com.orange.demo.webadmin.app.service.*; import com.orange.demo.webadmin.app.dao.*; @@ -81,7 +83,8 @@ public class StudentServiceImpl extends BaseService implements St public boolean update(Student student, Student originalStudent) { student.setRegisterTime(originalStudent.getRegisterTime()); // 这里重点提示,在执行主表数据更新之前,如果有哪些字段不支持修改操作,请用原有数据对象字段替换当前数据字段。 - return studentMapper.updateByPrimaryKey(student) == 1; + UpdateWrapper uw = this.createUpdateQueryForNullValue(student, student.getStudentId()); + return studentMapper.update(student, uw) == 1; } /** @@ -93,14 +96,13 @@ public class StudentServiceImpl extends BaseService implements St @Transactional(rollbackFor = Exception.class) @Override public boolean remove(Long studentId) { - // 这里先删除主数据 - if (!this.removeById(studentId)) { + if (studentMapper.deleteById(studentId) == 0) { return false; } // 开始删除多对多父表的关联 ClassStudent classStudent = new ClassStudent(); classStudent.setStudentId(studentId); - classStudentMapper.delete(classStudent); + classStudentMapper.delete(new QueryWrapper<>(classStudent)); return true; } diff --git a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/vo/AreaCodeVo.java b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/vo/AreaCodeVo.java index caead80f..527f254f 100644 --- a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/vo/AreaCodeVo.java +++ b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/vo/AreaCodeVo.java @@ -1,5 +1,7 @@ package com.orange.demo.webadmin.app.vo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; /** @@ -8,26 +10,31 @@ import lombok.Data; * @author Jerry * @date 2020-09-24 */ +@ApiModel("行政区划实体对象") @Data public class AreaCodeVo { /** * 行政区划主键Id */ + @ApiModelProperty(value = "行政区划主键Id", required = true) private Long areaId; /** * 行政区划名称 */ + @ApiModelProperty(value = "行政区划名称") private String areaName; /** * 行政区划级别 (1: 省级别 2: 市级别 3: 区级别) */ + @ApiModelProperty(value = "行政区划级别") private Integer areaLevel; /** * 父级行政区划Id */ + @ApiModelProperty(value = "父级行政区划Id") private Long parentId; } \ No newline at end of file diff --git a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/vo/ClassCourseVo.java b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/vo/ClassCourseVo.java index b51deb1e..f7d4199b 100644 --- a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/vo/ClassCourseVo.java +++ b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/vo/ClassCourseVo.java @@ -1,5 +1,7 @@ package com.orange.demo.webadmin.app.vo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; /** @@ -8,21 +10,25 @@ import lombok.Data; * @author Jerry * @date 2020-09-24 */ +@ApiModel("ClassCourseVO实体对象") @Data public class ClassCourseVo { /** * 班级Id。 */ + @ApiModelProperty(value = "班级Id") private Long classId; /** * 课程Id。 */ + @ApiModelProperty(value = "课程Id") private Long courseId; /** * 课程顺序(数值越小越靠前)。 */ + @ApiModelProperty(value = "课程顺序(数值越小越靠前)") private Integer courseOrder; } diff --git a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/vo/ClassStudentVo.java b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/vo/ClassStudentVo.java index 3480834d..e8d86963 100644 --- a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/vo/ClassStudentVo.java +++ b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/vo/ClassStudentVo.java @@ -1,5 +1,7 @@ package com.orange.demo.webadmin.app.vo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; /** @@ -8,16 +10,19 @@ import lombok.Data; * @author Jerry * @date 2020-09-24 */ +@ApiModel("ClassStudentVO实体对象") @Data public class ClassStudentVo { /** * 班级Id。 */ + @ApiModelProperty(value = "班级Id") private Long classId; /** * 学生Id。 */ + @ApiModelProperty(value = "学生Id") private Long studentId; } diff --git a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/vo/CourseTransStatsVo.java b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/vo/CourseTransStatsVo.java index 8de1b477..bf8af87a 100644 --- a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/vo/CourseTransStatsVo.java +++ b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/vo/CourseTransStatsVo.java @@ -1,5 +1,7 @@ package com.orange.demo.webadmin.app.vo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.util.Date; @@ -11,66 +13,79 @@ import java.util.Map; * @author Jerry * @date 2020-09-24 */ +@ApiModel("CourseTransStatsVO实体对象") @Data public class CourseTransStatsVo { /** * 主键Id。 */ + @ApiModelProperty(value = "主键Id") private Long statsId; /** * 统计日期。 */ + @ApiModelProperty(value = "统计日期") private Date statsDate; /** * 科目Id。 */ + @ApiModelProperty(value = "科目Id") private Integer subjectId; /** * 年级Id。 */ + @ApiModelProperty(value = "年级Id") private Integer gradeId; /** * 年级名称。 */ + @ApiModelProperty(value = "年级名称") private String gradeName; /** * 课程Id。 */ + @ApiModelProperty(value = "课程Id") private Long courseId; /** * 课程名称。 */ + @ApiModelProperty(value = "课程名称") private String courseName; /** * 学生上课次数。 */ + @ApiModelProperty(value = "学生上课次数") private Integer studentAttendCount; /** * 学生献花数量。 */ + @ApiModelProperty(value = "学生献花数量") private Integer studentFlowerAmount; /** * 学生献花次数。 */ + @ApiModelProperty(value = "学生献花次数") private Integer studentFlowerCount; /** * gradeId 字典关联数据。 */ + @ApiModelProperty(value = "gradeId 字典关联数据") private Map gradeIdDictMap; /** * subjectId 常量字典关联数据。 */ + @ApiModelProperty(value = "subjectId 常量字典关联数据") private Map subjectIdDictMap; } diff --git a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/vo/CourseVo.java b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/vo/CourseVo.java index cff36746..fbe54fc7 100644 --- a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/vo/CourseVo.java +++ b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/vo/CourseVo.java @@ -1,5 +1,7 @@ package com.orange.demo.webadmin.app.vo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; @@ -12,86 +14,103 @@ import java.util.Map; * @author Jerry * @date 2020-09-24 */ +@ApiModel("CourseVO实体对象") @Data public class CourseVo { /** * 主键Id。 */ + @ApiModelProperty(value = "主键Id") private Long courseId; /** * 课程名称。 */ + @ApiModelProperty(value = "课程名称") private String courseName; /** * 课程价格。 */ + @ApiModelProperty(value = "课程价格") private BigDecimal price; /** * 课程描述。 */ + @ApiModelProperty(value = "课程描述") private String description; /** * 课程难度(0: 容易 1: 普通 2: 很难)。 */ + @ApiModelProperty(value = "课程难度(0: 容易 1: 普通 2: 很难)") private Integer difficulty; /** * 年级Id。 */ + @ApiModelProperty(value = "年级Id") private Integer gradeId; /** * 学科Id。 */ + @ApiModelProperty(value = "学科Id") private Integer subjectId; /** * 课时数量。 */ + @ApiModelProperty(value = "课时数量") private Integer classHour; /** * 多张课程图片地址。 */ + @ApiModelProperty(value = "多张课程图片地址") private String pictureUrl; /** * 创建用户Id。 */ + @ApiModelProperty(value = "创建用户Id") private Long createUserId; /** * 创建时间。 */ + @ApiModelProperty(value = "创建时间") private Date createTime; /** * 最后修改时间。 */ + @ApiModelProperty(value = "最后修改时间") private Date updateTime; /** * courseId 的多对多关联表数据对象,数据对应类型为ClassCourseVo。 */ + @ApiModelProperty(value = "courseId 的多对多关联表数据对象,数据对应类型为ClassCourseVo") private Map classCourse; /** * gradeId 字典关联数据。 */ + @ApiModelProperty(value = "gradeId 字典关联数据") private Map gradeIdDictMap; /** * difficulty 常量字典关联数据。 */ + @ApiModelProperty(value = "difficulty 常量字典关联数据") private Map difficultyDictMap; /** * subjectId 常量字典关联数据。 */ + @ApiModelProperty(value = "subjectId 常量字典关联数据") private Map subjectIdDictMap; } diff --git a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/vo/GradeVo.java b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/vo/GradeVo.java index 6181ae29..bf2021f6 100644 --- a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/vo/GradeVo.java +++ b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/vo/GradeVo.java @@ -1,5 +1,7 @@ package com.orange.demo.webadmin.app.vo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; /** @@ -8,16 +10,19 @@ import lombok.Data; * @author Jerry * @date 2020-09-24 */ +@ApiModel("GradeVO实体对象") @Data public class GradeVo { /** * 主键Id。 */ + @ApiModelProperty(value = "主键Id") private Integer gradeId; /** * 年级名称。 */ + @ApiModelProperty(value = "年级名称") private String gradeName; } diff --git a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/vo/SchoolInfoVo.java b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/vo/SchoolInfoVo.java index f8a62c9e..19a59ebe 100644 --- a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/vo/SchoolInfoVo.java +++ b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/vo/SchoolInfoVo.java @@ -1,5 +1,7 @@ package com.orange.demo.webadmin.app.vo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.util.Map; @@ -10,36 +12,43 @@ import java.util.Map; * @author Jerry * @date 2020-09-24 */ +@ApiModel("SchoolInfoVO实体对象") @Data public class SchoolInfoVo { /** * 学校Id。 */ + @ApiModelProperty(value = "学校Id") private Long schoolId; /** * 学校名称。 */ + @ApiModelProperty(value = "学校名称") private String schoolName; /** * 所在省Id。 */ + @ApiModelProperty(value = "所在省Id") private Long provinceId; /** * 所在城市Id。 */ + @ApiModelProperty(value = "所在城市Id") private Long cityId; /** * provinceId 字典关联数据。 */ + @ApiModelProperty(value = "provinceId 字典关联数据") private Map provinceIdDictMap; /** * cityId 字典关联数据。 */ + @ApiModelProperty(value = "cityId 字典关联数据") private Map cityIdDictMap; } diff --git a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/vo/StudentActionStatsVo.java b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/vo/StudentActionStatsVo.java index 6e4e7067..20b0a1ba 100644 --- a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/vo/StudentActionStatsVo.java +++ b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/vo/StudentActionStatsVo.java @@ -1,5 +1,7 @@ package com.orange.demo.webadmin.app.vo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.util.Date; @@ -11,126 +13,151 @@ import java.util.Map; * @author Jerry * @date 2020-09-24 */ +@ApiModel("StudentActionStatsVO实体对象") @Data public class StudentActionStatsVo { /** * 主键Id。 */ + @ApiModelProperty(value = "主键Id") private Long statsId; /** * 统计日期。 */ + @ApiModelProperty(value = "统计日期") private Date statsDate; /** * 统计小时。 */ + @ApiModelProperty(value = "统计小时") private Date statsMonth; /** * 年级Id。 */ + @ApiModelProperty(value = "年级Id") private Integer gradeId; /** * 学生所在省Id。 */ + @ApiModelProperty(value = "学生所在省Id") private Long provinceId; /** * 学生所在城市Id。 */ + @ApiModelProperty(value = "学生所在城市Id") private Long cityId; /** * 购课学币数量。 */ + @ApiModelProperty(value = "购课学币数量") private Integer buyCourseAmount; /** * 购买课程次数。 */ + @ApiModelProperty(value = "购买课程次数") private Integer buyCourseCount; /** * 购买视频学币数量。 */ + @ApiModelProperty(value = "购买视频学币数量") private Integer buyVideoAmount; /** * 购买视频次数。 */ + @ApiModelProperty(value = "购买视频次数") private Integer buyVideoCount; /** * 购买作业学币数量。 */ + @ApiModelProperty(value = "购买作业学币数量") private Integer buyPaperAmount; /** * 购买作业次数。 */ + @ApiModelProperty(value = "购买作业次数") private Integer buyPaperCount; /** * 购买献花数量。 */ + @ApiModelProperty(value = "购买献花数量") private Integer buyFlowerAmount; /** * 购买献花次数。 */ + @ApiModelProperty(value = "购买献花次数") private Integer buyFlowerCount; /** * 充值学币数量。 */ + @ApiModelProperty(value = "充值学币数量") private Integer rechargeCoinAmount; /** * 充值学币次数。 */ + @ApiModelProperty(value = "充值学币次数") private Integer rechargeCoinCount; /** * 线下课程上课次数。 */ + @ApiModelProperty(value = "线下课程上课次数") private Integer doCourseCount; /** * 观看视频次数。 */ + @ApiModelProperty(value = "观看视频次数") private Integer watchVideoCount; /** * 购买献花消费学币数量。 */ + @ApiModelProperty(value = "购买献花消费学币数量") private Integer watchVideoTotalSecond; /** * 做题数量。 */ + @ApiModelProperty(value = "做题数量") private Integer doExerciseCount; /** * 做题正确的数量。 */ + @ApiModelProperty(value = "做题正确的数量") private Integer doExerciseCorrectCount; /** * gradeId 字典关联数据。 */ + @ApiModelProperty(value = "gradeId 字典关联数据") private Map gradeIdDictMap; /** * provinceId 字典关联数据。 */ + @ApiModelProperty(value = "provinceId 字典关联数据") private Map provinceIdDictMap; /** * cityId 字典关联数据。 */ + @ApiModelProperty(value = "cityId 字典关联数据") private Map cityIdDictMap; } diff --git a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/vo/StudentActionTransVo.java b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/vo/StudentActionTransVo.java index f3ed71b1..c79e99e0 100644 --- a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/vo/StudentActionTransVo.java +++ b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/vo/StudentActionTransVo.java @@ -1,5 +1,7 @@ package com.orange.demo.webadmin.app.vo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.util.Date; @@ -11,101 +13,121 @@ import java.util.Map; * @author Jerry * @date 2020-09-24 */ +@ApiModel("StudentActionTransVO实体对象") @Data public class StudentActionTransVo { /** * 主键Id。 */ + @ApiModelProperty(value = "主键Id") private Long transId; /** * 学生Id。 */ + @ApiModelProperty(value = "学生Id") private Long studentId; /** * 学生名称。 */ + @ApiModelProperty(value = "学生名称") private String studentName; /** * 学生校区。 */ + @ApiModelProperty(value = "学生校区") private Long schoolId; /** * 年级Id。 */ + @ApiModelProperty(value = "年级Id") private Integer gradeId; /** * 行为类型(0: 充值 1: 购课 2: 上课签到 3: 上课签退 4: 看视频课 5: 做作业 6: 刷题 7: 献花)。 */ + @ApiModelProperty(value = "行为类型(0: 充值 1: 购课 2: 上课签到 3: 上课签退 4: 看视频课 5: 做作业 6: 刷题 7: 献花)") private Integer actionType; /** * 设备类型(0: iOS 1: Android 2: PC)。 */ + @ApiModelProperty(value = "设备类型(0: iOS 1: Android 2: PC)") private Integer deviceType; /** * 看视频秒数。 */ + @ApiModelProperty(value = "看视频秒数") private Integer watchVideoSeconds; /** * 购买献花数量。 */ + @ApiModelProperty(value = "购买献花数量") private Integer flowerCount; /** * 购买作业数量。 */ + @ApiModelProperty(value = "购买作业数量") private Integer paperCount; /** * 购买视频数量。 */ + @ApiModelProperty(value = "购买视频数量") private Integer videoCount; /** * 购买课程数量。 */ + @ApiModelProperty(value = "购买课程数量") private Integer courseCount; /** * 充值学币数量。 */ + @ApiModelProperty(value = "充值学币数量") private Integer coinCount; /** * 做题是否正确标记。 */ + @ApiModelProperty(value = "做题是否正确标记") private Integer exerciseCorrectFlag; /** * 发生时间。 */ + @ApiModelProperty(value = "发生时间") private Date createTime; /** * schoolId 字典关联数据。 */ + @ApiModelProperty(value = "schoolId 字典关联数据") private Map schoolIdDictMap; /** * gradeId 字典关联数据。 */ + @ApiModelProperty(value = "gradeId 字典关联数据") private Map gradeIdDictMap; /** * actionType 常量字典关联数据。 */ + @ApiModelProperty(value = "actionType 常量字典关联数据") private Map actionTypeDictMap; /** * deviceType 常量字典关联数据。 */ + @ApiModelProperty(value = "deviceType 常量字典关联数据") private Map deviceTypeDictMap; } diff --git a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/vo/StudentClassVo.java b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/vo/StudentClassVo.java index 39956a3e..0e5ddc99 100644 --- a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/vo/StudentClassVo.java +++ b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/vo/StudentClassVo.java @@ -1,5 +1,7 @@ package com.orange.demo.webadmin.app.vo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.util.Date; @@ -11,61 +13,73 @@ import java.util.Map; * @author Jerry * @date 2020-09-24 */ +@ApiModel("StudentClassVO实体对象") @Data public class StudentClassVo { /** * 班级Id。 */ + @ApiModelProperty(value = "班级Id") private Long classId; /** * 班级名称。 */ + @ApiModelProperty(value = "班级名称") private String className; /** * 学校Id。 */ + @ApiModelProperty(value = "学校Id") private Long schoolId; /** * 学生班长Id。 */ + @ApiModelProperty(value = "学生班长Id") private Long leaderId; /** * 已完成课时数量。 */ + @ApiModelProperty(value = "已完成课时数量") private Integer finishClassHour; /** * 班级级别(0: 初级班 1: 培优班 2: 冲刺提分班 3: 竞赛班)。 */ + @ApiModelProperty(value = "班级级别(0: 初级班 1: 培优班 2: 冲刺提分班 3: 竞赛班)") private Integer classLevel; /** * 创建用户。 */ + @ApiModelProperty(value = "创建用户") private Long createUserId; /** * 班级创建时间。 */ + @ApiModelProperty(value = "班级创建时间") private Date createTime; /** * schoolId 字典关联数据。 */ + @ApiModelProperty(value = "schoolId 字典关联数据") private Map schoolIdDictMap; /** * leaderId 字典关联数据。 */ + @ApiModelProperty(value = "leaderId 字典关联数据") private Map leaderIdDictMap; /** * classLevel 常量字典关联数据。 */ + @ApiModelProperty(value = "classLevel 常量字典关联数据") private Map classLevelDictMap; } diff --git a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/vo/StudentVo.java b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/vo/StudentVo.java index 94e6fc3e..a12c9120 100644 --- a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/vo/StudentVo.java +++ b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/app/vo/StudentVo.java @@ -1,5 +1,7 @@ package com.orange.demo.webadmin.app.vo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.util.Date; @@ -11,121 +13,145 @@ import java.util.Map; * @author Jerry * @date 2020-09-24 */ +@ApiModel("StudentVO实体对象") @Data public class StudentVo { /** * 学生Id。 */ + @ApiModelProperty(value = "学生Id") private Long studentId; /** * 登录手机。 */ + @ApiModelProperty(value = "登录手机") private String loginMobile; /** * 学生姓名。 */ + @ApiModelProperty(value = "学生姓名") private String studentName; /** * 所在省份Id。 */ + @ApiModelProperty(value = "所在省份Id") private Long provinceId; /** * 所在城市Id。 */ + @ApiModelProperty(value = "所在城市Id") private Long cityId; /** * 区县Id。 */ + @ApiModelProperty(value = "区县Id") private Long districtId; /** * 学生性别 (0: 女生 1: 男生)。 */ + @ApiModelProperty(value = "学生性别 (0: 女生 1: 男生)") private Integer gender; /** * 生日。 */ + @ApiModelProperty(value = "生日") private Date birthday; /** * 经验等级 (0: 初级 1: 中级 2: 高级 3: 资深)。 */ + @ApiModelProperty(value = "经验等级 (0: 初级 1: 中级 2: 高级 3: 资深)") private Integer experienceLevel; /** * 总共充值学币数量。 */ + @ApiModelProperty(value = "总共充值学币数量") private Integer totalCoin; /** * 可用学币数量。 */ + @ApiModelProperty(value = "可用学币数量") private Integer leftCoin; /** * 年级Id。 */ + @ApiModelProperty(value = "年级Id") private Integer gradeId; /** * 校区Id。 */ + @ApiModelProperty(value = "校区Id") private Long schoolId; /** * 注册时间。 */ + @ApiModelProperty(value = "注册时间") private Date registerTime; /** * 学生状态 (0: 正常 1: 锁定 2: 注销)。 */ + @ApiModelProperty(value = "学生状态 (0: 正常 1: 锁定 2: 注销)") private Integer status; /** * provinceId 字典关联数据。 */ + @ApiModelProperty(value = "provinceId 字典关联数据") private Map provinceIdDictMap; /** * cityId 字典关联数据。 */ + @ApiModelProperty(value = "cityId 字典关联数据") private Map cityIdDictMap; /** * districtId 字典关联数据。 */ + @ApiModelProperty(value = "districtId 字典关联数据") private Map districtIdDictMap; /** * gradeId 字典关联数据。 */ + @ApiModelProperty(value = "gradeId 字典关联数据") private Map gradeIdDictMap; /** * schoolId 字典关联数据。 */ + @ApiModelProperty(value = "schoolId 字典关联数据") private Map schoolIdDictMap; /** * gender 常量字典关联数据。 */ + @ApiModelProperty(value = "gender 常量字典关联数据") private Map genderDictMap; /** * experienceLevel 常量字典关联数据。 */ + @ApiModelProperty(value = "experienceLevel 常量字典关联数据") private Map experienceLevelDictMap; /** * status 常量字典关联数据。 */ + @ApiModelProperty(value = "status 常量字典关联数据") private Map statusDictMap; } diff --git a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/config/DataSourceConfig.java b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/config/DataSourceConfig.java index 04611585..a28bad7d 100644 --- a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/config/DataSourceConfig.java +++ b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/config/DataSourceConfig.java @@ -6,7 +6,7 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Primary; import org.springframework.transaction.annotation.EnableTransactionManagement; -import tk.mybatis.spring.annotation.MapperScan; +import org.mybatis.spring.annotation.MapperScan; import javax.sql.DataSource; diff --git a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/controller/LoginController.java b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/controller/LoginController.java index 7826484f..d718122a 100644 --- a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/controller/LoginController.java +++ b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/controller/LoginController.java @@ -3,6 +3,10 @@ package com.orange.demo.webadmin.upms.controller; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.serializer.SerializerFeature; +import com.github.xiaoymin.knife4j.annotations.ApiSupport; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; import lombok.extern.slf4j.Slf4j; import com.orange.demo.webadmin.config.ApplicationConfig; import com.orange.demo.webadmin.upms.service.*; @@ -34,6 +38,8 @@ import java.util.concurrent.TimeUnit; * @author Jerry * @date 2020-09-24 */ +@ApiSupport(order = 1) +@Api(tags = "用户登录接口") @Slf4j @RestController @RequestMapping("/admin/upms/login") @@ -63,6 +69,12 @@ public class LoginController { * @param password 密码。 * @return 应答结果对象,其中包括JWT的Token数据,以及菜单列表。 */ + @ApiImplicitParams({ + // 这里包含密码密文,仅用于方便开发期间的接口测试,集成测试和发布阶段,需要将当前注解去掉。 + // 如果您重新生成了公钥和私钥,请替换password的缺省值。 + @ApiImplicitParam(name = "loginName", defaultValue = "admin"), + @ApiImplicitParam(name = "password", defaultValue = "IP3ccke3GhH45iGHB5qP9p7iZw6xUyj28Ju10rnBiPKOI35sc%2BjI7%2FdsjOkHWMfUwGYGfz8ik31HC2Ruk%2Fhkd9f6RPULTHj7VpFdNdde2P9M4mQQnFBAiPM7VT9iW3RyCtPlJexQ3nAiA09OqG%2F0sIf1kcyveSrulxembARDbDo%3D") + }) @NoAuthInterface @PostMapping("/doLogin") public ResponseResult doLogin( diff --git a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/controller/LoginUserController.java b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/controller/LoginUserController.java index e18a8f59..d0ac05c3 100644 --- a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/controller/LoginUserController.java +++ b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/controller/LoginUserController.java @@ -6,6 +6,7 @@ import com.alibaba.fastjson.JSON; import com.orange.demo.common.core.annotation.MyRequestBody; import com.orange.demo.common.core.object.*; import com.orange.demo.common.core.util.RedisKeyUtil; +import io.swagger.annotations.Api; import lombok.extern.slf4j.Slf4j; import org.redisson.api.RBucket; import org.redisson.api.RedissonClient; @@ -22,6 +23,7 @@ import java.util.*; * @author Jerry * @date 2020-09-24 */ +@Api(tags = "在线用户接口") @Slf4j @RestController @RequestMapping("/admin/upms/loginUser") @@ -40,7 +42,6 @@ public class LoginUserController { @PostMapping("/list") public ResponseResult> list( @MyRequestBody String loginName, @MyRequestBody MyPageParam pageParam) { - List loginUserInfoList = new LinkedList<>(); int queryCount = pageParam.getPageNum() * pageParam.getPageSize(); int skipCount = (pageParam.getPageNum() - 1) * pageParam.getPageSize(); String patternKey; @@ -49,17 +50,15 @@ public class LoginUserController { } else { patternKey = RedisKeyUtil.getSessionIdPrefix(loginName) + "*"; } - long totalCount = 0L; - int pos = 0; + List loginUserInfoList = new LinkedList<>(); Iterable keys = redissonClient.getKeys().getKeysByPattern(patternKey); for (String key : keys) { - totalCount++; - if (pos++ < skipCount) { - continue; - } loginUserInfoList.add(this.buildTokenDataByRedisKey(key)); } - return ResponseResult.success(new MyPageData<>(loginUserInfoList, totalCount)); + loginUserInfoList.sort((o1, o2) -> (int) (o2.getLoginTime().getTime() - o1.getLoginTime().getTime())); + int toIndex = Math.min(skipCount + pageParam.getPageSize(), loginUserInfoList.size()); + List resultList = loginUserInfoList.subList(skipCount, toIndex); + return ResponseResult.success(new MyPageData<>(resultList, (long) loginUserInfoList.size())); } /** diff --git a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/controller/SysMenuController.java b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/controller/SysMenuController.java index 26674fdd..417a69cd 100644 --- a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/controller/SysMenuController.java +++ b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/controller/SysMenuController.java @@ -1,6 +1,8 @@ package com.orange.demo.webadmin.upms.controller; import cn.hutool.core.util.ObjectUtil; +import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; +import io.swagger.annotations.Api; import lombok.extern.slf4j.Slf4j; import com.orange.demo.webadmin.upms.dto.SysMenuDto; import com.orange.demo.webadmin.upms.vo.SysMenuVo; @@ -24,6 +26,7 @@ import java.util.*; * @author Jerry * @date 2020-09-24 */ +@Api(tags = "菜单管理接口") @Slf4j @RestController @RequestMapping("/admin/upms/sysMenu") @@ -40,6 +43,7 @@ public class SysMenuController { * @return 应答结果对象,包含新增菜单的主键Id。 */ @SuppressWarnings("unchecked") + @ApiOperationSupport(ignoreParameters = {"sysMenuDto.menuId"}) @PostMapping("/add") public ResponseResult add( @MyRequestBody SysMenuDto sysMenuDto, @MyRequestBody String permCodeIdListString) { diff --git a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/controller/SysPermCodeController.java b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/controller/SysPermCodeController.java index 7087a551..3f5dc25b 100644 --- a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/controller/SysPermCodeController.java +++ b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/controller/SysPermCodeController.java @@ -1,5 +1,7 @@ package com.orange.demo.webadmin.upms.controller; +import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; +import io.swagger.annotations.Api; import lombok.extern.slf4j.Slf4j; import com.orange.demo.webadmin.upms.dto.SysPermCodeDto; import com.orange.demo.webadmin.upms.vo.SysPermCodeVo; @@ -23,6 +25,7 @@ import java.util.*; * @author Jerry * @date 2020-09-24 */ +@Api(tags = "权限字管理接口") @Slf4j @RestController @RequestMapping("/admin/upms/sysPermCode") @@ -39,6 +42,7 @@ public class SysPermCodeController { * @return 应答结果对象,包含新增权限字的主键Id。 */ @SuppressWarnings("unchecked") + @ApiOperationSupport(ignoreParameters = {"sysPermCodeDto.permCodeId"}) @PostMapping("/add") public ResponseResult add( @MyRequestBody SysPermCodeDto sysPermCodeDto, @MyRequestBody String permIdListString) { diff --git a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/controller/SysPermController.java b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/controller/SysPermController.java index 5767ff61..591d32db 100644 --- a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/controller/SysPermController.java +++ b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/controller/SysPermController.java @@ -1,5 +1,7 @@ package com.orange.demo.webadmin.upms.controller; +import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; +import io.swagger.annotations.Api; import com.github.pagehelper.Page; import com.github.pagehelper.page.PageMethod; import lombok.extern.slf4j.Slf4j; @@ -25,6 +27,7 @@ import java.util.Map; * @author Jerry * @date 2020-09-24 */ +@Api(tags = "权限资源管理接口") @Slf4j @RestController @RequestMapping("/admin/upms/sysPerm") @@ -39,6 +42,7 @@ public class SysPermController { * @param sysPermDto 新增权限资源对象。 * @return 应答结果对象,包含新增权限资源的主键Id。 */ + @ApiOperationSupport(ignoreParameters = {"sysPermDto.permId"}) @PostMapping("/add") public ResponseResult add(@MyRequestBody SysPermDto sysPermDto) { String errorMessage = MyCommonUtil.getModelValidationError(sysPermDto); diff --git a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/controller/SysPermModuleController.java b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/controller/SysPermModuleController.java index 6ff9fc12..dfc967a5 100644 --- a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/controller/SysPermModuleController.java +++ b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/controller/SysPermModuleController.java @@ -1,5 +1,7 @@ package com.orange.demo.webadmin.upms.controller; +import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; +import io.swagger.annotations.Api; import lombok.extern.slf4j.Slf4j; import com.orange.demo.webadmin.upms.dto.SysPermModuleDto; import com.orange.demo.webadmin.upms.vo.SysPermModuleVo; @@ -27,6 +29,7 @@ import java.util.Map; * @author Jerry * @date 2020-09-24 */ +@Api(tags = "权限资源模块管理接口") @Slf4j @RestController @RequestMapping("/admin/upms/sysPermModule") @@ -41,6 +44,7 @@ public class SysPermModuleController { * @param sysPermModuleDto 新增权限资源模块对象。 * @return 应答结果对象,包含新增权限资源模块的主键Id。 */ + @ApiOperationSupport(ignoreParameters = {"sysPermModuleDto.moduleId"}) @PostMapping("/add") public ResponseResult add(@MyRequestBody SysPermModuleDto sysPermModuleDto) { String errorMessage = MyCommonUtil.getModelValidationError(sysPermModuleDto); diff --git a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/controller/SysRoleController.java b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/controller/SysRoleController.java index 5e2eb7a2..f85a27b2 100644 --- a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/controller/SysRoleController.java +++ b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/controller/SysRoleController.java @@ -1,5 +1,7 @@ package com.orange.demo.webadmin.upms.controller; +import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; +import io.swagger.annotations.Api; import com.github.pagehelper.Page; import com.github.pagehelper.page.PageMethod; import lombok.extern.slf4j.Slf4j; @@ -30,6 +32,7 @@ import java.util.stream.Collectors; * @author Jerry * @date 2020-09-24 */ +@Api(tags = "角色管理接口") @Slf4j @RestController @RequestMapping("/admin/upms/sysRole") @@ -48,6 +51,7 @@ public class SysRoleController { * @return 应答结果对象,包含新增角色的主键Id。 */ @SuppressWarnings("unchecked") + @ApiOperationSupport(ignoreParameters = {"sysRoleDto.roleId", "sysRoleDto.createTimeStart", "sysRoleDto.createTimeEnd"}) @PostMapping("/add") public ResponseResult add( @MyRequestBody SysRoleDto sysRoleDto, @MyRequestBody String menuIdListString) { @@ -76,6 +80,7 @@ public class SysRoleController { * @return 应答结果对象。 */ @SuppressWarnings("unchecked") + @ApiOperationSupport(ignoreParameters = {"sysRoleDto.createTimeStart", "sysRoleDto.createTimeEnd"}) @PostMapping("/update") public ResponseResult update( @MyRequestBody SysRoleDto sysRoleDto, @MyRequestBody String menuIdListString) { diff --git a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/controller/SysUserController.java b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/controller/SysUserController.java index 2bb86504..1ea9200f 100644 --- a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/controller/SysUserController.java +++ b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/controller/SysUserController.java @@ -12,6 +12,8 @@ import com.orange.demo.common.core.annotation.MyRequestBody; import com.orange.demo.common.core.validator.AddGroup; import com.orange.demo.common.core.validator.UpdateGroup; import com.orange.demo.webadmin.config.ApplicationConfig; +import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; +import io.swagger.annotations.Api; import lombok.extern.slf4j.Slf4j; import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.beans.factory.annotation.Autowired; @@ -26,6 +28,7 @@ import javax.validation.groups.Default; * @author Jerry * @date 2020-09-24 */ +@Api(tags = "用户管理管理接口") @Slf4j @RestController @RequestMapping("/admin/upms/sysUser") @@ -46,6 +49,10 @@ public class SysUserController { * @return 应答结果对象,包含新增用户的主键Id。 */ @SuppressWarnings("unchecked") + @ApiOperationSupport(ignoreParameters = { + "sysUserDto.userId", + "sysUserDto.createTimeStart", + "sysUserDto.createTimeEnd"}) @PostMapping("/add") public ResponseResult add( @MyRequestBody SysUserDto sysUserDto, @MyRequestBody String roleIdListString) { @@ -71,6 +78,9 @@ public class SysUserController { * @return 应答结果对象。 */ @SuppressWarnings("unchecked") + @ApiOperationSupport(ignoreParameters = { + "sysUserDto.createTimeStart", + "sysUserDto.createTimeEnd"}) @PostMapping("/update") public ResponseResult update( @MyRequestBody SysUserDto sysUserDto, @MyRequestBody String roleIdListString) { diff --git a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/dto/SysMenuDto.java b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/dto/SysMenuDto.java index f01ee6f0..7d710989 100644 --- a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/dto/SysMenuDto.java +++ b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/dto/SysMenuDto.java @@ -3,6 +3,8 @@ package com.orange.demo.webadmin.upms.dto; import com.orange.demo.common.core.validator.ConstDictRef; import com.orange.demo.common.core.validator.UpdateGroup; import com.orange.demo.webadmin.upms.model.constant.SysMenuType; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import javax.validation.constraints.NotBlank; @@ -14,29 +16,34 @@ import javax.validation.constraints.NotNull; * @author Jerry * @date 2020-09-24 */ +@ApiModel("菜单Dto") @Data public class SysMenuDto { /** * 菜单Id。 */ + @ApiModelProperty(value = "菜单Id", required = true) @NotNull(message = "菜单Id不能为空!", groups = {UpdateGroup.class}) private Long menuId; /** * 父菜单Id,目录菜单的父菜单为null */ + @ApiModelProperty(value = "父菜单Id") private Long parentId; /** * 菜单显示名称。 */ + @ApiModelProperty(value = "菜单显示名称", required = true) @NotBlank(message = "菜单显示名称不能为空!") private String menuName; /** * 菜单类型 (0: 目录 1: 菜单 2: 按钮 3: UI片段)。 */ + @ApiModelProperty(value = "菜单类型", required = true) @NotNull(message = "菜单类型不能为空!") @ConstDictRef(constDictClass = SysMenuType.class, message = "数据验证失败,菜单类型为无效值!") private Integer menuType; @@ -44,21 +51,25 @@ public class SysMenuDto { /** * 前端表单路由名称,仅用于menu_type为1的菜单类型。 */ + @ApiModelProperty(value = "前端表单路由名称") private String formRouterName; /** * 在线表单主键Id,仅用于在线表单绑定的菜单。 */ + @ApiModelProperty(value = "在线表单主键Id") private Long onlineFormId; /** * 菜单显示顺序 (值越小,排序越靠前)。 */ + @ApiModelProperty(value = "菜单显示顺序", required = true) @NotNull(message = "菜单显示顺序不能为空!") private Integer showOrder; /** * 菜单图标。 */ + @ApiModelProperty(value = "菜单显示顺序") private String icon; } diff --git a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/dto/SysPermCodeDto.java b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/dto/SysPermCodeDto.java index 354495e7..ccbbd6bd 100644 --- a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/dto/SysPermCodeDto.java +++ b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/dto/SysPermCodeDto.java @@ -3,6 +3,8 @@ package com.orange.demo.webadmin.upms.dto; import com.orange.demo.common.core.validator.ConstDictRef; import com.orange.demo.common.core.validator.UpdateGroup; import com.orange.demo.webadmin.upms.model.constant.SysPermCodeType; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import javax.validation.constraints.NotBlank; @@ -14,29 +16,34 @@ import javax.validation.constraints.NotNull; * @author Jerry * @date 2020-09-24 */ +@ApiModel("权限字Dto") @Data public class SysPermCodeDto { /** * 权限字Id。 */ + @ApiModelProperty(value = "权限字Id", required = true) @NotNull(message = "权限字Id不能为空!", groups = {UpdateGroup.class}) private Long permCodeId; /** * 权限字标识(一般为有含义的英文字符串)。 */ + @ApiModelProperty(value = "权限字标识", required = true) @NotBlank(message = "权限字编码不能为空!") private String permCode; /** * 上级权限字Id。 */ + @ApiModelProperty(value = "上级权限字Id") private Long parentId; /** * 权限字类型(0: 表单 1: UI片段 2: 操作)。 */ + @ApiModelProperty(value = "权限字类型", required = true) @NotNull(message = "权限字类型不能为空!") @ConstDictRef(constDictClass = SysPermCodeType.class, message = "数据验证失败,权限类型为无效值!") private Integer permCodeType; @@ -44,12 +51,14 @@ public class SysPermCodeDto { /** * 显示名称。 */ + @ApiModelProperty(value = "显示名称", required = true) @NotBlank(message = "权限字显示名称不能为空!") private String showName; /** * 显示顺序(数值越小,越靠前)。 */ + @ApiModelProperty(value = "显示顺序", required = true) @NotNull(message = "权限字显示顺序不能为空!") private Integer showOrder; } \ No newline at end of file diff --git a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/dto/SysPermDto.java b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/dto/SysPermDto.java index f5cc246e..07072077 100644 --- a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/dto/SysPermDto.java +++ b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/dto/SysPermDto.java @@ -1,6 +1,8 @@ package com.orange.demo.webadmin.upms.dto; import com.orange.demo.common.core.validator.UpdateGroup; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import javax.validation.constraints.NotBlank; @@ -12,41 +14,48 @@ import javax.validation.constraints.NotNull; * @author Jerry * @date 2020-09-24 */ +@ApiModel("权限资源Dto") @Data public class SysPermDto { /** * 权限资源Id。 */ + @ApiModelProperty(value = "权限资源Id", required = true) @NotNull(message = "权限Id不能为空!", groups = {UpdateGroup.class}) private Long permId; /** * 权限资源名称。 */ + @ApiModelProperty(value = "权限资源名称", required = true) @NotBlank(message = "权限资源名称不能为空!") private String permName; /** * shiro格式的权限字,如(upms:sysUser:add)。 */ + @ApiModelProperty(value = "权限字") private String permCode; /** * 权限所在的权限模块Id。 */ + @ApiModelProperty(value = "权限所在的权限模块Id") @NotNull(message = "权限模块Id不能为空!") private Long moduleId; /** * 关联的URL。 */ + @ApiModelProperty(value = "关联的URL", required = true) @NotBlank(message = "权限关联的url不能为空!") private String url; /** * 权限在当前模块下的顺序,由小到大。 */ + @ApiModelProperty(value = "显示顺序", required = true) @NotNull(message = "权限显示顺序不能为空!") private Integer showOrder; } \ No newline at end of file diff --git a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/dto/SysPermModuleDto.java b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/dto/SysPermModuleDto.java index acb6929d..2facf996 100644 --- a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/dto/SysPermModuleDto.java +++ b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/dto/SysPermModuleDto.java @@ -3,6 +3,8 @@ package com.orange.demo.webadmin.upms.dto; import com.orange.demo.common.core.validator.ConstDictRef; import com.orange.demo.common.core.validator.UpdateGroup; import com.orange.demo.webadmin.upms.model.constant.SysPermModuleType; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import javax.validation.constraints.NotBlank; @@ -14,29 +16,34 @@ import javax.validation.constraints.NotNull; * @author Jerry * @date 2020-09-24 */ +@ApiModel("权限资源模块Dto") @Data public class SysPermModuleDto { /** * 权限模块Id。 */ + @ApiModelProperty(value = "权限模块Id", required = true) @NotNull(message = "权限模块Id不能为空!", groups = {UpdateGroup.class}) private Long moduleId; /** * 权限模块名称。 */ + @ApiModelProperty(value = "权限模块名称", required = true) @NotBlank(message = "权限模块名称不能为空!") private String moduleName; /** * 上级权限模块Id。 */ + @ApiModelProperty(value = "上级权限模块Id") private Long parentId; /** * 权限模块类型(0: 普通模块 1: Controller模块)。 */ + @ApiModelProperty(value = "权限模块类型", required = true) @NotNull(message = "模块类型不能为空!") @ConstDictRef(constDictClass = SysPermModuleType.class, message = "数据验证失败,权限模块类型为无效值!") private Integer moduleType; @@ -44,6 +51,7 @@ public class SysPermModuleDto { /** * 权限模块在当前层级下的顺序,由小到大。 */ + @ApiModelProperty(value = "显示顺序", required = true) @NotNull(message = "权限模块显示顺序不能为空!") private Integer showOrder; } \ No newline at end of file diff --git a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/dto/SysRoleDto.java b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/dto/SysRoleDto.java index 341d9c26..11c05a8f 100644 --- a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/dto/SysRoleDto.java +++ b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/dto/SysRoleDto.java @@ -1,6 +1,8 @@ package com.orange.demo.webadmin.upms.dto; import com.orange.demo.common.core.validator.UpdateGroup; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import javax.validation.constraints.*; @@ -11,18 +13,21 @@ import javax.validation.constraints.*; * @author Jerry * @date 2020-09-24 */ +@ApiModel("角色Dto") @Data public class SysRoleDto { /** * 角色Id。 */ + @ApiModelProperty(value = "角色Id", required = true) @NotNull(message = "角色Id不能为空!", groups = {UpdateGroup.class}) private Long roleId; /** * 角色名称。 */ + @ApiModelProperty(value = "角色名称", required = true) @NotBlank(message = "角色名称不能为空!") private String roleName; } diff --git a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/dto/SysUserDto.java b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/dto/SysUserDto.java index 540fc60b..bb2b84ac 100644 --- a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/dto/SysUserDto.java +++ b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/dto/SysUserDto.java @@ -6,6 +6,8 @@ import com.orange.demo.common.core.validator.ConstDictRef; import com.orange.demo.webadmin.upms.model.constant.SysUserType; import com.orange.demo.webadmin.upms.model.constant.SysUserStatus; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import javax.validation.constraints.*; @@ -16,36 +18,42 @@ import javax.validation.constraints.*; * @author Jerry * @date 2020-09-24 */ +@ApiModel("SysUserDto对象") @Data public class SysUserDto { /** * 用户Id。 */ + @ApiModelProperty(value = "用户Id", required = true) @NotNull(message = "数据验证失败,用户Id不能为空!", groups = {UpdateGroup.class}) private Long userId; /** * 登录用户名。 */ + @ApiModelProperty(value = "登录用户名", required = true) @NotBlank(message = "数据验证失败,登录用户名不能为空!") private String loginName; /** * 用户密码。 */ + @ApiModelProperty(value = "用户密码", required = true) @NotBlank(message = "数据验证失败,用户密码不能为空!", groups = {AddGroup.class}) private String password; /** * 用户显示名称。 */ + @ApiModelProperty(value = "用户显示名称", required = true) @NotBlank(message = "数据验证失败,用户显示名称不能为空!") private String showName; /** * 用户类型(0: 管理员 1: 系统管理用户 2: 系统业务用户)。 */ + @ApiModelProperty(value = "用户类型(0: 管理员 1: 系统管理用户 2: 系统业务用户)", required = true) @NotNull(message = "数据验证失败,用户类型(0: 管理员 1: 系统管理用户 2: 系统业务用户)不能为空!") @ConstDictRef(constDictClass = SysUserType.class, message = "数据验证失败,用户类型(0: 管理员 1: 系统管理用户 2: 系统业务用户)为无效值!") private Integer userType; @@ -53,11 +61,13 @@ public class SysUserDto { /** * 用户头像的Url。 */ + @ApiModelProperty(value = "用户头像的Url") private String headImageUrl; /** * 用户状态(0: 正常 1: 锁定)。 */ + @ApiModelProperty(value = "用户状态(0: 正常 1: 锁定)", required = true) @NotNull(message = "数据验证失败,用户状态(0: 正常 1: 锁定)不能为空!") @ConstDictRef(constDictClass = SysUserStatus.class, message = "数据验证失败,用户状态(0: 正常 1: 锁定)为无效值!") private Integer userStatus; @@ -65,10 +75,12 @@ public class SysUserDto { /** * createTime 范围过滤起始值(>=)。 */ + @ApiModelProperty(value = "createTime 范围过滤起始值(>=)") private String createTimeStart; /** * createTime 范围过滤结束值(<=)。 */ + @ApiModelProperty(value = "createTime 范围过滤结束值(<=)") private String createTimeEnd; } diff --git a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/model/SysMenu.java b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/model/SysMenu.java index 1268561b..7fa30bd3 100644 --- a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/model/SysMenu.java +++ b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/model/SysMenu.java @@ -1,6 +1,6 @@ package com.orange.demo.webadmin.upms.model; -import com.orange.demo.common.core.annotation.DeletedFlagColumn; +import com.baomidou.mybatisplus.annotation.*; import com.orange.demo.common.core.annotation.RelationManyToMany; import com.orange.demo.common.core.base.mapper.BaseModelMapper; import com.orange.demo.webadmin.upms.vo.SysMenuVo; @@ -9,7 +9,6 @@ import org.mapstruct.Mapper; import org.mapstruct.Mapping; import org.mapstruct.factory.Mappers; -import javax.persistence.*; import java.util.*; /** @@ -19,56 +18,55 @@ import java.util.*; * @date 2020-09-24 */ @Data -@Table(name = "zz_sys_menu") +@TableName(value = "zz_sys_menu") public class SysMenu { /** * 菜单Id。 */ - @Id - @Column(name = "menu_id") + @TableId(value = "menu_id") private Long menuId; /** * 父菜单Id,目录菜单的父菜单为null。 */ - @Column(name = "parent_id") + @TableField(value = "parent_id") private Long parentId; /** * 菜单显示名称。 */ - @Column(name = "menu_name") + @TableField(value = "menu_name") private String menuName; /** * 菜单类型(0: 目录 1: 菜单 2: 按钮 3: UI片段)。 */ - @Column(name = "menu_type") + @TableField(value = "menu_type") private Integer menuType; /** * 前端表单路由名称,仅用于menu_type为1的菜单类型。 */ - @Column(name = "form_router_name") + @TableField(value = "form_router_name") private String formRouterName; /** * 在线表单主键Id,仅用于在线表单绑定的菜单。 */ - @Column(name = "online_form_id") + @TableField(value = "online_form_id") private Long onlineFormId; /** * 在线表单菜单的权限控制类型,具体值可参考SysOnlineMenuPermType常量对象。 */ - @Column(name = "online_menu_perm_type") + @TableField(value = "online_menu_perm_type") private Integer onlineMenuPermType; /** * 菜单显示顺序 (值越小,排序越靠前)。 */ - @Column(name = "show_order") + @TableField(value = "show_order") private Integer showOrder; /** @@ -79,39 +77,39 @@ public class SysMenu { /** * 创建者Id。 */ - @Column(name = "create_user_id") + @TableField(value = "create_user_id") private Long createUserId; /** * 创建时间。 */ - @Column(name = "create_time") + @TableField(value = "create_time") private Date createTime; /** * 更新者Id。 */ - @Column(name = "update_user_id") + @TableField(value = "update_user_id") private Long updateUserId; /** * 更新时间。 */ - @Column(name = "update_time") + @TableField(value = "update_time") private Date updateTime; /** * 逻辑删除标记字段(1: 正常 -1: 已删除)。 */ - @DeletedFlagColumn - @Column(name = "deleted_flag") + @TableLogic + @TableField(value = "deleted_flag") private Integer deletedFlag; @RelationManyToMany( relationMapperName = "sysMenuPermCodeMapper", relationMasterIdField = "menuId", relationModelClass = SysMenuPermCode.class) - @Transient + @TableField(exist = false) private List sysMenuPermCodeList; @Mapper diff --git a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/model/SysMenuPermCode.java b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/model/SysMenuPermCode.java index eb1274e4..10251988 100644 --- a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/model/SysMenuPermCode.java +++ b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/model/SysMenuPermCode.java @@ -1,9 +1,8 @@ package com.orange.demo.webadmin.upms.model; +import com.baomidou.mybatisplus.annotation.*; import lombok.Data; -import javax.persistence.*; - /** * 菜单与权限字关联实体对象。 * @@ -11,20 +10,18 @@ import javax.persistence.*; * @date 2020-09-24 */ @Data -@Table(name = "zz_sys_menu_perm_code") +@TableName(value = "zz_sys_menu_perm_code") public class SysMenuPermCode { /** * 关联菜单Id。 */ - @Id - @Column(name = "menu_id") + @TableField(value = "menu_id") private Long menuId; /** * 关联权限字Id。 */ - @Id - @Column(name = "perm_code_id") + @TableField(value = "perm_code_id") private Long permCodeId; } diff --git a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/model/SysPerm.java b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/model/SysPerm.java index fec2622f..aeed729f 100644 --- a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/model/SysPerm.java +++ b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/model/SysPerm.java @@ -1,10 +1,9 @@ package com.orange.demo.webadmin.upms.model; -import com.orange.demo.common.core.annotation.DeletedFlagColumn; +import com.baomidou.mybatisplus.annotation.*; import com.orange.demo.common.core.annotation.RelationDict; import lombok.Data; -import javax.persistence.*; import java.util.*; /** @@ -14,26 +13,25 @@ import java.util.*; * @date 2020-09-24 */ @Data -@Table(name = "zz_sys_perm") +@TableName(value = "zz_sys_perm") public class SysPerm { /** * 权限资源Id。 */ - @Id - @Column(name = "perm_id") + @TableId(value = "perm_id") private Long permId; /** * 权限所在的权限模块Id。 */ - @Column(name = "module_id") + @TableField(value = "module_id") private Long moduleId; /** * 权限名称。 */ - @Column(name = "perm_name") + @TableField(value = "perm_name") private String permName; /** @@ -44,38 +42,38 @@ public class SysPerm { /** * 权限在当前模块下的顺序,由小到大。 */ - @Column(name = "show_order") + @TableField(value = "show_order") private Integer showOrder; /** * 创建者Id。 */ - @Column(name = "create_user_id") + @TableField(value = "create_user_id") private Long createUserId; /** * 创建时间。 */ - @Column(name = "create_time") + @TableField(value = "create_time") private Date createTime; /** * 更新者Id。 */ - @Column(name = "update_user_id") + @TableField(value = "update_user_id") private Long updateUserId; /** * 更新时间。 */ - @Column(name = "update_time") + @TableField(value = "update_time") private Date updateTime; /** * 逻辑删除标记字段(1: 正常 -1: 已删除)。 */ - @DeletedFlagColumn - @Column(name = "deleted_flag") + @TableLogic + @TableField(value = "deleted_flag") private Integer deletedFlag; @RelationDict( @@ -84,6 +82,6 @@ public class SysPerm { slaveModelClass = SysPermModule.class, slaveIdField = "moduleId", slaveNameField = "moduleName") - @Transient + @TableField(exist = false) private Map moduleIdDictMap; } diff --git a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/model/SysPermCode.java b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/model/SysPermCode.java index d6fc97bd..1de6b38f 100644 --- a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/model/SysPermCode.java +++ b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/model/SysPermCode.java @@ -1,6 +1,6 @@ package com.orange.demo.webadmin.upms.model; -import com.orange.demo.common.core.annotation.DeletedFlagColumn; +import com.baomidou.mybatisplus.annotation.*; import com.orange.demo.common.core.annotation.RelationManyToMany; import com.orange.demo.common.core.base.mapper.BaseModelMapper; import com.orange.demo.webadmin.upms.vo.SysPermCodeVo; @@ -9,7 +9,6 @@ import org.mapstruct.Mapper; import org.mapstruct.Mapping; import org.mapstruct.factory.Mappers; -import javax.persistence.*; import java.util.*; /** @@ -19,82 +18,81 @@ import java.util.*; * @date 2020-09-24 */ @Data -@Table(name = "zz_sys_perm_code") +@TableName(value = "zz_sys_perm_code") public class SysPermCode { /** * 权限字Id。 */ - @Id - @Column(name = "perm_code_id") + @TableId(value = "perm_code_id") private Long permCodeId; /** * 上级权限字Id。 */ - @Column(name = "parent_id") + @TableField(value = "parent_id") private Long parentId; /** * 权限字标识(一般为有含义的英文字符串)。 */ - @Column(name = "perm_code") + @TableField(value = "perm_code") private String permCode; /** * 权限类型(0: 表单 1: UI片段 2: 操作)。 */ - @Column(name = "perm_code_type") + @TableField(value = "perm_code_type") private Integer permCodeType; /** * 显示名称。 */ - @Column(name = "show_name") + @TableField(value = "show_name") private String showName; /** * 显示顺序(数值越小,越靠前)。 */ - @Column(name = "show_order") + @TableField(value = "show_order") private Integer showOrder; /** * 创建者Id。 */ - @Column(name = "create_user_id") + @TableField(value = "create_user_id") private Long createUserId; /** * 创建时间。 */ - @Column(name = "create_time") + @TableField(value = "create_time") private Date createTime; /** * 更新者Id。 */ - @Column(name = "update_user_id") + @TableField(value = "update_user_id") private Long updateUserId; /** * 更新时间。 */ - @Column(name = "update_time") + @TableField(value = "update_time") private Date updateTime; /** * 逻辑删除标记字段(1: 正常 -1: 已删除)。 */ - @DeletedFlagColumn - @Column(name = "deleted_flag") + @TableLogic + @TableField(value = "deleted_flag") private Integer deletedFlag; @RelationManyToMany( relationMapperName = "sysPermCodePermMapper", relationMasterIdField = "permCodeId", relationModelClass = SysPermCodePerm.class) - @Transient + @TableField(exist = false) private List sysPermCodePermList; @Mapper diff --git a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/model/SysPermCodePerm.java b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/model/SysPermCodePerm.java index 2ac7f0de..0b66a4f5 100644 --- a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/model/SysPermCodePerm.java +++ b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/model/SysPermCodePerm.java @@ -1,9 +1,8 @@ package com.orange.demo.webadmin.upms.model; +import com.baomidou.mybatisplus.annotation.*; import lombok.Data; -import javax.persistence.*; - /** * 权限字与权限资源关联实体对象。 * @@ -11,20 +10,18 @@ import javax.persistence.*; * @date 2020-09-24 */ @Data -@Table(name = "zz_sys_perm_code_perm") +@TableName(value = "zz_sys_perm_code_perm") public class SysPermCodePerm { /** * 权限字Id。 */ - @Id - @Column(name = "perm_code_id") + @TableField(value = "perm_code_id") private Long permCodeId; /** * 权限Id。 */ - @Id - @Column(name = "perm_id") + @TableField(value = "perm_id") private Long permId; } diff --git a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/model/SysPermModule.java b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/model/SysPermModule.java index 19f4258a..e7688b31 100644 --- a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/model/SysPermModule.java +++ b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/model/SysPermModule.java @@ -1,9 +1,8 @@ package com.orange.demo.webadmin.upms.model; -import com.orange.demo.common.core.annotation.DeletedFlagColumn; +import com.baomidou.mybatisplus.annotation.*; import lombok.Data; -import javax.persistence.*; import java.util.*; /** @@ -13,71 +12,70 @@ import java.util.*; * @date 2020-09-24 */ @Data -@Table(name = "zz_sys_perm_module") +@TableName(value = "zz_sys_perm_module") public class SysPermModule { /** * 权限模块Id。 */ - @Id - @Column(name = "module_id") + @TableId(value = "module_id") private Long moduleId; /** * 上级权限模块Id。 */ - @Column(name = "parent_id") + @TableField(value = "parent_id") private Long parentId; /** * 权限模块名称。 */ - @Column(name = "module_name") + @TableField(value = "module_name") private String moduleName; /** * 权限模块类型(0: 普通模块 1: Controller模块)。 */ - @Column(name = "module_type") + @TableField(value = "module_type") private Integer moduleType; /** * 权限模块在当前层级下的顺序,由小到大。 */ - @Column(name = "show_order") + @TableField(value = "show_order") private Integer showOrder; /** * 创建者Id。 */ - @Column(name = "create_user_id") + @TableField(value = "create_user_id") private Long createUserId; /** * 创建时间。 */ - @Column(name = "create_time") + @TableField(value = "create_time") private Date createTime; /** * 更新者Id。 */ - @Column(name = "update_user_id") + @TableField(value = "update_user_id") private Long updateUserId; /** * 更新时间。 */ - @Column(name = "update_time") + @TableField(value = "update_time") private Date updateTime; /** * 逻辑删除标记字段(1: 正常 -1: 已删除)。 */ - @DeletedFlagColumn - @Column(name = "deleted_flag") + @TableLogic + @TableField(value = "deleted_flag") private Integer deletedFlag; - @Transient + @TableField(exist = false) private List sysPermList; } diff --git a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/model/SysPermWhitelist.java b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/model/SysPermWhitelist.java index 7e96b337..dc1c7df0 100644 --- a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/model/SysPermWhitelist.java +++ b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/model/SysPermWhitelist.java @@ -1,9 +1,8 @@ package com.orange.demo.webadmin.upms.model; +import com.baomidou.mybatisplus.annotation.*; import lombok.Data; -import javax.persistence.*; - /** * 白名单实体对象。 * @@ -11,25 +10,24 @@ import javax.persistence.*; * @date 2020-09-24 */ @Data -@Table(name = "zz_sys_perm_whitelist") +@TableName(value = "zz_sys_perm_whitelist") public class SysPermWhitelist { /** * 权限资源的URL。 */ - @Id - @Column(name = "perm_url") + @TableId(value = "perm_url") private String permUrl; /** * 权限资源所属模块名字(通常是Controller的名字)。 */ - @Column(name = "module_name") + @TableField(value = "module_name") private String moduleName; /** * 权限的名称。 */ - @Column(name = "perm_name") + @TableField(value = "perm_name") private String permName; } diff --git a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/model/SysRole.java b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/model/SysRole.java index bfdc7d2b..178d2c19 100644 --- a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/model/SysRole.java +++ b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/model/SysRole.java @@ -1,6 +1,6 @@ package com.orange.demo.webadmin.upms.model; -import com.orange.demo.common.core.annotation.DeletedFlagColumn; +import com.baomidou.mybatisplus.annotation.*; import com.orange.demo.common.core.annotation.RelationManyToMany; import com.orange.demo.common.core.base.mapper.BaseModelMapper; import com.orange.demo.webadmin.upms.vo.SysRoleVo; @@ -9,7 +9,6 @@ import org.mapstruct.Mapper; import org.mapstruct.Mapping; import org.mapstruct.factory.Mappers; -import javax.persistence.*; import java.util.*; /** @@ -19,58 +18,57 @@ import java.util.*; * @date 2020-09-24 */ @Data -@Table(name = "zz_sys_role") +@TableName(value = "zz_sys_role") public class SysRole { /** * 角色Id。 */ - @Id - @Column(name = "role_id") + @TableId(value = "role_id") private Long roleId; /** * 角色名称。 */ - @Column(name = "role_name") + @TableField(value = "role_name") private String roleName; /** * 创建者Id。 */ - @Column(name = "create_user_id") + @TableField(value = "create_user_id") private Long createUserId; /** * 创建时间。 */ - @Column(name = "create_time") + @TableField(value = "create_time") private Date createTime; /** * 更新者Id。 */ - @Column(name = "update_user_id") + @TableField(value = "update_user_id") private Long updateUserId; /** * 更新时间。 */ - @Column(name = "update_time") + @TableField(value = "update_time") private Date updateTime; /** * 逻辑删除标记字段(1: 正常 -1: 已删除)。 */ - @DeletedFlagColumn - @Column(name = "deleted_flag") + @TableLogic + @TableField(value = "deleted_flag") private Integer deletedFlag; @RelationManyToMany( relationMapperName = "sysRoleMenuMapper", relationMasterIdField = "roleId", relationModelClass = SysRoleMenu.class) - @Transient + @TableField(exist = false) private List sysRoleMenuList; @Mapper diff --git a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/model/SysRoleMenu.java b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/model/SysRoleMenu.java index cc8ad5e8..78c3ca90 100644 --- a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/model/SysRoleMenu.java +++ b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/model/SysRoleMenu.java @@ -1,9 +1,8 @@ package com.orange.demo.webadmin.upms.model; +import com.baomidou.mybatisplus.annotation.*; import lombok.Data; -import javax.persistence.*; - /** * 角色菜单实体对象。 * @@ -11,20 +10,18 @@ import javax.persistence.*; * @date 2020-09-24 */ @Data -@Table(name = "zz_sys_role_menu") +@TableName(value = "zz_sys_role_menu") public class SysRoleMenu { /** * 角色Id。 */ - @Id - @Column(name = "role_id") + @TableField(value = "role_id") private Long roleId; /** * 菜单Id。 */ - @Id - @Column(name = "menu_id") + @TableField(value = "menu_id") private Long menuId; } diff --git a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/model/SysUser.java b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/model/SysUser.java index 410b87fb..a4a4730c 100644 --- a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/model/SysUser.java +++ b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/model/SysUser.java @@ -1,16 +1,15 @@ package com.orange.demo.webadmin.upms.model; +import com.baomidou.mybatisplus.annotation.*; import com.orange.demo.webadmin.upms.model.constant.SysUserType; import com.orange.demo.webadmin.upms.model.constant.SysUserStatus; import com.orange.demo.common.core.annotation.RelationConstDict; import com.orange.demo.common.core.annotation.RelationManyToMany; import com.orange.demo.common.core.base.mapper.BaseModelMapper; -import com.orange.demo.common.core.annotation.DeletedFlagColumn; import com.orange.demo.webadmin.upms.vo.SysUserVo; import lombok.Data; import org.mapstruct.*; import org.mapstruct.factory.Mappers; -import javax.persistence.*; import java.util.Date; import java.util.Map; @@ -23,20 +22,19 @@ import java.util.List; * @date 2020-09-24 */ @Data -@Table(name = "zz_sys_user") +@TableName(value = "zz_sys_user") public class SysUser { /** * 用户Id。 */ - @Id - @Column(name = "user_id") + @TableId(value = "user_id") private Long userId; /** * 登录用户名。 */ - @Column(name = "login_name") + @TableField(value = "login_name") private String loginName; /** @@ -47,68 +45,68 @@ public class SysUser { /** * 用户显示名称。 */ - @Column(name = "show_name") + @TableField(value = "show_name") private String showName; /** * 用户类型(0: 管理员 1: 系统管理用户 2: 系统业务用户)。 */ - @Column(name = "user_type") + @TableField(value = "user_type") private Integer userType; /** * 用户头像的Url。 */ - @Column(name = "head_image_url") + @TableField(value = "head_image_url") private String headImageUrl; /** * 用户状态(0: 正常 1: 锁定)。 */ - @Column(name = "user_status") + @TableField(value = "user_status") private Integer userStatus; /** * 逻辑删除标记字段(1: 正常 -1: 已删除)。 */ - @DeletedFlagColumn - @Column(name = "deleted_flag") + @TableLogic + @TableField(value = "deleted_flag") private Integer deletedFlag; /** * 创建用户Id。 */ - @Column(name = "create_user_id") + @TableField(value = "create_user_id") private Long createUserId; /** * 更新者Id。 */ - @Column(name = "update_user_id") + @TableField(value = "update_user_id") private Long updateUserId; /** * 创建时间。 */ - @Column(name = "create_time") + @TableField(value = "create_time") private Date createTime; /** * 更新时间。 */ - @Column(name = "update_time") + @TableField(value = "update_time") private Date updateTime; /** * createTime 范围过滤起始值(>=)。 */ - @Transient + @TableField(exist = false) private String createTimeStart; /** * createTime 范围过滤结束值(<=)。 */ - @Transient + @TableField(exist = false) private String createTimeEnd; /** @@ -118,19 +116,19 @@ public class SysUser { relationMapperName = "sysUserRoleMapper", relationMasterIdField = "userId", relationModelClass = SysUserRole.class) - @Transient + @TableField(exist = false) private List sysUserRoleList; @RelationConstDict( masterIdField = "userType", constantDictClass = SysUserType.class) - @Transient + @TableField(exist = false) private Map userTypeDictMap; @RelationConstDict( masterIdField = "userStatus", constantDictClass = SysUserStatus.class) - @Transient + @TableField(exist = false) private Map userStatusDictMap; @Mapper diff --git a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/model/SysUserRole.java b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/model/SysUserRole.java index fbe7b92e..8c999260 100644 --- a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/model/SysUserRole.java +++ b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/model/SysUserRole.java @@ -1,9 +1,8 @@ package com.orange.demo.webadmin.upms.model; +import com.baomidou.mybatisplus.annotation.*; import lombok.Data; -import javax.persistence.*; - /** * 用户角色实体对象。 * @@ -11,20 +10,18 @@ import javax.persistence.*; * @date 2020-09-24 */ @Data -@Table(name = "zz_sys_user_role") +@TableName(value = "zz_sys_user_role") public class SysUserRole { /** * 用户Id。 */ - @Id - @Column(name = "user_id") + @TableField(value = "user_id") private Long userId; /** * 角色Id。 */ - @Id - @Column(name = "role_id") + @TableField(value = "role_id") private Long roleId; } diff --git a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/service/impl/SysMenuServiceImpl.java b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/service/impl/SysMenuServiceImpl.java index fb255404..8b7fe048 100644 --- a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/service/impl/SysMenuServiceImpl.java +++ b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/service/impl/SysMenuServiceImpl.java @@ -2,6 +2,9 @@ package com.orange.demo.webadmin.upms.service.impl; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.orange.demo.common.core.base.service.BaseService; import com.orange.demo.common.sequence.wrapper.IdGeneratorWrapper; import com.orange.demo.common.core.base.dao.BaseDaoMapper; @@ -23,7 +26,6 @@ import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import tk.mybatis.mapper.entity.Example; import java.util.*; import java.util.stream.Collectors; @@ -74,14 +76,12 @@ public class SysMenuServiceImpl extends BaseService implements Sy sysMenu.setDeletedFlag(GlobalDeletedFlag.NORMAL); sysMenuMapper.insert(sysMenu); if (permCodeIdSet != null) { - List sysMenuPermCodeList = new LinkedList<>(); for (Long permCodeId : permCodeIdSet) { SysMenuPermCode menuPermCode = new SysMenuPermCode(); menuPermCode.setMenuId(sysMenu.getMenuId()); menuPermCode.setPermCodeId(permCodeId); - sysMenuPermCodeList.add(menuPermCode); + sysMenuPermCodeMapper.insert(menuPermCode); } - sysMenuPermCodeMapper.insertList(sysMenuPermCodeList); } // 判断当前菜单是否为指向在线表单的菜单,并将根据约定,动态插入两个子菜单。 if (sysMenu.getOnlineFormId() != null) { @@ -93,6 +93,7 @@ public class SysMenuServiceImpl extends BaseService implements Sy viewSubMenu.setShowOrder(0); viewSubMenu.setOnlineFormId(sysMenu.getOnlineFormId()); viewSubMenu.setOnlineMenuPermType(SysOnlineMenuPermType.TYPE_VIEW); + viewSubMenu.setDeletedFlag(GlobalDeletedFlag.NORMAL); MyModelUtil.fillCommonsForInsert(viewSubMenu); sysMenuMapper.insert(viewSubMenu); SysMenu editSubMenu = new SysMenu(); @@ -103,6 +104,7 @@ public class SysMenuServiceImpl extends BaseService implements Sy editSubMenu.setShowOrder(1); editSubMenu.setOnlineFormId(sysMenu.getOnlineFormId()); editSubMenu.setOnlineMenuPermType(SysOnlineMenuPermType.TYPE_EDIT); + editSubMenu.setDeletedFlag(GlobalDeletedFlag.NORMAL); MyModelUtil.fillCommonsForInsert(editSubMenu); sysMenuMapper.insert(editSubMenu); } @@ -122,30 +124,27 @@ public class SysMenuServiceImpl extends BaseService implements Sy public boolean update(SysMenu sysMenu, SysMenu originalSysMenu, Set permCodeIdSet) { MyModelUtil.fillCommonsForUpdate(sysMenu, originalSysMenu); sysMenu.setMenuType(originalSysMenu.getMenuType()); - sysMenu.setDeletedFlag(GlobalDeletedFlag.NORMAL); - if (sysMenuMapper.updateByPrimaryKey(sysMenu) != 1) { + UpdateWrapper uw = this.createUpdateQueryForNullValue(sysMenu, sysMenu.getMenuId()); + if (sysMenuMapper.update(sysMenu, uw) != 1) { return false; } SysMenuPermCode deletedMenuPermCode = new SysMenuPermCode(); deletedMenuPermCode.setMenuId(sysMenu.getMenuId()); - sysMenuPermCodeMapper.delete(deletedMenuPermCode); + sysMenuPermCodeMapper.delete(new QueryWrapper<>(deletedMenuPermCode)); if (permCodeIdSet != null) { - List sysMenuPermCodeList = new LinkedList<>(); for (Long permCodeId : permCodeIdSet) { SysMenuPermCode menuPermCode = new SysMenuPermCode(); menuPermCode.setMenuId(sysMenu.getMenuId()); menuPermCode.setPermCodeId(permCodeId); - sysMenuPermCodeList.add(menuPermCode); + sysMenuPermCodeMapper.insert(menuPermCode); } - sysMenuPermCodeMapper.insertList(sysMenuPermCodeList); } // 如果当前菜单的在线表单Id变化了,就需要同步更新他的内置子菜单也同步更新。 if (ObjectUtil.notEqual(originalSysMenu.getOnlineFormId(), sysMenu.getOnlineFormId())) { SysMenu onlineSubMenu = new SysMenu(); onlineSubMenu.setOnlineFormId(sysMenu.getOnlineFormId()); - Example e = new Example(SysMenu.class); - e.createCriteria().andEqualTo("parentId", sysMenu.getMenuId()); - sysMenuMapper.updateByExampleSelective(onlineSubMenu, e); + sysMenuMapper.update(onlineSubMenu, + new QueryWrapper().lambda().eq(SysMenu::getParentId, sysMenu.getMenuId())); } return true; } @@ -160,20 +159,18 @@ public class SysMenuServiceImpl extends BaseService implements Sy @Override public boolean remove(SysMenu menu) { Long menuId = menu.getMenuId(); - if (!this.removeById(menuId)) { + if (sysMenuMapper.deleteById(menuId) != 1) { return false; } SysRoleMenu roleMenu = new SysRoleMenu(); roleMenu.setMenuId(menuId); - sysRoleMenuMapper.delete(roleMenu); + sysRoleMenuMapper.delete(new QueryWrapper<>(roleMenu)); SysMenuPermCode menuPermCode = new SysMenuPermCode(); menuPermCode.setMenuId(menuId); - sysMenuPermCodeMapper.delete(menuPermCode); + sysMenuPermCodeMapper.delete(new QueryWrapper<>(menuPermCode)); // 如果为指向在线表单的菜单,则连同删除子菜单 if (menu.getOnlineFormId() != null) { - Example e = new Example(SysMenu.class); - e.createCriteria().andEqualTo("parentId", menuId); - sysMenuMapper.deleteByExample(e); + sysMenuMapper.delete(new QueryWrapper().lambda().eq(SysMenu::getParentId, menuId)); } return true; } @@ -185,12 +182,11 @@ public class SysMenuServiceImpl extends BaseService implements Sy */ @Override public Collection getAllMenuList() { - Example e = new Example(SysMenu.class); - e.orderBy("showOrder"); - Example.Criteria c = e.createCriteria(); - c.andIn("menuType", Arrays.asList(SysMenuType.TYPE_MENU, SysMenuType.TYPE_DIRECTORY)); - c.andEqualTo("deletedFlag", GlobalDeletedFlag.NORMAL); - return sysMenuMapper.selectByExample(e); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.orderByAsc(this.safeMapToColumnName("showOrder")); + queryWrapper.in(this.safeMapToColumnName("menuType"), + Arrays.asList(SysMenuType.TYPE_MENU, SysMenuType.TYPE_DIRECTORY)); + return sysMenuMapper.selectList(queryWrapper); } /** @@ -289,12 +285,12 @@ public class SysMenuServiceImpl extends BaseService implements Sy */ @Override public List getAllOnlineMenuList(Integer menuType) { - Example e = new Example(SysMenu.class); - Example.Criteria c = e.createCriteria().andIsNotNull("onlineFormId"); + LambdaQueryWrapper queryWrapper = + new QueryWrapper().lambda().isNotNull(SysMenu::getOnlineFormId); if (menuType != null) { - c.andEqualTo("menuType", menuType); + queryWrapper.eq(SysMenu::getMenuType, menuType); } - return sysMenuMapper.selectByExample(e); + return sysMenuMapper.selectList(queryWrapper); } /** diff --git a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/service/impl/SysPermCodeServiceImpl.java b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/service/impl/SysPermCodeServiceImpl.java index e5a85916..15e561d3 100644 --- a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/service/impl/SysPermCodeServiceImpl.java +++ b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/service/impl/SysPermCodeServiceImpl.java @@ -1,6 +1,8 @@ package com.orange.demo.webadmin.upms.service.impl; import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.orange.demo.common.core.base.service.BaseService; import com.orange.demo.common.sequence.wrapper.IdGeneratorWrapper; import com.orange.demo.common.core.base.dao.BaseDaoMapper; @@ -93,14 +95,12 @@ public class SysPermCodeServiceImpl extends BaseService imple sysPermCode.setDeletedFlag(GlobalDeletedFlag.NORMAL); sysPermCodeMapper.insert(sysPermCode); if (permIdSet != null) { - List sysPermCodePermList = new LinkedList<>(); for (Long permId : permIdSet) { SysPermCodePerm permCodePerm = new SysPermCodePerm(); permCodePerm.setPermCodeId(sysPermCode.getPermCodeId()); permCodePerm.setPermId(permId); - sysPermCodePermList.add(permCodePerm); + sysPermCodePermMapper.insert(permCodePerm); } - sysPermCodePermMapper.insertList(sysPermCodePermList); } return sysPermCode; } @@ -118,22 +118,21 @@ public class SysPermCodeServiceImpl extends BaseService imple public boolean update(SysPermCode sysPermCode, SysPermCode originalSysPermCode, Set permIdSet) { MyModelUtil.fillCommonsForUpdate(sysPermCode, originalSysPermCode); sysPermCode.setParentId(originalSysPermCode.getParentId()); - sysPermCode.setDeletedFlag(GlobalDeletedFlag.NORMAL); - if (sysPermCodeMapper.updateByPrimaryKey(sysPermCode) != 1) { - return false; + UpdateWrapper uw = + this.createUpdateQueryForNullValue(sysPermCode, sysPermCode.getPermCodeId()); + if (sysPermCodeMapper.update(sysPermCode, uw) != 1) { + return false; } SysPermCodePerm deletedPermCodePerm = new SysPermCodePerm(); deletedPermCodePerm.setPermCodeId(sysPermCode.getPermCodeId()); - sysPermCodePermMapper.delete(deletedPermCodePerm); + sysPermCodePermMapper.delete(new QueryWrapper<>(deletedPermCodePerm)); if (permIdSet != null) { - List sysPermCodePermList = new LinkedList<>(); for (Long permId : permIdSet) { SysPermCodePerm permCodePerm = new SysPermCodePerm(); permCodePerm.setPermCodeId(sysPermCode.getPermCodeId()); permCodePerm.setPermId(permId); - sysPermCodePermList.add(permCodePerm); + sysPermCodePermMapper.insert(permCodePerm); } - sysPermCodePermMapper.insertList(sysPermCodePermList); } return true; } @@ -147,15 +146,15 @@ public class SysPermCodeServiceImpl extends BaseService imple @Transactional(rollbackFor = Exception.class) @Override public boolean remove(Long permCodeId) { - if (!this.removeById(permCodeId)) { + if (sysPermCodeMapper.deleteById(permCodeId) != 1) { return false; } SysMenuPermCode menuPermCode = new SysMenuPermCode(); menuPermCode.setPermCodeId(permCodeId); - sysMenuPermCodeMapper.delete(menuPermCode); + sysMenuPermCodeMapper.delete(new QueryWrapper<>(menuPermCode)); SysPermCodePerm permCodePerm = new SysPermCodePerm(); permCodePerm.setPermCodeId(permCodeId); - sysPermCodePermMapper.delete(permCodePerm); + sysPermCodePermMapper.delete(new QueryWrapper<>(permCodePerm)); return true; } diff --git a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/service/impl/SysPermModuleServiceImpl.java b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/service/impl/SysPermModuleServiceImpl.java index bfcf722b..94caeaf1 100644 --- a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/service/impl/SysPermModuleServiceImpl.java +++ b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/service/impl/SysPermModuleServiceImpl.java @@ -71,8 +71,7 @@ public class SysPermModuleServiceImpl extends BaseService i @Override public boolean update(SysPermModule sysPermModule, SysPermModule originalSysPermModule) { MyModelUtil.fillCommonsForUpdate(sysPermModule, originalSysPermModule); - sysPermModule.setDeletedFlag(GlobalDeletedFlag.NORMAL); - return sysPermModuleMapper.updateByPrimaryKey(sysPermModule) != 0; + return sysPermModuleMapper.updateById(sysPermModule) != 0; } /** @@ -84,7 +83,7 @@ public class SysPermModuleServiceImpl extends BaseService i @Transactional(rollbackFor = Exception.class) @Override public boolean remove(Long moduleId) { - return this.removeById(moduleId); + return sysPermModuleMapper.deleteById(moduleId) == 1; } /** diff --git a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/service/impl/SysPermServiceImpl.java b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/service/impl/SysPermServiceImpl.java index a8bc144f..56f41b56 100644 --- a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/service/impl/SysPermServiceImpl.java +++ b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/service/impl/SysPermServiceImpl.java @@ -1,5 +1,6 @@ package com.orange.demo.webadmin.upms.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import cn.hutool.core.util.ObjectUtil; import com.orange.demo.common.core.base.service.BaseService; import com.orange.demo.common.sequence.wrapper.IdGeneratorWrapper; @@ -23,7 +24,6 @@ import org.redisson.api.RedissonClient; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import tk.mybatis.mapper.entity.Example; import java.util.*; import java.util.concurrent.TimeUnit; @@ -90,9 +90,8 @@ public class SysPermServiceImpl extends BaseService implements Sy @Transactional(rollbackFor = Exception.class) @Override public boolean update(SysPerm perm, SysPerm originalPerm) { - perm.setDeletedFlag(GlobalDeletedFlag.NORMAL); MyModelUtil.fillCommonsForUpdate(perm, originalPerm); - return sysPermMapper.updateByPrimaryKeySelective(perm) != 0; + return sysPermMapper.updateById(perm) != 0; } /** @@ -104,12 +103,12 @@ public class SysPermServiceImpl extends BaseService implements Sy @Transactional(rollbackFor = Exception.class) @Override public boolean remove(Long permId) { - if (!this.removeById(permId)) { + if (sysPermMapper.deleteById(permId) != 1) { return false; } SysPermCodePerm permCodePerm = new SysPermCodePerm(); permCodePerm.setPermId(permId); - sysPermCodePermMapper.delete(permCodePerm); + sysPermCodePermMapper.delete(new QueryWrapper<>(permCodePerm)); return true; } @@ -121,17 +120,13 @@ public class SysPermServiceImpl extends BaseService implements Sy */ @Override public List getPermListWithRelation(SysPerm sysPermFilter) { - Example e = new Example(SysPerm.class); - e.orderBy("showOrder"); - Example.Criteria c = e.createCriteria(); - if (ObjectUtil.isNotNull(sysPermFilter.getModuleId())) { - c.andEqualTo("moduleId", sysPermFilter.getModuleId()); - } - if (ObjectUtil.isNotNull(sysPermFilter.getUrl())) { - c.andLike("url", "%" + sysPermFilter.getUrl() + "%"); - } - c.andEqualTo("deletedFlag", GlobalDeletedFlag.NORMAL); - List permList = sysPermMapper.selectByExample(e); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.orderByAsc(this.safeMapToColumnName("showOrder")); + queryWrapper.eq(ObjectUtil.isNotNull(sysPermFilter.getModuleId()), + this.safeMapToColumnName("moduleId"), sysPermFilter.getModuleId()); + queryWrapper.like(ObjectUtil.isNotNull(sysPermFilter.getUrl()), + this.safeMapToColumnName("url"), "%" + sysPermFilter.getUrl() + "%"); + List permList = sysPermMapper.selectList(queryWrapper); // 这里因为权限只有字典数据,所以仅仅做字典关联。 this.buildRelationForDataList(permList, MyRelationParam.dictOnly()); return permList; diff --git a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/service/impl/SysRoleServiceImpl.java b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/service/impl/SysRoleServiceImpl.java index 3ad04c7e..cef3cef7 100644 --- a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/service/impl/SysRoleServiceImpl.java +++ b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/service/impl/SysRoleServiceImpl.java @@ -1,5 +1,6 @@ package com.orange.demo.webadmin.upms.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.alibaba.fastjson.JSONObject; import com.orange.demo.common.core.base.service.BaseService; import com.orange.demo.common.core.util.MyModelUtil; @@ -70,14 +71,12 @@ public class SysRoleServiceImpl extends BaseService implements Sy role.setDeletedFlag(GlobalDeletedFlag.NORMAL); sysRoleMapper.insert(role); if (menuIdSet != null) { - List roleMenuList = new LinkedList<>(); for (Long menuId : menuIdSet) { SysRoleMenu roleMenu = new SysRoleMenu(); roleMenu.setRoleId(role.getRoleId()); roleMenu.setMenuId(menuId); - roleMenuList.add(roleMenu); + sysRoleMenuMapper.insert(roleMenu); } - sysRoleMenuMapper.insertList(roleMenuList); } return role; } @@ -93,23 +92,20 @@ public class SysRoleServiceImpl extends BaseService implements Sy @Transactional(rollbackFor = Exception.class) @Override public boolean update(SysRole role, SysRole originalRole, Set menuIdSet) { - role.setDeletedFlag(GlobalDeletedFlag.NORMAL); MyModelUtil.fillCommonsForUpdate(role, originalRole); - if (sysRoleMapper.updateByPrimaryKey(role) != 1) { + if (sysRoleMapper.updateById(role) != 1) { return false; } SysRoleMenu deletedRoleMenu = new SysRoleMenu(); deletedRoleMenu.setRoleId(role.getRoleId()); - sysRoleMenuMapper.delete(deletedRoleMenu); + sysRoleMenuMapper.delete(new QueryWrapper<>(deletedRoleMenu)); if (menuIdSet != null) { - List roleMenuList = new LinkedList<>(); for (Long menuId : menuIdSet) { SysRoleMenu roleMenu = new SysRoleMenu(); roleMenu.setRoleId(role.getRoleId()); roleMenu.setMenuId(menuId); - roleMenuList.add(roleMenu); + sysRoleMenuMapper.insert(roleMenu); } - sysRoleMenuMapper.insertList(roleMenuList); } return true; } @@ -123,15 +119,15 @@ public class SysRoleServiceImpl extends BaseService implements Sy @Transactional(rollbackFor = Exception.class) @Override public boolean remove(Long roleId) { - if (!this.removeById(roleId)) { + if (sysRoleMapper.deleteById(roleId) != 1) { return false; } SysRoleMenu roleMenu = new SysRoleMenu(); roleMenu.setRoleId(roleId); - sysRoleMenuMapper.delete(roleMenu); + sysRoleMenuMapper.delete(new QueryWrapper<>(roleMenu)); SysUserRole userRole = new SysUserRole(); userRole.setRoleId(roleId); - sysUserRoleMapper.delete(userRole); + sysUserRoleMapper.delete(new QueryWrapper<>(userRole)); return true; } @@ -155,7 +151,9 @@ public class SysRoleServiceImpl extends BaseService implements Sy @Transactional(rollbackFor = Exception.class) @Override public void addUserRoleList(List userRoleList) { - sysUserRoleMapper.insertList(userRoleList); + for (SysUserRole userRole : userRoleList) { + sysUserRoleMapper.insert(userRole); + } } /** @@ -171,7 +169,7 @@ public class SysRoleServiceImpl extends BaseService implements Sy SysUserRole userRole = new SysUserRole(); userRole.setRoleId(roleId); userRole.setUserId(userId); - return sysUserRoleMapper.delete(userRole) == 1; + return sysUserRoleMapper.delete(new QueryWrapper<>(userRole)) == 1; } /** diff --git a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/service/impl/SysUserServiceImpl.java b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/service/impl/SysUserServiceImpl.java index ce7eca86..029a7f57 100644 --- a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/service/impl/SysUserServiceImpl.java +++ b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/service/impl/SysUserServiceImpl.java @@ -1,5 +1,7 @@ package com.orange.demo.webadmin.upms.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.alibaba.fastjson.JSONObject; import com.orange.demo.webadmin.upms.service.*; import com.orange.demo.webadmin.upms.dao.*; @@ -20,7 +22,6 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import tk.mybatis.mapper.entity.Example; import java.util.*; import java.util.stream.Collectors; @@ -66,8 +67,7 @@ public class SysUserServiceImpl extends BaseService implements Sy public SysUser getSysUserByLoginName(String loginName) { SysUser filter = new SysUser(); filter.setLoginName(loginName); - filter.setDeletedFlag(GlobalDeletedFlag.NORMAL); - return sysUserMapper.selectOne(filter); + return sysUserMapper.selectOne(new QueryWrapper<>(filter)); } /** @@ -87,14 +87,12 @@ public class SysUserServiceImpl extends BaseService implements Sy MyModelUtil.fillCommonsForInsert(user); sysUserMapper.insert(user); if (CollectionUtils.isNotEmpty(roleIdSet)) { - List userRoleList = new LinkedList<>(); for (Long roleId : roleIdSet) { SysUserRole userRole = new SysUserRole(); userRole.setUserId(user.getUserId()); userRole.setRoleId(roleId); - userRoleList.add(userRole); + sysUserRoleMapper.insert(userRole); } - sysUserRoleMapper.insertList(userRoleList); } return user; } @@ -113,23 +111,21 @@ public class SysUserServiceImpl extends BaseService implements Sy user.setLoginName(originalUser.getLoginName()); user.setPassword(originalUser.getPassword()); MyModelUtil.fillCommonsForUpdate(user, originalUser); - user.setDeletedFlag(GlobalDeletedFlag.NORMAL); - if (sysUserMapper.updateByPrimaryKey(user) != 1) { + UpdateWrapper uw = this.createUpdateQueryForNullValue(user, user.getUserId()); + if (sysUserMapper.update(user, uw) != 1) { return false; } // 先删除原有的User-Role关联关系,再重新插入新的关联关系 SysUserRole deletedUserRole = new SysUserRole(); deletedUserRole.setUserId(user.getUserId()); - sysUserRoleMapper.delete(deletedUserRole); + sysUserRoleMapper.delete(new QueryWrapper<>(deletedUserRole)); if (CollectionUtils.isNotEmpty(roleIdSet)) { - List userRoleList = new LinkedList<>(); for (Long roleId : roleIdSet) { SysUserRole userRole = new SysUserRole(); userRole.setUserId(user.getUserId()); userRole.setRoleId(roleId); - userRoleList.add(userRole); + sysUserRoleMapper.insert(userRole); } - sysUserRoleMapper.insertList(userRoleList); } return true; } @@ -143,13 +139,10 @@ public class SysUserServiceImpl extends BaseService implements Sy @Transactional(rollbackFor = Exception.class) @Override public boolean changePassword(Long userId, String newPass) { - Example e = new Example(SysUser.class); - e.createCriteria() - .andEqualTo(super.idFieldName, userId) - .andEqualTo(super.deletedFlagFieldName, GlobalDeletedFlag.NORMAL); SysUser updatedUser = new SysUser(); + updatedUser.setUserId(userId); updatedUser.setPassword(passwordEncoder.encode(newPass)); - return sysUserMapper.updateByExampleSelective(updatedUser, e) == 1; + return sysUserMapper.updateById(updatedUser) == 1; } /** @@ -161,13 +154,12 @@ public class SysUserServiceImpl extends BaseService implements Sy @Transactional(rollbackFor = Exception.class) @Override public boolean remove(Long userId) { - // 这里先删除主数据 - if (!this.removeById(userId)) { + if (sysUserMapper.deleteById(userId) == 0) { return false; } SysUserRole userRole = new SysUserRole(); userRole.setUserId(userId); - sysUserRoleMapper.delete(userRole); + sysUserRoleMapper.delete(new QueryWrapper<>(userRole)); return true; } diff --git a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/vo/SysMenuVo.java b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/vo/SysMenuVo.java index b5314ba9..cb747e94 100644 --- a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/vo/SysMenuVo.java +++ b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/vo/SysMenuVo.java @@ -1,5 +1,7 @@ package com.orange.demo.webadmin.upms.vo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.util.*; @@ -10,76 +12,91 @@ import java.util.*; * @author Jerry * @date 2020-09-24 */ +@ApiModel("菜单VO") @Data public class SysMenuVo { /** * 菜单Id。 */ + @ApiModelProperty(value = "菜单Id") private Long menuId; /** * 父菜单Id,目录菜单的父菜单为null */ + @ApiModelProperty(value = "父菜单Id") private Long parentId; /** * 菜单显示名称。 */ + @ApiModelProperty(value = "菜单显示名称") private String menuName; /** * 菜单类型 (0: 目录 1: 菜单 2: 按钮 3: UI片段)。 */ + @ApiModelProperty(value = "菜单类型") private Integer menuType; /** * 前端表单路由名称,仅用于menu_type为1的菜单类型。 */ + @ApiModelProperty(value = "前端表单路由名称") private String formRouterName; /** * 在线表单主键Id,仅用于在线表单绑定的菜单。 */ + @ApiModelProperty(value = "在线表单主键Id") private Long onlineFormId; /** * 在线表单菜单的权限控制类型,具体值可参考SysOnlineMenuPermType常量对象。 */ + @ApiModelProperty(value = "在线表单菜单的权限控制类型") private Integer onlineMenuPermType; /** * 菜单显示顺序 (值越小,排序越靠前)。 */ + @ApiModelProperty(value = "菜单显示顺序") private Integer showOrder; /** * 菜单图标。 */ + @ApiModelProperty(value = "菜单显示顺序") private String icon; /** * 创建者Id。 */ + @ApiModelProperty(value = "创建者Id") private Long createUserId; /** * 创建时间。 */ + @ApiModelProperty(value = "创建时间") private Date createTime; /** * 更新者Id。 */ + @ApiModelProperty(value = "更新者Id") private Long updateUserId; /** * 更新时间。 */ + @ApiModelProperty(value = "更新时间") private Date updateTime; /** * 菜单与权限字关联对象列表。 */ + @ApiModelProperty(value = "菜单与权限字关联对象列表") private List> sysMenuPermCodeList; } diff --git a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/vo/SysPermCodeVo.java b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/vo/SysPermCodeVo.java index e1cf4f1f..f9fc72a4 100644 --- a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/vo/SysPermCodeVo.java +++ b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/vo/SysPermCodeVo.java @@ -1,5 +1,7 @@ package com.orange.demo.webadmin.upms.vo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.util.*; @@ -10,61 +12,73 @@ import java.util.*; * @author Jerry * @date 2020-09-24 */ +@ApiModel("权限字VO") @Data public class SysPermCodeVo { /** * 权限字Id。 */ + @ApiModelProperty(value = "权限字Id") private Long permCodeId; /** * 权限字标识(一般为有含义的英文字符串)。 */ + @ApiModelProperty(value = "权限字标识") private String permCode; /** * 上级权限字Id。 */ + @ApiModelProperty(value = "上级权限字Id") private Long parentId; /** * 权限字类型(0: 表单 1: UI片段 2: 操作)。 */ + @ApiModelProperty(value = "权限字类型") private Integer permCodeType; /** * 显示名称。 */ + @ApiModelProperty(value = "显示名称") private String showName; /** * 显示顺序(数值越小,越靠前)。 */ + @ApiModelProperty(value = "显示顺序") private Integer showOrder; /** * 创建者Id。 */ + @ApiModelProperty(value = "创建者Id") private Long createUserId; /** * 创建时间。 */ + @ApiModelProperty(value = "创建时间") private Date createTime; /** * 更新者Id。 */ + @ApiModelProperty(value = "更新者Id") private Long updateUserId; /** * 更新时间。 */ + @ApiModelProperty(value = "更新时间") private Date updateTime; /** * 权限字与权限资源关联对象列表。 */ + @ApiModelProperty(value = "权限字与权限资源关联对象列表") private List> sysPermCodePermList; } \ No newline at end of file diff --git a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/vo/SysPermModuleVo.java b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/vo/SysPermModuleVo.java index 3201867c..fdb96ea2 100644 --- a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/vo/SysPermModuleVo.java +++ b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/vo/SysPermModuleVo.java @@ -1,5 +1,7 @@ package com.orange.demo.webadmin.upms.vo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.util.*; @@ -10,56 +12,67 @@ import java.util.*; * @author Jerry * @date 2020-09-24 */ +@ApiModel("权限资源模块VO") @Data public class SysPermModuleVo { /** * 权限模块Id。 */ + @ApiModelProperty(value = "权限模块Id") private Long moduleId; /** * 权限模块名称。 */ + @ApiModelProperty(value = "权限模块名称") private String moduleName; /** * 上级权限模块Id。 */ + @ApiModelProperty(value = "上级权限模块Id") private Long parentId; /** * 权限模块类型(0: 普通模块 1: Controller模块)。 */ + @ApiModelProperty(value = "权限模块类型") private Integer moduleType; /** * 权限模块在当前层级下的顺序,由小到大。 */ + @ApiModelProperty(value = "显示顺序") private Integer showOrder; /** * 创建者Id。 */ + @ApiModelProperty(value = "创建者Id") private Long createUserId; /** * 创建时间。 */ + @ApiModelProperty(value = "创建时间") private Date createTime; /** * 更新者Id。 */ + @ApiModelProperty(value = "更新者Id") private Long updateUserId; /** * 更新时间。 */ + @ApiModelProperty(value = "更新时间") private Date updateTime; /** * 权限资源对象列表。 */ + @ApiModelProperty(value = "权限资源对象列表") private List sysPermList; } \ No newline at end of file diff --git a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/vo/SysPermVo.java b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/vo/SysPermVo.java index c743ba3c..63deed41 100644 --- a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/vo/SysPermVo.java +++ b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/vo/SysPermVo.java @@ -1,5 +1,7 @@ package com.orange.demo.webadmin.upms.vo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.util.*; @@ -10,61 +12,73 @@ import java.util.*; * @author Jerry * @date 2020-09-24 */ +@ApiModel("权限资源VO") @Data public class SysPermVo { /** * 权限资源Id。 */ + @ApiModelProperty(value = "权限资源Id") private Long permId; /** * 权限资源名称。 */ + @ApiModelProperty(value = "权限资源名称") private String permName; /** * shiro格式的权限字,如(upms:sysUser:add)。 */ + @ApiModelProperty(value = "权限字") private String permCode; /** * 权限所在的权限模块Id。 */ + @ApiModelProperty(value = "权限所在的权限模块Id") private Long moduleId; /** * 关联的URL。 */ + @ApiModelProperty(value = "关联的URL") private String url; /** * 权限在当前模块下的顺序,由小到大。 */ + @ApiModelProperty(value = "显示顺序") private Integer showOrder; /** * 创建者Id。 */ + @ApiModelProperty(value = "创建者Id") private Long createUserId; /** * 创建时间。 */ + @ApiModelProperty(value = "创建时间") private Date createTime; /** * 更新者Id。 */ + @ApiModelProperty(value = "更新者Id") private Long updateUserId; /** * 更新时间。 */ + @ApiModelProperty(value = "更新时间") private Date updateTime; /** * 模块Id的字典关联数据。 */ + @ApiModelProperty(value = "模块Id的字典关联数据") private Map moduleIdDictMap; } \ No newline at end of file diff --git a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/vo/SysRoleVo.java b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/vo/SysRoleVo.java index 2770ccb8..5e6f64a2 100644 --- a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/vo/SysRoleVo.java +++ b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/vo/SysRoleVo.java @@ -1,5 +1,7 @@ package com.orange.demo.webadmin.upms.vo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.util.*; @@ -10,41 +12,49 @@ import java.util.*; * @author Jerry * @date 2020-09-24 */ +@ApiModel("角色VO") @Data public class SysRoleVo { /** * 角色Id。 */ + @ApiModelProperty(value = "角色Id") private Long roleId; /** * 角色名称。 */ + @ApiModelProperty(value = "角色名称") private String roleName; /** * 创建者Id。 */ + @ApiModelProperty(value = "创建者Id") private Long createUserId; /** * 创建时间。 */ + @ApiModelProperty(value = "创建时间") private Date createTime; /** * 更新者Id。 */ + @ApiModelProperty(value = "更新者Id") private Long updateUserId; /** * 更新时间。 */ + @ApiModelProperty(value = "更新时间") private Date updateTime; /** * 角色与菜单关联对象列表。 */ + @ApiModelProperty(value = "角色与菜单关联对象列表") private List> sysRoleMenuList; } diff --git a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/vo/SysUserVo.java b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/vo/SysUserVo.java index 9151e9a0..45ce3410 100644 --- a/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/vo/SysUserVo.java +++ b/orange-demo-single-service/application-webadmin/src/main/java/com/orange/demo/webadmin/upms/vo/SysUserVo.java @@ -1,5 +1,7 @@ package com.orange.demo.webadmin.upms.vo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.util.Date; @@ -12,71 +14,85 @@ import java.util.List; * @author Jerry * @date 2020-09-24 */ +@ApiModel("SysUserVO实体对象") @Data public class SysUserVo { /** * 用户Id。 */ + @ApiModelProperty(value = "用户Id") private Long userId; /** * 登录用户名。 */ + @ApiModelProperty(value = "登录用户名") private String loginName; /** * 用户显示名称。 */ + @ApiModelProperty(value = "用户显示名称") private String showName; /** * 用户类型(0: 管理员 1: 系统管理用户 2: 系统业务用户)。 */ + @ApiModelProperty(value = "用户类型(0: 管理员 1: 系统管理用户 2: 系统业务用户)") private Integer userType; /** * 用户头像的Url。 */ + @ApiModelProperty(value = "用户头像的Url") private String headImageUrl; /** * 用户状态(0: 正常 1: 锁定)。 */ + @ApiModelProperty(value = "用户状态(0: 正常 1: 锁定)") private Integer userStatus; /** * 创建用户Id。 */ + @ApiModelProperty(value = "创建用户Id") private Long createUserId; /** * 更新者Id。 */ + @ApiModelProperty(value = "更新者Id") private Long updateUserId; /** * 创建时间。 */ + @ApiModelProperty(value = "创建时间") private Date createTime; /** * 更新时间。 */ + @ApiModelProperty(value = "更新时间") private Date updateTime; /** * 多对多用户角色数据集合。 */ + @ApiModelProperty(value = "多对多用户角色数据集合") private List> sysUserRoleList; /** * userType 常量字典关联数据。 */ + @ApiModelProperty(value = "userType 常量字典关联数据") private Map userTypeDictMap; /** * userStatus 常量字典关联数据。 */ + @ApiModelProperty(value = "userStatus 常量字典关联数据") private Map userStatusDictMap; } diff --git a/orange-demo-single-service/application-webadmin/src/main/resources/application.yml b/orange-demo-single-service/application-webadmin/src/main/resources/application.yml index 05e92a1f..63df7615 100644 --- a/orange-demo-single-service/application-webadmin/src/main/resources/application.yml +++ b/orange-demo-single-service/application-webadmin/src/main/resources/application.yml @@ -40,16 +40,13 @@ spring: request-context-attribute: request suffix: .ftl -# mybatis的基本配置 -mybatis: - mapperLocations: classpath:com/orange/demo/webadmin/*/dao/mapper/*Mapper.xml,com/orange/demo/common/log/dao/mapper/*Mapper.xml - typeAliasesPackage: com.orange.demo.webadmin.*.model,com.orange.demo.common.log.model - -# mybatis的通用mapper的配置 -mapper: - mappers: tk.mybatis.mapper.common.Mapper,tk.mybatis.mapper.additional.insert.InsertListMapper - not-empty: false - identity: MYSQL +mybatis-plus: + mapper-locations: classpath:com/orange/demo/webadmin/*/dao/mapper/*Mapper.xml,com/orange/demo/common/log/dao/mapper/*Mapper.xml + type-aliases-package: com.orange.demo.webadmin.*.model,com.orange.demo.common.log.model + global-config: + db-config: + logic-delete-value: -1 + logic-not-delete-value: 1 # 自动分页的配置 pagehelper: @@ -84,12 +81,23 @@ redis: # 单位毫秒。分布式锁的超时检测时长。 # 如果一次锁内操作超该毫秒数,或在释放锁之前异常退出,Redis会在该时长之后主动删除该锁使用的key。 lockWatchdogTimeout: 60000 + # redis 密码,空可以不填。 + password: pool: # 连接池数量。 poolSize: 20 # 连接池中最小空闲数量。 minIdle: 5 +swagger: + # 当enabled为false的时候,则可禁用swagger。 + enabled: true + # 工程的基础包名。 + basePackage: com.orange.demo.webadmin + title: 橙单单体服务工程 + description: 橙单单体服务工程详情 + version: 1.0 + # 暴露监控端点 management: endpoints: diff --git a/orange-demo-single-service/application-webadmin/src/main/resources/log4j2.xml b/orange-demo-single-service/application-webadmin/src/main/resources/log4j2.xml index b03b5ad9..a3c35f87 100644 --- a/orange-demo-single-service/application-webadmin/src/main/resources/log4j2.xml +++ b/orange-demo-single-service/application-webadmin/src/main/resources/log4j2.xml @@ -53,6 +53,9 @@ + + + diff --git a/orange-demo-single-service/common/common-core/pom.xml b/orange-demo-single-service/common/common-core/pom.xml index f3e0cad6..f2a0047b 100644 --- a/orange-demo-single-service/common/common-core/pom.xml +++ b/orange-demo-single-service/common/common-core/pom.xml @@ -96,9 +96,9 @@ ${druid.version} - tk.mybatis - mapper-spring-boot-starter - ${mybatis-mapper.version} + com.baomidou + mybatis-plus-boot-starter + ${mybatisplus.version} com.github.pagehelper diff --git a/orange-demo-single-service/common/common-core/src/main/java/com/orange/demo/common/core/annotation/DeletedFlagColumn.java b/orange-demo-single-service/common/common-core/src/main/java/com/orange/demo/common/core/annotation/DeletedFlagColumn.java deleted file mode 100644 index f7d0caaa..00000000 --- a/orange-demo-single-service/common/common-core/src/main/java/com/orange/demo/common/core/annotation/DeletedFlagColumn.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.orange.demo.common.core.annotation; - -import java.lang.annotation.*; - -/** - * 主要用于标记逻辑删除字段。 - * - * @author Jerry - * @date 2020-09-24 - */ -@Target({ElementType.FIELD}) -@Retention(RetentionPolicy.RUNTIME) -@Documented -public @interface DeletedFlagColumn { - -} diff --git a/orange-demo-single-service/common/common-core/src/main/java/com/orange/demo/common/core/aop/DataSourceAspect.java b/orange-demo-single-service/common/common-core/src/main/java/com/orange/demo/common/core/aop/DataSourceAspect.java index 9c1a0b6e..d0bfb0ff 100644 --- a/orange-demo-single-service/common/common-core/src/main/java/com/orange/demo/common/core/aop/DataSourceAspect.java +++ b/orange-demo-single-service/common/common-core/src/main/java/com/orange/demo/common/core/aop/DataSourceAspect.java @@ -36,13 +36,13 @@ public class DataSourceAspect { Class clazz = point.getTarget().getClass(); MyDataSource ds = clazz.getAnnotation(MyDataSource.class); // 通过判断 DataSource 中的值来判断当前方法应用哪个数据源 - DataSourceContextHolder.setDataSourceType(ds.value()); + Integer originalType = DataSourceContextHolder.setDataSourceType(ds.value()); log.debug("set datasource is " + ds.value()); try { return point.proceed(); } finally { - DataSourceContextHolder.clear(); - log.debug("clean datasource"); + DataSourceContextHolder.unset(originalType); + log.debug("unset datasource is " + originalType); } } } diff --git a/orange-demo-single-service/common/common-core/src/main/java/com/orange/demo/common/core/aop/DataSourceResolveAspect.java b/orange-demo-single-service/common/common-core/src/main/java/com/orange/demo/common/core/aop/DataSourceResolveAspect.java index 47a95bb7..6a985b27 100644 --- a/orange-demo-single-service/common/common-core/src/main/java/com/orange/demo/common/core/aop/DataSourceResolveAspect.java +++ b/orange-demo-single-service/common/common-core/src/main/java/com/orange/demo/common/core/aop/DataSourceResolveAspect.java @@ -50,13 +50,13 @@ public class DataSourceResolveAspect { } int type = resolver.resolve(dsr.arg(), point.getArgs()); // 通过判断 DataSource 中的值来判断当前方法应用哪个数据源 - DataSourceContextHolder.setDataSourceType(type); + Integer originalType = DataSourceContextHolder.setDataSourceType(type); log.debug("set datasource is " + type); try { return point.proceed(); } finally { - DataSourceContextHolder.clear(); - log.debug("clean datasource"); + DataSourceContextHolder.unset(originalType); + log.debug("unset datasource is " + originalType); } } } diff --git a/orange-demo-single-service/common/common-core/src/main/java/com/orange/demo/common/core/aop/DictCacheSyncAspect.java b/orange-demo-single-service/common/common-core/src/main/java/com/orange/demo/common/core/aop/DictCacheSyncAspect.java index 586cb127..52083627 100644 --- a/orange-demo-single-service/common/common-core/src/main/java/com/orange/demo/common/core/aop/DictCacheSyncAspect.java +++ b/orange-demo-single-service/common/common-core/src/main/java/com/orange/demo/common/core/aop/DictCacheSyncAspect.java @@ -10,6 +10,8 @@ import org.springframework.core.Ordered; import org.springframework.core.annotation.Order; import org.springframework.stereotype.Component; +import java.io.Serializable; + /** * 字典缓存同步的AOP。该AOP的优先级必须比事务切面的优先级高,因此会在事务外执行该切面的代码。 * @@ -39,23 +41,23 @@ public class DictCacheSyncAspect { Object arg = joinPoint.getArgs()[0]; if ("saveNew".equals(methodName)) { Object data = joinPoint.proceed(); - BaseDictService service = - (BaseDictService) joinPoint.getTarget(); + BaseDictService service = + (BaseDictService) joinPoint.getTarget(); // 这里参数必须使用saveNew方法的返回对象,因为里面包含实际主键值。 service.putDictionaryCache(data); return data; } else if ("update".equals(methodName)) { Object data = joinPoint.proceed(); - BaseDictService service = - (BaseDictService) joinPoint.getTarget(); + BaseDictService service = + (BaseDictService) joinPoint.getTarget(); // update的方法返回的是boolean,因此这里的参数需要使用第一个参数即可。 service.putDictionaryCache(arg); return data; } else { // remove - BaseDictService service = - (BaseDictService) joinPoint.getTarget(); - service.removeDictionaryCache(arg); + BaseDictService service = + (BaseDictService) joinPoint.getTarget(); + service.removeDictionaryCache((Serializable) arg); return joinPoint.proceed(); } } diff --git a/orange-demo-single-service/common/common-core/src/main/java/com/orange/demo/common/core/base/dao/BaseDaoMapper.java b/orange-demo-single-service/common/common-core/src/main/java/com/orange/demo/common/core/base/dao/BaseDaoMapper.java index c1e65a9d..e8d0d56a 100644 --- a/orange-demo-single-service/common/common-core/src/main/java/com/orange/demo/common/core/base/dao/BaseDaoMapper.java +++ b/orange-demo-single-service/common/common-core/src/main/java/com/orange/demo/common/core/base/dao/BaseDaoMapper.java @@ -1,10 +1,8 @@ package com.orange.demo.common.core.base.dao; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; -import tk.mybatis.mapper.additional.insert.InsertListMapper; -import tk.mybatis.mapper.annotation.RegisterMapper; -import tk.mybatis.mapper.common.Mapper; import java.util.List; import java.util.Map; @@ -16,8 +14,7 @@ import java.util.Map; * @author Jerry * @date 2020-09-24 */ -@RegisterMapper -public interface BaseDaoMapper extends Mapper, InsertListMapper { +public interface BaseDaoMapper extends BaseMapper { /** * 根据指定的表名、显示字段列表、过滤条件字符串和分组字段,返回聚合计算后的查询结果。 diff --git a/orange-demo-single-service/common/common-core/src/main/java/com/orange/demo/common/core/base/service/BaseDictService.java b/orange-demo-single-service/common/common-core/src/main/java/com/orange/demo/common/core/base/service/BaseDictService.java index 540ce5e1..ea401e26 100644 --- a/orange-demo-single-service/common/common-core/src/main/java/com/orange/demo/common/core/base/service/BaseDictService.java +++ b/orange-demo-single-service/common/common-core/src/main/java/com/orange/demo/common/core/base/service/BaseDictService.java @@ -1,6 +1,7 @@ package com.orange.demo.common.core.base.service; import cn.hutool.core.util.ReflectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.orange.demo.common.core.constant.GlobalDeletedFlag; import com.orange.demo.common.core.exception.MyRuntimeException; import com.orange.demo.common.core.cache.DictionaryCache; @@ -8,8 +9,8 @@ import com.orange.demo.common.core.object.TokenData; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.springframework.transaction.annotation.Transactional; -import tk.mybatis.mapper.entity.Example; +import java.io.Serializable; import java.util.*; /** @@ -22,7 +23,7 @@ import java.util.*; * @date 2020-09-24 */ @Slf4j -public abstract class BaseDictService extends BaseService implements IBaseDictService { +public abstract class BaseDictService extends BaseService implements IBaseDictService { /** * 缓存池对象。 @@ -89,15 +90,7 @@ public abstract class BaseDictService extends BaseService implements if (tenantIdField != null) { ReflectUtil.setFieldValue(data, tenantIdField, TokenData.takeFromRequest().getTenantId()); } - if (deletedFlagFieldName != null) { - try { - setDeletedFlagMethod.invoke(data, GlobalDeletedFlag.NORMAL); - } catch (Exception e) { - log.error("Failed to call reflection [setDeletedFlagMethod] in BaseDictService.update.", e); - throw new MyRuntimeException(e); - } - } - return mapper().updateByPrimaryKey(data) == 1; + return mapper().updateById(data) == 1; } /** @@ -109,7 +102,7 @@ public abstract class BaseDictService extends BaseService implements @Transactional(rollbackFor = Exception.class) @Override public boolean remove(K id) { - return this.removeById(id); + return mapper().deleteById(id) == 1; } /** @@ -118,15 +111,16 @@ public abstract class BaseDictService extends BaseService implements * @param id 主键Id。 * @return 主键关联的数据,不存在返回null。 */ + @SuppressWarnings("unchecked") @Override - public M getById(K id) { - M data = dictionaryCache.get(id); + public M getById(Serializable id) { + M data = dictionaryCache.get((K) id); if (data != null) { return data; } data = super.getById(id); if (data != null) { - this.dictionaryCache.put(id, data); + this.dictionaryCache.put((K) id, data); } return data; } @@ -188,7 +182,7 @@ public abstract class BaseDictService extends BaseService implements } /** - * 返回符合 inFilterField in (inFilterValues) 条件的所有数据。蜀国property是主键,则从缓存中读取。 + * 返回符合 inFilterField in (inFilterValues) 条件的所有数据。属性property是主键,则从缓存中读取。 * * @param inFilterField 参与(In-list)过滤的Java字段。 * @param inFilterValues 参与(In-list)过滤的Java字段值集合。 @@ -200,7 +194,7 @@ public abstract class BaseDictService extends BaseService implements if (inFilterField.equals(this.idFieldName)) { return this.getInList((Set) inFilterValues); } - return this.getInList(inFilterField, inFilterValues); + return super.getInList(inFilterField, inFilterValues); } /** @@ -220,8 +214,10 @@ public abstract class BaseDictService extends BaseService implements List dataList = this.getInList((Set) inFilterValues); return dataList.size() == inFilterValues.size(); } - Example e = this.makeDefaultInListExample(inFilterField, inFilterValues, null); - return mapper().selectCountByExample(e) == inFilterValues.size(); + String columnName = this.safeMapToColumnName(inFilterField); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in(columnName, inFilterValues); + return mapper().selectCount(queryWrapper) == inFilterValues.size(); } /** diff --git a/orange-demo-single-service/common/common-core/src/main/java/com/orange/demo/common/core/base/service/BaseService.java b/orange-demo-single-service/common/common-core/src/main/java/com/orange/demo/common/core/base/service/BaseService.java index 0a5973a4..6c6a17d0 100644 --- a/orange-demo-single-service/common/common-core/src/main/java/com/orange/demo/common/core/base/service/BaseService.java +++ b/orange-demo-single-service/common/common-core/src/main/java/com/orange/demo/common/core/base/service/BaseService.java @@ -1,9 +1,15 @@ package com.orange.demo.common.core.base.service; +import com.baomidou.mybatisplus.annotation.*; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.orange.demo.common.core.annotation.*; import com.orange.demo.common.core.base.dao.BaseDaoMapper; import com.orange.demo.common.core.constant.AggregationType; import com.orange.demo.common.core.constant.GlobalDeletedFlag; +import com.orange.demo.common.core.exception.InvalidDataFieldException; import com.orange.demo.common.core.exception.MyRuntimeException; import com.orange.demo.common.core.object.*; import com.orange.demo.common.core.util.AopTargetUtil; @@ -14,13 +20,9 @@ import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.MapUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.transaction.annotation.Transactional; -import tk.mybatis.mapper.entity.Example; import cn.hutool.core.util.ReflectUtil; -import javax.persistence.Column; -import javax.persistence.Id; -import javax.persistence.Table; -import javax.persistence.Transient; +import java.io.Serializable; import java.lang.reflect.Modifier; import java.lang.reflect.Field; import java.lang.reflect.Method; @@ -39,7 +41,7 @@ import static java.util.stream.Collectors.*; * @date 2020-09-24 */ @Slf4j -public abstract class BaseService implements IBaseService { +public abstract class BaseService extends ServiceImpl, M> implements IBaseService { /** * 当前Service关联的主Model实体对象的Class。 */ @@ -133,6 +135,11 @@ public abstract class BaseService implements IBaseService { private static final String AGGREGATED_VALUE = "aggregatedValue"; private static final String AND_OP = " AND "; + @Override + public BaseDaoMapper getBaseMapper() { + return mapper(); + } + /** * 构造函数,在实例化的时候,一次性完成所有有关主Model对象信息的加载。 */ @@ -140,7 +147,7 @@ public abstract class BaseService implements IBaseService { public BaseService() { modelClass = (Class) ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0]; idFieldClass = (Class) ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[1]; - this.tableName = modelClass.getAnnotation(Table.class).name(); + this.tableName = modelClass.getAnnotation(TableName.class).value(); Field[] fields = ReflectUtil.getFields(modelClass); for (Field field : fields) { initializeField(field); @@ -148,10 +155,10 @@ public abstract class BaseService implements IBaseService { } private void initializeField(Field field) { - if (idFieldName == null && null != field.getAnnotation(Id.class)) { + if (idFieldName == null && null != field.getAnnotation(TableId.class)) { idFieldName = field.getName(); - Column c = field.getAnnotation(Column.class); - idColumnName = c == null ? idFieldName : c.name(); + TableId c = field.getAnnotation(TableId.class); + idColumnName = c == null ? idFieldName : c.value(); setIdFieldMethod = ReflectUtil.getMethod( modelClass, "set" + StringUtils.capitalize(idFieldName), idFieldClass); getIdFieldMethod = ReflectUtil.getMethod( @@ -159,21 +166,18 @@ public abstract class BaseService implements IBaseService { } if (updateTimeFieldName == null && null != field.getAnnotation(JobUpdateTimeColumn.class)) { updateTimeFieldName = field.getName(); - Column c = field.getAnnotation(Column.class); - updateTimeColumnName = c == null ? updateTimeFieldName : c.name(); + updateTimeColumnName = this.safeMapToColumnName(updateTimeFieldName); } - if (deletedFlagFieldName == null && null != field.getAnnotation(DeletedFlagColumn.class)) { + if (deletedFlagFieldName == null && null != field.getAnnotation(TableLogic.class)) { deletedFlagFieldName = field.getName(); - Column c = field.getAnnotation(Column.class); - deletedFlagColumnName = c == null ? deletedFlagFieldName : c.name(); + deletedFlagColumnName = this.safeMapToColumnName(deletedFlagFieldName); setDeletedFlagMethod = ReflectUtil.getMethod( modelClass, "set" + StringUtils.capitalize(deletedFlagFieldName), Integer.class); } if (tenantIdFieldName == null && null != field.getAnnotation(TenantFilterColumn.class)) { tenantIdField = field; tenantIdFieldName = field.getName(); - Column c = field.getAnnotation(Column.class); - tenantIdColumnName = c == null ? tenantIdFieldName : c.name(); + tenantIdColumnName = this.safeMapToColumnName(tenantIdFieldName); } } @@ -185,28 +189,15 @@ public abstract class BaseService implements IBaseService { protected abstract BaseDaoMapper mapper(); /** - * 基于主键Id删除数据。如果包含逻辑删除字段,则进行逻辑删除。 + * 根据过滤条件删除数据。 * - * @param id 主键Id值。 - * @return true删除成功,false数据不存在。 + * @param filter 过滤对象。 + * @return 删除数量。 */ @Transactional(rollbackFor = Exception.class) @Override - public boolean removeById(K id) { - if (this.deletedFlagFieldName == null) { - return mapper().deleteByPrimaryKey(id) == 1; - } - try { - Example e = new Example(modelClass); - Example.Criteria c = e.createCriteria().andEqualTo(idFieldName, id); - c.andEqualTo(deletedFlagFieldName, GlobalDeletedFlag.NORMAL); - M data = modelClass.newInstance(); - setDeletedFlagMethod.invoke(data, GlobalDeletedFlag.DELETED); - return mapper().updateByExampleSelective(data, e) == 1; - } catch (Exception ex) { - log.error("Failed to call reflection method in BaseService.removeById.", ex); - throw new MyRuntimeException(ex); - } + public Integer removeBy(M filter) { + return mapper().delete(new QueryWrapper<>(filter)); } /** @@ -223,9 +214,8 @@ public abstract class BaseService implements IBaseService { if (fieldName.equals(this.idFieldName)) { return this.existId((K) fieldValue); } - Example e = new Example(modelClass); - e.createCriteria().andEqualTo(fieldName, fieldValue); - return mapper().selectCountByExample(e) == 1; + String columnName = MyModelUtil.mapToColumnName(fieldName, modelClass); + return mapper().selectCount(new QueryWrapper().eq(columnName, fieldValue)) == 1; } /** @@ -239,24 +229,6 @@ public abstract class BaseService implements IBaseService { return getById(id) != null; } - /** - * 获取主键Id关联的数据。 - * - * @param id 主键Id。 - * @return 主键关联的数据,不存在返回null。 - */ - @Override - public M getById(K id) { - if (deletedFlagFieldName == null) { - return mapper().selectByPrimaryKey(id); - } - Example e = new Example(modelClass); - e.createCriteria() - .andEqualTo(this.idFieldName, id) - .andEqualTo(deletedFlagFieldName, GlobalDeletedFlag.NORMAL); - return mapper().selectOneByExample(e); - } - /** * 返回符合 filterField = filterValue 条件的一条数据。 * @@ -270,12 +242,9 @@ public abstract class BaseService implements IBaseService { if (filterField.equals(idFieldName)) { return this.getById((K) filterValue); } - Example e = new Example(modelClass); - Example.Criteria c = e.createCriteria().andEqualTo(filterField, filterValue); - if (deletedFlagFieldName != null) { - c.andEqualTo(deletedFlagFieldName, GlobalDeletedFlag.NORMAL); - } - return mapper().selectOneByExample(e); + String columnName = this.safeMapToColumnName(filterField); + QueryWrapper queryWrapper = new QueryWrapper().eq(columnName, filterValue); + return mapper().selectOne(queryWrapper); } /** @@ -299,12 +268,7 @@ public abstract class BaseService implements IBaseService { */ @Override public List getAllList() { - if (deletedFlagFieldName == null) { - return mapper().selectAll(); - } - Example e = new Example(modelClass); - e.createCriteria().andEqualTo(deletedFlagFieldName, GlobalDeletedFlag.NORMAL); - return mapper().selectByExample(e); + return mapper().selectList(Wrappers.emptyWrapper()); } /** @@ -315,14 +279,11 @@ public abstract class BaseService implements IBaseService { */ @Override public List getAllListByOrder(String... orderByProperties) { - Example e = new Example(modelClass); - for (String orderByProperty : orderByProperties) { - e.orderBy(orderByProperty); + String[] columns = new String[orderByProperties.length]; + for (int i = 0; i < orderByProperties.length; i++) { + columns[i] = this.safeMapToColumnName(orderByProperties[i]); } - if (deletedFlagFieldName != null) { - e.and().andEqualTo(deletedFlagFieldName, GlobalDeletedFlag.NORMAL); - } - return mapper().selectByExample(e); + return mapper().selectList(new QueryWrapper().orderByAsc(columns)); } /** @@ -351,8 +312,8 @@ public abstract class BaseService implements IBaseService { if (CollectionUtils.isEmpty(inFilterValues)) { return true; } - Example e = this.makeDefaultInListExample(inFilterField, inFilterValues, null); - return mapper().selectCountByExample(e) == inFilterValues.size(); + String column = this.safeMapToColumnName(inFilterField); + return mapper().selectCount(new QueryWrapper().in(column, inFilterValues)) == inFilterValues.size(); } /** @@ -391,8 +352,12 @@ public abstract class BaseService implements IBaseService { if (CollectionUtils.isEmpty(inFilterValues)) { return new LinkedList<>(); } - Example e = this.makeDefaultInListExample(inFilterField, inFilterValues, orderBy); - return mapper().selectByExample(e); + String column = this.safeMapToColumnName(inFilterField); + QueryWrapper queryWrapper = new QueryWrapper().in(column, inFilterValues); + if (StringUtils.isNotBlank(orderBy)) { + queryWrapper.last(orderBy); + } + return mapper().selectList(queryWrapper); } /** @@ -403,16 +368,7 @@ public abstract class BaseService implements IBaseService { */ @Override public int getCountByFilter(M filter) { - if (deletedFlagFieldName == null) { - return mapper().selectCount(filter); - } - try { - setDeletedFlagMethod.invoke(filter, GlobalDeletedFlag.NORMAL); - return mapper().selectCount(filter); - } catch (Exception e) { - log.error("Failed to call reflection [setDeletedFlagMethod] in BaseService.getCountByFilter.", e); - throw new MyRuntimeException(e); - } + return mapper().selectCount(new QueryWrapper<>(filter)); } /** @@ -434,42 +390,7 @@ public abstract class BaseService implements IBaseService { */ @Override public List getListByFilter(M filter) { - if (filter == null) { - return this.getAllList(); - } - if (deletedFlagFieldName == null) { - return mapper().select(filter); - } - try { - setDeletedFlagMethod.invoke(filter, GlobalDeletedFlag.NORMAL); - return mapper().select(filter); - } catch (Exception ex) { - log.error("Failed to call reflection code of BaseService.getListByFilter.", ex); - throw new MyRuntimeException(ex); - } - } - - private void assembleCriteriaByFilter(M filter, Field field, Example.Criteria c) { - int modifiers = field.getModifiers(); - // transient类型的字段不能作为查询条件 - int transientMask = 128; - if ((modifiers & transientMask) != 0 || Modifier.isStatic(modifiers)) { - return; - } - if (field.getName().equals(deletedFlagFieldName)) { - c.andEqualTo(deletedFlagFieldName, GlobalDeletedFlag.NORMAL); - } else { - ReflectUtil.setAccessible(field); - try { - Object o = field.get(filter); - if (o != null) { - c.andEqualTo(field.getName(), field.get(filter)); - } - } catch (IllegalAccessException ex) { - log.error("Failed to call reflection code of BaseService.getListByFilter.", ex); - throw new MyRuntimeException(ex); - } - } + return mapper().selectList(new QueryWrapper<>(filter)); } /** @@ -481,17 +402,14 @@ public abstract class BaseService implements IBaseService { */ @Override public List getListByParentId(String parentIdFieldName, K parentId) { - Example e = new Example(modelClass); - Example.Criteria c = e.createCriteria(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + String parentIdColumn = this.safeMapToColumnName(parentIdFieldName); if (parentId != null) { - c.andEqualTo(parentIdFieldName, parentId); + queryWrapper.eq(parentIdColumn, parentId); } else { - c.andIsNull(parentIdFieldName); + queryWrapper.isNull(parentIdColumn); } - if (deletedFlagFieldName != null) { - c.andEqualTo(deletedFlagFieldName, GlobalDeletedFlag.NORMAL); - } - return mapper().selectByExample(e); + return mapper().selectList(queryWrapper); } /** @@ -521,32 +439,21 @@ public abstract class BaseService implements IBaseService { */ @Override public List getListByCondition(List selectList, M filter, String whereClause, String orderBy) { - Example e = new Example(modelClass); - Example.Criteria c = null; + QueryWrapper queryWrapper = new QueryWrapper<>(filter); if (CollectionUtils.isNotEmpty(selectList)) { - String[] selectFields = new String[selectList.size()]; - selectList.toArray(selectFields); - e.selectProperties(selectFields); - } - if (StringUtils.isNotBlank(orderBy)) { - e.setOrderByClause(orderBy); - } - if (filter != null) { - c = e.createCriteria(); - Field[] fields = ReflectUtil.getFields(modelClass); - for (Field field : fields) { - if (field.getAnnotation(Transient.class) == null) { - this.assembleCriteriaByFilter(filter, field, c); - } + String[] columns = new String[selectList.size()]; + for (int i = 0; i < selectList.size(); i++) { + columns[i] = this.safeMapToColumnName(selectList.get(i)); } + queryWrapper.select(columns); } if (StringUtils.isNotBlank(whereClause)) { - if (c == null) { - c = e.createCriteria(); - } - c.andCondition(whereClause); + queryWrapper.apply(whereClause); } - return mapper().selectByExample(e); + if (StringUtils.isNotBlank(orderBy)) { + queryWrapper.last(" ORDER BY " + orderBy); + } + return mapper().selectList(queryWrapper); } /** @@ -753,9 +660,10 @@ public abstract class BaseService implements IBaseService { continue; } Object masterIdValue = ReflectUtil.getFieldValue(dataObject, relationStruct.masterIdField); - Example e = new Example(relationStruct.relationManyToMany.relationModelClass()); - e.createCriteria().andEqualTo(relationStruct.masterIdField.getName(), masterIdValue); - List manyToManyList = relationStruct.manyToManyMapper.selectByExample(e); + String masterIdColumn = this.safeMapToColumnName(relationStruct.masterIdField.getName()); + Map filterMap = new HashMap<>(1); + filterMap.put(masterIdColumn, masterIdValue); + List manyToManyList = relationStruct.manyToManyMapper.selectByMap(filterMap); ReflectUtil.setFieldValue(dataObject, relationStruct.relationField, manyToManyList); } } @@ -904,7 +812,7 @@ public abstract class BaseService implements IBaseService { .collect(toSet()); // 从主表集合中,抽取主表关联字段的集合,再以in list形式去从表中查询。 if (CollectionUtils.isNotEmpty(masterIdSet)) { - BaseService relationService = relationStruct.service; + BaseService relationService = relationStruct.service; List relationList = relationService.getInList(relationStruct.relationOneToOne.slaveIdField(), masterIdSet); MyModelUtil.makeOneToOneRelation( @@ -913,8 +821,8 @@ public abstract class BaseService implements IBaseService { if (withDict && relationStruct.relationOneToOne.loadSlaveDict() && CollectionUtils.isNotEmpty(relationList)) { @SuppressWarnings("unchecked") - BaseService proxyTarget = - (BaseService) AopTargetUtil.getTarget(relationService); + BaseService proxyTarget = + (BaseService) AopTargetUtil.getTarget(relationService); // 关联本地字典。 proxyTarget.buildDictForDataList(relationList, false, ignoreFields); // 关联常量字典 @@ -941,14 +849,14 @@ public abstract class BaseService implements IBaseService { } Object id = ReflectUtil.getFieldValue(dataObject, relationStruct.masterIdField); if (id != null) { - BaseService relationService = relationStruct.service; + BaseService relationService = relationStruct.service; Object relationObject = relationService.getOne(relationStruct.relationOneToOne.slaveIdField(), id); ReflectUtil.setFieldValue(dataObject, relationStruct.relationField, relationObject); // 仅仅当需要加载从表字典关联时,才去加载。 if (withDict && relationStruct.relationOneToOne.loadSlaveDict() && relationObject != null) { @SuppressWarnings("unchecked") - BaseService proxyTarget = - (BaseService) AopTargetUtil.getTarget(relationService); + BaseService proxyTarget = + (BaseService) AopTargetUtil.getTarget(relationService); // 关联本地字典 proxyTarget.buildDictForData(relationObject, false, ignoreFields); // 关联常量字典 @@ -978,7 +886,7 @@ public abstract class BaseService implements IBaseService { .collect(toSet()); // 从主表集合中,抽取主表关联字段的集合,再以in list形式去从表中查询。 if (CollectionUtils.isNotEmpty(masterIdSet)) { - BaseService relationService = relationStruct.service; + BaseService relationService = relationStruct.service; List relationList = relationService.getInList(relationStruct.relationOneToMany.slaveIdField(), masterIdSet); MyModelUtil.makeOneToManyRelation( @@ -1003,7 +911,7 @@ public abstract class BaseService implements IBaseService { } Object id = ReflectUtil.getFieldValue(dataObject, relationStruct.masterIdField); if (id != null) { - BaseService relationService = relationStruct.service; + BaseService relationService = relationStruct.service; Set masterIdSet = new HashSet<>(1); masterIdSet.add(id); List relationObject = relationService.getInList( @@ -1289,32 +1197,97 @@ public abstract class BaseService implements IBaseService { } /** - * 通过(In-list)条件和orderBy条件,构建Example对象,以供后续的查询操作使用。 + * 因为Mybatis Plus中QueryWrapper的条件方法都要求传入数据表字段名,因此提供该函数将 + * Java实体对象的字段名转换为数据表字段名,如果不存在会抛出异常。 + * 另外在MyModelUtil.mapToColumnName有一级缓存,对于查询过的对象字段都会放到缓存中, + * 下次映射转换的时候,会直接从缓存获取。 * - * @param inFilterField 参与(In-list)过滤的Java字段。 - * @param inFilterValues 参与(In-list)过滤的Java字段值集合。 - * @param orderBy 排序字段。 - * @param in 属性字段的类型。 - * @return 构建后的Example对象。 + * @param fieldName Java实体对象的字段名。 + * @return 对应的数据表字段名。 */ - protected Example makeDefaultInListExample(String inFilterField, Collection inFilterValues, String orderBy) { - Set inFilterValueSet; - Example e = new Example(modelClass); - if (StringUtils.isNotBlank(orderBy)) { - e.setOrderByClause(orderBy); + protected String safeMapToColumnName(String fieldName) { + String columnName = MyModelUtil.mapToColumnName(fieldName, modelClass); + if (columnName == null) { + throw new InvalidDataFieldException(modelClass.getSimpleName(), fieldName); } - if (inFilterValues instanceof Set) { - inFilterValueSet = (Set) inFilterValues; - } else { - inFilterValueSet = new HashSet<>(inFilterValues.size()); - inFilterValueSet.addAll(inFilterValues); + return columnName; + } + + /** + * 因为Mybatis Plus在update的时候,不能将实体对象中值为null的字段,更新为null, + * 而且忽略更新,在全部更新场景下,这个是非常重要的,所以我们写了这个函数绕开这一问题。 + * 该函数会遍历实体对象中,所有不包含@Transient注解,没有transient修饰符的字段,如果 + * 当前对象的该字段值为null,则会调用UpdateWrapper的set方法,将该字段赋值为null。 + * 相比于其他重载方法,该方法会将参数中的主键id,设置到UpdateWrapper的过滤条件中。 + * + * @param o 实体对象。 + * @param id 实体对象的主键值。 + * @return 创建后的UpdateWrapper。 + */ + protected UpdateWrapper createUpdateQueryForNullValue(M o, K id) { + UpdateWrapper uw = createUpdateQueryForNullValue(o, modelClass); + try { + M filter = modelClass.newInstance(); + this.setIdFieldMethod.invoke(filter, id); + uw.setEntity(filter); + } catch (Exception e) { + log.error("Failed to call reflection code of BaseService.createUpdateQueryForNullValue.", e); + throw new MyRuntimeException(e); } - Example.Criteria c = e.createCriteria(); - c.andIn(inFilterField, inFilterValueSet); - if (deletedFlagFieldName != null) { - c.andEqualTo(deletedFlagFieldName, GlobalDeletedFlag.NORMAL); + return uw; + } + + /** + * 因为Mybatis Plus在update的时候,不能将实体对象中值为null的字段,更新为null, + * 而且忽略更新,在全部更新场景下,这个是非常重要的,所以我们写了这个函数绕开这一问题。 + * 该函数会遍历实体对象中,所有不包含@Transient注解,没有transient修饰符的字段,如果 + * 当前对象的该字段值为null,则会调用UpdateWrapper的set方法,将该字段赋值为null。 + * + * @param o 实体对象。 + * @return 创建后的UpdateWrapper。 + */ + protected UpdateWrapper createUpdateQueryForNullValue(M o) { + return createUpdateQueryForNullValue(o, modelClass); + } + + /** + * 因为Mybatis Plus在update的时候,不能将实体对象中值为null的字段,更新为null, + * 而且忽略更新,在全部更新场景下,这个是非常重要的,所以我们写了这个函数绕开这一问题。 + * 该函数会遍历实体对象中,所有不包含@Transient注解,没有transient修饰符的字段,如果 + * 当前对象的该字段值为null,则会调用UpdateWrapper的set方法,将该字段赋值为null。 + * + * @param o 实体对象。 + * @param clazz 实体对象的class。 + * @return 创建后的UpdateWrapper。 + */ + public static UpdateWrapper createUpdateQueryForNullValue(T o, Class clazz) { + UpdateWrapper uw = new UpdateWrapper<>(); + Field[] fields = ReflectUtil.getFields(clazz); + List nullColumnList = new LinkedList<>(); + for (Field field : fields) { + TableField tableField = field.getAnnotation(TableField.class); + if (tableField == null || tableField.exist()) { + int modifiers = field.getModifiers(); + // transient类型的字段不能作为查询条件,静态字段和逻辑删除都不考虑。 + int transientMask = 128; + if ((modifiers & transientMask) == 1 + || Modifier.isStatic(modifiers) + || field.getAnnotation(TableLogic.class) != null) { + continue; + } + // 仅当实体对象参数中,当前字段值为null的时候,才会赋值给UpdateWrapper。 + // 以便在后续的更新中,可以将这些null字段的值设置到数据库表对应的字段中。 + if (ReflectUtil.getFieldValue(o, field) == null) { + nullColumnList.add(MyModelUtil.safeMapToColumnName(field.getName(), clazz)); + } + } } - return e; + if (CollectionUtils.isNotEmpty(nullColumnList)) { + for (String nullColumn : nullColumnList) { + uw.set(nullColumn, null); + } + } + return uw; } @SuppressWarnings("unchecked") @@ -1329,7 +1302,7 @@ public abstract class BaseService implements IBaseService { relationStruct.service = ApplicationContextHolder.getBean( StringUtils.uncapitalize(relationOneToOne.slaveServiceName())); } else { - relationStruct.service = (BaseService) + relationStruct.service = (BaseService) ApplicationContextHolder.getBean(relationOneToOne.slaveServiceClass()); } relationOneToOneStructList.add(relationStruct); @@ -1345,7 +1318,7 @@ public abstract class BaseService implements IBaseService { relationStruct.service = ApplicationContextHolder.getBean( StringUtils.uncapitalize(relationOneToMany.slaveServiceName())); } else { - relationStruct.service = (BaseService) + relationStruct.service = (BaseService) ApplicationContextHolder.getBean(relationOneToMany.slaveServiceClass()); } relationOneToManyStructList.add(relationStruct); @@ -1375,7 +1348,7 @@ public abstract class BaseService implements IBaseService { relationStruct.service = ApplicationContextHolder.getBean( StringUtils.uncapitalize(relationOneToManyAggregation.slaveServiceName())); } else { - relationStruct.service = (BaseService) + relationStruct.service = (BaseService) ApplicationContextHolder.getBean(relationOneToManyAggregation.slaveServiceClass()); } relationOneToManyAggrStructList.add(relationStruct); @@ -1391,7 +1364,7 @@ public abstract class BaseService implements IBaseService { relationStruct.service = ApplicationContextHolder.getBean( StringUtils.uncapitalize(relationManyToManyAggregation.slaveServiceName())); } else { - relationStruct.service = (BaseService) + relationStruct.service = (BaseService) ApplicationContextHolder.getBean(relationManyToManyAggregation.slaveServiceClass()); } relationManyToManyAggrStructList.add(relationStruct); @@ -1424,7 +1397,7 @@ public abstract class BaseService implements IBaseService { relationStruct.service = ApplicationContextHolder.getBean( StringUtils.uncapitalize(relationDict.slaveServiceName())); } else { - relationStruct.service = (BaseService) + relationStruct.service = (BaseService) ApplicationContextHolder.getBean(relationDict.slaveServiceClass()); } relationDictStructList.add(relationStruct); @@ -1621,7 +1594,7 @@ public abstract class BaseService implements IBaseService { private Field relationField; private Field masterIdField; private Field equalOneToOneRelationField; - private BaseService service; + private BaseService service; private BaseDaoMapper manyToManyMapper; private Map dictMap; private RelationDict relationDict; diff --git a/orange-demo-single-service/common/common-core/src/main/java/com/orange/demo/common/core/base/service/IBaseDictService.java b/orange-demo-single-service/common/common-core/src/main/java/com/orange/demo/common/core/base/service/IBaseDictService.java index b7319d69..e00a20cd 100644 --- a/orange-demo-single-service/common/common-core/src/main/java/com/orange/demo/common/core/base/service/IBaseDictService.java +++ b/orange-demo-single-service/common/common-core/src/main/java/com/orange/demo/common/core/base/service/IBaseDictService.java @@ -1,5 +1,6 @@ package com.orange.demo.common.core.base.service; +import java.io.Serializable; import java.util.List; /** @@ -10,7 +11,7 @@ import java.util.List; * @author Jerry * @date 2020-09-24 */ -public interface IBaseDictService extends IBaseService { +public interface IBaseDictService extends IBaseService { /** * 重新加载数据库中所有当前表数据到系统内存。 diff --git a/orange-demo-single-service/common/common-core/src/main/java/com/orange/demo/common/core/base/service/IBaseService.java b/orange-demo-single-service/common/common-core/src/main/java/com/orange/demo/common/core/base/service/IBaseService.java index 66b9bba5..93e8cf45 100644 --- a/orange-demo-single-service/common/common-core/src/main/java/com/orange/demo/common/core/base/service/IBaseService.java +++ b/orange-demo-single-service/common/common-core/src/main/java/com/orange/demo/common/core/base/service/IBaseService.java @@ -1,7 +1,9 @@ package com.orange.demo.common.core.base.service; +import com.baomidou.mybatisplus.extension.service.IService; import com.orange.demo.common.core.object.MyRelationParam; +import java.io.Serializable; import java.util.*; /** @@ -12,15 +14,15 @@ import java.util.*; * @author Jerry * @date 2020-09-24 */ -public interface IBaseService { +public interface IBaseService extends IService{ /** - * 基于主键Id删除数据。如果包含逻辑删除字段,则进行逻辑删除。 + * 根据过滤条件删除数据。 * - * @param id 主键Id值。 - * @return true删除成功,false数据不存在。 + * @param filter 过滤对象。 + * @return 删除数量。 */ - boolean removeById(K id); + Integer removeBy(M filter); /** * 判断指定字段的数据是否存在,且仅仅存在一条记录。 @@ -40,14 +42,6 @@ public interface IBaseService { */ boolean existId(K id); - /** - * 获取主键Id关联的数据。 - * - * @param id 主键Id。 - * @return 主键关联的数据,不存在返回null。 - */ - M getById(K id); - /** * 返回符合 filterField = filterValue 条件的一条数据。 * diff --git a/orange-demo-single-service/common/common-core/src/main/java/com/orange/demo/common/core/config/DataSourceContextHolder.java b/orange-demo-single-service/common/common-core/src/main/java/com/orange/demo/common/core/config/DataSourceContextHolder.java index caaf73e6..8d8ad22e 100644 --- a/orange-demo-single-service/common/common-core/src/main/java/com/orange/demo/common/core/config/DataSourceContextHolder.java +++ b/orange-demo-single-service/common/common-core/src/main/java/com/orange/demo/common/core/config/DataSourceContextHolder.java @@ -11,15 +11,20 @@ public class DataSourceContextHolder { private static final ThreadLocal CONTEXT_HOLDER = new ThreadLocal<>(); /** - * 设置数据源类型 + * 设置数据源类型。 + * * @param type 数据源类型 + * @return 原有数据源类型,如果第一次设置则返回null。 */ - public static void setDataSourceType(Integer type) { + public static Integer setDataSourceType(Integer type) { + Integer datasourceType = CONTEXT_HOLDER.get(); CONTEXT_HOLDER.set(type); + return datasourceType; } /** * 获取当前数据库操作执行线程的数据源类型,同时由动态数据源的路由函数调用。 + * * @return 数据源类型。 */ public static Integer getDataSourceType() { @@ -27,10 +32,16 @@ public class DataSourceContextHolder { } /** - * 清除线程本地变量,以免内存泄漏 + * 清除线程本地变量,以免内存泄漏。 + + * @param originalType 原有的数据源类型,如果该值为null,则情况本地化变量。 */ - public static void clear() { - CONTEXT_HOLDER.remove(); + public static void unset(Integer originalType) { + if (originalType == null) { + CONTEXT_HOLDER.remove(); + } else { + CONTEXT_HOLDER.set(originalType); + } } /** diff --git a/orange-demo-single-service/common/common-core/src/main/java/com/orange/demo/common/core/constant/AggregationType.java b/orange-demo-single-service/common/common-core/src/main/java/com/orange/demo/common/core/constant/AggregationType.java index efec91cb..b27595ff 100644 --- a/orange-demo-single-service/common/common-core/src/main/java/com/orange/demo/common/core/constant/AggregationType.java +++ b/orange-demo-single-service/common/common-core/src/main/java/com/orange/demo/common/core/constant/AggregationType.java @@ -34,11 +34,11 @@ public final class AggregationType { private static final Map DICT_MAP = new HashMap<>(5); static { - DICT_MAP.put(0, "累计总和"); - DICT_MAP.put(1, "数量总和"); - DICT_MAP.put(2, "平均值"); - DICT_MAP.put(3, "最小值"); - DICT_MAP.put(4, "最大值"); + DICT_MAP.put(SUM, "累计总和"); + DICT_MAP.put(COUNT, "数量总和"); + DICT_MAP.put(AVG, "平均值"); + DICT_MAP.put(MIN, "最小值"); + DICT_MAP.put(MAX, "最大值"); } /** diff --git a/orange-demo-single-service/common/common-core/src/main/java/com/orange/demo/common/core/object/MyOrderParam.java b/orange-demo-single-service/common/common-core/src/main/java/com/orange/demo/common/core/object/MyOrderParam.java index f5174464..437e8dfb 100644 --- a/orange-demo-single-service/common/common-core/src/main/java/com/orange/demo/common/core/object/MyOrderParam.java +++ b/orange-demo-single-service/common/common-core/src/main/java/com/orange/demo/common/core/object/MyOrderParam.java @@ -6,8 +6,10 @@ import com.orange.demo.common.core.exception.InvalidClassFieldException; import com.orange.demo.common.core.exception.InvalidDataFieldException; import com.orange.demo.common.core.exception.InvalidDataModelException; import com.orange.demo.common.core.util.MyModelUtil; +import lombok.AllArgsConstructor; import lombok.Data; import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; @@ -227,6 +229,8 @@ public class MyOrderParam extends ArrayList { /** * 排序信息对象。 */ + @AllArgsConstructor + @NoArgsConstructor @Data public static class OrderInfo { /** diff --git a/orange-demo-single-service/common/common-core/src/main/java/com/orange/demo/common/core/object/MyWhereCriteria.java b/orange-demo-single-service/common/common-core/src/main/java/com/orange/demo/common/core/object/MyWhereCriteria.java index cc533cdb..27429859 100644 --- a/orange-demo-single-service/common/common-core/src/main/java/com/orange/demo/common/core/object/MyWhereCriteria.java +++ b/orange-demo-single-service/common/common-core/src/main/java/com/orange/demo/common/core/object/MyWhereCriteria.java @@ -10,6 +10,7 @@ import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import java.util.Collection; +import java.util.Date; import java.util.List; /** @@ -21,7 +22,6 @@ import java.util.List; @Slf4j @Data @NoArgsConstructor -@AllArgsConstructor public class MyWhereCriteria { /** @@ -80,11 +80,26 @@ public class MyWhereCriteria { @JSONField(serialize = false) private Class modelClazz; + /** + * 数据库表名。 + */ + private String tableName; + /** * Java属性名称。 */ private String fieldName; + /** + * 数据表字段名。 + */ + private String columnName; + + /** + * 数据表字段类型。 + */ + private Integer columnType; + /** * 操作符类型,取值范围见上面的常量值。 */ @@ -95,6 +110,13 @@ public class MyWhereCriteria { */ private Object value; + public MyWhereCriteria(Class modelClazz, String fieldName, Integer operatorType, Object value) { + this.modelClazz = modelClazz; + this.fieldName = fieldName; + this.operatorType = operatorType; + this.value = value; + } + /** * 设置条件值。 * @@ -127,6 +149,29 @@ public class MyWhereCriteria { return doVerify(); } + /** + * 设置条件值,通过该构造方法设置时,通常是直接将表名、字段名、字段类型等赋值,无需在通过modelClazz进行推演。 + * + * @param tableName 数据表名。 + * @param columnName 数据字段名。 + * @param columnType 数据字段类型。 + * @param operatorType 操作类型。具体值可参考当前对象的静态变量。 + * @param value 条件过滤值。 + */ + public void setCriteria( + String tableName, String columnName, String columnType, Integer operatorType, Object value) { + this.tableName = tableName; + this.columnName = columnName; + this.columnType = MyModelUtil.NUMERIC_FIELD_TYPE; + if (String.class.getSimpleName().equals(columnType)) { + this.columnType = MyModelUtil.STRING_FIELD_TYPE; + } else if (Date.class.getSimpleName().equals(columnType)) { + this.columnType = MyModelUtil.DATE_FIELD_TYPE; + } + this.operatorType = operatorType; + this.value = value; + } + /** * 在执行该函数之前,该对象的所有数据均已经赋值完毕。 * 该函数主要验证操作符字段和条件值字段对应关系的合法性。 @@ -182,13 +227,13 @@ public class MyWhereCriteria { case OPERATOR_NOT_EQUAL: return " != "; case OPERATOR_GE: - return " >= "; + return " >= "; case OPERATOR_GT: - return " > "; + return " > "; case OPERATOR_LE: - return " <= "; + return " <= "; case OPERATOR_LT: - return " < "; + return " < "; case OPERATOR_LIKE: return " LIKE "; case OPERATOR_NOT_NULL: @@ -222,18 +267,26 @@ public class MyWhereCriteria { * @return 组装后的SQL条件从句。 */ public String makeCriteriaString(Class modelClazz) { - if (modelClazz == null) { - throw new IllegalArgumentException("ModelClazz argument can't be NULL."); + String tableName; + String columnName; + Integer columnType; + if (modelClazz != null) { + Tuple2 fieldInfo = MyModelUtil.mapToColumnInfo(fieldName, modelClazz); + if (fieldInfo == null) { + throw new InvalidDataFieldException(modelClazz.getSimpleName(), fieldName); + } + columnName = fieldInfo.getFirst(); + columnType = fieldInfo.getSecond(); + tableName = MyModelUtil.mapToTableName(modelClazz); + if (tableName == null) { + throw new InvalidDataModelException(modelClazz.getSimpleName()); + } + } else { + tableName = this.tableName; + columnName = this.columnName; + columnType = this.columnType; } - Tuple2 fieldInfo = MyModelUtil.mapToColumnInfo(fieldName, modelClazz); - if (fieldInfo == null) { - throw new InvalidDataFieldException(modelClazz.getSimpleName(), fieldName); - } - String tableName = MyModelUtil.mapToTableName(modelClazz); - if (tableName == null) { - throw new InvalidDataModelException(modelClazz.getSimpleName()); - } - return this.buildClauseString(tableName, fieldInfo.getFirst(), fieldInfo.getSecond()); + return this.buildClauseString(tableName, columnName, columnType); } /** diff --git a/orange-demo-single-service/common/common-core/src/main/java/com/orange/demo/common/core/object/ResponseResult.java b/orange-demo-single-service/common/common-core/src/main/java/com/orange/demo/common/core/object/ResponseResult.java index ba83bd96..eeddf40c 100644 --- a/orange-demo-single-service/common/common-core/src/main/java/com/orange/demo/common/core/object/ResponseResult.java +++ b/orange-demo-single-service/common/common-core/src/main/java/com/orange/demo/common/core/object/ResponseResult.java @@ -135,7 +135,7 @@ public class ResponseResult { } /** - * 根据参数的errorCode和errorMessage创建新的错误应答对象。 + * 根据参数中出错的ResponseResult,创建新的错误应答对象。 * * @param errorCause 导致错误原因的应答对象。 * @return 返回创建的ResponseResult实例对象。 @@ -144,6 +144,16 @@ public class ResponseResult { return error(errorCause.errorCode, errorCause.getErrorMessage()); } + /** + * 根据参数中出错的CallResult,创建新的错误应答对象。 + * + * @param errorCause 导致错误原因的应答对象。 + * @return 返回创建的ResponseResult实例对象。 + */ + public static ResponseResult errorFrom(CallResult errorCause) { + return error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorCause.getErrorMessage()); + } + /** * 是否成功。 * diff --git a/orange-demo-single-service/common/common-core/src/main/java/com/orange/demo/common/core/object/TokenData.java b/orange-demo-single-service/common/common-core/src/main/java/com/orange/demo/common/core/object/TokenData.java index fd7fef57..6d5281f5 100644 --- a/orange-demo-single-service/common/common-core/src/main/java/com/orange/demo/common/core/object/TokenData.java +++ b/orange-demo-single-service/common/common-core/src/main/java/com/orange/demo/common/core/object/TokenData.java @@ -56,6 +56,10 @@ public class TokenData { * 仅当系统支持uaa时可用,否则可以直接忽略该字段。保留该字段是为了保持单体和微服务通用代码部分的兼容性。 */ private String uaaAccessToken; + /** + * 数据库路由键(仅当水平分库时使用)。 + */ + private Integer datasourceRouteKey; /** * 登录IP。 */ diff --git a/orange-demo-single-service/common/common-core/src/main/java/com/orange/demo/common/core/util/MyModelUtil.java b/orange-demo-single-service/common/common-core/src/main/java/com/orange/demo/common/core/util/MyModelUtil.java index 8b76a105..d2d6197f 100644 --- a/orange-demo-single-service/common/common-core/src/main/java/com/orange/demo/common/core/util/MyModelUtil.java +++ b/orange-demo-single-service/common/common-core/src/main/java/com/orange/demo/common/core/util/MyModelUtil.java @@ -2,22 +2,19 @@ package com.orange.demo.common.core.util; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.util.ReflectUtil; +import com.baomidou.mybatisplus.annotation.*; import com.orange.demo.common.core.exception.InvalidDataFieldException; import com.orange.demo.common.core.annotation.*; import com.orange.demo.common.core.exception.MyRuntimeException; import com.orange.demo.common.core.object.TokenData; import com.orange.demo.common.core.object.Tuple2; import com.orange.demo.common.core.upload.UploadStoreInfo; +import com.google.common.base.CaseFormat; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.MapUtils; import org.apache.commons.lang3.StringUtils; -import tk.mybatis.mapper.entity.Example; -import javax.persistence.Column; -import javax.persistence.Table; -import javax.persistence.Transient; -import java.lang.reflect.Modifier; import java.lang.reflect.Field; import java.util.*; import java.util.concurrent.ConcurrentHashMap; @@ -66,6 +63,24 @@ public class MyModelUtil { */ private static final Map> CACHED_COLUMNINFO_MAP = new ConcurrentHashMap<>(); + /** + * 将bean的数据列表转换为Map列表。 + * + * @param dataList bean数据列表。 + * @param bean对象类型。 + * @return 转换后的Map列表。 + */ + public static List> beanToMapList(List dataList) { + if (CollectionUtils.isEmpty(dataList)) { + return null; + } + List> resultList = new LinkedList<>(); + for (T data : dataList) { + resultList.add(BeanUtil.beanToMap(data)); + } + return resultList; + } + /** * 拷贝源类型的集合数据到目标类型的集合中,其中源类型和目标类型中的对象字段类型完全相同。 * NOTE: 该函数主要应用于框架中,Dto和Model之间的copy,特别针对一对一关联的深度copy。 @@ -189,8 +204,20 @@ public class MyModelUtil { if (field == null) { return null; } - Column c = field.getAnnotation(Column.class); - String columnName = c == null ? fieldName : c.name(); + TableField c = field.getAnnotation(TableField.class); + String columnName = null; + if (c == null) { + TableId id = field.getAnnotation(TableId.class); + if (id != null) { + columnName = id.value(); + } + } + if (columnName == null) { + columnName = c == null ? CaseFormat.LOWER_CAMEL.to(CaseFormat.LOWER_UNDERSCORE, fieldName) : c.value(); + if (StringUtils.isBlank(columnName)) { + columnName = CaseFormat.LOWER_CAMEL.to(CaseFormat.LOWER_UNDERSCORE, fieldName); + } + } // 这里缺省情况下都是按照整型去处理,因为他覆盖太多的类型了。 // 如Integer/Long/Double/BigDecimal,可根据实际情况完善和扩充。 String typeName = field.getType().getSimpleName(); @@ -213,8 +240,8 @@ public class MyModelUtil { * @return Model对象对应的数据表名称。 */ public static String mapToTableName(Class modelClazz) { - Table t = modelClazz.getAnnotation(Table.class); - return t == null ? null : t.name(); + TableName t = modelClazz.getAnnotation(TableName.class); + return t == null ? null : t.value(); } /** @@ -574,43 +601,6 @@ public class MyModelUtil { return isMap ? BeanUtil.beanToMap(model) : model; } - /** - * 转换过滤对象到与其等效的Example对象。 - * - * @param filterModel 过滤对象。 - * @param modelClass 过滤对象的Class对象。 - * @param 过滤对象类型。 - * @return 转换后的Example对象。 - */ - public static Example convertFilterModelToExample(T filterModel, Class modelClass) { - if (filterModel == null) { - return null; - } - Example e = new Example(modelClass); - Example.Criteria c = e.createCriteria(); - Field[] fields = ReflectUtil.getFields(modelClass); - for (Field field : fields) { - if (field.getAnnotation(Transient.class) == null) { - int modifiers = field.getModifiers(); - // transient类型的字段不能作为查询条件 - if ((modifiers & 128) != 0 || Modifier.isStatic(modifiers)) { - continue; - } - ReflectUtil.setAccessible(field); - try { - Object o = field.get(filterModel); - if (o != null) { - c.andEqualTo(field.getName(), field.get(filterModel)); - } - } catch (IllegalAccessException ex) { - log.error("Failed to call reflection code.", ex); - throw new MyRuntimeException(ex); - } - } - } - return e; - } - /** * 获取上传字段的存储信息。 * diff --git a/orange-demo-single-service/common/common-redis/src/main/java/com/orange/demo/common/redis/config/RedissonConfig.java b/orange-demo-single-service/common/common-redis/src/main/java/com/orange/demo/common/redis/config/RedissonConfig.java index 8bd720bd..d20eecc4 100644 --- a/orange-demo-single-service/common/common-redis/src/main/java/com/orange/demo/common/redis/config/RedissonConfig.java +++ b/orange-demo-single-service/common/common-redis/src/main/java/com/orange/demo/common/redis/config/RedissonConfig.java @@ -39,6 +39,9 @@ public class RedissonConfig { @Value("${redis.redisson.timeout}") private Integer timeout; + @Value("${redis.redisson.password:}") + private String password; + @Value("${redis.redisson.pool.poolSize}") private Integer poolSize; @@ -47,10 +50,14 @@ public class RedissonConfig { @Bean public RedissonClient redissonClient() { + if (StrUtil.isBlank(password)) { + password = null; + } Config config = new Config(); if ("single".equals(mode)) { config.setLockWatchdogTimeout(lockWatchdogTimeout) .useSingleServer() + .setPassword(password) .setAddress(address) .setConnectionPoolSize(poolSize) .setConnectionMinimumIdleSize(minIdle) @@ -59,6 +66,7 @@ public class RedissonConfig { String[] clusterAddresses = StrUtil.splitToArray(address, ','); config.setLockWatchdogTimeout(lockWatchdogTimeout) .useClusterServers() + .setPassword(password) .addNodeAddress(clusterAddresses) .setConnectTimeout(timeout) .setMasterConnectionPoolSize(poolSize); @@ -66,6 +74,7 @@ public class RedissonConfig { String[] sentinelAddresses = StrUtil.splitToArray(address, ','); config.setLockWatchdogTimeout(lockWatchdogTimeout) .useSentinelServers() + .setPassword(password) .setMasterName(masterName) .addSentinelAddress(sentinelAddresses) .setConnectTimeout(timeout) @@ -80,6 +89,7 @@ public class RedissonConfig { ArrayUtil.copy(masterSlaveAddresses, 1, slaveAddresses, 0, slaveAddresses.length); config.setLockWatchdogTimeout(lockWatchdogTimeout) .useMasterSlaveServers() + .setPassword(password) .setMasterAddress(masterSlaveAddresses[0]) .addSlaveAddress(slaveAddresses) .setConnectTimeout(timeout) diff --git a/orange-demo-single-service/common/common-swagger/pom.xml b/orange-demo-single-service/common/common-swagger/pom.xml new file mode 100644 index 00000000..64ed0772 --- /dev/null +++ b/orange-demo-single-service/common/common-swagger/pom.xml @@ -0,0 +1,39 @@ + + + + common + com.orange.demo + 1.0.0 + + 4.0.0 + + common-swagger + 1.0.0 + common-swagger + jar + + + + com.github.xiaoymin + knife4j-spring-boot-starter + ${knife4j.version} + + + org.springframework.plugin + spring-plugin-core + + + org.springframework.plugin + spring-plugin-metadata + + + + + com.orange.demo + common-core + 1.0.0 + + + \ No newline at end of file diff --git a/orange-demo-single-service/common/common-swagger/src/main/java/com/orange/demo/common/swagger/config/SwaggerAutoConfiguration.java b/orange-demo-single-service/common/common-swagger/src/main/java/com/orange/demo/common/swagger/config/SwaggerAutoConfiguration.java new file mode 100644 index 00000000..bd2a8c43 --- /dev/null +++ b/orange-demo-single-service/common/common-swagger/src/main/java/com/orange/demo/common/swagger/config/SwaggerAutoConfiguration.java @@ -0,0 +1,56 @@ +package com.orange.demo.common.swagger.config; + +import com.orange.demo.common.core.annotation.MyRequestBody; +import com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.boot.context.properties.EnableConfigurationProperties; +import org.springframework.context.annotation.Bean; +import springfox.documentation.builders.ApiInfoBuilder; +import springfox.documentation.builders.PathSelectors; +import springfox.documentation.builders.RequestHandlerSelectors; +import springfox.documentation.service.ApiInfo; +import springfox.documentation.spi.DocumentationType; +import springfox.documentation.spring.web.plugins.Docket; +import springfox.documentation.swagger2.annotations.EnableSwagger2WebMvc; + +/** + * 自动加载bean的配置对象。 + * + * @author Jerry + * @date 2020-09-24 + */ +@EnableSwagger2WebMvc +@EnableKnife4j +@EnableConfigurationProperties(SwaggerProperties.class) +@ConditionalOnProperty(prefix = "swagger", name = "enabled") +public class SwaggerAutoConfiguration { + + @Bean + public Docket upmsDocket(SwaggerProperties properties) { + return new Docket(DocumentationType.SWAGGER_2) + .groupName("1. 用户权限分组接口") + .ignoredParameterTypes(MyRequestBody.class) + .apiInfo(apiInfo(properties)) + .select() + .apis(RequestHandlerSelectors.basePackage(properties.getBasePackage() + ".upms.controller")) + .paths(PathSelectors.any()).build(); + } + + @Bean + public Docket bizDocket(SwaggerProperties properties) { + return new Docket(DocumentationType.SWAGGER_2) + .groupName("2. 业务应用分组接口") + .ignoredParameterTypes(MyRequestBody.class) + .apiInfo(apiInfo(properties)) + .select() + .apis(RequestHandlerSelectors.basePackage(properties.getBasePackage() + ".app.controller")) + .paths(PathSelectors.any()).build(); + } + + private ApiInfo apiInfo(SwaggerProperties properties) { + return new ApiInfoBuilder() + .title(properties.getTitle()) + .description(properties.getDescription()) + .version(properties.getVersion()).build(); + } +} diff --git a/orange-demo-single-service/common/common-swagger/src/main/java/com/orange/demo/common/swagger/config/SwaggerProperties.java b/orange-demo-single-service/common/common-swagger/src/main/java/com/orange/demo/common/swagger/config/SwaggerProperties.java new file mode 100644 index 00000000..25c3d221 --- /dev/null +++ b/orange-demo-single-service/common/common-swagger/src/main/java/com/orange/demo/common/swagger/config/SwaggerProperties.java @@ -0,0 +1,40 @@ +package com.orange.demo.common.swagger.config; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; + +/** + * 配置参数对象。 + * + * @author Jerry + * @date 2020-09-24 + */ +@Data +@ConfigurationProperties("swagger") +public class SwaggerProperties { + + /** + * 是否开启Swagger。 + */ + private Boolean enabled; + + /** + * Swagger解析的基础包路径。 + **/ + private String basePackage = ""; + + /** + * ApiInfo中的标题。 + **/ + private String title = ""; + + /** + * ApiInfo中的描述信息。 + **/ + private String description = ""; + + /** + * ApiInfo中的版本信息。 + **/ + private String version = ""; +} diff --git a/orange-demo-single-service/common/common-swagger/src/main/java/com/orange/demo/common/swagger/plugin/ByteBuddyUtil.java b/orange-demo-single-service/common/common-swagger/src/main/java/com/orange/demo/common/swagger/plugin/ByteBuddyUtil.java new file mode 100644 index 00000000..3685de58 --- /dev/null +++ b/orange-demo-single-service/common/common-swagger/src/main/java/com/orange/demo/common/swagger/plugin/ByteBuddyUtil.java @@ -0,0 +1,85 @@ +package com.orange.demo.common.swagger.plugin; + +import cn.hutool.core.lang.Assert; +import com.orange.demo.common.core.annotation.MyRequestBody; +import com.github.xiaoymin.knife4j.core.conf.Consts; +import javassist.*; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import springfox.documentation.service.ResolvedMethodParameter; + +import java.util.List; + +/** + * 通过字节码方式动态创建接口参数封装对象。 + * + * @author Jerry + * @date 2020-09-24 + */ +@Slf4j +public class ByteBuddyUtil { + private static final ClassPool CLASS_POOL = ClassPool.getDefault(); + + public static Class createDynamicModelClass(String name, List parameters) { + String clazzName = Consts.BASE_PACKAGE_PREFIX + name; + try { + CtClass tmp = CLASS_POOL.getCtClass(clazzName); + if (tmp != null) { + tmp.detach(); + } + } catch (NotFoundException e) { + // 需要吃掉这个异常。 + } + CtClass ctClass = CLASS_POOL.makeClass(clazzName); + try { + int fieldCount = 0; + for (ResolvedMethodParameter dynamicParameter : parameters) { + // 因为在调用这个方法之前,这些参数都包含MyRequestBody注解。 + MyRequestBody myRequestBody = + dynamicParameter.findAnnotation(MyRequestBody.class).orElse(null); + Assert.notNull(myRequestBody); + String fieldName = dynamicParameter.defaultName().isPresent() + ? dynamicParameter.defaultName().get() : "parameter"; + if (StringUtils.isNotBlank(myRequestBody.value())) { + fieldName = myRequestBody.value(); + } + ctClass.addField(createField(dynamicParameter, fieldName, ctClass)); + fieldCount++; + } + if (fieldCount > 0) { + return ctClass.toClass(); + } + } catch (Throwable e) { + log.error(e.getMessage()); + } + return null; + } + + private static CtField createField(ResolvedMethodParameter parameter, String parameterName, CtClass ctClass) + throws NotFoundException, CannotCompileException { + CtField field = new CtField(getFieldType(parameter.getParameterType().getErasedType()), parameterName, ctClass); + field.setModifiers(Modifier.PUBLIC); + return field; + } + + private static CtClass getFieldType(Class propetyType) { + CtClass fieldType = null; + try { + if (!propetyType.isAssignableFrom(Void.class)) { + fieldType = CLASS_POOL.get(propetyType.getName()); + } else { + fieldType = CLASS_POOL.get(String.class.getName()); + } + } catch (NotFoundException e) { + // 抛异常 + ClassClassPath path = new ClassClassPath(propetyType); + CLASS_POOL.insertClassPath(path); + try { + fieldType = CLASS_POOL.get(propetyType.getName()); + } catch (NotFoundException e1) { + log.error(e1.getMessage(), e1); + } + } + return fieldType; + } +} diff --git a/orange-demo-single-service/common/common-swagger/src/main/java/com/orange/demo/common/swagger/plugin/DynamicBodyModelPlugin.java b/orange-demo-single-service/common/common-swagger/src/main/java/com/orange/demo/common/swagger/plugin/DynamicBodyModelPlugin.java new file mode 100644 index 00000000..acf41b38 --- /dev/null +++ b/orange-demo-single-service/common/common-swagger/src/main/java/com/orange/demo/common/swagger/plugin/DynamicBodyModelPlugin.java @@ -0,0 +1,61 @@ +package com.orange.demo.common.swagger.plugin; + +import com.orange.demo.common.core.annotation.MyRequestBody; +import com.fasterxml.classmate.TypeResolver; +import com.google.common.base.CaseFormat; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.core.Ordered; +import org.springframework.core.annotation.Order; +import org.springframework.stereotype.Component; +import springfox.documentation.service.ResolvedMethodParameter; +import springfox.documentation.spi.DocumentationType; +import springfox.documentation.spi.service.OperationModelsProviderPlugin; +import springfox.documentation.spi.service.contexts.RequestMappingContext; + +import java.util.List; +import java.util.stream.Collectors; + +/** + * 生成参数包装类的插件。 + * + * @author Jerry + * @date 2020-09-24 + */ +@Component +@Order(Ordered.HIGHEST_PRECEDENCE + 200) +@ConditionalOnProperty(prefix = "swagger", name = "enabled") +public class DynamicBodyModelPlugin implements OperationModelsProviderPlugin { + + private final TypeResolver typeResolver; + + public DynamicBodyModelPlugin(TypeResolver typeResolver) { + this.typeResolver = typeResolver; + } + + @Override + public void apply(RequestMappingContext context) { + List parameterTypes = context.getParameters(); + if (CollectionUtils.isEmpty(parameterTypes)) { + return; + } + List bodyParameter = parameterTypes.stream() + .filter(p -> p.hasParameterAnnotation(MyRequestBody.class)).collect(Collectors.toList()); + if (CollectionUtils.isEmpty(bodyParameter)) { + return; + } + String groupName = CaseFormat.LOWER_HYPHEN.to(CaseFormat.UPPER_CAMEL, context.getGroupName()); + String clazzName = groupName + StringUtils.capitalize(context.getName()); + Class clazz = ByteBuddyUtil.createDynamicModelClass(clazzName, bodyParameter); + if (clazz != null) { + context.operationModelsBuilder().addInputParam(typeResolver.resolve(clazz)); + } + } + + @Override + public boolean supports(DocumentationType delimiter) { + // 支持2.0版本 + return delimiter == DocumentationType.SWAGGER_2; + } +} diff --git a/orange-demo-single-service/common/common-swagger/src/main/java/com/orange/demo/common/swagger/plugin/DynamicBodyParameterBuilder.java b/orange-demo-single-service/common/common-swagger/src/main/java/com/orange/demo/common/swagger/plugin/DynamicBodyParameterBuilder.java new file mode 100644 index 00000000..bb70370f --- /dev/null +++ b/orange-demo-single-service/common/common-swagger/src/main/java/com/orange/demo/common/swagger/plugin/DynamicBodyParameterBuilder.java @@ -0,0 +1,64 @@ +package com.orange.demo.common.swagger.plugin; + +import com.orange.demo.common.core.annotation.MyRequestBody; +import com.google.common.base.CaseFormat; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.core.Ordered; +import org.springframework.core.annotation.Order; +import org.springframework.stereotype.Component; +import springfox.documentation.builders.ParameterBuilder; +import springfox.documentation.schema.ModelRef; +import springfox.documentation.service.Parameter; +import springfox.documentation.service.ResolvedMethodParameter; +import springfox.documentation.spi.DocumentationType; +import springfox.documentation.spi.service.OperationBuilderPlugin; +import springfox.documentation.spi.service.contexts.OperationContext; +import springfox.documentation.spi.service.contexts.ParameterContext; + +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + +/** + * 构建操作接口参数对象的插件。 + * + * @author Jerry + * @date 2020-09-24 + */ +@Component +@Order(Ordered.HIGHEST_PRECEDENCE + 102) +@ConditionalOnProperty(prefix = "swagger", name = "enabled") +public class DynamicBodyParameterBuilder implements OperationBuilderPlugin { + + @Override + public void apply(OperationContext context) { + List methodParameters = context.getParameters(); + List parameters = new ArrayList<>(); + if (CollectionUtils.isNotEmpty(methodParameters)) { + List bodyParameter = methodParameters.stream() + .filter(p -> p.hasParameterAnnotation(MyRequestBody.class)).collect(Collectors.toList()); + if (CollectionUtils.isNotEmpty(bodyParameter)) { + // 构造model + String groupName = CaseFormat.LOWER_HYPHEN.to(CaseFormat.UPPER_CAMEL, context.getGroupName()); + String clazzName = groupName + StringUtils.capitalize(context.getName()); + ResolvedMethodParameter methodParameter = bodyParameter.get(0); + ParameterContext parameterContext = new ParameterContext(methodParameter, + new ParameterBuilder(), + context.getDocumentationContext(), + context.getGenericsNamingStrategy(), + context); + Parameter parameter = parameterContext.parameterBuilder() + .parameterType("body").modelRef(new ModelRef(clazzName)).name(clazzName).build(); + parameters.add(parameter); + } + } + context.operationBuilder().parameters(parameters); + } + + @Override + public boolean supports(DocumentationType delimiter) { + return delimiter == DocumentationType.SWAGGER_2; + } +} diff --git a/orange-demo-single-service/common/common-swagger/src/main/resources/META-INF/spring.factories b/orange-demo-single-service/common/common-swagger/src/main/resources/META-INF/spring.factories new file mode 100644 index 00000000..a7717f2b --- /dev/null +++ b/orange-demo-single-service/common/common-swagger/src/main/resources/META-INF/spring.factories @@ -0,0 +1,2 @@ +org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ +com.orange.demo.common.swagger.config.SwaggerAutoConfiguration \ No newline at end of file diff --git a/orange-demo-single-service/common/pom.xml b/orange-demo-single-service/common/pom.xml index 6547f15d..62e6ea63 100644 --- a/orange-demo-single-service/common/pom.xml +++ b/orange-demo-single-service/common/pom.xml @@ -15,5 +15,6 @@ common-core common-redis common-sequence + common-swagger diff --git a/orange-demo-single-service/pom.xml b/orange-demo-single-service/pom.xml index 03ab0e62..3f6016e7 100644 --- a/orange-demo-single-service/pom.xml +++ b/orange-demo-single-service/pom.xml @@ -33,11 +33,11 @@ 6.2.0.Final 1.2.6 - 2.1.5 - 1.3.7 + 3.4.2 1.3.0 3.15.4 2.0.0 + 2.0.8 @@ -135,6 +135,17 @@ disruptor ${disruptor.version} + + + org.springframework.plugin + spring-plugin-core + 2.0.0.RELEASE + + + org.springframework.plugin + spring-plugin-metadata + 2.0.0.RELEASE + org.springframework.boot